From d9e1e5f724f0b7dd6f9f28d01092806452d80878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Tue, 7 Apr 2026 00:22:42 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=9F=BA=E5=BA=95?= =?UTF-8?q?=E6=89=93=E5=8C=85=E8=A7=84=E5=88=99=EF=BC=8C=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E6=96=B9=E5=BC=8F=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3skill=EF=BC=8C=E4=BA=8C=E6=AC=A1=E5=88=86?= =?UTF-8?q?=E7=A6=BBagent=E6=9E=B6=E6=9E=84=E4=B8=BA=E5=A4=9Asubagent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + data/skills/production_agent_decision.md | 25 +- data/skills/production_agent_execution.md | 740 ----------------- .../production_execution_derive_assets.md | 97 +++ .../production_execution_director_plan.md | 132 +++ .../production_execution_generate_assets.md | 36 + .../production_execution_storyboard_gen.md | 38 + .../production_execution_storyboard_panel.md | 83 ++ .../production_execution_storyboard_table.md | 74 ++ .../storyboard_prompt_techniques.md | 322 ++++++++ .../storyboard_table_techniques.md | 158 ++++ data/skills/script_agent_decision.md | 5 + data/skills/script_execution_adaptation.md | 2 +- data/skills/script_execution_script.md | 16 +- data/skills/script_execution_skeleton.md | 2 +- data/update.json | 1 - data/version.txt | 2 +- data/web/index.html | 70 +- package.json | 2 +- scripts/main.ts | 60 +- src/agents/productionAgent/index copy.ts | 244 ++++-- src/agents/productionAgent/index.ts | 239 +++++- src/agents/productionAgent/tools copy.ts | 751 ------------------ src/agents/scriptAgent/index copy 2.ts | 185 ----- src/agents/scriptAgent/index copy 3.ts | 185 ----- src/agents/scriptAgent/index copy.ts | 175 ---- src/app.ts | 7 - src/routes/other/getVersion.ts | 2 +- src/routes/setting/about/downloadApp.ts | 28 +- src/types/database.d.ts | 36 +- 30 files changed, 1405 insertions(+), 2313 deletions(-) delete mode 100644 data/skills/production_agent_execution.md create mode 100644 data/skills/production_execution_derive_assets.md create mode 100644 data/skills/production_execution_director_plan.md create mode 100644 data/skills/production_execution_generate_assets.md create mode 100644 data/skills/production_execution_storyboard_gen.md create mode 100644 data/skills/production_execution_storyboard_panel.md create mode 100644 data/skills/production_execution_storyboard_table.md create mode 100644 data/skills/production_skills/storyboard_prompt_techniques.md create mode 100644 data/skills/production_skills/storyboard_table_techniques.md delete mode 100644 data/update.json delete mode 100644 src/agents/productionAgent/tools copy.ts delete mode 100644 src/agents/scriptAgent/index copy 2.ts delete mode 100644 src/agents/scriptAgent/index copy 3.ts delete mode 100644 src/agents/scriptAgent/index copy.ts diff --git a/.gitignore b/.gitignore index 614a7d8..f5aa258 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ database.d.ts .devtools data/oss/* data/test.sqlite +version.txt \ No newline at end of file diff --git a/data/skills/production_agent_decision.md b/data/skills/production_agent_decision.md index d346195..2eaaf0a 100644 --- a/data/skills/production_agent_decision.md +++ b/data/skills/production_agent_decision.md @@ -11,7 +11,13 @@ 1. **需求分析**:解析用户请求,判断属于流水线哪个阶段 2. **任务拆解**:将复杂请求分解为可执行的子任务 -3. **调度执行**:通过 `run_sub_agent_execution` 派发任务到执行层 +3. **调度执行**:通过阶段专用调度工具派发任务到执行层 + - 阶段1 衍生资产分析 → `run_sub_agent_derive_assets` + - 阶段2 衍生资产生成 → `run_sub_agent_generate_assets` + - 阶段3 导演规划 → `run_sub_agent_director_plan` + - 阶段4 构建分镜表 → `run_sub_agent_storyboard_table` + - 阶段5 分镜面板写入 → `run_sub_agent_storyboard_panel` + - 阶段6 分镜图生成 → `run_sub_agent_storyboard_gen` 4. **质量管控**:通过 `run_sub_agent_supervision` 调用监督层审核产出物 5. **记忆检索**:通过 `deepRetrieve` 获取历史上下文和项目进度记忆 @@ -157,10 +163,19 @@ ### 执行层派发 -使用 `run_sub_agent_execution` 调用执行层: +根据阶段使用对应的专用调度工具调用执行层: + +| 阶段 | 调度工具 | +|------|----------| +| 阶段1 衍生资产分析 | `run_sub_agent_derive_assets` | +| 阶段2 衍生资产生成 | `run_sub_agent_generate_assets` | +| 阶段3 导演规划 | `run_sub_agent_director_plan` | +| 阶段4 构建分镜表 | `run_sub_agent_storyboard_table` | +| 阶段5 分镜面板写入 | `run_sub_agent_storyboard_panel` | +| 阶段6 分镜图生成 | `run_sub_agent_storyboard_gen` | ``` -run_sub_agent_execution( +run_sub_agent_{阶段对应工具}( prompts: "<按模板构建的具体指令>" ) ``` @@ -182,8 +197,8 @@ run_sub_agent_supervision( | 用户反馈 | 操作 | |----------|------| | 通过 / 下一阶段 | 派发下一阶段任务 | -| 需要修复 | 根据用户指示构建修复指令,派发执行层 | -| 重做 | 重新派发当前阶段任务 | +| 需要修复 | 根据用户指示构建修复指令,使用当前阶段对应的调度工具派发执行层 | +| 重做 | 使用当前阶段对应的调度工具重新派发任务 | ### 调度决策树 diff --git a/data/skills/production_agent_execution.md b/data/skills/production_agent_execution.md deleted file mode 100644 index a8e32df..0000000 --- a/data/skills/production_agent_execution.md +++ /dev/null @@ -1,740 +0,0 @@ ---- -name: production_agent_supervision.md -description: >- - 视频制作监督层Agent技能。负责审核导演规划和分镜表的产出物质量。 - 当收到决策层的审核任务派发时激活。 ---- -# 执行层 Agent - -你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 - -## 通用规则 - -- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 -- 只执行当前任务对应的工作,不越权执行其他阶段 -- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 - -## 任务路由 - -根据派发指令中的关键词匹配对应任务,无法匹配时返回 `无法识别任务类型,请检查派发指令`: - -| 关键词 | 跳转 | -|--------|------| -| 衍生资产、资产分析、derive assets | [一、衍生资产分析与信息写入](#一衍生资产分析) | -| 资产图片、生成资产、generate assets | [二、衍生资产图片生成](#二衍生资产图片生成) | -| 导演规划、拍摄计划、director plan | [三、导演规划](#三导演规划) | -| 构建分镜表、分镜面板、storyboard table | [四、构建分镜表](#四构建分镜表) | -| 分镜面板写入、写入分镜面板、storyboard panel | [五、分镜面板写入](#五分镜面板写入) | -| 生成分镜、分镜图片、storyboard gen | [六、分镜图生成](#六分镜图生成) | - ---- - -## 一、衍生资产分析与信息写入 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | -| 写入衍生资产 | `add_deriveAsset` | - - -### 执行流程 - -1. 获取 `script` 和 `assets` -2. 按下方提取规则分析剧本,识别每个资产的视觉状态变体 -3. 简单说明要增加的衍生资产内容以及信息。总共200字以内 -4. 如不需要衍生资产,返回"不需要衍生资产",流程结束 -5. 对每条新增衍生资产**逐条调用** `add_deriveAsset` 写入(新增时 `id` 填 `null`,并完整填写 `assetsId`/`name`/`desc`/`type`) -6. 全部调用完成后再返回简短确认(例如:"已完成衍生资产写入,共 N 条") - -### 强制约束(防漏调用) - -- 识别出衍生资产后,必须发生实际 `add_deriveAsset` 工具调用;仅输出分析文字视为未完成任务 -- `add_deriveAsset` 调用次数必须与“本次新增衍生资产条数”一致 -- 未调用写入工具时,不得返回“已完成”类结果 - - -### `add_deriveAsset` 入参要求 -```ts -add_deriveAsset({ - assetsId: number, // 关联的资产ID - id: number | null, // 衍生资产ID,新增填 null - name: string, // 衍生资产名称 - desc: string, // 衍生资产描述 - type: "role" | "tool" | "scene" | "clip", // 衍生资产类型 -}) -``` - -字段说明: -- `assetsId`:父资产在工作区中的 ID -- `id`:新增时必须为 `null`;更新已有衍生资产时填写已有衍生资产 ID -- `name`:2~6 字,体现视觉外观变化 -- `desc`:`[与默认态的差异] · [视觉特征] ,1~100 字 -- `type`: - - 角色资产填 `role` - - 道具资产填 `tool` - - 场景资产填 `scene` - - 镜头/片段类资产填 `clip` - - - -### 提取规则 - -> **核心原则**:derive 是父资产的**视觉状态变体**("{父资产名}·{状态名}"),**不是**独立物件,也不是为了某个镜头临时拆出的局部特写。 -> 只衍生**图片模型无法仅凭提示词稳定处理、且能在多个镜头/场次复用的资产级视觉差异**(服装、整体形态、结构性残缺、物件状态等)。 -> 表情、情绪、简单动作姿态、局部特写、镜头强调细节等**不需要衍生**。 -> **角色默认基准态**:角色父资产默认视为基础打底态(如白色背心+内裤,或仅内裤状态)。因此剧本中凡出现校服、常服、礼服、盔甲、外套等明确穿着时,通常应补充对应的**服装类衍生资产**;基础打底态本身不重复创建衍生。若某角色当前**没有任何子资产**,则应先根据剧本主场景与常态设定,补充一套最合适的**默认常服/正式服装衍生**,避免后续该角色长期停留在基础打底态。 - -**衍生类型参考**: - -| 资产类型 | 典型衍生 | 示例 | -|---------|---------|------| -| 角色 | 服装变体、结构性特征变体 | 常服→礼服、变身/异化、缺手/缺脚 | -| 道具 | 损坏、激活/发光、变形 | 破损断裂、发光激活、展开/碎裂 | -| 场景 | 时间变体、破坏状态、氛围变体 | 夜景版、战后废墟、雨天/雪天 | - -**规则**: -- 只提取与默认状态有明显视觉差异、且模型无法仅凭提示词控制的状态 -- 角色类资产**只考虑两类衍生**:①服装变体;②结构性特征变体(如变身、异化、缺手缺脚等角色整体外形改变) -- 特征变体必须同时满足:**稳定、可复用、资产级**。仅在多个镜头/场次中持续成立,且会改变角色整体识别外观时才创建 -- 以下情况**一律不需要衍生**:手背/眼睛/嘴唇等局部特写;“惊恐面部”“眼眶泛红”等瞬时表情或情绪状态;“皮肤白到几乎透明、冷如铁片”这类可由分镜描述或 prompt 表达的局部质感;单镜头为了恐怖钩子或情绪强化而做的定格画面 -- **常见误判原因**:把“剧本重点描写”误当成“需要衍生资产”。判断标准不是它是否重要,而是它是否属于父资产**稳定、可复用、整体级**的视觉状态 -- 若角色当前 `derive` 为空,应先补 1 个最符合剧本常态的服装类衍生资产(如常服、校服、工装、礼服中的一种),作为后续主要出镜默认态 -- 若当前剧情穿着不是基础打底态,应优先补充对应服装类衍生资产;若存在持续且显著的身体/形态差异,再补充对应特征类衍生资产 -- 已存在于 `derive` 数组中的状态不重复 -- 每个资产 1~5 个衍生,宁缺勿滥 -- 提取到衍生资产后,必须逐条调用 `add_deriveAsset` 保存,禁止只分析不写入 -- 来源优先级:剧本明确描写 > 资产描述暗示 > 合理推测 -- `name`:2~6 字,体现视觉外观变化 -- `desc`:格式为 `[与默认态的差异] · [视觉特征] `, - ---- - -## 二、衍生资产图片生成 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取资产列表 | `get_flowData("assets")` | -| 生成资产图片 | `generate_assets_images({ ids: [资产id列表] })` | - -### 执行流程 - -1. 获取 `assets`,收集所有需要生成图片的资产 id -2. 调用 `generate_assets_images({ ids: [资产id列表] })` 生成图片(异步,发起即返回) - -### 约束 - -- 前置条件:衍生资产分析已完成并写入 -- 仅对有衍生状态且尚未生成图片的资产发起生成 - ---- - -## 三、导演规划 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | - -### 风格技法参考 - - - -### 执行流程 - -1. 加载风格技法参考,获取 `script` 和 `assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。 -2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」 -3. 严格按照XML格式写出导演规划内容 - -### 导演具象化原则(贯穿全文) - -规划文本必须像导演给演员讲戏,禁止抽象情绪词,所有描述以「摄像机能拍到什么」为标准: - -- **动作具体化**:写连续物理动作链("揉太阳穴→目光移开→靠向椅背"),禁止"感到疲惫"等抽象词 -- **光影可量化**:主光源方向 + 色温范围 + 明暗倾向("侧光偏暖,明暗反差强"),禁止空泛词("柔光""氛围好") -- **情绪靠身体**:通过肢体微表情传达("指尖发颤、瞳孔收缩"代替"他很紧张") -- **声音可感知**:环境音具体到声源("蜡芯噼啪声、远处风声"),禁止"背景音乐烘托气氛" - -### 创作规划(六维度) - -#### ① 主题立意与叙事核心 - -规划项:核心主题、情感主线、离场感受、情感表达策略 - -约束: -- 主题一句话凝练 -- 情感主线拆 2~3 个递进层次,每层对应可感知的视觉/行为变化 -- 离场感受与表达策略须与风格技法参考一致 - -#### ② 视觉风格与画面基调 - -规划项:整体色调、画面质感、构图风格、镜头运动偏好、光影体系 - -约束: -- 色调具体到色温范围或色彩倾向描述 -- 光影以「段落-光影方向」表格呈现,每段落指定光影基调方向 -- 色温、光源角度、冷暖色调分配等具体技法参数以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准 -- **构图须说明叙事理由**,参考以下情绪-构图映射(按需选用): - - 对称构图 → 秩序 / 压迫 / 庄重 - - 三分法偏侧留白 → 孤独 / 期待 / 未知 - - 对角线构图 → 运动 / 冲突 / 紧张 - - 框中框构图 → 囚禁 / 窥视 / 心理距离 -- **空间三层分离**:关键画面须规划前景(引导视线)/ 中景(叙事主体)/ 背景(情绪氛围)的层次关系 -- 镜头运动默认以静为主,运镜须说明叙事目的("缓推=靠近角色内心""缓拉=揭示全貌/抽离") - -#### ③ 叙事结构与节奏规划 - -规划项:叙事模式选型、段落划分、情绪曲线、快慢节奏、关键转折点、段落过渡方式 - -约束: -- **叙事模式选型**(根据内容特征选择,写入规划): - - 完整叙事型:适用于有完整起承转合的长剧本,按戏剧节拍划分段落 - - 情绪意境型:适用于氛围/散文式内容,按情绪阶段(起-承-转-合)划分 - - 原著保真型:适用于已有成熟结构的改编剧本,按原著自然场景边界划分,不强加节拍 -- 段落以表格呈现(编号 / 名称 / 场次 / 核心事件 / 情绪浓度 / 节奏) -- 情绪曲线渐进递增,避免"平平平→突然爆发" -- 转折点必须用**具体视觉手段**描述(光影突变、景别跳切、空镜隐喻等),不依赖台词解释 -- 高潮段落的"快"指情绪密度高(更紧密的景别切换),不等于缩短镜头时长 - -#### ④ 分场景情绪与画面意图 - -规划项(逐场):场次编号、情绪目标、氛围方向、镜头意图、空间叙事、距离感设计 - -约束: -- 情绪目标用具象可感描述("偷偷心动后的嘴角压不住",禁止"开心"等抽象词) -- 氛围方向映射风格技法参考的光影方案 -- **镜头意图写"为什么"**("用特写让观众看到她眼里的犹豫"),而非"怎么拍"("用特写拍脸") -- **场景语义→镜头方案参考**(为每场选择最匹配的方案方向): - - 开场/定场 → 大远景 + 缓推至主体 - - 角色登场 → 全景/中景 + 微仰 + 背光轮廓 - - 对话交锋 → 中景/近景 + 正反打 + 守视轴 - - 情绪加压 → 景别逐步递进收紧(中→近→特写→大特写) - - 浪漫/温馨 → 近景 + 浅景深 + 暖调柔光 - - 独白/沉思 → 特写侧面轮廓 + 定镜 - - 高潮转折 → 景别骤变或环绕运镜 -- **距离感设计**:通过景别变化映射人物关系变化(初期远→中期近但有遮挡→后期特写零距离) - -#### ⑤ 声音与音乐方向 - -规划项:音乐风格、段落配乐对应、配乐覆盖率、环境音设计、沉默运用 - -约束: -- 配乐按段落统一规划(不逐场),同段落内场景切换靠环境音变化过渡 -- 乐器选择、组合策略等具体技法以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准 -- 环境音具体到可感知声源("蝉鸣 / 溪水 / 市井叫卖 / 雨滴檐角"),每场标注 1~2 个核心环境音 -- 标注运用沉默手法的关键瞬间(关键情感瞬间优先考虑去掉配乐,只留环境音) -- 全片配乐覆盖率建议不超过 70%,留白段落与配乐段落形成呼吸感 - -#### ⑥ 转场与视觉连续性 - -规划项:场间转场策略、段落间过渡手法、视觉连续性锚点 - -约束: -- 同场戏内镜头默认硬切 -- 不同场景间插入空镜过渡做情绪缓冲(标注具体空镜内容方向) -- 大段落间可用叠化/淡入淡出做柔性过渡 -- 标注全片视觉连续性锚点:角色位置、服装状态、环境光影在跨场景时保持一致的关键点 - -### 输出要求 - -- 总字数不超过 1200 词,精炼表达 -- 你必须使用XML格式写入工作区拍摄计划:内容 -- 按「创作规划(①~⑥)」顺序输出 -- 表格仅在信息密度高时使用,其余用简洁列表或短段落 -- 具象优于抽象,视觉优先叙事,所有描述须通过「导演具象化原则」检验 - ---- - -## 四、构建分镜表 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | - -### 风格技法参考 - - - -### 执行流程 - -1. 获取 `script` 和 `assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。 -2. 按下方规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 -3. 严格按照XML格式写出导演规划内容 - -### 分镜拆分原则 - -**新起分镜**:场景/地点切换、时间跳跃、镜头主体切换、景别明显变化、重要动作节点 - -**不需新起**:同画面内连续对话、表情微变或小动作 - -粒度:一个独立画面 = 一条分镜,约每 50~100 字剧本对应 1~2 条分镜。过渡/转场如有明确描写也单独拆分。 - -### 定场与镜头合并规则(防冗余) - -**定场镜头**:每个新场景/段落的定场最多 1~2 个镜头完成,禁止拆成 3 个以上碎片。 -- 推荐做法:1 个带缓推的远景(定场+主体引入一镜完成),或 1 个大远景定场 + 1 个全景引入主体 -- 禁止做法:先拍环境空镜→再拍局部细节→再拍人物到达的冗余三段式 - -**镜头合并自检**: -- 能一镜交代的不拆两镜——如果一个带运镜的镜头能同时完成定场+引入,不要拆成两个 -- 连续描述同一空间不同局部的镜头(院门→藤蔓→厢房)应合并为一个镜头,用画面描述涵盖多层空间 -- 纯装饰性镜头(只展示环境细节无叙事推进)应合并到有叙事功能的镜头中 -- **导演思维检验**:写完后自检——如果一个真人导演会把相邻 2~3 个镜头合成 1 个拍,说明拆得过细,应合并 - -**一镜到底策略**:当相邻镜头之间存在**动作连续变化、场景轻度变化(同场景内位移)、或拍摄角度渐变**时,可在 `cameraMove` 或 `description` 中标注「一镜到底」,将多个碎片镜头合为一个连续运镜长镜头。 -- **适用场景**:角色行走穿越空间、跟随动作从A点到B点、环绕角色展示环境、定场缓推到主体特写等 -- **标注方式**:在 `cameraMove` 中写明运镜路径(如"一镜到底:缓推远景→跟移至院内→落幅全景"),在 `description` 中描述起幅和落幅的画面内容 -- **时长放宽**:一镜到底镜头因信息量持续更新,可突破单镜 6s 上限,但不超过 12s -- **风险提示**:一镜到底会提高画面生成的抽卡难度(连续性要求高),仅在叙事流畅性收益明显大于碎切时使用,不滥用 - -**黄金 6 秒规则**:无台词镜头累计超过 6s 未出现新信息(台词/动作/主体变化),观众注意力断裂。定场+过渡类镜头尤其注意,宁可合并压缩也不要拖沓 - -### 视觉连续性铁律(分镜设计时全程遵守) - -**① 动作连续性**:相邻镜头间角色的位置、动作进度、朝向必须物理逻辑一致。上一镜手伸到半空→下一镜必须从半空状态接续,不能突然收回。 - -**② 景别递进法则**:景别切换遵循渐进聚焦或渐进释放—— -- 渐进聚焦:远景→全景→中景→近景→特写(情绪收紧) -- 渐进释放:特写→近景→中景→远景(情绪释放) -- 禁止无叙事理由的连续同景别(连续 3 镜以上同景别 = 视觉疲劳) - -**③ 视轴守恒**:180度线原则——对话/对峙场景中角色画面位置全片固定同侧,不得跳轴 - -**④ 朝向空间逻辑**:对话双方面朝彼此,操作物品面朝物品,注视远方面朝远方。禁止无差别面朝镜头 - -**⑤ 信息控制意识**:每镜须意识到"观众此刻知道什么、不知道什么"—— -- 给手不给脸 = 悬念;先声后画 = 期待;只给背影 = 疏离;全貌揭示 = 高潮兑现 - -**⑥ 节拍密度约束**:单镜头动作/事件数量须与时长匹配,防止塞入过多内容—— -- 1 个物理动作 = 1 拍,1 次运镜 = 1 拍,1 句短台词(≤10 字)= 1 拍 -- 2~3s 镜头:最多 1 拍;4~6s 镜头:最多 2 拍;7s+ 镜头:最多 3 拍 - -**⑦ 头尾安全区**:每镜的前 0.5s 和后 0.5s 为安全过渡区,不放关键动作或台词起始点。前 0.5s 用于环境建立或主体静态亮相,后 0.5s 用于动作自然收住。 - -### 字段填写指引 - -**description**(画面描述):一句话描述画面核心内容(15~50 字),包含可见的**主体 + 动作/状态 + 环境空间**,不写心理活动。需体现空间层次(前景/中景/背景至少涉及两层)。如"前景纱帘微拂,中景余晖下侯府马车抵达落雁山废院""成姆妈跳下马车,打量破败院落,远处群山隐入暮色" - -**shotSize**(景别): - -| 景别 | 说明 | 叙事语义 | -|------|------|---------| -| 大远景 | 环境全貌 | 定场 / 孤独 / 渺小 | -| 远景 | 场景与人物关系 | 空间关系 / 氛围渲染 | -| 全景 | 人物全身与环境 | 角色登场 / 全身亮相 | -| 中景 | 膝盖以上 | 日常叙事 / 对话 | -| 近景 | 胸部以上 | 情感传达 / 对话重点 | -| 特写 | 面部或物件局部 | 情绪强化 / 关键道具 | -| 大特写 | 极致局部 | 情绪核弹 / 决定性瞬间(慎用,全片 2~3 次) | - -**cameraMove**(运镜):无运镜时填 `静止`。运镜须标注起终点方向。 - -| 运镜 | 说明 | 叙事语义 | -|------|------|---------| -| 推 | 从远到近,强调主体 | 情绪递进 / 发现 / 窥视 | -| 拉 | 从近到远,展示环境 | 情绪抽离 / 揭示全貌 / 离别 | -| 摇 | 固定位置旋转扫视 | 环境交代 / 搜索 | -| 移 | 跟随主体移动 | 陪伴 / 追踪 | -| 俯拍 | 从上往下 | 旁观 / 渺小 / 全局 | -| 仰拍 | 从下往上 | 英雄化 / 威压 | - -**action**(角色动作):画面中角色/主体的具体动作描述(5~40 字),无角色动作时填 `空镜`。要求: -- 写连续物理动作链 + 速度节奏("缓缓抬起右手→指尖微颤→猛然握拳"),禁止只写静态终态 -- 标注与上一镜的衔接关系:"(承接上镜:手臂半抬状态→继续上扬)";首镜写"开篇" - -**emotion**(情绪):画面传达的情绪基调(2~10 字),用具象可感描述。如"冷傲轻蔑""痛苦绝望""紧张压迫"。禁止"开心""难过"等空泛词。 - -**lighting**(光影氛围):画面光影与氛围描述(5~40 字),须包含**光源方向 + 色调倾向 + 明暗关系**。如"右侧冷白光斜射,面部明暗对半,背景深沉""底部暖黄光上打,眼窝沉入暗影"。禁止只写"柔光""暗调"。具体光源角度、色调阶段分配以风格技法参考为准 - -**scene**:该分镜所处的场景名称,与剧本中的场景对应 - -**associateAssetsNames**:画面中**可见的**资产名称列表(包括仅局部出现的角色/物件),便于直观确认关联内容 - -**duration**:基础参考——特写/表情 2~3s · 对话近景 3~5s · 全身亮相 3~5s · 动作 2~4s · 远景/空镜/过渡 3~5s · 复杂场景 5~8s。**单镜不超过 8s**,超过须拆分。 - -**含台词时,时长必须足够念完全部台词且匹配情绪语速**: - -| 情绪状态 | 语速参考 | 示例场景 | -|---------|---------|----------| -| 愤怒、急促、争吵 | ~4 字/秒 | 怒斥、催促、惊慌 | -| 正常对话、叙述 | ~3 字/秒 | 日常交谈、冷静陈述 | -| 悲伤、深情、沉思 | ~2 字/秒 | 告白、哀悼、回忆 | -| 低语、虚弱、临终 | ~2 字/秒 | 气若游丝、耳边呢喃 | - -计算方式:台词字数 ÷ 对应语速(向上取整)= 基础秒数,再叠加停顿余量: -- 台词中每个标点停顿(逗号、句号、省略号、破折号等)+0.3~0.5s -- 情绪转折/语气变化处 +0.5s -- 最终 `duration` = 基础秒数 + 停顿累计 + 1s 安全余量(向上取整) - -**lines**:角色台词原文,**必须一字不改从剧本中照搬**。多角色按 `角色名:台词` 格式排列。无台词填 `无台词`。一句台词对应一个镜头,避免单镜头内塞多角色多轮对白。 - -**sound**:环境音/音效描述,按「环境音层 + 动作音层」分层。如"远处风声呼啸 + 剑鸣声"。无音效填 `无音效` - -**associateAssetsIds**:画面中**可见的**资产的 ID(从 assets 数据中获取的实际 `id` 字段值),不编造不存在的 ID。 -- **角色出现即引用**:画面中出现的所有角色,无论是主体还是仅局部可见(如背影、手部、虚化剪影等),只要在画面内可被辨识,都必须引用其对应的资产 ID -- **场景资产必选**:每条分镜必须引用其所处场景对应的场景资产 ID(type 为 scene 的资产);若该场景存在匹配当前画面状态的衍生场景资产,则选用衍生场景资产 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为字段不完整 -- 父子资产选择规则:按剧情画面所需状态选择资产 ID——若该镜头需要某主资产的衍生状态,**只选衍生资产 ID**;仅当不存在匹配的衍生状态时,才选择主资产 ID;同一父资产在同一分镜中禁止主/衍生同时出现 - -### 转场规则 - -- **同场戏内**:镜头间默认硬切 -- **跨场景**:插入 1 个空镜分镜(2~3s)做情绪缓冲,空镜内容与前后场景氛围相关 -- **跨段落**:可在 description 中标注"叠化过渡"或"淡入淡出" -- 禁用花式转场(划屏、旋转、百叶窗等) - -### 示例 - -输入剧本片段: -``` -苏晚卿冷笑:「还有你当宝贝的青云令」 -△ 凌玄气血逆流,再次一口鲜血喷出 -△ 青云令表面灵纹暗淡,隐约可见细微裂痕 -``` - -输出分镜表: - -| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 | 台词 | 音效 | 关联资产ID | -|----|-------------|------|----------|------|------|------|------|------|------|-------|-------|----------| -| 1 | 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉 | 大殿 | [苏晚卿, 凌玄, 大殿] | 4 | 近景 | 静止 | 嘴角缓缓上扬→微仰下巴→眼神下压注视(开篇) | 冷傲轻蔑 | 顶光直射面部,眼窝明暗对半,背景大殿沉入暗部 | 苏晚卿:还有你当宝贝的青云令 | 空旷殿堂回声 | [101, 100, 300] | -| 2 | 凌玄跪地猛喷鲜血,身体前倾欲坠,血雾弥漫 | 大殿 | [凌玄, 大殿] | 3 | 中景 | 缓慢推至近景 | 胸口剧颤→猛然喷出鲜血→身体前倾摇晃(承接上镜:跪地状态) | 痛苦绝望 | 左侧冷光勾边,血雾被逆光映成暗红,背景压暗 | 无台词 | 喷血声 + 沉闷跪地声 | [100, 300] | -| 3 | 青云令灵纹一寸寸暗淡,玉面浮现细微裂痕 | 大殿 | [青云令, 大殿] | 3 | 大特写 | 静止 | 灵纹光芒由亮渐灭→裂痕自中心蔓延(承接上镜:喷血后切物件) | 紧张压迫 | 微弱自发光从内部渗出渐灭,周围完全暗沉 | 无台词 | 细微玉石碎裂声 | [202, 300] | - -### 约束 - -- **整体输出、不分段**:分镜表必须一次性完整输出为一个连续表格,不可按段落/场次拆分成多个表格,不可中途分割或分批返回 -- 你必须使用XML格式写入工作区拍摄计划:内容 -- **严格依据剧本**:分镜内容必须严格按照剧本叙事顺序和内容进行拆分,不得遗漏或新增剧本中不存在的情节 -- **参考导演规划**:分镜的景别、运镜、节奏、氛围等设计需参照导演规划(阶段3产出)的视觉风格、情绪曲线、镜头意图和转场策略 -- **台词原文锁定**:剧本中所有台词必须原文照搬进 `lines` 字段,禁止改写、省略或意译,如有台词未出现在分镜中视为严重错误 -- 分镜顺序与剧本叙事顺序一致 -- 所有字段完整填写,`associateAssetsIds` 使用资产的实际 ID(非数组索引),必须与工作区现有资产匹配 -- **按剧情选资产(衍生优先)**:同一父资产在单条分镜中,若剧情对应衍生状态则仅填写该衍生资产 ID;仅当无匹配衍生状态时才填写主资产 ID,禁止两者并填 -- **场景资产必须引用**:每条分镜的 `associateAssetsIds` 必须包含该分镜 `scene` 字段对应的场景资产 ID(从 assets 中匹配 type 为 scene 的资产);若存在匹配的衍生场景资产则选用衍生 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为严重错误 -- **角色出现即引用**:画面中出现的所有角色(无论是镜头主体还是仅局部可见——如背影、肢体局部、虚化身影等),只要可被辨识,都必须在 `associateAssetsIds` 和 `associateAssetsNames` 中引用其资产。遗漏画面中可见角色的资产 ID 视为严重错误 -- 剧本中出现但资产列表不存在的角色/物件仍需在分镜中描述,但不在 `associateAssetsIds` 中编造 ID -- **台词-时长强关联**:含台词的分镜,需根据角色当前情绪状态选取对应语速(愤怒~4字/秒、正常~3字/秒、悲伤~2字/秒、低语/虚弱~2字/秒),`duration` ≥ 台词字数 ÷ 语速(向上取整)+ 1s 情绪余量;宁可多留余量,不可台词超时 -- **视觉连续性逐行校验**:每写一行分镜前,回顾上一行的动作终态、景别、角色朝向,确保当前行与之衔接合理,符合「视觉连续性铁律」7条规则 -- **定场精简**:每个新场景定场最多 1~2 镜,禁止 3 镜以上的碎片化定场;能一镜完成定场+引入的不拆两镜 -- **镜头合并自检**:完成全部分镜后,逐段检查是否有可合并的相邻镜头(同空间局部描述、纯装饰镜头、信息重复镜头),合并后重新编号 -- **黄金 6 秒**:无台词镜头不超过 6s,定场/过渡类镜头尤其注意 -- **光影风格一致**:光影描述须与风格技法参考(`director_storyboard_table_narrative` 以及 `director_storyboard_table_style`)的光影规范保持一致 - ---- - -## 五、分镜面板写入 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取剧本 | `get_flowData("script")` | -| 读取分镜表 | `get_flowData("stoaryTable")` | - -### 写入模式 - -本阶段根据决策层派发指令中携带的模式信息,选择对应的写入策略: - -| 模式 | 说明 | prompt | shouldGenerateImage | track 分组规则 | -|------|------|--------|---------------------|----------------| -| **纯文本多参模式** | 仅写入视频描述与资产绑定,不生成提示词和分镜图 | `''`(空字符串) | `false` | 同「分镜图辅助多参模式」,累计时长 ≤ 15s | -| **分镜图辅助多参模式** | 完整生成提示词并生成分镜图(当前默认行为) | 正常生成 | `true`(默认) | 累计时长 ≤ 15s | -| **首位帧模式** | 完整生成提示词,每条分镜独立一组 | 正常生成 | `true`(默认) | **不分组**,每行独立一组,按顺序递增 | - -> 模式信息由决策层在派发指令中明确指定,执行层不自行判断。 - -### 执行流程 - -1. 获取 `script` 、`stoaryTable`,识别决策层指令中的**写入模式**(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式) -2. **若为「分镜图辅助多参模式」或「首位帧模式」**:加载下方「分镜提示词 · 通用基础技法」与风格专属技法(激活 `director_storyboard`)作为提示词生成的全部参考依据,冲突时以风格专属技法为准;**若为「纯文本多参模式」**:跳过提示词相关技法加载 -3. 确定分组(track)与时长规则: - - **纯文本多参模式 / 分镜图辅助多参模式**:同组内分镜 `duration` 累计时长不得超过 15 秒 - - **首位帧模式**:**不分组**,每条分镜独立一组,`track` 按顺序递增(第1行 track=1,第2行 track=2,以此类推) - - 所有模式下,每条 `duration` 必须严格使用 `stoaryTable` 对应行时长 -4. **人物空间位置预分析**(纯文本多参模式跳过此步):正式写入前,先通读全部分镜表,梳理同一人物在不同分镜中出现的画面位置与朝向,建立「人物-位置」连续性基准(如:角色A全片画面偏左、面朝右;角色B画面偏右、面朝左),后续每条 prompt 中涉及该人物时须保持一致 -5. **图像资产标注与正文绑定**(纯文本多参模式跳过此步):为每条分镜的 prompt 生成图像资产标注前缀,按 `associateAssetsIds` 的引用顺序,依次标注 `@图N 为xx{类型}`;**提示词正文中所有涉及该角色/场景/道具的位置,必须使用对应的 `@图N` 替代其名称**,建立参考图与画面描述的直接绑定(详见下方「prompt 图像资产标注规则」) -6. **生成视频描述(videoDesc)**(所有模式均需):根据 `stoaryTable` 对应行的完整分镜数据(画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID),将该行信息整合为一段结构化的视频描述文本,填入 `videoDesc` 字段 -7. 严格按 `stoaryTable` 的分镜数据行逐行写入分镜面板(排除表头与分隔行),根据模式差异化输出: - - **纯文本多参模式**:`` - - **分镜图辅助多参模式**:`` - - **首位帧模式**:`` -8. 写入完成后,仅返回一句确认:`已完成分镜面板写入({当前模式名称})` - -### 分镜提示词 · 通用基础技法 - -> 以下为分镜提示词生成的**通用基础规范**,适用于所有视觉风格。风格锚定词、情绪映射、光影词库、场景质感、美学禁止项等**风格相关内容**由风格专属技法(`director_storyboard`)定义。 - -#### 适用模式 - -本规范仅支持以下两种**参考图一致性模式**输出: - -- **模式A**:Seedream(doubao-seedream) -- **模式B**:Nanobanana(Gemini) - -> ⚠️ **不生成文生图模式提示词**,所有输出均基于**参考图(图生图 / ControlNet / 角色一致性)**工作流前提。 - -#### 解析映射规则 - -| 分镜字段 | 提示词对应处理 | -|----------|----------------| -| 画面描述 | 核心画面语言,转译为镜头视觉描述 | -| 场景 | 背景/环境词,叠加场景质感约束(由风格专属技法提供场景质感词库) | -| 景别 | 镜头参数词(见下方景别词库) | -| 运镜 | 仅作分镜制作信息,不进入提示词,不输出运镜备注 | -| 角色动作 | 描述该镜头**视频首帧(t=0)的预备状态**:动作尚未展开、即将发生的起始体态,视频将从此帧开始向后推演,加"动作自然真实" | -| 情绪 | 面容/眼神词(由风格专属技法提供情绪映射表) | -| 光影氛围 | 光线词 + 色调词(由风格专属技法提供光影词库) | -| 台词 | 不进入提示词,不输出 | -| 音效 | 不进入提示词,不输出 | -| 关联资产名称/ID | 仅用于内部参考图绑定,不作为文本区块输出 | - -> ⚠️ **视频首帧原则**:分镜图是视频生成的**首帧参考**,画面必须呈现镜头 t=0 时刻的状态——动作尚未发生或刚刚启动的**预备定格态**,视频将从这一帧开始播放推演。 -> -> **核心逻辑**:首帧 → 视频推演 → 动作完成。提示词描述的是"推演起点",而非"推演终点"。 -> -> - ✅ 正确(首帧预备态):「双臂自然垂于身侧,衣袂初被风拂动」「手指刚触及剑柄」「身体微微侧转,目光即将投向远方」 -> - ❌ 错误(动作终态):「负手而立,衣袂随风猎猎飘扬」「已拔剑而立」「背对而去」「远眺苍茫大地」 -> - ❌ 错误(过程态):「正在拔剑」「正缓缓转身」(过程态适合视频中间帧,不适合首帧) -> -> 首帧应具有"蓄势待发"的静态张力,暗示接下来视频中将发生的动作方向。 - -#### 景别词库(通用) - -| 景别输入 | 模式B(Nanobanana)英文镜头词 | 模式A(Seedream)中文画面词 | -|----------|-------------------------------|---------------------------| -| 大全景 | `wide shot, establishing shot, full environment` | 大全景构图,环境全貌,人物渺小于场景 | -| 全景 | `full shot, full body, wide angle` | 全身入镜,全景构图,人景比例协调 | -| 中景 | `medium shot, cowboy shot, knee shot` | 中景构图,人物膝盖以上入镜 | -| 近景 | `medium close-up, upper body` | 近景构图,上半身入镜,背景虚化 | -| 半身 | `half body shot, bust shot` | 半身构图,腰部以上入镜,浅景深 | -| 特写 | `close-up, face focus, extreme close-up` | 特写构图,面部或细节局部放大,背景深度虚化 | -| 大特写 | `extreme close-up, macro detail` | 大特写,极度局部细节,虚化背景 | -| 过肩镜 | `over the shoulder shot, two shot` | 过肩构图,前景人物后背虚化,远景人物清晰 | - -#### 运镜标注 - -分镜图生成阶段不需要运镜标注提示词。运镜字段仅用于分镜生产管理信息,不参与提示词生成,不作为输出区块。 - -#### 输出格式规范 - -每条分镜**只输出一种模式的提示词正文**(二选一),不允许同条分镜同时输出模式A与模式B。 - -**模式选择规则**: - -| 条件 | 选择模式 | -|------|----------| -| 目标模型为 Seedream / 豆包系列 | 模式A(中文 Prompt) | -| 目标模型为 Nanobanana / Gemini 系列 | 模式B(英文 XML Prompt) | -| 用户未指定模型 | 默认模式A,或询问用户确认 | -| 批量生成 | 全程保持同一模式,不可中途切换 | - -**输出内容规则**: -- 选择模式A时:仅输出 `[Prompt]` 正文(无负向词,Seedream 不支持) -- 选择模式B时:仅输出 `[XML Prompt]` 正文(含 `` 区块) -- 除提示词正文外,以下内容默认不输出:分镜标题、参考图绑定说明、台词备注、音效备注、约束检查、资产汇总 - -#### 提示词结构框架 - -根据目标模型二选一输出: - -**模式A:Seedream(API `reference_images`)** - -机制:参考图通过 API 参数 `reference_images` 传入,prompt 内只写一致性约束语句,不写 URL。 - -Prompt 结构: -``` -[风格锚定] + [景别构图] + [主体首帧体态] + [情绪面容] + [服饰质感] + [场景背景质感] + [光线色调] + [风格收尾] + [画质锁定词] - -Based on the reference image of @图N , -maintain consistent: face features, hairstyle, costume details. -Generate a new scene: [本镜画面描述,使用@图N 替代角色/场景名称]. -Keep character appearance identical to reference. -``` - -> `[风格锚定]`、`[服饰质感]`、`[场景背景质感]`、`[风格收尾]`、`[画质锁定词]` 的具体内容由**风格专属技法**定义。 - -参数规范: -- 单角色:`reference_images: ["角色URL"]` -- 多角色:`reference_images: ["角色A_URL", "角色B_URL"]` -- 多角色时在 prompt 中显式区分 `image 1`、`image 2` - -**模式B:Nanobanana(多模态 + XML)** - -机制:参考图与 prompt 一起作为多模态输入,prompt 使用结构化 XML 约束角色一致性。 - -Prompt 结构(固定框架): -```xml - -You are a cinematographer and storyboard artist. -Maintain strict visual continuity across all shots. - - - -Image [1]: @图1 — [外貌关键描述: 发色/发型/服装/体型] -Image [2]: @图2 — [外貌关键描述] - - - -- Same wardrobe, hairstyle, face features across ALL shots -- Same environment, lighting style, color grade -- Only framing, angle, action, expression may change -- Do NOT introduce new characters not in reference images - - - -[本镜分镜提示词:景别/构图/动作/情绪/光线/场景质感] -[画质锁定词] -(具体内容由风格专属技法定义) - - - -[负向词模板] -(具体词条由风格专属技法定义) - -``` - -参数规范: -- 参考图作为图片输入,不是 URL 文本 -- 角色描述保持 1-2 句关键特征,避免冗长 -- 仅允许改变景别、角度、动作、表情,不改变人物身份特征 - -#### 通用语言与质量规范 - -- 模式A(Seedream)优先中文自然语言段落 -- 模式B(Nanobanana)优先英文 XML 结构化提示词 -- 提示词聚焦"内容表现 + 画质锐利",避免模糊类词 -- 不使用会导致糊图的表达(见下方「画质降级禁用词」表) -- 模式B 负向词按风格专属「负向词模板」输出,每条必须包含,不可省略;模式A 不输出负向词 -- 画质锁定词按风格专属「画质锁定词」模板输出,每条必须包含 - -#### 画外文字 vs 画内文字规则 - -- **画外文字**(字幕、水印、标题卡、旁白叠字等 UI 层覆盖文字)→ **绝对禁止**,必须在画质锁定词和负向词中声明禁止 -- **画内文字**(场景中自然存在的文字道具:角色提笔写字、书卷上的字迹、匾额牌匾、书信内容、路标、店铺招牌等)→ **属于场景道具**,当分镜画面描述中明确包含此类内容时,应正常描述其存在,不受禁止文字规则限制 -- **判断标准**:该文字是否存在于**故事世界内部**。匾额上的字 = 画内道具 ✅;画面底部的角色对白 = 画外字幕 ❌ - -#### 画质降级禁用词(所有风格通用) - -| 禁用写法 | 模型行为 | 安全替代 | -|---------|---------|----------| -| `film grain` / `胶片颗粒` | 全图加噪点变糊 | `subtle cinematic texture` / `轻微电影质感` | -| `imperfect focus` / `失焦` | 全图失焦 | 直接删除 | -| `edges not perfectly sharp` | 边缘变糊 | 直接删除 | -| `slight natural deviation` | 整体降分辨率 | 直接删除 | -| `not completely stable` | 画面模糊 | 直接删除 | -| `blurry background`(滥用) | 主体跟着糊 | `background bokeh, subject in sharp focus` | -| `hazy` / `foggy`(滥用) | 全图雾化 | 仅在空气透视需求时用,同时加 `subject sharp` | -| `柔焦` / `朦胧感` | 降低整体锐度 | 直接删除 | - -> **核心原则**:内容可以"不完美"(光线不均、构图非对称),画质必须锐利。 - -#### 批量处理规范 - -用户输入多行分镜表时: - -1. **逐行顺序处理**,不跳行、不合并 -2. 每条分镜仅输出目标模式的提示词正文(Prompt 或 XML Prompt) -3. 若同一场景连续多镜,**场景质感词可复用**,但情绪/光线/景别/动作必须**按行独立处理** -4. 关联资产名称相同的镜次,**一致性标注词必须一致** -5. 不追加任何非提示词区块(如资产引用汇总、台词/音效备注、约束检查) - -### prompt 图像资产标注规则 - -每条分镜的 `prompt` 字段必须以**图像资产标注**作为前缀,且**提示词正文中使用 `@图N` 直接替代对应的角色/场景/道具名称**,建立参考图与画面描述的直接绑定关系。标注按 `associateAssetsIds` 中资产的引用顺序,从 `@图1` 开始依次编号。 - -**格式**:`@图1 为{资产名称}{资产类型} @图2 为{资产名称}{资产类型} ... , 正文中使用@图N替代角色/场景名称的提示词` - -**类型映射**: - -| 资产 type | 标注类型词 | -|-----------|------------| -| role | 角色 | -| tool | 道具 | -| scene | 场景 | -| clip | 片段 | - -**规则**: -- 编号从 `@图1` 起,按 `associateAssetsIds` 数组顺序依次递增 -- 每个引用的资产 ID 对应一个标注项,**不可遗漏、不可多出** -- 资产名称使用 assets 数据中该资产的 `name` 字段 -- 资产类型根据上方类型映射表填写 -- 标注部分与提示词正文之间用 `, ` 分隔 -- 衍生资产沿用其自身 `name` 和父资产的 `type` -- **正文绑定(核心)**:提示词正文中,所有原本应出现角色名/场景名/道具名的位置,**必须替换为对应的 `@图N` 标记**,不再使用文字名称。这样参考图与画面中的视觉主体形成直接指向关系,避免资产名称与角色名称不一致导致的歧义(如衍生资产名"幕离红斗篷"与角色名"戚映竹"无法对应的问题) -- 同一 `@图N` 在正文中可多次出现(如角色在前景和反射面中同时可见时) - -**示例**(假设 `associateAssetsIds="[101, 100, 300]"` 对应苏晚卿(role)、凌玄(role)、大殿(scene)): - -❌ 错误(正文使用文字名称,与前缀标注脱节): -``` -@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉…… -``` - -✅ 正确(正文使用 @图N 直接绑定参考图): -``` -@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, @图1 冷笑,居高临下看着跪地的@图2,@图3 柱影深沉…… -``` - -### prompt 人物位置连贯性规则 - -生成每条 prompt 时,须遵守以下跨分镜人物位置一致性约束: - -- **画面位置锁定**:同一角色在同一场景内的多条分镜中,其画面左右位置(画面左侧 / 中央 / 右侧)须保持固定,不得无叙事理由地跳侧 -- **朝向守恒**:对话/对峙场景遵循 180° 视轴线——角色A面朝右则全场景保持面朝右,角色B面朝左则全场景保持面朝左;prompt 中须通过方位词(facing left / 面朝左、on the left side of frame / 画面左侧等)显式标注 -- **前后景层次一致**:若角色A在分镜N中处于前景、角色B处于中景,则同场景后续分镜中二者前后关系不应无理由反转 -- **位置变化须有动作衔接**:角色画面位置确需变化时(如角色走动、转身),前序分镜的 prompt 中须包含对应位移/转身动作描写,不可凭空跳位 -- **跨场景可重置**:切换到全新场景时允许重新分配画面位置,但新场景内部仍须保持一致 -- **反射面视觉关系**:当画面中存在反射介质(镜面、水面、光滑金属、窗玻璃、相机镜头等)时,须注意以下规则: - - **镜像翻转**:反射面中角色的左右朝向与实体相反(实体面朝右→镜像面朝左),prompt 中须显式标注反射体与实体的朝向关系(如"@图1 面朝右,水面倒影中@图1 面朝左") - - **反射面不改变位置基准**:角色的画面位置以实体为准,反射面中的映像不视为角色位置变化 - - **反射面内容与实体一致**:反射面中可见的角色服饰、发型、表情等必须与同帧实体一致,不可出现偏差 - - **反射面景深与清晰度**:根据反射面距离和材质,反射图像可适当降低清晰度(如水面波纹导致的模糊),但须在 prompt 中标注(如"水面倒影微微扭曲") - - **识别触发**:当分镜画面描述或场景资产中包含镜面、水面、湖面、溪流、玻璃、金属反光、相机/摄像等反射性元素时,自动触发本规则 - -### 约束 - -- 前置条件:分镜表已构建完成且用户已确认 -- 你必须使用XML格式写入工作区分镜面板(具体参数值按当前模式填写,见上方执行流程第7步) -- **videoDesc 必填**(所有模式):每条分镜的 `videoDesc` 必须根据 `stoaryTable` 对应行的分镜数据生成,包含画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID 等完整信息 -- 行数一致性约束:分镜面板 `items` 数量必须与 `stoaryTable` 的分镜数据行数量完全一致(不包含表头与分隔行) -- 时长一致性约束:分镜面板 `duration` 必须与 `stoaryTable` 对应行时长完全一致 -- 阶段边界:本阶段禁止调用 `generate_storyboard_images` - -**模式差异化约束:** - -| 约束项 | 纯文本多参模式 | 分镜图辅助多参模式 | 首位帧模式 | -|--------|---------------|-------------------|------------| -| `prompt` | `''`(空字符串) | 正常生成提示词 | 正常生成提示词 | -| `shouldGenerateImage` | `false` | `true` | `true` | -| `track` 分组 | 累计时长 ≤ 15s | 累计时长 ≤ 15s | 每行独立一组,按顺序递增 | -| 人物位置连贯性校验 | 不适用(无 prompt) | **必须**校验 | **必须**校验 | -| 图像资产标注 | 不适用(无 prompt) | **必填** | **必填** | -| 提示词技法加载 | 跳过 | 加载通用基础技法 + 风格专属技法 | 加载通用基础技法 + 风格专属技法 | - ---- - -## 六、分镜图生成 - -### 工具 - -| 操作 | 调用 | -|------|------| -| 读取分镜面板 | `get_flowData("storyboard")` | -| 生成图片 | `generate_storyboard_images({ ids: [分镜ID列表] })` | - -### 执行流程 - -1. 获取 `storyboard` -2. 提取真实分镜 ID 列表 -3. 调用 `generate_storyboard_images({ ids: [真实分镜ID列表] })` 生成分镜图片(异步,发起即返回) - -### 约束 - -- 前置条件:分镜面板已写入完成 -- 图片必须与分镜描述匹配 -- 仅使用 `storyboard` 中的真实分镜 ID,禁止编造或复用无效 ID \ No newline at end of file diff --git a/data/skills/production_execution_derive_assets.md b/data/skills/production_execution_derive_assets.md new file mode 100644 index 0000000..eaa73e2 --- /dev/null +++ b/data/skills/production_execution_derive_assets.md @@ -0,0 +1,97 @@ +--- +name: production_execution_derive_assets.md +description: >- + 视频制作执行层Agent技能 — 衍生资产分析与信息写入。 + 负责分析剧本并识别每个资产的视觉状态变体,逐条写入衍生资产。 +--- +# 执行层 Agent — 衍生资产分析与信息写入 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 一、衍生资产分析与信息写入 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | +| 写入衍生资产 | `add_deriveAsset` | + + +### 执行流程 + +1. 获取 `script` 和 `assets` +2. 按下方提取规则分析剧本,识别每个资产的视觉状态变体 +3. 简单说明要增加的衍生资产内容以及信息。总共200字以内 +4. 如不需要衍生资产,返回"不需要衍生资产",流程结束 +5. 对每条新增衍生资产**逐条调用** `add_deriveAsset` 写入(新增时 `id` 填 `null`,并完整填写 `assetsId`/`name`/`desc`/`type`) +6. 全部调用完成后再返回简短确认(例如:"已完成衍生资产写入,共 N 条") + +### 强制约束(防漏调用) + +- 识别出衍生资产后,必须发生实际 `add_deriveAsset` 工具调用;仅输出分析文字视为未完成任务 +- `add_deriveAsset` 调用次数必须与"本次新增衍生资产条数"一致 +- 未调用写入工具时,不得返回"已完成"类结果 + + +### `add_deriveAsset` 入参要求 +```ts +add_deriveAsset({ + assetsId: number, // 关联的资产ID + id: number | null, // 衍生资产ID,新增填 null + name: string, // 衍生资产名称 + desc: string, // 衍生资产描述 + type: "role" | "tool" | "scene" | "clip", // 衍生资产类型 +}) +``` + +字段说明: +- `assetsId`:父资产在工作区中的 ID +- `id`:新增时必须为 `null`;更新已有衍生资产时填写已有衍生资产 ID +- `name`:2~6 字,体现视觉外观变化 +- `desc`:`[与默认态的差异] · [视觉特征] ,1~100 字 +- `type`: + - 角色资产填 `role` + - 道具资产填 `tool` + - 场景资产填 `scene` + - 镜头/片段类资产填 `clip` + + + +### 提取规则 + +> **核心原则**:derive 是父资产的**视觉状态变体**("{父资产名}·{状态名}"),**不是**独立物件,也不是为了某个镜头临时拆出的局部特写。 +> 只衍生**图片模型无法仅凭提示词稳定处理、且能在多个镜头/场次复用的资产级视觉差异**(服装、整体形态、结构性残缺、物件状态等)。 +> 表情、情绪、简单动作姿态、局部特写、镜头强调细节等**不需要衍生**。 +> **角色默认基准态**:角色父资产默认视为基础打底态(如白色背心+内裤,或仅内裤状态)。因此剧本中凡出现校服、常服、礼服、盔甲、外套等明确穿着时,通常应补充对应的**服装类衍生资产**;基础打底态本身不重复创建衍生。若某角色当前**没有任何子资产**,则应先根据剧本主场景与常态设定,补充一套最合适的**默认常服/正式服装衍生**,避免后续该角色长期停留在基础打底态。 + +**衍生类型参考**: + +| 资产类型 | 典型衍生 | 示例 | +|---------|---------|------| +| 角色 | 服装变体、结构性特征变体 | 常服→礼服、变身/异化、缺手/缺脚 | +| 道具 | 损坏、激活/发光、变形 | 破损断裂、发光激活、展开/碎裂 | +| 场景 | 时间变体、破坏状态、氛围变体 | 夜景版、战后废墟、雨天/雪天 | + +**规则**: +- 只提取与默认状态有明显视觉差异、且模型无法仅凭提示词控制的状态 +- 角色类资产**只考虑两类衍生**:①服装变体;②结构性特征变体(如变身、异化、缺手缺脚等角色整体外形改变) +- 特征变体必须同时满足:**稳定、可复用、资产级**。仅在多个镜头/场次中持续成立,且会改变角色整体识别外观时才创建 +- 以下情况**一律不需要衍生**:手背/眼睛/嘴唇等局部特写;"惊恐面部""眼眶泛红"等瞬时表情或情绪状态;"皮肤白到几乎透明、冷如铁片"这类可由分镜描述或 prompt 表达的局部质感;单镜头为了恐怖钩子或情绪强化而做的定格画面 +- **常见误判原因**:把"剧本重点描写"误当成"需要衍生资产"。判断标准不是它是否重要,而是它是否属于父资产**稳定、可复用、整体级**的视觉状态 +- 若角色当前 `derive` 为空,应先补 1 个最符合剧本常态的服装类衍生资产(如常服、校服、工装、礼服中的一种),作为后续主要出镜默认态 +- 若当前剧情穿着不是基础打底态,应优先补充对应服装类衍生资产;若存在持续且显著的身体/形态差异,再补充对应特征类衍生资产 +- 已存在于 `derive` 数组中的状态不重复 +- 每个资产 1~5 个衍生,宁缺勿滥 +- 提取到衍生资产后,必须逐条调用 `add_deriveAsset` 保存,禁止只分析不写入 +- 来源优先级:剧本明确描写 > 资产描述暗示 > 合理推测 +- `name`:2~6 字,体现视觉外观变化 +- `desc`:格式为 `[与默认态的差异] · [视觉特征] `, diff --git a/data/skills/production_execution_director_plan.md b/data/skills/production_execution_director_plan.md new file mode 100644 index 0000000..958a9a5 --- /dev/null +++ b/data/skills/production_execution_director_plan.md @@ -0,0 +1,132 @@ +--- +name: production_execution_director_plan.md +description: >- + 视频制作执行层Agent技能 — 导演规划。 + 负责基于剧本与资产制定完整的导演创作规划(六维度)。 +--- +# 执行层 Agent — 导演规划 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 三、导演规划 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | + +### 风格技法参考 + + + +### 执行流程 + +1. 加载风格技法参考,获取 `script` 和 `assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。 +2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」 +3. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 + +### 导演具象化原则(贯穿全文) + +规划文本必须像导演给演员讲戏,禁止抽象情绪词,所有描述以「摄像机能拍到什么」为标准: + +- **动作具体化**:写连续物理动作链("揉太阳穴→目光移开→靠向椅背"),禁止"感到疲惫"等抽象词 +- **光影可量化**:主光源方向 + 色温范围 + 明暗倾向("侧光偏暖,明暗反差强"),禁止空泛词("柔光""氛围好") +- **情绪靠身体**:通过肢体微表情传达("指尖发颤、瞳孔收缩"代替"他很紧张") +- **声音可感知**:环境音具体到声源("蜡芯噼啪声、远处风声"),禁止"背景音乐烘托气氛" + +### 创作规划(六维度) + +#### ① 主题立意与叙事核心 + +规划项:核心主题、情感主线、离场感受、情感表达策略 + +约束: +- 主题一句话凝练 +- 情感主线拆 2~3 个递进层次,每层对应可感知的视觉/行为变化 +- 离场感受与表达策略须与风格技法参考一致 + +#### ② 视觉风格与画面基调 + +规划项:整体色调、画面质感、构图风格、镜头运动偏好、光影体系 + +约束: +- 色调具体到色温范围或色彩倾向描述 +- 光影以「段落-光影方向」表格呈现,每段落指定光影基调方向 +- 色温、光源角度、冷暖色调分配等具体技法参数以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准 +- **构图须说明叙事理由**,参考以下情绪-构图映射(按需选用): + - 对称构图 → 秩序 / 压迫 / 庄重 + - 三分法偏侧留白 → 孤独 / 期待 / 未知 + - 对角线构图 → 运动 / 冲突 / 紧张 + - 框中框构图 → 囚禁 / 窥视 / 心理距离 +- **空间三层分离**:关键画面须规划前景(引导视线)/ 中景(叙事主体)/ 背景(情绪氛围)的层次关系 +- 镜头运动默认以静为主,运镜须说明叙事目的("缓推=靠近角色内心""缓拉=揭示全貌/抽离") + +#### ③ 叙事结构与节奏规划 + +规划项:叙事模式选型、段落划分、情绪曲线、快慢节奏、关键转折点、段落过渡方式 + +约束: +- **叙事模式选型**(根据内容特征选择,写入规划): + - 完整叙事型:适用于有完整起承转合的长剧本,按戏剧节拍划分段落 + - 情绪意境型:适用于氛围/散文式内容,按情绪阶段(起-承-转-合)划分 + - 原著保真型:适用于已有成熟结构的改编剧本,按原著自然场景边界划分,不强加节拍 +- 段落以表格呈现(编号 / 名称 / 场次 / 核心事件 / 情绪浓度 / 节奏) +- 情绪曲线渐进递增,避免"平平平→突然爆发" +- 转折点必须用**具体视觉手段**描述(光影突变、景别跳切、空镜隐喻等),不依赖台词解释 +- 高潮段落的"快"指情绪密度高(更紧密的景别切换),不等于缩短镜头时长 + +#### ④ 分场景情绪与画面意图 + +规划项(逐场):场次编号、情绪目标、氛围方向、镜头意图、空间叙事、距离感设计 + +约束: +- 情绪目标用具象可感描述("偷偷心动后的嘴角压不住",禁止"开心"等抽象词) +- 氛围方向映射风格技法参考的光影方案 +- **镜头意图写"为什么"**("用特写让观众看到她眼里的犹豫"),而非"怎么拍"("用特写拍脸") +- **场景语义→镜头方案参考**(为每场选择最匹配的方案方向): + - 开场/定场 → 大远景 + 缓推至主体 + - 角色登场 → 全景/中景 + 微仰 + 背光轮廓 + - 对话交锋 → 中景/近景 + 正反打 + 守视轴 + - 情绪加压 → 景别逐步递进收紧(中→近→特写→大特写) + - 浪漫/温馨 → 近景 + 浅景深 + 暖调柔光 + - 独白/沉思 → 特写侧面轮廓 + 定镜 + - 高潮转折 → 景别骤变或环绕运镜 +- **距离感设计**:通过景别变化映射人物关系变化(初期远→中期近但有遮挡→后期特写零距离) + +#### ⑤ 声音与音乐方向 + +规划项:音乐风格、段落配乐对应、配乐覆盖率、环境音设计、沉默运用 + +约束: +- 配乐按段落统一规划(不逐场),同段落内场景切换靠环境音变化过渡 +- 乐器选择、组合策略等具体技法以风格技法参考(`director_planning_narrative` 以及 `director_planning_style`)为准 +- 环境音具体到可感知声源("蝉鸣 / 溪水 / 市井叫卖 / 雨滴檐角"),每场标注 1~2 个核心环境音 +- 标注运用沉默手法的关键瞬间(关键情感瞬间优先考虑去掉配乐,只留环境音) +- 全片配乐覆盖率建议不超过 70%,留白段落与配乐段落形成呼吸感 + +#### ⑥ 转场与视觉连续性 + +规划项:场间转场策略、段落间过渡手法、视觉连续性锚点 + +约束: +- 同场戏内镜头默认硬切 +- 不同场景间插入空镜过渡做情绪缓冲(标注具体空镜内容方向) +- 大段落间可用叠化/淡入淡出做柔性过渡 +- 标注全片视觉连续性锚点:角色位置、服装状态、环境光影在跨场景时保持一致的关键点 + +### 输出要求 + +- 总字数不超过 1200 词,精炼表达 +- 你必须使用XML格式写入工作区拍摄计划:内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +- 按「创作规划(①~⑥)」顺序输出 +- 表格仅在信息密度高时使用,其余用简洁列表或短段落 +- 具象优于抽象,视觉优先叙事,所有描述须通过「导演具象化原则」检验 diff --git a/data/skills/production_execution_generate_assets.md b/data/skills/production_execution_generate_assets.md new file mode 100644 index 0000000..68921b0 --- /dev/null +++ b/data/skills/production_execution_generate_assets.md @@ -0,0 +1,36 @@ +--- +name: production_execution_generate_assets.md +description: >- + 视频制作执行层Agent技能 — 衍生资产图片生成。 + 负责收集需要生成图片的资产并调用生成工具。 +--- +# 执行层 Agent — 衍生资产图片生成 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 二、衍生资产图片生成 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取资产列表 | `get_flowData("assets")` | +| 生成资产图片 | `generate_assets_images({ ids: [资产id列表] })` | + +### 执行流程 + +1. 获取 `assets`,收集所有需要生成图片的资产 id +2. 调用 `generate_assets_images({ ids: [资产id列表] })` 生成图片(异步,发起即返回) + +### 约束 + +- 前置条件:衍生资产分析已完成并写入 +- 仅对有衍生状态且尚未生成图片的资产发起生成 diff --git a/data/skills/production_execution_storyboard_gen.md b/data/skills/production_execution_storyboard_gen.md new file mode 100644 index 0000000..416c943 --- /dev/null +++ b/data/skills/production_execution_storyboard_gen.md @@ -0,0 +1,38 @@ +--- +name: production_execution_storyboard_gen.md +description: >- + 视频制作执行层Agent技能 — 分镜图生成。 + 负责读取分镜面板并调用图片生成工具生成分镜图片。 +--- +# 执行层 Agent — 分镜图生成 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 六、分镜图生成 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取分镜面板 | `get_flowData("storyboard")` | +| 生成图片 | `generate_storyboard_images({ ids: [分镜ID列表] })` | + +### 执行流程 + +1. 获取 `storyboard` +2. 提取真实分镜 ID 列表 +3. 调用 `generate_storyboard_images({ ids: [真实分镜ID列表] })` 生成分镜图片(异步,发起即返回) + +### 约束 + +- 前置条件:分镜面板已写入完成 +- 图片必须与分镜描述匹配 +- 仅使用 `storyboard` 中的真实分镜 ID,禁止编造或复用无效 ID diff --git a/data/skills/production_execution_storyboard_panel.md b/data/skills/production_execution_storyboard_panel.md new file mode 100644 index 0000000..5597853 --- /dev/null +++ b/data/skills/production_execution_storyboard_panel.md @@ -0,0 +1,83 @@ +--- +name: production_execution_storyboard_panel.md +description: >- + 视频制作执行层Agent技能 — 分镜面板写入。 + 负责根据分镜表数据逐行写入分镜面板,支持纯文本多参/分镜图辅助多参/首位帧三种模式。 +--- +# 执行层 Agent — 分镜面板写入 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 五、分镜面板写入 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取剧本 | `get_flowData("script")` | +| 读取分镜表 | `get_flowData("stoaryTable")` | + +### 写入模式 + +本阶段根据决策层派发指令中携带的模式信息,选择对应的写入策略: + +| 模式 | 说明 | prompt | shouldGenerateImage | track 分组规则 | +|------|------|--------|---------------------|----------------| +| **纯文本多参模式** | 仅写入视频描述与资产绑定,不生成提示词和分镜图 | `''`(空字符串) | `false` | 同「分镜图辅助多参模式」,累计时长 ≤ 15s | +| **分镜图辅助多参模式** | 完整生成提示词并生成分镜图(当前默认行为) | 正常生成 | `true`(默认) | 累计时长 ≤ 15s | +| **首位帧模式** | 完整生成提示词,每条分镜独立一组 | 正常生成 | `true`(默认) | **不分组**,每行独立一组,按顺序递增 | + +> 模式信息由决策层在派发指令中明确指定,执行层不自行判断。 + +### 执行流程 + +1. 获取 `script` 、`stoaryTable`,识别决策层指令中的**写入模式**(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式) +2. **若为「分镜图辅助多参模式」或「首位帧模式」**:激活 `storyboard_prompt_techniques` 作为通用提示词技法参考(含解析映射规则、景别词库、输出格式规范、提示词结构框架、画质规范、图像资产标注规则、人物位置连贯性规则),并激活风格专属技法(`director_storyboard`)作为提示词生成的全部参考依据,冲突时以风格专属技法为准;**若为「纯文本多参模式」**:跳过提示词相关技法加载 +3. 确定分组(track)与时长规则: + - **纯文本多参模式 / 分镜图辅助多参模式**:同组内分镜 `duration` 累计时长不得超过 15 秒 + - **首位帧模式**:**不分组**,每条分镜独立一组,`track` 按顺序递增(第1行 track=1,第2行 track=2,以此类推) + - 所有模式下,每条 `duration` 必须严格使用 `stoaryTable` 对应行时长 +4. **人物空间位置与朝向预分析**(纯文本多参模式跳过此步):正式写入前,先通读全部分镜表,执行以下分析并建立全局基准表: + - **画面位置分配**:根据各角色在分镜表中的首次出场空间关系,确定每个角色的画面左右位置(画面左侧 / 中央 / 右侧) + - **朝向提取**:从分镜表每行「角色动作」字段的 `|朝向:` 标注中直接提取各角色朝向信息。若个别行缺少标注(如空镜),按步骤2已加载技法中的「朝向获取规则」兜底推断 + - **建立基准表**:输出格式如 `角色A → 画面左侧,面朝右 / 角色B → 画面右侧,面朝左`,同一场景内锁定不变 + - **变化标记**:若分镜表某行的角色动作包含转身、转头、走位等方向变化(朝向标注同步变更),在该行标记朝向/位置变更点,后续分镜从变更后状态继续锁定 + - 后续每条 prompt 中涉及该人物时须按基准表显式标注位置和朝向(依据步骤2已加载技法中的「prompt 人物位置与朝向连贯性规则」) +5. **图像资产标注与正文绑定**(纯文本多参模式跳过此步):为每条分镜的 prompt 生成图像资产标注前缀,按 `associateAssetsIds` 的引用顺序,依次标注 `@图N 为xx{类型}`;**提示词正文中所有涉及该角色/场景/道具的位置,必须使用对应的 `@图N` 替代其名称**,建立参考图与画面描述的直接绑定(依据步骤2已加载技法中的「prompt 图像资产标注规则」) +6. **生成视频描述(videoDesc)**(所有模式均需):根据 `stoaryTable` 对应行的完整分镜数据(画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID),将该行信息整合为一段结构化的视频描述文本,填入 `videoDesc` 字段 +7. **生成提示词(prompt)并忠实性校验**(纯文本多参模式跳过此步):逐行读取 `stoaryTable` 对应行的「画面描述」「场景」「景别」「角色动作」「情绪」「光影氛围」字段,严格按照步骤2已加载技法中的「分镜表内容忠实性原则」和「解析映射规则」将各字段映射为提示词各段落。**生成每条提示词后须立即逐字段比对分镜表原始内容**,确认:① 画面描述中的所有视觉主体和空间关系均已完整保留在提示词正文中;② 情绪基调与分镜表一致;③ 光影方向和色调与分镜表一致;④ 景别匹配;⑤ 角色动作语义一致(仅形式按首帧原则转换,不替换为不同动作);⑥ 角色朝向与步骤4基准表一致,且 prompt 中已显式标注朝向方位词。校验不通过须修正后再进入下一步 +8. 严格按 `stoaryTable` 的分镜数据行逐行写入分镜面板(排除表头与分隔行),根据模式差异化输出: + - **纯文本多参模式**:`` + - **分镜图辅助多参模式**:`` + - **首位帧模式**:`` +9. 写入完成后,仅返回一句确认:`已完成分镜面板写入({当前模式名称})` + +### 约束 + +- 前置条件:分镜表已构建完成且用户已确认 +- 你必须使用XML格式写入工作区分镜面板(具体参数值按当前模式填写,见上方执行流程第8步),所有 XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +- **videoDesc 必填**(所有模式):每条分镜的 `videoDesc` 必须根据 `stoaryTable` 对应行的分镜数据生成,包含画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID 等完整信息 +- **prompt 内容忠实性**(分镜图辅助多参模式 / 首位帧模式):提示词内容必须忠实于 `stoaryTable` 对应行的画面描述、场景、景别、角色动作、情绪、光影氛围等字段,禁止凭空添加分镜表未描述的视觉元素或替换原始语义;风格锚定词和画质锁定词作为辅助修饰,不得挤占或替代分镜表中的具体画面内容(详见步骤2已加载技法中的「分镜表内容忠实性原则」) +- 行数一致性约束:分镜面板 `items` 数量必须与 `stoaryTable` 的分镜数据行数量完全一致(不包含表头与分隔行) +- 时长一致性约束:分镜面板 `duration` 必须与 `stoaryTable` 对应行时长完全一致 +- 阶段边界:本阶段禁止调用 `generate_storyboard_images` + +**模式差异化约束:** + +| 约束项 | 纯文本多参模式 | 分镜图辅助多参模式 | 首位帧模式 | +|--------|---------------|-------------------|------------| +| `prompt` | `''`(空字符串) | 正常生成提示词 | 正常生成提示词 | +| `shouldGenerateImage` | `false` | `true` | `true` | +| `track` 分组 | 累计时长 ≤ 15s | 累计时长 ≤ 15s | 每行独立一组,按顺序递增 | +| 人物位置连贯性校验 | 不适用(无 prompt) | **必须**校验(见步骤2已加载技法) | **必须**校验(见步骤2已加载技法) | +| 图像资产标注 | 不适用(无 prompt) | **必填**(见步骤2已加载技法) | **必填**(见步骤2已加载技法) | +| 提示词技法加载 | 跳过 | 激活通用技法 + 风格专属技法(见步骤2) | 激活通用技法 + 风格专属技法(见步骤2) | +| 提示词忠实性校验 | 不适用(无 prompt) | **必须**校验(见步骤7) | **必须**校验(见步骤7) | diff --git a/data/skills/production_execution_storyboard_table.md b/data/skills/production_execution_storyboard_table.md new file mode 100644 index 0000000..27ae286 --- /dev/null +++ b/data/skills/production_execution_storyboard_table.md @@ -0,0 +1,74 @@ +--- +name: production_execution_storyboard_table.md +description: >- + 视频制作执行层Agent技能 — 构建分镜表。 + 负责将剧本拆分为分镜,按规范填写所有字段,生成完整分镜表。 +--- +# 执行层 Agent — 构建分镜表 + +你是视频制作项目的**执行层 Agent**,接收决策层派发的任务指令并执行。 + +## 通用规则 + +- 执行前先调用 `get_flowData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 +- 只执行当前任务对应的工作,不越权执行其他阶段 +- 完成写入后返回一句简短确认即可,不复述完整内容;返回后本次任务终止 + +--- + +## 四、构建分镜表 + +### 工具 + +| 操作 | 调用 | +|------|------| +| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | + +### 风格技法参考 + + + +### 执行流程 + +1. 获取 `script` 和 `assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。 +2. 激活 `storyboard_table_techniques` 作为分镜表通用技法参考(含分镜拆分原则、定场与镜头合并规则、视觉连续性铁律、字段填写指引、转场规则)。 +3. 按通用技法规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 +4. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 + +### 示例 + +输入剧本片段: +``` +苏晚卿冷笑:「还有你当宝贝的青云令」 +△ 凌玄气血逆流,再次一口鲜血喷出 +△ 青云令表面灵纹暗淡,隐约可见细微裂痕 +``` + +输出分镜表: + +| 序号 | 画面描述 | 场景 | 关联资产名称 | 时长 | 景别 | 运镜 | 角色动作 | 情绪 | 光影氛围 | 台词 | 音效 | 关联资产ID | +|----|-------------|------|----------|------|------|------|------|------|------|-------|-------|----------| +| 1 | 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉 | 大殿 | [苏晚卿, 凌玄, 大殿] | 4 | 近景 | 静止 | 嘴角缓缓上扬→微仰下巴→眼神下压注视(开篇)|朝向:苏晚卿-3/4正面朝右微仰头 | 冷傲轻蔑 | 顶光直射面部,眼窝明暗对半,背景大殿沉入暗部 | 苏晚卿:还有你当宝贝的青云令 | 空旷殿堂回声 | [101, 100, 300] | +| 2 | 凌玄跪地猛喷鲜血,身体前倾欲坠,血雾弥漫 | 大殿 | [凌玄, 大殿] | 3 | 中景 | 缓慢推至近景 | 胸口剧颤→猛然喷出鲜血→身体前倾摇晃(承接上镜:跪地状态)|朝向:凌玄-3/4正面朝左微低头 | 痛苦绝望 | 左侧冷光勾边,血雾被逆光映成暗红,背景压暗 | 无台词 | 喷血声 + 沉闷跪地声 | [100, 300] | +| 3 | 青云令灵纹一寸寸暗淡,玉面浮现细微裂痕 | 大殿 | [青云令, 大殿] | 3 | 大特写 | 静止 | 灵纹光芒由亮渐灭→裂痕自中心蔓延(承接上镜:喷血后切物件) | 紧张压迫 | 微弱自发光从内部渗出渐灭,周围完全暗沉 | 无台词 | 细微玉石碎裂声 | [202, 300] | + +### 约束 + +- **整体输出、不分段**:分镜表必须一次性完整输出为一个连续表格,不可按段落/场次拆分成多个表格,不可中途分割或分批返回 +- 你必须使用XML格式写入工作区拍摄计划:内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +- **严格依据剧本**:分镜内容必须严格按照剧本叙事顺序和内容进行拆分,不得遗漏或新增剧本中不存在的情节 +- **参考导演规划**:分镜的景别、运镜、节奏、氛围等设计需参照导演规划(阶段3产出)的视觉风格、情绪曲线、镜头意图和转场策略 +- **台词原文锁定**:剧本中所有台词必须原文照搬进 `lines` 字段,禁止改写、省略或意译,如有台词未出现在分镜中视为严重错误 +- 分镜顺序与剧本叙事顺序一致 +- 所有字段完整填写,`associateAssetsIds` 使用资产的实际 ID(非数组索引),必须与工作区现有资产匹配 +- **按剧情选资产(衍生优先)**:同一父资产在单条分镜中,若剧情对应衍生状态则仅填写该衍生资产 ID;仅当无匹配衍生状态时才填写主资产 ID,禁止两者并填 +- **场景资产必须引用**:每条分镜的 `associateAssetsIds` 必须包含该分镜 `scene` 字段对应的场景资产 ID(从 assets 中匹配 type 为 scene 的资产);若存在匹配的衍生场景资产则选用衍生 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为严重错误 +- **角色出现即引用**:画面中出现的所有角色(无论是镜头主体还是仅局部可见——如背影、肢体局部、虚化身影等),只要可被辨识,都必须在 `associateAssetsIds` 和 `associateAssetsNames` 中引用其资产。遗漏画面中可见角色的资产 ID 视为严重错误 +- 剧本中出现但资产列表不存在的角色/物件仍需在分镜中描述,但不在 `associateAssetsIds` 中编造 ID +- **台词-时长强关联**:含台词的分镜,需根据角色当前情绪状态选取对应语速(愤怒~4字/秒、正常~3字/秒、悲伤~2字/秒、低语/虚弱~2字/秒),`duration` ≥ 台词字数 ÷ 语速(向上取整)+ 1s 情绪余量;宁可多留余量,不可台词超时 +- **视觉连续性逐行校验**:每写一行分镜前,回顾上一行的动作终态、景别、角色朝向,确保当前行与之衔接合理,符合「视觉连续性铁律」7条规则 +- **朝向必填且连续**:每条分镜的 `action` 字段必须包含 `|朝向:` 标注(空镜除外);同一场景内同一角色的朝向须与首次出场时保持一致,变化时须在动作描述中包含转身/转头等衔接动作,朝向标注同步更新 +- **定场精简**:每个新场景定场最多 1~2 镜,禁止 3 镜以上的碎片化定场;能一镜完成定场+引入的不拆两镜 +- **镜头合并自检**:完成全部分镜后,逐段检查是否有可合并的相邻镜头(同空间局部描述、纯装饰镜头、信息重复镜头),合并后重新编号 +- **黄金 6 秒**:无台词镜头不超过 6s,定场/过渡类镜头尤其注意 +- **光影风格一致**:光影描述须与步骤1已加载的风格技法的光影规范保持一致 diff --git a/data/skills/production_skills/storyboard_prompt_techniques.md b/data/skills/production_skills/storyboard_prompt_techniques.md new file mode 100644 index 0000000..7004355 --- /dev/null +++ b/data/skills/production_skills/storyboard_prompt_techniques.md @@ -0,0 +1,322 @@ +--- +name: storyboard_prompt_techniques +description: >- + 通用分镜提示词技法参考。 + 涵盖提示词解析映射规则、景别词库、输出格式规范、提示词结构框架、画质规范、图像资产标注规则、人物位置连贯性规则等,供 Agent 激活使用。 +--- +# 分镜提示词 · 通用基础技法 + +> 以下为分镜提示词生成的**通用基础规范**,适用于所有视觉风格。风格锚定词、情绪映射、光影词库、场景质感、美学禁止项等**风格相关内容**由风格专属技法(`director_storyboard`)定义。 + +--- + +## 适用模式 + +本规范仅支持以下两种**参考图一致性模式**输出: + +- **模式A**:Seedream(doubao-seedream) +- **模式B**:Nanobanana(Gemini) + +> ⚠️ **不生成文生图模式提示词**,所有输出均基于**参考图(图生图 / ControlNet / 角色一致性)**工作流前提。 + +--- + +## 分镜表内容忠实性原则(最高优先级) + +提示词生成是**格式转换**,不是**创意写作**。分镜表是提示词的**唯一内容来源**,所有画面信息必须忠实于分镜表对应行,仅在表达格式和措辞上适配图像生成模型的要求。 + +### 铁律 + +1. **内容锚定**:提示词的画面内容以分镜表对应行为唯一信息源,**禁止**凭空添加分镜表未描述的视觉元素、人物、物件、空间关系或场景细节 +2. **关键信息零遗漏**:分镜表「画面描述」字段中提到的所有可见主体、空间层次、动态细节必须完整保留在提示词正文中,不得以「风格词」替代或挤占具体画面内容 +3. **语义等价转换**:将分镜表字段转换为提示词时,只改变表达形式(中↔英、散文↔关键词、叙事语言↔视觉描述),**不改变语义**。例:分镜表写"大殿柱影深沉" → 提示词必须体现殿堂柱影暗调,不可替换为"华丽宫殿"等不同语义 +4. **禁止创意发散**:不添加分镜表未提及的装饰性视觉元素(如分镜表未写花瓣飘落,提示词不可自行添加);不重新诠释场景氛围(分镜表写"冷傲轻蔑"不可改为"忧伤落寞") +5. **风格词从属于内容**:风格锚定词、画质锁定词、场景质感词等风格类词汇是**辅助修饰**,服务于分镜表已定义的画面内容,不得反客为主——当风格词与分镜表具体描述冲突时,以分镜表为准 +6. **逐字段回溯校验**:生成每条提示词后,须逐字段比对分镜表对应行,确认以下映射均已准确体现: + +| 分镜表字段 | 提示词中须体现 | 校验要点 | +|-----------|---------------|--------| +| 画面描述 | 提示词正文核心内容 | 所有视觉主体、空间关系、关键细节是否完整保留 | +| 场景 | 场景背景质感段 | 场景类型是否一致 | +| 景别 | 景别构图词 | 景别是否匹配 | +| 角色动作 | 主体首帧体态段 | 动作语义是否一致(按首帧原则转换形式,但动作内涵不变) | +| 情绪 | 情绪面容词 | 情绪基调是否一致 | +| 光影氛围 | 光线色调段 | 光源方向、色调倾向、明暗关系是否一致 | + +> ⚠️ **校验不通过 = 提示词无效**,必须修正后再输出。最常见的失败模式:画面描述中的具体元素被风格模板词覆盖遗漏。 + +--- + +## 解析映射规则 + +| 分镜字段 | 提示词对应处理 | +|----------|----------------| +| 画面描述 | **核心内容锚点**:提示词正文的主要信息来源。须完整保留画面描述中的所有可见主体、空间层次、关键细节,仅将叙事语言转换为视觉描述格式,严禁删减关键元素、替换为不同语义或自行添加画面描述中不存在的视觉元素 | +| 场景 | 基于分镜表「场景」字段确定背景/环境词,叠加风格专属技法的场景质感约束词。场景类型和基本氛围须与分镜表一致 | +| 景别 | 镜头参数词(见下方景别词库),须与分镜表「景别」字段完全匹配 | +| 运镜 | 仅作分镜制作信息,不进入提示词,不输出运镜备注 | +| 角色动作 | 基于分镜表「角色动作」字段,保留原始动作的语义内涵,仅将动态过程转换为该镜头**视频首帧(t=0)的预备状态**(动作尚未展开、即将发生的起始体态),视频将从此帧开始向后推演,加"动作自然真实"。**禁止**替换为与分镜表不同的动作 | +| 情绪 | 基于分镜表「情绪」字段,从风格专属技法的情绪映射表中选取匹配的面容/眼神词。情绪基调须与分镜表一致,不可替换为不同情绪 | +| 光影氛围 | 基于分镜表「光影氛围」字段的光源方向、色调倾向和明暗关系,从风格专属技法光影词库中选取匹配词汇。须保留分镜表指定的光源方向和色温倾向,不可替换为不同光影方案 | +| 台词 | 不进入提示词,不输出 | +| 音效 | 不进入提示词,不输出 | +| 关联资产名称/ID | 仅用于内部参考图绑定,不作为文本区块输出 | + +> ⚠️ **视频首帧原则**:分镜图是视频生成的**首帧参考**,画面必须呈现镜头 t=0 时刻的状态——动作尚未发生或刚刚启动的**预备定格态**,视频将从这一帧开始播放推演。 +> +> **核心逻辑**:首帧 → 视频推演 → 动作完成。提示词描述的是"推演起点",而非"推演终点"。 +> +> - ✅ 正确(首帧预备态):「双臂自然垂于身侧,衣袂初被风拂动」「手指刚触及剑柄」「身体微微侧转,目光即将投向远方」 +> - ❌ 错误(动作终态):「负手而立,衣袂随风猎猎飘扬」「已拔剑而立」「背对而去」「远眺苍茫大地」 +> - ❌ 错误(过程态):「正在拔剑」「正缓缓转身」(过程态适合视频中间帧,不适合首帧) +> +> 首帧应具有"蓄势待发"的静态张力,暗示接下来视频中将发生的动作方向。 + +--- + +## 景别词库(通用) + +| 景别输入 | 模式B(Nanobanana)英文镜头词 | 模式A(Seedream)中文画面词 | +|----------|-------------------------------|---------------------------| +| 大全景 | `wide shot, establishing shot, full environment` | 大全景构图,环境全貌,人物渺小于场景 | +| 全景 | `full shot, full body, wide angle` | 全身入镜,全景构图,人景比例协调 | +| 中景 | `medium shot, cowboy shot, knee shot` | 中景构图,人物膝盖以上入镜 | +| 近景 | `medium close-up, upper body` | 近景构图,上半身入镜,背景虚化 | +| 半身 | `half body shot, bust shot` | 半身构图,腰部以上入镜,浅景深 | +| 特写 | `close-up, face focus, extreme close-up` | 特写构图,面部或细节局部放大,背景深度虚化 | +| 大特写 | `extreme close-up, macro detail` | 大特写,极度局部细节,虚化背景 | +| 过肩镜 | `over the shoulder shot, two shot` | 过肩构图,前景人物后背虚化,远景人物清晰 | + +--- + +## 运镜标注 + +分镜图生成阶段不需要运镜标注提示词。运镜字段仅用于分镜生产管理信息,不参与提示词生成,不作为输出区块。 + +--- + +## 输出格式规范 + +每条分镜**只输出一种模式的提示词正文**(二选一),不允许同条分镜同时输出模式A与模式B。 + +**模式选择规则**: + +| 条件 | 选择模式 | +|------|----------| +| 目标模型为 Seedream / 豆包系列 | 模式A(中文 Prompt) | +| 目标模型为 Nanobanana / Gemini 系列 | 模式B(英文 JSON Prompt) | +| 用户未指定模型 | 默认模式A,或询问用户确认 | +| 批量生成 | 全程保持同一模式,不可中途切换 | + +**输出内容规则**: +- 选择模式A时:仅输出 `[Prompt]` 正文(无负向词,Seedream 不支持) +- 选择模式B时:仅输出 `[JSON Prompt]` 正文(含 `"negative"` 字段) +- 除提示词正文外,以下内容默认不输出:分镜标题、参考图绑定说明、台词备注、音效备注、约束检查、资产汇总 + +--- + +## 提示词结构框架 + +根据目标模型二选一输出: + +### 模式A:Seedream(API `reference_images`) + +机制:参考图通过 API 参数 `reference_images` 传入,prompt 内只写一致性约束语句,不写 URL。 + +Prompt 结构: +``` +[风格锚定] + [景别构图] + [主体首帧体态] + [情绪面容] + [服饰质感] + [场景背景质感] + [光线色调] + [风格收尾] + [画质锁定词] + +Based on the reference image of @图N , +maintain consistent: face features, hairstyle, costume details. +Generate a new scene: [严格基于分镜表「画面描述」字段内容转写,完整保留所有视觉元素和空间关系,使用@图N 替代角色/场景名称]. +Keep character appearance identical to reference. +``` + +> `[风格锚定]`、`[服饰质感]`、`[风格收尾]`、`[画质锁定词]` 的具体内容由**风格专属技法**定义。 +> +> **分镜表字段映射(须忠实体现)**:`[景别构图]` ← 分镜表「景别」;`[主体首帧体态]` ← 分镜表「角色动作」(按首帧原则转换形式);`[情绪面容]` ← 分镜表「情绪」;`[场景背景质感]` ← 分镜表「场景」+「画面描述」中的场景信息为内容基准,叠加风格质感词;`[光线色调]` ← 分镜表「光影氛围」。**提示词正文**的核心画面内容来源于分镜表「画面描述」字段,须完整保留其中所有视觉元素。 + +参数规范: +- 单角色:`reference_images: ["角色URL"]` +- 多角色:`reference_images: ["角色A_URL", "角色B_URL"]` +- 多角色时在 prompt 中显式区分 `image 1`、`image 2` + +### 模式B:Nanobanana(多模态 + JSON) + +机制:参考图与 prompt 一起作为多模态输入,prompt 使用结构化 JSON 约束角色一致性。 + +Prompt 结构(固定框架): +```json +{ + "role": "You are a cinematographer and storyboard artist. Maintain strict visual continuity across all shots.", + "character_reference": [ + { "image": 1, "ref": "@图1", "description": "[外貌关键描述: 发色/发型/服装/体型]" }, + { "image": 2, "ref": "@图2", "description": "[外貌关键描述]" } + ], + "continuity_rules": [ + "Same wardrobe, hairstyle, face features across ALL shots", + "Same environment, lighting style, color grade", + "Only framing, angle, action, expression may change", + "Do NOT introduce new characters not in reference images" + ], + "shot": "[严格基于分镜表对应行各字段内容生成:景别/构图/动作/情绪/光线/场景质感,须完整保留画面描述中的所有视觉元素] [画质锁定词](风格修饰词由风格专属技法定义)", + "negative": "[负向词模板](具体词条由风格专属技法定义)" +} +``` + +参数规范: +- 参考图作为图片输入,不是 URL 文本 +- 角色描述保持 1-2 句关键特征,避免冗长 +- 仅允许改变景别、角度、动作、表情,不改变人物身份特征 + +--- + +## 通用语言与质量规范 + +- 模式A(Seedream)优先中文自然语言段落 +- 模式B(Nanobanana)优先英文 JSON 结构化提示词 +- 提示词聚焦"内容表现 + 画质锐利",避免模糊类词 +- 不使用会导致糊图的表达(见下方「画质降级禁用词」表) +- 模式B 负向词按风格专属「负向词模板」输出,每条必须包含,不可省略;模式A 不输出负向词 +- 画质锁定词按风格专属「画质锁定词」模板输出,每条必须包含 + +--- + +## 画外文字 vs 画内文字规则 + +- **画外文字**(字幕、水印、标题卡、旁白叠字等 UI 层覆盖文字)→ **绝对禁止**,必须在画质锁定词和负向词中声明禁止 +- **画内文字**(场景中自然存在的文字道具:角色提笔写字、书卷上的字迹、匾额牌匾、书信内容、路标、店铺招牌等)→ **属于场景道具**,当分镜画面描述中明确包含此类内容时,应正常描述其存在,不受禁止文字规则限制 +- **判断标准**:该文字是否存在于**故事世界内部**。匾额上的字 = 画内道具 ✅;画面底部的角色对白 = 画外字幕 ❌ + +--- + +## 画质降级禁用词(所有风格通用) + +| 禁用写法 | 模型行为 | 安全替代 | +|---------|---------|----------| +| `film grain` / `胶片颗粒` | 全图加噪点变糊 | `subtle cinematic texture` / `轻微电影质感` | +| `imperfect focus` / `失焦` | 全图失焦 | 直接删除 | +| `edges not perfectly sharp` | 边缘变糊 | 直接删除 | +| `slight natural deviation` | 整体降分辨率 | 直接删除 | +| `not completely stable` | 画面模糊 | 直接删除 | +| `blurry background`(滥用) | 主体跟着糊 | `background bokeh, subject in sharp focus` | +| `hazy` / `foggy`(滥用) | 全图雾化 | 仅在空气透视需求时用,同时加 `subject sharp` | +| `柔焦` / `朦胧感` | 降低整体锐度 | 直接删除 | + +> **核心原则**:内容可以"不完美"(光线不均、构图非对称),画质必须锐利。 + +--- + +## 批量处理规范 + +用户输入多行分镜表时: + +1. **逐行顺序处理**,不跳行、不合并 +2. 每条分镜仅输出目标模式的提示词正文(Prompt 或 JSON Prompt) +3. 若同一场景连续多镜,**场景质感词可复用**,但情绪/光线/景别/动作必须**按行独立处理** +4. 关联资产名称相同的镜次,**一致性标注词必须一致** +5. 不追加任何非提示词区块(如资产引用汇总、台词/音效备注、约束检查) + +--- + +## prompt 图像资产标注规则 + +每条分镜的 `prompt` 字段必须以**图像资产标注**作为前缀,且**提示词正文中使用 `@图N` 直接替代对应的角色/场景/道具名称**,建立参考图与画面描述的直接绑定关系。标注按 `associateAssetsIds` 中资产的引用顺序,从 `@图1` 开始依次编号。 + +**格式**:`@图1 为{资产名称}{资产类型} @图2 为{资产名称}{资产类型} ... , 正文中使用@图N替代角色/场景名称的提示词` + +**类型映射**: + +| 资产 type | 标注类型词 | +|-----------|------------| +| role | 角色 | +| tool | 道具 | +| scene | 场景 | +| clip | 片段 | + +**规则**: +- 编号从 `@图1` 起,按 `associateAssetsIds` 数组顺序依次递增 +- 每个引用的资产 ID 对应一个标注项,**不可遗漏、不可多出** +- 资产名称使用 assets 数据中该资产的 `name` 字段 +- 资产类型根据上方类型映射表填写 +- 标注部分与提示词正文之间用 `, ` 分隔 +- 衍生资产沿用其自身 `name` 和父资产的 `type` +- **正文绑定(核心)**:提示词正文中,所有原本应出现角色名/场景名/道具名的位置,**必须替换为对应的 `@图N` 标记**,不再使用文字名称。这样参考图与画面中的视觉主体形成直接指向关系,避免资产名称与角色名称不一致导致的歧义(如衍生资产名"幕离红斗篷"与角色名"戚映竹"无法对应的问题) +- 同一 `@图N` 在正文中可多次出现(如角色在前景和反射面中同时可见时) + +**示例**(假设 `associateAssetsIds="[101, 100, 300]"` 对应苏晚卿(role)、凌玄(role)、大殿(scene)): + +❌ 错误(正文使用文字名称,与前缀标注脱节): +``` +@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, 苏晚卿冷笑,居高临下看着跪地的凌玄,大殿柱影深沉…… +``` + +✅ 正确(正文使用 @图N 直接绑定参考图): +``` +@图1 为苏晚卿角色 @图2 为凌玄角色 @图3 为大殿场景, @图1 冷笑,居高临下看着跪地的@图2,@图3 柱影深沉…… +``` + +--- + +## prompt 人物位置与朝向连贯性规则 + +生成每条 prompt 时,须遵守以下跨分镜人物位置与朝向一致性约束。 + +### 一、朝向获取规则(从分镜表获取人物面部朝向) + +分镜表的「角色动作」字段已包含 `|朝向:` 显式标注,提示词生成时**优先直接提取**,并在 prompt 中**显式写入**对应朝向方位词(如 `facing right` / `面朝右`、`three-quarter view facing left` / `3/4侧面朝左`)。 + +**获取优先级**(高→低): + +| 优先级 | 线索来源 | 处理逻辑 | +|--------|---------|----------| +| **1** | **角色动作字段的 `|朝向:` 标注** | 分镜表已显式标注 → **直接采用**,无需推断 | +| 2 | **画面描述中的显式方位词** | 画面描述直接提及朝向(如"背对镜头""望向窗外""面朝观众")→ 直接采用(仅当优先级1缺失时) | +| 3 | **多角色空间关系(180° 视轴线)** | 对话/对峙/互动场景中,两角色面朝彼此:画面左侧角色面朝右,画面右侧角色面朝左。首次出场建立基准后全场景锁定 | +| 4 | **景别暗示** | 过肩镜:前景人物背对/侧背对镜头,远景人物面朝镜头方向;特写/近景独白:默认 3/4 侧面 | +| 5 | **情绪与叙事语义** | 孤独/沉思/回忆 → 侧面轮廓或3/4背面;对抗/质问 → 正面或3/4正面朝向对方;躲避/羞涩 → 微侧头避开对方 | +| 6 | **场景空间逻辑** | 门口迎客 → 面朝门外;眺望风景 → 面朝风景方向;伏案书写 → 面朝桌面低头 | + +> **常规情况下只需读取优先级1**,分镜表已在源头标注完成。优先级2~6仅作为分镜表标注缺失时的兜底推断。 + +**获取步骤**: +1. 读取分镜表当前行「角色动作」字段中 `|朝向:` 后的标注内容 +2. 若标注存在且完整 → 直接采用,跳过后续优先级 +3. 若标注缺失(如空镜行)→ 按优先级2~6逐条推断 +4. 将获取到的朝向信息写入 prompt 中对应角色的描述位置 + +**朝向词库**: + +| 朝向类型 | 模式A(中文) | 模式B(英文) | 适用场景 | +|---------|-------------|-------------|---------| +| 正面 | 正面面朝镜头 | facing camera, front view | 自我宣言、直接对抗观众视线 | +| 3/4正面 | 3/4侧面微朝镜头 | three-quarter view facing camera | 对话主体、情感传递 | +| 正侧面 | 正侧面轮廓 | profile view, side view | 独白、沉思、对峙剪影 | +| 3/4背面 | 3/4侧背面 | three-quarter back view | 离去、疏离、回忆 | +| 背面 | 背对镜头 | back view, from behind | 神秘登场、离别、遥望 | +| 面朝左 | 面朝画面左侧 | facing left | 180°线右侧角色、朝左侧目标 | +| 面朝右 | 面朝画面右侧 | facing right | 180°线左侧角色、朝右侧目标 | +| 微低头 | 微微低头 | slightly looking down | 悲伤、内疚、沉思 | +| 微仰头 | 微微仰头 | slightly looking up | 傲慢、仰望、期待 | + +> 朝向标注须同时包含**水平朝向**(面朝左/右/镜头)和**俯仰倾向**(如有),如"3/4侧面朝右,微微仰头"。 + +### 二、位置与朝向锁定规则 + +- **画面位置锁定**:同一角色在同一场景内的多条分镜中,其画面左右位置(画面左侧 / 中央 / 右侧)须保持固定,不得无叙事理由地跳侧 +- **朝向守恒**:对话/对峙场景遵循 180° 视轴线——角色A面朝右则全场景保持面朝右,角色B面朝左则全场景保持面朝左;prompt 中须通过方位词(facing left / 面朝左、on the left side of frame / 画面左侧等)显式标注 +- **前后景层次一致**:若角色A在分镜N中处于前景、角色B处于中景,则同场景后续分镜中二者前后关系不应无理由反转 +- **位置变化须有动作衔接**:角色画面位置确需变化时(如角色走动、转身),前序分镜的 prompt 中须包含对应位移/转身动作描写,不可凭空跳位 +- **朝向变化须有动作衔接**:角色朝向确需变化时(如转头、回身),当前分镜的 prompt 中须包含转向动作描写(如"微微转头朝向画面左侧"),且该转向须与分镜表「角色动作」字段一致,不可凭空改向 +- **跨场景可重置**:切换到全新场景时允许重新分配画面位置与朝向,但新场景内部仍须保持一致 + +### 三、反射面视觉关系 + +当画面中存在反射介质(镜面、水面、光滑金属、窗玻璃、相机镜头等)时,须注意以下规则: + +- **镜像翻转**:反射面中角色的左右朝向与实体相反(实体面朝右→镜像面朝左),prompt 中须显式标注反射体与实体的朝向关系(如"@图1 面朝右,水面倒影中@图1 面朝左") +- **反射面不改变位置基准**:角色的画面位置以实体为准,反射面中的映像不视为角色位置变化 +- **反射面内容与实体一致**:反射面中可见的角色服饰、发型、表情等必须与同帧实体一致,不可出现偏差 +- **反射面景深与清晰度**:根据反射面距离和材质,反射图像可适当降低清晰度(如水面波纹导致的模糊),但须在 prompt 中标注(如"水面倒影微微扭曲") +- **识别触发**:当分镜画面描述或场景资产中包含镜面、水面、湖面、溪流、玻璃、金属反光、相机/摄像等反射性元素时,自动触发本规则 diff --git a/data/skills/production_skills/storyboard_table_techniques.md b/data/skills/production_skills/storyboard_table_techniques.md new file mode 100644 index 0000000..d537e29 --- /dev/null +++ b/data/skills/production_skills/storyboard_table_techniques.md @@ -0,0 +1,158 @@ +--- +name: storyboard_table_techniques +description: >- + 通用分镜表技法参考。 + 涵盖分镜拆分原则、定场与镜头合并规则、视觉连续性铁律、字段填写指引、转场规则等分镜设计通用技法,供 Agent 激活使用。 +--- +# 分镜表通用技法 + +本文档为分镜表设计的通用技法参考,适用于所有需要构建分镜表的 Agent 场景。 + +--- + +## 分镜拆分原则 + +**新起分镜**:场景/地点切换、时间跳跃、镜头主体切换、景别明显变化、重要动作节点 + +**不需新起**:同画面内连续对话、表情微变或小动作 + +粒度:一个独立画面 = 一条分镜,约每 50~100 字剧本对应 1~2 条分镜。过渡/转场如有明确描写也单独拆分。 + +--- + +## 定场与镜头合并规则(防冗余) + +**定场镜头**:每个新场景/段落的定场最多 1~2 个镜头完成,禁止拆成 3 个以上碎片。 +- 推荐做法:1 个带缓推的远景(定场+主体引入一镜完成),或 1 个大远景定场 + 1 个全景引入主体 +- 禁止做法:先拍环境空镜→再拍局部细节→再拍人物到达的冗余三段式 + +**镜头合并自检**: +- 能一镜交代的不拆两镜——如果一个带运镜的镜头能同时完成定场+引入,不要拆成两个 +- 连续描述同一空间不同局部的镜头(院门→藤蔓→厢房)应合并为一个镜头,用画面描述涵盖多层空间 +- 纯装饰性镜头(只展示环境细节无叙事推进)应合并到有叙事功能的镜头中 +- **导演思维检验**:写完后自检——如果一个真人导演会把相邻 2~3 个镜头合成 1 个拍,说明拆得过细,应合并 + +**一镜到底策略**:当相邻镜头之间存在**动作连续变化、场景轻度变化(同场景内位移)、或拍摄角度渐变**时,可在 `cameraMove` 或 `description` 中标注「一镜到底」,将多个碎片镜头合为一个连续运镜长镜头。 +- **适用场景**:角色行走穿越空间、跟随动作从A点到B点、环绕角色展示环境、定场缓推到主体特写等 +- **标注方式**:在 `cameraMove` 中写明运镜路径(如"一镜到底:缓推远景→跟移至院内→落幅全景"),在 `description` 中描述起幅和落幅的画面内容 +- **时长放宽**:一镜到底镜头因信息量持续更新,可突破单镜 6s 上限,但不超过 12s +- **风险提示**:一镜到底会提高画面生成的抽卡难度(连续性要求高),仅在叙事流畅性收益明显大于碎切时使用,不滥用 + +**黄金 6 秒规则**:无台词镜头累计超过 6s 未出现新信息(台词/动作/主体变化),观众注意力断裂。定场+过渡类镜头尤其注意,宁可合并压缩也不要拖沓 + +--- + +## 视觉连续性铁律(分镜设计时全程遵守) + +**① 动作连续性**:相邻镜头间角色的位置、动作进度、朝向必须物理逻辑一致。上一镜手伸到半空→下一镜必须从半空状态接续,不能突然收回。 + +**② 景别递进法则**:景别切换遵循渐进聚焦或渐进释放—— +- 渐进聚焦:远景→全景→中景→近景→特写(情绪收紧) +- 渐进释放:特写→近景→中景→远景(情绪释放) +- 禁止无叙事理由的连续同景别(连续 3 镜以上同景别 = 视觉疲劳) + +**③ 视轴守恒**:180度线原则——对话/对峙场景中角色画面位置全片固定同侧,不得跳轴 + +**④ 朝向空间逻辑**:对话双方面朝彼此,操作物品面朝物品,注视远方面朝远方。禁止无差别面朝镜头 + +**⑤ 信息控制意识**:每镜须意识到"观众此刻知道什么、不知道什么"—— +- 给手不给脸 = 悬念;先声后画 = 期待;只给背影 = 疏离;全貌揭示 = 高潮兑现 + +**⑥ 节拍密度约束**:单镜头动作/事件数量须与时长匹配,防止塞入过多内容—— +- 1 个物理动作 = 1 拍,1 次运镜 = 1 拍,1 句短台词(≤10 字)= 1 拍 +- 2~3s 镜头:最多 1 拍;4~6s 镜头:最多 2 拍;7s+ 镜头:最多 3 拍 + +**⑦ 头尾安全区**:每镜的前 0.5s 和后 0.5s 为安全过渡区,不放关键动作或台词起始点。前 0.5s 用于环境建立或主体静态亮相,后 0.5s 用于动作自然收住。 + +--- + +## 字段填写指引 + +**description**(画面描述):一句话描述画面核心内容(15~50 字),包含可见的**主体 + 动作/状态 + 环境空间**,不写心理活动。需体现空间层次(前景/中景/背景至少涉及两层)。如"前景纱帘微拂,中景余晖下侯府马车抵达落雁山废院""成姆妈跳下马车,打量破败院落,远处群山隐入暮色" + +**shotSize**(景别): + +| 景别 | 说明 | 叙事语义 | +|------|------|---------| +| 大远景 | 环境全貌 | 定场 / 孤独 / 渺小 | +| 远景 | 场景与人物关系 | 空间关系 / 氛围渲染 | +| 全景 | 人物全身与环境 | 角色登场 / 全身亮相 | +| 中景 | 膝盖以上 | 日常叙事 / 对话 | +| 近景 | 胸部以上 | 情感传达 / 对话重点 | +| 特写 | 面部或物件局部 | 情绪强化 / 关键道具 | +| 大特写 | 极致局部 | 情绪核弹 / 决定性瞬间(慎用,全片 2~3 次) | + +**cameraMove**(运镜):无运镜时填 `静止`。运镜须标注起终点方向。 + +| 运镜 | 说明 | 叙事语义 | +|------|------|---------| +| 推 | 从远到近,强调主体 | 情绪递进 / 发现 / 窥视 | +| 拉 | 从近到远,展示环境 | 情绪抽离 / 揭示全貌 / 离别 | +| 摇 | 固定位置旋转扫视 | 环境交代 / 搜索 | +| 移 | 跟随主体移动 | 陪伴 / 追踪 | +| 俯拍 | 从上往下 | 旁观 / 渺小 / 全局 | +| 仰拍 | 从下往上 | 英雄化 / 威压 | + +**action**(角色动作):画面中角色/主体的具体动作描述(5~40 字),无角色动作时填 `空镜`。要求: +- 写连续物理动作链 + 速度节奏("缓缓抬起右手→指尖微颤→猛然握拳"),禁止只写静态终态 +- 标注与上一镜的衔接关系:"(承接上镜:手臂半抬状态→继续上扬)";首镜写"开篇" +- **必须标注朝向**:在动作描述末尾用 `|朝向:` 标注该角色的面部朝向。多角色时逐一标注(按关联资产名称顺序),格式:`|朝向:角色A-面朝右; 角色B-面朝左`;单角色时省略角色名:`|朝向:面朝右`。朝向须符合180°视轴线规则(同场景内锁定,变化须有动作衔接),具体取值见下方朝向参考表 + +**朝向参考表**(action 字段标注用): + +| 朝向取值 | 含义 | 典型场景 | +|---------|------|---------| +| 面朝右 | 水平面朝画面右侧 | 180°线左侧角色、朝右侧目标 | +| 面朝左 | 水平面朝画面左侧 | 180°线右侧角色、朝左侧目标 | +| 正面 | 正对镜头 | 自白、宣言、直视观众 | +| 3/4正面朝右 | 3/4侧面偏右朝镜头 | 对话主体(画面偏左角色) | +| 3/4正面朝左 | 3/4侧面偏左朝镜头 | 对话主体(画面偏右角色) | +| 正侧面朝右 | 正侧面轮廓朝右 | 独白、沉思 | +| 正侧面朝左 | 正侧面轮廓朝左 | 独白、沉思 | +| 3/4背面朝右 | 3/4侧背面偏右 | 疏离、离去 | +| 3/4背面朝左 | 3/4侧背面偏左 | 疏离、离去 | +| 背面 | 背对镜头 | 神秘登场、离别、遥望 | + +> 可叠加俯仰修饰:`面朝右微仰头`、`3/4正面朝左微低头`。 + +**emotion**(情绪):画面传达的情绪基调(2~10 字),用具象可感描述。如"冷傲轻蔑""痛苦绝望""紧张压迫"。禁止"开心""难过"等空泛词。 + +**lighting**(光影氛围):画面光影与氛围描述(5~40 字),须包含**光源方向 + 色调倾向 + 明暗关系**。如"右侧冷白光斜射,面部明暗对半,背景深沉""底部暖黄光上打,眼窝沉入暗影"。禁止只写"柔光""暗调"。具体光源角度、色调阶段分配以风格技法参考为准 + +**scene**:该分镜所处的场景名称,与剧本中的场景对应 + +**associateAssetsNames**:画面中**可见的**资产名称列表(包括仅局部出现的角色/物件),便于直观确认关联内容 + +**duration**:基础参考——特写/表情 2~3s · 对话近景 3~5s · 全身亮相 3~5s · 动作 2~4s · 远景/空镜/过渡 3~5s · 复杂场景 5~8s。**单镜不超过 8s**,超过须拆分。 + +**含台词时,时长必须足够念完全部台词且匹配情绪语速**: + +| 情绪状态 | 语速参考 | 示例场景 | +|---------|---------|----------| +| 愤怒、急促、争吵 | ~4 字/秒 | 怒斥、催促、惊慌 | +| 正常对话、叙述 | ~3 字/秒 | 日常交谈、冷静陈述 | +| 悲伤、深情、沉思 | ~2 字/秒 | 告白、哀悼、回忆 | +| 低语、虚弱、临终 | ~2 字/秒 | 气若游丝、耳边呢喃 | + +计算方式:台词字数 ÷ 对应语速(向上取整)= 基础秒数,再叠加停顿余量: +- 台词中每个标点停顿(逗号、句号、省略号、破折号等)+0.3~0.5s +- 情绪转折/语气变化处 +0.5s +- 最终 `duration` = 基础秒数 + 停顿累计 + 1s 安全余量(向上取整) + +**lines**:角色台词原文,**必须一字不改从剧本中照搬**。多角色按 `角色名:台词` 格式排列。无台词填 `无台词`。一句台词对应一个镜头,避免单镜头内塞多角色多轮对白。 + +**sound**:环境音/音效描述,按「环境音层 + 动作音层」分层。如"远处风声呼啸 + 剑鸣声"。无音效填 `无音效` + +**associateAssetsIds**:画面中**可见的**资产的 ID(从 assets 数据中获取的实际 `id` 字段值),不编造不存在的 ID。 +- **角色出现即引用**:画面中出现的所有角色,无论是主体还是仅局部可见(如背影、手部、虚化剪影等),只要在画面内可被辨识,都必须引用其对应的资产 ID +- **场景资产必选**:每条分镜必须引用其所处场景对应的场景资产 ID(type 为 scene 的资产);若该场景存在匹配当前画面状态的衍生场景资产,则选用衍生场景资产 ID,否则选用主场景资产 ID。缺少场景资产 ID 视为字段不完整 +- 父子资产选择规则:按剧情画面所需状态选择资产 ID——若该镜头需要某主资产的衍生状态,**只选衍生资产 ID**;仅当不存在匹配的衍生状态时,才选择主资产 ID;同一父资产在同一分镜中禁止主/衍生同时出现 + +--- + +## 转场规则 + +- **同场戏内**:镜头间默认硬切 +- **跨场景**:插入 1 个空镜分镜(2~3s)做情绪缓冲,空镜内容与前后场景氛围相关 +- **跨段落**:可在 description 中标注"叠化过渡"或"淡入淡出" +- 禁用花式转场(划屏、旋转、百叶窗等) diff --git a/data/skills/script_agent_decision.md b/data/skills/script_agent_decision.md index 549b2f5..d0b72c7 100644 --- a/data/skills/script_agent_decision.md +++ b/data/skills/script_agent_decision.md @@ -36,6 +36,11 @@ ### 初始化对话流程 +0. 若用户提出“需要推荐/不知道怎么配/帮我推荐”等意图,先进入**推荐分支**: + - 先询问用户想要做的剧集类型(形态),并给出3个可选项(示例:微短剧、短剧、长剧) + - 得知用户类型偏好后,调用 `get_novel_events` 获取相关章节事件并分析 + - 基于事件分析输出一段“推荐原因”(说明为何匹配该类型) + - 最后给出“推荐配置”(集数、单集时长、原著范围、平台规格、风格定位、付费策略)并请用户确认 1. 用户发起改编请求时,**必须主动询问用户**项目参数(不主动调用 `deepRetrieve`,除非用户要求回想之前的配置) 2. 如果没有已确认的参数,**必须主动询问用户**: - "请确认以下信息:计划拆分为几集?每集大约几分钟?覆盖原著哪些章节?" diff --git a/data/skills/script_execution_adaptation.md b/data/skills/script_execution_adaptation.md index 7535195..51faf44 100644 --- a/data/skills/script_execution_adaptation.md +++ b/data/skills/script_execution_adaptation.md @@ -17,7 +17,7 @@ - 主要删除决策:被删/压缩内容、原因、对主线影响 - 世界观呈现策略:关键元素出场节奏、解释度策略、角色态度锚点 3. **阐述思路**(200-300字):核心改编原则方向、删减大方向、世界观呈现思路 -4. 严格按照XML格式写出改编策略,格式为改编策略内容。 +4. 严格按照XML格式写出改编策略,格式为改编策略内容。XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出。 5. 返回简短确认,如:"改编策略已保存,请在右侧工作台查看。" ## 约束 diff --git a/data/skills/script_execution_script.md b/data/skills/script_execution_script.md index ef8b4ff..9f874b1 100644 --- a/data/skills/script_execution_script.md +++ b/data/skills/script_execution_script.md @@ -15,7 +15,11 @@ 1. 调用 `get_planData` 获取骨架与改编策略;若存在上一集剧本id,调用 `get_script_content(ids)` 获取最后一集剧本内容,用于衔接剧情与角色状态,调用 `get_novel_text` 获取对应章节原文,调用 `get_novel_events(ids)` 获取事件表 2. 从骨架中**仅提取当前任务集**的信息:覆盖章节、戏剧功能、场景核心、删减决策、集末钩子。**忽略其他已完成或未分配的集** 3. **阐述思路**(200-300字):场景组织方式、重点情绪与冲突、节奏把控思路 -4. 严格按照XML格式写出剧本内容,格式为剧本内容。 +4. 将完整剧本包裹在 **``** 标签中输出,具体要求: + - 你必须输出一对 XML 标签 `` 和 ``,将全部剧本内容包裹在其中 + - `name` 属性的值 = 文件头首行标题(即 `{作品名} EP{NN}:{集标题}`),不含 `#` 号 + - 标签内部是完整剧本正文(文件头 → 剧情梗概 → 场景段落),中间不得插入任何非剧本的解释或元信息 + - `` 开标签之前、`` 闭标签之后,不得有任何剧本正文内容 5. 返回简短确认,如:"第X集剧本已写入,请在工作台查看。" ## 约束 @@ -28,7 +32,7 @@ ## 注意事项 -- 严格按照XML格式写出剧本内容,格式为剧本内容`。 +- 剧本正文**必须**包裹在 `...` 标签对中输出,缺少开标签或闭标签均视为格式错误;`name` 属性值必须与文件头首行标题一致(不含 `#`);XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 - get_script_content(ids)只允许获取最后一集剧本内容 - **每次只编写当前任务集的剧本,不得将之前已完成的集重新输出或写入** - 只执行剧本编写,不越权执行其他阶段 @@ -46,8 +50,8 @@ ### 一、文件头 -```markdown - +```xml + # {作品名} EP{NN}:{集标题} # 目标时长:{单集时长}分钟 ≈ {台词字数}字台词 # 平台:{平台规格} | 风格:{风格标签} | 节拍:{节拍概要} @@ -55,6 +59,8 @@ --- ``` +> **关键**:`` 的 `name` 值必须与紧随其后的首行 `#` 标题文字完全一致(不含 `#` 号和前后空格)。 + ### 二、剧情梗概 ```markdown @@ -203,4 +209,4 @@ OS({人物名},{情绪}): - **自查清单**:不输出自查清单本身 - **任何元信息**:不输出字数统计、场景数量统计、创作说明等非剧本内容 -剧本输出只包含:文件头 → 剧情梗概→ 剧本正文(△描述 + 台词 + OS/V.S.) \ No newline at end of file +剧本输出的完整结构为:`` → 文件头 → 剧情梗概 → 剧本正文(△描述 + 台词 + OS/V.S.) → `` \ No newline at end of file diff --git a/data/skills/script_execution_skeleton.md b/data/skills/script_execution_skeleton.md index 11b8355..3ecb46c 100644 --- a/data/skills/script_execution_skeleton.md +++ b/data/skills/script_execution_skeleton.md @@ -20,7 +20,7 @@ - 全局删减决策表 - 付费卡点设计 3. **阐述思路**(200-300字):核心吸引力判断、三幕划分思路、分集策略方向 -4. 严格按照XML格式写出故事骨架,格式为故事骨架内容。 +4. 严格按照XML格式写出故事骨架,格式为故事骨架内容。XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出。 5. 返回简短确认,如:"故事骨架已保存,请在右侧工作台查看。" ## 约束 diff --git a/data/update.json b/data/update.json deleted file mode 100644 index 7c547a6..0000000 --- a/data/update.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"1.0.11"} \ No newline at end of file diff --git a/data/version.txt b/data/version.txt index 8684498..1cc5f65 100644 --- a/data/version.txt +++ b/data/version.txt @@ -1 +1 @@ -1.0.11 \ No newline at end of file +1.1.0 \ No newline at end of file diff --git a/data/web/index.html b/data/web/index.html index 3eabe2e..8374469 100644 --- a/data/web/index.html +++ b/data/web/index.html @@ -1053,7 +1053,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * tdesign v1.18.5 * (c) 2026 tdesign * @license MIT - */function ggt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function gG(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:new Set,n=0,r=e.length;n1&&arguments[1]!==void 0?arguments[1]:[];if((P=u.value)!==null&&P!==void 0&&(P=P.groupColumns)!==null&&P!==void 0&&P.length)return[];for(var M=0,B=D.length;M1&&arguments[1]!==void 0?arguments[1]:new Set,n=0,r=e.length;n1&&arguments[1]!==void 0?arguments[1]:[];if((P=u.value)!==null&&P!==void 0&&(P=P.groupColumns)!==null&&P!==void 0&&P.length)return[];for(var M=0,B=D.length;M{if("locale"in l&&"resource"in l){const{locale:d,resource:u}=l;d?(a[d]=a[d]||Cc(),oue(u,a[d])):oue(u,a)}else dr(l)&&oue(JSON.parse(l),a)}),o==null&&s)for(const l in a)P4(a,l)&&nK(a[l]);return a}function tOn(e){return e.type}function nOn(e,t,n){let r=Zl(t.messages)?t.messages:Cc();"__i18nGlobal"in n&&(r=zZe(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);o.length&&o.forEach(s=>{e.mergeLocaleMessage(s,r[s])});{if(Zl(t.datetimeFormats)){const s=Object.keys(t.datetimeFormats);s.length&&s.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(Zl(t.numberFormats)){const s=Object.keys(t.numberFormats);s.length&&s.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function r1t(e){return c(iI,null,e,0)}function iK(){return ps()}const o1t="__INTLIFY_META__",s1t=()=>[],GOi=()=>!1;let a1t=0;function l1t(e){return(t,n,r,o)=>e(n,r,iK()||void 0,o)}const YOi=()=>{const e=iK();let t=null;return e&&(t=tOn(e)[o1t])?{[o1t]:t}:null};function HZe(e={}){const{__root:t,__injectWithOption:n}=e,r=t===void 0,o=e.flatJson,s=hge?fe:nd;let a=dl(e.inheritLocale)?e.inheritLocale:!0;const l=s(t&&a?t.locale.value:dr(e.locale)?e.locale:tK),d=s(t&&a?t.fallbackLocale.value:dr(e.fallbackLocale)||Bu(e.fallbackLocale)||Fa(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:l.value),u=s(zZe(l.value,e)),h=s(Fa(e.datetimeFormats)?e.datetimeFormats:{[l.value]:{}}),g=s(Fa(e.numberFormats)?e.numberFormats:{[l.value]:{}});let m=t?t.missingWarn:dl(e.missingWarn)||wW(e.missingWarn)?e.missingWarn:!0,v=t?t.fallbackWarn:dl(e.fallbackWarn)||wW(e.fallbackWarn)?e.fallbackWarn:!0,f=t?t.fallbackRoot:dl(e.fallbackRoot)?e.fallbackRoot:!0,k=!!e.fallbackFormat,A=Dd(e.missing)?e.missing:null,p=Dd(e.missing)?l1t(e.missing):null,b=Dd(e.postTranslation)?e.postTranslation:null,w=t?t.warnHtmlMessage:dl(e.warnHtmlMessage)?e.warnHtmlMessage:!0,O=!!e.escapeParameter;const y=t?t.modifiers:Fa(e.modifiers)?e.modifiers:{};let C=e.pluralRules||t&&t.pluralRules,_;_=(()=>{r&&Zmt(null);const me={version:$Oi,locale:l.value,fallbackLocale:d.value,messages:u.value,modifiers:y,pluralRules:C,missing:p===null?void 0:p,missingWarn:m,fallbackWarn:v,fallbackFormat:k,unresolving:!0,postTranslation:b===null?void 0:b,warnHtmlMessage:w,escapeParameter:O,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};me.datetimeFormats=h.value,me.numberFormats=g.value,me.__datetimeFormatters=Fa(_)?_.__datetimeFormatters:void 0,me.__numberFormatters=Fa(_)?_.__numberFormatters:void 0;const _e=DOi(me);return r&&Zmt(_e),_e})(),R$(_,l.value,d.value);function L(){return[l.value,d.value,u.value,h.value,g.value]}const E=X({get:()=>l.value,set:me=>{_.locale=me,l.value=me}}),T=X({get:()=>d.value,set:me=>{_.fallbackLocale=me,d.value=me,R$(_,l.value,me)}}),D=X(()=>u.value),P=X(()=>h.value),Q=X(()=>g.value);function M(){return Dd(b)?b:null}function B(me){b=me,_.postTranslation=me}function R(){return A}function I(me){me!==null&&(p=l1t(me)),A=me,_.missing=p}const F=(me,_e,Te,De,Ye,ot)=>{L();let We;try{__INTLIFY_PROD_DEVTOOLS__,r||(_.fallbackContext=t?QOi():void 0),We=me(_)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(_.fallbackContext=void 0)}if(Te!=="translate exists"&&$h(We)&&We===Z4e||Te==="translate exists"&&!We){const[et,st]=_e();return t&&f?De(t):Ye(et)}else{if(ot(We))return We;throw rA(d2.UNEXPECTED_RETURN_TYPE)}};function j(...me){return F(_e=>Reflect.apply(i1t,null,[_e,...me]),()=>uMe(...me),"translate",_e=>Reflect.apply(_e.t,_e,[...me]),_e=>_e,_e=>dr(_e))}function W(...me){const[_e,Te,De]=me;if(De&&!Zl(De))throw rA(d2.INVALID_ARGUMENT);return j(_e,Te,xf({resolvedMessage:!0},De||{}))}function H(...me){return F(_e=>Reflect.apply(Kmt,null,[_e,...me]),()=>cMe(...me),"datetime format",_e=>Reflect.apply(_e.d,_e,[...me]),()=>fge,_e=>dr(_e)||Bu(_e))}function $(...me){return F(_e=>Reflect.apply(e1t,null,[_e,...me]),()=>dMe(...me),"number format",_e=>Reflect.apply(_e.n,_e,[...me]),()=>fge,_e=>dr(_e)||Bu(_e))}function G(me){return me.map(_e=>dr(_e)||$h(_e)||dl(_e)?r1t(String(_e)):_e)}const re={normalize:G,interpolate:me=>me,type:"vnode"};function J(...me){return F(_e=>{let Te;const De=_e;try{De.processor=re,Te=Reflect.apply(i1t,null,[De,...me])}finally{De.processor=null}return Te},()=>uMe(...me),"translate",_e=>_e[hMe](...me),_e=>[r1t(_e)],_e=>Bu(_e))}function oe(...me){return F(_e=>Reflect.apply(e1t,null,[_e,...me]),()=>dMe(...me),"number format",_e=>_e[gMe](...me),s1t,_e=>dr(_e)||Bu(_e))}function se(...me){return F(_e=>Reflect.apply(Kmt,null,[_e,...me]),()=>cMe(...me),"datetime format",_e=>_e[fMe](...me),s1t,_e=>dr(_e)||Bu(_e))}function le(me){C=me,_.pluralRules=C}function ue(me,_e){return F(()=>{if(!me)return!1;const Te=dr(_e)?_e:l.value,De=dr(_e)?[Te]:lMe(_,d.value,Te);for(let Ye=0;Ye[me],"translate exists",Te=>Reflect.apply(Te.te,Te,[me,_e]),GOi,Te=>dl(Te))}function ee(me){let _e=null;const Te=lMe(_,d.value,l.value);for(let De=0;De{a&&(l.value=me,_.locale=me,R$(_,l.value,d.value))}),pt(t.fallbackLocale,me=>{a&&(d.value=me,_.fallbackLocale=me,R$(_,l.value,d.value))}));const ke={id:a1t,locale:E,fallbackLocale:T,get inheritLocale(){return a},set inheritLocale(me){a=me,me&&t&&(l.value=t.locale.value,d.value=t.fallbackLocale.value,R$(_,l.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:D,get modifiers(){return y},get pluralRules(){return C||{}},get isGlobal(){return r},get missingWarn(){return m},set missingWarn(me){m=me,_.missingWarn=m},get fallbackWarn(){return v},set fallbackWarn(me){v=me,_.fallbackWarn=v},get fallbackRoot(){return f},set fallbackRoot(me){f=me},get fallbackFormat(){return k},set fallbackFormat(me){k=me,_.fallbackFormat=k},get warnHtmlMessage(){return w},set warnHtmlMessage(me){w=me,_.warnHtmlMessage=me},get escapeParameter(){return O},set escapeParameter(me){O=me,_.escapeParameter=me},t:j,getLocaleMessage:z,setLocaleMessage:Y,mergeLocaleMessage:ie,getPostTranslationHandler:M,setPostTranslationHandler:B,getMissingHandler:R,setMissingHandler:I,[Jwn]:le};return ke.datetimeFormats=P,ke.numberFormats=Q,ke.rt=W,ke.te=ue,ke.tm=de,ke.d=H,ke.n=$,ke.getDateTimeFormat=te,ke.setDateTimeFormat=Z,ke.mergeDateTimeFormat=he,ke.getNumberFormat=pe,ke.setNumberFormat=Ce,ke.mergeNumberFormat=Qe,ke[eOn]=n,ke[hMe]=J,ke[fMe]=se,ke[gMe]=oe,ke}function ZOi(e){const t=dr(e.locale)?e.locale:tK,n=dr(e.fallbackLocale)||Bu(e.fallbackLocale)||Fa(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Dd(e.missing)?e.missing:void 0,o=dl(e.silentTranslationWarn)||wW(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,s=dl(e.silentFallbackWarn)||wW(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=dl(e.fallbackRoot)?e.fallbackRoot:!0,l=!!e.formatFallbackMessages,d=Fa(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,h=Dd(e.postTranslation)?e.postTranslation:void 0,g=dr(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,m=!!e.escapeParameterHtml,v=dl(e.sync)?e.sync:!0;let f=e.messages;if(Fa(e.sharedMessages)){const y=e.sharedMessages;f=Object.keys(y).reduce((_,S)=>{const L=_[S]||(_[S]={});return xf(L,y[S]),_},f||{})}const{__i18n:k,__root:A,__injectWithOption:p}=e,b=e.datetimeFormats,w=e.numberFormats,O=e.flatJson;return{locale:t,fallbackLocale:n,messages:f,flatJson:O,datetimeFormats:b,numberFormats:w,missing:r,missingWarn:o,fallbackWarn:s,fallbackRoot:a,fallbackFormat:l,modifiers:d,pluralRules:u,postTranslation:h,warnHtmlMessage:g,escapeParameter:m,messageResolver:e.messageResolver,inheritLocale:v,__i18n:k,__root:A,__injectWithOption:p}}function kMe(e={}){const t=HZe(ZOi(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(o){t.locale.value=o},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(o){t.fallbackLocale.value=o},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(o){t.setMissingHandler(o)},get silentTranslationWarn(){return dl(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(o){t.missingWarn=dl(o)?!o:o},get silentFallbackWarn(){return dl(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(o){t.fallbackWarn=dl(o)?!o:o},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(o){t.fallbackFormat=o},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(o){t.setPostTranslationHandler(o)},get sync(){return t.inheritLocale},set sync(o){t.inheritLocale=o},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){t.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(o){t.escapeParameter=o},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...o){return Reflect.apply(t.t,t,[...o])},rt(...o){return Reflect.apply(t.rt,t,[...o])},te(o,s){return t.te(o,s)},tm(o){return t.tm(o)},getLocaleMessage(o){return t.getLocaleMessage(o)},setLocaleMessage(o,s){t.setLocaleMessage(o,s)},mergeLocaleMessage(o,s){t.mergeLocaleMessage(o,s)},d(...o){return Reflect.apply(t.d,t,[...o])},getDateTimeFormat(o){return t.getDateTimeFormat(o)},setDateTimeFormat(o,s){t.setDateTimeFormat(o,s)},mergeDateTimeFormat(o,s){t.mergeDateTimeFormat(o,s)},n(...o){return Reflect.apply(t.n,t,[...o])},getNumberFormat(o){return t.getNumberFormat(o)},setNumberFormat(o,s){t.setNumberFormat(o,s)},mergeNumberFormat(o,s){t.mergeNumberFormat(o,s)}};return r.__extender=n,r}function qOi(e,t,n){return{beforeCreate(){const r=iK();if(!r)throw rA(d2.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const s=o.i18n;if(o.__i18n&&(s.__i18n=o.__i18n),s.__root=t,this===this.$root)this.$i18n=c1t(e,s);else{s.__injectWithOption=!0,s.__extender=n.__vueI18nExtend,this.$i18n=kMe(s);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=c1t(e,o);else{this.$i18n=kMe({__i18n:o.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}else this.$i18n=e;o.__i18nGlobal&&nOn(t,o,o),this.$t=(...s)=>this.$i18n.t(...s),this.$rt=(...s)=>this.$i18n.rt(...s),this.$te=(s,a)=>this.$i18n.te(s,a),this.$d=(...s)=>this.$i18n.d(...s),this.$n=(...s)=>this.$i18n.n(...s),this.$tm=s=>this.$i18n.tm(s),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=iK();if(!r)throw rA(d2.UNEXPECTED_ERROR);const o=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,o.__disposer&&(o.__disposer(),delete o.__disposer,delete o.__extender),n.__deleteInstance(r),delete this.$i18n}}}function c1t(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Jwn](t.pluralizationRules||e.pluralizationRules);const n=zZe(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(r=>e.mergeLocaleMessage(r,n[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}const $Ze={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function KOi({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,o)=>[...r,...o.type===sn?o.children:[o]],[]):t.reduce((n,r)=>{const o=e[r];return o&&(n[r]=o()),n},Cc())}function iOn(){return sn}const JOi=Je({name:"i18n-t",props:xf({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>$h(e)||!isNaN(e)}},$Ze),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||aI({useScope:e.scope,__useComponent:!0});return()=>{const s=Object.keys(n).filter(g=>g[0]!=="_"),a=Cc();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=dr(e.plural)?+e.plural:e.plural);const l=KOi(t,s),d=o[hMe](e.keypath,l,a),u=xf(Cc(),r),h=dr(e.tag)||Zl(e.tag)?e.tag:iOn();return xn(h,u,d)}}}),d1t=JOi;function eyi(e){return Bu(e)&&!dr(e[0])}function rOn(e,t,n,r){const{slots:o,attrs:s}=t;return()=>{const a={part:!0};let l=Cc();e.locale&&(a.locale=e.locale),dr(e.format)?a.key=e.format:Zl(e.format)&&(dr(e.format.key)&&(a.key=e.format.key),l=Object.keys(e.format).reduce((m,v)=>n.includes(v)?xf(Cc(),m,{[v]:e.format[v]}):m,Cc()));const d=r(e.value,a,l);let u=[a.key];Bu(d)?u=d.map((m,v)=>{const f=o[m.type],k=f?f({[m.type]:m.value,index:v,parts:d}):[m.value];return eyi(k)&&(k[0].key=`${m.type}-${v}`),k}):dr(d)&&(u=[d]);const h=xf(Cc(),s),g=dr(e.tag)||Zl(e.tag)?e.tag:iOn();return xn(g,h,u)}}const tyi=Je({name:"i18n-n",props:xf({value:{type:Number,required:!0},format:{type:[String,Object]}},$Ze),setup(e,t){const n=e.i18n||aI({useScope:e.scope,__useComponent:!0});return rOn(e,t,Zwn,(...r)=>n[gMe](...r))}}),u1t=tyi;function nyi(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function iyi(e){const t=a=>{const{instance:l,value:d}=a;if(!l||!l.$)throw rA(d2.UNEXPECTED_ERROR);const u=nyi(e,l.$),h=h1t(d);return[Reflect.apply(u.t,u,[...f1t(h)]),u]};return{created:(a,l)=>{const[d,u]=t(l);hge&&(a.__i18nWatcher=pt(u.locale,()=>{l.instance&&l.instance.$forceUpdate()})),a.__composer=u,a.textContent=d},unmounted:a=>{hge&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:l})=>{if(a.__composer){const d=a.__composer,u=h1t(l);a.textContent=Reflect.apply(d.t,d,[...f1t(u)])}},getSSRProps:a=>{const[l]=t(a);return{textContent:l}}}}function h1t(e){if(dr(e))return{path:e};if(Fa(e)){if(!("path"in e))throw rA(d2.REQUIRED_VALUE,"path");return e}else throw rA(d2.INVALID_VALUE)}function f1t(e){const{path:t,locale:n,args:r,choice:o,plural:s}=e,a={},l=r||{};return dr(n)&&(a.locale=n),$h(o)&&(a.plural=o),$h(s)&&(a.plural=s),[t,l,a]}function ryi(e,t,...n){const r=Fa(n[0])?n[0]:{};(dl(r.globalInstall)?r.globalInstall:!0)&&([d1t.name,"I18nT"].forEach(s=>e.component(s,d1t)),[u1t.name,"I18nN"].forEach(s=>e.component(s,u1t)),[m1t.name,"I18nD"].forEach(s=>e.component(s,m1t))),e.directive("t",iyi(t))}const oyi=K6("global-vue-i18n");function syi(e={}){const t=__VUE_I18N_LEGACY_API__&&dl(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=dl(e.globalInjection)?e.globalInjection:!0,r=new Map,[o,s]=ayi(e,t),a=K6("");function l(g){return r.get(g)||null}function d(g,m){r.set(g,m)}function u(g){r.delete(g)}const h={get mode(){return __VUE_I18N_LEGACY_API__&&t?"legacy":"composition"},async install(g,...m){if(g.__VUE_I18N_SYMBOL__=a,g.provide(g.__VUE_I18N_SYMBOL__,h),Fa(m[0])){const k=m[0];h.__composerExtend=k.__composerExtend,h.__vueI18nExtend=k.__vueI18nExtend}let v=null;!t&&n&&(v=myi(g,h.global)),__VUE_I18N_FULL_INSTALL__&&ryi(g,h,...m),__VUE_I18N_LEGACY_API__&&t&&g.mixin(qOi(s,s.__composer,h));const f=g.unmount;g.unmount=()=>{v&&v(),h.dispose(),f()}},get global(){return s},dispose(){o.stop()},__instances:r,__getInstance:l,__setInstance:d,__deleteInstance:u};return h}function aI(e={}){const t=iK();if(t==null)throw rA(d2.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw rA(d2.NOT_INSTALLED);const n=lyi(t),r=dyi(n),o=tOn(t),s=cyi(e,o);if(s==="global")return nOn(r,e,o),r;if(s==="parent"){let d=uyi(n,t,e.__useComponent);return d==null&&(d=r),d}const a=n;let l=a.__getInstance(t);if(l==null){const d=xf({},e);"__i18n"in o&&(d.__i18n=o.__i18n),r&&(d.__root=r),l=HZe(d),a.__composerExtend&&(l[mMe]=a.__composerExtend(l)),fyi(a,t,l),a.__setInstance(t,l)}return l}function ayi(e,t){const n=One(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>kMe(e)):n.run(()=>HZe(e));if(r==null)throw rA(d2.UNEXPECTED_ERROR);return[n,r]}function lyi(e){const t=bt(e.isCE?oyi:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw rA(e.isCE?d2.NOT_INSTALLED_WITH_PROVIDE:d2.UNEXPECTED_ERROR);return t}function cyi(e,t){return G4e(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function dyi(e){return e.mode==="composition"?e.global:e.global.__composer}function uyi(e,t,n=!1){let r=null;const o=t.root;let s=hyi(t,n);for(;s!=null;){const a=e;if(e.mode==="composition")r=a.__getInstance(s);else if(__VUE_I18N_LEGACY_API__){const l=a.__getInstance(s);l!=null&&(r=l.__composer,n&&r&&!r[eOn]&&(r=null))}if(r!=null||o===s)break;s=s.parent}return r}function hyi(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function fyi(e,t,n){An(()=>{},t),Qa(()=>{const r=n;e.__deleteInstance(t);const o=r[mMe];o&&(o(),delete r[mMe])},t)}const gyi=["locale","fallbackLocale","availableLocales"],g1t=["t","rt","d","n","tm","te"];function myi(e,t){const n=Object.create(null);return gyi.forEach(o=>{const s=Object.getOwnPropertyDescriptor(t,o);if(!s)throw rA(d2.UNEXPECTED_ERROR);const a=Fn(s.value)?{get(){return s.value.value},set(l){s.value.value=l}}:{get(){return s.get&&s.get()}};Object.defineProperty(n,o,a)}),e.config.globalProperties.$i18n=n,g1t.forEach(o=>{const s=Object.getOwnPropertyDescriptor(t,o);if(!s||!s.value)throw rA(d2.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${o}`,s)}),()=>{delete e.config.globalProperties.$i18n,g1t.forEach(o=>{delete e.config.globalProperties[`$${o}`]})}}const kyi=Je({name:"i18n-d",props:xf({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},$Ze),setup(e,t){const n=e.i18n||aI({useScope:e.scope,__useComponent:!0});return rOn(e,t,Ywn,(...r)=>n[fMe](...r))}}),m1t=kyi;XOi();SOi(aOi);LOi(yOi);xOi(lMe);if(__INTLIFY_PROD_DEVTOOLS__){const e=qT();e.__INTLIFY__=!0,lOi(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function vyi(e,t){return vz()?(YQ(e,t),!0):!1}function k1t(){const e=new Set,t=s=>{e.delete(s)};return{on:s=>{e.add(s);const a=()=>t(s);return vyi(a),{off:a}},off:t,trigger:(...s)=>Promise.all(Array.from(e).map(a=>a(...s))),clear:()=>{e.clear()}}}const oOn=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ayi=Object.prototype.toString,pyi=e=>Ayi.call(e)==="[object Object]",vMe=()=>{},byi=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function wyi(...e){if(e.length!==1)return Pa(...e);const t=e[0];return typeof t=="function"?d6(QYe(()=>({get:t,set:vMe}))):fe(t)}function sOn(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const aOn=e=>e();function Oyi(...e){let t=0,n,r=!0,o=vMe,s,a,l,d,u;!Fn(e[0])&&typeof e[0]=="object"?{delay:a,trailing:l=!0,leading:d=!0,rejectOnCancel:u=!1}=e[0]:[a,l=!0,d=!0,u=!1]=e;const h=()=>{n&&(clearTimeout(n),n=void 0,o(),o=vMe)};return m=>{const v=Fo(a),f=Date.now()-t,k=()=>s=m();return h(),v<=0?(t=Date.now(),k()):(f>v?(t=Date.now(),(d||!r)&&k()):l&&(s=new Promise((A,p)=>{o=u?p:A,n=setTimeout(()=>{t=Date.now(),r=!0,A(k()),h()},Math.max(0,v-f))})),!d&&!n&&(n=setTimeout(()=>r=!0,v)),r=!1,s)}}function yyi(e=aOn,t={}){const{initialState:n="active"}=t,r=wyi(n==="active");function o(){r.value=!1}function s(){r.value=!0}return{isActive:d6(r),pause:o,resume:s,eventFilter:(...l)=>{r.value&&e(...l)}}}function T_e(e){return Array.isArray(e)?e:[e]}function Cyi(e){return ps()}function _yi(e,t=200,n=!1,r=!0,o=!1){return sOn(Oyi(t,n,r,o),e)}function Syi(e,t,n={}){const{eventFilter:r=aOn,...o}=n;return pt(e,sOn(r,t),o)}function Lyi(e,t,n={}){const{eventFilter:r,initialState:o="active",...s}=n,{eventFilter:a,pause:l,resume:d,isActive:u}=yyi(r,{initialState:o});return{stop:Syi(e,t,{...s,eventFilter:a}),pause:l,resume:d,isActive:u}}function xyi(e,t=!0,n){Cyi()?An(e,n):t?e():ai(e)}function Eyi(e,t,n){return pt(e,t,{...n,immediate:!0})}const e9=oOn?window:void 0,Tyi=oOn?window.document:void 0;function XZe(e){var t;const n=Fo(e);return(t=n==null?void 0:n.$el)!==null&&t!==void 0?t:n}function Yg(...e){const t=(r,o,s,a)=>(r.addEventListener(o,s,a),()=>r.removeEventListener(o,s,a)),n=X(()=>{const r=T_e(Fo(e[0])).filter(o=>o!=null);return r.every(o=>typeof o!="string")?r:void 0});return Eyi(()=>{var r,o;return[(r=(o=n.value)===null||o===void 0?void 0:o.map(s=>XZe(s)))!==null&&r!==void 0?r:[e9].filter(s=>s!=null),T_e(Fo(n.value?e[1]:e[0])),T_e(Ae(n.value?e[2]:e[1])),Fo(n.value?e[3]:e[2])]},([r,o,s,a],l,d)=>{if(!(r!=null&&r.length)||!(o!=null&&o.length)||!(s!=null&&s.length))return;const u=pyi(a)?{...a}:a,h=r.flatMap(g=>o.flatMap(m=>s.map(v=>t(g,m,v,u))));d(()=>{h.forEach(g=>g())})},{flush:"post"})}const Yse=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zse="__vueuse_ssr_handlers__",Qyi=Dyi();function Dyi(){return Zse in Yse||(Yse[Zse]=Yse[Zse]||{}),Yse[Zse]}function Byi(e,t){return Qyi[e]||t}function Ryi(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Iyi={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},v1t="vueuse-storage";function lOn(e,t,n,r={}){var o;const{flush:s="pre",deep:a=!0,listenToStorageChanges:l=!0,writeDefaults:d=!0,mergeDefaults:u=!1,shallow:h,window:g=e9,eventFilter:m,onError:v=Q=>{console.error(Q)},initOnMounted:f}=r,k=(h?nd:fe)(typeof t=="function"?t():t),A=X(()=>Fo(e));if(!n)try{n=Byi("getDefaultStorage",()=>e9==null?void 0:e9.localStorage)()}catch(Q){v(Q)}if(!n)return k;const p=Fo(t),b=Ryi(p),w=(o=r.serializer)!==null&&o!==void 0?o:Iyi[b],{pause:O,resume:y}=Lyi(k,Q=>E(Q),{flush:s,deep:a,eventFilter:m});pt(A,()=>D(),{flush:s});let C=!1;const _=Q=>{f&&!C||D(Q)},S=Q=>{f&&!C||P(Q)};g&&l&&(n instanceof Storage?Yg(g,"storage",_,{passive:!0}):Yg(g,v1t,S)),f?xyi(()=>{C=!0,D()}):D();function L(Q,M){if(g){const B={key:A.value,oldValue:Q,newValue:M,storageArea:n};g.dispatchEvent(n instanceof Storage?new StorageEvent("storage",B):new CustomEvent(v1t,{detail:B}))}}function E(Q){try{const M=n.getItem(A.value);if(Q==null)L(M,null),n.removeItem(A.value);else{const B=w.write(Q);M!==B&&(n.setItem(A.value,B),L(M,B))}}catch(M){v(M)}}function T(Q){const M=Q?Q.newValue:n.getItem(A.value);if(M==null)return d&&p!=null&&n.setItem(A.value,w.write(p)),p;if(!Q&&u){const B=w.read(M);return typeof u=="function"?u(B,p):b==="object"&&!Array.isArray(B)?{...p,...B}:B}else return typeof M!="string"?M:w.read(M)}function D(Q){if(!(Q&&Q.storageArea!==n)){if(Q&&Q.key==null){k.value=p;return}if(!(Q&&Q.key!==A.value)){O();try{const M=w.write(k.value);(Q===void 0||(Q==null?void 0:Q.newValue)!==M)&&(k.value=T(Q))}catch(M){v(M)}finally{Q?ai(y):y()}}}}function P(Q){D(Q.detail)}return k}const Myi={multiple:!0,accept:"*",reset:!1,directory:!1};function Pyi(e){if(!e)return null;if(e instanceof FileList)return e;const t=new DataTransfer;for(const n of e)t.items.add(n);return t.files}function cOn(e={}){const{document:t=Tyi}=e,n=fe(Pyi(e.initialFiles)),{on:r,trigger:o}=k1t(),{on:s,trigger:a}=k1t(),l=X(()=>{var g;const m=(g=XZe(e.input))!==null&&g!==void 0?g:t?t.createElement("input"):void 0;return m&&(m.type="file",m.onchange=v=>{n.value=v.target.files,o(n.value)},m.oncancel=()=>{a()}),m}),d=()=>{n.value=null,l.value&&l.value.value&&(l.value.value="",o(null))},u=g=>{const m=l.value;m&&(m.multiple=Fo(g.multiple),m.accept=Fo(g.accept),m.webkitdirectory=Fo(g.directory),byi(g,"capture")&&(m.capture=Fo(g.capture)))},h=g=>{const m=l.value;if(!m)return;const v={...Myi,...e,...g};u(v),Fo(v.reset)&&d(),m.click()};return u6(()=>{u(e)}),{files:d6(n),open:h,reset:d,onCancel:s,onChange:r}}function q4e(e,t,n={}){const{window:r=e9}=n;return lOn(e,t,r==null?void 0:r.localStorage,n)}const Fyi={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof MouseEvent?[e.movementX,e.movementY]:null};function Nyi(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:r=!1,initialValue:o={x:0,y:0},window:s=e9,target:a=s,scroll:l=!0,eventFilter:d}=e;let u=null,h=0,g=0;const m=nd(o.x),v=nd(o.y),f=nd(null),k=typeof t=="function"?t:Fyi[t],A=_=>{const S=k(_);u=_,S&&([m.value,v.value]=S,f.value="mouse"),s&&(h=s.scrollX,g=s.scrollY)},p=_=>{if(_.touches.length>0){const S=k(_.touches[0]);S&&([m.value,v.value]=S,f.value="touch")}},b=()=>{if(!u||!s)return;const _=k(u);u instanceof MouseEvent&&_&&(m.value=_[0]+s.scrollX-h,v.value=_[1]+s.scrollY-g)},w=()=>{m.value=o.x,v.value=o.y},O=d?_=>d(()=>A(_),{}):_=>A(_),y=d?_=>d(()=>p(_),{}):_=>p(_),C=d?()=>d(()=>b(),{}):()=>b();if(a){const _={passive:!0};Yg(a,["mousemove","dragover"],O,_),n&&t!=="movement"&&(Yg(a,["touchstart","touchmove"],y,_),r&&Yg(a,"touchend",w,_)),l&&t==="page"&&Yg(s,"scroll",C,_)}return{x:m,y:v,sourceType:f}}function Uyi(e={}){const{touch:t=!0,drag:n=!0,capture:r=!1,initialValue:o=!1,window:s=e9}=e,a=nd(o),l=nd(null);if(!s)return{pressed:a,sourceType:l};const d=m=>v=>{var f;a.value=!0,l.value=m,(f=e.onPressed)===null||f===void 0||f.call(e,v)},u=m=>{var v;a.value=!1,l.value=null,(v=e.onReleased)===null||v===void 0||v.call(e,m)},h=X(()=>XZe(e.target)||s),g={passive:!0,capture:r};return Yg(h,"mousedown",d("mouse"),g),Yg(s,"mouseleave",u,g),Yg(s,"mouseup",u,g),n&&(Yg(h,"dragstart",d("mouse"),g),Yg(s,"drop",u,g),Yg(s,"dragend",u,g)),t&&(Yg(h,"touchstart",d("touch"),g),Yg(s,"touchend",u,g),Yg(s,"touchcancel",u,g)),{pressed:a,sourceType:l}}const jyi={editMdPreivew:{title:"编辑",confirm:"保存",cancel:"取消"},imageTools:{copy:"复制图片",preview:"预览",download:"下载",msg:{imageLoadFailed:"图片加载失败",convertFailed:"转换失败",copied:"已复制到剪贴板",copyFailed:"复制失败",downloadFailed:"下载失败",downloadStarted:"开始下载",downloadBlockedOpenNewWindow:"当前图片源可能限制下载,已尝试在新窗口打开"}},migrateShow:{title:"迁移数据",desc:"检测到您有旧版本的数据,是否需要迁移?",hide:"不再显示",confirm:"确定",msg:{migrateSuccess:"数据迁移成功",migrateFailed:"数据迁移失败"}},modelSelect:{placeholder:"请选择模型",type:{image:"图像",text:"文本",video:"视频"},msg:{fetchModelFailed:"获取模型数据失败:"},goSetting:"去设置中添加模型"},storyboardImageCheck:{camera:"镜头",dialogTitle:"选择分镜图",preview:"预览",src:"预览图",title:"标题",duration:"时长",lines:"台词",createTime:"创建时间"}},Wyi={title:"ToonFlow设置",menu:{language:"语言设置",vendorConfig:"模型服务",agentConfig:"Agent配置",promptManage:"提示词管理",skillManagement:"Skills技能管理",memoryConfig:"Agent记忆配置",loginConfig:"登录配置",dbConfig:"数据库操作",fileManagement:"文件管理",otherConfig:"其他配置",requestConfig:"请求地址",devConfig:"开发者选项",about:"检查更新",logoutConfig:"退出登录",skillsSkillsManagement:"Skills技能管理"},language:{desc:"选择界面显示语言",msg:{saved:"语言设置已保存"}},vendor:{addVendor:"添加供应商",noVendor:"暂无供应商,请先添加",required:"必填",optionalSection:"选填项",modelSettings:"模型设置",addManually:"手动添加",test:"测试",edit:"编辑",delete:"删除",deleteVendor:"删除供应商",editCode:"编辑代码",updateConfig:"更新配置",addModel:"添加模型",editModel:"编辑模型",displayName:"显示名称",displayNamePlaceholder:"例如:GPT-4o",modelId:"模型标识",modelIdPlaceholder:"例如:gpt-4o",modelType:"模型类型",multimodal:"多模态",supported:"支持",notSupported:"不支持",toolCall:"工具调用",imageMode:"图像模式",videoMode:"视频模式",audioOutput:"音频输出",durationResolution:"时长 / 分辨率映射",durationSec:"时长(秒)",resolution:"分辨率",enterAndPress:"输入后回车",addDurationResolution:"添加一组时长 / 分辨率",testResult:"测试结果",generating:"正在生成中...",addVendorDialog:"添加供应商",codeEditorInfo:"请编写 TypeScript 代码配置供应商信息",reset:"重置",importFile:"导入文件",textModel:"文本模型",imageModel:"图像模型",videoModel:"视频模型",textToImage:"文生图",textToVideo:"文生视频",singleImage:"单图",multiImage:"多图模式",multiReference:"多图参考",gridImage:"网格单图",startEndRequired:"首尾帧(两张必填)",endFrameOptional:"首尾帧(尾帧可选)",startFrameOptional:"首尾帧(首帧可选)",textRef:"文本",imageRef:"图片",videoRef:"视频",audioRef:"音频",audioOptional:"可选",audioOnly:"仅输出有声视频",noAudio:"仅输出无声视频",msg:{getVendorListFailed:"获取供应商列表失败",vendorConfigUpdated:"供应商配置已更新",updateFailed:"更新失败",highRiskConfirm:"⚠️ 高风险操作确认",addVendorRiskBody:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的代码来源!",iKnowRisk:"我了解风险",cancel:"取消",confirmAgain:"⚠️ 再次确认",addVendorConfirmBody:"确定要添加该供应商吗?添加后它将参与系统的模型调度。",confirmAndAdd:"确认并添加",goBackCheck:"返回检查",vendorAdded:"供应商已成功添加",addFailed:"添加失败",updateVendorRiskBody:"更新 AI 供应商配置将修改其访问系统 API 的权限和行为,请确认您信任修改后的代码来源!",updateVendorConfirmBody:"确定要更新该供应商配置吗?更新后将影响系统的模型调度。",confirmAndUpdate:"确认并更新",updateSuccess:"供应商配置更新成功",fillDisplayName:"请填写显示名称",fillModelId:"请填写模型标识",selectImageMode:"请选择图像模式",selectVideoMode:"请选择视频模式",groupPrefix:"第 {n} 组:",addDuration:"请添加时长",addResolution:"请添加分辨率",selectVendorFirst:"请先选择供应商",modelIdExists:"模型标识已存在",modelAdded:"模型已成功添加",modelUpdated:"模型已成功更新",enterApiKey:"请填写 API KEY",enterApiUrl:"请填写 API URL",testSuccess:"测试成功",imageGenSuccess:"图像生成成功",videoGenSuccess:"视频生成成功",requestFailed:"请求失败:",deleteModelConfirm:"确认删除模型",deleteModelBody:"删除后不可恢复,是否继续?",confirmDelete:"确认删除",modelDeleted:"模型已删除",deleteVendorConfirm:"确认删除供应商",deleteVendorBody:"删除后该供应商下所有模型将一并删除,是否继续?",vendorDeleted:"供应商已删除",deleteFailed:"删除失败",enabled:"已启用",disabled:"已禁用",linkAddVendorRiskBody:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的链接来源!",importAdd:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的文件来源!",linkAddFailed:"链接添加失败"},associationSkills:"关联skills",think:"深度思考",code:"代码",linkAddPlaceholder:"输入链接添加",noFileSelected:"成功导入文件",linkAdd:"确认"},agent:{bannerDesc:"使用 Toonflow 官方中转站点,支持一键填入配置,开箱即用,无需手动配置。",visitWebsite:"进入网站",fillKey:"填入KEY",oneClickFill:"一键填入",notOpen:"未开放",notConfigured:"未配置",modelConfig:"模型配置",confirm:"确认",cancel:"取消",selectModel:"选择模型",fillKeyHeader:"填入Toonflow平台的官方KEY",keyPlaceholder:"请输入 KEY",save:"保存",msg:{notAvailable:"该功能暂未开放,敬请期待",configSuccess:"配置成功",updateConfigFailed:"更新配置失败:",keyValid:"KEY有效,已成功连接Toonflow平台",keyInvalid:"KEY无效,请检查后重新输入:",enterKey:"请输入 KEY",saveFailed:"保存失败:",getAgentListFailed:"获取Agent配置列表失败:",toonflowNotFound:"Toonflow官方中转站不存在"}},memory:{warning:"以下配置项已预设为推荐值。除非您清楚了解各项配置的含义及影响,否则建议维持现有设置",vectorModelConfig:"向量模型配置",modelFilePath:"模型文件路径",quantizationType:"量化类型",quantizationPlaceholder:"请输入量化类型",memoryParams:"记忆参数",messagesPerSummary:"触发消息压缩条数",messagesPerSummaryHelp:"保留最近 N 条对话上下文。",shortTermLimit:"单次获取未压缩消息条数",shortTermLimitHelp:"检索时返回的候选记忆条数。",summaryMaxLength:"压缩最大字符",summaryMaxLengthHelp:"消息压缩时允许的最大字符",summaryLimit:"允许查询已压缩消息条数",summaryLimitHelp:"允许查询已压缩消息条数",ragLimit:"搜索记忆条数",ragLimitHelp:"检索时获取的消息数。",deepRetrieveSummaryLimit:"向量召回压缩消息数",deepRetrieveSummaryLimitHelp:"检索压缩消息内容时获取的消息数。",saveConfig:"保存配置",clearMemory:"清空记忆",restoreDefault:"恢复默认配置",msg:{saved:"记忆配置已保存",clearConfirmTitle:"确认清空记忆",clearConfirmBody:"该操作会清空 AI 全局记忆数据,且不可恢复,是否继续?",confirmClear:"确认清空",cancel:"取消",cleared:"记忆已清空",clearFailed:"清空记忆失败"}},login:{username:"用户名",usernamePlaceholder:"请输入用户名",password:"密码",passwordPlaceholder:"请输入密码",modify:"修改",msg:{enterUsername:"请输入用户名",usernameLength:"用户名长度为 2-20 个字符",enterPassword:"请输入密码",passwordLength:"密码长度为 6-20 个字符",fetchFailed:"获取用户信息失败",saveSuccess:"保存成功",saveFailed:"保存失败"}},db:{clearDb:"清空数据库",clearDbDesc:"清空所有数据表中的数据,保留表结构",clearData:"清空数据",confirmAction:"确认操作",msg:{clearDbTitle:"清空数据库",firstConfirm:"确定要清空所有数据表吗?数据清空后无法恢复!",secondConfirm:"这是最后一次确认,清空后所有数据将永久丢失!",keyword:"清空",confirm:"确认",pleaseInput:"请输入",cleared:"所有数据表已清空",operationFailed:"操作失败,请重试",cancelled:"操作已取消"}},skill:{scanSkills:"扫描Skills",addSkill:"新增 Skill",importFromHub:"Toonflow-Hub 导入",filterType:"类型",filterAttribution:"归属",searchPlaceholder:"按名称搜索 skill",search:"查询",totalCount:"共 {count} 条 Skill",typeMain:"核心",typeReferences:"技法",noAttribution:"无归属",noAttributionTip:"⚠️无归属,无法启用Skill",noEmbeddingTip:"⚠️未向量化,无法启用Skill",notEmbedded:"未向量化",stateNormal:"正常",stateGenerating:"生成描述中",stateEmptyDesc:"描述为空",stateAttrError:"归属异常",stateMd5Changed:"MD5变动,建议更新描述",embedding:"向量化",edit:"编辑",delete:"删除",importFromHubDialog:"从 Toonflow-Hub 导入",shareLink:"分享链接",editSkillTitle:"编辑 Skill-",addSkillTitle:"新增 Skill",skillName:"Skill 名称",skillNamePlaceholder:"例如:writing-assistant",path:"路径",attributionAgent:"归属 Agent",selectAttribution:"选择归属 Agent",description:"描述",aiGenerate:"AI生成",descriptionPlaceholder:"描述这个 skill 的用途",cancel:"取消",save:"保存",createSkill:"创建 Skill",attr:{productionDecision:"视频生产-执行导演",productionExecution:"视频生产-摄影指导",productionSupervision:"视频生产-监制",scriptDecision:"剧本Agent-统筹",scriptExecution:"剧本Agent-编剧",scriptSupervision:"剧本Agent-编辑",universalAgent:"制片助理"},msg:{scanSuccess:"扫描成功,共扫描到 {count} 个 Skill 文件",fetchListFailed:"获取 skill 列表失败",fillContentFirst:"请先填写 Markdown 内容",descGenSuccess:"描述生成成功",descGenFailed:"描述生成失败",fillNameFirst:"请先填写 Skill 名称",updateSuccess:"Skill 更新成功",createSuccess:"Skill 创建成功",updateFailed:"Skill 更新失败",createFailed:"Skill 创建失败",deleteConfirmTitle:"确认删除",deleteConfirmBody:"确定要删除 Skill「{name}」吗?此操作不可恢复。",deleteSuccess:"删除成功",deleteFailed:"删除失败",embeddingSuccess:"向量化成功",embeddingFailed:"向量化失败"},fileLost:"文件丢失"},other:{requestTimeout:"请求超时时间",seconds:"秒",inputSeconds:"请输入秒",assetConcurrency:"资产生成并发数",count:"个",inputCount:"请输入个数",chapterRegex:"章节拆分正则",restoreDefault:"恢复默认",regexPlaceholder:"请输入正则表达式",canvasScroll:"画布滚动",canvasIsDisabled:"画布缩放",agentCanvasScalingMethod:"生产页无限画布滚轮操作",zoom:"缩放",scroll:"滚动",isInteracting:"生产页无限画布拖拽性能优化",closeIsInteracting:"关闭",openIsInteracting:"开启"},request:{warning:"如非特殊情况,不需要修改或者配置",apiAddress:"API 地址",apiPlaceholder:"请输入 API 请求地址",save:"保存",reset:"重置",msg:{enterApi:"请输入 API 地址",validUrl:"请输入有效的 HTTP/HTTPS 地址",saved:"请求地址保存成功",reset:"已重置为默认地址",refreshFailed:"刷新失败",refreshSuccess:"刷新成功"},refresh:"刷新"},about:{slogan:"开源的AI驱动漫画 / 分镜创作工具",latestVersion:"当前为最新版本",checkUpdate:"检查更新",codeRepository:"代码仓库",githubRepo:"GitHub 仓库",giteeRepo:"Gitee 仓库",versionUpdate:"版本更新",checkUpdateGithub:"检查更新(GitHub)",getFromGithub:"从GitHub Release 获取最新版本",checkUpdateGitee:"检查更新(Gitee)",getFromGitee:"从Gitee Release获取最新版本",license:"许可证",licenseDesc:"开源许可协议·点击查看详情",updateAvailable:"发现新版本",currentVersion:"当前版本",latestVersionLabel:"最新版本",selectUpdateSource:"选择更新源",github:"GitHub",gitee:"Gitee",confirmUpdate:"确认更新",cancel:"取消",updating:"正在更新...",updateSuccess:"更新成功,请重启应用",updateFailed:"更新失败,请重试",noUpdate:"当前已是最新版本",upToDate:"检测到新版本"},logout:{warning:"退出登录后,您需要重新登录才能继续使用系统。",confirmLogout:"确定要退出登录吗?",logout:"退出登录",msg:{logoutSuccess:"退出登录成功",logoutFailed:"退出登录失败,请重试"}},file:{quickOpen:"快捷打开目录",open:"打开",dockerDesc:'Docker/前后端分离部署请前往"/data/*"目录手动管理文件。',desktopOnly:"该功能仅支持桌面端",folders:{data:"data",dataDesc:"数据目录。",logs:"data/logs",logsDesc:"运行日志与错误日志。",oss:"data/oss",ossDesc:"文件存储相关资源。",skills:"data/skills",skillsDesc:"技能与提示配置文件。",models:"data/models",modelsDesc:"模型文件与配置。",web:"data/web",webDesc:"Web 相关资源,如前端构建产物等。",serve:"data/serve",serveDesc:"后端服务相关文件。"},openFailed:"打开文件夹失败"},dev:{aiDevtool:"切换桌面端模式",devtool:"打开控制台",switchAiDevTool:"关闭/开启 {'@'}ai-sdk/devtools",warning:"以下为开发者工具,谨慎操作!",openDevtool:"打开",devtoolsDoc:"文档地址",devtoolsDesc:"开启后会在Toonflow安装目录创建.devtools文件夹,请确保Toonflow有写入权限(管理员身份运行)。",devtoolsDesc2:"在该目录运行 npx {'@'}ai-sdk/devtools 开启遥测调试",openDevtoolFailed:"打开开发者工具失败,请确保已安装Toonflow桌面端",notInElectron:"WEB环境请手动打开浏览器控制台"}},Vyi={selectProject:"请选择项目",menu:{myProject:"我的项目",taskCenter:"任务中心",novel:"小说原文",scriptAgent:"剧本Agent",scriptManage:"剧本管理",cornerScape:"塑角造景",production:"视频生产",assetCenter:"资产中心",settings:"设置",jumpGithub:"跳转Github",feedbackQuestions:"反馈问题"},project:{title:"我的项目",subtitle:"管理您的所有短剧项目",newProject:"新建项目",dialog:{editTitle:"编辑项目",addTitle:"新建项目",save:"保存",ok:"确定",cancel:"取消",projectType:"项目类型",selectType:"选择项目类型",basedOnNovel:"基于小说原文",projectName:"项目名称",projectNamePh:"请输入项目名称",novelType:"小说类型",novelTypePh:"例如:玄幻、科幻、言情",artStyle:"画风",selected:"已选:",selectArtStyle:"请选择画风",newArtStyle:"新建画风",loading:"加载中...",videoRatio:"影片比例",novelIntro:"小说简介",novelIntroPh:"请输入小说简介",editArtStyleTitle:"编辑画风",newArtStyleTitle:"新建画风",artStyleName:"画风名称",artStyleNamePh:"请输入画风名称",artStyleImage:"画风图片",remove:"移除",uploadCover:"上传封面",artStylePrompt:"提示词",aiExtract:"AI提取提示词",promptPlaceholder:"描述提示词",visualManual:"视觉手册",newVisualManual:"新建视觉手册",editVisualManualTitle:"编辑视觉手册",newVisualManualTitle:"新建视觉手册",visualManualName:"视觉手册名称",visualManualNamePh:"请输入视觉手册名称",visualManualCover:"视觉手册封面",visualManualPrompt:"视觉手册提示词",modelData:"选择图片模型",videoModelData:"选择视频模型",prompt:{placeholder:"输入提示词",saveSuccess:"更新成功",title:"提示词"},basedOnScript:"基于剧本",mdFile:"视觉手册文件",directorManual:"导演手册",addDirectorManual:"新建导演手册",editingDirectorManual:"编辑导演手册",newDirecorManualTitle:"新建导演手册",directorManualPrompt:"导演手册提示词",directorManualName:"导演手册名称",directorManualNamePh:"输入导演手册名称",directorFile:"导演手册文件",directorManualCover:"导演手册封面"},msg:{fetchFailed:"获取项目列表失败",notFound:"未找到该项目!",editSuccess:"编辑项目成功",editFailed:"编辑项目失败",addSuccess:"新增项目成功",addFailed:"新增项目失败",deleteHeader:"删除项目",deleteBody:"确定要删除该项目吗?",deleteConfirm:"删除",deleteCancel:"取消",deleteSuccess:"删除项目成功",deleteFailed:"删除项目失败",extractSuccess:"提示词提取成功",extractFailed:"提取失败",enterArtStyleName:"请输入画风名称",artStyleUpdated:"画风已更新",artStyleAdded:"画风已添加",operationFailed:"操作失败",enterVisualManualName:"请输入视觉手册名称",enterVisualManualImage:"请上传视觉手册封面图片",enterVisualManualTabData:"提示词不能为空",visualManualUpdated:"视觉手册已更新",visualManualAdded:"视觉手册已添加",deleteVisualManualHeader:"删除视觉手册",deleteVisualManualBody:"确定要删除视觉手册「{name}」吗?",deleteVisualManualConfirm:"删除",deleteVisualManualCancel:"取消",enterProjectName:"请输入项目名称",enterProjectIntro:"请输入小说简介",enterProjectType:"请输入小说类型",enterArtStyle:"请选择项目视觉手册",enterVideoRatio:"请选择影片比例",enterImageModel:"请选择图片模型",enterVideoModel:"请选择视频模型",visualManualDeleted:"删除成功",selectMode:"请选择模式",deleteDirectorManualHeader:"删除导演手册",deleteDirectorManualBody:"确定要删除导演手册「{name}」吗?",directorManualUpdated:"导演手册已更新",directorManualAdded:"导演手册已添加",directorManual:"请选择项目导演手册"},type:{novel:"基于小说原文",script:"基于小说剧本"}},novel:{importText:"导入原文",batchDelete:"批量删除",eventAnalysis:"事件分析",searchPlaceholder:"搜索原文名称...",search:"搜索",generating:"生成中...",genFailed:"生成失败",none:"无",edit:"编辑",delete:"删除",col:{id:"序号",reel:"卷",chapter:"章节名称",chapterData:"章节内容",event:"事件",operation:"操作"},msg:{batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的 {count} 条数据吗?",batchDeleteSuccess:"批量删除成功",deleteHeader:"删除确认",deleteBody:"确定要删除章节名称为「{name}」的数据吗?",deleteSuccess:"删除成功",eventAnalysisHeader:"事件分析",eventAnalysisBody:"确定要对选中的 {count} 条数据进行事件分析吗?"},import:{title:"上传小说原文",step1:"第一步",step2:"第二步",step3:"第三步",dragUpload:"拖拽小说原文文件到此处或点击上传",uploadHint:"支持 .txt, .docx 格式,建议文件大小不超过 10MB",or:"或",pasteLabel:"直接粘贴小说原文内容",pastePlaceholder:"请输入小说原文内容",chars:"字符",tooShort:"内容过短,建议至少100字符",parsedChapters:"已解析 {count} 章节",nextStep:"下一步",prevStep:"上一步",selectedInfo:"已勾选:{count}字(小于200000字)",eventAnalysis:"事件分析",saveAndAnalyze:"保存原文并分析事件",col:{chapter:"章",reel:"卷",chapterName:"章节名称",chapterData:"章节内容"},msg:{parseFailed:"文件解析失败,请重新上传",selectFile:"选择文件",docNotSupported:".doc文件不支持解析,请转换为.ts文件",unsupportedType:"不支持的文件类型",fileTooLarge:"文件大小超过10MB,请上传更小的文件",selectChapters:"请先勾选章节",saveSuccess:"小说原文保存成功"},importAdd:"拖拽文件到此处或点击上传",limit:"支持 .ts格式"},editDialog:{title:"编辑小说原文",chapterName:"章节名称",chapterNamePh:"请输入章节名称",eventContent:"事件内容",eventContentPh:"输入事件内容",chapterContent:"章节内容",chapterContentPh:"请输入章节内容",cancel:"取消",save:"保存",msg:{updateSuccess:"小说原文更新成功"}},event:{regenerate:"重新生成事件",batchDelete:"批量删除",noData:"暂无事件数据,点击开始生成",generate:"生成事件",generatingHint:"事件生成中,请稍候...",loading:"加载中...",delete:"删除",col:{id:"事件ID",eventName:"事件名称",chapters:"来源章节",detail:"事件过程",createTime:"创建时间",operation:"操作"},msg:{deleteHeader:"删除事件",deleteBody:"确定要删除这个事件吗?",deleteSuccess:"删除成功",generateSuccess:"事件生成成功",batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的 {count} 条数据吗?",batchDeleteSuccess:"批量删除成功"}},analysis:{analyzeFirst:"请先分析事件",startAnalysis:"开始分析",chapterHeader:"第{index}章 - {name}",analyzing:"事件分析中"}},scriptAgent:{inputPlaceholder:"请输入内容",chapterEvents:"章节事件",clearMessageMemory:"清空消息记忆",clearSummaryMemory:"清空摘要记忆",clearAllMemory:"清空全部记忆",edit:"编辑",storySkeleton:"故事骨架",adaptationStrategy:"改编策略",script:"剧本",noContent:"暂无内容",relatedAssets:"关联资产",editScript:"编辑剧本",save:"保存",scriptTitle:"标题",titlePlaceholder:"请输入标题",content:"内容",contentPlaceholder:"请输入剧本内容",selectAssets:"选择资产",noAssets:"暂未关联资产",selectAssetsTitle:"选择关联资产",welcomeMsg:"你好!我是 Toonflow 智能助手,需要我开始为您生成剧本吗?",start:"开始",memoryType:{message:"消息记忆",summary:"摘要记忆",all:"全部记忆"},forceGenerate:{title:"是否强制生成",desc:"当前存在尚未完成事件分析的章节,是否仍然强制继续生成?",confirm:"强制生成",cancel:"取消"},msg:{clearConfirm:"确认清空",clearBody:"确定要清空{type}吗?此操作无法撤销。",confirmClear:"确认清空",cancel:"取消",memoryCleared:"{type}已清空",scriptUpdated:"剧本更新成功",scriptUpdateFailed:"更新剧本失败,请稍后再试",searchScriptFailed:"搜索剧本失败",updated:"保存成功",error:"保存失败",reconnect:"重新连接",notReconnect:"重新连接对话会被切断是否确认",keepReconnect:"确认",deleteConfirm:"删除确认",deleteBody:"删除正文",confirmDelete:"确认删除",scriptDeleted:"脚本已删除"},reconnect:"重新连接"},cornerScape:{batchSettings:"批量生成设置",quickActions:"快捷指令",selectUngenerated:"全选未生成项",selectGenerated:"全选已生成项",selectFailed:"全选错误项",invertSelection:"反选",clearSelection:"取消选择",batchPreview:"批预览图片",assetTypeFilter:"素材类型筛选",genModel:"生成模型",resolution:"分辨率",resolutionPh:"请选择分辨率",concurrency:"并发数量",concurrencyPh:"请输入并发数",startBatch:"开始批量生成图片",waitingGen:"等待生成",generating:"生成中",genFailed:"生成失败",imageError:"图片错误",typeRole:"角色",typeScene:"场景",typeTool:"工具",typeUnknown:"未知",descriptionSuffix:"描述:",operateScriptFirst:"请先操作剧本",individualConfig:"单独配置",noImage:"暂无图片",promptLabel:"提示词",promptPh:"请输入提示词",aiPolish:"AI 润色",regenerate:"重新生成",filterRole:"人物",filterScene:"场景",filterTool:"道具",unnamed:"未命名",noDescription:"无描述",msg:{selectModel:"请选择生成模型",selectResolution:"请选择分辨率",enterPrompt:"请输入提示词",enterPromptFirst:"请先输入提示词",genSuccess:"{name} 生成成功",genFailed:"{name} 生成失败",promptGenSuccess:"提示词生成成功",polishFailed:"润色失败,请重试",selectAtLeastOne:"请至少选择一个资产进行批量生成",batchStarted:"开始批量生成,共 {count} 个,并发数 {concurrent}",batchItemFailed:"{name} 生成失败:{error}",batchComplete:"批量生成完成",batchFailed:"批量生成失败",replaceFailed:"替换失败",replaceSuccess:"替换成功",emptyPrompt:"勾选的数据{emptyPromptNames}提示词为空,请先生成提示词",promptGenFail:"提示词生成失败",saveSuccess:"修改提示词成功",saveFailed:"提示词修改失败"},history:"历史图片",confirmReplace:"确认替换",batchGenerationPrompt:"批量生成提示词",generatingPrompt:"生成中",selectPromptEmpty:"全选提示词为空",noEmptyPrompt:"没有提示词为空的资产",selectedCount:"已选中{count}个资产"},script:{searchPlaceholder:"搜索剧本名称...",search:"搜索",addScript:"新建剧本",cancelSelectAll:"取消全选",selectAll:"全选",exportScript:"导出剧本",msg:{extracting:"资产提取中",extractFailed:"资产提取失败",extractingInProgress:"正在提取中",projectNotFound:"项目未找到",selectExport:"请选择导出剧本",deleteHeader:"确认删除",deleteBody:"确认要删除这个剧本吗?次操作无法复原",deleteConfirm:"删除",cancel:"取消",deleteSuccess:"删除成功",deleteFailed:"删除失败",selectDelScript:"请选择删除剧本",batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的{count}个剧本吗?此操作无法复原",batchDeleteSuccess:"批量删除成功",searchFailed:"搜索剧本失败",selectsExport:"请选择导出剧本"},add:{title:"新增剧本",scriptName:"剧本名称",scriptNamePh:"请输入剧本名称",uploadFile:"上传文件",dragUpload:"拖拽剧本文件到此处或点击上传",uploadHint:"支持 .txt, .docx 格式,建议文件大小不超过 10MB",scriptContent:"剧本内容",scriptContentPh:"请上传或输入剧本内容...",relatedAssets:"关联资产",selectAssets:"选择资产",noAssets:"暂未关联资产",cancel:"取消",confirm:"确认",msg:{fileReadFailed:"文件读取失败",docNotSupported:".doc文件不支持解析,请转换为.txt或.docx文件",unsupportedType:"不支持的文件类型",fileTooLarge:"文件大小超过10MB,请上传更小的文件",parsing:"文件解析中...",parseFailed:"文件解析失败,请重新上传",selectAssetsTitle:"选择关联资产",enterContent:"请上传或输入剧本内容",enterName:"请输入剧本名称",addSuccess:"剧本添加成功",addFailed:"添加剧本失败,请稍后再试"}},edit:{title:"剧本详情",scriptName:"剧本名称",scriptNamePh:"请输入剧本名称",scriptContent:"剧本内容",scriptContentPh:"请输入剧本内容...",relatedAssets:"关联资产",selectAssets:"选择资产",noAssets:"暂未关联资产",msg:{selectAssetsTitle:"选择关联资产",updateSuccess:"剧本更新成功",updateFailed:"更新剧本失败,请稍后再试"}},deleteScript:"批量删除剧本",extractAssets:"提取资产"},assets:{addPrefix:"新增",batchGenerate:"批量生成",generatePrompt:"生成提示词",generateImage:"生成图片",batchDelete:"批量删除",searchPlaceholder:"搜索资产名称...",search:"搜索",preview:"预览",generate:"生成",edit:"编辑",delete:"删除",generating:"生成中",play:"播放",mediaPreview:"媒体预览",confirmBatch:"是否确认{type}!",model:"模型",resolution:"分辨率",resolutionPh:"请选择分辨率",batchGenPrompt:"批量生成提示词",batchGenImage:"批量生成图片",role:"角色",prop:"道具",scene:"场景",clip:"素材",uploadSuccess:"上传成功",selectAtLeastOne:"请至少选择一个资产",noDescription:"无描述",promptGenSuccess:"「{name}」提示词生成成功",promptGenFail:"「{name}」提示词生成失败:{error}",selectModel:"请选择模型",selectResolution:"请选择分辨率",noPromptForImage:"「{name}」没有提示词,无法生成图片",imageGenSuccess:"「{name}」图片生成成功",imageGenFail:"「{name}」图片生成失败:{error}",confirmDeleteHeader:"确认删除",confirmBatchDeleteBody:"确定要批量删除这些资产吗?此操作无法撤销。",confirmDeleteBody:"确定要删除这资产吗?此操作无法撤销。",deleteBtn:"删除",cancelBtn:"取消",deleteSuccess:"资产删除成功",deleteFail:"资产删除失败",colPreview:"预览",colName:"名称",colPrompt:"提示词",colDescribe:"描述",colRemark:"备注",colCreateTime:"创建时间",colOperation:"操作",add:{name:"名称",namePh:"请输入名称",describe:"描述",describePh:"请输入描述",remark:"备注",remarkPh:"请输入备注",prompt:"提示词",promptPh:"请输入提示词",nameRequired:"请输入名称",describeRequired:"请输入详情",remarkRequired:"请输入备注",updateSuccess:"资产更新成功",addSuccess:"资产添加成功"},gen:{header:"图片生成",uploadRef:"上传参考图片",optional:"可选",promptLabel:"生图提示词",smartGenerate:"智能生成",generatingPrompt:"智能生成提示词中...",promptPlaceholder:"描述您想要生成的图片内容,例如:一个充满科技感的未来城市,霓虹灯闪烁,赛博朋克风格...",selectModel:"选择模型",selectResolution:"选择分辨率",generateBtn:"生成图片",resultTitle:"生成结果",generatedCount:"已生成 {count} 张,请选择一张",generatingLabel:"生成中...",genFailed:"生成失败",confirmSelect:"确认选择",promptSuccess:"提示词生成成功",promptFail:"提示词生成失败",fillPrompt:"请填写提示词",pickResolution:"请选择分辨率",pickModel:"请选择模型",unnamed:"未命名",assetGenSuccess:"资产生成成功",assetGenFail:"资产生成失败",uploadOk:"上传成功",imageSelected:"已选择该图片",imageDeleted:"已删除该图片",imageSaved:"图片已保存",completed:"已完成"},batch:{header:"批量生成",selected:"已选择 {count} 项",selectAll:"全选",clearSelection:"清空选择",inputPh:"请输入内容",saveSelected:"保存选中 ({count})",colPreviewImg:"预览图",selectToSave:"请选择要保存的项目",saveSuccess:"保存成功",saveFail:"保存失败,请重试",promptDone:"提示词生成完成",promptFail:"提示词生成失败",missingPrompts:"有 {count} 个资产缺少提示词,请先生成提示词",imageDone:"图片生成完成",imageGenFail:"图片生成失败",unknownError:"未知错误",promptGenCancelled:"已取消生成"}},production:{selectPlaceholder:"请选择剧集",edit:"编辑",node:{script:{title:"剧本",editDialog:"编辑剧本"},scriptPlan:{title:"导演计划",editDialog:"编辑导演计划"},storyboard:{title:"分镜面板",notGenerated:"未生成",scaleRatio:"缩放比例",gridPreview:"宫格预览",noPreviewImages:"暂无可预览的图片",imageLoadFailed:"图片加载失败",promptPlaceholder:"请输入提示词",prompt:"提示词",editInfo:"提示词修改"},storyboardTable:{title:"分镜表",editDialog:"编辑分镜表"},assets:{title:"衍生资产",generateFailed:"生成失败",notGenerated:"未生成",originalAsset:"原资产",derived:"衍生",noDerivedAssets:"无衍生资产"},poster:{title:"视频封面",coverCount:"{count} 张"},workbench:{title:"视频工作台"}},editImage:{upload:"上传",generate:"生成",saveFailed:"保存失败,请重试",fetchFailed:"获取数据失败",generating:"生成中...",deleteNode:"删除节点",ratio:"比例",quality:"质量",generateBtn:"生成图片",selectImage:"选择图片",imageGeneration:"图片生成",promptPlaceholder:"描述你想要生成的图片...",imageRef:"图{index}",videoRef:"视频{index}",audioRef:"音频{index}",reference:"参考{index}",noReferences:"暂无可引用的参考文件",selectModel:"请先选择模型",selectQuality:"请选择画质",selectRatio:"请选择比例",generateFailed:"生成失败",generateFirst:"请先生成图片",generatedResult:"生成结果",waitingGenerate:"等待生成",layoutLR:"自动排版-左右布局",layoutTB:"自动排版-上下布局",uploadAssetImage:"资产图片上传",uploadStoryboardImage:"分镜图片上传",uploadImage:"资产图片上传",mode:"模式",closeConfirmTitle:"是否关闭编辑面板?",closeConfirmBody:"关闭之后未保存的数据会丢失"},save:"选取",cancel:"取消",chatBox:{inputPlaceholder:"输入消息...",generateDerivedAssets:"生成衍生资产",welcomeMessage:"你好!我是你的 AI 助手,有什么可以帮你的吗?",adjustModel:"调整模型",startMakingVideo:"开始制作视频",startMakingVideoPrompt:"请帮我开始制作视频",clearMessageMemory:"清除消息记忆",clearSummaryMemory:"清除摘要记忆",clearAllMemory:"清除所有记忆",messageMemory:"消息记忆",summaryMemory:"摘要记忆",allMemory:"所有记忆",confirmClear:"清除记忆",confirmClearBody:"确定要清除{type}吗?",confirmClearBtn:"确定清除",memoryCleared:"{type}已清除"},wb:{quickPreview:"快速预览",videoGeneration:"分镜台",videoEditing:"剪辑台",hint:"提示",extractLines:"是否从视频中提取台词?",no:"否",confirm:"确定",extractLinesQuestion:"是否从视频中提取台词作为字幕?",importingLoading:"正在导入中,请稍候...",mainTrackVideo:"主轨道(视频)",subtitle1:"字幕1",storyboardVideoName:"分镜视频-{storyboard}.mp4"},preview:{noImage:"暂无图片",storyboardDesc:"分镜描述",serialNumber:"序号",noDescription:"暂无描述",duration:"时长",seconds:"秒",relatedAssets:"涉及资产",role:"角色",prop:"道具",scene:"场景",noCharacters:"暂无出场人物",imagePrompt:"图片提示词",selectAll:"全选",exportImage:"导出图片",sceneDescription:"画面描述",promptLabel:"提示词",restoreSort:"还原排序",restoreSortConfirm:"确定要还原为初始排序吗?",tip:"提示",selectAtLeastOne:"请至少选择一个分镜进行导出",exportFilename:"分镜图片"},generate:{noVideo:"暂无数据",videoPrompt:"视频提示词",promptPlaceholder:"输入提示词,描述你想要生成的视频内容...",refImage:"参考图",image:"图片",refVideo:"参考视频",refImageLabel:"参考图片",refAudio:"参考音频",muteAudio:"关闭音频",enableAudio:"开启音频",resolution:"分辨率",duration:"时长",generate:"生成",historyVersions:"历史版本",confirmSelection:"确认选中",noHistory:"暂无历史记录",generating:"生成中",generatingPrompt:"智能生成提示词中",generateFailed:"生成失败",selectAll:"全选",videoTrack:"视频轨道",batchGenerate:"批量生成",importToEditor:"导入剪辑台",modeSingleImage:"单图",modeMultiImage:"多图",modeGridImage:"网格多图",modeStartEnd:"首尾帧",modeText:"文生视频",modeVideoRef:"视频参考",modeImageRef:"图片参考",modeAudioRef:"音频参考",modeTextRef:"文本参考",startFrame:"首帧",startFrameOptional:"首帧(可选)",endFrame:"尾帧",endFrameOptional:"尾帧(可选)",selectRefImage:"选择参考图",selectRefImages:"选择参考图片",selectEndFrame:"选择尾帧图",selectRefVideoAsset:"选择参考视频",selectRefAudioAsset:"选择参考音频",selectRefImageAsset:"选择参考图片",selectImageSource:"选择图片来源",fromStoryboard:"分镜图",fromStoryboardDesc:"从分镜列表中选择图片",fromAssets:"资产图",fromAssetsDesc:"从资产库中选择图片",confirmDelete:"确认删除",confirmDeleteBody:"确定要删除这个视频吗?此操作无法撤销。",delete:"删除",cancel:"取消",deleteSuccess:"视频删除成功",deleteFailed:"删除失败",selectVideoFirst:"请先选择一个视频",confirmSuccess:"确认选中成功",batchSubmitted:"已提交批量生成请求,正在处理中...",configNotFound:"配置不存在",stateSuccess:"生成成功",statePending:"待生产",pollingFailed:"视频状态查询失败,请手动刷新",batchGeneratePrompt:"批量生成提示词",promptEmpty:"请先输入视频提示词",modelEmpty:"请先选择视频生成模型",batchPromptEmpty:"分镜 {names} 的视频提示词为空,请先生成或填写提示词",batchModelEmpty:"分镜 {names} 未配置视频生成模型,请先选择模型"},editVideo:{reset:"重置",undo:"撤销",redo:"重做",split:"分割",delete:"删除",rendering:"渲染中...",exportVideo:"导出视频",exportSuccess:"视频导出完成",exportFailed:"导出失败",sampleSubtitle:"示例字幕文本",customText:"自定义文本内容",transitionBetweenClips:"转场需要添加在两个相邻的 Clip 之间",transitionExists:"该位置已存在转场",videoPreviewArea:"视频预览区域",clipMaterials:"剪辑素材",propertyPanel:"属性面板",selectClip:"选择一个 Clip 查看属性",basicInfo:"基础信息",name:"名称",clipNamePlaceholder:"Clip 名称",startTime:"开始",endTime:"结束",totalDuration:"总时长",videoProperties:"视频属性",opacity:"不透明度",volume:"音量",playbackSpeed:"播放速度",audioProperties:"音频属性",fadeIn:"淡入",fadeOut:"淡出",transitionProperties:"转场属性",transitionType:"转场类型",transFade:"淡入淡出",transSlide:"滑动",transWipe:"擦除",transDissolve:"溶解",transZoom:"缩放",transRotate:"旋转",transitionDuration:"转场时长",subtitleProperties:"字幕属性",textContent:"文本内容",fontSize:"字体大小",copy:"复制",deleteConfirm:"删除确认",deleteClipConfirm:"确定要删除这个 Clip 吗?",avCanvasNotInit:"AVCanvas 尚未初始化",noExportContent:"没有可导出的内容",exportProject:"导出项目",transitionAdded:"已添加转场: {name}",splitClip:"分割片段",deleteClip:"删除片段",addClip:"添加 {name}",duplicateClip:"复制 Clip",addTransition:"添加转场",updateClip:"更新 Clip {key}",updatePlaybackRate:"更新播放倍速为 {rate}x",updateTransitionDuration:"更新转场时长",playbackRateRange:"播放倍速必须在 0.1 到 10 之间",updatePlaybackRateFailed:"更新播放倍速失败:",importProject:"导入项目",import:"导入"},clipType:{video:"视频",audio:"音频",subtitle:"字幕",transition:"转场",sticker:"贴纸",filter:"滤镜",effect:"特效"},track:{video:"视频",image:"图片",audio:"音频",subtitle:"字幕",text:"文本",sticker:"贴纸",filter:"滤镜",effect:"特效"},transition:{fade:"淡入淡出",slide:"滑动",slideLeft:"向左滑动",slideRight:"向右滑动",slideUp:"向上滑动",slideDown:"向下滑动",wipe:"擦除",wipeLeft:"向左擦除",wipeRight:"向右擦除",wipeUp:"向上擦除",wipeDown:"向下擦除",dissolve:"溶解",zoom:"缩放",zoomIn:"放大",zoomOut:"缩小",rotate:"旋转",circle:"圆形",diamond:"菱形",clock:"时钟",blur:"模糊"},media:{titleText:"标题文本",subtitleText:"字幕文本",customText:"自定义文本",media:"媒体",image:"图片",audio:"音频",subtitle:"字幕",transition:"转场",effect:"特效",filter:"滤镜",loading:"加载中...",subtitlePreview:"字",video:"视频"},effect:{fadeIn:"淡入",fadeOut:"淡出",flash:"闪烁",shake:"抖动",zoomIn:"放大进入",zoomOut:"缩小退出",pulse:"脉冲",rotateIn:"旋转进入",sticker1:"贴纸 1",sticker2:"贴纸 2"},filter:{grayscale:"黑白",sepia:"复古",warm:"暖色",cool:"冷色",vivid:"鲜艳",bright:"明亮",highContrast:"高对比",blur:"模糊",invert:"反色",semiTransparent:"半透明"},guideSwitchEpisode:"切换剧集",guideSwitchEpisodeBody:"切换剧集挪移到这里了哦",guideRefresh:"刷新数据",guideRefreshBody:"点击刷新按钮重新获取工作区数据",guideCanvasNav:"画布操作",guideCanvasNavBody:"滚轮上下平移画布,Ctrl + 滚轮缩放画布,按住鼠标左键拖拽自由平移",guideRightChat:"AI 对话",guideRightChatBody:"在右侧对话框中与 AI 交流,驱动自动化流程",guideLayoutBtn:"自动排版",guideLayoutBtnBody:"点击此按钮可自动整理节点布局",autoLayoutLR:"自动排版-左右布局",autoLayoutTB:"自动排版-上下布局",getFlowData:"刷新工作区",confirm:"切换剧集确认",confirmEpisodesSwitch:"当前任务仍在进行中,切换剧集会重连会话,是否继续切换?"},task:{title:"任务列表",subtitle:"您的最新任务执行记录",refresh:"刷新",categoryLabel:"任务大类:",stateLabel:"状态:",noFailReason:"暂无失败原因",stateAll:"全部",stateRunning:"进行中",stateCompleted:"已完成",stateFailed:"生成失败",fetchFailed:"获取任务列表失败",col:{taskClass:"任务大类",relatedObjects:"关联对象",model:"模型",describe:"描述",state:"状态",startTime:"时间",reason:"失败原因"},project:"项目名称:"},noVideo:"暂无视频",prompt:"视频提示词",generateText:"AI生成提示词",selectStoryboard:"选择分镜",generate:{noVideo:"暂无数据",prompt:"视频提示词",generateText:"AI生成提示词",selectStoryboard:"选择分镜",generate:"生成视频",history:"历史版本",generating:"生成中",generateFailed:"失败",selectAll:"全选",selected:"已选",batchGenerateText:"批量生成提示词",batchGenerateVideo:"批量生成视频",importVideo:"导入剪辑台",emptyTrack:"第{index}段",del:"删除",delConfirm:"确认删除该段?",selectSource:"选择来源",confirm:"从资产选择",cancel:"从分镜选择",generateSuccess:"视频生成成功",selectVideoFailed:"视频选择失败",selectVideoSuccess:"视频选择成功",selectTrackFirst:"请先选择分镜",noSelectedVideo:"没有选择的视频",generateConfirm:"确认生成",generateConfirmBody:"是否确认生成视频",generateVideosInBatches:"批量生成视频",generateStarted:"生成开始",promptEmpty:"勾选需要生成视频的数据有提示词为空,是否继续生成",skipDataWithEmptyVideoPromptWords:"需要生成的视频数据存在提示词为空",duration:"时长",resolution:"分辨率",delVideo:"确认删除此视频?",delSuccess:"删除成功",addReference:"添加参考",promptPlaceholder:"请输入视频提示词",downloadVideo:"批量下载视频",selectVideo:"请勾选需要下载的视频"}},zyi={slogan:"智能短剧创作平台",tips:"默认账号:admin / admin123",settings:"服务器设置",requestAddress:"请求地址",username:"用户名",password:"密码",login:"登录",usernameRequired:"请输入用户名",passwordRequired:"请输入密码",enterUsernameAndPassword:"请输入用户名或密码",loginSuccess:"登录成功",settingsSaved:"设置已保存"},Hyi={cancel:"取消",confirm:"确定",selectAssets:"选择资产",sessionExpired:"登录已过期,请重新登录",openSettings:"打开设置",cancelled:"已取消生成",defaultReel:"正文卷",save:"保存",submitting:"提交中",editSuccess:"修改成功",editFailed:"修改失败",submit:"提交"},$yi={prompt:"提示词"},Xyi={welcomeTitle:"欢迎使用 ToonFlow",welcomeDesc:"AI 驱动的漫画创作工作流平台,让我们花一分钟完成初始配置。",startConfig:"开始配置",skip:"跳过引导",configModel:"添加模型服务",configData:"配置 Agent",startUse:"开始使用",configModelTitle:"添加模型服务供应商",configModelDesc:"首先,你需要在设置中添加至少一个 AI 模型服务供应商(如 OpenAI、Claude 等),并填写对应的 API Key。",configModelTip:"点击下方按钮将打开设置页面的「模型服务」选项卡,添加供应商后回到此处继续。",configModelBtn:"前往配置模型服务",configAgentTitle:"分配 Agent 模型",configAgentDesc:"接下来,在 Agent 配置中为各个功能模块分配模型,这样系统才知道调用哪个模型来完成任务。",configAgentTip:"点击下方按钮将打开设置页面的「Agent 配置」选项卡,为各功能分配模型后回到此处。",configAgentBtn:"前往配置 Agent",finishTitle:"🎉 一切就绪!",finishDesc:"配置完成,现在你可以开始使用所有功能了。如需调整,随时可以在设置中修改。",qrcodeLabel:"加入微信交流群,获取更多帮助:",githubLabel:"如果觉得好用,请给我们一个 ⭐ Star 吧!",prevStep:"上一步",nextStep:"下一步",finish:"开始使用"},Gyi={skillManagement:{search:"搜索文件名",empty:"没有匹配的文件",edit:"编辑",selectOnTheLeft:"请从左侧选择文件"}},Yyi={assetsNotExists:"资产不存在",assets:{notExist:"资产不存在",notDerivativeExist:"衍生资产不存在",derivativeUpdateSuccess:"更新成功",derivativeState:"未生成",derivativeAddSuccess:"添加成功",derivativeDelSuccess:"删除成功",notGenerated:"未生成"},addSuccess:"更新成功",state:{unused:"未生成"},saveSuccess:"添加成功"},Zyi={generating:"生成中"},qyi={scanning:"🔍 正在解析加载Skill",scanComplete:"✨ Skill 扫描完成",inserted:"✅ 新增{count}个Skill",updated:"🔄 更新{count}个Skill",removed:"🗑️ 移除{count}个Skill",scannedFiles:"📁 扫描 {count} 个文件",noDescription:"📝 {count}个Skill缺少描述",noAttribution:"👤 {count}个Skill缺少归属",configWarning:"⚠️ Skill 配置警告",openSettings:"打开设置",scanFailed:"❌ 扫描失败",checkNetwork:"🔌 请检查网络连接或稍后重试",retryLater:"🔁 请稍后重试"},Kyi="生成视频",Jyi="历史版本",eCi="生成中",tCi="失败",nCi="全选",iCi="已选 ",rCi="导入视频",oCi="123",sCi="确认删除",aCi="确认删除该段?",lCi="选择来源",cCi="从资产选择",dCi="从分镜选择",uCi={newVersion:"有新版本,是否更新?"},hCi={components:jyi,settings:Wyi,workbench:Vyi,login:zyi,common:Hyi,"workbench.project.msg.enterProjectQuality":"请选择图片质量",promptManage:$yi,"workbench.production.node.storyboard.batchGenerateImage":"重新生成","workbench.production.node.storyboard.batchGenerateFailed":"生成失败","workbench.production.node.storyboard.batchGenerateSuccess":"开始生成分镜","workbench.production.node.storyboard.removeFailed":"删除分镜失败","workbench.production.node.storyboard.editNode":"编辑","workbench.production.node.storyboard.deleteNode":"删除","workbench.production.node.storyboard.confirmDeleteBody":"确认是否删除该分镜",hello:Xyi,setting:Gyi,storyboard:Yyi,productionAgent:Zyi,skillScan:qyi,generate:Kyi,history:Jyi,generating:eCi,generateFailed:tCi,selectAll:nCi,selected:iCi,importVideo:rCi,emptyTrack:oCi,del:sCi,delConfirm:aCi,selectSource:lCi,confirm:cCi,cancel:dCi,"workbench.script.msg.waitExtract":"等待提取","workbench.script.msg.exportSuccess":"导出成功","workbench.script.msg.exportFailed":"导出失败","workbench.production.node.storyboard.videoDescPlaceholder":"请输入视频描述","workbench.production.node.storyboard.videoDesc":"视频描述","workbench.production.node.assets.confirmDeleteBody":"确认是否删除该资产","workbench.production.node.assets.removeFailed":"删除资产失败",version:uCi,"workbench.production.generatedNode.localUpload":"本地上传","workbench.production.editImage.uploadFailed":"图片上传失败","workbench.production.editImage.noImage":"请先添加图片"},fCi={editMdPreivew:{title:"編輯",confirm:"儲存",cancel:"取消"},imageTools:{copy:"複製圖片",preview:"預覽",download:"下載",msg:{imageLoadFailed:"圖片載入失敗",convertFailed:"轉換失敗",copied:"已複製到剪貼簿",copyFailed:"複製失敗",downloadFailed:"下載失敗",downloadStarted:"開始下載",downloadBlockedOpenNewWindow:"目前的圖片來源可能限制下載,已嘗試在新視窗開啟"}},migrateShow:{title:"轉移資料",desc:"偵測到您有舊版本的資料,是否需要轉移?",hide:"不再顯示",confirm:"確定",msg:{migrateSuccess:"資料轉移成功",migrateFailed:"資料轉移失敗"}},modelSelect:{placeholder:"請選擇模型",type:{image:"圖片",text:"文字",video:"影片"},msg:{fetchModelFailed:"取得模型資料失敗:"},goSetting:"去設定中加入模型"},update:{title:"發現新版本",currentVersion:"目前版本:",latestVersion:"最新版本:",tip:"發現新版本,建議您更新以獲得更好的體驗",later:"稍後提醒",updateNow:"立即更新"}},gCi={title:"ToonFlow 設定",menu:{language:"語言設定",vendorConfig:"模型服務",agentConfig:"Agent 設定",promptManage:"提示詞管理",skillManagement:"Skills技能管理",memoryConfig:"Agent 記憶設定",loginConfig:"登入設定",dbConfig:"資料庫操作",fileManagement:"檔案管理",otherConfig:"其他設定",requestConfig:"請求網址",about:"檢查更新",logoutConfig:"登出",skillsSkillsManagement:"Skills技能管理"},language:{desc:"選擇介面顯示語言",msg:{saved:"語言設定已儲存"}},vendor:{addVendor:"新增供應商",noVendor:"暫無供應商,請先新增",required:"必填",optionalSection:"選填項目",modelSettings:"模型設定",addManually:"手動新增",test:"測試",edit:"編輯",delete:"刪除",deleteVendor:"刪除供應商",editCode:"編輯程式碼",updateConfig:"更新設定",addModel:"新增模型",editModel:"編輯模型",displayName:"顯示名稱",displayNamePlaceholder:"例如:GPT-4o",modelId:"模型 ID",modelIdPlaceholder:"例如:gpt-4o",modelType:"模型類型",multimodal:"多模態",supported:"支援",notSupported:"不支援",toolCall:"工具呼叫",imageMode:"圖片模式",videoMode:"影片模式",audioOutput:"音訊輸出",durationResolution:"時長 / 解析度對應",durationSec:"時長(秒)",resolution:"解析度",enterAndPress:"輸入後按下 Enter",addDurationResolution:"新增一組時長 / 解析度",testResult:"測試結果",generating:"正在生成中...",addVendorDialog:"新增供應商",codeEditorInfo:"請撰寫 TypeScript 程式碼設定供應商資訊",reset:"重設",importFile:"匯入檔案",textModel:"文字模型",imageModel:"圖片模型",videoModel:"影片模型",textToImage:"文字生成圖片",textToVideo:"文字生成影片",singleImage:"單圖",multiImage:"多圖模式",multiReference:"多圖參考",gridImage:"網格單圖",startEndRequired:"首尾影格(兩張必填)",endFrameOptional:"首尾影格(尾影格選填)",startFrameOptional:"首尾影格(首影格選填)",textRef:"文字",imageRef:"圖片",videoRef:"影片",audioRef:"音訊",audioOptional:"選填",audioOnly:"僅輸出有聲影片",noAudio:"僅輸出無聲影片",msg:{getVendorListFailed:"取得供應商列表失敗",vendorConfigUpdated:"供應商設定已更新",updateFailed:"更新失敗",highRiskConfirm:"⚠️ 高風險操作確認",addVendorRiskBody:"新增的 AI 供應商將賦予其存取系統 API 的權限,請確認您信任該供應商的程式碼來源!",iKnowRisk:"我了解風險",cancel:"取消",confirmAgain:"⚠️ 再次確認",addVendorConfirmBody:"確定要新增該供應商嗎?新增後它將參與系統的模型排程。",confirmAndAdd:"確認並新增",goBackCheck:"返回檢查",vendorAdded:"供應商已成功新增",addFailed:"新增失敗",updateVendorRiskBody:"更新 AI 供應商設定將修改其存取系統 API 的權限和行為,請確認您信任修改後的程式碼來源!",updateVendorConfirmBody:"確定要更新該供應商設定嗎?更新後將影響系統的模型排程。",confirmAndUpdate:"確認並更新",updateSuccess:"供應商設定更新成功",fillDisplayName:"請填寫顯示名稱",fillModelId:"請填寫模型 ID",selectImageMode:"請選擇圖片模式",selectVideoMode:"請選擇影片模式",groupPrefix:"第 {n} 組:",addDuration:"請新增時長",addResolution:"請新增解析度",selectVendorFirst:"請先選擇供應商",modelIdExists:"模型 ID 已存在",modelAdded:"模型已成功新增",modelUpdated:"模型已成功更新",enterApiKey:"請填寫 API KEY",enterApiUrl:"請填寫 API URL",testSuccess:"測試成功",imageGenSuccess:"圖片生成成功",videoGenSuccess:"影片生成成功",requestFailed:"請求失敗",deleteModelConfirm:"確認刪除模型",deleteModelBody:"刪除後不可恢復,是否繼續?",confirmDelete:"確認刪除",modelDeleted:"模型已刪除",deleteVendorConfirm:"確認刪除供應商",deleteVendorBody:"刪除後該供應商下所有模型將一併刪除,是否繼續?",vendorDeleted:"供應商已刪除",deleteFailed:"刪除失敗",enabled:"已啟用",disabled:"已停用",linkAddVendorRiskBody:"新增新的 AI 供應商將賦予其存取系統 ​​API 的權限,請確認您信任該供應商的連結來源!",importAdd:"新增新的 AI 供應商將賦予其存取系統 ​​API 的權限,請確認您信任該供應商的文件來源!",linkAddFailed:"連結新增失敗"},associationSkills:"關聯skills",think:"深度思考",code:"程式碼",linkAddPlaceholder:"輸入連結添加",noFileSelected:"成功導入文件",linkAdd:"確認"},agent:{bannerDesc:"使用 Toonflow 官方中繼網站,支援一鍵帶入設定,開箱即用,無需手動設定。",visitWebsite:"進入網站",fillKey:"填入 KEY",oneClickFill:"一鍵帶入",notOpen:"尚未開放",notConfigured:"尚未設定",modelConfig:"模型設定",confirm:"確認",cancel:"取消",selectModel:"選擇模型",fillKeyHeader:"填入 Toonflow 平台的官方 KEY",keyPlaceholder:"請輸入 KEY",save:"儲存",msg:{notAvailable:"該功能暫未開放,敬請期待",configSuccess:"設定成功",updateConfigFailed:"更新設定失敗:",keyValid:"KEY 有效,已成功連接 Toonflow 平台",keyInvalid:"KEY 無效,請檢查後重新輸入:",enterKey:"請輸入 KEY",saveFailed:"儲存失敗:",getAgentListFailed:"取得 Agent 設定列表失敗:"}},memory:{warning:"以下設定項目已預設為推薦值。除非您清楚了解各項設定的含義及影響,否則建議維持現有設定",vectorModelConfig:"向量模型設定",modelFilePath:"模型檔案路徑",quantizationType:"量化類型",quantizationPlaceholder:"請輸入量化類型",memoryParams:"記憶參數",messagesPerSummary:"觸發訊息壓縮筆數",messagesPerSummaryHelp:"保留最近 N 筆對話上下文。",shortTermLimit:"單次取得未壓縮訊息筆數",shortTermLimitHelp:"檢索時回傳的候選記憶筆數。",summaryMaxLength:"壓縮最大字元數",summaryMaxLengthHelp:"訊息壓縮時允許的最大字元數",summaryLimit:"允許查詢已壓縮訊息筆數",summaryLimitHelp:"允許查詢已壓縮訊息筆數",ragLimit:"搜尋記憶筆數",ragLimitHelp:"檢索時取得的訊息數。",deepRetrieveSummaryLimit:"向量召回壓縮訊息數",deepRetrieveSummaryLimitHelp:"檢索壓縮訊息內容時取得的訊息數。",saveConfig:"儲存設定",clearMemory:"清除記憶",restoreDefault:"還原預設設定",msg:{saved:"記憶設定已儲存",clearConfirmTitle:"確認清除記憶",clearConfirmBody:"該操作會清除 AI 全域記憶資料,且不可復原,是否繼續?",confirmClear:"確認清除",cancel:"取消",cleared:"記憶已清除",clearFailed:"清除記憶失敗"}},login:{username:"使用者名稱",usernamePlaceholder:"請輸入使用者名稱",password:"密碼",passwordPlaceholder:"請輸入密碼",modify:"修改",msg:{enterUsername:"請輸入使用者名稱",usernameLength:"使用者名稱長度為 2-20 個字元",enterPassword:"請輸入密碼",passwordLength:"密碼長度為 6-20 個字元",fetchFailed:"取得使用者資訊失敗",saveSuccess:"儲存成功",saveFailed:"儲存失敗"}},db:{clearDb:"清除資料庫",clearDbDesc:"清除所有資料表中的資料,保留資料表結構",clearData:"清除資料",confirmAction:"確認操作",msg:{clearDbTitle:"清除資料庫",firstConfirm:"確定要清除所有資料表嗎?資料清除後無法復原!",secondConfirm:"這是最後一次確認,清除後所有資料將永久遺失!",keyword:"清除",confirm:"確認",pleaseInput:"請輸入",cleared:"所有資料表已清除",operationFailed:"操作失敗,請重試",cancelled:"操作已取消"}},other:{requestTimeout:"請求逾時時間",seconds:"秒",inputSeconds:"請輸入秒",assetConcurrency:"資產生成並發數",count:"個",inputCount:"請輸入個數",chapterRegex:"章節拆分正規表示式",restoreDefault:"還原預設",regexPlaceholder:"請輸入正規表示式",canvasScroll:"畫布滾動",canvasIsDisabled:"畫布縮放",agentCanvasScalingMethod:"生產頁無限畫布滾輪操作",zoom:"縮放",scroll:"捲動",isInteracting:"生產頁無限畫布拖曳性能優化",closeIsInteracting:"關閉"},request:{warning:"若非特殊情況,不需要修改或者設定",apiAddress:"API 網址",apiPlaceholder:"請輸入 API 請求網址",save:"儲存",reset:"重設",msg:{enterApi:"請輸入 API 網址",validUrl:"請輸入有效的 HTTP/HTTPS 網址",saved:"請求網址儲存成功",reset:"已重設為預設網址",refreshFailed:"刷新失敗",refreshSuccess:"刷新成功"},refresh:"重新整理"},about:{slogan:"開源的 AI 驅動漫畫 / 分鏡創作工具",latestVersion:"目前為最新版本",checkUpdate:"檢查更新",codeRepository:"程式碼儲存庫",githubRepo:"GitHub 儲存庫",giteeRepo:"Gitee 儲存庫",versionUpdate:"版本更新",checkUpdateGithub:"檢查更新(GitHub)",getFromGithub:"從 GitHub Release 取得最新版本",checkUpdateGitee:"檢查更新(Gitee)",getFromGitee:"從 Gitee Release 取得最新版本",license:"授權條款",licenseDesc:"開源授權條款·點擊查看詳情",updateAvailable:"發現新版本",upToDate:"偵測到新版本"},logout:{warning:"登出後,您需要重新登入才能繼續使用系統。",confirmLogout:"確定要登出嗎?",logout:"登出",msg:{logoutSuccess:"登出成功",logoutFailed:"登出失敗,請重試"}},file:{quickOpen:"快速開啟目錄",open:"開啟",dockerDesc:'Docker/前後端分離部署請前往 "/data/*" 目錄手動管理檔案。',desktopOnly:"該功能僅支援桌面版",folders:{data:"data",dataDesc:"資料目錄。",logs:"data/logs",logsDesc:"執行記錄與錯誤記錄。",oss:"data/oss",ossDesc:"檔案儲存相關資源。",skills:"data/skills",skillsDesc:"技能與提示設定檔。",models:"data/models",modelsDesc:"模型檔案與設定。",web:"data/web",webDesc:"Web 相關資源,如前端建置產物等。",serve:"data/serve",serveDesc:"後端服務相關檔案。"},openFailed:"開啟資料夾失敗"},skill:{scanSkills:"掃描Skills"},dev:{warning:"以下為開發者工具,謹慎操作!",openDevtool:"打開",devtoolsDoc:"文件地址",devtoolsDesc:"開啟後會在Toonflow安裝目錄建立.devtools資料夾,請確保Toonflow有寫入權限(管理員身分執行)。",openDevtoolFailed:"開啟開發者工具失敗,請確保已安裝Toonflow桌面端",notInElectron:"WEB環境請手動開啟瀏覽器控制台"}},mCi={selectProject:"請選擇專案",menu:{myProject:"我的專案",taskCenter:"任務中心",novel:"小說原文",scriptAgent:"劇本 Agent",scriptManage:"劇本管理",cornerScape:"塑造角色與場景",production:"影片製作",assetCenter:"資產中心",settings:"設定",jumpGithub:"跳轉Github",feedbackQuestions:"回饋問題"},project:{title:"我的專案",subtitle:"管理您的所有短劇專案",newProject:"建立專案",dialog:{editTitle:"編輯專案",addTitle:"建立專案",save:"儲存",ok:"確定",cancel:"取消",projectType:"專案類型",selectType:"選擇專案類型",basedOnNovel:"基於小說原文",basedOnScript:"基於劇本",projectName:"專案名稱",projectNamePh:"請輸入專案名稱",novelType:"小說類型",novelTypePh:"例如:玄幻、科幻、言情",artStyle:"視覺手冊",selected:"已選:",selectArtStyle:"請選擇視覺手冊",newArtStyle:"新視覺手冊",loading:"載入中...",videoRatio:"影片比例",novelIntro:"小說簡介",novelIntroPh:"請輸入小說簡介",editArtStyleTitle:"編輯視覺手冊",newArtStyleTitle:"新視覺手冊",artStyleName:"視覺手冊名稱",artStyleNamePh:"請輸入視覺手冊名稱",artStyleImage:"視覺手冊封面",remove:"移除",uploadCover:"上傳封面",artStylePrompt:"視覺手冊提示詞",aiExtract:"AI 萃取提示詞",promptPlaceholder:"描述視覺手冊提示詞,用於產生圖片時指定視覺手冊",visualManual:"視覺手冊",newVisualManual:"新視覺手冊",editVisualManualTitle:"編輯視覺手冊",newVisualManualTitle:"新視覺手冊",visualManualName:"視覺手冊名稱",visualManualNamePh:"請輸入視覺手冊名稱",visualManualCover:"視覺手冊封面",visualManualPrompt:"視覺手冊提示詞",modelData:"選擇圖片模型",videoModelData:"選擇視訊模型",prompt:{placeholder:"輸入提示詞",saveSuccess:"更新成功",title:"提示詞"},mdFile:"視覺手冊文件",directorManual:"導演手冊",addDirectorManual:"新導演手冊",editingDirectorManual:"編輯導演手冊",newDirecorManualTitle:"新導演手冊",directorManualPrompt:"導演手冊提示詞",directorManualName:"導演手冊名稱",directorFile:"導演手冊文件",directorManualCover:"導演手冊封面"},msg:{fetchFailed:"取得專案列表失敗",notFound:"找不到該專案!",editSuccess:"編輯專案成功",editFailed:"編輯專案失敗",addSuccess:"新增專案成功",addFailed:"新增專案失敗",deleteHeader:"刪除專案",deleteBody:"確定要刪除該專案嗎?",deleteConfirm:"刪除",deleteCancel:"取消",deleteSuccess:"刪除專案成功",deleteFailed:"刪除專案失敗",extractSuccess:"提示詞萃取成功",extractFailed:"萃取失敗",enterArtStyleName:"請輸入視覺手冊名稱",artStyleUpdated:"視覺手冊已更新",artStyleAdded:"視覺手冊已添加",operationFailed:"操作失敗",enterVisualManualName:"請輸入視覺手冊名稱",enterVisualManualImage:"請上傳視覺手冊封面圖片",enterVisualManualTabData:"提示詞不能為空",visualManualUpdated:"視覺手冊已更新",visualManualAdded:"視覺手冊已添加",deleteVisualManualHeader:"刪除視覺手冊",deleteVisualManualBody:"確定要刪除視覺手冊「{name}」嗎?",deleteVisualManualConfirm:"刪除",deleteVisualManualCancel:"取消",emptyFields:"參數缺失",enterProjectName:"請輸入項目名稱",enterProjectIntro:"請輸入小說簡介",enterProjectType:"請輸入項目類型",enterArtStyle:"請選擇項目視覺手冊",enterVideoRatio:"請選擇影片比例",enterImageModel:"請選擇圖片模型",enterVideoModel:"請選擇視訊模型",visualManualDeleted:"刪除成功",selectMode:"請選擇模式",deleteDirectorManualHeader:"刪除導演手冊",deleteDirectorManualBody:"確定要刪除導演手冊「{name}」嗎?",directorManualUpdated:"導演手冊已更新",directorManualAdded:"導演手冊已添加",directorManual:"請選擇項目導演手冊"},type:{novel:"基於小說原文",script:"基於小說劇本"}},novel:{importText:"匯入原文",batchDelete:"批次刪除",eventAnalysis:"事件分析",searchPlaceholder:"搜尋原文名稱...",search:"搜尋",generating:"生成中...",genFailed:"生成失敗",none:"無",edit:"編輯",delete:"刪除",col:{id:"序號",reel:"卷",chapter:"章節名稱",chapterData:"章節內容",event:"事件",operation:"操作"},msg:{batchDeleteHeader:"批次刪除",batchDeleteBody:"確定要刪除選定的 {count} 筆資料嗎?",batchDeleteSuccess:"批次刪除成功",deleteHeader:"刪除確認",deleteBody:"確定要刪除章節名稱為「{name}」的資料嗎?",deleteSuccess:"刪除成功",eventAnalysisHeader:"事件分析",eventAnalysisBody:"確定要對選定的 {count} 筆資料進行事件分析嗎?"},import:{title:"上傳小說原文",step1:"第一步",step2:"第二步",step3:"第三步",dragUpload:"拖曳小說原文檔案到此處或點擊上傳",uploadHint:"支援 .txt, .docx 格式,建議檔案大小不超過 10MB",or:"或",pasteLabel:"直接貼上小說原文內容",pastePlaceholder:"請輸入小說原文內容",chars:"字元",tooShort:"內容過短,建議至少 100 字元",parsedChapters:"已解析 {count} 章節",nextStep:"下一步",prevStep:"上一步",selectedInfo:"已勾選:{count} 字 (小於 200000 字)",eventAnalysis:"事件分析",saveAndAnalyze:"儲存原文並分析事件",col:{chapter:"章",reel:"卷",chapterName:"章節名稱",chapterData:"章節內容"},msg:{parseFailed:"檔案解析失敗,請重新上傳",selectFile:"選擇文件",docNotSupported:".doc檔案不支援解析,請轉換為.ts文件",unsupportedType:"不支援的檔案類型",fileTooLarge:"檔案大小超過 10MB,請上傳更小的檔案",selectChapters:"請先勾選章節",saveSuccess:"小說原文儲存成功"},importAdd:"拖曳文件到此處或點擊上傳",limit:"支援 .ts格式"},editDialog:{title:"編輯小說原文",chapterName:"章節名稱",chapterNamePh:"請輸入章節名稱",eventContent:"事件內容",eventContentPh:"輸入事件內容",chapterContent:"章節內容",chapterContentPh:"請輸入章節內容",cancel:"取消",save:"儲存",msg:{updateSuccess:"小說原文更新成功"}},event:{regenerate:"重新生成事件",batchDelete:"批次刪除",noData:"暫無事件資料,點擊開始生成",generate:"生成事件",generatingHint:"事件生成中,請稍候...",loading:"載入中...",delete:"刪除",col:{id:"事件 ID",eventName:"事件名稱",chapters:"來源章節",detail:"事件過程",createTime:"建立時間",operation:"操作"},msg:{deleteHeader:"刪除事件",deleteBody:"確定要刪除這個事件嗎?",deleteSuccess:"刪除成功",generateSuccess:"事件生成成功",batchDeleteHeader:"批次刪除",batchDeleteBody:"確定要刪除選定的 {count} 筆資料嗎?",batchDeleteSuccess:"批次刪除成功"}},analysis:{analyzeFirst:"請先分析事件",startAnalysis:"開始分析",chapterHeader:"第{index}章 - {name}",analyzing:"事件分析中"}},scriptAgent:{inputPlaceholder:"請輸入內容",chapterEvents:"章節事件",clearMessageMemory:"清除訊息記憶",clearSummaryMemory:"清除摘要記憶",clearAllMemory:"清除全部記憶",edit:"編輯",storySkeleton:"故事骨架",adaptationStrategy:"改編策略",script:"劇本",noContent:"暫無內容",relatedAssets:"關聯資產",editScript:"編輯劇本",save:"儲存",scriptTitle:"標題",titlePlaceholder:"請輸入標題",content:"內容",contentPlaceholder:"請輸入劇本內容",selectAssets:"選擇資產",noAssets:"暫未關聯資產",selectAssetsTitle:"選擇關聯資產",welcomeMsg:"你好!我是 Toonflow 智慧助手,需要我開始為您生成劇本嗎?",start:"開始",memoryType:{message:"訊息記憶",summary:"摘要記憶",all:"全部記憶"},msg:{clearConfirm:"確認清除",clearBody:"確定要清除{type}嗎?此操作無法復原。",confirmClear:"確認清除",cancel:"取消",memoryCleared:"{type}已清除",scriptUpdated:"劇本更新成功",scriptUpdateFailed:"更新劇本失敗,請稍後再試",searchScriptFailed:"搜尋劇本失敗",updated:"保存成功",error:"保存失敗",reconnect:"重新連接",notReconnect:"重新連結對話會被切斷是否確認",keepReconnect:"確認",deleteConfirm:"刪除確認",deleteBody:"刪除正文",confirmDelete:"確認刪除",scriptDeleted:"腳本已刪除"},reconnect:"重新連接"},cornerScape:{batchSettings:"批次生成設定",quickActions:"捷徑指令",selectUngenerated:"全選未生成項目",selectGenerated:"全選已生成項目",selectFailed:"全選錯誤項目",invertSelection:"反選",clearSelection:"取消選擇",batchPreview:"批次預覽圖片",assetTypeFilter:"素材類型篩選",genModel:"生成模型",resolution:"解析度",resolutionPh:"請選擇解析度",concurrency:"並發數量",concurrencyPh:"請輸入並發數",startBatch:"開始批量生成圖片",waitingGen:"等待生成",generating:"生成中",genFailed:"生成失敗",imageError:"圖片錯誤",typeRole:"角色",typeScene:"場景",typeTool:"工具",typeUnknown:"未知",descriptionSuffix:"描述:",operateScriptFirst:"請先操作劇本",individualConfig:"獨立設定",noImage:"暫無圖片",promptLabel:"提示詞",promptPh:"請輸入提示詞",aiPolish:"AI 潤飾",regenerate:"重新生成",filterRole:"人物",filterScene:"場景",filterTool:"道具",unnamed:"未命名",noDescription:"無描述",msg:{selectModel:"請選擇生成模型",selectResolution:"請選擇解析度",enterPrompt:"請輸入提示詞",enterPromptFirst:"請先輸入提示詞",genSuccess:"{name} 生成成功",genFailed:"{name} 生成失敗",promptGenSuccess:"提示詞生成成功",polishFailed:"潤飾失敗,請重試",selectAtLeastOne:"請至少選擇一個資產進行批次生成",batchStarted:"開始批次生成,共 {count} 個,並發數 {concurrent}",batchItemFailed:"{name} 生成失敗:{error}",batchComplete:"批次生成完成",batchFailed:"批量生成失敗",replaceFailed:"替換失敗",replaceSuccess:"替換成功",promptGenFail:"提示詞生成失敗",saveSuccess:"修改提示詞成功",saveFailed:"提示詞修改失敗"},history:"歷史圖片",confirmReplace:"確認替換",batchGenerationPrompt:"大量生成提示詞",generatingPrompt:"生成中",selectPromptEmpty:"全選提示詞為空",noEmptyPrompt:"沒有提示詞為空的資產",selectedCount:"已選取{count}個資產"},script:{searchPlaceholder:"搜尋劇本名稱...",search:"搜尋",addScript:"建立劇本",cancelSelectAll:"取消全選",selectAll:"全選",exportScript:"匯出劇本",msg:{searchFailed:"搜尋劇本失敗",selectExport:"請先選擇要匯出的劇本",exportSuccess:"匯出成功",exportFailed:"匯出劇本失敗",deleteHeader:"確認刪除",deleteBody:"確定要刪除這個劇本嗎?此操作無法復原。",deleteConfirm:"刪除",cancel:"取消",deleteSuccess:"刪除成功",deleteFailed:"刪除失敗",selectDelScript:"請選擇刪除劇本",batchDeleteHeader:"批量刪除",batchDeleteBody:"確定要刪除選中的 {count} 個劇本嗎?此操作無法復原。",batchDeleteSuccess:"批量刪除成功",extractingInProgress:"正在提取中",projectNotFound:"項目未找到",selectsExport:"請選擇匯出劇本"},add:{title:"新增劇本",scriptName:"劇本名稱",scriptNamePh:"請輸入劇本名稱",uploadFile:"上傳檔案",dragUpload:"拖曳劇本檔案到此處或點擊上傳",uploadHint:"支援 .txt, .docx 格式,建議檔案大小不超過 10MB",scriptContent:"劇本內容",scriptContentPh:"請上傳或輸入劇本內容...",relatedAssets:"關聯資產",selectAssets:"選擇資產",noAssets:"暫未關聯資產",cancel:"取消",confirm:"確認",msg:{fileReadFailed:"檔案讀取失敗",docNotSupported:".doc 檔案不支援解析,請轉換為 .txt 或 .docx 檔案",unsupportedType:"不支援的檔案類型",fileTooLarge:"檔案大小超過 10MB,請上傳更小的檔案",parsing:"檔案解析中...",parseFailed:"檔案解析失敗,請重新上傳",selectAssetsTitle:"選擇關聯資產",enterContent:"請上傳或輸入劇本內容",enterName:"請輸入劇本名稱",addSuccess:"劇本新增成功",addFailed:"新增劇本失敗,請稍後再試"}},edit:{title:"劇本詳情",scriptName:"劇本名稱",scriptNamePh:"請輸入劇本名稱",scriptContent:"劇本內容",scriptContentPh:"請輸入劇本內容...",relatedAssets:"關聯資產",selectAssets:"選擇資產",noAssets:"暫未關聯資產",msg:{selectAssetsTitle:"選擇關聯資產",updateSuccess:"劇本更新成功",updateFailed:"更新劇本失敗,請稍後再試"}},deleteScript:"大量刪除劇本",extractAssets:""},assets:{addPrefix:"新增",batchGenerate:"批次生成",generatePrompt:"生成提示詞",generateImage:"生成圖片",batchDelete:"批次刪除",searchPlaceholder:"搜尋資產名稱...",search:"搜尋",preview:"預覽",generate:"生成",edit:"編輯",delete:"刪除",generating:"生成中",play:"播放",mediaPreview:"媒體預覽",confirmBatch:"是否確認{type}!",model:"模型",resolution:"解析度",resolutionPh:"請選擇解析度",batchGenPrompt:"批次生成提示詞",batchGenImage:"批次生成圖片",role:"角色",prop:"道具",scene:"場景",clip:"素材",uploadSuccess:"上傳成功",selectAtLeastOne:"請至少選擇一個資產",noDescription:"無描述",promptGenSuccess:"「{name}」提示詞生成成功",promptGenFail:"「{name}」提示詞生成失敗:{error}",selectModel:"請選擇模型",selectResolution:"請選擇解析度",noPromptForImage:"「{name}」沒有提示詞,無法生成圖片",imageGenSuccess:"「{name}」圖片生成成功",imageGenFail:"「{name}」圖片生成失敗:{error}",confirmDeleteHeader:"確認刪除",confirmBatchDeleteBody:"確定要批次刪除這些資產嗎?此操作無法復原。",confirmDeleteBody:"確定要刪除這個資產嗎?此操作無法復原。",deleteBtn:"刪除",cancelBtn:"取消",deleteSuccess:"資產刪除成功",deleteFail:"資產刪除失敗",colPreview:"預覽",colName:"名稱",colPrompt:"提示詞",colDescribe:"描述",colRemark:"備註",colCreateTime:"建立時間",colOperation:"操作",add:{name:"名稱",namePh:"請輸入名稱",describe:"描述",describePh:"請輸入描述",remark:"備註",remarkPh:"請輸入備註",prompt:"提示詞",promptPh:"請輸入提示詞",nameRequired:"請輸入名稱",describeRequired:"請輸入詳情",remarkRequired:"請輸入備註",updateSuccess:"資產更新成功",addSuccess:"資產新增成功"},gen:{header:"圖片生成",uploadRef:"上傳參考圖片",optional:"選填",promptLabel:"生圖提示詞",smartGenerate:"智能生成",generatingPrompt:"智能生成提示詞中...",promptPlaceholder:"描述您想要生成的圖片內容,例如:一個充滿科技感的未來城市,霓虹燈閃爍,賽博龐克風格...",selectModel:"選擇模型",selectResolution:"選擇解析度",generateBtn:"生成圖片",resultTitle:"生成結果",generatedCount:"已生成 {count} 張,請選擇一張",generatingLabel:"生成中...",genFailed:"生成失敗",confirmSelect:"確認選擇",promptSuccess:"提示詞生成成功",promptFail:"提示詞生成失敗",fillPrompt:"請填寫提示詞",pickResolution:"請選擇解析度",pickModel:"請選擇模型",unnamed:"未命名",assetGenSuccess:"資產生成成功",assetGenFail:"資產生成失敗",uploadOk:"上傳成功",imageSelected:"已選擇該圖片",imageDeleted:"已刪除該圖片",imageSaved:"圖片已儲存",completed:"已完成"},batch:{header:"批次生成",selected:"已選擇 {count} 項",selectAll:"全選",clearSelection:"清除選擇",inputPh:"請輸入內容",saveSelected:"儲存選取項目 ({count})",colPreviewImg:"預覽圖",selectToSave:"請選擇要儲存的項目",saveSuccess:"儲存成功",saveFail:"儲存失敗,請重試",promptDone:"提示詞生成完成",promptFail:"提示詞生成失敗",missingPrompts:"有 {count} 個資產缺少提示詞,請先生成提示詞",imageDone:"圖片生成完成",imageGenFail:"圖片生成失敗",unknownError:"未知錯誤",promptGenCancelled:"已取消生成"}},production:{selectPlaceholder:"請選擇劇集",edit:"編輯",node:{script:{title:"劇本",editDialog:"編輯劇本"},scriptPlan:{title:"拍攝計畫",editDialog:"編輯拍攝計畫"},storyboard:{title:"分鏡面板",notGenerated:"未生成",scaleRatio:"縮放比例",gridPreview:"九宮格預覽",noPreviewImages:"暫無可預覽的圖片",loadFailed:"載入失敗: {src}",imageLoadFailed:"圖片載入失敗",promptPlaceholder:"請輸入提示詞",prompt:"提示詞",editInfo:"提示詞修改"},storyboardTable:{title:"分鏡表",editDialog:"編輯分鏡表"},assets:{title:"衍生資產",generateFailed:"生成失敗",notGenerated:"未生成",originalAsset:"原資產",derived:"衍生",noDerivedAssets:"無衍生資產"},poster:{title:"影片封面",coverCount:"{count} 張"},workbench:{title:"影片工作區"}},editImage:{upload:"上傳",generate:"生成",saveFailed:"儲存失敗,請重試",fetchFailed:"取得資料失敗",generating:"生成中...",deleteNode:"刪除節點",ratio:"比例",quality:"畫質",generateBtn:"生成圖片",selectImage:"選擇圖片",imageGeneration:"圖片生成",promptPlaceholder:"描述你想要生成的圖片...",imageRef:"圖{index}",noReferences:"暫無可引用的參考圖",selectModel:"請先選擇模型",selectQuality:"請選擇畫質",selectRatio:"請選擇比例",generateFailed:"生成失敗",generateFirst:"請先生成圖片",generatedResult:"生成結果",waitingGenerate:"等待生成",uploadImage:"資產圖片上傳",mode:"模式",closeConfirmTitle:"關閉確認標題",closeConfirmBody:"關閉之後未儲存的資料會遺失"},save:"選取",cancel:"取消",chatBox:{inputPlaceholder:"輸入訊息...",generateDerivedAssets:"生成衍生資產",welcomeMessage:"你好!我是你的 AI 助手,有什麼可以幫你的嗎?",adjustModel:"調整模型",startMakingVideo:"開始製作影片",startMakingVideoPrompt:"請幫我開始製作影片",clearMessageMemory:"清除訊息記憶",clearSummaryMemory:"清除摘要記憶",clearAllMemory:"清除所有記憶",messageMemory:"訊息記憶",summaryMemory:"摘要記憶",allMemory:"所有記憶",confirmClear:"清除記憶",confirmClearBody:"確定要清除{type}嗎?",confirmClearBtn:"確定清除",memoryCleared:"{type}已清除"},wb:{quickPreview:"快速預覽",videoGeneration:"分鏡台",videoEditing:"剪輯台",hint:"提示",extractLines:"是否從影片中提取台詞?",no:"否",confirm:"確定",extractLinesQuestion:"是否從影片中提取台詞作為字幕?",importingLoading:"正在匯入中,請稍候...",mainTrackVideo:"主軌道(影片)",subtitle1:"字幕1",stereo441:"44.1kHz 立體聲",mono16:"16kHz 單聲道",sampleImage1:"範例圖片 1"},preview:{noImage:"暫無圖片",storyboardDesc:"分鏡描述",serialNumber:"序號",noDescription:"暫無描述",duration:"時長",seconds:"秒",relatedAssets:"涉及資產",role:"角色",prop:"道具",scene:"場景",noCharacters:"暫無出場人物",imagePrompt:"圖片提示詞",selectAll:"全選",exportImage:"匯出圖片",sceneDescription:"畫面描述",promptLabel:"提示詞",restoreSort:"還原排序",restoreSortConfirm:"確定要還原為初始排序嗎?",tip:"提示",selectAtLeastOne:"請至少選擇一個分鏡進行匯出",exportFilename:"分鏡圖片"},generate:{noVideo:"暫無影片",videoPrompt:"影片提示詞",promptPlaceholder:"輸入提示詞,描述你想要生成的影片內容...",refImage:"參考圖",image:"圖片",refVideo:"參考影片",refImageLabel:"參考圖片",refAudio:"參考音訊",muteAudio:"關閉音訊",enableAudio:"開啟音訊",resolution:"解析度",duration:"時長",generate:"生成",historyVersions:"歷史版本",refresh:"重新整理",confirmSelection:"確認選取項目",noHistory:"暫無歷史記錄",generating:"生成中",generateFailed:"生成失敗",selectAll:"全選",videoTrack:"影片軌道",batchGenerate:"批次生成",importToEditor:"匯入剪輯台",modeSingleImage:"單圖",modeMultiImage:"多圖",modeGridImage:"網格多圖",modeStartEnd:"首尾影格",modeText:"文字生成影片",modeVideoRef:"影片參考",modeImageRef:"圖片參考",modeAudioRef:"音訊參考",modeTextRef:"文字參考",startFrame:"首影格",startFrameOptional:"首影格(選填)",endFrame:"尾影格",endFrameOptional:"尾影格(選填)",selectRefImage:"選擇參考圖",selectRefImages:"選擇參考圖片",selectEndFrame:"選擇尾影格圖",selectRefVideoAsset:"選擇參考影片",selectRefAudioAsset:"選擇參考音訊",selectRefImageAsset:"選擇參考圖片",selectImageSource:"選擇圖片來源",fromStoryboard:"分鏡圖",fromStoryboardDesc:"從分鏡列表中選擇圖片",fromAssets:"資產圖",fromAssetsDesc:"從資產庫中選擇圖片",confirmDelete:"確認刪除",confirmDeleteBody:"確定要刪除這個影片嗎?此操作無法復原。",delete:"刪除",cancel:"取消",deleteSuccess:"影片刪除成功",deleteFailed:"刪除失敗",selectVideoFirst:"請先選擇一個影片",confirmSuccess:"確認選取成功",batchSubmitted:"已送出批次生成請求,正在處理中...",configNotFound:"設定不存在",pollingFailed:"視訊狀態查詢失敗,請手動刷新",batchGeneratePrompt:"大量生成提示詞",batchPromptEmpty:`分鏡 {name} 有空視訊提示。 + */const $Oi="11.3.0";function XOi(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(qT().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(qT().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(qT().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(qT().__INTLIFY_PROD_DEVTOOLS__=!1)}const d2={UNEXPECTED_RETURN_TYPE:hOi,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32};function rA(e,...t){return Y4e(e,null,void 0)}const hMe=K6("__translateVNode"),fMe=K6("__datetimeParts"),gMe=K6("__numberParts"),Jwn=K6("__setPluralRules"),eOn=K6("__injectWithOption"),mMe=K6("__dispose");function nK(e){if(!Zl(e)||ry(e))return e;for(const t in e)if(P4(e,t))if(!t.includes("."))Zl(e[t])&&nK(e[t]);else{const n=t.split("."),r=n.length-1;let o=e,s=!1;for(let a=0;a{if("locale"in l&&"resource"in l){const{locale:d,resource:u}=l;d?(a[d]=a[d]||Cc(),oue(u,a[d])):oue(u,a)}else dr(l)&&oue(JSON.parse(l),a)}),o==null&&s)for(const l in a)P4(a,l)&&nK(a[l]);return a}function tOn(e){return e.type}function nOn(e,t,n){let r=Zl(t.messages)?t.messages:Cc();"__i18nGlobal"in n&&(r=zZe(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);o.length&&o.forEach(s=>{e.mergeLocaleMessage(s,r[s])});{if(Zl(t.datetimeFormats)){const s=Object.keys(t.datetimeFormats);s.length&&s.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(Zl(t.numberFormats)){const s=Object.keys(t.numberFormats);s.length&&s.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function r1t(e){return c(iI,null,e,0)}function iK(){return ps()}const o1t="__INTLIFY_META__",s1t=()=>[],GOi=()=>!1;let a1t=0;function l1t(e){return(t,n,r,o)=>e(n,r,iK()||void 0,o)}const YOi=()=>{const e=iK();let t=null;return e&&(t=tOn(e)[o1t])?{[o1t]:t}:null};function HZe(e={}){const{__root:t,__injectWithOption:n}=e,r=t===void 0,o=e.flatJson,s=hge?fe:nd;let a=dl(e.inheritLocale)?e.inheritLocale:!0;const l=s(t&&a?t.locale.value:dr(e.locale)?e.locale:tK),d=s(t&&a?t.fallbackLocale.value:dr(e.fallbackLocale)||Bu(e.fallbackLocale)||Fa(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:l.value),u=s(zZe(l.value,e)),h=s(Fa(e.datetimeFormats)?e.datetimeFormats:{[l.value]:{}}),g=s(Fa(e.numberFormats)?e.numberFormats:{[l.value]:{}});let m=t?t.missingWarn:dl(e.missingWarn)||wW(e.missingWarn)?e.missingWarn:!0,v=t?t.fallbackWarn:dl(e.fallbackWarn)||wW(e.fallbackWarn)?e.fallbackWarn:!0,f=t?t.fallbackRoot:dl(e.fallbackRoot)?e.fallbackRoot:!0,k=!!e.fallbackFormat,A=Dd(e.missing)?e.missing:null,p=Dd(e.missing)?l1t(e.missing):null,b=Dd(e.postTranslation)?e.postTranslation:null,w=t?t.warnHtmlMessage:dl(e.warnHtmlMessage)?e.warnHtmlMessage:!0,O=!!e.escapeParameter;const y=t?t.modifiers:Fa(e.modifiers)?e.modifiers:{};let C=e.pluralRules||t&&t.pluralRules,_;_=(()=>{r&&Zmt(null);const me={version:$Oi,locale:l.value,fallbackLocale:d.value,messages:u.value,modifiers:y,pluralRules:C,missing:p===null?void 0:p,missingWarn:m,fallbackWarn:v,fallbackFormat:k,unresolving:!0,postTranslation:b===null?void 0:b,warnHtmlMessage:w,escapeParameter:O,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};me.datetimeFormats=h.value,me.numberFormats=g.value,me.__datetimeFormatters=Fa(_)?_.__datetimeFormatters:void 0,me.__numberFormatters=Fa(_)?_.__numberFormatters:void 0;const _e=DOi(me);return r&&Zmt(_e),_e})(),R$(_,l.value,d.value);function L(){return[l.value,d.value,u.value,h.value,g.value]}const E=X({get:()=>l.value,set:me=>{_.locale=me,l.value=me}}),T=X({get:()=>d.value,set:me=>{_.fallbackLocale=me,d.value=me,R$(_,l.value,me)}}),D=X(()=>u.value),P=X(()=>h.value),Q=X(()=>g.value);function M(){return Dd(b)?b:null}function B(me){b=me,_.postTranslation=me}function R(){return A}function I(me){me!==null&&(p=l1t(me)),A=me,_.missing=p}const F=(me,_e,Te,De,Ye,ot)=>{L();let We;try{__INTLIFY_PROD_DEVTOOLS__,r||(_.fallbackContext=t?QOi():void 0),We=me(_)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(_.fallbackContext=void 0)}if(Te!=="translate exists"&&$h(We)&&We===Z4e||Te==="translate exists"&&!We){const[et,st]=_e();return t&&f?De(t):Ye(et)}else{if(ot(We))return We;throw rA(d2.UNEXPECTED_RETURN_TYPE)}};function j(...me){return F(_e=>Reflect.apply(i1t,null,[_e,...me]),()=>uMe(...me),"translate",_e=>Reflect.apply(_e.t,_e,[...me]),_e=>_e,_e=>dr(_e))}function W(...me){const[_e,Te,De]=me;if(De&&!Zl(De))throw rA(d2.INVALID_ARGUMENT);return j(_e,Te,xf({resolvedMessage:!0},De||{}))}function H(...me){return F(_e=>Reflect.apply(Kmt,null,[_e,...me]),()=>cMe(...me),"datetime format",_e=>Reflect.apply(_e.d,_e,[...me]),()=>fge,_e=>dr(_e)||Bu(_e))}function $(...me){return F(_e=>Reflect.apply(e1t,null,[_e,...me]),()=>dMe(...me),"number format",_e=>Reflect.apply(_e.n,_e,[...me]),()=>fge,_e=>dr(_e)||Bu(_e))}function G(me){return me.map(_e=>dr(_e)||$h(_e)||dl(_e)?r1t(String(_e)):_e)}const re={normalize:G,interpolate:me=>me,type:"vnode"};function J(...me){return F(_e=>{let Te;const De=_e;try{De.processor=re,Te=Reflect.apply(i1t,null,[De,...me])}finally{De.processor=null}return Te},()=>uMe(...me),"translate",_e=>_e[hMe](...me),_e=>[r1t(_e)],_e=>Bu(_e))}function oe(...me){return F(_e=>Reflect.apply(e1t,null,[_e,...me]),()=>dMe(...me),"number format",_e=>_e[gMe](...me),s1t,_e=>dr(_e)||Bu(_e))}function se(...me){return F(_e=>Reflect.apply(Kmt,null,[_e,...me]),()=>cMe(...me),"datetime format",_e=>_e[fMe](...me),s1t,_e=>dr(_e)||Bu(_e))}function le(me){C=me,_.pluralRules=C}function ue(me,_e){return F(()=>{if(!me)return!1;const Te=dr(_e)?_e:l.value,De=dr(_e)?[Te]:lMe(_,d.value,Te);for(let Ye=0;Ye[me],"translate exists",Te=>Reflect.apply(Te.te,Te,[me,_e]),GOi,Te=>dl(Te))}function ee(me){let _e=null;const Te=lMe(_,d.value,l.value);for(let De=0;De{a&&(l.value=me,_.locale=me,R$(_,l.value,d.value))}),pt(t.fallbackLocale,me=>{a&&(d.value=me,_.fallbackLocale=me,R$(_,l.value,d.value))}));const ke={id:a1t,locale:E,fallbackLocale:T,get inheritLocale(){return a},set inheritLocale(me){a=me,me&&t&&(l.value=t.locale.value,d.value=t.fallbackLocale.value,R$(_,l.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:D,get modifiers(){return y},get pluralRules(){return C||{}},get isGlobal(){return r},get missingWarn(){return m},set missingWarn(me){m=me,_.missingWarn=m},get fallbackWarn(){return v},set fallbackWarn(me){v=me,_.fallbackWarn=v},get fallbackRoot(){return f},set fallbackRoot(me){f=me},get fallbackFormat(){return k},set fallbackFormat(me){k=me,_.fallbackFormat=k},get warnHtmlMessage(){return w},set warnHtmlMessage(me){w=me,_.warnHtmlMessage=me},get escapeParameter(){return O},set escapeParameter(me){O=me,_.escapeParameter=me},t:j,getLocaleMessage:z,setLocaleMessage:Y,mergeLocaleMessage:ie,getPostTranslationHandler:M,setPostTranslationHandler:B,getMissingHandler:R,setMissingHandler:I,[Jwn]:le};return ke.datetimeFormats=P,ke.numberFormats=Q,ke.rt=W,ke.te=ue,ke.tm=de,ke.d=H,ke.n=$,ke.getDateTimeFormat=te,ke.setDateTimeFormat=Z,ke.mergeDateTimeFormat=he,ke.getNumberFormat=pe,ke.setNumberFormat=Ce,ke.mergeNumberFormat=Qe,ke[eOn]=n,ke[hMe]=J,ke[fMe]=se,ke[gMe]=oe,ke}function ZOi(e){const t=dr(e.locale)?e.locale:tK,n=dr(e.fallbackLocale)||Bu(e.fallbackLocale)||Fa(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Dd(e.missing)?e.missing:void 0,o=dl(e.silentTranslationWarn)||wW(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,s=dl(e.silentFallbackWarn)||wW(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=dl(e.fallbackRoot)?e.fallbackRoot:!0,l=!!e.formatFallbackMessages,d=Fa(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,h=Dd(e.postTranslation)?e.postTranslation:void 0,g=dr(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,m=!!e.escapeParameterHtml,v=dl(e.sync)?e.sync:!0;let f=e.messages;if(Fa(e.sharedMessages)){const y=e.sharedMessages;f=Object.keys(y).reduce((_,S)=>{const L=_[S]||(_[S]={});return xf(L,y[S]),_},f||{})}const{__i18n:k,__root:A,__injectWithOption:p}=e,b=e.datetimeFormats,w=e.numberFormats,O=e.flatJson;return{locale:t,fallbackLocale:n,messages:f,flatJson:O,datetimeFormats:b,numberFormats:w,missing:r,missingWarn:o,fallbackWarn:s,fallbackRoot:a,fallbackFormat:l,modifiers:d,pluralRules:u,postTranslation:h,warnHtmlMessage:g,escapeParameter:m,messageResolver:e.messageResolver,inheritLocale:v,__i18n:k,__root:A,__injectWithOption:p}}function kMe(e={}){const t=HZe(ZOi(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(o){t.locale.value=o},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(o){t.fallbackLocale.value=o},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(o){t.setMissingHandler(o)},get silentTranslationWarn(){return dl(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(o){t.missingWarn=dl(o)?!o:o},get silentFallbackWarn(){return dl(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(o){t.fallbackWarn=dl(o)?!o:o},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(o){t.fallbackFormat=o},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(o){t.setPostTranslationHandler(o)},get sync(){return t.inheritLocale},set sync(o){t.inheritLocale=o},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){t.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(o){t.escapeParameter=o},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...o){return Reflect.apply(t.t,t,[...o])},rt(...o){return Reflect.apply(t.rt,t,[...o])},te(o,s){return t.te(o,s)},tm(o){return t.tm(o)},getLocaleMessage(o){return t.getLocaleMessage(o)},setLocaleMessage(o,s){t.setLocaleMessage(o,s)},mergeLocaleMessage(o,s){t.mergeLocaleMessage(o,s)},d(...o){return Reflect.apply(t.d,t,[...o])},getDateTimeFormat(o){return t.getDateTimeFormat(o)},setDateTimeFormat(o,s){t.setDateTimeFormat(o,s)},mergeDateTimeFormat(o,s){t.mergeDateTimeFormat(o,s)},n(...o){return Reflect.apply(t.n,t,[...o])},getNumberFormat(o){return t.getNumberFormat(o)},setNumberFormat(o,s){t.setNumberFormat(o,s)},mergeNumberFormat(o,s){t.mergeNumberFormat(o,s)}};return r.__extender=n,r}function qOi(e,t,n){return{beforeCreate(){const r=iK();if(!r)throw rA(d2.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const s=o.i18n;if(o.__i18n&&(s.__i18n=o.__i18n),s.__root=t,this===this.$root)this.$i18n=c1t(e,s);else{s.__injectWithOption=!0,s.__extender=n.__vueI18nExtend,this.$i18n=kMe(s);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=c1t(e,o);else{this.$i18n=kMe({__i18n:o.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}else this.$i18n=e;o.__i18nGlobal&&nOn(t,o,o),this.$t=(...s)=>this.$i18n.t(...s),this.$rt=(...s)=>this.$i18n.rt(...s),this.$te=(s,a)=>this.$i18n.te(s,a),this.$d=(...s)=>this.$i18n.d(...s),this.$n=(...s)=>this.$i18n.n(...s),this.$tm=s=>this.$i18n.tm(s),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=iK();if(!r)throw rA(d2.UNEXPECTED_ERROR);const o=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,o.__disposer&&(o.__disposer(),delete o.__disposer,delete o.__extender),n.__deleteInstance(r),delete this.$i18n}}}function c1t(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Jwn](t.pluralizationRules||e.pluralizationRules);const n=zZe(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(r=>e.mergeLocaleMessage(r,n[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}const $Ze={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function KOi({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,o)=>[...r,...o.type===sn?o.children:[o]],[]):t.reduce((n,r)=>{const o=e[r];return o&&(n[r]=o()),n},Cc())}function iOn(){return sn}const JOi=Je({name:"i18n-t",props:xf({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>$h(e)||!isNaN(e)}},$Ze),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||aI({useScope:e.scope,__useComponent:!0});return()=>{const s=Object.keys(n).filter(g=>g[0]!=="_"),a=Cc();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=dr(e.plural)?+e.plural:e.plural);const l=KOi(t,s),d=o[hMe](e.keypath,l,a),u=xf(Cc(),r),h=dr(e.tag)||Zl(e.tag)?e.tag:iOn();return xn(h,u,d)}}}),d1t=JOi;function eyi(e){return Bu(e)&&!dr(e[0])}function rOn(e,t,n,r){const{slots:o,attrs:s}=t;return()=>{const a={part:!0};let l=Cc();e.locale&&(a.locale=e.locale),dr(e.format)?a.key=e.format:Zl(e.format)&&(dr(e.format.key)&&(a.key=e.format.key),l=Object.keys(e.format).reduce((m,v)=>n.includes(v)?xf(Cc(),m,{[v]:e.format[v]}):m,Cc()));const d=r(e.value,a,l);let u=[a.key];Bu(d)?u=d.map((m,v)=>{const f=o[m.type],k=f?f({[m.type]:m.value,index:v,parts:d}):[m.value];return eyi(k)&&(k[0].key=`${m.type}-${v}`),k}):dr(d)&&(u=[d]);const h=xf(Cc(),s),g=dr(e.tag)||Zl(e.tag)?e.tag:iOn();return xn(g,h,u)}}const tyi=Je({name:"i18n-n",props:xf({value:{type:Number,required:!0},format:{type:[String,Object]}},$Ze),setup(e,t){const n=e.i18n||aI({useScope:e.scope,__useComponent:!0});return rOn(e,t,Zwn,(...r)=>n[gMe](...r))}}),u1t=tyi;function nyi(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function iyi(e){const t=a=>{const{instance:l,value:d}=a;if(!l||!l.$)throw rA(d2.UNEXPECTED_ERROR);const u=nyi(e,l.$),h=h1t(d);return[Reflect.apply(u.t,u,[...f1t(h)]),u]};return{created:(a,l)=>{const[d,u]=t(l);hge&&(a.__i18nWatcher=pt(u.locale,()=>{l.instance&&l.instance.$forceUpdate()})),a.__composer=u,a.textContent=d},unmounted:a=>{hge&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:l})=>{if(a.__composer){const d=a.__composer,u=h1t(l);a.textContent=Reflect.apply(d.t,d,[...f1t(u)])}},getSSRProps:a=>{const[l]=t(a);return{textContent:l}}}}function h1t(e){if(dr(e))return{path:e};if(Fa(e)){if(!("path"in e))throw rA(d2.REQUIRED_VALUE,"path");return e}else throw rA(d2.INVALID_VALUE)}function f1t(e){const{path:t,locale:n,args:r,choice:o,plural:s}=e,a={},l=r||{};return dr(n)&&(a.locale=n),$h(o)&&(a.plural=o),$h(s)&&(a.plural=s),[t,l,a]}function ryi(e,t,...n){const r=Fa(n[0])?n[0]:{};(dl(r.globalInstall)?r.globalInstall:!0)&&([d1t.name,"I18nT"].forEach(s=>e.component(s,d1t)),[u1t.name,"I18nN"].forEach(s=>e.component(s,u1t)),[m1t.name,"I18nD"].forEach(s=>e.component(s,m1t))),e.directive("t",iyi(t))}const oyi=K6("global-vue-i18n");function syi(e={}){const t=__VUE_I18N_LEGACY_API__&&dl(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=dl(e.globalInjection)?e.globalInjection:!0,r=new Map,[o,s]=ayi(e,t),a=K6("");function l(g){return r.get(g)||null}function d(g,m){r.set(g,m)}function u(g){r.delete(g)}const h={get mode(){return __VUE_I18N_LEGACY_API__&&t?"legacy":"composition"},async install(g,...m){if(g.__VUE_I18N_SYMBOL__=a,g.provide(g.__VUE_I18N_SYMBOL__,h),Fa(m[0])){const k=m[0];h.__composerExtend=k.__composerExtend,h.__vueI18nExtend=k.__vueI18nExtend}let v=null;!t&&n&&(v=myi(g,h.global)),__VUE_I18N_FULL_INSTALL__&&ryi(g,h,...m),__VUE_I18N_LEGACY_API__&&t&&g.mixin(qOi(s,s.__composer,h));const f=g.unmount;g.unmount=()=>{v&&v(),h.dispose(),f()}},get global(){return s},dispose(){o.stop()},__instances:r,__getInstance:l,__setInstance:d,__deleteInstance:u};return h}function aI(e={}){const t=iK();if(t==null)throw rA(d2.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw rA(d2.NOT_INSTALLED);const n=lyi(t),r=dyi(n),o=tOn(t),s=cyi(e,o);if(s==="global")return nOn(r,e,o),r;if(s==="parent"){let d=uyi(n,t,e.__useComponent);return d==null&&(d=r),d}const a=n;let l=a.__getInstance(t);if(l==null){const d=xf({},e);"__i18n"in o&&(d.__i18n=o.__i18n),r&&(d.__root=r),l=HZe(d),a.__composerExtend&&(l[mMe]=a.__composerExtend(l)),fyi(a,t,l),a.__setInstance(t,l)}return l}function ayi(e,t){const n=One(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>kMe(e)):n.run(()=>HZe(e));if(r==null)throw rA(d2.UNEXPECTED_ERROR);return[n,r]}function lyi(e){const t=bt(e.isCE?oyi:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw rA(e.isCE?d2.NOT_INSTALLED_WITH_PROVIDE:d2.UNEXPECTED_ERROR);return t}function cyi(e,t){return G4e(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function dyi(e){return e.mode==="composition"?e.global:e.global.__composer}function uyi(e,t,n=!1){let r=null;const o=t.root;let s=hyi(t,n);for(;s!=null;){const a=e;if(e.mode==="composition")r=a.__getInstance(s);else if(__VUE_I18N_LEGACY_API__){const l=a.__getInstance(s);l!=null&&(r=l.__composer,n&&r&&!r[eOn]&&(r=null))}if(r!=null||o===s)break;s=s.parent}return r}function hyi(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function fyi(e,t,n){An(()=>{},t),Qa(()=>{const r=n;e.__deleteInstance(t);const o=r[mMe];o&&(o(),delete r[mMe])},t)}const gyi=["locale","fallbackLocale","availableLocales"],g1t=["t","rt","d","n","tm","te"];function myi(e,t){const n=Object.create(null);return gyi.forEach(o=>{const s=Object.getOwnPropertyDescriptor(t,o);if(!s)throw rA(d2.UNEXPECTED_ERROR);const a=Fn(s.value)?{get(){return s.value.value},set(l){s.value.value=l}}:{get(){return s.get&&s.get()}};Object.defineProperty(n,o,a)}),e.config.globalProperties.$i18n=n,g1t.forEach(o=>{const s=Object.getOwnPropertyDescriptor(t,o);if(!s||!s.value)throw rA(d2.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${o}`,s)}),()=>{delete e.config.globalProperties.$i18n,g1t.forEach(o=>{delete e.config.globalProperties[`$${o}`]})}}const kyi=Je({name:"i18n-d",props:xf({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},$Ze),setup(e,t){const n=e.i18n||aI({useScope:e.scope,__useComponent:!0});return rOn(e,t,Ywn,(...r)=>n[fMe](...r))}}),m1t=kyi;XOi();SOi(aOi);LOi(yOi);xOi(lMe);if(__INTLIFY_PROD_DEVTOOLS__){const e=qT();e.__INTLIFY__=!0,lOi(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function vyi(e,t){return vz()?(YQ(e,t),!0):!1}function k1t(){const e=new Set,t=s=>{e.delete(s)};return{on:s=>{e.add(s);const a=()=>t(s);return vyi(a),{off:a}},off:t,trigger:(...s)=>Promise.all(Array.from(e).map(a=>a(...s))),clear:()=>{e.clear()}}}const oOn=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ayi=Object.prototype.toString,pyi=e=>Ayi.call(e)==="[object Object]",vMe=()=>{},byi=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function wyi(...e){if(e.length!==1)return Pa(...e);const t=e[0];return typeof t=="function"?d6(QYe(()=>({get:t,set:vMe}))):fe(t)}function sOn(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const aOn=e=>e();function Oyi(...e){let t=0,n,r=!0,o=vMe,s,a,l,d,u;!Fn(e[0])&&typeof e[0]=="object"?{delay:a,trailing:l=!0,leading:d=!0,rejectOnCancel:u=!1}=e[0]:[a,l=!0,d=!0,u=!1]=e;const h=()=>{n&&(clearTimeout(n),n=void 0,o(),o=vMe)};return m=>{const v=Fo(a),f=Date.now()-t,k=()=>s=m();return h(),v<=0?(t=Date.now(),k()):(f>v?(t=Date.now(),(d||!r)&&k()):l&&(s=new Promise((A,p)=>{o=u?p:A,n=setTimeout(()=>{t=Date.now(),r=!0,A(k()),h()},Math.max(0,v-f))})),!d&&!n&&(n=setTimeout(()=>r=!0,v)),r=!1,s)}}function yyi(e=aOn,t={}){const{initialState:n="active"}=t,r=wyi(n==="active");function o(){r.value=!1}function s(){r.value=!0}return{isActive:d6(r),pause:o,resume:s,eventFilter:(...l)=>{r.value&&e(...l)}}}function T_e(e){return Array.isArray(e)?e:[e]}function Cyi(e){return ps()}function _yi(e,t=200,n=!1,r=!0,o=!1){return sOn(Oyi(t,n,r,o),e)}function Syi(e,t,n={}){const{eventFilter:r=aOn,...o}=n;return pt(e,sOn(r,t),o)}function Lyi(e,t,n={}){const{eventFilter:r,initialState:o="active",...s}=n,{eventFilter:a,pause:l,resume:d,isActive:u}=yyi(r,{initialState:o});return{stop:Syi(e,t,{...s,eventFilter:a}),pause:l,resume:d,isActive:u}}function xyi(e,t=!0,n){Cyi()?An(e,n):t?e():ai(e)}function Eyi(e,t,n){return pt(e,t,{...n,immediate:!0})}const e9=oOn?window:void 0,Tyi=oOn?window.document:void 0;function XZe(e){var t;const n=Fo(e);return(t=n==null?void 0:n.$el)!==null&&t!==void 0?t:n}function Yg(...e){const t=(r,o,s,a)=>(r.addEventListener(o,s,a),()=>r.removeEventListener(o,s,a)),n=X(()=>{const r=T_e(Fo(e[0])).filter(o=>o!=null);return r.every(o=>typeof o!="string")?r:void 0});return Eyi(()=>{var r,o;return[(r=(o=n.value)===null||o===void 0?void 0:o.map(s=>XZe(s)))!==null&&r!==void 0?r:[e9].filter(s=>s!=null),T_e(Fo(n.value?e[1]:e[0])),T_e(Ae(n.value?e[2]:e[1])),Fo(n.value?e[3]:e[2])]},([r,o,s,a],l,d)=>{if(!(r!=null&&r.length)||!(o!=null&&o.length)||!(s!=null&&s.length))return;const u=pyi(a)?{...a}:a,h=r.flatMap(g=>o.flatMap(m=>s.map(v=>t(g,m,v,u))));d(()=>{h.forEach(g=>g())})},{flush:"post"})}const Yse=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zse="__vueuse_ssr_handlers__",Qyi=Dyi();function Dyi(){return Zse in Yse||(Yse[Zse]=Yse[Zse]||{}),Yse[Zse]}function Byi(e,t){return Qyi[e]||t}function Ryi(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Iyi={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},v1t="vueuse-storage";function lOn(e,t,n,r={}){var o;const{flush:s="pre",deep:a=!0,listenToStorageChanges:l=!0,writeDefaults:d=!0,mergeDefaults:u=!1,shallow:h,window:g=e9,eventFilter:m,onError:v=Q=>{console.error(Q)},initOnMounted:f}=r,k=(h?nd:fe)(typeof t=="function"?t():t),A=X(()=>Fo(e));if(!n)try{n=Byi("getDefaultStorage",()=>e9==null?void 0:e9.localStorage)()}catch(Q){v(Q)}if(!n)return k;const p=Fo(t),b=Ryi(p),w=(o=r.serializer)!==null&&o!==void 0?o:Iyi[b],{pause:O,resume:y}=Lyi(k,Q=>E(Q),{flush:s,deep:a,eventFilter:m});pt(A,()=>D(),{flush:s});let C=!1;const _=Q=>{f&&!C||D(Q)},S=Q=>{f&&!C||P(Q)};g&&l&&(n instanceof Storage?Yg(g,"storage",_,{passive:!0}):Yg(g,v1t,S)),f?xyi(()=>{C=!0,D()}):D();function L(Q,M){if(g){const B={key:A.value,oldValue:Q,newValue:M,storageArea:n};g.dispatchEvent(n instanceof Storage?new StorageEvent("storage",B):new CustomEvent(v1t,{detail:B}))}}function E(Q){try{const M=n.getItem(A.value);if(Q==null)L(M,null),n.removeItem(A.value);else{const B=w.write(Q);M!==B&&(n.setItem(A.value,B),L(M,B))}}catch(M){v(M)}}function T(Q){const M=Q?Q.newValue:n.getItem(A.value);if(M==null)return d&&p!=null&&n.setItem(A.value,w.write(p)),p;if(!Q&&u){const B=w.read(M);return typeof u=="function"?u(B,p):b==="object"&&!Array.isArray(B)?{...p,...B}:B}else return typeof M!="string"?M:w.read(M)}function D(Q){if(!(Q&&Q.storageArea!==n)){if(Q&&Q.key==null){k.value=p;return}if(!(Q&&Q.key!==A.value)){O();try{const M=w.write(k.value);(Q===void 0||(Q==null?void 0:Q.newValue)!==M)&&(k.value=T(Q))}catch(M){v(M)}finally{Q?ai(y):y()}}}}function P(Q){D(Q.detail)}return k}const Myi={multiple:!0,accept:"*",reset:!1,directory:!1};function Pyi(e){if(!e)return null;if(e instanceof FileList)return e;const t=new DataTransfer;for(const n of e)t.items.add(n);return t.files}function cOn(e={}){const{document:t=Tyi}=e,n=fe(Pyi(e.initialFiles)),{on:r,trigger:o}=k1t(),{on:s,trigger:a}=k1t(),l=X(()=>{var g;const m=(g=XZe(e.input))!==null&&g!==void 0?g:t?t.createElement("input"):void 0;return m&&(m.type="file",m.onchange=v=>{n.value=v.target.files,o(n.value)},m.oncancel=()=>{a()}),m}),d=()=>{n.value=null,l.value&&l.value.value&&(l.value.value="",o(null))},u=g=>{const m=l.value;m&&(m.multiple=Fo(g.multiple),m.accept=Fo(g.accept),m.webkitdirectory=Fo(g.directory),byi(g,"capture")&&(m.capture=Fo(g.capture)))},h=g=>{const m=l.value;if(!m)return;const v={...Myi,...e,...g};u(v),Fo(v.reset)&&d(),m.click()};return u6(()=>{u(e)}),{files:d6(n),open:h,reset:d,onCancel:s,onChange:r}}function q4e(e,t,n={}){const{window:r=e9}=n;return lOn(e,t,r==null?void 0:r.localStorage,n)}const Fyi={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof MouseEvent?[e.movementX,e.movementY]:null};function Nyi(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:r=!1,initialValue:o={x:0,y:0},window:s=e9,target:a=s,scroll:l=!0,eventFilter:d}=e;let u=null,h=0,g=0;const m=nd(o.x),v=nd(o.y),f=nd(null),k=typeof t=="function"?t:Fyi[t],A=_=>{const S=k(_);u=_,S&&([m.value,v.value]=S,f.value="mouse"),s&&(h=s.scrollX,g=s.scrollY)},p=_=>{if(_.touches.length>0){const S=k(_.touches[0]);S&&([m.value,v.value]=S,f.value="touch")}},b=()=>{if(!u||!s)return;const _=k(u);u instanceof MouseEvent&&_&&(m.value=_[0]+s.scrollX-h,v.value=_[1]+s.scrollY-g)},w=()=>{m.value=o.x,v.value=o.y},O=d?_=>d(()=>A(_),{}):_=>A(_),y=d?_=>d(()=>p(_),{}):_=>p(_),C=d?()=>d(()=>b(),{}):()=>b();if(a){const _={passive:!0};Yg(a,["mousemove","dragover"],O,_),n&&t!=="movement"&&(Yg(a,["touchstart","touchmove"],y,_),r&&Yg(a,"touchend",w,_)),l&&t==="page"&&Yg(s,"scroll",C,_)}return{x:m,y:v,sourceType:f}}function Uyi(e={}){const{touch:t=!0,drag:n=!0,capture:r=!1,initialValue:o=!1,window:s=e9}=e,a=nd(o),l=nd(null);if(!s)return{pressed:a,sourceType:l};const d=m=>v=>{var f;a.value=!0,l.value=m,(f=e.onPressed)===null||f===void 0||f.call(e,v)},u=m=>{var v;a.value=!1,l.value=null,(v=e.onReleased)===null||v===void 0||v.call(e,m)},h=X(()=>XZe(e.target)||s),g={passive:!0,capture:r};return Yg(h,"mousedown",d("mouse"),g),Yg(s,"mouseleave",u,g),Yg(s,"mouseup",u,g),n&&(Yg(h,"dragstart",d("mouse"),g),Yg(s,"drop",u,g),Yg(s,"dragend",u,g)),t&&(Yg(h,"touchstart",d("touch"),g),Yg(s,"touchend",u,g),Yg(s,"touchcancel",u,g)),{pressed:a,sourceType:l}}const jyi={editMdPreivew:{title:"编辑",confirm:"保存",cancel:"取消"},imageTools:{copy:"复制图片",preview:"预览",download:"下载",msg:{imageLoadFailed:"图片加载失败",convertFailed:"转换失败",copied:"已复制到剪贴板",copyFailed:"复制失败",downloadFailed:"下载失败",downloadStarted:"开始下载",downloadBlockedOpenNewWindow:"当前图片源可能限制下载,已尝试在新窗口打开"}},migrateShow:{title:"迁移数据",desc:"检测到您有旧版本的数据,是否需要迁移?",hide:"不再显示",confirm:"确定",msg:{migrateSuccess:"数据迁移成功",migrateFailed:"数据迁移失败"}},modelSelect:{placeholder:"请选择模型",type:{image:"图像",text:"文本",video:"视频"},msg:{fetchModelFailed:"获取模型数据失败:"},goSetting:"去设置中添加模型"},storyboardImageCheck:{camera:"镜头",dialogTitle:"选择分镜图",preview:"预览",src:"预览图",title:"标题",duration:"时长",lines:"台词",createTime:"创建时间"}},Wyi={title:"ToonFlow设置",menu:{language:"语言设置",vendorConfig:"模型服务",agentConfig:"Agent配置",promptManage:"提示词管理",skillManagement:"Skills技能管理",memoryConfig:"Agent记忆配置",loginConfig:"登录配置",dbConfig:"数据库操作",fileManagement:"文件管理",otherConfig:"其他配置",requestConfig:"请求地址",devConfig:"开发者选项",about:"检查更新",logoutConfig:"退出登录",skillsSkillsManagement:"Skills技能管理"},language:{desc:"选择界面显示语言",msg:{saved:"语言设置已保存"}},vendor:{addVendor:"添加供应商",noVendor:"暂无供应商,请先添加",required:"必填",optionalSection:"选填项",modelSettings:"模型设置",addManually:"手动添加",test:"测试",edit:"编辑",delete:"删除",deleteVendor:"删除供应商",editCode:"编辑代码",updateConfig:"更新配置",addModel:"添加模型",editModel:"编辑模型",displayName:"显示名称",displayNamePlaceholder:"例如:GPT-4o",modelId:"模型标识",modelIdPlaceholder:"例如:gpt-4o",modelType:"模型类型",multimodal:"多模态",supported:"支持",notSupported:"不支持",toolCall:"工具调用",imageMode:"图像模式",videoMode:"视频模式",audioOutput:"音频输出",durationResolution:"时长 / 分辨率映射",durationSec:"时长(秒)",resolution:"分辨率",enterAndPress:"输入后回车",addDurationResolution:"添加一组时长 / 分辨率",testResult:"测试结果",generating:"正在生成中...",addVendorDialog:"添加供应商",codeEditorInfo:"请编写 TypeScript 代码配置供应商信息",reset:"重置",importFile:"导入文件",textModel:"文本模型",imageModel:"图像模型",videoModel:"视频模型",textToImage:"文生图",textToVideo:"文生视频",singleImage:"单图",multiImage:"多图模式",multiReference:"多图参考",gridImage:"网格单图",startEndRequired:"首尾帧(两张必填)",endFrameOptional:"首尾帧(尾帧可选)",startFrameOptional:"首尾帧(首帧可选)",textRef:"文本",imageRef:"图片",videoRef:"视频",audioRef:"音频",audioOptional:"可选",audioOnly:"仅输出有声视频",noAudio:"仅输出无声视频",msg:{getVendorListFailed:"获取供应商列表失败",vendorConfigUpdated:"供应商配置已更新",updateFailed:"更新失败",highRiskConfirm:"⚠️ 高风险操作确认",addVendorRiskBody:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的代码来源!",iKnowRisk:"我了解风险",cancel:"取消",confirmAgain:"⚠️ 再次确认",addVendorConfirmBody:"确定要添加该供应商吗?添加后它将参与系统的模型调度。",confirmAndAdd:"确认并添加",goBackCheck:"返回检查",vendorAdded:"供应商已成功添加",addFailed:"添加失败",updateVendorRiskBody:"更新 AI 供应商配置将修改其访问系统 API 的权限和行为,请确认您信任修改后的代码来源!",updateVendorConfirmBody:"确定要更新该供应商配置吗?更新后将影响系统的模型调度。",confirmAndUpdate:"确认并更新",updateSuccess:"供应商配置更新成功",fillDisplayName:"请填写显示名称",fillModelId:"请填写模型标识",selectImageMode:"请选择图像模式",selectVideoMode:"请选择视频模式",groupPrefix:"第 {n} 组:",addDuration:"请添加时长",addResolution:"请添加分辨率",selectVendorFirst:"请先选择供应商",modelIdExists:"模型标识已存在",modelAdded:"模型已成功添加",modelUpdated:"模型已成功更新",enterApiKey:"请填写 API KEY",enterApiUrl:"请填写 API URL",testSuccess:"测试成功",imageGenSuccess:"图像生成成功",videoGenSuccess:"视频生成成功",requestFailed:"请求失败:",deleteModelConfirm:"确认删除模型",deleteModelBody:"删除后不可恢复,是否继续?",confirmDelete:"确认删除",modelDeleted:"模型已删除",deleteVendorConfirm:"确认删除供应商",deleteVendorBody:"删除后该供应商下所有模型将一并删除,是否继续?",vendorDeleted:"供应商已删除",deleteFailed:"删除失败",enabled:"已启用",disabled:"已禁用",linkAddVendorRiskBody:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的链接来源!",importAdd:"添加新的 AI 供应商将赋予其访问系统 API 的权限,请确认您信任该供应商的文件来源!",linkAddFailed:"链接添加失败"},associationSkills:"关联skills",think:"深度思考",code:"代码",linkAddPlaceholder:"输入链接添加",noFileSelected:"成功导入文件",linkAdd:"确认"},agent:{bannerDesc:"使用 Toonflow 官方中转站点,支持一键填入配置,开箱即用,无需手动配置。",visitWebsite:"进入网站",fillKey:"填入KEY",oneClickFill:"一键填入",notOpen:"未开放",notConfigured:"未配置",modelConfig:"模型配置",confirm:"确认",cancel:"取消",selectModel:"选择模型",fillKeyHeader:"填入Toonflow平台的官方KEY",keyPlaceholder:"请输入 KEY",save:"保存",msg:{notAvailable:"该功能暂未开放,敬请期待",configSuccess:"配置成功",updateConfigFailed:"更新配置失败:",keyValid:"KEY有效,已成功连接Toonflow平台",keyInvalid:"KEY无效,请检查后重新输入:",enterKey:"请输入 KEY",saveFailed:"保存失败:",getAgentListFailed:"获取Agent配置列表失败:",toonflowNotFound:"Toonflow官方中转站不存在"}},memory:{warning:"以下配置项已预设为推荐值。除非您清楚了解各项配置的含义及影响,否则建议维持现有设置",vectorModelConfig:"向量模型配置",modelFilePath:"模型文件路径",quantizationType:"量化类型",quantizationPlaceholder:"请输入量化类型",memoryParams:"记忆参数",messagesPerSummary:"触发消息压缩条数",messagesPerSummaryHelp:"保留最近 N 条对话上下文。",shortTermLimit:"单次获取未压缩消息条数",shortTermLimitHelp:"检索时返回的候选记忆条数。",summaryMaxLength:"压缩最大字符",summaryMaxLengthHelp:"消息压缩时允许的最大字符",summaryLimit:"允许查询已压缩消息条数",summaryLimitHelp:"允许查询已压缩消息条数",ragLimit:"搜索记忆条数",ragLimitHelp:"检索时获取的消息数。",deepRetrieveSummaryLimit:"向量召回压缩消息数",deepRetrieveSummaryLimitHelp:"检索压缩消息内容时获取的消息数。",saveConfig:"保存配置",clearMemory:"清空记忆",restoreDefault:"恢复默认配置",msg:{saved:"记忆配置已保存",clearConfirmTitle:"确认清空记忆",clearConfirmBody:"该操作会清空 AI 全局记忆数据,且不可恢复,是否继续?",confirmClear:"确认清空",cancel:"取消",cleared:"记忆已清空",clearFailed:"清空记忆失败"}},login:{username:"用户名",usernamePlaceholder:"请输入用户名",password:"密码",passwordPlaceholder:"请输入密码",modify:"修改",msg:{enterUsername:"请输入用户名",usernameLength:"用户名长度为 2-20 个字符",enterPassword:"请输入密码",passwordLength:"密码长度为 6-20 个字符",fetchFailed:"获取用户信息失败",saveSuccess:"保存成功",saveFailed:"保存失败"}},db:{clearDb:"清空数据库",clearDbDesc:"清空所有数据表中的数据,保留表结构",clearData:"清空数据",confirmAction:"确认操作",msg:{clearDbTitle:"清空数据库",firstConfirm:"确定要清空所有数据表吗?数据清空后无法恢复!",secondConfirm:"这是最后一次确认,清空后所有数据将永久丢失!",keyword:"清空",confirm:"确认",pleaseInput:"请输入",cleared:"所有数据表已清空",operationFailed:"操作失败,请重试",cancelled:"操作已取消"}},skill:{scanSkills:"扫描Skills",addSkill:"新增 Skill",importFromHub:"Toonflow-Hub 导入",filterType:"类型",filterAttribution:"归属",searchPlaceholder:"按名称搜索 skill",search:"查询",totalCount:"共 {count} 条 Skill",typeMain:"核心",typeReferences:"技法",noAttribution:"无归属",noAttributionTip:"⚠️无归属,无法启用Skill",noEmbeddingTip:"⚠️未向量化,无法启用Skill",notEmbedded:"未向量化",stateNormal:"正常",stateGenerating:"生成描述中",stateEmptyDesc:"描述为空",stateAttrError:"归属异常",stateMd5Changed:"MD5变动,建议更新描述",embedding:"向量化",edit:"编辑",delete:"删除",importFromHubDialog:"从 Toonflow-Hub 导入",shareLink:"分享链接",editSkillTitle:"编辑 Skill-",addSkillTitle:"新增 Skill",skillName:"Skill 名称",skillNamePlaceholder:"例如:writing-assistant",path:"路径",attributionAgent:"归属 Agent",selectAttribution:"选择归属 Agent",description:"描述",aiGenerate:"AI生成",descriptionPlaceholder:"描述这个 skill 的用途",cancel:"取消",save:"保存",createSkill:"创建 Skill",attr:{productionDecision:"视频生产-执行导演",productionExecution:"视频生产-摄影指导",productionSupervision:"视频生产-监制",scriptDecision:"剧本Agent-统筹",scriptExecution:"剧本Agent-编剧",scriptSupervision:"剧本Agent-编辑",universalAgent:"制片助理"},msg:{scanSuccess:"扫描成功,共扫描到 {count} 个 Skill 文件",fetchListFailed:"获取 skill 列表失败",fillContentFirst:"请先填写 Markdown 内容",descGenSuccess:"描述生成成功",descGenFailed:"描述生成失败",fillNameFirst:"请先填写 Skill 名称",updateSuccess:"Skill 更新成功",createSuccess:"Skill 创建成功",updateFailed:"Skill 更新失败",createFailed:"Skill 创建失败",deleteConfirmTitle:"确认删除",deleteConfirmBody:"确定要删除 Skill「{name}」吗?此操作不可恢复。",deleteSuccess:"删除成功",deleteFailed:"删除失败",embeddingSuccess:"向量化成功",embeddingFailed:"向量化失败"},fileLost:"文件丢失"},other:{requestTimeout:"请求超时时间",seconds:"秒",inputSeconds:"请输入秒",assetConcurrency:"资产生成并发数",count:"个",inputCount:"请输入个数",chapterRegex:"章节拆分正则",restoreDefault:"恢复默认",regexPlaceholder:"请输入正则表达式",canvasScroll:"画布滚动",canvasIsDisabled:"画布缩放",agentCanvasScalingMethod:"生产页无限画布滚轮操作",zoom:"缩放",scroll:"滚动",isInteracting:"生产页无限画布拖拽性能优化",closeIsInteracting:"关闭",openIsInteracting:"开启"},request:{warning:"如非特殊情况,不需要修改或者配置",apiAddress:"API 地址",apiPlaceholder:"请输入 API 请求地址",save:"保存",reset:"重置",msg:{enterApi:"请输入 API 地址",validUrl:"请输入有效的 HTTP/HTTPS 地址",saved:"请求地址保存成功",reset:"已重置为默认地址",refreshFailed:"刷新失败",refreshSuccess:"刷新成功"},refresh:"刷新"},about:{slogan:"开源的AI驱动漫画 / 分镜创作工具",latestVersion:"当前为最新版本",checkUpdate:"检查更新",codeRepository:"代码仓库",githubRepo:"GitHub 仓库",giteeRepo:"Gitee 仓库",versionUpdate:"版本更新",checkUpdateGithub:"检查更新(GitHub)",getFromGithub:"从GitHub Release 获取最新版本",checkUpdateGitee:"检查更新(Gitee)",getFromGitee:"从Gitee Release获取最新版本",license:"许可证",licenseDesc:"开源许可协议·点击查看详情",updateAvailable:"发现新版本",currentVersion:"当前版本",latestVersionLabel:"最新版本",selectUpdateSource:"选择更新源",github:"GitHub",gitee:"Gitee",confirmUpdate:"确认更新",cancel:"取消",updating:"正在更新...",updateSuccess:"更新成功,请重启应用",updateFailed:"更新失败,请重试",noUpdate:"当前已是最新版本",upToDate:"检测到新版本",reinstallRequired:"将自动打开浏览器并下载,如未打开请手动打开",confirmReinstall:"复制链接"},logout:{warning:"退出登录后,您需要重新登录才能继续使用系统。",confirmLogout:"确定要退出登录吗?",logout:"退出登录",msg:{logoutSuccess:"退出登录成功",logoutFailed:"退出登录失败,请重试"}},file:{quickOpen:"快捷打开目录",open:"打开",dockerDesc:'Docker/前后端分离部署请前往"/data/*"目录手动管理文件。',desktopOnly:"该功能仅支持桌面端",folders:{data:"data",dataDesc:"数据目录。",logs:"data/logs",logsDesc:"运行日志与错误日志。",oss:"data/oss",ossDesc:"文件存储相关资源。",skills:"data/skills",skillsDesc:"技能与提示配置文件。",models:"data/models",modelsDesc:"模型文件与配置。",web:"data/web",webDesc:"Web 相关资源,如前端构建产物等。",serve:"data/serve",serveDesc:"后端服务相关文件。"},openFailed:"打开文件夹失败"},dev:{aiDevtool:"切换桌面端模式",devtool:"打开控制台",switchAiDevTool:"关闭/开启 {'@'}ai-sdk/devtools",warning:"以下为开发者工具,谨慎操作!",openDevtool:"打开",devtoolsDoc:"文档地址",devtoolsDesc:"开启后会在Toonflow安装目录创建.devtools文件夹,请确保Toonflow有写入权限(管理员身份运行)。",devtoolsDesc2:"在该目录运行 npx {'@'}ai-sdk/devtools 开启遥测调试",openDevtoolFailed:"打开开发者工具失败,请确保已安装Toonflow桌面端",notInElectron:"WEB环境请手动打开浏览器控制台"}},Vyi={selectProject:"请选择项目",menu:{myProject:"我的项目",taskCenter:"任务中心",novel:"小说原文",scriptAgent:"剧本Agent",scriptManage:"剧本管理",cornerScape:"塑角造景",production:"视频生产",assetCenter:"资产中心",settings:"设置",jumpGithub:"跳转Github",feedbackQuestions:"反馈问题"},project:{title:"我的项目",subtitle:"管理您的所有短剧项目",newProject:"新建项目",dialog:{editTitle:"编辑项目",addTitle:"新建项目",save:"保存",ok:"确定",cancel:"取消",projectType:"项目类型",selectType:"选择项目类型",basedOnNovel:"基于小说原文",projectName:"项目名称",projectNamePh:"请输入项目名称",novelType:"小说类型",novelTypePh:"例如:玄幻、科幻、言情",artStyle:"画风",selected:"已选:",selectArtStyle:"请选择画风",newArtStyle:"新建画风",loading:"加载中...",videoRatio:"影片比例",novelIntro:"小说简介",novelIntroPh:"请输入小说简介",editArtStyleTitle:"编辑画风",newArtStyleTitle:"新建画风",artStyleName:"画风名称",artStyleNamePh:"请输入画风名称",artStyleImage:"画风图片",remove:"移除",uploadCover:"上传封面",artStylePrompt:"提示词",aiExtract:"AI提取提示词",promptPlaceholder:"描述提示词",visualManual:"视觉手册",newVisualManual:"新建视觉手册",editVisualManualTitle:"编辑视觉手册",newVisualManualTitle:"新建视觉手册",visualManualName:"视觉手册名称",visualManualNamePh:"请输入视觉手册名称",visualManualCover:"视觉手册封面",visualManualPrompt:"视觉手册提示词",modelData:"选择图片模型",videoModelData:"选择视频模型",prompt:{placeholder:"输入提示词",saveSuccess:"更新成功",title:"提示词"},basedOnScript:"基于剧本",mdFile:"视觉手册文件",directorManual:"导演手册",addDirectorManual:"新建导演手册",editingDirectorManual:"编辑导演手册",newDirecorManualTitle:"新建导演手册",directorManualPrompt:"导演手册提示词",directorManualName:"导演手册名称",directorManualNamePh:"输入导演手册名称",directorFile:"导演手册文件",directorManualCover:"导演手册封面"},msg:{fetchFailed:"获取项目列表失败",notFound:"未找到该项目!",editSuccess:"编辑项目成功",editFailed:"编辑项目失败",addSuccess:"新增项目成功",addFailed:"新增项目失败",deleteHeader:"删除项目",deleteBody:"确定要删除该项目吗?",deleteConfirm:"删除",deleteCancel:"取消",deleteSuccess:"删除项目成功",deleteFailed:"删除项目失败",extractSuccess:"提示词提取成功",extractFailed:"提取失败",enterArtStyleName:"请输入画风名称",artStyleUpdated:"画风已更新",artStyleAdded:"画风已添加",operationFailed:"操作失败",enterVisualManualName:"请输入视觉手册名称",enterVisualManualImage:"请上传视觉手册封面图片",enterVisualManualTabData:"提示词不能为空",visualManualUpdated:"视觉手册已更新",visualManualAdded:"视觉手册已添加",deleteVisualManualHeader:"删除视觉手册",deleteVisualManualBody:"确定要删除视觉手册「{name}」吗?",deleteVisualManualConfirm:"删除",deleteVisualManualCancel:"取消",enterProjectName:"请输入项目名称",enterProjectIntro:"请输入小说简介",enterProjectType:"请输入小说类型",enterArtStyle:"请选择项目视觉手册",enterVideoRatio:"请选择影片比例",enterImageModel:"请选择图片模型",enterVideoModel:"请选择视频模型",visualManualDeleted:"删除成功",selectMode:"请选择模式",deleteDirectorManualHeader:"删除导演手册",deleteDirectorManualBody:"确定要删除导演手册「{name}」吗?",directorManualUpdated:"导演手册已更新",directorManualAdded:"导演手册已添加",directorManual:"请选择项目导演手册"},type:{novel:"基于小说原文",script:"基于小说剧本"}},novel:{importText:"导入原文",batchDelete:"批量删除",eventAnalysis:"事件分析",searchPlaceholder:"搜索原文名称...",search:"搜索",generating:"生成中...",genFailed:"生成失败",none:"无",edit:"编辑",delete:"删除",col:{id:"序号",reel:"卷",chapter:"章节名称",chapterData:"章节内容",event:"事件",operation:"操作"},msg:{batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的 {count} 条数据吗?",batchDeleteSuccess:"批量删除成功",deleteHeader:"删除确认",deleteBody:"确定要删除章节名称为「{name}」的数据吗?",deleteSuccess:"删除成功",eventAnalysisHeader:"事件分析",eventAnalysisBody:"确定要对选中的 {count} 条数据进行事件分析吗?"},import:{title:"上传小说原文",step1:"第一步",step2:"第二步",step3:"第三步",dragUpload:"拖拽小说原文文件到此处或点击上传",uploadHint:"支持 .txt, .docx 格式,建议文件大小不超过 10MB",or:"或",pasteLabel:"直接粘贴小说原文内容",pastePlaceholder:"请输入小说原文内容",chars:"字符",tooShort:"内容过短,建议至少100字符",parsedChapters:"已解析 {count} 章节",nextStep:"下一步",prevStep:"上一步",selectedInfo:"已勾选:{count}字(小于200000字)",eventAnalysis:"事件分析",saveAndAnalyze:"保存原文并分析事件",col:{chapter:"章",reel:"卷",chapterName:"章节名称",chapterData:"章节内容"},msg:{parseFailed:"文件解析失败,请重新上传",selectFile:"选择文件",docNotSupported:".doc文件不支持解析,请转换为.ts文件",unsupportedType:"不支持的文件类型",fileTooLarge:"文件大小超过10MB,请上传更小的文件",selectChapters:"请先勾选章节",saveSuccess:"小说原文保存成功"},importAdd:"拖拽文件到此处或点击上传",limit:"支持 .ts格式"},editDialog:{title:"编辑小说原文",chapterName:"章节名称",chapterNamePh:"请输入章节名称",eventContent:"事件内容",eventContentPh:"输入事件内容",chapterContent:"章节内容",chapterContentPh:"请输入章节内容",cancel:"取消",save:"保存",msg:{updateSuccess:"小说原文更新成功"}},event:{regenerate:"重新生成事件",batchDelete:"批量删除",noData:"暂无事件数据,点击开始生成",generate:"生成事件",generatingHint:"事件生成中,请稍候...",loading:"加载中...",delete:"删除",col:{id:"事件ID",eventName:"事件名称",chapters:"来源章节",detail:"事件过程",createTime:"创建时间",operation:"操作"},msg:{deleteHeader:"删除事件",deleteBody:"确定要删除这个事件吗?",deleteSuccess:"删除成功",generateSuccess:"事件生成成功",batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的 {count} 条数据吗?",batchDeleteSuccess:"批量删除成功"}},analysis:{analyzeFirst:"请先分析事件",startAnalysis:"开始分析",chapterHeader:"第{index}章 - {name}",analyzing:"事件分析中"}},scriptAgent:{inputPlaceholder:"请输入内容",chapterEvents:"章节事件",clearMessageMemory:"清空消息记忆",clearSummaryMemory:"清空摘要记忆",clearAllMemory:"清空全部记忆",edit:"编辑",storySkeleton:"故事骨架",adaptationStrategy:"改编策略",script:"剧本",noContent:"暂无内容",relatedAssets:"关联资产",editScript:"编辑剧本",save:"保存",scriptTitle:"标题",titlePlaceholder:"请输入标题",content:"内容",contentPlaceholder:"请输入剧本内容",selectAssets:"选择资产",noAssets:"暂未关联资产",selectAssetsTitle:"选择关联资产",welcomeMsg:"你好!我是 Toonflow 智能助手,需要我开始为您生成剧本吗?",start:"开始",memoryType:{message:"消息记忆",summary:"摘要记忆",all:"全部记忆"},forceGenerate:{title:"是否强制生成",desc:"当前存在尚未完成事件分析的章节,是否仍然强制继续生成?",confirm:"强制生成",cancel:"取消"},msg:{clearConfirm:"确认清空",clearBody:"确定要清空{type}吗?此操作无法撤销。",confirmClear:"确认清空",cancel:"取消",memoryCleared:"{type}已清空",scriptUpdated:"剧本更新成功",scriptUpdateFailed:"更新剧本失败,请稍后再试",searchScriptFailed:"搜索剧本失败",updated:"保存成功",error:"保存失败",reconnect:"重新连接",notReconnect:"重新连接对话会被切断是否确认",keepReconnect:"确认",deleteConfirm:"删除确认",deleteBody:"删除正文",confirmDelete:"确认删除",scriptDeleted:"脚本已删除"},reconnect:"重新连接"},cornerScape:{batchSettings:"批量生成设置",quickActions:"快捷指令",selectUngenerated:"全选未生成项",selectGenerated:"全选已生成项",selectFailed:"全选错误项",invertSelection:"反选",clearSelection:"取消选择",batchPreview:"批预览图片",assetTypeFilter:"素材类型筛选",genModel:"生成模型",resolution:"分辨率",resolutionPh:"请选择分辨率",concurrency:"并发数量",concurrencyPh:"请输入并发数",startBatch:"开始批量生成图片",waitingGen:"等待生成",generating:"生成中",genFailed:"生成失败",imageError:"图片错误",typeRole:"角色",typeScene:"场景",typeTool:"工具",typeUnknown:"未知",descriptionSuffix:"描述:",operateScriptFirst:"请先操作剧本",individualConfig:"单独配置",noImage:"暂无图片",promptLabel:"提示词",promptPh:"请输入提示词",aiPolish:"AI 润色",regenerate:"重新生成",filterRole:"人物",filterScene:"场景",filterTool:"道具",unnamed:"未命名",noDescription:"无描述",msg:{selectModel:"请选择生成模型",selectResolution:"请选择分辨率",enterPrompt:"请输入提示词",enterPromptFirst:"请先输入提示词",genSuccess:"{name} 生成成功",genFailed:"{name} 生成失败",promptGenSuccess:"提示词生成成功",polishFailed:"润色失败,请重试",selectAtLeastOne:"请至少选择一个资产进行批量生成",batchStarted:"开始批量生成,共 {count} 个,并发数 {concurrent}",batchItemFailed:"{name} 生成失败:{error}",batchComplete:"批量生成完成",batchFailed:"批量生成失败",replaceFailed:"替换失败",replaceSuccess:"替换成功",emptyPrompt:"勾选的数据{emptyPromptNames}提示词为空,请先生成提示词",promptGenFail:"提示词生成失败",saveSuccess:"修改提示词成功",saveFailed:"提示词修改失败"},history:"历史图片",confirmReplace:"确认替换",batchGenerationPrompt:"批量生成提示词",generatingPrompt:"生成中",selectPromptEmpty:"全选提示词为空",noEmptyPrompt:"没有提示词为空的资产",selectedCount:"已选中{count}个资产"},script:{searchPlaceholder:"搜索剧本名称...",search:"搜索",addScript:"新建剧本",cancelSelectAll:"取消全选",selectAll:"全选",exportScript:"导出剧本",msg:{extracting:"资产提取中",extractFailed:"资产提取失败",extractingInProgress:"正在提取中",projectNotFound:"项目未找到",selectExport:"请选择导出剧本",deleteHeader:"确认删除",deleteBody:"确认要删除这个剧本吗?次操作无法复原",deleteConfirm:"删除",cancel:"取消",deleteSuccess:"删除成功",deleteFailed:"删除失败",selectDelScript:"请选择删除剧本",batchDeleteHeader:"批量删除",batchDeleteBody:"确定要删除选中的{count}个剧本吗?此操作无法复原",batchDeleteSuccess:"批量删除成功",searchFailed:"搜索剧本失败",selectsExport:"请选择导出剧本"},add:{title:"新增剧本",scriptName:"剧本名称",scriptNamePh:"请输入剧本名称",uploadFile:"上传文件",dragUpload:"拖拽剧本文件到此处或点击上传",uploadHint:"支持 .txt, .docx 格式,建议文件大小不超过 10MB",scriptContent:"剧本内容",scriptContentPh:"请上传或输入剧本内容...",relatedAssets:"关联资产",selectAssets:"选择资产",noAssets:"暂未关联资产",cancel:"取消",confirm:"确认",msg:{fileReadFailed:"文件读取失败",docNotSupported:".doc文件不支持解析,请转换为.txt或.docx文件",unsupportedType:"不支持的文件类型",fileTooLarge:"文件大小超过10MB,请上传更小的文件",parsing:"文件解析中...",parseFailed:"文件解析失败,请重新上传",selectAssetsTitle:"选择关联资产",enterContent:"请上传或输入剧本内容",enterName:"请输入剧本名称",addSuccess:"剧本添加成功",addFailed:"添加剧本失败,请稍后再试"}},edit:{title:"剧本详情",scriptName:"剧本名称",scriptNamePh:"请输入剧本名称",scriptContent:"剧本内容",scriptContentPh:"请输入剧本内容...",relatedAssets:"关联资产",selectAssets:"选择资产",noAssets:"暂未关联资产",msg:{selectAssetsTitle:"选择关联资产",updateSuccess:"剧本更新成功",updateFailed:"更新剧本失败,请稍后再试"}},deleteScript:"批量删除剧本",extractAssets:"提取资产"},assets:{addPrefix:"新增",batchGenerate:"批量生成",generatePrompt:"生成提示词",generateImage:"生成图片",batchDelete:"批量删除",searchPlaceholder:"搜索资产名称...",search:"搜索",preview:"预览",generate:"生成",edit:"编辑",delete:"删除",generating:"生成中",play:"播放",mediaPreview:"媒体预览",confirmBatch:"是否确认{type}!",model:"模型",resolution:"分辨率",resolutionPh:"请选择分辨率",batchGenPrompt:"批量生成提示词",batchGenImage:"批量生成图片",role:"角色",prop:"道具",scene:"场景",clip:"素材",uploadSuccess:"上传成功",selectAtLeastOne:"请至少选择一个资产",noDescription:"无描述",promptGenSuccess:"「{name}」提示词生成成功",promptGenFail:"「{name}」提示词生成失败:{error}",selectModel:"请选择模型",selectResolution:"请选择分辨率",noPromptForImage:"「{name}」没有提示词,无法生成图片",imageGenSuccess:"「{name}」图片生成成功",imageGenFail:"「{name}」图片生成失败:{error}",confirmDeleteHeader:"确认删除",confirmBatchDeleteBody:"确定要批量删除这些资产吗?此操作无法撤销。",confirmDeleteBody:"确定要删除这资产吗?此操作无法撤销。",deleteBtn:"删除",cancelBtn:"取消",deleteSuccess:"资产删除成功",deleteFail:"资产删除失败",colPreview:"预览",colName:"名称",colPrompt:"提示词",colDescribe:"描述",colRemark:"备注",colCreateTime:"创建时间",colOperation:"操作",add:{name:"名称",namePh:"请输入名称",describe:"描述",describePh:"请输入描述",remark:"备注",remarkPh:"请输入备注",prompt:"提示词",promptPh:"请输入提示词",nameRequired:"请输入名称",describeRequired:"请输入详情",remarkRequired:"请输入备注",updateSuccess:"资产更新成功",addSuccess:"资产添加成功"},gen:{header:"图片生成",uploadRef:"上传参考图片",optional:"可选",promptLabel:"生图提示词",smartGenerate:"智能生成",generatingPrompt:"智能生成提示词中...",promptPlaceholder:"描述您想要生成的图片内容,例如:一个充满科技感的未来城市,霓虹灯闪烁,赛博朋克风格...",selectModel:"选择模型",selectResolution:"选择分辨率",generateBtn:"生成图片",resultTitle:"生成结果",generatedCount:"已生成 {count} 张,请选择一张",generatingLabel:"生成中...",genFailed:"生成失败",confirmSelect:"确认选择",promptSuccess:"提示词生成成功",promptFail:"提示词生成失败",fillPrompt:"请填写提示词",pickResolution:"请选择分辨率",pickModel:"请选择模型",unnamed:"未命名",assetGenSuccess:"资产生成成功",assetGenFail:"资产生成失败",uploadOk:"上传成功",imageSelected:"已选择该图片",imageDeleted:"已删除该图片",imageSaved:"图片已保存",completed:"已完成"},batch:{header:"批量生成",selected:"已选择 {count} 项",selectAll:"全选",clearSelection:"清空选择",inputPh:"请输入内容",saveSelected:"保存选中 ({count})",colPreviewImg:"预览图",selectToSave:"请选择要保存的项目",saveSuccess:"保存成功",saveFail:"保存失败,请重试",promptDone:"提示词生成完成",promptFail:"提示词生成失败",missingPrompts:"有 {count} 个资产缺少提示词,请先生成提示词",imageDone:"图片生成完成",imageGenFail:"图片生成失败",unknownError:"未知错误",promptGenCancelled:"已取消生成"}},production:{selectPlaceholder:"请选择剧集",edit:"编辑",node:{script:{title:"剧本",editDialog:"编辑剧本"},scriptPlan:{title:"导演计划",editDialog:"编辑导演计划"},storyboard:{title:"分镜面板",notGenerated:"未生成",scaleRatio:"缩放比例",gridPreview:"宫格预览",noPreviewImages:"暂无可预览的图片",imageLoadFailed:"图片加载失败",promptPlaceholder:"请输入提示词",prompt:"提示词",editInfo:"提示词修改"},storyboardTable:{title:"分镜表",editDialog:"编辑分镜表"},assets:{title:"衍生资产",generateFailed:"生成失败",notGenerated:"未生成",originalAsset:"原资产",derived:"衍生",noDerivedAssets:"无衍生资产"},poster:{title:"视频封面",coverCount:"{count} 张"},workbench:{title:"视频工作台"}},editImage:{upload:"上传",generate:"生成",saveFailed:"保存失败,请重试",fetchFailed:"获取数据失败",generating:"生成中...",deleteNode:"删除节点",ratio:"比例",quality:"质量",generateBtn:"生成图片",selectImage:"选择图片",imageGeneration:"图片生成",promptPlaceholder:"描述你想要生成的图片...",imageRef:"图{index}",videoRef:"视频{index}",audioRef:"音频{index}",reference:"参考{index}",noReferences:"暂无可引用的参考文件",selectModel:"请先选择模型",selectQuality:"请选择画质",selectRatio:"请选择比例",generateFailed:"生成失败",generateFirst:"请先生成图片",generatedResult:"生成结果",waitingGenerate:"等待生成",layoutLR:"自动排版-左右布局",layoutTB:"自动排版-上下布局",uploadAssetImage:"资产图片上传",uploadStoryboardImage:"分镜图片上传",uploadImage:"资产图片上传",mode:"模式",closeConfirmTitle:"是否关闭编辑面板?",closeConfirmBody:"关闭之后未保存的数据会丢失"},save:"选取",cancel:"取消",chatBox:{inputPlaceholder:"输入消息...",generateDerivedAssets:"生成衍生资产",welcomeMessage:"你好!我是你的 AI 助手,有什么可以帮你的吗?",adjustModel:"调整模型",startMakingVideo:"开始制作视频",startMakingVideoPrompt:"请帮我开始制作视频",clearMessageMemory:"清除消息记忆",clearSummaryMemory:"清除摘要记忆",clearAllMemory:"清除所有记忆",messageMemory:"消息记忆",summaryMemory:"摘要记忆",allMemory:"所有记忆",confirmClear:"清除记忆",confirmClearBody:"确定要清除{type}吗?",confirmClearBtn:"确定清除",memoryCleared:"{type}已清除"},wb:{quickPreview:"快速预览",videoGeneration:"分镜台",videoEditing:"剪辑台",hint:"提示",extractLines:"是否从视频中提取台词?",no:"否",confirm:"确定",extractLinesQuestion:"是否从视频中提取台词作为字幕?",importingLoading:"正在导入中,请稍候...",mainTrackVideo:"主轨道(视频)",subtitle1:"字幕1",storyboardVideoName:"分镜视频-{storyboard}.mp4"},preview:{noImage:"暂无图片",storyboardDesc:"分镜描述",serialNumber:"序号",noDescription:"暂无描述",duration:"时长",seconds:"秒",relatedAssets:"涉及资产",role:"角色",prop:"道具",scene:"场景",noCharacters:"暂无出场人物",imagePrompt:"图片提示词",selectAll:"全选",exportImage:"导出图片",sceneDescription:"画面描述",promptLabel:"提示词",restoreSort:"还原排序",restoreSortConfirm:"确定要还原为初始排序吗?",tip:"提示",selectAtLeastOne:"请至少选择一个分镜进行导出",exportFilename:"分镜图片"},generate:{noVideo:"暂无数据",videoPrompt:"视频提示词",promptPlaceholder:"输入提示词,描述你想要生成的视频内容...",refImage:"参考图",image:"图片",refVideo:"参考视频",refImageLabel:"参考图片",refAudio:"参考音频",muteAudio:"关闭音频",enableAudio:"开启音频",resolution:"分辨率",duration:"时长",generate:"生成",historyVersions:"历史版本",confirmSelection:"确认选中",noHistory:"暂无历史记录",generating:"生成中",generatingPrompt:"智能生成提示词中",generateFailed:"生成失败",selectAll:"全选",videoTrack:"视频轨道",batchGenerate:"批量生成",importToEditor:"导入剪辑台",modeSingleImage:"单图",modeMultiImage:"多图",modeGridImage:"网格多图",modeStartEnd:"首尾帧",modeText:"文生视频",modeVideoRef:"视频参考",modeImageRef:"图片参考",modeAudioRef:"音频参考",modeTextRef:"文本参考",startFrame:"首帧",startFrameOptional:"首帧(可选)",endFrame:"尾帧",endFrameOptional:"尾帧(可选)",selectRefImage:"选择参考图",selectRefImages:"选择参考图片",selectEndFrame:"选择尾帧图",selectRefVideoAsset:"选择参考视频",selectRefAudioAsset:"选择参考音频",selectRefImageAsset:"选择参考图片",selectImageSource:"选择图片来源",fromStoryboard:"分镜图",fromStoryboardDesc:"从分镜列表中选择图片",fromAssets:"资产图",fromAssetsDesc:"从资产库中选择图片",confirmDelete:"确认删除",confirmDeleteBody:"确定要删除这个视频吗?此操作无法撤销。",delete:"删除",cancel:"取消",deleteSuccess:"视频删除成功",deleteFailed:"删除失败",selectVideoFirst:"请先选择一个视频",confirmSuccess:"确认选中成功",batchSubmitted:"已提交批量生成请求,正在处理中...",configNotFound:"配置不存在",stateSuccess:"生成成功",statePending:"待生产",pollingFailed:"视频状态查询失败,请手动刷新",batchGeneratePrompt:"批量生成提示词",promptEmpty:"请先输入视频提示词",modelEmpty:"请先选择视频生成模型",batchPromptEmpty:"分镜 {names} 的视频提示词为空,请先生成或填写提示词",batchModelEmpty:"分镜 {names} 未配置视频生成模型,请先选择模型"},editVideo:{reset:"重置",undo:"撤销",redo:"重做",split:"分割",delete:"删除",rendering:"渲染中...",exportVideo:"导出视频",exportSuccess:"视频导出完成",exportFailed:"导出失败",sampleSubtitle:"示例字幕文本",customText:"自定义文本内容",transitionBetweenClips:"转场需要添加在两个相邻的 Clip 之间",transitionExists:"该位置已存在转场",videoPreviewArea:"视频预览区域",clipMaterials:"剪辑素材",propertyPanel:"属性面板",selectClip:"选择一个 Clip 查看属性",basicInfo:"基础信息",name:"名称",clipNamePlaceholder:"Clip 名称",startTime:"开始",endTime:"结束",totalDuration:"总时长",videoProperties:"视频属性",opacity:"不透明度",volume:"音量",playbackSpeed:"播放速度",audioProperties:"音频属性",fadeIn:"淡入",fadeOut:"淡出",transitionProperties:"转场属性",transitionType:"转场类型",transFade:"淡入淡出",transSlide:"滑动",transWipe:"擦除",transDissolve:"溶解",transZoom:"缩放",transRotate:"旋转",transitionDuration:"转场时长",subtitleProperties:"字幕属性",textContent:"文本内容",fontSize:"字体大小",copy:"复制",deleteConfirm:"删除确认",deleteClipConfirm:"确定要删除这个 Clip 吗?",avCanvasNotInit:"AVCanvas 尚未初始化",noExportContent:"没有可导出的内容",exportProject:"导出项目",transitionAdded:"已添加转场: {name}",splitClip:"分割片段",deleteClip:"删除片段",addClip:"添加 {name}",duplicateClip:"复制 Clip",addTransition:"添加转场",updateClip:"更新 Clip {key}",updatePlaybackRate:"更新播放倍速为 {rate}x",updateTransitionDuration:"更新转场时长",playbackRateRange:"播放倍速必须在 0.1 到 10 之间",updatePlaybackRateFailed:"更新播放倍速失败:",importProject:"导入项目",import:"导入"},clipType:{video:"视频",audio:"音频",subtitle:"字幕",transition:"转场",sticker:"贴纸",filter:"滤镜",effect:"特效"},track:{video:"视频",image:"图片",audio:"音频",subtitle:"字幕",text:"文本",sticker:"贴纸",filter:"滤镜",effect:"特效"},transition:{fade:"淡入淡出",slide:"滑动",slideLeft:"向左滑动",slideRight:"向右滑动",slideUp:"向上滑动",slideDown:"向下滑动",wipe:"擦除",wipeLeft:"向左擦除",wipeRight:"向右擦除",wipeUp:"向上擦除",wipeDown:"向下擦除",dissolve:"溶解",zoom:"缩放",zoomIn:"放大",zoomOut:"缩小",rotate:"旋转",circle:"圆形",diamond:"菱形",clock:"时钟",blur:"模糊"},media:{titleText:"标题文本",subtitleText:"字幕文本",customText:"自定义文本",media:"媒体",image:"图片",audio:"音频",subtitle:"字幕",transition:"转场",effect:"特效",filter:"滤镜",loading:"加载中...",subtitlePreview:"字",video:"视频"},effect:{fadeIn:"淡入",fadeOut:"淡出",flash:"闪烁",shake:"抖动",zoomIn:"放大进入",zoomOut:"缩小退出",pulse:"脉冲",rotateIn:"旋转进入",sticker1:"贴纸 1",sticker2:"贴纸 2"},filter:{grayscale:"黑白",sepia:"复古",warm:"暖色",cool:"冷色",vivid:"鲜艳",bright:"明亮",highContrast:"高对比",blur:"模糊",invert:"反色",semiTransparent:"半透明"},guideSwitchEpisode:"切换剧集",guideSwitchEpisodeBody:"切换剧集挪移到这里了哦",guideRefresh:"刷新数据",guideRefreshBody:"点击刷新按钮重新获取工作区数据",guideCanvasNav:"画布操作",guideCanvasNavBody:"滚轮上下平移画布,Ctrl + 滚轮缩放画布,按住鼠标左键拖拽自由平移",guideRightChat:"AI 对话",guideRightChatBody:"在右侧对话框中与 AI 交流,驱动自动化流程",guideLayoutBtn:"自动排版",guideLayoutBtnBody:"点击此按钮可自动整理节点布局",autoLayoutLR:"自动排版-左右布局",autoLayoutTB:"自动排版-上下布局",getFlowData:"刷新工作区",confirm:"切换剧集确认",confirmEpisodesSwitch:"当前任务仍在进行中,切换剧集会重连会话,是否继续切换?"},task:{title:"任务列表",subtitle:"您的最新任务执行记录",refresh:"刷新",categoryLabel:"任务大类:",stateLabel:"状态:",noFailReason:"暂无失败原因",stateAll:"全部",stateRunning:"进行中",stateCompleted:"已完成",stateFailed:"生成失败",fetchFailed:"获取任务列表失败",col:{taskClass:"任务大类",relatedObjects:"关联对象",model:"模型",describe:"描述",state:"状态",startTime:"时间",reason:"失败原因"},project:"项目名称:"},noVideo:"暂无视频",prompt:"视频提示词",generateText:"AI生成提示词",selectStoryboard:"选择分镜",generate:{noVideo:"暂无数据",prompt:"视频提示词",generateText:"AI生成提示词",selectStoryboard:"选择分镜",generate:"生成视频",history:"历史版本",generating:"生成中",generateFailed:"失败",selectAll:"全选",selected:"已选",batchGenerateText:"批量生成提示词",batchGenerateVideo:"批量生成视频",importVideo:"导入剪辑台",emptyTrack:"第{index}段",del:"删除",delConfirm:"确认删除该段?",selectSource:"选择来源",confirm:"从资产选择",cancel:"从分镜选择",generateSuccess:"视频生成成功",selectVideoFailed:"视频选择失败",selectVideoSuccess:"视频选择成功",selectTrackFirst:"请先选择分镜",noSelectedVideo:"没有选择的视频",generateConfirm:"确认生成",generateConfirmBody:"是否确认生成视频",generateVideosInBatches:"批量生成视频",generateStarted:"生成开始",promptEmpty:"勾选需要生成视频的数据有提示词为空,是否继续生成",skipDataWithEmptyVideoPromptWords:"需要生成的视频数据存在提示词为空",duration:"时长",resolution:"分辨率",delVideo:"确认删除此视频?",delSuccess:"删除成功",addReference:"添加参考",promptPlaceholder:"请输入视频提示词",downloadVideo:"批量下载视频",selectVideo:"请勾选需要下载的视频"}},zyi={slogan:"智能短剧创作平台",tips:"默认账号:admin / admin123",settings:"服务器设置",requestAddress:"请求地址",username:"用户名",password:"密码",login:"登录",usernameRequired:"请输入用户名",passwordRequired:"请输入密码",enterUsernameAndPassword:"请输入用户名或密码",loginSuccess:"登录成功",settingsSaved:"设置已保存"},Hyi={cancel:"取消",confirm:"确定",selectAssets:"选择资产",sessionExpired:"登录已过期,请重新登录",openSettings:"打开设置",cancelled:"已取消生成",defaultReel:"正文卷",save:"保存",submitting:"提交中",editSuccess:"修改成功",editFailed:"修改失败",submit:"提交"},$yi={prompt:"提示词"},Xyi={welcomeTitle:"欢迎使用 ToonFlow",welcomeDesc:"AI 驱动的漫画创作工作流平台,让我们花一分钟完成初始配置。",startConfig:"开始配置",skip:"跳过引导",configModel:"添加模型服务",configData:"配置 Agent",startUse:"开始使用",configModelTitle:"添加模型服务供应商",configModelDesc:"首先,你需要在设置中添加至少一个 AI 模型服务供应商(如 OpenAI、Claude 等),并填写对应的 API Key。",configModelTip:"点击下方按钮将打开设置页面的「模型服务」选项卡,添加供应商后回到此处继续。",configModelBtn:"前往配置模型服务",configAgentTitle:"分配 Agent 模型",configAgentDesc:"接下来,在 Agent 配置中为各个功能模块分配模型,这样系统才知道调用哪个模型来完成任务。",configAgentTip:"点击下方按钮将打开设置页面的「Agent 配置」选项卡,为各功能分配模型后回到此处。",configAgentBtn:"前往配置 Agent",finishTitle:"🎉 一切就绪!",finishDesc:"配置完成,现在你可以开始使用所有功能了。如需调整,随时可以在设置中修改。",qrcodeLabel:"加入微信交流群,获取更多帮助:",githubLabel:"如果觉得好用,请给我们一个 ⭐ Star 吧!",prevStep:"上一步",nextStep:"下一步",finish:"开始使用"},Gyi={skillManagement:{search:"搜索文件名",empty:"没有匹配的文件",edit:"编辑",selectOnTheLeft:"请从左侧选择文件"}},Yyi={assetsNotExists:"资产不存在",assets:{notExist:"资产不存在",notDerivativeExist:"衍生资产不存在",derivativeUpdateSuccess:"更新成功",derivativeState:"未生成",derivativeAddSuccess:"添加成功",derivativeDelSuccess:"删除成功",notGenerated:"未生成"},addSuccess:"更新成功",state:{unused:"未生成"},saveSuccess:"添加成功"},Zyi={generating:"生成中"},qyi={scanning:"🔍 正在解析加载Skill",scanComplete:"✨ Skill 扫描完成",inserted:"✅ 新增{count}个Skill",updated:"🔄 更新{count}个Skill",removed:"🗑️ 移除{count}个Skill",scannedFiles:"📁 扫描 {count} 个文件",noDescription:"📝 {count}个Skill缺少描述",noAttribution:"👤 {count}个Skill缺少归属",configWarning:"⚠️ Skill 配置警告",openSettings:"打开设置",scanFailed:"❌ 扫描失败",checkNetwork:"🔌 请检查网络连接或稍后重试",retryLater:"🔁 请稍后重试"},Kyi="生成视频",Jyi="历史版本",eCi="生成中",tCi="失败",nCi="全选",iCi="已选 ",rCi="导入视频",oCi="123",sCi="确认删除",aCi="确认删除该段?",lCi="选择来源",cCi="从资产选择",dCi="从分镜选择",uCi={newVersion:"有新版本,是否更新?"},hCi={components:jyi,settings:Wyi,workbench:Vyi,login:zyi,common:Hyi,"workbench.project.msg.enterProjectQuality":"请选择图片质量",promptManage:$yi,"workbench.production.node.storyboard.batchGenerateImage":"重新生成","workbench.production.node.storyboard.batchGenerateFailed":"生成失败","workbench.production.node.storyboard.batchGenerateSuccess":"开始生成分镜","workbench.production.node.storyboard.removeFailed":"删除分镜失败","workbench.production.node.storyboard.editNode":"编辑","workbench.production.node.storyboard.deleteNode":"删除","workbench.production.node.storyboard.confirmDeleteBody":"确认是否删除该分镜",hello:Xyi,setting:Gyi,storyboard:Yyi,productionAgent:Zyi,skillScan:qyi,generate:Kyi,history:Jyi,generating:eCi,generateFailed:tCi,selectAll:nCi,selected:iCi,importVideo:rCi,emptyTrack:oCi,del:sCi,delConfirm:aCi,selectSource:lCi,confirm:cCi,cancel:dCi,"workbench.script.msg.waitExtract":"等待提取","workbench.script.msg.exportSuccess":"导出成功","workbench.script.msg.exportFailed":"导出失败","workbench.production.node.storyboard.videoDescPlaceholder":"请输入视频描述","workbench.production.node.storyboard.videoDesc":"视频描述","workbench.production.node.assets.confirmDeleteBody":"确认是否删除该资产","workbench.production.node.assets.removeFailed":"删除资产失败",version:uCi,"workbench.production.generatedNode.localUpload":"本地上传","workbench.production.editImage.uploadFailed":"图片上传失败","workbench.production.editImage.noImage":"请先添加图片"},fCi={editMdPreivew:{title:"編輯",confirm:"儲存",cancel:"取消"},imageTools:{copy:"複製圖片",preview:"預覽",download:"下載",msg:{imageLoadFailed:"圖片載入失敗",convertFailed:"轉換失敗",copied:"已複製到剪貼簿",copyFailed:"複製失敗",downloadFailed:"下載失敗",downloadStarted:"開始下載",downloadBlockedOpenNewWindow:"目前的圖片來源可能限制下載,已嘗試在新視窗開啟"}},migrateShow:{title:"轉移資料",desc:"偵測到您有舊版本的資料,是否需要轉移?",hide:"不再顯示",confirm:"確定",msg:{migrateSuccess:"資料轉移成功",migrateFailed:"資料轉移失敗"}},modelSelect:{placeholder:"請選擇模型",type:{image:"圖片",text:"文字",video:"影片"},msg:{fetchModelFailed:"取得模型資料失敗:"},goSetting:"去設定中加入模型"},update:{title:"發現新版本",currentVersion:"目前版本:",latestVersion:"最新版本:",tip:"發現新版本,建議您更新以獲得更好的體驗",later:"稍後提醒",updateNow:"立即更新"}},gCi={title:"ToonFlow 設定",menu:{language:"語言設定",vendorConfig:"模型服務",agentConfig:"Agent 設定",promptManage:"提示詞管理",skillManagement:"Skills技能管理",memoryConfig:"Agent 記憶設定",loginConfig:"登入設定",dbConfig:"資料庫操作",fileManagement:"檔案管理",otherConfig:"其他設定",requestConfig:"請求網址",about:"檢查更新",logoutConfig:"登出",skillsSkillsManagement:"Skills技能管理"},language:{desc:"選擇介面顯示語言",msg:{saved:"語言設定已儲存"}},vendor:{addVendor:"新增供應商",noVendor:"暫無供應商,請先新增",required:"必填",optionalSection:"選填項目",modelSettings:"模型設定",addManually:"手動新增",test:"測試",edit:"編輯",delete:"刪除",deleteVendor:"刪除供應商",editCode:"編輯程式碼",updateConfig:"更新設定",addModel:"新增模型",editModel:"編輯模型",displayName:"顯示名稱",displayNamePlaceholder:"例如:GPT-4o",modelId:"模型 ID",modelIdPlaceholder:"例如:gpt-4o",modelType:"模型類型",multimodal:"多模態",supported:"支援",notSupported:"不支援",toolCall:"工具呼叫",imageMode:"圖片模式",videoMode:"影片模式",audioOutput:"音訊輸出",durationResolution:"時長 / 解析度對應",durationSec:"時長(秒)",resolution:"解析度",enterAndPress:"輸入後按下 Enter",addDurationResolution:"新增一組時長 / 解析度",testResult:"測試結果",generating:"正在生成中...",addVendorDialog:"新增供應商",codeEditorInfo:"請撰寫 TypeScript 程式碼設定供應商資訊",reset:"重設",importFile:"匯入檔案",textModel:"文字模型",imageModel:"圖片模型",videoModel:"影片模型",textToImage:"文字生成圖片",textToVideo:"文字生成影片",singleImage:"單圖",multiImage:"多圖模式",multiReference:"多圖參考",gridImage:"網格單圖",startEndRequired:"首尾影格(兩張必填)",endFrameOptional:"首尾影格(尾影格選填)",startFrameOptional:"首尾影格(首影格選填)",textRef:"文字",imageRef:"圖片",videoRef:"影片",audioRef:"音訊",audioOptional:"選填",audioOnly:"僅輸出有聲影片",noAudio:"僅輸出無聲影片",msg:{getVendorListFailed:"取得供應商列表失敗",vendorConfigUpdated:"供應商設定已更新",updateFailed:"更新失敗",highRiskConfirm:"⚠️ 高風險操作確認",addVendorRiskBody:"新增的 AI 供應商將賦予其存取系統 API 的權限,請確認您信任該供應商的程式碼來源!",iKnowRisk:"我了解風險",cancel:"取消",confirmAgain:"⚠️ 再次確認",addVendorConfirmBody:"確定要新增該供應商嗎?新增後它將參與系統的模型排程。",confirmAndAdd:"確認並新增",goBackCheck:"返回檢查",vendorAdded:"供應商已成功新增",addFailed:"新增失敗",updateVendorRiskBody:"更新 AI 供應商設定將修改其存取系統 API 的權限和行為,請確認您信任修改後的程式碼來源!",updateVendorConfirmBody:"確定要更新該供應商設定嗎?更新後將影響系統的模型排程。",confirmAndUpdate:"確認並更新",updateSuccess:"供應商設定更新成功",fillDisplayName:"請填寫顯示名稱",fillModelId:"請填寫模型 ID",selectImageMode:"請選擇圖片模式",selectVideoMode:"請選擇影片模式",groupPrefix:"第 {n} 組:",addDuration:"請新增時長",addResolution:"請新增解析度",selectVendorFirst:"請先選擇供應商",modelIdExists:"模型 ID 已存在",modelAdded:"模型已成功新增",modelUpdated:"模型已成功更新",enterApiKey:"請填寫 API KEY",enterApiUrl:"請填寫 API URL",testSuccess:"測試成功",imageGenSuccess:"圖片生成成功",videoGenSuccess:"影片生成成功",requestFailed:"請求失敗",deleteModelConfirm:"確認刪除模型",deleteModelBody:"刪除後不可恢復,是否繼續?",confirmDelete:"確認刪除",modelDeleted:"模型已刪除",deleteVendorConfirm:"確認刪除供應商",deleteVendorBody:"刪除後該供應商下所有模型將一併刪除,是否繼續?",vendorDeleted:"供應商已刪除",deleteFailed:"刪除失敗",enabled:"已啟用",disabled:"已停用",linkAddVendorRiskBody:"新增新的 AI 供應商將賦予其存取系統 ​​API 的權限,請確認您信任該供應商的連結來源!",importAdd:"新增新的 AI 供應商將賦予其存取系統 ​​API 的權限,請確認您信任該供應商的文件來源!",linkAddFailed:"連結新增失敗"},associationSkills:"關聯skills",think:"深度思考",code:"程式碼",linkAddPlaceholder:"輸入連結添加",noFileSelected:"成功導入文件",linkAdd:"確認"},agent:{bannerDesc:"使用 Toonflow 官方中繼網站,支援一鍵帶入設定,開箱即用,無需手動設定。",visitWebsite:"進入網站",fillKey:"填入 KEY",oneClickFill:"一鍵帶入",notOpen:"尚未開放",notConfigured:"尚未設定",modelConfig:"模型設定",confirm:"確認",cancel:"取消",selectModel:"選擇模型",fillKeyHeader:"填入 Toonflow 平台的官方 KEY",keyPlaceholder:"請輸入 KEY",save:"儲存",msg:{notAvailable:"該功能暫未開放,敬請期待",configSuccess:"設定成功",updateConfigFailed:"更新設定失敗:",keyValid:"KEY 有效,已成功連接 Toonflow 平台",keyInvalid:"KEY 無效,請檢查後重新輸入:",enterKey:"請輸入 KEY",saveFailed:"儲存失敗:",getAgentListFailed:"取得 Agent 設定列表失敗:"}},memory:{warning:"以下設定項目已預設為推薦值。除非您清楚了解各項設定的含義及影響,否則建議維持現有設定",vectorModelConfig:"向量模型設定",modelFilePath:"模型檔案路徑",quantizationType:"量化類型",quantizationPlaceholder:"請輸入量化類型",memoryParams:"記憶參數",messagesPerSummary:"觸發訊息壓縮筆數",messagesPerSummaryHelp:"保留最近 N 筆對話上下文。",shortTermLimit:"單次取得未壓縮訊息筆數",shortTermLimitHelp:"檢索時回傳的候選記憶筆數。",summaryMaxLength:"壓縮最大字元數",summaryMaxLengthHelp:"訊息壓縮時允許的最大字元數",summaryLimit:"允許查詢已壓縮訊息筆數",summaryLimitHelp:"允許查詢已壓縮訊息筆數",ragLimit:"搜尋記憶筆數",ragLimitHelp:"檢索時取得的訊息數。",deepRetrieveSummaryLimit:"向量召回壓縮訊息數",deepRetrieveSummaryLimitHelp:"檢索壓縮訊息內容時取得的訊息數。",saveConfig:"儲存設定",clearMemory:"清除記憶",restoreDefault:"還原預設設定",msg:{saved:"記憶設定已儲存",clearConfirmTitle:"確認清除記憶",clearConfirmBody:"該操作會清除 AI 全域記憶資料,且不可復原,是否繼續?",confirmClear:"確認清除",cancel:"取消",cleared:"記憶已清除",clearFailed:"清除記憶失敗"}},login:{username:"使用者名稱",usernamePlaceholder:"請輸入使用者名稱",password:"密碼",passwordPlaceholder:"請輸入密碼",modify:"修改",msg:{enterUsername:"請輸入使用者名稱",usernameLength:"使用者名稱長度為 2-20 個字元",enterPassword:"請輸入密碼",passwordLength:"密碼長度為 6-20 個字元",fetchFailed:"取得使用者資訊失敗",saveSuccess:"儲存成功",saveFailed:"儲存失敗"}},db:{clearDb:"清除資料庫",clearDbDesc:"清除所有資料表中的資料,保留資料表結構",clearData:"清除資料",confirmAction:"確認操作",msg:{clearDbTitle:"清除資料庫",firstConfirm:"確定要清除所有資料表嗎?資料清除後無法復原!",secondConfirm:"這是最後一次確認,清除後所有資料將永久遺失!",keyword:"清除",confirm:"確認",pleaseInput:"請輸入",cleared:"所有資料表已清除",operationFailed:"操作失敗,請重試",cancelled:"操作已取消"}},other:{requestTimeout:"請求逾時時間",seconds:"秒",inputSeconds:"請輸入秒",assetConcurrency:"資產生成並發數",count:"個",inputCount:"請輸入個數",chapterRegex:"章節拆分正規表示式",restoreDefault:"還原預設",regexPlaceholder:"請輸入正規表示式",canvasScroll:"畫布滾動",canvasIsDisabled:"畫布縮放",agentCanvasScalingMethod:"生產頁無限畫布滾輪操作",zoom:"縮放",scroll:"捲動",isInteracting:"生產頁無限畫布拖曳性能優化",closeIsInteracting:"關閉"},request:{warning:"若非特殊情況,不需要修改或者設定",apiAddress:"API 網址",apiPlaceholder:"請輸入 API 請求網址",save:"儲存",reset:"重設",msg:{enterApi:"請輸入 API 網址",validUrl:"請輸入有效的 HTTP/HTTPS 網址",saved:"請求網址儲存成功",reset:"已重設為預設網址",refreshFailed:"刷新失敗",refreshSuccess:"刷新成功"},refresh:"重新整理"},about:{slogan:"開源的 AI 驅動漫畫 / 分鏡創作工具",latestVersion:"目前為最新版本",checkUpdate:"檢查更新",codeRepository:"程式碼儲存庫",githubRepo:"GitHub 儲存庫",giteeRepo:"Gitee 儲存庫",versionUpdate:"版本更新",checkUpdateGithub:"檢查更新(GitHub)",getFromGithub:"從 GitHub Release 取得最新版本",checkUpdateGitee:"檢查更新(Gitee)",getFromGitee:"從 Gitee Release 取得最新版本",license:"授權條款",licenseDesc:"開源授權條款·點擊查看詳情",updateAvailable:"發現新版本",upToDate:"偵測到新版本",confirmReinstall:"複製連結",reinstallRequired:"將自動開啟瀏覽器並下載,如未開啟請手動開啟"},logout:{warning:"登出後,您需要重新登入才能繼續使用系統。",confirmLogout:"確定要登出嗎?",logout:"登出",msg:{logoutSuccess:"登出成功",logoutFailed:"登出失敗,請重試"}},file:{quickOpen:"快速開啟目錄",open:"開啟",dockerDesc:'Docker/前後端分離部署請前往 "/data/*" 目錄手動管理檔案。',desktopOnly:"該功能僅支援桌面版",folders:{data:"data",dataDesc:"資料目錄。",logs:"data/logs",logsDesc:"執行記錄與錯誤記錄。",oss:"data/oss",ossDesc:"檔案儲存相關資源。",skills:"data/skills",skillsDesc:"技能與提示設定檔。",models:"data/models",modelsDesc:"模型檔案與設定。",web:"data/web",webDesc:"Web 相關資源,如前端建置產物等。",serve:"data/serve",serveDesc:"後端服務相關檔案。"},openFailed:"開啟資料夾失敗"},skill:{scanSkills:"掃描Skills"},dev:{warning:"以下為開發者工具,謹慎操作!",openDevtool:"打開",devtoolsDoc:"文件地址",devtoolsDesc:"開啟後會在Toonflow安裝目錄建立.devtools資料夾,請確保Toonflow有寫入權限(管理員身分執行)。",openDevtoolFailed:"開啟開發者工具失敗,請確保已安裝Toonflow桌面端",notInElectron:"WEB環境請手動開啟瀏覽器控制台"}},mCi={selectProject:"請選擇專案",menu:{myProject:"我的專案",taskCenter:"任務中心",novel:"小說原文",scriptAgent:"劇本 Agent",scriptManage:"劇本管理",cornerScape:"塑造角色與場景",production:"影片製作",assetCenter:"資產中心",settings:"設定",jumpGithub:"跳轉Github",feedbackQuestions:"回饋問題"},project:{title:"我的專案",subtitle:"管理您的所有短劇專案",newProject:"建立專案",dialog:{editTitle:"編輯專案",addTitle:"建立專案",save:"儲存",ok:"確定",cancel:"取消",projectType:"專案類型",selectType:"選擇專案類型",basedOnNovel:"基於小說原文",basedOnScript:"基於劇本",projectName:"專案名稱",projectNamePh:"請輸入專案名稱",novelType:"小說類型",novelTypePh:"例如:玄幻、科幻、言情",artStyle:"視覺手冊",selected:"已選:",selectArtStyle:"請選擇視覺手冊",newArtStyle:"新視覺手冊",loading:"載入中...",videoRatio:"影片比例",novelIntro:"小說簡介",novelIntroPh:"請輸入小說簡介",editArtStyleTitle:"編輯視覺手冊",newArtStyleTitle:"新視覺手冊",artStyleName:"視覺手冊名稱",artStyleNamePh:"請輸入視覺手冊名稱",artStyleImage:"視覺手冊封面",remove:"移除",uploadCover:"上傳封面",artStylePrompt:"視覺手冊提示詞",aiExtract:"AI 萃取提示詞",promptPlaceholder:"描述視覺手冊提示詞,用於產生圖片時指定視覺手冊",visualManual:"視覺手冊",newVisualManual:"新視覺手冊",editVisualManualTitle:"編輯視覺手冊",newVisualManualTitle:"新視覺手冊",visualManualName:"視覺手冊名稱",visualManualNamePh:"請輸入視覺手冊名稱",visualManualCover:"視覺手冊封面",visualManualPrompt:"視覺手冊提示詞",modelData:"選擇圖片模型",videoModelData:"選擇視訊模型",prompt:{placeholder:"輸入提示詞",saveSuccess:"更新成功",title:"提示詞"},mdFile:"視覺手冊文件",directorManual:"導演手冊",addDirectorManual:"新導演手冊",editingDirectorManual:"編輯導演手冊",newDirecorManualTitle:"新導演手冊",directorManualPrompt:"導演手冊提示詞",directorManualName:"導演手冊名稱",directorFile:"導演手冊文件",directorManualCover:"導演手冊封面"},msg:{fetchFailed:"取得專案列表失敗",notFound:"找不到該專案!",editSuccess:"編輯專案成功",editFailed:"編輯專案失敗",addSuccess:"新增專案成功",addFailed:"新增專案失敗",deleteHeader:"刪除專案",deleteBody:"確定要刪除該專案嗎?",deleteConfirm:"刪除",deleteCancel:"取消",deleteSuccess:"刪除專案成功",deleteFailed:"刪除專案失敗",extractSuccess:"提示詞萃取成功",extractFailed:"萃取失敗",enterArtStyleName:"請輸入視覺手冊名稱",artStyleUpdated:"視覺手冊已更新",artStyleAdded:"視覺手冊已添加",operationFailed:"操作失敗",enterVisualManualName:"請輸入視覺手冊名稱",enterVisualManualImage:"請上傳視覺手冊封面圖片",enterVisualManualTabData:"提示詞不能為空",visualManualUpdated:"視覺手冊已更新",visualManualAdded:"視覺手冊已添加",deleteVisualManualHeader:"刪除視覺手冊",deleteVisualManualBody:"確定要刪除視覺手冊「{name}」嗎?",deleteVisualManualConfirm:"刪除",deleteVisualManualCancel:"取消",emptyFields:"參數缺失",enterProjectName:"請輸入項目名稱",enterProjectIntro:"請輸入小說簡介",enterProjectType:"請輸入項目類型",enterArtStyle:"請選擇項目視覺手冊",enterVideoRatio:"請選擇影片比例",enterImageModel:"請選擇圖片模型",enterVideoModel:"請選擇視訊模型",visualManualDeleted:"刪除成功",selectMode:"請選擇模式",deleteDirectorManualHeader:"刪除導演手冊",deleteDirectorManualBody:"確定要刪除導演手冊「{name}」嗎?",directorManualUpdated:"導演手冊已更新",directorManualAdded:"導演手冊已添加",directorManual:"請選擇項目導演手冊"},type:{novel:"基於小說原文",script:"基於小說劇本"}},novel:{importText:"匯入原文",batchDelete:"批次刪除",eventAnalysis:"事件分析",searchPlaceholder:"搜尋原文名稱...",search:"搜尋",generating:"生成中...",genFailed:"生成失敗",none:"無",edit:"編輯",delete:"刪除",col:{id:"序號",reel:"卷",chapter:"章節名稱",chapterData:"章節內容",event:"事件",operation:"操作"},msg:{batchDeleteHeader:"批次刪除",batchDeleteBody:"確定要刪除選定的 {count} 筆資料嗎?",batchDeleteSuccess:"批次刪除成功",deleteHeader:"刪除確認",deleteBody:"確定要刪除章節名稱為「{name}」的資料嗎?",deleteSuccess:"刪除成功",eventAnalysisHeader:"事件分析",eventAnalysisBody:"確定要對選定的 {count} 筆資料進行事件分析嗎?"},import:{title:"上傳小說原文",step1:"第一步",step2:"第二步",step3:"第三步",dragUpload:"拖曳小說原文檔案到此處或點擊上傳",uploadHint:"支援 .txt, .docx 格式,建議檔案大小不超過 10MB",or:"或",pasteLabel:"直接貼上小說原文內容",pastePlaceholder:"請輸入小說原文內容",chars:"字元",tooShort:"內容過短,建議至少 100 字元",parsedChapters:"已解析 {count} 章節",nextStep:"下一步",prevStep:"上一步",selectedInfo:"已勾選:{count} 字 (小於 200000 字)",eventAnalysis:"事件分析",saveAndAnalyze:"儲存原文並分析事件",col:{chapter:"章",reel:"卷",chapterName:"章節名稱",chapterData:"章節內容"},msg:{parseFailed:"檔案解析失敗,請重新上傳",selectFile:"選擇文件",docNotSupported:".doc檔案不支援解析,請轉換為.ts文件",unsupportedType:"不支援的檔案類型",fileTooLarge:"檔案大小超過 10MB,請上傳更小的檔案",selectChapters:"請先勾選章節",saveSuccess:"小說原文儲存成功"},importAdd:"拖曳文件到此處或點擊上傳",limit:"支援 .ts格式"},editDialog:{title:"編輯小說原文",chapterName:"章節名稱",chapterNamePh:"請輸入章節名稱",eventContent:"事件內容",eventContentPh:"輸入事件內容",chapterContent:"章節內容",chapterContentPh:"請輸入章節內容",cancel:"取消",save:"儲存",msg:{updateSuccess:"小說原文更新成功"}},event:{regenerate:"重新生成事件",batchDelete:"批次刪除",noData:"暫無事件資料,點擊開始生成",generate:"生成事件",generatingHint:"事件生成中,請稍候...",loading:"載入中...",delete:"刪除",col:{id:"事件 ID",eventName:"事件名稱",chapters:"來源章節",detail:"事件過程",createTime:"建立時間",operation:"操作"},msg:{deleteHeader:"刪除事件",deleteBody:"確定要刪除這個事件嗎?",deleteSuccess:"刪除成功",generateSuccess:"事件生成成功",batchDeleteHeader:"批次刪除",batchDeleteBody:"確定要刪除選定的 {count} 筆資料嗎?",batchDeleteSuccess:"批次刪除成功"}},analysis:{analyzeFirst:"請先分析事件",startAnalysis:"開始分析",chapterHeader:"第{index}章 - {name}",analyzing:"事件分析中"}},scriptAgent:{inputPlaceholder:"請輸入內容",chapterEvents:"章節事件",clearMessageMemory:"清除訊息記憶",clearSummaryMemory:"清除摘要記憶",clearAllMemory:"清除全部記憶",edit:"編輯",storySkeleton:"故事骨架",adaptationStrategy:"改編策略",script:"劇本",noContent:"暫無內容",relatedAssets:"關聯資產",editScript:"編輯劇本",save:"儲存",scriptTitle:"標題",titlePlaceholder:"請輸入標題",content:"內容",contentPlaceholder:"請輸入劇本內容",selectAssets:"選擇資產",noAssets:"暫未關聯資產",selectAssetsTitle:"選擇關聯資產",welcomeMsg:"你好!我是 Toonflow 智慧助手,需要我開始為您生成劇本嗎?",start:"開始",memoryType:{message:"訊息記憶",summary:"摘要記憶",all:"全部記憶"},msg:{clearConfirm:"確認清除",clearBody:"確定要清除{type}嗎?此操作無法復原。",confirmClear:"確認清除",cancel:"取消",memoryCleared:"{type}已清除",scriptUpdated:"劇本更新成功",scriptUpdateFailed:"更新劇本失敗,請稍後再試",searchScriptFailed:"搜尋劇本失敗",updated:"保存成功",error:"保存失敗",reconnect:"重新連接",notReconnect:"重新連結對話會被切斷是否確認",keepReconnect:"確認",deleteConfirm:"刪除確認",deleteBody:"刪除正文",confirmDelete:"確認刪除",scriptDeleted:"腳本已刪除"},reconnect:"重新連接"},cornerScape:{batchSettings:"批次生成設定",quickActions:"捷徑指令",selectUngenerated:"全選未生成項目",selectGenerated:"全選已生成項目",selectFailed:"全選錯誤項目",invertSelection:"反選",clearSelection:"取消選擇",batchPreview:"批次預覽圖片",assetTypeFilter:"素材類型篩選",genModel:"生成模型",resolution:"解析度",resolutionPh:"請選擇解析度",concurrency:"並發數量",concurrencyPh:"請輸入並發數",startBatch:"開始批量生成圖片",waitingGen:"等待生成",generating:"生成中",genFailed:"生成失敗",imageError:"圖片錯誤",typeRole:"角色",typeScene:"場景",typeTool:"工具",typeUnknown:"未知",descriptionSuffix:"描述:",operateScriptFirst:"請先操作劇本",individualConfig:"獨立設定",noImage:"暫無圖片",promptLabel:"提示詞",promptPh:"請輸入提示詞",aiPolish:"AI 潤飾",regenerate:"重新生成",filterRole:"人物",filterScene:"場景",filterTool:"道具",unnamed:"未命名",noDescription:"無描述",msg:{selectModel:"請選擇生成模型",selectResolution:"請選擇解析度",enterPrompt:"請輸入提示詞",enterPromptFirst:"請先輸入提示詞",genSuccess:"{name} 生成成功",genFailed:"{name} 生成失敗",promptGenSuccess:"提示詞生成成功",polishFailed:"潤飾失敗,請重試",selectAtLeastOne:"請至少選擇一個資產進行批次生成",batchStarted:"開始批次生成,共 {count} 個,並發數 {concurrent}",batchItemFailed:"{name} 生成失敗:{error}",batchComplete:"批次生成完成",batchFailed:"批量生成失敗",replaceFailed:"替換失敗",replaceSuccess:"替換成功",promptGenFail:"提示詞生成失敗",saveSuccess:"修改提示詞成功",saveFailed:"提示詞修改失敗"},history:"歷史圖片",confirmReplace:"確認替換",batchGenerationPrompt:"大量生成提示詞",generatingPrompt:"生成中",selectPromptEmpty:"全選提示詞為空",noEmptyPrompt:"沒有提示詞為空的資產",selectedCount:"已選取{count}個資產"},script:{searchPlaceholder:"搜尋劇本名稱...",search:"搜尋",addScript:"建立劇本",cancelSelectAll:"取消全選",selectAll:"全選",exportScript:"匯出劇本",msg:{searchFailed:"搜尋劇本失敗",selectExport:"請先選擇要匯出的劇本",exportSuccess:"匯出成功",exportFailed:"匯出劇本失敗",deleteHeader:"確認刪除",deleteBody:"確定要刪除這個劇本嗎?此操作無法復原。",deleteConfirm:"刪除",cancel:"取消",deleteSuccess:"刪除成功",deleteFailed:"刪除失敗",selectDelScript:"請選擇刪除劇本",batchDeleteHeader:"批量刪除",batchDeleteBody:"確定要刪除選中的 {count} 個劇本嗎?此操作無法復原。",batchDeleteSuccess:"批量刪除成功",extractingInProgress:"正在提取中",projectNotFound:"項目未找到",selectsExport:"請選擇匯出劇本"},add:{title:"新增劇本",scriptName:"劇本名稱",scriptNamePh:"請輸入劇本名稱",uploadFile:"上傳檔案",dragUpload:"拖曳劇本檔案到此處或點擊上傳",uploadHint:"支援 .txt, .docx 格式,建議檔案大小不超過 10MB",scriptContent:"劇本內容",scriptContentPh:"請上傳或輸入劇本內容...",relatedAssets:"關聯資產",selectAssets:"選擇資產",noAssets:"暫未關聯資產",cancel:"取消",confirm:"確認",msg:{fileReadFailed:"檔案讀取失敗",docNotSupported:".doc 檔案不支援解析,請轉換為 .txt 或 .docx 檔案",unsupportedType:"不支援的檔案類型",fileTooLarge:"檔案大小超過 10MB,請上傳更小的檔案",parsing:"檔案解析中...",parseFailed:"檔案解析失敗,請重新上傳",selectAssetsTitle:"選擇關聯資產",enterContent:"請上傳或輸入劇本內容",enterName:"請輸入劇本名稱",addSuccess:"劇本新增成功",addFailed:"新增劇本失敗,請稍後再試"}},edit:{title:"劇本詳情",scriptName:"劇本名稱",scriptNamePh:"請輸入劇本名稱",scriptContent:"劇本內容",scriptContentPh:"請輸入劇本內容...",relatedAssets:"關聯資產",selectAssets:"選擇資產",noAssets:"暫未關聯資產",msg:{selectAssetsTitle:"選擇關聯資產",updateSuccess:"劇本更新成功",updateFailed:"更新劇本失敗,請稍後再試"}},deleteScript:"大量刪除劇本",extractAssets:""},assets:{addPrefix:"新增",batchGenerate:"批次生成",generatePrompt:"生成提示詞",generateImage:"生成圖片",batchDelete:"批次刪除",searchPlaceholder:"搜尋資產名稱...",search:"搜尋",preview:"預覽",generate:"生成",edit:"編輯",delete:"刪除",generating:"生成中",play:"播放",mediaPreview:"媒體預覽",confirmBatch:"是否確認{type}!",model:"模型",resolution:"解析度",resolutionPh:"請選擇解析度",batchGenPrompt:"批次生成提示詞",batchGenImage:"批次生成圖片",role:"角色",prop:"道具",scene:"場景",clip:"素材",uploadSuccess:"上傳成功",selectAtLeastOne:"請至少選擇一個資產",noDescription:"無描述",promptGenSuccess:"「{name}」提示詞生成成功",promptGenFail:"「{name}」提示詞生成失敗:{error}",selectModel:"請選擇模型",selectResolution:"請選擇解析度",noPromptForImage:"「{name}」沒有提示詞,無法生成圖片",imageGenSuccess:"「{name}」圖片生成成功",imageGenFail:"「{name}」圖片生成失敗:{error}",confirmDeleteHeader:"確認刪除",confirmBatchDeleteBody:"確定要批次刪除這些資產嗎?此操作無法復原。",confirmDeleteBody:"確定要刪除這個資產嗎?此操作無法復原。",deleteBtn:"刪除",cancelBtn:"取消",deleteSuccess:"資產刪除成功",deleteFail:"資產刪除失敗",colPreview:"預覽",colName:"名稱",colPrompt:"提示詞",colDescribe:"描述",colRemark:"備註",colCreateTime:"建立時間",colOperation:"操作",add:{name:"名稱",namePh:"請輸入名稱",describe:"描述",describePh:"請輸入描述",remark:"備註",remarkPh:"請輸入備註",prompt:"提示詞",promptPh:"請輸入提示詞",nameRequired:"請輸入名稱",describeRequired:"請輸入詳情",remarkRequired:"請輸入備註",updateSuccess:"資產更新成功",addSuccess:"資產新增成功"},gen:{header:"圖片生成",uploadRef:"上傳參考圖片",optional:"選填",promptLabel:"生圖提示詞",smartGenerate:"智能生成",generatingPrompt:"智能生成提示詞中...",promptPlaceholder:"描述您想要生成的圖片內容,例如:一個充滿科技感的未來城市,霓虹燈閃爍,賽博龐克風格...",selectModel:"選擇模型",selectResolution:"選擇解析度",generateBtn:"生成圖片",resultTitle:"生成結果",generatedCount:"已生成 {count} 張,請選擇一張",generatingLabel:"生成中...",genFailed:"生成失敗",confirmSelect:"確認選擇",promptSuccess:"提示詞生成成功",promptFail:"提示詞生成失敗",fillPrompt:"請填寫提示詞",pickResolution:"請選擇解析度",pickModel:"請選擇模型",unnamed:"未命名",assetGenSuccess:"資產生成成功",assetGenFail:"資產生成失敗",uploadOk:"上傳成功",imageSelected:"已選擇該圖片",imageDeleted:"已刪除該圖片",imageSaved:"圖片已儲存",completed:"已完成"},batch:{header:"批次生成",selected:"已選擇 {count} 項",selectAll:"全選",clearSelection:"清除選擇",inputPh:"請輸入內容",saveSelected:"儲存選取項目 ({count})",colPreviewImg:"預覽圖",selectToSave:"請選擇要儲存的項目",saveSuccess:"儲存成功",saveFail:"儲存失敗,請重試",promptDone:"提示詞生成完成",promptFail:"提示詞生成失敗",missingPrompts:"有 {count} 個資產缺少提示詞,請先生成提示詞",imageDone:"圖片生成完成",imageGenFail:"圖片生成失敗",unknownError:"未知錯誤",promptGenCancelled:"已取消生成"}},production:{selectPlaceholder:"請選擇劇集",edit:"編輯",node:{script:{title:"劇本",editDialog:"編輯劇本"},scriptPlan:{title:"拍攝計畫",editDialog:"編輯拍攝計畫"},storyboard:{title:"分鏡面板",notGenerated:"未生成",scaleRatio:"縮放比例",gridPreview:"九宮格預覽",noPreviewImages:"暫無可預覽的圖片",loadFailed:"載入失敗: {src}",imageLoadFailed:"圖片載入失敗",promptPlaceholder:"請輸入提示詞",prompt:"提示詞",editInfo:"提示詞修改"},storyboardTable:{title:"分鏡表",editDialog:"編輯分鏡表"},assets:{title:"衍生資產",generateFailed:"生成失敗",notGenerated:"未生成",originalAsset:"原資產",derived:"衍生",noDerivedAssets:"無衍生資產"},poster:{title:"影片封面",coverCount:"{count} 張"},workbench:{title:"影片工作區"}},editImage:{upload:"上傳",generate:"生成",saveFailed:"儲存失敗,請重試",fetchFailed:"取得資料失敗",generating:"生成中...",deleteNode:"刪除節點",ratio:"比例",quality:"畫質",generateBtn:"生成圖片",selectImage:"選擇圖片",imageGeneration:"圖片生成",promptPlaceholder:"描述你想要生成的圖片...",imageRef:"圖{index}",noReferences:"暫無可引用的參考圖",selectModel:"請先選擇模型",selectQuality:"請選擇畫質",selectRatio:"請選擇比例",generateFailed:"生成失敗",generateFirst:"請先生成圖片",generatedResult:"生成結果",waitingGenerate:"等待生成",uploadImage:"資產圖片上傳",mode:"模式",closeConfirmTitle:"關閉確認標題",closeConfirmBody:"關閉之後未儲存的資料會遺失"},save:"選取",cancel:"取消",chatBox:{inputPlaceholder:"輸入訊息...",generateDerivedAssets:"生成衍生資產",welcomeMessage:"你好!我是你的 AI 助手,有什麼可以幫你的嗎?",adjustModel:"調整模型",startMakingVideo:"開始製作影片",startMakingVideoPrompt:"請幫我開始製作影片",clearMessageMemory:"清除訊息記憶",clearSummaryMemory:"清除摘要記憶",clearAllMemory:"清除所有記憶",messageMemory:"訊息記憶",summaryMemory:"摘要記憶",allMemory:"所有記憶",confirmClear:"清除記憶",confirmClearBody:"確定要清除{type}嗎?",confirmClearBtn:"確定清除",memoryCleared:"{type}已清除"},wb:{quickPreview:"快速預覽",videoGeneration:"分鏡台",videoEditing:"剪輯台",hint:"提示",extractLines:"是否從影片中提取台詞?",no:"否",confirm:"確定",extractLinesQuestion:"是否從影片中提取台詞作為字幕?",importingLoading:"正在匯入中,請稍候...",mainTrackVideo:"主軌道(影片)",subtitle1:"字幕1",stereo441:"44.1kHz 立體聲",mono16:"16kHz 單聲道",sampleImage1:"範例圖片 1"},preview:{noImage:"暫無圖片",storyboardDesc:"分鏡描述",serialNumber:"序號",noDescription:"暫無描述",duration:"時長",seconds:"秒",relatedAssets:"涉及資產",role:"角色",prop:"道具",scene:"場景",noCharacters:"暫無出場人物",imagePrompt:"圖片提示詞",selectAll:"全選",exportImage:"匯出圖片",sceneDescription:"畫面描述",promptLabel:"提示詞",restoreSort:"還原排序",restoreSortConfirm:"確定要還原為初始排序嗎?",tip:"提示",selectAtLeastOne:"請至少選擇一個分鏡進行匯出",exportFilename:"分鏡圖片"},generate:{noVideo:"暫無影片",videoPrompt:"影片提示詞",promptPlaceholder:"輸入提示詞,描述你想要生成的影片內容...",refImage:"參考圖",image:"圖片",refVideo:"參考影片",refImageLabel:"參考圖片",refAudio:"參考音訊",muteAudio:"關閉音訊",enableAudio:"開啟音訊",resolution:"解析度",duration:"時長",generate:"生成",historyVersions:"歷史版本",refresh:"重新整理",confirmSelection:"確認選取項目",noHistory:"暫無歷史記錄",generating:"生成中",generateFailed:"生成失敗",selectAll:"全選",videoTrack:"影片軌道",batchGenerate:"批次生成",importToEditor:"匯入剪輯台",modeSingleImage:"單圖",modeMultiImage:"多圖",modeGridImage:"網格多圖",modeStartEnd:"首尾影格",modeText:"文字生成影片",modeVideoRef:"影片參考",modeImageRef:"圖片參考",modeAudioRef:"音訊參考",modeTextRef:"文字參考",startFrame:"首影格",startFrameOptional:"首影格(選填)",endFrame:"尾影格",endFrameOptional:"尾影格(選填)",selectRefImage:"選擇參考圖",selectRefImages:"選擇參考圖片",selectEndFrame:"選擇尾影格圖",selectRefVideoAsset:"選擇參考影片",selectRefAudioAsset:"選擇參考音訊",selectRefImageAsset:"選擇參考圖片",selectImageSource:"選擇圖片來源",fromStoryboard:"分鏡圖",fromStoryboardDesc:"從分鏡列表中選擇圖片",fromAssets:"資產圖",fromAssetsDesc:"從資產庫中選擇圖片",confirmDelete:"確認刪除",confirmDeleteBody:"確定要刪除這個影片嗎?此操作無法復原。",delete:"刪除",cancel:"取消",deleteSuccess:"影片刪除成功",deleteFailed:"刪除失敗",selectVideoFirst:"請先選擇一個影片",confirmSuccess:"確認選取成功",batchSubmitted:"已送出批次生成請求,正在處理中...",configNotFound:"設定不存在",pollingFailed:"視訊狀態查詢失敗,請手動刷新",batchGeneratePrompt:"大量生成提示詞",batchPromptEmpty:`分鏡 {name} 有空視訊提示。 請先生成或填寫提示`,modelEmpty:"請先選擇影片生成模型",generatingPrompt:"智慧生成提示詞中"},editVideo:{reset:"重設",undo:"復原",redo:"重做",split:"分割",delete:"刪除",rendering:"算圖渲染中...",exportVideo:"匯出影片",exportSuccess:"影片匯出完成",exportFailed:"匯出失敗",sampleSubtitle:"範例字幕文字",customText:"自訂文字內容",transitionBetweenClips:"轉場需要加入在兩個相鄰的片段之間",transitionExists:"該位置已存在轉場",videoPreviewArea:"影片預覽區域",clipMaterials:"剪輯素材",propertyPanel:"屬性面板",selectClip:"選擇一個片段查看屬性",basicInfo:"基本資訊",name:"名稱",clipNamePlaceholder:"片段名稱",startTime:"開始",endTime:"結束",totalDuration:"總時長",videoProperties:"影片屬性",opacity:"不透明度",volume:"音量",playbackSpeed:"播放速度",audioProperties:"音訊屬性",fadeIn:"淡入",fadeOut:"淡出",transitionProperties:"轉場屬性",transitionType:"轉場類型",transFade:"淡入淡出",transSlide:"滑動",transWipe:"擦除",transDissolve:"溶解",transZoom:"縮放",transRotate:"旋轉",transitionDuration:"轉場時長",subtitleProperties:"字幕屬性",textContent:"文字內容",fontSize:"字體大小",copy:"複製",deleteConfirm:"刪除確認",deleteClipConfirm:"確定要刪除這個片段嗎?",avCanvasNotInit:"AVCanvas 尚未初始化",noExportContent:"沒有可匯出的內容",exportProject:"匯出專案",transitionAdded:"已加入轉場: {name}",splitClip:"分割片段",deleteClip:"刪除片段",addClip:"新增 {name}",duplicateClip:"複製片段",addTransition:"加入轉場",updateClip:"更新片段 {key}",updatePlaybackRate:"更新播放速度為 {rate}x",updateTransitionDuration:"更新轉場時長",playbackRateRange:"播放速度必須在 0.1 到 10 之間",updatePlaybackRateFailed:"更新播放速度失敗:",importProject:"匯入專案",import:"匯入"},clipType:{video:"影片",audio:"音訊",subtitle:"字幕",transition:"轉場",sticker:"貼紙",filter:"濾鏡",effect:"特效"},track:{video:"影片",image:"圖片",audio:"音訊",subtitle:"字幕",text:"文字",sticker:"貼紙",filter:"濾鏡",effect:"特效"},transition:{fade:"淡入淡出",slide:"滑動",slideLeft:"向左滑動",slideRight:"向右滑動",slideUp:"向上滑動",slideDown:"向下滑動",wipe:"擦除",wipeLeft:"向左擦除",wipeRight:"向右擦除",wipeUp:"向上擦除",wipeDown:"向下擦除",dissolve:"溶解",zoom:"縮放",zoomIn:"放大",zoomOut:"縮小",rotate:"旋轉",circle:"圓形",diamond:"菱形",clock:"時鐘",blur:"模糊"},media:{titleText:"標題文字",subtitleText:"字幕文字",customText:"自訂文字",media:"媒體",image:"圖片",audio:"音訊",subtitle:"字幕",transition:"轉場",effect:"特效",filter:"濾鏡",loading:"載入中...",subtitlePreview:"字",video:"影片"},effect:{fadeIn:"淡入",fadeOut:"淡出",flash:"閃爍",shake:"抖動",zoomIn:"放大進入",zoomOut:"縮小退出",pulse:"脈衝",rotateIn:"旋轉進入",sticker1:"貼紙 1",sticker2:"貼紙 2"},filter:{grayscale:"黑白",sepia:"復古",warm:"暖色",cool:"冷色",vivid:"鮮豔",bright:"明亮",highContrast:"高對比",blur:"模糊",invert:"反色",semiTransparent:"半透明"},guideSwitchEpisode:"切換劇集",guideSwitchEpisodeBody:"切換劇集移到這裡了喔",autoLayoutLR:"自動排版-左右佈局",autoLayoutTB:"自動排版-上下佈局",getFlowData:"刷新工作區",confirm:"切換劇集確認",confirmEpisodesSwitch:"目前任務仍在進行中,切換劇集會重連會話,是否繼續切換?"},task:{title:"任務列表",subtitle:"您的最新任務執行紀錄",refresh:"重新整理",categoryLabel:"任務大類:",stateLabel:"狀態:",noFailReason:"暫無失敗原因",stateAll:"全部",stateRunning:"進行中",stateCompleted:"已完成",stateFailed:"生成失敗",fetchFailed:"取得任務列表失敗",col:{taskClass:"任務大類",relatedObjects:"關聯物件",model:"模型",describe:"描述",state:"狀態",startTime:"時間",reason:"失敗原因"},project:"項目名稱:"},noVideo:"暫無影片",prompt:"影片提示詞",generateText:"AI生成提示詞",selectStoryboard:"選擇分鏡",generate:{noVideo:"暫無影片",generateText:"AI生成提示詞",selectStoryboard:"選擇分鏡",generate:"產生影片",history:"歷史版本",generating:"生成中",generateFailed:"失敗",selectAll:"全選",selected:"已選",batchGenerateText:"大量生成提示詞",batchGenerateVideo:"大量生成視頻",importVideo:"導入剪輯台",emptyTrack:"第{index 1}段",del:"刪除",delConfirm:"確認刪除該段?",selectSource:"選擇來源",confirm:"從資產選擇",cancel:"從分鏡選擇",selectVideoFailed:"視訊選擇失敗",selectVideoSuccess:"影片選擇成功",selectTrackFirst:"請先選擇分鏡",noSelectedVideo:"沒有選擇的視頻",generateConfirm:"確認生成",generateConfirmBody:"是否確認生成視頻",generateVideosInBatches:"大量生成視頻",generateStarted:"生成開始",promptEmpty:"勾選需要產生影片的資料有提示詞為空,是否繼續生成",skipDataWithEmptyVideoPromptWords:"需要產生的影片資料存在提示詞為空",duration:"時長",resolution:"解析度",delVideo:"確認刪除此影片?",delSuccess:"刪除成功",addReference:"新增參考",promptPlaceholder:"請輸入影片提示詞",downloadVideo:"批量下載視頻",selectVideo:"請勾選需要下載的視頻"}},kCi={slogan:"智慧短劇創作平台",tips:"預設帳號:admin / admin123",settings:"伺服器設定",requestAddress:"請求網址",username:"使用者名稱",password:"密碼",login:"登入",usernameRequired:"請輸入使用者名稱",passwordRequired:"請輸入密碼",enterUsernameAndPassword:"請輸入使用者名稱或密碼",loginSuccess:"登入成功",settingsSaved:"設定已儲存"},vCi={prompt:"提示詞"},ACi={welcomeTitle:"歡迎使用 ToonFlow",welcomeDesc:"AI 驅動的漫畫創作工作流程平台,讓我們花一分鐘完成初始設定。",startConfig:"開始配置",skip:"跳過引導",configModel:"新增模型服務",configData:"配置 Agent",startUse:"開始使用",configModelTitle:"新增模型服務供應商",configModelDesc:"首先,你需要在設定中新增至少一個 AI 模型服務供應商(如 OpenAI、Claude 等),並填寫對應的 API Key。",configModelTip:"點擊下方按鈕將開啟設定頁面的「模型服務」選項卡,新增供應商後回到此處繼續。",configModelBtn:"前往配置模型服務",configAgentTitle:"分配 Agent 模型",configAgentDesc:"接下來,在 Agent 配置中為各個功能模組分配模型,這樣系統才知道要呼叫哪個模型來完成任務。",configAgentTip:"點擊下方按鈕將開啟設定頁面的「Agent 設定」標籤,為各功能指派模型後回到此處。",configAgentBtn:"前往配置 Agent",finishTitle:"🎉 一切就緒!",finishDesc:`配置完成,現在你可以開始使用所有功能了。 -如需調整,隨時可以在設定中修改。`,qrcodeLabel:"加入微信交流群,獲得更多協助:",githubLabel:"如果覺得好用,請給我們一個 ⭐ Star 吧!",prevStep:"上一步",nextStep:"下一步",finish:"開始使用"},pCi={skillManagement:{search:"搜尋檔案名稱",empty:"沒有匹配的文件",edit:"編輯",selectOnTheLeft:"請從左側選擇文件"}},bCi={save:"儲存",submitting:"提交中",editSuccess:"修改成功",editFailed:"修改失敗",submit:"提交"},wCi={assets:{notExist:"資產不存在",notDerivativeExist:"衍生資產不存在",derivativeUpdateSuccess:"更新成功",derivativeState:"未生成",derivativeAddSuccess:"添加成功",derivativeDelSuccess:"刪除成功",notGenerated:"未生成"},addSuccess:"更新成功",state:{unused:"未生成"},saveSuccess:"添加成功"},OCi={generating:"生成中"},yCi={scanning:"🔍 正在解析載入Skill",scanComplete:"✨ Skill 掃描完成",inserted:"✅ 新增{count}個Skill",updated:"🔄 更新{count}個Skill",removed:"🗑️ 移除{count}個Skill",scannedFiles:"📁 掃描 {count} 個檔案",noDescription:"📝 {count}個Skill缺少描述",noAttribution:"👤 {count}個Skill缺少歸屬",configWarning:"⚠️ Skill 配置警告",openSettings:"打開設定",scanFailed:"❌ 掃描失敗",checkNetwork:"🔌 請檢查網路連線或稍後重試",retryLater:"🔁 請稍後重試"},CCi="產生影片",_Ci="歷史版本",SCi="生成中",LCi="失敗",xCi="全選",ECi="已選",TCi="導入影片",QCi="第{index 1}段",DCi="確認刪除",BCi="確認刪除該段?",RCi="選擇來源",ICi="從資產選擇",MCi="從分鏡選擇",PCi={newVersion:"有新版本,是否更新?"},FCi={components:fCi,settings:gCi,workbench:mCi,login:kCi,promptManage:vCi,hello:ACi,setting:pCi,common:bCi,storyboard:wCi,productionAgent:OCi,skillScan:yCi,generate:CCi,history:_Ci,generating:SCi,generateFailed:LCi,selectAll:xCi,selected:ECi,importVideo:TCi,emptyTrack:QCi,del:DCi,delConfirm:BCi,selectSource:RCi,confirm:ICi,cancel:MCi,"workbench.script.msg.exportFailed":"匯出失敗","workbench.production.node.assets.confirmDeleteBody":"確認是否刪除該資產","workbench.production.node.assets.removeFailed":"刪除資產失敗",version:PCi,"workbench.production.generatedNode.localUpload":"本地上傳","workbench.production.editImage.uploadFailed":"圖片上傳失敗","workbench.production.editImage.noImage":"請先加入圖片"},NCi={editMdPreivew:{title:"Edit",confirm:"Save",cancel:"Cancel"},imageTools:{copy:"Copy Image",preview:"Preview",download:"Download",msg:{imageLoadFailed:"Failed to load image",convertFailed:"Conversion failed",copied:"Copied to clipboard",copyFailed:"Copy failed",downloadFailed:"Download failed",downloadStarted:"Download started",downloadBlockedOpenNewWindow:"The current image source may restrict downloads; tried opening in a new window"}},migrateShow:{title:"Migrate Data",desc:"Data from an older version was detected. Do you want to migrate it?",hide:"Don't show again",confirm:"OK",msg:{migrateSuccess:"Data migration successful",migrateFailed:"Data migration failed"}},modelSelect:{placeholder:"Please select a model",type:{image:"Image",text:"Text",video:"Video"},msg:{fetchModelFailed:"Failed to fetch model data:"},goSetting:"Go to settings and add a model"}},UCi={title:"ToonFlow Settings",menu:{language:"Language",vendorConfig:"Model Providers",agentConfig:"Agent Config",promptManage:"Prompt Management",skillManagement:"skillsSkillsManagement",memoryConfig:"Agent Memory",loginConfig:"Login Config",dbConfig:"Database",fileManagement:"File Management",otherConfig:"Other Config",requestConfig:"Request URL",about:"Check for Updates",logoutConfig:"Logout",skillsSkillsManagement:"SkillsSkills Management"},language:{desc:"Select the interface display language",msg:{saved:"Language settings saved"}},vendor:{addVendor:"Add Provider",noVendor:"No providers yet. Please add one.",required:"Required",optionalSection:"Optional",modelSettings:"Model Settings",addManually:"Add Manually",test:"Test",edit:"Edit",delete:"Delete",deleteVendor:"Delete Provider",editCode:"Edit Code",updateConfig:"Update Config",addModel:"Add Model",editModel:"Edit Model",displayName:"Display Name",displayNamePlaceholder:"e.g., GPT-4o",modelId:"Model ID",modelIdPlaceholder:"e.g., gpt-4o",modelType:"Model Type",multimodal:"Multimodal",supported:"Supported",notSupported:"Not Supported",toolCall:"Tool Call",imageMode:"Image Mode",videoMode:"Video Mode",audioOutput:"Audio Output",durationResolution:"Duration / Resolution Mapping",durationSec:"Duration (sec)",resolution:"Resolution",enterAndPress:"Press Enter to add",addDurationResolution:"Add a Duration/Resolution pair",testResult:"Test Results",generating:"Generating...",addVendorDialog:"Add Provider",codeEditorInfo:"Please write TypeScript code to configure provider information",reset:"Reset",importFile:"Import File",textModel:"Text Model",imageModel:"Image Model",videoModel:"Video Model",textToImage:"Text to Image",textToVideo:"Text to Video",singleImage:"Single Image",multiImage:"Multi-Image Mode",multiReference:"Multi-Image Reference",gridImage:"Grid Single Image",startEndRequired:"Start & End Frames (Both Required)",endFrameOptional:"Start & End Frames (End Frame Optional)",startFrameOptional:"Start & End Frames (Start Frame Optional)",textRef:"Text",imageRef:"Image",videoRef:"Video",audioRef:"Audio",audioOptional:"Optional",audioOnly:"Audio Video Only",noAudio:"Silent Video Only",msg:{getVendorListFailed:"Failed to fetch provider list",vendorConfigUpdated:"Provider config updated",updateFailed:"Update failed",highRiskConfirm:"⚠️ High-Risk Operation Confirmation",addVendorRiskBody:"Adding a new AI provider grants it access to system APIs. Please ensure you trust the code source of this provider!",iKnowRisk:"I understand the risks",cancel:"Cancel",confirmAgain:"⚠️ Confirm Again",addVendorConfirmBody:"Are you sure you want to add this provider? It will be included in the system's model scheduling.",confirmAndAdd:"Confirm & Add",goBackCheck:"Go Back",vendorAdded:"Provider added successfully",addFailed:"Failed to add",updateVendorRiskBody:"Updating AI provider configurations modifies its API access and behaviors. Please ensure you trust the modified code source!",updateVendorConfirmBody:"Are you sure you want to update this provider config? This will affect the system's model scheduling.",confirmAndUpdate:"Confirm & Update",updateSuccess:"Provider config updated successfully",fillDisplayName:"Please enter a display name",fillModelId:"Please enter a model ID",selectImageMode:"Please select an image mode",selectVideoMode:"Please select a video mode",groupPrefix:"Group {n}: ",addDuration:"Please add a duration",addResolution:"Please add a resolution",selectVendorFirst:"Please select a provider first",modelIdExists:"Model ID already exists",modelAdded:"Model added successfully",modelUpdated:"Model updated successfully",enterApiKey:"Please enter API KEY",enterApiUrl:"Please enter API URL",testSuccess:"Test successful",imageGenSuccess:"Image generated successfully",videoGenSuccess:"Video generated successfully",requestFailed:"Request failed",deleteModelConfirm:"Confirm Model Deletion",deleteModelBody:"This action cannot be undone. Do you want to continue?",confirmDelete:"Delete",modelDeleted:"Model deleted",deleteVendorConfirm:"Confirm Provider Deletion",deleteVendorBody:"Deleting this provider will also delete all its associated models. Do you want to continue?",vendorDeleted:"Provider deleted",deleteFailed:"Deletion failed",enabled:"Enabled",disabled:"Disabled",linkAddVendorRiskBody:"Adding a new AI vendor will give it access to the system API, please make sure you trust the vendor's link source!",importAdd:"Adding a new AI vendor will give it access to the system API, please make sure you trust the vendor's documentation source!",linkAddFailed:"Failed to add link"},associationSkills:"Associated skills",think:"deep thinking",code:"code",linkAddPlaceholder:"Enter link to add",noFileSelected:"File imported successfully",linkAdd:"confirm"},agent:{bannerDesc:"Use the official Toonflow relay site for one-click configuration. Ready out-of-the-box, no manual setup needed.",visitWebsite:"Visit Website",fillKey:"Enter KEY",oneClickFill:"One-Click Fill",notOpen:"Not Available",notConfigured:"Not Configured",modelConfig:"Model Config",confirm:"Confirm",cancel:"Cancel",selectModel:"Select Model",fillKeyHeader:"Enter official KEY from Toonflow platform",keyPlaceholder:"Please enter KEY",save:"Save",msg:{notAvailable:"This feature is not yet available. Stay tuned!",configSuccess:"Configured successfully",updateConfigFailed:"Failed to update config: ",keyValid:"KEY is valid. Successfully connected to the Toonflow platform",keyInvalid:"KEY is invalid. Please check and re-enter: ",enterKey:"Please enter KEY",saveFailed:"Save failed: ",getAgentListFailed:"Failed to fetch Agent config list: ",toonflowNotFound:"Toonflow official transfer station does not exist"}},memory:{warning:"The following settings are preset to recommended values. Unless you fully understand their implications, we recommend keeping the current settings.",vectorModelConfig:"Vector Model Config",modelFilePath:"Model File Path",quantizationType:"Quantization Type",quantizationPlaceholder:"Please enter quantization type",memoryParams:"Memory Parameters",messagesPerSummary:"Messages per Summary Trigger",messagesPerSummaryHelp:"Retains the last N conversation contexts.",shortTermLimit:"Short-Term Memory Limit",shortTermLimitHelp:"Number of candidate memories returned during retrieval.",summaryMaxLength:"Summary Max Length",summaryMaxLengthHelp:"Maximum characters allowed during message compression.",summaryLimit:"Compressed Message Query Limit",summaryLimitHelp:"Allowed number of compressed messages to query.",ragLimit:"RAG Search Limit",ragLimitHelp:"Number of messages retrieved during a search.",deepRetrieveSummaryLimit:"Vector Recall Compressed Limit",deepRetrieveSummaryLimitHelp:"Number of messages fetched when retrieving compressed message content.",saveConfig:"Save Config",clearMemory:"Clear Memory",restoreDefault:"Restore Defaults",msg:{saved:"Memory config saved",clearConfirmTitle:"Confirm Clear Memory",clearConfirmBody:"This will erase the AI's global memory data and cannot be undone. Continue?",confirmClear:"Clear",cancel:"Cancel",cleared:"Memory cleared",clearFailed:"Failed to clear memory"}},login:{username:"Username",usernamePlaceholder:"Please enter username",password:"Password",passwordPlaceholder:"Please enter password",modify:"Modify",msg:{enterUsername:"Please enter username",usernameLength:"Username must be 2-20 characters long",enterPassword:"Please enter password",passwordLength:"Password must be 6-20 characters long",fetchFailed:"Failed to fetch user information",saveSuccess:"Saved successfully",saveFailed:"Failed to save"}},db:{clearDb:"Clear Database",clearDbDesc:"Clear data in all tables while keeping table structures",clearData:"Clear Data",confirmAction:"Confirm Action",msg:{clearDbTitle:"Clear Database",firstConfirm:"Are you sure you want to clear all data tables? This cannot be recovered!",secondConfirm:"Final confirmation: all data will be permanently lost after clearing!",keyword:"Clear",confirm:"Confirm",pleaseInput:"Please type",cleared:"All data tables have been cleared",operationFailed:"Operation failed, please try again",cancelled:"Operation cancelled"}},skill:{scanSkills:"Scan Skills",addSkill:"Add Skill",importFromHub:"Import from Toonflow-Hub",filterType:"Type",filterAttribution:"Attribution",searchPlaceholder:"Search skill by name",search:"Search",totalCount:"{count} Skills in total",typeMain:"Core",typeReferences:"Technique",noAttribution:"No Attribution",noAttributionTip:"⚠️ No attribution, Skill cannot be enabled",noEmbeddingTip:"⚠️ Not embedded, Skill cannot be enabled",notEmbedded:"Not Embedded",stateNormal:"Normal",stateGenerating:"Generating description",stateEmptyDesc:"Empty description",stateAttrError:"Attribution error",stateMd5Changed:"MD5 changed, update description recommended",embedding:"Embed",edit:"Edit",delete:"Delete",importFromHubDialog:"Import from Toonflow-Hub",shareLink:"Share Link",editSkillTitle:"Edit Skill - ",addSkillTitle:"Add Skill",skillName:"Skill Name",skillNamePlaceholder:"e.g. writing-assistant",path:"Path",attributionAgent:"Attribution Agent",selectAttribution:"Select Attribution Agent",description:"Description",aiGenerate:"AI Generate",descriptionPlaceholder:"Describe the purpose of this skill",cancel:"Cancel",save:"Save",createSkill:"Create Skill",attr:{productionDecision:"Production - Director",productionExecution:"Production - Cinematographer",productionSupervision:"Production - Supervisor",scriptDecision:"Script Agent - Coordinator",scriptExecution:"Script Agent - Writer",scriptSupervision:"Script Agent - Editor",universalAgent:"Production Assistant"},msg:{scanSuccess:"Scan completed, found {count} Skill files",fetchListFailed:"Failed to fetch skill list",fillContentFirst:"Please fill in Markdown content first",descGenSuccess:"Description generated successfully",descGenFailed:"Failed to generate description",fillNameFirst:"Please fill in Skill name first",updateSuccess:"Skill updated successfully",createSuccess:"Skill created successfully",updateFailed:"Failed to update Skill",createFailed:"Failed to create Skill",deleteConfirmTitle:"Confirm Deletion",deleteConfirmBody:'Are you sure you want to delete Skill "{name}"? This cannot be undone.',deleteSuccess:"Deleted successfully",deleteFailed:"Delete failed",embeddingSuccess:"Embedding completed",embeddingFailed:"Embedding failed"},fileLost:"File missing"},other:{requestTimeout:"Request Timeout",seconds:"Seconds",inputSeconds:"Please enter seconds",assetConcurrency:"Asset Generation Concurrency",count:"Tasks",inputCount:"Please enter number of tasks",chapterRegex:"Chapter Split Regex",restoreDefault:"Restore Defaults",regexPlaceholder:"Please enter a regular expression",showTitleBar:"show title bar",isElectron:"Switch to desktop mode",canvasScroll:"Canvas scroll",canvasIsDisabled:"Canvas zoom",agentCanvasScalingMethod:"Unlimited canvas wheel operation on production page",zoom:"Zoom",scroll:"scroll",isInteracting:"Unlimited canvas drag performance optimization on production page",closeIsInteracting:"closure"},request:{warning:"Do not modify unless absolutely necessary",apiAddress:"API URL",apiPlaceholder:"Please enter API request URL",save:"Save",reset:"Reset",msg:{enterApi:"Please enter API URL",validUrl:"Please enter a valid HTTP/HTTPS URL",saved:"Request URL saved successfully",reset:"Reset to default URL",refreshFailed:"Refresh failed",refreshSuccess:"Refresh successful"}},about:{slogan:"Open-source AI-driven Comic / Storyboard creation tool",latestVersion:"You are on the latest version",checkUpdate:"Check for Updates",codeRepository:"Code Repository",githubRepo:"GitHub Repository",giteeRepo:"Gitee Repository",versionUpdate:"Version Update",checkUpdateGithub:"Check Update (GitHub)",getFromGithub:"Get the latest release from GitHub",checkUpdateGitee:"Check Update (Gitee)",getFromGitee:"Get the latest release from Gitee",license:"License",licenseDesc:"Open-source license agreement · Click for details",updateAvailable:"new version found",currentVersion:"Current Version",latestVersionLabel:"Latest Version",selectUpdateSource:"Select Update Source",github:"GitHub",gitee:"Gitee",confirmUpdate:"Confirm Update",cancel:"Cancel",updating:"Updating...",updateSuccess:"Update successful, please restart the app",updateFailed:"Update failed, please try again",noUpdate:"You are already on the latest version",upToDate:"New version detected"},logout:{warning:"After logging out, you will need to log in again to access the system.",confirmLogout:"Are you sure you want to log out?",logout:"Logout",msg:{logoutSuccess:"Logged out successfully",logoutFailed:"Logout failed, please try again"}},file:{quickOpen:"Quick Open Directory",open:"Open",dockerDesc:'For Docker/Separated deployments, please go to the "/data/*" directory to manage files manually.',desktopOnly:"This feature is only available on the desktop client",folders:{data:"data",dataDesc:"Data directory.",logs:"data/logs",logsDesc:"Runtime and error logs.",oss:"data/oss",ossDesc:"File storage related resources.",skills:"data/skills",skillsDesc:"Skills and prompt configuration files.",models:"data/models",modelsDesc:"Model files and configurations.",web:"data/web",webDesc:"Web-related resources (e.g., frontend build artifacts).",serve:"data/serve",serveDesc:"Backend service related files."},openFailed:"Failed to open folder"},dev:{warning:"The following are developer tools, please operate with caution!",openDevtool:"Open",devtoolsDoc:"Document address",devtoolsDesc:"After being turned on, a .devtools folder will be created in the Toonflow installation directory. Please ensure that Toonflow has write permissions (run as administrator).",devtoolsDesc2:"Run npx {'@'}ai-sdk/devtools in this directory to enable telemetry debugging",openDevtoolFailed:"Failed to open developer tools, please make sure Toonflow desktop is installed",notInElectron:"For WEB environment, please open the browser console manually"}},jCi={selectProject:"Please select a project",menu:{myProject:"My Projects",taskCenter:"Task Center",novel:"Novel Text",scriptAgent:"Script Agent",scriptManage:"Script Management",cornerScape:"Characters & Scenes",production:"Video Production",assetCenter:"Asset Center",settings:"Settings",jumpGithub:"Jump to Github",feedbackQuestions:"Feedback question"},project:{title:"My Projects",subtitle:"Manage all your short drama projects",newProject:"New Project",dialog:{editTitle:"Edit Project",addTitle:"New Project",save:"Save",ok:"OK",cancel:"Cancel",projectType:"Project Type",selectType:"Select Project Type",basedOnNovel:"Based on Novel Text",projectName:"Project Name",projectNamePh:"Please enter project name",novelType:"Novel Genre",novelTypePh:"e.g., Fantasy, Sci-Fi, Romance",artStyle:"Art Style",selected:"Selected:",selectArtStyle:"Please select an art style",newArtStyle:"New art style",loading:"Loading...",videoRatio:"Video Ratio",novelIntro:"Novel Synopsis",novelIntroPh:"Please enter novel synopsis",editArtStyleTitle:"Edit art style",newArtStyleTitle:"New art style",artStyleName:"Art style name",artStyleNamePh:"Please enter art style name",artStyleImage:"Art style image",remove:"Remove",uploadCover:"Upload Cover",artStylePrompt:"Prompt",aiExtract:"AI Extract Prompt",promptPlaceholder:"Enter prompt",visualManual:"Visual Manual",newVisualManual:"New visual manual",editVisualManualTitle:"Edit visual manual",newVisualManualTitle:"New visual manual",visualManualName:"Visual manual name",visualManualNamePh:"Please enter visual manual name",visualManualCover:"Visual manual cover",visualManualPrompt:"Visual manual prompt",modelData:"Select image model",videoModelData:"Select video model",prompt:{placeholder:"Enter prompt word",saveSuccess:"Update successful",title:"prompt word"},basedOnScript:"based on script",mdFile:"visual manual file",directorManual:"Director's Handbook",addDirectorManual:"New director manual",editingDirectorManual:"Edit Director's Manual",newDirecorManualTitle:"New director manual",directorManualPrompt:"Director's Manual Prompt Words",directorManualName:"Director's Manual Name",directorManualNamePh:"Enter Director's Manual name",directorFile:"Director's Manual Document",directorManualCover:"Director's Manual Cover"},msg:{fetchFailed:"Failed to fetch project list",notFound:"Project not found!",editSuccess:"Project edited successfully",editFailed:"Failed to edit project",addSuccess:"Project created successfully",addFailed:"Failed to create project",deleteHeader:"Delete Project",deleteBody:"Are you sure you want to delete this project?",deleteConfirm:"Delete",deleteCancel:"Cancel",deleteSuccess:"Project deleted successfully",deleteFailed:"Failed to delete project",extractSuccess:"Prompt extracted successfully",extractFailed:"Extraction failed",enterArtStyleName:"Please enter art style name",artStyleUpdated:"Art style updated",artStyleAdded:"Art style added",operationFailed:"Operation failed",enterVisualManualName:"Please enter visual manual name",enterVisualManualImage:"Please upload a cover image for the visual manual",enterVisualManualTabData:"prompt cannot be empty",visualManualUpdated:"Visual manual updated",visualManualAdded:"Visual manual added",deleteVisualManualHeader:"Delete Visual Manual",deleteVisualManualBody:'Are you sure you want to delete visual manual "{name}"?',deleteVisualManualConfirm:"Delete",deleteVisualManualCancel:"Cancel",enterProjectName:"Please enter project name",enterProjectIntro:"Please enter the novel introduction",enterProjectType:"Please enter project type",enterArtStyle:"Please select a project visual brochure",enterVideoRatio:"Please select video ratio",enterImageModel:"Please select a picture model",enterVideoModel:"Please select a video model",visualManualDeleted:"Delete successfully",selectMode:"Please select mode",deleteDirectorManualHeader:"Delete Director's Manual",deleteDirectorManualBody:`Are you sure you want to delete Director's Manual "{name}"?`,directorManualUpdated:"Director's Manual updated",directorManualAdded:"Director's Manual added",directorManual:"Please select Project Director's Manual"},type:{novel:"Based on the original novel",script:"Based on novel script"}},novel:{importText:"Import Text",batchDelete:"Batch Delete",eventAnalysis:"Event Analysis",searchPlaceholder:"Search text names...",search:"Search",generating:"Generating...",genFailed:"Generation failed",none:"None",edit:"Edit",delete:"Delete",col:{id:"No.",reel:"Volume",chapter:"Chapter Name",chapterData:"Chapter Content",event:"Event",operation:"Operation"},msg:{batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} items?",batchDeleteSuccess:"Batch delete successful",deleteHeader:"Confirm Deletion",deleteBody:'Are you sure you want to delete the chapter named "{name}"?',deleteSuccess:"Deleted successfully",eventAnalysisHeader:"Event Analysis",eventAnalysisBody:"Are you sure you want to analyze events for the selected {count} items?"},import:{title:"Upload Novel Text",step1:"Step 1",step2:"Step 2",step3:"Step 3",dragUpload:"Drag and drop your novel file here or click to upload",uploadHint:"Supports .txt, .docx. Recommended file size under 10MB",or:"OR",pasteLabel:"Directly paste novel text",pastePlaceholder:"Please paste novel text here",chars:"chars",tooShort:"Content is too short, recommend at least 100 characters",parsedChapters:"{count} chapters parsed",nextStep:"Next",prevStep:"Previous",selectedInfo:"Selected: {count} chars (Must be < 200,000)",eventAnalysis:"Event Analysis",saveAndAnalyze:"Save Text and Analyze Events",col:{chapter:"Chapter",reel:"Volume",chapterName:"Chapter Name",chapterData:"Chapter Content"},msg:{parseFailed:"Failed to parse file. Please re-upload",selectFile:"Select file",docNotSupported:".doc files do not support parsing, please convert to .ts files",unsupportedType:"Unsupported file type",fileTooLarge:"File exceeds 10MB. Please upload a smaller file",selectChapters:"Please select chapters first",saveSuccess:"Novel text saved successfully"},importAdd:"Drag and drop files here or click to upload",limit:"Support .ts format"},editDialog:{title:"Edit Novel Text",chapterName:"Chapter Name",chapterNamePh:"Please enter chapter name",eventContent:"Event Content",eventContentPh:"Enter event content",chapterContent:"Chapter Content",chapterContentPh:"Please enter chapter content",cancel:"Cancel",save:"Save",msg:{updateSuccess:"Novel text updated successfully"}},event:{regenerate:"Regenerate Events",batchDelete:"Batch Delete",noData:"No event data. Click to start generation",generate:"Generate Events",generatingHint:"Generating events, please wait...",loading:"Loading...",delete:"Delete",col:{id:"Event ID",eventName:"Event Name",chapters:"Source Chapter",detail:"Event Details",createTime:"Created Time",operation:"Operation"},msg:{deleteHeader:"Delete Event",deleteBody:"Are you sure you want to delete this event?",deleteSuccess:"Deleted successfully",generateSuccess:"Events generated successfully",batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} items?",batchDeleteSuccess:"Batch delete successful"}},analysis:{analyzeFirst:"Please analyze events first",startAnalysis:"Start Analysis",chapterHeader:"Chapter {index} - {name}",analyzing:"Analyzing events"}},scriptAgent:{inputPlaceholder:"Please enter content",chapterEvents:"Chapter Events",clearMessageMemory:"Clear Message Memory",clearSummaryMemory:"Clear Summary Memory",clearAllMemory:"Clear All Memory",edit:"Edit",storySkeleton:"Story Skeleton",adaptationStrategy:"Adaptation Strategy",script:"Script",noContent:"No content",relatedAssets:"Related Assets",editScript:"Edit Script",save:"Save",scriptTitle:"Title",titlePlaceholder:"Please enter title",content:"Content",contentPlaceholder:"Please enter script content",selectAssets:"Select Assets",noAssets:"No related assets",selectAssetsTitle:"Select Related Assets",welcomeMsg:"Hello! I am the Toonflow AI Assistant. Would you like me to start generating a script?",start:"Start",memoryType:{message:"Message Memory",summary:"Summary Memory",all:"All Memory"},forceGenerate:{title:"Force Generate?",desc:"Some chapters have not completed event analysis. Do you still want to force generate?",confirm:"Force Generate",cancel:"Cancel"},msg:{clearConfirm:"Confirm Clear",clearBody:"Are you sure you want to clear {type}? This action cannot be undone.",confirmClear:"Clear",cancel:"Cancel",memoryCleared:"{type} cleared",scriptUpdated:"Script updated successfully",scriptUpdateFailed:"Failed to update script, please try again later",searchScriptFailed:"Failed to search scripts",updated:"Saved successfully",error:"Save failed",reconnect:"Reconnect",notReconnect:"Confirm that the reconnection conversation will be cut off?",keepReconnect:"confirm",deleteConfirm:"Delete confirmation",deleteBody:"Delete text",confirmDelete:"Confirm deletion",scriptDeleted:"Script deleted"},reconnect:"Reconnect"},cornerScape:{batchSettings:"Batch Gen Settings",quickActions:"Quick Actions",selectUngenerated:"Select All Ungenerated",selectGenerated:"Select All Generated",selectFailed:"Select Failed",invertSelection:"Invert Selection",clearSelection:"Clear Selection",batchPreview:"Batch Preview Images",assetTypeFilter:"Asset Type Filter",genModel:"Generation Model",resolution:"Resolution",resolutionPh:"Please select a resolution",concurrency:"Concurrency",concurrencyPh:"Enter concurrency level",startBatch:"Start generating images in batches",waitingGen:"Waiting...",generating:"Generating",genFailed:"Generation failed",imageError:"Image Error",typeRole:"Character",typeScene:"Scene",typeTool:"Prop",typeUnknown:"Unknown",descriptionSuffix:"Description: ",operateScriptFirst:"Please handle the script first",individualConfig:"Individual Config",noImage:"No Image",promptLabel:"Prompt",promptPh:"Please enter prompt",aiPolish:"AI Polish",regenerate:"Regenerate",filterRole:"Character",filterScene:"Scene",filterTool:"Prop",unnamed:"Unnamed",noDescription:"No description",msg:{selectModel:"Please select a generation model",selectResolution:"Please select a resolution",enterPrompt:"Please enter a prompt",enterPromptFirst:"Please enter a prompt first",genSuccess:"{name} generated successfully",genFailed:"{name} generation failed",promptGenSuccess:"Prompt generated successfully",polishFailed:"Failed to polish, please try again",selectAtLeastOne:"Select at least one asset for batch generation",batchStarted:"Batch generation started. Total: {count}, Concurrency: {concurrent}",batchItemFailed:"{name} generation failed: {error}",batchComplete:"Batch generation completed",batchFailed:"Batch generation failed",replaceFailed:"Replacement failed",replaceSuccess:"Replacement successful",promptGenFail:"Prompt word generation failed",saveSuccess:"Modification of prompt word successful",saveFailed:"Prompt word modification failed"},history:"historical pictures",confirmReplace:"Confirm replacement",batchGenerationPrompt:"Generate prompt words in batches",generatingPrompt:"Generating",selectPromptEmpty:"Select all prompt word is empty",noEmptyPrompt:"There are no assets with empty prompt word",selectedCount:"{count} assets selected"},script:{searchPlaceholder:"Search script names...",search:"Search",addScript:"New Script",cancelSelectAll:"Deselect All",selectAll:"Select All",exportScript:"Export Script",msg:{searchFailed:"Failed to search scripts",selectExport:"Please select a script to export",exportSuccess:"Export successful",exportFailed:"Failed to export script",deleteHeader:"Confirm Deletion",deleteBody:"Are you sure you want to delete this script? This cannot be undone.",deleteConfirm:"Delete",cancel:"Cancel",deleteSuccess:"Deleted successfully",deleteFailed:"Deletion failed",selectDelScript:"Please choose to delete the script",batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} scripts? This cannot be undone.",batchDeleteSuccess:"Batch deletion successful",extractingInProgress:"Extracting",projectNotFound:"Item not found",selectsExport:"Please choose to export the script"},add:{title:"Add Script",scriptName:"Script Name",scriptNamePh:"Please enter script name",uploadFile:"Upload File",dragUpload:"Drag and drop your script file here or click to upload",uploadHint:"Supports .txt, .docx. Recommended file size under 10MB",scriptContent:"Script Content",scriptContentPh:"Please upload or enter script content...",relatedAssets:"Related Assets",selectAssets:"Select Assets",noAssets:"No related assets",cancel:"Cancel",confirm:"Confirm",msg:{fileReadFailed:"Failed to read file",docNotSupported:".doc parsing is not supported. Please convert to .txt or .docx",unsupportedType:"Unsupported file type",fileTooLarge:"File exceeds 10MB. Please upload a smaller file",parsing:"Parsing file...",parseFailed:"Failed to parse file, please re-upload",selectAssetsTitle:"Select Related Assets",enterContent:"Please upload or enter script content",enterName:"Please enter script name",addSuccess:"Script added successfully",addFailed:"Failed to add script, please try again later"}},edit:{title:"Script Details",scriptName:"Script Name",scriptNamePh:"Please enter script name",scriptContent:"Script Content",scriptContentPh:"Please enter script content...",relatedAssets:"Related Assets",selectAssets:"Select Assets",noAssets:"No related assets",msg:{selectAssetsTitle:"Select Related Assets",updateSuccess:"Script updated successfully",updateFailed:"Failed to update script, please try again later"}},deleteScript:"Delete scripts in batches",extractAssets:""},assets:{addPrefix:"Add",batchGenerate:"Batch Generate",generatePrompt:"Generate Prompt",generateImage:"Generate Image",batchDelete:"Batch Delete",searchPlaceholder:"Search asset names...",search:"Search",preview:"Preview",generate:"Generate",edit:"Edit",delete:"Delete",generating:"Generating",play:"Play",mediaPreview:"Media Preview",confirmBatch:"Confirm {type}!",model:"Model",resolution:"Resolution",resolutionPh:"Please select a resolution",batchGenPrompt:"Batch Generate Prompts",batchGenImage:"Batch Generate Images",role:"Character",prop:"Prop",scene:"Scene",clip:"Clip",uploadSuccess:"Upload successful",selectAtLeastOne:"Please select at least one asset",noDescription:"No description",promptGenSuccess:'Prompt for "{name}" generated successfully',promptGenFail:'Prompt generation for "{name}" failed: {error}',selectModel:"Please select a model",selectResolution:"Please select a resolution",noPromptForImage:'"{name}" lacks a prompt; cannot generate image',imageGenSuccess:'Image for "{name}" generated successfully',imageGenFail:'Image generation for "{name}" failed: {error}',confirmDeleteHeader:"Confirm Deletion",confirmBatchDeleteBody:"Are you sure you want to batch delete these assets? This cannot be undone.",confirmDeleteBody:"Are you sure you want to delete this asset? This cannot be undone.",deleteBtn:"Delete",cancelBtn:"Cancel",deleteSuccess:"Asset deleted successfully",deleteFail:"Failed to delete asset",colPreview:"Preview",colName:"Name",colPrompt:"Prompt",colDescribe:"Description",colRemark:"Remarks",colCreateTime:"Created Time",colOperation:"Operation",add:{name:"Name",namePh:"Please enter name",describe:"Description",describePh:"Please enter description",remark:"Remarks",remarkPh:"Please enter remarks",prompt:"Prompt",promptPh:"Please enter prompt",nameRequired:"Please enter a name",describeRequired:"Please enter details",remarkRequired:"Please enter remarks",updateSuccess:"Asset updated successfully",addSuccess:"Asset added successfully"},gen:{header:"Image Generation",uploadRef:"Upload Reference Image",optional:"Optional",promptLabel:"Generation Prompt",smartGenerate:"Smart Generation",generatingPrompt:"Generating smart prompt...",promptPlaceholder:"Describe the image you want to generate. e.g., A futuristic city full of tech, neon lights blinking, cyberpunk style...",selectModel:"Select Model",selectResolution:"Select Resolution",generateBtn:"Generate Image",resultTitle:"Results",generatedCount:"{count} generated. Please select one",generatingLabel:"Generating...",genFailed:"Generation failed",confirmSelect:"Confirm Selection",promptSuccess:"Prompt generated successfully",promptFail:"Failed to generate prompt",fillPrompt:"Please enter a prompt",pickResolution:"Please select a resolution",pickModel:"Please select a model",unnamed:"Unnamed",assetGenSuccess:"Asset generated successfully",assetGenFail:"Asset generation failed",uploadOk:"Uploaded successfully",imageSelected:"Image selected",imageDeleted:"Image deleted",imageSaved:"Image saved",completed:"Completed"},batch:{header:"Batch Generation",selected:"Selected {count} items",selectAll:"Select All",clearSelection:"Clear Selection",inputPh:"Please enter content",saveSelected:"Save Selected ({count})",colPreviewImg:"Preview",selectToSave:"Please select items to save",saveSuccess:"Saved successfully",saveFail:"Failed to save, please try again",promptDone:"Prompt generation completed",promptFail:"Prompt generation failed",missingPrompts:"{count} assets are missing prompts. Please generate prompts first",imageDone:"Image generation completed",imageGenFail:"Image generation failed",unknownError:"Unknown error",promptGenCancelled:"Generation canceled"}},production:{selectPlaceholder:"Please select an episode",edit:"Edit",node:{script:{title:"Script",editDialog:"Edit Script"},scriptPlan:{title:"Shooting Plan",editDialog:"Edit Shooting Plan"},storyboard:{title:"Storyboard Panel",notGenerated:"Not Generated",scaleRatio:"Zoom Ratio",gridPreview:"Grid Preview",noPreviewImages:"No images available to preview",imageLoadFailed:"Failed to load image",promptPlaceholder:"Please enter the prompt word",prompt:"prompt word",editInfo:"Prompt word modification"},storyboardTable:{title:"Storyboard Table",editDialog:"Edit Storyboard Table"},assets:{title:"Derived Assets",generateFailed:"Generation failed",notGenerated:"Not Generated",originalAsset:"Original Asset",derived:"Derived",noDerivedAssets:"No derived assets"},poster:{title:"Video Cover",coverCount:"{count} Items"},workbench:{title:"Video Workbench"}},editImage:{upload:"Upload",generate:"Generate",saveFailed:"Save failed, please try again",fetchFailed:"Failed to fetch data",generating:"Generating...",deleteNode:"Delete Node",ratio:"Ratio",quality:"Quality",generateBtn:"Generate Image",selectImage:"Select Image",imageGeneration:"Image Generation",promptPlaceholder:"Describe the image you want to generate...",imageRef:"Image {index}",videoRef:"Video {index}",audioRef:"Audio {index}",reference:"Ref {index}",noReferences:"No reference images available",selectModel:"Please select a model first",selectQuality:"Please select a quality",selectRatio:"Please select a ratio",generateFailed:"Generation failed",generateFirst:"Please generate an image first",generatedResult:"Results",waitingGenerate:"Waiting...",layoutLR:"Auto Layout - Horizontal",layoutTB:"Auto Layout - Vertical",uploadAssetImage:"Upload Asset Image",uploadStoryboardImage:"Upload Storyboard Image",uploadImage:"Asset image upload",mode:"model",closeConfirmTitle:"Close the editing panel?",closeConfirmBody:"Unsaved data will be lost after closing"},save:"Select",cancel:"Cancel",chatBox:{inputPlaceholder:"Type a message...",generateDerivedAssets:"Generate Derived Assets",welcomeMessage:"Hello! I am your AI Assistant. How can I help you?",adjustModel:"Adjust Model",startMakingVideo:"Start Making Video",startMakingVideoPrompt:"Please help me start making a video",clearMessageMemory:"Clear Message Memory",clearSummaryMemory:"Clear Summary Memory",clearAllMemory:"Clear All Memory",messageMemory:"Message Memory",summaryMemory:"Summary Memory",allMemory:"All Memory",confirmClear:"Clear Memory",confirmClearBody:"Are you sure you want to clear {type}?",confirmClearBtn:"Confirm",memoryCleared:"{type} cleared"},wb:{quickPreview:"Quick Preview",videoGeneration:"Storyboard",videoEditing:"editing desk",hint:"Hint",extractLines:"Extract lines from video?",no:"No",confirm:"Yes",extractLinesQuestion:"Do you want to extract dialogue lines from the video as subtitles?",importingLoading:"Importing, please wait...",mainTrackVideo:"Main Track (Video)",subtitle1:"Subtitle 1",storyboardVideoName:"Storyboard Video-{storyboard}.mp4"},preview:{noImage:"No Image",storyboardDesc:"Storyboard Description",serialNumber:"No.",noDescription:"No Description",duration:"Duration",seconds:"s",relatedAssets:"Related Assets",role:"Character",prop:"Prop",scene:"Scene",noCharacters:"No characters appear",imagePrompt:"Image Prompt",selectAll:"Select All",exportImage:"Export Image",sceneDescription:"Scene Description",promptLabel:"Prompt",restoreSort:"Reset Sorting",restoreSortConfirm:"Are you sure you want to revert to the original sorting?",tip:"Tip",selectAtLeastOne:"Please select at least one storyboard to export",exportFilename:"Storyboard pictures"},generate:{noVideo:"No Video",videoPrompt:"Video Prompt",promptPlaceholder:"Enter prompt words to describe the video content you want to generate...",refImage:"Reference Image",image:"Image",refVideo:"Reference Video",refImageLabel:"Reference Image",refAudio:"Reference Audio",muteAudio:"Mute Audio",enableAudio:"Enable Audio",resolution:"Resolution",duration:"Duration",generate:"Generate",historyVersions:"History Versions",confirmSelection:"Confirm Selection",noHistory:"No history available",generating:"Generating",generatingPrompt:"Intelligent generation of prompt words",generateFailed:"Generation failed",selectAll:"Select All",videoTrack:"Video Track",batchGenerate:"Batch Generate",importToEditor:"Import to Editor",modeSingleImage:"Single Image",modeMultiImage:"Multi-Image",modeGridImage:"Grid Multi-Image",modeStartEnd:"Start & End Frames",modeText:"Text to Video",modeVideoRef:"Video Reference",modeImageRef:"Image Reference",modeAudioRef:"Audio Reference",modeTextRef:"Text Reference",startFrame:"Start Frame",startFrameOptional:"Start Frame (Optional)",endFrame:"End Frame",endFrameOptional:"End Frame (Optional)",selectRefImage:"Select Reference Image",selectRefImages:"Select Reference Images",selectEndFrame:"Select End Frame Image",selectRefVideoAsset:"Select Reference Video",selectRefAudioAsset:"Select Reference Audio",selectRefImageAsset:"Select Reference Image",selectImageSource:"Select Image Source",fromStoryboard:"Storyboard Image",fromStoryboardDesc:"Select image from storyboard list",fromAssets:"Asset Image",fromAssetsDesc:"Select image from asset library",confirmDelete:"Confirm Deletion",confirmDeleteBody:"Are you sure you want to delete this video? This cannot be undone.",delete:"Delete",cancel:"Cancel",deleteSuccess:"Video deleted successfully",deleteFailed:"Deletion failed",selectVideoFirst:"Please select a video first",confirmSuccess:"Selection confirmed",batchSubmitted:"Batch generation request submitted. Processing...",configNotFound:"Configuration not found",pollingFailed:"Video status query failed, please refresh manually",batchGeneratePrompt:"Generate prompt words in batches",promptEmpty:"Please enter a video prompt first",modelEmpty:"Please select a video generation model first",batchPromptEmpty:`Storyboard {name} is available for video prompts. +如需調整,隨時可以在設定中修改。`,qrcodeLabel:"加入微信交流群,獲得更多協助:",githubLabel:"如果覺得好用,請給我們一個 ⭐ Star 吧!",prevStep:"上一步",nextStep:"下一步",finish:"開始使用"},pCi={skillManagement:{search:"搜尋檔案名稱",empty:"沒有匹配的文件",edit:"編輯",selectOnTheLeft:"請從左側選擇文件"}},bCi={save:"儲存",submitting:"提交中",editSuccess:"修改成功",editFailed:"修改失敗",submit:"提交"},wCi={assets:{notExist:"資產不存在",notDerivativeExist:"衍生資產不存在",derivativeUpdateSuccess:"更新成功",derivativeState:"未生成",derivativeAddSuccess:"添加成功",derivativeDelSuccess:"刪除成功",notGenerated:"未生成"},addSuccess:"更新成功",state:{unused:"未生成"},saveSuccess:"添加成功"},OCi={generating:"生成中"},yCi={scanning:"🔍 正在解析載入Skill",scanComplete:"✨ Skill 掃描完成",inserted:"✅ 新增{count}個Skill",updated:"🔄 更新{count}個Skill",removed:"🗑️ 移除{count}個Skill",scannedFiles:"📁 掃描 {count} 個檔案",noDescription:"📝 {count}個Skill缺少描述",noAttribution:"👤 {count}個Skill缺少歸屬",configWarning:"⚠️ Skill 配置警告",openSettings:"打開設定",scanFailed:"❌ 掃描失敗",checkNetwork:"🔌 請檢查網路連線或稍後重試",retryLater:"🔁 請稍後重試"},CCi="產生影片",_Ci="歷史版本",SCi="生成中",LCi="失敗",xCi="全選",ECi="已選",TCi="導入影片",QCi="第{index 1}段",DCi="確認刪除",BCi="確認刪除該段?",RCi="選擇來源",ICi="從資產選擇",MCi="從分鏡選擇",PCi={newVersion:"有新版本,是否更新?"},FCi={components:fCi,settings:gCi,workbench:mCi,login:kCi,promptManage:vCi,hello:ACi,setting:pCi,common:bCi,storyboard:wCi,productionAgent:OCi,skillScan:yCi,generate:CCi,history:_Ci,generating:SCi,generateFailed:LCi,selectAll:xCi,selected:ECi,importVideo:TCi,emptyTrack:QCi,del:DCi,delConfirm:BCi,selectSource:RCi,confirm:ICi,cancel:MCi,"workbench.script.msg.exportFailed":"匯出失敗","workbench.production.node.assets.confirmDeleteBody":"確認是否刪除該資產","workbench.production.node.assets.removeFailed":"刪除資產失敗",version:PCi,"workbench.production.generatedNode.localUpload":"本地上傳","workbench.production.editImage.uploadFailed":"圖片上傳失敗","workbench.production.editImage.noImage":"請先加入圖片"},NCi={editMdPreivew:{title:"Edit",confirm:"Save",cancel:"Cancel"},imageTools:{copy:"Copy Image",preview:"Preview",download:"Download",msg:{imageLoadFailed:"Failed to load image",convertFailed:"Conversion failed",copied:"Copied to clipboard",copyFailed:"Copy failed",downloadFailed:"Download failed",downloadStarted:"Download started",downloadBlockedOpenNewWindow:"The current image source may restrict downloads; tried opening in a new window"}},migrateShow:{title:"Migrate Data",desc:"Data from an older version was detected. Do you want to migrate it?",hide:"Don't show again",confirm:"OK",msg:{migrateSuccess:"Data migration successful",migrateFailed:"Data migration failed"}},modelSelect:{placeholder:"Please select a model",type:{image:"Image",text:"Text",video:"Video"},msg:{fetchModelFailed:"Failed to fetch model data:"},goSetting:"Go to settings and add a model"}},UCi={title:"ToonFlow Settings",menu:{language:"Language",vendorConfig:"Model Providers",agentConfig:"Agent Config",promptManage:"Prompt Management",skillManagement:"skillsSkillsManagement",memoryConfig:"Agent Memory",loginConfig:"Login Config",dbConfig:"Database",fileManagement:"File Management",otherConfig:"Other Config",requestConfig:"Request URL",about:"Check for Updates",logoutConfig:"Logout",skillsSkillsManagement:"SkillsSkills Management"},language:{desc:"Select the interface display language",msg:{saved:"Language settings saved"}},vendor:{addVendor:"Add Provider",noVendor:"No providers yet. Please add one.",required:"Required",optionalSection:"Optional",modelSettings:"Model Settings",addManually:"Add Manually",test:"Test",edit:"Edit",delete:"Delete",deleteVendor:"Delete Provider",editCode:"Edit Code",updateConfig:"Update Config",addModel:"Add Model",editModel:"Edit Model",displayName:"Display Name",displayNamePlaceholder:"e.g., GPT-4o",modelId:"Model ID",modelIdPlaceholder:"e.g., gpt-4o",modelType:"Model Type",multimodal:"Multimodal",supported:"Supported",notSupported:"Not Supported",toolCall:"Tool Call",imageMode:"Image Mode",videoMode:"Video Mode",audioOutput:"Audio Output",durationResolution:"Duration / Resolution Mapping",durationSec:"Duration (sec)",resolution:"Resolution",enterAndPress:"Press Enter to add",addDurationResolution:"Add a Duration/Resolution pair",testResult:"Test Results",generating:"Generating...",addVendorDialog:"Add Provider",codeEditorInfo:"Please write TypeScript code to configure provider information",reset:"Reset",importFile:"Import File",textModel:"Text Model",imageModel:"Image Model",videoModel:"Video Model",textToImage:"Text to Image",textToVideo:"Text to Video",singleImage:"Single Image",multiImage:"Multi-Image Mode",multiReference:"Multi-Image Reference",gridImage:"Grid Single Image",startEndRequired:"Start & End Frames (Both Required)",endFrameOptional:"Start & End Frames (End Frame Optional)",startFrameOptional:"Start & End Frames (Start Frame Optional)",textRef:"Text",imageRef:"Image",videoRef:"Video",audioRef:"Audio",audioOptional:"Optional",audioOnly:"Audio Video Only",noAudio:"Silent Video Only",msg:{getVendorListFailed:"Failed to fetch provider list",vendorConfigUpdated:"Provider config updated",updateFailed:"Update failed",highRiskConfirm:"⚠️ High-Risk Operation Confirmation",addVendorRiskBody:"Adding a new AI provider grants it access to system APIs. Please ensure you trust the code source of this provider!",iKnowRisk:"I understand the risks",cancel:"Cancel",confirmAgain:"⚠️ Confirm Again",addVendorConfirmBody:"Are you sure you want to add this provider? It will be included in the system's model scheduling.",confirmAndAdd:"Confirm & Add",goBackCheck:"Go Back",vendorAdded:"Provider added successfully",addFailed:"Failed to add",updateVendorRiskBody:"Updating AI provider configurations modifies its API access and behaviors. Please ensure you trust the modified code source!",updateVendorConfirmBody:"Are you sure you want to update this provider config? This will affect the system's model scheduling.",confirmAndUpdate:"Confirm & Update",updateSuccess:"Provider config updated successfully",fillDisplayName:"Please enter a display name",fillModelId:"Please enter a model ID",selectImageMode:"Please select an image mode",selectVideoMode:"Please select a video mode",groupPrefix:"Group {n}: ",addDuration:"Please add a duration",addResolution:"Please add a resolution",selectVendorFirst:"Please select a provider first",modelIdExists:"Model ID already exists",modelAdded:"Model added successfully",modelUpdated:"Model updated successfully",enterApiKey:"Please enter API KEY",enterApiUrl:"Please enter API URL",testSuccess:"Test successful",imageGenSuccess:"Image generated successfully",videoGenSuccess:"Video generated successfully",requestFailed:"Request failed",deleteModelConfirm:"Confirm Model Deletion",deleteModelBody:"This action cannot be undone. Do you want to continue?",confirmDelete:"Delete",modelDeleted:"Model deleted",deleteVendorConfirm:"Confirm Provider Deletion",deleteVendorBody:"Deleting this provider will also delete all its associated models. Do you want to continue?",vendorDeleted:"Provider deleted",deleteFailed:"Deletion failed",enabled:"Enabled",disabled:"Disabled",linkAddVendorRiskBody:"Adding a new AI vendor will give it access to the system API, please make sure you trust the vendor's link source!",importAdd:"Adding a new AI vendor will give it access to the system API, please make sure you trust the vendor's documentation source!",linkAddFailed:"Failed to add link"},associationSkills:"Associated skills",think:"deep thinking",code:"code",linkAddPlaceholder:"Enter link to add",noFileSelected:"File imported successfully",linkAdd:"confirm"},agent:{bannerDesc:"Use the official Toonflow relay site for one-click configuration. Ready out-of-the-box, no manual setup needed.",visitWebsite:"Visit Website",fillKey:"Enter KEY",oneClickFill:"One-Click Fill",notOpen:"Not Available",notConfigured:"Not Configured",modelConfig:"Model Config",confirm:"Confirm",cancel:"Cancel",selectModel:"Select Model",fillKeyHeader:"Enter official KEY from Toonflow platform",keyPlaceholder:"Please enter KEY",save:"Save",msg:{notAvailable:"This feature is not yet available. Stay tuned!",configSuccess:"Configured successfully",updateConfigFailed:"Failed to update config: ",keyValid:"KEY is valid. Successfully connected to the Toonflow platform",keyInvalid:"KEY is invalid. Please check and re-enter: ",enterKey:"Please enter KEY",saveFailed:"Save failed: ",getAgentListFailed:"Failed to fetch Agent config list: ",toonflowNotFound:"Toonflow official transfer station does not exist"}},memory:{warning:"The following settings are preset to recommended values. Unless you fully understand their implications, we recommend keeping the current settings.",vectorModelConfig:"Vector Model Config",modelFilePath:"Model File Path",quantizationType:"Quantization Type",quantizationPlaceholder:"Please enter quantization type",memoryParams:"Memory Parameters",messagesPerSummary:"Messages per Summary Trigger",messagesPerSummaryHelp:"Retains the last N conversation contexts.",shortTermLimit:"Short-Term Memory Limit",shortTermLimitHelp:"Number of candidate memories returned during retrieval.",summaryMaxLength:"Summary Max Length",summaryMaxLengthHelp:"Maximum characters allowed during message compression.",summaryLimit:"Compressed Message Query Limit",summaryLimitHelp:"Allowed number of compressed messages to query.",ragLimit:"RAG Search Limit",ragLimitHelp:"Number of messages retrieved during a search.",deepRetrieveSummaryLimit:"Vector Recall Compressed Limit",deepRetrieveSummaryLimitHelp:"Number of messages fetched when retrieving compressed message content.",saveConfig:"Save Config",clearMemory:"Clear Memory",restoreDefault:"Restore Defaults",msg:{saved:"Memory config saved",clearConfirmTitle:"Confirm Clear Memory",clearConfirmBody:"This will erase the AI's global memory data and cannot be undone. Continue?",confirmClear:"Clear",cancel:"Cancel",cleared:"Memory cleared",clearFailed:"Failed to clear memory"}},login:{username:"Username",usernamePlaceholder:"Please enter username",password:"Password",passwordPlaceholder:"Please enter password",modify:"Modify",msg:{enterUsername:"Please enter username",usernameLength:"Username must be 2-20 characters long",enterPassword:"Please enter password",passwordLength:"Password must be 6-20 characters long",fetchFailed:"Failed to fetch user information",saveSuccess:"Saved successfully",saveFailed:"Failed to save"}},db:{clearDb:"Clear Database",clearDbDesc:"Clear data in all tables while keeping table structures",clearData:"Clear Data",confirmAction:"Confirm Action",msg:{clearDbTitle:"Clear Database",firstConfirm:"Are you sure you want to clear all data tables? This cannot be recovered!",secondConfirm:"Final confirmation: all data will be permanently lost after clearing!",keyword:"Clear",confirm:"Confirm",pleaseInput:"Please type",cleared:"All data tables have been cleared",operationFailed:"Operation failed, please try again",cancelled:"Operation cancelled"}},skill:{scanSkills:"Scan Skills",addSkill:"Add Skill",importFromHub:"Import from Toonflow-Hub",filterType:"Type",filterAttribution:"Attribution",searchPlaceholder:"Search skill by name",search:"Search",totalCount:"{count} Skills in total",typeMain:"Core",typeReferences:"Technique",noAttribution:"No Attribution",noAttributionTip:"⚠️ No attribution, Skill cannot be enabled",noEmbeddingTip:"⚠️ Not embedded, Skill cannot be enabled",notEmbedded:"Not Embedded",stateNormal:"Normal",stateGenerating:"Generating description",stateEmptyDesc:"Empty description",stateAttrError:"Attribution error",stateMd5Changed:"MD5 changed, update description recommended",embedding:"Embed",edit:"Edit",delete:"Delete",importFromHubDialog:"Import from Toonflow-Hub",shareLink:"Share Link",editSkillTitle:"Edit Skill - ",addSkillTitle:"Add Skill",skillName:"Skill Name",skillNamePlaceholder:"e.g. writing-assistant",path:"Path",attributionAgent:"Attribution Agent",selectAttribution:"Select Attribution Agent",description:"Description",aiGenerate:"AI Generate",descriptionPlaceholder:"Describe the purpose of this skill",cancel:"Cancel",save:"Save",createSkill:"Create Skill",attr:{productionDecision:"Production - Director",productionExecution:"Production - Cinematographer",productionSupervision:"Production - Supervisor",scriptDecision:"Script Agent - Coordinator",scriptExecution:"Script Agent - Writer",scriptSupervision:"Script Agent - Editor",universalAgent:"Production Assistant"},msg:{scanSuccess:"Scan completed, found {count} Skill files",fetchListFailed:"Failed to fetch skill list",fillContentFirst:"Please fill in Markdown content first",descGenSuccess:"Description generated successfully",descGenFailed:"Failed to generate description",fillNameFirst:"Please fill in Skill name first",updateSuccess:"Skill updated successfully",createSuccess:"Skill created successfully",updateFailed:"Failed to update Skill",createFailed:"Failed to create Skill",deleteConfirmTitle:"Confirm Deletion",deleteConfirmBody:'Are you sure you want to delete Skill "{name}"? This cannot be undone.',deleteSuccess:"Deleted successfully",deleteFailed:"Delete failed",embeddingSuccess:"Embedding completed",embeddingFailed:"Embedding failed"},fileLost:"File missing"},other:{requestTimeout:"Request Timeout",seconds:"Seconds",inputSeconds:"Please enter seconds",assetConcurrency:"Asset Generation Concurrency",count:"Tasks",inputCount:"Please enter number of tasks",chapterRegex:"Chapter Split Regex",restoreDefault:"Restore Defaults",regexPlaceholder:"Please enter a regular expression",showTitleBar:"show title bar",isElectron:"Switch to desktop mode",canvasScroll:"Canvas scroll",canvasIsDisabled:"Canvas zoom",agentCanvasScalingMethod:"Unlimited canvas wheel operation on production page",zoom:"Zoom",scroll:"scroll",isInteracting:"Unlimited canvas drag performance optimization on production page",closeIsInteracting:"closure"},request:{warning:"Do not modify unless absolutely necessary",apiAddress:"API URL",apiPlaceholder:"Please enter API request URL",save:"Save",reset:"Reset",msg:{enterApi:"Please enter API URL",validUrl:"Please enter a valid HTTP/HTTPS URL",saved:"Request URL saved successfully",reset:"Reset to default URL",refreshFailed:"Refresh failed",refreshSuccess:"Refresh successful"}},about:{slogan:"Open-source AI-driven Comic / Storyboard creation tool",latestVersion:"You are on the latest version",checkUpdate:"Check for Updates",codeRepository:"Code Repository",githubRepo:"GitHub Repository",giteeRepo:"Gitee Repository",versionUpdate:"Version Update",checkUpdateGithub:"Check Update (GitHub)",getFromGithub:"Get the latest release from GitHub",checkUpdateGitee:"Check Update (Gitee)",getFromGitee:"Get the latest release from Gitee",license:"License",licenseDesc:"Open-source license agreement · Click for details",updateAvailable:"new version found",currentVersion:"Current Version",latestVersionLabel:"Latest Version",selectUpdateSource:"Select Update Source",github:"GitHub",gitee:"Gitee",confirmUpdate:"Confirm Update",cancel:"Cancel",updating:"Updating...",updateSuccess:"Update successful, please restart the app",updateFailed:"Update failed, please try again",noUpdate:"You are already on the latest version",upToDate:"New version detected",confirmReinstall:"Copy link",reinstallRequired:"The browser will automatically open and download. If it does not open, please open it manually."},logout:{warning:"After logging out, you will need to log in again to access the system.",confirmLogout:"Are you sure you want to log out?",logout:"Logout",msg:{logoutSuccess:"Logged out successfully",logoutFailed:"Logout failed, please try again"}},file:{quickOpen:"Quick Open Directory",open:"Open",dockerDesc:'For Docker/Separated deployments, please go to the "/data/*" directory to manage files manually.',desktopOnly:"This feature is only available on the desktop client",folders:{data:"data",dataDesc:"Data directory.",logs:"data/logs",logsDesc:"Runtime and error logs.",oss:"data/oss",ossDesc:"File storage related resources.",skills:"data/skills",skillsDesc:"Skills and prompt configuration files.",models:"data/models",modelsDesc:"Model files and configurations.",web:"data/web",webDesc:"Web-related resources (e.g., frontend build artifacts).",serve:"data/serve",serveDesc:"Backend service related files."},openFailed:"Failed to open folder"},dev:{warning:"The following are developer tools, please operate with caution!",openDevtool:"Open",devtoolsDoc:"Document address",devtoolsDesc:"After being turned on, a .devtools folder will be created in the Toonflow installation directory. Please ensure that Toonflow has write permissions (run as administrator).",devtoolsDesc2:"Run npx {'@'}ai-sdk/devtools in this directory to enable telemetry debugging",openDevtoolFailed:"Failed to open developer tools, please make sure Toonflow desktop is installed",notInElectron:"For WEB environment, please open the browser console manually"}},jCi={selectProject:"Please select a project",menu:{myProject:"My Projects",taskCenter:"Task Center",novel:"Novel Text",scriptAgent:"Script Agent",scriptManage:"Script Management",cornerScape:"Characters & Scenes",production:"Video Production",assetCenter:"Asset Center",settings:"Settings",jumpGithub:"Jump to Github",feedbackQuestions:"Feedback question"},project:{title:"My Projects",subtitle:"Manage all your short drama projects",newProject:"New Project",dialog:{editTitle:"Edit Project",addTitle:"New Project",save:"Save",ok:"OK",cancel:"Cancel",projectType:"Project Type",selectType:"Select Project Type",basedOnNovel:"Based on Novel Text",projectName:"Project Name",projectNamePh:"Please enter project name",novelType:"Novel Genre",novelTypePh:"e.g., Fantasy, Sci-Fi, Romance",artStyle:"Art Style",selected:"Selected:",selectArtStyle:"Please select an art style",newArtStyle:"New art style",loading:"Loading...",videoRatio:"Video Ratio",novelIntro:"Novel Synopsis",novelIntroPh:"Please enter novel synopsis",editArtStyleTitle:"Edit art style",newArtStyleTitle:"New art style",artStyleName:"Art style name",artStyleNamePh:"Please enter art style name",artStyleImage:"Art style image",remove:"Remove",uploadCover:"Upload Cover",artStylePrompt:"Prompt",aiExtract:"AI Extract Prompt",promptPlaceholder:"Enter prompt",visualManual:"Visual Manual",newVisualManual:"New visual manual",editVisualManualTitle:"Edit visual manual",newVisualManualTitle:"New visual manual",visualManualName:"Visual manual name",visualManualNamePh:"Please enter visual manual name",visualManualCover:"Visual manual cover",visualManualPrompt:"Visual manual prompt",modelData:"Select image model",videoModelData:"Select video model",prompt:{placeholder:"Enter prompt word",saveSuccess:"Update successful",title:"prompt word"},basedOnScript:"based on script",mdFile:"visual manual file",directorManual:"Director's Handbook",addDirectorManual:"New director manual",editingDirectorManual:"Edit Director's Manual",newDirecorManualTitle:"New director manual",directorManualPrompt:"Director's Manual Prompt Words",directorManualName:"Director's Manual Name",directorManualNamePh:"Enter Director's Manual name",directorFile:"Director's Manual Document",directorManualCover:"Director's Manual Cover"},msg:{fetchFailed:"Failed to fetch project list",notFound:"Project not found!",editSuccess:"Project edited successfully",editFailed:"Failed to edit project",addSuccess:"Project created successfully",addFailed:"Failed to create project",deleteHeader:"Delete Project",deleteBody:"Are you sure you want to delete this project?",deleteConfirm:"Delete",deleteCancel:"Cancel",deleteSuccess:"Project deleted successfully",deleteFailed:"Failed to delete project",extractSuccess:"Prompt extracted successfully",extractFailed:"Extraction failed",enterArtStyleName:"Please enter art style name",artStyleUpdated:"Art style updated",artStyleAdded:"Art style added",operationFailed:"Operation failed",enterVisualManualName:"Please enter visual manual name",enterVisualManualImage:"Please upload a cover image for the visual manual",enterVisualManualTabData:"prompt cannot be empty",visualManualUpdated:"Visual manual updated",visualManualAdded:"Visual manual added",deleteVisualManualHeader:"Delete Visual Manual",deleteVisualManualBody:'Are you sure you want to delete visual manual "{name}"?',deleteVisualManualConfirm:"Delete",deleteVisualManualCancel:"Cancel",enterProjectName:"Please enter project name",enterProjectIntro:"Please enter the novel introduction",enterProjectType:"Please enter project type",enterArtStyle:"Please select a project visual brochure",enterVideoRatio:"Please select video ratio",enterImageModel:"Please select a picture model",enterVideoModel:"Please select a video model",visualManualDeleted:"Delete successfully",selectMode:"Please select mode",deleteDirectorManualHeader:"Delete Director's Manual",deleteDirectorManualBody:`Are you sure you want to delete Director's Manual "{name}"?`,directorManualUpdated:"Director's Manual updated",directorManualAdded:"Director's Manual added",directorManual:"Please select Project Director's Manual"},type:{novel:"Based on the original novel",script:"Based on novel script"}},novel:{importText:"Import Text",batchDelete:"Batch Delete",eventAnalysis:"Event Analysis",searchPlaceholder:"Search text names...",search:"Search",generating:"Generating...",genFailed:"Generation failed",none:"None",edit:"Edit",delete:"Delete",col:{id:"No.",reel:"Volume",chapter:"Chapter Name",chapterData:"Chapter Content",event:"Event",operation:"Operation"},msg:{batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} items?",batchDeleteSuccess:"Batch delete successful",deleteHeader:"Confirm Deletion",deleteBody:'Are you sure you want to delete the chapter named "{name}"?',deleteSuccess:"Deleted successfully",eventAnalysisHeader:"Event Analysis",eventAnalysisBody:"Are you sure you want to analyze events for the selected {count} items?"},import:{title:"Upload Novel Text",step1:"Step 1",step2:"Step 2",step3:"Step 3",dragUpload:"Drag and drop your novel file here or click to upload",uploadHint:"Supports .txt, .docx. Recommended file size under 10MB",or:"OR",pasteLabel:"Directly paste novel text",pastePlaceholder:"Please paste novel text here",chars:"chars",tooShort:"Content is too short, recommend at least 100 characters",parsedChapters:"{count} chapters parsed",nextStep:"Next",prevStep:"Previous",selectedInfo:"Selected: {count} chars (Must be < 200,000)",eventAnalysis:"Event Analysis",saveAndAnalyze:"Save Text and Analyze Events",col:{chapter:"Chapter",reel:"Volume",chapterName:"Chapter Name",chapterData:"Chapter Content"},msg:{parseFailed:"Failed to parse file. Please re-upload",selectFile:"Select file",docNotSupported:".doc files do not support parsing, please convert to .ts files",unsupportedType:"Unsupported file type",fileTooLarge:"File exceeds 10MB. Please upload a smaller file",selectChapters:"Please select chapters first",saveSuccess:"Novel text saved successfully"},importAdd:"Drag and drop files here or click to upload",limit:"Support .ts format"},editDialog:{title:"Edit Novel Text",chapterName:"Chapter Name",chapterNamePh:"Please enter chapter name",eventContent:"Event Content",eventContentPh:"Enter event content",chapterContent:"Chapter Content",chapterContentPh:"Please enter chapter content",cancel:"Cancel",save:"Save",msg:{updateSuccess:"Novel text updated successfully"}},event:{regenerate:"Regenerate Events",batchDelete:"Batch Delete",noData:"No event data. Click to start generation",generate:"Generate Events",generatingHint:"Generating events, please wait...",loading:"Loading...",delete:"Delete",col:{id:"Event ID",eventName:"Event Name",chapters:"Source Chapter",detail:"Event Details",createTime:"Created Time",operation:"Operation"},msg:{deleteHeader:"Delete Event",deleteBody:"Are you sure you want to delete this event?",deleteSuccess:"Deleted successfully",generateSuccess:"Events generated successfully",batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} items?",batchDeleteSuccess:"Batch delete successful"}},analysis:{analyzeFirst:"Please analyze events first",startAnalysis:"Start Analysis",chapterHeader:"Chapter {index} - {name}",analyzing:"Analyzing events"}},scriptAgent:{inputPlaceholder:"Please enter content",chapterEvents:"Chapter Events",clearMessageMemory:"Clear Message Memory",clearSummaryMemory:"Clear Summary Memory",clearAllMemory:"Clear All Memory",edit:"Edit",storySkeleton:"Story Skeleton",adaptationStrategy:"Adaptation Strategy",script:"Script",noContent:"No content",relatedAssets:"Related Assets",editScript:"Edit Script",save:"Save",scriptTitle:"Title",titlePlaceholder:"Please enter title",content:"Content",contentPlaceholder:"Please enter script content",selectAssets:"Select Assets",noAssets:"No related assets",selectAssetsTitle:"Select Related Assets",welcomeMsg:"Hello! I am the Toonflow AI Assistant. Would you like me to start generating a script?",start:"Start",memoryType:{message:"Message Memory",summary:"Summary Memory",all:"All Memory"},forceGenerate:{title:"Force Generate?",desc:"Some chapters have not completed event analysis. Do you still want to force generate?",confirm:"Force Generate",cancel:"Cancel"},msg:{clearConfirm:"Confirm Clear",clearBody:"Are you sure you want to clear {type}? This action cannot be undone.",confirmClear:"Clear",cancel:"Cancel",memoryCleared:"{type} cleared",scriptUpdated:"Script updated successfully",scriptUpdateFailed:"Failed to update script, please try again later",searchScriptFailed:"Failed to search scripts",updated:"Saved successfully",error:"Save failed",reconnect:"Reconnect",notReconnect:"Confirm that the reconnection conversation will be cut off?",keepReconnect:"confirm",deleteConfirm:"Delete confirmation",deleteBody:"Delete text",confirmDelete:"Confirm deletion",scriptDeleted:"Script deleted"},reconnect:"Reconnect"},cornerScape:{batchSettings:"Batch Gen Settings",quickActions:"Quick Actions",selectUngenerated:"Select All Ungenerated",selectGenerated:"Select All Generated",selectFailed:"Select Failed",invertSelection:"Invert Selection",clearSelection:"Clear Selection",batchPreview:"Batch Preview Images",assetTypeFilter:"Asset Type Filter",genModel:"Generation Model",resolution:"Resolution",resolutionPh:"Please select a resolution",concurrency:"Concurrency",concurrencyPh:"Enter concurrency level",startBatch:"Start generating images in batches",waitingGen:"Waiting...",generating:"Generating",genFailed:"Generation failed",imageError:"Image Error",typeRole:"Character",typeScene:"Scene",typeTool:"Prop",typeUnknown:"Unknown",descriptionSuffix:"Description: ",operateScriptFirst:"Please handle the script first",individualConfig:"Individual Config",noImage:"No Image",promptLabel:"Prompt",promptPh:"Please enter prompt",aiPolish:"AI Polish",regenerate:"Regenerate",filterRole:"Character",filterScene:"Scene",filterTool:"Prop",unnamed:"Unnamed",noDescription:"No description",msg:{selectModel:"Please select a generation model",selectResolution:"Please select a resolution",enterPrompt:"Please enter a prompt",enterPromptFirst:"Please enter a prompt first",genSuccess:"{name} generated successfully",genFailed:"{name} generation failed",promptGenSuccess:"Prompt generated successfully",polishFailed:"Failed to polish, please try again",selectAtLeastOne:"Select at least one asset for batch generation",batchStarted:"Batch generation started. Total: {count}, Concurrency: {concurrent}",batchItemFailed:"{name} generation failed: {error}",batchComplete:"Batch generation completed",batchFailed:"Batch generation failed",replaceFailed:"Replacement failed",replaceSuccess:"Replacement successful",promptGenFail:"Prompt word generation failed",saveSuccess:"Modification of prompt word successful",saveFailed:"Prompt word modification failed"},history:"historical pictures",confirmReplace:"Confirm replacement",batchGenerationPrompt:"Generate prompt words in batches",generatingPrompt:"Generating",selectPromptEmpty:"Select all prompt word is empty",noEmptyPrompt:"There are no assets with empty prompt word",selectedCount:"{count} assets selected"},script:{searchPlaceholder:"Search script names...",search:"Search",addScript:"New Script",cancelSelectAll:"Deselect All",selectAll:"Select All",exportScript:"Export Script",msg:{searchFailed:"Failed to search scripts",selectExport:"Please select a script to export",exportSuccess:"Export successful",exportFailed:"Failed to export script",deleteHeader:"Confirm Deletion",deleteBody:"Are you sure you want to delete this script? This cannot be undone.",deleteConfirm:"Delete",cancel:"Cancel",deleteSuccess:"Deleted successfully",deleteFailed:"Deletion failed",selectDelScript:"Please choose to delete the script",batchDeleteHeader:"Batch Delete",batchDeleteBody:"Are you sure you want to delete the selected {count} scripts? This cannot be undone.",batchDeleteSuccess:"Batch deletion successful",extractingInProgress:"Extracting",projectNotFound:"Item not found",selectsExport:"Please choose to export the script"},add:{title:"Add Script",scriptName:"Script Name",scriptNamePh:"Please enter script name",uploadFile:"Upload File",dragUpload:"Drag and drop your script file here or click to upload",uploadHint:"Supports .txt, .docx. Recommended file size under 10MB",scriptContent:"Script Content",scriptContentPh:"Please upload or enter script content...",relatedAssets:"Related Assets",selectAssets:"Select Assets",noAssets:"No related assets",cancel:"Cancel",confirm:"Confirm",msg:{fileReadFailed:"Failed to read file",docNotSupported:".doc parsing is not supported. Please convert to .txt or .docx",unsupportedType:"Unsupported file type",fileTooLarge:"File exceeds 10MB. Please upload a smaller file",parsing:"Parsing file...",parseFailed:"Failed to parse file, please re-upload",selectAssetsTitle:"Select Related Assets",enterContent:"Please upload or enter script content",enterName:"Please enter script name",addSuccess:"Script added successfully",addFailed:"Failed to add script, please try again later"}},edit:{title:"Script Details",scriptName:"Script Name",scriptNamePh:"Please enter script name",scriptContent:"Script Content",scriptContentPh:"Please enter script content...",relatedAssets:"Related Assets",selectAssets:"Select Assets",noAssets:"No related assets",msg:{selectAssetsTitle:"Select Related Assets",updateSuccess:"Script updated successfully",updateFailed:"Failed to update script, please try again later"}},deleteScript:"Delete scripts in batches",extractAssets:""},assets:{addPrefix:"Add",batchGenerate:"Batch Generate",generatePrompt:"Generate Prompt",generateImage:"Generate Image",batchDelete:"Batch Delete",searchPlaceholder:"Search asset names...",search:"Search",preview:"Preview",generate:"Generate",edit:"Edit",delete:"Delete",generating:"Generating",play:"Play",mediaPreview:"Media Preview",confirmBatch:"Confirm {type}!",model:"Model",resolution:"Resolution",resolutionPh:"Please select a resolution",batchGenPrompt:"Batch Generate Prompts",batchGenImage:"Batch Generate Images",role:"Character",prop:"Prop",scene:"Scene",clip:"Clip",uploadSuccess:"Upload successful",selectAtLeastOne:"Please select at least one asset",noDescription:"No description",promptGenSuccess:'Prompt for "{name}" generated successfully',promptGenFail:'Prompt generation for "{name}" failed: {error}',selectModel:"Please select a model",selectResolution:"Please select a resolution",noPromptForImage:'"{name}" lacks a prompt; cannot generate image',imageGenSuccess:'Image for "{name}" generated successfully',imageGenFail:'Image generation for "{name}" failed: {error}',confirmDeleteHeader:"Confirm Deletion",confirmBatchDeleteBody:"Are you sure you want to batch delete these assets? This cannot be undone.",confirmDeleteBody:"Are you sure you want to delete this asset? This cannot be undone.",deleteBtn:"Delete",cancelBtn:"Cancel",deleteSuccess:"Asset deleted successfully",deleteFail:"Failed to delete asset",colPreview:"Preview",colName:"Name",colPrompt:"Prompt",colDescribe:"Description",colRemark:"Remarks",colCreateTime:"Created Time",colOperation:"Operation",add:{name:"Name",namePh:"Please enter name",describe:"Description",describePh:"Please enter description",remark:"Remarks",remarkPh:"Please enter remarks",prompt:"Prompt",promptPh:"Please enter prompt",nameRequired:"Please enter a name",describeRequired:"Please enter details",remarkRequired:"Please enter remarks",updateSuccess:"Asset updated successfully",addSuccess:"Asset added successfully"},gen:{header:"Image Generation",uploadRef:"Upload Reference Image",optional:"Optional",promptLabel:"Generation Prompt",smartGenerate:"Smart Generation",generatingPrompt:"Generating smart prompt...",promptPlaceholder:"Describe the image you want to generate. e.g., A futuristic city full of tech, neon lights blinking, cyberpunk style...",selectModel:"Select Model",selectResolution:"Select Resolution",generateBtn:"Generate Image",resultTitle:"Results",generatedCount:"{count} generated. Please select one",generatingLabel:"Generating...",genFailed:"Generation failed",confirmSelect:"Confirm Selection",promptSuccess:"Prompt generated successfully",promptFail:"Failed to generate prompt",fillPrompt:"Please enter a prompt",pickResolution:"Please select a resolution",pickModel:"Please select a model",unnamed:"Unnamed",assetGenSuccess:"Asset generated successfully",assetGenFail:"Asset generation failed",uploadOk:"Uploaded successfully",imageSelected:"Image selected",imageDeleted:"Image deleted",imageSaved:"Image saved",completed:"Completed"},batch:{header:"Batch Generation",selected:"Selected {count} items",selectAll:"Select All",clearSelection:"Clear Selection",inputPh:"Please enter content",saveSelected:"Save Selected ({count})",colPreviewImg:"Preview",selectToSave:"Please select items to save",saveSuccess:"Saved successfully",saveFail:"Failed to save, please try again",promptDone:"Prompt generation completed",promptFail:"Prompt generation failed",missingPrompts:"{count} assets are missing prompts. Please generate prompts first",imageDone:"Image generation completed",imageGenFail:"Image generation failed",unknownError:"Unknown error",promptGenCancelled:"Generation canceled"}},production:{selectPlaceholder:"Please select an episode",edit:"Edit",node:{script:{title:"Script",editDialog:"Edit Script"},scriptPlan:{title:"Shooting Plan",editDialog:"Edit Shooting Plan"},storyboard:{title:"Storyboard Panel",notGenerated:"Not Generated",scaleRatio:"Zoom Ratio",gridPreview:"Grid Preview",noPreviewImages:"No images available to preview",imageLoadFailed:"Failed to load image",promptPlaceholder:"Please enter the prompt word",prompt:"prompt word",editInfo:"Prompt word modification"},storyboardTable:{title:"Storyboard Table",editDialog:"Edit Storyboard Table"},assets:{title:"Derived Assets",generateFailed:"Generation failed",notGenerated:"Not Generated",originalAsset:"Original Asset",derived:"Derived",noDerivedAssets:"No derived assets"},poster:{title:"Video Cover",coverCount:"{count} Items"},workbench:{title:"Video Workbench"}},editImage:{upload:"Upload",generate:"Generate",saveFailed:"Save failed, please try again",fetchFailed:"Failed to fetch data",generating:"Generating...",deleteNode:"Delete Node",ratio:"Ratio",quality:"Quality",generateBtn:"Generate Image",selectImage:"Select Image",imageGeneration:"Image Generation",promptPlaceholder:"Describe the image you want to generate...",imageRef:"Image {index}",videoRef:"Video {index}",audioRef:"Audio {index}",reference:"Ref {index}",noReferences:"No reference images available",selectModel:"Please select a model first",selectQuality:"Please select a quality",selectRatio:"Please select a ratio",generateFailed:"Generation failed",generateFirst:"Please generate an image first",generatedResult:"Results",waitingGenerate:"Waiting...",layoutLR:"Auto Layout - Horizontal",layoutTB:"Auto Layout - Vertical",uploadAssetImage:"Upload Asset Image",uploadStoryboardImage:"Upload Storyboard Image",uploadImage:"Asset image upload",mode:"model",closeConfirmTitle:"Close the editing panel?",closeConfirmBody:"Unsaved data will be lost after closing"},save:"Select",cancel:"Cancel",chatBox:{inputPlaceholder:"Type a message...",generateDerivedAssets:"Generate Derived Assets",welcomeMessage:"Hello! I am your AI Assistant. How can I help you?",adjustModel:"Adjust Model",startMakingVideo:"Start Making Video",startMakingVideoPrompt:"Please help me start making a video",clearMessageMemory:"Clear Message Memory",clearSummaryMemory:"Clear Summary Memory",clearAllMemory:"Clear All Memory",messageMemory:"Message Memory",summaryMemory:"Summary Memory",allMemory:"All Memory",confirmClear:"Clear Memory",confirmClearBody:"Are you sure you want to clear {type}?",confirmClearBtn:"Confirm",memoryCleared:"{type} cleared"},wb:{quickPreview:"Quick Preview",videoGeneration:"Storyboard",videoEditing:"editing desk",hint:"Hint",extractLines:"Extract lines from video?",no:"No",confirm:"Yes",extractLinesQuestion:"Do you want to extract dialogue lines from the video as subtitles?",importingLoading:"Importing, please wait...",mainTrackVideo:"Main Track (Video)",subtitle1:"Subtitle 1",storyboardVideoName:"Storyboard Video-{storyboard}.mp4"},preview:{noImage:"No Image",storyboardDesc:"Storyboard Description",serialNumber:"No.",noDescription:"No Description",duration:"Duration",seconds:"s",relatedAssets:"Related Assets",role:"Character",prop:"Prop",scene:"Scene",noCharacters:"No characters appear",imagePrompt:"Image Prompt",selectAll:"Select All",exportImage:"Export Image",sceneDescription:"Scene Description",promptLabel:"Prompt",restoreSort:"Reset Sorting",restoreSortConfirm:"Are you sure you want to revert to the original sorting?",tip:"Tip",selectAtLeastOne:"Please select at least one storyboard to export",exportFilename:"Storyboard pictures"},generate:{noVideo:"No Video",videoPrompt:"Video Prompt",promptPlaceholder:"Enter prompt words to describe the video content you want to generate...",refImage:"Reference Image",image:"Image",refVideo:"Reference Video",refImageLabel:"Reference Image",refAudio:"Reference Audio",muteAudio:"Mute Audio",enableAudio:"Enable Audio",resolution:"Resolution",duration:"Duration",generate:"Generate",historyVersions:"History Versions",confirmSelection:"Confirm Selection",noHistory:"No history available",generating:"Generating",generatingPrompt:"Intelligent generation of prompt words",generateFailed:"Generation failed",selectAll:"Select All",videoTrack:"Video Track",batchGenerate:"Batch Generate",importToEditor:"Import to Editor",modeSingleImage:"Single Image",modeMultiImage:"Multi-Image",modeGridImage:"Grid Multi-Image",modeStartEnd:"Start & End Frames",modeText:"Text to Video",modeVideoRef:"Video Reference",modeImageRef:"Image Reference",modeAudioRef:"Audio Reference",modeTextRef:"Text Reference",startFrame:"Start Frame",startFrameOptional:"Start Frame (Optional)",endFrame:"End Frame",endFrameOptional:"End Frame (Optional)",selectRefImage:"Select Reference Image",selectRefImages:"Select Reference Images",selectEndFrame:"Select End Frame Image",selectRefVideoAsset:"Select Reference Video",selectRefAudioAsset:"Select Reference Audio",selectRefImageAsset:"Select Reference Image",selectImageSource:"Select Image Source",fromStoryboard:"Storyboard Image",fromStoryboardDesc:"Select image from storyboard list",fromAssets:"Asset Image",fromAssetsDesc:"Select image from asset library",confirmDelete:"Confirm Deletion",confirmDeleteBody:"Are you sure you want to delete this video? This cannot be undone.",delete:"Delete",cancel:"Cancel",deleteSuccess:"Video deleted successfully",deleteFailed:"Deletion failed",selectVideoFirst:"Please select a video first",confirmSuccess:"Selection confirmed",batchSubmitted:"Batch generation request submitted. Processing...",configNotFound:"Configuration not found",pollingFailed:"Video status query failed, please refresh manually",batchGeneratePrompt:"Generate prompt words in batches",promptEmpty:"Please enter a video prompt first",modelEmpty:"Please select a video generation model first",batchPromptEmpty:`Storyboard {name} is available for video prompts. Please create or fill in the prompt first`,batchModelEmpty:"Storyboard {names} has no model configured. Please select a model first"},editVideo:{reset:"Reset",undo:"Undo",redo:"Redo",split:"Split",delete:"Delete",rendering:"Rendering...",exportVideo:"Export Video",exportSuccess:"Video export completed",exportFailed:"Export failed",sampleSubtitle:"Sample Subtitle Text",customText:"Custom Text Content",transitionBetweenClips:"Transitions must be added between two adjacent clips",transitionExists:"A transition already exists at this location",videoPreviewArea:"Video Preview Area",clipMaterials:"Clip Materials",propertyPanel:"Properties Panel",selectClip:"Select a clip to view properties",basicInfo:"Basic Info",name:"Name",clipNamePlaceholder:"Clip Name",startTime:"Start",endTime:"End",totalDuration:"Total Duration",videoProperties:"Video Properties",opacity:"Opacity",volume:"Volume",playbackSpeed:"Playback Speed",audioProperties:"Audio Properties",fadeIn:"Fade In",fadeOut:"Fade Out",transitionProperties:"Transition Properties",transitionType:"Transition Type",transFade:"Fade",transSlide:"Slide",transWipe:"Wipe",transDissolve:"Dissolve",transZoom:"Zoom",transRotate:"Rotate",transitionDuration:"Transition Duration",subtitleProperties:"Subtitle Properties",textContent:"Text Content",fontSize:"Font Size",copy:"Copy",deleteConfirm:"Confirm Deletion",deleteClipConfirm:"Are you sure you want to delete this clip?",avCanvasNotInit:"AVCanvas not initialized",noExportContent:"No content to export",exportProject:"Export Project",transitionAdded:"Transition added: {name}",splitClip:"Split Clip",deleteClip:"Delete Clip",addClip:"Add {name}",duplicateClip:"Duplicate Clip",addTransition:"Add Transition",updateClip:"Update Clip {key}",updatePlaybackRate:"Update Playback Rate to {rate}x",updateTransitionDuration:"Update Transition Duration",playbackRateRange:"Playback rate must be between 0.1 and 10",updatePlaybackRateFailed:"Failed to update playback rate:",importProject:"Import Project",import:"Import"},clipType:{video:"Video",audio:"Audio",subtitle:"Subtitle",transition:"Transition",sticker:"Sticker",filter:"Filter",effect:"Effect"},track:{video:"Video",image:"Image",audio:"Audio",subtitle:"Subtitle",text:"Text",sticker:"Sticker",filter:"Filter",effect:"Effect"},transition:{fade:"Fade",slide:"Slide",slideLeft:"Slide Left",slideRight:"Slide Right",slideUp:"Slide Up",slideDown:"Slide Down",wipe:"Wipe",wipeLeft:"Wipe Left",wipeRight:"Wipe Right",wipeUp:"Wipe Up",wipeDown:"Wipe Down",dissolve:"Dissolve",zoom:"Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",rotate:"Rotate",circle:"Circle",diamond:"Diamond",clock:"Clock",blur:"Blur"},media:{titleText:"Title Text",subtitleText:"Subtitle Text",customText:"Custom Text",media:"Media",image:"Image",audio:"Audio",subtitle:"Subtitle",transition:"Transition",effect:"Effect",filter:"Filter",loading:"Loading...",subtitlePreview:"Text",video:"video"},effect:{fadeIn:"Fade In",fadeOut:"Fade Out",flash:"Flash",shake:"Shake",zoomIn:"Zoom In",zoomOut:"Zoom Out",pulse:"Pulse",rotateIn:"Rotate In",sticker1:"Sticker 1",sticker2:"Sticker 2"},filter:{grayscale:"Grayscale",sepia:"Sepia",warm:"Warm",cool:"Cool",vivid:"Vivid",bright:"Bright",highContrast:"High Contrast",blur:"Blur",invert:"Invert",semiTransparent:"Semi-Transparent"},guideSwitchEpisode:"Switch Episodes",guideSwitchEpisodeBody:"Switching episodes has been moved here!",guideRefresh:"Refresh Data",guideRefreshBody:"Click the refresh button to reload workspace data",guideCanvasNav:"Canvas Navigation",guideCanvasNavBody:"Scroll to pan vertically, Ctrl + Scroll to zoom, drag with left mouse button to pan freely",guideRightChat:"AI Chat",guideRightChatBody:"Chat with AI in the right panel to drive automated workflows",guideLayoutBtn:"Auto Layout",guideLayoutBtnBody:"Click this button to automatically arrange node layout",autoLayoutLR:"Automatic typesetting-left and right layout",autoLayoutTB:"Automatic typesetting-top and bottom layout",getFlowData:"Refresh workspace",confirm:"Switch episode confirmation",confirmEpisodesSwitch:"The current task is still in progress. Switching episodes will reconnect the session. Do you want to continue switching?"},task:{title:"Task List",subtitle:"Your latest task execution records",refresh:"Refresh",categoryLabel:"Task Category:",stateLabel:"Status:",noFailReason:"No failure reason",stateAll:"All",stateRunning:"Running",stateCompleted:"Completed",stateFailed:"Failed",fetchFailed:"Failed to fetch task list",col:{taskClass:"Task Category",relatedObjects:"Related Objects",model:"Model",describe:"Description",state:"Status",startTime:"Time",reason:"Reason for failure"},project:"Project name:"},noVideo:"No video yet",prompt:"Video prompt words",generateText:"AI generated prompt words",selectStoryboard:"Select storyboard",generate:{noVideo:"No video yet",generateText:"AI generated prompt words",selectStoryboard:"Select storyboard",generate:"Generate video",history:"Historical version",generating:"Generating",generateFailed:"fail",selectAll:"Select all",selected:"Selected",batchGenerateText:"Generate prompt words in batches",batchGenerateVideo:"Generate videos in batches",importVideo:"Import to editing desk",emptyTrack:"Paragraph {index 1}",del:"delete",delConfirm:"Are you sure you want to delete this paragraph?",selectSource:"Select source",confirm:"Select from assets",cancel:"Select from storyboard",selectVideoFailed:"Video selection failed",selectVideoSuccess:"Video selection successful",selectTrackFirst:"Please select the storyboard first",noSelectedVideo:"No videos selected",generateConfirm:"Confirm generation",generateConfirmBody:"Confirm to generate video",generateVideosInBatches:"Generate videos in batches",generateStarted:"Build starts",skipDataWithEmptyVideoPromptWords:"The video data that needs to be generated exists and the prompt word is empty.",duration:"duration",resolution:"resolution",delVideo:"Confirm to delete this video?",delSuccess:"Delete successfully",addReference:"add reference",promptPlaceholder:"Please enter the video prompt word",downloadVideo:"Download videos in batches",selectVideo:"Please check the video you want to download"}},WCi={slogan:"Intelligent Short Drama Creation Platform",tips:"Default Account: admin / admin123",settings:"Server Settings",requestAddress:"Request URL",username:"Username",password:"Password",login:"Login",usernameRequired:"Please enter username",passwordRequired:"Please enter password",enterUsernameAndPassword:"Please enter username or password",loginSuccess:"Login successful",settingsSaved:"Settings saved"},VCi={prompt:"prompt word"},zCi={welcomeTitle:"Welcome to ToonFlow",welcomeDesc:"AI-driven comic creation workflow platform, let us spend a minute to complete the initial configuration.",startConfig:"Start configuration",skip:"Skip boot",configModel:"Add model service",configData:"Configure Agent",startUse:"Get started",configModelTitle:"Add model service provider",configModelDesc:"First, you need to add at least one AI model service provider (such as OpenAI, Claude, etc.) in the settings and fill in the corresponding API Key.",configModelTip:'Clicking the button below will open the "Model Service" tab of the settings page. After adding the supplier, return here to continue.',configModelBtn:"Go to configure model service",configAgentTitle:"Assign Agent Model",configAgentDesc:"Next, assign models to each functional module in the Agent configuration so that the system knows which model to call to complete the task.",configAgentTip:'Clicking the button below will open the "Agent Configuration" tab of the settings page. Return here after assigning models to each function.',configAgentBtn:"Go to configure Agent",finishTitle:"🎉 Everything is ready!",finishDesc:`The configuration is complete and now you can start using all the features. -If you need to adjust it, you can modify it in the settings at any time.`,qrcodeLabel:"Join the WeChat communication group to get more help:",githubLabel:"If you find it useful, please give us a ⭐ Star!",prevStep:"Previous step",nextStep:"Next step",finish:"Get started"},HCi={skillManagement:{search:"Search file name",empty:"No matching files",edit:"edit",selectOnTheLeft:"Please select a file from the left"}},$Ci={assets:{notExist:"Asset does not exist",notDerivativeExist:"Derivative assets do not exist",derivativeUpdateSuccess:"Update successful",derivativeState:"Not generated",derivativeAddSuccess:"Added successfully",derivativeDelSuccess:"Delete successfully",notGenerated:"Not generated"},addSuccess:"Update successful",state:{unused:"Not generated"},saveSuccess:"Added successfully"},XCi={generating:"Generating"},GCi={scanning:"🔍 Parsing and loading Skill",scanComplete:"✨ Skill Scan Complete",inserted:"✅ Added {count} Skills",updated:"🔄 {count} Skill(s) updated",removed:"🗑️ {count} Skill(s) removed",scannedFiles:"📁 Scanned {count} files",noDescription:"📝 {count} Skill(s) missing description",noAttribution:"👤 {count} Skill(s) missing attribution",configWarning:"⚠️ Skill Config Warning",openSettings:"Open Settings",scanFailed:"❌ Scan Failed",checkNetwork:"🔌 Please check network connection or try again later",retryLater:"🔁 Please try again later"},YCi="Generate video",ZCi="Historical version",qCi="Generating",KCi="fail",JCi="Select all",e_i="Selected",t_i="Import video",n_i="Paragraph {index 1}",i_i="Confirm deletion",r_i="Are you sure you want to delete this paragraph?",o_i="Select source",s_i="Select from assets",a_i="Select from storyboard",l_i={newVersion:"There is a new version, do you want to update it?"},c_i={components:NCi,settings:UCi,workbench:jCi,login:WCi,"components.storyboardImageCheck.camera":"Camera","components.storyboardImageCheck.dialogTitle":"Select Storyboard Image","components.storyboardImageCheck.preview":"Preview","components.storyboardImageCheck.src":"Preview Image","components.storyboardImageCheck.title":"Title","components.storyboardImageCheck.duration":"Duration","components.storyboardImageCheck.lines":"Lines","components.storyboardImageCheck.createTime":"Created Time","workbench.script.extractAssets":"Extract Assets",promptManage:VCi,hello:zCi,setting:HCi,storyboard:$Ci,productionAgent:XCi,skillScan:GCi,generate:YCi,history:ZCi,generating:qCi,generateFailed:KCi,selectAll:JCi,selected:e_i,importVideo:t_i,emptyTrack:n_i,del:i_i,delConfirm:r_i,selectSource:o_i,confirm:s_i,cancel:a_i,"workbench.script.msg.selectExport":"","workbench.script.msg.exportFailed":"Export failed","workbench.production.node.assets.confirmDeleteBody":"Confirm whether to delete the asset","workbench.production.node.assets.removeFailed":"Failed to delete asset",version:l_i,"workbench.production.generatedNode.localUpload":"Local upload","workbench.production.editImage.uploadFailed":"Image upload failed","workbench.production.editImage.noImage":"Please add pictures first"},d_i={editMdPreivew:{title:"แก้ไข",confirm:"บันทึก",cancel:"ยกเลิก"},imageTools:{copy:"คัดลอกรูปภาพ",preview:"ดูตัวอย่าง",download:"ดาวน์โหลด",msg:{imageLoadFailed:"โหลดรูปภาพล้มเหลว",convertFailed:"แปลงไฟล์ล้มเหลว",copied:"คัดลอกไปยังคลิปบอร์ดแล้ว",copyFailed:"คัดลอกล้มเหลว",downloadFailed:"ดาวน์โหลดล้มเหลว",downloadStarted:"เริ่มการดาวน์โหลด",downloadBlockedOpenNewWindow:"แหล่งที่มารูปภาพปัจจุบันอาจจำกัดการดาวน์โหลด ระบบได้ลองเปิดในหน้าต่างใหม่แล้ว"}},migrateShow:{title:"ย้ายข้อมูล",desc:"ตรวจพบว่าคุณมีข้อมูลจากเวอร์ชันเก่า ต้องการย้ายข้อมูลหรือไม่?",hide:"ไม่ต้องแสดงอีก",confirm:"ตกลง",msg:{migrateSuccess:"ย้ายข้อมูลสำเร็จ",migrateFailed:"ย้ายข้อมูลล้มเหลว"}},modelSelect:{placeholder:"โปรดเลือกโมเดล",type:{image:"รูปภาพ",text:"ข้อความ",video:"วิดีโอ"},msg:{fetchModelFailed:"ดึงข้อมูลโมเดลล้มเหลว:"},goSetting:"ไปที่การตั้งค่าและเพิ่มโมเดล"}},u_i={title:"การตั้งค่า ToonFlow",menu:{language:"ตั้งค่าภาษา",vendorConfig:"บริการโมเดล",agentConfig:"การตั้งค่า Agent",promptManage:"การจัดการพรอมต์",skillManagement:"จัดการซิลเลคต",memoryConfig:"หน่วยความจำ Agent",loginConfig:"การตั้งค่าเข้าสู่ระบบ",dbConfig:"จัดการฐานข้อมูล",fileManagement:"จัดการไฟล์",otherConfig:"การตั้งค่าอื่นๆ",requestConfig:"ที่อยู่คำขอ (API URL)",about:"ตรวจสอบการอัปเดต",logoutConfig:"ออกจากระบบ",skillsSkillsManagement:"การจัดการทักษะทักษะ"},language:{desc:"เลือกภาษาที่แสดงบนอินเทอร์เฟซ",msg:{saved:"บันทึกการตั้งค่าภาษาแล้ว"}},vendor:{addVendor:"เพิ่มผู้ให้บริการ",noVendor:"ยังไม่มีผู้ให้บริการ โปรดเพิ่มก่อน",required:"จำเป็น",optionalSection:"ตัวเลือกเสริม",modelSettings:"การตั้งค่าโมเดล",addManually:"เพิ่มด้วยตนเอง",test:"ทดสอบ",edit:"แก้ไข",delete:"ลบ",deleteVendor:"ลบผู้ให้บริการ",editCode:"แก้ไขโค้ด",updateConfig:"อัปเดตการตั้งค่า",addModel:"เพิ่มโมเดล",editModel:"แก้ไขโมเดล",displayName:"ชื่อที่แสดง",displayNamePlaceholder:"ตัวอย่างเช่น: GPT-4o",modelId:"รหัสโมเดล (Model ID)",modelIdPlaceholder:"ตัวอย่างเช่น: gpt-4o",modelType:"ประเภทโมเดล",multimodal:"มัลติโมดัล (Multimodal)",supported:"รองรับ",notSupported:"ไม่รองรับ",toolCall:"การเรียกใช้เครื่องมือ",imageMode:"โหมดรูปภาพ",videoMode:"โหมดวิดีโอ",audioOutput:"เอาต์พุตเสียง",durationResolution:"การจับคู่ความยาว / ความละเอียด",durationSec:"ความยาว (วินาที)",resolution:"ความละเอียด",enterAndPress:"พิมพ์แล้วกด Enter",addDurationResolution:"เพิ่มชุดความยาว / ความละเอียด",testResult:"ผลการทดสอบ",generating:"กำลังสร้าง...",addVendorDialog:"เพิ่มผู้ให้บริการ",codeEditorInfo:"โปรดเขียนโค้ด TypeScript เพื่อตั้งค่าข้อมูลผู้ให้บริการ",reset:"รีเซ็ต",importFile:"นำเข้าไฟล์",textModel:"โมเดลข้อความ",imageModel:"โมเดลรูปภาพ",videoModel:"โมเดลวิดีโอ",textToImage:"สร้างภาพจากข้อความ",textToVideo:"สร้างวิดีโอจากข้อความ",singleImage:"รูปภาพเดียว",multiImage:"โหมดหลายรูปภาพ",multiReference:"อ้างอิงหลายรูปภาพ",gridImage:"รูปภาพกริดเดียว",startEndRequired:"เฟรมแรกและสุดท้าย (จำเป็นต้องระบุทั้งสอง)",endFrameOptional:"เฟรมแรกและสุดท้าย (เฟรมสุดท้ายระบุหรือไม่ก็ได้)",startFrameOptional:"เฟรมแรกและสุดท้าย (เฟรมแรกระบุหรือไม่ก็ได้)",textRef:"ข้อความ",imageRef:"รูปภาพ",videoRef:"วิดีโอ",audioRef:"เสียง",audioOptional:"ตัวเลือก",audioOnly:"ส่งออกเฉพาะวิดีโอที่มีเสียง",noAudio:"ส่งออกเฉพาะวิดีโอที่ไม่มีเสียง",msg:{getVendorListFailed:"ดึงรายการผู้ให้บริการล้มเหลว",vendorConfigUpdated:"อัปเดตการตั้งค่าผู้ให้บริการแล้ว",updateFailed:"อัปเดตล้มเหลว",highRiskConfirm:"⚠️ ยืนยันการดำเนินการที่มีความเสี่ยงสูง",addVendorRiskBody:"การเพิ่มผู้ให้บริการ AI รายใหม่จะให้สิทธิ์ในการเข้าถึง API ของระบบ โปรดยืนยันว่าคุณเชื่อถือแหล่งที่มาของโค้ดจากผู้ให้บริการรายนี้!",iKnowRisk:"ฉันรับทราบความเสี่ยง",cancel:"ยกเลิก",confirmAgain:"⚠️ ยืนยันอีกครั้ง",addVendorConfirmBody:"คุณแน่ใจหรือไม่ว่าต้องการเพิ่มผู้ให้บริการรายนี้? หลังจากเพิ่มแล้ว ระบบจะนำไปใช้ในการจัดสรรโมเดล",confirmAndAdd:"ยืนยันและเพิ่ม",goBackCheck:"กลับไปตรวจสอบ",vendorAdded:"เพิ่มผู้ให้บริการสำเร็จแล้ว",addFailed:"เพิ่มล้มเหลว",updateVendorRiskBody:"การอัปเดตการตั้งค่าผู้ให้บริการ AI จะปรับเปลี่ยนสิทธิ์และพฤติกรรมการเข้าถึง API ของระบบ โปรดยืนยันว่าคุณเชื่อถือแหล่งที่มาของโค้ดที่ถูกแก้ไขนี้!",updateVendorConfirmBody:"คุณแน่ใจหรือไม่ว่าต้องการอัปเดตการตั้งค่าผู้ให้บริการนี้? การอัปเดตจะมีผลต่อการจัดสรรโมเดลของระบบ",confirmAndUpdate:"ยืนยันและอัปเดต",updateSuccess:"อัปเดตการตั้งค่าผู้ให้บริการสำเร็จ",fillDisplayName:"โปรดกรอกชื่อที่แสดง",fillModelId:"โปรดกรอกรหัสโมเดล",selectImageMode:"โปรดเลือกโหมดรูปภาพ",selectVideoMode:"โปรดเลือกโหมดวิดีโอ",groupPrefix:"กลุ่มที่ {n}:",addDuration:"โปรดเพิ่มความยาว",addResolution:"โปรดเพิ่มความละเอียด",selectVendorFirst:"โปรดเลือกผู้ให้บริการก่อน",modelIdExists:"รหัสโมเดลนี้มีอยู่แล้ว",modelAdded:"เพิ่มโมเดลสำเร็จแล้ว",modelUpdated:"อัปเดตโมเดลสำเร็จแล้ว",enterApiKey:"โปรดกรอก API KEY",enterApiUrl:"โปรดกรอก API URL",testSuccess:"ทดสอบสำเร็จ",imageGenSuccess:"สร้างรูปภาพสำเร็จ",videoGenSuccess:"สร้างวิดีโอสำเร็จ",requestFailed:"ส่งคำขอล้มเหลว",deleteModelConfirm:"ยืนยันการลบโมเดล",deleteModelBody:"หลังจากลบแล้วจะไม่สามารถกู้คืนได้ ต้องการดำเนินการต่อหรือไม่?",confirmDelete:"ยืนยันการลบ",modelDeleted:"ลบโมเดลแล้ว",deleteVendorConfirm:"ยืนยันการลบผู้ให้บริการ",deleteVendorBody:"หลังจากลบแล้ว โมเดลทั้งหมดภายใต้ผู้ให้บริการรายนี้จะถูกลบไปด้วย ต้องการดำเนินการต่อหรือไม่?",vendorDeleted:"ลบผู้ให้บริการแล้ว",deleteFailed:"ลบล้มเหลว",enabled:"เปิดใช้งานแล้ว",disabled:"พิการ",linkAddVendorRiskBody:"การเพิ่มผู้จำหน่าย AI ใหม่จะทำให้สามารถเข้าถึง API ระบบได้ โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อถือแหล่งลิงก์ของผู้ขาย!",importAdd:"การเพิ่มผู้จำหน่าย AI ใหม่จะทำให้สามารถเข้าถึง API ระบบได้ โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อถือแหล่งเอกสารประกอบของผู้ขาย!",linkAddFailed:"ไม่สามารถเพิ่มลิงก์"},associationSkills:"ทักษะที่เกี่ยวข้อง",think:"คิดลึก",code:"รหัส",linkAddPlaceholder:"ใส่ลิงค์เพื่อเพิ่ม",noFileSelected:"นำเข้าไฟล์เรียบร้อยแล้ว",linkAdd:"ยืนยัน"},agent:{bannerDesc:"ใช้เซิร์ฟเวอร์ตัวกลางอย่างเป็นทางการของ Toonflow รองรับการกรอกการตั้งค่าในคลิกเดียว พร้อมใช้งานทันทีโดยไม่ต้องตั้งค่าด้วยตนเอง",visitWebsite:"เข้าสู่เว็บไซต์",fillKey:"กรอก KEY",oneClickFill:"กรอกในคลิกเดียว",notOpen:"ยังไม่เปิดให้บริการ",notConfigured:"ยังไม่ได้ตั้งค่า",modelConfig:"การตั้งค่าโมเดล",confirm:"ยืนยัน",cancel:"ยกเลิก",selectModel:"เลือกโมเดล",fillKeyHeader:"กรอก KEY อย่างเป็นทางการจากแพลตฟอร์ม Toonflow",keyPlaceholder:"โปรดกรอก KEY",save:"บันทึก",msg:{notAvailable:"ฟีเจอร์นี้ยังไม่เปิดให้บริการ โปรดติดตามเร็วๆ นี้",configSuccess:"ตั้งค่าสำเร็จ",updateConfigFailed:"อัปเดตการตั้งค่าล้มเหลว:",keyValid:"KEY ถูกต้อง เชื่อมต่อกับแพลตฟอร์ม Toonflow สำเร็จแล้ว",keyInvalid:"KEY ไม่ถูกต้อง โปรดตรวจสอบและกรอกใหม่อีกครั้ง:",enterKey:"โปรดกรอก KEY",saveFailed:"บันทึกล้มเหลว:",getAgentListFailed:"ดึงรายการการตั้งค่า Agent ล้มเหลว:",toonflowNotFound:"ไม่มีสถานีรับส่งอย่างเป็นทางการของ Toonflow"}},memory:{warning:"รายการการตั้งค่าต่อไปนี้ถูกกำหนดล่วงหน้าเป็นค่าที่แนะนำ เว้นแต่คุณจะเข้าใจความหมายและผลกระทบของการตั้งค่าแต่ละรายการอย่างชัดเจน ขอแนะนำให้คงการตั้งค่าปัจจุบันไว้",vectorModelConfig:"การตั้งค่าโมเดลเวกเตอร์ (Vector Model)",modelFilePath:"เส้นทางไฟล์โมเดล",quantizationType:"ประเภท Quantization",quantizationPlaceholder:"โปรดกรอกประเภท Quantization",memoryParams:"พารามิเตอร์หน่วยความจำ",messagesPerSummary:"จำนวนข้อความที่จะทริกเกอร์การบีบอัด",messagesPerSummaryHelp:"เก็บบริบทของบทสนทนา N รายการล่าสุด",shortTermLimit:"จำนวนข้อความที่ยังไม่ถูกบีบอัดในการดึงข้อมูลครั้งเดียว",shortTermLimitHelp:"จำนวนหน่วยความจำที่เป็นไปได้ที่จะถูกส่งคืนเมื่อทำการค้นหา",summaryMaxLength:"จำนวนตัวอักษรสูงสุดในการบีบอัด",summaryMaxLengthHelp:"จำนวนตัวอักษรสูงสุดที่อนุญาตเมื่อทำการบีบอัดข้อความ",summaryLimit:"จำนวนข้อความที่ถูกบีบอัดที่อนุญาตให้สืบค้น",summaryLimitHelp:"จำนวนข้อความที่ถูกบีบอัดที่อนุญาตให้ทำการสืบค้นได้",ragLimit:"จำนวนหน่วยความจำในการค้นหา",ragLimitHelp:"จำนวนข้อความที่จะดึงมาเมื่อทำการค้นหา",deepRetrieveSummaryLimit:"จำนวนข้อความที่ถูกบีบอัดที่จะเรียกคืนด้วยเวกเตอร์",deepRetrieveSummaryLimitHelp:"จำนวนข้อความที่จะดึงมาเมื่อทำการค้นหาเนื้อหาของข้อความที่ถูกบีบอัด",saveConfig:"บันทึกการตั้งค่า",clearMemory:"ล้างหน่วยความจำ",restoreDefault:"กู้คืนการตั้งค่าเริ่มต้น",msg:{saved:"บันทึกการตั้งค่าหน่วยความจำแล้ว",clearConfirmTitle:"ยืนยันการล้างหน่วยความจำ",clearConfirmBody:"การดำเนินการนี้จะล้างข้อมูลหน่วยความจำทั้งหมดของ AI และไม่สามารถกู้คืนได้ ต้องการดำเนินการต่อหรือไม่?",confirmClear:"ยืนยันการล้าง",cancel:"ยกเลิก",cleared:"ล้างหน่วยความจำแล้ว",clearFailed:"ล้างหน่วยความจำล้มเหลว"}},login:{username:"ชื่อผู้ใช้",usernamePlaceholder:"โปรดกรอกชื่อผู้ใช้",password:"รหัสผ่าน",passwordPlaceholder:"โปรดกรอกรหัสผ่าน",modify:"แก้ไข",msg:{enterUsername:"โปรดกรอกชื่อผู้ใช้",usernameLength:"ความยาวชื่อผู้ใช้ต้องอยู่ระหว่าง 2-20 ตัวอักษร",enterPassword:"โปรดกรอกรหัสผ่าน",passwordLength:"ความยาวรหัสผ่านต้องอยู่ระหว่าง 6-20 ตัวอักษร",fetchFailed:"ดึงข้อมูลผู้ใช้ล้มเหลว",saveSuccess:"บันทึกสำเร็จ",saveFailed:"บันทึกล้มเหลว"}},db:{clearDb:"ล้างฐานข้อมูล",clearDbDesc:"ล้างข้อมูลทั้งหมดในตารางข้อมูล โดยคงไว้เพียงโครงสร้างตาราง",clearData:"ล้างข้อมูล",confirmAction:"ยืนยันการดำเนินการ",msg:{clearDbTitle:"ล้างฐานข้อมูล",firstConfirm:"แน่ใจหรือไม่ว่าต้องการล้างข้อมูลในตารางทั้งหมด? ข้อมูลที่ถูกล้างจะไม่สามารถกู้คืนได้!",secondConfirm:"นี่คือการยืนยันครั้งสุดท้าย หลังจากล้างแล้วข้อมูลทั้งหมดจะสูญหายถาวร!",keyword:"ล้างข้อมูล",confirm:"ยืนยัน",pleaseInput:"โปรดพิมพ์",cleared:"ตารางข้อมูลทั้งหมดถูกล้างเรียบร้อยแล้ว",operationFailed:"การดำเนินการล้มเหลว โปรดลองอีกครั้ง",cancelled:"ยกเลิกการดำเนินการแล้ว"}},other:{requestTimeout:"หมดเวลาคำขอ (Timeout)",seconds:"วินาที",inputSeconds:"โปรดกรอกเวลา (วินาที)",assetConcurrency:"จำนวนการสร้างสินทรัพย์พร้อมกัน (Concurrency)",count:"รายการ",inputCount:"โปรดกรอกจำนวนรายการ",chapterRegex:"นิพจน์ปกติสำหรับแยกตอน (Regex)",restoreDefault:"กู้คืนค่าเริ่มต้น",regexPlaceholder:"โปรดกรอกนิพจน์ปกติ (Regex)",showTitleBar:"แสดงแถบชื่อเรื่อง",isElectron:"สลับไปที่โหมดเดสก์ท็อป",canvasScroll:"เลื่อนผ้าใบ",canvasIsDisabled:"แคนวาสซูม",agentCanvasScalingMethod:"งานล้อผ้าใบตัวแทน",zoom:"ซูม",scroll:"เลื่อน",isInteracting:"การเพิ่มประสิทธิภาพการลากผ้าใบไม่จำกัดบนหน้าการผลิต",closeIsInteracting:"ปิด"},request:{warning:"หากไม่มีกรณีพิเศษ ไม่จำเป็นต้องแก้ไขหรือตั้งค่าใดๆ",apiAddress:"ที่อยู่ API",apiPlaceholder:"โปรดกรอกที่อยู่คำขอ API",save:"บันทึก",reset:"รีเซ็ต",msg:{enterApi:"โปรดกรอกที่อยู่ API",validUrl:"โปรดกรอกที่อยู่ HTTP/HTTPS ที่ถูกต้อง",saved:"บันทึกที่อยู่คำขอสำเร็จ",reset:"รีเซ็ตเป็นที่อยู่เริ่มต้นแล้ว",refreshFailed:"รีเฟรชล้มเหลว",refreshSuccess:"รีเฟรชสำเร็จ"},refresh:"รีเฟรช"},about:{slogan:"เครื่องมือสร้างการ์ตูน / สตอรี่บอร์ดที่ขับเคลื่อนด้วย AI แบบโอเพนซอร์ส",latestVersion:"นี่คือเวอร์ชันล่าสุด",checkUpdate:"ตรวจสอบการอัปเดต",codeRepository:"คลังเก็บโค้ด",githubRepo:"คลัง GitHub",giteeRepo:"คลัง Gitee",versionUpdate:"อัปเดตเวอร์ชัน",checkUpdateGithub:"ตรวจสอบการอัปเดต (GitHub)",getFromGithub:"รับเวอร์ชันล่าสุดจาก GitHub Release",checkUpdateGitee:"ตรวจสอบการอัปเดต (Gitee)",getFromGitee:"รับเวอร์ชันล่าสุดจาก Gitee Release",license:"ใบอนุญาต (License)",licenseDesc:"ข้อตกลงใบอนุญาตโอเพนซอร์ส · คลิกเพื่อดูรายละเอียด",updateAvailable:"พบเวอร์ชันใหม่แล้ว",upToDate:"ตรวจพบเวอร์ชันใหม่"},logout:{warning:"หลังจากออกจากระบบ คุณจะต้องเข้าสู่ระบบใหม่เพื่อใช้งานระบบต่อไป",confirmLogout:"แน่ใจหรือไม่ว่าต้องการออกจากระบบ?",logout:"ออกจากระบบ",msg:{logoutSuccess:"ออกจากระบบสำเร็จ",logoutFailed:"ออกจากระบบล้มเหลว โปรดลองอีกครั้ง"}},file:{quickOpen:"เปิดไดเรกทอรีอย่างรวดเร็ว",open:"เปิด",dockerDesc:'สำหรับการปรับใช้ Docker/แยกส่วนหน้าและส่วนหลัง โปรดไปที่ไดเรกทอรี "/data/*" เพื่อจัดการไฟล์ด้วยตนเอง',desktopOnly:"ฟีเจอร์นี้รองรับเฉพาะเวอร์ชันเดสก์ท็อปเท่านั้น",folders:{data:"data",dataDesc:"ไดเรกทอรีข้อมูล",logs:"data/logs",logsDesc:"บันทึกการทำงานและบันทึกข้อผิดพลาด",oss:"data/oss",ossDesc:"ทรัพยากรที่เกี่ยวข้องกับการจัดเก็บไฟล์",skills:"data/skills",skillsDesc:"ไฟล์การตั้งค่าทักษะ (Skills) และพรอมต์",models:"data/models",modelsDesc:"ไฟล์โมเดลและการตั้งค่า",web:"data/web",webDesc:"ทรัพยากรเว็บ เช่น ผลลัพธ์จากการบิลด์ส่วนหน้า เป็นต้น",serve:"data/serve",serveDesc:"ไฟล์ที่เกี่ยวข้องกับบริการส่วนหลัง"},openFailed:"เปิดโฟลเดอร์ล้มเหลว"},skill:{scanSkills:"สแกนทักษะ",fileLost:"ไฟล์หายไป"},dev:{warning:"ต่อไปนี้เป็นเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ โปรดดำเนินการด้วยความระมัดระวัง!",openDevtool:"เปิด",devtoolsDoc:"ที่อยู่เอกสาร",devtoolsDesc:"หลังจากเปิดใช้งานแล้ว โฟลเดอร์ .devtools จะถูกสร้างขึ้นในไดเร็กทอรีการติดตั้ง Toonflow โปรดตรวจสอบให้แน่ใจว่า Toonflow มีสิทธิ์ในการเขียน (ทำงานในฐานะผู้ดูแลระบบ)",devtoolsDesc2:"เรียกใช้ npx {'@'}ai-sdk/devtools ในไดเรกทอรีนี้เพื่อเปิดใช้งานการแก้ไขจุดบกพร่องการวัดและส่งข้อมูลทางไกล",openDevtoolFailed:"ไม่สามารถเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ได้ โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้ง Toonflow desktop แล้ว",notInElectron:"สำหรับสภาพแวดล้อมแบบเว็บ โปรดเปิดคอนโซลเบราว์เซอร์ด้วยตนเอง"}},h_i={selectProject:"โปรดเลือกโปรเจกต์",menu:{myProject:"โปรเจกต์ของฉัน",taskCenter:"ศูนย์งาน",novel:"ต้นฉบับนิยาย",scriptAgent:"Agent บทภาพยนตร์",scriptManage:"จัดการบทภาพยนตร์",cornerScape:"สร้างตัวละครและฉาก",production:"ผลิตวิดีโอ",assetCenter:"ศูนย์สินทรัพย์",settings:"การตั้งค่า",jumpGithub:"ข้ามไปที่ Github",feedbackQuestions:"คำถามคำติชม"},project:{title:"โปรเจกต์ของฉัน",subtitle:"จัดการโปรเจกต์ละครสั้นทั้งหมดของคุณ",newProject:"โปรเจกต์ใหม่",dialog:{editTitle:"แก้ไขโปรเจกต์",addTitle:"โปรเจกต์ใหม่",save:"บันทึก",ok:"ตกลง",cancel:"ยกเลิก",projectType:"ประเภทโปรเจกต์",selectType:"เลือกประเภทโปรเจกต์",basedOnNovel:"สร้างจากต้นฉบับนิยาย",projectName:"ชื่อโปรเจกต์",projectNamePh:"โปรดกรอกชื่อโปรเจกต์",novelType:"ประเภทนิยาย",novelTypePh:"ตัวอย่างเช่น: แฟนตาซี, ไซไฟ, โรแมนติก",artStyle:"คู่มือภาพ",selected:"เลือกแล้ว:",selectArtStyle:"โปรดเลือกคู่มือแบบภาพ",newArtStyle:"คู่มือภาพใหม่",loading:"กำลังโหลด...",videoRatio:"อัตราส่วนวิดีโอ",novelIntro:"เรื่องย่อนิยาย",novelIntroPh:"โปรดกรอกเรื่องย่อนิยาย",editArtStyleTitle:"แก้ไขคู่มือภาพ",newArtStyleTitle:"คู่มือภาพใหม่",artStyleName:"ชื่อคู่มือแบบภาพ",artStyleNamePh:"โปรดป้อนชื่อคู่มือแบบภาพ",artStyleImage:"ภาพปกคู่มือภาพ",remove:"ลบออก",uploadCover:"อัปโหลดภาพปก",artStylePrompt:"ภาพพร้อมคำคู่มือ",aiExtract:"AI สกัดพรอมต์",promptPlaceholder:"อธิบายคำพร้อมท์คู่มือแบบภาพ ซึ่งใช้เพื่อระบุคู่มือแบบภาพเมื่อสร้างภาพ",visualManual:"คู่มือภาพ",newVisualManual:"คู่มือภาพใหม่",editVisualManualTitle:"แก้ไขคู่มือภาพ",newVisualManualTitle:"คู่มือภาพใหม่",visualManualName:"ชื่อคู่มือภาพ",visualManualNamePh:"โปรดป้อนชื่อคู่มือภาพ",visualManualCover:"ภาพปกคู่มือภาพ",visualManualPrompt:"Prompt คู่มือภาพ",modelData:"เลือกรุ่นรูปภาพ",videoModelData:"เลือกรุ่นวิดีโอ",prompt:{placeholder:"ป้อนคำที่พร้อมท์",saveSuccess:"อัปเดตสำเร็จ",title:"คำพูดที่รวดเร็ว"},basedOnScript:"ขึ้นอยู่กับสคริปต์",mdFile:"ไฟล์คู่มือภาพ",directorManual:"คู่มือกรรมการ",addDirectorManual:"คู่มือกรรมการใหม่",editingDirectorManual:"แก้ไขคู่มือกรรมการ",newDirecorManualTitle:"คู่มือกรรมการใหม่",directorManualPrompt:"คำพร้อมท์คู่มือผู้อำนวยการ",directorManualName:"ชื่อคู่มือผู้อำนวยการ",directorManualNamePh:"กรอกชื่อคู่มือผู้อำนวยการ",directorFile:"เอกสารคู่มือผู้อำนวยการ",directorManualCover:"ปกคู่มือผู้อำนวยการ"},msg:{fetchFailed:"ดึงรายการโปรเจกต์ล้มเหลว",notFound:"ไม่พบโปรเจกต์นี้!",editSuccess:"แก้ไขโปรเจกต์สำเร็จ",editFailed:"แก้ไขโปรเจกต์ล้มเหลว",addSuccess:"สร้างโปรเจกต์สำเร็จ",addFailed:"สร้างโปรเจกต์ล้มเหลว",deleteHeader:"ลบโปรเจกต์",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบโปรเจกต์นี้?",deleteConfirm:"ลบ",deleteCancel:"ยกเลิก",deleteSuccess:"ลบโปรเจกต์สำเร็จ",deleteFailed:"ลบโปรเจกต์ล้มเหลว",extractSuccess:"สกัดพรอมต์สำเร็จ",extractFailed:"สกัดพรอมต์ล้มเหลว",enterArtStyleName:"โปรดป้อนชื่อคู่มือภาพ",artStyleUpdated:"อัปเดตคู่มือภาพแล้ว",artStyleAdded:"เพิ่มคู่มือภาพแล้ว",operationFailed:"การดำเนินการล้มเหลว",enterVisualManualName:"โปรดป้อนชื่อคู่มือภาพ",enterVisualManualImage:"โปรดอัปโหลดภาพปกคู่มือภาพ",enterVisualManualTabData:"Prompt ไม่สามารถว่างเปล่า",visualManualUpdated:"อัปเดตคู่มือภาพแล้ว",visualManualAdded:"เพิ่มคู่มือภาพแล้ว",deleteVisualManualHeader:"ลบคู่มือภาพ",deleteVisualManualBody:'คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือภาพ "{name}"?',deleteVisualManualConfirm:"ลบ",deleteVisualManualCancel:"ยกเลิก",enterProjectName:"กรุณากรอกชื่อโครงการ",enterProjectIntro:"กรุณากรอกคำนำนวนิยาย",enterProjectType:"กรุณากรอกประเภทโครงการ",enterArtStyle:"โปรดเลือกโบรชัวร์ภาพโครงการ",enterVideoRatio:"โปรดเลือกอัตราส่วนวิดีโอ",enterImageModel:"กรุณาเลือกรุ่นรูปภาพ",enterVideoModel:"โปรดเลือกรุ่นวิดีโอ",visualManualDeleted:"ลบสำเร็จ",selectMode:"กรุณาเลือกโหมด",deleteDirectorManualHeader:"ลบคู่มือผู้อำนวยการ",deleteDirectorManualBody:'คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือผู้อำนวยการ "{name}"?',directorManualUpdated:"ปรับปรุงคู่มือผู้อำนวยการแล้ว",directorManualAdded:"เพิ่มคู่มือผู้อำนวยการ",directorManual:"กรุณาเลือกคู่มือผู้อำนวยการโครงการ"},type:{novel:"อิงจากนวนิยายต้นฉบับ",script:"อิงจากบทนวนิยาย"}},novel:{importText:"นำเข้าต้นฉบับ",batchDelete:"ลบเป็นชุด",eventAnalysis:"วิเคราะห์เหตุการณ์",searchPlaceholder:"ค้นหาชื่อต้นฉบับ...",search:"ค้นหา",generating:"กำลังสร้าง...",genFailed:"สร้างล้มเหลว",none:"ไม่มี",edit:"แก้ไข",delete:"ลบ",col:{id:"ลำดับ",reel:"เล่ม",chapter:"ชื่อบท",chapterData:"เนื้อหาในบท",event:"เหตุการณ์",operation:"การจัดการ"},msg:{batchDeleteHeader:"ลบเป็นชุด",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลที่เลือกจำนวน {count} รายการ?",batchDeleteSuccess:"ลบเป็นชุดสำเร็จ",deleteHeader:"ยืนยันการลบ",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลบทที่ชื่อว่า「{name}」?",deleteSuccess:"ลบสำเร็จ",eventAnalysisHeader:"วิเคราะห์เหตุการณ์",eventAnalysisBody:"แน่ใจหรือไม่ว่าต้องการวิเคราะห์เหตุการณ์ข้อมูลที่เลือกจำนวน {count} รายการ?"},import:{title:"อัปโหลดต้นฉบับนิยาย",step1:"ขั้นตอนที่ 1",step2:"ขั้นตอนที่ 2",step3:"ขั้นตอนที่ 3",dragUpload:"ลากไฟล์ต้นฉบับนิยายมาที่นี่ หรือคลิกเพื่ออัปโหลด",uploadHint:"รองรับรูปแบบ .txt, .docx แนะนำให้มีขนาดไฟล์ไม่เกิน 10MB",or:"หรือ",pasteLabel:"วางเนื้อหาต้นฉบับนิยายโดยตรง",pastePlaceholder:"โปรดกรอกเนื้อหาต้นฉบับนิยาย",chars:"ตัวอักษร",tooShort:"เนื้อหาสั้นเกินไป แนะนำให้อย่างน้อย 100 ตัวอักษร",parsedChapters:"แยกวิเคราะห์แล้ว {count} บท",nextStep:"ขั้นตอนถัดไป",prevStep:"ขั้นตอนก่อนหน้า",selectedInfo:"เลือกแล้ว: {count} ตัวอักษร (ต้องน้อยกว่า 200,000 ตัวอักษร)",eventAnalysis:"วิเคราะห์เหตุการณ์",saveAndAnalyze:"บันทึกต้นฉบับและวิเคราะห์เหตุการณ์",col:{chapter:"บท",reel:"เล่ม",chapterName:"ชื่อบท",chapterData:"เนื้อหาในบท"},msg:{parseFailed:"แยกวิเคราะห์ไฟล์ล้มเหลว โปรดอัปโหลดใหม่อีกครั้ง",selectFile:"เลือกไฟล์",docNotSupported:"ไฟล์ .doc ไม่รองรับการแยกวิเคราะห์ โปรดแปลงเป็นไฟล์ .ts",unsupportedType:"ไม่รองรับประเภทไฟล์นี้",fileTooLarge:"ไฟล์มีขนาดเกิน 10MB โปรดอัปโหลดไฟล์ขนาดเล็กกว่านี้",selectChapters:"โปรดทำเครื่องหมายเลือกบทก่อน",saveSuccess:"บันทึกต้นฉบับนิยายสำเร็จ"},importAdd:"ลากและวางไฟล์ที่นี่หรือคลิกเพื่ออัปโหลด",limit:"รองรับรูปแบบ .ts"},editDialog:{title:"แก้ไขต้นฉบับนิยาย",chapterName:"ชื่อบท",chapterNamePh:"โปรดกรอกชื่อบท",eventContent:"เนื้อหาเหตุการณ์",eventContentPh:"กรอกเนื้อหาเหตุการณ์",chapterContent:"เนื้อหาในบท",chapterContentPh:"โปรดกรอกเนื้อหาในบท",cancel:"ยกเลิก",save:"บันทึก",msg:{updateSuccess:"อัปเดตต้นฉบับนิยายสำเร็จ"}},event:{regenerate:"สร้างเหตุการณ์ใหม่",batchDelete:"ลบเป็นชุด",noData:"ยังไม่มีข้อมูลเหตุการณ์ คลิกเพื่อเริ่มสร้าง",generate:"สร้างเหตุการณ์",generatingHint:"กำลังสร้างเหตุการณ์ โปรดรอสักครู่...",loading:"กำลังโหลด...",delete:"ลบ",col:{id:"ID เหตุการณ์",eventName:"ชื่อเหตุการณ์",chapters:"บทที่มา",detail:"ขั้นตอนเหตุการณ์",createTime:"เวลาที่สร้าง",operation:"การจัดการ"},msg:{deleteHeader:"ลบเหตุการณ์",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบเหตุการณ์นี้?",deleteSuccess:"ลบสำเร็จ",generateSuccess:"สร้างเหตุการณ์สำเร็จ",batchDeleteHeader:"ลบเป็นชุด",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลที่เลือกจำนวน {count} รายการ?",batchDeleteSuccess:"ลบเป็นชุดสำเร็จ"}},analysis:{analyzeFirst:"โปรดวิเคราะห์เหตุการณ์ก่อน",startAnalysis:"เริ่มวิเคราะห์",chapterHeader:"บทที่ {index} - {name}",analyzing:"กำลังวิเคราะห์เหตุการณ์"}},scriptAgent:{inputPlaceholder:"โปรดกรอกเนื้อหา",chapterEvents:"เหตุการณ์ในบท",clearMessageMemory:"ล้างหน่วยความจำข้อความ",clearSummaryMemory:"ล้างหน่วยความจำสรุป",clearAllMemory:"ล้างหน่วยความจำทั้งหมด",edit:"แก้ไข",storySkeleton:"โครงเรื่อง",adaptationStrategy:"กลยุทธ์การดัดแปลง",script:"บทภาพยนตร์",noContent:"ยังไม่มีเนื้อหา",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",editScript:"แก้ไขบทภาพยนตร์",save:"บันทึก",scriptTitle:"ชื่อเรื่อง",titlePlaceholder:"โปรดกรอกชื่อเรื่อง",content:"เนื้อหา",contentPlaceholder:"โปรดกรอกเนื้อหาบทภาพยนตร์",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",welcomeMsg:"สวัสดี! ฉันคือผู้ช่วยอัจฉริยะ Toonflow ต้องการให้ฉันเริ่มสร้างบทภาพยนตร์ให้คุณเลยไหม?",start:"เริ่มต้น",memoryType:{message:"หน่วยความจำข้อความ",summary:"หน่วยความจำสรุป",all:"หน่วยความจำทั้งหมด"},msg:{clearConfirm:"ยืนยันการล้าง",clearBody:"แน่ใจหรือไม่ว่าต้องการล้าง{type}? การดำเนินการนี้ไม่สามารถยกเลิกได้",confirmClear:"ยืนยันการล้าง",cancel:"ยกเลิก",memoryCleared:"ล้าง{type}แล้ว",scriptUpdated:"อัปเดตบทภาพยนตร์สำเร็จ",scriptUpdateFailed:"อัปเดตบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง",searchScriptFailed:"ค้นหาบทภาพยนตร์ล้มเหลว",updated:"บันทึกเรียบร้อยแล้ว",error:"บันทึกล้มเหลว",reconnect:"เชื่อมต่อใหม่",notReconnect:"ยืนยันว่าการสนทนาการเชื่อมต่อใหม่จะถูกตัดออกหรือไม่",keepReconnect:"ยืนยัน",deleteConfirm:"ลบการยืนยัน",deleteBody:"ลบข้อความ",confirmDelete:"ยืนยันการลบ",scriptDeleted:"ลบสคริปต์แล้ว"},reconnect:"เชื่อมต่อใหม่"},cornerScape:{batchSettings:"การตั้งค่าการสร้างเป็นชุด",quickActions:"คำสั่งด่วน",selectUngenerated:"เลือกรายการที่ยังไม่สร้างทั้งหมด",selectGenerated:"เลือกรายการที่สร้างแล้วทั้งหมด",selectFailed:"เลือกรายการที่เกิดข้อผิดพลาดทั้งหมด",invertSelection:"สลับการเลือก",clearSelection:"ยกเลิกการเลือก",batchPreview:"ดูตัวอย่างรูปภาพเป็นชุด",assetTypeFilter:"กรองตามประเภทสื่อ",genModel:"โมเดลการสร้าง",resolution:"ความละเอียด",resolutionPh:"โปรดเลือกความละเอียด",concurrency:"จำนวนที่สร้างพร้อมกัน",concurrencyPh:"โปรดกรอกจำนวนที่สร้างพร้อมกัน",startBatch:"เริ่มสร้างภาพเป็นชุด",waitingGen:"รอการสร้าง",generating:"กำลังสร้าง",genFailed:"สร้างล้มเหลว",imageError:"รูปภาพมีข้อผิดพลาด",typeRole:"ตัวละคร",typeScene:"ฉาก",typeTool:"เครื่องมือ",typeUnknown:"ไม่ทราบ",descriptionSuffix:"คำอธิบาย:",operateScriptFirst:"โปรดจัดการบทภาพยนตร์ก่อน",individualConfig:"ตั้งค่าแบบแยกเดี่ยว",noImage:"ยังไม่มีรูปภาพ",promptLabel:"พรอมต์",promptPh:"โปรดกรอกพรอมต์",aiPolish:"ใช้ AI ขัดเกลาข้อความ",regenerate:"สร้างใหม่",filterRole:"ตัวละคร",filterScene:"ฉาก",filterTool:"อุปกรณ์ประกอบฉาก",unnamed:"ไม่ได้ตั้งชื่อ",noDescription:"ไม่มีคำอธิบาย",msg:{selectModel:"โปรดเลือกโมเดลการสร้าง",selectResolution:"โปรดเลือกความละเอียด",enterPrompt:"โปรดกรอกพรอมต์",enterPromptFirst:"โปรดกรอกพรอมต์ก่อน",genSuccess:"สร้าง {name} สำเร็จ",genFailed:"สร้าง {name} ล้มเหลว",promptGenSuccess:"สร้างพรอมต์สำเร็จ",polishFailed:"ขัดเกลาข้อความล้มเหลว โปรดลองอีกครั้ง",selectAtLeastOne:"โปรดเลือกสินทรัพย์อย่างน้อยหนึ่งรายการเพื่อสร้างเป็นชุด",batchStarted:"เริ่มการสร้างเป็นชุดแล้ว จำนวน {count} รายการ ทำพร้อมกัน {concurrent} รายการ",batchItemFailed:"สร้าง {name} ล้มเหลว: {error}",batchComplete:"การสร้างเป็นชุดเสร็จสมบูรณ์",batchFailed:"การสร้างแบทช์ล้มเหลว",replaceFailed:"การเปลี่ยนล้มเหลว",replaceSuccess:"การเปลี่ยนสำเร็จ",promptGenFail:"การสร้างคำพร้อมท์ล้มเหลว",saveSuccess:"การแก้ไขคำพร้อมท์สำเร็จ",saveFailed:"การแก้ไขคำพร้อมท์ล้มเหลว"},history:"ภาพประวัติศาสตร์",confirmReplace:"ยืนยันการเปลี่ยน",batchGenerationPrompt:"สร้างคำพร้อมท์เป็นชุด",generatingPrompt:"กำลังสร้าง",selectPromptEmpty:"เลือกทั้งหมด คำที่แจ้งว่างเปล่า",noEmptyPrompt:"ไม่มีเนื้อหาที่มีคำว่าง",selectedCount:"เลือกเนื้อหาแล้ว {count} รายการ"},script:{searchPlaceholder:"ค้นหาชื่อบทภาพยนตร์...",search:"ค้นหา",addScript:"สร้างบทภาพยนตร์ใหม่",cancelSelectAll:"ยกเลิกการเลือกทั้งหมด",selectAll:"เลือกทั้งหมด",exportScript:"ส่งออกบทภาพยนตร์",msg:{searchFailed:"ค้นหาบทภาพยนตร์ล้มเหลว",selectExport:"โปรดเลือกบทภาพยนตร์ที่จะส่งออกก่อน",exportSuccess:"ส่งออกสำเร็จ",exportFailed:"ส่งออกบทภาพยนตร์ล้มเหลว",deleteHeader:"ยืนยันการลบ",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบบทภาพยนตร์นี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",deleteConfirm:"ลบ",cancel:"ยกเลิก",deleteSuccess:"ลบสำเร็จ",deleteFailed:"ลบล้มเหลว",selectDelScript:"โปรดเลือกที่จะลบสคริปต์",batchDeleteHeader:"ลบเป็นกลุ่ม",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบบทภาพยนตร์ที่เลือก {count} รายการ? การดำเนินการนี้ไม่สามารถยกเลิกได้",batchDeleteSuccess:"ลบเป็นกลุ่มสำเร็จ",extractingInProgress:"การสกัด",projectNotFound:"ไม่พบรายการ",selectsExport:"โปรดเลือกส่งออกสคริปต์"},add:{title:"เพิ่มบทภาพยนตร์",scriptName:"ชื่อบทภาพยนตร์",scriptNamePh:"โปรดกรอกชื่อบทภาพยนตร์",uploadFile:"อัปโหลดไฟล์",dragUpload:"ลากไฟล์บทภาพยนตร์มาที่นี่ หรือคลิกเพื่ออัปโหลด",uploadHint:"รองรับรูปแบบ .txt, .docx แนะนำให้มีขนาดไฟล์ไม่เกิน 10MB",scriptContent:"เนื้อหาบทภาพยนตร์",scriptContentPh:"โปรดอัปโหลดหรือกรอกเนื้อหาบทภาพยนตร์...",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",cancel:"ยกเลิก",confirm:"ยืนยัน",msg:{fileReadFailed:"อ่านไฟล์ล้มเหลว",docNotSupported:"ไม่รองรับการแยกวิเคราะห์ไฟล์ .doc โปรดแปลงเป็นไฟล์ .txt หรือ .docx",unsupportedType:"ไม่รองรับประเภทไฟล์นี้",fileTooLarge:"ไฟล์มีขนาดเกิน 10MB โปรดอัปโหลดไฟล์ขนาดเล็กกว่านี้",parsing:"กำลังแยกวิเคราะห์ไฟล์...",parseFailed:"แยกวิเคราะห์ไฟล์ล้มเหลว โปรดอัปโหลดใหม่อีกครั้ง",selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",enterContent:"โปรดอัปโหลดหรือกรอกเนื้อหาบทภาพยนตร์",enterName:"โปรดกรอกชื่อบทภาพยนตร์",addSuccess:"เพิ่มบทภาพยนตร์สำเร็จ",addFailed:"เพิ่มบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง"}},edit:{title:"รายละเอียดบทภาพยนตร์",scriptName:"ชื่อบทภาพยนตร์",scriptNamePh:"โปรดกรอกชื่อบทภาพยนตร์",scriptContent:"เนื้อหาบทภาพยนตร์",scriptContentPh:"โปรดกรอกเนื้อหาบทภาพยนตร์...",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",msg:{selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",updateSuccess:"อัปเดตบทภาพยนตร์สำเร็จ",updateFailed:"อัปเดตบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง"}},deleteScript:"ลบสคริปต์เป็นชุด",extractAssets:""},assets:{addPrefix:"เพิ่ม",batchGenerate:"สร้างเป็นชุด",generatePrompt:"สร้างพรอมต์",generateImage:"สร้างรูปภาพ",batchDelete:"ลบเป็นชุด",searchPlaceholder:"ค้นหาชื่อสินทรัพย์...",search:"ค้นหา",preview:"ดูตัวอย่าง",generate:"สร้าง",edit:"แก้ไข",delete:"ลบ",generating:"กำลังสร้าง",play:"เล่น",mediaPreview:"ดูตัวอย่างสื่อ",confirmBatch:"ยืนยัน{type}หรือไม่!",model:"โมเดล",resolution:"ความละเอียด",resolutionPh:"โปรดเลือกความละเอียด",batchGenPrompt:"สร้างพรอมต์เป็นชุด",batchGenImage:"สร้างรูปภาพเป็นชุด",role:"ตัวละคร",prop:"อุปกรณ์",scene:"ฉาก",clip:"ฟุตเทจ",uploadSuccess:"อัปโหลดสำเร็จ",selectAtLeastOne:"โปรดเลือกสินทรัพย์อย่างน้อย 1 รายการ",noDescription:"ไม่มีคำอธิบาย",promptGenSuccess:"สร้างพรอมต์「{name}」สำเร็จ",promptGenFail:"สร้างพรอมต์「{name}」ล้มเหลว: {error}",selectModel:"โปรดเลือกโมเดล",selectResolution:"โปรดเลือกความละเอียด",noPromptForImage:"「{name}」ไม่มีพรอมต์ ไม่สามารถสร้างรูปภาพได้",imageGenSuccess:"สร้างรูปภาพ「{name}」สำเร็จ",imageGenFail:"สร้างรูปภาพ「{name}」ล้มเหลว: {error}",confirmDeleteHeader:"ยืนยันการลบ",confirmBatchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบสินทรัพย์เหล่านี้เป็นชุด? การดำเนินการนี้ไม่สามารถยกเลิกได้",confirmDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบสินทรัพย์นี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",deleteBtn:"ลบ",cancelBtn:"ยกเลิก",deleteSuccess:"ลบสินทรัพย์สำเร็จ",deleteFail:"ลบสินทรัพย์ล้มเหลว",colPreview:"ดูตัวอย่าง",colName:"ชื่อ",colPrompt:"พรอมต์",colDescribe:"คำอธิบาย",colRemark:"หมายเหตุ",colCreateTime:"เวลาที่สร้าง",colOperation:"การจัดการ",add:{name:"ชื่อ",namePh:"โปรดกรอกชื่อ",describe:"คำอธิบาย",describePh:"โปรดกรอกคำอธิบาย",remark:"หมายเหตุ",remarkPh:"โปรดกรอกหมายเหตุ",prompt:"พรอมต์",promptPh:"โปรดกรอกพรอมต์",nameRequired:"โปรดกรอกชื่อ",describeRequired:"โปรดกรอกรายละเอียด",remarkRequired:"โปรดกรอกหมายเหตุ",updateSuccess:"อัปเดตสินทรัพย์สำเร็จ",addSuccess:"เพิ่มสินทรัพย์สำเร็จ"},gen:{header:"สร้างรูปภาพ",uploadRef:"อัปโหลดรูปภาพอ้างอิง",optional:"ตัวเลือก",promptLabel:"พรอมต์สร้างรูปภาพ",smartGenerate:"สร้างอัตโนมัติ (Smart Generate)",generatingPrompt:"กำลังสร้างพรอมต์อัจฉริยะ...",promptPlaceholder:"อธิบายเนื้อหารูปภาพที่คุณต้องการสร้าง ตัวอย่างเช่น: เมืองแห่งอนาคตที่เต็มไปด้วยเทคโนโลยี, แสงไฟนีออนกะพริบ, สไตล์ไซเบอร์พังค์...",selectModel:"เลือกโมเดล",selectResolution:"เลือกความละเอียด",generateBtn:"สร้างรูปภาพ",resultTitle:"ผลลัพธ์การสร้าง",generatedCount:"สร้างสำเร็จ {count} รูป โปรดเลือกหนึ่งรูป",generatingLabel:"กำลังสร้าง...",genFailed:"สร้างล้มเหลว",confirmSelect:"ยืนยันการเลือก",promptSuccess:"สร้างพรอมต์สำเร็จ",promptFail:"สร้างพรอมต์ล้มเหลว",fillPrompt:"โปรดกรอกพรอมต์",pickResolution:"โปรดเลือกความละเอียด",pickModel:"โปรดเลือกโมเดล",unnamed:"ไม่ได้ตั้งชื่อ",assetGenSuccess:"สร้างสินทรัพย์สำเร็จ",assetGenFail:"สร้างสินทรัพย์ล้มเหลว",uploadOk:"อัปโหลดสำเร็จ",imageSelected:"เลือกรูปภาพนี้แล้ว",imageDeleted:"ลบรูปภาพนี้แล้ว",imageSaved:"บันทึกรูปภาพแล้ว",completed:"สมบูรณ์"},batch:{header:"สร้างเป็นชุด",selected:"เลือกแล้ว {count} รายการ",selectAll:"เลือกทั้งหมด",clearSelection:"ล้างการเลือก",inputPh:"โปรดกรอกเนื้อหา",saveSelected:"บันทึกที่เลือก ({count})",colPreviewImg:"รูปตัวอย่าง",selectToSave:"โปรดเลือกรายการที่ต้องการบันทึก",saveSuccess:"บันทึกสำเร็จ",saveFail:"บันทึกล้มเหลว โปรดลองอีกครั้ง",promptDone:"สร้างพรอมต์เสร็จสมบูรณ์",promptFail:"สร้างพรอมต์ล้มเหลว",missingPrompts:"มี {count} สินทรัพย์ที่ไม่มีพรอมต์ โปรดสร้างพรอมต์ก่อน",imageDone:"สร้างรูปภาพเสร็จสมบูรณ์",imageGenFail:"สร้างรูปภาพล้มเหลว",unknownError:"ข้อผิดพลาดที่ไม่ทราบสาเหตุ",promptGenCancelled:"รุ่นถูกยกเลิก"}},production:{selectPlaceholder:"โปรดเลือกตอน",edit:"แก้ไข",node:{script:{title:"บทภาพยนตร์",editDialog:"แก้ไขบทภาพยนตร์"},scriptPlan:{title:"แผนการถ่ายทำ",editDialog:"แก้ไขแผนการถ่ายทำ"},storyboard:{title:"แผงสตอรี่บอร์ด",notGenerated:"ยังไม่สร้าง",scaleRatio:"อัตราส่วนการย่อ/ขยาย",gridPreview:"ดูตัวอย่างแบบกริด",noPreviewImages:"ไม่มีรูปภาพให้ดูตัวอย่าง",imageLoadFailed:"โหลดรูปภาพล้มเหลว",promptPlaceholder:"กรุณากรอกคำที่พร้อมท์",prompt:"คำพูดที่รวดเร็ว",editInfo:"การปรับเปลี่ยนคำทันที"},storyboardTable:{title:"ตารางสตอรี่บอร์ด",editDialog:"แก้ไขตารางสตอรี่บอร์ด"},assets:{title:"สินทรัพย์ต่อยอด",generateFailed:"สร้างล้มเหลว",notGenerated:"ยังไม่สร้าง",originalAsset:"สินทรัพย์ต้นฉบับ",derived:"ต่อยอด",noDerivedAssets:"ไม่มีสินทรัพย์ต่อยอด"},poster:{title:"ภาพปกวิดีโอ",coverCount:"{count} รูป"},workbench:{title:"พื้นที่ทำงานวิดีโอ"}},editImage:{upload:"อัปโหลด",generate:"สร้าง",saveFailed:"บันทึกล้มเหลว โปรดลองอีกครั้ง",fetchFailed:"ดึงข้อมูลล้มเหลว",generating:"กำลังสร้าง...",deleteNode:"ลบโหนด (Node)",ratio:"สัดส่วน",quality:"คุณภาพ",generateBtn:"สร้างรูปภาพ",selectImage:"เลือกรูปภาพ",imageGeneration:"สร้างรูปภาพ",promptPlaceholder:"อธิบายรูปภาพที่คุณต้องการสร้าง...",imageRef:"รูปที่ {index}",noReferences:"ไม่มีรูปภาพอ้างอิงให้ใช้งาน",selectModel:"โปรดเลือกโมเดลก่อน",selectQuality:"โปรดเลือกคุณภาพภาพ",selectRatio:"โปรดเลือกสัดส่วน",generateFailed:"สร้างล้มเหลว",generateFirst:"โปรดสร้างรูปภาพก่อน",generatedResult:"ผลลัพธ์การสร้าง",waitingGenerate:"รอการสร้าง",layoutLR:"จัดวางอัตโนมัติ-ซ้ายขวา",layoutTB:"จัดวางอัตโนมัติ-บนล่าง",uploadAssetImage:"อัปโหลดรูปทรัพยากร",uploadStoryboardImage:"อัปโหลดรูปสตอรี่บอร์ด",uploadImage:"การอัพโหลดรูปภาพสินทรัพย์",mode:"แบบอย่าง",closeConfirmTitle:"ปิดแผงแก้ไขใช่ไหม",closeConfirmBody:"ข้อมูลที่ไม่ได้บันทึกจะสูญหายไปหลังจากการปิด"},save:"เลือก",cancel:"ยกเลิก",chatBox:{inputPlaceholder:"พิมพ์ข้อความ...",generateDerivedAssets:"สร้างสินทรัพย์ต่อยอด",welcomeMessage:"สวัสดี! ฉันคือผู้ช่วย AI ของคุณ มีอะไรให้ฉันช่วยไหม?",adjustModel:"ปรับแต่งโมเดล",startMakingVideo:"เริ่มสร้างวิดีโอ",startMakingVideoPrompt:"โปรดช่วยฉันเริ่มสร้างวิดีโอ",clearMessageMemory:"ล้างหน่วยความจำข้อความ",clearSummaryMemory:"ล้างหน่วยความจำสรุป",clearAllMemory:"ล้างหน่วยความจำทั้งหมด",messageMemory:"หน่วยความจำข้อความ",summaryMemory:"หน่วยความจำสรุป",allMemory:"หน่วยความจำทั้งหมด",confirmClear:"ล้างหน่วยความจำ",confirmClearBody:"แน่ใจหรือไม่ว่าต้องการล้าง{type}?",confirmClearBtn:"ยืนยันการล้าง",memoryCleared:"ล้าง{type}แล้ว"},wb:{quickPreview:"ดูตัวอย่างแบบเร็ว",videoGeneration:"สตอรี่บอร์ด",videoEditing:"โต๊ะบรรณาธิการ",hint:"ข้อแนะนำ",extractLines:"ต้องการแยกบทสนทนาจากวิดีโอหรือไม่?",no:"ไม่",confirm:"ตกลง",extractLinesQuestion:"ต้องการแยกบทสนทนาจากวิดีโอมาเป็นซับไตเติลหรือไม่?",importingLoading:"กำลังนำเข้า โปรดรอสักครู่...",mainTrackVideo:"แทร็กหลัก (วิดีโอ)",subtitle1:"ซับไตเติล 1",storyboardVideoName:"วิดีโอสตอรี่บอร์ด-{storyboard}.mp4"},preview:{noImage:"ยังไม่มีรูปภาพ",storyboardDesc:"คำอธิบายสตอรี่บอร์ด",serialNumber:"ลำดับ",noDescription:"ยังไม่มีคำอธิบาย",duration:"ความยาว",seconds:"วินาที",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",role:"ตัวละคร",prop:"อุปกรณ์",scene:"ฉาก",noCharacters:"ไม่มีตัวละครปรากฏ",imagePrompt:"พรอมต์รูปภาพ",selectAll:"เลือกทั้งหมด",exportImage:"ส่งออกรูปภาพ",sceneDescription:"คำอธิบายฉาก",promptLabel:"พรอมต์",restoreSort:"คืนค่าการจัดเรียง",restoreSortConfirm:"แน่ใจหรือไม่ว่าต้องการคืนค่าการจัดเรียงกลับเป็นค่าเริ่มต้น?",tip:"เคล็ดลับ",selectAtLeastOne:"โปรดเลือกสตอรี่บอร์ดอย่างน้อยหนึ่งรายการเพื่อส่งออก",exportFilename:"ภาพสตอรี่บอร์ด"},generate:{noVideo:"ยังไม่มีวิดีโอ",videoPrompt:"พรอมต์วิดีโอ",promptPlaceholder:"ป้อนคำพร้อมท์เพื่ออธิบายเนื้อหาวิดีโอที่คุณต้องการสร้าง...",refImage:"รูปภาพอ้างอิง",image:"รูปภาพ",refVideo:"วิดีโออ้างอิง",refImageLabel:"รูปภาพอ้างอิง",refAudio:"เสียงอ้างอิง",muteAudio:"ปิดเสียง",enableAudio:"เปิดเสียง",resolution:"ความละเอียด",duration:"ความยาว",generate:"สร้าง",historyVersions:"ประวัติเวอร์ชัน",confirmSelection:"ยืนยันการเลือก",noHistory:"ยังไม่มีประวัติ",generating:"กำลังสร้าง",generateFailed:"สร้างล้มเหลว",selectAll:"เลือกทั้งหมด",videoTrack:"แทร็กวิดีโอ",batchGenerate:"สร้างเป็นชุด",importToEditor:"นำเข้าสู่หน้าต่างตัดต่อ",modeSingleImage:"รูปภาพเดียว",modeMultiImage:"หลายรูปภาพ",modeGridImage:"รูปภาพกริดหลายรูป",modeStartEnd:"เฟรมแรกและสุดท้าย",modeText:"ข้อความเป็นวิดีโอ",modeVideoRef:"อ้างอิงจากวิดีโอ",modeImageRef:"อ้างอิงจากรูปภาพ",modeAudioRef:"อ้างอิงจากเสียง",modeTextRef:"อ้างอิงจากข้อความ",startFrame:"เฟรมแรก",startFrameOptional:"เฟรมแรก (ตัวเลือก)",endFrame:"เฟรมสุดท้าย",endFrameOptional:"เฟรมสุดท้าย (ตัวเลือก)",selectRefImage:"เลือกรูปภาพอ้างอิง",selectRefImages:"เลือกรูปภาพอ้างอิงหลายรูป",selectEndFrame:"เลือกรูปเฟรมสุดท้าย",selectRefVideoAsset:"เลือกวิดีโออ้างอิง",selectRefAudioAsset:"เลือกเสียงอ้างอิง",selectRefImageAsset:"เลือกรูปภาพอ้างอิง",selectImageSource:"เลือกแหล่งที่มาของภาพ",fromStoryboard:"ภาพสตอรี่บอร์ด",fromStoryboardDesc:"เลือกภาพจากรายการสตอรี่บอร์ด",fromAssets:"ภาพแอสเซท",fromAssetsDesc:"เลือกภาพจากคลังแอสเซท",confirmDelete:"ยืนยันการลบ",confirmDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบวิดีโอนี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",delete:"ลบ",cancel:"ยกเลิก",deleteSuccess:"ลบวิดีโอสำเร็จ",deleteFailed:"ลบล้มเหลว",selectVideoFirst:"โปรดเลือกวิดีโอก่อน",confirmSuccess:"ยืนยันการเลือกสำเร็จ",batchSubmitted:"ส่งคำขอสร้างเป็นชุดแล้ว กำลังดำเนินการ...",configNotFound:"ไม่พบการตั้งค่า",pollingFailed:"การค้นหาสถานะวิดีโอล้มเหลว โปรดรีเฟรชด้วยตนเอง",batchGeneratePrompt:"สร้างคำพร้อมท์เป็นชุด",batchPromptEmpty:"บอร์ดเรื่องราว {name} พร้อมใช้งานสำหรับวิดีโอแจ้ง กรุณาสร้างหรือกรอกข้อความแจ้งก่อน",modelEmpty:"โปรดเลือกรุ่นการสร้างวิดีโอก่อน",generatingPrompt:"การสร้างคำที่รวดเร็วอย่างชาญฉลาด"},editVideo:{reset:"รีเซ็ต",undo:"เลิกทำ",redo:"ทำซ้ำ",split:"แยกคลิป (Split)",delete:"ลบ",rendering:"กำลังเรนเดอร์...",exportVideo:"ส่งออกวิดีโอ",exportSuccess:"ส่งออกวิดีโอสำเร็จแล้ว",exportFailed:"ส่งออกล้มเหลว",sampleSubtitle:"ข้อความซับไตเติลตัวอย่าง",customText:"เนื้อหาข้อความกำหนดเอง",transitionBetweenClips:"จำเป็นต้องเพิ่มทรานซิชันไว้ระหว่าง Clip สองอันที่อยู่ติดกัน",transitionExists:"มีทรานซิชันอยู่ตำแหน่งนี้แล้ว",videoPreviewArea:"พื้นที่ดูตัวอย่างวิดีโอ",clipMaterials:"ฟุตเทจตัดต่อ",propertyPanel:"แผงคุณสมบัติ (Properties)",selectClip:"เลือก Clip เพื่อดูคุณสมบัติ",basicInfo:"ข้อมูลพื้นฐาน",name:"ชื่อ",clipNamePlaceholder:"ชื่อ Clip",startTime:"เริ่มต้น",endTime:"สิ้นสุด",totalDuration:"ความยาวทั้งหมด",videoProperties:"คุณสมบัติวิดีโอ",opacity:"ความทึบแสง",volume:"ระดับเสียง",playbackSpeed:"ความเร็วในการเล่น",audioProperties:"คุณสมบัติเสียง",fadeIn:"เฟดอิน (Fade In)",fadeOut:"เฟดเอาต์ (Fade Out)",transitionProperties:"คุณสมบัติทรานซิชัน",transitionType:"ประเภททรานซิชัน",transFade:"เลือนหาย (Fade)",transSlide:"เลื่อน (Slide)",transWipe:"ปาด (Wipe)",transDissolve:"ละลาย (Dissolve)",transZoom:"ซูม (Zoom)",transRotate:"หมุน (Rotate)",transitionDuration:"ความยาวทรานซิชัน",subtitleProperties:"คุณสมบัติซับไตเติล",textContent:"เนื้อหาข้อความ",fontSize:"ขนาดตัวอักษร",copy:"คัดลอก",deleteConfirm:"ยืนยันการลบ",deleteClipConfirm:"แน่ใจหรือไม่ว่าต้องการลบ Clip นี้?",avCanvasNotInit:"AVCanvas ยังไม่ได้ถูกเตรียมเริ่มต้น",noExportContent:"ไม่มีเนื้อหาให้ส่งออก",exportProject:"ส่งออกโปรเจกต์",transitionAdded:"เพิ่มทรานซิชันแล้ว: {name}",splitClip:"แยกคลิป",deleteClip:"ลบคลิป",addClip:"เพิ่ม {name}",duplicateClip:"ทำซ้ำคลิป (Duplicate)",addTransition:"เพิ่มทรานซิชัน",updateClip:"อัปเดตคลิป {key}",updatePlaybackRate:"อัปเดตความเร็วการเล่นเป็น {rate}x",updateTransitionDuration:"อัปเดตความยาวทรานซิชัน",playbackRateRange:"ความเร็วในการเล่นต้องอยู่ระหว่าง 0.1 ถึง 10",updatePlaybackRateFailed:"อัปเดตความเร็วการเล่นล้มเหลว:",importProject:"นำเข้าโปรเจกต์",import:"นำเข้า"},clipType:{video:"วิดีโอ",audio:"เสียง",subtitle:"ซับไตเติล",transition:"ทรานซิชัน",sticker:"สติกเกอร์",filter:"ฟิลเตอร์",effect:"เอฟเฟกต์"},track:{video:"วิดีโอ",image:"รูปภาพ",audio:"เสียง",subtitle:"ซับไตเติล",text:"ข้อความ",sticker:"สติกเกอร์",filter:"ฟิลเตอร์",effect:"เอฟเฟกต์"},transition:{fade:"เลือนหาย (Fade)",slide:"เลื่อน (Slide)",slideLeft:"เลื่อนไปทางซ้าย",slideRight:"เลื่อนไปทางขวา",slideUp:"เลื่อนขึ้น",slideDown:"เลื่อนลง",wipe:"ปาด (Wipe)",wipeLeft:"ปาดไปทางซ้าย",wipeRight:"ปาดไปทางขวา",wipeUp:"ปาดขึ้น",wipeDown:"ปาดลง",dissolve:"ละลาย (Dissolve)",zoom:"ซูม (Zoom)",zoomIn:"ซูมเข้า",zoomOut:"ซูมออก",rotate:"หมุน",circle:"วงกลม",diamond:"สี่เหลี่ยมข้าวหลามตัด",clock:"นาฬิกา",blur:"เบลอ"},media:{titleText:"ข้อความชื่อเรื่อง",subtitleText:"ข้อความซับไตเติล",customText:"ข้อความกำหนดเอง",media:"สื่อ",image:"รูปภาพ",audio:"เสียง",subtitle:"ซับไตเติล",transition:"ทรานซิชัน",effect:"เอฟเฟกต์",filter:"ฟิลเตอร์",loading:"กำลังโหลด...",subtitlePreview:"ข้อความ",video:"วิดีโอ"},effect:{fadeIn:"เฟดอิน",fadeOut:"เฟดเอาต์",flash:"กะพริบ (Flash)",shake:"สั่น (Shake)",zoomIn:"ซูมเข้ามา",zoomOut:"ซูมออกไป",pulse:"เต้นเป็นจังหวะ (Pulse)",rotateIn:"หมุนเข้ามา",sticker1:"สติกเกอร์ 1",sticker2:"สติกเกอร์ 2"},filter:{grayscale:"ขาวดำ",sepia:"เรโทร (Sepia)",warm:"โทนอุ่น",cool:"โทนเย็น",vivid:"สีสดใส",bright:"สว่าง",highContrast:"คอนทราสต์สูง",blur:"เบลอ",invert:"สลับสี (Invert)",semiTransparent:"กึ่งโปร่งใส"},guideSwitchEpisode:"สลับตอน",guideSwitchEpisodeBody:"ฟีเจอร์การสลับตอนถูกย้ายมาที่นี่แล้วนะ!",autoLayoutLR:"เรียงพิมพ์อัตโนมัติ - เค้าโครงซ้ายและขวา",autoLayoutTB:"เค้าโครงเรียงพิมพ์อัตโนมัติบนและล่าง",getFlowData:"รีเฟรชพื้นที่ทำงาน",confirm:"สลับการยืนยันตอน",confirmEpisodesSwitch:"งานปัจจุบันยังอยู่ในระหว่างดำเนินการ การเปลี่ยนตอนจะเชื่อมต่อเซสชันอีกครั้ง คุณต้องการเปลี่ยนต่อหรือไม่?"},task:{title:"รายการงาน",subtitle:"บันทึกการทำงานล่าสุดของคุณ",refresh:"รีเฟรช",categoryLabel:"หมวดหมู่งานหลัก:",stateLabel:"สถานะ:",noFailReason:"ไม่มีระบุสาเหตุข้อผิดพลาด",stateAll:"ทั้งหมด",stateRunning:"กำลังดำเนินการ",stateCompleted:"เสร็จสมบูรณ์",stateFailed:"สร้างล้มเหลว",fetchFailed:"ดึงรายการงานล้มเหลว",col:{taskClass:"หมวดหมู่งานหลัก",relatedObjects:"ออบเจกต์ที่เกี่ยวข้อง",model:"โมเดล",describe:"คำอธิบาย",state:"สถานะ",startTime:"เวลา",reason:"สาเหตุของความล้มเหลว"},project:"ชื่อโครงการ:"},noVideo:"ยังไม่มีวิดีโอ",prompt:"คำแจ้งวิดีโอ",generateText:"AI สร้างคำที่รวดเร็ว",selectStoryboard:"เลือกกระดานเรื่องราว",generate:{noVideo:"ยังไม่มีวิดีโอ",generateText:"AI สร้างคำที่รวดเร็ว",selectStoryboard:"เลือกกระดานเรื่องราว",generate:"สร้างวิดีโอ",history:"เวอร์ชันประวัติศาสตร์",generating:"กำลังสร้าง",generateFailed:"ล้มเหลว",selectAll:"เลือกทั้งหมด",selected:"เลือกแล้ว",batchGenerateText:"สร้างคำพร้อมท์เป็นชุด",batchGenerateVideo:"สร้างวิดีโอเป็นชุด",importVideo:"นำเข้าไปยังโต๊ะแก้ไข",emptyTrack:"ย่อหน้า {ดัชนี 1}",del:"ลบ",delConfirm:"คุณแน่ใจหรือไม่ว่าต้องการลบย่อหน้านี้",selectSource:"เลือกแหล่งที่มา",confirm:"เลือกจากสินทรัพย์",cancel:"เลือกจากกระดานเรื่องราว",selectVideoFailed:"การเลือกวิดีโอล้มเหลว",selectVideoSuccess:"การเลือกวิดีโอสำเร็จ",selectTrackFirst:"โปรดเลือกกระดานเรื่องราวก่อน",noSelectedVideo:"ไม่ได้เลือกวิดีโอ",generateConfirm:"ยืนยันการสร้าง",generateConfirmBody:"ยืนยันการสร้างวิดีโอ",generateVideosInBatches:"สร้างวิดีโอเป็นชุด",generateStarted:"เริ่มสร้าง",promptEmpty:"ตรวจสอบข้อมูลที่จำเป็นในการสร้างวิดีโอและคำแจ้งว่างเปล่า คุณต้องการสร้างมันต่อไปหรือไม่?",skipDataWithEmptyVideoPromptWords:"มีข้อมูลวิดีโอที่ต้องสร้างและคำแจ้งว่างเปล่า",duration:"ระยะเวลา",resolution:"ปณิธาน",delVideo:"ยืนยันการลบวิดีโอนี้หรือไม่",delSuccess:"ลบสำเร็จ",addReference:"เพิ่มการอ้างอิง",promptPlaceholder:"โปรดป้อนคำแจ้งของวิดีโอ",downloadVideo:"ดาวน์โหลดวิดีโอเป็นชุด",selectVideo:"โปรดตรวจสอบวิดีโอที่คุณต้องการดาวน์โหลด"}},f_i={slogan:"แพลตฟอร์มสร้างละครสั้นอัจฉริยะ",tips:"บัญชีผู้ใช้เริ่มต้น: admin / admin123",settings:"การตั้งค่าเซิร์ฟเวอร์",requestAddress:"ที่อยู่คำขอ (Request Address)",username:"ชื่อผู้ใช้",password:"รหัสผ่าน",login:"เข้าสู่ระบบ",usernameRequired:"โปรดกรอกชื่อผู้ใช้",passwordRequired:"โปรดกรอกรหัสผ่าน",enterUsernameAndPassword:"โปรดกรอกชื่อผู้ใช้หรือรหัสผ่าน",loginSuccess:"เข้าสู่ระบบสำเร็จ",settingsSaved:"บันทึกการตั้งค่าแล้ว"},g_i={prompt:"คำพูดที่รวดเร็ว"},m_i={welcomeTitle:"ยินดีต้อนรับสู่ ToonFlow",welcomeDesc:"แพลตฟอร์มเวิร์กโฟลว์การสร้างการ์ตูนที่ขับเคลื่อนด้วย AI ให้เราใช้เวลาสักครู่เพื่อกำหนดค่าเริ่มต้นให้เสร็จสิ้น",startConfig:"เริ่มการกำหนดค่า",skip:"ข้ามการบูต",configModel:"เพิ่มบริการโมเดล",configData:"กำหนดค่าตัวแทน",startUse:"เริ่มต้นเลย",configModelTitle:"เพิ่มผู้ให้บริการโมเดล",configModelDesc:"ขั้นแรก คุณต้องเพิ่มผู้ให้บริการโมเดล AI อย่างน้อยหนึ่งราย (เช่น OpenAI, Claude ฯลฯ) ในการตั้งค่าและกรอกคีย์ API ที่เกี่ยวข้อง",configModelTip:'การคลิกปุ่มด้านล่างจะเป็นการเปิดแท็บ "บริการโมเดล" ของหน้าการตั้งค่า หลังจากเพิ่มซัพพลายเออร์แล้ว ให้กลับมาที่นี่เพื่อดำเนินการต่อ',configModelBtn:"ไปที่กำหนดค่าบริการโมเดล",configAgentTitle:"กำหนดโมเดลตัวแทน",configAgentDesc:"จากนั้น กำหนดโมเดลให้กับโมดูลการทำงานแต่ละโมดูลในการกำหนดค่าตัวแทน เพื่อให้ระบบทราบว่าควรเรียกโมเดลใดเพื่อให้งานเสร็จสมบูรณ์",configAgentTip:'การคลิกปุ่มด้านล่างจะเป็นการเปิดแท็บ "การกำหนดค่าตัวแทน" ของหน้าการตั้งค่า กลับมาที่นี่หลังจากกำหนดโมเดลให้กับแต่ละฟังก์ชันแล้ว',configAgentBtn:"ไปที่กำหนดค่าตัวแทน",finishTitle:"🎉 ทุกอย่างพร้อมแล้ว!",finishDesc:"การกำหนดค่าเสร็จสมบูรณ์ และตอนนี้คุณสามารถเริ่มใช้คุณสมบัติทั้งหมดได้แล้ว หากคุณต้องการปรับเปลี่ยน คุณสามารถแก้ไขได้ในการตั้งค่าได้ตลอดเวลา",qrcodeLabel:"เข้าร่วมกลุ่มการสื่อสาร WeChat เพื่อรับความช่วยเหลือเพิ่มเติม:",githubLabel:"หากคุณพบว่ามีประโยชน์ โปรดให้ ⭐ ดาวแก่เรา!",prevStep:"ขั้นตอนก่อนหน้า",nextStep:"ขั้นตอนต่อไป",finish:"เริ่มต้นเลย"},k_i={skillManagement:{search:"ค้นหาชื่อไฟล์",empty:"ไม่มีไฟล์ที่ตรงกัน",edit:"แก้ไข",selectOnTheLeft:"โปรดเลือกไฟล์จากด้านซ้าย"}},v_i={assets:{notExist:"ไม่มีเนื้อหาอยู่",notDerivativeExist:"ไม่มีสินทรัพย์อนุพันธ์",derivativeUpdateSuccess:"อัปเดตสำเร็จ",derivativeState:"ไม่ได้สร้างขึ้น",derivativeAddSuccess:"เพิ่มเรียบร้อยแล้ว",derivativeDelSuccess:"ลบสำเร็จ",notGenerated:"ไม่ได้สร้างขึ้น"},addSuccess:"อัปเดตสำเร็จ",state:{unused:"ไม่ได้สร้างขึ้น"},saveSuccess:"เพิ่มเรียบร้อยแล้ว"},A_i={generating:"กำลังสร้าง"},p_i={scanning:"🔍 การแยกวิเคราะห์และการโหลดทักษะ",scanComplete:"✨ สแกน Skill เสร็จสมบูรณ์",inserted:"✅ เพิ่มทักษะ {count}",updated:"🔄 อัปเดตทักษะ {count}",removed:"🗑️ ลบ {count} Skill",scannedFiles:"📁 สแกน {count} ไฟล์",noDescription:"📝 {count} Skill ไม่มีคำอธิบาย",noAttribution:"👤 {count} Skill ไม่มีการระบุแหล่งที่มา",configWarning:"⚠️ คำเตือนการตั้งค่า Skill",openSettings:"เปิดการตั้งค่า",scanFailed:"❌ สแกนล้มเหลว",checkNetwork:"🔌 กรุณาตรวจสอบการเชื่อมต่อเครือข่ายหรือลองใหม่ภายหลัง",retryLater:"🔁 กรุณาลองใหม่ภายหลัง"},b_i="สร้างวิดีโอ",w_i="เวอร์ชันประวัติศาสตร์",O_i="กำลังสร้าง",y_i="ล้มเหลว",C_i="เลือกทั้งหมด",__i="เลือกแล้ว",S_i="นำเข้าวิดีโอ",L_i="ย่อหน้า {ดัชนี 1}",x_i="ยืนยันการลบ",E_i="คุณแน่ใจหรือไม่ว่าต้องการลบย่อหน้านี้",T_i="เลือกแหล่งที่มา",Q_i="เลือกจากสินทรัพย์",D_i="เลือกจากกระดานเรื่องราว",B_i={newVersion:"มีเวอร์ชั่นใหม่แล้ว คุณต้องการอัปเดตหรือไม่?"},R_i={components:d_i,settings:u_i,workbench:h_i,login:f_i,"components.storyboardImageCheck.camera":"กล้อง","components.storyboardImageCheck.dialogTitle":"เลือกรูปสตอรี่บอร์ด","components.storyboardImageCheck.preview":"ดูตัวอย่าง","components.storyboardImageCheck.src":"รูปตัวอย่าง","components.storyboardImageCheck.title":"หัวข้อ","components.storyboardImageCheck.duration":"ระยะเวลา","components.storyboardImageCheck.lines":"บทพูด","components.storyboardImageCheck.createTime":"เวลาสร้าง","workbench.script.extractAssets":"ดึงทรัพยากร",promptManage:g_i,hello:m_i,setting:k_i,storyboard:v_i,productionAgent:A_i,skillScan:p_i,generate:b_i,history:w_i,generating:O_i,generateFailed:y_i,selectAll:C_i,selected:__i,importVideo:S_i,emptyTrack:L_i,del:x_i,delConfirm:E_i,selectSource:T_i,confirm:Q_i,cancel:D_i,"workbench.script.msg.exportFailed":"การส่งออกล้มเหลว","workbench.production.node.assets.confirmDeleteBody":"ยืนยันว่าจะลบเนื้อหาหรือไม่","workbench.production.node.assets.removeFailed":"ลบเนื้อหาไม่สำเร็จ",version:B_i,"workbench.production.generatedNode.localUpload":"การอัปโหลดในเครื่อง","workbench.production.editImage.uploadFailed":"การอัปโหลดรูปภาพล้มเหลว","workbench.production.editImage.noImage":"กรุณาเพิ่มรูปภาพก่อน"},I_i={editMdPreivew:{title:"Chỉnh sửa",confirm:"Lưu",cancel:"Hủy"},imageTools:{copy:"Sao chép hình ảnh",preview:"Xem trước",download:"Tải xuống",msg:{imageLoadFailed:"Tải hình ảnh thất bại",convertFailed:"Chuyển đổi thất bại",copied:"Đã sao chép vào clipboard",copyFailed:"Sao chép thất bại",downloadFailed:"Tải xuống thất bại",downloadStarted:"Bắt đầu tải xuống",downloadBlockedOpenNewWindow:"Nguồn hình ảnh hiện tại có thể hạn chế tải xuống, đã thử mở trong cửa sổ mới"}},migrateShow:{title:"Di chuyển dữ liệu",desc:"Phát hiện bạn có dữ liệu từ phiên bản cũ, bạn có muốn di chuyển không?",hide:"Không hiển thị lại",confirm:"Xác nhận",msg:{migrateSuccess:"Di chuyển dữ liệu thành công",migrateFailed:"Di chuyển dữ liệu thất bại"}},modelSelect:{placeholder:"Vui lòng chọn mô hình",type:{image:"Hình ảnh",text:"Văn bản",video:"Video"},msg:{fetchModelFailed:"Lấy dữ liệu mô hình thất bại:"}}},M_i={title:"Cài đặt ToonFlow",menu:{language:"Cài đặt ngôn ngữ",vendorConfig:"Dịch vụ mô hình",agentConfig:"Cấu hình Agent",promptManage:"Quản lý Prompt",skillManagement:"Quản lý kĩ năng",memoryConfig:"Cấu hình bộ nhớ Agent",loginConfig:"Cấu hình đăng nhập",dbConfig:"Thao tác cơ sở dữ liệu",fileManagement:"Quản lý tệp",otherConfig:"Cấu hình khác",requestConfig:"Địa chỉ yêu cầu (API)",about:"Kiểm tra cập nhật",logoutConfig:"Đăng xuất",skillsSkillsManagement:"Kỹ năngQuản lý kỹ năng"},language:{desc:"Chọn ngôn ngữ hiển thị giao diện",msg:{saved:"Cài đặt ngôn ngữ đã được lưu"}},vendor:{addVendor:"Thêm nhà cung cấp",noVendor:"Chưa có nhà cung cấp, vui lòng thêm trước",required:"Bắt buộc",optionalSection:"Tùy chọn",modelSettings:"Cài đặt mô hình",addManually:"Thêm thủ công",test:"Kiểm tra",edit:"Chỉnh sửa",delete:"Xóa",deleteVendor:"Xóa nhà cung cấp",editCode:"Chỉnh sửa mã",updateConfig:"Cập nhật cấu hình",addModel:"Thêm mô hình",editModel:"Chỉnh sửa mô hình",displayName:"Tên hiển thị",displayNamePlaceholder:"Ví dụ: GPT-4o",modelId:"Mã mô hình (Model ID)",modelIdPlaceholder:"Ví dụ: gpt-4o",modelType:"Loại mô hình",multimodal:"Đa phương thức (Multimodal)",supported:"Hỗ trợ",notSupported:"Không hỗ trợ",toolCall:"Gọi công cụ (Tool Call)",imageMode:"Chế độ hình ảnh",videoMode:"Chế độ video",audioOutput:"Đầu ra âm thanh",durationResolution:"Ánh xạ Thời lượng / Độ phân giải",durationSec:"Thời lượng (giây)",resolution:"Độ phân giải",enterAndPress:"Nhập và nhấn Enter",addDurationResolution:"Thêm một bộ Thời lượng / Độ phân giải",testResult:"Kết quả kiểm tra",generating:"Đang tạo...",addVendorDialog:"Thêm nhà cung cấp",codeEditorInfo:"Vui lòng viết mã TypeScript để cấu hình thông tin nhà cung cấp",reset:"Đặt lại",importFile:"Nhập tệp",textModel:"Mô hình văn bản",imageModel:"Mô hình hình ảnh",videoModel:"Mô hình video",textToImage:"Văn bản -> Hình ảnh",textToVideo:"Văn bản -> Video",singleImage:"Ảnh đơn",multiImage:"Chế độ nhiều ảnh",multiReference:"Tham chiếu nhiều ảnh",gridImage:"Lưới ảnh đơn",startEndRequired:"Khung hình đầu và cuối (Bắt buộc cả hai)",endFrameOptional:"Khung hình đầu và cuối (Khung hình cuối tùy chọn)",startFrameOptional:"Khung hình đầu và cuối (Khung hình đầu tùy chọn)",textRef:"Văn bản",imageRef:"Hình ảnh",videoRef:"Video",audioRef:"Âm thanh",audioOptional:"Tùy chọn",audioOnly:"Chỉ xuất video có âm thanh",noAudio:"Chỉ xuất video không âm thanh",msg:{getVendorListFailed:"Lấy danh sách nhà cung cấp thất bại",vendorConfigUpdated:"Cấu hình nhà cung cấp đã được cập nhật",updateFailed:"Cập nhật thất bại",highRiskConfirm:"⚠️ Xác nhận thao tác rủi ro cao",addVendorRiskBody:"Việc thêm nhà cung cấp AI mới sẽ cấp cho họ quyền truy cập vào API hệ thống, vui lòng đảm bảo bạn tin tưởng nguồn mã của nhà cung cấp này!",iKnowRisk:"Tôi hiểu rủi ro",cancel:"Hủy",confirmAgain:"⚠️ Xác nhận lại",addVendorConfirmBody:"Bạn có chắc chắn muốn thêm nhà cung cấp này không? Sau khi thêm, nó sẽ tham gia vào việc điều phối mô hình của hệ thống.",confirmAndAdd:"Xác nhận và thêm",goBackCheck:"Quay lại kiểm tra",vendorAdded:"Đã thêm nhà cung cấp thành công",addFailed:"Thêm thất bại",updateVendorRiskBody:"Cập nhật cấu hình nhà cung cấp AI sẽ thay đổi quyền truy cập API hệ thống và hành vi của họ, vui lòng đảm bảo bạn tin tưởng nguồn mã sau khi sửa đổi!",updateVendorConfirmBody:"Bạn có chắc chắn muốn cập nhật cấu hình nhà cung cấp này không? Việc cập nhật sẽ ảnh hưởng đến việc điều phối mô hình của hệ thống.",confirmAndUpdate:"Xác nhận và cập nhật",updateSuccess:"Cập nhật cấu hình nhà cung cấp thành công",fillDisplayName:"Vui lòng điền tên hiển thị",fillModelId:"Vui lòng điền mã mô hình",selectImageMode:"Vui lòng chọn chế độ hình ảnh",selectVideoMode:"Vui lòng chọn chế độ video",groupPrefix:"Nhóm thứ {n}:",addDuration:"Vui lòng thêm thời lượng",addResolution:"Vui lòng thêm độ phân giải",selectVendorFirst:"Vui lòng chọn nhà cung cấp trước",modelIdExists:"Mã mô hình đã tồn tại",modelAdded:"Đã thêm mô hình thành công",modelUpdated:"Đã cập nhật mô hình thành công",enterApiKey:"Vui lòng điền API KEY",enterApiUrl:"Vui lòng điền API URL",testSuccess:"Kiểm tra thành công",imageGenSuccess:"Tạo hình ảnh thành công",videoGenSuccess:"Tạo video thành công",requestFailed:"Yêu cầu thất bại",deleteModelConfirm:"Xác nhận xóa mô hình",deleteModelBody:"Không thể khôi phục sau khi xóa, bạn có muốn tiếp tục?",confirmDelete:"Xác nhận xóa",modelDeleted:"Mô hình đã bị xóa",deleteVendorConfirm:"Xác nhận xóa nhà cung cấp",deleteVendorBody:"Sau khi xóa, tất cả các mô hình thuộc nhà cung cấp này cũng sẽ bị xóa, bạn có muốn tiếp tục?",vendorDeleted:"Nhà cung cấp đã bị xóa",deleteFailed:"Xóa thất bại",enabled:"Đã bật",disabled:"Tàn tật",linkAddVendorRiskBody:"Việc thêm nhà cung cấp AI mới sẽ cấp cho nhà cung cấp đó quyền truy cập vào API hệ thống, vui lòng đảm bảo rằng bạn tin cậy nguồn liên kết của nhà cung cấp đó!",importAdd:"Việc thêm nhà cung cấp AI mới sẽ cấp cho nhà cung cấp đó quyền truy cập vào API hệ thống, vui lòng đảm bảo rằng bạn tin cậy vào nguồn tài liệu của nhà cung cấp đó!",linkAddFailed:"Không thể thêm liên kết"},associationSkills:"Kỹ năng liên quan",think:"suy nghĩ sâu sắc",code:"mã số",linkAddPlaceholder:"Nhập liên kết để thêm",noFileSelected:"Đã nhập tệp thành công",linkAdd:"xác nhận"},agent:{bannerDesc:"Sử dụng máy chủ trung gian chính thức của Toonflow, hỗ trợ điền cấu hình bằng 1 cú nhấp chuột, sẵn sàng sử dụng ngay mà không cần thiết lập thủ công.",visitWebsite:"Truy cập trang web",fillKey:"Điền KEY",oneClickFill:"Điền bằng 1 cú nhấp chuột",notOpen:"Chưa mở",notConfigured:"Chưa cấu hình",modelConfig:"Cấu hình mô hình",confirm:"Xác nhận",cancel:"Hủy",selectModel:"Chọn mô hình",fillKeyHeader:"Điền KEY chính thức của nền tảng Toonflow",keyPlaceholder:"Vui lòng nhập KEY",save:"Lưu",msg:{notAvailable:"Tính năng này hiện chưa khả dụng, vui lòng chờ",configSuccess:"Cấu hình thành công",updateConfigFailed:"Cập nhật cấu hình thất bại:",keyValid:"KEY hợp lệ, kết nối với nền tảng Toonflow thành công",keyInvalid:"KEY không hợp lệ, vui lòng kiểm tra và nhập lại:",enterKey:"Vui lòng nhập KEY",saveFailed:"Lưu thất bại:",getAgentListFailed:"Lấy danh sách cấu hình Agent thất bại:",toonflowNotFound:"Trạm trung chuyển chính thức của Toonflow không tồn tại"}},memory:{warning:"Các mục cấu hình dưới đây đã được đặt sẵn ở mức khuyến nghị. Trừ khi bạn hiểu rõ ý nghĩa và tác động của từng cấu hình, nếu không khuyên bạn nên giữ nguyên thiết lập hiện tại",vectorModelConfig:"Cấu hình mô hình vector",modelFilePath:"Đường dẫn tệp mô hình",quantizationType:"Loại lượng tử hóa",quantizationPlaceholder:"Vui lòng nhập loại lượng tử hóa",memoryParams:"Thông số bộ nhớ",messagesPerSummary:"Số tin nhắn kích hoạt nén",messagesPerSummaryHelp:"Giữ lại ngữ cảnh của N cuộc hội thoại gần nhất.",shortTermLimit:"Số tin nhắn chưa nén lấy trong 1 lần",shortTermLimitHelp:"Số lượng bộ nhớ đề xuất được trả về khi truy xuất.",summaryMaxLength:"Ký tự nén tối đa",summaryMaxLengthHelp:"Ký tự tối đa cho phép khi nén tin nhắn",summaryLimit:"Số tin nhắn đã nén cho phép truy vấn",summaryLimitHelp:"Số tin nhắn đã nén cho phép truy vấn",ragLimit:"Số lượng bộ nhớ tìm kiếm",ragLimitHelp:"Số lượng tin nhắn lấy được khi truy xuất.",deepRetrieveSummaryLimit:"Số tin nhắn nén thu hồi bằng vector",deepRetrieveSummaryLimitHelp:"Số lượng tin nhắn lấy được khi truy xuất nội dung tin nhắn đã nén.",saveConfig:"Lưu cấu hình",clearMemory:"Xóa bộ nhớ",restoreDefault:"Khôi phục cấu hình mặc định",msg:{saved:"Cấu hình bộ nhớ đã được lưu",clearConfirmTitle:"Xác nhận xóa bộ nhớ",clearConfirmBody:"Thao tác này sẽ xóa toàn bộ dữ liệu bộ nhớ toàn cục của AI và không thể khôi phục, bạn có muốn tiếp tục?",confirmClear:"Xác nhận xóa",cancel:"Hủy",cleared:"Bộ nhớ đã được xóa",clearFailed:"Xóa bộ nhớ thất bại"}},login:{username:"Tên người dùng",usernamePlaceholder:"Vui lòng nhập tên người dùng",password:"Mật khẩu",passwordPlaceholder:"Vui lòng nhập mật khẩu",modify:"Sửa đổi",msg:{enterUsername:"Vui lòng nhập tên người dùng",usernameLength:"Độ dài tên người dùng từ 2-20 ký tự",enterPassword:"Vui lòng nhập mật khẩu",passwordLength:"Độ dài mật khẩu từ 6-20 ký tự",fetchFailed:"Lấy thông tin người dùng thất bại",saveSuccess:"Lưu thành công",saveFailed:"Lưu thất bại"}},db:{clearDb:"Xóa sạch cơ sở dữ liệu",clearDbDesc:"Xóa toàn bộ dữ liệu trong tất cả các bảng, giữ lại cấu trúc bảng",clearData:"Xóa dữ liệu",confirmAction:"Xác nhận thao tác",msg:{clearDbTitle:"Xóa sạch cơ sở dữ liệu",firstConfirm:"Bạn có chắc chắn muốn xóa toàn bộ bảng dữ liệu không? Dữ liệu sau khi xóa sẽ không thể khôi phục!",secondConfirm:"Đây là lần xác nhận cuối cùng, sau khi xóa toàn bộ dữ liệu sẽ bị mất vĩnh viễn!",keyword:"Xóa sạch",confirm:"Xác nhận",pleaseInput:"Vui lòng nhập",cleared:"Toàn bộ bảng dữ liệu đã được xóa",operationFailed:"Thao tác thất bại, vui lòng thử lại",cancelled:"Thao tác đã bị hủy"}},other:{requestTimeout:"Thời gian chờ yêu cầu (Timeout)",seconds:"giây",inputSeconds:"Vui lòng nhập số giây",assetConcurrency:"Số luồng tạo tài nguyên đồng thời",count:"cái",inputCount:"Vui lòng nhập số lượng",chapterRegex:"Regex tách chương",restoreDefault:"Khôi phục mặc định",regexPlaceholder:"Vui lòng nhập biểu thức chính quy (Regex)",canvasScroll:"Cuộn vải",canvasIsDisabled:"Thu phóng canvas",agentCanvasScalingMethod:"Hoạt động bánh xe vải không giới hạn trên trang sản xuất",zoom:"Phóng",scroll:"cuộn",isInteracting:"Tối ưu hóa hiệu suất kéo canvas không giới hạn trên trang sản xuất",closeIsInteracting:"đóng cửa"},request:{warning:"Nếu không có trường hợp đặc biệt, không cần sửa đổi hoặc cấu hình",apiAddress:"Địa chỉ API",apiPlaceholder:"Vui lòng nhập địa chỉ yêu cầu API",save:"Lưu",reset:"Đặt lại",msg:{enterApi:"Vui lòng nhập địa chỉ API",validUrl:"Vui lòng nhập địa chỉ HTTP/HTTPS hợp lệ",saved:"Địa chỉ yêu cầu đã lưu thành công",reset:"Đã đặt lại về địa chỉ mặc định"}},about:{slogan:"Công cụ sáng tạo truyện tranh / phân cảnh mã nguồn mở do AI điều khiển",latestVersion:"Đây là phiên bản mới nhất",checkUpdate:"Kiểm tra cập nhật",codeRepository:"Kho lưu trữ mã nguồn",githubRepo:"Kho GitHub",giteeRepo:"Kho Gitee",versionUpdate:"Cập nhật phiên bản",checkUpdateGithub:"Kiểm tra cập nhật (GitHub)",getFromGithub:"Lấy phiên bản mới nhất từ GitHub Release",checkUpdateGitee:"Kiểm tra cập nhật (Gitee)",getFromGitee:"Lấy phiên bản mới nhất từ Gitee Release",license:"Giấy phép",licenseDesc:"Thỏa thuận giấy phép mã nguồn mở · Nhấn để xem chi tiết",updateAvailable:"phiên bản mới được tìm thấy",upToDate:"Đã phát hiện phiên bản mới"},logout:{warning:"Sau khi đăng xuất, bạn cần đăng nhập lại để tiếp tục sử dụng hệ thống.",confirmLogout:"Bạn có chắc chắn muốn đăng xuất không?",logout:"Đăng xuất",msg:{logoutSuccess:"Đăng xuất thành công",logoutFailed:"Đăng xuất thất bại, vui lòng thử lại"}},file:{quickOpen:"Mở thư mục nhanh",open:"Mở",dockerDesc:'Đối với Docker/Triển khai tách biệt Frontend-Backend, vui lòng đi tới thư mục "/data/*" để quản lý tệp thủ công.',desktopOnly:"Tính năng này chỉ hỗ trợ trên ứng dụng Desktop",folders:{data:"data",dataDesc:"Thư mục dữ liệu.",logs:"data/logs",logsDesc:"Nhật ký hệ thống và nhật ký lỗi.",oss:"data/oss",ossDesc:"Tài nguyên liên quan đến lưu trữ tệp.",skills:"data/skills",skillsDesc:"Tệp cấu hình kỹ năng và lời nhắc (Prompt).",models:"data/models",modelsDesc:"Tệp mô hình và cấu hình.",web:"data/web",webDesc:"Tài nguyên liên quan đến Web, như các sản phẩm build Frontend.",serve:"data/serve",serveDesc:"Tệp liên quan đến dịch vụ Backend."},openFailed:"Mở thư mục thất bại"},dev:{warning:"Sau đây là các công cụ dành cho nhà phát triển, vui lòng sử dụng thận trọng!",openDevtool:"Mở",devtoolsDoc:"Địa chỉ tài liệu",devtoolsDesc:"Sau khi bật lên sẽ tạo một thư mục .devtools trong thư mục cài đặt Toonflow. Hãy đảm bảo rằng Toonflow có quyền ghi (chạy với tư cách quản trị viên).",devtoolsDesc2:"Chạy npx {'@'}ai-sdk/devtools trong thư mục này để bật gỡ lỗi đo từ xa",openDevtoolFailed:"Không mở được công cụ dành cho nhà phát triển, vui lòng đảm bảo đã cài đặt Toonflow desktop",notInElectron:"Đối với môi trường WEB, vui lòng mở bảng điều khiển trình duyệt theo cách thủ công"}},P_i={selectProject:"Vui lòng chọn dự án",menu:{myProject:"Dự án của tôi",taskCenter:"Trung tâm tác vụ",novel:"Bản gốc tiểu thuyết",scriptAgent:"Agent Kịch bản",scriptManage:"Quản lý kịch bản",cornerScape:"Nhân vật & Bối cảnh",production:"Sản xuất video",assetCenter:"Trung tâm tài nguyên",settings:"Cài đặt",jumpGithub:"Chuyển tới Github",feedbackQuestions:"Câu hỏi phản hồi"},project:{title:"Dự án của tôi",subtitle:"Quản lý tất cả các dự án phim ngắn của bạn",newProject:"Dự án mới",dialog:{editTitle:"Chỉnh sửa dự án",addTitle:"Dự án mới",save:"Lưu",ok:"Xác nhận",cancel:"Hủy",projectType:"Loại dự án",selectType:"Chọn loại dự án",basedOnNovel:"Dựa trên bản gốc tiểu thuyết",projectName:"Tên dự án",projectNamePh:"Vui lòng nhập tên dự án",novelType:"Thể loại tiểu thuyết",novelTypePh:"Ví dụ: Huyền huyễn, Khoa học viễn tưởng, Ngôn tình",artStyle:"Hướng dẫn trực quan",selected:"Đã chọn:",selectArtStyle:"Vui lòng chọn hướng dẫn trực quan",newArtStyle:"Hướng dẫn trực quan mới",loading:"Đang tải...",videoRatio:"Tỷ lệ video",novelIntro:"Tóm tắt tiểu thuyết",novelIntroPh:"Vui lòng nhập tóm tắt tiểu thuyết",editArtStyleTitle:"Chỉnh sửa hướng dẫn trực quan",newArtStyleTitle:"Hướng dẫn trực quan mới",artStyleName:"Tên hướng dẫn trực quan",artStyleNamePh:"Vui lòng nhập tên hướng dẫn trực quan",artStyleImage:"Ảnh bìa hướng dẫn trực quan",remove:"Xóa bỏ",uploadCover:"Tải lên ảnh bìa",artStylePrompt:"Lời nhắc hướng dẫn sử dụng trực quan",aiExtract:"AI trích xuất Prompt",promptPlaceholder:"Mô tả từ nhắc hướng dẫn sử dụng trực quan, được sử dụng để chỉ định hướng dẫn trực quan khi tạo hình ảnh.",visualManual:"Hướng dẫn trực quan",newVisualManual:"Hướng dẫn trực quan mới",editVisualManualTitle:"Chỉnh sỮa hướng dẫn trực quan",newVisualManualTitle:"Hướng dẫn trực quan mới",visualManualName:"Tên hướng dẫn trực quan",visualManualNamePh:"Vui lòng nhập tên hướng dẫn trực quan",visualManualCover:"Ảnh bìa hướng dẫn trực quan",visualManualPrompt:"Prompt hướng dẫn trực quan",modelData:"Chọn mô hình hình ảnh",videoModelData:"Chọn mô hình video",prompt:{placeholder:"Nhập từ gợi ý",saveSuccess:"Cập nhật thành công",title:"lời nhắc"},basedOnScript:"dựa trên kịch bản",mdFile:"tập tin hướng dẫn trực quan",directorManual:"Sổ tay Giám đốc",addDirectorManual:"Hướng dẫn đạo diễn mới",editingDirectorManual:"Chỉnh sửa Sổ tay Giám đốc",newDirecorManualTitle:"Hướng dẫn đạo diễn mới",directorManualPrompt:"Hướng dẫn sử dụng lời nhắc của đạo diễn",directorManualName:"Tên sổ tay giám đốc",directorManualNamePh:"Nhập tên Sổ tay Giám đốc",directorFile:"Tài liệu hướng dẫn của Giám đốc",directorManualCover:"Bìa sách hướng dẫn của giám đốc"},msg:{fetchFailed:"Lấy danh sách dự án thất bại",notFound:"Không tìm thấy dự án này!",editSuccess:"Chỉnh sửa dự án thành công",editFailed:"Chỉnh sửa dự án thất bại",addSuccess:"Thêm dự án thành công",addFailed:"Thêm dự án thất bại",deleteHeader:"Xóa dự án",deleteBody:"Bạn có chắc chắn muốn xóa dự án này không?",deleteConfirm:"Xóa",deleteCancel:"Hủy",deleteSuccess:"Xóa dự án thành công",deleteFailed:"Xóa dự án thất bại",extractSuccess:"Trích xuất lời nhắc thành công",extractFailed:"Trích xuất thất bại",enterArtStyleName:"Vui lòng nhập tên hướng dẫn trực quan",artStyleUpdated:"Hướng dẫn trực quan được cập nhật",artStyleAdded:"Đã thêm hướng dẫn trực quan",operationFailed:"Thao tác thất bại",enterVisualManualName:"Vui lòng nhập tên hướng dẫn trực quan",enterVisualManualImage:"Vui lòng tải lên ảnh bìa hướng dẫn trực quan",enterVisualManualTabData:"Prompt không được để trống",visualManualUpdated:"Hướng dẫn trực quan được cập nhật",visualManualAdded:"Đã thêm hướng dẫn trực quan",deleteVisualManualHeader:"Xóa hướng dẫn trực quan",deleteVisualManualBody:'Bạn có chắc chắn muốn xóa hướng dẫn trực quan "{name}" không?',deleteVisualManualConfirm:"Xóa",deleteVisualManualCancel:"Hủy",enterProjectName:"Vui lòng nhập tên dự án",enterProjectIntro:"Vui lòng nhập phần giới thiệu tiểu thuyết",enterProjectType:"Vui lòng nhập loại dự án",enterArtStyle:"Vui lòng chọn một tài liệu trực quan của dự án",enterVideoRatio:"Vui lòng chọn tỷ lệ video",enterImageModel:"Vui lòng chọn mẫu hình ảnh",enterVideoModel:"Vui lòng chọn một mẫu video",visualManualDeleted:"Xóa thành công",selectMode:"Vui lòng chọn chế độ",deleteDirectorManualHeader:"Xóa sổ tay giám đốc",deleteDirectorManualBody:'Bạn có chắc chắn muốn xóa Sổ tay Giám đốc "{name}" không?',directorManualUpdated:"Sổ tay Giám đốc được cập nhật",directorManualAdded:"Đã thêm hướng dẫn sử dụng của Giám đốc",directorManual:"Vui lòng chọn Sổ tay Giám đốc Dự án"},type:{novel:"Dựa trên tiểu thuyết gốc",script:"Dựa trên kịch bản tiểu thuyết"}},novel:{importText:"Nhập bản gốc",batchDelete:"Xóa hàng loạt",eventAnalysis:"Phân tích sự kiện",searchPlaceholder:"Tìm kiếm tên bản gốc...",search:"Tìm kiếm",generating:"Đang tạo...",genFailed:"Tạo thất bại",none:"Không có",edit:"Chỉnh sửa",delete:"Xóa",col:{id:"STT",reel:"Tập",chapter:"Tên chương",chapterData:"Nội dung chương",event:"Sự kiện",operation:"Thao tác"},msg:{batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} dữ liệu đã chọn không?",batchDeleteSuccess:"Xóa hàng loạt thành công",deleteHeader:"Xác nhận xóa",deleteBody:'Bạn có chắc chắn muốn xóa dữ liệu của chương có tên "{name}" không?',deleteSuccess:"Xóa thành công",eventAnalysisHeader:"Phân tích sự kiện",eventAnalysisBody:"Bạn có chắc chắn muốn phân tích sự kiện cho {count} dữ liệu đã chọn không?"},import:{title:"Tải lên bản gốc tiểu thuyết",step1:"Bước 1",step2:"Bước 2",step3:"Bước 3",dragUpload:"Kéo thả tệp văn bản tiểu thuyết vào đây hoặc nhấp để tải lên",uploadHint:"Hỗ trợ định dạng .txt, .docx, dung lượng tệp khuyên dùng dưới 10MB",or:"Hoặc",pasteLabel:"Dán trực tiếp nội dung tiểu thuyết",pastePlaceholder:"Vui lòng nhập nội dung tiểu thuyết",chars:"ký tự",tooShort:"Nội dung quá ngắn, khuyên dùng ít nhất 100 ký tự",parsedChapters:"Đã phân tích {count} chương",nextStep:"Tiếp theo",prevStep:"Quay lại",selectedInfo:"Đã chọn: {count} chữ (nhỏ hơn 200.000 chữ)",eventAnalysis:"Phân tích sự kiện",saveAndAnalyze:"Lưu bản gốc và phân tích sự kiện",col:{chapter:"Chương",reel:"Tập",chapterName:"Tên chương",chapterData:"Nội dung chương"},msg:{parseFailed:"Phân tích tệp thất bại, vui lòng tải lên lại",selectFile:"Chọn tập tin",docNotSupported:"File .doc không hỗ trợ phân tích cú pháp, vui lòng chuyển đổi sang file .ts",unsupportedType:"Loại tệp không được hỗ trợ",fileTooLarge:"Dung lượng tệp vượt quá 10MB, vui lòng tải lên tệp nhỏ hơn",selectChapters:"Vui lòng đánh dấu chọn chương trước",saveSuccess:"Lưu bản gốc tiểu thuyết thành công"},importAdd:"Kéo và thả file vào đây hoặc bấm vào để tải lên",limit:"Hỗ trợ định dạng .ts"},editDialog:{title:"Chỉnh sửa bản gốc tiểu thuyết",chapterName:"Tên chương",chapterNamePh:"Vui lòng nhập tên chương",eventContent:"Nội dung sự kiện",eventContentPh:"Nhập nội dung sự kiện",chapterContent:"Nội dung chương",chapterContentPh:"Vui lòng nhập nội dung chương",cancel:"Hủy",save:"Lưu",msg:{updateSuccess:"Cập nhật bản gốc tiểu thuyết thành công"}},event:{regenerate:"Tạo lại sự kiện",batchDelete:"Xóa hàng loạt",noData:"Chưa có dữ liệu sự kiện, nhấp để bắt đầu tạo",generate:"Tạo sự kiện",generatingHint:"Đang tạo sự kiện, vui lòng chờ...",loading:"Đang tải...",delete:"Xóa",col:{id:"ID Sự kiện",eventName:"Tên sự kiện",chapters:"Chương nguồn",detail:"Quá trình sự kiện",createTime:"Thời gian tạo",operation:"Thao tác"},msg:{deleteHeader:"Xóa sự kiện",deleteBody:"Bạn có chắc chắn muốn xóa sự kiện này không?",deleteSuccess:"Xóa thành công",generateSuccess:"Tạo sự kiện thành công",batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} dữ liệu đã chọn không?",batchDeleteSuccess:"Xóa hàng loạt thành công"}},analysis:{analyzeFirst:"Vui lòng phân tích sự kiện trước",startAnalysis:"Bắt đầu phân tích",chapterHeader:"Chương {index} - {name}",analyzing:"Đang phân tích sự kiện"}},scriptAgent:{inputPlaceholder:"Vui lòng nhập nội dung",chapterEvents:"Sự kiện chương",clearMessageMemory:"Xóa bộ nhớ tin nhắn",clearSummaryMemory:"Xóa bộ nhớ tóm tắt",clearAllMemory:"Xóa toàn bộ bộ nhớ",edit:"Chỉnh sửa",storySkeleton:"Khung xương cốt truyện",adaptationStrategy:"Chiến lược chuyển thể",script:"Kịch bản",noContent:"Chưa có nội dung",relatedAssets:"Tài nguyên liên kết",editScript:"Chỉnh sửa kịch bản",save:"Lưu",scriptTitle:"Tiêu đề",titlePlaceholder:"Vui lòng nhập tiêu đề",content:"Nội dung",contentPlaceholder:"Vui lòng nhập nội dung kịch bản",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",selectAssetsTitle:"Chọn tài nguyên liên kết",welcomeMsg:"Xin chào! Tôi là trợ lý thông minh Toonflow, bạn có muốn tôi bắt đầu tạo kịch bản cho bạn không?",start:"Bắt đầu",memoryType:{message:"Bộ nhớ tin nhắn",summary:"Bộ nhớ tóm tắt",all:"Toàn bộ bộ nhớ"},msg:{clearConfirm:"Xác nhận xóa",clearBody:"Bạn có chắc chắn muốn xóa {type} không? Không thể hoàn tác thao tác này.",confirmClear:"Xác nhận xóa",cancel:"Hủy",memoryCleared:"Đã xóa {type}",scriptUpdated:"Cập nhật kịch bản thành công",scriptUpdateFailed:"Cập nhật kịch bản thất bại, vui lòng thử lại sau",searchScriptFailed:"Tìm kiếm kịch bản thất bại",updated:"Đã lưu thành công",error:"Lưu không thành công",reconnect:"Kết nối lại",notReconnect:"Xác nhận rằng cuộc trò chuyện kết nối lại sẽ bị cắt?",keepReconnect:"xác nhận",deleteConfirm:"Xóa xác nhận",deleteBody:"Xóa văn bản",confirmDelete:"Xác nhận xóa",scriptDeleted:"Đã xóa tập lệnh"},reconnect:"kết nối lại"},cornerScape:{batchSettings:"Cài đặt tạo hàng loạt",quickActions:"Lệnh lối tắt",selectUngenerated:"Chọn tất cả các mục chưa tạo",selectGenerated:"Chọn tất cả các mục đã tạo",selectFailed:"Chọn các mục lỗi",invertSelection:"Đảo ngược vùng chọn",clearSelection:"Bỏ chọn",batchPreview:"Xem trước ảnh hàng loạt",assetTypeFilter:"Lọc loại tài nguyên",genModel:"Mô hình tạo",resolution:"Độ phân giải",resolutionPh:"Vui lòng chọn độ phân giải",concurrency:"Số lượng đồng thời",concurrencyPh:"Vui lòng nhập số lượng đồng thời",startBatch:"Bắt đầu tạo hình ảnh theo đợt",waitingGen:"Đang chờ tạo",generating:"Đang tạo",genFailed:"Tạo thất bại",imageError:"Lỗi hình ảnh",typeRole:"Nhân vật",typeScene:"Cảnh",typeTool:"Công cụ",typeUnknown:"Không xác định",descriptionSuffix:"Mô tả:",operateScriptFirst:"Vui lòng thao tác với kịch bản trước",individualConfig:"Cấu hình riêng lẻ",noImage:"Chưa có hình ảnh",promptLabel:"Lời nhắc (Prompt)",promptPh:"Vui lòng nhập lời nhắc",aiPolish:"AI trau chuốt",regenerate:"Tạo lại",filterRole:"Nhân vật",filterScene:"Cảnh",filterTool:"Đạo cụ",unnamed:"Chưa đặt tên",noDescription:"Không có mô tả",msg:{selectModel:"Vui lòng chọn mô hình tạo",selectResolution:"Vui lòng chọn độ phân giải",enterPrompt:"Vui lòng nhập lời nhắc",enterPromptFirst:"Vui lòng nhập lời nhắc trước",genSuccess:"Tạo {name} thành công",genFailed:"Tạo {name} thất bại",promptGenSuccess:"Tạo lời nhắc thành công",polishFailed:"Trau chuốt thất bại, vui lòng thử lại",selectAtLeastOne:"Vui lòng chọn ít nhất một tài nguyên để tạo hàng loạt",batchStarted:"Bắt đầu tạo hàng loạt, tổng cộng {count} mục, số luồng đồng thời {concurrent}",batchItemFailed:"Tạo {name} thất bại: {error}",batchComplete:"Tạo hàng loạt hoàn tất",batchFailed:"Tạo hàng loạt không thành công",replaceFailed:"Thay thế không thành công",replaceSuccess:"Thay thế thành công",promptGenFail:"Tạo từ nhắc nhở không thành công",saveSuccess:"Sửa đổi lời nhắc thành công",saveFailed:"Sửa đổi từ nhắc nhở không thành công"},history:"hình ảnh lịch sử",confirmReplace:"Xác nhận thay thế",batchGenerationPrompt:"Tạo các từ nhắc nhở theo đợt",generatingPrompt:"Đang tạo",selectPromptEmpty:"Chọn tất cả từ nhắc trống",noEmptyPrompt:"Không có nội dung nào có từ nhắc trống",selectedCount:"đã chọn {count} nội dung"},script:{searchPlaceholder:"Tìm kiếm tên kịch bản...",search:"Tìm kiếm",addScript:"Kịch bản mới",cancelSelectAll:"Bỏ chọn tất cả",selectAll:"Chọn tất cả",exportScript:"Xuất kịch bản",msg:{searchFailed:"Tìm kiếm kịch bản thất bại",selectExport:"Vui lòng chọn kịch bản cần xuất trước",exportSuccess:"Xuất thành công",exportFailed:"Xuất kịch bản thất bại",deleteHeader:"Xác nhận xóa",deleteBody:"Bạn có chắc chắn muốn xóa kịch bản này không? Không thể hoàn tác thao tác này.",deleteConfirm:"Xóa",cancel:"Hủy",deleteSuccess:"Xóa thành công",deleteFailed:"Xóa thất bại",selectDelScript:"Vui lòng chọn xóa tập lệnh",batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} kịch bản đã chọn không? Không thể hoàn tác thao tác này.",batchDeleteSuccess:"Xóa hàng loạt thành công",extractingInProgress:"Giải nén",projectNotFound:"Không tìm thấy mục",selectsExport:"Vui lòng chọn xuất tập lệnh"},add:{title:"Thêm kịch bản mới",scriptName:"Tên kịch bản",scriptNamePh:"Vui lòng nhập tên kịch bản",uploadFile:"Tải lên tệp",dragUpload:"Kéo thả tệp kịch bản vào đây hoặc nhấp để tải lên",uploadHint:"Hỗ trợ định dạng .txt, .docx, dung lượng tệp khuyên dùng dưới 10MB",scriptContent:"Nội dung kịch bản",scriptContentPh:"Vui lòng tải lên hoặc nhập nội dung kịch bản...",relatedAssets:"Tài nguyên liên kết",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",cancel:"Hủy",confirm:"Xác nhận",msg:{fileReadFailed:"Đọc tệp thất bại",docNotSupported:"Không hỗ trợ phân tích tệp .doc, vui lòng chuyển đổi sang .txt hoặc .docx",unsupportedType:"Loại tệp không được hỗ trợ",fileTooLarge:"Dung lượng tệp vượt quá 10MB, vui lòng tải lên tệp nhỏ hơn",parsing:"Đang phân tích tệp...",parseFailed:"Phân tích tệp thất bại, vui lòng tải lên lại",selectAssetsTitle:"Chọn tài nguyên liên kết",enterContent:"Vui lòng tải lên hoặc nhập nội dung kịch bản",enterName:"Vui lòng nhập tên kịch bản",addSuccess:"Thêm kịch bản thành công",addFailed:"Thêm kịch bản thất bại, vui lòng thử lại sau"}},edit:{title:"Chi tiết kịch bản",scriptName:"Tên kịch bản",scriptNamePh:"Vui lòng nhập tên kịch bản",scriptContent:"Nội dung kịch bản",scriptContentPh:"Vui lòng nhập nội dung kịch bản...",relatedAssets:"Tài nguyên liên kết",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",msg:{selectAssetsTitle:"Chọn tài nguyên liên kết",updateSuccess:"Cập nhật kịch bản thành công",updateFailed:"Cập nhật kịch bản thất bại, vui lòng thử lại sau"}},deleteScript:"Xóa tập lệnh theo đợt",extractAssets:""},assets:{addPrefix:"Thêm mới",batchGenerate:"Tạo hàng loạt",generatePrompt:"Tạo lời nhắc",generateImage:"Tạo hình ảnh",batchDelete:"Xóa hàng loạt",searchPlaceholder:"Tìm kiếm tên tài nguyên...",search:"Tìm kiếm",preview:"Xem trước",generate:"Tạo",edit:"Chỉnh sửa",delete:"Xóa",generating:"Đang tạo",play:"Phát",mediaPreview:"Xem trước Media",confirmBatch:"Xác nhận {type}!",model:"Mô hình",resolution:"Độ phân giải",resolutionPh:"Vui lòng chọn độ phân giải",batchGenPrompt:"Tạo lời nhắc hàng loạt",batchGenImage:"Tạo hình ảnh hàng loạt",role:"Nhân vật",prop:"Đạo cụ",scene:"Cảnh",clip:"Chất liệu (Clip)",uploadSuccess:"Tải lên thành công",selectAtLeastOne:"Vui lòng chọn ít nhất một tài nguyên",noDescription:"Không có mô tả",promptGenSuccess:"Tạo lời nhắc cho「{name}」thành công",promptGenFail:"Tạo lời nhắc cho「{name}」thất bại: {error}",selectModel:"Vui lòng chọn mô hình",selectResolution:"Vui lòng chọn độ phân giải",noPromptForImage:"「{name}」không có lời nhắc, không thể tạo hình ảnh",imageGenSuccess:"Tạo hình ảnh「{name}」thành công",imageGenFail:"Tạo hình ảnh「{name}」thất bại: {error}",confirmDeleteHeader:"Xác nhận xóa",confirmBatchDeleteBody:"Bạn có chắc chắn muốn xóa hàng loạt các tài nguyên này không? Không thể hoàn tác thao tác này.",confirmDeleteBody:"Bạn có chắc chắn muốn xóa tài nguyên này không? Không thể hoàn tác thao tác này.",deleteBtn:"Xóa",cancelBtn:"Hủy",deleteSuccess:"Xóa tài nguyên thành công",deleteFail:"Xóa tài nguyên thất bại",colPreview:"Xem trước",colName:"Tên",colPrompt:"Lời nhắc",colDescribe:"Mô tả",colRemark:"Ghi chú",colCreateTime:"Thời gian tạo",colOperation:"Thao tác",add:{name:"Tên",namePh:"Vui lòng nhập tên",describe:"Mô tả",describePh:"Vui lòng nhập mô tả",remark:"Ghi chú",remarkPh:"Vui lòng nhập ghi chú",prompt:"Lời nhắc",promptPh:"Vui lòng nhập lời nhắc",nameRequired:"Vui lòng nhập tên",describeRequired:"Vui lòng nhập chi tiết",remarkRequired:"Vui lòng nhập ghi chú",updateSuccess:"Cập nhật tài nguyên thành công",addSuccess:"Thêm tài nguyên thành công"},gen:{header:"Tạo hình ảnh",uploadRef:"Tải lên ảnh tham khảo",optional:"Tùy chọn",promptLabel:"Lời nhắc tạo ảnh",smartGenerate:"Tạo thông minh",generatingPrompt:"Đang tạo lời nhắc thông minh...",promptPlaceholder:"Mô tả nội dung hình ảnh bạn muốn tạo, ví dụ: Một thành phố tương lai đầy công nghệ, ánh đèn neon nhấp nháy, phong cách cyberpunk...",selectModel:"Chọn mô hình",selectResolution:"Chọn độ phân giải",generateBtn:"Tạo hình ảnh",resultTitle:"Kết quả tạo",generatedCount:"Đã tạo {count} ảnh, vui lòng chọn một",generatingLabel:"Đang tạo...",genFailed:"Tạo thất bại",confirmSelect:"Xác nhận lựa chọn",promptSuccess:"Tạo lời nhắc thành công",promptFail:"Tạo lời nhắc thất bại",fillPrompt:"Vui lòng điền lời nhắc",pickResolution:"Vui lòng chọn độ phân giải",pickModel:"Vui lòng chọn mô hình",unnamed:"Chưa đặt tên",assetGenSuccess:"Tạo tài nguyên thành công",assetGenFail:"Tạo tài nguyên thất bại",uploadOk:"Tải lên thành công",imageSelected:"Đã chọn hình ảnh này",imageDeleted:"Đã xóa hình ảnh này",imageSaved:"Hình ảnh đã được lưu",completed:"Hoàn thành"},batch:{header:"Tạo hàng loạt",selected:"Đã chọn {count} mục",selectAll:"Chọn tất cả",clearSelection:"Bỏ chọn tất cả",inputPh:"Vui lòng nhập nội dung",saveSelected:"Lưu các mục đã chọn ({count})",colPreviewImg:"Ảnh xem trước",selectToSave:"Vui lòng chọn mục để lưu",saveSuccess:"Lưu thành công",saveFail:"Lưu thất bại, vui lòng thử lại",promptDone:"Tạo lời nhắc hoàn tất",promptFail:"Tạo lời nhắc thất bại",missingPrompts:"Có {count} tài nguyên thiếu lời nhắc, vui lòng tạo lời nhắc trước",imageDone:"Tạo hình ảnh hoàn tất",imageGenFail:"Tạo hình ảnh thất bại",unknownError:"Lỗi không xác định",promptGenCancelled:"Thế hệ bị hủy"}},production:{selectPlaceholder:"Vui lòng chọn tập",edit:"Chỉnh sửa",node:{script:{title:"Kịch bản",editDialog:"Chỉnh sửa kịch bản"},scriptPlan:{title:"Kế hoạch quay",editDialog:"Chỉnh sửa kế hoạch quay"},storyboard:{title:"Bảng phân cảnh",notGenerated:"Chưa tạo",scaleRatio:"Tỷ lệ thu phóng",gridPreview:"Xem trước dạng lưới",noPreviewImages:"Không có ảnh để xem trước",imageLoadFailed:"Tải hình ảnh thất bại",promptPlaceholder:"Vui lòng nhập từ gợi ý",prompt:"lời nhắc",editInfo:"Sửa đổi từ nhanh chóng"},storyboardTable:{title:"Bảng danh sách phân cảnh",editDialog:"Chỉnh sửa bảng phân cảnh"},assets:{title:"Tài nguyên phái sinh",generateFailed:"Tạo thất bại",notGenerated:"Chưa tạo",originalAsset:"Tài nguyên gốc",derived:"Phái sinh",noDerivedAssets:"Không có tài nguyên phái sinh"},poster:{title:"Ảnh bìa video",coverCount:"{count} ảnh"},workbench:{title:"Bàn làm việc Video"}},editImage:{upload:"Tải lên",generate:"Tạo",saveFailed:"Lưu thất bại, vui lòng thử lại",fetchFailed:"Lấy dữ liệu thất bại",generating:"Đang tạo...",deleteNode:"Xóa Node",ratio:"Tỷ lệ",quality:"Chất lượng",generateBtn:"Tạo hình ảnh",selectImage:"Chọn hình ảnh",imageGeneration:"Tạo hình ảnh",promptPlaceholder:"Mô tả hình ảnh bạn muốn tạo...",imageRef:"Ảnh {index}",noReferences:"Không có ảnh tham khảo nào có thể sử dụng",selectModel:"Vui lòng chọn mô hình trước",selectQuality:"Vui lòng chọn chất lượng",selectRatio:"Vui lòng chọn tỷ lệ",generateFailed:"Tạo thất bại",generateFirst:"Vui lòng tạo hình ảnh trước",generatedResult:"Kết quả tạo",waitingGenerate:"Đang chờ tạo",layoutLR:"Bố cục tự động - Ngang",layoutTB:"Bố cục tự động - Dọc",uploadAssetImage:"Tải lên hình ảnh tài sản",uploadStoryboardImage:"Tải lên hình ảnh storyboard",uploadImage:"Tải lên hình ảnh nội dung",mode:"người mẫu",closeConfirmTitle:"Đóng bảng chỉnh sửa?",closeConfirmBody:"Dữ liệu chưa lưu sẽ bị mất sau khi đóng"},save:"Lựa chọn",cancel:"Hủy",chatBox:{inputPlaceholder:"Nhập tin nhắn...",generateDerivedAssets:"Tạo tài nguyên phái sinh",welcomeMessage:"Xin chào! Tôi là trợ lý AI của bạn, tôi có thể giúp gì cho bạn?",adjustModel:"Điều chỉnh mô hình",startMakingVideo:"Bắt đầu làm video",startMakingVideoPrompt:"Hãy giúp tôi bắt đầu làm video",clearMessageMemory:"Xóa bộ nhớ tin nhắn",clearSummaryMemory:"Xóa bộ nhớ tóm tắt",clearAllMemory:"Xóa tất cả bộ nhớ",messageMemory:"Bộ nhớ tin nhắn",summaryMemory:"Bộ nhớ tóm tắt",allMemory:"Tất cả bộ nhớ",confirmClear:"Xóa bộ nhớ",confirmClearBody:"Bạn có chắc chắn muốn xóa {type} không?",confirmClearBtn:"Xác nhận xóa",memoryCleared:"Đã xóa {type}"},wb:{quickPreview:"Xem trước nhanh",videoGeneration:"Bảng phân cảnh",videoEditing:"bàn biên tập",hint:"Gợi ý",extractLines:"Bạn có muốn trích xuất lời thoại từ video không?",no:"Không",confirm:"Xác nhận",extractLinesQuestion:"Bạn có muốn trích xuất lời thoại từ video làm phụ đề không?",importingLoading:"Đang nhập, vui lòng chờ...",mainTrackVideo:"Track chính (Video)",subtitle1:"Phụ đề 1",storyboardVideoName:"Video storyboard-{storyboard}.mp4"},preview:{noImage:"Chưa có hình ảnh",storyboardDesc:"Mô tả phân cảnh",serialNumber:"STT",noDescription:"Chưa có mô tả",duration:"Thời lượng",seconds:"giây",relatedAssets:"Tài nguyên liên quan",role:"Nhân vật",prop:"Đạo cụ",scene:"Cảnh",noCharacters:"Không có nhân vật xuất hiện",imagePrompt:"Lời nhắc hình ảnh",selectAll:"Chọn tất cả",exportImage:"Xuất hình ảnh",sceneDescription:"Mô tả khung hình",promptLabel:"Lời nhắc",restoreSort:"Khôi phục sắp xếp",restoreSortConfirm:"Bạn có chắc chắn muốn khôi phục về thứ tự sắp xếp ban đầu không?",tip:"Mẹo",selectAtLeastOne:"Vui lòng chọn ít nhất một phân cảnh để xuất",exportFilename:"Hình ảnh kịch bản"},generate:{noVideo:"Chưa có video",videoPrompt:"Lời nhắc video",promptPlaceholder:"Nhập từ gợi ý để mô tả nội dung video bạn muốn tạo...",refImage:"Ảnh tham khảo",image:"Hình ảnh",refVideo:"Video tham khảo",refImageLabel:"Hình ảnh tham khảo",refAudio:"Âm thanh tham khảo",muteAudio:"Tắt âm thanh",enableAudio:"Bật âm thanh",resolution:"Độ phân giải",duration:"Thời lượng",generate:"Tạo",historyVersions:"Phiên bản lịch sử",confirmSelection:"Xác nhận đã chọn",noHistory:"Chưa có lịch sử",generating:"Đang tạo",generateFailed:"Tạo thất bại",selectAll:"Chọn tất cả",videoTrack:"Track video",batchGenerate:"Tạo hàng loạt",importToEditor:"Nhập vào bàn dựng",modeSingleImage:"Ảnh đơn",modeMultiImage:"Nhiều ảnh",modeGridImage:"Lưới nhiều ảnh",modeStartEnd:"Khung hình đầu/cuối",modeText:"Văn bản -> Video",modeVideoRef:"Video tham khảo",modeImageRef:"Ảnh tham khảo",modeAudioRef:"Âm thanh tham khảo",modeTextRef:"Văn bản tham khảo",startFrame:"Khung hình đầu",startFrameOptional:"Khung hình đầu (Tùy chọn)",endFrame:"Khung hình cuối",endFrameOptional:"Khung hình cuối (Tùy chọn)",selectRefImage:"Chọn ảnh tham khảo",selectRefImages:"Chọn các ảnh tham khảo",selectEndFrame:"Chọn ảnh khung hình cuối",selectRefVideoAsset:"Chọn video tham khảo",selectRefAudioAsset:"Chọn âm thanh tham khảo",selectRefImageAsset:"Chọn ảnh tham khảo",selectImageSource:"Chọn nguồn hình ảnh",fromStoryboard:"Hình storyboard",fromStoryboardDesc:"Chọn hình từ danh sách storyboard",fromAssets:"Hình tài nguyên",fromAssetsDesc:"Chọn hình từ thư viện tài nguyên",confirmDelete:"Xác nhận xóa",confirmDeleteBody:"Bạn có chắc chắn muốn xóa video này không? Không thể hoàn tác thao tác này.",delete:"Xóa",cancel:"Hủy",deleteSuccess:"Xóa video thành công",deleteFailed:"Xóa thất bại",selectVideoFirst:"Vui lòng chọn một video trước",confirmSuccess:"Xác nhận chọn thành công",batchSubmitted:"Đã gửi yêu cầu tạo hàng loạt, đang xử lý...",configNotFound:"Cấu hình không tồn tại",pollingFailed:"Truy vấn trạng thái video không thành công, vui lòng làm mới theo cách thủ công",batchGeneratePrompt:"Tạo các từ nhắc nhở theo đợt",batchPromptEmpty:"Có sẵn bảng phân cảnh {name} cho lời nhắc bằng video. Vui lòng tạo hoặc điền vào lời nhắc trước",modelEmpty:"Trước tiên hãy chọn mô hình tạo video",generatingPrompt:"Tạo lời nhắc thông minh"},editVideo:{reset:"Đặt lại",undo:"Hoàn tác (Undo)",redo:"Làm lại (Redo)",split:"Cắt / Chia nhỏ",delete:"Xóa",rendering:"Đang kết xuất (Render)...",exportVideo:"Xuất Video",exportSuccess:"Đã xuất video hoàn tất",exportFailed:"Xuất video thất bại",sampleSubtitle:"Văn bản phụ đề mẫu",customText:"Nội dung văn bản tùy chỉnh",transitionBetweenClips:"Chuyển cảnh cần được thêm vào giữa 2 Đoạn video (Clip) liền kề",transitionExists:"Vị trí này đã có chuyển cảnh",videoPreviewArea:"Khu vực xem trước video",clipMaterials:"Tài liệu dựng phim",propertyPanel:"Bảng thuộc tính",selectClip:"Chọn một Đoạn video (Clip) để xem thuộc tính",basicInfo:"Thông tin cơ bản",name:"Tên",clipNamePlaceholder:"Tên Đoạn video",startTime:"Bắt đầu",endTime:"Kết thúc",totalDuration:"Tổng thời lượng",videoProperties:"Thuộc tính video",opacity:"Độ mờ",volume:"Âm lượng",playbackSpeed:"Tốc độ phát",audioProperties:"Thuộc tính âm thanh",fadeIn:"Fade in (Rõ dần)",fadeOut:"Fade out (Mờ dần)",transitionProperties:"Thuộc tính chuyển cảnh",transitionType:"Loại chuyển cảnh",transFade:"Làm mờ (Fade)",transSlide:"Trượt (Slide)",transWipe:"Gạt (Wipe)",transDissolve:"Hòa tan (Dissolve)",transZoom:"Thu phóng (Zoom)",transRotate:"Xoay (Rotate)",transitionDuration:"Thời lượng chuyển cảnh",subtitleProperties:"Thuộc tính phụ đề",textContent:"Nội dung văn bản",fontSize:"Cỡ chữ",copy:"Sao chép",deleteConfirm:"Xác nhận xóa",deleteClipConfirm:"Bạn có chắc chắn muốn xóa Đoạn video này không?",avCanvasNotInit:"AVCanvas chưa được khởi tạo",noExportContent:"Không có nội dung nào để xuất",exportProject:"Xuất dự án",transitionAdded:"Đã thêm chuyển cảnh: {name}",splitClip:"Cắt Đoạn video",deleteClip:"Xóa Đoạn video",addClip:"Thêm {name}",duplicateClip:"Nhân bản Đoạn video",addTransition:"Thêm chuyển cảnh",updateClip:"Cập nhật Đoạn video {key}",updatePlaybackRate:"Cập nhật tốc độ phát thành {rate}x",updateTransitionDuration:"Cập nhật thời lượng chuyển cảnh",playbackRateRange:"Tốc độ phát phải nằm trong khoảng từ 0.1 đến 10",updatePlaybackRateFailed:"Cập nhật tốc độ phát thất bại:",importProject:"Nhập dự án",import:"Nhập"},clipType:{video:"Video",audio:"Âm thanh",subtitle:"Phụ đề",transition:"Chuyển cảnh",sticker:"Nhãn dán",filter:"Bộ lọc",effect:"Hiệu ứng"},track:{video:"Video",image:"Hình ảnh",audio:"Âm thanh",subtitle:"Phụ đề",text:"Văn bản",sticker:"Nhãn dán",filter:"Bộ lọc",effect:"Hiệu ứng"},transition:{fade:"Làm mờ (Fade)",slide:"Trượt (Slide)",slideLeft:"Trượt sang trái",slideRight:"Trượt sang phải",slideUp:"Trượt lên trên",slideDown:"Trượt xuống dưới",wipe:"Gạt (Wipe)",wipeLeft:"Gạt sang trái",wipeRight:"Gạt sang phải",wipeUp:"Gạt lên trên",wipeDown:"Gạt xuống dưới",dissolve:"Hòa tan",zoom:"Thu phóng",zoomIn:"Phóng to",zoomOut:"Thu nhỏ",rotate:"Xoay",circle:"Hình tròn",diamond:"Hình thoi",clock:"Đồng hồ",blur:"Làm mờ (Blur)"},media:{titleText:"Văn bản tiêu đề",subtitleText:"Văn bản phụ đề",customText:"Văn bản tùy chỉnh",media:"Media (Phương tiện)",image:"Hình ảnh",audio:"Âm thanh",subtitle:"Phụ đề",transition:"Chuyển cảnh",effect:"Hiệu ứng",filter:"Bộ lọc",loading:"Đang tải...",subtitlePreview:"Chữ",video:"băng hình"},effect:{fadeIn:"Rõ dần",fadeOut:"Mờ dần",flash:"Chớp nháy",shake:"Rung lắc",zoomIn:"Phóng to vào",zoomOut:"Thu nhỏ ra",pulse:"Nhịp đập",rotateIn:"Xoay vào",sticker1:"Nhãn dán 1",sticker2:"Nhãn dán 2"},filter:{grayscale:"Đen trắng",sepia:"Cổ điển (Sepia)",warm:"Tone ấm",cool:"Tone lạnh",vivid:"Rực rỡ",bright:"Sáng sủa",highContrast:"Độ tương phản cao",blur:"Làm mờ",invert:"Đảo màu",semiTransparent:"Bán trong suốt"},guideSwitchEpisode:"Chuyển đổi tập",guideSwitchEpisodeBody:"Tính năng chuyển đổi tập đã được chuyển đến đây nhé!",autoLayoutLR:"Tự động sắp chữ-bố trí bên trái và bên phải",autoLayoutTB:"Tự động sắp chữ bố cục trên và dưới",getFlowData:"Làm mới không gian làm việc",confirm:"Xác nhận chuyển tập",confirmEpisodesSwitch:"Nhiệm vụ hiện tại vẫn đang được tiến hành. Việc chuyển các tập sẽ kết nối lại phiên. Bạn có muốn tiếp tục chuyển đổi không?"},task:{title:"Danh sách tác vụ",subtitle:"Nhật ký thực thi tác vụ mới nhất của bạn",refresh:"Làm mới",categoryLabel:"Loại tác vụ:",stateLabel:"Trạng thái:",noFailReason:"Chưa có lý do thất bại",stateAll:"Tất cả",stateRunning:"Đang tiến hành",stateCompleted:"Đã hoàn thành",stateFailed:"Tạo thất bại",fetchFailed:"Lấy danh sách tác vụ thất bại",col:{taskClass:"Loại tác vụ",relatedObjects:"Đối tượng liên quan",model:"Mô hình",describe:"Mô tả",state:"Trạng thái",startTime:"Thời gian",reason:"Lý do thất bại"},project:"Tên dự án:"},noVideo:"Chưa có video",prompt:"Lời nhắc video",generateText:"Lời nhắc do AI tạo ra",selectStoryboard:"Chọn bảng phân cảnh",generate:{noVideo:"Chưa có video",generateText:"Lời nhắc do AI tạo ra",selectStoryboard:"Chọn bảng phân cảnh",generate:"Tạo video",history:"Phiên bản lịch sử",generating:"Đang tạo",generateFailed:"thất bại",selectAll:"Chọn tất cả",selected:"Đã chọn",batchGenerateText:"Tạo các từ nhắc nhở theo đợt",batchGenerateVideo:"Tạo video hàng loạt",importVideo:"Nhập vào bàn chỉnh sửa",emptyTrack:"Đoạn {chỉ mục 1}",del:"xóa bỏ",delConfirm:"Bạn có chắc chắn muốn xóa đoạn này?",selectSource:"Chọn nguồn",confirm:"Chọn từ nội dung",cancel:"Chọn từ bảng phân cảnh",selectVideoFailed:"Lựa chọn video không thành công",selectVideoSuccess:"Lựa chọn video thành công",selectTrackFirst:"Vui lòng chọn bảng phân cảnh trước",noSelectedVideo:"Không có video nào được chọn",generateConfirm:"Xác nhận thế hệ",generateConfirmBody:"Xác nhận để tạo video",generateVideosInBatches:"Tạo video hàng loạt",generateStarted:"Bắt đầu xây dựng",promptEmpty:"Kiểm tra dữ liệu cần tạo video và từ nhắc trống. Bạn có muốn tiếp tục tạo nó không?",skipDataWithEmptyVideoPromptWords:"Dữ liệu video cần được tạo đã tồn tại và từ nhắc trống.",duration:"khoảng thời gian",resolution:"nghị quyết",delVideo:"Xác nhận xóa video này?",delSuccess:"Xóa thành công",addReference:"thêm tài liệu tham khảo",promptPlaceholder:"Vui lòng nhập từ nhắc video",downloadVideo:"Tải xuống video hàng loạt",selectVideo:"Vui lòng kiểm tra video bạn muốn tải xuống"}},F_i={slogan:"Nền tảng sáng tạo phim ngắn thông minh",tips:"Tài khoản mặc định: admin / admin123",settings:"Cài đặt máy chủ",requestAddress:"Địa chỉ yêu cầu",username:"Tên người dùng",password:"Mật khẩu",login:"Đăng nhập",usernameRequired:"Vui lòng nhập tên người dùng",passwordRequired:"Vui lòng nhập mật khẩu",enterUsernameAndPassword:"Vui lòng nhập tên người dùng hoặc mật khẩu",loginSuccess:"Đăng nhập thành công",settingsSaved:"Đã lưu cài đặt"},N_i={cancel:"Hủy",confirm:"Xác nhận",selectAssets:"Chọn tài sản",sessionExpired:"Phiên đã hết hạn, vui lòng đăng nhập lại",openSettings:"Mở cài đặt",cancelled:"Đã hủy tạo",defaultReel:"Tập chính",save:"cứu",submitting:"Đang gửi",editSuccess:"Sửa đổi thành công",editFailed:"Sửa đổi không thành công",submit:"nộp"},U_i={prompt:"lời nhắc"},j_i={welcomeTitle:"Chào mừng đến với ToonFlow",welcomeDesc:"Nền tảng quy trình tạo truyện tranh do AI điều khiển, chúng ta hãy dành một phút để hoàn thành cấu hình ban đầu.",startConfig:"Bắt đầu cấu hình",skip:"Bỏ qua khởi động",configModel:"Thêm dịch vụ mẫu",configData:"Cấu hình tác nhân",startUse:"Bắt đầu",configModelTitle:"Thêm nhà cung cấp dịch vụ mô hình",configModelDesc:"Trước tiên, bạn cần thêm ít nhất một nhà cung cấp dịch vụ mô hình AI (như OpenAI, Claude, v.v.) vào cài đặt và điền API Key tương ứng.",configModelTip:'Nhấp vào nút bên dưới sẽ mở tab "Dịch vụ mẫu" của trang cài đặt. Sau khi thêm nhà cung cấp, quay lại đây để tiếp tục.',configModelBtn:"Đi tới cấu hình dịch vụ mô hình",configAgentTitle:"Chỉ định mô hình đại lý",configAgentDesc:"Tiếp theo, gán mô hình cho từng mô-đun chức năng trong cấu hình Tác nhân để hệ thống biết cần gọi mô hình nào để hoàn thành nhiệm vụ.",configAgentTip:'Nhấp vào nút bên dưới sẽ mở tab "Cấu hình tác nhân" của trang cài đặt. Quay lại đây sau khi gán mô hình cho từng chức năng.',configAgentBtn:"Đi tới cấu hình Đại lý",finishTitle:"🎉 Mọi thứ đã sẵn sàng!",finishDesc:"Cấu hình đã hoàn tất và bây giờ bạn có thể bắt đầu sử dụng tất cả các tính năng. Nếu bạn cần điều chỉnh nó, bạn có thể sửa đổi nó trong cài đặt bất cứ lúc nào.",qrcodeLabel:"Tham gia nhóm liên lạc WeChat để nhận thêm trợ giúp:",githubLabel:"Nếu bạn thấy nó hữu ích, vui lòng cho chúng tôi ⭐ Sao!",prevStep:"Bước trước",nextStep:"Bước tiếp theo",finish:"Bắt đầu"},W_i={skillManagement:{search:"Tìm kiếm tên tập tin",empty:"Không có tập tin phù hợp",edit:"biên tập",selectOnTheLeft:"Vui lòng chọn một tập tin từ bên trái"}},V_i={assets:{notExist:"Tài sản không tồn tại",notDerivativeExist:"Tài sản phái sinh không tồn tại",derivativeUpdateSuccess:"Cập nhật thành công",derivativeState:"Không được tạo",derivativeAddSuccess:"Đã thêm thành công",derivativeDelSuccess:"Xóa thành công",notGenerated:"Không được tạo"},addSuccess:"Cập nhật thành công",state:{unused:"Không được tạo"},saveSuccess:"Đã thêm thành công"},z_i={generating:"Đang tạo"},H_i={scanning:"🔍 Phân tích và tải Skill",scanComplete:"✨ Quét Skill hoàn tất",inserted:"✅ Đã thêm kỹ năng {count}",updated:"🔄 Cập nhật {count} kỹ năng",removed:"🗑️ Xóa {count} Skill",scannedFiles:"📁 Đã quét {count} tệp",noDescription:"📝 {count} Skill thiếu mô tả",noAttribution:"👤 {count} Skill thiếu thông tin tác giả",configWarning:"⚠️ Cảnh báo cấu hình Skill",openSettings:"Mở cài đặt",scanFailed:"❌ Quét thất bại",checkNetwork:"🔌 Vui lòng kiểm tra kết nối mạng hoặc thử lại sau",retryLater:"🔁 Vui lòng thử lại sau"},$_i="Tạo video",X_i="Phiên bản lịch sử",G_i="Đang tạo",Y_i="thất bại",Z_i="Chọn tất cả",q_i="Đã chọn",K_i="Nhập video",J_i="Đoạn {chỉ mục 1}",eSi="Xác nhận xóa",tSi="Bạn có chắc chắn muốn xóa đoạn này?",nSi="Chọn nguồn",iSi="Chọn từ nội dung",rSi="Chọn từ bảng phân cảnh",oSi={newVersion:"Có phiên bản mới, bạn có muốn cập nhật không?"},sSi={components:I_i,settings:M_i,workbench:P_i,login:F_i,common:N_i,"components.storyboardImageCheck.camera":"Máy quay","components.storyboardImageCheck.dialogTitle":"Chọn hình storyboard","components.storyboardImageCheck.preview":"Xem trước","components.storyboardImageCheck.src":"Ảnh xem trước","components.storyboardImageCheck.title":"Tiêu đề","components.storyboardImageCheck.duration":"Thời lượng","components.storyboardImageCheck.lines":"Lời thoại","components.storyboardImageCheck.createTime":"Thời gian tạo","workbench.script.extractAssets":"Trích xuất tài sản",promptManage:U_i,hello:j_i,setting:W_i,storyboard:V_i,productionAgent:z_i,skillScan:H_i,generate:$_i,history:X_i,generating:G_i,generateFailed:Y_i,selectAll:Z_i,selected:q_i,importVideo:K_i,emptyTrack:J_i,del:eSi,delConfirm:tSi,selectSource:nSi,confirm:iSi,cancel:rSi,"workbench.script.msg.exportFailed":"Xuất không thành công","workbench.production.node.assets.confirmDeleteBody":"Xác nhận xem có xóa nội dung hay không","workbench.production.node.assets.removeFailed":"Không thể xóa nội dung",version:oSi,"workbench.production.generatedNode.localUpload":"Tải lên cục bộ","workbench.production.editImage.uploadFailed":"Tải hình ảnh lên không thành công","workbench.production.editImage.noImage":"Vui lòng thêm hình ảnh trước"},aSi={editMdPreivew:{title:"編集",confirm:"保存",cancel:"キャンセル"},imageTools:{copy:"画像をコピー",preview:"プレビュー",download:"ダウンロード",msg:{imageLoadFailed:"画像の読み込みに失敗しました",convertFailed:"変換に失敗しました",copied:"クリップボードにコピーしました",copyFailed:"コピーに失敗しました",downloadFailed:"ダウンロードに失敗しました",downloadStarted:"ダウンロードを開始します",downloadBlockedOpenNewWindow:"現在の画像ソースでダウンロードが制限されている可能性があるため、新しいウィンドウで開きました"}},migrateShow:{title:"データの移行",desc:"旧バージョンのデータが検出されました。データを移行しますか?",hide:"今後表示しない",confirm:"確定",msg:{migrateSuccess:"データの移行に成功しました",migrateFailed:"データの移行に失敗しました"}},modelSelect:{placeholder:"モデルを選択してください",type:{image:"画像",text:"テキスト",video:"動画"},msg:{fetchModelFailed:"モデルデータの取得に失敗しました:"},goSetting:"設定に移動してモデルを追加します"}},lSi={title:"ToonFlow 設定",menu:{language:"言語設定",vendorConfig:"モデルサービス",agentConfig:"Agent 設定",promptManage:"プロンプト管理",skillManagement:"スキル管理",memoryConfig:"Agent メモリ設定",loginConfig:"ログイン設定",dbConfig:"データベース操作",fileManagement:"ファイル管理",otherConfig:"その他の設定",requestConfig:"リクエストURL",about:"アップデートの確認",logoutConfig:"ログアウト",skillsSkillsManagement:"スキルスキル管理"},language:{desc:"インターフェースの表示言語を選択します",msg:{saved:"言語設定を保存しました"}},vendor:{addVendor:"プロバイダーを追加",noVendor:"プロバイダーがありません。先に追加してください",required:"必須",optionalSection:"任意項目",modelSettings:"モデル設定",addManually:"手動追加",test:"テスト",edit:"編集",delete:"削除",deleteVendor:"プロバイダーを削除",editCode:"コードを編集",updateConfig:"設定を更新",addModel:"モデルを追加",editModel:"モデルを編集",displayName:"表示名",displayNamePlaceholder:"例:GPT-4o",modelId:"モデルID",modelIdPlaceholder:"例:gpt-4o",modelType:"モデルタイプ",multimodal:"マルチモーダル",supported:"対応",notSupported:"非対応",toolCall:"ツール呼び出し",imageMode:"画像モード",videoMode:"動画モード",audioOutput:"音声出力",durationResolution:"デュレーション/解像度マッピング",durationSec:"デュレーション(秒)",resolution:"解像度",enterAndPress:"入力してEnterを押す",addDurationResolution:"デュレーションと解像度を追加",testResult:"テスト結果",generating:"生成中...",addVendorDialog:"プロバイダーの追加",codeEditorInfo:"プロバイダー情報の設定にはTypeScriptコードを記述してください",reset:"リセット",importFile:"ファイルをインポート",textModel:"テキストモデル",imageModel:"画像モデル",videoModel:"動画モデル",textToImage:"テキストから画像生成",textToVideo:"テキストから動画生成",singleImage:"単一画像",multiImage:"複数画像モード",multiReference:"複数画像参照",gridImage:"グリッド単一画像",startEndRequired:"開始・終了フレーム(両方必須)",endFrameOptional:"開始・終了フレーム(終了フレームは任意)",startFrameOptional:"開始・終了フレーム(開始フレームは任意)",textRef:"テキスト",imageRef:"画像",videoRef:"動画",audioRef:"音声",audioOptional:"任意",audioOnly:"音声付き動画のみ出力",noAudio:"無音動画のみ出力",msg:{getVendorListFailed:"プロバイダーリストの取得に失敗しました",vendorConfigUpdated:"プロバイダー設定を更新しました",updateFailed:"更新に失敗しました",highRiskConfirm:"⚠️ 高リスク操作の確認",addVendorRiskBody:"新しいAIプロバイダーを追加すると、システムAPIへのアクセス権が付与されます。プロバイダーのコードソースが信頼できるか確認してください!",iKnowRisk:"リスクを承知しました",cancel:"キャンセル",confirmAgain:"⚠️ 再確認",addVendorConfirmBody:"本当にこのプロバイダーを追加しますか?追加後、システムのモデルスケジューリングに組み込まれます。",confirmAndAdd:"確認して追加",goBackCheck:"戻って確認",vendorAdded:"プロバイダーが正常に追加されました",addFailed:"追加に失敗しました",updateVendorRiskBody:"AIプロバイダー設定を更新すると、システムAPIへのアクセス権と動作が変更されます。変更後のコードソースが信頼できるか確認してください!",updateVendorConfirmBody:"本当にこのプロバイダー設定を更新しますか?更新後、システムのモデルスケジューリングに影響します。",confirmAndUpdate:"確認して更新",updateSuccess:"プロバイダー設定の更新に成功しました",fillDisplayName:"表示名を入力してください",fillModelId:"モデルIDを入力してください",selectImageMode:"画像モードを選択してください",selectVideoMode:"動画モードを選択してください",groupPrefix:"第 {n} グループ:",addDuration:"デュレーションを追加してください",addResolution:"解像度を追加してください",selectVendorFirst:"先にプロバイダーを選択してください",modelIdExists:"モデルIDが既に存在します",modelAdded:"モデルが正常に追加されました",modelUpdated:"モデルが正常に更新されました",enterApiKey:"API KEY を入力してください",enterApiUrl:"API URL を入力してください",testSuccess:"テスト成功",imageGenSuccess:"画像の生成に成功しました",videoGenSuccess:"動画の生成に成功しました",requestFailed:"リクエストに失敗しました",deleteModelConfirm:"モデルの削除確認",deleteModelBody:"削除後は元に戻せません。続行しますか?",confirmDelete:"削除を確認",modelDeleted:"モデルを削除しました",deleteVendorConfirm:"プロバイダーの削除確認",deleteVendorBody:"削除すると、このプロバイダーのすべてのモデルも一緒に削除されます。続行しますか?",vendorDeleted:"プロバイダーを削除しました",deleteFailed:"削除に失敗しました",enabled:"有効",disabled:"無効",linkAddVendorRiskBody:"新しい AI ベンダーを追加すると、システム API にアクセスできるようになります。ベンダーのリンク ソースが信頼できることを確認してください。",importAdd:"新しい AI ベンダーを追加すると、システム API にアクセスできるようになります。ベンダーのドキュメント ソースが信頼できることを確認してください。",linkAddFailed:"リンクの追加に失敗しました"},associationSkills:"関連スキル",think:"深い考え",code:"コード",linkAddPlaceholder:"追加するリンクを入力してください",noFileSelected:"ファイルは正常にインポートされました",linkAdd:"確認する"},agent:{bannerDesc:"Toonflow公式中継サイトを使用すると、設定をワンクリックで入力でき、手動設定なしですぐに使用できます。",visitWebsite:"サイトへ移動",fillKey:"KEYを入力",oneClickFill:"ワンクリック入力",notOpen:"未公開",notConfigured:"未設定",modelConfig:"モデル設定",confirm:"確定",cancel:"キャンセル",selectModel:"モデルを選択",fillKeyHeader:"Toonflowプラットフォームの公式KEYを入力",keyPlaceholder:"KEYを入力してください",save:"保存",msg:{notAvailable:"この機能は現在準備中です。ご期待ください",configSuccess:"設定に成功しました",updateConfigFailed:"設定の更新に失敗しました:",keyValid:"KEYが有効です。Toonflowプラットフォームに接続しました",keyInvalid:"KEYが無効です。確認して再入力してください:",enterKey:"KEYを入力してください",saveFailed:"保存に失敗しました:",getAgentListFailed:"Agent設定リストの取得に失敗しました:",toonflowNotFound:"トゥーンフロー公式乗換駅は存在しない"}},memory:{warning:"以下の設定項目には推奨値がプリセットされています。各設定の意味と影響を明確に理解していない限り、現在の設定を維持することをお勧めします。",vectorModelConfig:"ベクトルモデル設定",modelFilePath:"モデルファイルパス",quantizationType:"量子化タイプ",quantizationPlaceholder:"量子化タイプを入力してください",memoryParams:"メモリパラメータ",messagesPerSummary:"メッセージ圧縮トリガー件数",messagesPerSummaryHelp:"直近 N 件の会話コンテキストを保持します。",shortTermLimit:"単発取得の未圧縮メッセージ数",shortTermLimitHelp:"検索時に返される候補メモリの件数です。",summaryMaxLength:"要約最大文字数",summaryMaxLengthHelp:"メッセージ圧縮時に許容される最大文字数です。",summaryLimit:"検索可能な圧縮メッセージ数",summaryLimitHelp:"検索可能な圧縮メッセージの件数です。",ragLimit:"検索メモリ件数",ragLimitHelp:"検索時に取得するメッセージ数です。",deepRetrieveSummaryLimit:"ベクトル検索の圧縮メッセージ数",deepRetrieveSummaryLimitHelp:"圧縮メッセージ内容を検索する際に取得するメッセージ数です。",saveConfig:"設定を保存",clearMemory:"メモリをクリア",restoreDefault:"デフォルトに戻す",msg:{saved:"メモリ設定を保存しました",clearConfirmTitle:"メモリのクリア確認",clearConfirmBody:"AIのグローバルメモリデータがクリアされ、元に戻せなくなります。続行しますか?",confirmClear:"クリアを確認",cancel:"キャンセル",cleared:"メモリをクリアしました",clearFailed:"メモリのクリアに失敗しました"}},login:{username:"ユーザー名",usernamePlaceholder:"ユーザー名を入力してください",password:"パスワード",passwordPlaceholder:"パスワードを入力してください",modify:"変更",msg:{enterUsername:"ユーザー名を入力してください",usernameLength:"ユーザー名は2〜20文字である必要があります",enterPassword:"パスワードを入力してください",passwordLength:"パスワードは6〜20文字である必要があります",fetchFailed:"ユーザー情報の取得に失敗しました",saveSuccess:"保存に成功しました",saveFailed:"保存に失敗しました"}},db:{clearDb:"データベースをクリア",clearDbDesc:"データ構造を保持し、全テーブルのデータをクリアします",clearData:"データをクリア",confirmAction:"操作の確認",msg:{clearDbTitle:"データベースのクリア",firstConfirm:"本当にすべてのテーブルをクリアしますか?クリアしたデータは復元できません!",secondConfirm:"これが最後の確認です。クリアするとすべてのデータが永久に失われます!",keyword:"クリア",confirm:"確定",pleaseInput:"入力してください",cleared:"すべてのテーブルをクリアしました",operationFailed:"操作に失敗しました。再試行してください",cancelled:"操作がキャンセルされました"}},other:{requestTimeout:"リクエストタイムアウト",seconds:"秒",inputSeconds:"秒を入力してください",assetConcurrency:"アセット生成の同時実行数",count:"個",inputCount:"個数を入力してください",chapterRegex:"章分割の正規表現",restoreDefault:"デフォルトに戻す",regexPlaceholder:"正規表現を入力してください",showTitleBar:"タイトルバーを表示する",isElectron:"デスクトップモードに切り替える",canvasScroll:"キャンバススクロール",canvasIsDisabled:"キャンバスのズーム",agentCanvasScalingMethod:"制作ページでの無制限のキャンバス ホイール操作",zoom:"ズーム",scroll:"スクロール",isInteracting:"制作ページでの無制限のキャンバス ドラッグ パフォーマンスの最適化",closeIsInteracting:"閉鎖"},request:{warning:"特別な理由がない限り、変更や設定は不要です",apiAddress:"API アドレス",apiPlaceholder:"API リクエストアドレスを入力してください",save:"保存",reset:"リセット",msg:{enterApi:"API アドレスを入力してください",validUrl:"有効な HTTP/HTTPS アドレスを入力してください",saved:"リクエストアドレスを保存しました",reset:"デフォルトアドレスにリセットしました",refreshFailed:"更新に失敗しました"},refresh:"リフレッシュする"},about:{slogan:"オープンソースのAI主導コミック/絵コンテ制作ツール",latestVersion:"現在は最新バージョンです",checkUpdate:"アップデートの確認",codeRepository:"コードリポジトリ",githubRepo:"GitHub リポジトリ",giteeRepo:"Gitee リポジトリ",versionUpdate:"バージョンアップデート",checkUpdateGithub:"アップデート確認 (GitHub)",getFromGithub:"GitHub Releaseから最新版を取得",checkUpdateGitee:"アップデート確認 (Gitee)",getFromGitee:"Gitee Releaseから最新版を取得",license:"ライセンス",licenseDesc:"オープンソースライセンス・クリックして詳細を確認",updateAvailable:"新しいバージョンが見つかりました",upToDate:"新しいバージョンが検出されました"},logout:{warning:"ログアウト後、システムを継続して使用するには再ログインが必要です。",confirmLogout:"本当にログアウトしますか?",logout:"ログアウト",msg:{logoutSuccess:"ログアウトに成功しました",logoutFailed:"ログアウトに失敗しました。再試行してください"}},file:{quickOpen:"ディレクトリをすばやく開く",open:"開く",dockerDesc:"Docker / フロント・バックエンド分離デプロイの場合は、「/data/*」ディレクトリに移動して手動でファイルを管理してください。",desktopOnly:"この機能はデスクトップ版のみ対応しています",folders:{data:"data",dataDesc:"データディレクトリ。",logs:"data/logs",logsDesc:"実行ログとエラーログ。",oss:"data/oss",ossDesc:"ファイルストレージ関連リソース。",skills:"data/skills",skillsDesc:"スキルとプロンプト設定ファイル。",models:"data/models",modelsDesc:"モデルファイルと設定。",web:"data/web",webDesc:"Web関連リソース(フロントエンドビルド成果物など)。",serve:"data/serve",serveDesc:"バックエンドサービス関連ファイル。"},openFailed:"フォルダを開けませんでした"},skill:{scanSkills:"スキャンスキル",fileLost:"ファイルがありません"},dev:{warning:"以下は開発者ツールです。注意して操作してください。",openDevtool:"開ける",devtoolsDoc:"書類のアドレス",devtoolsDesc:"オンにすると、Toonflow のインストール ディレクトリに .devtools フォルダーが作成されます。 Toonflow に書き込み権限があることを確認してください (管理者として実行)。",devtoolsDesc2:"このディレクトリで npx {'@'}ai-sdk/devtools を実行して、テレメトリのデバッグを有効にします",openDevtoolFailed:"開発者ツールを開けませんでした。Toonflow デスクトップがインストールされていることを確認してください",notInElectron:"WEB環境の場合はブラウザコンソールを手動で開いてください"}},cSi={selectProject:"プロジェクトを選択してください",menu:{myProject:"マイプロジェクト",taskCenter:"タスクセンター",novel:"小説の原文",scriptAgent:"シナリオ Agent",scriptManage:"シナリオ管理",cornerScape:"キャラ・背景制作",production:"動画制作",assetCenter:"アセットセンター",settings:"設定",jumpGithub:"Githubにジャンプ",feedbackQuestions:"フィードバックの質問"},project:{title:"マイプロジェクト",subtitle:"すべてのショートドラマプロジェクトを管理します",newProject:"新規プロジェクト",dialog:{editTitle:"プロジェクトの編集",addTitle:"新規プロジェクト",save:"保存",ok:"確定",cancel:"キャンセル",projectType:"プロジェクトタイプ",selectType:"プロジェクトタイプを選択",basedOnNovel:"小説の原文に基づく",projectName:"プロジェクト名",projectNamePh:"プロジェクト名を入力してください",novelType:"小説のジャンル",novelTypePh:"例:ファンタジー、SF、恋愛",artStyle:"ビジュアルマニュアル",selected:"選択済み:",selectArtStyle:"ビジュアルマニュアルを選択してください",newArtStyle:"新しいビジュアルマニュアル",loading:"読み込み中...",videoRatio:"画面アスペクト比",novelIntro:"小説のあらすじ",novelIntroPh:"あらすじを入力してください",editArtStyleTitle:"ビジュアルマニュアルの編集",newArtStyleTitle:"新しいビジュアルマニュアル",artStyleName:"ビジュアルマニュアル名",artStyleNamePh:"ビジュアルマニュアル名を入力してください",artStyleImage:"ビジュアルマニュアルカバー",remove:"削除",uploadCover:"カバーをアップロード",artStylePrompt:"ビジュアルマニュアルのプロンプトワード",aiExtract:"AI プロンプト抽出",promptPlaceholder:"画像生成時にビジュアルマニュアルを指定するために使用されるビジュアルマニュアルプロンプトワードについて説明します。",visualManual:"ビジュアルマニュアル",newVisualManual:"新しいビジュアルマニュアル",editVisualManualTitle:"ビジュアルマニュアルの編集",newVisualManualTitle:"新しいビジュアルマニュアル",visualManualName:"ビジュアルマニュアル名",visualManualNamePh:"ビジュアルマニュアル名を入力してください",visualManualCover:"ビジュアルマニュアルカバー",visualManualPrompt:"ビジュアルマニュアルのプロンプト",modelData:"画像モデルの選択",videoModelData:"ビデオモデルを選択してください",prompt:{placeholder:"プロンプトの単語を入力してください",saveSuccess:"更新に成功しました",title:"即効性のある言葉"},basedOnScript:"脚本に基づいて",mdFile:"ビジュアルマニュアルファイル",directorManual:"ディレクターズハンドブック",addDirectorManual:"新しいディレクターマニュアル",editingDirectorManual:"ディレクターズマニュアルを編集する",newDirecorManualTitle:"新しいディレクターマニュアル",directorManualPrompt:"ディレクターズマニュアル プロンプトワード",directorManualName:"ディレクターズマニュアル名",directorManualNamePh:"ディレクターズマニュアル名を入力してください",directorFile:"ディレクターズマニュアル文書",directorManualCover:"ディレクターズマニュアルの表紙"},msg:{fetchFailed:"プロジェクトリストの取得に失敗しました",notFound:"プロジェクトが見つかりません!",editSuccess:"プロジェクトを編集しました",editFailed:"プロジェクトの編集に失敗しました",addSuccess:"プロジェクトを新規作成しました",addFailed:"プロジェクトの作成に失敗しました",deleteHeader:"プロジェクトの削除",deleteBody:"本当にこのプロジェクトを削除しますか?",deleteConfirm:"削除",deleteCancel:"キャンセル",deleteSuccess:"プロジェクトを削除しました",deleteFailed:"プロジェクトの削除に失敗しました",extractSuccess:"プロンプトの抽出に成功しました",extractFailed:"抽出に失敗しました",enterArtStyleName:"ビジュアルマニュアル名を入力してください",artStyleUpdated:"ビジュアルマニュアルを更新しました",artStyleAdded:"ビジュアルマニュアルを追加しました",operationFailed:"操作に失敗しました",enterVisualManualName:"ビジュアルマニュアル名を入力してください",enterVisualManualImage:"ビジュアルマニュアルのカバー画像をアップロードしてください",enterVisualManualTabData:"プロンプトは空にできません",visualManualUpdated:"ビジュアルマニュアルを更新しました",visualManualAdded:"ビジュアルマニュアルを追加しました",deleteVisualManualHeader:"ビジュアルマニュアルを削除",deleteVisualManualBody:"ビジュアルマニュアル「{name}」を削除してよろしいですか?",deleteVisualManualConfirm:"削除",deleteVisualManualCancel:"キャンセル",enterProjectName:"プロジェクト名を入力してください",enterProjectIntro:"小説の紹介文を入力してください",enterProjectType:"プロジェクトのタイプを入力してください",enterArtStyle:"プロジェクトのビジュアルパンフレットを選択してください",enterVideoRatio:"ビデオ比率を選択してください",enterImageModel:"画像モデルを選択してください",enterVideoModel:"ビデオモデルを選択してください",visualManualDeleted:"正常に削除されました",selectMode:"モードを選択してください",deleteDirectorManualHeader:"ディレクターズマニュアルの削除",deleteDirectorManualBody:"ディレクターズマニュアル「{名前}」を削除してもよろしいですか?",directorManualUpdated:"ディレクターズマニュアルを更新しました",directorManualAdded:"ディレクターズマニュアルを追加しました",directorManual:"プロジェクトディレクターズマニュアルを選択してください"},type:{novel:"原作小説に基づいて",script:"小説の脚本に基づく"}},novel:{importText:"原文をインポート",batchDelete:"一括削除",eventAnalysis:"イベント分析",searchPlaceholder:"原文の名前を検索...",search:"検索",generating:"生成中...",genFailed:"生成失敗",none:"なし",edit:"編集",delete:"削除",col:{id:"No.",reel:"巻",chapter:"章名",chapterData:"章の内容",event:"イベント",operation:"操作"},msg:{batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のデータを削除してもよろしいですか?",batchDeleteSuccess:"一括削除に成功しました",deleteHeader:"削除の確認",deleteBody:"章名「{name}」のデータを削除してもよろしいですか?",deleteSuccess:"削除に成功しました",eventAnalysisHeader:"イベント分析",eventAnalysisBody:"選択した {count} 件のデータのイベント分析を実行してもよろしいですか?"},import:{title:"小説の原文をアップロード",step1:"ステップ 1",step2:"ステップ 2",step3:"ステップ 3",dragUpload:"ここに小説ファイルをドラッグ&ドロップするか、クリックしてアップロード",uploadHint:"対応形式: .txt, .docx。ファイルサイズは10MB以下を推奨します",or:"または",pasteLabel:"小説の原文を直接貼り付け",pastePlaceholder:"小説の原文を入力してください",chars:"文字",tooShort:"内容が短すぎます。100文字以上を推奨します",parsedChapters:"{count} 章を解析しました",nextStep:"次へ",prevStep:"戻る",selectedInfo:"選択済み:{count} 文字 (200,000文字以内)",eventAnalysis:"イベント分析",saveAndAnalyze:"原文を保存してイベントを分析",col:{chapter:"章",reel:"巻",chapterName:"章名",chapterData:"章の内容"},msg:{parseFailed:"ファイルの解析に失敗しました。再アップロードしてください",selectFile:"ファイルを選択",docNotSupported:".doc ファイルは解析をサポートしていません。.ts ファイルに変換してください。",unsupportedType:"未対応のファイル形式です",fileTooLarge:"ファイルサイズが10MBを超えています。より小さなファイルをアップロードしてください",selectChapters:"先に章を選択してください",saveSuccess:"小説の原文を保存しました"},importAdd:"ここにファイルをドラッグ アンド ドロップするか、クリックしてアップロードします",limit:".ts形式をサポート"},editDialog:{title:"小説の原文を編集",chapterName:"章名",chapterNamePh:"章名を入力してください",eventContent:"イベント内容",eventContentPh:"イベント内容を入力してください",chapterContent:"章の内容",chapterContentPh:"章の内容を入力してください",cancel:"キャンセル",save:"保存",msg:{updateSuccess:"小説の原文を更新しました"}},event:{regenerate:"イベントを再生成",batchDelete:"一括削除",noData:"イベントデータがありません。生成を開始してください",generate:"イベントを生成",generatingHint:"イベント生成中。しばらくお待ちください...",loading:"読み込み中...",delete:"削除",col:{id:"イベントID",eventName:"イベント名",chapters:"元の章",detail:"イベントのプロセス",createTime:"作成時間",operation:"操作"},msg:{deleteHeader:"イベントの削除",deleteBody:"このイベントを削除してもよろしいですか?",deleteSuccess:"削除に成功しました",generateSuccess:"イベントの生成に成功しました",batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のデータを削除してもよろしいですか?",batchDeleteSuccess:"一括削除に成功しました"}},analysis:{analyzeFirst:"先にイベントを分析してください",startAnalysis:"分析を開始",chapterHeader:"第{index}章 - {name}",analyzing:"イベント分析中"}},scriptAgent:{inputPlaceholder:"内容を入力してください",chapterEvents:"章のイベント",clearMessageMemory:"メッセージメモリをクリア",clearSummaryMemory:"要約メモリをクリア",clearAllMemory:"すべてのメモリをクリア",edit:"編集",storySkeleton:"ストーリーの骨格",adaptationStrategy:"脚色戦略",script:"シナリオ",noContent:"コンテンツがありません",relatedAssets:"関連アセット",editScript:"シナリオを編集",save:"保存",scriptTitle:"タイトル",titlePlaceholder:"タイトルを入力してください",content:"内容",contentPlaceholder:"シナリオの内容を入力してください",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",selectAssetsTitle:"関連アセットの選択",welcomeMsg:"こんにちは!Toonflow アシスタントです。シナリオの生成を開始しましょうか?",start:"開始",memoryType:{message:"メッセージメモリ",summary:"要約メモリ",all:"すべてのメモリ"},msg:{clearConfirm:"クリアを確認",clearBody:"{type}をクリアしてもよろしいですか?この操作は取り消せません。",confirmClear:"クリアを確認",cancel:"キャンセル",memoryCleared:"{type}をクリアしました",scriptUpdated:"シナリオの更新に成功しました",scriptUpdateFailed:"シナリオの更新に失敗しました。後で再試行してください",searchScriptFailed:"シナリオの検索に失敗しました",updated:"正常に保存されました",error:"保存に失敗しました",reconnect:"再接続",notReconnect:"再接続の会話が切断されることを確認しますか?",keepReconnect:"確認する",deleteConfirm:"削除確認",deleteBody:"テキストの削除",confirmDelete:"削除の確認",scriptDeleted:"スクリプトが削除されました"},reconnect:"再接続"},cornerScape:{batchSettings:"一括生成設定",quickActions:"クイックコマンド",selectUngenerated:"未生成をすべて選択",selectGenerated:"生成済みをすべて選択",selectFailed:"エラーをすべて選択",invertSelection:"選択を反転",clearSelection:"選択を解除",batchPreview:"画像の一括プレビュー",assetTypeFilter:"アセットタイプで絞り込み",genModel:"生成モデル",resolution:"解像度",resolutionPh:"解像度を選択してください",concurrency:"同時実行数",concurrencyPh:"同時実行数を入力してください",startBatch:"バッチでイメージの生成を開始する",waitingGen:"生成待ち",generating:"生成中",genFailed:"生成失敗",imageError:"画像エラー",typeRole:"キャラクター",typeScene:"シーン",typeTool:"小道具",typeUnknown:"不明",descriptionSuffix:"説明:",operateScriptFirst:"先にシナリオを操作してください",individualConfig:"個別設定",noImage:"画像がありません",promptLabel:"プロンプト",promptPh:"プロンプトを入力してください",aiPolish:"AI で推敲",regenerate:"再生成",filterRole:"人物",filterScene:"シーン",filterTool:"小道具",unnamed:"無名",noDescription:"説明なし",msg:{selectModel:"生成モデルを選択してください",selectResolution:"解像度を選択してください",enterPrompt:"プロンプトを入力してください",enterPromptFirst:"先にプロンプトを入力してください",genSuccess:"{name} の生成に成功しました",genFailed:"{name} の生成に失敗しました",promptGenSuccess:"プロンプトの生成に成功しました",polishFailed:"推敲に失敗しました。再試行してください",selectAtLeastOne:"一括生成するアセットを少なくとも1つ選択してください",batchStarted:"一括生成を開始しました。全 {count} 件、同時実行数 {concurrent}",batchItemFailed:"{name} の生成に失敗しました:{error}",batchComplete:"一括生成が完了しました",batchFailed:"バッチ生成に失敗しました",replaceFailed:"交換に失敗しました",replaceSuccess:"交換に成功しました",promptGenFail:"プロンプト単語の生成に失敗しました",saveSuccess:"プロンプトワードの変更が成功しました",saveFailed:"プロンプトワードの変更に失敗しました"},history:"歴史的な写真",confirmReplace:"交換の確認",batchGenerationPrompt:"プロンプト単語をバッチで生成する",generatingPrompt:"生成中",selectPromptEmpty:"プロンプトの単語が空であることをすべて選択してください",noEmptyPrompt:"空のプロンプトワードを含むアセットはありません",selectedCount:"{count} 個のアセットが選択されました"},script:{searchPlaceholder:"シナリオ名を検索...",search:"検索",addScript:"シナリオを新規作成",cancelSelectAll:"全選択を解除",selectAll:"すべて選択",exportScript:"シナリオをエクスポート",msg:{searchFailed:"シナリオの検索に失敗しました",selectExport:"先にエクスポートするシナリオを選択してください",exportSuccess:"エクスポートに成功しました",exportFailed:"シナリオのエクスポートに失敗しました",deleteHeader:"削除の確認",deleteBody:"このシナリオを削除してもよろしいですか?この操作は取り消せません。",deleteConfirm:"削除",cancel:"キャンセル",deleteSuccess:"削除に成功しました",deleteFailed:"削除に失敗しました",selectDelScript:"スクリプトを削除することを選択してください",batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のシナリオを削除してもよろしいですか?この操作は取り消せません。",batchDeleteSuccess:"一括削除に成功しました",extractingInProgress:"抽出中",projectNotFound:"アイテムが見つかりません",selectsExport:"スクリプトをエクスポートすることを選択してください"},add:{title:"シナリオの追加",scriptName:"シナリオ名",scriptNamePh:"シナリオ名を入力してください",uploadFile:"ファイルをアップロード",dragUpload:"ここにシナリオファイルをドラッグ&ドロップするか、クリックしてアップロード",uploadHint:"対応形式: .txt, .docx。ファイルサイズは10MB以下を推奨します",scriptContent:"シナリオ内容",scriptContentPh:"シナリオ内容をアップロードまたは入力してください...",relatedAssets:"関連アセット",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",cancel:"キャンセル",confirm:"確定",msg:{fileReadFailed:"ファイルの読み取りに失敗しました",docNotSupported:".docファイルの解析は未対応です。.txtまたは.docx形式に変換してください",unsupportedType:"未対応のファイル形式です",fileTooLarge:"ファイルサイズが10MBを超えています。より小さなファイルをアップロードしてください",parsing:"ファイルを解析中...",parseFailed:"ファイルの解析に失敗しました。再アップロードしてください",selectAssetsTitle:"関連アセットの選択",enterContent:"シナリオ内容をアップロードまたは入力してください",enterName:"シナリオ名を入力してください",addSuccess:"シナリオを追加しました",addFailed:"シナリオの追加に失敗しました。後で再試行してください"}},edit:{title:"シナリオ詳細",scriptName:"シナリオ名",scriptNamePh:"シナリオ名を入力してください",scriptContent:"シナリオ内容",scriptContentPh:"シナリオ内容を入力してください...",relatedAssets:"関連アセット",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",msg:{selectAssetsTitle:"関連アセットの選択",updateSuccess:"シナリオの更新に成功しました",updateFailed:"シナリオの更新に失敗しました。後で再試行してください"}},deleteScript:"スクリプトを一括で削除する",extractAssets:""},assets:{addPrefix:"追加",batchGenerate:"一括生成",generatePrompt:"プロンプトを生成",generateImage:"画像を生成",batchDelete:"一括削除",searchPlaceholder:"アセット名を検索...",search:"検索",preview:"プレビュー",generate:"生成",edit:"編集",delete:"削除",generating:"生成中",play:"再生",mediaPreview:"メディアプレビュー",confirmBatch:"{type} を確認してください!",model:"モデル",resolution:"解像度",resolutionPh:"解像度を選択してください",batchGenPrompt:"プロンプトの一括生成",batchGenImage:"画像の一括生成",role:"キャラクター",prop:"小道具",scene:"シーン",clip:"素材",uploadSuccess:"アップロードに成功しました",selectAtLeastOne:"アセットを少なくとも1つ選択してください",noDescription:"説明なし",promptGenSuccess:"「{name}」のプロンプト生成に成功しました",promptGenFail:"「{name}」のプロンプト生成に失敗しました:{error}",selectModel:"モデルを選択してください",selectResolution:"解像度を選択してください",noPromptForImage:"「{name}」にはプロンプトがありません。画像を生成できません",imageGenSuccess:"「{name}」の画像生成に成功しました",imageGenFail:"「{name}」の画像生成に失敗しました:{error}",confirmDeleteHeader:"削除の確認",confirmBatchDeleteBody:"これらのアセットを一括削除してもよろしいですか?この操作は取り消せません。",confirmDeleteBody:"このアセットを削除してもよろしいですか?この操作は取り消せません。",deleteBtn:"削除",cancelBtn:"キャンセル",deleteSuccess:"アセットの削除に成功しました",deleteFail:"アセットの削除に失敗しました",colPreview:"プレビュー",colName:"名前",colPrompt:"プロンプト",colDescribe:"説明",colRemark:"備考",colCreateTime:"作成時間",colOperation:"操作",add:{name:"名前",namePh:"名前を入力してください",describe:"説明",describePh:"説明を入力してください",remark:"備考",remarkPh:"備考を入力してください",prompt:"プロンプト",promptPh:"プロンプトを入力してください",nameRequired:"名前を入力してください",describeRequired:"詳細を入力してください",remarkRequired:"備考を入力してください",updateSuccess:"アセットの更新に成功しました",addSuccess:"アセットの追加に成功しました"},gen:{header:"画像の生成",uploadRef:"参照画像をアップロード",optional:"任意",promptLabel:"画像生成プロンプト",smartGenerate:"スマート生成",generatingPrompt:"スマートプロンプトを生成中...",promptPlaceholder:"生成したい画像の内容を記述してください。例:テクノロジー感あふれる未来都市、ネオンの瞬き、サイバーパンクスタイル...",selectModel:"モデルを選択",selectResolution:"解像度を選択",generateBtn:"画像を生成",resultTitle:"生成結果",generatedCount:"{count} 枚生成されました。1枚選択してください",generatingLabel:"生成中...",genFailed:"生成に失敗しました",confirmSelect:"選択を確定",promptSuccess:"プロンプトの生成に成功しました",promptFail:"プロンプトの生成に失敗しました",fillPrompt:"プロンプトを入力してください",pickResolution:"解像度を選択してください",pickModel:"モデルを選択してください",unnamed:"無名",assetGenSuccess:"アセットの生成に成功しました",assetGenFail:"アセットの生成に失敗しました",uploadOk:"アップロードに成功しました",imageSelected:"この画像を選択しました",imageDeleted:"この画像を削除しました",imageSaved:"画像を保存しました",completed:"完了"},batch:{header:"一括生成",selected:"{count} 件選択中",selectAll:"すべて選択",clearSelection:"選択をクリア",inputPh:"内容を入力してください",saveSelected:"選択項目を保存 ({count})",colPreviewImg:"プレビュー画像",selectToSave:"保存する項目を選択してください",saveSuccess:"保存に成功しました",saveFail:"保存に失敗しました。再試行してください",promptDone:"プロンプトの生成が完了しました",promptFail:"プロンプトの生成に失敗しました",missingPrompts:"プロンプトがないアセットが {count} 件あります。先にプロンプトを生成してください",imageDone:"画像の生成が完了しました",imageGenFail:"画像の生成に失敗しました",unknownError:"不明なエラー",promptGenCancelled:"生成がキャンセルされました"}},production:{selectPlaceholder:"エピソードを選択してください",edit:"編集",node:{script:{title:"シナリオ",editDialog:"シナリオの編集"},scriptPlan:{title:"撮影プラン",editDialog:"撮影プランの編集"},storyboard:{title:"絵コンテボード",notGenerated:"未生成",scaleRatio:"ズーム倍率",gridPreview:"グリッドプレビュー",noPreviewImages:"プレビュー可能な画像がありません",imageLoadFailed:"画像の読み込みに失敗しました",promptPlaceholder:"プロンプトの単語を入力してください",prompt:"即効性のある言葉",editInfo:"即時の単語の修正"},storyboardTable:{title:"絵コンテ表",editDialog:"絵コンテ表の編集"},assets:{title:"派生アセット",generateFailed:"生成失敗",notGenerated:"未生成",originalAsset:"元のアセット",derived:"派生",noDerivedAssets:"派生アセットなし"},poster:{title:"動画カバー",coverCount:"{count} 枚"},workbench:{title:"動画ワークベンチ"}},editImage:{upload:"アップロード",generate:"生成",saveFailed:"保存に失敗しました。再試行してください",fetchFailed:"データの取得に失敗しました",generating:"生成中...",deleteNode:"ノードを削除",ratio:"アスペクト比",quality:"画質",generateBtn:"画像を生成",selectImage:"画像を選択",imageGeneration:"画像生成",promptPlaceholder:"生成したい画像を記述してください...",imageRef:"画像{index}",noReferences:"引用可能な参照画像がありません",selectModel:"先にモデルを選択してください",selectQuality:"画質を選択してください",selectRatio:"アスペクト比を選択してください",generateFailed:"生成に失敗しました",generateFirst:"先に画像を生成してください",generatedResult:"生成結果",waitingGenerate:"生成待ち",layoutLR:"自動レイアウト-左右",layoutTB:"自動レイアウト-上下",uploadAssetImage:"アセット画像アップロード",uploadStoryboardImage:"絵コンテ画像アップロード",uploadImage:"アセットイメージのアップロード",mode:"モデル",closeConfirmTitle:"編集パネルを閉じますか?",closeConfirmBody:"保存していないデータは閉じると失われます"},save:"選択",cancel:"キャンセル",chatBox:{inputPlaceholder:"メッセージを入力...",generateDerivedAssets:"派生アセットを生成",welcomeMessage:"こんにちは!AI アシスタントです。何かお手伝いできることはありますか?",adjustModel:"モデルを調整",startMakingVideo:"動画制作を開始",startMakingVideoPrompt:"動画の制作を開始してください",clearMessageMemory:"メッセージメモリをクリア",clearSummaryMemory:"要約メモリをクリア",clearAllMemory:"すべてのメモリをクリア",messageMemory:"メッセージメモリ",summaryMemory:"要約メモリ",allMemory:"すべてのメモリ",confirmClear:"メモリのクリア",confirmClearBody:"{type}をクリアしてもよろしいですか?",confirmClearBtn:"クリアを確定",memoryCleared:"{type}をクリアしました"},wb:{quickPreview:"クイックプレビュー",videoGeneration:"絵コンテ",videoEditing:"編集デスク",hint:"ヒント",extractLines:"動画からセリフを抽出しますか?",no:"いいえ",confirm:"確定",extractLinesQuestion:"字幕用に動画からセリフを抽出しますか?",importingLoading:"インポート中です。しばらくお待ちください...",mainTrackVideo:"メイントラック(動画)",subtitle1:"字幕1",storyboardVideoName:"絵コンテ動画-{storyboard}.mp4"},preview:{noImage:"画像なし",storyboardDesc:"絵コンテの説明",serialNumber:"No.",noDescription:"説明なし",duration:"デュレーション",seconds:"秒",relatedAssets:"関連アセット",role:"キャラクター",prop:"小道具",scene:"シーン",noCharacters:"登場人物なし",imagePrompt:"画像のプロンプト",selectAll:"すべて選択",exportImage:"画像をエクスポート",sceneDescription:"画面の説明",promptLabel:"プロンプト",restoreSort:"並び順をリセット",restoreSortConfirm:"初期の並び順にリセットしてもよろしいですか?",tip:"ヒント",selectAtLeastOne:"エクスポートする絵コンテを少なくとも1つ選択してください",exportFilename:"絵コンテの絵"},generate:{noVideo:"動画なし",videoPrompt:"動画プロンプト",promptPlaceholder:"生成するビデオ コンテンツを説明するプロンプト ワードを入力してください...",refImage:"参照画像",image:"画像",refVideo:"参照動画",refImageLabel:"参照画像",refAudio:"参照音声",muteAudio:"音声をミュート",enableAudio:"音声をオン",resolution:"解像度",duration:"デュレーション",generate:"生成",historyVersions:"履歴バージョン",confirmSelection:"選択を確定",noHistory:"履歴がありません",generating:"生成中",generateFailed:"生成失敗",selectAll:"すべて選択",videoTrack:"ビデオトラック",batchGenerate:"一括生成",importToEditor:"編集エディタにインポート",modeSingleImage:"単一画像",modeMultiImage:"複数画像",modeGridImage:"グリッド複数画像",modeStartEnd:"開始・終了フレーム",modeText:"テキストから動画生成",modeVideoRef:"動画参照",modeImageRef:"画像参照",modeAudioRef:"音声参照",modeTextRef:"テキスト参照",startFrame:"開始フレーム",startFrameOptional:"開始フレーム (任意)",endFrame:"終了フレーム",endFrameOptional:"終了フレーム (任意)",selectRefImage:"参照画像を選択",selectRefImages:"参照画像を選択",selectEndFrame:"終了フレーム画像を選択",selectRefVideoAsset:"参照動画を選択",selectRefAudioAsset:"参照音声を選択",selectRefImageAsset:"参照画像を選択",selectImageSource:"画像ソースを選択",fromStoryboard:"絵コンテ画像",fromStoryboardDesc:"絵コンテリストから画像を選択",fromAssets:"アセット画像",fromAssetsDesc:"アセットライブラリから画像を選択",confirmDelete:"削除の確認",confirmDeleteBody:"この動画を削除してもよろしいですか?この操作は取り消せません。",delete:"削除",cancel:"キャンセル",deleteSuccess:"動画の削除に成功しました",deleteFailed:"削除に失敗しました",selectVideoFirst:"先に動画を1つ選択してください",confirmSuccess:"選択の確定に成功しました",batchSubmitted:"一括生成リクエストを送信しました。処理中です...",configNotFound:"設定が見つかりません",pollingFailed:"ビデオ ステータスのクエリに失敗しました。手動で更新してください",batchGeneratePrompt:"プロンプト単語をバッチで生成する",batchPromptEmpty:"ストーリーボード {name} はビデオ プロンプトで使用できます。最初にプロンプ​​トを作成または入力してください",modelEmpty:"最初にビデオ生成モデルを選択してください",generatingPrompt:"プロンプトワードのインテリジェントな生成"},editVideo:{reset:"リセット",undo:"取り消し",redo:"やり直し",split:"分割",delete:"削除",rendering:"レンダリング中...",exportVideo:"動画をエクスポート",exportSuccess:"動画のエクスポートが完了しました",exportFailed:"エクスポートに失敗しました",sampleSubtitle:"サンプルの字幕テキスト",customText:"カスタムテキスト内容",transitionBetweenClips:"トランジションは2つの隣接するクリップ間に追加する必要があります",transitionExists:"この位置にはすでにトランジションが存在します",videoPreviewArea:"動画プレビューエリア",clipMaterials:"編集素材",propertyPanel:"プロパティパネル",selectClip:"属性を表示するクリップを選択してください",basicInfo:"基本情報",name:"名前",clipNamePlaceholder:"クリップ名",startTime:"開始",endTime:"終了",totalDuration:"合計デュレーション",videoProperties:"動画プロパティ",opacity:"不透明度",volume:"音量",playbackSpeed:"再生速度",audioProperties:"音声プロパティ",fadeIn:"フェードイン",fadeOut:"フェードアウト",transitionProperties:"トランジションプロパティ",transitionType:"トランジションの種類",transFade:"フェード",transSlide:"スライド",transWipe:"ワイプ",transDissolve:"ディゾルブ",transZoom:"ズーム",transRotate:"回転",transitionDuration:"トランジションの長さ",subtitleProperties:"字幕プロパティ",textContent:"テキスト内容",fontSize:"フォントサイズ",copy:"コピー",deleteConfirm:"削除の確認",deleteClipConfirm:"このクリップを削除してもよろしいですか?",avCanvasNotInit:"AVCanvas が初期化されていません",noExportContent:"エクスポートするコンテンツがありません",exportProject:"プロジェクトをエクスポート",transitionAdded:"トランジションを追加しました: {name}",splitClip:"クリップを分割",deleteClip:"クリップを削除",addClip:"{name} を追加",duplicateClip:"クリップを複製",addTransition:"トランジションを追加",updateClip:"クリップ {key} を更新",updatePlaybackRate:"再生速度を {rate}x に更新",updateTransitionDuration:"トランジションの長さを更新",playbackRateRange:"再生速度は 0.1 から 10 の間である必要があります",updatePlaybackRateFailed:"再生速度の更新に失敗しました:",importProject:"プロジェクトをインポート",import:"インポート"},clipType:{video:"動画",audio:"音声",subtitle:"字幕",transition:"トランジション",sticker:"ステッカー",filter:"フィルター",effect:"エフェクト"},track:{video:"動画",image:"画像",audio:"音声",subtitle:"字幕",text:"テキスト",sticker:"ステッカー",filter:"フィルター",effect:"エフェクト"},transition:{fade:"フェード",slide:"スライド",slideLeft:"左へスライド",slideRight:"右へスライド",slideUp:"上へスライド",slideDown:"下へスライド",wipe:"ワイプ",wipeLeft:"左へワイプ",wipeRight:"右へワイプ",wipeUp:"上へワイプ",wipeDown:"下へワイプ",dissolve:"ディゾルブ",zoom:"ズーム",zoomIn:"ズームイン",zoomOut:"ズームアウト",rotate:"回転",circle:"サークル",diamond:"ひし形",clock:"時計",blur:"ブラー"},media:{titleText:"タイトルテキスト",subtitleText:"字幕テキスト",customText:"カスタムテキスト",media:"メディア",image:"画像",audio:"音声",subtitle:"字幕",transition:"トランジション",effect:"エフェクト",filter:"フィルター",loading:"読み込み中...",subtitlePreview:"字",video:"ビデオ"},effect:{fadeIn:"フェードイン",fadeOut:"フェードアウト",flash:"フラッシュ",shake:"シェイク",zoomIn:"ズームイン",zoomOut:"ズームアウト",pulse:"パルス",rotateIn:"回転しながらイン",sticker1:"ステッカー 1",sticker2:"ステッカー 2"},filter:{grayscale:"モノクロ",sepia:"セピア",warm:"ウォーム",cool:"クール",vivid:"ビビッド",bright:"ブライト",highContrast:"ハイコントラスト",blur:"ブラー",invert:"反転",semiTransparent:"半透明"},guideSwitchEpisode:"エピソードを切り替え",guideSwitchEpisodeBody:"エピソードの切り替えはこちらに移動しました",autoLayoutLR:"自動組版 - 左右レイアウト",autoLayoutTB:"自動写植上下レイアウト",getFlowData:"ワークスペースを更新する",confirm:"エピソード切り替え確認",confirmEpisodesSwitch:"現在のタスクはまだ進行中です。エピソードを切り替えるとセッションが再接続されます。切り替えを続けますか?"},task:{title:"タスクリスト",subtitle:"最新のタスク実行履歴",refresh:"更新",categoryLabel:"タスクカテゴリ:",stateLabel:"ステータス:",noFailReason:"失敗理由なし",stateAll:"すべて",stateRunning:"進行中",stateCompleted:"完了",stateFailed:"生成失敗",fetchFailed:"タスクリストの取得に失敗しました",col:{taskClass:"タスクカテゴリ",relatedObjects:"関連オブジェクト",model:"モデル",describe:"説明",state:"ステータス",startTime:"時間",reason:"失敗の理由"},project:"プロジェクト名:"},noVideo:"まだビデオはありません",prompt:"ビデオのプロンプトワード",generateText:"AIが生成したプロンプトワード",selectStoryboard:"ストーリーボードを選択",generate:{noVideo:"まだビデオはありません",generateText:"AIが生成したプロンプトワード",selectStoryboard:"ストーリーボードを選択",generate:"ビデオの生成",history:"歴史的バージョン",generating:"生成中",generateFailed:"失敗",selectAll:"すべて選択",selected:"選択済み",batchGenerateText:"プロンプト単語をバッチで生成する",batchGenerateVideo:"バッチでビデオを生成する",importVideo:"編集デスクにインポートする",emptyTrack:"段落 {インデックス 1}",del:"消去",delConfirm:"この段落を削除してもよろしいですか?",selectSource:"ソースを選択",confirm:"アセットから選択",cancel:"ストーリーボードから選択",selectVideoFailed:"ビデオの選択に失敗しました",selectVideoSuccess:"ビデオの選択が成功しました",selectTrackFirst:"最初にストーリーボードを選択してください",noSelectedVideo:"動画が選択されていません",generateConfirm:"世代の確認",generateConfirmBody:"ビデオの生成を確認します",generateVideosInBatches:"バッチでビデオを生成する",generateStarted:"ビルドの開始",promptEmpty:"ビデオを生成するために必要なデータを確認してください。プロンプトの単語が空です。生成を続けますか?",skipDataWithEmptyVideoPromptWords:"生成する必要があるビデオ データは存在しますが、プロンプト ワードは空です。",duration:"間隔",resolution:"解決",delVideo:"このビデオを削除しますか?",delSuccess:"正常に削除されました",addReference:"参照を追加",promptPlaceholder:"動画のプロンプトワードを入力してください",downloadVideo:"動画をバッチでダウンロードする",selectVideo:"ダウンロードしたい動画にチェックを入れてください"}},dSi={slogan:"ショードラ制作支援ツール",tips:"デフォルトアカウント:admin / admin123",settings:"サーバー設定",requestAddress:"リクエストアドレス",username:"ユーザー名",password:"パスワード",login:"ログイン",usernameRequired:"ユーザー名を入力してください",passwordRequired:"パスワードを入力してください",enterUsernameAndPassword:"ユーザー名またはパスワードを入力してください",loginSuccess:"ログインに成功しました",settingsSaved:"設定を保存しました"},uSi={cancel:"キャンセル",confirm:"確認",selectAssets:"アセットを選択",sessionExpired:"セッションが期限切れです。再度ログインしてください",openSettings:"設定を開く",defaultReel:"本文巻",save:"保存",submitting:"提出する",editSuccess:"変更が成功しました",editFailed:"変更に失敗しました",submit:"提出する"},hSi={prompt:"即効性のある言葉"},fSi={welcomeTitle:"トゥーンフローへようこそ",welcomeDesc:"AI 主導のコミック作成ワークフロー プラットフォーム。1 分ほどかけて初期構成を完了してみましょう。",startConfig:"設定を開始する",skip:"スキップブート",configModel:"モデルサービスの追加",configData:"エージェントの構成",startUse:"始めましょう",configModelTitle:"モデルサービスプロバイダーを追加",configModelDesc:"まず、設定に少なくとも 1 つの AI モデル サービス プロバイダー (OpenAI、Claude など) を追加し、対応する API キーを入力する必要があります。",configModelTip:"下のボタンをクリックすると、設定ページの「モデルサービス」タブが開きます。サプライヤーを追加したら、ここに戻って続行します。",configModelBtn:"モデルサービスの構成に移動します",configAgentTitle:"エージェントモデルの割り当て",configAgentDesc:"次に、エージェント構成内の各機能モジュールにモデルを割り当て、タスクを完了するためにどのモデルを呼び出すべきかをシステムが認識できるようにします。",configAgentTip:"下のボタンをクリックすると、設定ページの「エージェント構成」タブが開きます。各機能にモデルを割り当てた後、ここに戻ります。",configAgentBtn:"エージェントの構成に移動します",finishTitle:"🎉 準備は万端です!",finishDesc:"設定が完了したので、すべての機能を使用できるようになります。調整する必要がある場合は、いつでも設定で変更できます。",qrcodeLabel:"さらに詳しいサポートを得るには、WeChat コミュニケーション グループに参加してください。",githubLabel:"役に立ったと思ったら、⭐スターをお願いします!",prevStep:"前のステップ",nextStep:"次のステップ",finish:"始めましょう"},gSi={skillManagement:{search:"ファイル名を検索する",empty:"一致するファイルがありません",edit:"編集",selectOnTheLeft:"左からファイルを選択してください"}},mSi={assets:{notExist:"アセットが存在しません",notDerivativeExist:"派生資産は存在しません",derivativeUpdateSuccess:"更新に成功しました",derivativeState:"生成されない",derivativeAddSuccess:"正常に追加されました",derivativeDelSuccess:"正常に削除されました",notGenerated:"生成されない"},addSuccess:"更新に成功しました",state:{unused:"生成されない"},saveSuccess:"正常に追加されました"},kSi={generating:"生成中"},vSi={scanning:"🔍 解析と読み込みスキル",scanComplete:"✨ Skill スキャン完了",inserted:"✅ {count} 個のスキルを追加しました",updated:"🔄 {count}個のSkillを更新",removed:"🗑️ {count}個のSkillを削除",scannedFiles:"📁 {count}個のファイルをスキャン",noDescription:"📝 {count}個のSkillに説明がありません",noAttribution:"👤 {count}個のSkillに帰属がありません",configWarning:"⚠️ Skill 設定警告",openSettings:"設定を開く",scanFailed:"❌ スキャン失敗",checkNetwork:"🔌 ネットワーク接続を確認するか、後で再試行してください",retryLater:"🔁 後で再試行してください"},ASi="ビデオの生成",pSi="歴史的バージョン",bSi="生成中",wSi="失敗",OSi="すべて選択",ySi="選択済み",CSi="ビデオをインポートする",_Si="段落 {インデックス 1}",SSi="削除の確認",LSi="この段落を削除してもよろしいですか?",xSi="ソースを選択",ESi="アセットから選択",TSi="ストーリーボードから選択",QSi={newVersion:"新しいバージョンがあります。更新しますか?"},DSi={components:aSi,settings:lSi,workbench:cSi,login:dSi,common:uSi,"components.storyboardImageCheck.camera":"カメラ","components.storyboardImageCheck.dialogTitle":"絵コンテ画像を選択","components.storyboardImageCheck.preview":"プレビュー","components.storyboardImageCheck.src":"プレビュー画像","components.storyboardImageCheck.title":"タイトル","components.storyboardImageCheck.duration":"時間","components.storyboardImageCheck.lines":"セリフ","components.storyboardImageCheck.createTime":"作成日時","workbench.script.extractAssets":"アセットを抽出",promptManage:hSi,hello:fSi,setting:gSi,storyboard:mSi,productionAgent:kSi,skillScan:vSi,generate:ASi,history:pSi,generating:bSi,generateFailed:wSi,selectAll:OSi,selected:ySi,importVideo:CSi,emptyTrack:_Si,del:SSi,delConfirm:LSi,selectSource:xSi,confirm:ESi,cancel:TSi,"workbench.script.msg.exportFailed":"エクスポートに失敗しました","workbench.production.node.assets.confirmDeleteBody":"アセットを削除するかどうかの確認","workbench.production.node.assets.removeFailed":"アセットの削除に失敗しました",version:QSi,"workbench.production.generatedNode.localUpload":"ローカルアップロード","workbench.production.editImage.uploadFailed":"画像のアップロードに失敗しました","workbench.production.editImage.noImage":"まずは写真を追加してください"},BSi={editMdPreivew:{title:"Редактировать",confirm:"Сохранить",cancel:"Отмена"},imageTools:{copy:"Копировать изображение",preview:"Предпросмотр",download:"Скачать",msg:{imageLoadFailed:"Не удалось загрузить изображение",convertFailed:"Ошибка конвертации",copied:"Скопировано в буфер обмена",copyFailed:"Ошибка копирования",downloadFailed:"Ошибка скачивания",downloadStarted:"Скачивание началось",downloadBlockedOpenNewWindow:"Текущий источник изображения может ограничивать скачивание, предпринята попытка открыть в новом окне"}},migrateShow:{title:"Перенос данных",desc:"Обнаружены данные старой версии. Выполнить перенос?",hide:"Больше не показывать",confirm:"ОК",msg:{migrateSuccess:"Данные успешно перенесены",migrateFailed:"Ошибка переноса данных"}},modelSelect:{placeholder:"Пожалуйста, выберите модель",type:{image:"Изображение",text:"Текст",video:"Видео"},msg:{fetchModelFailed:"Не удалось получить данные модели:"},goSetting:"Зайди в настройки и добавь модель."}},RSi={title:"Настройки ToonFlow",menu:{language:"Язык",vendorConfig:"Поставщики моделей",agentConfig:"Настройки Agent",promptManage:"Управление подсказками",skillManagement:"Управление навыками",memoryConfig:"Память Agent",loginConfig:"Настройки входа",dbConfig:"База данных",fileManagement:"Управление файлами",otherConfig:"Другие настройки",requestConfig:"URL запросов",about:"Проверить обновления",logoutConfig:"Выйти",skillsSkillsManagement:"НавыкиУправление навыками"},language:{desc:"Выберите язык интерфейса",msg:{saved:"Языковые настройки сохранены"}},vendor:{addVendor:"Добавить поставщика",noVendor:"Нет поставщиков. Пожалуйста, добавьте.",required:"Обязательно",optionalSection:"Необязательно",modelSettings:"Настройки модели",addManually:"Добавить вручную",test:"Тест",edit:"Редактировать",delete:"Удалить",deleteVendor:"Удалить поставщика",editCode:"Редактировать код",updateConfig:"Обновить конфигурацию",addModel:"Добавить модель",editModel:"Редактировать модель",displayName:"Отображаемое имя",displayNamePlaceholder:"Например: GPT-4o",modelId:"ID модели",modelIdPlaceholder:"Например: gpt-4o",modelType:"Тип модели",multimodal:"Мультимодальная",supported:"Поддерживается",notSupported:"Не поддерживается",toolCall:"Вызов инструментов",imageMode:"Режим изображения",videoMode:"Режим видео",audioOutput:"Аудиовыход",durationResolution:"Длительность / Разрешение",durationSec:"Длительность (сек)",resolution:"Разрешение",enterAndPress:"Введите и нажмите Enter",addDurationResolution:"Добавить длительность / разрешение",testResult:"Результаты теста",generating:"Генерация...",addVendorDialog:"Добавление поставщика",codeEditorInfo:"Пожалуйста, напишите код на TypeScript для конфигурации поставщика",reset:"Сброс",importFile:"Импорт файла",textModel:"Текстовая модель",imageModel:"Модель изображений",videoModel:"Видеомодель",textToImage:"Текст в изображение",textToVideo:"Текст в видео",singleImage:"Одно изображение",multiImage:"Много изображений",multiReference:"Множественный референс",gridImage:"Сетка изображений",startEndRequired:"Первый и последний кадры (Оба обязательны)",endFrameOptional:"Первый и последний кадры (Последний необязателен)",startFrameOptional:"Первый и последний кадры (Первый необязателен)",textRef:"Текст",imageRef:"Изображение",videoRef:"Видео",audioRef:"Аудио",audioOptional:"Необязательно",audioOnly:"Только видео со звуком",noAudio:"Только видео без звука",msg:{getVendorListFailed:"Не удалось получить список поставщиков",vendorConfigUpdated:"Конфигурация поставщика обновлена",updateFailed:"Ошибка обновления",highRiskConfirm:"⚠️ Подтверждение опасной операции",addVendorRiskBody:"Добавление нового поставщика ИИ даст ему доступ к API системы. Убедитесь, что вы доверяете исходному коду этого поставщика!",iKnowRisk:"Я осознаю риски",cancel:"Отмена",confirmAgain:"⚠️ Повторное подтверждение",addVendorConfirmBody:"Вы уверены, что хотите добавить этого поставщика? Он будет включен в системное планирование моделей.",confirmAndAdd:"Подтвердить и добавить",goBackCheck:"Вернуться и проверить",vendorAdded:"Поставщик успешно добавлен",addFailed:"Ошибка добавления",updateVendorRiskBody:"Обновление конфигурации поставщика ИИ изменит его доступ к API системы и поведение. Убедитесь, что вы доверяете измененному коду!",updateVendorConfirmBody:"Вы уверены, что хотите обновить конфигурацию этого поставщика? Это повлияет на системное планирование моделей.",confirmAndUpdate:"Подтвердить и обновить",updateSuccess:"Конфигурация поставщика успешно обновлена",fillDisplayName:"Пожалуйста, введите отображаемое имя",fillModelId:"Пожалуйста, введите ID модели",selectImageMode:"Пожалуйста, выберите режим изображения",selectVideoMode:"Пожалуйста, выберите режим видео",groupPrefix:"Группа {n}: ",addDuration:"Пожалуйста, добавьте длительность",addResolution:"Пожалуйста, добавьте разрешение",selectVendorFirst:"Пожалуйста, сначала выберите поставщика",modelIdExists:"ID модели уже существует",modelAdded:"Модель успешно добавлена",modelUpdated:"Модель успешно обновлена",enterApiKey:"Пожалуйста, введите API KEY",enterApiUrl:"Пожалуйста, введите API URL",testSuccess:"Тест пройден",imageGenSuccess:"Изображение успешно сгенерировано",videoGenSuccess:"Видео успешно сгенерировано",requestFailed:"Ошибка запроса",deleteModelConfirm:"Подтверждение удаления модели",deleteModelBody:"Это действие необратимо. Продолжить?",confirmDelete:"Удалить",modelDeleted:"Модель удалена",deleteVendorConfirm:"Подтверждение удаления поставщика",deleteVendorBody:"Удаление поставщика также удалит все связанные с ним модели. Продолжить?",vendorDeleted:"Поставщик удален",deleteFailed:"Ошибка удаления",enabled:"Включено",disabled:"Неполноценный",linkAddVendorRiskBody:"Добавление нового поставщика ИИ предоставит ему доступ к системному API. Убедитесь, что вы доверяете источнику ссылок поставщика!",importAdd:"Добавление нового поставщика ИИ предоставит ему доступ к системному API. Убедитесь, что вы доверяете источнику документации поставщика!",linkAddFailed:"Не удалось добавить ссылку"},associationSkills:"Сопутствующие навыки",think:"глубокое мышление",code:"код",linkAddPlaceholder:"Введите ссылку для добавления",noFileSelected:"Файл успешно импортирован",linkAdd:"подтверждать"},agent:{bannerDesc:"Используйте официальный прокси-сервер Toonflow для конфигурации в один клик. Готово к использованию без ручной настройки.",visitWebsite:"Перейти на сайт",fillKey:"Введите KEY",oneClickFill:"Вставить в 1 клик",notOpen:"Недоступно",notConfigured:"Не настроено",modelConfig:"Настройки модели",confirm:"ОК",cancel:"Отмена",selectModel:"Выберите модель",fillKeyHeader:"Введите официальный KEY платформы Toonflow",keyPlaceholder:"Пожалуйста, введите KEY",save:"Сохранить",msg:{notAvailable:"Эта функция пока недоступна. Следите за обновлениями!",configSuccess:"Успешно настроено",updateConfigFailed:"Ошибка обновления конфигурации: ",keyValid:"KEY действителен. Успешное подключение к платформе Toonflow",keyInvalid:"KEY недействителен. Пожалуйста, проверьте и введите снова: ",enterKey:"Пожалуйста, введите KEY",saveFailed:"Ошибка сохранения: ",getAgentListFailed:"Не удалось получить список конфигураций Agent: "}},memory:{warning:"Следующие параметры предварительно настроены на рекомендуемые значения. Не изменяйте их, если не понимаете их значения и влияния.",vectorModelConfig:"Настройки векторной модели",modelFilePath:"Путь к файлу модели",quantizationType:"Тип квантования",quantizationPlaceholder:"Введите тип квантования",memoryParams:"Параметры памяти",messagesPerSummary:"Сообщений для запуска сжатия",messagesPerSummaryHelp:"Сохраняет контекст последних N сообщений.",shortTermLimit:"Лимит кратковременной памяти",shortTermLimitHelp:"Количество кандидатов памяти, возвращаемых при поиске.",summaryMaxLength:"Макс. длина сжатия",summaryMaxLengthHelp:"Максимальное количество символов при сжатии сообщений.",summaryLimit:"Лимит запросов сжатых сообщений",summaryLimitHelp:"Разрешенное количество сжатых сообщений для запроса.",ragLimit:"Лимит поиска RAG",ragLimitHelp:"Количество сообщений, извлекаемых при поиске.",deepRetrieveSummaryLimit:"Лимит извлечения векторов сжатия",deepRetrieveSummaryLimitHelp:"Количество сообщений, получаемых при поиске содержимого сжатых сообщений.",saveConfig:"Сохранить",clearMemory:"Очистить память",restoreDefault:"По умолчанию",msg:{saved:"Настройки памяти сохранены",clearConfirmTitle:"Подтверждение очистки",clearConfirmBody:"Это удалит глобальные данные памяти ИИ без возможности восстановления. Продолжить?",confirmClear:"Очистить",cancel:"Отмена",cleared:"Память очищена",clearFailed:"Не удалось очистить память"}},login:{username:"Имя пользователя",usernamePlaceholder:"Введите имя пользователя",password:"Пароль",passwordPlaceholder:"Введите пароль",modify:"Изменить",msg:{enterUsername:"Пожалуйста, введите имя пользователя",usernameLength:"Имя пользователя должно содержать 2-20 символов",enterPassword:"Пожалуйста, введите пароль",passwordLength:"Пароль должен содержать 6-20 символов",fetchFailed:"Не удалось получить информацию о пользователе",saveSuccess:"Успешно сохранено",saveFailed:"Ошибка сохранения"}},db:{clearDb:"Очистить базу данных",clearDbDesc:"Очистить данные во всех таблицах, сохранив их структуру",clearData:"Очистить данные",confirmAction:"Подтверждение",msg:{clearDbTitle:"Очистка базы данных",firstConfirm:"Вы уверены, что хотите очистить все таблицы? Данные нельзя будет восстановить!",secondConfirm:"Это последнее предупреждение. Все данные будут потеряны навсегда!",keyword:"Очистить",confirm:"Подтвердить",pleaseInput:"Пожалуйста, введите",cleared:"Все таблицы очищены",operationFailed:"Ошибка операции, попробуйте снова",cancelled:"Операция отменена"}},other:{requestTimeout:"Тайм-аут запроса",seconds:"Сек",inputSeconds:"Введите секунды",assetConcurrency:"Параллельная генерация ассетов",count:"Шт",inputCount:"Введите количество",chapterRegex:"Регулярное выражение для разбивки на главы",restoreDefault:"По умолчанию",regexPlaceholder:"Введите регулярное выражение",showTitleBar:"показать строку заголовка",isElectron:"Переключиться в режим рабочего стола",canvasScroll:"Прокрутка холста",canvasIsDisabled:"Масштабирование холста",agentCanvasScalingMethod:"Неограниченное использование колеса холста на рабочей странице",zoom:"Увеличить",scroll:"прокрутка",isInteracting:"Неограниченная оптимизация производительности перетаскивания холста на рабочей странице",closeIsInteracting:"закрытие"},request:{warning:"Не изменяйте без крайней необходимости",apiAddress:"URL API",apiPlaceholder:"Введите URL-адрес запроса API",save:"Сохранить",reset:"Сброс",msg:{enterApi:"Пожалуйста, введите URL API",validUrl:"Пожалуйста, введите действительный HTTP/HTTPS адрес",saved:"URL запроса успешно сохранен",reset:"Сброшено на адрес по умолчанию",refreshFailed:"Обновить не удалось",refreshSuccess:"Обновить успешно"},refresh:"обновить"},about:{slogan:"Опенсорсный ИИ-инструмент для создания комиксов и раскадровок",latestVersion:"У вас установлена последняя версия",checkUpdate:"Проверить обновления",codeRepository:"Репозиторий кода",githubRepo:"Репозиторий GitHub",giteeRepo:"Репозиторий Gitee",versionUpdate:"Обновление версии",checkUpdateGithub:"Проверить (GitHub)",getFromGithub:"Скачать последний релиз с GitHub",checkUpdateGitee:"Проверить (Gitee)",getFromGitee:"Скачать последний релиз с Gitee",license:"Лицензия",licenseDesc:"Лицензионное соглашение · Нажмите для подробностей",updateAvailable:"найдена новая версия",upToDate:"Обнаружена новая версия"},logout:{warning:"После выхода вам нужно будет снова войти в систему.",confirmLogout:"Вы уверены, что хотите выйти?",logout:"Выйти",msg:{logoutSuccess:"Успешный выход",logoutFailed:"Ошибка выхода, попробуйте снова"}},file:{quickOpen:"Быстро открыть каталог",open:"Открыть",dockerDesc:'Для Docker/раздельного развертывания перейдите в каталог "/data/*" для управления файлами.',desktopOnly:"Эта функция доступна только в десктопной версии",folders:{data:"data",dataDesc:"Каталог данных.",logs:"data/logs",logsDesc:"Журналы выполнения и ошибок.",oss:"data/oss",ossDesc:"Ресурсы файлового хранилища.",skills:"data/skills",skillsDesc:"Файлы конфигурации навыков и промптов.",models:"data/models",modelsDesc:"Файлы моделей и конфигурации.",web:"data/web",webDesc:"Веб-ресурсы, например, сборка фронтенда.",serve:"data/serve",serveDesc:"Файлы бэкенд-сервисов."},openFailed:"Не удалось открыть папку"},skill:{scanSkills:"ScanSkills",fileLost:"Файл отсутствует"},dev:{warning:"Ниже приведены инструменты разработчика, будьте осторожны!",openDevtool:"Открыть",devtoolsDoc:"Адрес документа",devtoolsDesc:"После включения в каталоге установки Toonflow будет создана папка .devtools. Убедитесь, что у Toonflow есть права на запись (запуск от имени администратора).",devtoolsDesc2:"Запустите npx {'@'}ai-sdk/devtools в этом каталоге, чтобы включить отладку телеметрии.",openDevtoolFailed:"Не удалось открыть инструменты разработчика. Убедитесь, что установлен рабочий стол Toonflow.",notInElectron:"Для веб-среды откройте консоль браузера вручную."}},ISi={selectProject:"Пожалуйста, выберите проект",menu:{myProject:"Мои проекты",taskCenter:"Центр задач",novel:"Текст романа",scriptAgent:"Сценарий Agent",scriptManage:"Управление сценариями",cornerScape:"Персонажи и сцены",production:"Создание видео",assetCenter:"Центр ассетов",settings:"Настройки",jumpGithub:"Перейти на Гитхаб",feedbackQuestions:"Вопрос обратной связи"},project:{title:"Мои проекты",subtitle:"Управление всеми проектами коротких драм",newProject:"Новый проект",dialog:{editTitle:"Редактировать проект",addTitle:"Новый проект",save:"Сохранить",ok:"ОК",cancel:"Отмена",projectType:"Тип проекта",selectType:"Выберите тип",basedOnNovel:"На основе текста романа",projectName:"Название проекта",projectNamePh:"Введите название проекта",novelType:"Жанр романа",novelTypePh:"Например: Фэнтези, Фантастика, Романтика",artStyle:"Визуальное руководство",selected:"Выбрано:",selectArtStyle:"Пожалуйста, выберите визуальное руководство",newArtStyle:"Новое визуальное руководство",loading:"Загрузка...",videoRatio:"Соотношение сторон",novelIntro:"Синопсис романа",novelIntroPh:"Введите синопсис романа",editArtStyleTitle:"Редактировать визуальное руководство",newArtStyleTitle:"Новое визуальное руководство",artStyleName:"Визуальное название руководства",artStyleNamePh:"Пожалуйста, введите название визуального руководства",artStyleImage:"Обложка визуального руководства",remove:"Удалить",uploadCover:"Загрузить обложку",artStylePrompt:"Слова подсказки визуального руководства",aiExtract:"Извлечь промпт (ИИ)",promptPlaceholder:"Описывает слово-подсказку визуального руководства, используемое для указания визуального руководства при создании изображений.",visualManual:"Визуальное руководство",newVisualManual:"Новое визуальное руководство",editVisualManualTitle:"Редактировать визуальное руководство",newVisualManualTitle:"Новое визуальное руководство",visualManualName:"Название визуального руководства",visualManualNamePh:"Пожалуйста, введите название визуального руководства",visualManualCover:"Обложка визуального руководства",visualManualPrompt:"Промпт визуального руководства",modelData:"Выберите модель изображения",videoModelData:"Выберите модель видео",prompt:{placeholder:"Введите слово-подсказку",saveSuccess:"Обновление успешно выполнено",title:"подсказать слово"},basedOnScript:"на основе сценария",mdFile:"визуальный файл руководства",directorManual:"Справочник директора",addDirectorManual:"Новое руководство директора",editingDirectorManual:"Редактировать Руководство режиссера",newDirecorManualTitle:"Новое руководство директора",directorManualPrompt:"Слова-подсказки в руководстве режиссера",directorManualName:"Название руководства режиссера",directorManualNamePh:"Введите название руководства режиссера",directorFile:"Документ «Руководство директора»",directorManualCover:"Обложка руководства режиссера"},msg:{fetchFailed:"Не удалось получить список проектов",notFound:"Проект не найден!",editSuccess:"Проект успешно отредактирован",editFailed:"Ошибка редактирования проекта",addSuccess:"Проект успешно создан",addFailed:"Ошибка создания проекта",deleteHeader:"Удалить проект",deleteBody:"Вы уверены, что хотите удалить этот проект?",deleteConfirm:"Удалить",deleteCancel:"Отмена",deleteSuccess:"Проект успешно удален",deleteFailed:"Ошибка удаления проекта",extractSuccess:"Промпт успешно извлечен",extractFailed:"Ошибка извлечения",enterArtStyleName:"Пожалуйста, введите название визуального руководства",artStyleUpdated:"Обновлено визуальное руководство",artStyleAdded:"Добавлен визуальный мануал",operationFailed:"Ошибка операции",enterVisualManualName:"Пожалуйста, введите название визуального руководства",enterVisualManualImage:"Пожалуйста, загрузите обложку визуального руководства",enterVisualManualTabData:"Промпт не может быть пустым",visualManualUpdated:"Визуальное руководство обновлено",visualManualAdded:"Визуальное руководство добавлено",deleteVisualManualHeader:"Удалить визуальное руководство",deleteVisualManualBody:'Вы уверены, что хотите удалить визуальное руководство "{name}"?',deleteVisualManualConfirm:"Удалить",deleteVisualManualCancel:"Отмена",enterProjectName:"Пожалуйста, введите название проекта",enterProjectIntro:"Пожалуйста, введите вступление к роману",enterProjectType:"Пожалуйста, введите тип проекта",enterArtStyle:"Пожалуйста, выберите визуальную брошюру проекта",enterVideoRatio:"Пожалуйста, выберите соотношение видео",enterImageModel:"Пожалуйста, выберите модель изображения",enterVideoModel:"Пожалуйста, выберите модель видео",visualManualDeleted:"Удалить успешно",selectMode:"Пожалуйста, выберите режим",deleteDirectorManualHeader:"Удалить руководство режиссера",deleteDirectorManualBody:"Вы уверены, что хотите удалить Руководство режиссёра «{name}»?",directorManualUpdated:"Обновлено Руководство директора",directorManualAdded:"Добавлено Руководство режиссера",directorManual:"Пожалуйста, выберите Руководство для директора проекта"},type:{novel:"По мотивам оригинального романа",script:"По новому сценарию"}},novel:{importText:"Импорт текста",batchDelete:"Пакетное удаление",eventAnalysis:"Анализ событий",searchPlaceholder:"Поиск по названию...",search:"Поиск",generating:"Генерация...",genFailed:"Ошибка генерации",none:"Нет",edit:"Редактировать",delete:"Удалить",col:{id:"№",reel:"Том",chapter:"Название главы",chapterData:"Содержимое главы",event:"Событие",operation:"Действие"},msg:{batchDeleteHeader:"Пакетное удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} элементов?",batchDeleteSuccess:"Пакетное удаление завершено",deleteHeader:"Подтверждение удаления",deleteBody:"Удалить главу под названием «{name}»?",deleteSuccess:"Успешно удалено",eventAnalysisHeader:"Анализ событий",eventAnalysisBody:"Выполнить анализ событий для выбранных {count} элементов?"},import:{title:"Загрузить текст романа",step1:"Шаг 1",step2:"Шаг 2",step3:"Шаг 3",dragUpload:"Перетащите файл с романом сюда или нажмите для загрузки",uploadHint:"Поддерживаются форматы .txt, .docx. Рекомендуемый размер файла до 10 МБ",or:"ИЛИ",pasteLabel:"Вставить текст напрямую",pastePlaceholder:"Вставьте текст романа сюда",chars:"симв.",tooShort:"Слишком короткий текст, рекомендуется не менее 100 символов",parsedChapters:"Распознано {count} глав",nextStep:"Далее",prevStep:"Назад",selectedInfo:"Выбрано: {count} симв. (Максимум 200 000)",eventAnalysis:"Анализ событий",saveAndAnalyze:"Сохранить текст и анализировать",col:{chapter:"Глава",reel:"Том",chapterName:"Название главы",chapterData:"Содержимое главы"},msg:{parseFailed:"Не удалось распознать файл. Загрузите заново",selectFile:"Выберите файл",docNotSupported:"Файлы .doc не поддерживают синтаксический анализ, конвертируйте их в файлы .ts.",unsupportedType:"Неподдерживаемый тип файла",fileTooLarge:"Файл больше 10 МБ. Загрузите файл меньшего размера",selectChapters:"Сначала выберите главы",saveSuccess:"Текст романа успешно сохранен"},importAdd:"Перетащите файлы сюда или нажмите, чтобы загрузить",limit:"Поддержка формата .ts"},editDialog:{title:"Редактировать текст романа",chapterName:"Название главы",chapterNamePh:"Введите название главы",eventContent:"Содержание события",eventContentPh:"Введите содержание события",chapterContent:"Содержимое главы",chapterContentPh:"Введите содержимое главы",cancel:"Отмена",save:"Сохранить",msg:{updateSuccess:"Текст романа успешно обновлен"}},event:{regenerate:"Перегенерировать события",batchDelete:"Пакетное удаление",noData:"Нет данных о событиях. Нажмите, чтобы начать генерацию",generate:"Сгенерировать события",generatingHint:"Генерация событий, пожалуйста, подождите...",loading:"Загрузка...",delete:"Удалить",col:{id:"ID события",eventName:"Название события",chapters:"Исходная глава",detail:"Детали события",createTime:"Время создания",operation:"Действие"},msg:{deleteHeader:"Удалить событие",deleteBody:"Вы уверены, что хотите удалить это событие?",deleteSuccess:"Успешно удалено",generateSuccess:"События успешно сгенерированы",batchDeleteHeader:"Пакетное удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} элементов?",batchDeleteSuccess:"Пакетное удаление завершено"}},analysis:{analyzeFirst:"Пожалуйста, сначала проанализируйте события",startAnalysis:"Начать анализ",chapterHeader:"Глава {index} - {name}",analyzing:"Анализ событий"}},scriptAgent:{inputPlaceholder:"Введите текст",chapterEvents:"События главы",clearMessageMemory:"Очистить память сообщений",clearSummaryMemory:"Очистить память сжатий",clearAllMemory:"Очистить всю память",edit:"Редактировать",storySkeleton:"Скелет истории",adaptationStrategy:"Стратегия адаптации",script:"Сценарий",noContent:"Нет содержимого",relatedAssets:"Связанные ассеты",editScript:"Редактировать сценарий",save:"Сохранить",scriptTitle:"Заголовок",titlePlaceholder:"Введите заголовок",content:"Содержимое",contentPlaceholder:"Введите текст сценария",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",selectAssetsTitle:"Выбор связанных ассетов",welcomeMsg:"Привет! Я ИИ-ассистент Toonflow. Хотите, чтобы я начал генерировать сценарий?",start:"Начать",memoryType:{message:"Память сообщений",summary:"Память сжатий",all:"Вся память"},msg:{clearConfirm:"Подтверждение очистки",clearBody:"Вы уверены, что хотите очистить {type}? Это действие необратимо.",confirmClear:"Очистить",cancel:"Отмена",memoryCleared:"{type} очищена",scriptUpdated:"Сценарий успешно обновлен",scriptUpdateFailed:"Не удалось обновить сценарий, попробуйте позже",searchScriptFailed:"Не удалось найти сценарии",updated:"Сохранено успешно.",error:"Сохранить не удалось",reconnect:"Восстановить соединение",notReconnect:"Подтвердить, что разговор при повторном подключении будет прерван?",keepReconnect:"подтверждать",deleteConfirm:"Удалить подтверждение",deleteBody:"Удалить текст",confirmDelete:"Подтвердить удаление",scriptDeleted:"Скрипт удален."},reconnect:"Восстановить соединение"},cornerScape:{batchSettings:"Пакетные настройки",quickActions:"Быстрые команды",selectUngenerated:"Выбрать несгенерированные",selectGenerated:"Выбрать сгенерированные",selectFailed:"Выбрать с ошибками",invertSelection:"Инвертировать выбор",clearSelection:"Снять выделение",batchPreview:"Пакетный предпросмотр",assetTypeFilter:"Фильтр по типу",genModel:"Модель генерации",resolution:"Разрешение",resolutionPh:"Выберите разрешение",concurrency:"Потоки",concurrencyPh:"Введите количество потоков",startBatch:"Начните генерировать изображения в пакетном режиме",waitingGen:"В очереди",generating:"Генерация",genFailed:"Ошибка генерации",imageError:"Ошибка изображения",typeRole:"Персонаж",typeScene:"Сцена",typeTool:"Предмет",typeUnknown:"Неизвестно",descriptionSuffix:"Описание: ",operateScriptFirst:"Пожалуйста, сначала обработайте сценарий",individualConfig:"Индивидуальные настройки",noImage:"Нет изображения",promptLabel:"Промпт",promptPh:"Введите промпт",aiPolish:"Улучшить с ИИ",regenerate:"Перегенерировать",filterRole:"Персонаж",filterScene:"Сцена",filterTool:"Предмет",unnamed:"Без имени",noDescription:"Нет описания",msg:{selectModel:"Выберите модель для генерации",selectResolution:"Выберите разрешение",enterPrompt:"Введите промпт",enterPromptFirst:"Сначала введите промпт",genSuccess:"{name} успешно сгенерирован",genFailed:"Ошибка генерации {name}",promptGenSuccess:"Промпт успешно сгенерирован",polishFailed:"Не удалось улучшить, попробуйте снова",selectAtLeastOne:"Выберите хотя бы один ассет для пакетной генерации",batchStarted:"Начата пакетная генерация. Всего: {count}, Потоков: {concurrent}",batchItemFailed:"Ошибка генерации {name}: {error}",batchComplete:"Пакетная генерация завершена",batchFailed:"Генерация пакета не удалась",replaceFailed:"Замена не удалась",replaceSuccess:"Замена прошла успешно",promptGenFail:"Не удалось создать быстрое слово.",saveSuccess:"Изменение слова подсказки успешно выполнено",saveFailed:"Изменение слова подсказки не удалось"},history:"исторические фотографии",confirmReplace:"Подтвердить замену",batchGenerationPrompt:"Генерируйте подсказки в пакетном режиме",generatingPrompt:"Создание",selectPromptEmpty:"Выбрать все подсказки. Слово пусто.",noEmptyPrompt:"Нет ресурсов с пустым словом-подсказкой.",selectedCount:"Выбрано {count} объектов"},script:{searchPlaceholder:"Поиск по названию сценария...",search:"Поиск",addScript:"Новый сценарий",cancelSelectAll:"Снять выбор со всех",selectAll:"Выбрать все",exportScript:"Экспорт сценария",msg:{searchFailed:"Не удалось найти сценарии",selectExport:"Сначала выберите сценарий для экспорта",exportSuccess:"Экспорт завершен",exportFailed:"Ошибка экспорта сценария",deleteHeader:"Подтверждение удаления",deleteBody:"Вы уверены, что хотите удалить этот сценарий? Это действие необратимо.",deleteConfirm:"Удалить",cancel:"Отмена",deleteSuccess:"Успешно удалено",deleteFailed:"Ошибка удаления",selectDelScript:"Пожалуйста, выберите удаление сценария",batchDeleteHeader:"Массовое удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} сценариев? Это действие необратимо.",batchDeleteSuccess:"Массовое удаление выполнено успешно",extractingInProgress:"Извлечение",projectNotFound:"Товар не найден",selectsExport:"Пожалуйста, выберите экспорт скрипта"},add:{title:"Добавить сценарий",scriptName:"Название сценария",scriptNamePh:"Введите название сценария",uploadFile:"Загрузить файл",dragUpload:"Перетащите файл сценария сюда или нажмите для загрузки",uploadHint:"Поддерживаются форматы .txt, .docx. Рекомендуемый размер файла до 10 МБ",scriptContent:"Текст сценария",scriptContentPh:"Загрузите или введите текст сценария...",relatedAssets:"Связанные ассеты",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",cancel:"Отмена",confirm:"ОК",msg:{fileReadFailed:"Ошибка чтения файла",docNotSupported:"Формат .doc не поддерживается. Конвертируйте в .txt или .docx",unsupportedType:"Неподдерживаемый тип файла",fileTooLarge:"Файл больше 10 МБ. Загрузите файл меньшего размера",parsing:"Распознавание файла...",parseFailed:"Не удалось распознать файл. Загрузите заново",selectAssetsTitle:"Выбор связанных ассетов",enterContent:"Пожалуйста, загрузите или введите текст сценария",enterName:"Пожалуйста, введите название сценария",addSuccess:"Сценарий успешно добавлен",addFailed:"Не удалось добавить сценарий, попробуйте позже"}},edit:{title:"Детали сценария",scriptName:"Название сценария",scriptNamePh:"Введите название сценария",scriptContent:"Текст сценария",scriptContentPh:"Введите текст сценария...",relatedAssets:"Связанные ассеты",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",msg:{selectAssetsTitle:"Выбор связанных ассетов",updateSuccess:"Сценарий успешно обновлен",updateFailed:"Не удалось обновить сценарий, попробуйте позже"}},deleteScript:"Удаление скриптов в пакетном режиме",extractAssets:""},assets:{addPrefix:"Добавить",batchGenerate:"Пакетная генерация",generatePrompt:"Сгенерировать промпт",generateImage:"Сгенерировать изображение",batchDelete:"Пакетное удаление",searchPlaceholder:"Поиск по названию ассета...",search:"Поиск",preview:"Предпросмотр",generate:"Генерация",edit:"Редактировать",delete:"Удалить",generating:"Генерация",play:"Воспроизведение",mediaPreview:"Предпросмотр медиа",confirmBatch:"Подтвердите {type}!",model:"Модель",resolution:"Разрешение",resolutionPh:"Выберите разрешение",batchGenPrompt:"Пакетная генерация промптов",batchGenImage:"Пакетная генерация изображений",role:"Персонаж",prop:"Предмет",scene:"Сцена",clip:"Клип",uploadSuccess:"Успешно загружено",selectAtLeastOne:"Выберите хотя бы один ассет",noDescription:"Нет описания",promptGenSuccess:"Промпт для «{name}» успешно сгенерирован",promptGenFail:"Ошибка генерации промпта для «{name}»: {error}",selectModel:"Пожалуйста, выберите модель",selectResolution:"Пожалуйста, выберите разрешение",noPromptForImage:"У «{name}» нет промпта; невозможно сгенерировать изображение",imageGenSuccess:"Изображение для «{name}» успешно сгенерировано",imageGenFail:"Ошибка генерации изображения для «{name}»: {error}",confirmDeleteHeader:"Подтверждение удаления",confirmBatchDeleteBody:"Вы уверены, что хотите удалить эти ассеты? Это действие необратимо.",confirmDeleteBody:"Вы уверены, что хотите удалить этот ассет? Это действие необратимо.",deleteBtn:"Удалить",cancelBtn:"Отмена",deleteSuccess:"Ассет успешно удален",deleteFail:"Не удалось удалить ассет",colPreview:"Превью",colName:"Название",colPrompt:"Промпт",colDescribe:"Описание",colRemark:"Примечание",colCreateTime:"Время создания",colOperation:"Действие",add:{name:"Название",namePh:"Введите название",describe:"Описание",describePh:"Введите описание",remark:"Примечание",remarkPh:"Введите примечание",prompt:"Промпт",promptPh:"Введите промпт",nameRequired:"Пожалуйста, введите название",describeRequired:"Пожалуйста, введите детали",remarkRequired:"Пожалуйста, введите примечание",updateSuccess:"Ассет успешно обновлен",addSuccess:"Ассет успешно добавлен"},gen:{header:"Генерация изображения",uploadRef:"Загрузить референс",optional:"Необязательно",promptLabel:"Промпт",smartGenerate:"Смарт-генерация",generatingPrompt:"Умная генерация промпта...",promptPlaceholder:"Опишите изображение, которое хотите сгенерировать. Например: футуристичный город будущего, неоновые огни, киберпанк...",selectModel:"Выбрать модель",selectResolution:"Выбрать разрешение",generateBtn:"Сгенерировать",resultTitle:"Результаты",generatedCount:"Сгенерировано {count} шт. Пожалуйста, выберите одно",generatingLabel:"Генерация...",genFailed:"Ошибка генерации",confirmSelect:"Подтвердить выбор",promptSuccess:"Промпт успешно сгенерирован",promptFail:"Ошибка генерации промпта",fillPrompt:"Пожалуйста, введите промпт",pickResolution:"Пожалуйста, выберите разрешение",pickModel:"Пожалуйста, выберите модель",unnamed:"Без имени",assetGenSuccess:"Ассет успешно сгенерирован",assetGenFail:"Ошибка генерации ассета",uploadOk:"Успешно загружено",imageSelected:"Изображение выбрано",imageDeleted:"Изображение удалено",imageSaved:"Изображение сохранено",completed:"Завершенный"},batch:{header:"Пакетная генерация",selected:"Выбрано {count} шт.",selectAll:"Выбрать все",clearSelection:"Очистить выбор",inputPh:"Введите текст",saveSelected:"Сохранить выбранное ({count})",colPreviewImg:"Превью",selectToSave:"Выберите элементы для сохранения",saveSuccess:"Успешно сохранено",saveFail:"Ошибка сохранения, попробуйте снова",promptDone:"Генерация промптов завершена",promptFail:"Ошибка генерации промптов",missingPrompts:"{count} ассетов не имеют промптов. Сначала сгенерируйте промпты",imageDone:"Генерация изображений завершена",imageGenFail:"Ошибка генерации изображений",unknownError:"Неизвестная ошибка",promptGenCancelled:"Генерация отменена"}},production:{selectPlaceholder:"Выберите эпизод",edit:"Редактировать",node:{script:{title:"Сценарий",editDialog:"Редактировать сценарий"},scriptPlan:{title:"План съемок",editDialog:"Редактировать план съемок"},storyboard:{title:"Панель раскадровки",notGenerated:"Не сгенерировано",scaleRatio:"Масштаб",gridPreview:"Просмотр сеткой",noPreviewImages:"Нет изображений для предпросмотра",imageLoadFailed:"Не удалось загрузить изображение",promptPlaceholder:"Пожалуйста, введите слово-подсказку",prompt:"подсказать слово",editInfo:"Подскажите изменение слова"},storyboardTable:{title:"Таблица раскадровки",editDialog:"Редактировать таблицу раскадровки"},assets:{title:"Производные ассеты",generateFailed:"Ошибка генерации",notGenerated:"Не сгенерировано",originalAsset:"Оригинал",derived:"Производные",noDerivedAssets:"Нет производных ассетов"},poster:{title:"Обложка видео",coverCount:"{count} шт."},workbench:{title:"Рабочий стол видео"}},editImage:{upload:"Загрузить",generate:"Сгенерировать",saveFailed:"Ошибка сохранения, попробуйте снова",fetchFailed:"Не удалось получить данные",generating:"Генерация...",deleteNode:"Удалить узел",ratio:"Соотношение",quality:"Качество",generateBtn:"Сгенерировать изображение",selectImage:"Выбрать изображение",imageGeneration:"Генерация изображения",promptPlaceholder:"Опишите изображение, которое хотите сгенерировать...",imageRef:"Изображение {index}",noReferences:"Нет доступных референсов",selectModel:"Сначала выберите модель",selectQuality:"Выберите качество",selectRatio:"Выберите соотношение",generateFailed:"Ошибка генерации",generateFirst:"Сначала сгенерируйте изображение",generatedResult:"Результаты",waitingGenerate:"В очереди",layoutLR:"Авторазметка - горизонтально",layoutTB:"Авторазметка - вертикально",uploadAssetImage:"Загрузить изображение ресурса",uploadStoryboardImage:"Загрузить изображение раскадровки",uploadImage:"Загрузка изображения объекта",mode:"модель",closeConfirmTitle:"Закрыть панель редактирования?",closeConfirmBody:"Несохраненные данные будут потеряны после закрытия."},save:"Выбирать",cancel:"Отмена",chatBox:{inputPlaceholder:"Введите сообщение...",generateDerivedAssets:"Сгенерировать производные ассеты",welcomeMessage:"Привет! Я ваш ИИ-ассистент. Чем могу помочь?",adjustModel:"Настроить модель",startMakingVideo:"Начать создание видео",startMakingVideoPrompt:"Пожалуйста, помоги мне начать создание видео",clearMessageMemory:"Очистить память сообщений",clearSummaryMemory:"Очистить память сжатий",clearAllMemory:"Очистить всю память",messageMemory:"Память сообщений",summaryMemory:"Память сжатий",allMemory:"Вся память",confirmClear:"Очистить память",confirmClearBody:"Вы уверены, что хотите очистить {type}?",confirmClearBtn:"Подтвердить очистку",memoryCleared:"{type} очищена"},wb:{quickPreview:"Быстрый предпросмотр",videoGeneration:"Раскадровка",videoEditing:"монтажный стол",hint:"Подсказка",extractLines:"Извлечь реплики из видео?",no:"Нет",confirm:"Да",extractLinesQuestion:"Хотите извлечь диалоги из видео в качестве субтитров?",importingLoading:"Импорт, пожалуйста, подождите...",mainTrackVideo:"Основная дорожка (Видео)",subtitle1:"Субтитры 1",storyboardVideoName:"Видео раскадровки-{storyboard}.mp4"},preview:{noImage:"Нет изображения",storyboardDesc:"Описание раскадровки",serialNumber:"№",noDescription:"Нет описания",duration:"Длит.",seconds:"с",relatedAssets:"Связанные ассеты",role:"Персонаж",prop:"Предмет",scene:"Сцена",noCharacters:"Без персонажей",imagePrompt:"Промпт изображения",selectAll:"Выбрать все",exportImage:"Экспорт изображений",sceneDescription:"Описание кадра",promptLabel:"Промпт",restoreSort:"Сбросить сортировку",restoreSortConfirm:"Вы уверены, что хотите вернуть исходную сортировку?",tip:"Подсказка",selectAtLeastOne:"Пожалуйста, выберите хотя бы один кадр для экспорта",exportFilename:"Раскадровки изображений"},generate:{noVideo:"Нет видео",videoPrompt:"Промпт видео",promptPlaceholder:"Введите слова-подсказки, описывающие видеоконтент, который вы хотите создать...",refImage:"Референс",image:"Изображение",refVideo:"Референс видео",refImageLabel:"Референс изображения",refAudio:"Референс аудио",muteAudio:"Выключить звук",enableAudio:"Включить звук",resolution:"Разрешение",duration:"Длит.",generate:"Сгенерировать",historyVersions:"История версий",confirmSelection:"Подтвердить выбор",noHistory:"Нет истории",generating:"Генерация",generateFailed:"Ошибка генерации",selectAll:"Выбрать все",videoTrack:"Видеодорожка",batchGenerate:"Пакетная генерация",importToEditor:"Импорт в редактор",modeSingleImage:"Одно изображение",modeMultiImage:"Много изображений",modeGridImage:"Сетка изображений",modeStartEnd:"Первый и последний кадры",modeText:"Текст в видео",modeVideoRef:"По видео-референсу",modeImageRef:"По изображению",modeAudioRef:"По аудио-референсу",modeTextRef:"По тексту",startFrame:"Первый кадр",startFrameOptional:"Первый кадр (Необязательно)",endFrame:"Последний кадр",endFrameOptional:"Последний кадр (Необязательно)",selectRefImage:"Выбрать референс",selectRefImages:"Выбрать референсы",selectEndFrame:"Выбрать последний кадр",selectRefVideoAsset:"Выбрать видео-референс",selectRefAudioAsset:"Выбрать аудио-референс",selectRefImageAsset:"Выбрать изображение-референс",selectImageSource:"Выбрать источник изображения",fromStoryboard:"Раскадровка",fromStoryboardDesc:"Выбрать изображение из раскадровки",fromAssets:"Ресурс",fromAssetsDesc:"Выбрать изображение из библиотеки ресурсов",confirmDelete:"Подтверждение удаления",confirmDeleteBody:"Вы уверены, что хотите удалить это видео? Это действие необратимо.",delete:"Удалить",cancel:"Отмена",deleteSuccess:"Видео успешно удалено",deleteFailed:"Ошибка удаления",selectVideoFirst:"Пожалуйста, сначала выберите видео",confirmSuccess:"Выбор подтвержден",batchSubmitted:"Запрос на пакетную генерацию отправлен. В обработке...",configNotFound:"Конфигурация не найдена",pollingFailed:"Не удалось выполнить запрос статуса видео. Обновите вручную.",batchGeneratePrompt:"Генерируйте подсказки в пакетном режиме",batchPromptEmpty:"Раскадровка {name} доступна для видеоподсказок. Пожалуйста, сначала создайте или заполните приглашение",modelEmpty:"Сначала выберите модель создания видео",generatingPrompt:"Интеллектуальное генерирование подсказок"},editVideo:{reset:"Сброс",undo:"Отменить",redo:"Повторить",split:"Разделить",delete:"Удалить",rendering:"Рендеринг...",exportVideo:"Экспорт видео",exportSuccess:"Экспорт видео завершен",exportFailed:"Ошибка экспорта",sampleSubtitle:"Пример текста субтитров",customText:"Пользовательский текст",transitionBetweenClips:"Переходы должны добавляться между двумя соседними клипами",transitionExists:"Переход уже существует в этом месте",videoPreviewArea:"Область предпросмотра",clipMaterials:"Материалы клипа",propertyPanel:"Панель свойств",selectClip:"Выберите клип для просмотра свойств",basicInfo:"Основная информация",name:"Название",clipNamePlaceholder:"Название клипа",startTime:"Начало",endTime:"Конец",totalDuration:"Общая длительность",videoProperties:"Свойства видео",opacity:"Непрозрачность",volume:"Громкость",playbackSpeed:"Скорость",audioProperties:"Свойства аудио",fadeIn:"Плавное появление",fadeOut:"Плавное затухание",transitionProperties:"Свойства перехода",transitionType:"Тип перехода",transFade:"Затухание",transSlide:"Сдвиг",transWipe:"Вытеснение",transDissolve:"Растворение",transZoom:"Масштаб",transRotate:"Вращение",transitionDuration:"Длительность перехода",subtitleProperties:"Свойства субтитров",textContent:"Текст",fontSize:"Размер шрифта",copy:"Копировать",deleteConfirm:"Подтверждение удаления",deleteClipConfirm:"Вы уверены, что хотите удалить этот клип?",avCanvasNotInit:"AVCanvas не инициализирован",noExportContent:"Нет содержимого для экспорта",exportProject:"Экспорт проекта",transitionAdded:"Переход добавлен: {name}",splitClip:"Разделить клип",deleteClip:"Удалить клип",addClip:"Добавить {name}",duplicateClip:"Дублировать клип",addTransition:"Добавить переход",updateClip:"Обновить клип {key}",updatePlaybackRate:"Изменить скорость на {rate}x",updateTransitionDuration:"Обновить длительность перехода",playbackRateRange:"Скорость воспроизведения должна быть от 0.1 до 10",updatePlaybackRateFailed:"Ошибка изменения скорости:",importProject:"Импорт проекта",import:"Импорт"},clipType:{video:"Видео",audio:"Аудио",subtitle:"Субтитры",transition:"Переход",sticker:"Стикер",filter:"Фильтр",effect:"Эффект"},track:{video:"Видео",image:"Изображение",audio:"Аудио",subtitle:"Субтитры",text:"Текст",sticker:"Стикер",filter:"Фильтр",effect:"Эффект"},transition:{fade:"Затухание",slide:"Сдвиг",slideLeft:"Сдвиг влево",slideRight:"Сдвиг вправо",slideUp:"Сдвиг вверх",slideDown:"Сдвиг вниз",wipe:"Вытеснение",wipeLeft:"Вытеснение влево",wipeRight:"Вытеснение вправо",wipeUp:"Вытеснение вверх",wipeDown:"Вытеснение вниз",dissolve:"Растворение",zoom:"Масштаб",zoomIn:"Приближение",zoomOut:"Отдаление",rotate:"Вращение",circle:"Круг",diamond:"Ромб",clock:"Часы",blur:"Размытие"},media:{titleText:"Текст заголовка",subtitleText:"Текст субтитров",customText:"Пользовательский текст",media:"Медиа",image:"Изображение",audio:"Аудио",subtitle:"Субтитры",transition:"Переход",effect:"Эффект",filter:"Фильтр",loading:"Загрузка...",subtitlePreview:"Т",video:"видео"},effect:{fadeIn:"Появление",fadeOut:"Затухание",flash:"Вспышка",shake:"Тряска",zoomIn:"Приближение (эффект)",zoomOut:"Отдаление (эффект)",pulse:"Пульсация",rotateIn:"Вращение (вход)",sticker1:"Стикер 1",sticker2:"Стикер 2"},filter:{grayscale:"Ч/Б",sepia:"Сепия",warm:"Теплый",cool:"Холодный",vivid:"Яркий",bright:"Светлый",highContrast:"Контрастный",blur:"Размытие",invert:"Инверсия",semiTransparent:"Полупрозрачный"},guideSwitchEpisode:"Переключение эпизодов",guideSwitchEpisodeBody:"Переключение эпизодов перенесено сюда!",autoLayoutLR:"Автоматический набор текста — левая и правая раскладка",autoLayoutTB:"Автоматический набор текста — верхняя и нижняя раскладка",getFlowData:"Обновить рабочую область",confirm:"Подтверждение переключения эпизода",confirmEpisodesSwitch:"Текущая задача все еще находится в стадии выполнения. Переключение эпизодов приведет к переподключению сеанса. Продолжить переключение?"},task:{title:"Список задач",subtitle:"История выполнения ваших задач",refresh:"Обновить",categoryLabel:"Категория:",stateLabel:"Статус:",noFailReason:"Нет причины ошибки",stateAll:"Все",stateRunning:"В процессе",stateCompleted:"Завершено",stateFailed:"Ошибка",fetchFailed:"Не удалось получить список задач",col:{taskClass:"Категория задачи",relatedObjects:"Связанные объекты",model:"Модель",describe:"Описание",state:"Статус",startTime:"Время",reason:"Причина неудачи"},project:"Название проекта:"},noVideo:"Видео пока нет",prompt:"Видео слова-подсказки",generateText:"ИИ генерировал слова-подсказки",selectStoryboard:"Выберите раскадровку",generate:{noVideo:"Видео пока нет",generateText:"ИИ генерировал слова-подсказки",selectStoryboard:"Выберите раскадровку",generate:"Создать видео",history:"Историческая версия",generating:"Создание",generateFailed:"неудача",selectAll:"Выбрать все",selected:"Выбрано",batchGenerateText:"Генерируйте подсказки в пакетном режиме",batchGenerateVideo:"Генерируйте видео в пакетном режиме",importVideo:"Импортировать в редакторский стол",emptyTrack:"Абзац {индекс 1}",del:"удалить",delConfirm:"Вы уверены, что хотите удалить этот абзац?",selectSource:"Выберите источник",confirm:"Выбрать из активов",cancel:"Выбрать из раскадровки",selectVideoFailed:"Не удалось выбрать видео.",selectVideoSuccess:"Видео выбрано успешно",selectTrackFirst:"Пожалуйста, сначала выберите раскадровку",noSelectedVideo:"Видео не выбрано",generateConfirm:"Подтвердить генерацию",generateConfirmBody:"Подтвердите создание видео",generateVideosInBatches:"Генерируйте видео в пакетном режиме",generateStarted:"Начало сборки",promptEmpty:"Проверьте данные, необходимые для создания видео, и слово подсказки пусто. Хотите ли вы продолжить его создание?",skipDataWithEmptyVideoPromptWords:"Видеоданные, которые необходимо сгенерировать, существуют, а слово подсказки пусто.",duration:"продолжительность",resolution:"разрешение",delVideo:"Подтвердить удаление этого видео?",delSuccess:"Удалить успешно",addReference:"добавить ссылку",promptPlaceholder:"Пожалуйста, введите слово-подсказку к видео",downloadVideo:"Скачивайте видео партиями",selectVideo:"Пожалуйста, проверьте видео, которое вы хотите скачать"}},MSi={slogan:"Умная платформа для создания коротких драм",tips:"Аккаунт по умолчанию: admin / admin123",settings:"Настройки сервера",requestAddress:"URL запроса",username:"Имя пользователя",password:"Пароль",login:"Войти",usernameRequired:"Пожалуйста, введите имя пользователя",passwordRequired:"Пожалуйста, введите пароль",enterUsernameAndPassword:"Пожалуйста, введите имя пользователя или пароль",loginSuccess:"Успешный вход",settingsSaved:"Настройки сохранены"},PSi={cancel:"Отмена",confirm:"Подтвердить",selectAssets:"Выбрать ресурсы",sessionExpired:"Сессия истекла, пожалуйста, войдите снова",openSettings:"Открыть настройки",defaultReel:"Основной том",save:"сохранять",submitting:"Отправка",editSuccess:"Модификация прошла успешно",editFailed:"Модификация не удалась",submit:"представлять на рассмотрение"},FSi={prompt:"подсказать слово"},NSi={welcomeTitle:"Добро пожаловать в ToonFlow",welcomeDesc:"Платформа рабочего процесса создания комиксов, управляемая искусственным интеллектом, давайте потратим минуту, чтобы завершить первоначальную настройку.",startConfig:"Начать настройку",skip:"Пропустить загрузку",configModel:"Добавить модельный сервис",configData:"Настроить агент",startUse:"Начать",configModelTitle:"Добавить поставщика услуг модели",configModelDesc:"Сначала вам необходимо добавить в настройках хотя бы одного поставщика услуг модели ИИ (например, OpenAI, Claude и т. д.) и заполнить соответствующий ключ API.",configModelTip:"Нажатие кнопки ниже откроет вкладку «Сервис модели» на странице настроек. После добавления поставщика вернитесь сюда, чтобы продолжить.",configModelBtn:"Перейти к настройке сервиса модели",configAgentTitle:"Назначить модель агента",configAgentDesc:"Затем назначьте модели каждому функциональному модулю в конфигурации агента, чтобы система знала, какую модель вызывать для выполнения задачи.",configAgentTip:"Нажатие кнопки ниже откроет вкладку «Конфигурация агента» на странице настроек. Вернитесь сюда после назначения моделей каждой функции.",configAgentBtn:"Перейти к настройке агента",finishTitle:"🎉Все готово!",finishDesc:"Настройка завершена, и теперь вы можете начать использовать все функции. Если вам нужно его настроить, вы можете изменить его в настройках в любое время.",qrcodeLabel:"Присоединяйтесь к группе общения WeChat, чтобы получить дополнительную помощь:",githubLabel:"Если вы найдете это полезным, пожалуйста, поставьте нам ⭐ Звезду!",prevStep:"Предыдущий шаг",nextStep:"Следующий шаг",finish:"Начать"},USi={skillManagement:{search:"Поиск по имени файла",empty:"Нет подходящих файлов",edit:"редактировать",selectOnTheLeft:"Пожалуйста, выберите файл слева"}},jSi={assets:{notExist:"Актив не существует",notDerivativeExist:"Производные активы не существуют",derivativeUpdateSuccess:"Обновление успешно выполнено",derivativeState:"Не создано",derivativeAddSuccess:"Добавлено успешно",derivativeDelSuccess:"Удалить успешно",notGenerated:"Не создано"},addSuccess:"Обновление успешно выполнено",state:{unused:"Не создано"},saveSuccess:"Добавлено успешно"},WSi={generating:"Создание"},VSi={scanning:"🔍 Парсинг и загрузка навыков",scanComplete:"✨ Сканирование Skill завершено",inserted:"✅ Добавлено {count} навыков",updated:"🔄 Обновлено {count} Skill",removed:"🗑️ Удалено {count} Skill",scannedFiles:"📁 Просканировано {count} файлов",noDescription:"📝 {count} Skill без описания",noAttribution:"👤 {count} Skill без атрибуции",configWarning:"⚠️ Предупреждение конфигурации Skill",openSettings:"Открыть настройки",scanFailed:"❌ Сканирование не удалось",checkNetwork:"🔌 Проверьте сетевое подключение или повторите попытку позже",retryLater:"🔁 Повторите попытку позже"},zSi="Создать видео",HSi="Историческая версия",$Si="Создание",XSi="неудача",GSi="Выбрать все",YSi="Выбрано",ZSi="Импортировать видео",qSi="Абзац {индекс 1}",KSi="Подтвердить удаление",JSi="Вы уверены, что хотите удалить этот абзац?",e8i="Выберите источник",t8i="Выбрать из активов",n8i="Выбрать из раскадровки",i8i={newVersion:"Вышла новая версия, хотите ее обновить?"},r8i={components:BSi,settings:RSi,workbench:ISi,login:MSi,common:PSi,"components.storyboardImageCheck.camera":"Камера","components.storyboardImageCheck.dialogTitle":"Выбрать изображение раскадровки","components.storyboardImageCheck.preview":"Предпросмотр","components.storyboardImageCheck.src":"Предпросмотр изображения","components.storyboardImageCheck.title":"Заголовок","components.storyboardImageCheck.duration":"Длительность","components.storyboardImageCheck.lines":"Реплики","components.storyboardImageCheck.createTime":"Дата создания","workbench.script.extractAssets":"Извлечь ресурсы",promptManage:FSi,hello:NSi,setting:USi,storyboard:jSi,productionAgent:WSi,skillScan:VSi,generate:zSi,history:HSi,generating:$Si,generateFailed:XSi,selectAll:GSi,selected:YSi,importVideo:ZSi,emptyTrack:qSi,del:KSi,delConfirm:JSi,selectSource:e8i,confirm:t8i,cancel:n8i,"workbench.script.msg.exportFailed":"Экспорт не удался","workbench.production.node.assets.confirmDeleteBody":"Подтвердите, следует ли удалить объект","workbench.production.node.assets.removeFailed":"Не удалось удалить объект.",version:i8i,"workbench.production.generatedNode.localUpload":"Локальная загрузка","workbench.production.editImage.uploadFailed":"Не удалось загрузить изображение.","workbench.production.editImage.noImage":"Пожалуйста, сначала добавьте фотографии"},GZe=[{label:"简体中文",tips:"Chinese (Simplified)",value:"zh-CN"},{label:"繁體中文",tips:"Chinese (Traditional)",value:"zh-TW"},{label:"English",tips:"English",value:"en"},{label:"ไทย",tips:"Thai",value:"th-TH"},{label:"Tiếng Việt",tips:"Vietnamese",value:"vi-VN"},{label:"日本語",tips:"Japanese",value:"ja-JP"},{label:"Русский",tips:"Russian",value:"ru-RU"}],yW=q4e("locale","zh-CN"),dOn=syi({legacy:!1,locale:yW.value,fallbackLocale:"en",messages:{"zh-CN":hCi,"zh-TW":FCi,en:c_i,"th-TH":R_i,"vi-VN":sSi,"ja-JP":DSi,"ru-RU":r8i}}),qse=lOn("theme-setting",{mode:"light",primaryColor:"#000"}),o8i=e=>{const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return{h:0,s:0,l:0};const n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,o=parseInt(t[3],16)/255,s=Math.max(n,r,o),a=Math.min(n,r,o),l=(s+a)/2;let d=0,u=0;if(s!==a){const h=s-a;u=l>.5?h/(2-s-a):h/(s+a),s===n?d=((r-o)/h+(r{t/=100,n/=100;const r=(1-Math.abs(2*n-1))*t,o=r*(1-Math.abs(e/60%2-1)),s=n-r/2;let a=0,l=0,d=0;e<60?[a,l,d]=[r,o,0]:e<120?[a,l,d]=[o,r,0]:e<180?[a,l,d]=[0,r,o]:e<240?[a,l,d]=[0,o,r]:e<300?[a,l,d]=[o,0,r]:[a,l,d]=[r,0,o];const u=h=>Math.round((h+s)*255).toString(16).padStart(2,"0");return`#${u(a)}${u(l)}${u(d)}`},a8i=e=>{const{h:t,s:n,l:r}=o8i(e);return[97,92,85,75,62,r,Math.max(r-12,20),Math.max(r-24,15),Math.max(r-36,10),Math.max(r-48,5)].map(s=>s8i(t,n,s))},l8i=e=>{const t=e==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;t==="dark"?document.documentElement.setAttribute("theme-mode","dark"):document.documentElement.removeAttribute("theme-mode"),t==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},A1t=e=>{const t=document.documentElement,n=a8i(e),r=t.getAttribute("theme-mode")==="dark";(r?[...n].reverse():n).forEach((s,a)=>t.style.setProperty(`--td-brand-color-${a+1}`,s)),["","-hover:5","-focus:2","-active:7","-disabled:3","-light:1","-light-hover:2"].forEach(s=>{const[a,l]=s.split(":");t.style.setProperty(`--td-brand-color${a}`,l?`var(--td-brand-color-${l})`:"var(--td-brand-color-6)")}),t.style.setProperty("--td-text-color-brand",`var(--td-brand-color-${r?8:7})`),t.style.setProperty("--td-text-color-link","var(--td-brand-color-8)")},c8i=(e,t)=>{if(!document.startViewTransition){t();return}const n=window.innerWidth/2,r=window.innerHeight/2,o=Math.hypot(Math.max(n,window.innerWidth-n),Math.max(r,window.innerHeight-r)),s=document.documentElement;s.style.setProperty("--x",`${n}px`),s.style.setProperty("--y",`${r}px`),s.style.setProperty("--r",`${o}px`),document.startViewTransition(t)},d8i=()=>{l8i(qse.value.mode),A1t(qse.value.primaryColor),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{qse.value.mode==="auto"&&c8i(void 0,()=>{(e.matches?"dark":"light")==="dark"?(document.documentElement.setAttribute("theme-mode","dark"),document.documentElement.classList.add("dark")):(document.documentElement.removeAttribute("theme-mode"),document.documentElement.classList.remove("dark")),A1t(qse.value.primaryColor)})})},u8i=e=>{const t=typeof e;return t!=="function"&&t!=="object"||e===null},h8i=e=>{const t=e.flags===""?void 0:e.flags;return new RegExp(e.source,t)},pG=(e,t=new WeakMap)=>{if(e===null||u8i(e))return e;if(t.has(e))return t.get(e);if(e instanceof RegExp)return h8i(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Function)return e;if(e instanceof Map){const r=new Map;return t.set(e,r),e.forEach((o,s)=>{r.set(s,pG(o,t))}),r}if(e instanceof Set){const r=new Set;t.set(e,r);for(const o of e)r.add(pG(o,t));return r}if(Array.isArray(e)){const r=[];return t.set(e,r),e.forEach(o=>{r.push(pG(o,t))}),r}const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=pG(e[r],t));return n},uOn=(e,t=200)=>{let n=0;return(...r)=>new Promise(o=>{n&&(clearTimeout(n),o("cancel")),n=window.setTimeout(()=>{e.apply(void 0,r),n=0,o("done")},t)})},f8i=(e,t={_blank:!0,nofollow:!0})=>{const n=document.createElement("a");n.href=e,t._blank&&(n.target="_blank"),t.nofollow&&(n.rel="noopener noreferrer"),n.click()},YZe=()=>{let e=-1;return(t,n,r,o=100)=>{const s=()=>{r&&(typeof o=="number"?setTimeout(r,o):r())};e!==-1&&(cancelAnimationFrame(e),s());let a=t.scrollTop;const l=()=>{e=-1;const d=n-a;a=a+d/5,Math.abs(d)<1?(t.scrollTo(0,n),s()):(t.scrollTo(0,a),e=requestAnimationFrame(l))};e=requestAnimationFrame(l)}},g8i=(e,t=200)=>{let n=0,r=null;const o=s=>{n===0&&(n=s),s-n>=t?(e.apply(void 0,r),r=null,n=0):window.requestAnimationFrame(o)};return(...s)=>{r===null&&window.requestAnimationFrame(o),r=s}},m8i=e=>{const t=n=>{const{scrollHeight:r,scrollWidth:o,offsetHeight:s,offsetWidth:a,scrollLeft:l,scrollTop:d}=e,u=n.x,h=n.y,g=v=>{const f=d+h-v.y,k=l+u-v.x,A=r-s,p=o-a,b={};k>=0&&k<=p&&(b.left=k),f>=0&&f<=A&&(b.top=f),e.scroll(b)};document.addEventListener("mousemove",g);const m=()=>{document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",m)};document.addEventListener("mouseup",m)};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},AMe=()=>`${Date.now().toString(36)}${Math.random().toString(36).substring(2)}`,gge=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),K4e=(e,t,n={})=>{if(Array.isArray(e)&&Array.isArray(t))return pMe(e,t,n);const{excludeKeys:r}=n;for(const o in t){const s=t[o],a=e[o];r&&r(o)?e[o]=s:Array.isArray(s)&&Array.isArray(a)?e[o]=pMe(a,s,n):gge(s)&&gge(a)?e[o]=K4e(a,s,n):e[o]=s}return e},pMe=(e,t,n)=>{const r=e.slice();return t.forEach((o,s)=>{const a=r[s];Array.isArray(o)&&Array.isArray(a)?r[s]=pMe(a,o,n):gge(o)&&gge(a)?r[s]=K4e(a,o,n):r[s]=o}),r},kt="md-editor",k8i="MdEditor",Zc="https://unpkg.com",v8i=`${Zc}/@highlightjs/cdn-assets@11.11.1/highlight.min.js`,p1t={main:`${Zc}/prettier@3.8.1/standalone.js`,markdown:`${Zc}/prettier@3.8.1/plugins/markdown.js`},A8i={css:`${Zc}/cropperjs@1.6.2/dist/cropper.min.css`,js:`${Zc}/cropperjs@1.6.2/dist/cropper.min.js`},p8i=`${Zc}/screenfull@5.2.0/dist/screenfull.js`,b8i=`${Zc}/mermaid@11.12.3/dist/mermaid.min.js`,w8i={js:`${Zc}/katex@0.16.33/dist/katex.min.js`,css:`${Zc}/katex@0.16.33/dist/katex.min.css`},bMe={a11y:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/a11y-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/a11y-dark.min.css`},atom:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/atom-one-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/atom-one-dark.min.css`},github:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/github.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/github-dark.min.css`},gradient:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/gradient-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/gradient-dark.min.css`},kimbie:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/kimbie-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/kimbie-dark.min.css`},paraiso:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/paraiso-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/paraiso-dark.min.css`},qtcreator:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/qtcreator-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/qtcreator-dark.min.css`},stackoverflow:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/stackoverflow-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/stackoverflow-dark.min.css`}},O8i=`${Zc}/echarts@6.0.0/dist/echarts.min.js`,hOn=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","link","image","table","mermaid","katex","-","revoke","next","save","=","prettier","pageFullscreen","fullscreen","preview","previewOnly","htmlPreview","catalog","github"],fOn=["markdownTotal","=","scrollSwitch"],b1t={"zh-CN":{toolbarTips:{bold:"加粗",underline:"下划线",italic:"斜体",strikeThrough:"删除线",title:"标题",sub:"下标",sup:"上标",quote:"引用",unorderedList:"无序列表",orderedList:"有序列表",task:"任务列表",codeRow:"行内代码",code:"块级代码",link:"链接",image:"图片",table:"表格",mermaid:"mermaid图",katex:"katex公式",revoke:"后退",next:"前进",save:"保存",prettier:"美化",pageFullscreen:"浏览器全屏",fullscreen:"屏幕全屏",preview:"预览",previewOnly:"仅预览",htmlPreview:"html代码预览",catalog:"目录",github:"源码地址"},titleItem:{h1:"一级标题",h2:"二级标题",h3:"三级标题",h4:"四级标题",h5:"五级标题",h6:"六级标题"},imgTitleItem:{link:"添加链接",upload:"上传图片",clip2upload:"裁剪上传"},linkModalTips:{linkTitle:"添加链接",imageTitle:"添加图片",descLabel:"链接描述:",descLabelPlaceHolder:"请输入描述...",urlLabel:"链接地址:",urlLabelPlaceHolder:"请输入链接...",buttonOK:"确定"},clipModalTips:{title:"裁剪图片上传",buttonUpload:"上传"},copyCode:{text:"复制代码",successTips:"已复制!",failTips:"复制失败!"},mermaid:{flow:"流程图",sequence:"时序图",gantt:"甘特图",class:"类图",state:"状态图",pie:"饼图",relationship:"关系图",journey:"旅程图"},katex:{inline:"行内公式",block:"块级公式"},footer:{markdownTotal:"字数",scrollAuto:"同步滚动"}},"en-US":{toolbarTips:{bold:"bold",underline:"underline",italic:"italic",strikeThrough:"strikeThrough",title:"title",sub:"subscript",sup:"superscript",quote:"quote",unorderedList:"unordered list",orderedList:"ordered list",task:"task list",codeRow:"inline code",code:"block-level code",link:"link",image:"image",table:"table",mermaid:"mermaid",katex:"formula",revoke:"revoke",next:"undo revoke",save:"save",prettier:"prettier",pageFullscreen:"fullscreen in page",fullscreen:"fullscreen",preview:"preview",previewOnly:"preview only",htmlPreview:"html preview",catalog:"catalog",github:"source code"},titleItem:{h1:"Lv1 Heading",h2:"Lv2 Heading",h3:"Lv3 Heading",h4:"Lv4 Heading",h5:"Lv5 Heading",h6:"Lv6 Heading"},imgTitleItem:{link:"Add Image Link",upload:"Upload Images",clip2upload:"Crop And Upload"},linkModalTips:{linkTitle:"Add Link",imageTitle:"Add Image",descLabel:"Desc:",descLabelPlaceHolder:"Enter a description...",urlLabel:"Link:",urlLabelPlaceHolder:"Enter a link...",buttonOK:"OK"},clipModalTips:{title:"Crop Image",buttonUpload:"Upload"},copyCode:{text:"Copy",successTips:"Copied!",failTips:"Copy failed!"},mermaid:{flow:"flow",sequence:"sequence",gantt:"gantt",class:"class",state:"state",pie:"pie",relationship:"relationship",journey:"journey"},katex:{inline:"inline",block:"block"},footer:{markdownTotal:"Character Count",scrollAuto:"Scroll Auto"}}},dh={editorExtensions:{highlight:{js:v8i,css:bMe},prettier:{standaloneJs:p1t.main,parserMarkdownJs:p1t.markdown},cropper:{...A8i},screenfull:{js:p8i},mermaid:{js:b8i,enableZoom:!0},katex:{...w8i},echarts:{js:O8i}},editorExtensionsAttrs:{},editorConfig:{languageUserDefined:{},mermaidTemplate:{},renderDelay:500,zIndex:2e4},codeMirrorExtensions:e=>e,markdownItConfig:()=>{},markdownItPlugins:e=>e,mermaidConfig:e=>e,katexConfig:e=>e,echartsConfig:e=>e},y8i=e=>K4e(dh,e,{excludeKeys(t){return/[iI]{1}nstance/.test(t)}}),Kse=.1,_0=({instance:e,ctx:t,props:n={}},r="default")=>{const o=(e==null?void 0:e.$slots[r])||(t==null?void 0:t.slots[r]);return(o?o(e):"")||n[r]},C8i={overlay:{type:[String,Object],default:""},visible:{type:Boolean,default:!1},onChange:{type:Function,default:()=>{}},relative:{type:String,default:"html"},disabled:{type:Boolean,default:void 0}},Tz=Je({name:`${kt}-dropdown`,props:C8i,setup(e,t){const n=`${kt}-dropdown-hidden`,r=hs({overlayClass:[n],overlayStyle:{},triggerHover:!1,overlayHover:!1}),o=fe(),s=fe(),a=()=>{var y,C;if(e.disabled)return!1;r.triggerHover=!0;const h=o.value,g=s.value;if(!h||!g)return;const m=h.getBoundingClientRect(),v=h.offsetTop,f=h.offsetLeft,k=m.height,A=m.width,p=h.getRootNode(),b=((y=p.querySelector(e.relative))==null?void 0:y.scrollLeft)||0,w=((C=p.querySelector(e.relative))==null?void 0:C.clientWidth)||0;let O=f-g.offsetWidth/2+A/2-b;O+g.offsetWidth>b+w&&(O=b+w-g.offsetWidth),O<0&&(O=0),r.overlayStyle={...r.overlayStyle,insetBlockStart:v+k+"px",insetInlineStart:O+"px"},e.onChange(!0)},l=()=>{if(e.disabled)return!1;r.overlayHover=!0};pt(()=>e.visible,h=>{h?r.overlayClass=r.overlayClass.filter(g=>g!==n):r.overlayClass.push(n)});let d=-1;const u=h=>{o.value===h.target?r.triggerHover=!1:r.overlayHover=!1,clearTimeout(d),d=window.setTimeout(()=>{!r.overlayHover&&!r.triggerHover&&e.onChange(!1)},10)};return An(()=>{o.value.addEventListener("mouseenter",a),o.value.addEventListener("mouseleave",u),s.value.addEventListener("mouseenter",l),s.value.addEventListener("mouseleave",u)}),qs(()=>{o.value.removeEventListener("mouseenter",a),o.value.removeEventListener("mouseleave",u),s.value.removeEventListener("mouseenter",l),s.value.removeEventListener("mouseleave",u)}),()=>{const h=_0({ctx:t}),g=_0({props:e,ctx:t},"overlay"),m=Jv(h instanceof Array?h[0]:h,{ref:o,key:"cloned-dropdown-trigger"}),v=c("div",{class:[`${kt}-dropdown`,r.overlayClass],style:r.overlayStyle,ref:s},[c("div",{class:`${kt}-dropdown-overlay`},[g instanceof Array?g[0]:g])]);return[m,v]}}}),_8i={title:{type:String,default:""},visible:{type:Boolean,default:void 0},trigger:{type:[String,Object],default:void 0},onChange:{type:Function,default:void 0},overlay:{type:[String,Object],default:void 0},insert:{type:Function,default:void 0},language:{type:String,default:void 0},theme:{type:String,default:void 0},previewTheme:{type:String,default:void 0},codeTheme:{type:String,default:void 0},disabled:{type:Boolean,default:void 0},showToolbarName:{type:Boolean,default:void 0}},sue=Je({name:"DropdownToolbar",props:_8i,emits:["onChange"],setup(e,t){const n=bt("editorId"),r=o=>{var s;(s=e.onChange)==null||s.call(e,o),t.emit("onChange",o)};return()=>{const o=_0({props:e,ctx:t},"trigger"),s=_0({props:e,ctx:t},"overlay"),a=_0({props:e,ctx:t});return c(Tz,{relative:`#${n}-toolbar-wrapper`,visible:e.visible,onChange:r,overlay:s,disabled:e.disabled},{default:()=>[c("button",{class:[`${kt}-toolbar-item`,e.disabled&&`${kt}-disabled`],title:e.title||"",disabled:e.disabled,type:"button"},[a||o])]})}}});sue.install=e=>(e.component(sue.name,sue),e);const J4e="onSave",ZZe="changeCatalogVisible",gOn="changeFullscreen",w1t="pageFullscreenChanged",O1t="fullscreenChanged",y1t="previewChanged",C1t="previewOnlyChanged",_1t="htmlPreviewChanged",S1t="catalogVisibleChanged",aue="buildFinished",wy="errorCatcher",To="replace",epe="uploadImage",mOn="ctrlZ",kOn="ctrlShiftZ",jY="catalogChanged",vOn="pushCatalog",qZe="rerender",AOn="eventListener",pOn="taskStateChanged",bOn="sendEditorView",mge="getEditorView";let S8i=class{constructor(){In(this,"pools",{})}remove(t,n,r){const o=this.pools[t]&&this.pools[t][n];o&&(this.pools[t][n]=o.filter(s=>s!==r))}clear(t){this.pools[t]={}}on(t,n){return this.pools[t]||(this.pools[t]={}),this.pools[t][n.name]||(this.pools[t][n.name]=[]),this.pools[t][n.name].push(n.callback),this.pools[t][n.name].includes(n.callback)}emit(t,n,...r){this.pools[t]||(this.pools[t]={});const o=this.pools[t][n];o&&o.forEach(s=>{try{s(...r)}catch(a){console.error(`${n} monitor event exception!`,a)}})}};const Pn=new S8i,L8i=(e,t="image.png")=>{const n=e.split(","),r=n[0].match(/:(.*?);/);if(r){const o=r[1],s=atob(n[1]);let a=s.length;const l=new Uint8Array(a);for(;a--;)l[a]=s.charCodeAt(a);return new File([l],t,{type:o})}return null},x8i=(e,t)=>{if(!e)return e;const n=t.split(` +If you need to adjust it, you can modify it in the settings at any time.`,qrcodeLabel:"Join the WeChat communication group to get more help:",githubLabel:"If you find it useful, please give us a ⭐ Star!",prevStep:"Previous step",nextStep:"Next step",finish:"Get started"},HCi={skillManagement:{search:"Search file name",empty:"No matching files",edit:"edit",selectOnTheLeft:"Please select a file from the left"}},$Ci={assets:{notExist:"Asset does not exist",notDerivativeExist:"Derivative assets do not exist",derivativeUpdateSuccess:"Update successful",derivativeState:"Not generated",derivativeAddSuccess:"Added successfully",derivativeDelSuccess:"Delete successfully",notGenerated:"Not generated"},addSuccess:"Update successful",state:{unused:"Not generated"},saveSuccess:"Added successfully"},XCi={generating:"Generating"},GCi={scanning:"🔍 Parsing and loading Skill",scanComplete:"✨ Skill Scan Complete",inserted:"✅ Added {count} Skills",updated:"🔄 {count} Skill(s) updated",removed:"🗑️ {count} Skill(s) removed",scannedFiles:"📁 Scanned {count} files",noDescription:"📝 {count} Skill(s) missing description",noAttribution:"👤 {count} Skill(s) missing attribution",configWarning:"⚠️ Skill Config Warning",openSettings:"Open Settings",scanFailed:"❌ Scan Failed",checkNetwork:"🔌 Please check network connection or try again later",retryLater:"🔁 Please try again later"},YCi="Generate video",ZCi="Historical version",qCi="Generating",KCi="fail",JCi="Select all",e_i="Selected",t_i="Import video",n_i="Paragraph {index 1}",i_i="Confirm deletion",r_i="Are you sure you want to delete this paragraph?",o_i="Select source",s_i="Select from assets",a_i="Select from storyboard",l_i={newVersion:"There is a new version, do you want to update it?"},c_i={components:NCi,settings:UCi,workbench:jCi,login:WCi,"components.storyboardImageCheck.camera":"Camera","components.storyboardImageCheck.dialogTitle":"Select Storyboard Image","components.storyboardImageCheck.preview":"Preview","components.storyboardImageCheck.src":"Preview Image","components.storyboardImageCheck.title":"Title","components.storyboardImageCheck.duration":"Duration","components.storyboardImageCheck.lines":"Lines","components.storyboardImageCheck.createTime":"Created Time","workbench.script.extractAssets":"Extract Assets",promptManage:VCi,hello:zCi,setting:HCi,storyboard:$Ci,productionAgent:XCi,skillScan:GCi,generate:YCi,history:ZCi,generating:qCi,generateFailed:KCi,selectAll:JCi,selected:e_i,importVideo:t_i,emptyTrack:n_i,del:i_i,delConfirm:r_i,selectSource:o_i,confirm:s_i,cancel:a_i,"workbench.script.msg.selectExport":"","workbench.script.msg.exportFailed":"Export failed","workbench.production.node.assets.confirmDeleteBody":"Confirm whether to delete the asset","workbench.production.node.assets.removeFailed":"Failed to delete asset",version:l_i,"workbench.production.generatedNode.localUpload":"Local upload","workbench.production.editImage.uploadFailed":"Image upload failed","workbench.production.editImage.noImage":"Please add pictures first"},d_i={editMdPreivew:{title:"แก้ไข",confirm:"บันทึก",cancel:"ยกเลิก"},imageTools:{copy:"คัดลอกรูปภาพ",preview:"ดูตัวอย่าง",download:"ดาวน์โหลด",msg:{imageLoadFailed:"โหลดรูปภาพล้มเหลว",convertFailed:"แปลงไฟล์ล้มเหลว",copied:"คัดลอกไปยังคลิปบอร์ดแล้ว",copyFailed:"คัดลอกล้มเหลว",downloadFailed:"ดาวน์โหลดล้มเหลว",downloadStarted:"เริ่มการดาวน์โหลด",downloadBlockedOpenNewWindow:"แหล่งที่มารูปภาพปัจจุบันอาจจำกัดการดาวน์โหลด ระบบได้ลองเปิดในหน้าต่างใหม่แล้ว"}},migrateShow:{title:"ย้ายข้อมูล",desc:"ตรวจพบว่าคุณมีข้อมูลจากเวอร์ชันเก่า ต้องการย้ายข้อมูลหรือไม่?",hide:"ไม่ต้องแสดงอีก",confirm:"ตกลง",msg:{migrateSuccess:"ย้ายข้อมูลสำเร็จ",migrateFailed:"ย้ายข้อมูลล้มเหลว"}},modelSelect:{placeholder:"โปรดเลือกโมเดล",type:{image:"รูปภาพ",text:"ข้อความ",video:"วิดีโอ"},msg:{fetchModelFailed:"ดึงข้อมูลโมเดลล้มเหลว:"},goSetting:"ไปที่การตั้งค่าและเพิ่มโมเดล"}},u_i={title:"การตั้งค่า ToonFlow",menu:{language:"ตั้งค่าภาษา",vendorConfig:"บริการโมเดล",agentConfig:"การตั้งค่า Agent",promptManage:"การจัดการพรอมต์",skillManagement:"จัดการซิลเลคต",memoryConfig:"หน่วยความจำ Agent",loginConfig:"การตั้งค่าเข้าสู่ระบบ",dbConfig:"จัดการฐานข้อมูล",fileManagement:"จัดการไฟล์",otherConfig:"การตั้งค่าอื่นๆ",requestConfig:"ที่อยู่คำขอ (API URL)",about:"ตรวจสอบการอัปเดต",logoutConfig:"ออกจากระบบ",skillsSkillsManagement:"การจัดการทักษะทักษะ"},language:{desc:"เลือกภาษาที่แสดงบนอินเทอร์เฟซ",msg:{saved:"บันทึกการตั้งค่าภาษาแล้ว"}},vendor:{addVendor:"เพิ่มผู้ให้บริการ",noVendor:"ยังไม่มีผู้ให้บริการ โปรดเพิ่มก่อน",required:"จำเป็น",optionalSection:"ตัวเลือกเสริม",modelSettings:"การตั้งค่าโมเดล",addManually:"เพิ่มด้วยตนเอง",test:"ทดสอบ",edit:"แก้ไข",delete:"ลบ",deleteVendor:"ลบผู้ให้บริการ",editCode:"แก้ไขโค้ด",updateConfig:"อัปเดตการตั้งค่า",addModel:"เพิ่มโมเดล",editModel:"แก้ไขโมเดล",displayName:"ชื่อที่แสดง",displayNamePlaceholder:"ตัวอย่างเช่น: GPT-4o",modelId:"รหัสโมเดล (Model ID)",modelIdPlaceholder:"ตัวอย่างเช่น: gpt-4o",modelType:"ประเภทโมเดล",multimodal:"มัลติโมดัล (Multimodal)",supported:"รองรับ",notSupported:"ไม่รองรับ",toolCall:"การเรียกใช้เครื่องมือ",imageMode:"โหมดรูปภาพ",videoMode:"โหมดวิดีโอ",audioOutput:"เอาต์พุตเสียง",durationResolution:"การจับคู่ความยาว / ความละเอียด",durationSec:"ความยาว (วินาที)",resolution:"ความละเอียด",enterAndPress:"พิมพ์แล้วกด Enter",addDurationResolution:"เพิ่มชุดความยาว / ความละเอียด",testResult:"ผลการทดสอบ",generating:"กำลังสร้าง...",addVendorDialog:"เพิ่มผู้ให้บริการ",codeEditorInfo:"โปรดเขียนโค้ด TypeScript เพื่อตั้งค่าข้อมูลผู้ให้บริการ",reset:"รีเซ็ต",importFile:"นำเข้าไฟล์",textModel:"โมเดลข้อความ",imageModel:"โมเดลรูปภาพ",videoModel:"โมเดลวิดีโอ",textToImage:"สร้างภาพจากข้อความ",textToVideo:"สร้างวิดีโอจากข้อความ",singleImage:"รูปภาพเดียว",multiImage:"โหมดหลายรูปภาพ",multiReference:"อ้างอิงหลายรูปภาพ",gridImage:"รูปภาพกริดเดียว",startEndRequired:"เฟรมแรกและสุดท้าย (จำเป็นต้องระบุทั้งสอง)",endFrameOptional:"เฟรมแรกและสุดท้าย (เฟรมสุดท้ายระบุหรือไม่ก็ได้)",startFrameOptional:"เฟรมแรกและสุดท้าย (เฟรมแรกระบุหรือไม่ก็ได้)",textRef:"ข้อความ",imageRef:"รูปภาพ",videoRef:"วิดีโอ",audioRef:"เสียง",audioOptional:"ตัวเลือก",audioOnly:"ส่งออกเฉพาะวิดีโอที่มีเสียง",noAudio:"ส่งออกเฉพาะวิดีโอที่ไม่มีเสียง",msg:{getVendorListFailed:"ดึงรายการผู้ให้บริการล้มเหลว",vendorConfigUpdated:"อัปเดตการตั้งค่าผู้ให้บริการแล้ว",updateFailed:"อัปเดตล้มเหลว",highRiskConfirm:"⚠️ ยืนยันการดำเนินการที่มีความเสี่ยงสูง",addVendorRiskBody:"การเพิ่มผู้ให้บริการ AI รายใหม่จะให้สิทธิ์ในการเข้าถึง API ของระบบ โปรดยืนยันว่าคุณเชื่อถือแหล่งที่มาของโค้ดจากผู้ให้บริการรายนี้!",iKnowRisk:"ฉันรับทราบความเสี่ยง",cancel:"ยกเลิก",confirmAgain:"⚠️ ยืนยันอีกครั้ง",addVendorConfirmBody:"คุณแน่ใจหรือไม่ว่าต้องการเพิ่มผู้ให้บริการรายนี้? หลังจากเพิ่มแล้ว ระบบจะนำไปใช้ในการจัดสรรโมเดล",confirmAndAdd:"ยืนยันและเพิ่ม",goBackCheck:"กลับไปตรวจสอบ",vendorAdded:"เพิ่มผู้ให้บริการสำเร็จแล้ว",addFailed:"เพิ่มล้มเหลว",updateVendorRiskBody:"การอัปเดตการตั้งค่าผู้ให้บริการ AI จะปรับเปลี่ยนสิทธิ์และพฤติกรรมการเข้าถึง API ของระบบ โปรดยืนยันว่าคุณเชื่อถือแหล่งที่มาของโค้ดที่ถูกแก้ไขนี้!",updateVendorConfirmBody:"คุณแน่ใจหรือไม่ว่าต้องการอัปเดตการตั้งค่าผู้ให้บริการนี้? การอัปเดตจะมีผลต่อการจัดสรรโมเดลของระบบ",confirmAndUpdate:"ยืนยันและอัปเดต",updateSuccess:"อัปเดตการตั้งค่าผู้ให้บริการสำเร็จ",fillDisplayName:"โปรดกรอกชื่อที่แสดง",fillModelId:"โปรดกรอกรหัสโมเดล",selectImageMode:"โปรดเลือกโหมดรูปภาพ",selectVideoMode:"โปรดเลือกโหมดวิดีโอ",groupPrefix:"กลุ่มที่ {n}:",addDuration:"โปรดเพิ่มความยาว",addResolution:"โปรดเพิ่มความละเอียด",selectVendorFirst:"โปรดเลือกผู้ให้บริการก่อน",modelIdExists:"รหัสโมเดลนี้มีอยู่แล้ว",modelAdded:"เพิ่มโมเดลสำเร็จแล้ว",modelUpdated:"อัปเดตโมเดลสำเร็จแล้ว",enterApiKey:"โปรดกรอก API KEY",enterApiUrl:"โปรดกรอก API URL",testSuccess:"ทดสอบสำเร็จ",imageGenSuccess:"สร้างรูปภาพสำเร็จ",videoGenSuccess:"สร้างวิดีโอสำเร็จ",requestFailed:"ส่งคำขอล้มเหลว",deleteModelConfirm:"ยืนยันการลบโมเดล",deleteModelBody:"หลังจากลบแล้วจะไม่สามารถกู้คืนได้ ต้องการดำเนินการต่อหรือไม่?",confirmDelete:"ยืนยันการลบ",modelDeleted:"ลบโมเดลแล้ว",deleteVendorConfirm:"ยืนยันการลบผู้ให้บริการ",deleteVendorBody:"หลังจากลบแล้ว โมเดลทั้งหมดภายใต้ผู้ให้บริการรายนี้จะถูกลบไปด้วย ต้องการดำเนินการต่อหรือไม่?",vendorDeleted:"ลบผู้ให้บริการแล้ว",deleteFailed:"ลบล้มเหลว",enabled:"เปิดใช้งานแล้ว",disabled:"พิการ",linkAddVendorRiskBody:"การเพิ่มผู้จำหน่าย AI ใหม่จะทำให้สามารถเข้าถึง API ระบบได้ โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อถือแหล่งลิงก์ของผู้ขาย!",importAdd:"การเพิ่มผู้จำหน่าย AI ใหม่จะทำให้สามารถเข้าถึง API ระบบได้ โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อถือแหล่งเอกสารประกอบของผู้ขาย!",linkAddFailed:"ไม่สามารถเพิ่มลิงก์"},associationSkills:"ทักษะที่เกี่ยวข้อง",think:"คิดลึก",code:"รหัส",linkAddPlaceholder:"ใส่ลิงค์เพื่อเพิ่ม",noFileSelected:"นำเข้าไฟล์เรียบร้อยแล้ว",linkAdd:"ยืนยัน"},agent:{bannerDesc:"ใช้เซิร์ฟเวอร์ตัวกลางอย่างเป็นทางการของ Toonflow รองรับการกรอกการตั้งค่าในคลิกเดียว พร้อมใช้งานทันทีโดยไม่ต้องตั้งค่าด้วยตนเอง",visitWebsite:"เข้าสู่เว็บไซต์",fillKey:"กรอก KEY",oneClickFill:"กรอกในคลิกเดียว",notOpen:"ยังไม่เปิดให้บริการ",notConfigured:"ยังไม่ได้ตั้งค่า",modelConfig:"การตั้งค่าโมเดล",confirm:"ยืนยัน",cancel:"ยกเลิก",selectModel:"เลือกโมเดล",fillKeyHeader:"กรอก KEY อย่างเป็นทางการจากแพลตฟอร์ม Toonflow",keyPlaceholder:"โปรดกรอก KEY",save:"บันทึก",msg:{notAvailable:"ฟีเจอร์นี้ยังไม่เปิดให้บริการ โปรดติดตามเร็วๆ นี้",configSuccess:"ตั้งค่าสำเร็จ",updateConfigFailed:"อัปเดตการตั้งค่าล้มเหลว:",keyValid:"KEY ถูกต้อง เชื่อมต่อกับแพลตฟอร์ม Toonflow สำเร็จแล้ว",keyInvalid:"KEY ไม่ถูกต้อง โปรดตรวจสอบและกรอกใหม่อีกครั้ง:",enterKey:"โปรดกรอก KEY",saveFailed:"บันทึกล้มเหลว:",getAgentListFailed:"ดึงรายการการตั้งค่า Agent ล้มเหลว:",toonflowNotFound:"ไม่มีสถานีรับส่งอย่างเป็นทางการของ Toonflow"}},memory:{warning:"รายการการตั้งค่าต่อไปนี้ถูกกำหนดล่วงหน้าเป็นค่าที่แนะนำ เว้นแต่คุณจะเข้าใจความหมายและผลกระทบของการตั้งค่าแต่ละรายการอย่างชัดเจน ขอแนะนำให้คงการตั้งค่าปัจจุบันไว้",vectorModelConfig:"การตั้งค่าโมเดลเวกเตอร์ (Vector Model)",modelFilePath:"เส้นทางไฟล์โมเดล",quantizationType:"ประเภท Quantization",quantizationPlaceholder:"โปรดกรอกประเภท Quantization",memoryParams:"พารามิเตอร์หน่วยความจำ",messagesPerSummary:"จำนวนข้อความที่จะทริกเกอร์การบีบอัด",messagesPerSummaryHelp:"เก็บบริบทของบทสนทนา N รายการล่าสุด",shortTermLimit:"จำนวนข้อความที่ยังไม่ถูกบีบอัดในการดึงข้อมูลครั้งเดียว",shortTermLimitHelp:"จำนวนหน่วยความจำที่เป็นไปได้ที่จะถูกส่งคืนเมื่อทำการค้นหา",summaryMaxLength:"จำนวนตัวอักษรสูงสุดในการบีบอัด",summaryMaxLengthHelp:"จำนวนตัวอักษรสูงสุดที่อนุญาตเมื่อทำการบีบอัดข้อความ",summaryLimit:"จำนวนข้อความที่ถูกบีบอัดที่อนุญาตให้สืบค้น",summaryLimitHelp:"จำนวนข้อความที่ถูกบีบอัดที่อนุญาตให้ทำการสืบค้นได้",ragLimit:"จำนวนหน่วยความจำในการค้นหา",ragLimitHelp:"จำนวนข้อความที่จะดึงมาเมื่อทำการค้นหา",deepRetrieveSummaryLimit:"จำนวนข้อความที่ถูกบีบอัดที่จะเรียกคืนด้วยเวกเตอร์",deepRetrieveSummaryLimitHelp:"จำนวนข้อความที่จะดึงมาเมื่อทำการค้นหาเนื้อหาของข้อความที่ถูกบีบอัด",saveConfig:"บันทึกการตั้งค่า",clearMemory:"ล้างหน่วยความจำ",restoreDefault:"กู้คืนการตั้งค่าเริ่มต้น",msg:{saved:"บันทึกการตั้งค่าหน่วยความจำแล้ว",clearConfirmTitle:"ยืนยันการล้างหน่วยความจำ",clearConfirmBody:"การดำเนินการนี้จะล้างข้อมูลหน่วยความจำทั้งหมดของ AI และไม่สามารถกู้คืนได้ ต้องการดำเนินการต่อหรือไม่?",confirmClear:"ยืนยันการล้าง",cancel:"ยกเลิก",cleared:"ล้างหน่วยความจำแล้ว",clearFailed:"ล้างหน่วยความจำล้มเหลว"}},login:{username:"ชื่อผู้ใช้",usernamePlaceholder:"โปรดกรอกชื่อผู้ใช้",password:"รหัสผ่าน",passwordPlaceholder:"โปรดกรอกรหัสผ่าน",modify:"แก้ไข",msg:{enterUsername:"โปรดกรอกชื่อผู้ใช้",usernameLength:"ความยาวชื่อผู้ใช้ต้องอยู่ระหว่าง 2-20 ตัวอักษร",enterPassword:"โปรดกรอกรหัสผ่าน",passwordLength:"ความยาวรหัสผ่านต้องอยู่ระหว่าง 6-20 ตัวอักษร",fetchFailed:"ดึงข้อมูลผู้ใช้ล้มเหลว",saveSuccess:"บันทึกสำเร็จ",saveFailed:"บันทึกล้มเหลว"}},db:{clearDb:"ล้างฐานข้อมูล",clearDbDesc:"ล้างข้อมูลทั้งหมดในตารางข้อมูล โดยคงไว้เพียงโครงสร้างตาราง",clearData:"ล้างข้อมูล",confirmAction:"ยืนยันการดำเนินการ",msg:{clearDbTitle:"ล้างฐานข้อมูล",firstConfirm:"แน่ใจหรือไม่ว่าต้องการล้างข้อมูลในตารางทั้งหมด? ข้อมูลที่ถูกล้างจะไม่สามารถกู้คืนได้!",secondConfirm:"นี่คือการยืนยันครั้งสุดท้าย หลังจากล้างแล้วข้อมูลทั้งหมดจะสูญหายถาวร!",keyword:"ล้างข้อมูล",confirm:"ยืนยัน",pleaseInput:"โปรดพิมพ์",cleared:"ตารางข้อมูลทั้งหมดถูกล้างเรียบร้อยแล้ว",operationFailed:"การดำเนินการล้มเหลว โปรดลองอีกครั้ง",cancelled:"ยกเลิกการดำเนินการแล้ว"}},other:{requestTimeout:"หมดเวลาคำขอ (Timeout)",seconds:"วินาที",inputSeconds:"โปรดกรอกเวลา (วินาที)",assetConcurrency:"จำนวนการสร้างสินทรัพย์พร้อมกัน (Concurrency)",count:"รายการ",inputCount:"โปรดกรอกจำนวนรายการ",chapterRegex:"นิพจน์ปกติสำหรับแยกตอน (Regex)",restoreDefault:"กู้คืนค่าเริ่มต้น",regexPlaceholder:"โปรดกรอกนิพจน์ปกติ (Regex)",showTitleBar:"แสดงแถบชื่อเรื่อง",isElectron:"สลับไปที่โหมดเดสก์ท็อป",canvasScroll:"เลื่อนผ้าใบ",canvasIsDisabled:"แคนวาสซูม",agentCanvasScalingMethod:"งานล้อผ้าใบตัวแทน",zoom:"ซูม",scroll:"เลื่อน",isInteracting:"การเพิ่มประสิทธิภาพการลากผ้าใบไม่จำกัดบนหน้าการผลิต",closeIsInteracting:"ปิด"},request:{warning:"หากไม่มีกรณีพิเศษ ไม่จำเป็นต้องแก้ไขหรือตั้งค่าใดๆ",apiAddress:"ที่อยู่ API",apiPlaceholder:"โปรดกรอกที่อยู่คำขอ API",save:"บันทึก",reset:"รีเซ็ต",msg:{enterApi:"โปรดกรอกที่อยู่ API",validUrl:"โปรดกรอกที่อยู่ HTTP/HTTPS ที่ถูกต้อง",saved:"บันทึกที่อยู่คำขอสำเร็จ",reset:"รีเซ็ตเป็นที่อยู่เริ่มต้นแล้ว",refreshFailed:"รีเฟรชล้มเหลว",refreshSuccess:"รีเฟรชสำเร็จ"},refresh:"รีเฟรช"},about:{slogan:"เครื่องมือสร้างการ์ตูน / สตอรี่บอร์ดที่ขับเคลื่อนด้วย AI แบบโอเพนซอร์ส",latestVersion:"นี่คือเวอร์ชันล่าสุด",checkUpdate:"ตรวจสอบการอัปเดต",codeRepository:"คลังเก็บโค้ด",githubRepo:"คลัง GitHub",giteeRepo:"คลัง Gitee",versionUpdate:"อัปเดตเวอร์ชัน",checkUpdateGithub:"ตรวจสอบการอัปเดต (GitHub)",getFromGithub:"รับเวอร์ชันล่าสุดจาก GitHub Release",checkUpdateGitee:"ตรวจสอบการอัปเดต (Gitee)",getFromGitee:"รับเวอร์ชันล่าสุดจาก Gitee Release",license:"ใบอนุญาต (License)",licenseDesc:"ข้อตกลงใบอนุญาตโอเพนซอร์ส · คลิกเพื่อดูรายละเอียด",updateAvailable:"พบเวอร์ชันใหม่แล้ว",upToDate:"ตรวจพบเวอร์ชันใหม่",confirmReinstall:"คัดลอกลิงก์",reinstallRequired:"เบราว์เซอร์จะเปิดและดาวน์โหลดโดยอัตโนมัติ หากไม่เปิดขึ้น โปรดเปิดด้วยตนเอง"},logout:{warning:"หลังจากออกจากระบบ คุณจะต้องเข้าสู่ระบบใหม่เพื่อใช้งานระบบต่อไป",confirmLogout:"แน่ใจหรือไม่ว่าต้องการออกจากระบบ?",logout:"ออกจากระบบ",msg:{logoutSuccess:"ออกจากระบบสำเร็จ",logoutFailed:"ออกจากระบบล้มเหลว โปรดลองอีกครั้ง"}},file:{quickOpen:"เปิดไดเรกทอรีอย่างรวดเร็ว",open:"เปิด",dockerDesc:'สำหรับการปรับใช้ Docker/แยกส่วนหน้าและส่วนหลัง โปรดไปที่ไดเรกทอรี "/data/*" เพื่อจัดการไฟล์ด้วยตนเอง',desktopOnly:"ฟีเจอร์นี้รองรับเฉพาะเวอร์ชันเดสก์ท็อปเท่านั้น",folders:{data:"data",dataDesc:"ไดเรกทอรีข้อมูล",logs:"data/logs",logsDesc:"บันทึกการทำงานและบันทึกข้อผิดพลาด",oss:"data/oss",ossDesc:"ทรัพยากรที่เกี่ยวข้องกับการจัดเก็บไฟล์",skills:"data/skills",skillsDesc:"ไฟล์การตั้งค่าทักษะ (Skills) และพรอมต์",models:"data/models",modelsDesc:"ไฟล์โมเดลและการตั้งค่า",web:"data/web",webDesc:"ทรัพยากรเว็บ เช่น ผลลัพธ์จากการบิลด์ส่วนหน้า เป็นต้น",serve:"data/serve",serveDesc:"ไฟล์ที่เกี่ยวข้องกับบริการส่วนหลัง"},openFailed:"เปิดโฟลเดอร์ล้มเหลว"},skill:{scanSkills:"สแกนทักษะ",fileLost:"ไฟล์หายไป"},dev:{warning:"ต่อไปนี้เป็นเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ โปรดดำเนินการด้วยความระมัดระวัง!",openDevtool:"เปิด",devtoolsDoc:"ที่อยู่เอกสาร",devtoolsDesc:"หลังจากเปิดใช้งานแล้ว โฟลเดอร์ .devtools จะถูกสร้างขึ้นในไดเร็กทอรีการติดตั้ง Toonflow โปรดตรวจสอบให้แน่ใจว่า Toonflow มีสิทธิ์ในการเขียน (ทำงานในฐานะผู้ดูแลระบบ)",devtoolsDesc2:"เรียกใช้ npx {'@'}ai-sdk/devtools ในไดเรกทอรีนี้เพื่อเปิดใช้งานการแก้ไขจุดบกพร่องการวัดและส่งข้อมูลทางไกล",openDevtoolFailed:"ไม่สามารถเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ได้ โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้ง Toonflow desktop แล้ว",notInElectron:"สำหรับสภาพแวดล้อมแบบเว็บ โปรดเปิดคอนโซลเบราว์เซอร์ด้วยตนเอง"}},h_i={selectProject:"โปรดเลือกโปรเจกต์",menu:{myProject:"โปรเจกต์ของฉัน",taskCenter:"ศูนย์งาน",novel:"ต้นฉบับนิยาย",scriptAgent:"Agent บทภาพยนตร์",scriptManage:"จัดการบทภาพยนตร์",cornerScape:"สร้างตัวละครและฉาก",production:"ผลิตวิดีโอ",assetCenter:"ศูนย์สินทรัพย์",settings:"การตั้งค่า",jumpGithub:"ข้ามไปที่ Github",feedbackQuestions:"คำถามคำติชม"},project:{title:"โปรเจกต์ของฉัน",subtitle:"จัดการโปรเจกต์ละครสั้นทั้งหมดของคุณ",newProject:"โปรเจกต์ใหม่",dialog:{editTitle:"แก้ไขโปรเจกต์",addTitle:"โปรเจกต์ใหม่",save:"บันทึก",ok:"ตกลง",cancel:"ยกเลิก",projectType:"ประเภทโปรเจกต์",selectType:"เลือกประเภทโปรเจกต์",basedOnNovel:"สร้างจากต้นฉบับนิยาย",projectName:"ชื่อโปรเจกต์",projectNamePh:"โปรดกรอกชื่อโปรเจกต์",novelType:"ประเภทนิยาย",novelTypePh:"ตัวอย่างเช่น: แฟนตาซี, ไซไฟ, โรแมนติก",artStyle:"คู่มือภาพ",selected:"เลือกแล้ว:",selectArtStyle:"โปรดเลือกคู่มือแบบภาพ",newArtStyle:"คู่มือภาพใหม่",loading:"กำลังโหลด...",videoRatio:"อัตราส่วนวิดีโอ",novelIntro:"เรื่องย่อนิยาย",novelIntroPh:"โปรดกรอกเรื่องย่อนิยาย",editArtStyleTitle:"แก้ไขคู่มือภาพ",newArtStyleTitle:"คู่มือภาพใหม่",artStyleName:"ชื่อคู่มือแบบภาพ",artStyleNamePh:"โปรดป้อนชื่อคู่มือแบบภาพ",artStyleImage:"ภาพปกคู่มือภาพ",remove:"ลบออก",uploadCover:"อัปโหลดภาพปก",artStylePrompt:"ภาพพร้อมคำคู่มือ",aiExtract:"AI สกัดพรอมต์",promptPlaceholder:"อธิบายคำพร้อมท์คู่มือแบบภาพ ซึ่งใช้เพื่อระบุคู่มือแบบภาพเมื่อสร้างภาพ",visualManual:"คู่มือภาพ",newVisualManual:"คู่มือภาพใหม่",editVisualManualTitle:"แก้ไขคู่มือภาพ",newVisualManualTitle:"คู่มือภาพใหม่",visualManualName:"ชื่อคู่มือภาพ",visualManualNamePh:"โปรดป้อนชื่อคู่มือภาพ",visualManualCover:"ภาพปกคู่มือภาพ",visualManualPrompt:"Prompt คู่มือภาพ",modelData:"เลือกรุ่นรูปภาพ",videoModelData:"เลือกรุ่นวิดีโอ",prompt:{placeholder:"ป้อนคำที่พร้อมท์",saveSuccess:"อัปเดตสำเร็จ",title:"คำพูดที่รวดเร็ว"},basedOnScript:"ขึ้นอยู่กับสคริปต์",mdFile:"ไฟล์คู่มือภาพ",directorManual:"คู่มือกรรมการ",addDirectorManual:"คู่มือกรรมการใหม่",editingDirectorManual:"แก้ไขคู่มือกรรมการ",newDirecorManualTitle:"คู่มือกรรมการใหม่",directorManualPrompt:"คำพร้อมท์คู่มือผู้อำนวยการ",directorManualName:"ชื่อคู่มือผู้อำนวยการ",directorManualNamePh:"กรอกชื่อคู่มือผู้อำนวยการ",directorFile:"เอกสารคู่มือผู้อำนวยการ",directorManualCover:"ปกคู่มือผู้อำนวยการ"},msg:{fetchFailed:"ดึงรายการโปรเจกต์ล้มเหลว",notFound:"ไม่พบโปรเจกต์นี้!",editSuccess:"แก้ไขโปรเจกต์สำเร็จ",editFailed:"แก้ไขโปรเจกต์ล้มเหลว",addSuccess:"สร้างโปรเจกต์สำเร็จ",addFailed:"สร้างโปรเจกต์ล้มเหลว",deleteHeader:"ลบโปรเจกต์",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบโปรเจกต์นี้?",deleteConfirm:"ลบ",deleteCancel:"ยกเลิก",deleteSuccess:"ลบโปรเจกต์สำเร็จ",deleteFailed:"ลบโปรเจกต์ล้มเหลว",extractSuccess:"สกัดพรอมต์สำเร็จ",extractFailed:"สกัดพรอมต์ล้มเหลว",enterArtStyleName:"โปรดป้อนชื่อคู่มือภาพ",artStyleUpdated:"อัปเดตคู่มือภาพแล้ว",artStyleAdded:"เพิ่มคู่มือภาพแล้ว",operationFailed:"การดำเนินการล้มเหลว",enterVisualManualName:"โปรดป้อนชื่อคู่มือภาพ",enterVisualManualImage:"โปรดอัปโหลดภาพปกคู่มือภาพ",enterVisualManualTabData:"Prompt ไม่สามารถว่างเปล่า",visualManualUpdated:"อัปเดตคู่มือภาพแล้ว",visualManualAdded:"เพิ่มคู่มือภาพแล้ว",deleteVisualManualHeader:"ลบคู่มือภาพ",deleteVisualManualBody:'คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือภาพ "{name}"?',deleteVisualManualConfirm:"ลบ",deleteVisualManualCancel:"ยกเลิก",enterProjectName:"กรุณากรอกชื่อโครงการ",enterProjectIntro:"กรุณากรอกคำนำนวนิยาย",enterProjectType:"กรุณากรอกประเภทโครงการ",enterArtStyle:"โปรดเลือกโบรชัวร์ภาพโครงการ",enterVideoRatio:"โปรดเลือกอัตราส่วนวิดีโอ",enterImageModel:"กรุณาเลือกรุ่นรูปภาพ",enterVideoModel:"โปรดเลือกรุ่นวิดีโอ",visualManualDeleted:"ลบสำเร็จ",selectMode:"กรุณาเลือกโหมด",deleteDirectorManualHeader:"ลบคู่มือผู้อำนวยการ",deleteDirectorManualBody:'คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือผู้อำนวยการ "{name}"?',directorManualUpdated:"ปรับปรุงคู่มือผู้อำนวยการแล้ว",directorManualAdded:"เพิ่มคู่มือผู้อำนวยการ",directorManual:"กรุณาเลือกคู่มือผู้อำนวยการโครงการ"},type:{novel:"อิงจากนวนิยายต้นฉบับ",script:"อิงจากบทนวนิยาย"}},novel:{importText:"นำเข้าต้นฉบับ",batchDelete:"ลบเป็นชุด",eventAnalysis:"วิเคราะห์เหตุการณ์",searchPlaceholder:"ค้นหาชื่อต้นฉบับ...",search:"ค้นหา",generating:"กำลังสร้าง...",genFailed:"สร้างล้มเหลว",none:"ไม่มี",edit:"แก้ไข",delete:"ลบ",col:{id:"ลำดับ",reel:"เล่ม",chapter:"ชื่อบท",chapterData:"เนื้อหาในบท",event:"เหตุการณ์",operation:"การจัดการ"},msg:{batchDeleteHeader:"ลบเป็นชุด",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลที่เลือกจำนวน {count} รายการ?",batchDeleteSuccess:"ลบเป็นชุดสำเร็จ",deleteHeader:"ยืนยันการลบ",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลบทที่ชื่อว่า「{name}」?",deleteSuccess:"ลบสำเร็จ",eventAnalysisHeader:"วิเคราะห์เหตุการณ์",eventAnalysisBody:"แน่ใจหรือไม่ว่าต้องการวิเคราะห์เหตุการณ์ข้อมูลที่เลือกจำนวน {count} รายการ?"},import:{title:"อัปโหลดต้นฉบับนิยาย",step1:"ขั้นตอนที่ 1",step2:"ขั้นตอนที่ 2",step3:"ขั้นตอนที่ 3",dragUpload:"ลากไฟล์ต้นฉบับนิยายมาที่นี่ หรือคลิกเพื่ออัปโหลด",uploadHint:"รองรับรูปแบบ .txt, .docx แนะนำให้มีขนาดไฟล์ไม่เกิน 10MB",or:"หรือ",pasteLabel:"วางเนื้อหาต้นฉบับนิยายโดยตรง",pastePlaceholder:"โปรดกรอกเนื้อหาต้นฉบับนิยาย",chars:"ตัวอักษร",tooShort:"เนื้อหาสั้นเกินไป แนะนำให้อย่างน้อย 100 ตัวอักษร",parsedChapters:"แยกวิเคราะห์แล้ว {count} บท",nextStep:"ขั้นตอนถัดไป",prevStep:"ขั้นตอนก่อนหน้า",selectedInfo:"เลือกแล้ว: {count} ตัวอักษร (ต้องน้อยกว่า 200,000 ตัวอักษร)",eventAnalysis:"วิเคราะห์เหตุการณ์",saveAndAnalyze:"บันทึกต้นฉบับและวิเคราะห์เหตุการณ์",col:{chapter:"บท",reel:"เล่ม",chapterName:"ชื่อบท",chapterData:"เนื้อหาในบท"},msg:{parseFailed:"แยกวิเคราะห์ไฟล์ล้มเหลว โปรดอัปโหลดใหม่อีกครั้ง",selectFile:"เลือกไฟล์",docNotSupported:"ไฟล์ .doc ไม่รองรับการแยกวิเคราะห์ โปรดแปลงเป็นไฟล์ .ts",unsupportedType:"ไม่รองรับประเภทไฟล์นี้",fileTooLarge:"ไฟล์มีขนาดเกิน 10MB โปรดอัปโหลดไฟล์ขนาดเล็กกว่านี้",selectChapters:"โปรดทำเครื่องหมายเลือกบทก่อน",saveSuccess:"บันทึกต้นฉบับนิยายสำเร็จ"},importAdd:"ลากและวางไฟล์ที่นี่หรือคลิกเพื่ออัปโหลด",limit:"รองรับรูปแบบ .ts"},editDialog:{title:"แก้ไขต้นฉบับนิยาย",chapterName:"ชื่อบท",chapterNamePh:"โปรดกรอกชื่อบท",eventContent:"เนื้อหาเหตุการณ์",eventContentPh:"กรอกเนื้อหาเหตุการณ์",chapterContent:"เนื้อหาในบท",chapterContentPh:"โปรดกรอกเนื้อหาในบท",cancel:"ยกเลิก",save:"บันทึก",msg:{updateSuccess:"อัปเดตต้นฉบับนิยายสำเร็จ"}},event:{regenerate:"สร้างเหตุการณ์ใหม่",batchDelete:"ลบเป็นชุด",noData:"ยังไม่มีข้อมูลเหตุการณ์ คลิกเพื่อเริ่มสร้าง",generate:"สร้างเหตุการณ์",generatingHint:"กำลังสร้างเหตุการณ์ โปรดรอสักครู่...",loading:"กำลังโหลด...",delete:"ลบ",col:{id:"ID เหตุการณ์",eventName:"ชื่อเหตุการณ์",chapters:"บทที่มา",detail:"ขั้นตอนเหตุการณ์",createTime:"เวลาที่สร้าง",operation:"การจัดการ"},msg:{deleteHeader:"ลบเหตุการณ์",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบเหตุการณ์นี้?",deleteSuccess:"ลบสำเร็จ",generateSuccess:"สร้างเหตุการณ์สำเร็จ",batchDeleteHeader:"ลบเป็นชุด",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบข้อมูลที่เลือกจำนวน {count} รายการ?",batchDeleteSuccess:"ลบเป็นชุดสำเร็จ"}},analysis:{analyzeFirst:"โปรดวิเคราะห์เหตุการณ์ก่อน",startAnalysis:"เริ่มวิเคราะห์",chapterHeader:"บทที่ {index} - {name}",analyzing:"กำลังวิเคราะห์เหตุการณ์"}},scriptAgent:{inputPlaceholder:"โปรดกรอกเนื้อหา",chapterEvents:"เหตุการณ์ในบท",clearMessageMemory:"ล้างหน่วยความจำข้อความ",clearSummaryMemory:"ล้างหน่วยความจำสรุป",clearAllMemory:"ล้างหน่วยความจำทั้งหมด",edit:"แก้ไข",storySkeleton:"โครงเรื่อง",adaptationStrategy:"กลยุทธ์การดัดแปลง",script:"บทภาพยนตร์",noContent:"ยังไม่มีเนื้อหา",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",editScript:"แก้ไขบทภาพยนตร์",save:"บันทึก",scriptTitle:"ชื่อเรื่อง",titlePlaceholder:"โปรดกรอกชื่อเรื่อง",content:"เนื้อหา",contentPlaceholder:"โปรดกรอกเนื้อหาบทภาพยนตร์",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",welcomeMsg:"สวัสดี! ฉันคือผู้ช่วยอัจฉริยะ Toonflow ต้องการให้ฉันเริ่มสร้างบทภาพยนตร์ให้คุณเลยไหม?",start:"เริ่มต้น",memoryType:{message:"หน่วยความจำข้อความ",summary:"หน่วยความจำสรุป",all:"หน่วยความจำทั้งหมด"},msg:{clearConfirm:"ยืนยันการล้าง",clearBody:"แน่ใจหรือไม่ว่าต้องการล้าง{type}? การดำเนินการนี้ไม่สามารถยกเลิกได้",confirmClear:"ยืนยันการล้าง",cancel:"ยกเลิก",memoryCleared:"ล้าง{type}แล้ว",scriptUpdated:"อัปเดตบทภาพยนตร์สำเร็จ",scriptUpdateFailed:"อัปเดตบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง",searchScriptFailed:"ค้นหาบทภาพยนตร์ล้มเหลว",updated:"บันทึกเรียบร้อยแล้ว",error:"บันทึกล้มเหลว",reconnect:"เชื่อมต่อใหม่",notReconnect:"ยืนยันว่าการสนทนาการเชื่อมต่อใหม่จะถูกตัดออกหรือไม่",keepReconnect:"ยืนยัน",deleteConfirm:"ลบการยืนยัน",deleteBody:"ลบข้อความ",confirmDelete:"ยืนยันการลบ",scriptDeleted:"ลบสคริปต์แล้ว"},reconnect:"เชื่อมต่อใหม่"},cornerScape:{batchSettings:"การตั้งค่าการสร้างเป็นชุด",quickActions:"คำสั่งด่วน",selectUngenerated:"เลือกรายการที่ยังไม่สร้างทั้งหมด",selectGenerated:"เลือกรายการที่สร้างแล้วทั้งหมด",selectFailed:"เลือกรายการที่เกิดข้อผิดพลาดทั้งหมด",invertSelection:"สลับการเลือก",clearSelection:"ยกเลิกการเลือก",batchPreview:"ดูตัวอย่างรูปภาพเป็นชุด",assetTypeFilter:"กรองตามประเภทสื่อ",genModel:"โมเดลการสร้าง",resolution:"ความละเอียด",resolutionPh:"โปรดเลือกความละเอียด",concurrency:"จำนวนที่สร้างพร้อมกัน",concurrencyPh:"โปรดกรอกจำนวนที่สร้างพร้อมกัน",startBatch:"เริ่มสร้างภาพเป็นชุด",waitingGen:"รอการสร้าง",generating:"กำลังสร้าง",genFailed:"สร้างล้มเหลว",imageError:"รูปภาพมีข้อผิดพลาด",typeRole:"ตัวละคร",typeScene:"ฉาก",typeTool:"เครื่องมือ",typeUnknown:"ไม่ทราบ",descriptionSuffix:"คำอธิบาย:",operateScriptFirst:"โปรดจัดการบทภาพยนตร์ก่อน",individualConfig:"ตั้งค่าแบบแยกเดี่ยว",noImage:"ยังไม่มีรูปภาพ",promptLabel:"พรอมต์",promptPh:"โปรดกรอกพรอมต์",aiPolish:"ใช้ AI ขัดเกลาข้อความ",regenerate:"สร้างใหม่",filterRole:"ตัวละคร",filterScene:"ฉาก",filterTool:"อุปกรณ์ประกอบฉาก",unnamed:"ไม่ได้ตั้งชื่อ",noDescription:"ไม่มีคำอธิบาย",msg:{selectModel:"โปรดเลือกโมเดลการสร้าง",selectResolution:"โปรดเลือกความละเอียด",enterPrompt:"โปรดกรอกพรอมต์",enterPromptFirst:"โปรดกรอกพรอมต์ก่อน",genSuccess:"สร้าง {name} สำเร็จ",genFailed:"สร้าง {name} ล้มเหลว",promptGenSuccess:"สร้างพรอมต์สำเร็จ",polishFailed:"ขัดเกลาข้อความล้มเหลว โปรดลองอีกครั้ง",selectAtLeastOne:"โปรดเลือกสินทรัพย์อย่างน้อยหนึ่งรายการเพื่อสร้างเป็นชุด",batchStarted:"เริ่มการสร้างเป็นชุดแล้ว จำนวน {count} รายการ ทำพร้อมกัน {concurrent} รายการ",batchItemFailed:"สร้าง {name} ล้มเหลว: {error}",batchComplete:"การสร้างเป็นชุดเสร็จสมบูรณ์",batchFailed:"การสร้างแบทช์ล้มเหลว",replaceFailed:"การเปลี่ยนล้มเหลว",replaceSuccess:"การเปลี่ยนสำเร็จ",promptGenFail:"การสร้างคำพร้อมท์ล้มเหลว",saveSuccess:"การแก้ไขคำพร้อมท์สำเร็จ",saveFailed:"การแก้ไขคำพร้อมท์ล้มเหลว"},history:"ภาพประวัติศาสตร์",confirmReplace:"ยืนยันการเปลี่ยน",batchGenerationPrompt:"สร้างคำพร้อมท์เป็นชุด",generatingPrompt:"กำลังสร้าง",selectPromptEmpty:"เลือกทั้งหมด คำที่แจ้งว่างเปล่า",noEmptyPrompt:"ไม่มีเนื้อหาที่มีคำว่าง",selectedCount:"เลือกเนื้อหาแล้ว {count} รายการ"},script:{searchPlaceholder:"ค้นหาชื่อบทภาพยนตร์...",search:"ค้นหา",addScript:"สร้างบทภาพยนตร์ใหม่",cancelSelectAll:"ยกเลิกการเลือกทั้งหมด",selectAll:"เลือกทั้งหมด",exportScript:"ส่งออกบทภาพยนตร์",msg:{searchFailed:"ค้นหาบทภาพยนตร์ล้มเหลว",selectExport:"โปรดเลือกบทภาพยนตร์ที่จะส่งออกก่อน",exportSuccess:"ส่งออกสำเร็จ",exportFailed:"ส่งออกบทภาพยนตร์ล้มเหลว",deleteHeader:"ยืนยันการลบ",deleteBody:"แน่ใจหรือไม่ว่าต้องการลบบทภาพยนตร์นี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",deleteConfirm:"ลบ",cancel:"ยกเลิก",deleteSuccess:"ลบสำเร็จ",deleteFailed:"ลบล้มเหลว",selectDelScript:"โปรดเลือกที่จะลบสคริปต์",batchDeleteHeader:"ลบเป็นกลุ่ม",batchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบบทภาพยนตร์ที่เลือก {count} รายการ? การดำเนินการนี้ไม่สามารถยกเลิกได้",batchDeleteSuccess:"ลบเป็นกลุ่มสำเร็จ",extractingInProgress:"การสกัด",projectNotFound:"ไม่พบรายการ",selectsExport:"โปรดเลือกส่งออกสคริปต์"},add:{title:"เพิ่มบทภาพยนตร์",scriptName:"ชื่อบทภาพยนตร์",scriptNamePh:"โปรดกรอกชื่อบทภาพยนตร์",uploadFile:"อัปโหลดไฟล์",dragUpload:"ลากไฟล์บทภาพยนตร์มาที่นี่ หรือคลิกเพื่ออัปโหลด",uploadHint:"รองรับรูปแบบ .txt, .docx แนะนำให้มีขนาดไฟล์ไม่เกิน 10MB",scriptContent:"เนื้อหาบทภาพยนตร์",scriptContentPh:"โปรดอัปโหลดหรือกรอกเนื้อหาบทภาพยนตร์...",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",cancel:"ยกเลิก",confirm:"ยืนยัน",msg:{fileReadFailed:"อ่านไฟล์ล้มเหลว",docNotSupported:"ไม่รองรับการแยกวิเคราะห์ไฟล์ .doc โปรดแปลงเป็นไฟล์ .txt หรือ .docx",unsupportedType:"ไม่รองรับประเภทไฟล์นี้",fileTooLarge:"ไฟล์มีขนาดเกิน 10MB โปรดอัปโหลดไฟล์ขนาดเล็กกว่านี้",parsing:"กำลังแยกวิเคราะห์ไฟล์...",parseFailed:"แยกวิเคราะห์ไฟล์ล้มเหลว โปรดอัปโหลดใหม่อีกครั้ง",selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",enterContent:"โปรดอัปโหลดหรือกรอกเนื้อหาบทภาพยนตร์",enterName:"โปรดกรอกชื่อบทภาพยนตร์",addSuccess:"เพิ่มบทภาพยนตร์สำเร็จ",addFailed:"เพิ่มบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง"}},edit:{title:"รายละเอียดบทภาพยนตร์",scriptName:"ชื่อบทภาพยนตร์",scriptNamePh:"โปรดกรอกชื่อบทภาพยนตร์",scriptContent:"เนื้อหาบทภาพยนตร์",scriptContentPh:"โปรดกรอกเนื้อหาบทภาพยนตร์...",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",selectAssets:"เลือกสินทรัพย์",noAssets:"ยังไม่ได้เชื่อมโยงสินทรัพย์",msg:{selectAssetsTitle:"เลือกสินทรัพย์ที่เกี่ยวข้อง",updateSuccess:"อัปเดตบทภาพยนตร์สำเร็จ",updateFailed:"อัปเดตบทภาพยนตร์ล้มเหลว โปรดลองอีกครั้งในภายหลัง"}},deleteScript:"ลบสคริปต์เป็นชุด",extractAssets:""},assets:{addPrefix:"เพิ่ม",batchGenerate:"สร้างเป็นชุด",generatePrompt:"สร้างพรอมต์",generateImage:"สร้างรูปภาพ",batchDelete:"ลบเป็นชุด",searchPlaceholder:"ค้นหาชื่อสินทรัพย์...",search:"ค้นหา",preview:"ดูตัวอย่าง",generate:"สร้าง",edit:"แก้ไข",delete:"ลบ",generating:"กำลังสร้าง",play:"เล่น",mediaPreview:"ดูตัวอย่างสื่อ",confirmBatch:"ยืนยัน{type}หรือไม่!",model:"โมเดล",resolution:"ความละเอียด",resolutionPh:"โปรดเลือกความละเอียด",batchGenPrompt:"สร้างพรอมต์เป็นชุด",batchGenImage:"สร้างรูปภาพเป็นชุด",role:"ตัวละคร",prop:"อุปกรณ์",scene:"ฉาก",clip:"ฟุตเทจ",uploadSuccess:"อัปโหลดสำเร็จ",selectAtLeastOne:"โปรดเลือกสินทรัพย์อย่างน้อย 1 รายการ",noDescription:"ไม่มีคำอธิบาย",promptGenSuccess:"สร้างพรอมต์「{name}」สำเร็จ",promptGenFail:"สร้างพรอมต์「{name}」ล้มเหลว: {error}",selectModel:"โปรดเลือกโมเดล",selectResolution:"โปรดเลือกความละเอียด",noPromptForImage:"「{name}」ไม่มีพรอมต์ ไม่สามารถสร้างรูปภาพได้",imageGenSuccess:"สร้างรูปภาพ「{name}」สำเร็จ",imageGenFail:"สร้างรูปภาพ「{name}」ล้มเหลว: {error}",confirmDeleteHeader:"ยืนยันการลบ",confirmBatchDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบสินทรัพย์เหล่านี้เป็นชุด? การดำเนินการนี้ไม่สามารถยกเลิกได้",confirmDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบสินทรัพย์นี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",deleteBtn:"ลบ",cancelBtn:"ยกเลิก",deleteSuccess:"ลบสินทรัพย์สำเร็จ",deleteFail:"ลบสินทรัพย์ล้มเหลว",colPreview:"ดูตัวอย่าง",colName:"ชื่อ",colPrompt:"พรอมต์",colDescribe:"คำอธิบาย",colRemark:"หมายเหตุ",colCreateTime:"เวลาที่สร้าง",colOperation:"การจัดการ",add:{name:"ชื่อ",namePh:"โปรดกรอกชื่อ",describe:"คำอธิบาย",describePh:"โปรดกรอกคำอธิบาย",remark:"หมายเหตุ",remarkPh:"โปรดกรอกหมายเหตุ",prompt:"พรอมต์",promptPh:"โปรดกรอกพรอมต์",nameRequired:"โปรดกรอกชื่อ",describeRequired:"โปรดกรอกรายละเอียด",remarkRequired:"โปรดกรอกหมายเหตุ",updateSuccess:"อัปเดตสินทรัพย์สำเร็จ",addSuccess:"เพิ่มสินทรัพย์สำเร็จ"},gen:{header:"สร้างรูปภาพ",uploadRef:"อัปโหลดรูปภาพอ้างอิง",optional:"ตัวเลือก",promptLabel:"พรอมต์สร้างรูปภาพ",smartGenerate:"สร้างอัตโนมัติ (Smart Generate)",generatingPrompt:"กำลังสร้างพรอมต์อัจฉริยะ...",promptPlaceholder:"อธิบายเนื้อหารูปภาพที่คุณต้องการสร้าง ตัวอย่างเช่น: เมืองแห่งอนาคตที่เต็มไปด้วยเทคโนโลยี, แสงไฟนีออนกะพริบ, สไตล์ไซเบอร์พังค์...",selectModel:"เลือกโมเดล",selectResolution:"เลือกความละเอียด",generateBtn:"สร้างรูปภาพ",resultTitle:"ผลลัพธ์การสร้าง",generatedCount:"สร้างสำเร็จ {count} รูป โปรดเลือกหนึ่งรูป",generatingLabel:"กำลังสร้าง...",genFailed:"สร้างล้มเหลว",confirmSelect:"ยืนยันการเลือก",promptSuccess:"สร้างพรอมต์สำเร็จ",promptFail:"สร้างพรอมต์ล้มเหลว",fillPrompt:"โปรดกรอกพรอมต์",pickResolution:"โปรดเลือกความละเอียด",pickModel:"โปรดเลือกโมเดล",unnamed:"ไม่ได้ตั้งชื่อ",assetGenSuccess:"สร้างสินทรัพย์สำเร็จ",assetGenFail:"สร้างสินทรัพย์ล้มเหลว",uploadOk:"อัปโหลดสำเร็จ",imageSelected:"เลือกรูปภาพนี้แล้ว",imageDeleted:"ลบรูปภาพนี้แล้ว",imageSaved:"บันทึกรูปภาพแล้ว",completed:"สมบูรณ์"},batch:{header:"สร้างเป็นชุด",selected:"เลือกแล้ว {count} รายการ",selectAll:"เลือกทั้งหมด",clearSelection:"ล้างการเลือก",inputPh:"โปรดกรอกเนื้อหา",saveSelected:"บันทึกที่เลือก ({count})",colPreviewImg:"รูปตัวอย่าง",selectToSave:"โปรดเลือกรายการที่ต้องการบันทึก",saveSuccess:"บันทึกสำเร็จ",saveFail:"บันทึกล้มเหลว โปรดลองอีกครั้ง",promptDone:"สร้างพรอมต์เสร็จสมบูรณ์",promptFail:"สร้างพรอมต์ล้มเหลว",missingPrompts:"มี {count} สินทรัพย์ที่ไม่มีพรอมต์ โปรดสร้างพรอมต์ก่อน",imageDone:"สร้างรูปภาพเสร็จสมบูรณ์",imageGenFail:"สร้างรูปภาพล้มเหลว",unknownError:"ข้อผิดพลาดที่ไม่ทราบสาเหตุ",promptGenCancelled:"รุ่นถูกยกเลิก"}},production:{selectPlaceholder:"โปรดเลือกตอน",edit:"แก้ไข",node:{script:{title:"บทภาพยนตร์",editDialog:"แก้ไขบทภาพยนตร์"},scriptPlan:{title:"แผนการถ่ายทำ",editDialog:"แก้ไขแผนการถ่ายทำ"},storyboard:{title:"แผงสตอรี่บอร์ด",notGenerated:"ยังไม่สร้าง",scaleRatio:"อัตราส่วนการย่อ/ขยาย",gridPreview:"ดูตัวอย่างแบบกริด",noPreviewImages:"ไม่มีรูปภาพให้ดูตัวอย่าง",imageLoadFailed:"โหลดรูปภาพล้มเหลว",promptPlaceholder:"กรุณากรอกคำที่พร้อมท์",prompt:"คำพูดที่รวดเร็ว",editInfo:"การปรับเปลี่ยนคำทันที"},storyboardTable:{title:"ตารางสตอรี่บอร์ด",editDialog:"แก้ไขตารางสตอรี่บอร์ด"},assets:{title:"สินทรัพย์ต่อยอด",generateFailed:"สร้างล้มเหลว",notGenerated:"ยังไม่สร้าง",originalAsset:"สินทรัพย์ต้นฉบับ",derived:"ต่อยอด",noDerivedAssets:"ไม่มีสินทรัพย์ต่อยอด"},poster:{title:"ภาพปกวิดีโอ",coverCount:"{count} รูป"},workbench:{title:"พื้นที่ทำงานวิดีโอ"}},editImage:{upload:"อัปโหลด",generate:"สร้าง",saveFailed:"บันทึกล้มเหลว โปรดลองอีกครั้ง",fetchFailed:"ดึงข้อมูลล้มเหลว",generating:"กำลังสร้าง...",deleteNode:"ลบโหนด (Node)",ratio:"สัดส่วน",quality:"คุณภาพ",generateBtn:"สร้างรูปภาพ",selectImage:"เลือกรูปภาพ",imageGeneration:"สร้างรูปภาพ",promptPlaceholder:"อธิบายรูปภาพที่คุณต้องการสร้าง...",imageRef:"รูปที่ {index}",noReferences:"ไม่มีรูปภาพอ้างอิงให้ใช้งาน",selectModel:"โปรดเลือกโมเดลก่อน",selectQuality:"โปรดเลือกคุณภาพภาพ",selectRatio:"โปรดเลือกสัดส่วน",generateFailed:"สร้างล้มเหลว",generateFirst:"โปรดสร้างรูปภาพก่อน",generatedResult:"ผลลัพธ์การสร้าง",waitingGenerate:"รอการสร้าง",layoutLR:"จัดวางอัตโนมัติ-ซ้ายขวา",layoutTB:"จัดวางอัตโนมัติ-บนล่าง",uploadAssetImage:"อัปโหลดรูปทรัพยากร",uploadStoryboardImage:"อัปโหลดรูปสตอรี่บอร์ด",uploadImage:"การอัพโหลดรูปภาพสินทรัพย์",mode:"แบบอย่าง",closeConfirmTitle:"ปิดแผงแก้ไขใช่ไหม",closeConfirmBody:"ข้อมูลที่ไม่ได้บันทึกจะสูญหายไปหลังจากการปิด"},save:"เลือก",cancel:"ยกเลิก",chatBox:{inputPlaceholder:"พิมพ์ข้อความ...",generateDerivedAssets:"สร้างสินทรัพย์ต่อยอด",welcomeMessage:"สวัสดี! ฉันคือผู้ช่วย AI ของคุณ มีอะไรให้ฉันช่วยไหม?",adjustModel:"ปรับแต่งโมเดล",startMakingVideo:"เริ่มสร้างวิดีโอ",startMakingVideoPrompt:"โปรดช่วยฉันเริ่มสร้างวิดีโอ",clearMessageMemory:"ล้างหน่วยความจำข้อความ",clearSummaryMemory:"ล้างหน่วยความจำสรุป",clearAllMemory:"ล้างหน่วยความจำทั้งหมด",messageMemory:"หน่วยความจำข้อความ",summaryMemory:"หน่วยความจำสรุป",allMemory:"หน่วยความจำทั้งหมด",confirmClear:"ล้างหน่วยความจำ",confirmClearBody:"แน่ใจหรือไม่ว่าต้องการล้าง{type}?",confirmClearBtn:"ยืนยันการล้าง",memoryCleared:"ล้าง{type}แล้ว"},wb:{quickPreview:"ดูตัวอย่างแบบเร็ว",videoGeneration:"สตอรี่บอร์ด",videoEditing:"โต๊ะบรรณาธิการ",hint:"ข้อแนะนำ",extractLines:"ต้องการแยกบทสนทนาจากวิดีโอหรือไม่?",no:"ไม่",confirm:"ตกลง",extractLinesQuestion:"ต้องการแยกบทสนทนาจากวิดีโอมาเป็นซับไตเติลหรือไม่?",importingLoading:"กำลังนำเข้า โปรดรอสักครู่...",mainTrackVideo:"แทร็กหลัก (วิดีโอ)",subtitle1:"ซับไตเติล 1",storyboardVideoName:"วิดีโอสตอรี่บอร์ด-{storyboard}.mp4"},preview:{noImage:"ยังไม่มีรูปภาพ",storyboardDesc:"คำอธิบายสตอรี่บอร์ด",serialNumber:"ลำดับ",noDescription:"ยังไม่มีคำอธิบาย",duration:"ความยาว",seconds:"วินาที",relatedAssets:"สินทรัพย์ที่เกี่ยวข้อง",role:"ตัวละคร",prop:"อุปกรณ์",scene:"ฉาก",noCharacters:"ไม่มีตัวละครปรากฏ",imagePrompt:"พรอมต์รูปภาพ",selectAll:"เลือกทั้งหมด",exportImage:"ส่งออกรูปภาพ",sceneDescription:"คำอธิบายฉาก",promptLabel:"พรอมต์",restoreSort:"คืนค่าการจัดเรียง",restoreSortConfirm:"แน่ใจหรือไม่ว่าต้องการคืนค่าการจัดเรียงกลับเป็นค่าเริ่มต้น?",tip:"เคล็ดลับ",selectAtLeastOne:"โปรดเลือกสตอรี่บอร์ดอย่างน้อยหนึ่งรายการเพื่อส่งออก",exportFilename:"ภาพสตอรี่บอร์ด"},generate:{noVideo:"ยังไม่มีวิดีโอ",videoPrompt:"พรอมต์วิดีโอ",promptPlaceholder:"ป้อนคำพร้อมท์เพื่ออธิบายเนื้อหาวิดีโอที่คุณต้องการสร้าง...",refImage:"รูปภาพอ้างอิง",image:"รูปภาพ",refVideo:"วิดีโออ้างอิง",refImageLabel:"รูปภาพอ้างอิง",refAudio:"เสียงอ้างอิง",muteAudio:"ปิดเสียง",enableAudio:"เปิดเสียง",resolution:"ความละเอียด",duration:"ความยาว",generate:"สร้าง",historyVersions:"ประวัติเวอร์ชัน",confirmSelection:"ยืนยันการเลือก",noHistory:"ยังไม่มีประวัติ",generating:"กำลังสร้าง",generateFailed:"สร้างล้มเหลว",selectAll:"เลือกทั้งหมด",videoTrack:"แทร็กวิดีโอ",batchGenerate:"สร้างเป็นชุด",importToEditor:"นำเข้าสู่หน้าต่างตัดต่อ",modeSingleImage:"รูปภาพเดียว",modeMultiImage:"หลายรูปภาพ",modeGridImage:"รูปภาพกริดหลายรูป",modeStartEnd:"เฟรมแรกและสุดท้าย",modeText:"ข้อความเป็นวิดีโอ",modeVideoRef:"อ้างอิงจากวิดีโอ",modeImageRef:"อ้างอิงจากรูปภาพ",modeAudioRef:"อ้างอิงจากเสียง",modeTextRef:"อ้างอิงจากข้อความ",startFrame:"เฟรมแรก",startFrameOptional:"เฟรมแรก (ตัวเลือก)",endFrame:"เฟรมสุดท้าย",endFrameOptional:"เฟรมสุดท้าย (ตัวเลือก)",selectRefImage:"เลือกรูปภาพอ้างอิง",selectRefImages:"เลือกรูปภาพอ้างอิงหลายรูป",selectEndFrame:"เลือกรูปเฟรมสุดท้าย",selectRefVideoAsset:"เลือกวิดีโออ้างอิง",selectRefAudioAsset:"เลือกเสียงอ้างอิง",selectRefImageAsset:"เลือกรูปภาพอ้างอิง",selectImageSource:"เลือกแหล่งที่มาของภาพ",fromStoryboard:"ภาพสตอรี่บอร์ด",fromStoryboardDesc:"เลือกภาพจากรายการสตอรี่บอร์ด",fromAssets:"ภาพแอสเซท",fromAssetsDesc:"เลือกภาพจากคลังแอสเซท",confirmDelete:"ยืนยันการลบ",confirmDeleteBody:"แน่ใจหรือไม่ว่าต้องการลบวิดีโอนี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",delete:"ลบ",cancel:"ยกเลิก",deleteSuccess:"ลบวิดีโอสำเร็จ",deleteFailed:"ลบล้มเหลว",selectVideoFirst:"โปรดเลือกวิดีโอก่อน",confirmSuccess:"ยืนยันการเลือกสำเร็จ",batchSubmitted:"ส่งคำขอสร้างเป็นชุดแล้ว กำลังดำเนินการ...",configNotFound:"ไม่พบการตั้งค่า",pollingFailed:"การค้นหาสถานะวิดีโอล้มเหลว โปรดรีเฟรชด้วยตนเอง",batchGeneratePrompt:"สร้างคำพร้อมท์เป็นชุด",batchPromptEmpty:"บอร์ดเรื่องราว {name} พร้อมใช้งานสำหรับวิดีโอแจ้ง กรุณาสร้างหรือกรอกข้อความแจ้งก่อน",modelEmpty:"โปรดเลือกรุ่นการสร้างวิดีโอก่อน",generatingPrompt:"การสร้างคำที่รวดเร็วอย่างชาญฉลาด"},editVideo:{reset:"รีเซ็ต",undo:"เลิกทำ",redo:"ทำซ้ำ",split:"แยกคลิป (Split)",delete:"ลบ",rendering:"กำลังเรนเดอร์...",exportVideo:"ส่งออกวิดีโอ",exportSuccess:"ส่งออกวิดีโอสำเร็จแล้ว",exportFailed:"ส่งออกล้มเหลว",sampleSubtitle:"ข้อความซับไตเติลตัวอย่าง",customText:"เนื้อหาข้อความกำหนดเอง",transitionBetweenClips:"จำเป็นต้องเพิ่มทรานซิชันไว้ระหว่าง Clip สองอันที่อยู่ติดกัน",transitionExists:"มีทรานซิชันอยู่ตำแหน่งนี้แล้ว",videoPreviewArea:"พื้นที่ดูตัวอย่างวิดีโอ",clipMaterials:"ฟุตเทจตัดต่อ",propertyPanel:"แผงคุณสมบัติ (Properties)",selectClip:"เลือก Clip เพื่อดูคุณสมบัติ",basicInfo:"ข้อมูลพื้นฐาน",name:"ชื่อ",clipNamePlaceholder:"ชื่อ Clip",startTime:"เริ่มต้น",endTime:"สิ้นสุด",totalDuration:"ความยาวทั้งหมด",videoProperties:"คุณสมบัติวิดีโอ",opacity:"ความทึบแสง",volume:"ระดับเสียง",playbackSpeed:"ความเร็วในการเล่น",audioProperties:"คุณสมบัติเสียง",fadeIn:"เฟดอิน (Fade In)",fadeOut:"เฟดเอาต์ (Fade Out)",transitionProperties:"คุณสมบัติทรานซิชัน",transitionType:"ประเภททรานซิชัน",transFade:"เลือนหาย (Fade)",transSlide:"เลื่อน (Slide)",transWipe:"ปาด (Wipe)",transDissolve:"ละลาย (Dissolve)",transZoom:"ซูม (Zoom)",transRotate:"หมุน (Rotate)",transitionDuration:"ความยาวทรานซิชัน",subtitleProperties:"คุณสมบัติซับไตเติล",textContent:"เนื้อหาข้อความ",fontSize:"ขนาดตัวอักษร",copy:"คัดลอก",deleteConfirm:"ยืนยันการลบ",deleteClipConfirm:"แน่ใจหรือไม่ว่าต้องการลบ Clip นี้?",avCanvasNotInit:"AVCanvas ยังไม่ได้ถูกเตรียมเริ่มต้น",noExportContent:"ไม่มีเนื้อหาให้ส่งออก",exportProject:"ส่งออกโปรเจกต์",transitionAdded:"เพิ่มทรานซิชันแล้ว: {name}",splitClip:"แยกคลิป",deleteClip:"ลบคลิป",addClip:"เพิ่ม {name}",duplicateClip:"ทำซ้ำคลิป (Duplicate)",addTransition:"เพิ่มทรานซิชัน",updateClip:"อัปเดตคลิป {key}",updatePlaybackRate:"อัปเดตความเร็วการเล่นเป็น {rate}x",updateTransitionDuration:"อัปเดตความยาวทรานซิชัน",playbackRateRange:"ความเร็วในการเล่นต้องอยู่ระหว่าง 0.1 ถึง 10",updatePlaybackRateFailed:"อัปเดตความเร็วการเล่นล้มเหลว:",importProject:"นำเข้าโปรเจกต์",import:"นำเข้า"},clipType:{video:"วิดีโอ",audio:"เสียง",subtitle:"ซับไตเติล",transition:"ทรานซิชัน",sticker:"สติกเกอร์",filter:"ฟิลเตอร์",effect:"เอฟเฟกต์"},track:{video:"วิดีโอ",image:"รูปภาพ",audio:"เสียง",subtitle:"ซับไตเติล",text:"ข้อความ",sticker:"สติกเกอร์",filter:"ฟิลเตอร์",effect:"เอฟเฟกต์"},transition:{fade:"เลือนหาย (Fade)",slide:"เลื่อน (Slide)",slideLeft:"เลื่อนไปทางซ้าย",slideRight:"เลื่อนไปทางขวา",slideUp:"เลื่อนขึ้น",slideDown:"เลื่อนลง",wipe:"ปาด (Wipe)",wipeLeft:"ปาดไปทางซ้าย",wipeRight:"ปาดไปทางขวา",wipeUp:"ปาดขึ้น",wipeDown:"ปาดลง",dissolve:"ละลาย (Dissolve)",zoom:"ซูม (Zoom)",zoomIn:"ซูมเข้า",zoomOut:"ซูมออก",rotate:"หมุน",circle:"วงกลม",diamond:"สี่เหลี่ยมข้าวหลามตัด",clock:"นาฬิกา",blur:"เบลอ"},media:{titleText:"ข้อความชื่อเรื่อง",subtitleText:"ข้อความซับไตเติล",customText:"ข้อความกำหนดเอง",media:"สื่อ",image:"รูปภาพ",audio:"เสียง",subtitle:"ซับไตเติล",transition:"ทรานซิชัน",effect:"เอฟเฟกต์",filter:"ฟิลเตอร์",loading:"กำลังโหลด...",subtitlePreview:"ข้อความ",video:"วิดีโอ"},effect:{fadeIn:"เฟดอิน",fadeOut:"เฟดเอาต์",flash:"กะพริบ (Flash)",shake:"สั่น (Shake)",zoomIn:"ซูมเข้ามา",zoomOut:"ซูมออกไป",pulse:"เต้นเป็นจังหวะ (Pulse)",rotateIn:"หมุนเข้ามา",sticker1:"สติกเกอร์ 1",sticker2:"สติกเกอร์ 2"},filter:{grayscale:"ขาวดำ",sepia:"เรโทร (Sepia)",warm:"โทนอุ่น",cool:"โทนเย็น",vivid:"สีสดใส",bright:"สว่าง",highContrast:"คอนทราสต์สูง",blur:"เบลอ",invert:"สลับสี (Invert)",semiTransparent:"กึ่งโปร่งใส"},guideSwitchEpisode:"สลับตอน",guideSwitchEpisodeBody:"ฟีเจอร์การสลับตอนถูกย้ายมาที่นี่แล้วนะ!",autoLayoutLR:"เรียงพิมพ์อัตโนมัติ - เค้าโครงซ้ายและขวา",autoLayoutTB:"เค้าโครงเรียงพิมพ์อัตโนมัติบนและล่าง",getFlowData:"รีเฟรชพื้นที่ทำงาน",confirm:"สลับการยืนยันตอน",confirmEpisodesSwitch:"งานปัจจุบันยังอยู่ในระหว่างดำเนินการ การเปลี่ยนตอนจะเชื่อมต่อเซสชันอีกครั้ง คุณต้องการเปลี่ยนต่อหรือไม่?"},task:{title:"รายการงาน",subtitle:"บันทึกการทำงานล่าสุดของคุณ",refresh:"รีเฟรช",categoryLabel:"หมวดหมู่งานหลัก:",stateLabel:"สถานะ:",noFailReason:"ไม่มีระบุสาเหตุข้อผิดพลาด",stateAll:"ทั้งหมด",stateRunning:"กำลังดำเนินการ",stateCompleted:"เสร็จสมบูรณ์",stateFailed:"สร้างล้มเหลว",fetchFailed:"ดึงรายการงานล้มเหลว",col:{taskClass:"หมวดหมู่งานหลัก",relatedObjects:"ออบเจกต์ที่เกี่ยวข้อง",model:"โมเดล",describe:"คำอธิบาย",state:"สถานะ",startTime:"เวลา",reason:"สาเหตุของความล้มเหลว"},project:"ชื่อโครงการ:"},noVideo:"ยังไม่มีวิดีโอ",prompt:"คำแจ้งวิดีโอ",generateText:"AI สร้างคำที่รวดเร็ว",selectStoryboard:"เลือกกระดานเรื่องราว",generate:{noVideo:"ยังไม่มีวิดีโอ",generateText:"AI สร้างคำที่รวดเร็ว",selectStoryboard:"เลือกกระดานเรื่องราว",generate:"สร้างวิดีโอ",history:"เวอร์ชันประวัติศาสตร์",generating:"กำลังสร้าง",generateFailed:"ล้มเหลว",selectAll:"เลือกทั้งหมด",selected:"เลือกแล้ว",batchGenerateText:"สร้างคำพร้อมท์เป็นชุด",batchGenerateVideo:"สร้างวิดีโอเป็นชุด",importVideo:"นำเข้าไปยังโต๊ะแก้ไข",emptyTrack:"ย่อหน้า {ดัชนี 1}",del:"ลบ",delConfirm:"คุณแน่ใจหรือไม่ว่าต้องการลบย่อหน้านี้",selectSource:"เลือกแหล่งที่มา",confirm:"เลือกจากสินทรัพย์",cancel:"เลือกจากกระดานเรื่องราว",selectVideoFailed:"การเลือกวิดีโอล้มเหลว",selectVideoSuccess:"การเลือกวิดีโอสำเร็จ",selectTrackFirst:"โปรดเลือกกระดานเรื่องราวก่อน",noSelectedVideo:"ไม่ได้เลือกวิดีโอ",generateConfirm:"ยืนยันการสร้าง",generateConfirmBody:"ยืนยันการสร้างวิดีโอ",generateVideosInBatches:"สร้างวิดีโอเป็นชุด",generateStarted:"เริ่มสร้าง",promptEmpty:"ตรวจสอบข้อมูลที่จำเป็นในการสร้างวิดีโอและคำแจ้งว่างเปล่า คุณต้องการสร้างมันต่อไปหรือไม่?",skipDataWithEmptyVideoPromptWords:"มีข้อมูลวิดีโอที่ต้องสร้างและคำแจ้งว่างเปล่า",duration:"ระยะเวลา",resolution:"ปณิธาน",delVideo:"ยืนยันการลบวิดีโอนี้หรือไม่",delSuccess:"ลบสำเร็จ",addReference:"เพิ่มการอ้างอิง",promptPlaceholder:"โปรดป้อนคำแจ้งของวิดีโอ",downloadVideo:"ดาวน์โหลดวิดีโอเป็นชุด",selectVideo:"โปรดตรวจสอบวิดีโอที่คุณต้องการดาวน์โหลด"}},f_i={slogan:"แพลตฟอร์มสร้างละครสั้นอัจฉริยะ",tips:"บัญชีผู้ใช้เริ่มต้น: admin / admin123",settings:"การตั้งค่าเซิร์ฟเวอร์",requestAddress:"ที่อยู่คำขอ (Request Address)",username:"ชื่อผู้ใช้",password:"รหัสผ่าน",login:"เข้าสู่ระบบ",usernameRequired:"โปรดกรอกชื่อผู้ใช้",passwordRequired:"โปรดกรอกรหัสผ่าน",enterUsernameAndPassword:"โปรดกรอกชื่อผู้ใช้หรือรหัสผ่าน",loginSuccess:"เข้าสู่ระบบสำเร็จ",settingsSaved:"บันทึกการตั้งค่าแล้ว"},g_i={prompt:"คำพูดที่รวดเร็ว"},m_i={welcomeTitle:"ยินดีต้อนรับสู่ ToonFlow",welcomeDesc:"แพลตฟอร์มเวิร์กโฟลว์การสร้างการ์ตูนที่ขับเคลื่อนด้วย AI ให้เราใช้เวลาสักครู่เพื่อกำหนดค่าเริ่มต้นให้เสร็จสิ้น",startConfig:"เริ่มการกำหนดค่า",skip:"ข้ามการบูต",configModel:"เพิ่มบริการโมเดล",configData:"กำหนดค่าตัวแทน",startUse:"เริ่มต้นเลย",configModelTitle:"เพิ่มผู้ให้บริการโมเดล",configModelDesc:"ขั้นแรก คุณต้องเพิ่มผู้ให้บริการโมเดล AI อย่างน้อยหนึ่งราย (เช่น OpenAI, Claude ฯลฯ) ในการตั้งค่าและกรอกคีย์ API ที่เกี่ยวข้อง",configModelTip:'การคลิกปุ่มด้านล่างจะเป็นการเปิดแท็บ "บริการโมเดล" ของหน้าการตั้งค่า หลังจากเพิ่มซัพพลายเออร์แล้ว ให้กลับมาที่นี่เพื่อดำเนินการต่อ',configModelBtn:"ไปที่กำหนดค่าบริการโมเดล",configAgentTitle:"กำหนดโมเดลตัวแทน",configAgentDesc:"จากนั้น กำหนดโมเดลให้กับโมดูลการทำงานแต่ละโมดูลในการกำหนดค่าตัวแทน เพื่อให้ระบบทราบว่าควรเรียกโมเดลใดเพื่อให้งานเสร็จสมบูรณ์",configAgentTip:'การคลิกปุ่มด้านล่างจะเป็นการเปิดแท็บ "การกำหนดค่าตัวแทน" ของหน้าการตั้งค่า กลับมาที่นี่หลังจากกำหนดโมเดลให้กับแต่ละฟังก์ชันแล้ว',configAgentBtn:"ไปที่กำหนดค่าตัวแทน",finishTitle:"🎉 ทุกอย่างพร้อมแล้ว!",finishDesc:"การกำหนดค่าเสร็จสมบูรณ์ และตอนนี้คุณสามารถเริ่มใช้คุณสมบัติทั้งหมดได้แล้ว หากคุณต้องการปรับเปลี่ยน คุณสามารถแก้ไขได้ในการตั้งค่าได้ตลอดเวลา",qrcodeLabel:"เข้าร่วมกลุ่มการสื่อสาร WeChat เพื่อรับความช่วยเหลือเพิ่มเติม:",githubLabel:"หากคุณพบว่ามีประโยชน์ โปรดให้ ⭐ ดาวแก่เรา!",prevStep:"ขั้นตอนก่อนหน้า",nextStep:"ขั้นตอนต่อไป",finish:"เริ่มต้นเลย"},k_i={skillManagement:{search:"ค้นหาชื่อไฟล์",empty:"ไม่มีไฟล์ที่ตรงกัน",edit:"แก้ไข",selectOnTheLeft:"โปรดเลือกไฟล์จากด้านซ้าย"}},v_i={assets:{notExist:"ไม่มีเนื้อหาอยู่",notDerivativeExist:"ไม่มีสินทรัพย์อนุพันธ์",derivativeUpdateSuccess:"อัปเดตสำเร็จ",derivativeState:"ไม่ได้สร้างขึ้น",derivativeAddSuccess:"เพิ่มเรียบร้อยแล้ว",derivativeDelSuccess:"ลบสำเร็จ",notGenerated:"ไม่ได้สร้างขึ้น"},addSuccess:"อัปเดตสำเร็จ",state:{unused:"ไม่ได้สร้างขึ้น"},saveSuccess:"เพิ่มเรียบร้อยแล้ว"},A_i={generating:"กำลังสร้าง"},p_i={scanning:"🔍 การแยกวิเคราะห์และการโหลดทักษะ",scanComplete:"✨ สแกน Skill เสร็จสมบูรณ์",inserted:"✅ เพิ่มทักษะ {count}",updated:"🔄 อัปเดตทักษะ {count}",removed:"🗑️ ลบ {count} Skill",scannedFiles:"📁 สแกน {count} ไฟล์",noDescription:"📝 {count} Skill ไม่มีคำอธิบาย",noAttribution:"👤 {count} Skill ไม่มีการระบุแหล่งที่มา",configWarning:"⚠️ คำเตือนการตั้งค่า Skill",openSettings:"เปิดการตั้งค่า",scanFailed:"❌ สแกนล้มเหลว",checkNetwork:"🔌 กรุณาตรวจสอบการเชื่อมต่อเครือข่ายหรือลองใหม่ภายหลัง",retryLater:"🔁 กรุณาลองใหม่ภายหลัง"},b_i="สร้างวิดีโอ",w_i="เวอร์ชันประวัติศาสตร์",O_i="กำลังสร้าง",y_i="ล้มเหลว",C_i="เลือกทั้งหมด",__i="เลือกแล้ว",S_i="นำเข้าวิดีโอ",L_i="ย่อหน้า {ดัชนี 1}",x_i="ยืนยันการลบ",E_i="คุณแน่ใจหรือไม่ว่าต้องการลบย่อหน้านี้",T_i="เลือกแหล่งที่มา",Q_i="เลือกจากสินทรัพย์",D_i="เลือกจากกระดานเรื่องราว",B_i={newVersion:"มีเวอร์ชั่นใหม่แล้ว คุณต้องการอัปเดตหรือไม่?"},R_i={components:d_i,settings:u_i,workbench:h_i,login:f_i,"components.storyboardImageCheck.camera":"กล้อง","components.storyboardImageCheck.dialogTitle":"เลือกรูปสตอรี่บอร์ด","components.storyboardImageCheck.preview":"ดูตัวอย่าง","components.storyboardImageCheck.src":"รูปตัวอย่าง","components.storyboardImageCheck.title":"หัวข้อ","components.storyboardImageCheck.duration":"ระยะเวลา","components.storyboardImageCheck.lines":"บทพูด","components.storyboardImageCheck.createTime":"เวลาสร้าง","workbench.script.extractAssets":"ดึงทรัพยากร",promptManage:g_i,hello:m_i,setting:k_i,storyboard:v_i,productionAgent:A_i,skillScan:p_i,generate:b_i,history:w_i,generating:O_i,generateFailed:y_i,selectAll:C_i,selected:__i,importVideo:S_i,emptyTrack:L_i,del:x_i,delConfirm:E_i,selectSource:T_i,confirm:Q_i,cancel:D_i,"workbench.script.msg.exportFailed":"การส่งออกล้มเหลว","workbench.production.node.assets.confirmDeleteBody":"ยืนยันว่าจะลบเนื้อหาหรือไม่","workbench.production.node.assets.removeFailed":"ลบเนื้อหาไม่สำเร็จ",version:B_i,"workbench.production.generatedNode.localUpload":"การอัปโหลดในเครื่อง","workbench.production.editImage.uploadFailed":"การอัปโหลดรูปภาพล้มเหลว","workbench.production.editImage.noImage":"กรุณาเพิ่มรูปภาพก่อน"},I_i={editMdPreivew:{title:"Chỉnh sửa",confirm:"Lưu",cancel:"Hủy"},imageTools:{copy:"Sao chép hình ảnh",preview:"Xem trước",download:"Tải xuống",msg:{imageLoadFailed:"Tải hình ảnh thất bại",convertFailed:"Chuyển đổi thất bại",copied:"Đã sao chép vào clipboard",copyFailed:"Sao chép thất bại",downloadFailed:"Tải xuống thất bại",downloadStarted:"Bắt đầu tải xuống",downloadBlockedOpenNewWindow:"Nguồn hình ảnh hiện tại có thể hạn chế tải xuống, đã thử mở trong cửa sổ mới"}},migrateShow:{title:"Di chuyển dữ liệu",desc:"Phát hiện bạn có dữ liệu từ phiên bản cũ, bạn có muốn di chuyển không?",hide:"Không hiển thị lại",confirm:"Xác nhận",msg:{migrateSuccess:"Di chuyển dữ liệu thành công",migrateFailed:"Di chuyển dữ liệu thất bại"}},modelSelect:{placeholder:"Vui lòng chọn mô hình",type:{image:"Hình ảnh",text:"Văn bản",video:"Video"},msg:{fetchModelFailed:"Lấy dữ liệu mô hình thất bại:"}}},M_i={title:"Cài đặt ToonFlow",menu:{language:"Cài đặt ngôn ngữ",vendorConfig:"Dịch vụ mô hình",agentConfig:"Cấu hình Agent",promptManage:"Quản lý Prompt",skillManagement:"Quản lý kĩ năng",memoryConfig:"Cấu hình bộ nhớ Agent",loginConfig:"Cấu hình đăng nhập",dbConfig:"Thao tác cơ sở dữ liệu",fileManagement:"Quản lý tệp",otherConfig:"Cấu hình khác",requestConfig:"Địa chỉ yêu cầu (API)",about:"Kiểm tra cập nhật",logoutConfig:"Đăng xuất",skillsSkillsManagement:"Kỹ năngQuản lý kỹ năng"},language:{desc:"Chọn ngôn ngữ hiển thị giao diện",msg:{saved:"Cài đặt ngôn ngữ đã được lưu"}},vendor:{addVendor:"Thêm nhà cung cấp",noVendor:"Chưa có nhà cung cấp, vui lòng thêm trước",required:"Bắt buộc",optionalSection:"Tùy chọn",modelSettings:"Cài đặt mô hình",addManually:"Thêm thủ công",test:"Kiểm tra",edit:"Chỉnh sửa",delete:"Xóa",deleteVendor:"Xóa nhà cung cấp",editCode:"Chỉnh sửa mã",updateConfig:"Cập nhật cấu hình",addModel:"Thêm mô hình",editModel:"Chỉnh sửa mô hình",displayName:"Tên hiển thị",displayNamePlaceholder:"Ví dụ: GPT-4o",modelId:"Mã mô hình (Model ID)",modelIdPlaceholder:"Ví dụ: gpt-4o",modelType:"Loại mô hình",multimodal:"Đa phương thức (Multimodal)",supported:"Hỗ trợ",notSupported:"Không hỗ trợ",toolCall:"Gọi công cụ (Tool Call)",imageMode:"Chế độ hình ảnh",videoMode:"Chế độ video",audioOutput:"Đầu ra âm thanh",durationResolution:"Ánh xạ Thời lượng / Độ phân giải",durationSec:"Thời lượng (giây)",resolution:"Độ phân giải",enterAndPress:"Nhập và nhấn Enter",addDurationResolution:"Thêm một bộ Thời lượng / Độ phân giải",testResult:"Kết quả kiểm tra",generating:"Đang tạo...",addVendorDialog:"Thêm nhà cung cấp",codeEditorInfo:"Vui lòng viết mã TypeScript để cấu hình thông tin nhà cung cấp",reset:"Đặt lại",importFile:"Nhập tệp",textModel:"Mô hình văn bản",imageModel:"Mô hình hình ảnh",videoModel:"Mô hình video",textToImage:"Văn bản -> Hình ảnh",textToVideo:"Văn bản -> Video",singleImage:"Ảnh đơn",multiImage:"Chế độ nhiều ảnh",multiReference:"Tham chiếu nhiều ảnh",gridImage:"Lưới ảnh đơn",startEndRequired:"Khung hình đầu và cuối (Bắt buộc cả hai)",endFrameOptional:"Khung hình đầu và cuối (Khung hình cuối tùy chọn)",startFrameOptional:"Khung hình đầu và cuối (Khung hình đầu tùy chọn)",textRef:"Văn bản",imageRef:"Hình ảnh",videoRef:"Video",audioRef:"Âm thanh",audioOptional:"Tùy chọn",audioOnly:"Chỉ xuất video có âm thanh",noAudio:"Chỉ xuất video không âm thanh",msg:{getVendorListFailed:"Lấy danh sách nhà cung cấp thất bại",vendorConfigUpdated:"Cấu hình nhà cung cấp đã được cập nhật",updateFailed:"Cập nhật thất bại",highRiskConfirm:"⚠️ Xác nhận thao tác rủi ro cao",addVendorRiskBody:"Việc thêm nhà cung cấp AI mới sẽ cấp cho họ quyền truy cập vào API hệ thống, vui lòng đảm bảo bạn tin tưởng nguồn mã của nhà cung cấp này!",iKnowRisk:"Tôi hiểu rủi ro",cancel:"Hủy",confirmAgain:"⚠️ Xác nhận lại",addVendorConfirmBody:"Bạn có chắc chắn muốn thêm nhà cung cấp này không? Sau khi thêm, nó sẽ tham gia vào việc điều phối mô hình của hệ thống.",confirmAndAdd:"Xác nhận và thêm",goBackCheck:"Quay lại kiểm tra",vendorAdded:"Đã thêm nhà cung cấp thành công",addFailed:"Thêm thất bại",updateVendorRiskBody:"Cập nhật cấu hình nhà cung cấp AI sẽ thay đổi quyền truy cập API hệ thống và hành vi của họ, vui lòng đảm bảo bạn tin tưởng nguồn mã sau khi sửa đổi!",updateVendorConfirmBody:"Bạn có chắc chắn muốn cập nhật cấu hình nhà cung cấp này không? Việc cập nhật sẽ ảnh hưởng đến việc điều phối mô hình của hệ thống.",confirmAndUpdate:"Xác nhận và cập nhật",updateSuccess:"Cập nhật cấu hình nhà cung cấp thành công",fillDisplayName:"Vui lòng điền tên hiển thị",fillModelId:"Vui lòng điền mã mô hình",selectImageMode:"Vui lòng chọn chế độ hình ảnh",selectVideoMode:"Vui lòng chọn chế độ video",groupPrefix:"Nhóm thứ {n}:",addDuration:"Vui lòng thêm thời lượng",addResolution:"Vui lòng thêm độ phân giải",selectVendorFirst:"Vui lòng chọn nhà cung cấp trước",modelIdExists:"Mã mô hình đã tồn tại",modelAdded:"Đã thêm mô hình thành công",modelUpdated:"Đã cập nhật mô hình thành công",enterApiKey:"Vui lòng điền API KEY",enterApiUrl:"Vui lòng điền API URL",testSuccess:"Kiểm tra thành công",imageGenSuccess:"Tạo hình ảnh thành công",videoGenSuccess:"Tạo video thành công",requestFailed:"Yêu cầu thất bại",deleteModelConfirm:"Xác nhận xóa mô hình",deleteModelBody:"Không thể khôi phục sau khi xóa, bạn có muốn tiếp tục?",confirmDelete:"Xác nhận xóa",modelDeleted:"Mô hình đã bị xóa",deleteVendorConfirm:"Xác nhận xóa nhà cung cấp",deleteVendorBody:"Sau khi xóa, tất cả các mô hình thuộc nhà cung cấp này cũng sẽ bị xóa, bạn có muốn tiếp tục?",vendorDeleted:"Nhà cung cấp đã bị xóa",deleteFailed:"Xóa thất bại",enabled:"Đã bật",disabled:"Tàn tật",linkAddVendorRiskBody:"Việc thêm nhà cung cấp AI mới sẽ cấp cho nhà cung cấp đó quyền truy cập vào API hệ thống, vui lòng đảm bảo rằng bạn tin cậy nguồn liên kết của nhà cung cấp đó!",importAdd:"Việc thêm nhà cung cấp AI mới sẽ cấp cho nhà cung cấp đó quyền truy cập vào API hệ thống, vui lòng đảm bảo rằng bạn tin cậy vào nguồn tài liệu của nhà cung cấp đó!",linkAddFailed:"Không thể thêm liên kết"},associationSkills:"Kỹ năng liên quan",think:"suy nghĩ sâu sắc",code:"mã số",linkAddPlaceholder:"Nhập liên kết để thêm",noFileSelected:"Đã nhập tệp thành công",linkAdd:"xác nhận"},agent:{bannerDesc:"Sử dụng máy chủ trung gian chính thức của Toonflow, hỗ trợ điền cấu hình bằng 1 cú nhấp chuột, sẵn sàng sử dụng ngay mà không cần thiết lập thủ công.",visitWebsite:"Truy cập trang web",fillKey:"Điền KEY",oneClickFill:"Điền bằng 1 cú nhấp chuột",notOpen:"Chưa mở",notConfigured:"Chưa cấu hình",modelConfig:"Cấu hình mô hình",confirm:"Xác nhận",cancel:"Hủy",selectModel:"Chọn mô hình",fillKeyHeader:"Điền KEY chính thức của nền tảng Toonflow",keyPlaceholder:"Vui lòng nhập KEY",save:"Lưu",msg:{notAvailable:"Tính năng này hiện chưa khả dụng, vui lòng chờ",configSuccess:"Cấu hình thành công",updateConfigFailed:"Cập nhật cấu hình thất bại:",keyValid:"KEY hợp lệ, kết nối với nền tảng Toonflow thành công",keyInvalid:"KEY không hợp lệ, vui lòng kiểm tra và nhập lại:",enterKey:"Vui lòng nhập KEY",saveFailed:"Lưu thất bại:",getAgentListFailed:"Lấy danh sách cấu hình Agent thất bại:",toonflowNotFound:"Trạm trung chuyển chính thức của Toonflow không tồn tại"}},memory:{warning:"Các mục cấu hình dưới đây đã được đặt sẵn ở mức khuyến nghị. Trừ khi bạn hiểu rõ ý nghĩa và tác động của từng cấu hình, nếu không khuyên bạn nên giữ nguyên thiết lập hiện tại",vectorModelConfig:"Cấu hình mô hình vector",modelFilePath:"Đường dẫn tệp mô hình",quantizationType:"Loại lượng tử hóa",quantizationPlaceholder:"Vui lòng nhập loại lượng tử hóa",memoryParams:"Thông số bộ nhớ",messagesPerSummary:"Số tin nhắn kích hoạt nén",messagesPerSummaryHelp:"Giữ lại ngữ cảnh của N cuộc hội thoại gần nhất.",shortTermLimit:"Số tin nhắn chưa nén lấy trong 1 lần",shortTermLimitHelp:"Số lượng bộ nhớ đề xuất được trả về khi truy xuất.",summaryMaxLength:"Ký tự nén tối đa",summaryMaxLengthHelp:"Ký tự tối đa cho phép khi nén tin nhắn",summaryLimit:"Số tin nhắn đã nén cho phép truy vấn",summaryLimitHelp:"Số tin nhắn đã nén cho phép truy vấn",ragLimit:"Số lượng bộ nhớ tìm kiếm",ragLimitHelp:"Số lượng tin nhắn lấy được khi truy xuất.",deepRetrieveSummaryLimit:"Số tin nhắn nén thu hồi bằng vector",deepRetrieveSummaryLimitHelp:"Số lượng tin nhắn lấy được khi truy xuất nội dung tin nhắn đã nén.",saveConfig:"Lưu cấu hình",clearMemory:"Xóa bộ nhớ",restoreDefault:"Khôi phục cấu hình mặc định",msg:{saved:"Cấu hình bộ nhớ đã được lưu",clearConfirmTitle:"Xác nhận xóa bộ nhớ",clearConfirmBody:"Thao tác này sẽ xóa toàn bộ dữ liệu bộ nhớ toàn cục của AI và không thể khôi phục, bạn có muốn tiếp tục?",confirmClear:"Xác nhận xóa",cancel:"Hủy",cleared:"Bộ nhớ đã được xóa",clearFailed:"Xóa bộ nhớ thất bại"}},login:{username:"Tên người dùng",usernamePlaceholder:"Vui lòng nhập tên người dùng",password:"Mật khẩu",passwordPlaceholder:"Vui lòng nhập mật khẩu",modify:"Sửa đổi",msg:{enterUsername:"Vui lòng nhập tên người dùng",usernameLength:"Độ dài tên người dùng từ 2-20 ký tự",enterPassword:"Vui lòng nhập mật khẩu",passwordLength:"Độ dài mật khẩu từ 6-20 ký tự",fetchFailed:"Lấy thông tin người dùng thất bại",saveSuccess:"Lưu thành công",saveFailed:"Lưu thất bại"}},db:{clearDb:"Xóa sạch cơ sở dữ liệu",clearDbDesc:"Xóa toàn bộ dữ liệu trong tất cả các bảng, giữ lại cấu trúc bảng",clearData:"Xóa dữ liệu",confirmAction:"Xác nhận thao tác",msg:{clearDbTitle:"Xóa sạch cơ sở dữ liệu",firstConfirm:"Bạn có chắc chắn muốn xóa toàn bộ bảng dữ liệu không? Dữ liệu sau khi xóa sẽ không thể khôi phục!",secondConfirm:"Đây là lần xác nhận cuối cùng, sau khi xóa toàn bộ dữ liệu sẽ bị mất vĩnh viễn!",keyword:"Xóa sạch",confirm:"Xác nhận",pleaseInput:"Vui lòng nhập",cleared:"Toàn bộ bảng dữ liệu đã được xóa",operationFailed:"Thao tác thất bại, vui lòng thử lại",cancelled:"Thao tác đã bị hủy"}},other:{requestTimeout:"Thời gian chờ yêu cầu (Timeout)",seconds:"giây",inputSeconds:"Vui lòng nhập số giây",assetConcurrency:"Số luồng tạo tài nguyên đồng thời",count:"cái",inputCount:"Vui lòng nhập số lượng",chapterRegex:"Regex tách chương",restoreDefault:"Khôi phục mặc định",regexPlaceholder:"Vui lòng nhập biểu thức chính quy (Regex)",canvasScroll:"Cuộn vải",canvasIsDisabled:"Thu phóng canvas",agentCanvasScalingMethod:"Hoạt động bánh xe vải không giới hạn trên trang sản xuất",zoom:"Phóng",scroll:"cuộn",isInteracting:"Tối ưu hóa hiệu suất kéo canvas không giới hạn trên trang sản xuất",closeIsInteracting:"đóng cửa"},request:{warning:"Nếu không có trường hợp đặc biệt, không cần sửa đổi hoặc cấu hình",apiAddress:"Địa chỉ API",apiPlaceholder:"Vui lòng nhập địa chỉ yêu cầu API",save:"Lưu",reset:"Đặt lại",msg:{enterApi:"Vui lòng nhập địa chỉ API",validUrl:"Vui lòng nhập địa chỉ HTTP/HTTPS hợp lệ",saved:"Địa chỉ yêu cầu đã lưu thành công",reset:"Đã đặt lại về địa chỉ mặc định"}},about:{slogan:"Công cụ sáng tạo truyện tranh / phân cảnh mã nguồn mở do AI điều khiển",latestVersion:"Đây là phiên bản mới nhất",checkUpdate:"Kiểm tra cập nhật",codeRepository:"Kho lưu trữ mã nguồn",githubRepo:"Kho GitHub",giteeRepo:"Kho Gitee",versionUpdate:"Cập nhật phiên bản",checkUpdateGithub:"Kiểm tra cập nhật (GitHub)",getFromGithub:"Lấy phiên bản mới nhất từ GitHub Release",checkUpdateGitee:"Kiểm tra cập nhật (Gitee)",getFromGitee:"Lấy phiên bản mới nhất từ Gitee Release",license:"Giấy phép",licenseDesc:"Thỏa thuận giấy phép mã nguồn mở · Nhấn để xem chi tiết",updateAvailable:"phiên bản mới được tìm thấy",upToDate:"Đã phát hiện phiên bản mới",confirmReinstall:"Sao chép liên kết",reinstallRequired:"Trình duyệt sẽ tự động mở và tải xuống. Nếu nó không mở, hãy mở nó bằng tay."},logout:{warning:"Sau khi đăng xuất, bạn cần đăng nhập lại để tiếp tục sử dụng hệ thống.",confirmLogout:"Bạn có chắc chắn muốn đăng xuất không?",logout:"Đăng xuất",msg:{logoutSuccess:"Đăng xuất thành công",logoutFailed:"Đăng xuất thất bại, vui lòng thử lại"}},file:{quickOpen:"Mở thư mục nhanh",open:"Mở",dockerDesc:'Đối với Docker/Triển khai tách biệt Frontend-Backend, vui lòng đi tới thư mục "/data/*" để quản lý tệp thủ công.',desktopOnly:"Tính năng này chỉ hỗ trợ trên ứng dụng Desktop",folders:{data:"data",dataDesc:"Thư mục dữ liệu.",logs:"data/logs",logsDesc:"Nhật ký hệ thống và nhật ký lỗi.",oss:"data/oss",ossDesc:"Tài nguyên liên quan đến lưu trữ tệp.",skills:"data/skills",skillsDesc:"Tệp cấu hình kỹ năng và lời nhắc (Prompt).",models:"data/models",modelsDesc:"Tệp mô hình và cấu hình.",web:"data/web",webDesc:"Tài nguyên liên quan đến Web, như các sản phẩm build Frontend.",serve:"data/serve",serveDesc:"Tệp liên quan đến dịch vụ Backend."},openFailed:"Mở thư mục thất bại"},dev:{warning:"Sau đây là các công cụ dành cho nhà phát triển, vui lòng sử dụng thận trọng!",openDevtool:"Mở",devtoolsDoc:"Địa chỉ tài liệu",devtoolsDesc:"Sau khi bật lên sẽ tạo một thư mục .devtools trong thư mục cài đặt Toonflow. Hãy đảm bảo rằng Toonflow có quyền ghi (chạy với tư cách quản trị viên).",devtoolsDesc2:"Chạy npx {'@'}ai-sdk/devtools trong thư mục này để bật gỡ lỗi đo từ xa",openDevtoolFailed:"Không mở được công cụ dành cho nhà phát triển, vui lòng đảm bảo đã cài đặt Toonflow desktop",notInElectron:"Đối với môi trường WEB, vui lòng mở bảng điều khiển trình duyệt theo cách thủ công"}},P_i={selectProject:"Vui lòng chọn dự án",menu:{myProject:"Dự án của tôi",taskCenter:"Trung tâm tác vụ",novel:"Bản gốc tiểu thuyết",scriptAgent:"Agent Kịch bản",scriptManage:"Quản lý kịch bản",cornerScape:"Nhân vật & Bối cảnh",production:"Sản xuất video",assetCenter:"Trung tâm tài nguyên",settings:"Cài đặt",jumpGithub:"Chuyển tới Github",feedbackQuestions:"Câu hỏi phản hồi"},project:{title:"Dự án của tôi",subtitle:"Quản lý tất cả các dự án phim ngắn của bạn",newProject:"Dự án mới",dialog:{editTitle:"Chỉnh sửa dự án",addTitle:"Dự án mới",save:"Lưu",ok:"Xác nhận",cancel:"Hủy",projectType:"Loại dự án",selectType:"Chọn loại dự án",basedOnNovel:"Dựa trên bản gốc tiểu thuyết",projectName:"Tên dự án",projectNamePh:"Vui lòng nhập tên dự án",novelType:"Thể loại tiểu thuyết",novelTypePh:"Ví dụ: Huyền huyễn, Khoa học viễn tưởng, Ngôn tình",artStyle:"Hướng dẫn trực quan",selected:"Đã chọn:",selectArtStyle:"Vui lòng chọn hướng dẫn trực quan",newArtStyle:"Hướng dẫn trực quan mới",loading:"Đang tải...",videoRatio:"Tỷ lệ video",novelIntro:"Tóm tắt tiểu thuyết",novelIntroPh:"Vui lòng nhập tóm tắt tiểu thuyết",editArtStyleTitle:"Chỉnh sửa hướng dẫn trực quan",newArtStyleTitle:"Hướng dẫn trực quan mới",artStyleName:"Tên hướng dẫn trực quan",artStyleNamePh:"Vui lòng nhập tên hướng dẫn trực quan",artStyleImage:"Ảnh bìa hướng dẫn trực quan",remove:"Xóa bỏ",uploadCover:"Tải lên ảnh bìa",artStylePrompt:"Lời nhắc hướng dẫn sử dụng trực quan",aiExtract:"AI trích xuất Prompt",promptPlaceholder:"Mô tả từ nhắc hướng dẫn sử dụng trực quan, được sử dụng để chỉ định hướng dẫn trực quan khi tạo hình ảnh.",visualManual:"Hướng dẫn trực quan",newVisualManual:"Hướng dẫn trực quan mới",editVisualManualTitle:"Chỉnh sỮa hướng dẫn trực quan",newVisualManualTitle:"Hướng dẫn trực quan mới",visualManualName:"Tên hướng dẫn trực quan",visualManualNamePh:"Vui lòng nhập tên hướng dẫn trực quan",visualManualCover:"Ảnh bìa hướng dẫn trực quan",visualManualPrompt:"Prompt hướng dẫn trực quan",modelData:"Chọn mô hình hình ảnh",videoModelData:"Chọn mô hình video",prompt:{placeholder:"Nhập từ gợi ý",saveSuccess:"Cập nhật thành công",title:"lời nhắc"},basedOnScript:"dựa trên kịch bản",mdFile:"tập tin hướng dẫn trực quan",directorManual:"Sổ tay Giám đốc",addDirectorManual:"Hướng dẫn đạo diễn mới",editingDirectorManual:"Chỉnh sửa Sổ tay Giám đốc",newDirecorManualTitle:"Hướng dẫn đạo diễn mới",directorManualPrompt:"Hướng dẫn sử dụng lời nhắc của đạo diễn",directorManualName:"Tên sổ tay giám đốc",directorManualNamePh:"Nhập tên Sổ tay Giám đốc",directorFile:"Tài liệu hướng dẫn của Giám đốc",directorManualCover:"Bìa sách hướng dẫn của giám đốc"},msg:{fetchFailed:"Lấy danh sách dự án thất bại",notFound:"Không tìm thấy dự án này!",editSuccess:"Chỉnh sửa dự án thành công",editFailed:"Chỉnh sửa dự án thất bại",addSuccess:"Thêm dự án thành công",addFailed:"Thêm dự án thất bại",deleteHeader:"Xóa dự án",deleteBody:"Bạn có chắc chắn muốn xóa dự án này không?",deleteConfirm:"Xóa",deleteCancel:"Hủy",deleteSuccess:"Xóa dự án thành công",deleteFailed:"Xóa dự án thất bại",extractSuccess:"Trích xuất lời nhắc thành công",extractFailed:"Trích xuất thất bại",enterArtStyleName:"Vui lòng nhập tên hướng dẫn trực quan",artStyleUpdated:"Hướng dẫn trực quan được cập nhật",artStyleAdded:"Đã thêm hướng dẫn trực quan",operationFailed:"Thao tác thất bại",enterVisualManualName:"Vui lòng nhập tên hướng dẫn trực quan",enterVisualManualImage:"Vui lòng tải lên ảnh bìa hướng dẫn trực quan",enterVisualManualTabData:"Prompt không được để trống",visualManualUpdated:"Hướng dẫn trực quan được cập nhật",visualManualAdded:"Đã thêm hướng dẫn trực quan",deleteVisualManualHeader:"Xóa hướng dẫn trực quan",deleteVisualManualBody:'Bạn có chắc chắn muốn xóa hướng dẫn trực quan "{name}" không?',deleteVisualManualConfirm:"Xóa",deleteVisualManualCancel:"Hủy",enterProjectName:"Vui lòng nhập tên dự án",enterProjectIntro:"Vui lòng nhập phần giới thiệu tiểu thuyết",enterProjectType:"Vui lòng nhập loại dự án",enterArtStyle:"Vui lòng chọn một tài liệu trực quan của dự án",enterVideoRatio:"Vui lòng chọn tỷ lệ video",enterImageModel:"Vui lòng chọn mẫu hình ảnh",enterVideoModel:"Vui lòng chọn một mẫu video",visualManualDeleted:"Xóa thành công",selectMode:"Vui lòng chọn chế độ",deleteDirectorManualHeader:"Xóa sổ tay giám đốc",deleteDirectorManualBody:'Bạn có chắc chắn muốn xóa Sổ tay Giám đốc "{name}" không?',directorManualUpdated:"Sổ tay Giám đốc được cập nhật",directorManualAdded:"Đã thêm hướng dẫn sử dụng của Giám đốc",directorManual:"Vui lòng chọn Sổ tay Giám đốc Dự án"},type:{novel:"Dựa trên tiểu thuyết gốc",script:"Dựa trên kịch bản tiểu thuyết"}},novel:{importText:"Nhập bản gốc",batchDelete:"Xóa hàng loạt",eventAnalysis:"Phân tích sự kiện",searchPlaceholder:"Tìm kiếm tên bản gốc...",search:"Tìm kiếm",generating:"Đang tạo...",genFailed:"Tạo thất bại",none:"Không có",edit:"Chỉnh sửa",delete:"Xóa",col:{id:"STT",reel:"Tập",chapter:"Tên chương",chapterData:"Nội dung chương",event:"Sự kiện",operation:"Thao tác"},msg:{batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} dữ liệu đã chọn không?",batchDeleteSuccess:"Xóa hàng loạt thành công",deleteHeader:"Xác nhận xóa",deleteBody:'Bạn có chắc chắn muốn xóa dữ liệu của chương có tên "{name}" không?',deleteSuccess:"Xóa thành công",eventAnalysisHeader:"Phân tích sự kiện",eventAnalysisBody:"Bạn có chắc chắn muốn phân tích sự kiện cho {count} dữ liệu đã chọn không?"},import:{title:"Tải lên bản gốc tiểu thuyết",step1:"Bước 1",step2:"Bước 2",step3:"Bước 3",dragUpload:"Kéo thả tệp văn bản tiểu thuyết vào đây hoặc nhấp để tải lên",uploadHint:"Hỗ trợ định dạng .txt, .docx, dung lượng tệp khuyên dùng dưới 10MB",or:"Hoặc",pasteLabel:"Dán trực tiếp nội dung tiểu thuyết",pastePlaceholder:"Vui lòng nhập nội dung tiểu thuyết",chars:"ký tự",tooShort:"Nội dung quá ngắn, khuyên dùng ít nhất 100 ký tự",parsedChapters:"Đã phân tích {count} chương",nextStep:"Tiếp theo",prevStep:"Quay lại",selectedInfo:"Đã chọn: {count} chữ (nhỏ hơn 200.000 chữ)",eventAnalysis:"Phân tích sự kiện",saveAndAnalyze:"Lưu bản gốc và phân tích sự kiện",col:{chapter:"Chương",reel:"Tập",chapterName:"Tên chương",chapterData:"Nội dung chương"},msg:{parseFailed:"Phân tích tệp thất bại, vui lòng tải lên lại",selectFile:"Chọn tập tin",docNotSupported:"File .doc không hỗ trợ phân tích cú pháp, vui lòng chuyển đổi sang file .ts",unsupportedType:"Loại tệp không được hỗ trợ",fileTooLarge:"Dung lượng tệp vượt quá 10MB, vui lòng tải lên tệp nhỏ hơn",selectChapters:"Vui lòng đánh dấu chọn chương trước",saveSuccess:"Lưu bản gốc tiểu thuyết thành công"},importAdd:"Kéo và thả file vào đây hoặc bấm vào để tải lên",limit:"Hỗ trợ định dạng .ts"},editDialog:{title:"Chỉnh sửa bản gốc tiểu thuyết",chapterName:"Tên chương",chapterNamePh:"Vui lòng nhập tên chương",eventContent:"Nội dung sự kiện",eventContentPh:"Nhập nội dung sự kiện",chapterContent:"Nội dung chương",chapterContentPh:"Vui lòng nhập nội dung chương",cancel:"Hủy",save:"Lưu",msg:{updateSuccess:"Cập nhật bản gốc tiểu thuyết thành công"}},event:{regenerate:"Tạo lại sự kiện",batchDelete:"Xóa hàng loạt",noData:"Chưa có dữ liệu sự kiện, nhấp để bắt đầu tạo",generate:"Tạo sự kiện",generatingHint:"Đang tạo sự kiện, vui lòng chờ...",loading:"Đang tải...",delete:"Xóa",col:{id:"ID Sự kiện",eventName:"Tên sự kiện",chapters:"Chương nguồn",detail:"Quá trình sự kiện",createTime:"Thời gian tạo",operation:"Thao tác"},msg:{deleteHeader:"Xóa sự kiện",deleteBody:"Bạn có chắc chắn muốn xóa sự kiện này không?",deleteSuccess:"Xóa thành công",generateSuccess:"Tạo sự kiện thành công",batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} dữ liệu đã chọn không?",batchDeleteSuccess:"Xóa hàng loạt thành công"}},analysis:{analyzeFirst:"Vui lòng phân tích sự kiện trước",startAnalysis:"Bắt đầu phân tích",chapterHeader:"Chương {index} - {name}",analyzing:"Đang phân tích sự kiện"}},scriptAgent:{inputPlaceholder:"Vui lòng nhập nội dung",chapterEvents:"Sự kiện chương",clearMessageMemory:"Xóa bộ nhớ tin nhắn",clearSummaryMemory:"Xóa bộ nhớ tóm tắt",clearAllMemory:"Xóa toàn bộ bộ nhớ",edit:"Chỉnh sửa",storySkeleton:"Khung xương cốt truyện",adaptationStrategy:"Chiến lược chuyển thể",script:"Kịch bản",noContent:"Chưa có nội dung",relatedAssets:"Tài nguyên liên kết",editScript:"Chỉnh sửa kịch bản",save:"Lưu",scriptTitle:"Tiêu đề",titlePlaceholder:"Vui lòng nhập tiêu đề",content:"Nội dung",contentPlaceholder:"Vui lòng nhập nội dung kịch bản",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",selectAssetsTitle:"Chọn tài nguyên liên kết",welcomeMsg:"Xin chào! Tôi là trợ lý thông minh Toonflow, bạn có muốn tôi bắt đầu tạo kịch bản cho bạn không?",start:"Bắt đầu",memoryType:{message:"Bộ nhớ tin nhắn",summary:"Bộ nhớ tóm tắt",all:"Toàn bộ bộ nhớ"},msg:{clearConfirm:"Xác nhận xóa",clearBody:"Bạn có chắc chắn muốn xóa {type} không? Không thể hoàn tác thao tác này.",confirmClear:"Xác nhận xóa",cancel:"Hủy",memoryCleared:"Đã xóa {type}",scriptUpdated:"Cập nhật kịch bản thành công",scriptUpdateFailed:"Cập nhật kịch bản thất bại, vui lòng thử lại sau",searchScriptFailed:"Tìm kiếm kịch bản thất bại",updated:"Đã lưu thành công",error:"Lưu không thành công",reconnect:"Kết nối lại",notReconnect:"Xác nhận rằng cuộc trò chuyện kết nối lại sẽ bị cắt?",keepReconnect:"xác nhận",deleteConfirm:"Xóa xác nhận",deleteBody:"Xóa văn bản",confirmDelete:"Xác nhận xóa",scriptDeleted:"Đã xóa tập lệnh"},reconnect:"kết nối lại"},cornerScape:{batchSettings:"Cài đặt tạo hàng loạt",quickActions:"Lệnh lối tắt",selectUngenerated:"Chọn tất cả các mục chưa tạo",selectGenerated:"Chọn tất cả các mục đã tạo",selectFailed:"Chọn các mục lỗi",invertSelection:"Đảo ngược vùng chọn",clearSelection:"Bỏ chọn",batchPreview:"Xem trước ảnh hàng loạt",assetTypeFilter:"Lọc loại tài nguyên",genModel:"Mô hình tạo",resolution:"Độ phân giải",resolutionPh:"Vui lòng chọn độ phân giải",concurrency:"Số lượng đồng thời",concurrencyPh:"Vui lòng nhập số lượng đồng thời",startBatch:"Bắt đầu tạo hình ảnh theo đợt",waitingGen:"Đang chờ tạo",generating:"Đang tạo",genFailed:"Tạo thất bại",imageError:"Lỗi hình ảnh",typeRole:"Nhân vật",typeScene:"Cảnh",typeTool:"Công cụ",typeUnknown:"Không xác định",descriptionSuffix:"Mô tả:",operateScriptFirst:"Vui lòng thao tác với kịch bản trước",individualConfig:"Cấu hình riêng lẻ",noImage:"Chưa có hình ảnh",promptLabel:"Lời nhắc (Prompt)",promptPh:"Vui lòng nhập lời nhắc",aiPolish:"AI trau chuốt",regenerate:"Tạo lại",filterRole:"Nhân vật",filterScene:"Cảnh",filterTool:"Đạo cụ",unnamed:"Chưa đặt tên",noDescription:"Không có mô tả",msg:{selectModel:"Vui lòng chọn mô hình tạo",selectResolution:"Vui lòng chọn độ phân giải",enterPrompt:"Vui lòng nhập lời nhắc",enterPromptFirst:"Vui lòng nhập lời nhắc trước",genSuccess:"Tạo {name} thành công",genFailed:"Tạo {name} thất bại",promptGenSuccess:"Tạo lời nhắc thành công",polishFailed:"Trau chuốt thất bại, vui lòng thử lại",selectAtLeastOne:"Vui lòng chọn ít nhất một tài nguyên để tạo hàng loạt",batchStarted:"Bắt đầu tạo hàng loạt, tổng cộng {count} mục, số luồng đồng thời {concurrent}",batchItemFailed:"Tạo {name} thất bại: {error}",batchComplete:"Tạo hàng loạt hoàn tất",batchFailed:"Tạo hàng loạt không thành công",replaceFailed:"Thay thế không thành công",replaceSuccess:"Thay thế thành công",promptGenFail:"Tạo từ nhắc nhở không thành công",saveSuccess:"Sửa đổi lời nhắc thành công",saveFailed:"Sửa đổi từ nhắc nhở không thành công"},history:"hình ảnh lịch sử",confirmReplace:"Xác nhận thay thế",batchGenerationPrompt:"Tạo các từ nhắc nhở theo đợt",generatingPrompt:"Đang tạo",selectPromptEmpty:"Chọn tất cả từ nhắc trống",noEmptyPrompt:"Không có nội dung nào có từ nhắc trống",selectedCount:"đã chọn {count} nội dung"},script:{searchPlaceholder:"Tìm kiếm tên kịch bản...",search:"Tìm kiếm",addScript:"Kịch bản mới",cancelSelectAll:"Bỏ chọn tất cả",selectAll:"Chọn tất cả",exportScript:"Xuất kịch bản",msg:{searchFailed:"Tìm kiếm kịch bản thất bại",selectExport:"Vui lòng chọn kịch bản cần xuất trước",exportSuccess:"Xuất thành công",exportFailed:"Xuất kịch bản thất bại",deleteHeader:"Xác nhận xóa",deleteBody:"Bạn có chắc chắn muốn xóa kịch bản này không? Không thể hoàn tác thao tác này.",deleteConfirm:"Xóa",cancel:"Hủy",deleteSuccess:"Xóa thành công",deleteFailed:"Xóa thất bại",selectDelScript:"Vui lòng chọn xóa tập lệnh",batchDeleteHeader:"Xóa hàng loạt",batchDeleteBody:"Bạn có chắc chắn muốn xóa {count} kịch bản đã chọn không? Không thể hoàn tác thao tác này.",batchDeleteSuccess:"Xóa hàng loạt thành công",extractingInProgress:"Giải nén",projectNotFound:"Không tìm thấy mục",selectsExport:"Vui lòng chọn xuất tập lệnh"},add:{title:"Thêm kịch bản mới",scriptName:"Tên kịch bản",scriptNamePh:"Vui lòng nhập tên kịch bản",uploadFile:"Tải lên tệp",dragUpload:"Kéo thả tệp kịch bản vào đây hoặc nhấp để tải lên",uploadHint:"Hỗ trợ định dạng .txt, .docx, dung lượng tệp khuyên dùng dưới 10MB",scriptContent:"Nội dung kịch bản",scriptContentPh:"Vui lòng tải lên hoặc nhập nội dung kịch bản...",relatedAssets:"Tài nguyên liên kết",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",cancel:"Hủy",confirm:"Xác nhận",msg:{fileReadFailed:"Đọc tệp thất bại",docNotSupported:"Không hỗ trợ phân tích tệp .doc, vui lòng chuyển đổi sang .txt hoặc .docx",unsupportedType:"Loại tệp không được hỗ trợ",fileTooLarge:"Dung lượng tệp vượt quá 10MB, vui lòng tải lên tệp nhỏ hơn",parsing:"Đang phân tích tệp...",parseFailed:"Phân tích tệp thất bại, vui lòng tải lên lại",selectAssetsTitle:"Chọn tài nguyên liên kết",enterContent:"Vui lòng tải lên hoặc nhập nội dung kịch bản",enterName:"Vui lòng nhập tên kịch bản",addSuccess:"Thêm kịch bản thành công",addFailed:"Thêm kịch bản thất bại, vui lòng thử lại sau"}},edit:{title:"Chi tiết kịch bản",scriptName:"Tên kịch bản",scriptNamePh:"Vui lòng nhập tên kịch bản",scriptContent:"Nội dung kịch bản",scriptContentPh:"Vui lòng nhập nội dung kịch bản...",relatedAssets:"Tài nguyên liên kết",selectAssets:"Chọn tài nguyên",noAssets:"Chưa liên kết tài nguyên",msg:{selectAssetsTitle:"Chọn tài nguyên liên kết",updateSuccess:"Cập nhật kịch bản thành công",updateFailed:"Cập nhật kịch bản thất bại, vui lòng thử lại sau"}},deleteScript:"Xóa tập lệnh theo đợt",extractAssets:""},assets:{addPrefix:"Thêm mới",batchGenerate:"Tạo hàng loạt",generatePrompt:"Tạo lời nhắc",generateImage:"Tạo hình ảnh",batchDelete:"Xóa hàng loạt",searchPlaceholder:"Tìm kiếm tên tài nguyên...",search:"Tìm kiếm",preview:"Xem trước",generate:"Tạo",edit:"Chỉnh sửa",delete:"Xóa",generating:"Đang tạo",play:"Phát",mediaPreview:"Xem trước Media",confirmBatch:"Xác nhận {type}!",model:"Mô hình",resolution:"Độ phân giải",resolutionPh:"Vui lòng chọn độ phân giải",batchGenPrompt:"Tạo lời nhắc hàng loạt",batchGenImage:"Tạo hình ảnh hàng loạt",role:"Nhân vật",prop:"Đạo cụ",scene:"Cảnh",clip:"Chất liệu (Clip)",uploadSuccess:"Tải lên thành công",selectAtLeastOne:"Vui lòng chọn ít nhất một tài nguyên",noDescription:"Không có mô tả",promptGenSuccess:"Tạo lời nhắc cho「{name}」thành công",promptGenFail:"Tạo lời nhắc cho「{name}」thất bại: {error}",selectModel:"Vui lòng chọn mô hình",selectResolution:"Vui lòng chọn độ phân giải",noPromptForImage:"「{name}」không có lời nhắc, không thể tạo hình ảnh",imageGenSuccess:"Tạo hình ảnh「{name}」thành công",imageGenFail:"Tạo hình ảnh「{name}」thất bại: {error}",confirmDeleteHeader:"Xác nhận xóa",confirmBatchDeleteBody:"Bạn có chắc chắn muốn xóa hàng loạt các tài nguyên này không? Không thể hoàn tác thao tác này.",confirmDeleteBody:"Bạn có chắc chắn muốn xóa tài nguyên này không? Không thể hoàn tác thao tác này.",deleteBtn:"Xóa",cancelBtn:"Hủy",deleteSuccess:"Xóa tài nguyên thành công",deleteFail:"Xóa tài nguyên thất bại",colPreview:"Xem trước",colName:"Tên",colPrompt:"Lời nhắc",colDescribe:"Mô tả",colRemark:"Ghi chú",colCreateTime:"Thời gian tạo",colOperation:"Thao tác",add:{name:"Tên",namePh:"Vui lòng nhập tên",describe:"Mô tả",describePh:"Vui lòng nhập mô tả",remark:"Ghi chú",remarkPh:"Vui lòng nhập ghi chú",prompt:"Lời nhắc",promptPh:"Vui lòng nhập lời nhắc",nameRequired:"Vui lòng nhập tên",describeRequired:"Vui lòng nhập chi tiết",remarkRequired:"Vui lòng nhập ghi chú",updateSuccess:"Cập nhật tài nguyên thành công",addSuccess:"Thêm tài nguyên thành công"},gen:{header:"Tạo hình ảnh",uploadRef:"Tải lên ảnh tham khảo",optional:"Tùy chọn",promptLabel:"Lời nhắc tạo ảnh",smartGenerate:"Tạo thông minh",generatingPrompt:"Đang tạo lời nhắc thông minh...",promptPlaceholder:"Mô tả nội dung hình ảnh bạn muốn tạo, ví dụ: Một thành phố tương lai đầy công nghệ, ánh đèn neon nhấp nháy, phong cách cyberpunk...",selectModel:"Chọn mô hình",selectResolution:"Chọn độ phân giải",generateBtn:"Tạo hình ảnh",resultTitle:"Kết quả tạo",generatedCount:"Đã tạo {count} ảnh, vui lòng chọn một",generatingLabel:"Đang tạo...",genFailed:"Tạo thất bại",confirmSelect:"Xác nhận lựa chọn",promptSuccess:"Tạo lời nhắc thành công",promptFail:"Tạo lời nhắc thất bại",fillPrompt:"Vui lòng điền lời nhắc",pickResolution:"Vui lòng chọn độ phân giải",pickModel:"Vui lòng chọn mô hình",unnamed:"Chưa đặt tên",assetGenSuccess:"Tạo tài nguyên thành công",assetGenFail:"Tạo tài nguyên thất bại",uploadOk:"Tải lên thành công",imageSelected:"Đã chọn hình ảnh này",imageDeleted:"Đã xóa hình ảnh này",imageSaved:"Hình ảnh đã được lưu",completed:"Hoàn thành"},batch:{header:"Tạo hàng loạt",selected:"Đã chọn {count} mục",selectAll:"Chọn tất cả",clearSelection:"Bỏ chọn tất cả",inputPh:"Vui lòng nhập nội dung",saveSelected:"Lưu các mục đã chọn ({count})",colPreviewImg:"Ảnh xem trước",selectToSave:"Vui lòng chọn mục để lưu",saveSuccess:"Lưu thành công",saveFail:"Lưu thất bại, vui lòng thử lại",promptDone:"Tạo lời nhắc hoàn tất",promptFail:"Tạo lời nhắc thất bại",missingPrompts:"Có {count} tài nguyên thiếu lời nhắc, vui lòng tạo lời nhắc trước",imageDone:"Tạo hình ảnh hoàn tất",imageGenFail:"Tạo hình ảnh thất bại",unknownError:"Lỗi không xác định",promptGenCancelled:"Thế hệ bị hủy"}},production:{selectPlaceholder:"Vui lòng chọn tập",edit:"Chỉnh sửa",node:{script:{title:"Kịch bản",editDialog:"Chỉnh sửa kịch bản"},scriptPlan:{title:"Kế hoạch quay",editDialog:"Chỉnh sửa kế hoạch quay"},storyboard:{title:"Bảng phân cảnh",notGenerated:"Chưa tạo",scaleRatio:"Tỷ lệ thu phóng",gridPreview:"Xem trước dạng lưới",noPreviewImages:"Không có ảnh để xem trước",imageLoadFailed:"Tải hình ảnh thất bại",promptPlaceholder:"Vui lòng nhập từ gợi ý",prompt:"lời nhắc",editInfo:"Sửa đổi từ nhanh chóng"},storyboardTable:{title:"Bảng danh sách phân cảnh",editDialog:"Chỉnh sửa bảng phân cảnh"},assets:{title:"Tài nguyên phái sinh",generateFailed:"Tạo thất bại",notGenerated:"Chưa tạo",originalAsset:"Tài nguyên gốc",derived:"Phái sinh",noDerivedAssets:"Không có tài nguyên phái sinh"},poster:{title:"Ảnh bìa video",coverCount:"{count} ảnh"},workbench:{title:"Bàn làm việc Video"}},editImage:{upload:"Tải lên",generate:"Tạo",saveFailed:"Lưu thất bại, vui lòng thử lại",fetchFailed:"Lấy dữ liệu thất bại",generating:"Đang tạo...",deleteNode:"Xóa Node",ratio:"Tỷ lệ",quality:"Chất lượng",generateBtn:"Tạo hình ảnh",selectImage:"Chọn hình ảnh",imageGeneration:"Tạo hình ảnh",promptPlaceholder:"Mô tả hình ảnh bạn muốn tạo...",imageRef:"Ảnh {index}",noReferences:"Không có ảnh tham khảo nào có thể sử dụng",selectModel:"Vui lòng chọn mô hình trước",selectQuality:"Vui lòng chọn chất lượng",selectRatio:"Vui lòng chọn tỷ lệ",generateFailed:"Tạo thất bại",generateFirst:"Vui lòng tạo hình ảnh trước",generatedResult:"Kết quả tạo",waitingGenerate:"Đang chờ tạo",layoutLR:"Bố cục tự động - Ngang",layoutTB:"Bố cục tự động - Dọc",uploadAssetImage:"Tải lên hình ảnh tài sản",uploadStoryboardImage:"Tải lên hình ảnh storyboard",uploadImage:"Tải lên hình ảnh nội dung",mode:"người mẫu",closeConfirmTitle:"Đóng bảng chỉnh sửa?",closeConfirmBody:"Dữ liệu chưa lưu sẽ bị mất sau khi đóng"},save:"Lựa chọn",cancel:"Hủy",chatBox:{inputPlaceholder:"Nhập tin nhắn...",generateDerivedAssets:"Tạo tài nguyên phái sinh",welcomeMessage:"Xin chào! Tôi là trợ lý AI của bạn, tôi có thể giúp gì cho bạn?",adjustModel:"Điều chỉnh mô hình",startMakingVideo:"Bắt đầu làm video",startMakingVideoPrompt:"Hãy giúp tôi bắt đầu làm video",clearMessageMemory:"Xóa bộ nhớ tin nhắn",clearSummaryMemory:"Xóa bộ nhớ tóm tắt",clearAllMemory:"Xóa tất cả bộ nhớ",messageMemory:"Bộ nhớ tin nhắn",summaryMemory:"Bộ nhớ tóm tắt",allMemory:"Tất cả bộ nhớ",confirmClear:"Xóa bộ nhớ",confirmClearBody:"Bạn có chắc chắn muốn xóa {type} không?",confirmClearBtn:"Xác nhận xóa",memoryCleared:"Đã xóa {type}"},wb:{quickPreview:"Xem trước nhanh",videoGeneration:"Bảng phân cảnh",videoEditing:"bàn biên tập",hint:"Gợi ý",extractLines:"Bạn có muốn trích xuất lời thoại từ video không?",no:"Không",confirm:"Xác nhận",extractLinesQuestion:"Bạn có muốn trích xuất lời thoại từ video làm phụ đề không?",importingLoading:"Đang nhập, vui lòng chờ...",mainTrackVideo:"Track chính (Video)",subtitle1:"Phụ đề 1",storyboardVideoName:"Video storyboard-{storyboard}.mp4"},preview:{noImage:"Chưa có hình ảnh",storyboardDesc:"Mô tả phân cảnh",serialNumber:"STT",noDescription:"Chưa có mô tả",duration:"Thời lượng",seconds:"giây",relatedAssets:"Tài nguyên liên quan",role:"Nhân vật",prop:"Đạo cụ",scene:"Cảnh",noCharacters:"Không có nhân vật xuất hiện",imagePrompt:"Lời nhắc hình ảnh",selectAll:"Chọn tất cả",exportImage:"Xuất hình ảnh",sceneDescription:"Mô tả khung hình",promptLabel:"Lời nhắc",restoreSort:"Khôi phục sắp xếp",restoreSortConfirm:"Bạn có chắc chắn muốn khôi phục về thứ tự sắp xếp ban đầu không?",tip:"Mẹo",selectAtLeastOne:"Vui lòng chọn ít nhất một phân cảnh để xuất",exportFilename:"Hình ảnh kịch bản"},generate:{noVideo:"Chưa có video",videoPrompt:"Lời nhắc video",promptPlaceholder:"Nhập từ gợi ý để mô tả nội dung video bạn muốn tạo...",refImage:"Ảnh tham khảo",image:"Hình ảnh",refVideo:"Video tham khảo",refImageLabel:"Hình ảnh tham khảo",refAudio:"Âm thanh tham khảo",muteAudio:"Tắt âm thanh",enableAudio:"Bật âm thanh",resolution:"Độ phân giải",duration:"Thời lượng",generate:"Tạo",historyVersions:"Phiên bản lịch sử",confirmSelection:"Xác nhận đã chọn",noHistory:"Chưa có lịch sử",generating:"Đang tạo",generateFailed:"Tạo thất bại",selectAll:"Chọn tất cả",videoTrack:"Track video",batchGenerate:"Tạo hàng loạt",importToEditor:"Nhập vào bàn dựng",modeSingleImage:"Ảnh đơn",modeMultiImage:"Nhiều ảnh",modeGridImage:"Lưới nhiều ảnh",modeStartEnd:"Khung hình đầu/cuối",modeText:"Văn bản -> Video",modeVideoRef:"Video tham khảo",modeImageRef:"Ảnh tham khảo",modeAudioRef:"Âm thanh tham khảo",modeTextRef:"Văn bản tham khảo",startFrame:"Khung hình đầu",startFrameOptional:"Khung hình đầu (Tùy chọn)",endFrame:"Khung hình cuối",endFrameOptional:"Khung hình cuối (Tùy chọn)",selectRefImage:"Chọn ảnh tham khảo",selectRefImages:"Chọn các ảnh tham khảo",selectEndFrame:"Chọn ảnh khung hình cuối",selectRefVideoAsset:"Chọn video tham khảo",selectRefAudioAsset:"Chọn âm thanh tham khảo",selectRefImageAsset:"Chọn ảnh tham khảo",selectImageSource:"Chọn nguồn hình ảnh",fromStoryboard:"Hình storyboard",fromStoryboardDesc:"Chọn hình từ danh sách storyboard",fromAssets:"Hình tài nguyên",fromAssetsDesc:"Chọn hình từ thư viện tài nguyên",confirmDelete:"Xác nhận xóa",confirmDeleteBody:"Bạn có chắc chắn muốn xóa video này không? Không thể hoàn tác thao tác này.",delete:"Xóa",cancel:"Hủy",deleteSuccess:"Xóa video thành công",deleteFailed:"Xóa thất bại",selectVideoFirst:"Vui lòng chọn một video trước",confirmSuccess:"Xác nhận chọn thành công",batchSubmitted:"Đã gửi yêu cầu tạo hàng loạt, đang xử lý...",configNotFound:"Cấu hình không tồn tại",pollingFailed:"Truy vấn trạng thái video không thành công, vui lòng làm mới theo cách thủ công",batchGeneratePrompt:"Tạo các từ nhắc nhở theo đợt",batchPromptEmpty:"Có sẵn bảng phân cảnh {name} cho lời nhắc bằng video. Vui lòng tạo hoặc điền vào lời nhắc trước",modelEmpty:"Trước tiên hãy chọn mô hình tạo video",generatingPrompt:"Tạo lời nhắc thông minh"},editVideo:{reset:"Đặt lại",undo:"Hoàn tác (Undo)",redo:"Làm lại (Redo)",split:"Cắt / Chia nhỏ",delete:"Xóa",rendering:"Đang kết xuất (Render)...",exportVideo:"Xuất Video",exportSuccess:"Đã xuất video hoàn tất",exportFailed:"Xuất video thất bại",sampleSubtitle:"Văn bản phụ đề mẫu",customText:"Nội dung văn bản tùy chỉnh",transitionBetweenClips:"Chuyển cảnh cần được thêm vào giữa 2 Đoạn video (Clip) liền kề",transitionExists:"Vị trí này đã có chuyển cảnh",videoPreviewArea:"Khu vực xem trước video",clipMaterials:"Tài liệu dựng phim",propertyPanel:"Bảng thuộc tính",selectClip:"Chọn một Đoạn video (Clip) để xem thuộc tính",basicInfo:"Thông tin cơ bản",name:"Tên",clipNamePlaceholder:"Tên Đoạn video",startTime:"Bắt đầu",endTime:"Kết thúc",totalDuration:"Tổng thời lượng",videoProperties:"Thuộc tính video",opacity:"Độ mờ",volume:"Âm lượng",playbackSpeed:"Tốc độ phát",audioProperties:"Thuộc tính âm thanh",fadeIn:"Fade in (Rõ dần)",fadeOut:"Fade out (Mờ dần)",transitionProperties:"Thuộc tính chuyển cảnh",transitionType:"Loại chuyển cảnh",transFade:"Làm mờ (Fade)",transSlide:"Trượt (Slide)",transWipe:"Gạt (Wipe)",transDissolve:"Hòa tan (Dissolve)",transZoom:"Thu phóng (Zoom)",transRotate:"Xoay (Rotate)",transitionDuration:"Thời lượng chuyển cảnh",subtitleProperties:"Thuộc tính phụ đề",textContent:"Nội dung văn bản",fontSize:"Cỡ chữ",copy:"Sao chép",deleteConfirm:"Xác nhận xóa",deleteClipConfirm:"Bạn có chắc chắn muốn xóa Đoạn video này không?",avCanvasNotInit:"AVCanvas chưa được khởi tạo",noExportContent:"Không có nội dung nào để xuất",exportProject:"Xuất dự án",transitionAdded:"Đã thêm chuyển cảnh: {name}",splitClip:"Cắt Đoạn video",deleteClip:"Xóa Đoạn video",addClip:"Thêm {name}",duplicateClip:"Nhân bản Đoạn video",addTransition:"Thêm chuyển cảnh",updateClip:"Cập nhật Đoạn video {key}",updatePlaybackRate:"Cập nhật tốc độ phát thành {rate}x",updateTransitionDuration:"Cập nhật thời lượng chuyển cảnh",playbackRateRange:"Tốc độ phát phải nằm trong khoảng từ 0.1 đến 10",updatePlaybackRateFailed:"Cập nhật tốc độ phát thất bại:",importProject:"Nhập dự án",import:"Nhập"},clipType:{video:"Video",audio:"Âm thanh",subtitle:"Phụ đề",transition:"Chuyển cảnh",sticker:"Nhãn dán",filter:"Bộ lọc",effect:"Hiệu ứng"},track:{video:"Video",image:"Hình ảnh",audio:"Âm thanh",subtitle:"Phụ đề",text:"Văn bản",sticker:"Nhãn dán",filter:"Bộ lọc",effect:"Hiệu ứng"},transition:{fade:"Làm mờ (Fade)",slide:"Trượt (Slide)",slideLeft:"Trượt sang trái",slideRight:"Trượt sang phải",slideUp:"Trượt lên trên",slideDown:"Trượt xuống dưới",wipe:"Gạt (Wipe)",wipeLeft:"Gạt sang trái",wipeRight:"Gạt sang phải",wipeUp:"Gạt lên trên",wipeDown:"Gạt xuống dưới",dissolve:"Hòa tan",zoom:"Thu phóng",zoomIn:"Phóng to",zoomOut:"Thu nhỏ",rotate:"Xoay",circle:"Hình tròn",diamond:"Hình thoi",clock:"Đồng hồ",blur:"Làm mờ (Blur)"},media:{titleText:"Văn bản tiêu đề",subtitleText:"Văn bản phụ đề",customText:"Văn bản tùy chỉnh",media:"Media (Phương tiện)",image:"Hình ảnh",audio:"Âm thanh",subtitle:"Phụ đề",transition:"Chuyển cảnh",effect:"Hiệu ứng",filter:"Bộ lọc",loading:"Đang tải...",subtitlePreview:"Chữ",video:"băng hình"},effect:{fadeIn:"Rõ dần",fadeOut:"Mờ dần",flash:"Chớp nháy",shake:"Rung lắc",zoomIn:"Phóng to vào",zoomOut:"Thu nhỏ ra",pulse:"Nhịp đập",rotateIn:"Xoay vào",sticker1:"Nhãn dán 1",sticker2:"Nhãn dán 2"},filter:{grayscale:"Đen trắng",sepia:"Cổ điển (Sepia)",warm:"Tone ấm",cool:"Tone lạnh",vivid:"Rực rỡ",bright:"Sáng sủa",highContrast:"Độ tương phản cao",blur:"Làm mờ",invert:"Đảo màu",semiTransparent:"Bán trong suốt"},guideSwitchEpisode:"Chuyển đổi tập",guideSwitchEpisodeBody:"Tính năng chuyển đổi tập đã được chuyển đến đây nhé!",autoLayoutLR:"Tự động sắp chữ-bố trí bên trái và bên phải",autoLayoutTB:"Tự động sắp chữ bố cục trên và dưới",getFlowData:"Làm mới không gian làm việc",confirm:"Xác nhận chuyển tập",confirmEpisodesSwitch:"Nhiệm vụ hiện tại vẫn đang được tiến hành. Việc chuyển các tập sẽ kết nối lại phiên. Bạn có muốn tiếp tục chuyển đổi không?"},task:{title:"Danh sách tác vụ",subtitle:"Nhật ký thực thi tác vụ mới nhất của bạn",refresh:"Làm mới",categoryLabel:"Loại tác vụ:",stateLabel:"Trạng thái:",noFailReason:"Chưa có lý do thất bại",stateAll:"Tất cả",stateRunning:"Đang tiến hành",stateCompleted:"Đã hoàn thành",stateFailed:"Tạo thất bại",fetchFailed:"Lấy danh sách tác vụ thất bại",col:{taskClass:"Loại tác vụ",relatedObjects:"Đối tượng liên quan",model:"Mô hình",describe:"Mô tả",state:"Trạng thái",startTime:"Thời gian",reason:"Lý do thất bại"},project:"Tên dự án:"},noVideo:"Chưa có video",prompt:"Lời nhắc video",generateText:"Lời nhắc do AI tạo ra",selectStoryboard:"Chọn bảng phân cảnh",generate:{noVideo:"Chưa có video",generateText:"Lời nhắc do AI tạo ra",selectStoryboard:"Chọn bảng phân cảnh",generate:"Tạo video",history:"Phiên bản lịch sử",generating:"Đang tạo",generateFailed:"thất bại",selectAll:"Chọn tất cả",selected:"Đã chọn",batchGenerateText:"Tạo các từ nhắc nhở theo đợt",batchGenerateVideo:"Tạo video hàng loạt",importVideo:"Nhập vào bàn chỉnh sửa",emptyTrack:"Đoạn {chỉ mục 1}",del:"xóa bỏ",delConfirm:"Bạn có chắc chắn muốn xóa đoạn này?",selectSource:"Chọn nguồn",confirm:"Chọn từ nội dung",cancel:"Chọn từ bảng phân cảnh",selectVideoFailed:"Lựa chọn video không thành công",selectVideoSuccess:"Lựa chọn video thành công",selectTrackFirst:"Vui lòng chọn bảng phân cảnh trước",noSelectedVideo:"Không có video nào được chọn",generateConfirm:"Xác nhận thế hệ",generateConfirmBody:"Xác nhận để tạo video",generateVideosInBatches:"Tạo video hàng loạt",generateStarted:"Bắt đầu xây dựng",promptEmpty:"Kiểm tra dữ liệu cần tạo video và từ nhắc trống. Bạn có muốn tiếp tục tạo nó không?",skipDataWithEmptyVideoPromptWords:"Dữ liệu video cần được tạo đã tồn tại và từ nhắc trống.",duration:"khoảng thời gian",resolution:"nghị quyết",delVideo:"Xác nhận xóa video này?",delSuccess:"Xóa thành công",addReference:"thêm tài liệu tham khảo",promptPlaceholder:"Vui lòng nhập từ nhắc video",downloadVideo:"Tải xuống video hàng loạt",selectVideo:"Vui lòng kiểm tra video bạn muốn tải xuống"}},F_i={slogan:"Nền tảng sáng tạo phim ngắn thông minh",tips:"Tài khoản mặc định: admin / admin123",settings:"Cài đặt máy chủ",requestAddress:"Địa chỉ yêu cầu",username:"Tên người dùng",password:"Mật khẩu",login:"Đăng nhập",usernameRequired:"Vui lòng nhập tên người dùng",passwordRequired:"Vui lòng nhập mật khẩu",enterUsernameAndPassword:"Vui lòng nhập tên người dùng hoặc mật khẩu",loginSuccess:"Đăng nhập thành công",settingsSaved:"Đã lưu cài đặt"},N_i={cancel:"Hủy",confirm:"Xác nhận",selectAssets:"Chọn tài sản",sessionExpired:"Phiên đã hết hạn, vui lòng đăng nhập lại",openSettings:"Mở cài đặt",cancelled:"Đã hủy tạo",defaultReel:"Tập chính",save:"cứu",submitting:"Đang gửi",editSuccess:"Sửa đổi thành công",editFailed:"Sửa đổi không thành công",submit:"nộp"},U_i={prompt:"lời nhắc"},j_i={welcomeTitle:"Chào mừng đến với ToonFlow",welcomeDesc:"Nền tảng quy trình tạo truyện tranh do AI điều khiển, chúng ta hãy dành một phút để hoàn thành cấu hình ban đầu.",startConfig:"Bắt đầu cấu hình",skip:"Bỏ qua khởi động",configModel:"Thêm dịch vụ mẫu",configData:"Cấu hình tác nhân",startUse:"Bắt đầu",configModelTitle:"Thêm nhà cung cấp dịch vụ mô hình",configModelDesc:"Trước tiên, bạn cần thêm ít nhất một nhà cung cấp dịch vụ mô hình AI (như OpenAI, Claude, v.v.) vào cài đặt và điền API Key tương ứng.",configModelTip:'Nhấp vào nút bên dưới sẽ mở tab "Dịch vụ mẫu" của trang cài đặt. Sau khi thêm nhà cung cấp, quay lại đây để tiếp tục.',configModelBtn:"Đi tới cấu hình dịch vụ mô hình",configAgentTitle:"Chỉ định mô hình đại lý",configAgentDesc:"Tiếp theo, gán mô hình cho từng mô-đun chức năng trong cấu hình Tác nhân để hệ thống biết cần gọi mô hình nào để hoàn thành nhiệm vụ.",configAgentTip:'Nhấp vào nút bên dưới sẽ mở tab "Cấu hình tác nhân" của trang cài đặt. Quay lại đây sau khi gán mô hình cho từng chức năng.',configAgentBtn:"Đi tới cấu hình Đại lý",finishTitle:"🎉 Mọi thứ đã sẵn sàng!",finishDesc:"Cấu hình đã hoàn tất và bây giờ bạn có thể bắt đầu sử dụng tất cả các tính năng. Nếu bạn cần điều chỉnh nó, bạn có thể sửa đổi nó trong cài đặt bất cứ lúc nào.",qrcodeLabel:"Tham gia nhóm liên lạc WeChat để nhận thêm trợ giúp:",githubLabel:"Nếu bạn thấy nó hữu ích, vui lòng cho chúng tôi ⭐ Sao!",prevStep:"Bước trước",nextStep:"Bước tiếp theo",finish:"Bắt đầu"},W_i={skillManagement:{search:"Tìm kiếm tên tập tin",empty:"Không có tập tin phù hợp",edit:"biên tập",selectOnTheLeft:"Vui lòng chọn một tập tin từ bên trái"}},V_i={assets:{notExist:"Tài sản không tồn tại",notDerivativeExist:"Tài sản phái sinh không tồn tại",derivativeUpdateSuccess:"Cập nhật thành công",derivativeState:"Không được tạo",derivativeAddSuccess:"Đã thêm thành công",derivativeDelSuccess:"Xóa thành công",notGenerated:"Không được tạo"},addSuccess:"Cập nhật thành công",state:{unused:"Không được tạo"},saveSuccess:"Đã thêm thành công"},z_i={generating:"Đang tạo"},H_i={scanning:"🔍 Phân tích và tải Skill",scanComplete:"✨ Quét Skill hoàn tất",inserted:"✅ Đã thêm kỹ năng {count}",updated:"🔄 Cập nhật {count} kỹ năng",removed:"🗑️ Xóa {count} Skill",scannedFiles:"📁 Đã quét {count} tệp",noDescription:"📝 {count} Skill thiếu mô tả",noAttribution:"👤 {count} Skill thiếu thông tin tác giả",configWarning:"⚠️ Cảnh báo cấu hình Skill",openSettings:"Mở cài đặt",scanFailed:"❌ Quét thất bại",checkNetwork:"🔌 Vui lòng kiểm tra kết nối mạng hoặc thử lại sau",retryLater:"🔁 Vui lòng thử lại sau"},$_i="Tạo video",X_i="Phiên bản lịch sử",G_i="Đang tạo",Y_i="thất bại",Z_i="Chọn tất cả",q_i="Đã chọn",K_i="Nhập video",J_i="Đoạn {chỉ mục 1}",eSi="Xác nhận xóa",tSi="Bạn có chắc chắn muốn xóa đoạn này?",nSi="Chọn nguồn",iSi="Chọn từ nội dung",rSi="Chọn từ bảng phân cảnh",oSi={newVersion:"Có phiên bản mới, bạn có muốn cập nhật không?"},sSi={components:I_i,settings:M_i,workbench:P_i,login:F_i,common:N_i,"components.storyboardImageCheck.camera":"Máy quay","components.storyboardImageCheck.dialogTitle":"Chọn hình storyboard","components.storyboardImageCheck.preview":"Xem trước","components.storyboardImageCheck.src":"Ảnh xem trước","components.storyboardImageCheck.title":"Tiêu đề","components.storyboardImageCheck.duration":"Thời lượng","components.storyboardImageCheck.lines":"Lời thoại","components.storyboardImageCheck.createTime":"Thời gian tạo","workbench.script.extractAssets":"Trích xuất tài sản",promptManage:U_i,hello:j_i,setting:W_i,storyboard:V_i,productionAgent:z_i,skillScan:H_i,generate:$_i,history:X_i,generating:G_i,generateFailed:Y_i,selectAll:Z_i,selected:q_i,importVideo:K_i,emptyTrack:J_i,del:eSi,delConfirm:tSi,selectSource:nSi,confirm:iSi,cancel:rSi,"workbench.script.msg.exportFailed":"Xuất không thành công","workbench.production.node.assets.confirmDeleteBody":"Xác nhận xem có xóa nội dung hay không","workbench.production.node.assets.removeFailed":"Không thể xóa nội dung",version:oSi,"workbench.production.generatedNode.localUpload":"Tải lên cục bộ","workbench.production.editImage.uploadFailed":"Tải hình ảnh lên không thành công","workbench.production.editImage.noImage":"Vui lòng thêm hình ảnh trước"},aSi={editMdPreivew:{title:"編集",confirm:"保存",cancel:"キャンセル"},imageTools:{copy:"画像をコピー",preview:"プレビュー",download:"ダウンロード",msg:{imageLoadFailed:"画像の読み込みに失敗しました",convertFailed:"変換に失敗しました",copied:"クリップボードにコピーしました",copyFailed:"コピーに失敗しました",downloadFailed:"ダウンロードに失敗しました",downloadStarted:"ダウンロードを開始します",downloadBlockedOpenNewWindow:"現在の画像ソースでダウンロードが制限されている可能性があるため、新しいウィンドウで開きました"}},migrateShow:{title:"データの移行",desc:"旧バージョンのデータが検出されました。データを移行しますか?",hide:"今後表示しない",confirm:"確定",msg:{migrateSuccess:"データの移行に成功しました",migrateFailed:"データの移行に失敗しました"}},modelSelect:{placeholder:"モデルを選択してください",type:{image:"画像",text:"テキスト",video:"動画"},msg:{fetchModelFailed:"モデルデータの取得に失敗しました:"},goSetting:"設定に移動してモデルを追加します"}},lSi={title:"ToonFlow 設定",menu:{language:"言語設定",vendorConfig:"モデルサービス",agentConfig:"Agent 設定",promptManage:"プロンプト管理",skillManagement:"スキル管理",memoryConfig:"Agent メモリ設定",loginConfig:"ログイン設定",dbConfig:"データベース操作",fileManagement:"ファイル管理",otherConfig:"その他の設定",requestConfig:"リクエストURL",about:"アップデートの確認",logoutConfig:"ログアウト",skillsSkillsManagement:"スキルスキル管理"},language:{desc:"インターフェースの表示言語を選択します",msg:{saved:"言語設定を保存しました"}},vendor:{addVendor:"プロバイダーを追加",noVendor:"プロバイダーがありません。先に追加してください",required:"必須",optionalSection:"任意項目",modelSettings:"モデル設定",addManually:"手動追加",test:"テスト",edit:"編集",delete:"削除",deleteVendor:"プロバイダーを削除",editCode:"コードを編集",updateConfig:"設定を更新",addModel:"モデルを追加",editModel:"モデルを編集",displayName:"表示名",displayNamePlaceholder:"例:GPT-4o",modelId:"モデルID",modelIdPlaceholder:"例:gpt-4o",modelType:"モデルタイプ",multimodal:"マルチモーダル",supported:"対応",notSupported:"非対応",toolCall:"ツール呼び出し",imageMode:"画像モード",videoMode:"動画モード",audioOutput:"音声出力",durationResolution:"デュレーション/解像度マッピング",durationSec:"デュレーション(秒)",resolution:"解像度",enterAndPress:"入力してEnterを押す",addDurationResolution:"デュレーションと解像度を追加",testResult:"テスト結果",generating:"生成中...",addVendorDialog:"プロバイダーの追加",codeEditorInfo:"プロバイダー情報の設定にはTypeScriptコードを記述してください",reset:"リセット",importFile:"ファイルをインポート",textModel:"テキストモデル",imageModel:"画像モデル",videoModel:"動画モデル",textToImage:"テキストから画像生成",textToVideo:"テキストから動画生成",singleImage:"単一画像",multiImage:"複数画像モード",multiReference:"複数画像参照",gridImage:"グリッド単一画像",startEndRequired:"開始・終了フレーム(両方必須)",endFrameOptional:"開始・終了フレーム(終了フレームは任意)",startFrameOptional:"開始・終了フレーム(開始フレームは任意)",textRef:"テキスト",imageRef:"画像",videoRef:"動画",audioRef:"音声",audioOptional:"任意",audioOnly:"音声付き動画のみ出力",noAudio:"無音動画のみ出力",msg:{getVendorListFailed:"プロバイダーリストの取得に失敗しました",vendorConfigUpdated:"プロバイダー設定を更新しました",updateFailed:"更新に失敗しました",highRiskConfirm:"⚠️ 高リスク操作の確認",addVendorRiskBody:"新しいAIプロバイダーを追加すると、システムAPIへのアクセス権が付与されます。プロバイダーのコードソースが信頼できるか確認してください!",iKnowRisk:"リスクを承知しました",cancel:"キャンセル",confirmAgain:"⚠️ 再確認",addVendorConfirmBody:"本当にこのプロバイダーを追加しますか?追加後、システムのモデルスケジューリングに組み込まれます。",confirmAndAdd:"確認して追加",goBackCheck:"戻って確認",vendorAdded:"プロバイダーが正常に追加されました",addFailed:"追加に失敗しました",updateVendorRiskBody:"AIプロバイダー設定を更新すると、システムAPIへのアクセス権と動作が変更されます。変更後のコードソースが信頼できるか確認してください!",updateVendorConfirmBody:"本当にこのプロバイダー設定を更新しますか?更新後、システムのモデルスケジューリングに影響します。",confirmAndUpdate:"確認して更新",updateSuccess:"プロバイダー設定の更新に成功しました",fillDisplayName:"表示名を入力してください",fillModelId:"モデルIDを入力してください",selectImageMode:"画像モードを選択してください",selectVideoMode:"動画モードを選択してください",groupPrefix:"第 {n} グループ:",addDuration:"デュレーションを追加してください",addResolution:"解像度を追加してください",selectVendorFirst:"先にプロバイダーを選択してください",modelIdExists:"モデルIDが既に存在します",modelAdded:"モデルが正常に追加されました",modelUpdated:"モデルが正常に更新されました",enterApiKey:"API KEY を入力してください",enterApiUrl:"API URL を入力してください",testSuccess:"テスト成功",imageGenSuccess:"画像の生成に成功しました",videoGenSuccess:"動画の生成に成功しました",requestFailed:"リクエストに失敗しました",deleteModelConfirm:"モデルの削除確認",deleteModelBody:"削除後は元に戻せません。続行しますか?",confirmDelete:"削除を確認",modelDeleted:"モデルを削除しました",deleteVendorConfirm:"プロバイダーの削除確認",deleteVendorBody:"削除すると、このプロバイダーのすべてのモデルも一緒に削除されます。続行しますか?",vendorDeleted:"プロバイダーを削除しました",deleteFailed:"削除に失敗しました",enabled:"有効",disabled:"無効",linkAddVendorRiskBody:"新しい AI ベンダーを追加すると、システム API にアクセスできるようになります。ベンダーのリンク ソースが信頼できることを確認してください。",importAdd:"新しい AI ベンダーを追加すると、システム API にアクセスできるようになります。ベンダーのドキュメント ソースが信頼できることを確認してください。",linkAddFailed:"リンクの追加に失敗しました"},associationSkills:"関連スキル",think:"深い考え",code:"コード",linkAddPlaceholder:"追加するリンクを入力してください",noFileSelected:"ファイルは正常にインポートされました",linkAdd:"確認する"},agent:{bannerDesc:"Toonflow公式中継サイトを使用すると、設定をワンクリックで入力でき、手動設定なしですぐに使用できます。",visitWebsite:"サイトへ移動",fillKey:"KEYを入力",oneClickFill:"ワンクリック入力",notOpen:"未公開",notConfigured:"未設定",modelConfig:"モデル設定",confirm:"確定",cancel:"キャンセル",selectModel:"モデルを選択",fillKeyHeader:"Toonflowプラットフォームの公式KEYを入力",keyPlaceholder:"KEYを入力してください",save:"保存",msg:{notAvailable:"この機能は現在準備中です。ご期待ください",configSuccess:"設定に成功しました",updateConfigFailed:"設定の更新に失敗しました:",keyValid:"KEYが有効です。Toonflowプラットフォームに接続しました",keyInvalid:"KEYが無効です。確認して再入力してください:",enterKey:"KEYを入力してください",saveFailed:"保存に失敗しました:",getAgentListFailed:"Agent設定リストの取得に失敗しました:",toonflowNotFound:"トゥーンフロー公式乗換駅は存在しない"}},memory:{warning:"以下の設定項目には推奨値がプリセットされています。各設定の意味と影響を明確に理解していない限り、現在の設定を維持することをお勧めします。",vectorModelConfig:"ベクトルモデル設定",modelFilePath:"モデルファイルパス",quantizationType:"量子化タイプ",quantizationPlaceholder:"量子化タイプを入力してください",memoryParams:"メモリパラメータ",messagesPerSummary:"メッセージ圧縮トリガー件数",messagesPerSummaryHelp:"直近 N 件の会話コンテキストを保持します。",shortTermLimit:"単発取得の未圧縮メッセージ数",shortTermLimitHelp:"検索時に返される候補メモリの件数です。",summaryMaxLength:"要約最大文字数",summaryMaxLengthHelp:"メッセージ圧縮時に許容される最大文字数です。",summaryLimit:"検索可能な圧縮メッセージ数",summaryLimitHelp:"検索可能な圧縮メッセージの件数です。",ragLimit:"検索メモリ件数",ragLimitHelp:"検索時に取得するメッセージ数です。",deepRetrieveSummaryLimit:"ベクトル検索の圧縮メッセージ数",deepRetrieveSummaryLimitHelp:"圧縮メッセージ内容を検索する際に取得するメッセージ数です。",saveConfig:"設定を保存",clearMemory:"メモリをクリア",restoreDefault:"デフォルトに戻す",msg:{saved:"メモリ設定を保存しました",clearConfirmTitle:"メモリのクリア確認",clearConfirmBody:"AIのグローバルメモリデータがクリアされ、元に戻せなくなります。続行しますか?",confirmClear:"クリアを確認",cancel:"キャンセル",cleared:"メモリをクリアしました",clearFailed:"メモリのクリアに失敗しました"}},login:{username:"ユーザー名",usernamePlaceholder:"ユーザー名を入力してください",password:"パスワード",passwordPlaceholder:"パスワードを入力してください",modify:"変更",msg:{enterUsername:"ユーザー名を入力してください",usernameLength:"ユーザー名は2〜20文字である必要があります",enterPassword:"パスワードを入力してください",passwordLength:"パスワードは6〜20文字である必要があります",fetchFailed:"ユーザー情報の取得に失敗しました",saveSuccess:"保存に成功しました",saveFailed:"保存に失敗しました"}},db:{clearDb:"データベースをクリア",clearDbDesc:"データ構造を保持し、全テーブルのデータをクリアします",clearData:"データをクリア",confirmAction:"操作の確認",msg:{clearDbTitle:"データベースのクリア",firstConfirm:"本当にすべてのテーブルをクリアしますか?クリアしたデータは復元できません!",secondConfirm:"これが最後の確認です。クリアするとすべてのデータが永久に失われます!",keyword:"クリア",confirm:"確定",pleaseInput:"入力してください",cleared:"すべてのテーブルをクリアしました",operationFailed:"操作に失敗しました。再試行してください",cancelled:"操作がキャンセルされました"}},other:{requestTimeout:"リクエストタイムアウト",seconds:"秒",inputSeconds:"秒を入力してください",assetConcurrency:"アセット生成の同時実行数",count:"個",inputCount:"個数を入力してください",chapterRegex:"章分割の正規表現",restoreDefault:"デフォルトに戻す",regexPlaceholder:"正規表現を入力してください",showTitleBar:"タイトルバーを表示する",isElectron:"デスクトップモードに切り替える",canvasScroll:"キャンバススクロール",canvasIsDisabled:"キャンバスのズーム",agentCanvasScalingMethod:"制作ページでの無制限のキャンバス ホイール操作",zoom:"ズーム",scroll:"スクロール",isInteracting:"制作ページでの無制限のキャンバス ドラッグ パフォーマンスの最適化",closeIsInteracting:"閉鎖"},request:{warning:"特別な理由がない限り、変更や設定は不要です",apiAddress:"API アドレス",apiPlaceholder:"API リクエストアドレスを入力してください",save:"保存",reset:"リセット",msg:{enterApi:"API アドレスを入力してください",validUrl:"有効な HTTP/HTTPS アドレスを入力してください",saved:"リクエストアドレスを保存しました",reset:"デフォルトアドレスにリセットしました",refreshFailed:"更新に失敗しました"},refresh:"リフレッシュする"},about:{slogan:"オープンソースのAI主導コミック/絵コンテ制作ツール",latestVersion:"現在は最新バージョンです",checkUpdate:"アップデートの確認",codeRepository:"コードリポジトリ",githubRepo:"GitHub リポジトリ",giteeRepo:"Gitee リポジトリ",versionUpdate:"バージョンアップデート",checkUpdateGithub:"アップデート確認 (GitHub)",getFromGithub:"GitHub Releaseから最新版を取得",checkUpdateGitee:"アップデート確認 (Gitee)",getFromGitee:"Gitee Releaseから最新版を取得",license:"ライセンス",licenseDesc:"オープンソースライセンス・クリックして詳細を確認",updateAvailable:"新しいバージョンが見つかりました",upToDate:"新しいバージョンが検出されました",confirmReinstall:"リンクをコピー",reinstallRequired:"ブラウザが自動的に開いてダウンロードされます。開かない場合は手動で開いてください。"},logout:{warning:"ログアウト後、システムを継続して使用するには再ログインが必要です。",confirmLogout:"本当にログアウトしますか?",logout:"ログアウト",msg:{logoutSuccess:"ログアウトに成功しました",logoutFailed:"ログアウトに失敗しました。再試行してください"}},file:{quickOpen:"ディレクトリをすばやく開く",open:"開く",dockerDesc:"Docker / フロント・バックエンド分離デプロイの場合は、「/data/*」ディレクトリに移動して手動でファイルを管理してください。",desktopOnly:"この機能はデスクトップ版のみ対応しています",folders:{data:"data",dataDesc:"データディレクトリ。",logs:"data/logs",logsDesc:"実行ログとエラーログ。",oss:"data/oss",ossDesc:"ファイルストレージ関連リソース。",skills:"data/skills",skillsDesc:"スキルとプロンプト設定ファイル。",models:"data/models",modelsDesc:"モデルファイルと設定。",web:"data/web",webDesc:"Web関連リソース(フロントエンドビルド成果物など)。",serve:"data/serve",serveDesc:"バックエンドサービス関連ファイル。"},openFailed:"フォルダを開けませんでした"},skill:{scanSkills:"スキャンスキル",fileLost:"ファイルがありません"},dev:{warning:"以下は開発者ツールです。注意して操作してください。",openDevtool:"開ける",devtoolsDoc:"書類のアドレス",devtoolsDesc:"オンにすると、Toonflow のインストール ディレクトリに .devtools フォルダーが作成されます。 Toonflow に書き込み権限があることを確認してください (管理者として実行)。",devtoolsDesc2:"このディレクトリで npx {'@'}ai-sdk/devtools を実行して、テレメトリのデバッグを有効にします",openDevtoolFailed:"開発者ツールを開けませんでした。Toonflow デスクトップがインストールされていることを確認してください",notInElectron:"WEB環境の場合はブラウザコンソールを手動で開いてください"}},cSi={selectProject:"プロジェクトを選択してください",menu:{myProject:"マイプロジェクト",taskCenter:"タスクセンター",novel:"小説の原文",scriptAgent:"シナリオ Agent",scriptManage:"シナリオ管理",cornerScape:"キャラ・背景制作",production:"動画制作",assetCenter:"アセットセンター",settings:"設定",jumpGithub:"Githubにジャンプ",feedbackQuestions:"フィードバックの質問"},project:{title:"マイプロジェクト",subtitle:"すべてのショートドラマプロジェクトを管理します",newProject:"新規プロジェクト",dialog:{editTitle:"プロジェクトの編集",addTitle:"新規プロジェクト",save:"保存",ok:"確定",cancel:"キャンセル",projectType:"プロジェクトタイプ",selectType:"プロジェクトタイプを選択",basedOnNovel:"小説の原文に基づく",projectName:"プロジェクト名",projectNamePh:"プロジェクト名を入力してください",novelType:"小説のジャンル",novelTypePh:"例:ファンタジー、SF、恋愛",artStyle:"ビジュアルマニュアル",selected:"選択済み:",selectArtStyle:"ビジュアルマニュアルを選択してください",newArtStyle:"新しいビジュアルマニュアル",loading:"読み込み中...",videoRatio:"画面アスペクト比",novelIntro:"小説のあらすじ",novelIntroPh:"あらすじを入力してください",editArtStyleTitle:"ビジュアルマニュアルの編集",newArtStyleTitle:"新しいビジュアルマニュアル",artStyleName:"ビジュアルマニュアル名",artStyleNamePh:"ビジュアルマニュアル名を入力してください",artStyleImage:"ビジュアルマニュアルカバー",remove:"削除",uploadCover:"カバーをアップロード",artStylePrompt:"ビジュアルマニュアルのプロンプトワード",aiExtract:"AI プロンプト抽出",promptPlaceholder:"画像生成時にビジュアルマニュアルを指定するために使用されるビジュアルマニュアルプロンプトワードについて説明します。",visualManual:"ビジュアルマニュアル",newVisualManual:"新しいビジュアルマニュアル",editVisualManualTitle:"ビジュアルマニュアルの編集",newVisualManualTitle:"新しいビジュアルマニュアル",visualManualName:"ビジュアルマニュアル名",visualManualNamePh:"ビジュアルマニュアル名を入力してください",visualManualCover:"ビジュアルマニュアルカバー",visualManualPrompt:"ビジュアルマニュアルのプロンプト",modelData:"画像モデルの選択",videoModelData:"ビデオモデルを選択してください",prompt:{placeholder:"プロンプトの単語を入力してください",saveSuccess:"更新に成功しました",title:"即効性のある言葉"},basedOnScript:"脚本に基づいて",mdFile:"ビジュアルマニュアルファイル",directorManual:"ディレクターズハンドブック",addDirectorManual:"新しいディレクターマニュアル",editingDirectorManual:"ディレクターズマニュアルを編集する",newDirecorManualTitle:"新しいディレクターマニュアル",directorManualPrompt:"ディレクターズマニュアル プロンプトワード",directorManualName:"ディレクターズマニュアル名",directorManualNamePh:"ディレクターズマニュアル名を入力してください",directorFile:"ディレクターズマニュアル文書",directorManualCover:"ディレクターズマニュアルの表紙"},msg:{fetchFailed:"プロジェクトリストの取得に失敗しました",notFound:"プロジェクトが見つかりません!",editSuccess:"プロジェクトを編集しました",editFailed:"プロジェクトの編集に失敗しました",addSuccess:"プロジェクトを新規作成しました",addFailed:"プロジェクトの作成に失敗しました",deleteHeader:"プロジェクトの削除",deleteBody:"本当にこのプロジェクトを削除しますか?",deleteConfirm:"削除",deleteCancel:"キャンセル",deleteSuccess:"プロジェクトを削除しました",deleteFailed:"プロジェクトの削除に失敗しました",extractSuccess:"プロンプトの抽出に成功しました",extractFailed:"抽出に失敗しました",enterArtStyleName:"ビジュアルマニュアル名を入力してください",artStyleUpdated:"ビジュアルマニュアルを更新しました",artStyleAdded:"ビジュアルマニュアルを追加しました",operationFailed:"操作に失敗しました",enterVisualManualName:"ビジュアルマニュアル名を入力してください",enterVisualManualImage:"ビジュアルマニュアルのカバー画像をアップロードしてください",enterVisualManualTabData:"プロンプトは空にできません",visualManualUpdated:"ビジュアルマニュアルを更新しました",visualManualAdded:"ビジュアルマニュアルを追加しました",deleteVisualManualHeader:"ビジュアルマニュアルを削除",deleteVisualManualBody:"ビジュアルマニュアル「{name}」を削除してよろしいですか?",deleteVisualManualConfirm:"削除",deleteVisualManualCancel:"キャンセル",enterProjectName:"プロジェクト名を入力してください",enterProjectIntro:"小説の紹介文を入力してください",enterProjectType:"プロジェクトのタイプを入力してください",enterArtStyle:"プロジェクトのビジュアルパンフレットを選択してください",enterVideoRatio:"ビデオ比率を選択してください",enterImageModel:"画像モデルを選択してください",enterVideoModel:"ビデオモデルを選択してください",visualManualDeleted:"正常に削除されました",selectMode:"モードを選択してください",deleteDirectorManualHeader:"ディレクターズマニュアルの削除",deleteDirectorManualBody:"ディレクターズマニュアル「{名前}」を削除してもよろしいですか?",directorManualUpdated:"ディレクターズマニュアルを更新しました",directorManualAdded:"ディレクターズマニュアルを追加しました",directorManual:"プロジェクトディレクターズマニュアルを選択してください"},type:{novel:"原作小説に基づいて",script:"小説の脚本に基づく"}},novel:{importText:"原文をインポート",batchDelete:"一括削除",eventAnalysis:"イベント分析",searchPlaceholder:"原文の名前を検索...",search:"検索",generating:"生成中...",genFailed:"生成失敗",none:"なし",edit:"編集",delete:"削除",col:{id:"No.",reel:"巻",chapter:"章名",chapterData:"章の内容",event:"イベント",operation:"操作"},msg:{batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のデータを削除してもよろしいですか?",batchDeleteSuccess:"一括削除に成功しました",deleteHeader:"削除の確認",deleteBody:"章名「{name}」のデータを削除してもよろしいですか?",deleteSuccess:"削除に成功しました",eventAnalysisHeader:"イベント分析",eventAnalysisBody:"選択した {count} 件のデータのイベント分析を実行してもよろしいですか?"},import:{title:"小説の原文をアップロード",step1:"ステップ 1",step2:"ステップ 2",step3:"ステップ 3",dragUpload:"ここに小説ファイルをドラッグ&ドロップするか、クリックしてアップロード",uploadHint:"対応形式: .txt, .docx。ファイルサイズは10MB以下を推奨します",or:"または",pasteLabel:"小説の原文を直接貼り付け",pastePlaceholder:"小説の原文を入力してください",chars:"文字",tooShort:"内容が短すぎます。100文字以上を推奨します",parsedChapters:"{count} 章を解析しました",nextStep:"次へ",prevStep:"戻る",selectedInfo:"選択済み:{count} 文字 (200,000文字以内)",eventAnalysis:"イベント分析",saveAndAnalyze:"原文を保存してイベントを分析",col:{chapter:"章",reel:"巻",chapterName:"章名",chapterData:"章の内容"},msg:{parseFailed:"ファイルの解析に失敗しました。再アップロードしてください",selectFile:"ファイルを選択",docNotSupported:".doc ファイルは解析をサポートしていません。.ts ファイルに変換してください。",unsupportedType:"未対応のファイル形式です",fileTooLarge:"ファイルサイズが10MBを超えています。より小さなファイルをアップロードしてください",selectChapters:"先に章を選択してください",saveSuccess:"小説の原文を保存しました"},importAdd:"ここにファイルをドラッグ アンド ドロップするか、クリックしてアップロードします",limit:".ts形式をサポート"},editDialog:{title:"小説の原文を編集",chapterName:"章名",chapterNamePh:"章名を入力してください",eventContent:"イベント内容",eventContentPh:"イベント内容を入力してください",chapterContent:"章の内容",chapterContentPh:"章の内容を入力してください",cancel:"キャンセル",save:"保存",msg:{updateSuccess:"小説の原文を更新しました"}},event:{regenerate:"イベントを再生成",batchDelete:"一括削除",noData:"イベントデータがありません。生成を開始してください",generate:"イベントを生成",generatingHint:"イベント生成中。しばらくお待ちください...",loading:"読み込み中...",delete:"削除",col:{id:"イベントID",eventName:"イベント名",chapters:"元の章",detail:"イベントのプロセス",createTime:"作成時間",operation:"操作"},msg:{deleteHeader:"イベントの削除",deleteBody:"このイベントを削除してもよろしいですか?",deleteSuccess:"削除に成功しました",generateSuccess:"イベントの生成に成功しました",batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のデータを削除してもよろしいですか?",batchDeleteSuccess:"一括削除に成功しました"}},analysis:{analyzeFirst:"先にイベントを分析してください",startAnalysis:"分析を開始",chapterHeader:"第{index}章 - {name}",analyzing:"イベント分析中"}},scriptAgent:{inputPlaceholder:"内容を入力してください",chapterEvents:"章のイベント",clearMessageMemory:"メッセージメモリをクリア",clearSummaryMemory:"要約メモリをクリア",clearAllMemory:"すべてのメモリをクリア",edit:"編集",storySkeleton:"ストーリーの骨格",adaptationStrategy:"脚色戦略",script:"シナリオ",noContent:"コンテンツがありません",relatedAssets:"関連アセット",editScript:"シナリオを編集",save:"保存",scriptTitle:"タイトル",titlePlaceholder:"タイトルを入力してください",content:"内容",contentPlaceholder:"シナリオの内容を入力してください",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",selectAssetsTitle:"関連アセットの選択",welcomeMsg:"こんにちは!Toonflow アシスタントです。シナリオの生成を開始しましょうか?",start:"開始",memoryType:{message:"メッセージメモリ",summary:"要約メモリ",all:"すべてのメモリ"},msg:{clearConfirm:"クリアを確認",clearBody:"{type}をクリアしてもよろしいですか?この操作は取り消せません。",confirmClear:"クリアを確認",cancel:"キャンセル",memoryCleared:"{type}をクリアしました",scriptUpdated:"シナリオの更新に成功しました",scriptUpdateFailed:"シナリオの更新に失敗しました。後で再試行してください",searchScriptFailed:"シナリオの検索に失敗しました",updated:"正常に保存されました",error:"保存に失敗しました",reconnect:"再接続",notReconnect:"再接続の会話が切断されることを確認しますか?",keepReconnect:"確認する",deleteConfirm:"削除確認",deleteBody:"テキストの削除",confirmDelete:"削除の確認",scriptDeleted:"スクリプトが削除されました"},reconnect:"再接続"},cornerScape:{batchSettings:"一括生成設定",quickActions:"クイックコマンド",selectUngenerated:"未生成をすべて選択",selectGenerated:"生成済みをすべて選択",selectFailed:"エラーをすべて選択",invertSelection:"選択を反転",clearSelection:"選択を解除",batchPreview:"画像の一括プレビュー",assetTypeFilter:"アセットタイプで絞り込み",genModel:"生成モデル",resolution:"解像度",resolutionPh:"解像度を選択してください",concurrency:"同時実行数",concurrencyPh:"同時実行数を入力してください",startBatch:"バッチでイメージの生成を開始する",waitingGen:"生成待ち",generating:"生成中",genFailed:"生成失敗",imageError:"画像エラー",typeRole:"キャラクター",typeScene:"シーン",typeTool:"小道具",typeUnknown:"不明",descriptionSuffix:"説明:",operateScriptFirst:"先にシナリオを操作してください",individualConfig:"個別設定",noImage:"画像がありません",promptLabel:"プロンプト",promptPh:"プロンプトを入力してください",aiPolish:"AI で推敲",regenerate:"再生成",filterRole:"人物",filterScene:"シーン",filterTool:"小道具",unnamed:"無名",noDescription:"説明なし",msg:{selectModel:"生成モデルを選択してください",selectResolution:"解像度を選択してください",enterPrompt:"プロンプトを入力してください",enterPromptFirst:"先にプロンプトを入力してください",genSuccess:"{name} の生成に成功しました",genFailed:"{name} の生成に失敗しました",promptGenSuccess:"プロンプトの生成に成功しました",polishFailed:"推敲に失敗しました。再試行してください",selectAtLeastOne:"一括生成するアセットを少なくとも1つ選択してください",batchStarted:"一括生成を開始しました。全 {count} 件、同時実行数 {concurrent}",batchItemFailed:"{name} の生成に失敗しました:{error}",batchComplete:"一括生成が完了しました",batchFailed:"バッチ生成に失敗しました",replaceFailed:"交換に失敗しました",replaceSuccess:"交換に成功しました",promptGenFail:"プロンプト単語の生成に失敗しました",saveSuccess:"プロンプトワードの変更が成功しました",saveFailed:"プロンプトワードの変更に失敗しました"},history:"歴史的な写真",confirmReplace:"交換の確認",batchGenerationPrompt:"プロンプト単語をバッチで生成する",generatingPrompt:"生成中",selectPromptEmpty:"プロンプトの単語が空であることをすべて選択してください",noEmptyPrompt:"空のプロンプトワードを含むアセットはありません",selectedCount:"{count} 個のアセットが選択されました"},script:{searchPlaceholder:"シナリオ名を検索...",search:"検索",addScript:"シナリオを新規作成",cancelSelectAll:"全選択を解除",selectAll:"すべて選択",exportScript:"シナリオをエクスポート",msg:{searchFailed:"シナリオの検索に失敗しました",selectExport:"先にエクスポートするシナリオを選択してください",exportSuccess:"エクスポートに成功しました",exportFailed:"シナリオのエクスポートに失敗しました",deleteHeader:"削除の確認",deleteBody:"このシナリオを削除してもよろしいですか?この操作は取り消せません。",deleteConfirm:"削除",cancel:"キャンセル",deleteSuccess:"削除に成功しました",deleteFailed:"削除に失敗しました",selectDelScript:"スクリプトを削除することを選択してください",batchDeleteHeader:"一括削除",batchDeleteBody:"選択した {count} 件のシナリオを削除してもよろしいですか?この操作は取り消せません。",batchDeleteSuccess:"一括削除に成功しました",extractingInProgress:"抽出中",projectNotFound:"アイテムが見つかりません",selectsExport:"スクリプトをエクスポートすることを選択してください"},add:{title:"シナリオの追加",scriptName:"シナリオ名",scriptNamePh:"シナリオ名を入力してください",uploadFile:"ファイルをアップロード",dragUpload:"ここにシナリオファイルをドラッグ&ドロップするか、クリックしてアップロード",uploadHint:"対応形式: .txt, .docx。ファイルサイズは10MB以下を推奨します",scriptContent:"シナリオ内容",scriptContentPh:"シナリオ内容をアップロードまたは入力してください...",relatedAssets:"関連アセット",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",cancel:"キャンセル",confirm:"確定",msg:{fileReadFailed:"ファイルの読み取りに失敗しました",docNotSupported:".docファイルの解析は未対応です。.txtまたは.docx形式に変換してください",unsupportedType:"未対応のファイル形式です",fileTooLarge:"ファイルサイズが10MBを超えています。より小さなファイルをアップロードしてください",parsing:"ファイルを解析中...",parseFailed:"ファイルの解析に失敗しました。再アップロードしてください",selectAssetsTitle:"関連アセットの選択",enterContent:"シナリオ内容をアップロードまたは入力してください",enterName:"シナリオ名を入力してください",addSuccess:"シナリオを追加しました",addFailed:"シナリオの追加に失敗しました。後で再試行してください"}},edit:{title:"シナリオ詳細",scriptName:"シナリオ名",scriptNamePh:"シナリオ名を入力してください",scriptContent:"シナリオ内容",scriptContentPh:"シナリオ内容を入力してください...",relatedAssets:"関連アセット",selectAssets:"アセットを選択",noAssets:"関連アセットがありません",msg:{selectAssetsTitle:"関連アセットの選択",updateSuccess:"シナリオの更新に成功しました",updateFailed:"シナリオの更新に失敗しました。後で再試行してください"}},deleteScript:"スクリプトを一括で削除する",extractAssets:""},assets:{addPrefix:"追加",batchGenerate:"一括生成",generatePrompt:"プロンプトを生成",generateImage:"画像を生成",batchDelete:"一括削除",searchPlaceholder:"アセット名を検索...",search:"検索",preview:"プレビュー",generate:"生成",edit:"編集",delete:"削除",generating:"生成中",play:"再生",mediaPreview:"メディアプレビュー",confirmBatch:"{type} を確認してください!",model:"モデル",resolution:"解像度",resolutionPh:"解像度を選択してください",batchGenPrompt:"プロンプトの一括生成",batchGenImage:"画像の一括生成",role:"キャラクター",prop:"小道具",scene:"シーン",clip:"素材",uploadSuccess:"アップロードに成功しました",selectAtLeastOne:"アセットを少なくとも1つ選択してください",noDescription:"説明なし",promptGenSuccess:"「{name}」のプロンプト生成に成功しました",promptGenFail:"「{name}」のプロンプト生成に失敗しました:{error}",selectModel:"モデルを選択してください",selectResolution:"解像度を選択してください",noPromptForImage:"「{name}」にはプロンプトがありません。画像を生成できません",imageGenSuccess:"「{name}」の画像生成に成功しました",imageGenFail:"「{name}」の画像生成に失敗しました:{error}",confirmDeleteHeader:"削除の確認",confirmBatchDeleteBody:"これらのアセットを一括削除してもよろしいですか?この操作は取り消せません。",confirmDeleteBody:"このアセットを削除してもよろしいですか?この操作は取り消せません。",deleteBtn:"削除",cancelBtn:"キャンセル",deleteSuccess:"アセットの削除に成功しました",deleteFail:"アセットの削除に失敗しました",colPreview:"プレビュー",colName:"名前",colPrompt:"プロンプト",colDescribe:"説明",colRemark:"備考",colCreateTime:"作成時間",colOperation:"操作",add:{name:"名前",namePh:"名前を入力してください",describe:"説明",describePh:"説明を入力してください",remark:"備考",remarkPh:"備考を入力してください",prompt:"プロンプト",promptPh:"プロンプトを入力してください",nameRequired:"名前を入力してください",describeRequired:"詳細を入力してください",remarkRequired:"備考を入力してください",updateSuccess:"アセットの更新に成功しました",addSuccess:"アセットの追加に成功しました"},gen:{header:"画像の生成",uploadRef:"参照画像をアップロード",optional:"任意",promptLabel:"画像生成プロンプト",smartGenerate:"スマート生成",generatingPrompt:"スマートプロンプトを生成中...",promptPlaceholder:"生成したい画像の内容を記述してください。例:テクノロジー感あふれる未来都市、ネオンの瞬き、サイバーパンクスタイル...",selectModel:"モデルを選択",selectResolution:"解像度を選択",generateBtn:"画像を生成",resultTitle:"生成結果",generatedCount:"{count} 枚生成されました。1枚選択してください",generatingLabel:"生成中...",genFailed:"生成に失敗しました",confirmSelect:"選択を確定",promptSuccess:"プロンプトの生成に成功しました",promptFail:"プロンプトの生成に失敗しました",fillPrompt:"プロンプトを入力してください",pickResolution:"解像度を選択してください",pickModel:"モデルを選択してください",unnamed:"無名",assetGenSuccess:"アセットの生成に成功しました",assetGenFail:"アセットの生成に失敗しました",uploadOk:"アップロードに成功しました",imageSelected:"この画像を選択しました",imageDeleted:"この画像を削除しました",imageSaved:"画像を保存しました",completed:"完了"},batch:{header:"一括生成",selected:"{count} 件選択中",selectAll:"すべて選択",clearSelection:"選択をクリア",inputPh:"内容を入力してください",saveSelected:"選択項目を保存 ({count})",colPreviewImg:"プレビュー画像",selectToSave:"保存する項目を選択してください",saveSuccess:"保存に成功しました",saveFail:"保存に失敗しました。再試行してください",promptDone:"プロンプトの生成が完了しました",promptFail:"プロンプトの生成に失敗しました",missingPrompts:"プロンプトがないアセットが {count} 件あります。先にプロンプトを生成してください",imageDone:"画像の生成が完了しました",imageGenFail:"画像の生成に失敗しました",unknownError:"不明なエラー",promptGenCancelled:"生成がキャンセルされました"}},production:{selectPlaceholder:"エピソードを選択してください",edit:"編集",node:{script:{title:"シナリオ",editDialog:"シナリオの編集"},scriptPlan:{title:"撮影プラン",editDialog:"撮影プランの編集"},storyboard:{title:"絵コンテボード",notGenerated:"未生成",scaleRatio:"ズーム倍率",gridPreview:"グリッドプレビュー",noPreviewImages:"プレビュー可能な画像がありません",imageLoadFailed:"画像の読み込みに失敗しました",promptPlaceholder:"プロンプトの単語を入力してください",prompt:"即効性のある言葉",editInfo:"即時の単語の修正"},storyboardTable:{title:"絵コンテ表",editDialog:"絵コンテ表の編集"},assets:{title:"派生アセット",generateFailed:"生成失敗",notGenerated:"未生成",originalAsset:"元のアセット",derived:"派生",noDerivedAssets:"派生アセットなし"},poster:{title:"動画カバー",coverCount:"{count} 枚"},workbench:{title:"動画ワークベンチ"}},editImage:{upload:"アップロード",generate:"生成",saveFailed:"保存に失敗しました。再試行してください",fetchFailed:"データの取得に失敗しました",generating:"生成中...",deleteNode:"ノードを削除",ratio:"アスペクト比",quality:"画質",generateBtn:"画像を生成",selectImage:"画像を選択",imageGeneration:"画像生成",promptPlaceholder:"生成したい画像を記述してください...",imageRef:"画像{index}",noReferences:"引用可能な参照画像がありません",selectModel:"先にモデルを選択してください",selectQuality:"画質を選択してください",selectRatio:"アスペクト比を選択してください",generateFailed:"生成に失敗しました",generateFirst:"先に画像を生成してください",generatedResult:"生成結果",waitingGenerate:"生成待ち",layoutLR:"自動レイアウト-左右",layoutTB:"自動レイアウト-上下",uploadAssetImage:"アセット画像アップロード",uploadStoryboardImage:"絵コンテ画像アップロード",uploadImage:"アセットイメージのアップロード",mode:"モデル",closeConfirmTitle:"編集パネルを閉じますか?",closeConfirmBody:"保存していないデータは閉じると失われます"},save:"選択",cancel:"キャンセル",chatBox:{inputPlaceholder:"メッセージを入力...",generateDerivedAssets:"派生アセットを生成",welcomeMessage:"こんにちは!AI アシスタントです。何かお手伝いできることはありますか?",adjustModel:"モデルを調整",startMakingVideo:"動画制作を開始",startMakingVideoPrompt:"動画の制作を開始してください",clearMessageMemory:"メッセージメモリをクリア",clearSummaryMemory:"要約メモリをクリア",clearAllMemory:"すべてのメモリをクリア",messageMemory:"メッセージメモリ",summaryMemory:"要約メモリ",allMemory:"すべてのメモリ",confirmClear:"メモリのクリア",confirmClearBody:"{type}をクリアしてもよろしいですか?",confirmClearBtn:"クリアを確定",memoryCleared:"{type}をクリアしました"},wb:{quickPreview:"クイックプレビュー",videoGeneration:"絵コンテ",videoEditing:"編集デスク",hint:"ヒント",extractLines:"動画からセリフを抽出しますか?",no:"いいえ",confirm:"確定",extractLinesQuestion:"字幕用に動画からセリフを抽出しますか?",importingLoading:"インポート中です。しばらくお待ちください...",mainTrackVideo:"メイントラック(動画)",subtitle1:"字幕1",storyboardVideoName:"絵コンテ動画-{storyboard}.mp4"},preview:{noImage:"画像なし",storyboardDesc:"絵コンテの説明",serialNumber:"No.",noDescription:"説明なし",duration:"デュレーション",seconds:"秒",relatedAssets:"関連アセット",role:"キャラクター",prop:"小道具",scene:"シーン",noCharacters:"登場人物なし",imagePrompt:"画像のプロンプト",selectAll:"すべて選択",exportImage:"画像をエクスポート",sceneDescription:"画面の説明",promptLabel:"プロンプト",restoreSort:"並び順をリセット",restoreSortConfirm:"初期の並び順にリセットしてもよろしいですか?",tip:"ヒント",selectAtLeastOne:"エクスポートする絵コンテを少なくとも1つ選択してください",exportFilename:"絵コンテの絵"},generate:{noVideo:"動画なし",videoPrompt:"動画プロンプト",promptPlaceholder:"生成するビデオ コンテンツを説明するプロンプト ワードを入力してください...",refImage:"参照画像",image:"画像",refVideo:"参照動画",refImageLabel:"参照画像",refAudio:"参照音声",muteAudio:"音声をミュート",enableAudio:"音声をオン",resolution:"解像度",duration:"デュレーション",generate:"生成",historyVersions:"履歴バージョン",confirmSelection:"選択を確定",noHistory:"履歴がありません",generating:"生成中",generateFailed:"生成失敗",selectAll:"すべて選択",videoTrack:"ビデオトラック",batchGenerate:"一括生成",importToEditor:"編集エディタにインポート",modeSingleImage:"単一画像",modeMultiImage:"複数画像",modeGridImage:"グリッド複数画像",modeStartEnd:"開始・終了フレーム",modeText:"テキストから動画生成",modeVideoRef:"動画参照",modeImageRef:"画像参照",modeAudioRef:"音声参照",modeTextRef:"テキスト参照",startFrame:"開始フレーム",startFrameOptional:"開始フレーム (任意)",endFrame:"終了フレーム",endFrameOptional:"終了フレーム (任意)",selectRefImage:"参照画像を選択",selectRefImages:"参照画像を選択",selectEndFrame:"終了フレーム画像を選択",selectRefVideoAsset:"参照動画を選択",selectRefAudioAsset:"参照音声を選択",selectRefImageAsset:"参照画像を選択",selectImageSource:"画像ソースを選択",fromStoryboard:"絵コンテ画像",fromStoryboardDesc:"絵コンテリストから画像を選択",fromAssets:"アセット画像",fromAssetsDesc:"アセットライブラリから画像を選択",confirmDelete:"削除の確認",confirmDeleteBody:"この動画を削除してもよろしいですか?この操作は取り消せません。",delete:"削除",cancel:"キャンセル",deleteSuccess:"動画の削除に成功しました",deleteFailed:"削除に失敗しました",selectVideoFirst:"先に動画を1つ選択してください",confirmSuccess:"選択の確定に成功しました",batchSubmitted:"一括生成リクエストを送信しました。処理中です...",configNotFound:"設定が見つかりません",pollingFailed:"ビデオ ステータスのクエリに失敗しました。手動で更新してください",batchGeneratePrompt:"プロンプト単語をバッチで生成する",batchPromptEmpty:"ストーリーボード {name} はビデオ プロンプトで使用できます。最初にプロンプ​​トを作成または入力してください",modelEmpty:"最初にビデオ生成モデルを選択してください",generatingPrompt:"プロンプトワードのインテリジェントな生成"},editVideo:{reset:"リセット",undo:"取り消し",redo:"やり直し",split:"分割",delete:"削除",rendering:"レンダリング中...",exportVideo:"動画をエクスポート",exportSuccess:"動画のエクスポートが完了しました",exportFailed:"エクスポートに失敗しました",sampleSubtitle:"サンプルの字幕テキスト",customText:"カスタムテキスト内容",transitionBetweenClips:"トランジションは2つの隣接するクリップ間に追加する必要があります",transitionExists:"この位置にはすでにトランジションが存在します",videoPreviewArea:"動画プレビューエリア",clipMaterials:"編集素材",propertyPanel:"プロパティパネル",selectClip:"属性を表示するクリップを選択してください",basicInfo:"基本情報",name:"名前",clipNamePlaceholder:"クリップ名",startTime:"開始",endTime:"終了",totalDuration:"合計デュレーション",videoProperties:"動画プロパティ",opacity:"不透明度",volume:"音量",playbackSpeed:"再生速度",audioProperties:"音声プロパティ",fadeIn:"フェードイン",fadeOut:"フェードアウト",transitionProperties:"トランジションプロパティ",transitionType:"トランジションの種類",transFade:"フェード",transSlide:"スライド",transWipe:"ワイプ",transDissolve:"ディゾルブ",transZoom:"ズーム",transRotate:"回転",transitionDuration:"トランジションの長さ",subtitleProperties:"字幕プロパティ",textContent:"テキスト内容",fontSize:"フォントサイズ",copy:"コピー",deleteConfirm:"削除の確認",deleteClipConfirm:"このクリップを削除してもよろしいですか?",avCanvasNotInit:"AVCanvas が初期化されていません",noExportContent:"エクスポートするコンテンツがありません",exportProject:"プロジェクトをエクスポート",transitionAdded:"トランジションを追加しました: {name}",splitClip:"クリップを分割",deleteClip:"クリップを削除",addClip:"{name} を追加",duplicateClip:"クリップを複製",addTransition:"トランジションを追加",updateClip:"クリップ {key} を更新",updatePlaybackRate:"再生速度を {rate}x に更新",updateTransitionDuration:"トランジションの長さを更新",playbackRateRange:"再生速度は 0.1 から 10 の間である必要があります",updatePlaybackRateFailed:"再生速度の更新に失敗しました:",importProject:"プロジェクトをインポート",import:"インポート"},clipType:{video:"動画",audio:"音声",subtitle:"字幕",transition:"トランジション",sticker:"ステッカー",filter:"フィルター",effect:"エフェクト"},track:{video:"動画",image:"画像",audio:"音声",subtitle:"字幕",text:"テキスト",sticker:"ステッカー",filter:"フィルター",effect:"エフェクト"},transition:{fade:"フェード",slide:"スライド",slideLeft:"左へスライド",slideRight:"右へスライド",slideUp:"上へスライド",slideDown:"下へスライド",wipe:"ワイプ",wipeLeft:"左へワイプ",wipeRight:"右へワイプ",wipeUp:"上へワイプ",wipeDown:"下へワイプ",dissolve:"ディゾルブ",zoom:"ズーム",zoomIn:"ズームイン",zoomOut:"ズームアウト",rotate:"回転",circle:"サークル",diamond:"ひし形",clock:"時計",blur:"ブラー"},media:{titleText:"タイトルテキスト",subtitleText:"字幕テキスト",customText:"カスタムテキスト",media:"メディア",image:"画像",audio:"音声",subtitle:"字幕",transition:"トランジション",effect:"エフェクト",filter:"フィルター",loading:"読み込み中...",subtitlePreview:"字",video:"ビデオ"},effect:{fadeIn:"フェードイン",fadeOut:"フェードアウト",flash:"フラッシュ",shake:"シェイク",zoomIn:"ズームイン",zoomOut:"ズームアウト",pulse:"パルス",rotateIn:"回転しながらイン",sticker1:"ステッカー 1",sticker2:"ステッカー 2"},filter:{grayscale:"モノクロ",sepia:"セピア",warm:"ウォーム",cool:"クール",vivid:"ビビッド",bright:"ブライト",highContrast:"ハイコントラスト",blur:"ブラー",invert:"反転",semiTransparent:"半透明"},guideSwitchEpisode:"エピソードを切り替え",guideSwitchEpisodeBody:"エピソードの切り替えはこちらに移動しました",autoLayoutLR:"自動組版 - 左右レイアウト",autoLayoutTB:"自動写植上下レイアウト",getFlowData:"ワークスペースを更新する",confirm:"エピソード切り替え確認",confirmEpisodesSwitch:"現在のタスクはまだ進行中です。エピソードを切り替えるとセッションが再接続されます。切り替えを続けますか?"},task:{title:"タスクリスト",subtitle:"最新のタスク実行履歴",refresh:"更新",categoryLabel:"タスクカテゴリ:",stateLabel:"ステータス:",noFailReason:"失敗理由なし",stateAll:"すべて",stateRunning:"進行中",stateCompleted:"完了",stateFailed:"生成失敗",fetchFailed:"タスクリストの取得に失敗しました",col:{taskClass:"タスクカテゴリ",relatedObjects:"関連オブジェクト",model:"モデル",describe:"説明",state:"ステータス",startTime:"時間",reason:"失敗の理由"},project:"プロジェクト名:"},noVideo:"まだビデオはありません",prompt:"ビデオのプロンプトワード",generateText:"AIが生成したプロンプトワード",selectStoryboard:"ストーリーボードを選択",generate:{noVideo:"まだビデオはありません",generateText:"AIが生成したプロンプトワード",selectStoryboard:"ストーリーボードを選択",generate:"ビデオの生成",history:"歴史的バージョン",generating:"生成中",generateFailed:"失敗",selectAll:"すべて選択",selected:"選択済み",batchGenerateText:"プロンプト単語をバッチで生成する",batchGenerateVideo:"バッチでビデオを生成する",importVideo:"編集デスクにインポートする",emptyTrack:"段落 {インデックス 1}",del:"消去",delConfirm:"この段落を削除してもよろしいですか?",selectSource:"ソースを選択",confirm:"アセットから選択",cancel:"ストーリーボードから選択",selectVideoFailed:"ビデオの選択に失敗しました",selectVideoSuccess:"ビデオの選択が成功しました",selectTrackFirst:"最初にストーリーボードを選択してください",noSelectedVideo:"動画が選択されていません",generateConfirm:"世代の確認",generateConfirmBody:"ビデオの生成を確認します",generateVideosInBatches:"バッチでビデオを生成する",generateStarted:"ビルドの開始",promptEmpty:"ビデオを生成するために必要なデータを確認してください。プロンプトの単語が空です。生成を続けますか?",skipDataWithEmptyVideoPromptWords:"生成する必要があるビデオ データは存在しますが、プロンプト ワードは空です。",duration:"間隔",resolution:"解決",delVideo:"このビデオを削除しますか?",delSuccess:"正常に削除されました",addReference:"参照を追加",promptPlaceholder:"動画のプロンプトワードを入力してください",downloadVideo:"動画をバッチでダウンロードする",selectVideo:"ダウンロードしたい動画にチェックを入れてください"}},dSi={slogan:"ショードラ制作支援ツール",tips:"デフォルトアカウント:admin / admin123",settings:"サーバー設定",requestAddress:"リクエストアドレス",username:"ユーザー名",password:"パスワード",login:"ログイン",usernameRequired:"ユーザー名を入力してください",passwordRequired:"パスワードを入力してください",enterUsernameAndPassword:"ユーザー名またはパスワードを入力してください",loginSuccess:"ログインに成功しました",settingsSaved:"設定を保存しました"},uSi={cancel:"キャンセル",confirm:"確認",selectAssets:"アセットを選択",sessionExpired:"セッションが期限切れです。再度ログインしてください",openSettings:"設定を開く",defaultReel:"本文巻",save:"保存",submitting:"提出する",editSuccess:"変更が成功しました",editFailed:"変更に失敗しました",submit:"提出する"},hSi={prompt:"即効性のある言葉"},fSi={welcomeTitle:"トゥーンフローへようこそ",welcomeDesc:"AI 主導のコミック作成ワークフロー プラットフォーム。1 分ほどかけて初期構成を完了してみましょう。",startConfig:"設定を開始する",skip:"スキップブート",configModel:"モデルサービスの追加",configData:"エージェントの構成",startUse:"始めましょう",configModelTitle:"モデルサービスプロバイダーを追加",configModelDesc:"まず、設定に少なくとも 1 つの AI モデル サービス プロバイダー (OpenAI、Claude など) を追加し、対応する API キーを入力する必要があります。",configModelTip:"下のボタンをクリックすると、設定ページの「モデルサービス」タブが開きます。サプライヤーを追加したら、ここに戻って続行します。",configModelBtn:"モデルサービスの構成に移動します",configAgentTitle:"エージェントモデルの割り当て",configAgentDesc:"次に、エージェント構成内の各機能モジュールにモデルを割り当て、タスクを完了するためにどのモデルを呼び出すべきかをシステムが認識できるようにします。",configAgentTip:"下のボタンをクリックすると、設定ページの「エージェント構成」タブが開きます。各機能にモデルを割り当てた後、ここに戻ります。",configAgentBtn:"エージェントの構成に移動します",finishTitle:"🎉 準備は万端です!",finishDesc:"設定が完了したので、すべての機能を使用できるようになります。調整する必要がある場合は、いつでも設定で変更できます。",qrcodeLabel:"さらに詳しいサポートを得るには、WeChat コミュニケーション グループに参加してください。",githubLabel:"役に立ったと思ったら、⭐スターをお願いします!",prevStep:"前のステップ",nextStep:"次のステップ",finish:"始めましょう"},gSi={skillManagement:{search:"ファイル名を検索する",empty:"一致するファイルがありません",edit:"編集",selectOnTheLeft:"左からファイルを選択してください"}},mSi={assets:{notExist:"アセットが存在しません",notDerivativeExist:"派生資産は存在しません",derivativeUpdateSuccess:"更新に成功しました",derivativeState:"生成されない",derivativeAddSuccess:"正常に追加されました",derivativeDelSuccess:"正常に削除されました",notGenerated:"生成されない"},addSuccess:"更新に成功しました",state:{unused:"生成されない"},saveSuccess:"正常に追加されました"},kSi={generating:"生成中"},vSi={scanning:"🔍 解析と読み込みスキル",scanComplete:"✨ Skill スキャン完了",inserted:"✅ {count} 個のスキルを追加しました",updated:"🔄 {count}個のSkillを更新",removed:"🗑️ {count}個のSkillを削除",scannedFiles:"📁 {count}個のファイルをスキャン",noDescription:"📝 {count}個のSkillに説明がありません",noAttribution:"👤 {count}個のSkillに帰属がありません",configWarning:"⚠️ Skill 設定警告",openSettings:"設定を開く",scanFailed:"❌ スキャン失敗",checkNetwork:"🔌 ネットワーク接続を確認するか、後で再試行してください",retryLater:"🔁 後で再試行してください"},ASi="ビデオの生成",pSi="歴史的バージョン",bSi="生成中",wSi="失敗",OSi="すべて選択",ySi="選択済み",CSi="ビデオをインポートする",_Si="段落 {インデックス 1}",SSi="削除の確認",LSi="この段落を削除してもよろしいですか?",xSi="ソースを選択",ESi="アセットから選択",TSi="ストーリーボードから選択",QSi={newVersion:"新しいバージョンがあります。更新しますか?"},DSi={components:aSi,settings:lSi,workbench:cSi,login:dSi,common:uSi,"components.storyboardImageCheck.camera":"カメラ","components.storyboardImageCheck.dialogTitle":"絵コンテ画像を選択","components.storyboardImageCheck.preview":"プレビュー","components.storyboardImageCheck.src":"プレビュー画像","components.storyboardImageCheck.title":"タイトル","components.storyboardImageCheck.duration":"時間","components.storyboardImageCheck.lines":"セリフ","components.storyboardImageCheck.createTime":"作成日時","workbench.script.extractAssets":"アセットを抽出",promptManage:hSi,hello:fSi,setting:gSi,storyboard:mSi,productionAgent:kSi,skillScan:vSi,generate:ASi,history:pSi,generating:bSi,generateFailed:wSi,selectAll:OSi,selected:ySi,importVideo:CSi,emptyTrack:_Si,del:SSi,delConfirm:LSi,selectSource:xSi,confirm:ESi,cancel:TSi,"workbench.script.msg.exportFailed":"エクスポートに失敗しました","workbench.production.node.assets.confirmDeleteBody":"アセットを削除するかどうかの確認","workbench.production.node.assets.removeFailed":"アセットの削除に失敗しました",version:QSi,"workbench.production.generatedNode.localUpload":"ローカルアップロード","workbench.production.editImage.uploadFailed":"画像のアップロードに失敗しました","workbench.production.editImage.noImage":"まずは写真を追加してください"},BSi={editMdPreivew:{title:"Редактировать",confirm:"Сохранить",cancel:"Отмена"},imageTools:{copy:"Копировать изображение",preview:"Предпросмотр",download:"Скачать",msg:{imageLoadFailed:"Не удалось загрузить изображение",convertFailed:"Ошибка конвертации",copied:"Скопировано в буфер обмена",copyFailed:"Ошибка копирования",downloadFailed:"Ошибка скачивания",downloadStarted:"Скачивание началось",downloadBlockedOpenNewWindow:"Текущий источник изображения может ограничивать скачивание, предпринята попытка открыть в новом окне"}},migrateShow:{title:"Перенос данных",desc:"Обнаружены данные старой версии. Выполнить перенос?",hide:"Больше не показывать",confirm:"ОК",msg:{migrateSuccess:"Данные успешно перенесены",migrateFailed:"Ошибка переноса данных"}},modelSelect:{placeholder:"Пожалуйста, выберите модель",type:{image:"Изображение",text:"Текст",video:"Видео"},msg:{fetchModelFailed:"Не удалось получить данные модели:"},goSetting:"Зайди в настройки и добавь модель."}},RSi={title:"Настройки ToonFlow",menu:{language:"Язык",vendorConfig:"Поставщики моделей",agentConfig:"Настройки Agent",promptManage:"Управление подсказками",skillManagement:"Управление навыками",memoryConfig:"Память Agent",loginConfig:"Настройки входа",dbConfig:"База данных",fileManagement:"Управление файлами",otherConfig:"Другие настройки",requestConfig:"URL запросов",about:"Проверить обновления",logoutConfig:"Выйти",skillsSkillsManagement:"НавыкиУправление навыками"},language:{desc:"Выберите язык интерфейса",msg:{saved:"Языковые настройки сохранены"}},vendor:{addVendor:"Добавить поставщика",noVendor:"Нет поставщиков. Пожалуйста, добавьте.",required:"Обязательно",optionalSection:"Необязательно",modelSettings:"Настройки модели",addManually:"Добавить вручную",test:"Тест",edit:"Редактировать",delete:"Удалить",deleteVendor:"Удалить поставщика",editCode:"Редактировать код",updateConfig:"Обновить конфигурацию",addModel:"Добавить модель",editModel:"Редактировать модель",displayName:"Отображаемое имя",displayNamePlaceholder:"Например: GPT-4o",modelId:"ID модели",modelIdPlaceholder:"Например: gpt-4o",modelType:"Тип модели",multimodal:"Мультимодальная",supported:"Поддерживается",notSupported:"Не поддерживается",toolCall:"Вызов инструментов",imageMode:"Режим изображения",videoMode:"Режим видео",audioOutput:"Аудиовыход",durationResolution:"Длительность / Разрешение",durationSec:"Длительность (сек)",resolution:"Разрешение",enterAndPress:"Введите и нажмите Enter",addDurationResolution:"Добавить длительность / разрешение",testResult:"Результаты теста",generating:"Генерация...",addVendorDialog:"Добавление поставщика",codeEditorInfo:"Пожалуйста, напишите код на TypeScript для конфигурации поставщика",reset:"Сброс",importFile:"Импорт файла",textModel:"Текстовая модель",imageModel:"Модель изображений",videoModel:"Видеомодель",textToImage:"Текст в изображение",textToVideo:"Текст в видео",singleImage:"Одно изображение",multiImage:"Много изображений",multiReference:"Множественный референс",gridImage:"Сетка изображений",startEndRequired:"Первый и последний кадры (Оба обязательны)",endFrameOptional:"Первый и последний кадры (Последний необязателен)",startFrameOptional:"Первый и последний кадры (Первый необязателен)",textRef:"Текст",imageRef:"Изображение",videoRef:"Видео",audioRef:"Аудио",audioOptional:"Необязательно",audioOnly:"Только видео со звуком",noAudio:"Только видео без звука",msg:{getVendorListFailed:"Не удалось получить список поставщиков",vendorConfigUpdated:"Конфигурация поставщика обновлена",updateFailed:"Ошибка обновления",highRiskConfirm:"⚠️ Подтверждение опасной операции",addVendorRiskBody:"Добавление нового поставщика ИИ даст ему доступ к API системы. Убедитесь, что вы доверяете исходному коду этого поставщика!",iKnowRisk:"Я осознаю риски",cancel:"Отмена",confirmAgain:"⚠️ Повторное подтверждение",addVendorConfirmBody:"Вы уверены, что хотите добавить этого поставщика? Он будет включен в системное планирование моделей.",confirmAndAdd:"Подтвердить и добавить",goBackCheck:"Вернуться и проверить",vendorAdded:"Поставщик успешно добавлен",addFailed:"Ошибка добавления",updateVendorRiskBody:"Обновление конфигурации поставщика ИИ изменит его доступ к API системы и поведение. Убедитесь, что вы доверяете измененному коду!",updateVendorConfirmBody:"Вы уверены, что хотите обновить конфигурацию этого поставщика? Это повлияет на системное планирование моделей.",confirmAndUpdate:"Подтвердить и обновить",updateSuccess:"Конфигурация поставщика успешно обновлена",fillDisplayName:"Пожалуйста, введите отображаемое имя",fillModelId:"Пожалуйста, введите ID модели",selectImageMode:"Пожалуйста, выберите режим изображения",selectVideoMode:"Пожалуйста, выберите режим видео",groupPrefix:"Группа {n}: ",addDuration:"Пожалуйста, добавьте длительность",addResolution:"Пожалуйста, добавьте разрешение",selectVendorFirst:"Пожалуйста, сначала выберите поставщика",modelIdExists:"ID модели уже существует",modelAdded:"Модель успешно добавлена",modelUpdated:"Модель успешно обновлена",enterApiKey:"Пожалуйста, введите API KEY",enterApiUrl:"Пожалуйста, введите API URL",testSuccess:"Тест пройден",imageGenSuccess:"Изображение успешно сгенерировано",videoGenSuccess:"Видео успешно сгенерировано",requestFailed:"Ошибка запроса",deleteModelConfirm:"Подтверждение удаления модели",deleteModelBody:"Это действие необратимо. Продолжить?",confirmDelete:"Удалить",modelDeleted:"Модель удалена",deleteVendorConfirm:"Подтверждение удаления поставщика",deleteVendorBody:"Удаление поставщика также удалит все связанные с ним модели. Продолжить?",vendorDeleted:"Поставщик удален",deleteFailed:"Ошибка удаления",enabled:"Включено",disabled:"Неполноценный",linkAddVendorRiskBody:"Добавление нового поставщика ИИ предоставит ему доступ к системному API. Убедитесь, что вы доверяете источнику ссылок поставщика!",importAdd:"Добавление нового поставщика ИИ предоставит ему доступ к системному API. Убедитесь, что вы доверяете источнику документации поставщика!",linkAddFailed:"Не удалось добавить ссылку"},associationSkills:"Сопутствующие навыки",think:"глубокое мышление",code:"код",linkAddPlaceholder:"Введите ссылку для добавления",noFileSelected:"Файл успешно импортирован",linkAdd:"подтверждать"},agent:{bannerDesc:"Используйте официальный прокси-сервер Toonflow для конфигурации в один клик. Готово к использованию без ручной настройки.",visitWebsite:"Перейти на сайт",fillKey:"Введите KEY",oneClickFill:"Вставить в 1 клик",notOpen:"Недоступно",notConfigured:"Не настроено",modelConfig:"Настройки модели",confirm:"ОК",cancel:"Отмена",selectModel:"Выберите модель",fillKeyHeader:"Введите официальный KEY платформы Toonflow",keyPlaceholder:"Пожалуйста, введите KEY",save:"Сохранить",msg:{notAvailable:"Эта функция пока недоступна. Следите за обновлениями!",configSuccess:"Успешно настроено",updateConfigFailed:"Ошибка обновления конфигурации: ",keyValid:"KEY действителен. Успешное подключение к платформе Toonflow",keyInvalid:"KEY недействителен. Пожалуйста, проверьте и введите снова: ",enterKey:"Пожалуйста, введите KEY",saveFailed:"Ошибка сохранения: ",getAgentListFailed:"Не удалось получить список конфигураций Agent: "}},memory:{warning:"Следующие параметры предварительно настроены на рекомендуемые значения. Не изменяйте их, если не понимаете их значения и влияния.",vectorModelConfig:"Настройки векторной модели",modelFilePath:"Путь к файлу модели",quantizationType:"Тип квантования",quantizationPlaceholder:"Введите тип квантования",memoryParams:"Параметры памяти",messagesPerSummary:"Сообщений для запуска сжатия",messagesPerSummaryHelp:"Сохраняет контекст последних N сообщений.",shortTermLimit:"Лимит кратковременной памяти",shortTermLimitHelp:"Количество кандидатов памяти, возвращаемых при поиске.",summaryMaxLength:"Макс. длина сжатия",summaryMaxLengthHelp:"Максимальное количество символов при сжатии сообщений.",summaryLimit:"Лимит запросов сжатых сообщений",summaryLimitHelp:"Разрешенное количество сжатых сообщений для запроса.",ragLimit:"Лимит поиска RAG",ragLimitHelp:"Количество сообщений, извлекаемых при поиске.",deepRetrieveSummaryLimit:"Лимит извлечения векторов сжатия",deepRetrieveSummaryLimitHelp:"Количество сообщений, получаемых при поиске содержимого сжатых сообщений.",saveConfig:"Сохранить",clearMemory:"Очистить память",restoreDefault:"По умолчанию",msg:{saved:"Настройки памяти сохранены",clearConfirmTitle:"Подтверждение очистки",clearConfirmBody:"Это удалит глобальные данные памяти ИИ без возможности восстановления. Продолжить?",confirmClear:"Очистить",cancel:"Отмена",cleared:"Память очищена",clearFailed:"Не удалось очистить память"}},login:{username:"Имя пользователя",usernamePlaceholder:"Введите имя пользователя",password:"Пароль",passwordPlaceholder:"Введите пароль",modify:"Изменить",msg:{enterUsername:"Пожалуйста, введите имя пользователя",usernameLength:"Имя пользователя должно содержать 2-20 символов",enterPassword:"Пожалуйста, введите пароль",passwordLength:"Пароль должен содержать 6-20 символов",fetchFailed:"Не удалось получить информацию о пользователе",saveSuccess:"Успешно сохранено",saveFailed:"Ошибка сохранения"}},db:{clearDb:"Очистить базу данных",clearDbDesc:"Очистить данные во всех таблицах, сохранив их структуру",clearData:"Очистить данные",confirmAction:"Подтверждение",msg:{clearDbTitle:"Очистка базы данных",firstConfirm:"Вы уверены, что хотите очистить все таблицы? Данные нельзя будет восстановить!",secondConfirm:"Это последнее предупреждение. Все данные будут потеряны навсегда!",keyword:"Очистить",confirm:"Подтвердить",pleaseInput:"Пожалуйста, введите",cleared:"Все таблицы очищены",operationFailed:"Ошибка операции, попробуйте снова",cancelled:"Операция отменена"}},other:{requestTimeout:"Тайм-аут запроса",seconds:"Сек",inputSeconds:"Введите секунды",assetConcurrency:"Параллельная генерация ассетов",count:"Шт",inputCount:"Введите количество",chapterRegex:"Регулярное выражение для разбивки на главы",restoreDefault:"По умолчанию",regexPlaceholder:"Введите регулярное выражение",showTitleBar:"показать строку заголовка",isElectron:"Переключиться в режим рабочего стола",canvasScroll:"Прокрутка холста",canvasIsDisabled:"Масштабирование холста",agentCanvasScalingMethod:"Неограниченное использование колеса холста на рабочей странице",zoom:"Увеличить",scroll:"прокрутка",isInteracting:"Неограниченная оптимизация производительности перетаскивания холста на рабочей странице",closeIsInteracting:"закрытие"},request:{warning:"Не изменяйте без крайней необходимости",apiAddress:"URL API",apiPlaceholder:"Введите URL-адрес запроса API",save:"Сохранить",reset:"Сброс",msg:{enterApi:"Пожалуйста, введите URL API",validUrl:"Пожалуйста, введите действительный HTTP/HTTPS адрес",saved:"URL запроса успешно сохранен",reset:"Сброшено на адрес по умолчанию",refreshFailed:"Обновить не удалось",refreshSuccess:"Обновить успешно"},refresh:"обновить"},about:{slogan:"Опенсорсный ИИ-инструмент для создания комиксов и раскадровок",latestVersion:"У вас установлена последняя версия",checkUpdate:"Проверить обновления",codeRepository:"Репозиторий кода",githubRepo:"Репозиторий GitHub",giteeRepo:"Репозиторий Gitee",versionUpdate:"Обновление версии",checkUpdateGithub:"Проверить (GitHub)",getFromGithub:"Скачать последний релиз с GitHub",checkUpdateGitee:"Проверить (Gitee)",getFromGitee:"Скачать последний релиз с Gitee",license:"Лицензия",licenseDesc:"Лицензионное соглашение · Нажмите для подробностей",updateAvailable:"найдена новая версия",upToDate:"Обнаружена новая версия",confirmReinstall:"Скопировать ссылку",reinstallRequired:"Браузер автоматически откроется и загрузится. Если он не открывается, пожалуйста, откройте его вручную."},logout:{warning:"После выхода вам нужно будет снова войти в систему.",confirmLogout:"Вы уверены, что хотите выйти?",logout:"Выйти",msg:{logoutSuccess:"Успешный выход",logoutFailed:"Ошибка выхода, попробуйте снова"}},file:{quickOpen:"Быстро открыть каталог",open:"Открыть",dockerDesc:'Для Docker/раздельного развертывания перейдите в каталог "/data/*" для управления файлами.',desktopOnly:"Эта функция доступна только в десктопной версии",folders:{data:"data",dataDesc:"Каталог данных.",logs:"data/logs",logsDesc:"Журналы выполнения и ошибок.",oss:"data/oss",ossDesc:"Ресурсы файлового хранилища.",skills:"data/skills",skillsDesc:"Файлы конфигурации навыков и промптов.",models:"data/models",modelsDesc:"Файлы моделей и конфигурации.",web:"data/web",webDesc:"Веб-ресурсы, например, сборка фронтенда.",serve:"data/serve",serveDesc:"Файлы бэкенд-сервисов."},openFailed:"Не удалось открыть папку"},skill:{scanSkills:"ScanSkills",fileLost:"Файл отсутствует"},dev:{warning:"Ниже приведены инструменты разработчика, будьте осторожны!",openDevtool:"Открыть",devtoolsDoc:"Адрес документа",devtoolsDesc:"После включения в каталоге установки Toonflow будет создана папка .devtools. Убедитесь, что у Toonflow есть права на запись (запуск от имени администратора).",devtoolsDesc2:"Запустите npx {'@'}ai-sdk/devtools в этом каталоге, чтобы включить отладку телеметрии.",openDevtoolFailed:"Не удалось открыть инструменты разработчика. Убедитесь, что установлен рабочий стол Toonflow.",notInElectron:"Для веб-среды откройте консоль браузера вручную."}},ISi={selectProject:"Пожалуйста, выберите проект",menu:{myProject:"Мои проекты",taskCenter:"Центр задач",novel:"Текст романа",scriptAgent:"Сценарий Agent",scriptManage:"Управление сценариями",cornerScape:"Персонажи и сцены",production:"Создание видео",assetCenter:"Центр ассетов",settings:"Настройки",jumpGithub:"Перейти на Гитхаб",feedbackQuestions:"Вопрос обратной связи"},project:{title:"Мои проекты",subtitle:"Управление всеми проектами коротких драм",newProject:"Новый проект",dialog:{editTitle:"Редактировать проект",addTitle:"Новый проект",save:"Сохранить",ok:"ОК",cancel:"Отмена",projectType:"Тип проекта",selectType:"Выберите тип",basedOnNovel:"На основе текста романа",projectName:"Название проекта",projectNamePh:"Введите название проекта",novelType:"Жанр романа",novelTypePh:"Например: Фэнтези, Фантастика, Романтика",artStyle:"Визуальное руководство",selected:"Выбрано:",selectArtStyle:"Пожалуйста, выберите визуальное руководство",newArtStyle:"Новое визуальное руководство",loading:"Загрузка...",videoRatio:"Соотношение сторон",novelIntro:"Синопсис романа",novelIntroPh:"Введите синопсис романа",editArtStyleTitle:"Редактировать визуальное руководство",newArtStyleTitle:"Новое визуальное руководство",artStyleName:"Визуальное название руководства",artStyleNamePh:"Пожалуйста, введите название визуального руководства",artStyleImage:"Обложка визуального руководства",remove:"Удалить",uploadCover:"Загрузить обложку",artStylePrompt:"Слова подсказки визуального руководства",aiExtract:"Извлечь промпт (ИИ)",promptPlaceholder:"Описывает слово-подсказку визуального руководства, используемое для указания визуального руководства при создании изображений.",visualManual:"Визуальное руководство",newVisualManual:"Новое визуальное руководство",editVisualManualTitle:"Редактировать визуальное руководство",newVisualManualTitle:"Новое визуальное руководство",visualManualName:"Название визуального руководства",visualManualNamePh:"Пожалуйста, введите название визуального руководства",visualManualCover:"Обложка визуального руководства",visualManualPrompt:"Промпт визуального руководства",modelData:"Выберите модель изображения",videoModelData:"Выберите модель видео",prompt:{placeholder:"Введите слово-подсказку",saveSuccess:"Обновление успешно выполнено",title:"подсказать слово"},basedOnScript:"на основе сценария",mdFile:"визуальный файл руководства",directorManual:"Справочник директора",addDirectorManual:"Новое руководство директора",editingDirectorManual:"Редактировать Руководство режиссера",newDirecorManualTitle:"Новое руководство директора",directorManualPrompt:"Слова-подсказки в руководстве режиссера",directorManualName:"Название руководства режиссера",directorManualNamePh:"Введите название руководства режиссера",directorFile:"Документ «Руководство директора»",directorManualCover:"Обложка руководства режиссера"},msg:{fetchFailed:"Не удалось получить список проектов",notFound:"Проект не найден!",editSuccess:"Проект успешно отредактирован",editFailed:"Ошибка редактирования проекта",addSuccess:"Проект успешно создан",addFailed:"Ошибка создания проекта",deleteHeader:"Удалить проект",deleteBody:"Вы уверены, что хотите удалить этот проект?",deleteConfirm:"Удалить",deleteCancel:"Отмена",deleteSuccess:"Проект успешно удален",deleteFailed:"Ошибка удаления проекта",extractSuccess:"Промпт успешно извлечен",extractFailed:"Ошибка извлечения",enterArtStyleName:"Пожалуйста, введите название визуального руководства",artStyleUpdated:"Обновлено визуальное руководство",artStyleAdded:"Добавлен визуальный мануал",operationFailed:"Ошибка операции",enterVisualManualName:"Пожалуйста, введите название визуального руководства",enterVisualManualImage:"Пожалуйста, загрузите обложку визуального руководства",enterVisualManualTabData:"Промпт не может быть пустым",visualManualUpdated:"Визуальное руководство обновлено",visualManualAdded:"Визуальное руководство добавлено",deleteVisualManualHeader:"Удалить визуальное руководство",deleteVisualManualBody:'Вы уверены, что хотите удалить визуальное руководство "{name}"?',deleteVisualManualConfirm:"Удалить",deleteVisualManualCancel:"Отмена",enterProjectName:"Пожалуйста, введите название проекта",enterProjectIntro:"Пожалуйста, введите вступление к роману",enterProjectType:"Пожалуйста, введите тип проекта",enterArtStyle:"Пожалуйста, выберите визуальную брошюру проекта",enterVideoRatio:"Пожалуйста, выберите соотношение видео",enterImageModel:"Пожалуйста, выберите модель изображения",enterVideoModel:"Пожалуйста, выберите модель видео",visualManualDeleted:"Удалить успешно",selectMode:"Пожалуйста, выберите режим",deleteDirectorManualHeader:"Удалить руководство режиссера",deleteDirectorManualBody:"Вы уверены, что хотите удалить Руководство режиссёра «{name}»?",directorManualUpdated:"Обновлено Руководство директора",directorManualAdded:"Добавлено Руководство режиссера",directorManual:"Пожалуйста, выберите Руководство для директора проекта"},type:{novel:"По мотивам оригинального романа",script:"По новому сценарию"}},novel:{importText:"Импорт текста",batchDelete:"Пакетное удаление",eventAnalysis:"Анализ событий",searchPlaceholder:"Поиск по названию...",search:"Поиск",generating:"Генерация...",genFailed:"Ошибка генерации",none:"Нет",edit:"Редактировать",delete:"Удалить",col:{id:"№",reel:"Том",chapter:"Название главы",chapterData:"Содержимое главы",event:"Событие",operation:"Действие"},msg:{batchDeleteHeader:"Пакетное удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} элементов?",batchDeleteSuccess:"Пакетное удаление завершено",deleteHeader:"Подтверждение удаления",deleteBody:"Удалить главу под названием «{name}»?",deleteSuccess:"Успешно удалено",eventAnalysisHeader:"Анализ событий",eventAnalysisBody:"Выполнить анализ событий для выбранных {count} элементов?"},import:{title:"Загрузить текст романа",step1:"Шаг 1",step2:"Шаг 2",step3:"Шаг 3",dragUpload:"Перетащите файл с романом сюда или нажмите для загрузки",uploadHint:"Поддерживаются форматы .txt, .docx. Рекомендуемый размер файла до 10 МБ",or:"ИЛИ",pasteLabel:"Вставить текст напрямую",pastePlaceholder:"Вставьте текст романа сюда",chars:"симв.",tooShort:"Слишком короткий текст, рекомендуется не менее 100 символов",parsedChapters:"Распознано {count} глав",nextStep:"Далее",prevStep:"Назад",selectedInfo:"Выбрано: {count} симв. (Максимум 200 000)",eventAnalysis:"Анализ событий",saveAndAnalyze:"Сохранить текст и анализировать",col:{chapter:"Глава",reel:"Том",chapterName:"Название главы",chapterData:"Содержимое главы"},msg:{parseFailed:"Не удалось распознать файл. Загрузите заново",selectFile:"Выберите файл",docNotSupported:"Файлы .doc не поддерживают синтаксический анализ, конвертируйте их в файлы .ts.",unsupportedType:"Неподдерживаемый тип файла",fileTooLarge:"Файл больше 10 МБ. Загрузите файл меньшего размера",selectChapters:"Сначала выберите главы",saveSuccess:"Текст романа успешно сохранен"},importAdd:"Перетащите файлы сюда или нажмите, чтобы загрузить",limit:"Поддержка формата .ts"},editDialog:{title:"Редактировать текст романа",chapterName:"Название главы",chapterNamePh:"Введите название главы",eventContent:"Содержание события",eventContentPh:"Введите содержание события",chapterContent:"Содержимое главы",chapterContentPh:"Введите содержимое главы",cancel:"Отмена",save:"Сохранить",msg:{updateSuccess:"Текст романа успешно обновлен"}},event:{regenerate:"Перегенерировать события",batchDelete:"Пакетное удаление",noData:"Нет данных о событиях. Нажмите, чтобы начать генерацию",generate:"Сгенерировать события",generatingHint:"Генерация событий, пожалуйста, подождите...",loading:"Загрузка...",delete:"Удалить",col:{id:"ID события",eventName:"Название события",chapters:"Исходная глава",detail:"Детали события",createTime:"Время создания",operation:"Действие"},msg:{deleteHeader:"Удалить событие",deleteBody:"Вы уверены, что хотите удалить это событие?",deleteSuccess:"Успешно удалено",generateSuccess:"События успешно сгенерированы",batchDeleteHeader:"Пакетное удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} элементов?",batchDeleteSuccess:"Пакетное удаление завершено"}},analysis:{analyzeFirst:"Пожалуйста, сначала проанализируйте события",startAnalysis:"Начать анализ",chapterHeader:"Глава {index} - {name}",analyzing:"Анализ событий"}},scriptAgent:{inputPlaceholder:"Введите текст",chapterEvents:"События главы",clearMessageMemory:"Очистить память сообщений",clearSummaryMemory:"Очистить память сжатий",clearAllMemory:"Очистить всю память",edit:"Редактировать",storySkeleton:"Скелет истории",adaptationStrategy:"Стратегия адаптации",script:"Сценарий",noContent:"Нет содержимого",relatedAssets:"Связанные ассеты",editScript:"Редактировать сценарий",save:"Сохранить",scriptTitle:"Заголовок",titlePlaceholder:"Введите заголовок",content:"Содержимое",contentPlaceholder:"Введите текст сценария",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",selectAssetsTitle:"Выбор связанных ассетов",welcomeMsg:"Привет! Я ИИ-ассистент Toonflow. Хотите, чтобы я начал генерировать сценарий?",start:"Начать",memoryType:{message:"Память сообщений",summary:"Память сжатий",all:"Вся память"},msg:{clearConfirm:"Подтверждение очистки",clearBody:"Вы уверены, что хотите очистить {type}? Это действие необратимо.",confirmClear:"Очистить",cancel:"Отмена",memoryCleared:"{type} очищена",scriptUpdated:"Сценарий успешно обновлен",scriptUpdateFailed:"Не удалось обновить сценарий, попробуйте позже",searchScriptFailed:"Не удалось найти сценарии",updated:"Сохранено успешно.",error:"Сохранить не удалось",reconnect:"Восстановить соединение",notReconnect:"Подтвердить, что разговор при повторном подключении будет прерван?",keepReconnect:"подтверждать",deleteConfirm:"Удалить подтверждение",deleteBody:"Удалить текст",confirmDelete:"Подтвердить удаление",scriptDeleted:"Скрипт удален."},reconnect:"Восстановить соединение"},cornerScape:{batchSettings:"Пакетные настройки",quickActions:"Быстрые команды",selectUngenerated:"Выбрать несгенерированные",selectGenerated:"Выбрать сгенерированные",selectFailed:"Выбрать с ошибками",invertSelection:"Инвертировать выбор",clearSelection:"Снять выделение",batchPreview:"Пакетный предпросмотр",assetTypeFilter:"Фильтр по типу",genModel:"Модель генерации",resolution:"Разрешение",resolutionPh:"Выберите разрешение",concurrency:"Потоки",concurrencyPh:"Введите количество потоков",startBatch:"Начните генерировать изображения в пакетном режиме",waitingGen:"В очереди",generating:"Генерация",genFailed:"Ошибка генерации",imageError:"Ошибка изображения",typeRole:"Персонаж",typeScene:"Сцена",typeTool:"Предмет",typeUnknown:"Неизвестно",descriptionSuffix:"Описание: ",operateScriptFirst:"Пожалуйста, сначала обработайте сценарий",individualConfig:"Индивидуальные настройки",noImage:"Нет изображения",promptLabel:"Промпт",promptPh:"Введите промпт",aiPolish:"Улучшить с ИИ",regenerate:"Перегенерировать",filterRole:"Персонаж",filterScene:"Сцена",filterTool:"Предмет",unnamed:"Без имени",noDescription:"Нет описания",msg:{selectModel:"Выберите модель для генерации",selectResolution:"Выберите разрешение",enterPrompt:"Введите промпт",enterPromptFirst:"Сначала введите промпт",genSuccess:"{name} успешно сгенерирован",genFailed:"Ошибка генерации {name}",promptGenSuccess:"Промпт успешно сгенерирован",polishFailed:"Не удалось улучшить, попробуйте снова",selectAtLeastOne:"Выберите хотя бы один ассет для пакетной генерации",batchStarted:"Начата пакетная генерация. Всего: {count}, Потоков: {concurrent}",batchItemFailed:"Ошибка генерации {name}: {error}",batchComplete:"Пакетная генерация завершена",batchFailed:"Генерация пакета не удалась",replaceFailed:"Замена не удалась",replaceSuccess:"Замена прошла успешно",promptGenFail:"Не удалось создать быстрое слово.",saveSuccess:"Изменение слова подсказки успешно выполнено",saveFailed:"Изменение слова подсказки не удалось"},history:"исторические фотографии",confirmReplace:"Подтвердить замену",batchGenerationPrompt:"Генерируйте подсказки в пакетном режиме",generatingPrompt:"Создание",selectPromptEmpty:"Выбрать все подсказки. Слово пусто.",noEmptyPrompt:"Нет ресурсов с пустым словом-подсказкой.",selectedCount:"Выбрано {count} объектов"},script:{searchPlaceholder:"Поиск по названию сценария...",search:"Поиск",addScript:"Новый сценарий",cancelSelectAll:"Снять выбор со всех",selectAll:"Выбрать все",exportScript:"Экспорт сценария",msg:{searchFailed:"Не удалось найти сценарии",selectExport:"Сначала выберите сценарий для экспорта",exportSuccess:"Экспорт завершен",exportFailed:"Ошибка экспорта сценария",deleteHeader:"Подтверждение удаления",deleteBody:"Вы уверены, что хотите удалить этот сценарий? Это действие необратимо.",deleteConfirm:"Удалить",cancel:"Отмена",deleteSuccess:"Успешно удалено",deleteFailed:"Ошибка удаления",selectDelScript:"Пожалуйста, выберите удаление сценария",batchDeleteHeader:"Массовое удаление",batchDeleteBody:"Вы уверены, что хотите удалить выбранные {count} сценариев? Это действие необратимо.",batchDeleteSuccess:"Массовое удаление выполнено успешно",extractingInProgress:"Извлечение",projectNotFound:"Товар не найден",selectsExport:"Пожалуйста, выберите экспорт скрипта"},add:{title:"Добавить сценарий",scriptName:"Название сценария",scriptNamePh:"Введите название сценария",uploadFile:"Загрузить файл",dragUpload:"Перетащите файл сценария сюда или нажмите для загрузки",uploadHint:"Поддерживаются форматы .txt, .docx. Рекомендуемый размер файла до 10 МБ",scriptContent:"Текст сценария",scriptContentPh:"Загрузите или введите текст сценария...",relatedAssets:"Связанные ассеты",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",cancel:"Отмена",confirm:"ОК",msg:{fileReadFailed:"Ошибка чтения файла",docNotSupported:"Формат .doc не поддерживается. Конвертируйте в .txt или .docx",unsupportedType:"Неподдерживаемый тип файла",fileTooLarge:"Файл больше 10 МБ. Загрузите файл меньшего размера",parsing:"Распознавание файла...",parseFailed:"Не удалось распознать файл. Загрузите заново",selectAssetsTitle:"Выбор связанных ассетов",enterContent:"Пожалуйста, загрузите или введите текст сценария",enterName:"Пожалуйста, введите название сценария",addSuccess:"Сценарий успешно добавлен",addFailed:"Не удалось добавить сценарий, попробуйте позже"}},edit:{title:"Детали сценария",scriptName:"Название сценария",scriptNamePh:"Введите название сценария",scriptContent:"Текст сценария",scriptContentPh:"Введите текст сценария...",relatedAssets:"Связанные ассеты",selectAssets:"Выбрать ассеты",noAssets:"Нет связанных ассетов",msg:{selectAssetsTitle:"Выбор связанных ассетов",updateSuccess:"Сценарий успешно обновлен",updateFailed:"Не удалось обновить сценарий, попробуйте позже"}},deleteScript:"Удаление скриптов в пакетном режиме",extractAssets:""},assets:{addPrefix:"Добавить",batchGenerate:"Пакетная генерация",generatePrompt:"Сгенерировать промпт",generateImage:"Сгенерировать изображение",batchDelete:"Пакетное удаление",searchPlaceholder:"Поиск по названию ассета...",search:"Поиск",preview:"Предпросмотр",generate:"Генерация",edit:"Редактировать",delete:"Удалить",generating:"Генерация",play:"Воспроизведение",mediaPreview:"Предпросмотр медиа",confirmBatch:"Подтвердите {type}!",model:"Модель",resolution:"Разрешение",resolutionPh:"Выберите разрешение",batchGenPrompt:"Пакетная генерация промптов",batchGenImage:"Пакетная генерация изображений",role:"Персонаж",prop:"Предмет",scene:"Сцена",clip:"Клип",uploadSuccess:"Успешно загружено",selectAtLeastOne:"Выберите хотя бы один ассет",noDescription:"Нет описания",promptGenSuccess:"Промпт для «{name}» успешно сгенерирован",promptGenFail:"Ошибка генерации промпта для «{name}»: {error}",selectModel:"Пожалуйста, выберите модель",selectResolution:"Пожалуйста, выберите разрешение",noPromptForImage:"У «{name}» нет промпта; невозможно сгенерировать изображение",imageGenSuccess:"Изображение для «{name}» успешно сгенерировано",imageGenFail:"Ошибка генерации изображения для «{name}»: {error}",confirmDeleteHeader:"Подтверждение удаления",confirmBatchDeleteBody:"Вы уверены, что хотите удалить эти ассеты? Это действие необратимо.",confirmDeleteBody:"Вы уверены, что хотите удалить этот ассет? Это действие необратимо.",deleteBtn:"Удалить",cancelBtn:"Отмена",deleteSuccess:"Ассет успешно удален",deleteFail:"Не удалось удалить ассет",colPreview:"Превью",colName:"Название",colPrompt:"Промпт",colDescribe:"Описание",colRemark:"Примечание",colCreateTime:"Время создания",colOperation:"Действие",add:{name:"Название",namePh:"Введите название",describe:"Описание",describePh:"Введите описание",remark:"Примечание",remarkPh:"Введите примечание",prompt:"Промпт",promptPh:"Введите промпт",nameRequired:"Пожалуйста, введите название",describeRequired:"Пожалуйста, введите детали",remarkRequired:"Пожалуйста, введите примечание",updateSuccess:"Ассет успешно обновлен",addSuccess:"Ассет успешно добавлен"},gen:{header:"Генерация изображения",uploadRef:"Загрузить референс",optional:"Необязательно",promptLabel:"Промпт",smartGenerate:"Смарт-генерация",generatingPrompt:"Умная генерация промпта...",promptPlaceholder:"Опишите изображение, которое хотите сгенерировать. Например: футуристичный город будущего, неоновые огни, киберпанк...",selectModel:"Выбрать модель",selectResolution:"Выбрать разрешение",generateBtn:"Сгенерировать",resultTitle:"Результаты",generatedCount:"Сгенерировано {count} шт. Пожалуйста, выберите одно",generatingLabel:"Генерация...",genFailed:"Ошибка генерации",confirmSelect:"Подтвердить выбор",promptSuccess:"Промпт успешно сгенерирован",promptFail:"Ошибка генерации промпта",fillPrompt:"Пожалуйста, введите промпт",pickResolution:"Пожалуйста, выберите разрешение",pickModel:"Пожалуйста, выберите модель",unnamed:"Без имени",assetGenSuccess:"Ассет успешно сгенерирован",assetGenFail:"Ошибка генерации ассета",uploadOk:"Успешно загружено",imageSelected:"Изображение выбрано",imageDeleted:"Изображение удалено",imageSaved:"Изображение сохранено",completed:"Завершенный"},batch:{header:"Пакетная генерация",selected:"Выбрано {count} шт.",selectAll:"Выбрать все",clearSelection:"Очистить выбор",inputPh:"Введите текст",saveSelected:"Сохранить выбранное ({count})",colPreviewImg:"Превью",selectToSave:"Выберите элементы для сохранения",saveSuccess:"Успешно сохранено",saveFail:"Ошибка сохранения, попробуйте снова",promptDone:"Генерация промптов завершена",promptFail:"Ошибка генерации промптов",missingPrompts:"{count} ассетов не имеют промптов. Сначала сгенерируйте промпты",imageDone:"Генерация изображений завершена",imageGenFail:"Ошибка генерации изображений",unknownError:"Неизвестная ошибка",promptGenCancelled:"Генерация отменена"}},production:{selectPlaceholder:"Выберите эпизод",edit:"Редактировать",node:{script:{title:"Сценарий",editDialog:"Редактировать сценарий"},scriptPlan:{title:"План съемок",editDialog:"Редактировать план съемок"},storyboard:{title:"Панель раскадровки",notGenerated:"Не сгенерировано",scaleRatio:"Масштаб",gridPreview:"Просмотр сеткой",noPreviewImages:"Нет изображений для предпросмотра",imageLoadFailed:"Не удалось загрузить изображение",promptPlaceholder:"Пожалуйста, введите слово-подсказку",prompt:"подсказать слово",editInfo:"Подскажите изменение слова"},storyboardTable:{title:"Таблица раскадровки",editDialog:"Редактировать таблицу раскадровки"},assets:{title:"Производные ассеты",generateFailed:"Ошибка генерации",notGenerated:"Не сгенерировано",originalAsset:"Оригинал",derived:"Производные",noDerivedAssets:"Нет производных ассетов"},poster:{title:"Обложка видео",coverCount:"{count} шт."},workbench:{title:"Рабочий стол видео"}},editImage:{upload:"Загрузить",generate:"Сгенерировать",saveFailed:"Ошибка сохранения, попробуйте снова",fetchFailed:"Не удалось получить данные",generating:"Генерация...",deleteNode:"Удалить узел",ratio:"Соотношение",quality:"Качество",generateBtn:"Сгенерировать изображение",selectImage:"Выбрать изображение",imageGeneration:"Генерация изображения",promptPlaceholder:"Опишите изображение, которое хотите сгенерировать...",imageRef:"Изображение {index}",noReferences:"Нет доступных референсов",selectModel:"Сначала выберите модель",selectQuality:"Выберите качество",selectRatio:"Выберите соотношение",generateFailed:"Ошибка генерации",generateFirst:"Сначала сгенерируйте изображение",generatedResult:"Результаты",waitingGenerate:"В очереди",layoutLR:"Авторазметка - горизонтально",layoutTB:"Авторазметка - вертикально",uploadAssetImage:"Загрузить изображение ресурса",uploadStoryboardImage:"Загрузить изображение раскадровки",uploadImage:"Загрузка изображения объекта",mode:"модель",closeConfirmTitle:"Закрыть панель редактирования?",closeConfirmBody:"Несохраненные данные будут потеряны после закрытия."},save:"Выбирать",cancel:"Отмена",chatBox:{inputPlaceholder:"Введите сообщение...",generateDerivedAssets:"Сгенерировать производные ассеты",welcomeMessage:"Привет! Я ваш ИИ-ассистент. Чем могу помочь?",adjustModel:"Настроить модель",startMakingVideo:"Начать создание видео",startMakingVideoPrompt:"Пожалуйста, помоги мне начать создание видео",clearMessageMemory:"Очистить память сообщений",clearSummaryMemory:"Очистить память сжатий",clearAllMemory:"Очистить всю память",messageMemory:"Память сообщений",summaryMemory:"Память сжатий",allMemory:"Вся память",confirmClear:"Очистить память",confirmClearBody:"Вы уверены, что хотите очистить {type}?",confirmClearBtn:"Подтвердить очистку",memoryCleared:"{type} очищена"},wb:{quickPreview:"Быстрый предпросмотр",videoGeneration:"Раскадровка",videoEditing:"монтажный стол",hint:"Подсказка",extractLines:"Извлечь реплики из видео?",no:"Нет",confirm:"Да",extractLinesQuestion:"Хотите извлечь диалоги из видео в качестве субтитров?",importingLoading:"Импорт, пожалуйста, подождите...",mainTrackVideo:"Основная дорожка (Видео)",subtitle1:"Субтитры 1",storyboardVideoName:"Видео раскадровки-{storyboard}.mp4"},preview:{noImage:"Нет изображения",storyboardDesc:"Описание раскадровки",serialNumber:"№",noDescription:"Нет описания",duration:"Длит.",seconds:"с",relatedAssets:"Связанные ассеты",role:"Персонаж",prop:"Предмет",scene:"Сцена",noCharacters:"Без персонажей",imagePrompt:"Промпт изображения",selectAll:"Выбрать все",exportImage:"Экспорт изображений",sceneDescription:"Описание кадра",promptLabel:"Промпт",restoreSort:"Сбросить сортировку",restoreSortConfirm:"Вы уверены, что хотите вернуть исходную сортировку?",tip:"Подсказка",selectAtLeastOne:"Пожалуйста, выберите хотя бы один кадр для экспорта",exportFilename:"Раскадровки изображений"},generate:{noVideo:"Нет видео",videoPrompt:"Промпт видео",promptPlaceholder:"Введите слова-подсказки, описывающие видеоконтент, который вы хотите создать...",refImage:"Референс",image:"Изображение",refVideo:"Референс видео",refImageLabel:"Референс изображения",refAudio:"Референс аудио",muteAudio:"Выключить звук",enableAudio:"Включить звук",resolution:"Разрешение",duration:"Длит.",generate:"Сгенерировать",historyVersions:"История версий",confirmSelection:"Подтвердить выбор",noHistory:"Нет истории",generating:"Генерация",generateFailed:"Ошибка генерации",selectAll:"Выбрать все",videoTrack:"Видеодорожка",batchGenerate:"Пакетная генерация",importToEditor:"Импорт в редактор",modeSingleImage:"Одно изображение",modeMultiImage:"Много изображений",modeGridImage:"Сетка изображений",modeStartEnd:"Первый и последний кадры",modeText:"Текст в видео",modeVideoRef:"По видео-референсу",modeImageRef:"По изображению",modeAudioRef:"По аудио-референсу",modeTextRef:"По тексту",startFrame:"Первый кадр",startFrameOptional:"Первый кадр (Необязательно)",endFrame:"Последний кадр",endFrameOptional:"Последний кадр (Необязательно)",selectRefImage:"Выбрать референс",selectRefImages:"Выбрать референсы",selectEndFrame:"Выбрать последний кадр",selectRefVideoAsset:"Выбрать видео-референс",selectRefAudioAsset:"Выбрать аудио-референс",selectRefImageAsset:"Выбрать изображение-референс",selectImageSource:"Выбрать источник изображения",fromStoryboard:"Раскадровка",fromStoryboardDesc:"Выбрать изображение из раскадровки",fromAssets:"Ресурс",fromAssetsDesc:"Выбрать изображение из библиотеки ресурсов",confirmDelete:"Подтверждение удаления",confirmDeleteBody:"Вы уверены, что хотите удалить это видео? Это действие необратимо.",delete:"Удалить",cancel:"Отмена",deleteSuccess:"Видео успешно удалено",deleteFailed:"Ошибка удаления",selectVideoFirst:"Пожалуйста, сначала выберите видео",confirmSuccess:"Выбор подтвержден",batchSubmitted:"Запрос на пакетную генерацию отправлен. В обработке...",configNotFound:"Конфигурация не найдена",pollingFailed:"Не удалось выполнить запрос статуса видео. Обновите вручную.",batchGeneratePrompt:"Генерируйте подсказки в пакетном режиме",batchPromptEmpty:"Раскадровка {name} доступна для видеоподсказок. Пожалуйста, сначала создайте или заполните приглашение",modelEmpty:"Сначала выберите модель создания видео",generatingPrompt:"Интеллектуальное генерирование подсказок"},editVideo:{reset:"Сброс",undo:"Отменить",redo:"Повторить",split:"Разделить",delete:"Удалить",rendering:"Рендеринг...",exportVideo:"Экспорт видео",exportSuccess:"Экспорт видео завершен",exportFailed:"Ошибка экспорта",sampleSubtitle:"Пример текста субтитров",customText:"Пользовательский текст",transitionBetweenClips:"Переходы должны добавляться между двумя соседними клипами",transitionExists:"Переход уже существует в этом месте",videoPreviewArea:"Область предпросмотра",clipMaterials:"Материалы клипа",propertyPanel:"Панель свойств",selectClip:"Выберите клип для просмотра свойств",basicInfo:"Основная информация",name:"Название",clipNamePlaceholder:"Название клипа",startTime:"Начало",endTime:"Конец",totalDuration:"Общая длительность",videoProperties:"Свойства видео",opacity:"Непрозрачность",volume:"Громкость",playbackSpeed:"Скорость",audioProperties:"Свойства аудио",fadeIn:"Плавное появление",fadeOut:"Плавное затухание",transitionProperties:"Свойства перехода",transitionType:"Тип перехода",transFade:"Затухание",transSlide:"Сдвиг",transWipe:"Вытеснение",transDissolve:"Растворение",transZoom:"Масштаб",transRotate:"Вращение",transitionDuration:"Длительность перехода",subtitleProperties:"Свойства субтитров",textContent:"Текст",fontSize:"Размер шрифта",copy:"Копировать",deleteConfirm:"Подтверждение удаления",deleteClipConfirm:"Вы уверены, что хотите удалить этот клип?",avCanvasNotInit:"AVCanvas не инициализирован",noExportContent:"Нет содержимого для экспорта",exportProject:"Экспорт проекта",transitionAdded:"Переход добавлен: {name}",splitClip:"Разделить клип",deleteClip:"Удалить клип",addClip:"Добавить {name}",duplicateClip:"Дублировать клип",addTransition:"Добавить переход",updateClip:"Обновить клип {key}",updatePlaybackRate:"Изменить скорость на {rate}x",updateTransitionDuration:"Обновить длительность перехода",playbackRateRange:"Скорость воспроизведения должна быть от 0.1 до 10",updatePlaybackRateFailed:"Ошибка изменения скорости:",importProject:"Импорт проекта",import:"Импорт"},clipType:{video:"Видео",audio:"Аудио",subtitle:"Субтитры",transition:"Переход",sticker:"Стикер",filter:"Фильтр",effect:"Эффект"},track:{video:"Видео",image:"Изображение",audio:"Аудио",subtitle:"Субтитры",text:"Текст",sticker:"Стикер",filter:"Фильтр",effect:"Эффект"},transition:{fade:"Затухание",slide:"Сдвиг",slideLeft:"Сдвиг влево",slideRight:"Сдвиг вправо",slideUp:"Сдвиг вверх",slideDown:"Сдвиг вниз",wipe:"Вытеснение",wipeLeft:"Вытеснение влево",wipeRight:"Вытеснение вправо",wipeUp:"Вытеснение вверх",wipeDown:"Вытеснение вниз",dissolve:"Растворение",zoom:"Масштаб",zoomIn:"Приближение",zoomOut:"Отдаление",rotate:"Вращение",circle:"Круг",diamond:"Ромб",clock:"Часы",blur:"Размытие"},media:{titleText:"Текст заголовка",subtitleText:"Текст субтитров",customText:"Пользовательский текст",media:"Медиа",image:"Изображение",audio:"Аудио",subtitle:"Субтитры",transition:"Переход",effect:"Эффект",filter:"Фильтр",loading:"Загрузка...",subtitlePreview:"Т",video:"видео"},effect:{fadeIn:"Появление",fadeOut:"Затухание",flash:"Вспышка",shake:"Тряска",zoomIn:"Приближение (эффект)",zoomOut:"Отдаление (эффект)",pulse:"Пульсация",rotateIn:"Вращение (вход)",sticker1:"Стикер 1",sticker2:"Стикер 2"},filter:{grayscale:"Ч/Б",sepia:"Сепия",warm:"Теплый",cool:"Холодный",vivid:"Яркий",bright:"Светлый",highContrast:"Контрастный",blur:"Размытие",invert:"Инверсия",semiTransparent:"Полупрозрачный"},guideSwitchEpisode:"Переключение эпизодов",guideSwitchEpisodeBody:"Переключение эпизодов перенесено сюда!",autoLayoutLR:"Автоматический набор текста — левая и правая раскладка",autoLayoutTB:"Автоматический набор текста — верхняя и нижняя раскладка",getFlowData:"Обновить рабочую область",confirm:"Подтверждение переключения эпизода",confirmEpisodesSwitch:"Текущая задача все еще находится в стадии выполнения. Переключение эпизодов приведет к переподключению сеанса. Продолжить переключение?"},task:{title:"Список задач",subtitle:"История выполнения ваших задач",refresh:"Обновить",categoryLabel:"Категория:",stateLabel:"Статус:",noFailReason:"Нет причины ошибки",stateAll:"Все",stateRunning:"В процессе",stateCompleted:"Завершено",stateFailed:"Ошибка",fetchFailed:"Не удалось получить список задач",col:{taskClass:"Категория задачи",relatedObjects:"Связанные объекты",model:"Модель",describe:"Описание",state:"Статус",startTime:"Время",reason:"Причина неудачи"},project:"Название проекта:"},noVideo:"Видео пока нет",prompt:"Видео слова-подсказки",generateText:"ИИ генерировал слова-подсказки",selectStoryboard:"Выберите раскадровку",generate:{noVideo:"Видео пока нет",generateText:"ИИ генерировал слова-подсказки",selectStoryboard:"Выберите раскадровку",generate:"Создать видео",history:"Историческая версия",generating:"Создание",generateFailed:"неудача",selectAll:"Выбрать все",selected:"Выбрано",batchGenerateText:"Генерируйте подсказки в пакетном режиме",batchGenerateVideo:"Генерируйте видео в пакетном режиме",importVideo:"Импортировать в редакторский стол",emptyTrack:"Абзац {индекс 1}",del:"удалить",delConfirm:"Вы уверены, что хотите удалить этот абзац?",selectSource:"Выберите источник",confirm:"Выбрать из активов",cancel:"Выбрать из раскадровки",selectVideoFailed:"Не удалось выбрать видео.",selectVideoSuccess:"Видео выбрано успешно",selectTrackFirst:"Пожалуйста, сначала выберите раскадровку",noSelectedVideo:"Видео не выбрано",generateConfirm:"Подтвердить генерацию",generateConfirmBody:"Подтвердите создание видео",generateVideosInBatches:"Генерируйте видео в пакетном режиме",generateStarted:"Начало сборки",promptEmpty:"Проверьте данные, необходимые для создания видео, и слово подсказки пусто. Хотите ли вы продолжить его создание?",skipDataWithEmptyVideoPromptWords:"Видеоданные, которые необходимо сгенерировать, существуют, а слово подсказки пусто.",duration:"продолжительность",resolution:"разрешение",delVideo:"Подтвердить удаление этого видео?",delSuccess:"Удалить успешно",addReference:"добавить ссылку",promptPlaceholder:"Пожалуйста, введите слово-подсказку к видео",downloadVideo:"Скачивайте видео партиями",selectVideo:"Пожалуйста, проверьте видео, которое вы хотите скачать"}},MSi={slogan:"Умная платформа для создания коротких драм",tips:"Аккаунт по умолчанию: admin / admin123",settings:"Настройки сервера",requestAddress:"URL запроса",username:"Имя пользователя",password:"Пароль",login:"Войти",usernameRequired:"Пожалуйста, введите имя пользователя",passwordRequired:"Пожалуйста, введите пароль",enterUsernameAndPassword:"Пожалуйста, введите имя пользователя или пароль",loginSuccess:"Успешный вход",settingsSaved:"Настройки сохранены"},PSi={cancel:"Отмена",confirm:"Подтвердить",selectAssets:"Выбрать ресурсы",sessionExpired:"Сессия истекла, пожалуйста, войдите снова",openSettings:"Открыть настройки",defaultReel:"Основной том",save:"сохранять",submitting:"Отправка",editSuccess:"Модификация прошла успешно",editFailed:"Модификация не удалась",submit:"представлять на рассмотрение"},FSi={prompt:"подсказать слово"},NSi={welcomeTitle:"Добро пожаловать в ToonFlow",welcomeDesc:"Платформа рабочего процесса создания комиксов, управляемая искусственным интеллектом, давайте потратим минуту, чтобы завершить первоначальную настройку.",startConfig:"Начать настройку",skip:"Пропустить загрузку",configModel:"Добавить модельный сервис",configData:"Настроить агент",startUse:"Начать",configModelTitle:"Добавить поставщика услуг модели",configModelDesc:"Сначала вам необходимо добавить в настройках хотя бы одного поставщика услуг модели ИИ (например, OpenAI, Claude и т. д.) и заполнить соответствующий ключ API.",configModelTip:"Нажатие кнопки ниже откроет вкладку «Сервис модели» на странице настроек. После добавления поставщика вернитесь сюда, чтобы продолжить.",configModelBtn:"Перейти к настройке сервиса модели",configAgentTitle:"Назначить модель агента",configAgentDesc:"Затем назначьте модели каждому функциональному модулю в конфигурации агента, чтобы система знала, какую модель вызывать для выполнения задачи.",configAgentTip:"Нажатие кнопки ниже откроет вкладку «Конфигурация агента» на странице настроек. Вернитесь сюда после назначения моделей каждой функции.",configAgentBtn:"Перейти к настройке агента",finishTitle:"🎉Все готово!",finishDesc:"Настройка завершена, и теперь вы можете начать использовать все функции. Если вам нужно его настроить, вы можете изменить его в настройках в любое время.",qrcodeLabel:"Присоединяйтесь к группе общения WeChat, чтобы получить дополнительную помощь:",githubLabel:"Если вы найдете это полезным, пожалуйста, поставьте нам ⭐ Звезду!",prevStep:"Предыдущий шаг",nextStep:"Следующий шаг",finish:"Начать"},USi={skillManagement:{search:"Поиск по имени файла",empty:"Нет подходящих файлов",edit:"редактировать",selectOnTheLeft:"Пожалуйста, выберите файл слева"}},jSi={assets:{notExist:"Актив не существует",notDerivativeExist:"Производные активы не существуют",derivativeUpdateSuccess:"Обновление успешно выполнено",derivativeState:"Не создано",derivativeAddSuccess:"Добавлено успешно",derivativeDelSuccess:"Удалить успешно",notGenerated:"Не создано"},addSuccess:"Обновление успешно выполнено",state:{unused:"Не создано"},saveSuccess:"Добавлено успешно"},WSi={generating:"Создание"},VSi={scanning:"🔍 Парсинг и загрузка навыков",scanComplete:"✨ Сканирование Skill завершено",inserted:"✅ Добавлено {count} навыков",updated:"🔄 Обновлено {count} Skill",removed:"🗑️ Удалено {count} Skill",scannedFiles:"📁 Просканировано {count} файлов",noDescription:"📝 {count} Skill без описания",noAttribution:"👤 {count} Skill без атрибуции",configWarning:"⚠️ Предупреждение конфигурации Skill",openSettings:"Открыть настройки",scanFailed:"❌ Сканирование не удалось",checkNetwork:"🔌 Проверьте сетевое подключение или повторите попытку позже",retryLater:"🔁 Повторите попытку позже"},zSi="Создать видео",HSi="Историческая версия",$Si="Создание",XSi="неудача",GSi="Выбрать все",YSi="Выбрано",ZSi="Импортировать видео",qSi="Абзац {индекс 1}",KSi="Подтвердить удаление",JSi="Вы уверены, что хотите удалить этот абзац?",e8i="Выберите источник",t8i="Выбрать из активов",n8i="Выбрать из раскадровки",i8i={newVersion:"Вышла новая версия, хотите ее обновить?"},r8i={components:BSi,settings:RSi,workbench:ISi,login:MSi,common:PSi,"components.storyboardImageCheck.camera":"Камера","components.storyboardImageCheck.dialogTitle":"Выбрать изображение раскадровки","components.storyboardImageCheck.preview":"Предпросмотр","components.storyboardImageCheck.src":"Предпросмотр изображения","components.storyboardImageCheck.title":"Заголовок","components.storyboardImageCheck.duration":"Длительность","components.storyboardImageCheck.lines":"Реплики","components.storyboardImageCheck.createTime":"Дата создания","workbench.script.extractAssets":"Извлечь ресурсы",promptManage:FSi,hello:NSi,setting:USi,storyboard:jSi,productionAgent:WSi,skillScan:VSi,generate:zSi,history:HSi,generating:$Si,generateFailed:XSi,selectAll:GSi,selected:YSi,importVideo:ZSi,emptyTrack:qSi,del:KSi,delConfirm:JSi,selectSource:e8i,confirm:t8i,cancel:n8i,"workbench.script.msg.exportFailed":"Экспорт не удался","workbench.production.node.assets.confirmDeleteBody":"Подтвердите, следует ли удалить объект","workbench.production.node.assets.removeFailed":"Не удалось удалить объект.",version:i8i,"workbench.production.generatedNode.localUpload":"Локальная загрузка","workbench.production.editImage.uploadFailed":"Не удалось загрузить изображение.","workbench.production.editImage.noImage":"Пожалуйста, сначала добавьте фотографии"},GZe=[{label:"简体中文",tips:"Chinese (Simplified)",value:"zh-CN"},{label:"繁體中文",tips:"Chinese (Traditional)",value:"zh-TW"},{label:"English",tips:"English",value:"en"},{label:"ไทย",tips:"Thai",value:"th-TH"},{label:"Tiếng Việt",tips:"Vietnamese",value:"vi-VN"},{label:"日本語",tips:"Japanese",value:"ja-JP"},{label:"Русский",tips:"Russian",value:"ru-RU"}],yW=q4e("locale","zh-CN"),dOn=syi({legacy:!1,locale:yW.value,fallbackLocale:"en",messages:{"zh-CN":hCi,"zh-TW":FCi,en:c_i,"th-TH":R_i,"vi-VN":sSi,"ja-JP":DSi,"ru-RU":r8i}}),qse=lOn("theme-setting",{mode:"light",primaryColor:"#000"}),o8i=e=>{const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return{h:0,s:0,l:0};const n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,o=parseInt(t[3],16)/255,s=Math.max(n,r,o),a=Math.min(n,r,o),l=(s+a)/2;let d=0,u=0;if(s!==a){const h=s-a;u=l>.5?h/(2-s-a):h/(s+a),s===n?d=((r-o)/h+(r{t/=100,n/=100;const r=(1-Math.abs(2*n-1))*t,o=r*(1-Math.abs(e/60%2-1)),s=n-r/2;let a=0,l=0,d=0;e<60?[a,l,d]=[r,o,0]:e<120?[a,l,d]=[o,r,0]:e<180?[a,l,d]=[0,r,o]:e<240?[a,l,d]=[0,o,r]:e<300?[a,l,d]=[o,0,r]:[a,l,d]=[r,0,o];const u=h=>Math.round((h+s)*255).toString(16).padStart(2,"0");return`#${u(a)}${u(l)}${u(d)}`},a8i=e=>{const{h:t,s:n,l:r}=o8i(e);return[97,92,85,75,62,r,Math.max(r-12,20),Math.max(r-24,15),Math.max(r-36,10),Math.max(r-48,5)].map(s=>s8i(t,n,s))},l8i=e=>{const t=e==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;t==="dark"?document.documentElement.setAttribute("theme-mode","dark"):document.documentElement.removeAttribute("theme-mode"),t==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},A1t=e=>{const t=document.documentElement,n=a8i(e),r=t.getAttribute("theme-mode")==="dark";(r?[...n].reverse():n).forEach((s,a)=>t.style.setProperty(`--td-brand-color-${a+1}`,s)),["","-hover:5","-focus:2","-active:7","-disabled:3","-light:1","-light-hover:2"].forEach(s=>{const[a,l]=s.split(":");t.style.setProperty(`--td-brand-color${a}`,l?`var(--td-brand-color-${l})`:"var(--td-brand-color-6)")}),t.style.setProperty("--td-text-color-brand",`var(--td-brand-color-${r?8:7})`),t.style.setProperty("--td-text-color-link","var(--td-brand-color-8)")},c8i=(e,t)=>{if(!document.startViewTransition){t();return}const n=window.innerWidth/2,r=window.innerHeight/2,o=Math.hypot(Math.max(n,window.innerWidth-n),Math.max(r,window.innerHeight-r)),s=document.documentElement;s.style.setProperty("--x",`${n}px`),s.style.setProperty("--y",`${r}px`),s.style.setProperty("--r",`${o}px`),document.startViewTransition(t)},d8i=()=>{l8i(qse.value.mode),A1t(qse.value.primaryColor),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{qse.value.mode==="auto"&&c8i(void 0,()=>{(e.matches?"dark":"light")==="dark"?(document.documentElement.setAttribute("theme-mode","dark"),document.documentElement.classList.add("dark")):(document.documentElement.removeAttribute("theme-mode"),document.documentElement.classList.remove("dark")),A1t(qse.value.primaryColor)})})},u8i=e=>{const t=typeof e;return t!=="function"&&t!=="object"||e===null},h8i=e=>{const t=e.flags===""?void 0:e.flags;return new RegExp(e.source,t)},pG=(e,t=new WeakMap)=>{if(e===null||u8i(e))return e;if(t.has(e))return t.get(e);if(e instanceof RegExp)return h8i(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof Function)return e;if(e instanceof Map){const r=new Map;return t.set(e,r),e.forEach((o,s)=>{r.set(s,pG(o,t))}),r}if(e instanceof Set){const r=new Set;t.set(e,r);for(const o of e)r.add(pG(o,t));return r}if(Array.isArray(e)){const r=[];return t.set(e,r),e.forEach(o=>{r.push(pG(o,t))}),r}const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=pG(e[r],t));return n},uOn=(e,t=200)=>{let n=0;return(...r)=>new Promise(o=>{n&&(clearTimeout(n),o("cancel")),n=window.setTimeout(()=>{e.apply(void 0,r),n=0,o("done")},t)})},f8i=(e,t={_blank:!0,nofollow:!0})=>{const n=document.createElement("a");n.href=e,t._blank&&(n.target="_blank"),t.nofollow&&(n.rel="noopener noreferrer"),n.click()},YZe=()=>{let e=-1;return(t,n,r,o=100)=>{const s=()=>{r&&(typeof o=="number"?setTimeout(r,o):r())};e!==-1&&(cancelAnimationFrame(e),s());let a=t.scrollTop;const l=()=>{e=-1;const d=n-a;a=a+d/5,Math.abs(d)<1?(t.scrollTo(0,n),s()):(t.scrollTo(0,a),e=requestAnimationFrame(l))};e=requestAnimationFrame(l)}},g8i=(e,t=200)=>{let n=0,r=null;const o=s=>{n===0&&(n=s),s-n>=t?(e.apply(void 0,r),r=null,n=0):window.requestAnimationFrame(o)};return(...s)=>{r===null&&window.requestAnimationFrame(o),r=s}},m8i=e=>{const t=n=>{const{scrollHeight:r,scrollWidth:o,offsetHeight:s,offsetWidth:a,scrollLeft:l,scrollTop:d}=e,u=n.x,h=n.y,g=v=>{const f=d+h-v.y,k=l+u-v.x,A=r-s,p=o-a,b={};k>=0&&k<=p&&(b.left=k),f>=0&&f<=A&&(b.top=f),e.scroll(b)};document.addEventListener("mousemove",g);const m=()=>{document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",m)};document.addEventListener("mouseup",m)};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},AMe=()=>`${Date.now().toString(36)}${Math.random().toString(36).substring(2)}`,gge=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),K4e=(e,t,n={})=>{if(Array.isArray(e)&&Array.isArray(t))return pMe(e,t,n);const{excludeKeys:r}=n;for(const o in t){const s=t[o],a=e[o];r&&r(o)?e[o]=s:Array.isArray(s)&&Array.isArray(a)?e[o]=pMe(a,s,n):gge(s)&&gge(a)?e[o]=K4e(a,s,n):e[o]=s}return e},pMe=(e,t,n)=>{const r=e.slice();return t.forEach((o,s)=>{const a=r[s];Array.isArray(o)&&Array.isArray(a)?r[s]=pMe(a,o,n):gge(o)&&gge(a)?r[s]=K4e(a,o,n):r[s]=o}),r},kt="md-editor",k8i="MdEditor",Zc="https://unpkg.com",v8i=`${Zc}/@highlightjs/cdn-assets@11.11.1/highlight.min.js`,p1t={main:`${Zc}/prettier@3.8.1/standalone.js`,markdown:`${Zc}/prettier@3.8.1/plugins/markdown.js`},A8i={css:`${Zc}/cropperjs@1.6.2/dist/cropper.min.css`,js:`${Zc}/cropperjs@1.6.2/dist/cropper.min.js`},p8i=`${Zc}/screenfull@5.2.0/dist/screenfull.js`,b8i=`${Zc}/mermaid@11.12.3/dist/mermaid.min.js`,w8i={js:`${Zc}/katex@0.16.33/dist/katex.min.js`,css:`${Zc}/katex@0.16.33/dist/katex.min.css`},bMe={a11y:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/a11y-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/a11y-dark.min.css`},atom:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/atom-one-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/atom-one-dark.min.css`},github:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/github.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/github-dark.min.css`},gradient:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/gradient-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/gradient-dark.min.css`},kimbie:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/kimbie-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/kimbie-dark.min.css`},paraiso:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/paraiso-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/paraiso-dark.min.css`},qtcreator:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/qtcreator-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/qtcreator-dark.min.css`},stackoverflow:{light:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/stackoverflow-light.min.css`,dark:`${Zc}/@highlightjs/cdn-assets@11.11.1/styles/stackoverflow-dark.min.css`}},O8i=`${Zc}/echarts@6.0.0/dist/echarts.min.js`,hOn=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","link","image","table","mermaid","katex","-","revoke","next","save","=","prettier","pageFullscreen","fullscreen","preview","previewOnly","htmlPreview","catalog","github"],fOn=["markdownTotal","=","scrollSwitch"],b1t={"zh-CN":{toolbarTips:{bold:"加粗",underline:"下划线",italic:"斜体",strikeThrough:"删除线",title:"标题",sub:"下标",sup:"上标",quote:"引用",unorderedList:"无序列表",orderedList:"有序列表",task:"任务列表",codeRow:"行内代码",code:"块级代码",link:"链接",image:"图片",table:"表格",mermaid:"mermaid图",katex:"katex公式",revoke:"后退",next:"前进",save:"保存",prettier:"美化",pageFullscreen:"浏览器全屏",fullscreen:"屏幕全屏",preview:"预览",previewOnly:"仅预览",htmlPreview:"html代码预览",catalog:"目录",github:"源码地址"},titleItem:{h1:"一级标题",h2:"二级标题",h3:"三级标题",h4:"四级标题",h5:"五级标题",h6:"六级标题"},imgTitleItem:{link:"添加链接",upload:"上传图片",clip2upload:"裁剪上传"},linkModalTips:{linkTitle:"添加链接",imageTitle:"添加图片",descLabel:"链接描述:",descLabelPlaceHolder:"请输入描述...",urlLabel:"链接地址:",urlLabelPlaceHolder:"请输入链接...",buttonOK:"确定"},clipModalTips:{title:"裁剪图片上传",buttonUpload:"上传"},copyCode:{text:"复制代码",successTips:"已复制!",failTips:"复制失败!"},mermaid:{flow:"流程图",sequence:"时序图",gantt:"甘特图",class:"类图",state:"状态图",pie:"饼图",relationship:"关系图",journey:"旅程图"},katex:{inline:"行内公式",block:"块级公式"},footer:{markdownTotal:"字数",scrollAuto:"同步滚动"}},"en-US":{toolbarTips:{bold:"bold",underline:"underline",italic:"italic",strikeThrough:"strikeThrough",title:"title",sub:"subscript",sup:"superscript",quote:"quote",unorderedList:"unordered list",orderedList:"ordered list",task:"task list",codeRow:"inline code",code:"block-level code",link:"link",image:"image",table:"table",mermaid:"mermaid",katex:"formula",revoke:"revoke",next:"undo revoke",save:"save",prettier:"prettier",pageFullscreen:"fullscreen in page",fullscreen:"fullscreen",preview:"preview",previewOnly:"preview only",htmlPreview:"html preview",catalog:"catalog",github:"source code"},titleItem:{h1:"Lv1 Heading",h2:"Lv2 Heading",h3:"Lv3 Heading",h4:"Lv4 Heading",h5:"Lv5 Heading",h6:"Lv6 Heading"},imgTitleItem:{link:"Add Image Link",upload:"Upload Images",clip2upload:"Crop And Upload"},linkModalTips:{linkTitle:"Add Link",imageTitle:"Add Image",descLabel:"Desc:",descLabelPlaceHolder:"Enter a description...",urlLabel:"Link:",urlLabelPlaceHolder:"Enter a link...",buttonOK:"OK"},clipModalTips:{title:"Crop Image",buttonUpload:"Upload"},copyCode:{text:"Copy",successTips:"Copied!",failTips:"Copy failed!"},mermaid:{flow:"flow",sequence:"sequence",gantt:"gantt",class:"class",state:"state",pie:"pie",relationship:"relationship",journey:"journey"},katex:{inline:"inline",block:"block"},footer:{markdownTotal:"Character Count",scrollAuto:"Scroll Auto"}}},dh={editorExtensions:{highlight:{js:v8i,css:bMe},prettier:{standaloneJs:p1t.main,parserMarkdownJs:p1t.markdown},cropper:{...A8i},screenfull:{js:p8i},mermaid:{js:b8i,enableZoom:!0},katex:{...w8i},echarts:{js:O8i}},editorExtensionsAttrs:{},editorConfig:{languageUserDefined:{},mermaidTemplate:{},renderDelay:500,zIndex:2e4},codeMirrorExtensions:e=>e,markdownItConfig:()=>{},markdownItPlugins:e=>e,mermaidConfig:e=>e,katexConfig:e=>e,echartsConfig:e=>e},y8i=e=>K4e(dh,e,{excludeKeys(t){return/[iI]{1}nstance/.test(t)}}),Kse=.1,_0=({instance:e,ctx:t,props:n={}},r="default")=>{const o=(e==null?void 0:e.$slots[r])||(t==null?void 0:t.slots[r]);return(o?o(e):"")||n[r]},C8i={overlay:{type:[String,Object],default:""},visible:{type:Boolean,default:!1},onChange:{type:Function,default:()=>{}},relative:{type:String,default:"html"},disabled:{type:Boolean,default:void 0}},Tz=Je({name:`${kt}-dropdown`,props:C8i,setup(e,t){const n=`${kt}-dropdown-hidden`,r=hs({overlayClass:[n],overlayStyle:{},triggerHover:!1,overlayHover:!1}),o=fe(),s=fe(),a=()=>{var y,C;if(e.disabled)return!1;r.triggerHover=!0;const h=o.value,g=s.value;if(!h||!g)return;const m=h.getBoundingClientRect(),v=h.offsetTop,f=h.offsetLeft,k=m.height,A=m.width,p=h.getRootNode(),b=((y=p.querySelector(e.relative))==null?void 0:y.scrollLeft)||0,w=((C=p.querySelector(e.relative))==null?void 0:C.clientWidth)||0;let O=f-g.offsetWidth/2+A/2-b;O+g.offsetWidth>b+w&&(O=b+w-g.offsetWidth),O<0&&(O=0),r.overlayStyle={...r.overlayStyle,insetBlockStart:v+k+"px",insetInlineStart:O+"px"},e.onChange(!0)},l=()=>{if(e.disabled)return!1;r.overlayHover=!0};pt(()=>e.visible,h=>{h?r.overlayClass=r.overlayClass.filter(g=>g!==n):r.overlayClass.push(n)});let d=-1;const u=h=>{o.value===h.target?r.triggerHover=!1:r.overlayHover=!1,clearTimeout(d),d=window.setTimeout(()=>{!r.overlayHover&&!r.triggerHover&&e.onChange(!1)},10)};return An(()=>{o.value.addEventListener("mouseenter",a),o.value.addEventListener("mouseleave",u),s.value.addEventListener("mouseenter",l),s.value.addEventListener("mouseleave",u)}),qs(()=>{o.value.removeEventListener("mouseenter",a),o.value.removeEventListener("mouseleave",u),s.value.removeEventListener("mouseenter",l),s.value.removeEventListener("mouseleave",u)}),()=>{const h=_0({ctx:t}),g=_0({props:e,ctx:t},"overlay"),m=Jv(h instanceof Array?h[0]:h,{ref:o,key:"cloned-dropdown-trigger"}),v=c("div",{class:[`${kt}-dropdown`,r.overlayClass],style:r.overlayStyle,ref:s},[c("div",{class:`${kt}-dropdown-overlay`},[g instanceof Array?g[0]:g])]);return[m,v]}}}),_8i={title:{type:String,default:""},visible:{type:Boolean,default:void 0},trigger:{type:[String,Object],default:void 0},onChange:{type:Function,default:void 0},overlay:{type:[String,Object],default:void 0},insert:{type:Function,default:void 0},language:{type:String,default:void 0},theme:{type:String,default:void 0},previewTheme:{type:String,default:void 0},codeTheme:{type:String,default:void 0},disabled:{type:Boolean,default:void 0},showToolbarName:{type:Boolean,default:void 0}},sue=Je({name:"DropdownToolbar",props:_8i,emits:["onChange"],setup(e,t){const n=bt("editorId"),r=o=>{var s;(s=e.onChange)==null||s.call(e,o),t.emit("onChange",o)};return()=>{const o=_0({props:e,ctx:t},"trigger"),s=_0({props:e,ctx:t},"overlay"),a=_0({props:e,ctx:t});return c(Tz,{relative:`#${n}-toolbar-wrapper`,visible:e.visible,onChange:r,overlay:s,disabled:e.disabled},{default:()=>[c("button",{class:[`${kt}-toolbar-item`,e.disabled&&`${kt}-disabled`],title:e.title||"",disabled:e.disabled,type:"button"},[a||o])]})}}});sue.install=e=>(e.component(sue.name,sue),e);const J4e="onSave",ZZe="changeCatalogVisible",gOn="changeFullscreen",w1t="pageFullscreenChanged",O1t="fullscreenChanged",y1t="previewChanged",C1t="previewOnlyChanged",_1t="htmlPreviewChanged",S1t="catalogVisibleChanged",aue="buildFinished",wy="errorCatcher",To="replace",epe="uploadImage",mOn="ctrlZ",kOn="ctrlShiftZ",jY="catalogChanged",vOn="pushCatalog",qZe="rerender",AOn="eventListener",pOn="taskStateChanged",bOn="sendEditorView",mge="getEditorView";let S8i=class{constructor(){In(this,"pools",{})}remove(t,n,r){const o=this.pools[t]&&this.pools[t][n];o&&(this.pools[t][n]=o.filter(s=>s!==r))}clear(t){this.pools[t]={}}on(t,n){return this.pools[t]||(this.pools[t]={}),this.pools[t][n.name]||(this.pools[t][n.name]=[]),this.pools[t][n.name].push(n.callback),this.pools[t][n.name].includes(n.callback)}emit(t,n,...r){this.pools[t]||(this.pools[t]={});const o=this.pools[t][n];o&&o.forEach(s=>{try{s(...r)}catch(a){console.error(`${n} monitor event exception!`,a)}})}};const Pn=new S8i,L8i=(e,t="image.png")=>{const n=e.split(","),r=n[0].match(/:(.*?);/);if(r){const o=r[1],s=atob(n[1]);let a=s.length;const l=new Uint8Array(a);for(;a--;)l[a]=s.charCodeAt(a);return new File([l],t,{type:o})}return null},x8i=(e,t)=>{if(!e)return e;const n=t.split(` `),r=['"),`${e}${r.join("")}`},E8i=(e,t)=>{if(!e||!t)return 0;const n=e==null?void 0:e.getBoundingClientRect();if(t===document.documentElement)return n.top-t.clientTop;const r=t==null?void 0:t.getBoundingClientRect();return n.top-r.top},L1t=(()=>{let e=0;return()=>++e})(),T8i=`.${kt}-preview > [data-line]`,fT=(e,t)=>+getComputedStyle(e).getPropertyValue(t).replace("px",""),Q8i=(e,t)=>{const n=uOn(()=>{e.removeEventListener("scroll",r),e.addEventListener("scroll",r),t.removeEventListener("scroll",r),t.addEventListener("scroll",r)},50),r=o=>{const s=e.clientHeight,a=t.clientHeight,l=e.scrollHeight,d=t.scrollHeight,u=(l-s)/(d-a);o.target===e?(t.removeEventListener("scroll",r),t.scrollTo({top:e.scrollTop/u}),n()):(e.removeEventListener("scroll",r),e.scrollTo({top:t.scrollTop*u}),n())};return[()=>{n().finally(()=>{e.dispatchEvent(new Event("scroll"))})},()=>{e.removeEventListener("scroll",r),t.removeEventListener("scroll",r)}]},D8i=(e,t,n)=>{const{view:r}=n,o=YZe(),s=p=>r.lineBlockAt(r.state.doc.line(p+1).from).top,a=p=>r.lineBlockAt(r.state.doc.line(p+1).from).bottom;let l=[],d=[],u=[];const h=()=>{l=[],d=Array.from(t.querySelectorAll(T8i)),u=d.map(y=>Number(y.dataset.line));const p=[...u],{lines:b}=r.state.doc;let w=p.shift()||0,O=p.shift()||b;for(let y=0;y{let w=1;for(let O=d.length-1;O-1>=0;O--){const y=d[O],C=d[O-1];if(y.offsetTop+y.offsetHeight>b&&C.offsetTop=0;O--){const y=a(l[O].end),C=s(l[O].start);if(y>p&&C<=p){w=w{var I,F,j;if(v!==0)return!1;m++;const{scrollDOM:p,contentHeight:b}=r;let w=fT(t,"padding-block-start");const O=r.lineBlockAtHeight(p.scrollTop),{number:y}=r.state.doc.lineAt(O.from),C=l[y-1];if(!C)return!1;let _=1;const S=t.querySelector(`[data-line="${C.start}"]`)||((I=t.firstElementChild)==null?void 0:I.firstElementChild),L=t.querySelector(`[data-line="${C.end+1}"]`)||((F=t.lastElementChild)==null?void 0:F.lastElementChild),E=p.scrollHeight-p.clientHeight,T=t.scrollHeight-t.clientHeight;let D=s(C.start),P=a(C.end),Q=S.offsetTop,M=L.offsetTop-Q;D===0&&(Q=0,S===L?(w=0,P=b-p.offsetHeight,M=T):M=L.offsetTop),_=(p.scrollTop-D)/(P-D);const B=L==((j=t.lastElementChild)==null?void 0:j.lastElementChild)?L.offsetTop+L.clientHeight:L.offsetTop;if(P>=E||B>T){const W=g(E,T);D=s(W),_=(p.scrollTop-D)/(E-D);const H=t.querySelector(`[data-line="${W}"]`);D>0&&H&&(Q=H.offsetTop),M=T-Q+fT(t,"padding-block-start")}const R=Q-w+M*_;o(t,R,()=>{m--})},k=()=>{var B,R,I,F,j,W;if(m!==0)return;v++;const{scrollDOM:p}=r,b=t.scrollTop,w=t.scrollHeight,O=p.scrollHeight-p.clientHeight,y=t.scrollHeight-t.clientHeight;let C=(B=t.firstElementChild)==null?void 0:B.firstElementChild,_=(R=t.firstElementChild)==null?void 0:R.lastElementChild;if(u.length>0){let H=Math.ceil(u[u.length-1]*(b/w)),$=u.findLastIndex(G=>G<=H);$=$===-1?0:$,H=u[$];for(let G=$;G>=0&&Gb){if(G-1>=0){G--;continue}H=-1,$=G;break}else{if(G+1O||_.offsetTop+_.offsetHeight>y){const H=g(O,y),$=t.querySelector(`[data-line="${H}"]`);S=$?$.offsetTop-fT($,"margin-block-start"):S,P=s(H),E=(b-S)/(y-S),M=O-P}else C===((W=t.firstElementChild)==null?void 0:W.firstElementChild)?(C===_&&(L=_.offsetTop+_.offsetHeight+fT(_,"margin-block-end")),M=Q,E=Math.max(b/L,0)):(E=Math.max((b-S)/(L-S),0),M=Q-P);o(e,P+M*E,()=>{v--})},A=p=>{var y;const{scrollDOM:b,contentHeight:w}=r,O=b.clientHeight;if(w<=O||t.firstElementChild.clientHeight<=t.clientHeight||r.state.doc.lines<=((y=l[l.length-1])==null?void 0:y.end))return!1;p.target===e?f():k()};return[()=>{h(),e.addEventListener("scroll",A),t.addEventListener("scroll",A),e.dispatchEvent(new Event("scroll"))},()=>{e.removeEventListener("scroll",A),t.removeEventListener("scroll",A)}]},B8i={tocItem:{type:Object,default:()=>({})},mdHeadingId:{type:Function,default:()=>{}},onActive:{type:Function,default:()=>{}},onClick:{type:Function,default:()=>{}},scrollElementOffsetTop:{type:Number,default:0}},wOn=Je({props:B8i,setup(e){const t=bt("scrollElementRef"),n=bt("roorNodeRef"),r=fe();pt(()=>e.tocItem.active,s=>{s&&e.onActive(e.tocItem,r.value)}),An(()=>{e.tocItem.active&&e.onActive(e.tocItem,r.value)});const o=s=>{if(s.stopPropagation(),e.onClick(s,e.tocItem),s.defaultPrevented)return;const a=e.mdHeadingId({text:e.tocItem.text,level:e.tocItem.level,index:e.tocItem.index,currentToken:e.tocItem.currentToken,nextToken:e.tocItem.nextToken}),l=n.value.getElementById(a),d=t.value;if(l&&d){let u=l.offsetParent,h=l.offsetTop;if(d.contains(u))for(;u&&d!=u;)h+=u==null?void 0:u.offsetTop,u=u==null?void 0:u.offsetParent;const g=l.previousElementSibling;let m=0;g||(m=fT(l,"margin-block-start")),d==null||d.scrollTo({top:h-e.scrollElementOffsetTop-m,behavior:"smooth"})}};return()=>c("div",{ref:r,class:[`${kt}-catalog-link`,e.tocItem.active&&`${kt}-catalog-active`],onClick:o},[c("span",{title:e.tocItem.text},[e.tocItem.text]),e.tocItem.children&&e.tocItem.children.length>0&&c("div",{class:`${kt}-catalog-wrapper`},[e.tocItem.children.map(s=>c(wOn,{mdHeadingId:e.mdHeadingId,key:`${e.tocItem.text}-link-${s.level}-${s.text}`,tocItem:s,onActive:e.onActive,onClick:e.onClick,scrollElementOffsetTop:e.scrollElementOffsetTop},null))])])}}),R8i={editorId:{type:String,default:void 0},class:{type:String,default:""},mdHeadingId:{type:Function,default:({text:e})=>e},scrollElement:{type:[String,Object],default:void 0},theme:{type:String,default:"light"},offsetTop:{type:Number,default:20},scrollElementOffsetTop:{type:Number,default:0},onClick:{type:Function,default:void 0},onActive:{type:Function,default:void 0},isScrollElementInShadow:{type:Boolean,default:!1},syncWith:{type:String,default:"preview"},catalogMaxDepth:{type:Number,default:void 0}},WY=Je({name:"MdCatalog",props:R8i,emits:["onClick","onActive"],setup(e,t){const n=e.editorId,r=`#${n}-preview-wrapper`,o=hs({list:[],show:!1,scrollElement:e.scrollElement||r}),s=nd(),a=fe(),l=fe(),d=fe(),u=fe(),h=nd(),g=fe({});Yi("scrollElementRef",l),Yi("roorNodeRef",u);const m=X(()=>{const O=[];return o.list.forEach((y,C)=>{if(e.catalogMaxDepth&&y.level>e.catalogMaxDepth)return;const{text:_,level:S,line:L}=y,E={level:S,text:_,line:L,index:C+1,active:s.value===y};if(O.length===0)O.push(E);else{let T=O[O.length-1];if(E.level>T.level)for(let D=T.level+1;D<=6;D++){const{children:P}=T;if(!P){T.children=[E];break}if(T=P[P.length-1],E.level<=T.level){P.push(E);break}}else O.push(E)}}),O}),v=()=>{var y;if(o.scrollElement instanceof HTMLElement)return o.scrollElement;let O=document;return(o.scrollElement===r||e.isScrollElementInShadow)&&(O=(y=a.value)==null?void 0:y.getRootNode()),O.querySelector(o.scrollElement)},f=O=>{if(O.length===0)return s.value=void 0,o.list=[],!1;const{activeHead:y,activeIndex:C}=O.reduce((L,E,T)=>{var P;let D=0;if(e.syncWith==="preview"){const Q=(P=u.value)==null?void 0:P.getElementById(e.mdHeadingId({text:E.text,level:E.level,index:T+1,currentToken:E.currentToken,nextToken:E.nextToken}));Q instanceof HTMLElement&&(D=E8i(Q,l.value))}else{const Q=h.value;if(Q){const M=Q.lineBlockAt(Q.state.doc.line(E.line+1).from).top,B=Q.scrollDOM.scrollTop;D=M-B}}return DL.minTop?{activeHead:E,activeIndex:T,minTop:D}:L},{activeHead:O[0],activeIndex:0,minTop:Number.MIN_SAFE_INTEGER});let _=y;const{catalogMaxDepth:S}=e;if(S&&_.level>S){for(let L=C;L>=0;L--){const E=O[L];if(E.level<=S){_=E;break}}if(_.level>S){const L=O.find(E=>E.level<=S);L&&(_=L)}}s.value=_,o.list=O},k=(O,y)=>{var C;g.value.top=y.offsetTop+fT(y,"padding-block-start")+"px",(C=e.onActive)==null||C.call(e,O,y),t.emit("onActive",O,y)},A=()=>{f(o.list)},p=O=>{var y,C,_;if((y=d.value)==null||y.removeEventListener("scroll",A),e.syncWith==="editor")d.value=(C=h.value)==null?void 0:C.scrollDOM;else{const S=v();l.value=S,d.value=S===document.documentElement?document:S}f(O),(_=d.value)==null||_.addEventListener("scroll",A)},b=O=>{h.value=O};pt([()=>e.syncWith,h,()=>e.catalogMaxDepth],()=>{p(o.list)}),An(()=>{u.value=a.value.getRootNode(),Pn.on(n,{name:jY,callback:p}),Pn.on(n,{name:mge,callback:b}),Pn.emit(n,vOn),Pn.emit(n,bOn)}),qs(()=>{var O;Pn.remove(n,jY,p),Pn.remove(n,mge,b),(O=d.value)==null||O.removeEventListener("scroll",A)});const w=(O,y)=>{var C;(C=e.onClick)==null||C.call(e,O,y),t.emit("onClick",O,y)};return()=>c("div",{class:[`${kt}-catalog`,e.theme==="dark"&&`${kt}-catalog-dark`,e.class||""],ref:a},[m.value.length>0&&c(sn,null,[c("div",{class:`${kt}-catalog-indicator`,style:g.value},null),c("div",{class:`${kt}-catalog-container`},[m.value.map(O=>c(wOn,{mdHeadingId:e.mdHeadingId,tocItem:O,key:`link-${O.level}-${O.text}`,onActive:k,onClick:w,scrollElementOffsetTop:e.scrollElementOffsetTop},null))])])])}});WY.install=e=>(e.component(WY.name,WY),e);async function OOn(e){if(typeof e=="string"){if(window.isSecureContext&&navigator.clipboard)return await navigator.clipboard.writeText(e);{const t=document.createElement("textarea");let n=!1;if(t.value=e,t.style.position="fixed",t.style.opacity=0,t.style.zIndex="-10000",t.style.top="-10000",document.body.appendChild(t),t.select(),n=document.execCommand("copy"),document.body.removeChild(t),n)return;throw new Error('Failed to copy content via "execCommand"!')}}}const I8i={copy:``,"collapse-tips":``,pin:``,"pin-off":``,check:``},pO=(e,t)=>typeof t[e]=="string"?t[e]:I8i[e],x1t=(e,t)=>{const n=r=>{const o=e.parentElement||document.body,s=o.offsetWidth,a=o.offsetHeight,{clientWidth:l,clientHeight:d}=document.documentElement,u=r.offsetX,h=r.offsetY,g=v=>{let f=v.x+document.body.scrollLeft-document.body.clientLeft-u,k=v.y+document.body.scrollTop-document.body.clientTop-h;f=f<1?1:f{document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",m)};document.addEventListener("mouseup",m)};return e.addEventListener("mousedown",n),()=>{e.removeEventListener("mousedown",n)}},Nv=(e,t,n="")=>{var o;const r=document.getElementById(t.id);if(r)n!==""&&(Reflect.get(window,n)?(o=t.onload)==null||o.call(r,new Event("load")):t.onload&&r.addEventListener("load",t.onload));else{const s={...t};s.onload=null;const a=P8i(e,s);t.onload&&a.addEventListener("load",t.onload),document.head.appendChild(a)}},M8i=(e,t)=>{var n;(n=document.getElementById(t.id))==null||n.remove(),Nv(e,t)},P8i=(e,t)=>{const n=document.createElement(e);return Object.keys(t).forEach(r=>{t[r]!==void 0&&(n[r]=t[r])}),n},F8i=(e,t)=>{const n=new Map;return e==null||e.forEach(r=>{let o=r.querySelector(`.${kt}-mermaid-action`);o?o.querySelector(`.${kt}-mermaid-copy`)||o.insertAdjacentHTML("beforeend",`${pO("copy",t.customIcon)}`):(r.insertAdjacentHTML("beforeend",`
${pO("copy",t.customIcon)}
`),o=r.querySelector(`.${kt}-mermaid-action`));const s=o.querySelector(`.${kt}-mermaid-copy`);let a=-1;const l=()=>{clearTimeout(a),OOn(r.dataset.content||"").then(()=>{s.innerHTML=pO("check",t.customIcon)}).catch(()=>{s.innerHTML=pO("copy",t.customIcon)}).finally(()=>{a=window.setTimeout(()=>{s.innerHTML=pO("copy",t.customIcon)},1500)})};s.addEventListener("click",l),n.set(r,{removeClick:()=>{s.removeEventListener("click",l)}})}),()=>{n.forEach(({removeClick:r})=>{r==null||r()}),n.clear()}},N8i=(()=>{const e=t=>{if(!t)return()=>{};const n=t.firstChild;let r=1,o=0,s=0,a=!1,l,d,u,h=1;const g=()=>{n.style.transform=`translate(${o}px, ${s}px) scale(${r})`},m=O=>{O.touches.length===1?(a=!0,l=O.touches[0].clientX-o,d=O.touches[0].clientY-s):O.touches.length===2&&(u=Math.hypot(O.touches[0].clientX-O.touches[1].clientX,O.touches[0].clientY-O.touches[1].clientY),h=r)},v=O=>{if(O.preventDefault(),a&&O.touches.length===1)o=O.touches[0].clientX-l,s=O.touches[0].clientY-d,g();else if(O.touches.length===2){const y=Math.hypot(O.touches[0].clientX-O.touches[1].clientX,O.touches[0].clientY-O.touches[1].clientY)/u,C=r;r=h*(1+(y-1));const _=(O.touches[0].clientX+O.touches[1].clientX)/2,S=(O.touches[0].clientY+O.touches[1].clientY)/2,L=n.getBoundingClientRect(),E=(_-L.left)/C,T=(S-L.top)/C;o-=E*(r-C),s-=T*(r-C),g()}},f=()=>{a=!1},k=O=>{O.preventDefault();const y=.02,C=r;O.deltaY<0?r+=y:r=Math.max(.1,r-y);const _=n.getBoundingClientRect(),S=O.clientX-_.left,L=O.clientY-_.top;o-=S/C*(r-C),s-=L/C*(r-C),g()},A=O=>{a=!0,l=O.clientX-o,d=O.clientY-s},p=O=>{a&&(o=O.clientX-l,s=O.clientY-d,g())},b=()=>{a=!1},w=()=>{a=!1};return t.addEventListener("touchstart",m,{passive:!1}),t.addEventListener("touchmove",v,{passive:!1}),t.addEventListener("touchend",f),t.addEventListener("wheel",k,{passive:!1}),t.addEventListener("mousedown",A),t.addEventListener("mousemove",p),t.addEventListener("mouseup",b),t.addEventListener("mouseleave",w),()=>{t.removeEventListener("touchstart",m),t.removeEventListener("touchmove",v),t.removeEventListener("touchend",f),t.removeEventListener("wheel",k),t.removeEventListener("mousedown",A),t.removeEventListener("mousemove",p),t.removeEventListener("mouseup",b),t.removeEventListener("mouseleave",w)}};return(t,n)=>{const r=new Map;return t==null||t.forEach(o=>{let s=o.querySelector(`.${kt}-mermaid-action`);s?s.querySelector(`.${kt}-mermaid-zoom`)||s.insertAdjacentHTML("beforeend",`${pO("pin-off",n.customIcon)}`):(o.insertAdjacentHTML("beforeend",`
${pO("pin-off",n.customIcon)}
`),s=o.querySelector(`.${kt}-mermaid-action`));const a=s.querySelector(`.${kt}-mermaid-zoom`),l=()=>{const d=r.get(o);if(d!=null&&d.removeEvent)d.removeEvent(),o.removeAttribute("data-grab"),r.set(o,{removeClick:d.removeClick}),a.innerHTML=pO("pin-off",n.customIcon);else{const u=e(o);o.setAttribute("data-grab",""),r.set(o,{removeEvent:u,removeClick:d==null?void 0:d.removeClick}),a.innerHTML=pO("pin",n.customIcon)}};a.addEventListener("click",l),r.set(o,{removeClick:()=>a.removeEventListener("click",l)})}),()=>{r.forEach(({removeEvent:o,removeClick:s})=>{o==null||o(),s==null||s()}),r.clear()}}})(),E1t={};function U8i(e){let t=E1t[e];if(t)return t;t=E1t[e]=[];for(let n=0;n<128;n++){const r=String.fromCharCode(n);t.push(r)}for(let n=0;n=55296&&h<=57343?o+="���":o+=String.fromCharCode(h),s+=6;continue}}if((l&248)===240&&s+91114111?o+="����":(g-=65536,o+=String.fromCharCode(55296+(g>>10),56320+(g&1023))),s+=9;continue}}o+="�"}return o})}CW.defaultChars=";/?:@&=+$,#";CW.componentChars="";const T1t={};function j8i(e){let t=T1t[e];if(t)return t;t=T1t[e]=[];for(let n=0;n<128;n++){const r=String.fromCharCode(n);/^[0-9a-z]$/i.test(r)?t.push(r):t.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2))}for(let n=0;n"u"&&(n=!0);const r=j8i(t);let o="";for(let s=0,a=e.length;s=55296&&l<=57343){if(l>=55296&&l<=56319&&s+1=56320&&d<=57343){o+=encodeURIComponent(e[s]+e[s+1]),s++;continue}}o+="%EF%BF%BD";continue}o+=encodeURIComponent(e[s])}return o}zne.defaultChars=";/?:@&=+$,-_.!~*'()#";zne.componentChars="-_.!~*'()";function KZe(e){let t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&e.hostname.indexOf(":")!==-1?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||"",t}function kge(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}const W8i=/^([a-z0-9.+-]+:)/i,V8i=/:[0-9]*$/,z8i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,H8i=["<",">",'"',"`"," ","\r",` `," "],$8i=["{","}","|","\\","^","`"].concat(H8i),X8i=["'"].concat($8i),Q1t=["%","/","?",";","#"].concat(X8i),D1t=["/","?","#"],G8i=255,B1t=/^[+a-z0-9A-Z_-]{0,63}$/,Y8i=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,R1t={javascript:!0,"javascript:":!0},I1t={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function JZe(e,t){if(e&&e instanceof kge)return e;const n=new kge;return n.parse(e,t),n}kge.prototype.parse=function(e,t){let n,r,o,s=e;if(s=s.trim(),!t&&e.split("#").length===1){const u=z8i.exec(s);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}let a=W8i.exec(s);if(a&&(a=a[0],n=a.toLowerCase(),this.protocol=a,s=s.substr(a.length)),(t||a||s.match(/^\/\/[^@\/]+@[^@\/]+/))&&(o=s.substr(0,2)==="//",o&&!(a&&R1t[a])&&(s=s.substr(2),this.slashes=!0)),!R1t[a]&&(o||a&&!I1t[a])){let u=-1;for(let f=0;f127?b+="x":b+=p[w];if(!b.match(B1t)){const w=f.slice(0,k),O=f.slice(k+1),y=p.match(Y8i);y&&(w.push(y[1]),O.unshift(y[2])),O.length&&(s=O.join(".")+s),this.hostname=w.join(".");break}}}}this.hostname.length>G8i&&(this.hostname=""),v&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const l=s.indexOf("#");l!==-1&&(this.hash=s.substr(l),s=s.slice(0,l));const d=s.indexOf("?");return d!==-1&&(this.search=s.substr(d),s=s.slice(0,d)),s&&(this.pathname=s),I1t[n]&&this.hostname&&!this.pathname&&(this.pathname=""),this};kge.prototype.parseHost=function(e){let t=V8i.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};const Z8i=Object.freeze(Object.defineProperty({__proto__:null,decode:CW,encode:zne,format:KZe,parse:JZe},Symbol.toStringTag,{value:"Module"})),yOn=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,COn=/[\0-\x1F\x7F-\x9F]/,q8i=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,eqe=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,_On=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,SOn=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,K8i=Object.freeze(Object.defineProperty({__proto__:null,Any:yOn,Cc:COn,Cf:q8i,P:eqe,S:_On,Z:SOn},Symbol.toStringTag,{value:"Module"})),J8i=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),eLi=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(e=>e.charCodeAt(0)));var Q_e;const tLi=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),nLi=(Q_e=String.fromCodePoint)!==null&&Q_e!==void 0?Q_e:function(e){let t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function iLi(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=tLi.get(e))!==null&&t!==void 0?t:e}var kg;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(kg||(kg={}));const rLi=32;var t9;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(t9||(t9={}));function wMe(e){return e>=kg.ZERO&&e<=kg.NINE}function oLi(e){return e>=kg.UPPER_A&&e<=kg.UPPER_F||e>=kg.LOWER_A&&e<=kg.LOWER_F}function sLi(e){return e>=kg.UPPER_A&&e<=kg.UPPER_Z||e>=kg.LOWER_A&&e<=kg.LOWER_Z||wMe(e)}function aLi(e){return e===kg.EQUALS||sLi(e)}var Zf;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Zf||(Zf={}));var S5;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(S5||(S5={}));class lLi{constructor(t,n,r){this.decodeTree=t,this.emitCodePoint=n,this.errors=r,this.state=Zf.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=S5.Strict}startEntity(t){this.decodeMode=t,this.state=Zf.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,n){switch(this.state){case Zf.EntityStart:return t.charCodeAt(n)===kg.NUM?(this.state=Zf.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=Zf.NamedEntity,this.stateNamedEntity(t,n));case Zf.NumericStart:return this.stateNumericStart(t,n);case Zf.NumericDecimal:return this.stateNumericDecimal(t,n);case Zf.NumericHex:return this.stateNumericHex(t,n);case Zf.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|rLi)===kg.LOWER_X?(this.state=Zf.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=Zf.NumericDecimal,this.stateNumericDecimal(t,n))}addToNumericResult(t,n,r,o){if(n!==r){const s=r-n;this.result=this.result*Math.pow(o,s)+parseInt(t.substr(n,s),o),this.consumed+=s}}stateNumericHex(t,n){const r=n;for(;n>14;for(;n>14,s!==0){if(a===kg.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);this.decodeMode!==S5.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:n,decodeTree:r}=this,o=(r[n]&t9.VALUE_LENGTH)>>14;return this.emitNamedEntityData(n,o,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,r){const{decodeTree:o}=this;return this.emitCodePoint(n===1?o[t]&~t9.VALUE_LENGTH:o[t+1],r),n===3&&this.emitCodePoint(o[t+2],r),r}end(){var t;switch(this.state){case Zf.NamedEntity:return this.result!==0&&(this.decodeMode!==S5.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Zf.NumericDecimal:return this.emitNumericEntity(0,2);case Zf.NumericHex:return this.emitNumericEntity(0,3);case Zf.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Zf.EntityStart:return 0}}}function LOn(e){let t="";const n=new lLi(e,r=>t+=nLi(r));return function(o,s){let a=0,l=0;for(;(l=o.indexOf("&",l))>=0;){t+=o.slice(a,l),n.startEntity(s);const u=n.write(o,l+1);if(u<0){a=l+n.end();break}a=l+u,l=u===0?a+1:a}const d=t+o.slice(a);return t="",d}}function cLi(e,t,n,r){const o=(t&t9.BRANCH_LENGTH)>>7,s=t&t9.JUMP_TABLE;if(o===0)return s!==0&&r===s?n:-1;if(s){const d=r-s;return d<0||d>=o?-1:e[n+d]-1}let a=n,l=a+o-1;for(;a<=l;){const d=a+l>>>1,u=e[d];if(ur)l=d-1;else return e[d+o]}return-1}const dLi=LOn(J8i);LOn(eLi);function xOn(e,t=S5.Legacy){return dLi(e,t)}function uLi(e){return Object.prototype.toString.call(e)}function tqe(e){return uLi(e)==="[object String]"}const hLi=Object.prototype.hasOwnProperty;function fLi(e,t){return hLi.call(e,t)}function tpe(e){return Array.prototype.slice.call(arguments,1).forEach(function(n){if(n){if(typeof n!="object")throw new TypeError(n+"must be object");Object.keys(n).forEach(function(r){e[r]=n[r]})}}),e}function EOn(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))}function nqe(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)===65535||(e&65535)===65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function vge(e){if(e>65535){e-=65536;const t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}return String.fromCharCode(e)}const TOn=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,gLi=/&([a-z#][a-z0-9]{1,31});/gi,mLi=new RegExp(TOn.source+"|"+gLi.source,"gi"),kLi=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function vLi(e,t){if(t.charCodeAt(0)===35&&kLi.test(t)){const r=t[1].toLowerCase()==="x"?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return nqe(r)?vge(r):e}const n=xOn(e);return n!==e?n:e}function ALi(e){return e.indexOf("\\")<0?e:e.replace(TOn,"$1")}function _W(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(mLi,function(t,n,r){return n||vLi(t,r)})}const pLi=/[&<>"]/,bLi=/[&<>"]/g,wLi={"&":"&","<":"<",">":">",'"':"""};function OLi(e){return wLi[e]}function h6(e){return pLi.test(e)?e.replace(bLi,OLi):e}const yLi=/[.?*+^$[\]\\(){}|-]/g;function CLi(e){return e.replace(yLi,"\\$&")}function id(e){switch(e){case 9:case 32:return!0}return!1}function rK(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function oK(e){return eqe.test(e)||_On.test(e)}function sK(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function npe(e){return e=e.trim().replace(/\s+/g," "),"ẞ".toLowerCase()==="Ṿ"&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}const _Li={mdurl:Z8i,ucmicro:K8i},SLi=Object.freeze(Object.defineProperty({__proto__:null,arrayReplaceAt:EOn,assign:tpe,escapeHtml:h6,escapeRE:CLi,fromCodePoint:vge,has:fLi,isMdAsciiPunct:sK,isPunctChar:oK,isSpace:id,isString:tqe,isValidEntityCode:nqe,isWhiteSpace:rK,lib:_Li,normalizeReference:npe,unescapeAll:_W,unescapeMd:ALi},Symbol.toStringTag,{value:"Module"}));function LLi(e,t,n){let r,o,s,a;const l=e.posMax,d=e.pos;for(e.pos=t+1,r=1;e.pos32))return s;if(r===41){if(a===0)break;a--}o++}return t===o||a!==0||(s.str=_W(e.slice(t,o)),s.pos=o,s.ok=!0),s}function ELi(e,t,n,r){let o,s=t;const a={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(r)a.str=r.str,a.marker=r.marker;else{if(s>=n)return a;let l=e.charCodeAt(s);if(l!==34&&l!==39&&l!==40)return a;t++,s++,l===40&&(l=41),a.marker=l}for(;s"+h6(s.content)+""};Gy.code_block=function(e,t,n,r,o){const s=e[t];return""+h6(e[t].content)+` `};Gy.fence=function(e,t,n,r,o){const s=e[t],a=s.info?_W(s.info).trim():"";let l="",d="";if(a){const h=a.split(/(\s+)/g);l=h[0],d=h.slice(2).join("")}let u;if(n.highlight?u=n.highlight(s.content,l,d)||h6(s.content):u=h6(s.content),u.indexOf("{e:for(let o=n.node.firstChild,s=0,a=null;;){for(;!o;){if(!s)break e;s--,o=a.nextSibling,a=a.parent}t&&o.name==t||o.name=="SpecList"?(s++,a=o,o=o.firstChild):(o.name=="DefName"&&r(o,e),o=o.nextSibling)}return!0}}const K6r={FunctionDecl:uP("function"),VarDecl:uP("var","VarSpec"),ConstDecl:uP("constant","ConstSpec"),TypeDecl:uP("type","TypeSpec"),ImportDecl:uP("constant","ImportSpec"),Parameter:uP("var"),__proto__:null};function fLn(e,t){let n=Dvt.get(t);if(n)return n;let r=[],o=!0;function s(a,l){let d=e.sliceString(a.from,a.to);r.push({label:d,type:l})}return t.cursor(cl.IncludeAnonymous).iterate(a=>{if(o)o=!1;else if(a.name){let l=K6r[a.name];if(l&&l(a,s)||hLn.has(a.name))return!1}else if(a.to-a.from>8192){for(let l of fLn(e,a.node))r.push(l);return!1}}),Dvt.set(t,r),r}const Bvt=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,gLn=["String","LineComment","BlockComment","DefName","LabelName","FieldName",".","?."],mLn=e=>{let t=tc(e.state).resolveInner(e.pos,-1);if(gLn.indexOf(t.name)>-1)return null;let n=t.name=="VariableName"||t.to-t.from<20&&Bvt.test(e.state.sliceDoc(t.from,t.to));if(!n&&!e.explicit)return null;let r=[];for(let o=t;o;o=o.parent)hLn.has(o.name)&&(r=r.concat(fLn(e.state.doc,o)));return{options:r,from:n?t.from:e.pos,validFor:Bvt}},xue=Vd.define({name:"go",parser:q6r.configure({props:[Vu.add({IfStatement:Pu({except:/^\s*({|else\b)/}),LabeledStatement:mpe,"SwitchBlock SelectBlock":e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n||r?0:e.unit)},Block:Xv({closing:"}"}),BlockComment:()=>null,Statement:Pu({except:/^{/})}),kh.add({"Block SwitchBlock SelectBlock LiteralValue InterfaceType StructType SpecList":bA,BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case\b|default\b|\})$/}});let J6r=e=>({label:e,type:"keyword"});const eEr="interface struct chan map package go return break continue goto fallthrough else defer range true false nil".split(" ").map(J6r);function tEr(){let e=uLn.concat(eEr);return new wd(xue,[xue.data.of({autocomplete:bpe(gLn,Kne(e))}),xue.data.of({autocomplete:mLn})])}const nEr=Object.freeze(Object.defineProperty({__proto__:null,go:tEr,goLanguage:xue,localCompletionSource:mLn,snippets:uLn},Symbol.toStringTag,{value:"Module"})),iEr=Xd({null:ve.null,instanceof:ve.operatorKeyword,this:ve.self,"new super assert open to with void":ve.keyword,"class interface extends implements enum var":ve.definitionKeyword,"module package import":ve.moduleKeyword,"switch while for if else case default do break continue return try catch finally throw":ve.controlKeyword,"requires exports opens uses provides public private protected static transitive abstract final strictfp synchronized native transient volatile throws":ve.modifier,IntegerLiteral:ve.integer,FloatingPointLiteral:ve.float,"StringLiteral TextBlock":ve.string,CharacterLiteral:ve.character,LineComment:ve.lineComment,BlockComment:ve.blockComment,BooleanLiteral:ve.bool,PrimitiveType:ve.standard(ve.typeName),TypeName:ve.typeName,Identifier:ve.variableName,"MethodName/Identifier":ve.function(ve.variableName),Definition:ve.definition(ve.variableName),ArithOp:ve.arithmeticOperator,LogicOp:ve.logicOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,AssignOp:ve.definitionOperator,UpdateOp:ve.updateOperator,Asterisk:ve.punctuation,Label:ve.labelName,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,".":ve.derefOperator,", ;":ve.separator}),rEr={__proto__:null,true:34,false:34,null:42,void:46,byte:48,short:48,int:48,long:48,char:48,float:48,double:48,boolean:48,extends:62,super:64,class:76,this:78,new:84,public:100,protected:102,private:104,abstract:106,static:108,final:110,strictfp:112,default:114,synchronized:116,native:118,transient:120,volatile:122,throws:150,implements:160,interface:166,enum:176,instanceof:238,open:267,module:269,requires:274,transitive:276,exports:278,to:280,opens:282,uses:284,provides:286,with:288,package:292,import:296,if:308,else:310,while:314,for:318,var:325,assert:332,switch:336,case:342,do:346,break:350,continue:354,return:358,throw:364,try:368,catch:372,finally:380},oEr=zd.deserialize({version:14,states:"##jQ]QPOOQ$wQPOOO(bQQO'#H^O*iQQO'#CbOOQO'#Cb'#CbO*pQPO'#CaO*xOSO'#CpOOQO'#Hc'#HcOOQO'#Cu'#CuO,eQPO'#D_O-OQQO'#HmOOQO'#Hm'#HmO/gQQO'#HhO/nQQO'#HhOOQO'#Hh'#HhOOQO'#Hg'#HgO1rQPO'#DUO2PQPO'#GnO4wQPO'#D_O5OQPO'#DzO*pQPO'#E[O5qQPO'#E[OOQO'#DV'#DVO7SQQO'#HaO9^QQO'#EeO9eQPO'#EdO9jQPO'#EfOOQO'#Hb'#HbO7jQQO'#HbO:pQQO'#FhO:wQPO'#ExO:|QPO'#E}O:|QPO'#FPOOQO'#Ha'#HaOOQO'#HY'#HYOOQO'#Gh'#GhOOQO'#HX'#HXO<^QPO'#FiOOQO'#HW'#HWOOQO'#Gg'#GgQ]QPOOOOQO'#Hs'#HsOQQPO'#GSO>]QPO'#GUO=kQPO'#GWO:|QPO'#GXO>dQPO'#GZO?QQQO'#HiO?mQQO'#CuO?tQPO'#HxO@SQPO'#D_O@rQPO'#DpO?wQPO'#DqO@|QPO'#HxOA_QPO'#DpOAgQPO'#IROAlQPO'#E`OOQO'#Hr'#HrOOQO'#Gm'#GmQ$wQPOOOAtQPO'#HsOOQO'#H^'#H^OCsQQO,58{OOQO'#H['#H[OOOO'#Gi'#GiOEfOSO,59[OOQO,59[,59[OOQO'#Hi'#HiOFVQPO,59eOGXQPO,59yOOQO-E:f-E:fO*pQPO,58zOG{QPO,58zO*pQPO,5;}OHQQPO'#DQOHVQPO'#DQOOQO'#Gk'#GkOIVQQO,59jOOQO'#Dm'#DmOJqQPO'#HuOJ{QPO'#DlOKZQPO'#HtOKcQPO,5<_OKhQPO,59^OLRQPO'#CxOOQO,59c,59cOLYQPO,59bOLeQQO'#H^ONgQQO'#CbO!!iQPO'#D_O!#nQQO'#HmO!$OQQO,59pO!$VQPO'#DvO!$eQPO'#H|O!$mQPO,5:`O!$rQPO,5:`O!%YQPO,5;nO!%eQPO'#ITO!%pQPO,5;eO!%uQPO,5=YOOQO-E:l-E:lOOQO,5:f,5:fO!']QPO,5:fO!'dQPO,5:vO?tQPO,5<_O*pQPO,5:vO_,5>_O!*sQPO,5:gO!+RQPO,5:qO!+ZQPO,5:lO!+fQPO,5>[O!$VQPO,5>[O!'iQPO,59UO!+qQQO,58zO!+yQQO,5;}O!,RQQO,5gQPO,5gQPO,5<}O!2mQPO,59jO!2zQPO'#HuO!3RQPO,59xO!3WQPO,5>dO?tQPO,59xO!3cQPO,5:[OAlQPO,5:zO!3kQPO'#DrO?wQPO'#DrO!3vQPO'#HyO!4OQPO,5:]O?tQPO,5>dO!(hQPO,5>dOAgQPO,5>mOOQO,5:[,5:[O!$rQPO'#DtOOQO,5>m,5>mO!4TQPO'#EaOOQO,5:z,5:zO!7UQPO,5:zO!(hQPO'#DxOOQO-E:k-E:kOOQO,5:y,5:yO*pQPO,58}O!7ZQPO'#ChOOQO1G.k1G.kOOOO-E:g-E:gOOQO1G.v1G.vO!+qQQO1G.fO*pQPO1G.fO!7eQQO1G1iOOQO,59l,59lO!7mQPO,59lOOQO-E:i-E:iO!7rQPO,5>aO!8ZQPO,5:WO`OOQO1G1y1G1yOOQO1G.x1G.xO!8{QPO'#CyO!9kQPO'#HmO!9uQPO'#CzO!:TQPO'#HlO!:]QPO,59dOOQO1G.|1G.|OLYQPO1G.|O!:sQPO,59eO!;QQQO'#H^O!;cQQO'#CbOOQO,5:b,5:bOhOOQO1G/z1G/zO!oOOQO1G1P1G1POOQO1G0Q1G0QO!=oQPO'#E]OOQO1G0b1G0bO!>`QPO1G1yO!'dQPO1G0bO!*sQPO1G0RO!+RQPO1G0]O!+ZQPO1G0WOOQO1G/]1G/]O!>eQQO1G.pO9eQPO1G0jO*pQPO1G0jOgQPO'#GaOOQO1G2a1G2aO#2zQPO1G2iO#6xQPO,5>gOOQO1G/d1G/dOOQO1G4O1G4OO#7ZQPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!7UQPO1G0fOOQO,5:^,5:^O!(hQPO'#DsO#7`QPO,5:^O?wQPO'#GrO#7kQPO,5>eOOQO1G/w1G/wOAgQPO'#H{O#7sQPO1G4OO?tQPO1G4OOOQO1G4X1G4XO!#YQPO'#DvO!!iQPO'#D_OOQO,5:{,5:{O#8OQPO,5:{O#8OQPO,5:{O#8VQQO'#HaO#9hQQO'#HbO#9rQQO'#EbO#9}QPO'#EbO#:VQPO'#IOOOQO,5:d,5:dOOQO1G.i1G.iO#:bQQO'#EeO#:rQQO'#H`O#;SQPO'#FTOOQO'#H`'#H`O#;^QPO'#H`O#;{QPO'#IWO#WOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#=cQQO1G/{OOQO1G/}1G/}O#=hQPO1G/{OOQO1G/|1G/|OdQPO,5:wOOQO,5:w,5:wOOQO7+'e7+'eOOQO7+%|7+%|OOQO7+%m7+%mO!KqQPO7+%mO!KvQPO7+%mO!LOQPO7+%mOOQO7+%w7+%wO!LnQPO7+%wOOQO7+%r7+%rO!MmQPO7+%rO!MrQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9eQPO7+&UO9eQPO,5>[O#?TQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:|QPO'#GlO#?cQPO,5>]OOQO1G/_1G/_O:|QPO7+&lO#?nQQO,59eO#@tQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#@{QPO'#EYOgQPO,5jO#M{QPO,59TO#NSQPO'#IVO#N[QPO,5;oO*pQPO'#G{O#NaQPO,5>rOOQO1G.n1G.nOOQO<Z,5>ZOOQO,5=U,5=UOOQO-E:h-E:hO#NvQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO<kO$%tQPO'#EZOOQO1G0_1G0_O$%{QPO1G0_O?tQPO,5:pOOQO-E:s-E:sOOQO1G0Z1G0ZOOQO1G0n1G0nO$&QQQO1G0nOOQO<qOOQO1G1Z1G1ZO$+dQPO'#FUOOQO,5=g,5=gOOQO-E:y-E:yO$+iQPO'#GoO$+vQPO,5>cOOQO1G/u1G/uOOQO<sAN>sO!KqQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9eQPOAN?[OOQO1G0`1G0`O$,_QPO1G0`OOQO,5=b,5=bOOQO-E:t-E:tO$,mQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1`1G1`O$,tQQO1G1`OOQO-E:{-E:{O$,|QQO'#IYO$,wQPO1G1`O$&gQPO1G1`O*pQPO1G1`OOQOAN@]AN@]O$-XQQO<tO$.qQPO7+&zO$.vQQO'#IZOOQOAN@nAN@nO$/RQQOAN@nOOQOAN@jAN@jO$/YQPOAN@jO$/_QQO<uOOQOG26YG26YOOQOG26UG26UOOQO<lOWiXuiX%}iX&PiX&RiX&_iX~OZ!aX~P?XOu#OO%}TO&P#SO&R#SO~O%}TO~P3gOg^Oh^Ov#pO!u#rO!z#qO&_!hO&t#oO~O&P!cO&R!dO~P@ZOg^Oh^O%}TO&P!cO&R!dO~O}cO!P%aO~OZ%bO~O}%dO!m%gO~O}cOg&gXh&gXv&gX!S&gX!T&gX!U&gX!V&gX!W&gX!X&gX!Y&gX!Z&gX!]&gX!^&gX!_&gX!u&gX!z&gX%}&gX&P&gX&R&gX&_&gX&t&gX~OW%jOZ%kOgTahTa%}Ta&PTa&RTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#yTa#zTa$WTa$hTa&tTa&_TauTaYTaqTa|Ta!PTa~PC[O&W%nO&Y!tO~Ou#OO%}TOqma&^maYma&nma!Pma~O&vma}ma!rma~PEnO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$h!Ra&P!Ra&R!Ra&t!Ra&_!Ra~PFdO#z%pO~Os%rO~Ou%sO%}TO~Ou#OO%}ra&Pra&Rra&vraYrawra&nra&qra!Pra&^raqra~OWra#_ra#ara#bra#dra#era#fra#gra#hra#ira#kra#ora#rra&_ra#prasra|ra~PH_Ou#OO%}TOq&iX!P&iX!b&iX~OY&iX#p&iX~PJ`O!b%vOq!`X!P!`XY!`X~Oq%wO!P&hX~O!P%yO~Ov%zO~Og^Oh^O%}0oO&P!wO&RWO&b%}O~O&^&`P~PKmO%}TO&P!wO&RWO~OW&QXYiXY!aXY&QXZ&QXq!aXu&QXwiX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX&^&QX&_&QX&niX&n&QX&qiX&viX&v&QX&x!aX~P?XOWUXYUXY!aXY&]XZUXq!aXuUXw&]X!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX&^UX&_UX&nUX&n&]X&q&]X&vUX&v&]X&x!aX~P>lOg^Oh^O%}TO&P!wO&RWOg!RXh!RX&P!RX&R!RX~PFdOu#OOw&XO%}TO&P&UO&R&TO&q&WO~OW#XOY&aX&n&aX&v&aX~P!#YOY&ZO~P9oOg^Oh^O&P!wO&RWO~Oq&]OY&pX~OY&_O~Og^Oh^O%}TO&P!wO&RWOY&pP~PFdOY&dO&n&bO&v#vO~Oq&eO&x$ZOY&wX~OY&gO~O%}TOg%bah%bav%ba!S%ba!T%ba!U%ba!V%ba!W%ba!X%ba!Y%ba!Z%ba!]%ba!^%ba!_%ba!u%ba!z%ba$h%ba&P%ba&R%ba&t%ba&_%ba~O|&hO~P]O}&iO~Op&uOw&vO&PSO&R!qO&_#YO~Oz&tO~P!'iOz&xO&PSO&R!qO&_#YO~OY&eP~P:|Og^Oh^O%}TO&P!wO&RWO~O}cO~P:|OW#XOu#OO%}TO&v&aX~O#r$WO!P#sa#_#sa#a#sa#b#sa#d#sa#e#sa#f#sa#g#sa#h#sa#i#sa#k#sa#o#sa&^#sa&_#sa&n#saY#sa#p#sas#saq#sa|#sa~Oo'_O}'^O!r'`O&_!hO~O}'eO!r'`O~Oo'iO}'hO&_!hO~OZ#xOu'mO%}TO~OW%jO}'sO~OW%jO!P'uO~OW'vO!P'wO~O$h!WO&P0qO&R0pO!P&eP~P/uO!P(SO#p(TO~P9oO}(UO~O$c(WO~O!P(XO~O!P(YO~O!P(ZO~P9oO!P(]O~P9oOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdO%Q(hO%U(iOZ$}a_$}a`$}aa$}ab$}ac$}ae$}ag$}ah$}ap$}av$}aw$}az$}a}$}a!P$}a!S$}a!T$}a!U$}a!V$}a!W$}a!X$}a!Y$}a!Z$}a![$}a!]$}a!^$}a!_$}a!u$}a!z$}a#f$}a#r$}a#t$}a#u$}a#y$}a#z$}a$W$}a$Y$}a$`$}a$c$}a$e$}a$h$}a$l$}a$n$}a$s$}a$u$}a$w$}a$y$}a$|$}a%O$}a%w$}a%}$}a&P$}a&R$}a&X$}a&t$}a|$}a$a$}a$q$}a~O}ra!rra'Ora~PH_OZ%bO~PJ`O!P(mO~O!m%gO}&la!P&la~O}cO!P(pO~Oo(tOq!fX&^!fX~Oq(vO&^&mX~O&^(xO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)UOv{Ow)TOz!OO|)PO}cO!PvO![!`O!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&_#YO&tdO~PFdO}%dO~O})]OY&zP~P:|OW%jO!P)dO~Os)eO~Ou#OO%}TOq&ia!P&ia!b&iaY&ia#p&ia~O})fO~P:|Oq%wO!P&ha~Og^Oh^O%}0oO&P!wO&RWO~O&b)mO~P!8jOu#OO%}TOq&aX&^&aXY&aX&n&aX!P&aX~O}&aX!r&aX~P!9SOo)oOp)oOqnX&^nX~Oq)pO&^&`X~O&^)rO~Ou#OOw)tO%}TO&PSO&R!qO~OYma&nma&vma~P!:bOW&QXY!aXq!aXu!aX%}!aX~OWUXY!aXq!aXu!aX%}!aX~OW)wO~Ou#OO%}TO&P#SO&R#SO&q)yO~Og^Oh^O%}TO&P!wO&RWO~PFdOq&]OY&pa~Ou#OO%}TO&P#SO&R#SO&q&WO~OY)|O~OY*PO&n&bO~Oq&eOY&wa~Og^Oh^Ov{O|*XO!u}O%}TO&P!wO&RWO&tdO~PFdO!P*YO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#b^i#d^i#e^i#f^i#g^i#h^i#i^i#k^i#o^i#r^i&^^i&_^i&n^i&v^iY^i#p^is^iq^i|^i~OW*iO~Os*jO~P9oOz*kO&PSO&R!qO~O!P]iY]i#p]is]iq]i|]i~P9oOq*lOY&eX!P&eX~P9oOY*nO~O#f$SO#g$TO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#h$UO#i$UO~P!AmO#_#|O#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO&n#{O!P#^i#b#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#a#^i~P!CUO#a#}O~P!CUO#_#|O#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO!P#^i#a#^i#b#^i#d#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O&n#^i~P!DtO&n#{O~P!DtO#f$SO#g$TO#k$YO#r$WO!P#^i#a#^i#b#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#_#|O#d$QO#h$UO#i$UO&^#zO&_#zO&n#{O~P!FdO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#f#^i#h#^i#i#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#g$TO~P!G{O#g#^i~P!G{O#h#^i#i#^i~P!AmO#p*oO~P9oO#_&aX#a&aX#b&aX#d&aX#e&aX#f&aX#g&aX#h&aX#i&aX#k&aX#o&aX#r&aX&_&aX#p&aXs&aX|&aX~P!9SO!P#liY#li#p#lis#liq#li|#li~P9oO|*rO~P$wO}'^O~O}'^O!r'`O~Oo'_O}'^O!r'`O~O%}TO&P#SO&R#SO|&sP!P&sP~PFdO}'eO~Og^Oh^Ov{O|+PO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdO}'hO~Oo'iO}'hO~Os+RO~P:|Ou+TO%}TO~Ou'mO})fO%}TOW#Zi!P#Zi#_#Zi#a#Zi#b#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#i#Zi#k#Zi#o#Zi#r#Zi&^#Zi&_#Zi&n#Zi&v#ZiY#Zi#p#Zis#Ziq#Zi|#Zi~O}'^OW&diu&di!P&di#_&di#a&di#b&di#d&di#e&di#f&di#g&di#h&di#i&di#k&di#o&di#r&di&^&di&_&di&n&di&v&diY&di#p&dis&diq&di|&di~O#}+]O$P+^O$R+^O$S+_O$T+`O~O|+[O~P##nO$Z+aO&PSO&R!qO~OW+bO!P+cO~O$a+dOZ$_i_$_i`$_ia$_ib$_ic$_ie$_ig$_ih$_ip$_iv$_iw$_iz$_i}$_i!P$_i!S$_i!T$_i!U$_i!V$_i!W$_i!X$_i!Y$_i!Z$_i![$_i!]$_i!^$_i!_$_i!u$_i!z$_i#f$_i#r$_i#t$_i#u$_i#y$_i#z$_i$W$_i$Y$_i$`$_i$c$_i$e$_i$h$_i$l$_i$n$_i$s$_i$u$_i$w$_i$y$_i$|$_i%O$_i%w$_i%}$_i&P$_i&R$_i&X$_i&t$_i|$_i$q$_i~Og^Oh^O$h#sO&P!wO&RWO~O!P+hO~P:|O!P+iO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+nO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$q+oO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~O|+mO~P#)QOW&QXY&QXZ&QXu&QX!P&QX&viX&v&QX~P?XOWUXYUXZUXuUX!PUX&vUX&v&]X~P>lOW#tOu#uO&v#vO~OW&UXY%XXu&UX!P%XX&v&UX~OZ#XX~P#.VOY+uO!P+sO~O%Q(hO%U(iOZ$}i_$}i`$}ia$}ib$}ic$}ie$}ig$}ih$}ip$}iv$}iw$}iz$}i}$}i!P$}i!S$}i!T$}i!U$}i!V$}i!W$}i!X$}i!Y$}i!Z$}i![$}i!]$}i!^$}i!_$}i!u$}i!z$}i#f$}i#r$}i#t$}i#u$}i#y$}i#z$}i$W$}i$Y$}i$`$}i$c$}i$e$}i$h$}i$l$}i$n$}i$s$}i$u$}i$w$}i$y$}i$|$}i%O$}i%w$}i%}$}i&P$}i&R$}i&X$}i&t$}i|$}i$a$}i$q$}i~OZ+xO~O%Q(hO%U(iOZ%Vi_%Vi`%Via%Vib%Vic%Vie%Vig%Vih%Vip%Viv%Viw%Viz%Vi}%Vi!P%Vi!S%Vi!T%Vi!U%Vi!V%Vi!W%Vi!X%Vi!Y%Vi!Z%Vi![%Vi!]%Vi!^%Vi!_%Vi!u%Vi!z%Vi#f%Vi#r%Vi#t%Vi#u%Vi#y%Vi#z%Vi$W%Vi$Y%Vi$`%Vi$c%Vi$e%Vi$h%Vi$l%Vi$n%Vi$s%Vi$u%Vi$w%Vi$y%Vi$|%Vi%O%Vi%w%Vi%}%Vi&P%Vi&R%Vi&X%Vi&t%Vi|%Vi$a%Vi$q%Vi~Ou#OO%}TO}&oa!P&oa!m&oa~O!P,OO~Oo(tOq!fa&^!fa~Oq(vO&^&ma~O!m%gO}&li!P&li~O|,XO~P]OW,ZO~P5xOW&UXu&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UX~OZ#xO!P&UX~P#8^OW$gOZ#xO&v#vO~Op,]Ow,]O~Oq,^O}&rX!P&rX~O!b,`O#]#wOY&UXZ#XX~P#8^OY&SXq&SX|&SX!P&SX~P9oO})]O|&yP~P:|OY&SXg%[Xh%[X%}%[X&P%[X&R%[Xq&SX|&SX!P&SX~Oq,cOY&zX~OY,eO~O})fO|&kP~P:|Oq&jX!P&jX|&jXY&jX~P9oO&bTa~PC[Oo)oOp)oOqna&^na~Oq)pO&^&`a~OW,mO~Ow,nO~Ou#OO%}TO&P,rO&R,qO~Og^Oh^Ov#pO!u#rO&P!wO&RWO&t#oO~Og^Oh^Ov{O|,wO!u}O%}TO&P!wO&RWO&tdO~PFdOw-SO&PSO&R!qO&_#YO~Oq*lOY&ea!P&ea~O#_ma#ama#bma#dma#ema#fma#gma#hma#ima#kma#oma#rma&_ma#pmasma|ma~PEnO|-WO~P$wOZ#xO}'^Oq!|X|!|X!P!|X~Oq-[O|&sX!P&sX~O|-_O!P-^O~O&_!hO~P5VOg^Oh^Ov{O|-cO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdOs-dO~P9oOs-dO~P:|O}'^OW&dqu&dq!P&dq#_&dq#a&dq#b&dq#d&dq#e&dq#f&dq#g&dq#h&dq#i&dq#k&dq#o&dq#r&dq&^&dq&_&dq&n&dq&v&dqY&dq#p&dqs&dqq&dq|&dq~O|-hO~P##nO!W-lO$O-lO&PSO&R!qO~O!P-oO~O$Z-pO&PSO&R!qO~O!b%vO#p-rOq!`X!P!`X~O!P-tO~P9oO!P-tO~P:|O!P-wO~P9oO|-yO~P#)QO![$aO#p-zO~O!P-|O~O!b-}O~OY.QOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOY.QO!P.RO~O%Q(hO%U(iOZ%Vq_%Vq`%Vqa%Vqb%Vqc%Vqe%Vqg%Vqh%Vqp%Vqv%Vqw%Vqz%Vq}%Vq!P%Vq!S%Vq!T%Vq!U%Vq!V%Vq!W%Vq!X%Vq!Y%Vq!Z%Vq![%Vq!]%Vq!^%Vq!_%Vq!u%Vq!z%Vq#f%Vq#r%Vq#t%Vq#u%Vq#y%Vq#z%Vq$W%Vq$Y%Vq$`%Vq$c%Vq$e%Vq$h%Vq$l%Vq$n%Vq$s%Vq$u%Vq$w%Vq$y%Vq$|%Vq%O%Vq%w%Vq%}%Vq&P%Vq&R%Vq&X%Vq&t%Vq|%Vq$a%Vq$q%Vq~Ou#OO%}TO}&oi!P&oi!m&oi~O&n&bOq!ga&^!ga~O!m%gO}&lq!P&lq~O|.^O~P]Op.`Ow&vOz&tO&PSO&R!qO&_#YO~O!P.aO~Oq,^O}&ra!P&ra~O})]O~P:|Oq.gO|&yX~O|.iO~Oq,cOY&za~Oq.mO|&kX~O|.oO~Ow.pO~Oq!aXu!aX!P!aX!b!aX%}!aX~OZ&QX~P#N{OZUX~P#N{O!P.qO~OZ.rO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#b^y#d^y#e^y#f^y#g^y#h^y#i^y#k^y#o^y#r^y&^^y&_^y&n^y&v^yY^y#p^ys^yq^y|^y~OY%`aq%`a!P%`a~P9oO!P#nyY#ny#p#nys#nyq#ny|#ny~P9oO}'^Oq!|a|!|a!P!|a~OZ#xO}'^Oq!|a|!|a!P!|a~O%}TO&P#SO&R#SOq%jX|%jX!P%jX~PFdOq-[O|&sa!P&sa~O|!}X~P$wO|/PO~Os/QO~P9oOW%jO!P/RO~OW%jO$Q/WO&PSO&R!qO!P&|P~OW%jO$U/XO~O!P/YO~O!b%vO#p/[Oq!`X!P!`X~OY/^O~O!P/_O~P9oO#p/`O~P9oO!b/bO~OY/cOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOW#[Ou&[X%}&[X&P&[X&R&[X'O&[X~O&_#YO~P$)QOu#OO%}TO'O/eO&P%SX&R%SX~O&n&bOq!gi&^!gi~Op/iO&PSO&R!qO~OW*iOZ#xO~O!P/kO~OY&SXq&SX~P9oO})]Oq%nX|%nX~P:|Oq.gO|&ya~O!b/nO~O})fOq%cX|%cX~P:|Oq.mO|&ka~OY/qO~O!P/rO~OZ/sO~O}'^Oq!|i|!|i!P!|i~O|!}a~P$wOW%jO!P/wO~OW%jOq/xO!P&|X~OY/|O~P9oOY0OO~OY%Xq!P%Xq~P9oO'O/eO&P%Sa&R%Sa~OY0TO~O!P0WO~Ou#OO!P0YO!Z0ZO%}TO~OY0[O~Oq/xO!P&|a~O!P0_O~OW%jOq/xO!P&}X~OY0aO~P9oOY0bO~OY%Xy!P%Xy~P9oOu#OO%}TO&P%ua&R%ua'O%ua~OY0cO~O!P0dO~Ou#OO!P0eO!Z0fO%}TO~OW%jOq%ra!P%ra~Oq/xO!P&}a~O!P0jO~Ou#OO!P0jO!Z0kO%}TO~O!P0lO~O!P0nO~O#p&QXY&QXs&QXq&QX|&QX~P&bO#pUXYUXsUXqUX|UX~P(iO`Q_P#g%y&P&Xc&X~",goto:"#+S'OPPPP'P'd*x.OP'dPP.d.h0PPPPPP1nP3ZPP4v7l:[WP!?[P!Ap!BW!E]3ZPPP!F|!Jm!MaPP#!P#!SP#$`#$f#&V#&f#&n#'p#(Y#)T#)^#)a#)oP#)r#*OP#*V#*^P#*aP#*lP#*o#*r#*u#*y#+PstOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y'urOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%k%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)])f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,`,u-[-^-a-r-t-}.R.V.g.m/O/[/_/b/d/n/q0R0X0Z0[0f0h0k0r#xhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kt!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oQ#mdS&Y#`(}Q&l#oU&q#t$g,ZQ&x#vW(b%O+s.R/dU)Y%j'v+bQ)Z%kS)u&S,WU*f&s-R._Q*k&yQ,t*TQ-P*iQ.j,cR.t,uu!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oT%l!r)l#{qO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k#zlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kX(c%O+s.R/d$TVO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k$TkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rQ&Q#[Q)s&RV.T+x.X/e&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.T+x.X/e&O]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.U+x.X/eS#Z[.TS$f!O&tS&s#t$gQ&y#vQ)V%dQ-R*iR._,Z$kZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$_$l$m$n$o$p$q%O%d%g%k%v&b&d'_'`'i'm(O(T(U(t)Q)R)])f)o)p*P*l*o+T+d+h+i+l+o+s,Y,^,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ&O#YR,k)p&P_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0r!o#QY!e!x#R#T#`#n$]%R%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0h$SkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ$m!UQ$n!VQ$s!ZQ$|!`R+p(WQ#yiS'q$e*hQ*e&rQ+X'rS,[)T)UQ-O*gQ-Y*vQ.b,]Q.x-QQ.{-ZQ/j.`Q/u.yR0V/iQ'a$bW*[&m'b'c'dQ+W'qU,x*]*^*_Q-X*vQ-f+XS.u,y,zS.z-Y-ZQ/t.vR/v.{]!mP!o'^*q-^/OreOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!gP!o'^*q-^/OW#b`#e%b&]Q'}$oW(d%O+s.R/dS*U&i*WS*w'e-[S*|'h+OR.X+xh#VY!W!e#n#s%V'|*T*z+f,u-aQ)j%wQ)v&WR,o)y#xnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k^!kP!g!o'^*q-^/Ov#TY!W#`#n#s%w&W&[&`'|(`(})y*T+f+r,u.W/hQ#g`Q$b{Q$c|Q$d}W%S!e%V*z-aS%Y!h(vQ%`!iQ&m#pQ&n#qQ&o#rQ(u%ZS(y%^({Q*R&eS*v'e-[R-Z*wU)h%v)f.mR+V'p[!mP!o'^*q-^/OT*}'h+O^!iP!g!o'^*q-^/OQ'd$bQ'l$dQ*_&mQ*d&oV*{'h*|+OQ%[!hR,S(vQ(s%YR,R(u#znO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%c!kS(l%S(yR(|%`T#e`%bU#c`#e%bR)z&]Q%f!lQ(n%UQ(r%XQ,U(zR.],VrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OQ%P!bQ%a!jQ%i!pQ'[$ZQ([$|Q(k%QQ(p%WQ+z(iR.Y+yrtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OS*V&i*WT*}'h+OQ'c$bS*^&m'dR,z*_Q'b$bQ'g$cU*]&m'c'dQ*a&nS,y*^*_R.v,zQ*u'`R+Q'iQ'k$dS*c&o'lR,}*dQ'j$dU*b&o'k'lS,|*c*dR.w,}rtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OT*}'h+OQ'f$cS*`&n'gR,{*aQ*x'eR.|-[R-`*yQ&j#mR*Z&lT*V&i*WQ%e!lS(q%X%fR,P(rR)R%dWk%O+s.R/d#{lO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k$SiO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kU&r#t$g,ZS*g&s._Q-Q*iR.y-RT'o$e'p!_#|m#a$r$z$}&w&z&{'O'P'Q'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q!]$Pm#a$r$z$}&w&z&{'O'P'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q#{nO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0ka)^%k)],`.g/n0Z0f0kQ)`%kR.k,cQ't$hQ)b%oR,f)cT+Y's+ZsvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YruOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YQ$w!]R$y!^R$p!XrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YR(O$oR$q!XR(V$sT+k(U+lX(f%P(g(k+{R+y(hQ.W+xR/h.XQ(j%PQ+w(gQ+|(kR.Z+{R%Q!bQ(e%OV.P+s.R/dQxOQ#lcW$`x#l)Q,YQ)Q%dR,Y)RrXOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Yn!fP!o#e&]&i'^'e'h*W*q+O+x-[-^/Ol!zX!f#P#_#i$[%Z%_%{&R'n'{)O0r!j#PY!e!x#T#`#n$]%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0hQ#_`Q#ia#d$[op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%g%k%v&b&d'_'`'i'm(O(T(t)])f)o*P*l*o+T+h+i+o,^,`-r-t-}.g.m/[/_/b/n0Z0f0kS%Z!h(vS%_!i*{S%{#Y)pQ&R#[S'n$e'pY'{$o%O+s.R/dQ)O%bR0r$YQ!uUR%m!uQ)q&OR,l)q^#RY#`$]'X'|(`*px%R!e!x#n%V%^%|&S&[&`({(}*T*z+f+r,W,u-a.V0R[%t#R%R%u+}0X0hS%u#T%SQ+}(lQ0X/qR0h0[Q*m&{R-U*mQ!oPU%h!o*q/OQ*q'^R/O-^!pbOP`cx![!o#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h(U)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dY!yX!f#_'{)OT#jb!yQ.n,gR/p.nQ%x#VR)k%xQ&c#fS*O&c.[R.[,QQ(w%[R,T(wQ&^#cR){&^Q,_)WR.d,_Q+O'hR-b+OQ-]*xR.}-]Q*W&iR,v*WQ'p$eR+U'pQ&f#gR*S&fQ.h,aR/m.hQ,d)`R.l,dQ+Z'sR-g+ZQ-k+]R/T-kQ/y/US0^/y0`R0`/{Q+l(UR-x+lQ(g%PS+v(g+{R+{(kQ/f.VR0S/fQ+t(eR.S+t`wOcx#l%d)Q)R,YQ$t![Q']$_Q'y$mQ'z$nQ(Q$pQ(R$qS+k(U+lR-q+d'dsOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,u-[-^-a-r-t-}.R.V.m/O/[/_/b/d/q0R0X0[0h0ra)_%k)],`.g/n0Z0f0kQ!rTQ$h!QQ$i!SQ$j!TQ%o!{Q%q!}Q'x$kQ)c%pQ)l0oS-i+]+_Q-m+^Q-n+`Q/S-kS/U-m/WQ/{/XR0]/x%uSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$g$k$l$m$n$o$p$q%O%d%j%k%p%v&S&d&s&y'm'v(O(T(U(})Q)R)])f*P*T*i*l*o+T+]+^+_+`+b+d+h+i+l+o+s,W,Y,Z,`,c,u-R-k-m-r-t-}.R._.g.m/W/X/[/_/b/d/n/x0Z0f0k0oQ)a%kQ,a)]S.f,`/nQ/l.gQ0g0ZQ0i0fR0m0krmOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YS#a`$lQ$WoQ$^pQ$r!YQ$z!_Q$}!aQ&w#uQ&z#wY&{#x$o+h-t/_Q&}#|Q'O#}Q'P$OQ'Q$PQ'R$QQ'S$RQ'T$SQ'U$TQ'V$UQ'W$VQ'Z$Z^)[%k)].g/n0Z0f0kU)g%v)f.mQ*Q&dQ+S'mQ+g(OQ+j(TQ,p*PQ-T*lQ-V*oQ-e+TQ-v+iQ-{+oQ.e,`Q/Z-rQ/a-}Q/}/[R0Q/b#xgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kW(a%O+s.R/dR)S%drYOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!eP!o'^*q-^/OW!xX$[%{'{Q#``Q#ne#S$]op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%k%v&d'm(O(T)])f*P*l*o+T+h+i+o,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%V!gS%^!i*{d%|#Y%g&b'_'`'i(t)o)p,^Q&S#_Q&[#bS&`#e&]Q'X$YQ'|$oW(`%O+s.R/dQ({%_Q(}%bS*T&i*WQ*p0rS*z'h+OQ+f'}Q+r(dQ,W)OQ,u*UQ-a*|S.V+x.XR0R/e&O_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rQ$e!OQ'r$fR*h&t&ZWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&R&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rR&P#Y$QjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ#f`Q&O#YQ'Y$YU)W%g'`'iQ)}&bQ*s'_Q,Q(tQ,j)oQ,k)pR.c,^Q)n%}R,i)m$SfO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kT&p#t,ZQ&|#xQ(P$oQ-u+hQ/]-tR0P/_]!nP!o'^*q-^/O#PaOPX`bcx![!f!o!y#_#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h'{(U)O)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dU#WY!W'|Q%T!eU&k#n#s+fQ(o%VS,s*T*zT.s,u-aj#UY!W!e#n#s%V%w&W)y*T*z,u-aU&V#`&`(}Q)x&[Q+e'|Q+q(`Q-s+fQ.O+rQ/g.WR0U/hQ)i%vQ,g)fR/o.mR,h)f`!jP!o'^'h*q+O-^/OT%W!g*|R%]!hW%U!e%V*z-aQ(z%^R,V({S#d`%bR&a#eQ)X%gT*t'`'iR*y'e[!lP!o'^*q-^/OR%X!gR#h`R,b)]R)a%kT-j+]-kQ/V-mR/z/WR/z/X",nodeNames:"⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp LogicOp BitOp BitOp BitOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent",maxTerm:276,nodeProps:[["isolate",-4,1,2,18,19,""],["group",-26,4,47,76,77,82,87,92,145,147,150,151,153,156,158,161,163,165,167,172,174,176,178,180,181,183,191,"Statement",-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,118,120,122,125,127,130,"Expression",-7,23,24,25,26,27,29,34,"Type"],["openedBy",10,"(",44,"{"],["closedBy",11,")",45,"}"]],propSources:[iEr],skippedNodes:[0,1,2],repeatNodeCount:28,tokenData:"#'f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5zvw7[wx8rxyAZyzAwz{Be{|CZ|}Dq}!OE_!O!PFx!P!Q! r!Q!R!,h!R![!0`![!]!>p!]!^!@Q!^!_!@n!_!`!BX!`!a!B{!a!b!Di!b!c!EX!c!}!LT!}#O!Mj#O#P%Q#P#Q!NW#Q#R!Nt#R#S4e#S#T%Q#T#o4e#o#p# h#p#q#!U#q#r##n#r#s#$[#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4eS%VV&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS%qO&YSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS&vP;=`<%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZS'cP;=`<%l&Z_'mk&YS%yZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s<%lO%Q_)iY&YS%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#tP&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QU+wV#_Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT-qX&YSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZT.}V&YSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT/iW&YSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V<%lO0RP1YP;=`<%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT3PP;=`<%l-lT3VP;=`<%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`<%lO&ZT3yR&WSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&XP_4lb&YS&PZOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o$g%Q$g;'S4e;'S;=`5t<%lO4e_5wP;=`<%l4eU6RX#hQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU6uV#]Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV7cZ&nR&YSOY%QYZ%lZr%Qrs%qsv%Qvw8Uw!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU8]V#aQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT8wZ&YSOY9jYZ%lZr9jrs:xsw9jwx%Qx#O9j#O#PhYZ%lZr>hrs?dsw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hT>kZOYhYZ%lZr>hrs@Ysw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hP@]VOY@YZw@Ywx@rx#O@Y#P;'S@Y;'S;=`@w<%lO@YP@wObPP@zP;=`<%l@YTAQP;=`<%l>hTAWP;=`<%l9j_AbVZZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBOVYR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBnX$ZP&YS#gQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVCbZ#fR&YSOY%QYZ%lZr%Qrs%qs{%Q{|DT|!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVD[V#rR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVDxVqR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVEf[#fR&YSOY%QYZ%lZr%Qrs%qs}%Q}!ODT!O!_%Q!_!`6n!`!aF[!a;'S%Q;'S;=`&s<%lO%QVFcV&xR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_GPZWY&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGr!P!Q%Q!Q![IQ![;'S%Q;'S;=`&s<%lO%QVGwX&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHd!P;'S%Q;'S;=`&s<%lO%QVHkV&qR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTIXc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#R%Q#R#SNz#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTJkV&YS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTKV]&YSOY%QYZ%lZr%Qrs%qs{%Q{|LO|}%Q}!OLO!O!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLTX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLwc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![!f%Q!f!gJd!g!h%Q!h!iJd!i#R%Q#R#SNS#S#W%Q#W#XJd#X#Y%Q#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTNXZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![#R%Q#R#SNS#S;'S%Q;'S;=`&s<%lO%QT! PZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![#R%Q#R#SNz#S;'S%Q;'S;=`&s<%lO%Q_! y]&YS#gQOY%QYZ%lZr%Qrs%qsz%Qz{!!r{!P%Q!P!Q!)e!Q!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%Q_!!wX&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!#iT&YSOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!#{TOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!$_VOz!#xz{!$[{!P!#x!P!Q!$t!Q;'S!#x;'S;=`!$y<%lO!#xZ!$yOQZZ!$|P;=`<%l!#x_!%SXOY!%oYZ!#dZr!%ors!'ysz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!%rXOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!&dZ&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!'^V&YSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!'vP;=`<%l!!r_!'|XOY!%oYZ!#dZr!%ors!#xsz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!(lZOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!)bP;=`<%l!%o_!)lV&YSPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!*WVPZOY!*mYZ%lZr!*mrs!+_s;'S!*m;'S;=`!,b<%lO!*m_!*rVPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!+[P;=`<%l!)e_!+dVPZOY!*mYZ%lZr!*mrs!+ys;'S!*m;'S;=`!,b<%lO!*mZ!,OSPZOY!+yZ;'S!+y;'S;=`!,[<%lO!+yZ!,_P;=`<%l!+y_!,eP;=`<%l!*mT!,ou&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!d%Q!d!e!3j!e!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o!q%Q!q!r!5h!r!z%Q!z!{!7`!{#R%Q#R#S!2r#S#U%Q#U#V!3j#V#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a#c%Q#c#d!5h#d#l%Q#l#m!7`#m;'S%Q;'S;=`&s<%lO%QT!/Za&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QT!0gi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o#R%Q#R#S!2r#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!2]V&YS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT!2wZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0`![#R%Q#R#S!2r#S;'S%Q;'S;=`&s<%lO%QT!3oY&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S;'S%Q;'S;=`&s<%lO%QT!4f`&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S!n%Q!n!o!2U!o#R%Q#R#S!3j#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!5mX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y;'S%Q;'S;=`&s<%lO%QT!6a_&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y!n%Q!n!o!2U!o#R%Q#R#S!5h#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!7e_&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8d!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QT!8i]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i#T%Q#T#Z!9b#Z;'S%Q;'S;=`&s<%lO%QT!9gc&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#R%Q#R#S!8d#S#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!:yi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!wX#pR&YSOY%QYZ%lZr%Qrs%qs![%Q![!]!?d!];'S%Q;'S;=`&s<%lO%QV!?kV&vR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!@XV!PR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!@uY&_Z&YSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!Ae!_!`+p!`;'S%Q;'S;=`&s<%lO%QU!AlX#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV!B`X!bR&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QV!CSY&^R&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Cr!a;'S%Q;'S;=`&s<%lO%QU!CyY#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`!a!Ae!a;'S%Q;'S;=`&s<%lO%Q_!DrV&bX#oQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!E`X%}Z&YSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!E{#^;'S%Q;'S;=`&s<%lO%QV!FQX&YSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fm#c;'S%Q;'S;=`&s<%lO%QV!FrX&YSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!G_#i;'S%Q;'S;=`&s<%lO%QV!GdX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!HP#Y;'S%Q;'S;=`&s<%lO%QV!HUX&YSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hq#g;'S%Q;'S;=`&s<%lO%QV!HvX&YSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!Ic#Z;'S%Q;'S;=`&s<%lO%QV!IhX&YSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!JT#U;'S%Q;'S;=`&s<%lO%QV!JYX&YSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Ju#W;'S%Q;'S;=`&s<%lO%QV!JzX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Kg#Y;'S%Q;'S;=`&s<%lO%QV!KnV&tR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!L[b&RZ&YSOY%QYZ%lZr%Qrs%qst%Qtu!LTu!Q%Q!Q![!LT![!c%Q!c!}!LT!}#R%Q#R#S!LT#S#T%Q#T#o!LT#o$g%Q$g;'S!LT;'S;=`!Md<%lO!LT_!MgP;=`<%l!LT_!MqVuZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!N_VsR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QU!N{X#eQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV# oV}R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#!_Z'OX#dQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`#p%Q#p#q##Q#q;'S%Q;'S;=`&s<%lO%QU##XV#bQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV##uV|R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT#$cV#uP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#%Ru&YS%yZ&PZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4e",tokenizers:[0,1,2,3],topRules:{Program:[0,3],ClassContent:[1,194]},dynamicPrecedences:{27:1,232:-1,243:-1},specialized:[{term:231,get:e=>rEr[e]||-1}],tokenPrec:7144}),kLn=Vd.define({name:"java",parser:oEr.configure({props:[Vu.add({IfStatement:Pu({except:/^\s*({|else\b)/}),TryStatement:Pu({except:/^\s*({|catch|finally)\b/}),LabeledStatement:mpe,SwitchBlock:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},Block:Xv({closing:"}"}),BlockComment:()=>null,Statement:Pu({except:/^{/})}),kh.add({"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody ConstructorBody InterfaceBody ArrayInitializer":bA,BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\})$/}});function sEr(){return new wd(kLn)}const aEr=Object.freeze(Object.defineProperty({__proto__:null,java:sEr,javaLanguage:kLn},Symbol.toStringTag,{value:"Module"})),lEr=1,cEr=2,dEr=3,uEr=155,hEr=4,fEr=156;function gEr(e){return e>=65&&e<=90||e>=97&&e<=122}const mEr=new go(e=>{let t=e.pos;for(;;){let{next:n}=e;if(n<0)break;if(n==123){let r=e.peek(1);if(r==123){if(e.pos>t)break;e.acceptToken(lEr,2);return}else if(r==35){if(e.pos>t)break;e.acceptToken(cEr,2);return}else if(r==37){if(e.pos>t)break;let o=2,s=2;for(;;){let a=e.peek(o);if(a==32||a==10)++o;else if(a==35)for(++o;;){let l=e.peek(o);if(l<0||l==10)break;o++}else if(a==45&&s==2)s=++o;else{e.acceptToken(dEr,s);return}}}}if(e.advance(),n==10)break}e.pos>t&&e.acceptToken(uEr)});function kEr(e,t,n){return new go(r=>{let o=r.pos;for(;;){let{next:s}=r;if(s==123&&r.peek(1)==37){let a=2;for(;;a++){let d=r.peek(a);if(d!=32&&d!=10)break}let l="";for(;;a++){let d=r.peek(a);if(!gEr(d))break;l+=String.fromCharCode(d)}if(l==e){if(r.pos>o)break;r.acceptToken(n,2);break}}else if(s<0)break;if(r.advance(),s==10)break}r.pos>o&&r.acceptToken(t)})}const vEr=kEr("endraw",fEr,hEr),AEr={__proto__:null,in:38,is:40,and:46,or:48,not:52,if:78,else:80,true:98,false:98,self:100,super:102,loop:104,recursive:136,scoped:160,required:162,as:256,import:260,ignore:268,missing:270,with:272,without:274,context:276},pEr={__proto__:null,if:112,elif:118,else:122,endif:126,for:132,endfor:140,raw:146,endraw:152,block:158,endblock:166,macro:172,endmacro:182,call:188,endcall:192,filter:198,endfilter:202,set:208,endset:212,trans:218,pluralize:222,endtrans:226,with:232,endwith:236,autoescape:242,endautoescape:246,import:254,from:258,include:266},bEr=zd.deserialize({version:14,states:"!*dQVOPOOOOOP'#F`'#F`OeOTO'#CbOvQSO'#CdO!kOPO'#DcO!yOPO'#DnO#XOQO'#DuO#^OPO'#D{O#lOPO'#ESO#zOPO'#E[O$YOPO'#EaO$hOPO'#EfO$vOPO'#EkO%UOPO'#ErO%dOPO'#EwOOOP'#F|'#F|O%rQWO'#E|O&sO#tO'#F]OOOP'#Fq'#FqOOOP'#F_'#F_QVOPOOOOOP-E9^-E9^OOQO'#Ce'#CeO'sQSO,59OO'zQSO'#DWO(RQSO'#DXO(YQ`O'#DZOOQO'#Fr'#FrOvQSO'#CuO(aOPO'#CbOOOP'#Fd'#FdO!kOPO,59}OOOP,59},59}O(oOPO,59}O(}QWO'#E|OOOP,5:Y,5:YO)[OPO,5:YO!yOPO,5:YO)jQWO'#E|OOOQ'#Ff'#FfO)tOQO'#DxO)|OQO,5:aOOOP,5:g,5:gO#^OPO,5:gO*RQWO'#E|OOOP,5:n,5:nO#lOPO,5:nO*YQWO'#E|OOOP,5:v,5:vO#zOPO,5:vO*aQWO'#E|OOOP,5:{,5:{O$YOPO,5:{O*hQWO'#E|OOOP,5;Q,5;QO$hOPO,5;QO*oQWO'#E|OOOP,5;V,5;VO*vOPO,5;VO$vOPO,5;VO+UQWO'#E|OOOP,5;^,5;^O%UOPO,5;^O+`QWO'#E|OOOP,5;c,5;cO%dOPO,5;cO+gQWO'#E|O+nQSO,5;hOvQSO,5:OO+uQSO,5:ZO+zQSO,5:bO+uQSO,5:hO+uQSO,5:oO,PQSO,5:wO,XQpO,5:|O+uQSO,5;RO,^QSO,5;WO,fQSO,5;_OvQSO,5;dOvQSO,5;jOvQSO,5;jOvQSO,5;pOOOO'#Fk'#FkO,nO#tO,5;wOOOP-E9]-E9]O,vQ!bO,59QOvQSO,59TOvQSO,59UOvQSO,59UOvQSO,59UOvQSO,59UO,{QSO'#C}O,XQpO,59cOOQO,59q,59qOOOP1G.j1G.jOvQSO,59UO-SQSO,59UOvQSO,59UOvQSO,59UOvQSO,59nO-wQSO'#FxO.RQSO,59rO.WQSO,59tOOQO,59s,59sO.bQSO'#D[O.iQWO'#F{O.qQWO,59uO0WQSO,59aOOOP-E9b-E9bOOOP1G/i1G/iO(oOPO1G/iO(oOPO1G/iO)TQWO'#E|OvQSO,5:SO0nQSO,5:UO0sQSO,5:WOOOP1G/t1G/tO)[OPO1G/tO)mQWO'#E|O)[OPO1G/tO0xQSO,5:_OOOQ-E9d-E9dOOOP1G/{1G/{O0}QWO'#DyOOOP1G0R1G0RO1SQSO,5:lOOOP1G0Y1G0YO1[QSO,5:tOOOP1G0b1G0bO1aQSO,5:yOOOP1G0g1G0gO1fQSO,5;OOOOP1G0l1G0lO1kQSO,5;TOOOP1G0q1G0qO*vOPO1G0qO+XQWO'#E|O*vOPO1G0qOvQSO,5;YO1pQSO,5;[OOOP1G0x1G0xO1uQSO,5;aOOOP1G0}1G0}O1zQSO,5;fO2PQSO1G1SOOOP1G1S1G1SO2WQSO1G/jOOQO'#Dq'#DqO2_QSO1G/uOOOQ1G/|1G/|O2gQSO1G0SO2rQSO1G0ZO2zQSO'#EVO3SQSO1G0cO,SQSO1G0cO4fQSO'#FvOOQO'#Fv'#FvO5]QSO1G0hO5bQSO1G0mOOOP1G0r1G0rO5mQSO1G0rO5rQSO'#GOO5zQSO1G0yO6PQSO1G1OO6WQSO1G1UO6_QSO1G1UO6fQSO1G1[OOOO-E9i-E9iOOOP1G1c1G1cOOQO1G.l1G.lO6vQSO1G.oO8wQSO1G.pO:oQSO1G.pO:vQSO1G.pOQQSO'#FrO>XQSO'#FwO>aQSO,59iOOQO1G.}1G.}O>fQSO1G.pO@aQSO1G.pOB_QSO1G.pOBfQSO1G.pOD^QSO1G/YOvQSO'#FbODeQSO,5gOOOPAN>gAN>gO! }QSOAN>gOOOPAN>tAN>tO!!SQSO1G0^O!!^QSO,5SQ`O1G.pP!>ZQ`O1G.pP!>bQ`O1G/YP!?QQ`O<mOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOp!}O$i!xOV^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P@nOg#TO~P@nOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOp!}O$i!xOVvilviwvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox&gO~PBmOt%PO$h$la~Oo&jOt%PO~OekOfkOj(yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%VO$m$oa~O!]#eO~P%rO!Z&pO~P&xO!Z&rO~O!Z&sO~O!Z&uO~P&xOc&xOt%rO~O!Z&zO~O!Z&zO!s&{O~O!Z&|O~Os&}Ot'OOo$qX~Oo'QO~O!Z'RO~Op!}O!Z'RO~Os'TOt%rO~Os'WOt%rO~O$g'ZO~O$O'_O~O#{'`O~Ot&bOo$ka~Ot$Ua$h$Uao$Ua~P&xOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOl)OOp!}Ow)TO$i!xO~Ot!Oi$m!Oi~PHrO!P'hO~P&xO!Z'jO!f'kO~P&xO!Z'lO~Ot'OOo$qa~O!Z'qO~O!Z'sO~P&xOt'tO!Z'vO~P&xOt'xO!Z$ri~P&xO!Z'zO~Ot!eX!Z!eX#tXX~O#t'{O~Ot'|O!Z'zO~O!Z(OO~O!Z(OO#|(PO#}(PO~Oo$Tat$Ta~P&xOs(QO~P=POoritri~P&xOZ!wOp!}O$i!xOVvylvywvytvy$hvyovy!Pvy!Zvy#tvy#vvy#zvy#|vy#}vyxvy!fvy~O_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UO~PLsOZ!wOp!}O$i!xOgiahialiatiawia$miaxia~O_(zO`({Oa(|Ob(}Oc)POd)QO~PNkO!Z(^O!f(_O~P&xO!Z(^O~Oo!zit!zi~P&xOs(`Oo$Zat$Za~O!Z(aO~P&xOt'tO!Z(dO~Ot'xO!Z$rq~P&xOt'xO!Z$rq~Ot'|O!Z(kO~O$O(lO~OZ!wOp!}O$i!xO`^ia^ib^ic^id^ig^ih^il^it^iw^i$m^ie^if^i$g^ix^i~O_^i~P!#iOZ!wO_(zOp!}O$i!xOa^ib^ic^id^ig^ih^il^it^iw^i$m^ix^i~O`^i~P!$zO`({O~P!$zOZ!wO_(zO`({Oa(|Op!}O$i!xOc^id^ig^ih^il^it^iw^i$m^ix^i~Ob^i~P!&ZO$m$jX~P3[Ob(}O~P!&ZOZ!wO_)zO`){Oa)|Ob)}Oc*OOp!}O$i!xOd^ig^ih^il^it^iw^i$m^ix^i~Oe&fOf&fO$gfO~P!'qOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOp!}O$i!xOh^il^it^iw^i$m^ix^i~Og^i~P!)SOg)RO~P!)SOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xOlvitviwvi$mvi~Ox)WO~P!*cOt!Qi$m!Qi~PHrO!Z(nO~Os(pO~Ot'xO!Z$ry~Os(rOt%rO~O!Z(sO~Oouitui~P&xOo!{it!{i~P&xOs(vOt%rO~OZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xO~Olvytvywvy$mvyxvy~P!-SOt$[q!Z$[q~P&xOt$]q!Z$]q~P&xOt$]y!Z$]y~P&xOm(VO~OekOfkOj)yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Oe^if^i$g^i~P>mOxvi~PBmOe^if^i$g^i~P!'qOxvi~P!*cO_)gO`)hOa)iOb)jOc)kOd)ZOeiafia$gia~P.vOZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOp!}O$i!xOV^ie^if^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P!1_Og)lO~P!1_OZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOp!}O$i!xOVvievifvilviwvi$gvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox)sO~P!3gO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOevyfvy$gvy~PLsOxvi~P!3gOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOg*POh*QOp!}O$i!xOevifvilvitviwvi$gvi$mvi~Oxvi~P!6fO_)gO~P6}OZ!wO_)gO`)hOp!}O$i!xOV^ib^ic^id^ie^if^ig^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oa^i~P!8OOa)iO~P!8OOZ!wOp!}O$i!xOc^id^ie^if^ig^ih^il^iw^i$g^it^ix^i~O_)gO`)hOa)iOb)jOV^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^i!f^i~P!:WO_)zO`){Oa)|Ob)}Oc*OOd)bOeiafia$gia~PNkOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOp!}O$i!xOe^if^ih^il^it^iw^i$g^i$m^ix^i~Og^i~P!iO_)zO~P!#iO_)zO`){Oa^ib^i$m^i~P!:WO_)zO`){Oa)|Ob^i$m^i~P!:WO_)zO`){Oa)|Ob)}O$m^i~P!:WOfaZa~",goto:"Cy$sPPPPPP$tP$t%j'sPP's'sPPPPPPPPPP'sP'sPP)jPP)o+nPP+q'sPP's's's's's+tP+wPPPP+z,pPPP-fP-jP-vP+z.UP.zP/zP+z0YP1O1RP+z1UPPP1zP+z2QP2v2|3P3SP+z3YP4OP+z4UP4zP+z5QP5vP+z5|P6rP6xP+z7WP7|P+z8SP8xP$t$t$tPPPP9O$tPPPPPP$tP9U:j;f;m;w;}YPPPCcCjCmPPCp$tCsCv!gbOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k$dkRhijl!e!f!p!q!r!s!x!y!z!{!|#R#S#T#U#V#e$O%P%U%V%t&U&V&X&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UQ$_!kQ$v!}Q&P$`S&f${(XS']&]'|R'b&b$ikRhijl!e!f!p!q!r!s!x!y!z!{!|!}#R#S#T#U#V#e$O%P%U%V%t&U&V&X&b&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UV$b!l#O)O$d#Pg#W#Y#[#_$U$W$i$j$k$l$p$q$r$s$t$u$z${$|$}%O%]%l&h&k&l&y'U'V'X'a'e'f'g'i'm'r'w(R(S(T(U(W(X(Y(Z([(](m(o(t(u(w(x)U)V)X)Y)])^)_)`)a)d)e)o)p)q)r)t)u)v)w)x*V*W*X*YQ&O$_S&Q$a(VR'S&PR$w!}R'c&bR#]jR&m%V!g_OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k!gSOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQqSQtTQ#boR#kuQpSS#aoqS%Z#b#cR&o%[!gTOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$Y!gQ$[!iQ$]!jQ$d!mQ$f!nQ$g!oQ%e#qQ%z$^Q&v%rQ'Y&[S'[&]'|Q'n'OQ(b'tQ(f'xR(h'{QsTS#htuS%`#i#kR&q%a!gUOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kRyUR#ny!gVOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQzVR#p{!gWOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$`!kR%y$]R%{$^R'o'OQ}WR#r!O!gXOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!QXR#t!R!gYOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!TYR#v!U!gZOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!WZR#x!X!g[OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ![[R#}!]Q!Z[S#z![!]S%j#{#}R&t%k!g]OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!_]R$Q!`!g^OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!b^R$S!cQ'^&]R(i'|QdOQuTQ{VQ!OWQ!RXQ!UYQ!XZQ!][Q!`]Q!c^p!vdu{!O!R!U!X!]!`!c#c#i#{%[%a%kQ#cqQ#itQ#{![Q%[#bQ%a#kR%k#}SQOdSeQm!cmSTVWXYZ[]^oqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kS&c$u$wR'd&cQ%Q#WQ%S#YT&i%Q%SQ%W#]R&n%WQoSR#`oQ%s$YQ&S$dQ&W$gW&w%s&S&W(qR(q(fQxUR#mxS'P%z%{R'p'PQ'u'VR(c'uQ'y'XQ(e'wT(g'y(eQ'}'^R(j'}Q!uaR$m!u!bcOTVWXYZ[]^dqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQgRQ#WhQ#YiQ#[jQ#_lQ$U!eQ$W!fQ$i!pQ$j!qQ$k!rQ$l!sQ$p!xS$q!y)gQ$r!zQ$s!{Q$t!|Q$u!}Q$z#RQ${#SQ$|#TQ$}#UQ%O#VQ%]#eQ%l$OQ&h%PQ&k%UQ&l%VQ&y%tQ'U&UQ'V&VQ'X&XQ'a&bQ'e&dQ'f&gQ'g(yQ'i&xQ'm&}Q'r'TQ'w'WS(R(z)zQ(S({Q(T(|Q(U(}Q(W)PQ(X)QQ(Y)RQ(Z)SQ([)TQ(]'hQ(m(QQ(o(`Q(t)WQ(u(pQ(w(rQ(x(vQ)U)ZQ)V)[Q)X)bQ)Y)cQ)])fQ)^)lQ)_)mQ)`)nQ)a)sQ)d*TQ)e*UQ)o)hQ)p)iQ)q)jQ)r)kQ)t)yQ)u*PQ)v*QQ)w*RQ)x*SQ*V){Q*W)|Q*X)}R*Y*OQ$c!lT$y#O)OR$x!}R#XhR#^jR%|$^R$h!o",nodeNames:"⚠ {{ {# {% {% Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression ConcatOp ArithOp ArithOp CompareOp in is StringLiteral NumberLiteral and or NotExpression not FilterExpression FilterOp FilterName FilterCall ) ( ArgumentList NamedArgument AssignOp , NamedArgument ConditionalExpression if else CallExpression ArrayExpression TupleExpression ParenthesizedExpression DictExpression Entry : Entry BooleanLiteral self super loop IfStatement Tag TagName if %} Tag elif Tag else EndTag endif ForStatement Tag for Definition recursive EndTag endfor RawStatement Tag raw RawText EndTag endraw BlockStatement Tag block scoped required EndTag endblock MacroStatement Tag macro ParamList OptionalParameter OptionalParameter EndTag endmacro CallStatement Tag call EndTag endcall FilterStatement Tag filter EndTag endfilter SetStatement Tag set EndTag endset TransStatement Tag trans Tag pluralize EndTag endtrans WithStatement Tag with EndTag endwith AutoescapeStatement Tag autoescape EndTag endautoescape Tag Tag Tag import as from import ImportItem Tag include ignore missing with without context Comment #}",maxTerm:173,nodeProps:[["closedBy",1,"}}",2,"#}",-2,3,4,"%}",32,")"],["openedBy",7,"{{",31,"(",57,"{%",140,"{#"],["group",-18,9,10,13,14,21,22,25,27,38,41,42,43,44,45,49,50,51,52,"Expression",-11,53,64,71,77,84,92,97,102,107,114,119,"Statement"]],skippedNodes:[0],repeatNodeCount:13,tokenData:".|~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vuv&nwx&{xy)nyz)sz{)x{|*V|}+|}!O,R!O!P,g!P!Q,o!Q![+h![!],w!^!_,|!_!`-U!`!a,|!c!}-^!}#O.U#P#Q.Z#R#S-^#T#o-^#o#p.`#p#q.e#q#r.j#r#s.w%W;'S-^;'S;:j.O<%lO-^~#_S$d~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOb~~#yWOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~$hOe~~$kYOY#vYZ#vZr#vrs%Zs#O#v#O#P$h#P;'S#v;'S;=`&O;=`<%l#v<%lO#v~%`We~OY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~%{P;=`<%l#v~&RXOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x;=`<%l#v<%lO#v~&sP`~#q#r&v~&{O!Z~~'OWOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~'kYOY&{YZ&{Zw&{wx(Zx#O&{#O#P'h#P;'S&{;'S;=`)O;=`<%l&{<%lO&{~(`We~OY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~({P;=`<%l&{~)RXOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x;=`<%l&{<%lO&{~)sOp~~)xOo~~)}P`~z{*Q~*VO`~~*[Qa~!O!P*b!Q![+h~*eP!Q![*h~*mSf~!Q![*h!g!h*y#R#S*h#X#Y*y~*|R{|+V}!O+V!Q![+]~+YP!Q![+]~+bQf~!Q![+]#R#S+]~+mTf~!O!P*b!Q![+h!g!h*y#R#S+h#X#Y*y~,ROt~~,WRa~uv,a!O!P*b!Q![+h~,dP#q#r&v~,lPZ~!Q![*h~,tP`~!P!Q*Q~,|O!P~~-RPb~!_!`#q~-ZPs~!_!`#q!`-iVm`[p!XS$gY!Q![-^!c!}-^#R#S-^#T#o-^%W;'S-^;'S;:j.O<%lO-^!`.RP;=`<%l-^~.ZO$i~~.`O$h~~.eO$n~~.jOl~^.oP$m[#q#r.rQ.wOVQ~.|O_~",tokenizers:[mEr,vEr,1,2,3,4,5,new Cv("b~RPstU~XP#q#r[~aO$Q~~",17,173)],topRules:{Template:[0,5]},specialized:[{term:161,get:e=>AEr[e]||-1},{term:55,get:e=>pEr[e]||-1}],tokenPrec:3602});function Epe(e,t){return e.split(" ").map(n=>({label:n,type:t}))}const wEr=Epe("abs attr batch capitalize center default dictsort escape filesizeformat first float forceescape format groupby indent int items join last length list lower map max min pprint random reject rejectattr replace reverse round safe select selectattr slice sort string striptags sum title tojson trim truncate unique upper urlencode urlize wordcount wordwrap xmlattr","function"),OEr=Epe("boolean callable defined divisibleby eq escaped even filter float ge gt in integer iterable le lower lt mapping ne none number odd sameas sequence string test undefined upper range lipsum dict joiner namespace","function"),yEr=Epe("loop super self true false varargs kwargs caller name arguments catch_kwargs catch_varargs caller","keyword"),Rvt=OEr.concat(yEr),Ivt=Epe("raw endraw filter endfilter trans pluralize endtrans with endwith autoescape endautoescape if elif else endif for endfor call endcall block endblock set endset macro endmacro import include break continue debug do extends","keyword");function CEr(e){var t;let{state:n,pos:r}=e,o=tc(n).resolveInner(r,-1).enterUnfinishedNodesBefore(r),s=((t=o.childBefore(r))===null||t===void 0?void 0:t.name)||o.name;if(o.name=="FilterName")return{type:"filter",node:o};if(e.explicit&&(s=="FilterOp"||s=="filter"))return{type:"filter"};if(o.name=="TagName")return{type:"tag",node:o};if(e.explicit&&s=="{%")return{type:"tag"};if(o.name=="PropertyName"&&o.parent.name=="MemberExpression")return{type:"prop",node:o,target:o.parent};if(o.name=="."&&o.parent.name=="MemberExpression")return{type:"prop",target:o.parent};if(o.name=="MemberExpression"&&s==".")return{type:"prop",target:o};if(o.name=="VariableName")return{type:"expr",from:o.from};if(o.name=="Comment"||o.name=="StringLiteral"||o.name=="NumberLiteral")return null;let a=e.matchBefore(/[\w\u00c0-\uffff]+$/);return a?{type:"expr",from:a.from}:e.explicit?{type:"expr"}:null}function _Er(e,t,n,r){let o=[];for(;;){let s=t.getChild("Expression");if(!s)return[];if(s.name=="VariableName"){o.unshift(e.sliceDoc(s.from,s.to));break}else if(s.name=="MemberExpression"){let a=s.getChild("PropertyName");a&&o.unshift(e.sliceDoc(a.from,a.to)),t=s}else return[]}return r(o,e,n)}function vLn(e={}){let t=e.tags?e.tags.concat(Ivt):Ivt,n=e.variables?e.variables.concat(Rvt):Rvt,{properties:r}=e;return o=>{var s;let a=CEr(o);if(!a)return null;let l=(s=a.from)!==null&&s!==void 0?s:a.node?a.node.from:o.pos,d;return a.type=="filter"?d=wEr:a.type=="tag"?d=t:a.type=="expr"?d=n:d=r?_Er(o.state,a.target,o,r):[],d.length?{options:d,from:l,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const ALn=er.inputHandler.of((e,t,n,r)=>r!="%"||t!=n||e.state.doc.sliceString(t-1,n+1)!="{}"?!1:(e.dispatch(e.state.changeByRange(o=>({changes:{from:o.from,to:o.to,insert:"%%"},range:Ln.cursor(o.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function Mvt(e){return t=>{let n=e.test(t.textAfter);return t.lineIndent(t.node.from)+(n?0:t.unit)}}const SEr=Vd.define({name:"jinja",parser:bEr.configure({props:[Xd({"TagName raw endraw filter endfilter as trans pluralize endtrans with endwith autoescape endautoescape":ve.keyword,"required scoped recursive with without context ignore missing":ve.modifier,self:ve.self,"loop super":ve.standard(ve.variableName),"if elif else endif for endfor call endcall":ve.controlKeyword,"block endblock set endset macro endmacro import from include":ve.definitionKeyword,"Comment/...":ve.blockComment,VariableName:ve.variableName,Definition:ve.definition(ve.variableName),PropertyName:ve.propertyName,FilterName:ve.special(ve.variableName),ArithOp:ve.arithmeticOperator,AssignOp:ve.definitionOperator,"not and or":ve.logicOperator,CompareOp:ve.compareOperator,"in is":ve.operatorKeyword,"FilterOp ConcatOp":ve.operator,StringLiteral:ve.string,NumberLiteral:ve.number,BooleanLiteral:ve.bool,"{% %} {# #} {{ }} { }":ve.brace,"( )":ve.paren,".":ve.derefOperator,": , .":ve.punctuation}),Vu.add({Tag:Xv({closing:"%}"}),"IfStatement ForStatement":Mvt(/^\s*(\{%-?\s*)?(endif|endfor|else|elif)\b/),Statement:Mvt(/^\s*(\{%-?\s*)?end\w/)}),kh.add({"Statement Comment"(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!="Tag"&&t.name!="{#"?null:{from:t.to,to:n.name=="EndTag"||n.name=="#}"?n.from:e.to}}})]}),languageData:{indentOnInput:/^\s*{%-?\s*(?:end|elif|else)$/}}),ZPe=dI();function pLn(e){return SEr.configure({wrap:Ap(t=>t.type.isTop?{parser:e.parser,overlay:n=>n.name=="Text"||n.name=="RawText"}:null)},"jinja")}const bLn=pLn(ZPe.language);function LEr(e={}){let t=e.base||ZPe,n=t.language==ZPe.language?bLn:pLn(t.language);return new wd(n,[t.support,n.data.of({autocomplete:vLn(e)}),t.language.data.of({closeBrackets:{brackets:["{"]}}),ALn])}const xEr=Object.freeze(Object.defineProperty({__proto__:null,closePercentBrace:ALn,jinja:LEr,jinjaCompletionSource:vLn,jinjaLanguage:bLn},Symbol.toStringTag,{value:"Module"})),EEr=Xd({String:ve.string,Number:ve.number,"True False":ve.bool,PropertyName:ve.propertyName,Null:ve.null,", :":ve.separator,"[ ]":ve.squareBracket,"{ }":ve.brace}),TEr=zd.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[EEr],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),QEr=()=>e=>{try{JSON.parse(e.state.doc.toString())}catch(t){if(!(t instanceof SyntaxError))throw t;const n=DEr(t,e.state.doc);return[{from:n,message:t.message,severity:"error",to:n}]}return[]};function DEr(e,t){let n;return(n=e.message.match(/at position (\d+)/))?Math.min(+n[1],t.length):(n=e.message.match(/at line (\d+) column (\d+)/))?Math.min(t.line(+n[1]).from+ +n[2]-1,t.length):0}const wLn=Vd.define({name:"json",parser:TEr.configure({props:[Vu.add({Object:Pu({except:/^\s*\}/}),Array:Pu({except:/^\s*\]/})}),kh.add({"Object Array":bA})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function BEr(){return new wd(wLn)}const REr=Object.freeze(Object.defineProperty({__proto__:null,json:BEr,jsonLanguage:wLn,jsonParseLinter:QEr},Symbol.toStringTag,{value:"Module"})),IEr=110,Pvt=1,MEr=2,OLn=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];function Zge(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function PEr(e){return e>=48&&e<=57}const FEr=new go((e,t)=>{if(e.next==40){let n=e.peek(-1);(Zge(n)||PEr(n)||n==95||n==45)&&e.acceptToken(MEr,1)}}),NEr=new go(e=>{if(OLn.indexOf(e.peek(-1))>-1){let{next:t}=e;(Zge(t)||t==95||t==35||t==46||t==91||t==58||t==45)&&e.acceptToken(IEr)}}),UEr=new go(e=>{if(OLn.indexOf(e.peek(-1))<0){let{next:t}=e;if(t==37&&(e.advance(),e.acceptToken(Pvt)),Zge(t)){do e.advance();while(Zge(e.next));e.acceptToken(Pvt)}}}),jEr=Xd({"import charset namespace keyframes media supports when":ve.definitionKeyword,"from to selector":ve.keyword,NamespaceName:ve.namespace,KeyframeName:ve.labelName,TagName:ve.tagName,ClassName:ve.className,PseudoClassName:ve.constant(ve.className),IdName:ve.labelName,"FeatureName PropertyName PropertyVariable":ve.propertyName,AttributeName:ve.attributeName,NumberLiteral:ve.number,KeywordQuery:ve.keyword,UnaryQueryOp:ve.operatorKeyword,"CallTag ValueName":ve.atom,VariableName:ve.variableName,"AtKeyword Interpolation":ve.special(ve.variableName),Callee:ve.operatorKeyword,Unit:ve.unit,"UniversalSelector NestingSelector":ve.definitionOperator,MatchOp:ve.compareOperator,"ChildOp SiblingOp, LogicOp":ve.logicOperator,BinOp:ve.arithmeticOperator,Important:ve.modifier,"Comment LineComment":ve.blockComment,ColorLiteral:ve.color,"ParenthesizedContent StringLiteral":ve.string,Escape:ve.special(ve.string),": ...":ve.punctuation,"PseudoOp #":ve.derefOperator,"; ,":ve.separator,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace}),WEr={__proto__:null,lang:40,"nth-child":40,"nth-last-child":40,"nth-of-type":40,"nth-last-of-type":40,dir:40,"host-context":40,and:244,or:244,not:74,only:74,url:86,"url-prefix":86,domain:86,regexp:86,when:117,selector:142,from:172,to:174},VEr={__proto__:null,"@import":126,"@plugin":126,"@media":152,"@charset":156,"@namespace":160,"@keyframes":166,"@supports":178},zEr=zd.deserialize({version:14,states:"@^O!gQWOOO!nQaO'#CeOOQP'#Cd'#CdO$RQWO'#CgO$xQaO'#EaO%cQWO'#CiO%kQWO'#DZO%pQWO'#D^O%uQaO'#DfOOQP'#Es'#EsO'YQWO'#DlO'yQWO'#DyO(QQWO'#D{O(xQWO'#D}O)TQWO'#EQO'bQWO'#EWO)YQ`O'#FTO)]Q`O'#FTO)hQ`O'#FTO)vQWO'#EYOOQO'#Er'#ErOOQO'#FV'#FVOOQO'#Ec'#EcO){QWO'#EqO*WQWO'#EqQOQWOOOOQP'#Ch'#ChOOQP,59R,59RO$RQWO,59RO*bQWO'#EdO+PQWO,58|O+_QWO,59TO%kQWO,59uO%pQWO,59xO*bQWO,59{O*bQWO,59}OOQO'#De'#DeO*bQWO,5:OO,bQpO'#E}O,iQWO'#DkOOQO,58|,58|O(QQWO,58|O,pQWO,5:{OOQO,5:{,5:{OOQT'#Cl'#ClO-UQeO,59TO.cQ[O,59TOOQP'#D]'#D]OOQP,59u,59uOOQO'#D_'#D_O.hQpO,59xOOQO'#EZ'#EZO.pQ`O,5;oOOQO,5;o,5;oO/OQWO,5:WO/VQWO,5:WOOQS'#Dn'#DnO/rQWO'#DsO/yQ!fO'#FRO0eQWO'#DtOOQS'#FS'#FSO+YQWO,5:eO'bQWO'#DrOOQS'#Cu'#CuO(QQWO'#CwO0jQ!hO'#CyO2^Q!fO,5:gO2oQWO'#DWOOQS'#Ex'#ExO(QQWO'#DQOOQO'#EP'#EPO2tQWO,5:iO2yQWO,5:iOOQO'#ES'#ESO3RQWO,5:lO3WQ!fO,5:rO3iQ`O'#EkO.pQ`O,5;oOOQO,5:|,5:|O3zQWO,5:tOOQO,5:},5:}O4XQWO,5;]OOQO-E8a-E8aOOQP1G.m1G.mOOQP'#Ce'#CeO5RQaO,5;OOOQP'#Df'#DfOOQO-E8b-E8bOOQO1G.h1G.hO(QQWO1G.hO5fQWO1G.hO5nQeO1G.oO.cQ[O1G.oOOQP1G/a1G/aO6{QpO1G/dO7fQaO1G/gO8cQaO1G/iO9`QaO1G/jO:]Q!fO'#FOO:yQ!fO'#ExOOQO'#FO'#FOOOQO,5;i,5;iO<^QWO,5;iOWQWO1G/rO>]Q!fO'#DnO>qQWO,5:ZO>vQ!fO,5:_OOQO'#DP'#DPO'bQWO,5:]O?XQWO'#DwOOQS,5:b,5:bO?`QWO,5:dO'bQWO'#EiO?gQWO,5;mO*bQWO,5:`OOQO1G0P1G0PO?uQ!fO,5:^O@aQ!fO,59cOOQS,59e,59eO(QQWO,59iOOQS,59n,59nO@rQWO,59pOOQO1G0R1G0RO@yQ#tO,59rOARQ!fO,59lOOQO1G0T1G0TOBrQWO1G0TOBwQWO'#ETOOQO1G0W1G0WOOQO1G0^1G0^OOQO,5;V,5;VOOQO-E8i-E8iOCVQ!fO1G0bOCvQWO1G0`O%kQWO'#E_O$RQWO'#E`OEZQWO'#E^OOQO1G0b1G0bPEkQWO'#EcOUAN>UO!!RQWO,5;QOOQO-E8d-E8dO!!]QWOAN>dOOQS<S![;'S%T;'S;=`%f<%lO%Tm>ZY#m]|`Oy%Tz!Q%T!Q![>S![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%Tm?OY|`Oy%Tz{%T{|?n|}%T}!O?n!O!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm?sU|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@^U#m]|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@w[#m]|`Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TbAtS#xQ|`Oy%Tz;'S%T;'S;=`%f<%lO%TkBVScZOy%Tz;'S%T;'S;=`%f<%lO%TmBhXrWOy%Tz}%T}!OCT!O!P=k!P!Q%T!Q![@p![;'S%T;'S;=`%f<%lO%TmCYW|`Oy%Tz!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%TmCy[f]|`Oy%Tz}%T}!OCr!O!Q%T!Q![Cr![!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%ToDtW#iROy%Tz!O%T!O!PE^!P!Q%T!Q![>S![;'S%T;'S;=`%f<%lO%TlEcU|`Oy%Tz!O%T!O!PEu!P;'S%T;'S;=`%f<%lO%TlE|S#s[|`Oy%Tz;'S%T;'S;=`%f<%lO%T~F_VrWOy%Tz{Ft{!P%T!P!QIl!Q;'S%T;'S;=`%f<%lO%T~FyU|`OyFtyzG]z{Hd{;'SFt;'S;=`If<%lOFt~G`TOzG]z{Go{;'SG];'S;=`H^<%lOG]~GrVOzG]z{Go{!PG]!P!QHX!Q;'SG];'S;=`H^<%lOG]~H^OR~~HaP;=`<%lG]~HiW|`OyFtyzG]z{Hd{!PFt!P!QIR!Q;'SFt;'S;=`If<%lOFt~IYS|`R~Oy%Tz;'S%T;'S;=`%f<%lO%T~IiP;=`<%lFt~IsV|`S~OYIlYZ%TZyIlyzJYz;'SIl;'S;=`Jq<%lOIl~J_SS~OYJYZ;'SJY;'S;=`Jk<%lOJY~JnP;=`<%lJY~JtP;=`<%lIlmJ|[#m]Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TkKwU^ZOy%Tz![%T![!]LZ!];'S%T;'S;=`%f<%lO%TcLbS_R|`Oy%Tz;'S%T;'S;=`%f<%lO%TkLsS!ZZOy%Tz;'S%T;'S;=`%f<%lO%ThMUUrWOy%Tz!_%T!_!`Mh!`;'S%T;'S;=`%f<%lO%ThMoS|`rWOy%Tz;'S%T;'S;=`%f<%lO%TlNSW!SSrWOy%Tz!^%T!^!_Mh!_!`%T!`!aMh!a;'S%T;'S;=`%f<%lO%TjNsV!UQrWOy%Tz!_%T!_!`Mh!`!a! Y!a;'S%T;'S;=`%f<%lO%Tb! aS!UQ|`Oy%Tz;'S%T;'S;=`%f<%lO%To! rYg]Oy%Tz!b%T!b!c!!b!c!}!#R!}#T%T#T#o!#R#o#p!$O#p;'S%T;'S;=`%f<%lO%Tm!!iWg]|`Oy%Tz!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%Tm!#Y[g]|`Oy%Tz}%T}!O!#R!O!Q%T!Q![!#R![!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%To!$TW|`Oy%Tz!c%T!c!}!$m!}#T%T#T#o!$m#o;'S%T;'S;=`%f<%lO%To!$r^|`Oy%Tz}%T}!O!$m!O!Q%T!Q![!$m![!c%T!c!}!$m!}#T%T#T#o!$m#o#q%T#q#r!%n#r;'S%T;'S;=`%f<%lO%To!%uSp_|`Oy%Tz;'S%T;'S;=`%f<%lO%To!&W[#h_Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%To!'T[#h_|`Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%Tk!(OSyZOy%Tz;'S%T;'S;=`%f<%lO%Tm!(aSw]Oy%Tz;'S%T;'S;=`%f<%lO%Td!(pUOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tk!)XS!^ZOy%Tz;'S%T;'S;=`%f<%lO%Tk!)jS!]ZOy%Tz;'S%T;'S;=`%f<%lO%To!){Y#oQOr%Trs!*ksw%Twx!.wxy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tm!*pZ|`OY!*kYZ%TZr!*krs!+csy!*kyz!+vz#O!*k#O#P!-j#P;'S!*k;'S;=`!.q<%lO!*km!+jSo]|`Oy%Tz;'S%T;'S;=`%f<%lO%T]!+yWOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d<%lO!+v]!,hOo]]!,kRO;'S!+v;'S;=`!,t;=`O!+v]!,wXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!+v<%lO!+v]!-gP;=`<%l!+vm!-oU|`Oy!*kyz!+vz;'S!*k;'S;=`!.R;=`<%l!+v<%lO!*km!.UXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!*k<%lO!+vm!.tP;=`<%l!*km!.|Z|`OY!.wYZ%TZw!.wwx!+cxy!.wyz!/oz#O!.w#O#P!1^#P;'S!.w;'S;=`!2e<%lO!.w]!/rWOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W<%lO!/o]!0_RO;'S!/o;'S;=`!0h;=`O!/o]!0kXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!/o<%lO!/o]!1ZP;=`<%l!/om!1cU|`Oy!.wyz!/oz;'S!.w;'S;=`!1u;=`<%l!/o<%lO!.wm!1xXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!.w<%lO!/om!2hP;=`<%l!.w`!2nP;=`<%l$t",tokenizers:[NEr,UEr,FEr,0,1,2,3,4],topRules:{StyleSheet:[0,5]},specialized:[{term:116,get:e=>WEr[e]||-1},{term:23,get:e=>VEr[e]||-1}],tokenPrec:2180}),qPe=Vd.define({name:"less",parser:zEr.configure({props:[Vu.add({Declaration:Pu()}),kh.add({Block:bA})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"@-"}}),yLn=Ope(e=>e.name=="VariableName"||e.name=="AtKeyword");function HEr(){return new wd(qPe,qPe.data.of({autocomplete:yLn}))}const $Er=Object.freeze(Object.defineProperty({__proto__:null,less:HEr,lessCompletionSource:yLn,lessLanguage:qPe},Symbol.toStringTag,{value:"Module"})),XEr=1,GEr=2,YEr=3,ZEr=180,qEr=4,KEr=181,JEr=5,e7r=182,t7r=6;function n7r(e){return e>=65&&e<=90||e>=97&&e<=122}const i7r=new go(e=>{let t=e.pos;for(;;){let{next:n}=e;if(n<0)break;if(n==123){let r=e.peek(1);if(r==123){if(e.pos>t)break;e.acceptToken(XEr,2);return}else if(r==37){if(e.pos>t)break;let o=2,s=2;for(;;){let a=e.peek(o);if(a==32||a==10)++o;else if(a==35)for(++o;;){let l=e.peek(o);if(l<0||l==10)break;o++}else if(a==45&&s==2)s=++o;else{let l=a==101&&e.peek(o+1)==110&&e.peek(o+2)==100;e.acceptToken(l?YEr:GEr,s);return}}}}if(e.advance(),n==10)break}e.pos>t&&e.acceptToken(ZEr)});function CLn(e,t,n){return new go(r=>{let o=r.pos;for(;;){let{next:s}=r;if(s==123&&r.peek(1)==37){let a=2;for(;;a++){let d=r.peek(a);if(d!=32&&d!=10)break}let l="";for(;;a++){let d=r.peek(a);if(!n7r(d))break;l+=String.fromCharCode(d)}if(l==e){if(r.pos>o)break;r.acceptToken(n,2);break}}else if(s<0)break;if(r.advance(),s==10)break}r.pos>o&&r.acceptToken(t)})}const r7r=CLn("endcomment",e7r,JEr),o7r=CLn("endraw",KEr,qEr),s7r=new go(e=>{if(e.next==35){for(e.advance();!(e.next==10||e.next<0||(e.next==37||e.next==125)&&e.peek(1)==125);)e.advance();e.acceptToken(t7r)}}),a7r={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},l7r={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},c7r=zd.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zOxQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<kQhO<W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[i7r,o7r,r7r,s7r,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:e=>a7r[e]||-1},{term:39,get:e=>l7r[e]||-1}],tokenPrec:0});function rie(e,t){return e.split(" ").map(n=>({label:n,type:t}))}const Fvt=rie("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),Nvt=rie("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),Uvt=rie("empty forloop tablerowloop in with as","keyword"),d7r=rie("first index index0 last length rindex","property"),u7r=rie("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function h7r(e){var t;let{state:n,pos:r}=e,o=tc(n).resolveInner(r,-1).enterUnfinishedNodesBefore(r),s=((t=o.childBefore(r))===null||t===void 0?void 0:t.name)||o.name;if(o.name=="FilterName")return{type:"filter",node:o};if(e.explicit&&s=="|")return{type:"filter"};if(o.name=="TagName")return{type:"tag",node:o};if(e.explicit&&s=="{%")return{type:"tag"};if(o.name=="PropertyName"&&o.parent.name=="MemberExpression")return{type:"property",node:o,target:o.parent};if(o.name=="."&&o.parent.name=="MemberExpression")return{type:"property",target:o.parent};if(o.name=="MemberExpression"&&s==".")return{type:"property",target:o};if(o.name=="VariableName")return{type:"expression",from:o.from};let a=e.matchBefore(/[\w\u00c0-\uffff]+$/);return a?{type:"expression",from:a.from}:e.explicit&&o.name!="CommentText"&&o.name!="StringLiteral"&&o.name!="NumberLiteral"&&o.name!="InlineComment"?{type:"expression"}:null}function f7r(e,t,n,r){let o=[];for(;;){let s=t.getChild("Expression");if(!s)return[];if(s.name=="VariableName"||s.name=="forloop"||s.name=="tablerowloop"){let a=e.sliceDoc(s.from,s.to);if(a=="forloop")return o.length?[]:d7r;if(a=="tablerowloop")return o.length?[]:u7r;o.unshift(a);break}else if(s.name=="MemberExpression"){let a=s.getChild("PropertyName");a&&o.unshift(e.sliceDoc(a.from,a.to)),t=s}else if(s.name=="SubscriptExpression"){let a=s.getChildren("Expression")[1];o.unshift((a==null?void 0:a.name)=="StringLiteral"?e.sliceDoc(a.from+1,a.to-1):"[]"),t=s}else return[]}return r?r(o,e,n):[]}function _Ln(e={}){let t=e.filters?e.filters.concat(Fvt):Fvt,n=e.tags?e.tags.concat(Nvt):Nvt,r=e.variables?e.variables.concat(Uvt):Uvt,{properties:o}=e;return s=>{var a;let l=h7r(s);if(!l)return null;let d=(a=l.from)!==null&&a!==void 0?a:l.node?l.node.from:s.pos,u;return l.type=="filter"?u=t:l.type=="tag"?u=n:l.type=="expression"?u=r:u=f7r(s.state,l.target,s,o),u.length?{options:u,from:d,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const SLn=er.inputHandler.of((e,t,n,r)=>r!="%"||t!=n||e.state.doc.sliceString(t-1,n+1)!="{}"?!1:(e.dispatch(e.state.changeByRange(o=>({changes:{from:o.from,to:o.to,insert:"%%"},range:Ln.cursor(o.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function WSe(e){return t=>{let n=e.test(t.textAfter);return t.lineIndent(t.node.from)+(n?0:t.unit)}}const g7r=Vd.define({name:"liquid",parser:c7r.configure({props:[Xd({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":ve.keyword,"empty forloop tablerowloop":ve.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":ve.controlKeyword,"assign capture endcapture":ve.definitionKeyword,contains:ve.operatorKeyword,"render include":ve.moduleKeyword,VariableName:ve.variableName,TagName:ve.tagName,FilterName:ve.function(ve.variableName),PropertyName:ve.propertyName,CompareOp:ve.compareOperator,AssignOp:ve.definitionOperator,LogicOp:ve.logicOperator,NumberLiteral:ve.number,StringLiteral:ve.string,BooleanLiteral:ve.bool,InlineComment:ve.lineComment,CommentText:ve.blockComment,"{% %} {{ }}":ve.brace,"[ ]":ve.bracket,"( )":ve.paren,".":ve.derefOperator,", .. : |":ve.punctuation}),Vu.add({Tag:Xv({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":WSe(/^\s*(\{%-?\s*)?end\w/),IfDirective:WSe(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:WSe(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),kh.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!="Tag"?null:{from:t.to,to:n.name=="EndTag"?n.from:e.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),KPe=dI();function LLn(e){return g7r.configure({wrap:Ap(t=>t.type.isTop?{parser:e.parser,overlay:n=>n.name=="Text"||n.name=="RawText"}:null)},"liquid")}const xLn=LLn(KPe.language);function m7r(e={}){let t=e.base||KPe,n=t.language==KPe.language?xLn:LLn(t.language);return new wd(n,[t.support,n.data.of({autocomplete:_Ln(e)}),t.language.data.of({closeBrackets:{brackets:["{"]}}),SLn])}const k7r=Object.freeze(Object.defineProperty({__proto__:null,closePercentBrace:SLn,liquid:m7r,liquidCompletionSource:_Ln,liquidLanguage:xLn},Symbol.toStringTag,{value:"Module"})),v7r=1,A7r=2,p7r=275,b7r=3,w7r=276,jvt=277,O7r=278,y7r=4,C7r=5,_7r=6,S7r=7,Wvt=8,L7r=9,x7r=10,E7r=11,T7r=12,Q7r=13,D7r=14,B7r=15,R7r=16,I7r=17,M7r=18,P7r=19,F7r=20,N7r=21,U7r=22,j7r=23,W7r=24,V7r=25,z7r=26,H7r=27,$7r=28,X7r=29,G7r=30,Y7r=31,Z7r=32,q7r=33,K7r=34,J7r=35,eTr=36,tTr=37,nTr=38,iTr=39,rTr=40,oTr=41,sTr=42,aTr=43,lTr=44,cTr=45,dTr=46,uTr=47,hTr=48,fTr=49,gTr=50,mTr=51,kTr=52,vTr=53,ATr=54,pTr=55,bTr=56,wTr=57,OTr=58,yTr=59,CTr=60,_Tr=61,STr=62,VSe=63,LTr=64,xTr=65,ETr=66,TTr={abstract:y7r,and:C7r,array:_7r,as:S7r,true:Wvt,false:Wvt,break:L7r,case:x7r,catch:E7r,clone:T7r,const:Q7r,continue:D7r,declare:R7r,default:B7r,do:I7r,echo:M7r,else:P7r,elseif:F7r,enddeclare:N7r,endfor:U7r,endforeach:j7r,endif:W7r,endswitch:V7r,endwhile:z7r,enum:H7r,extends:$7r,final:X7r,finally:G7r,fn:Y7r,for:Z7r,foreach:q7r,from:K7r,function:J7r,global:eTr,goto:tTr,if:nTr,implements:iTr,include:rTr,include_once:oTr,instanceof:sTr,insteadof:aTr,interface:lTr,list:cTr,match:dTr,namespace:uTr,new:hTr,null:fTr,or:gTr,print:mTr,readonly:kTr,require:vTr,require_once:ATr,return:pTr,switch:bTr,throw:wTr,trait:OTr,try:yTr,unset:CTr,use:_Tr,var:STr,public:VSe,private:VSe,protected:VSe,while:LTr,xor:xTr,yield:ETr,__proto__:null};function Vvt(e){let t=TTr[e.toLowerCase()];return t??-1}function zvt(e){return e==9||e==10||e==13||e==32}function ELn(e){return e>=97&&e<=122||e>=65&&e<=90}function eZ(e){return e==95||e>=128||ELn(e)}function zSe(e){return e>=48&&e<=55||e>=97&&e<=102||e>=65&&e<=70}const QTr={int:!0,integer:!0,bool:!0,boolean:!0,float:!0,double:!0,real:!0,string:!0,array:!0,object:!0,unset:!0,__proto__:null},DTr=new go(e=>{if(e.next==40){e.advance();let t=0;for(;zvt(e.peek(t));)t++;let n="",r;for(;ELn(r=e.peek(t));)n+=String.fromCharCode(r),t++;for(;zvt(e.peek(t));)t++;e.peek(t)==41&&QTr[n.toLowerCase()]&&e.acceptToken(v7r)}else if(e.next==60&&e.peek(1)==60&&e.peek(2)==60){for(let r=0;r<3;r++)e.advance();for(;e.next==32||e.next==9;)e.advance();let t=e.next==39;if(t&&e.advance(),!eZ(e.next))return;let n=String.fromCharCode(e.next);for(;e.advance(),!(!eZ(e.next)&&!(e.next>=48&&e.next<=55));)n+=String.fromCharCode(e.next);if(t){if(e.next!=39)return;e.advance()}if(e.next!=10&&e.next!=13)return;for(;;){let r=e.next==10||e.next==13;if(e.advance(),e.next<0)return;if(r){for(;e.next==32||e.next==9;)e.advance();let o=!0;for(let s=0;s{e.next<0&&e.acceptToken(O7r)}),RTr=new go((e,t)=>{e.next==63&&t.canShift(jvt)&&e.peek(1)==62&&e.acceptToken(jvt)});function ITr(e){let t=e.peek(1);if(t==110||t==114||t==116||t==118||t==101||t==102||t==92||t==36||t==34||t==123)return 2;if(t>=48&&t<=55){let n=2,r;for(;n<5&&(r=e.peek(n))>=48&&r<=55;)n++;return n}if(t==120&&zSe(e.peek(2)))return zSe(e.peek(3))?4:3;if(t==117&&e.peek(2)==123)for(let n=3;;n++){let r=e.peek(n);if(r==125)return n==2?0:n+1;if(!zSe(r))break}return 0}const MTr=new go((e,t)=>{let n=!1;for(;!(e.next==34||e.next<0||e.next==36&&(eZ(e.peek(1))||e.peek(1)==123)||e.next==123&&e.peek(1)==36);n=!0){if(e.next==92){let r=ITr(e);if(r){if(n)break;return e.acceptToken(b7r,r)}}else if(!n&&(e.next==91||e.next==45&&e.peek(1)==62&&eZ(e.peek(2))||e.next==63&&e.peek(1)==45&&e.peek(2)==62&&eZ(e.peek(3)))&&t.canShift(w7r))break;e.advance()}n&&e.acceptToken(p7r)}),PTr=Xd({"Visibility abstract final static":ve.modifier,"for foreach while do if else elseif switch try catch finally return throw break continue default case":ve.controlKeyword,"endif endfor endforeach endswitch endwhile declare enddeclare goto match":ve.controlKeyword,"and or xor yield unset clone instanceof insteadof":ve.operatorKeyword,"function fn class trait implements extends const enum global interface use var":ve.definitionKeyword,"include include_once require require_once namespace":ve.moduleKeyword,"new from echo print array list as":ve.keyword,null:ve.null,Boolean:ve.bool,VariableName:ve.variableName,"NamespaceName/...":ve.namespace,"NamedType/...":ve.typeName,Name:ve.name,"CallExpression/Name":ve.function(ve.variableName),"LabelStatement/Name":ve.labelName,"MemberExpression/Name":ve.propertyName,"MemberExpression/VariableName":ve.special(ve.propertyName),"ScopedExpression/ClassMemberName/Name":ve.propertyName,"ScopedExpression/ClassMemberName/VariableName":ve.special(ve.propertyName),"CallExpression/MemberExpression/Name":ve.function(ve.propertyName),"CallExpression/ScopedExpression/ClassMemberName/Name":ve.function(ve.propertyName),"MethodDeclaration/Name":ve.function(ve.definition(ve.variableName)),"FunctionDefinition/Name":ve.function(ve.definition(ve.variableName)),"ClassDeclaration/Name":ve.definition(ve.className),UpdateOp:ve.updateOperator,ArithOp:ve.arithmeticOperator,"LogicOp IntersectionType/&":ve.logicOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,ControlOp:ve.controlOperator,AssignOp:ve.definitionOperator,"$ ConcatOp":ve.operator,LineComment:ve.lineComment,BlockComment:ve.blockComment,Integer:ve.integer,Float:ve.float,String:ve.string,ShellExpression:ve.special(ve.string),"=> ->":ve.punctuation,"( )":ve.paren,"#[ [ ]":ve.squareBracket,"${ { }":ve.brace,"-> ?->":ve.derefOperator,", ; :: : \\":ve.separator,"PhpOpen PhpClose":ve.processingInstruction}),FTr={__proto__:null,static:325,STATIC:325,class:351,CLASS:351},NTr=zd.deserialize({version:14,states:"%#[Q`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IqO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Iq'#IqO2wQ`O'#ExOOQS'#Ih'#IhO5SQdO'#IeO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Ir'#IrO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JP'#JPOOQS'#JO'#JOOOQS'#Ie'#IeO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HROhQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaOQO!$dQ`O,5POOQ#u-E;h-E;hO!1QQ`O,5=tOOO#u,5:_,5:_O!1]O#|O,5:_OOO#u-E;g-E;gOOOO,5>|,5>|OOQ#y1G0T1G0TO!1eQ`O1G0YO-RQaO1G0YO!2wQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Il'#IlO-RQaO'#IlOOQS1G0r1G0rO!4ZQ`O'#IoO!5pQ`O'#IqO!5}QaO'#EwOOQO'#Io'#IoO!6XQ`O'#InO!6aQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6fQdO1G1dO!8kQdO1G1dO!:WQdO1G1dO!;sQdO1G1dO!=`QdO1G1dO!>{QdO1G1dO!@hQdO1G1dO!BTQdO1G1dO!CpQdO1G1dO!E]QdO1G1dO!FxQdO1G1dO!HeQdO1G1dO!JQQdO1G1dO!KmQdO1G1dO!MYQdO1G1dO!NuQdO1G1dOOQT1G0_1G0_O!#[Q`O,5<_O#!bQaO'#EYOOQS1G0[1G0[O#!iQ`O,5:zOEdQaO,5:zO#!nQaO,5;OO#!uQdO,5:|O#$tQdO,5?UO#&sQaO'#HmO#'TQ`O,5?TOOQS1G0e1G0eO#']Q`O1G0eO#'bQ`O'#IkO#(zQ`O'#IkO#)SQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)pQdO'#FQO#+uQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+zQtO,5;eO2wQ`O'#HqO#,iQtO,5;gO#-WQaO1G1OOOQS,5;h,5;hO#/gQtO'#FQO#/tQdO1G0dO-RQaO1G0dO#1aQdO1G1aO#2|QdO1G1cOOQO,5X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+iQaO,5;TO$$^QaO'#HnO$$hQ`O,5?VOOQS1G0n1G0nO$$pQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$$uQtO,5>]OOQS-E;o-E;oO$%dQdO7+&jO$'iQtO'#FQO$'vQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$[QdO7+(xOOQ#u7+(}7+(}O#JfQ`O7+(}O#JkQ`O7+(}OOQ#u7+(z7+(zO!.]Q`O7+(zO!1TQ`O7+(zO!1QQ`O7+(zO$)cQ`O,5i,5>iOOQS-E;{-E;{O$.lQdO7+'qO$.|QpO7+'qO$/XQdO'#IxOOQO,5pOOQ#u,5>p,5>pOOQ#u-EoOOQS-EVQdO1G2^OOQS,5>h,5>hOOQS-E;z-E;zOOQ#u7+({7+({O$?oQ`O'#GXO:]Q`O'#H_OOQO'#IV'#IVO$@fQ`O,5=xOOQ#u,5=x,5=xO$AcQ!bO'#EQO$AzQ!bO7+(}O$BYQpO7+)RO#KRQpO7+)RO$BbQ`O'#HbO!$[QdO7+)RO$BpQdO,5>rOOQS-EVOOQS-E;i-E;iO$D{QdO<Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$8rQaO,5:uO$G}QaO'#HlO$H[Q`O,5?QOOQS1G0`1G0`OOQS7+&Q7+&QO$HdQ`O7+&UO$IyQ`O1G0oO$K`Q`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<c,5>cOOQO-E;u-E;uOOQS<lOOQ#u-EmOOQO-EW,5>WOOQO-E;j-E;jO!+iQaO,5;UOOQ#uANBTANBTO#JfQ`OANBTOOQ#uANBQANBQO!.]Q`OANBQO!+iQaO7+'hOOQO7+'l7+'lO%-bQ`O7+'hO%.wQ`O7+'hO%/SQ`O7+'lO!+iQaO7+'mOOQO7+'m7+'mO%/XQdO'#F}OOQO'#Hv'#HvO%/jQ`O,5e,5>eOOQS-E;w-E;wOOQO1G2_1G2_O$1YQdO1G2_O$/jQpO1G2_O#JkQ`O1G2]O!.mQdO1G2aO%$dQ!bO1G2]O!$[QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%2uQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.]Q`OAN@xOOOQ<]O%6rQ!bO'#FQO!$[QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%7WQ`O,5=}O%7cQ`O'#IXO%7wQ`O,5?rOOQS1G3h1G3hOOQS7+)x7+)xP%+OQpOANBXO%8PQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%9fQ`O<d,5>dO%dOOQO-E;v-E;vO%hQ`O'#IqO%>rQ`O'#IhO!$[QdO'#IOO%@lQaO,5s,5>sOOQO-Ej,5>jOOQP-E;|-E;|OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$[QdOLD-RO!$[QdO<OO%EpQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%E{QdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<tQaO,5:xO'/vQaO,5;uO'/vQaO,5;wO'@sQdO,5YQdO,5<^O)@XQdO,5QQ`O,5=eO*>YQaO'#HkO*>dQ`O,5?ROlQdO7+%tO*@kQ`O1G0jO!+iQaO1G0jO*BQQdO7+&OOoO*GeQ`O,5>VO*HzQdO<[QdO,5{QdO'#IjO.BbQ`O'#IeO.BoQ`O'#GPO.BwQaO,5:nO.COQ`O,5uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#T#mO#V#lO#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O#Y']P~O#O#qO~P/lO!z#rO~O#d#tO#fbO#gcO~O'a#vO~O#s#zO~OU$OO!R$OO!w#}O#s3hO'W#{O~OT'XXz'XX!S'XX!c'XX!n'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX'P'XX!y'XX!o'XX~O#|$QO$O$RO~P3YOP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{OT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX~Or$TO#T8eO#V8dO~P5^O#sdO'WYO~OS$fO]$aOk$dOm$fOs$`O!a$bO$krO$u$eO~O!z$hO#T$jO'W$gO~Oo$mOs$lO#d$nO~O!z$hO#T$rO~O!U$uO$u$tO~P-ROR${O!p$zO#d$yO#g$zO&}${O~O't$}O~P;PO!z%SO~O!z%UO~O!n#bO'P#bO~P-RO!pXO~O!z%`O~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z%dO~O]$aO~O!pXO#sdO'WYO~O]%rOs%rO#s%nO'WYO~O!j%wO'Q%wO'TRO~O'Q%zO~PhO!o%{O~PhO!r%}O~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'cX#O'cX~P!%aO!r)yO!y'eX#O'eX~P)dO!y#kX#O#kX~P!+iO#O){O!y'bX~O!y)}O~O%T#cOT$Qiz$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi$_$Qi'P$Qi!y$Qi#O$Qi#P$Qi#Y$Qi!o$Qi!r$QiV$Qi#|$Qi$O$Qi!p$Qi~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!c#UO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi~P!%aO_*PO~PxO$hqO$krO~P2wO#X+|O#a+{O#b+{O~O#d,OO%W,OO%^+}O'W$gO~O!o,PO~PCVOc%bXd%bXh%bXj%bXf%bXg%bXe%bX~PhOc,TOd,ROP%aiQ%aiS%aiU%aiW%aiX%ai[%ai]%ai^%ai`%aia%aib%aik%aim%aio%aip%aiq%ais%ait%aiu%aiv%aix%aiy%ai|%ai}%ai!O%ai!P%ai!Q%ai!R%ai!T%ai!V%ai!W%ai!X%ai!Y%ai!Z%ai![%ai!]%ai!^%ai!_%ai!a%ai!b%ai!d%ai!n%ai!p%ai!z%ai#X%ai#d%ai#f%ai#g%ai#s%ai$[%ai$d%ai$e%ai$h%ai$k%ai$u%ai%T%ai%U%ai%W%ai%X%ai%`%ai&|%ai'W%ai'u%ai'Q%ai!o%aih%aij%aif%aig%aiY%ai_%aii%aie%ai~Oc,XOd,UOh,WO~OY,YO_,ZO!o,^O~OY,YO_,ZOi%gX~Oi,`O~Oj,aO~O!n,cO~PxO$hqO$krO~P2wO!p)`O~OU$OO!R$OO!w3nO#s3iO'W,zO~O#s,|O~O!p-OO'a'UO~O#sdO'WYO!n&zX#O&zX'P&zX~O#O)gO!n'ya'P'ya~O#s-UO~O!n&_X#O&_X'P&_X#P&_X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ka#O#ka~P!%aO!y&cX#O&cX~P@aO#O){O!y'ba~O!o-_O~PCVO#P-`O~O#O-aO!o'YX~O!o-cO~O!y-dO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wi#Y#Wi~P!%aO!y&bX#O&bX~PxO#n'XO~OS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO!n#bO!p-yO'P#bO~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o.mO#d>xO$hqO$krO~P2wO#d.rO%W.rO%^+}O'W$gO~O%W.sO~O#Y.tO~Oc%bad%bah%baj%baf%bag%bae%ba~PhOc.wOd,ROP%aqQ%aqS%aqU%aqW%aqX%aq[%aq]%aq^%aq`%aqa%aqb%aqk%aqm%aqo%aqp%aqq%aqs%aqt%aqu%aqv%aqx%aqy%aq|%aq}%aq!O%aq!P%aq!Q%aq!R%aq!T%aq!V%aq!W%aq!X%aq!Y%aq!Z%aq![%aq!]%aq!^%aq!_%aq!a%aq!b%aq!d%aq!n%aq!p%aq!z%aq#X%aq#d%aq#f%aq#g%aq#s%aq$[%aq$d%aq$e%aq$h%aq$k%aq$u%aq%T%aq%U%aq%W%aq%X%aq%`%aq&|%aq'W%aq'u%aq'Q%aq!o%aqh%aqj%aqf%aqg%aqY%aq_%aqi%aqe%aq~Oc.|Od,UOh.{O~O!r(hO~OP7wOQ|OU_OW}O[xO$hqO$krO~P2wOS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o/fO#d>xO$hqO$krO~P2wOw!tX!p!tX#T!tX#n!tX#s#vX#|!tX'W!tX~Ow(ZO!p)`O#T3tO#n3sO~O!p-OO'a&fa~O]/nOs/nO#sdO'WYO~OV/rO!n&za#O&za'P&za~O#O)gO!n'yi'P'yi~O#s/tO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&_a#O&_a'P&_a#P&_a~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vy!S!vy!c!vy!n!vy!w!vy'P!vy!y!vy!o!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ji#O#ji~P!%aO_*PO!o&`X#O&`X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#]i#O#]i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P/yO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y&ba#O&ba~P!%aO#|0OO!y$ji#O$ji~O#d0PO~O#V0SO#d0RO~P2wOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ji#O$ji~P!%aO!p-yO#|0TO!y$oi#O$oi~O!o0YO'W$gO~O#O0[O!y'kX~O#d0^O~O!y0_O~O!pXO!r0bO~O#T'ZO#n'XO!p'qy!n'qy'P'qy~O!n$sy'P$sy!y$sy!o$sy~PCVO#P0eO#T'ZO#n'XO~O#sdO'WYOw&mX!p&mX#O&mX!n&mX'P&mX~O#O.^Ow'la!p'la!n'la'P'la~OS+kO]0mOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO#T3tO#n3sO'W$gO~O#|)XO#T'eX#n'eX'W'eX~O!n#bO!p0sO'P#bO~O#Y0wO~Oh0|O~OTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jq#O$jq~P!%aO#|1kO!y$jq#O$jq~O#d1lO~O!n#bO!pXO!z$hO#P1oO'P#bO~O!o1rO'W$gO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oq#O$oq~P!%aO#T1tO#d1sO!y&lX#O&lX~O#O0[O!y'ka~O#T'ZO#n'XO!p'q!R!n'q!R'P'q!R~O!pXO!r1yO~O!n$s!R'P$s!R!y$s!R!o$s!R~PCVO#P1{O#T'ZO#n'XO~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#^i#O#^i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jy#O$jy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oy#O$oy~P!%aO!pXO#P2rO~O#d2sO~O#O0[O!y'ki~O!n$s!Z'P$s!Z!y$s!Z!o$s!Z~PCVOTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$j!R#O$j!R~P!%aO!n$s!c'P$s!c!y$s!c!o$s!c~PCVO!a3`O'W$gO~OV3dO!o&Wa#O&Wa~O'W$gO!n%Ri'P%Ri~O'a'_O~O'a/jO~O'a*iO~O'a1]O~OT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ta#|$ta$O$ta'P$ta!y$ta!o$ta#O$ta~P!%aO#T3uO~P-RO#s3lO~O#s3mO~O!U$uO$u$tO~P#-WOT8TOz8RO!S8UO!c8VO!w:_O#P3pO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X'P'^X!y'^X!o'^X~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P5aO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^X#Y'^X#|'^X$O'^X!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~P!%aO#T5OO~P#-WOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$`a#|$`a$O$`a'P$`a!y$`a!o$`a#O$`a~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$aa#|$aa$O$aa'P$aa!y$aa!o$aa#O$aa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ba#|$ba$O$ba'P$ba!y$ba!o$ba#O$ba~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ca#|$ca$O$ca'P$ca!y$ca!o$ca#O$ca~P!%aOz3{O#|$ca$O$ca#O$ca~PMVOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$fa#|$fa$O$fa'P$fa!y$fa!o$fa#O$fa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n%Va#|%Va$O%Va'P%Va!y%Va!o%Va#O%Va~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n#Ua#|#Ua$O#Ua'P#Ua!y#Ua!o#Ua#O#Ua~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n'^a#|'^a$O'^a'P'^a!y'^a!o'^a#O'^a~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qi!S#Qi!c#Qi!n#Qi#|#Qi$O#Qi'P#Qi!y#Qi!o#Qi#O#Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#}i!S#}i!c#}i!n#}i#|#}i$O#}i'P#}i!y#}i!o#}i#O#}i~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$Pi#|$Pi$O$Pi'P$Pi!y$Pi!o$Pi#O$Pi~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vq!S!vq!c!vq!n!vq!w!vq#|!vq$O!vq'P!vq!y!vq!o!vq#O!vq~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qq!S#Qq!c#Qq!n#Qq#|#Qq$O#Qq'P#Qq!y#Qq!o#Qq#O#Qq~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sq#|$sq$O$sq'P$sq!y$sq!o$sq#O$sq~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vy!S!vy!c!vy!n!vy!w!vy#|!vy$O!vy'P!vy!y!vy!o!vy#O!vy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sy#|$sy$O$sy'P$sy!y$sy!o$sy#O$sy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!R#|$s!R$O$s!R'P$s!R!y$s!R!o$s!R#O$s!R~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!Z#|$s!Z$O$s!Z'P$s!Z!y$s!Z!o$s!Z#O$s!Z~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!c#|$s!c$O$s!c'P$s!c!y$s!c!o$s!c#O$s!c~P!%aOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T5bO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$vO#O9_O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'xX~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9aO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'ZX~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aO#T9fO~P!+iO!n#Ua'P#Ua!y#Ua!o#Ua~PCVO!n'^a'P'^a!y'^a!o'^a~PCVO#T=PO#V=OO!y&aX#O&aX~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wi#O#Wi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sq#P$sq#Y$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&wa#O&wa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&_a#O&_a~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wq#O#Wq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sy#P$sy#Y$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!R#P$s!R#Y$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!Z#P$s!Z#Y$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!c#P$s!c#Y$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T9vO~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$`a#O$`a~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$aa#O$aa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ba#O$ba~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ca#O$ca~P!%aOz:`O%T#cOT$ca!S$ca!c$ca!w$ca!y$ca#O$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$fa#O$fa~P!%aO!r?SO#P9^O~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ta#O$ta~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y%Va#O%Va~P!%aOT8TOz8RO!S8UO!c8VO!r9cO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOz:`O#T#PO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi~P!%aOz:`O#T#PO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi~P!%aOz:`O#T#PO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz:`O#T#PO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz:`O$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz:`O$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz:`O$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz:`O$Z:lO$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz:`O$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qi!S#Qi!c#Qi!y#Qi#O#Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#}i!S#}i!c#}i!y#}i#O#}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$Pi#O$Pi~P!%aO!r?TO#P9hO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vq!S!vq!c!vq!w!vq!y!vq#O!vq~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qq!S#Qq!c#Qq!y#Qq#O#Qq~P!%aO!r?YO#P9oO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sq#O$sq~P!%aO#P9oO#T'ZO#n'XO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vy!S!vy!c!vy!w!vy!y!vy#O!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sy#O$sy~P!%aO#P9pO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!R#O$s!R~P!%aO#P9sO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!Z#O$s!Z~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!c#O$s!c~P!%aO#T;}O~P!+iOT8TOz8RO!S8UO!c8VO!w:_O#P;|O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aO!U$uO$u$tO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QVO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QWO#X`O#dhO#fbO#gcO#sdO$[vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Ua#O#Ua~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'^a#O'^a~P!%aOz<]O!w?^O#T#PO$R<_O$SpO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QqO#X`O#dhO#fbO#gcO#sdO$[oO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P>nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X!r'^X!o'^X#O'^X!p'^X'P'^X~P!%aOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#O'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O#|:uO$O:vO!y'XX~P.@qO!z$hO#T>zO~O!r;SO~PxO!n&qX!p&qX#O&qX'P&qX~O#O?QO!n'pa!p'pa'P'pa~O!r?rO#P;uO~OT[O~O!r?zO#P:rO~OT8TOz8RO!S8UO!c8VO!r>]O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!r>^O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r?{O#P>cO~O!r?|O#P>hO~O#P>hO#T'ZO#n'XO~O#P:rO#T'ZO#n'XO~O#P>iO#T'ZO#n'XO~O#P>lO#T'ZO#n'XO~O!z$hO#T?nO~Oo>wOs$lO~O!z$hO#T?oO~O#O?QO!n'pX!p'pX'P'pX~O!z$hO#T?vO~O!z$hO#T?wO~O!z$hO#T?xO~Oo?lOs$lO~Oo?uOs$lO~Oo?tOs$lO~O%X$]%W$k!e$^#d%`#g'u'W#f~",goto:"%1O'{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'|P(TPP(Z(^PPP(vP(^*o(^6cP6cPP>cFxF{PP6cGR! RP! UP! UPPGR! e! h! lGRGRPP! oP! rPPGR!)u!0q!0qGR!0uP!0u!0u!0u!2PP!;g!S#>Y#>h#>n#>x#?O#?U#?[#?b#?l#?v#?|#@S#@^PPPPPPPP#@d#@hP#A^$(h$(k$(u$1R$1_$1t$1zP$1}$2Q$2W$5[$?Y$Gr$Gu$G{$HO$Kb$Ke$Kn$Kv$LQ$Li$MP$Mz%'}PP%0O%0S%0`%0u%0{Q!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]|!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q%_!ZQ%h!aQ%m!eQ'k$cQ'x$iQ)d%lQ+W'{Q,k)QU.O+T+V+]Q.j+pQ/`,jS0a.T.UQ0q.dQ1n0VS1w0`0dQ2Q0nQ2q1pQ2t1xR3[2u|ZPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]2lf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(t)T)X)`)c)g)n)u)y*V*Z*[*r*w*|+Q+X+[+^+_+j+m+q+t,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b/X/n/y0O0T0b0e1R1S1b1k1o1y1{2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|S$ku$`Q%W!V^%e!_$a'j)Y.f0o2OQ%i!bQ%j!cQ%k!dQ%v!kS&V!|){Q&]#OQ'l$dQ'm$eS'|$j'hQ)S%`Q*v'nQ+z(bQ,O(dQ-S)iU.g+n.c0mQ.q+{Q.r+|Q/d,vS0V-y0XQ1X/cQ1e/rS2T0s2WQ2h1`Q3U2iQ3^2zQ3_2{Q3c3VQ3f3`R3g3d0{!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q#h^Q%O!PQ%P!QQ%Q!RQ,b(sQ.u,RR.y,UR&r#hQ*Q&qR/w-a0{hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#j_k#n`j#i#q&t&x5d5e9W:Q:R:S:TR#saT&}#r'PR-h*[R&R!{0zhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#tb-x!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(e(x)v)x)z*O*U*h*j+a+d,n,q-W-Y-[-e-f-g-w.Y/O/[/v0Q0Z0f1g1j1m1z2S2`2o2p2v3Z4]4^4d4e4f4g4h4i4j4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}5P5Q5T5U5W5X5Y5]5^5`5t6e6f6g6h6i6j6k6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7m7q8i8j8k8l8m8n8p8q8r8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9U9V9Y9[9]9d9e9g9i9j9k9l9m9n9q9r9t9w:p:x:y:z:{:|:};Q;R;T;U;V;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;g;l;m;p;r;s;w;y;{O>P>Q>R>S>T>U>X>Y>Z>_>`>a>b>d>e>f>g>j>k>m>r>s>{>|>}?V?b?cQ'd$[Y(X$s8o;P=^=_S(]3o7lQ(`$tR+y(aT&X!|){#a$Pg#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|3yfPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(h(t)T)X)`)c)g)n)u)y){*V*Z*[*r*w*|+Q+X+[+^+_+j+m+n+q+t,Q,T,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b.c.u.w/P/X/n/y0O0T0b0e0m0s0}1O1R1S1W1b1k1o1y1{2W2]2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|[#wd#x3h3i3j3kh'V#z'W)f,}-U/k/u1f3l3m3q3rQ)e%nR-T)kY#yd%n)k3h3iV'T#x3j3k1dePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(R(V(Y(Z(h(t)T)X)g)n)u)y){*V*Z*[*|+^+q,Q,T,Y,c,e,g-O-`-a-t-z.[.^.u.w/P/X/n/y0O0T0e0s0}1O1R1S1W1b1k1o1{2W2]2k2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q%o!fQ)l%r#O3vg#}$h'X'Z'p't'y(W([)`*w+Q+X+[+_+j+m+t,i,u,x-v.S.V.].b0b1y7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|a3w)c*r+n.c0m3n3s3tY'T#z)f-U3l3mZ*c'W,}/u3q3r0vhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0}1O1R1S1W1k1o1{2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T2U0s2WR&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(e)v)x*O*j+d-Y.Y0f1z2`2p2v3Z9U9V!Y4U3o4d4e4f4g4i4j4l4m4n4o4p4q4r4s4{4|4}5P5Q5T5U5W5X5Y5]5^5`!^6X4^6e6f6g6h6j6k6m6n6o6p6q6r6s6t6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7l7m#b8[#k%a%s%|&O&v&w&|(x*U+a,n,q-W-e-g/[4]5t7q8i8j8k8l8n8o8p8t8u8v8w8x8y8z8{9Y9[9]9d9g9i9l9n9q9r9t9w:p;Rr>s>{?b?c!|:i&U)z-[-f-w0Q0Z1g1j1m2o8q8r9e9j9k9m:x:y:z:{:};P;Q;T;U;V;W;X;Y;Z;[;d;f;g;l;m;p;r;s;w;y;{>R>S!`T>X>Z>_>a>d>e>g>j>k>m>|>}?VoU>Y>`>b>fS$iu#fQ$qwU'{$j$l&pQ'}$kS(P$m$rQ+Z'|Q+](OQ+`(QQ1p0VQ5s7dS5v7f7gQ5w7hQ7p9xS7r9y9zQ7s9{Q;O>uS;h>w>zQ;o?PQ>y?jS?O?l?nQ?U?oQ?`?sS?a?t?wS?d?u?vR?e?xT'u$h+Q!csPVXt!S!j!r!s!w$h%O%Q%T%V'p([(h)`+Q+j+t,Q,T,u,x.u.w/P0}1O1W2]Q$]rR*l'eQ-{+PQ.i+oQ0U-xQ0j.`Q1|0kR2w1}T0W-y0XQ+V'zQ.U+YR0d.XQ(_$tQ)^%iQ)s%vQ*u'mS+x(`(aQ-q*vR.p+yQ(^$tQ)b%kQ)r%vQ*q'lS*t'm)sU+w(_(`(aS-p*u*vS.o+x+yQ/i,{Q/{-nQ/}-qR0v.pQ(]$tQ)]%iQ)_%jQ)q%vU*s'm)r)sW+v(^(_(`(aQ,t)^U-o*t*u*vU.n+w+x+yS/|-p-qS0u.o.pQ1i/}R2Y0vX+r([)`+t,xb%f!_$a'j+n.c.f0m0o2OR,r)YQ$ovS+b(S?Qg?m([)`+i+j+m+t,u,x.a.b0lR0t.kT2V0s2W0}|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$y{$|Q,O(dR.r+|T${{$|Q(j%OQ(r%QQ(w%TQ(z%VQ.},XQ0z.yQ0{.|R2c1WR(m%PX,[(k(l,],_R(n%PX(p%Q%T%V1WR%T!T_%b!]%S(t,c,e/X1RR%V!UR/],gR,j)PQ)a%kS*p'l)bS-m*q,{S/z-n/iR1h/{T,w)`,xQ-P)fU/l,|,}-UU1^/k/t/uR2n1fR/o-OR2l1bSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,Q1O2]Q,Q(hQ1O/PR2]0}Q)o%sS-X)o9bR9b8rQ-b*QR/x-bQ&y#oS*X&y9XR9X:tS*]&|&}R-i*]Q)|&YR-^)|!j'Y#|'o*f*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*e'Y/g]/g,{-n.f0o1[2O!h'[#|'o*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*g'[/hZ/h,{-n.f0o2OU#xd%n)kU'S#x3j3kQ3j3hR3k3iQ'W#z^*b'W,}/k/u1f3q3rQ,})fQ/u-UQ3q3lR3r3m|tPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]W$_t'p+j,uS'p$h+QS+j([+tT,u)`,xQ'f$]R*m'fQ0X-yR1q0XQ+R'vR-}+RQ0].PS1u0]1vR1v0^Q._+fR0i._Q+t([R.l+tW+m([)`+t,xS.b+j,uT.e+m.bQ)Z%fR,s)ZQ(T$oS+c(T?RR?R?mQ2W0sR2}2WQ$|{R(f$|Q,S(iR.v,SQ,V(jR.z,VQ,](kQ,_(lT/Q,],_Q)U%aS,o)U9`R9`8qQ)R%_R,l)RQ,x)`R/e,xQ)h%pS-R)h/sR/s-SQ1c/oR2m1cT!uV!rj!iPVX!j!r!s!w(h,Q/P0}1O2]Q%R!SQ(i%OW(p%Q%T%V1WQ.x,TQ0x.uR0y.w|[PVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q#e]U#k`#q&xQ#ucQ$UkQ$VlQ$WmQ$XnQ$YoQ$ZpQ$sx^$vy3y5|8P:]n>oQ+a(RQ+d(VQ,n)TQ,q)XQ-W)nQ-Y)uQ-[)yQ-e*VQ-f*ZQ-g*[^-k3u5b7c9v;}>p>qQ-w*|Q.Y+^Q/O,YQ/[,gQ/v-`Q0Q-tQ0Z-zQ0f.[Q1g/yQ1j0OQ1m0TQ1z0eU2S0s2W:rQ2`1SQ2o1kQ2p1oQ2v1{Q3Z2rQ3o3xQ4]jQ4^5eQ4d5fQ4e5hQ4f5jQ4g5lQ4h5nQ4i5pQ4j3zQ4l3|Q4m3}Q4n4OQ4o4PQ4p4QQ4q4RQ4r4SQ4s4TQ4t4UQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4_Q4|4`Q4}4aQ5P4bQ5Q4cQ5T4kQ5U5OQ5W5RQ5X5SQ5Y5VQ5]5ZQ5^5[Q5`5_Q5t5rQ6e5gQ6f5iQ6g5kQ6h5mQ6i5oQ6j5qQ6k5}Q6m6PQ6n6QQ6o6RQ6p6SQ6q6TQ6r6UQ6s6VQ6t6WQ6u6XQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7Q6cQ7R6dQ7U6lQ7V7PQ7X7SQ7Y7TQ7Z7WQ7^7[Q7_7]Q7a7`Q7l5{Q7m5dQ7q7oQ8i7xQ8j7yQ8k7zQ8l7{Q8m7|Q8n7}Q8o8OQ8p8QU8q,c/X1RQ8r%dQ8t8SQ8u8TQ8v8UQ8w8VQ8x8WQ8y8XQ8z8YQ8{8ZQ8|8[Q8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9U8dQ9V8eQ9Y8fQ9[8gQ9]8hQ9d8sQ9e9TQ9g9ZQ9i9^Q9j9_Q9k9aQ9l9cQ9m9fQ9n9hQ9q9oQ9r9pQ9t9sQ9w:QU:p#i&t9WQ:x:UQ:y:VQ:z:WQ:{:XQ:|:YQ:}:ZQ;P:[Q;Q:^Q;R:_Q;T:aQ;U:bQ;V:cQ;W:dQ;X:eQ;Y:fQ;Z:gQ;[:hQ;]:iQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:uQ;f:vQ;g:wQ;l;SQ;m;eQ;p;jQ;r;kQ;s;nQ;w;uQ;y;vQ;{;zQOP<{Q>Q<|Q>R=OQ>S=PQ>T=QQ>U=RQ>X=SQ>Y=TQ>Z=UQ>_=aQ>`=bQ>a>VQ>b>WQ>d>[Q>e>]Q>f>^Q>g>cQ>j>hQ>k>iQ>m>lQ>r:SQ>s:RQ>{>vQ>|:qQ>}:sQ?V;iQ?b?^R?c?_R*R&qQ%t!gQ)W%dT*P&q-a$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(V(h)u+^,Q,T.[.u.w/P0e0}1O1S1W1o1{2]2r3p3u8d8e!t5c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x7n5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`:P`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l>t!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x?[,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]?]0s2W:rW>^>o>qQ#p`Q&s#iQ&{#qR*T&tS#o`#q^$Sj5d5e:Q:R:S:TS*W&x9WT:t#i&tQ'O#rR*_'PR&T!{R&Z!|Q&Y!|R-]){Q#|gS'^#}3nS'o$h+QS*d'X3sU*f'Z*w-vQ*z'pQ+O'tQ+T'yQ+e(WW+i([)`+t,xQ,{)cQ-n*rQ.T+XQ.W+[Q.Z+_U.a+j+m,uQ.f+nQ/_,iQ0`.SQ0c.VQ0g.]Q0l.bQ0o.cQ1[3tQ1x0bQ2O0mQ2u1yQ5x7iQ5y7jQ5z7kQ7e7wQ7t9|Q7u9}Q7v:OQ;q?SQ;t?TQ;x?YQ?W?pQ?X?qQ?Z?rQ?f?yQ?g?zQ?h?{R?i?|0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_#`$Og#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|S$[r'eQ%l!eS%p!f%rU+f(Y(Z+qQ-Q)gQ/m-OQ0h.^Q1a/nQ2j1bR3W2k|vPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(V)u+^.[0e1S1o1{2r3p3u8d8e`+k([)`+j+m+t,u,x.b!t8c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x<}5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`?k`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l?}!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x@O,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]@P0s2W:rW>^>o>qR'w$hQ'v$hR-|+QR$^rQ#d[Q%Y!WQ%[!XQ%^!YQ(U$pQ({%WQ(|%XQ(}%ZQ)O%]Q)V%cQ)[%gQ)d%lQ)j%qQ)p%tQ*n'iQ-V)mQ-l*oQ.i+oQ.j+pQ.x,WQ/S,`Q/T,aQ/U,bQ/Z,fQ/^,hQ/b,pQ/q-PQ0j.`Q0q.dQ0r.hQ0t.kQ0y.{Q1Y/dQ1_/lQ1n0VQ1|0kQ2Q0nQ2R0pQ2[0|Q2d1XQ2g1^Q2w1}Q2y2PQ2|2VQ3P2ZQ3T2fQ3X2nQ3Y2pQ3]2xQ3a3RQ3b3SR3e3ZR.R+UQ+g(YQ+h(ZR.k+qS+s([+tT,w)`,xa+l([)`+j+m+t,u,x.bQ%g!_Q'i$aQ*o'jQ.h+nS0p.c.fS2P0m0oR2x2OQ$pvW+o([)`+t,xW.`+i+j+m,uS0k.a.bR1}0l|!aPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q$ctW+p([)`+t,xU.d+j+m,uR0n.b0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R/a,m0}}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$x{$|Q(q%QQ(v%TQ(y%VR2b1WQ%c!]Q(u%SQ,d(tQ/W,cQ/Y,eQ1Q/XR2_1RQ%q!fR)m%rR/p-O",nodeNames:"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program",maxTerm:318,nodeProps:[["group",-36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,"Expression",-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,"Statement",-4,121,123,124,125,"Type"],["isolate",-4,67,68,71,200,""],["openedBy",70,"phpOpen",77,"{",87,"(",102,"#["],["closedBy",72,"phpClose",78,"}",88,")",165,"]"]],propSources:[PTr],skippedNodes:[0],repeatNodeCount:32,tokenData:"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!V<%lO8VR9WV'TP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'TP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRV<%l~8V~O8V~~%fR=OW'TPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'TP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'TPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'TPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['TP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'TPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'TP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'TPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'TPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'TP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'TPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['TP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'TPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'TPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'TPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'TPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'TPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['TP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'TPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'TP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'TPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'TP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'TPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'TPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'aS'TP'WYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'aS'TP'WYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!OZ'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'TPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z",tokenizers:[DTr,MTr,RTr,0,1,2,3,BTr],topRules:{Template:[0,73],Program:[1,241]},dynamicPrecedences:{298:1},specialized:[{term:284,get:(e,t)=>Vvt(e)<<1,external:Vvt},{term:284,get:e=>FTr[e]||-1}],tokenPrec:29889}),TLn=Vd.define({name:"php",parser:NTr.configure({props:[Vu.add({IfStatement:Pu({except:/^\s*({|else\b|elseif\b|endif\b)/}),TryStatement:Pu({except:/^\s*({|catch\b|finally\b)/}),SwitchBody:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},ColonBlock:e=>e.baseIndent+e.unit,"Block EnumBody DeclarationList":Xv({closing:"}"}),ArrowFunction:e=>e.baseIndent+e.unit,"String BlockComment":()=>null,Statement:Pu({except:/^({|end(for|foreach|switch|while)\b)/})}),kh.add({"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList":bA,ColonBlock(e){return{from:e.from+1,to:e.to}},BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/,wordChars:"$",closeBrackets:{stringPrefixes:["b","B"]}}});function UTr(e={}){let t=[],n;if(e.baseLanguage!==null)if(e.baseLanguage)n=e.baseLanguage;else{let r=dI({matchClosingTags:!1});t.push(r.support),n=r.language}return new wd(TLn.configure({wrap:n&&Ap(r=>r.type.isTop?{parser:n.parser,overlay:o=>o.name=="Text"}:null),top:e.plain?"Program":"Template"}),t)}const jTr=Object.freeze(Object.defineProperty({__proto__:null,php:UTr,phpLanguage:TLn},Symbol.toStringTag,{value:"Module"})),WTr=1,QLn=194,DLn=195,VTr=196,Hvt=197,zTr=198,HTr=199,$Tr=200,XTr=2,BLn=3,$vt=201,GTr=24,YTr=25,ZTr=49,qTr=50,KTr=55,JTr=56,eQr=57,tQr=59,nQr=60,iQr=61,rQr=62,oQr=63,sQr=65,aQr=238,lQr=71,cQr=241,dQr=242,uQr=243,hQr=244,fQr=245,gQr=246,mQr=247,kQr=248,RLn=72,vQr=249,AQr=250,pQr=251,bQr=252,wQr=253,OQr=254,yQr=255,CQr=256,_Qr=73,SQr=77,LQr=263,xQr=112,EQr=130,TQr=151,QQr=152,DQr=155,XB=10,TK=13,wKe=32,Tpe=9,OKe=35,BQr=40,RQr=46,JPe=123,Xvt=125,ILn=39,MLn=34,Gvt=92,IQr=111,MQr=120,PQr=78,FQr=117,NQr=85,UQr=new Set([YTr,ZTr,qTr,LQr,sQr,EQr,JTr,eQr,aQr,rQr,oQr,RLn,_Qr,SQr,nQr,iQr,TQr,QQr,DQr,xQr]);function HSe(e){return e==XB||e==TK}function $Se(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}const jQr=new go((e,t)=>{let n;if(e.next<0)e.acceptToken(HTr);else if(t.context.flags&Eue)HSe(e.next)&&e.acceptToken(zTr,1);else if(((n=e.peek(-1))<0||HSe(n))&&t.canShift(Hvt)){let r=0;for(;e.next==wKe||e.next==Tpe;)e.advance(),r++;(e.next==XB||e.next==TK||e.next==OKe)&&e.acceptToken(Hvt,-r)}else HSe(e.next)&&e.acceptToken(VTr,1)},{contextual:!0}),WQr=new go((e,t)=>{let n=t.context;if(n.flags)return;let r=e.peek(-1);if(r==XB||r==TK){let o=0,s=0;for(;;){if(e.next==wKe)o++;else if(e.next==Tpe)o+=8-o%8;else break;e.advance(),s++}o!=n.indent&&e.next!=XB&&e.next!=TK&&e.next!=OKe&&(o[e,t|PLn])),HQr=new cI({start:VQr,reduce(e,t,n,r){return e.flags&Eue&&UQr.has(t)||(t==lQr||t==RLn)&&e.flags&PLn?e.parent:e},shift(e,t,n,r){return t==QLn?new Tue(e,zQr(r.read(r.pos,n.pos)),0):t==DLn?e.parent:t==GTr||t==KTr||t==tQr||t==BLn?new Tue(e,0,Eue):Yvt.has(t)?new Tue(e,0,Yvt.get(t)|e.flags&Eue):e},hash(e){return e.hash}}),$Qr=new go(e=>{for(let t=0;t<5;t++){if(e.next!="print".charCodeAt(t))return;e.advance()}if(!/\w/.test(String.fromCharCode(e.next)))for(let t=0;;t++){let n=e.peek(t);if(!(n==wKe||n==Tpe)){n!=BQr&&n!=RQr&&n!=XB&&n!=TK&&n!=OKe&&e.acceptToken(WTr);return}}}),XQr=new go((e,t)=>{let{flags:n}=t.context,r=n&f_?MLn:ILn,o=(n&g_)>0,s=!(n&m_),a=(n&k_)>0,l=e.pos;for(;!(e.next<0);)if(a&&e.next==JPe)if(e.peek(1)==JPe)e.advance(2);else{if(e.pos==l){e.acceptToken(BLn,1);return}break}else if(s&&e.next==Gvt){if(e.pos==l){e.advance();let d=e.next;d>=0&&(e.advance(),GQr(e,d)),e.acceptToken(XTr);return}break}else if(e.next==Gvt&&!s&&e.peek(1)>-1)e.advance(2);else if(e.next==r&&(!o||e.peek(1)==r&&e.peek(2)==r)){if(e.pos==l){e.acceptToken($vt,o?3:1);return}break}else if(e.next==XB){if(o)e.advance();else if(e.pos==l){e.acceptToken($vt);return}break}else e.advance();e.pos>l&&e.acceptToken($Tr)});function GQr(e,t){if(t==IQr)for(let n=0;n<2&&e.next>=48&&e.next<=55;n++)e.advance();else if(t==MQr)for(let n=0;n<2&&$Se(e.next);n++)e.advance();else if(t==FQr)for(let n=0;n<4&&$Se(e.next);n++)e.advance();else if(t==NQr)for(let n=0;n<8&&$Se(e.next);n++)e.advance();else if(t==PQr&&e.next==JPe){for(e.advance();e.next>=0&&e.next!=Xvt&&e.next!=ILn&&e.next!=MLn&&e.next!=XB;)e.advance();e.next==Xvt&&e.advance()}}const YQr=Xd({'async "*" "**" FormatConversion FormatSpec':ve.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ve.controlKeyword,"in not and or is del":ve.operatorKeyword,"from def class global nonlocal lambda":ve.definitionKeyword,import:ve.moduleKeyword,"with as print":ve.keyword,Boolean:ve.bool,None:ve.null,VariableName:ve.variableName,"CallExpression/VariableName":ve.function(ve.variableName),"FunctionDefinition/VariableName":ve.function(ve.definition(ve.variableName)),"ClassDefinition/VariableName":ve.definition(ve.className),PropertyName:ve.propertyName,"CallExpression/MemberExpression/PropertyName":ve.function(ve.propertyName),Comment:ve.lineComment,Number:ve.number,String:ve.string,FormatString:ve.special(ve.string),Escape:ve.escape,UpdateOp:ve.updateOperator,"ArithOp!":ve.arithmeticOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,AssignOp:ve.definitionOperator,Ellipsis:ve.punctuation,At:ve.meta,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,".":ve.derefOperator,", ;":ve.separator}),ZQr={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},qQr=zd.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[$Qr,WQr,jQr,XQr,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:e=>ZQr[e]||-1}],tokenPrec:7668}),Zvt=new upe,FLn=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function Tae(e){return(t,n,r)=>{if(r)return!1;let o=t.node.getChild("VariableName");return o&&n(o,e),!0}}const KQr={FunctionDefinition:Tae("function"),ClassDefinition:Tae("class"),ForStatement(e,t,n){if(n){for(let r=e.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")t(r,"variable");else if(r.name=="in")break}},ImportStatement(e,t){var n,r;let{node:o}=e,s=((n=o.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=o.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&t(a,s?"variable":"namespace")},AssignStatement(e,t){for(let n=e.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")t(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(e,t){for(let n=null,r=e.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&t(r,"variable"),n=r},CapturePattern:Tae("variable"),AsPattern:Tae("variable"),__proto__:null};function NLn(e,t){let n=Zvt.get(t);if(n)return n;let r=[],o=!0;function s(a,l){let d=e.sliceString(a.from,a.to);r.push({label:d,type:l})}return t.cursor(cl.IncludeAnonymous).iterate(a=>{if(a.name){let l=KQr[a.name];if(l&&l(a,s,o)||!o&&FLn.has(a.name))return!1;o=!1}else if(a.to-a.from>8192){for(let l of NLn(e,a.node))r.push(l);return!1}}),Zvt.set(t,r),r}const qvt=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,ULn=["String","FormatString","Comment","PropertyName"];function jLn(e){let t=tc(e.state).resolveInner(e.pos,-1);if(ULn.indexOf(t.name)>-1)return null;let n=t.name=="VariableName"||t.to-t.from<20&&qvt.test(e.state.sliceDoc(t.from,t.to));if(!n&&!e.explicit)return null;let r=[];for(let o=t;o;o=o.parent)FLn.has(o.name)&&(r=r.concat(NLn(e.state.doc,o)));return{options:r,from:n?t.from:e.pos,validFor:qvt}}const JQr=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(e=>({label:e,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(e=>({label:e,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(e=>({label:e,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(e=>({label:e,type:"function"}))),eDr=[Gs("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),Gs("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),Gs("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),Gs("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),Gs(`if \${}: -`,{label:"if",detail:"block",type:"keyword"}),Gs("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),Gs("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),Gs("import ${module}",{label:"import",detail:"statement",type:"keyword"}),Gs("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],WLn=bpe(ULn,Kne(JQr.concat(eDr)));function XSe(e){let{node:t,pos:n}=e,r=e.lineIndent(n,-1),o=null;for(;;){let s=t.childBefore(n);if(s)if(s.name=="Comment")n=s.from;else if(s.name=="Body"||s.name=="MatchBody")e.baseIndentFor(s)+e.unit<=r&&(o=s),t=s;else if(s.name=="MatchClause")t=s;else if(s.type.is("Statement"))t=s;else break;else break}return o}function GSe(e,t){let n=e.baseIndentFor(t),r=e.lineAt(e.pos,-1),o=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&e.node.ton?null:n+e.unit}const Que=Vd.define({name:"python",parser:qQr.configure({props:[Vu.add({Body:e=>{var t;let n=/^\s*(#|$)/.test(e.textAfter)&&XSe(e)||e.node;return(t=GSe(e,n))!==null&&t!==void 0?t:e.continue()},MatchBody:e=>{var t;let n=XSe(e);return(t=GSe(e,n||e.node))!==null&&t!==void 0?t:e.continue()},IfStatement:e=>/^\s*(else:|elif )/.test(e.textAfter)?e.baseIndent:e.continue(),"ForStatement WhileStatement":e=>/^\s*else:/.test(e.textAfter)?e.baseIndent:e.continue(),TryStatement:e=>/^\s*(except[ :]|finally:|else:)/.test(e.textAfter)?e.baseIndent:e.continue(),MatchStatement:e=>/^\s*case /.test(e.textAfter)?e.baseIndent+e.unit:e.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":Xv({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":Xv({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":Xv({closing:"]"}),MemberExpression:e=>e.baseIndent+e.unit,"String FormatString":()=>null,Script:e=>{var t;let n=XSe(e);return(t=n&&GSe(e,n))!==null&&t!==void 0?t:e.continue()}}),kh.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":bA,Body:(e,t)=>({from:e.from+1,to:e.to-(e.to==t.doc.length?0:1)}),"String FormatString":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function tDr(){return new wd(Que,[Que.data.of({autocomplete:jLn}),Que.data.of({autocomplete:WLn})])}const nDr=Object.freeze(Object.defineProperty({__proto__:null,globalCompletion:WLn,localCompletionSource:jLn,python:tDr,pythonLanguage:Que},Symbol.toStringTag,{value:"Module"})),iDr=1,rDr=2,oDr=3,sDr=4,aDr=5,Kvt=98,lDr=101,cDr=102,Jvt=114,dDr=69,Qae=48,eAt=46,uDr=43,hDr=45,tAt=35,nAt=34,fDr=124,gDr=60,mDr=62;function eFe(e){return e>=48&&e<=57}function Dae(e){return eFe(e)||e==95}const kDr=new go((e,t)=>{if(eFe(e.next)){let n=!1;do e.advance();while(Dae(e.next));if(e.next==eAt){if(n=!0,e.advance(),eFe(e.next))do e.advance();while(Dae(e.next));else if(e.next==eAt||e.next>127||/\w/.test(String.fromCharCode(e.next)))return}if(e.next==lDr||e.next==dDr){if(n=!0,e.advance(),(e.next==uDr||e.next==hDr)&&e.advance(),!Dae(e.next))return;do e.advance();while(Dae(e.next))}if(e.next==cDr){let r=e.peek(1);if(r==Qae+3&&e.peek(2)==Qae+2||r==Qae+6&&e.peek(2)==Qae+4)e.advance(3),n=!0;else return}n&&e.acceptToken(aDr)}else if(e.next==Kvt||e.next==Jvt){if(e.next==Kvt&&e.advance(),e.next!=Jvt)return;e.advance();let n=0;for(;e.next==tAt;)n++,e.advance();if(e.next!=nAt)return;e.advance();e:for(;;){if(e.next<0)return;let r=e.next==nAt;if(e.advance(),r){for(let o=0;o{e.next==fDr&&e.acceptToken(iDr,1)}),ADr=new go(e=>{e.next==gDr?e.acceptToken(rDr,1):e.next==mDr&&e.acceptToken(oDr,1)}),pDr=Xd({"const macro_rules struct union enum type fn impl trait let static":ve.definitionKeyword,"mod use crate":ve.moduleKeyword,"pub unsafe async mut extern default move":ve.modifier,"for if else loop while match continue break return await":ve.controlKeyword,"as in ref":ve.operatorKeyword,"where _ crate super dyn":ve.keyword,self:ve.self,String:ve.string,Char:ve.character,RawString:ve.special(ve.string),Boolean:ve.bool,Identifier:ve.variableName,"CallExpression/Identifier":ve.function(ve.variableName),BoundIdentifier:ve.definition(ve.variableName),"FunctionItem/BoundIdentifier":ve.function(ve.definition(ve.variableName)),LoopLabel:ve.labelName,FieldIdentifier:ve.propertyName,"CallExpression/FieldExpression/FieldIdentifier":ve.function(ve.propertyName),Lifetime:ve.special(ve.variableName),ScopeIdentifier:ve.namespace,TypeIdentifier:ve.typeName,"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier":ve.macroName,"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier":ve.macroName,'"!"':ve.macroName,UpdateOp:ve.updateOperator,LineComment:ve.lineComment,BlockComment:ve.blockComment,Integer:ve.integer,Float:ve.float,ArithOp:ve.arithmeticOperator,LogicOp:ve.logicOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,"=":ve.definitionOperator,".. ... => ->":ve.punctuation,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,". DerefOp":ve.derefOperator,"&":ve.operator,", ; ::":ve.separator,"Attribute/...":ve.meta}),bDr={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476},wDr=zd.deserialize({version:14,states:"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5]QYO'#GUO&,SQYO'#JkOOQQ,5]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5]QYO,5]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<]O&3qQWO,5>]OOQO-E;o-E;oOOQO<WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<]QYO<]QYO<]QYO<]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&eQZO7+(|O&@tQWO,5>qOOQO-E]QYO<]QYO,5]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5]QYO,5PO&I]QYO,5@VOOQV<]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<m,5>mOOQO-EnOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-EX,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E]QYO<o,5>oOOQQ-E]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<e,5>eOOQO-E;w-E;wO'?rQWO<wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p",nodeNames:"⚠ | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType",maxTerm:359,nodeProps:[["isolate",-4,4,6,7,33,""],["group",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,"Expression",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,"Type",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,"Statement",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,"Pattern"],["openedBy",9,"[",38,"{",47,"("],["closedBy",12,"]",39,"}",45,")"]],propSources:[pDr],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n",tokenizers:[vDr,ADr,kDr,0,1,2,3],topRules:{SourceFile:[0,8]},specialized:[{term:281,get:e=>bDr[e]||-1}],tokenPrec:15596}),VLn=Vd.define({name:"rust",parser:wDr.configure({props:[Vu.add({IfExpression:Pu({except:/^\s*({|else\b)/}),"String BlockComment":()=>null,AttributeItem:e=>e.continue(),"Statement MatchArm":Pu()}),kh.add(e=>{if(/(Block|edTokens|List)$/.test(e.name))return bA;if(e.name=="BlockComment")return t=>({from:t.from+2,to:t.to-2})})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:\{|\})$/,closeBrackets:{stringPrefixes:["b","r","br"]}}});function ODr(){return new wd(VLn)}const yDr=Object.freeze(Object.defineProperty({__proto__:null,rust:ODr,rustLanguage:VLn},Symbol.toStringTag,{value:"Module"})),zLn=168,tFe=169,CDr=170,_Dr=1,SDr=2,iAt=3,LDr=171,xDr=172,rAt=4,oAt=173,EDr=5,TDr=174,sAt=175,aAt=176,YSe=177,lAt=6,cAt=7,QDr=8,DDr=9,Qpe=0,_S=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],BDr=58,RDr=40,yKe=95,IDr=91,tZ=45,MDr=46,CKe=35,PDr=37,HLn=123,FDr=125,nZ=47,iZ=42,B4=10,dAt=61,NDr=43,UDr=38;function NW(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function _Ke(e){return e>=48&&e<=57}function SKe(e){let t;return e.next==nZ&&((t=e.peek(1))==nZ||t==iZ)}const jDr=new go((e,t)=>{if(t.dialectEnabled(Qpe)){let n;if(e.next<0&&t.canShift(aAt))e.acceptToken(aAt);else if(((n=e.peek(-1))==B4||n<0)&&t.canShift(sAt)){let r=0;for(;e.next!=B4&&_S.includes(e.next);)e.advance(),r++;e.next==B4||SKe(e)?e.acceptToken(sAt,-r):r&&e.acceptToken(YSe)}else if(e.next==B4)e.acceptToken(TDr,1);else if(_S.includes(e.next)){for(e.advance();e.next!=B4&&_S.includes(e.next);)e.advance();e.acceptToken(YSe)}}else{let n=0;for(;_S.includes(e.next);)e.advance(),n++;n&&e.acceptToken(YSe)}},{contextual:!0}),WDr=new go((e,t)=>{if(SKe(e)){if(e.advance(),t.dialectEnabled(Qpe)){let n=-1;for(let r=1;;r++){let o=e.peek(-r-1);if(o==B4||o<0){n=r+1;break}else if(!_S.includes(o))break}if(n>-1){let r=e.next==iZ,o=0;for(e.advance();e.next>=0;)if(e.next==B4){e.advance();let s=0;for(;e.next!=B4&&_S.includes(e.next);)s++,e.advance();if(s=0;)e.advance();e.acceptToken(lAt)}else{for(e.advance();e.next>=0;){let{next:n}=e;if(e.advance(),n==iZ&&e.next==nZ){e.advance();break}}e.acceptToken(cAt)}}}),VDr=new go((e,t)=>{(e.next==NDr||e.next==dAt)&&t.dialectEnabled(Qpe)&&e.acceptToken(e.next==dAt?QDr:DDr,1)}),zDr=new go((e,t)=>{if(!t.dialectEnabled(Qpe))return;let n=t.context.depth;if(e.next<0&&n){e.acceptToken(tFe);return}if(e.peek(-1)==B4){let o=0;for(;e.next!=B4&&_S.includes(e.next);)e.advance(),o++;o!=n&&e.next!=B4&&!SKe(e)&&(o{for(let n=!1,r=0,o=0;;o++){let{next:s}=e;if(NW(s)||s==tZ||s==yKe||n&&_Ke(s))!n&&(s!=tZ||o>0)&&(n=!0),r===o&&s==tZ&&r++,e.advance();else if(s==CKe&&e.peek(1)==HLn){e.acceptToken(EDr,2);break}else{n&&e.acceptToken(r==2&&t.canShift(rAt)?rAt:t.canShift(oAt)?oAt:s==RDr?LDr:xDr);break}}}),$Dr=new go(e=>{if(e.next==FDr){for(e.advance();NW(e.next)||e.next==tZ||e.next==yKe||_Ke(e.next);)e.advance();e.next==CKe&&e.peek(1)==HLn?e.acceptToken(SDr,2):e.acceptToken(_Dr)}}),XDr=new go(e=>{if(_S.includes(e.peek(-1))){let{next:t}=e;(NW(t)||t==yKe||t==CKe||t==MDr||t==IDr||t==BDr&&NW(e.peek(1))||t==tZ||t==UDr||t==iZ)&&e.acceptToken(CDr)}}),GDr=new go(e=>{if(!_S.includes(e.peek(-1))){let{next:t}=e;if(t==PDr&&(e.advance(),e.acceptToken(iAt)),NW(t)){do e.advance();while(NW(e.next)||_Ke(e.next));e.acceptToken(iAt)}}});function $Ln(e,t){this.parent=e,this.depth=t,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)}const YDr=new $Ln(null,0),ZDr=new cI({start:YDr,shift(e,t,n,r){return t==zLn?new $Ln(e,n.pos-r.pos):t==tFe?e.parent:e},hash(e){return e.hash}}),qDr=Xd({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":ve.definitionKeyword,"Keyword selector":ve.keyword,ControlKeyword:ve.controlKeyword,NamespaceName:ve.namespace,KeyframeName:ve.labelName,KeyframeRangeName:ve.operatorKeyword,TagName:ve.tagName,"ClassName Suffix":ve.className,PseudoClassName:ve.constant(ve.className),IdName:ve.labelName,"FeatureName PropertyName":ve.propertyName,AttributeName:ve.attributeName,NumberLiteral:ve.number,KeywordQuery:ve.keyword,UnaryQueryOp:ve.operatorKeyword,"CallTag ValueName":ve.atom,VariableName:ve.variableName,SassVariableName:ve.special(ve.variableName),Callee:ve.operatorKeyword,Unit:ve.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":ve.definitionOperator,MatchOp:ve.compareOperator,"ChildOp SiblingOp, LogicOp":ve.logicOperator,BinOp:ve.arithmeticOperator,"Important Global Default":ve.modifier,Comment:ve.blockComment,LineComment:ve.lineComment,ColorLiteral:ve.color,"ParenthesizedContent StringLiteral":ve.string,"InterpolationStart InterpolationContinue InterpolationEnd":ve.meta,': "..."':ve.punctuation,"PseudoOp #":ve.derefOperator,"; ,":ve.separator,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace}),KDr={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},JDr={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},eBr={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},tBr={__proto__:null,layer:166,not:184,only:184,selector:190},nBr=zd.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:"⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles",maxTerm:196,context:ZDr,nodeProps:[["openedBy",1,"InterpolationStart",5,"InterpolationEnd",21,"(",43,"[",78,"{"],["isolate",-3,6,7,26,""],["closedBy",22,")",44,"]",70,"}"]],propSources:[qDr],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[zDr,XDr,$Dr,GDr,HDr,jDr,WDr,VDr,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:e=>KDr[e]||-1},{term:171,get:e=>JDr[e]||-1},{term:80,get:e=>eBr[e]||-1},{term:173,get:e=>tBr[e]||-1}],tokenPrec:3217}),qge=Vd.define({name:"sass",parser:nBr.configure({props:[kh.add({Block:bA,Comment(e,t){return{from:e.from+2,to:t.sliceDoc(e.to-2,e.to)=="*/"?e.to-2:e.to}}}),Vu.add({Declaration:Pu()})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"$-"}}),iBr=qge.configure({dialect:"indented",props:[Vu.add({"Block RuleSet":e=>e.baseIndent+e.unit}),kh.add({Block:e=>({from:e.from,to:e.to})})]}),XLn=Ope(e=>e.name=="VariableName"||e.name=="SassVariableName");function rBr(e){return new wd(e!=null&&e.indented?iBr:qge,qge.data.of({autocomplete:XLn}))}const uAt=Object.freeze(Object.defineProperty({__proto__:null,sass:rBr,sassCompletionSource:XLn,sassLanguage:qge},Symbol.toStringTag,{value:"Module"})),oBr={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34},sBr=zd.deserialize({version:14,states:"!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h",stateData:"!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O",goto:"xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV",nodeNames:"⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String",maxTerm:17,nodeProps:[["isolate",-3,1,2,11,""],["openedBy",4,"("],["closedBy",5,")"],["group",-6,6,7,8,9,10,11,"Expression"]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{",tokenizers:[0],topRules:{Module:[0,3]},specialized:[{term:9,get:e=>oBr[e]||-1}],tokenPrec:0}),GLn=Vd.define({name:"wast",parser:sBr.configure({props:[Vu.add({App:Xv({closing:")",align:!1})}),kh.add({App:bA,BlockComment(e){return{from:e.from+2,to:e.to-2}}}),Xd({Keyword:ve.keyword,Type:ve.typeName,Number:ve.number,String:ve.string,Identifier:ve.variableName,LineComment:ve.lineComment,BlockComment:ve.blockComment,"( )":ve.paren})]}),languageData:{commentTokens:{line:";;",block:{open:"(;",close:";)"}},closeBrackets:{brackets:["(",'"']}}});function aBr(){return new wd(GLn)}const lBr=Object.freeze(Object.defineProperty({__proto__:null,wast:aBr,wastLanguage:GLn},Symbol.toStringTag,{value:"Module"})),nFe=1,cBr=2,dBr=3,uBr=4,hBr=5,fBr=36,gBr=37,mBr=38,kBr=11,vBr=13;function ABr(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function pBr(e){return e==9||e==10||e==13||e==32}let hAt=null,fAt=null,gAt=0;function iFe(e,t){let n=e.pos+t;if(fAt==e&&gAt==n)return hAt;for(;pBr(e.peek(t));)t++;let r="";for(;;){let o=e.peek(t);if(!ABr(o))break;r+=String.fromCharCode(o),t++}return fAt=e,gAt=n,hAt=r||null}function mAt(e,t){this.name=e,this.parent=t}const bBr=new cI({start:null,shift(e,t,n,r){return t==nFe?new mAt(iFe(r,1)||"",e):e},reduce(e,t){return t==kBr&&e?e.parent:e},reuse(e,t,n,r){let o=t.type.id;return o==nFe||o==vBr?new mAt(iFe(r,1)||"",e):e},strict:!1}),wBr=new go((e,t)=>{if(e.next==60){if(e.advance(),e.next==47){e.advance();let n=iFe(e,0);if(!n)return e.acceptToken(hBr);if(t.context&&n==t.context.name)return e.acceptToken(cBr);for(let r=t.context;r;r=r.parent)if(r.name==n)return e.acceptToken(dBr,-2);e.acceptToken(uBr)}else if(e.next!=33&&e.next!=63)return e.acceptToken(nFe)}},{contextual:!0});function LKe(e,t){return new go(n=>{let r=0,o=t.charCodeAt(0);e:for(;!(n.next<0);n.advance(),r++)if(n.next==o){for(let s=1;s"),yBr=LKe(gBr,"?>"),CBr=LKe(mBr,"]]>"),_Br=Xd({Text:ve.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":ve.angleBracket,TagName:ve.tagName,"MismatchedCloseTag/TagName":[ve.tagName,ve.invalid],AttributeName:ve.attributeName,AttributeValue:ve.attributeValue,Is:ve.definitionOperator,"EntityReference CharacterReference":ve.character,Comment:ve.blockComment,ProcessingInst:ve.processingInstruction,DoctypeDecl:ve.documentMeta,Cdata:ve.special(ve.string)}),SBr=zd.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[wBr,OBr,yBr,CBr,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function Due(e,t){let n=t&&t.getChild("TagName");return n?e.sliceString(n.from,n.to):""}function ZSe(e,t){let n=t&&t.firstChild;return!n||n.name!="OpenTag"?"":Due(e,n)}function LBr(e,t,n){let r=t&&t.getChildren("Attribute").find(s=>s.from<=n&&s.to>=n),o=r&&r.getChild("AttributeName");return o?e.sliceString(o.from,o.to):""}function qSe(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name=="Element")return t;return null}function xBr(e,t){var n;let r=tc(e).resolveInner(t,-1),o=null;for(let s=r;!o&&s.parent;s=s.parent)(s.name=="OpenTag"||s.name=="CloseTag"||s.name=="SelfClosingTag"||s.name=="MismatchedCloseTag")&&(o=s);if(o&&(o.to>t||o.lastChild.type.isError)){let s=o.parent;if(r.name=="TagName")return o.name=="CloseTag"||o.name=="MismatchedCloseTag"?{type:"closeTag",from:r.from,context:s}:{type:"openTag",from:r.from,context:qSe(s)};if(r.name=="AttributeName")return{type:"attrName",from:r.from,context:o};if(r.name=="AttributeValue")return{type:"attrValue",from:r.from,context:o};let a=r==o||r.name=="Attribute"?r.childBefore(t):r;return(a==null?void 0:a.name)=="StartTag"?{type:"openTag",from:t,context:qSe(s)}:(a==null?void 0:a.name)=="StartCloseTag"&&a.to<=t?{type:"closeTag",from:t,context:s}:(a==null?void 0:a.name)=="Is"?{type:"attrValue",from:t,context:o}:a?{type:"attrName",from:t,context:o}:null}else if(r.name=="StartCloseTag")return{type:"closeTag",from:t,context:r.parent};for(;r.parent&&r.to==t&&!(!((n=r.lastChild)===null||n===void 0)&&n.type.isError);)r=r.parent;return r.name=="Element"||r.name=="Text"||r.name=="Document"?{type:"tag",from:t,context:r.name=="Element"?r:qSe(r)}:null}let EBr=class{constructor(t,n,r){this.attrs=n,this.attrValues=r,this.children=[],this.name=t.name,this.completion=Object.assign(Object.assign({type:"type"},t.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=t.textContent?t.textContent.map(o=>({label:o,type:"text"})):[]}};const KSe=/^[:\-\.\w\u00b7-\uffff]*$/;function kAt(e){return Object.assign(Object.assign({type:"property"},e.completion||{}),{label:e.name})}function vAt(e){return typeof e=="string"?{label:`"${e}"`,type:"constant"}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function YLn(e,t){let n=[],r=[],o=Object.create(null);for(let d of t){let u=kAt(d);n.push(u),d.global&&r.push(u),d.values&&(o[d.name]=d.values.map(vAt))}let s=[],a=[],l=Object.create(null);for(let d of e){let u=r,h=o;d.attributes&&(u=u.concat(d.attributes.map(m=>typeof m=="string"?n.find(v=>v.label==m)||{label:m,type:"property"}:(m.values&&(h==o&&(h=Object.create(h)),h[m.name]=m.values.map(vAt)),kAt(m)))));let g=new EBr(d,u,h);l[g.name]=g,s.push(g),d.top&&a.push(g)}a.length||(a=s);for(let d=0;d{var u;let{doc:h}=d.state,g=xBr(d.state,d.pos);if(!g||g.type=="tag"&&!d.explicit)return null;let{type:m,from:v,context:f}=g;if(m=="openTag"){let k=a,A=ZSe(h,f);if(A){let p=l[A];k=(p==null?void 0:p.children)||s}return{from:v,options:k.map(p=>p.completion),validFor:KSe}}else if(m=="closeTag"){let k=ZSe(h,f);return k?{from:v,to:d.pos+(h.sliceString(d.pos,d.pos+1)==">"?1:0),options:[((u=l[k])===null||u===void 0?void 0:u.closeNameCompletion)||{label:k+">",type:"type"}],validFor:KSe}:null}else if(m=="attrName"){let k=l[Due(h,f)];return{from:v,options:(k==null?void 0:k.attrs)||r,validFor:KSe}}else if(m=="attrValue"){let k=LBr(h,f,v);if(!k)return null;let A=l[Due(h,f)],p=((A==null?void 0:A.attrValues)||o)[k];return!p||!p.length?null:{from:v,to:d.pos+(h.sliceString(d.pos,d.pos+1)=='"'?1:0),options:p,validFor:/^"[^"]*"?$/}}else if(m=="tag"){let k=ZSe(h,f),A=l[k],p=[],b=f&&f.lastChild;k&&(!b||b.name!="CloseTag"||Due(h,b)!=k)&&p.push(A?A.closeCompletion:{label:"",type:"type",boost:2});let w=p.concat(((A==null?void 0:A.children)||(f?s:a)).map(O=>O.openCompletion));if(f&&(A!=null&&A.text.length)){let O=f.firstChild;O.to>d.pos-20&&!/\S/.test(d.state.sliceDoc(O.to,d.pos))&&(w=w.concat(A.text))}return{from:v,options:w,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const Kge=Vd.define({name:"xml",parser:SBr.configure({props:[Vu.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),kh.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!="OpenTag"?null:{from:t.to,to:n.name=="CloseTag"?n.from:e.to}}}),xqe.add({"OpenTag CloseTag":e=>e.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"\x3C!--",close:"-->"}},indentOnInput:/^\s*<\/$/}});function TBr(e={}){let t=[Kge.data.of({autocomplete:YLn(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(ZLn),new wd(Kge,t)}function AAt(e,t,n=e.length){if(!t)return"";let r=t.firstChild,o=r&&r.getChild("TagName");return o?e.sliceString(o.from,Math.min(o.to,n)):""}const ZLn=er.inputHandler.of((e,t,n,r,o)=>{if(e.composing||e.state.readOnly||t!=n||r!=">"&&r!="/"||!Kge.isActiveAt(e.state,t,-1))return!1;let s=o(),{state:a}=s,l=a.changeByRange(d=>{var u,h,g;let{head:m}=d,v=a.doc.sliceString(m-1,m)==r,f=tc(a).resolveInner(m,-1),k;if(v&&r==">"&&f.name=="EndTag"){let A=f.parent;if(((h=(u=A.parent)===null||u===void 0?void 0:u.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(k=AAt(a.doc,A.parent,m))){let p=m+(a.doc.sliceString(m,m+1)===">"?1:0),b=``;return{range:d,changes:{from:m,to:p,insert:b}}}}else if(v&&r=="/"&&f.name=="StartCloseTag"){let A=f.parent;if(f.from==m-2&&((g=A.lastChild)===null||g===void 0?void 0:g.name)!="CloseTag"&&(k=AAt(a.doc,A,m))){let p=m+(a.doc.sliceString(m,m+1)===">"?1:0),b=`${k}>`;return{range:Ln.cursor(m+b.length,-1),changes:{from:m,to:p,insert:b}}}}return{range:d}});return l.changes.empty?!1:(e.dispatch([s,a.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),QBr=Object.freeze(Object.defineProperty({__proto__:null,autoCloseTags:ZLn,completeFromSchema:YLn,xml:TBr,xmlLanguage:Kge},Symbol.toStringTag,{value:"Module"})),SF=63,pAt=64,DBr=1,BBr=2,qLn=3,RBr=4,KLn=5,IBr=6,MBr=7,JLn=65,PBr=66,FBr=8,NBr=9,UBr=10,jBr=11,WBr=12,exn=13,VBr=19,zBr=20,HBr=29,$Br=33,XBr=34,GBr=47,YBr=0,xKe=1,rFe=2,QK=3,oFe=4;let vT=class{constructor(t,n,r){this.parent=t,this.depth=n,this.type=r,this.hash=(t?t.hash+t.hash<<8:0)+n+(n<<4)+r}};vT.top=new vT(null,-1,YBr);function rZ(e,t){for(let n=0,r=t-e.pos-1;;r--,n++){let o=e.peek(r);if(S8(o)||o==-1)return n}}function sFe(e){return e==32||e==9}function S8(e){return e==10||e==13}function txn(e){return sFe(e)||S8(e)}function eQ(e){return e<0||txn(e)}const ZBr=new cI({start:vT.top,reduce(e,t){return e.type==QK&&(t==zBr||t==XBr)?e.parent:e},shift(e,t,n,r){if(t==qLn)return new vT(e,rZ(r,r.pos),xKe);if(t==JLn||t==KLn)return new vT(e,rZ(r,r.pos),rFe);if(t==SF)return e.parent;if(t==VBr||t==$Br)return new vT(e,0,QK);if(t==exn&&e.type==oFe)return e.parent;if(t==GBr){let o=/[1-9]/.exec(r.read(r.pos,n.pos));if(o)return new vT(e,e.depth+ +o[0],oFe)}return e},hash(e){return e.hash}});function UW(e,t,n=0){return e.peek(n)==t&&e.peek(n+1)==t&&e.peek(n+2)==t&&eQ(e.peek(n+3))}const qBr=new go((e,t)=>{if(e.next==-1&&t.canShift(pAt))return e.acceptToken(pAt);let n=e.peek(-1);if((S8(n)||n<0)&&t.context.type!=QK){if(UW(e,45))if(t.canShift(SF))e.acceptToken(SF);else return e.acceptToken(DBr,3);if(UW(e,46))if(t.canShift(SF))e.acceptToken(SF);else return e.acceptToken(BBr,3);let r=0;for(;e.next==32;)r++,e.advance();(r{if(t.context.type==QK){e.next==63&&(e.advance(),eQ(e.next)&&e.acceptToken(MBr));return}if(e.next==45)e.advance(),eQ(e.next)&&e.acceptToken(t.context.type==xKe&&t.context.depth==rZ(e,e.pos-1)?RBr:qLn);else if(e.next==63)e.advance(),eQ(e.next)&&e.acceptToken(t.context.type==rFe&&t.context.depth==rZ(e,e.pos-1)?IBr:KLn);else{let n=e.pos;for(;;)if(sFe(e.next)){if(e.pos==n)return;e.advance()}else if(e.next==33)nxn(e);else if(e.next==38)aFe(e);else if(e.next==42){aFe(e);break}else if(e.next==39||e.next==34){if(EKe(e,!0))break;return}else if(e.next==91||e.next==123){if(!eRr(e))return;break}else{ixn(e,!0,!1,0);break}for(;sFe(e.next);)e.advance();if(e.next==58){if(e.pos==n&&t.canShift(HBr))return;let r=e.peek(1);eQ(r)&&e.acceptTokenTo(t.context.type==rFe&&t.context.depth==rZ(e,n)?PBr:JLn,n)}}},{contextual:!0});function JBr(e){return e>32&&e<127&&e!=34&&e!=37&&e!=44&&e!=60&&e!=62&&e!=92&&e!=94&&e!=96&&e!=123&&e!=124&&e!=125}function bAt(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function wAt(e,t){return e.next==37?(e.advance(),bAt(e.next)&&e.advance(),bAt(e.next)&&e.advance(),!0):JBr(e.next)||t&&e.next==44?(e.advance(),!0):!1}function nxn(e){if(e.advance(),e.next==60){for(e.advance();;)if(!wAt(e,!0)){e.next==62&&e.advance();break}}else for(;wAt(e,!1););}function aFe(e){for(e.advance();!eQ(e.next)&&Jge(e.next)!="f";)e.advance()}function EKe(e,t){let n=e.next,r=!1,o=e.pos;for(e.advance();;){let s=e.next;if(s<0)break;if(e.advance(),s==n)if(s==39)if(e.next==39)e.advance();else break;else break;else if(s==92&&n==34)e.next>=0&&e.advance();else if(S8(s)){if(t)return!1;r=!0}else if(t&&e.pos>=o+1024)return!1}return!r}function eRr(e){for(let t=[],n=e.pos+1024;;)if(e.next==91||e.next==123)t.push(e.next),e.advance();else if(e.next==39||e.next==34){if(!EKe(e,!0))return!1}else if(e.next==93||e.next==125){if(t[t.length-1]!=e.next-2)return!1;if(t.pop(),e.advance(),!t.length)return!0}else{if(e.next<0||e.pos>n||S8(e.next))return!1;e.advance()}}const tRr="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function Jge(e){return e<33?"u":e>125?"s":tRr[e-33]}function JSe(e,t){let n=Jge(e);return n!="u"&&!(t&&n=="f")}function ixn(e,t,n,r){if(Jge(e.next)=="s"||(e.next==63||e.next==58||e.next==45)&&JSe(e.peek(1),n))e.advance();else return!1;let o=e.pos;for(;;){let s=e.next,a=0,l=r+1;for(;txn(s);){if(S8(s)){if(t)return!1;l=0}else l++;s=e.peek(++a)}if(!(s>=0&&(s==58?JSe(e.peek(a+1),n):s==35?e.peek(a-1)!=32:JSe(s,n)))||!n&&l<=r||l==0&&!n&&(UW(e,45,a)||UW(e,46,a)))break;if(t&&Jge(s)=="f")return!1;for(let u=a;u>=0;u--)e.advance();if(t&&e.pos>o+1024)return!1}return!0}const nRr=new go((e,t)=>{if(e.next==33)nxn(e),e.acceptToken(WBr);else if(e.next==38||e.next==42){let n=e.next==38?UBr:jBr;aFe(e),e.acceptToken(n)}else e.next==39||e.next==34?(EKe(e,!1),e.acceptToken(NBr)):ixn(e,!1,t.context.type==QK,t.context.depth)&&e.acceptToken(FBr)}),iRr=new go((e,t)=>{let n=t.context.type==oFe?t.context.depth:-1,r=e.pos;e:for(;;){let o=0,s=e.next;for(;s==32;)s=e.peek(++o);if(!o&&(UW(e,45,o)||UW(e,46,o))||!S8(s)&&(n<0&&(n=Math.max(t.context.depth+1,o)),oYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:ZBr,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[rRr],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[qBr,KBr,nRr,iRr,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),sRr=zd.deserialize({version:14,states:"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d",stateData:"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~",goto:"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS",nodeNames:"⚠ Document Frontmatter DashLine FrontmatterContent Body",maxTerm:10,skippedNodes:[0],repeatNodeCount:2,tokenData:"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~",tokenizers:[0],topRules:{Document:[0,1]},tokenPrec:67}),TKe=Vd.define({name:"yaml",parser:oRr.configure({props:[Vu.add({Stream:e=>{for(let t=e.node.resolve(e.pos,-1);t&&t.to>=e.pos;t=t.parent){if(t.name=="BlockLiteralContent"&&t.frome.pos)return null}}return null},FlowMapping:Xv({closing:"}"}),FlowSequence:Xv({closing:"]"})}),kh.add({"FlowMapping FlowSequence":bA,"Item Pair BlockLiteral":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function aRr(){return new wd(TKe)}const lRr=Vd.define({name:"yaml-frontmatter",parser:sRr.configure({props:[Xd({DashLine:ve.meta})]})});function cRr(e){let{language:t,support:n}=e.content instanceof wd?e.content:{language:e.content,support:[]};return new wd(lRr.configure({wrap:Ap(r=>r.name=="FrontmatterContent"?{parser:TKe.parser}:r.name=="Body"?{parser:t.parser}:null)}),n)}const dRr=Object.freeze(Object.defineProperty({__proto__:null,yaml:aRr,yamlFrontmatter:cRr,yamlLanguage:TKe},Symbol.toStringTag,{value:"Module"}));var uRr={"+":["conjugate","add"],"−":["negate","subtract"],"×":["signOf","multiply"],"÷":["reciprocal","divide"],"⌈":["ceiling","greaterOf"],"⌊":["floor","lesserOf"],"∣":["absolute","residue"],"⍳":["indexGenerate","indexOf"],"?":["roll","deal"],"⋆":["exponentiate","toThePowerOf"],"⍟":["naturalLog","logToTheBase"],"○":["piTimes","circularFuncs"],"!":["factorial","binomial"],"⌹":["matrixInverse","matrixDivide"],"<":[null,"lessThan"],"≤":[null,"lessThanOrEqual"],"=":[null,"equals"],">":[null,"greaterThan"],"≥":[null,"greaterThanOrEqual"],"≠":[null,"notEqual"],"≡":["depth","match"],"≢":[null,"notMatch"],"∈":["enlist","membership"],"⍷":[null,"find"],"∪":["unique","union"],"∩":[null,"intersection"],"∼":["not","without"],"∨":[null,"or"],"∧":[null,"and"],"⍱":[null,"nor"],"⍲":[null,"nand"],"⍴":["shapeOf","reshape"],",":["ravel","catenate"],"⍪":[null,"firstAxisCatenate"],"⌽":["reverse","rotate"],"⊖":["axis1Reverse","axis1Rotate"],"⍉":["transpose",null],"↑":["first","take"],"↓":[null,"drop"],"⊂":["enclose","partitionWithAxis"],"⊃":["diclose","pick"],"⌷":[null,"index"],"⍋":["gradeUp",null],"⍒":["gradeDown",null],"⊤":["encode",null],"⊥":["decode",null],"⍕":["format","formatByExample"],"⍎":["execute",null],"⊣":["stop","left"],"⊢":["pass","right"]},hRr=/[\.\/⌿⍀¨⍣]/,fRr=/⍬/,gRr=/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/,mRr=/←/,kRr=/[⍝#].*$/,vRr=function(e){var t;return t=!1,function(n){return t=n,n===e?t==="\\":!0}};const ARr={name:"apl",startState:function(){return{prev:!1,func:!1,op:!1,string:!1,escape:!1}},token:function(e,t){var n;return e.eatSpace()?null:(n=e.next(),n==='"'||n==="'"?(e.eatWhile(vRr(n)),e.next(),t.prev=!0,"string"):/[\[{\(]/.test(n)?(t.prev=!1,null):/[\]}\)]/.test(n)?(t.prev=!0,null):fRr.test(n)?(t.prev=!1,"atom"):/[¯\d]/.test(n)?(t.func?(t.func=!1,t.prev=!1):t.prev=!0,e.eatWhile(/[\w\.]/),"number"):hRr.test(n)||mRr.test(n)?"operator":gRr.test(n)?(t.func=!0,t.prev=!1,uRr[n]?"variableName.function.standard":"variableName.function"):kRr.test(n)?(e.skipToEnd(),"comment"):n==="∘"&&e.peek()==="."?(e.next(),"variableName.function"):(e.eatWhile(/[\w\$_]/),t.prev=!0,"keyword"))}},pRr=Object.freeze(Object.defineProperty({__proto__:null,apl:ARr},Symbol.toStringTag,{value:"Module"}));function e8e(e){var t=e.match(/^\s*\S/);return e.skipToEnd(),t?"error":null}const bRr={name:"asciiarmor",token:function(e,t){var n;if(t.state=="top")return e.sol()&&(n=e.match(/^-----BEGIN (.*)?-----\s*$/))?(t.state="headers",t.type=n[1],"tag"):e8e(e);if(t.state=="headers"){if(e.sol()&&e.match(/^\w+:/))return t.state="header","atom";var r=e8e(e);return r&&(t.state="body"),r}else{if(t.state=="header")return e.skipToEnd(),t.state="headers","string";if(t.state=="body")return e.sol()&&(n=e.match(/^-----END (.*)?-----\s*$/))?n[1]!=t.type?"error":(t.state="end","tag"):e.eatWhile(/[A-Za-z0-9+\/=]/)?null:(e.next(),"error");if(t.state=="end")return e8e(e)}},blankLine:function(e){e.state=="headers"&&(e.state="body")},startState:function(){return{state:"top",type:null}}},wRr=Object.freeze(Object.defineProperty({__proto__:null,asciiArmor:bRr},Symbol.toStringTag,{value:"Module"}));function ux(e){for(var t={},n=e.split(" "),r=0;r?$/.test(n)?(t.extenExten=!0,t.extenStart=!1,"strong"):(t.extenStart=!1,e.skipToEnd(),"error");if(t.extenExten)return t.extenExten=!1,t.extenPriority=!0,e.eatWhile(/[^,]/),t.extenInclude&&(e.skipToEnd(),t.extenPriority=!1,t.extenInclude=!1),t.extenSame&&(t.extenPriority=!1,t.extenSame=!1,t.extenApplication=!0),"tag";if(t.extenPriority)return t.extenPriority=!1,t.extenApplication=!0,e.next(),t.extenSame?null:(e.eatWhile(/[^,]/),"number");if(t.extenApplication){if(e.eatWhile(/,/),n=e.current(),n===",")return null;if(e.eatWhile(/\w/),n=e.current().toLowerCase(),t.extenApplication=!1,SRr.indexOf(n)!==-1)return"def"}else return LRr(e,t);return null},languageData:{commentTokens:{line:";",block:{open:";--",close:"--;"}}}},ERr=Object.freeze(Object.defineProperty({__proto__:null,asterisk:xRr},Symbol.toStringTag,{value:"Module"}));var TRr="><+-.,[]".split("");const QRr={name:"brainfuck",startState:function(){return{commentLine:!1,left:0,right:0,commentLoop:!1}},token:function(e,t){if(e.eatSpace())return null;e.sol()&&(t.commentLine=!1);var n=e.next().toString();if(TRr.indexOf(n)!==-1){if(t.commentLine===!0)return e.eol()&&(t.commentLine=!1),"comment";if(n==="]"||n==="[")return n==="["?t.left++:t.right++,"bracket";if(n==="+"||n==="-")return"keyword";if(n==="<"||n===">")return"atom";if(n==="."||n===",")return"def"}else return t.commentLine=!0,e.eol()&&(t.commentLine=!1),"comment";e.eol()&&(t.commentLine=!1)}},DRr=Object.freeze(Object.defineProperty({__proto__:null,brainfuck:QRr},Symbol.toStringTag,{value:"Module"}));var BRr="builtin",RRr="comment",OAt="string",yAt="atom",IRr="number",MRr="keyword",PRr="header",FRr="def",NRr="link";function QKe(e){for(var t={},n=e.split(" "),r=0;r >= "),h4={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,symbol:/[\w*+\-]/};function URr(e,t){return e==="0"&&t.eat(/x/i)?(t.eatWhile(h4.hex),!0):((e=="+"||e=="-")&&h4.digit.test(t.peek())&&(t.eat(h4.sign),e=t.next()),h4.digit.test(e)?(t.eat(e),t.eatWhile(h4.digit),t.peek()=="."&&(t.eat("."),t.eatWhile(h4.digit)),t.eat(h4.exponent)&&(t.eat(h4.sign),t.eatWhile(h4.digit)),!0):!1)}const jRr={name:"cobol",startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(e,t){if(t.indentStack==null&&e.sol()&&(t.indentation=6),e.eatSpace())return null;var n=null;switch(t.mode){case"string":for(var r=!1;(r=e.next())!=null;)if((r=='"'||r=="'")&&!e.match(/['"]/,!1)){t.mode=!1;break}n=OAt;break;default:var o=e.next(),s=e.column();if(s>=0&&s<=5)n=FRr;else if(s>=72&&s<=79)e.skipToEnd(),n=PRr;else if(o=="*"&&s==6)e.skipToEnd(),n=RRr;else if(o=='"'||o=="'")t.mode="string",n=OAt;else if(o=="'"&&!h4.digit_or_colon.test(e.peek()))n=yAt;else if(o==".")n=NRr;else if(URr(o,e))n=IRr;else{if(e.current().match(h4.symbol))for(;s<71&&e.eat(h4.symbol)!==void 0;)s++;_At&&_At.propertyIsEnumerable(e.current().toUpperCase())?n=MRr:SAt&&SAt.propertyIsEnumerable(e.current().toUpperCase())?n=BRr:CAt&&CAt.propertyIsEnumerable(e.current().toUpperCase())?n=yAt:n=null}}return n},indent:function(e){return e.indentStack==null?e.indentation:e.indentStack.indent}},WRr=Object.freeze(Object.defineProperty({__proto__:null,cobol:jRr},Symbol.toStringTag,{value:"Module"}));function DKe(e,t,n,r,o,s){this.indented=e,this.column=t,this.type=n,this.info=r,this.align=o,this.prev=s}function Bae(e,t,n,r){var o=e.indented;return e.context&&e.context.type=="statement"&&n!="statement"&&(o=e.context.indented),e.context=new DKe(o,t,n,r,null,e.context)}function $$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}function LAt(e,t,n){if(t.prevToken=="variable"||t.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||t.typeAtEndOfLine&&e.column()==e.indentation())return!0}function t8e(e){for(;;){if(!e||e.type=="top")return!0;if(e.type=="}"&&e.prev.info!="namespace")return!1;e=e.prev}}function O2(e){var t=e.statementIndentUnit,n=e.dontAlignCalls,r=e.keywords||{},o=e.types||{},s=e.builtin||{},a=e.blockKeywords||{},l=e.defKeywords||{},d=e.atoms||{},u=e.hooks||{},h=e.multiLineStrings,g=e.indentStatements!==!1,m=e.indentSwitch!==!1,v=e.namespaceSeparator,f=e.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,k=e.numberStart||/[\d\.]/,A=e.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,p=e.isOperatorChar||/[+\-*&%=<>!?|\/]/,b=e.isIdentifierChar||/[\w\$_\xa1-\uffff]/,w=e.isReservedIdentifier||!1,O,y;function C(E,T){var D=E.next();if(u[D]){var P=u[D](E,T);if(P!==!1)return P}if(D=='"'||D=="'")return T.tokenize=_(D),T.tokenize(E,T);if(k.test(D)){if(E.backUp(1),E.match(A))return"number";E.next()}if(f.test(D))return O=D,null;if(D=="/"){if(E.eat("*"))return T.tokenize=S,S(E,T);if(E.eat("/"))return E.skipToEnd(),"comment"}if(p.test(D)){for(;!E.match(/^\/[\/*]/,!1)&&E.eat(p););return"operator"}if(E.eatWhile(b),v)for(;E.match(v);)E.eatWhile(b);var Q=E.current();return M_(r,Q)?(M_(a,Q)&&(O="newstatement"),M_(l,Q)&&(y=!0),"keyword"):M_(o,Q)?"type":M_(s,Q)||w&&w(Q)?(M_(a,Q)&&(O="newstatement"),"builtin"):M_(d,Q)?"atom":"variable"}function _(E){return function(T,D){for(var P=!1,Q,M=!1;(Q=T.next())!=null;){if(Q==E&&!P){M=!0;break}P=!P&&Q=="\\"}return(M||!(P||h))&&(D.tokenize=null),"string"}}function S(E,T){for(var D=!1,P;P=E.next();){if(P=="/"&&D){T.tokenize=null;break}D=P=="*"}return"comment"}function L(E,T){e.typeFirstDefinitions&&E.eol()&&t8e(T.context)&&(T.typeAtEndOfLine=LAt(E,T,E.pos))}return{name:e.name,startState:function(E){return{tokenize:null,context:new DKe(-E,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(E,T){var D=T.context;if(E.sol()&&(D.align==null&&(D.align=!1),T.indented=E.indentation(),T.startOfLine=!0),E.eatSpace())return L(E,T),null;O=y=null;var P=(T.tokenize||C)(E,T);if(P=="comment"||P=="meta")return P;if(D.align==null&&(D.align=!0),O==";"||O==":"||O==","&&E.match(/^\s*(?:\/\/.*)?$/,!1))for(;T.context.type=="statement";)$$(T);else if(O=="{")Bae(T,E.column(),"}");else if(O=="[")Bae(T,E.column(),"]");else if(O=="(")Bae(T,E.column(),")");else if(O=="}"){for(;D.type=="statement";)D=$$(T);for(D.type=="}"&&(D=$$(T));D.type=="statement";)D=$$(T)}else O==D.type?$$(T):g&&((D.type=="}"||D.type=="top")&&O!=";"||D.type=="statement"&&O=="newstatement")&&Bae(T,E.column(),"statement",E.current());if(P=="variable"&&(T.prevToken=="def"||e.typeFirstDefinitions&&LAt(E,T,E.start)&&t8e(T.context)&&E.match(/^\s*\(/,!1))&&(P="def"),u.token){var Q=u.token(E,T,P);Q!==void 0&&(P=Q)}return P=="def"&&e.styleDefs===!1&&(P="variable"),T.startOfLine=!1,T.prevToken=y?"def":P||O,L(E,T),P},indent:function(E,T,D){if(E.tokenize!=C&&E.tokenize!=null||E.typeAtEndOfLine&&t8e(E.context))return null;var P=E.context,Q=T&&T.charAt(0),M=Q==P.type;if(P.type=="statement"&&Q=="}"&&(P=P.prev),e.dontIndentStatements)for(;P.type=="statement"&&e.dontIndentStatements.test(P.info);)P=P.prev;if(u.indent){var B=u.indent(E,P,T,D.unit);if(typeof B=="number")return B}var R=P.prev&&P.prev.info=="switch";if(e.allmanIndentation&&/[{(]/.test(Q)){for(;P.type!="top"&&P.type!="}";)P=P.prev;return P.indented}return P.type=="statement"?P.indented+(Q=="{"?0:t||D.unit):P.align&&(!n||P.type!=")")?P.column+(M?0:1):P.type==")"&&!M?P.indented+(t||D.unit):P.indented+(M?0:D.unit)+(!M&&R&&!/^(?:case|default)\b/.test(T)?D.unit:0)},languageData:{indentOnInput:m?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:Object.keys(r).concat(Object.keys(o)).concat(Object.keys(s)).concat(Object.keys(d)),...e.languageData}}}function Qr(e){for(var t={},n=e.split(" "),r=0;r!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return e.match('""')?(t.tokenize=cxn,t.tokenize(e,t)):!1},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"character":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(e,t){var n=t.context;return n.type=="}"&&n.align&&e.eat(">")?(t.context=new DKe(n.indented,n.column,n.type,n.info,null,n.prev),"operator"):!1},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function ZRr(e){return function(t,n){for(var r=!1,o,s=!1;!t.eol();){if(!e&&!r&&t.match('"')){s=!0;break}if(e&&t.match('"""')){s=!0;break}o=t.next(),!r&&o=="$"&&t.match("{")&&t.skipTo("}"),r=!r&&o=="\\"&&!e}return(s||!e)&&(n.tokenize=null),"string"}}const qRr=O2({name:"kotlin",keywords:Qr("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam"),types:Qr("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(ul?|l|f)?/i,blockKeywords:Qr("catch class do else finally for if where try while enum"),defKeywords:Qr("class val var object interface fun"),atoms:Qr("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,t){return t.prevToken=="."?"variable":"operator"},'"':function(e,t){return t.tokenize=ZRr(e.match('""')),t.tokenize(e,t)},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1},indent:function(e,t,n,r){var o=n&&n.charAt(0);if((e.prevToken=="}"||e.prevToken==")")&&n=="")return e.indented;if(e.prevToken=="operator"&&n!="}"&&e.context.type!="}"||e.prevToken=="variable"&&o=="."||(e.prevToken=="}"||e.prevToken==")")&&o==".")return r*2+t.indented;if(t.align&&t.type=="}")return t.indented+(e.context.type==(n||"").charAt(0)?0:r)}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}}),KRr=O2({name:"shader",keywords:Qr("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:Qr("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:Qr("for while do if else struct"),builtin:Qr("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:Qr("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":nE}}),JRr=O2({name:"nesc",keywords:Qr(oie+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:sie,blockKeywords:Qr(aie),atoms:Qr("null true false"),hooks:{"#":nE}}),eIr=O2({name:"objectivec",keywords:Qr(oie+" "+oxn),types:axn,builtin:Qr(sxn),blockKeywords:Qr(aie+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:Qr(Dpe+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:Qr("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Rpe,hooks:{"#":nE,"*":Bpe}}),tIr=O2({name:"objectivecpp",keywords:Qr(oie+" "+oxn+" "+rxn),types:axn,builtin:Qr(sxn),blockKeywords:Qr(aie+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:Qr(Dpe+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:Qr("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Rpe,hooks:{"#":nE,"*":Bpe,u:o9,U:o9,L:o9,R:o9,0:Rh,1:Rh,2:Rh,3:Rh,4:Rh,5:Rh,6:Rh,7:Rh,8:Rh,9:Rh,token:function(e,t,n){if(n=="variable"&&e.peek()=="("&&(t.prevToken==";"||t.prevToken==null||t.prevToken=="}")&&lxn(e.current()))return"def"}},namespaceSeparator:"::"}),nIr=O2({name:"squirrel",keywords:Qr("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:sie,blockKeywords:Qr("case catch class else for foreach if switch try while"),defKeywords:Qr("function local class"),typeFirstDefinitions:!0,atoms:Qr("true false null"),hooks:{"#":nE}});var Bue=null;function dxn(e){return function(t,n){for(var r=!1,o,s=!1;!t.eol();){if(!r&&t.match('"')&&(e=="single"||t.match('""'))){s=!0;break}if(!r&&t.match("``")){Bue=dxn(e),s=!0;break}o=t.next(),r=e=="single"&&!r&&o=="\\"}return s&&(n.tokenize=null),"string"}}const iIr=O2({name:"ceylon",keywords:Qr("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){var t=e.charAt(0);return t===t.toUpperCase()&&t!==t.toLowerCase()},blockKeywords:Qr("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:Qr("class dynamic function interface module object package value"),builtin:Qr("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:Qr("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return t.tokenize=dxn(e.match('""')?"triple":"single"),t.tokenize(e,t)},"`":function(e,t){return!Bue||!e.match("`")?!1:(t.tokenize=Bue,Bue=null,t.tokenize(e,t))},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"string.special":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},token:function(e,t,n){if((n=="variable"||n=="type")&&t.prevToken==".")return"variableName.special"}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function rIr(e){(e.interpolationStack||(e.interpolationStack=[])).push(e.tokenize)}function uxn(e){return(e.interpolationStack||(e.interpolationStack=[])).pop()}function oIr(e){return e.interpolationStack?e.interpolationStack.length:0}function n8e(e,t,n,r){var o=!1;if(t.eat(e))if(t.eat(e))o=!0;else return"string";function s(a,l){for(var d=!1;!a.eol();){if(!r&&!d&&a.peek()=="$")return rIr(l),l.tokenize=sIr,"string";var u=a.next();if(u==e&&!d&&(!o||a.match(e+e))){l.tokenize=null;break}d=!r&&!d&&u=="\\"}return"string"}return n.tokenize=s,s(t,n)}function sIr(e,t){return e.eat("$"),e.eat("{")?t.tokenize=null:t.tokenize=aIr,null}function aIr(e,t){return e.eatWhile(/[\w_]/),t.tokenize=uxn(t),"variable"}const lIr=O2({name:"dart",keywords:Qr("this super static final const abstract class extends external factory implements mixin get native set typedef with enum throw rethrow assert break case continue default in return new deferred async await covariant try catch finally do else for if switch while import library export part of show hide is as extension on yield late required sealed base interface when inline"),blockKeywords:Qr("try catch finally do else for if switch while"),builtin:Qr("void bool num int double dynamic var String Null Never"),atoms:Qr("true false null"),number:/^(?:0x[a-f\d_]+|(?:[\d_]+\.?[\d_]*|\.[\d_]+)(?:e[-+]?[\d_]+)?)/i,hooks:{"@":function(e){return e.eatWhile(/[\w\$_\.]/),"meta"},"'":function(e,t){return n8e("'",e,t,!1)},'"':function(e,t){return n8e('"',e,t,!1)},r:function(e,t){var n=e.peek();return n=="'"||n=='"'?n8e(e.next(),e,t,!0):!1},"}":function(e,t){return oIr(t)>0?(t.tokenize=uxn(t),null):!1},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1},token:function(e,t,n){if(n=="variable"){var r=RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g");if(r.test(e.current()))return"type"}}}}),l7=Object.freeze(Object.defineProperty({__proto__:null,c:HRr,ceylon:iIr,clike:O2,cpp:$Rr,csharp:GRr,dart:lIr,java:XRr,kotlin:qRr,nesC:JRr,objectiveC:eIr,objectiveCpp:tIr,scala:YRr,shader:KRr,squirrel:nIr},Symbol.toStringTag,{value:"Module"}));var hxn=["false","nil","true"],fxn=[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],gxn=["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],cIr=["->","->>","as->","binding","bound-fn","case","catch","comment","cond","cond->","cond->>","condp","def","definterface","defmethod","defn","defmacro","defprotocol","defrecord","defstruct","deftype","do","doseq","dotimes","doto","extend","extend-protocol","extend-type","fn","for","future","if","if-let","if-not","if-some","let","letfn","locking","loop","ns","proxy","reify","struct-map","some->","some->>","try","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn"],dIr=Ipe(hxn),uIr=Ipe(fxn),hIr=Ipe(gxn),fIr=Ipe(cIr),gIr=/^(?:[\\\[\]\s"(),;@^`{}~]|$)/,mIr=/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,kIr=/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,vIr=/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;function BKe(e,t){if(e.eatSpace()||e.eat(","))return["space",null];if(e.match(mIr))return[null,"number"];if(e.match(kIr))return[null,"string.special"];if(e.eat(/^"/))return(t.tokenize=AIr)(e,t);if(e.eat(/^[(\[{]/))return["open","bracket"];if(e.eat(/^[)\]}]/))return["close","bracket"];if(e.eat(/^;/))return e.skipToEnd(),["space","comment"];if(e.eat(/^[#'@^`~]/))return[null,"meta"];var n=e.match(vIr),r=n&&n[0];return r?r==="comment"&&t.lastToken==="("?(t.tokenize=pIr)(e,t):TG(r,dIr)||r.charAt(0)===":"?["symbol","atom"]:TG(r,uIr)||TG(r,hIr)?["symbol","keyword"]:t.lastToken==="("?["symbol","builtin"]:["symbol","variable"]:(e.next(),e.eatWhile(function(o){return!TG(o,gIr)}),[null,"error"])}function AIr(e,t){for(var n=!1,r;r=e.next();){if(r==='"'&&!n){t.tokenize=BKe;break}n=!n&&r==="\\"}return[null,"string"]}function pIr(e,t){for(var n=1,r;r=e.next();)if(r===")"&&n--,r==="("&&n++,n===0){e.backUp(1),t.tokenize=BKe;break}return["space","comment"]}function Ipe(e){for(var t={},n=0;n*\/]/.test(B)?w(null,"select-op"):B=="."&&Q.match(/^-?[_a-z][_a-z0-9-]*/i)?w("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(B)?w(null,B):Q.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(Q.current())&&(M.tokenize=C),w("variableName.function","variable")):/[\w\\\-]/.test(B)?(Q.eatWhile(/[\w\\\-]/),w("property","word")):w(null,null)}function y(Q){return function(M,B){for(var R=!1,I;(I=M.next())!=null;){if(I==Q&&!R){Q==")"&&M.backUp(1);break}R=!R&&I=="\\"}return(I==Q||!R&&Q!=")")&&(B.tokenize=null),w("string","string")}}function C(Q,M){return Q.next(),Q.match(/^\s*[\"\')]/,!1)?M.tokenize=null:M.tokenize=y(")"),w(null,"(")}function _(Q,M,B){this.type=Q,this.indent=M,this.prev=B}function S(Q,M,B,R){return Q.context=new _(B,M.indentation()+(R===!1?0:M.indentUnit),Q.context),B}function L(Q){return Q.context.prev&&(Q.context=Q.context.prev),Q.context.type}function E(Q,M,B){return P[B.context.type](Q,M,B)}function T(Q,M,B,R){for(var I=R||1;I>0;I--)B.context=B.context.prev;return E(Q,M,B)}function D(Q){var M=Q.current().toLowerCase();m.hasOwnProperty(M)?b="atom":g.hasOwnProperty(M)?b="keyword":b="variable"}var P={};return P.top=function(Q,M,B){if(Q=="{")return S(B,M,"block");if(Q=="}"&&B.context.prev)return L(B);if(k&&/@component/i.test(Q))return S(B,M,"atComponentBlock");if(/^@(-moz-)?document$/i.test(Q))return S(B,M,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(Q))return S(B,M,"atBlock");if(/^@(font-face|counter-style)/i.test(Q))return B.stateArg=Q,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(Q))return"keyframes";if(Q&&Q.charAt(0)=="@")return S(B,M,"at");if(Q=="hash")b="builtin";else if(Q=="word")b="tag";else{if(Q=="variable-definition")return"maybeprop";if(Q=="interpolation")return S(B,M,"interpolation");if(Q==":")return"pseudo";if(v&&Q=="(")return S(B,M,"parens")}return B.context.type},P.block=function(Q,M,B){if(Q=="word"){var R=M.current().toLowerCase();return l.hasOwnProperty(R)?(b="property","maybeprop"):d.hasOwnProperty(R)?(b=A?"string.special":"property","maybeprop"):v?(b=M.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(b="error","maybeprop")}else return Q=="meta"?"block":!v&&(Q=="hash"||Q=="qualifier")?(b="error","block"):P.top(Q,M,B)},P.maybeprop=function(Q,M,B){return Q==":"?S(B,M,"prop"):E(Q,M,B)},P.prop=function(Q,M,B){if(Q==";")return L(B);if(Q=="{"&&v)return S(B,M,"propBlock");if(Q=="}"||Q=="{")return T(Q,M,B);if(Q=="(")return S(B,M,"parens");if(Q=="hash"&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(M.current()))b="error";else if(Q=="word")D(M);else if(Q=="interpolation")return S(B,M,"interpolation");return"prop"},P.propBlock=function(Q,M,B){return Q=="}"?L(B):Q=="word"?(b="property","maybeprop"):B.context.type},P.parens=function(Q,M,B){return Q=="{"||Q=="}"?T(Q,M,B):Q==")"?L(B):Q=="("?S(B,M,"parens"):Q=="interpolation"?S(B,M,"interpolation"):(Q=="word"&&D(M),"parens")},P.pseudo=function(Q,M,B){return Q=="meta"?"pseudo":Q=="word"?(b="variableName.constant",B.context.type):E(Q,M,B)},P.documentTypes=function(Q,M,B){return Q=="word"&&r.hasOwnProperty(M.current())?(b="tag",B.context.type):P.atBlock(Q,M,B)},P.atBlock=function(Q,M,B){if(Q=="(")return S(B,M,"atBlock_parens");if(Q=="}"||Q==";")return T(Q,M,B);if(Q=="{")return L(B)&&S(B,M,v?"block":"top");if(Q=="interpolation")return S(B,M,"interpolation");if(Q=="word"){var R=M.current().toLowerCase();R=="only"||R=="not"||R=="and"||R=="or"?b="keyword":o.hasOwnProperty(R)?b="attribute":s.hasOwnProperty(R)?b="property":a.hasOwnProperty(R)?b="keyword":l.hasOwnProperty(R)?b="property":d.hasOwnProperty(R)?b=A?"string.special":"property":m.hasOwnProperty(R)?b="atom":g.hasOwnProperty(R)?b="keyword":b="error"}return B.context.type},P.atComponentBlock=function(Q,M,B){return Q=="}"?T(Q,M,B):Q=="{"?L(B)&&S(B,M,v?"block":"top",!1):(Q=="word"&&(b="error"),B.context.type)},P.atBlock_parens=function(Q,M,B){return Q==")"?L(B):Q=="{"||Q=="}"?T(Q,M,B,2):P.atBlock(Q,M,B)},P.restricted_atBlock_before=function(Q,M,B){return Q=="{"?S(B,M,"restricted_atBlock"):Q=="word"&&B.stateArg=="@counter-style"?(b="variable","restricted_atBlock_before"):E(Q,M,B)},P.restricted_atBlock=function(Q,M,B){return Q=="}"?(B.stateArg=null,L(B)):Q=="word"?(B.stateArg=="@font-face"&&!u.hasOwnProperty(M.current().toLowerCase())||B.stateArg=="@counter-style"&&!h.hasOwnProperty(M.current().toLowerCase())?b="error":b="property","maybeprop"):"restricted_atBlock"},P.keyframes=function(Q,M,B){return Q=="word"?(b="variable","keyframes"):Q=="{"?S(B,M,"top"):E(Q,M,B)},P.at=function(Q,M,B){return Q==";"?L(B):Q=="{"||Q=="}"?T(Q,M,B):(Q=="word"?b="tag":Q=="hash"&&(b="builtin"),"at")},P.interpolation=function(Q,M,B){return Q=="}"?L(B):Q=="{"||Q==";"?T(Q,M,B):(Q=="word"?b="variable":Q!="variable"&&Q!="("&&Q!=")"&&(b="error"),"interpolation")},{name:e.name,startState:function(){return{tokenize:null,state:t?"block":"top",stateArg:null,context:new _(t?"block":"top",0,null)}},token:function(Q,M){if(!M.tokenize&&Q.eatSpace())return null;var B=(M.tokenize||O)(Q,M);return B&&typeof B=="object"&&(p=B[1],B=B[0]),b=B,p!="comment"&&(M.state=P[M.state](p,Q,M)),b},indent:function(Q,M,B){var R=Q.context,I=M&&M.charAt(0),F=R.indent;return R.type=="prop"&&(I=="}"||I==")")&&(R=R.prev),R.prev&&(I=="}"&&(R.type=="block"||R.type=="top"||R.type=="interpolation"||R.type=="restricted_atBlock")?(R=R.prev,F=R.indent):(I==")"&&(R.type=="parens"||R.type=="atBlock_parens")||I=="{"&&(R.type=="at"||R.type=="atBlock"))&&(F=Math.max(0,R.indent-B.unit))),F},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:f,block:{open:"/*",close:"*/"}},autocomplete:yxn}}}function Zy(e){for(var t={},n=0;n|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,RIr=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,QAt=/^[_A-Za-z$][_A-Za-z$0-9]*/,IIr=/^@[_A-Za-z$][_A-Za-z$0-9]*/,MIr=Vpe(["and","or","not","is","isnt","in","instanceof","typeof"]),eme=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],PIr=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],FIr=Vpe(eme.concat(PIr));eme=Vpe(eme);var NIr=/^('{3}|\"{3}|['\"])/,UIr=/^(\/{3}|\/)/,jIr=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],WIr=Vpe(jIr);function BK(e,t){if(e.sol()){t.scope.align===null&&(t.scope.align=!1);var n=t.scope.offset;if(e.eatSpace()){var r=e.indentation();return r>n&&t.scope.type=="coffee"?"indent":r0&&lFe(e,t)}if(e.eatSpace())return null;var o=e.peek();if(e.match("####"))return e.skipToEnd(),"comment";if(e.match("###"))return t.tokenize=VIr,t.tokenize(e,t);if(o==="#")return e.skipToEnd(),"comment";if(e.match(/^-?[0-9\.]/,!1)){var s=!1;if(e.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(s=!0),e.match(/^-?\d+\.\d*/)&&(s=!0),e.match(/^-?\.\d+/)&&(s=!0),s)return e.peek()=="."&&e.backUp(1),"number";var a=!1;if(e.match(/^-?0x[0-9a-f]+/i)&&(a=!0),e.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(a=!0),e.match(/^-?0(?![\dx])/i)&&(a=!0),a)return"number"}if(e.match(NIr))return t.tokenize=DAt(e.current(),!1,"string"),t.tokenize(e,t);if(e.match(UIr)){if(e.current()!="/"||e.match(/^.*\//,!1))return t.tokenize=DAt(e.current(),!0,"string.special"),t.tokenize(e,t);e.backUp(1)}return e.match(BIr)||e.match(MIr)?"operator":e.match(RIr)?"punctuation":e.match(WIr)?"atom":e.match(IIr)||t.prop&&e.match(QAt)?"property":e.match(FIr)?"keyword":e.match(QAt)?"variable":(e.next(),Cxn)}function DAt(e,t,n){return function(r,o){for(;!r.eol();)if(r.eatWhile(/[^'"\/\\]/),r.eat("\\")){if(r.next(),t&&r.eol())return n}else{if(r.match(e))return o.tokenize=BK,n;r.eat(/['"\/]/)}return t&&(o.tokenize=BK),n}}function VIr(e,t){for(;!e.eol();){if(e.eatWhile(/[^#]/),e.match("###")){t.tokenize=BK;break}e.eatWhile("#")}return"comment"}function r8e(e,t,n="coffee"){for(var r=0,o=!1,s=null,a=t.scope;a;a=a.prev)if(a.type==="coffee"||a.type=="}"){r=a.offset+e.indentUnit;break}n!=="coffee"?(o=null,s=e.column()+e.current().length):t.scope.align&&(t.scope.align=!1),t.scope={offset:r,type:n,prev:t.scope,align:o,alignOffset:s}}function lFe(e,t){if(t.scope.prev)if(t.scope.type==="coffee"){for(var n=e.indentation(),r=!1,o=t.scope;o;o=o.prev)if(n===o.offset){r=!0;break}if(!r)return!0;for(;t.scope.prev&&t.scope.offset!==n;)t.scope=t.scope.prev;return!1}else return t.scope=t.scope.prev,!1}function zIr(e,t){var n=t.tokenize(e,t),r=e.current();r==="return"&&(t.dedent=!0),((r==="->"||r==="=>")&&e.eol()||n==="indent")&&r8e(e,t);var o="[({".indexOf(r);if(o!==-1&&r8e(e,t,"])}".slice(o,o+1)),eme.exec(r)&&r8e(e,t),r=="then"&&lFe(e,t),n==="dedent"&&lFe(e,t))return Cxn;if(o="])}".indexOf(r),o!==-1){for(;t.scope.type=="coffee"&&t.scope.prev;)t.scope=t.scope.prev;t.scope.type==r&&(t.scope=t.scope.prev)}return t.dedent&&e.eol()&&(t.scope.type=="coffee"&&t.scope.prev&&(t.scope=t.scope.prev),t.dedent=!1),n=="indent"||n=="dedent"?null:n}const HIr={name:"coffeescript",startState:function(){return{tokenize:BK,scope:{offset:0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(e,t){var n=t.scope.align===null&&t.scope;n&&e.sol()&&(n.align=!1);var r=zIr(e,t);return r&&r!="comment"&&(n&&(n.align=!0),t.prop=r=="punctuation"&&e.current()=="."),r},indent:function(e,t){if(e.tokenize!=BK)return 0;var n=e.scope,r=t&&"])}".indexOf(t.charAt(0))>-1;if(r)for(;n.type=="coffee"&&n.prev;)n=n.prev;var o=r&&n.type===t.charAt(0);return n.align?n.alignOffset-(o?1:0):(o?n.prev:n).offset},languageData:{commentTokens:{line:"#"}}},$Ir=Object.freeze(Object.defineProperty({__proto__:null,coffeeScript:HIr},Symbol.toStringTag,{value:"Module"}));var XIr=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,_xn=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,GIr=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,YIr=/[^\s'`,@()\[\]";]/,_v;function o8e(e){for(var t;t=e.next();)if(t=="\\")e.next();else if(!YIr.test(t)){e.backUp(1);break}return e.current()}function FKe(e,t){if(e.eatSpace())return _v="ws",null;if(e.match(GIr))return"number";var n=e.next();if(n=="\\"&&(n=e.next()),n=='"')return(t.tokenize=ZIr)(e,t);if(n=="(")return _v="open","bracket";if(n==")")return _v="close","bracket";if(n==";")return e.skipToEnd(),_v="ws","comment";if(/['`,@]/.test(n))return null;if(n=="|")return e.skipTo("|")?(e.next(),"variableName"):(e.skipToEnd(),"error");if(n=="#"){var n=e.next();return n=="("?(_v="open","bracket"):/[+\-=\.']/.test(n)||/\d/.test(n)&&e.match(/^\d*#/)?null:n=="|"?(t.tokenize=qIr)(e,t):n==":"?(o8e(e),"meta"):n=="\\"?(e.next(),o8e(e),"string.special"):"error"}else{var r=o8e(e);return r=="."?null:(_v="symbol",r=="nil"||r=="t"||r.charAt(0)==":"?"atom":t.lastType=="open"&&(XIr.test(r)||_xn.test(r))?"keyword":r.charAt(0)=="&"?"variableName.special":"variableName")}}function ZIr(e,t){for(var n=!1,r;r=e.next();){if(r=='"'&&!n){t.tokenize=FKe;break}n=!n&&r=="\\"}return"string"}function qIr(e,t){for(var n,r;n=e.next();){if(n=="#"&&r=="|"){t.tokenize=FKe;break}r=n}return _v="ws","comment"}const KIr={name:"commonlisp",startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:FKe}},token:function(e,t){e.sol()&&typeof t.ctx.indentTo!="number"&&(t.ctx.indentTo=t.ctx.start+1),_v=null;var n=t.tokenize(e,t);return _v!="ws"&&(t.ctx.indentTo==null?_v=="symbol"&&_xn.test(e.current())?t.ctx.indentTo=t.ctx.start+e.indentUnit:t.ctx.indentTo="next":t.ctx.indentTo=="next"&&(t.ctx.indentTo=e.column()),t.lastType=_v),_v=="open"?t.ctx={prev:t.ctx,start:e.column(),indentTo:null}:_v=="close"&&(t.ctx=t.ctx.prev||t.ctx),n},indent:function(e){var t=e.ctx.indentTo;return typeof t=="number"?t:e.ctx.start+1},languageData:{commentTokens:{line:";;",block:{open:"#|",close:"|#"}},closeBrackets:{brackets:["(","[","{",'"']}}},JIr=Object.freeze(Object.defineProperty({__proto__:null,commonLisp:KIr},Symbol.toStringTag,{value:"Module"}));var zpe=function(e){return new RegExp("^(?:"+e.join("|")+")$","i")},eMr=function(e){o5=null;var t=e.next();if(t==='"')return e.match(/^.*?"/),"string";if(t==="'")return e.match(/^.*?'/),"string";if(/[{}\(\),\.;\[\]]/.test(t))return o5=t,"punctuation";if(t==="/"&&e.eat("/"))return e.skipToEnd(),"comment";if(BAt.test(t))return e.eatWhile(BAt),null;if(e.eatWhile(/[_\w\d]/),e.eat(":"))return e.eatWhile(/[\w\d_\-]/),"atom";var n=e.current();return tMr.test(n)?"builtin":nMr.test(n)?"def":iMr.test(n)||rMr.test(n)?"keyword":"variable"},Rae=function(e,t,n){return e.context={prev:e.context,indent:e.indent,col:n,type:t}},s8e=function(e){return e.indent=e.context.indent,e.context=e.context.prev},o5,tMr=zpe(["abs","acos","allShortestPaths","asin","atan","atan2","avg","ceil","coalesce","collect","cos","cot","count","degrees","e","endnode","exp","extract","filter","floor","haversin","head","id","keys","labels","last","left","length","log","log10","lower","ltrim","max","min","node","nodes","percentileCont","percentileDisc","pi","radians","rand","range","reduce","rel","relationship","relationships","replace","reverse","right","round","rtrim","shortestPath","sign","sin","size","split","sqrt","startnode","stdev","stdevp","str","substring","sum","tail","tan","timestamp","toFloat","toInt","toString","trim","type","upper"]),nMr=zpe(["all","and","any","contains","exists","has","in","none","not","or","single","xor"]),iMr=zpe(["as","asc","ascending","assert","by","case","commit","constraint","create","csv","cypher","delete","desc","descending","detach","distinct","drop","else","end","ends","explain","false","fieldterminator","foreach","from","headers","in","index","is","join","limit","load","match","merge","null","on","optional","order","periodic","profile","remove","return","scan","set","skip","start","starts","then","true","union","unique","unwind","using","when","where","with","call","yield"]),rMr=zpe(["access","active","assign","all","alter","as","catalog","change","copy","create","constraint","constraints","current","database","databases","dbms","default","deny","drop","element","elements","exists","from","grant","graph","graphs","if","index","indexes","label","labels","management","match","name","names","new","node","nodes","not","of","on","or","password","populated","privileges","property","read","relationship","relationships","remove","replace","required","revoke","role","roles","set","show","start","status","stop","suspended","to","traverse","type","types","user","users","with","write"]),BAt=/[*+\-<>=&|~%^]/;const oMr={name:"cypher",startState:function(){return{tokenize:eMr,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!=="comment"&&t.context&&t.context.align==null&&t.context.type!=="pattern"&&(t.context.align=!0),o5==="(")Rae(t,")",e.column());else if(o5==="[")Rae(t,"]",e.column());else if(o5==="{")Rae(t,"}",e.column());else if(/[\]\}\)]/.test(o5)){for(;t.context&&t.context.type==="pattern";)s8e(t);t.context&&o5===t.context.type&&s8e(t)}else o5==="."&&t.context&&t.context.type==="pattern"?s8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Rae(t,"pattern",e.column()):t.context.type==="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type==="pattern";)o=o.prev;var s=o&&r===o.type;return o?o.type==="keywords"?null:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0}},sMr=Object.freeze(Object.defineProperty({__proto__:null,cypher:oMr},Symbol.toStringTag,{value:"Module"}));function cFe(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var aMr=cFe(["and","or","not","is"]),RAt=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],IAt=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function zp(e){return e.scopes[e.scopes.length-1]}function NKe(e){for(var t="error",n=e.delimiters||e.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,r=[e.singleOperators,e.doubleOperators,e.doubleDelimiters,e.tripleDelimiters,e.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],o=0;oS?p(y,C):L0&&w(y,C)&&(E+=" "+t),E}}return f(y,C)}function f(y,C,_){if(y.eatSpace())return null;if(!_&&y.match(/^#.*/))return"comment";if(y.match(/^[0-9\.]/,!1)){var S=!1;if(y.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(S=!0),y.match(/^[\d_]+\.\d*/)&&(S=!0),y.match(/^\.\d+/)&&(S=!0),S)return y.eat(/J/i),"number";var L=!1;if(y.match(/^0x[0-9a-f_]+/i)&&(L=!0),y.match(/^0b[01_]+/i)&&(L=!0),y.match(/^0o[0-7_]+/i)&&(L=!0),y.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(y.eat(/J/i),L=!0),y.match(/^0(?![\dx])/i)&&(L=!0),L)return y.eat(/L/i),"number"}if(y.match(h)){var E=y.current().toLowerCase().indexOf("f")!==-1;return E?(C.tokenize=k(y.current(),C.tokenize),C.tokenize(y,C)):(C.tokenize=A(y.current(),C.tokenize),C.tokenize(y,C))}for(var T=0;T=0;)y=y.substr(1);var _=y.length==1,S="string";function L(T){return function(D,P){var Q=f(D,P,!0);return Q=="punctuation"&&(D.current()=="{"?P.tokenize=L(T+1):D.current()=="}"&&(T>1?P.tokenize=L(T-1):P.tokenize=E)),Q}}function E(T,D){for(;!T.eol();)if(T.eatWhile(/[^'"\{\}\\]/),T.eat("\\")){if(T.next(),_&&T.eol())return S}else{if(T.match(y))return D.tokenize=C,S;if(T.match("{{"))return S;if(T.match("{",!1))return D.tokenize=L(0),T.current()?S:D.tokenize(T,D);if(T.match("}}"))return S;if(T.match("}"))return t;T.eat(/['"]/)}if(_){if(e.singleLineStringErrors)return t;D.tokenize=C}return S}return E.isString=!0,E}function A(y,C){for(;"rubf".indexOf(y.charAt(0).toLowerCase())>=0;)y=y.substr(1);var _=y.length==1,S="string";function L(E,T){for(;!E.eol();)if(E.eatWhile(/[^'"\\]/),E.eat("\\")){if(E.next(),_&&E.eol())return S}else{if(E.match(y))return T.tokenize=C,S;E.eat(/['"]/)}if(_){if(e.singleLineStringErrors)return t;T.tokenize=C}return S}return L.isString=!0,L}function p(y,C){for(;zp(C).type!="py";)C.scopes.pop();C.scopes.push({offset:zp(C).offset+y.indentUnit,type:"py",align:null})}function b(y,C,_){var S=y.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:y.column()+1;C.scopes.push({offset:C.indent+(s||y.indentUnit),type:_,align:S})}function w(y,C){for(var _=y.indentation();C.scopes.length>1&&zp(C).offset>_;){if(zp(C).type!="py")return!0;C.scopes.pop()}return zp(C).offset!=_}function O(y,C){y.sol()&&(C.beginningOfLine=!0,C.dedent=!1);var _=C.tokenize(y,C),S=y.current();if(C.beginningOfLine&&S=="@")return y.match(u,!1)?"meta":d?"operator":t;if(/\S/.test(S)&&(C.beginningOfLine=!1),(_=="variable"||_=="builtin")&&C.lastToken=="meta"&&(_="meta"),(S=="pass"||S=="return")&&(C.dedent=!0),S=="lambda"&&(C.lambda=!0),S==":"&&!C.lambda&&zp(C).type=="py"&&y.match(/^\s*(?:#|$)/,!1)&&p(y,C),S.length==1&&!/string|comment/.test(_)){var L="[({".indexOf(S);if(L!=-1&&b(y,C,"])}".slice(L,L+1)),L="])}".indexOf(S),L!=-1)if(zp(C).type==S)C.indent=C.scopes.pop().offset-(s||y.indentUnit);else return t}return C.dedent&&y.eol()&&zp(C).type=="py"&&C.scopes.length>1&&C.scopes.pop(),_}return{name:"python",startState:function(){return{tokenize:v,scopes:[{offset:0,type:"py",align:null}],indent:0,lastToken:null,lambda:!1,dedent:0}},token:function(y,C){var _=C.errorToken;_&&(C.errorToken=!1);var S=O(y,C);return S&&S!="comment"&&(C.lastToken=S=="keyword"||S=="punctuation"?y.current():S),S=="punctuation"&&(S=null),y.eol()&&C.lambda&&(C.lambda=!1),_?t:S},indent:function(y,C,_){if(y.tokenize!=v)return y.tokenize.isString?null:0;var S=zp(y),L=S.type==C.charAt(0)||S.type=="py"&&!y.dedent&&/^(else:|elif |except |finally:)/.test(C);return S.align!=null?S.align-(L?1:0):S.offset-(L?s||_.unit:0)},languageData:{autocomplete:RAt.concat(IAt).concat(["exec","print"]),indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,commentTokens:{line:"#"},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}}}var lMr=function(e){return e.split(" ")};const cMr=NKe({}),dMr=NKe({extra_keywords:lMr("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")}),uMr=Object.freeze(Object.defineProperty({__proto__:null,cython:dMr,mkPython:NKe,python:cMr},Symbol.toStringTag,{value:"Module"}));function Pz(e,t){return new RegExp((t?"":"^")+"(?:"+e.join("|")+")"+(t?"$":"\\b"))}function hx(e,t,n){return n.tokenize.push(e),e(t,n)}var dFe=/^(?:[-+/%|&^]|\*\*?|[<>]{2})/,uFe=/^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/,Sxn=/^(?:\[\][?=]?)/,hMr=/^(?:\.(?:\.{2})?|->|[?:])/,oZ=/^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,Rue=/^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,fMr=Pz(["abstract","alias","as","asm","begin","break","case","class","def","do","else","elsif","end","ensure","enum","extend","for","fun","if","include","instance_sizeof","lib","macro","module","next","of","out","pointerof","private","protected","rescue","return","require","select","sizeof","struct","super","then","type","typeof","uninitialized","union","unless","until","when","while","with","yield","__DIR__","__END_LINE__","__FILE__","__LINE__"]),gMr=Pz(["true","false","nil","self"]),mMr=["def","fun","macro","class","module","struct","lib","enum","union","do","for"],kMr=Pz(mMr),vMr=["if","unless","case","while","until","begin","then"],AMr=Pz(vMr),Lxn=["end","else","elsif","rescue","ensure"],pMr=Pz(Lxn),xxn=["\\)","\\}","\\]"],bMr=new RegExp("^(?:"+xxn.join("|")+")$"),MAt={def:PAt,fun:PAt,macro:wMr,class:hP,module:hP,struct:hP,lib:hP,enum:hP,union:hP},a8e={"[":"]","{":"}","(":")","<":">"};function UKe(e,t){if(e.eatSpace())return null;if(t.lastToken!="\\"&&e.match("{%",!1))return hx(GB("%","%"),e,t);if(t.lastToken!="\\"&&e.match("{{",!1))return hx(GB("{","}"),e,t);if(e.peek()=="#")return e.skipToEnd(),"comment";var n;if(e.match(oZ))return e.eat(/[?!]/),n=e.current(),e.eat(":")?"atom":t.lastToken=="."?"property":fMr.test(n)?(kMr.test(n)?!(n=="fun"&&t.blocks.indexOf("lib")>=0)&&!(n=="def"&&t.lastToken=="abstract")&&(t.blocks.push(n),t.currentIndent+=1):(t.lastStyle=="operator"||!t.lastStyle)&&AMr.test(n)?(t.blocks.push(n),t.currentIndent+=1):n=="end"&&(t.blocks.pop(),t.currentIndent-=1),MAt.hasOwnProperty(n)&&t.tokenize.push(MAt[n]),"keyword"):gMr.test(n)?"atom":"variable";if(e.eat("@"))return e.peek()=="["?hx(RK("[","]","meta"),e,t):(e.eat("@"),e.match(oZ)||e.match(Rue),"propertyName");if(e.match(Rue))return"tag";if(e.eat(":"))return e.eat('"')?hx(l8e('"',"atom",!1),e,t):e.match(oZ)||e.match(Rue)||e.match(dFe)||e.match(uFe)||e.match(Sxn)?"atom":(e.eat(":"),"operator");if(e.eat('"'))return hx(l8e('"',"string",!0),e,t);if(e.peek()=="%"){var r="string",o=!0,s;if(e.match("%r"))r="string.special",s=e.next();else if(e.match("%w"))o=!1,s=e.next();else if(e.match("%q"))o=!1,s=e.next();else if(s=e.match(/^%([^\w\s=])/))s=s[1];else{if(e.match(/^%[a-zA-Z_\u009F-\uFFFF][\w\u009F-\uFFFF]*/))return"meta";if(e.eat("%"))return"operator"}return a8e.hasOwnProperty(s)&&(s=a8e[s]),hx(l8e(s,r,o),e,t)}return(n=e.match(/^<<-('?)([A-Z]\w*)\1/))?hx(OMr(n[2],!n[1]),e,t):e.eat("'")?(e.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/),e.eat("'"),"atom"):e.eat("0")?(e.eat("x")?e.match(/^[0-9a-fA-F_]+/):e.eat("o")?e.match(/^[0-7_]+/):e.eat("b")&&e.match(/^[01_]+/),"number"):e.eat(/^\d/)?(e.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?\d+)?/),"number"):e.match(dFe)?(e.eat("="),"operator"):e.match(uFe)||e.match(hMr)?"operator":(n=e.match(/[({[]/,!1))?(n=n[0],hx(RK(n,a8e[n],null),e,t)):e.eat("\\")?(e.next(),"meta"):(e.next(),null)}function RK(e,t,n,r){return function(o,s){if(!r&&o.match(e))return s.tokenize[s.tokenize.length-1]=RK(e,t,n,!0),s.currentIndent+=1,n;var a=UKe(o,s);return o.current()===t&&(s.tokenize.pop(),s.currentIndent-=1,a=n),a}}function GB(e,t,n){return function(r,o){return!n&&r.match("{"+e)?(o.currentIndent+=1,o.tokenize[o.tokenize.length-1]=GB(e,t,!0),"meta"):r.match(t+"}")?(o.currentIndent-=1,o.tokenize.pop(),"meta"):UKe(r,o)}}function wMr(e,t){if(e.eatSpace())return null;var n;if(n=e.match(oZ)){if(n=="def")return"keyword";e.eat(/[?!]/)}return t.tokenize.pop(),"def"}function PAt(e,t){return e.eatSpace()?null:(e.match(oZ)?e.eat(/[!?]/):e.match(dFe)||e.match(uFe)||e.match(Sxn),t.tokenize.pop(),"def")}function hP(e,t){return e.eatSpace()?null:(e.match(Rue),t.tokenize.pop(),"def")}function l8e(e,t,n){return function(r,o){for(var s=!1;r.peek();)if(s)r.next(),s=!1;else{if(r.match("{%",!1))return o.tokenize.push(GB("%","%")),t;if(r.match("{{",!1))return o.tokenize.push(GB("{","}")),t;if(n&&r.match("#{",!1))return o.tokenize.push(RK("#{","}","meta")),t;var a=r.next();if(a==e)return o.tokenize.pop(),t;s=n&&a=="\\"}return t}}function OMr(e,t){return function(n,r){if(n.sol()&&(n.eatSpace(),n.match(e)))return r.tokenize.pop(),"string";for(var o=!1;n.peek();)if(o)n.next(),o=!1;else{if(n.match("{%",!1))return r.tokenize.push(GB("%","%")),"string";if(n.match("{{",!1))return r.tokenize.push(GB("{","}")),"string";if(t&&n.match("#{",!1))return r.tokenize.push(RK("#{","}","meta")),"string";o=n.next()=="\\"&&t}return"string"}}const yMr={name:"crystal",startState:function(){return{tokenize:[UKe],currentIndent:0,lastToken:null,lastStyle:null,blocks:[]}},token:function(e,t){var n=t.tokenize[t.tokenize.length-1](e,t),r=e.current();return n&&n!="comment"&&(t.lastToken=r,t.lastStyle=n),n},indent:function(e,t,n){return t=t.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g,""),pMr.test(t)||bMr.test(t)?n.unit*(e.currentIndent-1):n.unit*e.currentIndent},languageData:{indentOnInput:Pz(xxn.concat(Lxn),!0),commentTokens:{line:"#"}}},CMr=Object.freeze(Object.defineProperty({__proto__:null,crystal:yMr},Symbol.toStringTag,{value:"Module"}));function Iae(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/,xk;function WAt(e,t){var n=e.next();if(UAt[n]){var r=UAt[n](e,t);if(r!==!1)return r}if(n=='"'||n=="'"||n=="`")return t.tokenize=TMr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\:\.]/.test(n))return xk=n,null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("+"))return t.tokenize=zAt,zAt(e,t);if(e.eat("*"))return t.tokenize=VAt,VAt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(jAt.test(n))return e.eatWhile(jAt),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var o=e.current();return SMr.propertyIsEnumerable(o)?(NAt.propertyIsEnumerable(o)&&(xk="newstatement"),"keyword"):LMr.propertyIsEnumerable(o)?(NAt.propertyIsEnumerable(o)&&(xk="newstatement"),"builtin"):xMr.propertyIsEnumerable(o)?"atom":"variable"}function TMr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!(r||EMr))&&(n.tokenize=null),"string"}}function VAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function zAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="+"}return"comment"}function Exn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Mae(e,t,n){var r=e.indented;return e.context&&e.context.type=="statement"&&(r=e.context.indented),e.context=new Exn(r,t,n,null,e.context)}function X$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const QMr={name:"d",startState:function(e){return{tokenize:null,context:new Exn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;xk=null;var r=(t.tokenize||WAt)(e,t);if(r=="comment"||r=="meta")return r;if(n.align==null&&(n.align=!0),(xk==";"||xk==":"||xk==",")&&n.type=="statement")X$(t);else if(xk=="{")Mae(t,e.column(),"}");else if(xk=="[")Mae(t,e.column(),"]");else if(xk=="(")Mae(t,e.column(),")");else if(xk=="}"){for(;n.type=="statement";)n=X$(t);for(n.type=="}"&&(n=X$(t));n.type=="statement";)n=X$(t)}else xk==n.type?X$(t):((n.type=="}"||n.type=="top")&&xk!=";"||n.type=="statement"&&xk=="newstatement")&&Mae(t,e.column(),"statement");return t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=WAt&&e.tokenize!=null)return null;var r=e.context,o=t&&t.charAt(0);r.type=="statement"&&o=="}"&&(r=r.prev);var s=o==r.type;return r.type=="statement"?r.indented+(o=="{"?0:_Mr||n.unit):r.align?r.column+(s?0:1):r.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},DMr=Object.freeze(Object.defineProperty({__proto__:null,d:QMr},Symbol.toStringTag,{value:"Module"}));var HAt={"+":"inserted","-":"deleted","@":"meta"};const BMr={name:"diff",token:function(e){var t=e.string.search(/[\t ]+?$/);if(!e.sol()||t===0)return e.skipToEnd(),("error "+(HAt[e.string.charAt(0)]||"")).replace(/ $/,"");var n=HAt[e.peek()]||e.skipToEnd();return t===-1?e.skipToEnd():e.pos=t,n}},RMr=Object.freeze(Object.defineProperty({__proto__:null,diff:BMr},Symbol.toStringTag,{value:"Module"}));function jKe(e){Txn(e,"start");var t={},n=e.languageData||{},r=!1;for(var o in e)if(o!=n&&e.hasOwnProperty(o))for(var s=t[o]=[],a=e[o],l=0;l2&&a.token&&typeof a.token!="string"){n.pending=[];for(var u=2;u-1)return null;var o=n.indent.length-1,s=e[n.state];e:for(;;){for(var a=0;a"),ab("meta",n);if(n=="#"&&e.eatWhile(/[\w]/))return ab("atom","tag");if(n=="|")return ab("keyword","separator");if(n.match(/[\(\)\[\]\-\.,\+\?>]/))return ab(null,n);if(n.match(/[\[\]]/))return ab("rule",n);if(n=='"'||n=="'")return t.tokenize=YMr(n),t.tokenize(e,t);if(e.eatWhile(/[a-zA-Z\?\+\d]/)){var r=e.current();return r.substr(r.length-1,r.length).match(/\?|\+/)!==null&&e.backUp(1),ab("tag","tag")}else return n=="%"||n=="*"?ab("number","number"):(e.eatWhile(/[\w\\\-_%.{,]/),ab(null,null))}}function $At(e,t){for(var n=0,r;(r=e.next())!=null;){if(n>=2&&r==">"){t.tokenize=Hpe;break}n=r=="-"?n+1:0}return ab("comment","comment")}function YMr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=Hpe;break}r=!r&&o=="\\"}return ab("string","tag")}}function ZMr(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=Hpe;break}n.next()}return e}}const qMr={name:"dtd",startState:function(){return{tokenize:Hpe,baseIndent:0,stack:[]}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t),r=t.stack[t.stack.length-1];return e.current()=="["||Fm==="doindent"||Fm=="["?t.stack.push("rule"):Fm==="endtag"?t.stack[t.stack.length-1]="endtag":e.current()=="]"||Fm=="]"||Fm==">"&&r=="rule"?t.stack.pop():Fm=="["&&t.stack.push("["),n},indent:function(e,t,n){var r=e.stack.length;return t.charAt(0)==="]"?r--:t.substr(t.length-1,t.length)===">"&&(t.substr(0,1)==="<"||Fm=="doindent"&&t.length>1||(Fm=="doindent"?r--:Fm==">"&&t.length>1||Fm=="tag"&&t!==">"||(Fm=="tag"&&e.stack[e.stack.length-1]=="rule"?r--:Fm=="tag"?r++:t===">"&&e.stack[e.stack.length-1]=="rule"&&Fm===">"?r--:t===">"&&e.stack[e.stack.length-1]=="rule"||(t.substr(0,1)!=="<"&&t.substr(0,1)===">"?r=r-1:t===">"||(r=r-1)))),(Fm==null||Fm=="]")&&r--),e.baseIndent+r*n.unit},languageData:{indentOnInput:/^\s*[\]>]$/}},KMr=Object.freeze(Object.defineProperty({__proto__:null,dtd:qMr},Symbol.toStringTag,{value:"Module"}));function XAt(e,t){for(var n=0;n",symbolGlobal:"\\*"+QG+"\\*",symbolConstant:"\\$"+QG},tPr={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variableName.standard",symbolConstant:"variableName.constant"};for(var c8e in s9)s9.hasOwnProperty(c8e)&&(s9[c8e]=new RegExp("^"+s9[c8e]));s9.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var cie={};cie.keyword="keyword";cie.definition="def";cie.simpleDefinition="def";cie.signalingCalls="builtin";var Ixn={},Mxn={};XAt(["keyword","definition","simpleDefinition","signalingCalls"],function(e){XAt(_f[e],function(t){Ixn[t]=e,Mxn[t]=cie[e]})});function d8e(e,t,n){return t.tokenize=n,n(e,t)}function WKe(e,t){var n=e.peek();if(n=="'"||n=='"')return e.next(),d8e(e,t,GAt(n,"string"));if(n=="/"){if(e.next(),e.eat("*"))return d8e(e,t,nPr);if(e.eat("/"))return e.skipToEnd(),"comment";e.backUp(1)}else if(/[+\-\d\.]/.test(n)){if(e.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i)||e.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i)||e.match(/^[+-]?\d+/))return"number"}else{if(n=="#")return e.next(),n=e.peek(),n=='"'?(e.next(),d8e(e,t,GAt('"',"string"))):n=="b"?(e.next(),e.eatWhile(/[01]/),"number"):n=="x"?(e.next(),e.eatWhile(/[\da-f]/i),"number"):n=="o"?(e.next(),e.eatWhile(/[0-7]/),"number"):n=="#"?(e.next(),"punctuation"):n=="["||n=="("?(e.next(),"bracket"):e.match(/f|t|all-keys|include|key|next|rest/i)?"atom":(e.eatWhile(/[-a-zA-Z]/),"error");if(n=="~")return e.next(),n=e.peek(),n=="="?(e.next(),n=e.peek(),n=="="&&e.next(),"operator"):"operator";if(n==":"){if(e.next(),n=e.peek(),n=="=")return e.next(),"operator";if(n==":")return e.next(),"punctuation"}else{if("[](){}".indexOf(n)!=-1)return e.next(),"bracket";if(".,".indexOf(n)!=-1)return e.next(),"punctuation";if(e.match("end"))return"keyword"}}for(var r in s9)if(s9.hasOwnProperty(r)){var o=s9[r];if(o instanceof Array&&JMr(o,function(s){return e.match(s)})||e.match(o))return tPr[r]}return/[+\-*\/^=<>&|]/.test(n)?(e.next(),"operator"):e.match("define")?"def":(e.eatWhile(/[\w\-]/),Ixn.hasOwnProperty(e.current())?Mxn[e.current()]:e.current().match(ePr)?"variable":(e.next(),"variableName.standard"))}function nPr(e,t){for(var n=!1,r=!1,o=0,s;s=e.next();){if(s=="/"&&n)if(o>0)o--;else{t.tokenize=WKe;break}else s=="*"&&r&&o++;n=s=="*",r=s=="/"}return"comment"}function GAt(e,t){return function(n,r){for(var o=!1,s,a=!1;(s=n.next())!=null;){if(s==e&&!o){a=!0;break}o=!o&&s=="\\"}return(a||!o)&&(r.tokenize=WKe),t}}const iPr={name:"dylan",startState:function(){return{tokenize:WKe,currentIndent:0}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{commentTokens:{block:{open:"/*",close:"*/"}}}},rPr=Object.freeze(Object.defineProperty({__proto__:null,dylan:iPr},Symbol.toStringTag,{value:"Module"}));var Pae={slash:0,parenthesis:1},hw={comment:0,_string:1,characterClass:2};const oPr={name:"ebnf",startState:function(){return{stringType:null,commentType:null,braced:0,lhs:!0,localState:null,stack:[],inDefinition:!1}},token:function(e,t){if(e){switch(t.stack.length===0&&(e.peek()=='"'||e.peek()=="'"?(t.stringType=e.peek(),e.next(),t.stack.unshift(hw._string)):e.match("/*")?(t.stack.unshift(hw.comment),t.commentType=Pae.slash):e.match("(*")&&(t.stack.unshift(hw.comment),t.commentType=Pae.parenthesis)),t.stack[0]){case hw._string:for(;t.stack[0]===hw._string&&!e.eol();)e.peek()===t.stringType?(e.next(),t.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return t.lhs?"property":"string";case hw.comment:for(;t.stack[0]===hw.comment&&!e.eol();)t.commentType===Pae.slash&&e.match("*/")||t.commentType===Pae.parenthesis&&e.match("*)")?(t.stack.shift(),t.commentType=null):e.match(/^.[^\*]*/);return"comment";case hw.characterClass:for(;t.stack[0]===hw.characterClass&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(".")||t.stack.shift();return"operator"}var n=e.peek();switch(n){case"[":return e.next(),t.stack.unshift(hw.characterClass),"bracket";case":":case"|":case";":return e.next(),"operator";case"%":if(e.match("%%"))return"header";if(e.match(/[%][A-Za-z]+/))return"keyword";if(e.match(/[%][}]/))return"bracket";break;case"/":if(e.match(/[\/][A-Za-z]+/))return"keyword";case"\\":if(e.match(/[\][a-z]+/))return"string.special";case".":if(e.match("."))return"atom";case"*":case"-":case"+":case"^":if(e.match(n))return"atom";case"$":if(e.match("$$"))return"builtin";if(e.match(/[$][0-9]+/))return"variableName.special";case"<":if(e.match(/<<[a-zA-Z_]+>>/))return"builtin"}return e.match("//")?(e.skipToEnd(),"comment"):e.match("return")?"operator":e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)?e.match(/(?=[\(.])/)?"variable":e.match(/(?=[\s\n]*[:=])/)?"def":"variableName.special":["[","]","(",")"].indexOf(e.peek())!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}},sPr=Object.freeze(Object.defineProperty({__proto__:null,ebnf:oPr},Symbol.toStringTag,{value:"Module"}));function mI(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/,Gm;function tme(e,t){var n=e.next();if(ZAt[n]){var r=ZAt[n](e,t);if(r!==!1)return r}if(n=='"'||n=="'")return t.tokenize=fPr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\:\.]/.test(n))return Gm=n,null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("*"))return t.tokenize=KAt,KAt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(qAt.test(n))return e.eatWhile(qAt),"operator";e.eatWhile(/[\w\$_]/);var o=e.current().toLowerCase();if(lPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"keyword";if(cPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"variable";if(dPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"modifier";if(YAt.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"type";if(uPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"builtin";for(var s=o.length-1;s>=0&&(!isNaN(o[s])||o[s]=="_");)--s;if(s>0){var a=o.substr(0,s+1);if(YAt.propertyIsEnumerable(a))return fP.propertyIsEnumerable(a)&&(Gm="newstatement"),"type"}return hPr.propertyIsEnumerable(o)?"atom":null}function fPr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=tme),"string"}}function KAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=tme;break}n=r=="*"}return"comment"}function Pxn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Fae(e,t,n){return e.context=new Pxn(e.indented,t,n,null,e.context)}function G$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const gPr={name:"ecl",startState:function(e){return{tokenize:null,context:new Pxn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;Gm=null;var r=(t.tokenize||tme)(e,t);if(r=="comment"||r=="meta")return r;if(n.align==null&&(n.align=!0),(Gm==";"||Gm==":")&&n.type=="statement")G$(t);else if(Gm=="{")Fae(t,e.column(),"}");else if(Gm=="[")Fae(t,e.column(),"]");else if(Gm=="(")Fae(t,e.column(),")");else if(Gm=="}"){for(;n.type=="statement";)n=G$(t);for(n.type=="}"&&(n=G$(t));n.type=="statement";)n=G$(t)}else Gm==n.type?G$(t):(n.type=="}"||n.type=="top"||n.type=="statement"&&Gm=="newstatement")&&Fae(t,e.column(),"statement");return t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=tme&&e.tokenize!=null)return 0;var r=e.context,o=t&&t.charAt(0);r.type=="statement"&&o=="}"&&(r=r.prev);var s=o==r.type;return r.type=="statement"?r.indented+(o=="{"?0:n.unit):r.align?r.column+(s?0:1):r.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/}},mPr=Object.freeze(Object.defineProperty({__proto__:null,ecl:gPr},Symbol.toStringTag,{value:"Module"}));function Fxn(e){for(var t={},n=0,r=e.length;n>"]);function APr(e,t,n){return n.tokenize.push(e),e(t,n)}function pPr(e,t){if(e.eatSpace())return null;var n=e.next();return n=='"'||n=="'"?APr(bPr(n,"string"),e,t):n=="-"&&e.eat("-")?(e.skipToEnd(),"comment"):n==":"&&e.eat("=")?"operator":/[0-9]/.test(n)?(e.eatWhile(/[xXbBCc0-9\.]/),e.eat(/[\?\!]/),"variable"):/[a-zA-Z_0-9]/.test(n)?(e.eatWhile(/[a-zA-Z_0-9]/),e.eat(/[\?\!]/),"variable"):/[=+\-\/*^%<>~]/.test(n)?(e.eatWhile(/[=+\-\/*^%<>~]/),"operator"):null}function bPr(e,t,n){return function(r,o){for(var s=!1,a;(a=r.next())!=null;){if(a==e&&!s){o.tokenize.pop();break}s=!s&&a=="%"}return t}}const wPr={name:"eiffel",startState:function(){return{tokenize:[pPr]}},token:function(e,t){var n=t.tokenize[t.tokenize.length-1](e,t);if(n=="variable"){var r=e.current();n=kPr.propertyIsEnumerable(e.current())?"keyword":vPr.propertyIsEnumerable(e.current())?"operator":/^[A-Z][A-Z_0-9]*$/g.test(r)?"tag":/^0[bB][0-1]+$/g.test(r)||/^0[cC][0-7]+$/g.test(r)||/^0[xX][a-fA-F0-9]+$/g.test(r)||/^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(r)||/^[0-9]+$/g.test(r)?"number":"variable"}return n},languageData:{commentTokens:{line:"--"}}},OPr=Object.freeze(Object.defineProperty({__proto__:null,eiffel:wPr},Symbol.toStringTag,{value:"Module"}));function Y$(e,t,n){return t(n),n(e,t)}var yPr=/[a-z]/,CPr=/[A-Z]/,JAt=/[a-zA-Z0-9_]/,Nae=/[0-9]/,_Pr=/[0-9A-Fa-f]/,e4t=/[-&*+.\\/<>=?^|:]/,SPr=/[(),[\]{}]/,LPr=/[ \v\f]/;function L8(){return function(e,t){if(e.eatWhile(LPr))return null;var n=e.next();if(SPr.test(n))return n==="{"&&e.eat("-")?Y$(e,t,Nxn(1)):n==="["&&e.match("glsl|")?Y$(e,t,QPr):"builtin";if(n==="'")return Y$(e,t,TPr);if(n==='"')return e.eat('"')?e.eat('"')?Y$(e,t,xPr):"string":Y$(e,t,EPr);if(CPr.test(n))return e.eatWhile(JAt),"type";if(yPr.test(n)){var r=e.pos===1;return e.eatWhile(JAt),r?"def":"variable"}if(Nae.test(n)){if(n==="0"){if(e.eat(/[xX]/))return e.eatWhile(_Pr),"number"}else e.eatWhile(Nae);return e.eat(".")&&e.eatWhile(Nae),e.eat(/[eE]/)&&(e.eat(/[-+]/),e.eatWhile(Nae)),"number"}return e4t.test(n)?n==="-"&&e.eat("-")?(e.skipToEnd(),"comment"):(e.eatWhile(e4t),"keyword"):n==="_"?"keyword":"error"}}function Nxn(e){return e==0?L8():function(t,n){for(;!t.eol();){var r=t.next();if(r=="{"&&t.eat("-"))++e;else if(r=="-"&&t.eat("}")&&(--e,e===0))return n(L8()),"comment"}return n(Nxn(e)),"comment"}}function xPr(e,t){for(;!e.eol();){var n=e.next();if(n==='"'&&e.eat('"')&&e.eat('"'))return t(L8()),"string"}return"string"}function EPr(e,t){for(;e.skipTo('\\"');)e.next(),e.next();return e.skipTo('"')?(e.next(),t(L8()),"string"):(e.skipToEnd(),t(L8()),"error")}function TPr(e,t){for(;e.skipTo("\\'");)e.next(),e.next();return e.skipTo("'")?(e.next(),t(L8()),"string"):(e.skipToEnd(),t(L8()),"error")}function QPr(e,t){for(;!e.eol();){var n=e.next();if(n==="|"&&e.eat("]"))return t(L8()),"string"}return"string"}var DPr={case:1,of:1,as:1,if:1,then:1,else:1,let:1,in:1,type:1,alias:1,module:1,where:1,import:1,exposing:1,port:1};const BPr={name:"elm",startState:function(){return{f:L8()}},copyState:function(e){return{f:e.f}},token:function(e,t){var n=t.f(e,function(o){t.f=o}),r=e.current();return DPr.hasOwnProperty(r)?"keyword":n},languageData:{commentTokens:{line:"--"}}},RPr=Object.freeze(Object.defineProperty({__proto__:null,elm:BPr},Symbol.toStringTag,{value:"Module"}));var IPr=["-type","-spec","-export_type","-opaque"],MPr=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"],PPr=/[\->,;]/,FPr=["->",";",","],NPr=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"],UPr=/[\+\-\*\/<>=\|:!]/,jPr=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"],WPr=/[<\(\[\{]/,hFe=["<<","(","[","{"],VPr=/[>\)\]\}]/,Uxn=["}","]",")",">>"],zPr=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"],HPr=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"],Uae=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/,$Pr=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;function XPr(e,t){if(t.in_string)return t.in_string=!i4t(e),$a(t,e,"string");if(t.in_atom)return t.in_atom=!r4t(e),$a(t,e,"atom");if(e.eatSpace())return $a(t,e,"whitespace");if(!sZ(t)&&e.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/))return t1(e.current(),IPr)?$a(t,e,"type"):$a(t,e,"attribute");var n=e.next();if(n=="%")return e.skipToEnd(),$a(t,e,"comment");if(n==":")return $a(t,e,"colon");if(n=="?")return e.eatSpace(),e.eatWhile(Uae),$a(t,e,"macro");if(n=="#")return e.eatSpace(),e.eatWhile(Uae),$a(t,e,"record");if(n=="$")return e.next()=="\\"&&!e.match($Pr)?$a(t,e,"error"):$a(t,e,"number");if(n==".")return $a(t,e,"dot");if(n=="'"){if(!(t.in_atom=!r4t(e))){if(e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),$a(t,e,"fun");if(e.match(/\s*\(/,!1)||e.match(/\s*:/,!1))return $a(t,e,"function")}return $a(t,e,"atom")}if(n=='"')return t.in_string=!i4t(e),$a(t,e,"string");if(/[A-Z_Ø-ÞÀ-Ö]/.test(n))return e.eatWhile(Uae),$a(t,e,"variable");if(/[a-z_ß-öø-ÿ]/.test(n)){if(e.eatWhile(Uae),e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),$a(t,e,"fun");var r=e.current();return t1(r,MPr)?$a(t,e,"keyword"):t1(r,NPr)?$a(t,e,"operator"):e.match(/\s*\(/,!1)?t1(r,HPr)&&(sZ(t).token!=":"||sZ(t,2).token=="erlang")?$a(t,e,"builtin"):t1(r,zPr)?$a(t,e,"guard"):$a(t,e,"function"):GPr(e)==":"?r=="erlang"?$a(t,e,"builtin"):$a(t,e,"function"):t1(r,["true","false"])?$a(t,e,"boolean"):$a(t,e,"atom")}var o=/[0-9]/,s=/[0-9a-zA-Z]/;return o.test(n)?(e.eatWhile(o),e.eat("#")?e.eatWhile(s)||e.backUp(1):e.eat(".")&&(e.eatWhile(o)?e.eat(/[eE]/)&&(e.eat(/[-+]/)?e.eatWhile(o)||e.backUp(2):e.eatWhile(o)||e.backUp(1)):e.backUp(1)),$a(t,e,"number")):t4t(e,WPr,hFe)?$a(t,e,"open_paren"):t4t(e,VPr,Uxn)?$a(t,e,"close_paren"):n4t(e,PPr,FPr)?$a(t,e,"separator"):n4t(e,UPr,jPr)?$a(t,e,"operator"):$a(t,e,null)}function t4t(e,t,n){if(e.current().length==1&&t.test(e.current())){for(e.backUp(1);t.test(e.peek());)if(e.next(),t1(e.current(),n))return!0;e.backUp(e.current().length-1)}return!1}function n4t(e,t,n){if(e.current().length==1&&t.test(e.current())){for(;t.test(e.peek());)e.next();for(;01&&e[t].type==="fun"&&e[t-1].token==="fun")return e.slice(0,t-1);switch(e[t].token){case"}":return Hp(e,{g:["{"]});case"]":return Hp(e,{i:["["]});case")":return Hp(e,{i:["("]});case">>":return Hp(e,{i:["<<"]});case"end":return Hp(e,{i:["begin","case","fun","if","receive","try"]});case",":return Hp(e,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return Hp(e,{r:["when"],m:["try","if","case","receive"]});case";":return Hp(e,{E:["case","fun","if","receive","try","when"]});case"catch":return Hp(e,{e:["try"]});case"of":return Hp(e,{e:["case"]});case"after":return Hp(e,{e:["receive","try"]});default:return e}}function Hp(e,t){for(var n in t)for(var r=e.length-1,o=t[n],s=r-1;-1"?t1(a.token,["receive","case","if","try"])?a.column+n.unit+n.unit:a.column+n.unit:t1(s.token,hFe)?s.column+s.token.length:(r=iFr(e),rD(r)?r.column+n.unit:0):0}function tFr(e){var t=e.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);return rD(t)&&t.index===0?t[0]:""}function nFr(e){var t=e.tokenStack.slice(0,-1),n=nme(t,"type",["open_paren"]);return rD(t[n])?t[n]:!1}function iFr(e){var t=e.tokenStack,n=nme(t,"type",["open_paren","separator","keyword"]),r=nme(t,"type",["operator"]);return rD(n)&&rD(r)&&n!=&|~^\/]/,a=e.support||{},l=e.hooks||{},d=e.dateSQL||{date:!0,time:!0,timestamp:!0},u=e.backslashStringEscapes!==!1,h=e.brackets||/^[\{}\(\)\[\]]/,g=e.punctuation||/^[;.,:]/;function m(p,b){var w=p.next();if(l[w]){var O=l[w](p,b);if(O!==!1)return O}if(a.hexNumber&&(w=="0"&&p.match(/^[xX][0-9a-fA-F]+/)||(w=="x"||w=="X")&&p.match(/^'[0-9a-fA-F]*'/)))return"number";if(a.binaryNumber&&((w=="b"||w=="B")&&p.match(/^'[01]+'/)||w=="0"&&p.match(/^b[01]*/)))return"number";if(w.charCodeAt(0)>47&&w.charCodeAt(0)<58)return p.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),a.decimallessFloat&&p.match(/^\.(?!\.)/),"number";if(w=="?"&&(p.eatSpace()||p.eol()||p.eat(";")))return"macroName";if(w=="'"||w=='"'&&a.doubleQuote)return b.tokenize=v(w),b.tokenize(p,b);if((a.nCharCast&&(w=="n"||w=="N")||a.charsetCast&&w=="_"&&p.match(/[a-z][a-z0-9]*/i))&&(p.peek()=="'"||p.peek()=='"'))return"keyword";if(a.escapeConstant&&(w=="e"||w=="E")&&(p.peek()=="'"||p.peek()=='"'&&a.doubleQuote))return b.tokenize=function(C,_){return(_.tokenize=v(C.next(),!0))(C,_)},"keyword";if(a.commentSlashSlash&&w=="/"&&p.eat("/"))return p.skipToEnd(),"comment";if(a.commentHash&&w=="#"||w=="-"&&p.eat("-")&&(!a.commentSpaceRequired||p.eat(" ")))return p.skipToEnd(),"comment";if(w=="/"&&p.eat("*"))return b.tokenize=f(1),b.tokenize(p,b);if(w=="."){if(a.zerolessFloat&&p.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(p.match(/^\.+/))return null;if(a.ODBCdotTable&&p.match(/^[\w\d_$#]+/))return"type"}else{if(s.test(w))return p.eatWhile(s),"operator";if(h.test(w))return"bracket";if(g.test(w))return p.eatWhile(g),"punctuation";if(w=="{"&&(p.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||p.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";p.eatWhile(/^[_\w\d]/);var y=p.current().toLowerCase();return d.hasOwnProperty(y)&&(p.match(/^( )+'[^']*'/)||p.match(/^( )+"[^"]*"/))?"number":n.hasOwnProperty(y)?"atom":r.hasOwnProperty(y)?"type":o.hasOwnProperty(y)?"keyword":t.hasOwnProperty(y)?"builtin":null}}function v(p,b){return function(w,O){for(var y=!1,C;(C=w.next())!=null;){if(C==p&&!y){O.tokenize=m;break}y=(u||b)&&!y&&C=="\\"}return"string"}}function f(p){return function(b,w){var O=b.match(/^.*?(\/\*|\*\/)/);return O?O[1]=="/*"?w.tokenize=f(p+1):p>1?w.tokenize=f(p-1):w.tokenize=m:b.skipToEnd(),"comment"}}function k(p,b,w){b.context={prev:b.context,indent:p.indentation(),col:p.column(),type:w}}function A(p){p.indent=p.context.indent,p.context=p.context.prev}return{name:"sql",startState:function(){return{tokenize:m,context:null}},token:function(p,b){if(p.sol()&&b.context&&b.context.align==null&&(b.context.align=!1),b.tokenize==m&&p.eatSpace())return null;var w=b.tokenize(p,b);if(w=="comment")return w;b.context&&b.context.align==null&&(b.context.align=!0);var O=p.current();return O=="("?k(p,b,")"):O=="["?k(p,b,"]"):b.context&&b.context.type==O&&A(b),w},indent:function(p,b,w){var O=p.context;if(!O)return null;var y=b.charAt(0)==O.type;return O.align?O.col+(y?0:1):O.indent+(y?0:w.unit)},languageData:{commentTokens:{line:a.commentSlashSlash?"//":a.commentHash?"#":"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}}}function VKe(e){for(var t;(t=e.next())!=null;)if(t=="`"&&!e.eat("`"))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null}function sFr(e){for(var t;(t=e.next())!=null;)if(t=='"'&&!e.eat('"'))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null}function tQ(e){return e.eat("@")&&(e.match("session."),e.match("local."),e.match("global.")),e.eat("'")?(e.match(/^.*'/),"string.special"):e.eat('"')?(e.match(/^.*"/),"string.special"):e.eat("`")?(e.match(/^.*`/),"string.special"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"string.special":null}function Vxn(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"string.special":null}var kI="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function ur(e){for(var t={},n=e.split(" "),r=0;r!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:ur("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":tQ}}),cFr=y2({client:ur("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:ur(kI+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":tQ,"`":VKe,"\\":Vxn}}),dFr=y2({client:ur("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:ur(kI+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":tQ,"`":VKe,"\\":Vxn}}),uFr=y2({client:ur("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:ur(kI+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:ur("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:ur("date time timestamp datetime"),support:ur("decimallessFloat zerolessFloat"),hooks:{"@":tQ,":":tQ,"?":tQ,$:tQ,'"':sFr,"`":VKe}}),hFr=y2({client:{},keywords:ur("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:ur("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:ur("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:ur("commentSlashSlash decimallessFloat"),hooks:{}}),fFr=y2({client:ur("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:ur("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:ur("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:ur("date time timestamp"),support:ur("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),gFr=y2({keywords:ur("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:ur("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:ur("date timestamp"),support:ur("ODBCdotTable doubleQuote binaryNumber hexNumber")}),mFr=y2({client:ur("source"),keywords:ur(kI+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:ur("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:ur("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),kFr=y2({keywords:ur("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:ur("false true"),builtin:ur("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),vFr=y2({client:ur("source"),keywords:ur("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:ur("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),AFr=y2({keywords:ur("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:ur("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:ur("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable doubleQuote zerolessFloat")}),pFr=y2({client:ur("source"),keywords:ur("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:ur("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:ur("time"),support:ur("decimallessFloat zerolessFloat binaryNumber hexNumber")}),bFr=Object.freeze(Object.defineProperty({__proto__:null,cassandra:hFr,esper:pFr,gpSQL:vFr,gql:kFr,hive:gFr,mariaDB:dFr,msSQL:lFr,mySQL:cFr,pgSQL:mFr,plSQL:fFr,sparkSQL:AFr,sql:y2,sqlite:uFr,standardSQL:aFr},Symbol.toStringTag,{value:"Module"})),wFr=jKe({start:[{regex:/#?!.*/,token:"comment"},{regex:/"""/,token:"string",next:"string3"},{regex:/(STRING:)(\s)/,token:["keyword",null],next:"string2"},{regex:/\S*?"/,token:"string",next:"string"},{regex:/(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/,token:"number"},{regex:/((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/,token:["keyword",null,"def",null,"bracket"],next:"stack"},{regex:/(M\:)(\s+)(\S+)(\s+)(\S+)/,token:["keyword",null,"def",null,"tag"]},{regex:/USING\:/,token:"keyword",next:"vocabulary"},{regex:/(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"tag"]},{regex:/(\S+\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"def"]},{regex:/(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>|\.\*\?]+(?=\s|$)/,token:"builtin"},{regex:/[\)><]+\S+(?=\s|$)/,token:"builtin"},{regex:/(?:[\+\-\=\/\*<>])(?=\s|$)/,token:"keyword"},{regex:/\S+/,token:"variable"},{regex:/\s+|./,token:null}],vocabulary:[{regex:/;/,token:"keyword",next:"start"},{regex:/\S+/,token:"tag"},{regex:/\s+|./,token:null}],string:[{regex:/(?:[^\\]|\\.)*?"/,token:"string",next:"start"},{regex:/.*/,token:"string"}],string2:[{regex:/^;/,token:"keyword",next:"start"},{regex:/.*/,token:"string"}],string3:[{regex:/(?:[^\\]|\\.)*?"""/,token:"string",next:"start"},{regex:/.*/,token:"string"}],stack:[{regex:/\)/,token:"bracket",next:"start"},{regex:/--/,token:"bracket"},{regex:/\S+/,token:"meta"},{regex:/\s+|./,token:null}],languageData:{name:"factor",dontIndentStates:["start","vocabulary","string","string3","stack"],commentTokens:{line:"!"}}}),OFr=Object.freeze(Object.defineProperty({__proto__:null,factor:wFr},Symbol.toStringTag,{value:"Module"}));var yFr={term:!0,method:!0,accu:!0,rule:!0,then:!0,is:!0,and:!0,or:!0,if:!0,default:!0},Hxn={var_input:!0,var_output:!0,fuzzify:!0,defuzzify:!0,function_block:!0,ruleblock:!0},fFe={end_ruleblock:!0,end_defuzzify:!0,end_function_block:!0,end_fuzzify:!0,end_var:!0},CFr={true:!0,false:!0,nan:!0,real:!0,min:!0,max:!0,cog:!0,cogs:!0},o4t=/[+\-*&^%:=<>!|\/]/;function gFe(e,t){var n=e.next();if(/[\d\.]/.test(n))return n=="."?e.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):n=="0"?e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^0[0-7]+/):e.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(n=="/"||n=="("){if(e.eat("*"))return t.tokenize=s4t,s4t(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(o4t.test(n))return e.eatWhile(o4t),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current().toLowerCase();return yFr.propertyIsEnumerable(r)||Hxn.propertyIsEnumerable(r)||fFe.propertyIsEnumerable(r)?"keyword":CFr.propertyIsEnumerable(r)?"atom":"variable"}function s4t(e,t){for(var n=!1,r;r=e.next();){if((r=="/"||r==")")&&n){t.tokenize=gFe;break}n=r=="*"}return"comment"}function $xn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function _Fr(e,t,n){return e.context=new $xn(e.indented,t,n,null,e.context)}function SFr(e){if(e.context.prev){var t=e.context.type;return t=="end_block"&&(e.indented=e.context.indented),e.context=e.context.prev}}const LFr={name:"fcl",startState:function(e){return{tokenize:null,context:new $xn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;var r=(t.tokenize||gFe)(e,t);if(r=="comment")return r;n.align==null&&(n.align=!0);var o=e.current().toLowerCase();return Hxn.propertyIsEnumerable(o)?_Fr(t,e.column(),"end_block"):fFe.propertyIsEnumerable(o)&&SFr(t),t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=gFe&&e.tokenize!=null)return 0;var r=e.context,o=fFe.propertyIsEnumerable(t);return r.align?r.column+(o?0:1):r.indented+(o?0:n.unit)},languageData:{commentTokens:{line:"//",block:{open:"(*",close:"*)"}}}},xFr=Object.freeze(Object.defineProperty({__proto__:null,fcl:LFr},Symbol.toStringTag,{value:"Module"}));function Xxn(e){var t=[];return e.split(" ").forEach(function(n){t.push({name:n})}),t}var EFr=Xxn("INVERT AND OR XOR 2* 2/ LSHIFT RSHIFT 0= = 0< < > U< MIN MAX 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP >R R> R@ + - 1+ 1- ABS NEGATE S>D * M* UM* FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT CHAR [CHAR] [ ] BL FIND EXECUTE IMMEDIATE COUNT LITERAL STATE ; DOES> >BODY EVALUATE SOURCE >IN <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL FILL MOVE . CR EMIT SPACE SPACES TYPE U. .R U.R ACCEPT TRUE FALSE <> U> 0<> 0> NIP TUCK ROLL PICK 2>R 2R@ 2R> WITHIN UNUSED MARKER I J TO COMPILE, [COMPILE] SAVE-INPUT RESTORE-INPUT PAD ERASE 2LITERAL DNEGATE D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS M+ M*/ D. D.R 2ROT DU< CATCH THROW FREE RESIZE ALLOCATE CS-PICK CS-ROLL GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL"),TFr=Xxn("IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE");function h8e(e,t){var n;for(n=e.length-1;n>=0;n--)if(e[n].name===t.toUpperCase())return e[n]}const QFr={name:"forth",startState:function(){return{state:"",base:10,coreWordList:EFr,immediateWordList:TFr,wordList:[]}},token:function(e,t){var n;if(e.eatSpace())return null;if(t.state===""){if(e.match(/^(\]|:NONAME)(\s|$)/i))return t.state=" compilation","builtin";if(n=e.match(/^(\:)\s+(\S+)(\s|$)+/),n)return t.wordList.push({name:n[2].toUpperCase()}),t.state=" compilation","def";if(n=e.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i),n)return t.wordList.push({name:n[2].toUpperCase()}),"def";if(n=e.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/),n)return"builtin"}else{if(e.match(/^(\;|\[)(\s)/))return t.state="",e.backUp(1),"builtin";if(e.match(/^(\;|\[)($)/))return t.state="","builtin";if(e.match(/^(POSTPONE)\s+\S+(\s|$)+/))return"builtin"}if(n=e.match(/^(\S+)(\s+|$)/),n)return h8e(t.wordList,n[1])!==void 0?"variable":n[1]==="\\"?(e.skipToEnd(),"comment"):h8e(t.coreWordList,n[1])!==void 0?"builtin":h8e(t.immediateWordList,n[1])!==void 0?"keyword":n[1]==="("?(e.eatWhile(function(r){return r!==")"}),e.eat(")"),"comment"):n[1]===".("?(e.eatWhile(function(r){return r!==")"}),e.eat(")"),"string"):n[1]==='S"'||n[1]==='."'||n[1]==='C"'?(e.eatWhile(function(r){return r!=='"'}),e.eat('"'),"string"):n[1]-68719476735?"number":"atom"}},DFr=Object.freeze(Object.defineProperty({__proto__:null,forth:QFr},Symbol.toStringTag,{value:"Module"}));function zKe(e){for(var t={},n=0;n\/\:]/,MFr=/^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;function PFr(e,t){if(e.match(MFr))return"operator";var n=e.next();if(n=="!")return e.skipToEnd(),"comment";if(n=='"'||n=="'")return t.tokenize=FFr(n),t.tokenize(e,t);if(/[\[\]\(\),]/.test(n))return null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(a4t.test(n))return e.eatWhile(a4t),"operator";e.eatWhile(/[\w\$_]/);var r=e.current().toLowerCase();return BFr.hasOwnProperty(r)?"keyword":RFr.hasOwnProperty(r)||IFr.hasOwnProperty(r)?"builtin":"variable"}function FFr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=null),"string"}}const NFr={name:"fortran",startState:function(){return{tokenize:null}},token:function(e,t){if(e.eatSpace())return null;var n=(t.tokenize||PFr)(e,t);return n=="comment"||n=="meta",n}},UFr=Object.freeze(Object.defineProperty({__proto__:null,fortran:NFr},Symbol.toStringTag,{value:"Module"}));function HKe(e){var t={as:"keyword",do:"keyword",else:"keyword",end:"keyword",exception:"keyword",fun:"keyword",functor:"keyword",if:"keyword",in:"keyword",include:"keyword",let:"keyword",of:"keyword",open:"keyword",rec:"keyword",struct:"keyword",then:"keyword",type:"keyword",val:"keyword",while:"keyword",with:"keyword"},n=e.extraWords||{};for(var r in n)n.hasOwnProperty(r)&&(t[r]=e.extraWords[r]);var o=[];for(var s in t)o.push(s);function a(h,g){var m=h.next();if(m==='"')return g.tokenize=l,g.tokenize(h,g);if(m==="{"&&h.eat("|"))return g.longString=!0,g.tokenize=u,g.tokenize(h,g);if(m==="("&&h.match(/^\*(?!\))/))return g.commentLevel++,g.tokenize=d,g.tokenize(h,g);if(m==="~"||m==="?")return h.eatWhile(/\w/),"variableName.special";if(m==="`")return h.eatWhile(/\w/),"quote";if(m==="/"&&e.slashComments&&h.eat("/"))return h.skipToEnd(),"comment";if(/\d/.test(m))return m==="0"&&h.eat(/[bB]/)&&h.eatWhile(/[01]/),m==="0"&&h.eat(/[xX]/)&&h.eatWhile(/[0-9a-fA-F]/),m==="0"&&h.eat(/[oO]/)?h.eatWhile(/[0-7]/):(h.eatWhile(/[\d_]/),h.eat(".")&&h.eatWhile(/[\d]/),h.eat(/[eE]/)&&h.eatWhile(/[\d\-+]/)),"number";if(/[+\-*&%=<>!?|@\.~:]/.test(m))return"operator";if(/[\w\xa1-\uffff]/.test(m)){h.eatWhile(/[\w\xa1-\uffff]/);var v=h.current();return t.hasOwnProperty(v)?t[v]:"variable"}return null}function l(h,g){for(var m,v=!1,f=!1;(m=h.next())!=null;){if(m==='"'&&!f){v=!0;break}f=!f&&m==="\\"}return v&&!f&&(g.tokenize=a),"string"}function d(h,g){for(var m,v;g.commentLevel>0&&(v=h.next())!=null;)m==="("&&v==="*"&&g.commentLevel++,m==="*"&&v===")"&&g.commentLevel--,m=v;return g.commentLevel<=0&&(g.tokenize=a),"comment"}function u(h,g){for(var m,v;g.longString&&(v=h.next())!=null;)m==="|"&&v==="}"&&(g.longString=!1),m=v;return g.longString||(g.tokenize=a),"string"}return{startState:function(){return{tokenize:a,commentLevel:0,longString:!1}},token:function(h,g){return h.eatSpace()?null:g.tokenize(h,g)},languageData:{autocomplete:o,commentTokens:{line:e.slashComments?"//":void 0,block:{open:"(*",close:"*)"}}}}}const jFr=HKe({extraWords:{and:"keyword",assert:"keyword",begin:"keyword",class:"keyword",constraint:"keyword",done:"keyword",downto:"keyword",external:"keyword",function:"keyword",initializer:"keyword",lazy:"keyword",match:"keyword",method:"keyword",module:"keyword",mutable:"keyword",new:"keyword",nonrec:"keyword",object:"keyword",private:"keyword",sig:"keyword",to:"keyword",try:"keyword",value:"keyword",virtual:"keyword",when:"keyword",raise:"builtin",failwith:"builtin",true:"builtin",false:"builtin",asr:"builtin",land:"builtin",lor:"builtin",lsl:"builtin",lsr:"builtin",lxor:"builtin",mod:"builtin",or:"builtin",raise_notrace:"builtin",trace:"builtin",exit:"builtin",print_string:"builtin",print_endline:"builtin",int:"type",float:"type",bool:"type",char:"type",string:"type",unit:"type",List:"builtin"}}),WFr=HKe({extraWords:{abstract:"keyword",assert:"keyword",base:"keyword",begin:"keyword",class:"keyword",default:"keyword",delegate:"keyword","do!":"keyword",done:"keyword",downcast:"keyword",downto:"keyword",elif:"keyword",extern:"keyword",finally:"keyword",for:"keyword",function:"keyword",global:"keyword",inherit:"keyword",inline:"keyword",interface:"keyword",internal:"keyword",lazy:"keyword","let!":"keyword",match:"keyword",member:"keyword",module:"keyword",mutable:"keyword",namespace:"keyword",new:"keyword",null:"keyword",override:"keyword",private:"keyword",public:"keyword","return!":"keyword",return:"keyword",select:"keyword",static:"keyword",to:"keyword",try:"keyword",upcast:"keyword","use!":"keyword",use:"keyword",void:"keyword",when:"keyword","yield!":"keyword",yield:"keyword",atomic:"keyword",break:"keyword",checked:"keyword",component:"keyword",const:"keyword",constraint:"keyword",constructor:"keyword",continue:"keyword",eager:"keyword",event:"keyword",external:"keyword",fixed:"keyword",method:"keyword",mixin:"keyword",object:"keyword",parallel:"keyword",process:"keyword",protected:"keyword",pure:"keyword",sealed:"keyword",tailcall:"keyword",trait:"keyword",virtual:"keyword",volatile:"keyword",List:"builtin",Seq:"builtin",Map:"builtin",Set:"builtin",Option:"builtin",int:"builtin",string:"builtin",not:"builtin",true:"builtin",false:"builtin",raise:"builtin",failwith:"builtin"},slashComments:!0}),VFr=HKe({extraWords:{abstype:"keyword",and:"keyword",andalso:"keyword",case:"keyword",datatype:"keyword",fn:"keyword",handle:"keyword",infix:"keyword",infixr:"keyword",local:"keyword",nonfix:"keyword",op:"keyword",orelse:"keyword",raise:"keyword",withtype:"keyword",eqtype:"keyword",sharing:"keyword",sig:"keyword",signature:"keyword",structure:"keyword",where:"keyword",true:"keyword",false:"keyword",int:"builtin",real:"builtin",string:"builtin",char:"builtin",bool:"builtin"},slashComments:!0}),f8e=Object.freeze(Object.defineProperty({__proto__:null,fSharp:WFr,oCaml:jFr,sml:VFr},Symbol.toStringTag,{value:"Module"}));function Gxn(e){var t=[],n="",r={".abort":"builtin",".align":"builtin",".altmacro":"builtin",".ascii":"builtin",".asciz":"builtin",".balign":"builtin",".balignw":"builtin",".balignl":"builtin",".bundle_align_mode":"builtin",".bundle_lock":"builtin",".bundle_unlock":"builtin",".byte":"builtin",".cfi_startproc":"builtin",".comm":"builtin",".data":"builtin",".def":"builtin",".desc":"builtin",".dim":"builtin",".double":"builtin",".eject":"builtin",".else":"builtin",".elseif":"builtin",".end":"builtin",".endef":"builtin",".endfunc":"builtin",".endif":"builtin",".equ":"builtin",".equiv":"builtin",".eqv":"builtin",".err":"builtin",".error":"builtin",".exitm":"builtin",".extern":"builtin",".fail":"builtin",".file":"builtin",".fill":"builtin",".float":"builtin",".func":"builtin",".global":"builtin",".gnu_attribute":"builtin",".hidden":"builtin",".hword":"builtin",".ident":"builtin",".if":"builtin",".incbin":"builtin",".include":"builtin",".int":"builtin",".internal":"builtin",".irp":"builtin",".irpc":"builtin",".lcomm":"builtin",".lflags":"builtin",".line":"builtin",".linkonce":"builtin",".list":"builtin",".ln":"builtin",".loc":"builtin",".loc_mark_labels":"builtin",".local":"builtin",".long":"builtin",".macro":"builtin",".mri":"builtin",".noaltmacro":"builtin",".nolist":"builtin",".octa":"builtin",".offset":"builtin",".org":"builtin",".p2align":"builtin",".popsection":"builtin",".previous":"builtin",".print":"builtin",".protected":"builtin",".psize":"builtin",".purgem":"builtin",".pushsection":"builtin",".quad":"builtin",".reloc":"builtin",".rept":"builtin",".sbttl":"builtin",".scl":"builtin",".section":"builtin",".set":"builtin",".short":"builtin",".single":"builtin",".size":"builtin",".skip":"builtin",".sleb128":"builtin",".space":"builtin",".stab":"builtin",".string":"builtin",".struct":"builtin",".subsection":"builtin",".symver":"builtin",".tag":"builtin",".text":"builtin",".title":"builtin",".type":"builtin",".uleb128":"builtin",".val":"builtin",".version":"builtin",".vtable_entry":"builtin",".vtable_inherit":"builtin",".warning":"builtin",".weak":"builtin",".weakref":"builtin",".word":"builtin"},o={};function s(){n="#",o.al="variable",o.ah="variable",o.ax="variable",o.eax="variableName.special",o.rax="variableName.special",o.bl="variable",o.bh="variable",o.bx="variable",o.ebx="variableName.special",o.rbx="variableName.special",o.cl="variable",o.ch="variable",o.cx="variable",o.ecx="variableName.special",o.rcx="variableName.special",o.dl="variable",o.dh="variable",o.dx="variable",o.edx="variableName.special",o.rdx="variableName.special",o.si="variable",o.esi="variableName.special",o.rsi="variableName.special",o.di="variable",o.edi="variableName.special",o.rdi="variableName.special",o.sp="variable",o.esp="variableName.special",o.rsp="variableName.special",o.bp="variable",o.ebp="variableName.special",o.rbp="variableName.special",o.ip="variable",o.eip="variableName.special",o.rip="variableName.special",o.cs="keyword",o.ds="keyword",o.ss="keyword",o.es="keyword",o.fs="keyword",o.gs="keyword"}function a(){n="@",r.syntax="builtin",o.r0="variable",o.r1="variable",o.r2="variable",o.r3="variable",o.r4="variable",o.r5="variable",o.r6="variable",o.r7="variable",o.r8="variable",o.r9="variable",o.r10="variable",o.r11="variable",o.r12="variable",o.sp="variableName.special",o.lr="variableName.special",o.pc="variableName.special",o.r13=o.sp,o.r14=o.lr,o.r15=o.pc,t.push(function(u,h){if(u==="#")return h.eatWhile(/\w/),"number"})}e==="x86"?s():(e==="arm"||e==="armv6")&&a();function l(u,h){for(var g=!1,m;(m=u.next())!=null;){if(m===h&&!g)return!1;g=!g&&m==="\\"}return g}function d(u,h){for(var g=!1,m;(m=u.next())!=null;){if(m==="/"&&g){h.tokenize=null;break}g=m==="*"}return"comment"}return{name:"gas",startState:function(){return{tokenize:null}},token:function(u,h){if(h.tokenize)return h.tokenize(u,h);if(u.eatSpace())return null;var g,m,v=u.next();if(v==="/"&&u.eat("*"))return h.tokenize=d,d(u,h);if(v===n)return u.skipToEnd(),"comment";if(v==='"')return l(u,'"'),"string";if(v===".")return u.eatWhile(/\w/),m=u.current().toLowerCase(),g=r[m],g||null;if(v==="=")return u.eatWhile(/\w/),"tag";if(v==="{"||v==="}")return"bracket";if(/\d/.test(v))return v==="0"&&u.eat("x")?(u.eatWhile(/[0-9a-fA-F]/),"number"):(u.eatWhile(/\d/),"number");if(/\w/.test(v))return u.eatWhile(/\w/),u.eat(":")?"tag":(m=u.current().toLowerCase(),g=o[m],g||null);for(var f=0;f]*>?/)?"variable":(e.next(),e.eatWhile(/[^@"<#]/),null)}},GFr=Object.freeze(Object.defineProperty({__proto__:null,gherkin:XFr},Symbol.toStringTag,{value:"Module"}));function $pe(e){for(var t={},n=e.split(" "),r=0;r"))return Hm="->",null;if(/[+\-*&%=<>!?|\/~]/.test(n))return e.eatWhile(/[+\-*&%=<>|~]/),"operator";if(e.eatWhile(/[\w\$_]/),n=="@")return e.eatWhile(/[\w\$_\.]/),"meta";if(t.lastToken==".")return"property";if(e.eat(":"))return Hm="proplabel","property";var r=e.current();return KFr.propertyIsEnumerable(r)?"atom":YFr.propertyIsEnumerable(r)?(ZFr.propertyIsEnumerable(r)?Hm="newstatement":qFr.propertyIsEnumerable(r)&&(Hm="standalone"),"keyword"):"variable"}$Ke.isBase=!0;function l4t(e,t,n){var r=!1;if(e!="/"&&t.eat(e))if(t.eat(e))r=!0;else return"string";function o(s,a){for(var l=!1,d,u=!r;(d=s.next())!=null;){if(d==e&&!l){if(!r)break;if(s.match(e+e)){u=!0;break}}if(e=='"'&&d=="$"&&!l){if(s.eat("{"))return a.tokenize.push(JFr()),"string";if(s.match(/^\w/,!1))return a.tokenize.push(eNr),"string"}l=!l&&d=="\\"}return u&&a.tokenize.pop(),"string"}return n.tokenize.push(o),o(t,n)}function JFr(){var e=1;function t(n,r){if(n.peek()=="}"){if(e--,e==0)return r.tokenize.pop(),r.tokenize[r.tokenize.length-1](n,r)}else n.peek()=="{"&&e++;return $Ke(n,r)}return t.isBase=!0,t}function eNr(e,t){var n=e.match(/^(\.|[\w\$_]+)/);return(!n||!e.match(n[0]=="."?/^[\w$_]/:/^\./))&&t.tokenize.pop(),n?n[0]=="."?null:"variable":t.tokenize[t.tokenize.length-1](e,t)}function c4t(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize.pop();break}n=r=="*"}return"comment"}function mFe(e,t){return!e||e=="operator"||e=="->"||/[\.\[\{\(,;:]/.test(e)||e=="newstatement"||e=="keyword"||e=="proplabel"||e=="standalone"&&!t}function Yxn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function jae(e,t,n){return e.context=new Yxn(e.indented,t,n,null,e.context)}function c7(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const tNr={name:"groovy",startState:function(e){return{tokenize:[$Ke],context:new Yxn(-e,0,"top",!1),indented:0,startOfLine:!0,lastToken:null}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0,n.type=="statement"&&!mFe(t.lastToken,!0)&&(c7(t),n=t.context)),e.eatSpace())return null;Hm=null;var r=t.tokenize[t.tokenize.length-1](e,t);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(Hm==";"||Hm==":")&&n.type=="statement")c7(t);else if(Hm=="->"&&n.type=="statement"&&n.prev.type=="}")c7(t),t.context.align=!1;else if(Hm=="{")jae(t,e.column(),"}");else if(Hm=="[")jae(t,e.column(),"]");else if(Hm=="(")jae(t,e.column(),")");else if(Hm=="}"){for(;n.type=="statement";)n=c7(t);for(n.type=="}"&&(n=c7(t));n.type=="statement";)n=c7(t)}else Hm==n.type?c7(t):(n.type=="}"||n.type=="top"||n.type=="statement"&&Hm=="newstatement")&&jae(t,e.column(),"statement");return t.startOfLine=!1,t.lastToken=Hm||r,r},indent:function(e,t,n){if(!e.tokenize[e.tokenize.length-1].isBase)return null;var r=t&&t.charAt(0),o=e.context;o.type=="statement"&&!mFe(e.lastToken,!0)&&(o=o.prev);var s=r==o.type;return o.type=="statement"?o.indented+(r=="{"?0:n.unit):o.align?o.column+(s?0:1):o.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}},nNr=Object.freeze(Object.defineProperty({__proto__:null,groovy:tNr},Symbol.toStringTag,{value:"Module"}));function kFe(e,t,n){return t(n),n(e,t)}var iNr=/[a-z_]/,rNr=/[A-Z]/,g8e=/\d/,oNr=/[0-9A-Fa-f]/,sNr=/[0-7]/,d4t=/[a-z_A-Z0-9'\xa1-\uffff]/,m8e=/[-!#$%&*+.\/<=>?@\\^|~:]/,aNr=/[(),;[\]`{}]/,Zxn=/[ \t\v\f]/;function jW(e,t){if(e.eatWhile(Zxn))return null;var n=e.next();if(aNr.test(n)){if(n=="{"&&e.eat("-")){var r="comment";return e.eat("#")&&(r="meta"),kFe(e,t,qxn(r,1))}return null}if(n=="'")return e.eat("\\"),e.next(),e.eat("'")?"string":"error";if(n=='"')return kFe(e,t,Kxn);if(rNr.test(n))return e.eatWhile(d4t),e.eat(".")?"qualifier":"type";if(iNr.test(n))return e.eatWhile(d4t),"variable";if(g8e.test(n)){if(n=="0"){if(e.eat(/[xX]/))return e.eatWhile(oNr),"integer";if(e.eat(/[oO]/))return e.eatWhile(sNr),"number"}e.eatWhile(g8e);var r="number";return e.match(/^\.\d+/)&&(r="number"),e.eat(/[eE]/)&&(r="number",e.eat(/[-+]/),e.eatWhile(g8e)),r}return n=="."&&e.eat(".")?"keyword":m8e.test(n)?n=="-"&&e.eat(/-/)&&(e.eatWhile(/-/),!e.eat(m8e))?(e.skipToEnd(),"comment"):(e.eatWhile(m8e),"variable"):"error"}function qxn(e,t){return t==0?jW:function(n,r){for(var o=t;!n.eol();){var s=n.next();if(s=="{"&&n.eat("-"))++o;else if(s=="-"&&n.eat("}")&&(--o,o==0))return r(jW),e}return r(qxn(e,o)),e}}function Kxn(e,t){for(;!e.eol();){var n=e.next();if(n=='"')return t(jW),"string";if(n=="\\"){if(e.eol()||e.eat(Zxn))return t(lNr),"string";e.eat("&")||e.next()}}return t(jW),"error"}function lNr(e,t){return e.eat("\\")?kFe(e,t,Kxn):(e.next(),t(jW),"error")}var u4t=function(){var e={};function t(n){return function(){for(var r=0;r","@","~","=>"),t("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<*","<=","<$>","<*>","=<<","==",">",">=",">>",">>=","^","^^","||","*","*>","**"),t("builtin")("Applicative","Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),t("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","pure","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"),e}();const cNr={name:"haskell",startState:function(){return{f:jW}},copyState:function(e){return{f:e.f}},token:function(e,t){var n=t.f(e,function(o){t.f=o}),r=e.current();return u4t.hasOwnProperty(r)?u4t[r]:n},languageData:{commentTokens:{line:"--",block:{open:"{-",close:"-}"}}}},dNr=Object.freeze(Object.defineProperty({__proto__:null,haskell:cNr},Symbol.toStringTag,{value:"Module"}));function Bh(e){return{type:e,style:"keyword"}}var h4t=Bh("keyword a"),k8e=Bh("keyword b"),Z$=Bh("keyword c"),uNr=Bh("operator"),v8e={type:"atom",style:"atom"},Wae={type:"attribute",style:"attribute"},Ym=Bh("typedef"),f4t={if:h4t,while:h4t,else:k8e,do:k8e,try:k8e,return:Z$,break:Z$,continue:Z$,new:Z$,throw:Z$,var:Bh("var"),inline:Wae,static:Wae,using:Bh("import"),public:Wae,private:Wae,cast:Bh("cast"),import:Bh("import"),macro:Bh("macro"),function:Bh("function"),catch:Bh("catch"),untyped:Bh("untyped"),callback:Bh("cb"),for:Bh("for"),switch:Bh("switch"),case:Bh("case"),default:Bh("default"),in:uNr,never:Bh("property_access"),trace:Bh("trace"),class:Ym,abstract:Ym,enum:Ym,interface:Ym,typedef:Ym,extends:Ym,implements:Ym,dynamic:Ym,true:v8e,false:v8e,null:v8e},A8e=/[+\-*&%=<>!?|]/;function g4t(e,t,n){return t.tokenize=n,n(e,t)}function Jxn(e,t){for(var n=!1,r;(r=e.next())!=null;){if(r==t&&!n)return!0;n=!n&&r=="\\"}}var Ym,e5n;function yk(e,t,n){return Ym=e,e5n=n,t}function ime(e,t){var n=e.next();if(n=='"'||n=="'")return g4t(e,t,hNr(n));if(/[\[\]{}\(\),;\:\.]/.test(n))return yk(n);if(n=="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),yk("number","number");if(/\d/.test(n)||n=="-"&&e.eat(/\d/))return e.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/),yk("number","number");if(t.reAllowed&&n=="~"&&e.eat(/\//))return Jxn(e,"/"),e.eatWhile(/[gimsu]/),yk("regexp","string.special");if(n=="/")return e.eat("*")?g4t(e,t,fNr):e.eat("/")?(e.skipToEnd(),yk("comment","comment")):(e.eatWhile(A8e),yk("operator",null,e.current()));if(n=="#")return e.skipToEnd(),yk("conditional","meta");if(n=="@")return e.eat(/:/),e.eatWhile(/[\w_]/),yk("metadata","meta");if(A8e.test(n))return e.eatWhile(A8e),yk("operator",null,e.current());var r;if(/[A-Z]/.test(n))return e.eatWhile(/[\w_<>]/),r=e.current(),yk("type","type",r);e.eatWhile(/[\w_]/);var r=e.current(),o=f4t.propertyIsEnumerable(r)&&f4t[r];return o&&t.kwAllowed?yk(o.type,o.style,r):yk("variable","variable",r)}function hNr(e){return function(t,n){return Jxn(t,e)&&(n.tokenize=ime),yk("string","string")}}function fNr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=ime;break}n=r=="*"}return yk("comment","comment")}var t5n={atom:!0,number:!0,variable:!0,string:!0,regexp:!0};function n5n(e,t,n,r,o,s){this.indented=e,this.column=t,this.type=n,this.prev=o,this.info=s,r!=null&&(this.align=r)}function gNr(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0}function mNr(e,t,n,r,o){var s=e.cc;for(Rd.state=e,Rd.stream=o,Rd.marked=null,Rd.cc=s,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){var a=s.length?s.pop():SS;if(a(n,r)){for(;s.length&&s[s.length-1].lex;)s.pop()();return Rd.marked?Rd.marked:n=="variable"&&gNr(e,r)?"variableName.local":n=="variable"&&kNr(e,r)?"variableName.special":t}}}function kNr(e,t){if(/[a-z]/.test(t.charAt(0)))return!1;for(var n=e.importedtypes.length,r=0;r=0;e--)Rd.cc.push(arguments[e])}function pr(){return x8.apply(null,arguments),!0}function m4t(e,t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}function Xpe(e){var t=Rd.state;if(t.context){if(Rd.marked="def",m4t(e,t.localVars))return;t.localVars={name:e,next:t.localVars}}else if(t.globalVars){if(m4t(e,t.globalVars))return;t.globalVars={name:e,next:t.globalVars}}}var vNr={name:"this",next:null};function vFe(){Rd.state.context||(Rd.state.localVars=vNr),Rd.state.context={prev:Rd.state.context,vars:Rd.state.localVars}}function rme(){Rd.state.localVars=Rd.state.context.vars,Rd.state.context=Rd.state.context.prev}rme.lex=!0;function gf(e,t){var n=function(){var r=Rd.state;r.lexical=new n5n(r.indented,Rd.stream.column(),e,null,r.lexical,t)};return n.lex=!0,n}function nh(){var e=Rd.state;e.lexical.prev&&(e.lexical.type==")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}nh.lex=!0;function i0(e){function t(n){return n==e?pr():e==";"?x8():pr(t)}return t}function SS(e){return e=="@"?pr(AFe):e=="var"?pr(gf("vardef"),XKe,i0(";"),nh):e=="keyword a"?pr(gf("form"),W4,SS,nh):e=="keyword b"?pr(gf("form"),SS,nh):e=="{"?pr(gf("}"),vFe,pFe,nh,rme):e==";"?pr():e=="attribute"?pr(r5n):e=="function"?pr(IK):e=="for"?pr(gf("form"),i0("("),gf(")"),yNr,i0(")"),nh,SS,nh):e=="variable"?pr(gf("stat"),bNr):e=="switch"?pr(gf("form"),W4,gf("}","switch"),i0("{"),pFe,nh,nh):e=="case"?pr(W4,i0(":")):e=="default"?pr(i0(":")):e=="catch"?pr(gf("form"),vFe,i0("("),a5n,i0(")"),SS,nh,rme):e=="import"?pr(o5n,i0(";")):e=="typedef"?pr(pNr):x8(gf("stat"),W4,i0(";"),nh)}function W4(e){return t5n.hasOwnProperty(e)||e=="type"?pr(yO):e=="function"?pr(IK):e=="keyword c"?pr(p8e):e=="("?pr(gf(")"),p8e,i0(")"),nh,yO):e=="operator"?pr(W4):e=="["?pr(gf("]"),WW(p8e,"]"),nh,yO):e=="{"?pr(gf("}"),WW(ONr,"}"),nh,yO):pr()}function p8e(e){return e.match(/[;\}\)\],]/)?x8():x8(W4)}function yO(e,t){if(e=="operator"&&/\+\+|--/.test(t))return pr(yO);if(e=="operator"||e==":")return pr(W4);if(e!=";"){if(e=="(")return pr(gf(")"),WW(W4,")"),nh,yO);if(e==".")return pr(wNr,yO);if(e=="[")return pr(gf("]"),W4,i0("]"),nh,yO)}}function r5n(e){if(e=="attribute")return pr(r5n);if(e=="function")return pr(IK);if(e=="var")return pr(XKe)}function AFe(e){if(e==":"||e=="variable")return pr(AFe);if(e=="(")return pr(gf(")"),WW(ANr,")"),nh,SS)}function ANr(e){if(e=="variable")return pr()}function o5n(e,t){if(e=="variable"&&/[A-Z]/.test(t.charAt(0)))return i5n(t),pr();if(e=="variable"||e=="property"||e=="."||t=="*")return pr(o5n)}function pNr(e,t){if(e=="variable"&&/[A-Z]/.test(t.charAt(0)))return i5n(t),pr();if(e=="type"&&/[A-Z]/.test(t.charAt(0)))return pr()}function bNr(e){return e==":"?pr(nh,SS):x8(yO,i0(";"),nh)}function wNr(e){if(e=="variable")return Rd.marked="property",pr()}function ONr(e){if(e=="variable"&&(Rd.marked="property"),t5n.hasOwnProperty(e))return pr(i0(":"),W4)}function WW(e,t){function n(r){return r==","?pr(e,n):r==t?pr():pr(i0(t))}return function(r){return r==t?pr():x8(e,n)}}function pFe(e){return e=="}"?pr():x8(SS,pFe)}function XKe(e,t){return e=="variable"?(Xpe(t),pr(Gpe,s5n)):pr()}function s5n(e,t){if(t=="=")return pr(W4,s5n);if(e==",")return pr(XKe)}function yNr(e,t){return e=="variable"?(Xpe(t),pr(CNr,W4)):x8()}function CNr(e,t){if(t=="in")return pr()}function IK(e,t){if(e=="variable"||e=="type")return Xpe(t),pr(IK);if(t=="new")return pr(IK);if(e=="(")return pr(gf(")"),vFe,WW(a5n,")"),nh,Gpe,SS,rme)}function Gpe(e){if(e==":")return pr(_Nr)}function _Nr(e){if(e=="type"||e=="variable")return pr();if(e=="{")return pr(gf("}"),WW(SNr,"}"),nh)}function SNr(e){if(e=="variable")return pr(Gpe)}function a5n(e,t){if(e=="variable")return Xpe(t),pr(Gpe)}const LNr={name:"haxe",startState:function(e){var t=["Int","Float","String","Void","Std","Bool","Dynamic","Array"],n={tokenize:ime,reAllowed:!0,kwAllowed:!0,cc:[],lexical:new n5n(-e,0,"block",!1),importedtypes:t,context:null,indented:0};return n},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);return Ym=="comment"?n:(t.reAllowed=!!(Ym=="operator"||Ym=="keyword c"||Ym.match(/^[\[{}\(,;:]$/)),t.kwAllowed=Ym!=".",mNr(t,n,Ym,e5n,e))},indent:function(e,t,n){if(e.tokenize!=ime)return 0;var r=t&&t.charAt(0),o=e.lexical;o.type=="stat"&&r=="}"&&(o=o.prev);var s=o.type,a=r==s;return s=="vardef"?o.indented+4:s=="form"&&r=="{"?o.indented:s=="stat"||s=="form"?o.indented+n.unit:o.info=="switch"&&!a?o.indented+(/^(?:case|default)\b/.test(t)?n.unit:2*n.unit):o.align?o.column+(a?0:1):o.indented+(a?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},xNr={name:"hxml",startState:function(){return{define:!1,inString:!1}},token:function(e,t){var o=e.peek(),n=e.sol();if(o=="#")return e.skipToEnd(),"comment";if(n&&o=="-"){var r="variable-2";return e.eat(/-/),e.peek()=="-"&&(e.eat(/-/),r="keyword a"),e.peek()=="D"&&(e.eat(/[D]/),r="keyword c",t.define=!0),e.eatWhile(/[A-Z]/i),r}var o=e.peek();return t.inString==!1&&o=="'"&&(t.inString=!0,e.next()),t.inString==!0?(e.skipTo("'")||e.skipToEnd(),e.peek()=="'"&&(e.next(),t.inString=!1),"string"):(e.next(),null)},languageData:{commentTokens:{line:"#"}}},k4t=Object.freeze(Object.defineProperty({__proto__:null,haxe:LNr,hxml:xNr},Symbol.toStringTag,{value:"Module"}));function GKe(e,t){return e.skipToEnd(),t.cur=Ype,"error"}function ENr(e,t){return e.match(/^HTTP\/\d\.\d/)?(t.cur=TNr,"keyword"):e.match(/^[A-Z]+/)&&/[ \t]/.test(e.peek())?(t.cur=DNr,"keyword"):GKe(e,t)}function TNr(e,t){var n=e.match(/^\d+/);if(!n)return GKe(e,t);t.cur=QNr;var r=Number(n[0]);return r>=100&&r<400?"atom":"error"}function QNr(e,t){return e.skipToEnd(),t.cur=Ype,null}function DNr(e,t){return e.eatWhile(/\S/),t.cur=BNr,"string.special"}function BNr(e,t){return e.match(/^HTTP\/\d\.\d$/)?(t.cur=Ype,"keyword"):GKe(e,t)}function Ype(e){return e.sol()&&!e.eat(/[ \t]/)?e.match(/^.*?:/)?"atom":(e.skipToEnd(),"error"):(e.skipToEnd(),"string")}function v4t(e){return e.skipToEnd(),null}const RNr={name:"http",token:function(e,t){var n=t.cur;return n!=Ype&&n!=v4t&&e.eatSpace()?null:n(e,t)},blankLine:function(e){e.cur=v4t},startState:function(){return{cur:ENr}}},INr=Object.freeze(Object.defineProperty({__proto__:null,http:RNr},Symbol.toStringTag,{value:"Module"}));function l5n(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var c5n=["a_correlate","abs","acos","adapt_hist_equal","alog","alog2","alog10","amoeba","annotate","app_user_dir","app_user_dir_query","arg_present","array_equal","array_indices","arrow","ascii_template","asin","assoc","atan","axis","axis","bandpass_filter","bandreject_filter","barplot","bar_plot","beseli","beselj","beselk","besely","beta","biginteger","bilinear","bin_date","binary_template","bindgen","binomial","bit_ffs","bit_population","blas_axpy","blk_con","boolarr","boolean","boxplot","box_cursor","breakpoint","broyden","bubbleplot","butterworth","bytarr","byte","byteorder","bytscl","c_correlate","calendar","caldat","call_external","call_function","call_method","call_procedure","canny","catch","cd","cdf","ceil","chebyshev","check_math","chisqr_cvf","chisqr_pdf","choldc","cholsol","cindgen","cir_3pnt","clipboard","close","clust_wts","cluster","cluster_tree","cmyk_convert","code_coverage","color_convert","color_exchange","color_quan","color_range_map","colorbar","colorize_sample","colormap_applicable","colormap_gradient","colormap_rotation","colortable","comfit","command_line_args","common","compile_opt","complex","complexarr","complexround","compute_mesh_normals","cond","congrid","conj","constrained_min","contour","contour","convert_coord","convol","convol_fft","coord2to3","copy_lun","correlate","cos","cosh","cpu","cramer","createboxplotdata","create_cursor","create_struct","create_view","crossp","crvlength","ct_luminance","cti_test","cursor","curvefit","cv_coord","cvttobm","cw_animate","cw_animate_getp","cw_animate_load","cw_animate_run","cw_arcball","cw_bgroup","cw_clr_index","cw_colorsel","cw_defroi","cw_field","cw_filesel","cw_form","cw_fslider","cw_light_editor","cw_light_editor_get","cw_light_editor_set","cw_orient","cw_palette_editor","cw_palette_editor_get","cw_palette_editor_set","cw_pdmenu","cw_rgbslider","cw_tmpl","cw_zoom","db_exists","dblarr","dcindgen","dcomplex","dcomplexarr","define_key","define_msgblk","define_msgblk_from_file","defroi","defsysv","delvar","dendro_plot","dendrogram","deriv","derivsig","determ","device","dfpmin","diag_matrix","dialog_dbconnect","dialog_message","dialog_pickfile","dialog_printersetup","dialog_printjob","dialog_read_image","dialog_write_image","dictionary","digital_filter","dilate","dindgen","dissolve","dist","distance_measure","dlm_load","dlm_register","doc_library","double","draw_roi","edge_dog","efont","eigenql","eigenvec","ellipse","elmhes","emboss","empty","enable_sysrtn","eof","eos","erase","erf","erfc","erfcx","erode","errorplot","errplot","estimator_filter","execute","exit","exp","expand","expand_path","expint","extract","extract_slice","f_cvf","f_pdf","factorial","fft","file_basename","file_chmod","file_copy","file_delete","file_dirname","file_expand_path","file_gunzip","file_gzip","file_info","file_lines","file_link","file_mkdir","file_move","file_poll_input","file_readlink","file_same","file_search","file_tar","file_test","file_untar","file_unzip","file_which","file_zip","filepath","findgen","finite","fix","flick","float","floor","flow3","fltarr","flush","format_axis_values","forward_function","free_lun","fstat","fulstr","funct","function","fv_test","fx_root","fz_roots","gamma","gamma_ct","gauss_cvf","gauss_pdf","gauss_smooth","gauss2dfit","gaussfit","gaussian_function","gaussint","get_drive_list","get_dxf_objects","get_kbrd","get_login_info","get_lun","get_screen_size","getenv","getwindows","greg2jul","grib","grid_input","grid_tps","grid3","griddata","gs_iter","h_eq_ct","h_eq_int","hanning","hash","hdf","hdf5","heap_free","heap_gc","heap_nosave","heap_refcount","heap_save","help","hilbert","hist_2d","hist_equal","histogram","hls","hough","hqr","hsv","i18n_multibytetoutf8","i18n_multibytetowidechar","i18n_utf8tomultibyte","i18n_widechartomultibyte","ibeta","icontour","iconvertcoord","idelete","identity","idl_base64","idl_container","idl_validname","idlexbr_assistant","idlitsys_createtool","idlunit","iellipse","igamma","igetcurrent","igetdata","igetid","igetproperty","iimage","image","image_cont","image_statistics","image_threshold","imaginary","imap","indgen","int_2d","int_3d","int_tabulated","intarr","interpol","interpolate","interval_volume","invert","ioctl","iopen","ir_filter","iplot","ipolygon","ipolyline","iputdata","iregister","ireset","iresolve","irotate","isa","isave","iscale","isetcurrent","isetproperty","ishft","isocontour","isosurface","isurface","itext","itranslate","ivector","ivolume","izoom","journal","json_parse","json_serialize","jul2greg","julday","keyword_set","krig2d","kurtosis","kw_test","l64indgen","la_choldc","la_cholmprove","la_cholsol","la_determ","la_eigenproblem","la_eigenql","la_eigenvec","la_elmhes","la_gm_linear_model","la_hqr","la_invert","la_least_square_equality","la_least_squares","la_linear_equation","la_ludc","la_lumprove","la_lusol","la_svd","la_tridc","la_trimprove","la_triql","la_trired","la_trisol","label_date","label_region","ladfit","laguerre","lambda","lambdap","lambertw","laplacian","least_squares_filter","leefilt","legend","legendre","linbcg","lindgen","linfit","linkimage","list","ll_arc_distance","lmfit","lmgr","lngamma","lnp_test","loadct","locale_get","logical_and","logical_or","logical_true","lon64arr","lonarr","long","long64","lsode","lu_complex","ludc","lumprove","lusol","m_correlate","machar","make_array","make_dll","make_rt","map","mapcontinents","mapgrid","map_2points","map_continents","map_grid","map_image","map_patch","map_proj_forward","map_proj_image","map_proj_info","map_proj_init","map_proj_inverse","map_set","matrix_multiply","matrix_power","max","md_test","mean","meanabsdev","mean_filter","median","memory","mesh_clip","mesh_decimate","mesh_issolid","mesh_merge","mesh_numtriangles","mesh_obj","mesh_smooth","mesh_surfacearea","mesh_validate","mesh_volume","message","min","min_curve_surf","mk_html_help","modifyct","moment","morph_close","morph_distance","morph_gradient","morph_hitormiss","morph_open","morph_thin","morph_tophat","multi","n_elements","n_params","n_tags","ncdf","newton","noise_hurl","noise_pick","noise_scatter","noise_slur","norm","obj_class","obj_destroy","obj_hasmethod","obj_isa","obj_new","obj_valid","objarr","on_error","on_ioerror","online_help","openr","openu","openw","oplot","oploterr","orderedhash","p_correlate","parse_url","particle_trace","path_cache","path_sep","pcomp","plot","plot3d","plot","plot_3dbox","plot_field","ploterr","plots","polar_contour","polar_surface","polyfill","polyshade","pnt_line","point_lun","polarplot","poly","poly_2d","poly_area","poly_fit","polyfillv","polygon","polyline","polywarp","popd","powell","pref_commit","pref_get","pref_set","prewitt","primes","print","printf","printd","pro","product","profile","profiler","profiles","project_vol","ps_show_fonts","psafm","pseudo","ptr_free","ptr_new","ptr_valid","ptrarr","pushd","qgrid3","qhull","qromb","qromo","qsimp","query_*","query_ascii","query_bmp","query_csv","query_dicom","query_gif","query_image","query_jpeg","query_jpeg2000","query_mrsid","query_pict","query_png","query_ppm","query_srf","query_tiff","query_video","query_wav","r_correlate","r_test","radon","randomn","randomu","ranks","rdpix","read","readf","read_ascii","read_binary","read_bmp","read_csv","read_dicom","read_gif","read_image","read_interfile","read_jpeg","read_jpeg2000","read_mrsid","read_pict","read_png","read_ppm","read_spr","read_srf","read_sylk","read_tiff","read_video","read_wav","read_wave","read_x11_bitmap","read_xwd","reads","readu","real_part","rebin","recall_commands","recon3","reduce_colors","reform","region_grow","register_cursor","regress","replicate","replicate_inplace","resolve_all","resolve_routine","restore","retall","return","reverse","rk4","roberts","rot","rotate","round","routine_filepath","routine_info","rs_test","s_test","save","savgol","scale3","scale3d","scatterplot","scatterplot3d","scope_level","scope_traceback","scope_varfetch","scope_varname","search2d","search3d","sem_create","sem_delete","sem_lock","sem_release","set_plot","set_shading","setenv","sfit","shade_surf","shade_surf_irr","shade_volume","shift","shift_diff","shmdebug","shmmap","shmunmap","shmvar","show3","showfont","signum","simplex","sin","sindgen","sinh","size","skewness","skip_lun","slicer3","slide_image","smooth","sobel","socket","sort","spawn","sph_4pnt","sph_scat","spher_harm","spl_init","spl_interp","spline","spline_p","sprsab","sprsax","sprsin","sprstp","sqrt","standardize","stddev","stop","strarr","strcmp","strcompress","streamline","streamline","stregex","stretch","string","strjoin","strlen","strlowcase","strmatch","strmessage","strmid","strpos","strput","strsplit","strtrim","struct_assign","struct_hide","strupcase","surface","surface","surfr","svdc","svdfit","svsol","swap_endian","swap_endian_inplace","symbol","systime","t_cvf","t_pdf","t3d","tag_names","tan","tanh","tek_color","temporary","terminal_size","tetra_clip","tetra_surface","tetra_volume","text","thin","thread","threed","tic","time_test2","timegen","timer","timestamp","timestamptovalues","tm_test","toc","total","trace","transpose","tri_surf","triangulate","trigrid","triql","trired","trisol","truncate_lun","ts_coef","ts_diff","ts_fcast","ts_smooth","tv","tvcrs","tvlct","tvrd","tvscl","typename","uindgen","uint","uintarr","ul64indgen","ulindgen","ulon64arr","ulonarr","ulong","ulong64","uniq","unsharp_mask","usersym","value_locate","variance","vector","vector_field","vel","velovect","vert_t3d","voigt","volume","voronoi","voxel_proj","wait","warp_tri","watershed","wdelete","wf_draw","where","widget_base","widget_button","widget_combobox","widget_control","widget_displaycontextmenu","widget_draw","widget_droplist","widget_event","widget_info","widget_label","widget_list","widget_propertysheet","widget_slider","widget_tab","widget_table","widget_text","widget_tree","widget_tree_move","widget_window","wiener_filter","window","window","write_bmp","write_csv","write_gif","write_image","write_jpeg","write_jpeg2000","write_nrif","write_pict","write_png","write_ppm","write_spr","write_srf","write_sylk","write_tiff","write_video","write_wav","write_wave","writeu","wset","wshow","wtn","wv_applet","wv_cwt","wv_cw_wavelet","wv_denoise","wv_dwt","wv_fn_coiflet","wv_fn_daubechies","wv_fn_gaussian","wv_fn_haar","wv_fn_morlet","wv_fn_paul","wv_fn_symlet","wv_import_data","wv_import_wavelet","wv_plot3d_wps","wv_plot_multires","wv_pwt","wv_tool_denoise","xbm_edit","xdisplayfile","xdxf","xfont","xinteranimate","xloadct","xmanager","xmng_tmpl","xmtool","xobjview","xobjview_rotate","xobjview_write_image","xpalette","xpcolor","xplot3d","xregistered","xroi","xsq_test","xsurface","xvaredit","xvolume","xvolume_rotate","xvolume_write_image","xyouts","zlib_compress","zlib_uncompress","zoom","zoom_24"],MNr=l5n(c5n),d5n=["begin","end","endcase","endfor","endwhile","endif","endrep","endforeach","break","case","continue","for","foreach","goto","if","then","else","repeat","until","switch","while","do","pro","function"],PNr=l5n(d5n),FNr=new RegExp("^[_a-z¡-￿][_a-z0-9¡-￿]*","i"),NNr=/[+\-*&=<>\/@#~$]/,UNr=new RegExp("(and|or|eq|lt|le|gt|ge|ne|not)","i");function jNr(e){return e.eatSpace()?null:e.match(";")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(PNr)?"keyword":e.match(MNr)?"builtin":e.match(FNr)?"variable":e.match(NNr)||e.match(UNr)?"operator":(e.next(),null)}const WNr={name:"idl",token:function(e){return jNr(e)},languageData:{autocomplete:c5n.concat(d5n)}},VNr=Object.freeze(Object.defineProperty({__proto__:null,idl:WNr},Symbol.toStringTag,{value:"Module"}));function Zpe(e){var t=e.statementIndent,n=e.jsonld,r=e.json||n,o=e.typescript,s=e.wordCharacters||/[\w$\xa1-\uffff]/,a=function(){function Ue(Wo){return{type:Wo,style:"keyword"}}var ut=Ue("keyword a"),Nt=Ue("keyword b"),wn=Ue("keyword c"),Cn=Ue("keyword d"),wr=Ue("operator"),Kr={type:"atom",style:"atom"};return{if:Ue("if"),while:ut,with:ut,else:Nt,do:Nt,try:Nt,finally:Nt,return:Cn,break:Cn,continue:Cn,new:Ue("new"),delete:wn,void:wn,throw:wn,debugger:Ue("debugger"),var:Ue("var"),const:Ue("var"),let:Ue("var"),function:Ue("function"),catch:Ue("catch"),for:Ue("for"),switch:Ue("switch"),case:Ue("case"),default:Ue("default"),in:wr,typeof:wr,instanceof:wr,true:Kr,false:Kr,null:Kr,undefined:Kr,NaN:Kr,Infinity:Kr,this:Ue("this"),class:Ue("class"),super:Ue("atom"),yield:wn,export:Ue("export"),import:Ue("import"),extends:wn,await:wn}}(),l=/[+\-*&%=<>!?|~^@]/,d=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function u(Ue){for(var ut=!1,Nt,wn=!1;(Nt=Ue.next())!=null;){if(!ut){if(Nt=="/"&&!wn)return;Nt=="["?wn=!0:wn&&Nt=="]"&&(wn=!1)}ut=!ut&&Nt=="\\"}}var h,g;function m(Ue,ut,Nt){return h=Ue,g=Nt,ut}function v(Ue,ut){var Nt=Ue.next();if(Nt=='"'||Nt=="'")return ut.tokenize=f(Nt),ut.tokenize(Ue,ut);if(Nt=="."&&Ue.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if(Nt=="."&&Ue.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Nt))return m(Nt);if(Nt=="="&&Ue.eat(">"))return m("=>","operator");if(Nt=="0"&&Ue.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(Nt))return Ue.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if(Nt=="/")return Ue.eat("*")?(ut.tokenize=k,k(Ue,ut)):Ue.eat("/")?(Ue.skipToEnd(),m("comment","comment")):wi(Ue,ut,1)?(u(Ue),Ue.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string.special")):(Ue.eat("="),m("operator","operator",Ue.current()));if(Nt=="`")return ut.tokenize=A,A(Ue,ut);if(Nt=="#"&&Ue.peek()=="!")return Ue.skipToEnd(),m("meta","meta");if(Nt=="#"&&Ue.eatWhile(s))return m("variable","property");if(Nt=="<"&&Ue.match("!--")||Nt=="-"&&Ue.match("->")&&!/\S/.test(Ue.string.slice(0,Ue.start)))return Ue.skipToEnd(),m("comment","comment");if(l.test(Nt))return(Nt!=">"||!ut.lexical||ut.lexical.type!=">")&&(Ue.eat("=")?(Nt=="!"||Nt=="=")&&Ue.eat("="):/[<>*+\-|&?]/.test(Nt)&&(Ue.eat(Nt),Nt==">"&&Ue.eat(Nt))),Nt=="?"&&Ue.eat(".")?m("."):m("operator","operator",Ue.current());if(s.test(Nt)){Ue.eatWhile(s);var wn=Ue.current();if(ut.lastType!="."){if(a.propertyIsEnumerable(wn)){var Cn=a[wn];return m(Cn.type,Cn.style,wn)}if(wn=="async"&&Ue.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",wn)}return m("variable","variable",wn)}}function f(Ue){return function(ut,Nt){var wn=!1,Cn;if(n&&ut.peek()=="@"&&ut.match(d))return Nt.tokenize=v,m("jsonld-keyword","meta");for(;(Cn=ut.next())!=null&&!(Cn==Ue&&!wn);)wn=!wn&&Cn=="\\";return wn||(Nt.tokenize=v),m("string","string")}}function k(Ue,ut){for(var Nt=!1,wn;wn=Ue.next();){if(wn=="/"&&Nt){ut.tokenize=v;break}Nt=wn=="*"}return m("comment","comment")}function A(Ue,ut){for(var Nt=!1,wn;(wn=Ue.next())!=null;){if(!Nt&&(wn=="`"||wn=="$"&&Ue.eat("{"))){ut.tokenize=v;break}Nt=!Nt&&wn=="\\"}return m("quasi","string.special",Ue.current())}var p="([{}])";function b(Ue,ut){ut.fatArrowAt&&(ut.fatArrowAt=null);var Nt=Ue.string.indexOf("=>",Ue.start);if(!(Nt<0)){if(o){var wn=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(Ue.string.slice(Ue.start,Nt));wn&&(Nt=wn.index)}for(var Cn=0,wr=!1,Kr=Nt-1;Kr>=0;--Kr){var Wo=Ue.string.charAt(Kr),pl=p.indexOf(Wo);if(pl>=0&&pl<3){if(!Cn){++Kr;break}if(--Cn==0){Wo=="("&&(wr=!0);break}}else if(pl>=3&&pl<6)++Cn;else if(s.test(Wo))wr=!0;else if(/["'\/`]/.test(Wo))for(;;--Kr){if(Kr==0)return;var pu=Ue.string.charAt(Kr-1);if(pu==Wo&&Ue.string.charAt(Kr-2)!="\\"){Kr--;break}}else if(wr&&!Cn){++Kr;break}}wr&&!Cn&&(ut.fatArrowAt=Kr)}}var w={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function O(Ue,ut,Nt,wn,Cn,wr){this.indented=Ue,this.column=ut,this.type=Nt,this.prev=Cn,this.info=wr,wn!=null&&(this.align=wn)}function y(Ue,ut){for(var Nt=Ue.localVars;Nt;Nt=Nt.next)if(Nt.name==ut)return!0;for(var wn=Ue.context;wn;wn=wn.prev)for(var Nt=wn.vars;Nt;Nt=Nt.next)if(Nt.name==ut)return!0}function C(Ue,ut,Nt,wn,Cn){var wr=Ue.cc;for(_.state=Ue,_.stream=Cn,_.marked=null,_.cc=wr,_.style=ut,Ue.lexical.hasOwnProperty("align")||(Ue.lexical.align=!0);;){var Kr=wr.length?wr.pop():r?q:$;if(Kr(Nt,wn)){for(;wr.length&&wr[wr.length-1].lex;)wr.pop()();return _.marked?_.marked:Nt=="variable"&&y(Ue,wn)?"variableName.local":ut}}}var _={state:null,marked:null,cc:null};function S(){for(var Ue=arguments.length-1;Ue>=0;Ue--)_.cc.push(arguments[Ue])}function L(){return S.apply(null,arguments),!0}function E(Ue,ut){for(var Nt=ut;Nt;Nt=Nt.next)if(Nt.name==Ue)return!0;return!1}function T(Ue){var ut=_.state;if(_.marked="def",ut.context){if(ut.lexical.info=="var"&&ut.context&&ut.context.block){var Nt=D(Ue,ut.context);if(Nt!=null){ut.context=Nt;return}}else if(!E(Ue,ut.localVars)){ut.localVars=new M(Ue,ut.localVars);return}}e.globalVars&&!E(Ue,ut.globalVars)&&(ut.globalVars=new M(Ue,ut.globalVars))}function D(Ue,ut){if(ut)if(ut.block){var Nt=D(Ue,ut.prev);return Nt?Nt==ut.prev?ut:new Q(Nt,ut.vars,!0):null}else return E(Ue,ut.vars)?ut:new Q(ut.prev,new M(Ue,ut.vars),!1);else return null}function P(Ue){return Ue=="public"||Ue=="private"||Ue=="protected"||Ue=="abstract"||Ue=="readonly"}function Q(Ue,ut,Nt){this.prev=Ue,this.vars=ut,this.block=Nt}function M(Ue,ut){this.name=Ue,this.next=ut}var B=new M("this",new M("arguments",null));function R(){_.state.context=new Q(_.state.context,_.state.localVars,!1),_.state.localVars=B}function I(){_.state.context=new Q(_.state.context,_.state.localVars,!0),_.state.localVars=null}R.lex=I.lex=!0;function F(){_.state.localVars=_.state.context.vars,_.state.context=_.state.context.prev}F.lex=!0;function j(Ue,ut){var Nt=function(){var wn=_.state,Cn=wn.indented;if(wn.lexical.type=="stat")Cn=wn.lexical.indented;else for(var wr=wn.lexical;wr&&wr.type==")"&&wr.align;wr=wr.prev)Cn=wr.indented;wn.lexical=new O(Cn,_.stream.column(),Ue,null,wn.lexical,ut)};return Nt.lex=!0,Nt}function W(){var Ue=_.state;Ue.lexical.prev&&(Ue.lexical.type==")"&&(Ue.indented=Ue.lexical.indented),Ue.lexical=Ue.lexical.prev)}W.lex=!0;function H(Ue){function ut(Nt){return Nt==Ue?L():Ue==";"||Nt=="}"||Nt==")"||Nt=="]"?S():L(ut)}return ut}function $(Ue,ut){return Ue=="var"?L(j("vardef",ut),on,H(";"),W):Ue=="keyword a"?L(j("form"),J,$,W):Ue=="keyword b"?L(j("form"),$,W):Ue=="keyword d"?_.stream.match(/^\s*$/,!1)?L():L(j("stat"),se,H(";"),W):Ue=="debugger"?L(H(";")):Ue=="{"?L(j("}"),I,Te,W,F):Ue==";"?L():Ue=="if"?(_.state.lexical.info=="else"&&_.state.cc[_.state.cc.length-1]==W&&_.state.cc.pop()(),L(j("form"),J,$,W,Hr)):Ue=="function"?L(is):Ue=="for"?L(j("form"),I,Bo,$,F,W):Ue=="class"||o&&ut=="interface"?(_.marked="keyword",L(j("form",Ue=="class"?Ue:ut),tr,W)):Ue=="variable"?o&&ut=="declare"?(_.marked="keyword",L($)):o&&(ut=="module"||ut=="enum"||ut=="type")&&_.stream.match(/^\s*\w/,!1)?(_.marked="keyword",ut=="enum"?L(bn):ut=="type"?L(Gt,H("operator"),et,H(";")):L(j("form"),pn,H("{"),j("}"),Te,W,W)):o&&ut=="namespace"?(_.marked="keyword",L(j("form"),q,$,W)):o&&ut=="abstract"?(_.marked="keyword",L($)):L(j("stat"),he):Ue=="switch"?L(j("form"),J,H("{"),j("}","switch"),I,Te,W,W,F):Ue=="case"?L(q,H(":")):Ue=="default"?L(H(":")):Ue=="catch"?L(j("form"),R,G,$,W,F):Ue=="export"?L(j("stat"),Kt,W):Ue=="import"?L(j("stat"),Zt,W):Ue=="async"?L($):ut=="@"?L(q,$):S(j("stat"),q,H(";"),W)}function G(Ue){if(Ue=="(")return L(gi,H(")"))}function q(Ue,ut){return oe(Ue,ut,!1)}function re(Ue,ut){return oe(Ue,ut,!0)}function J(Ue){return Ue!="("?S():L(j(")"),se,H(")"),W)}function oe(Ue,ut,Nt){if(_.state.fatArrowAt==_.stream.start){var wn=Nt?Y:z;if(Ue=="(")return L(R,j(")"),me(gi,")"),W,H("=>"),wn,F);if(Ue=="variable")return S(R,pn,H("=>"),wn,F)}var Cn=Nt?ue:le;return w.hasOwnProperty(Ue)?L(Cn):Ue=="function"?L(is,Cn):Ue=="class"||o&&ut=="interface"?(_.marked="keyword",L(j("form"),ri,W)):Ue=="keyword c"||Ue=="async"?L(Nt?re:q):Ue=="("?L(j(")"),se,H(")"),W,Cn):Ue=="operator"||Ue=="spread"?L(Nt?re:q):Ue=="["?L(j("]"),nt,W,Cn):Ue=="{"?_e(Ce,"}",null,Cn):Ue=="quasi"?S(ee,Cn):Ue=="new"?L(ie(Nt)):L()}function se(Ue){return Ue.match(/[;\}\)\],]/)?S():S(q)}function le(Ue,ut){return Ue==","?L(se):ue(Ue,ut,!1)}function ue(Ue,ut,Nt){var wn=Nt==!1?le:ue,Cn=Nt==!1?q:re;if(Ue=="=>")return L(R,Nt?Y:z,F);if(Ue=="operator")return/\+\+|--/.test(ut)||o&&ut=="!"?L(wn):o&&ut=="<"&&_.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?L(j(">"),me(et,">"),W,wn):ut=="?"?L(q,H(":"),Cn):L(Cn);if(Ue=="quasi")return S(ee,wn);if(Ue!=";"){if(Ue=="(")return _e(re,")","call",wn);if(Ue==".")return L(pe,wn);if(Ue=="[")return L(j("]"),se,H("]"),W,wn);if(o&&ut=="as")return _.marked="keyword",L(et,wn);if(Ue=="regexp")return _.state.lastType=_.marked="operator",_.stream.backUp(_.stream.pos-_.stream.start-1),L(Cn)}}function ee(Ue,ut){return Ue!="quasi"?S():ut.slice(ut.length-2)!="${"?L(ee):L(se,de)}function de(Ue){if(Ue=="}")return _.marked="string.special",_.state.tokenize=A,L(ee)}function z(Ue){return b(_.stream,_.state),S(Ue=="{"?$:q)}function Y(Ue){return b(_.stream,_.state),S(Ue=="{"?$:re)}function ie(Ue){return function(ut){return ut=="."?L(Ue?Z:te):ut=="variable"&&o?L(St,Ue?ue:le):S(Ue?re:q)}}function te(Ue,ut){if(ut=="target")return _.marked="keyword",L(le)}function Z(Ue,ut){if(ut=="target")return _.marked="keyword",L(ue)}function he(Ue){return Ue==":"?L(W,$):S(le,H(";"),W)}function pe(Ue){if(Ue=="variable")return _.marked="property",L()}function Ce(Ue,ut){if(Ue=="async")return _.marked="property",L(Ce);if(Ue=="variable"||_.style=="keyword"){if(_.marked="property",ut=="get"||ut=="set")return L(Qe);var Nt;return o&&_.state.fatArrowAt==_.stream.start&&(Nt=_.stream.match(/^\s*:\s*/,!1))&&(_.state.fatArrowAt=_.stream.pos+Nt[0].length),L(ke)}else{if(Ue=="number"||Ue=="string")return _.marked=n?"property":_.style+" property",L(ke);if(Ue=="jsonld-keyword")return L(ke);if(o&&P(ut))return _.marked="keyword",L(Ce);if(Ue=="[")return L(q,De,H("]"),ke);if(Ue=="spread")return L(re,ke);if(ut=="*")return _.marked="keyword",L(Ce);if(Ue==":")return S(ke)}}function Qe(Ue){return Ue!="variable"?S(ke):(_.marked="property",L(is))}function ke(Ue){if(Ue==":")return L(re);if(Ue=="(")return S(is)}function me(Ue,ut,Nt){function wn(Cn,wr){if(Nt?Nt.indexOf(Cn)>-1:Cn==","){var Kr=_.state.lexical;return Kr.info=="call"&&(Kr.pos=(Kr.pos||0)+1),L(function(Wo,pl){return Wo==ut||pl==ut?S():S(Ue)},wn)}return Cn==ut||wr==ut?L():Nt&&Nt.indexOf(";")>-1?S(Ue):L(H(ut))}return function(Cn,wr){return Cn==ut||wr==ut?L():S(Ue,wn)}}function _e(Ue,ut,Nt){for(var wn=3;wn"),et);if(Ue=="quasi")return S(Ie,gt)}function st(Ue){if(Ue=="=>")return L(et)}function Me(Ue){return Ue.match(/[\}\)\]]/)?L():Ue==","||Ue==";"?L(Me):S(Se,Me)}function Se(Ue,ut){if(Ue=="variable"||_.style=="keyword")return _.marked="property",L(Se);if(ut=="?"||Ue=="number"||Ue=="string")return L(Se);if(Ue==":")return L(et);if(Ue=="[")return L(H("variable"),Ye,H("]"),Se);if(Ue=="(")return S(yi,Se);if(!Ue.match(/[;\}\)\],]/))return L()}function Ie(Ue,ut){return Ue!="quasi"?S():ut.slice(ut.length-2)!="${"?L(Ie):L(et,ze)}function ze(Ue){if(Ue=="}")return _.marked="string.special",_.state.tokenize=A,L(Ie)}function Ze(Ue,ut){return Ue=="variable"&&_.stream.match(/^\s*[?:]/,!1)||ut=="?"?L(Ze):Ue==":"?L(et):Ue=="spread"?L(Ze):S(et)}function gt(Ue,ut){if(ut=="<")return L(j(">"),me(et,">"),W,gt);if(ut=="|"||Ue=="."||ut=="&")return L(et);if(Ue=="[")return L(et,H("]"),gt);if(ut=="extends"||ut=="implements")return _.marked="keyword",L(et);if(ut=="?")return L(et,H(":"),et)}function St(Ue,ut){if(ut=="<")return L(j(">"),me(et,">"),W,gt)}function Pt(){return S(et,dn)}function dn(Ue,ut){if(ut=="=")return L(et)}function on(Ue,ut){return ut=="enum"?(_.marked="keyword",L(bn)):S(pn,De,Pi,rr)}function pn(Ue,ut){if(o&&P(ut))return _.marked="keyword",L(pn);if(Ue=="variable")return T(ut),L();if(Ue=="spread")return L(pn);if(Ue=="[")return _e(Zn,"]");if(Ue=="{")return _e(ni,"}")}function ni(Ue,ut){return Ue=="variable"&&!_.stream.match(/^\s*:/,!1)?(T(ut),L(Pi)):(Ue=="variable"&&(_.marked="property"),Ue=="spread"?L(pn):Ue=="}"?S():Ue=="["?L(q,H("]"),H(":"),ni):L(H(":"),pn,Pi))}function Zn(){return S(pn,Pi)}function Pi(Ue,ut){if(ut=="=")return L(re)}function rr(Ue){if(Ue==",")return L(on)}function Hr(Ue,ut){if(Ue=="keyword b"&&ut=="else")return L(j("form","else"),$,W)}function Bo(Ue,ut){if(ut=="await")return L(Bo);if(Ue=="(")return L(j(")"),lo,W)}function lo(Ue){return Ue=="var"?L(on,Fr):Ue=="variable"?L(Fr):S(Fr)}function Fr(Ue,ut){return Ue==")"?L():Ue==";"?L(Fr):ut=="in"||ut=="of"?(_.marked="keyword",L(q,Fr)):S(q,Fr)}function is(Ue,ut){if(ut=="*")return _.marked="keyword",L(is);if(Ue=="variable")return T(ut),L(is);if(Ue=="(")return L(R,j(")"),me(gi,")"),W,ot,$,F);if(o&&ut=="<")return L(j(">"),me(Pt,">"),W,is)}function yi(Ue,ut){if(ut=="*")return _.marked="keyword",L(yi);if(Ue=="variable")return T(ut),L(yi);if(Ue=="(")return L(R,j(")"),me(gi,")"),W,ot,F);if(o&&ut=="<")return L(j(">"),me(Pt,">"),W,yi)}function Gt(Ue,ut){if(Ue=="keyword"||Ue=="variable")return _.marked="type",L(Gt);if(ut=="<")return L(j(">"),me(Pt,">"),W)}function gi(Ue,ut){return ut=="@"&&L(q,gi),Ue=="spread"?L(gi):o&&P(ut)?(_.marked="keyword",L(gi)):o&&Ue=="this"?L(De,Pi):S(pn,De,Pi)}function ri(Ue,ut){return Ue=="variable"?tr(Ue,ut):ht(Ue,ut)}function tr(Ue,ut){if(Ue=="variable")return T(ut),L(ht)}function ht(Ue,ut){if(ut=="<")return L(j(">"),me(Pt,">"),W,ht);if(ut=="extends"||ut=="implements"||o&&Ue==",")return ut=="implements"&&(_.marked="keyword"),L(o?et:q,ht);if(Ue=="{")return L(j("}"),At,W)}function At(Ue,ut){if(Ue=="async"||Ue=="variable"&&(ut=="static"||ut=="get"||ut=="set"||o&&P(ut))&&_.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return _.marked="keyword",L(At);if(Ue=="variable"||_.style=="keyword")return _.marked="property",L(Mt,At);if(Ue=="number"||Ue=="string")return L(Mt,At);if(Ue=="[")return L(q,De,H("]"),Mt,At);if(ut=="*")return _.marked="keyword",L(At);if(o&&Ue=="(")return S(yi,At);if(Ue==";"||Ue==",")return L(At);if(Ue=="}")return L();if(ut=="@")return L(q,At)}function Mt(Ue,ut){if(ut=="!"||ut=="?")return L(Mt);if(Ue==":")return L(et,Pi);if(ut=="=")return L(re);var Nt=_.state.lexical.prev,wn=Nt&&Nt.info=="interface";return S(wn?yi:is)}function Kt(Ue,ut){return ut=="*"?(_.marked="keyword",L(Ne,H(";"))):ut=="default"?(_.marked="keyword",L(q,H(";"))):Ue=="{"?L(me(qn,"}"),Ne,H(";")):S($)}function qn(Ue,ut){if(ut=="as")return _.marked="keyword",L(H("variable"));if(Ue=="variable")return S(re,qn)}function Zt(Ue){return Ue=="string"?L():Ue=="("?S(q):Ue=="."?S(le):S(so,Un,Ne)}function so(Ue,ut){return Ue=="{"?_e(so,"}"):(Ue=="variable"&&T(ut),ut=="*"&&(_.marked="keyword"),L(dt))}function Un(Ue){if(Ue==",")return L(so,Un)}function dt(Ue,ut){if(ut=="as")return _.marked="keyword",L(so)}function Ne(Ue,ut){if(ut=="from")return _.marked="keyword",L(q)}function nt(Ue){return Ue=="]"?L():S(me(re,"]"))}function bn(){return S(j("form"),pn,H("{"),j("}"),me(hn,"}"),W,W)}function hn(){return S(pn,Pi)}function En(Ue,ut){return Ue.lastType=="operator"||Ue.lastType==","||l.test(ut.charAt(0))||/[,.]/.test(ut.charAt(0))}function wi(Ue,ut,Nt){return ut.tokenize==v&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(ut.lastType)||ut.lastType=="quasi"&&/\{\s*$/.test(Ue.string.slice(0,Ue.pos-Nt))}return{name:e.name,startState:function(Ue){var ut={tokenize:v,lastType:"sof",cc:[],lexical:new O(-Ue,0,"block",!1),localVars:e.localVars,context:e.localVars&&new Q(null,null,!1),indented:0};return e.globalVars&&typeof e.globalVars=="object"&&(ut.globalVars=e.globalVars),ut},token:function(Ue,ut){if(Ue.sol()&&(ut.lexical.hasOwnProperty("align")||(ut.lexical.align=!1),ut.indented=Ue.indentation(),b(Ue,ut)),ut.tokenize!=k&&Ue.eatSpace())return null;var Nt=ut.tokenize(Ue,ut);return h=="comment"?Nt:(ut.lastType=h=="operator"&&(g=="++"||g=="--")?"incdec":h,C(ut,Nt,h,g,Ue))},indent:function(Ue,ut,Nt){if(Ue.tokenize==k||Ue.tokenize==A)return null;if(Ue.tokenize!=v)return 0;var wn=ut&&ut.charAt(0),Cn=Ue.lexical,wr;if(!/^\s*else\b/.test(ut))for(var Kr=Ue.cc.length-1;Kr>=0;--Kr){var Wo=Ue.cc[Kr];if(Wo==W)Cn=Cn.prev;else if(Wo!=Hr&&Wo!=F)break}for(;(Cn.type=="stat"||Cn.type=="form")&&(wn=="}"||(wr=Ue.cc[Ue.cc.length-1])&&(wr==le||wr==ue)&&!/^[,\.=+\-*:?[\(]/.test(ut));)Cn=Cn.prev;t&&Cn.type==")"&&Cn.prev.type=="stat"&&(Cn=Cn.prev);var pl=Cn.type,pu=wn==pl;return pl=="vardef"?Cn.indented+(Ue.lastType=="operator"||Ue.lastType==","?Cn.info.length+1:0):pl=="form"&&wn=="{"?Cn.indented:pl=="form"?Cn.indented+Nt.unit:pl=="stat"?Cn.indented+(En(Ue,ut)?t||Nt.unit:0):Cn.info=="switch"&&!pu&&e.doubleIndentSwitch!=!1?Cn.indented+(/^(?:case|default)\b/.test(ut)?Nt.unit:2*Nt.unit):Cn.align?Cn.column+(pu?0:1):Cn.indented+(pu?0:Nt.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:r?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}const p6=Zpe({name:"javascript"}),zNr=Zpe({name:"json",json:!0}),HNr=Zpe({name:"json",jsonld:!0}),$Nr=Zpe({name:"typescript",typescript:!0}),XNr=Object.freeze(Object.defineProperty({__proto__:null,javascript:p6,json:zNr,jsonld:HNr,typescript:$Nr},Symbol.toStringTag,{value:"Module"}));function iE(e,t,n){return typeof n>"u"&&(n=""),typeof t>"u"&&(t="\\b"),new RegExp("^"+n+"(("+e.join(")|(")+"))"+t)}var GNr="\\\\[0-7]{1,3}",YNr="\\\\x[A-Fa-f0-9]{1,2}",ZNr=`\\\\[abefnrtv0%?'"\\\\]`,qNr="([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])",u5n=["[<>]:","[<>=]=","<<=?",">>>?=?","=>","--?>","<--[->]?","\\/\\/","\\.{2,3}","[\\.\\\\%*+\\-<>!\\/^|&]=?","\\?","\\$","~",":"],KNr=iE(["[<>]:","[<>=]=","[!=]==","<<=?",">>>?=?","=>?","--?>","<--[->]?","\\/\\/","[\\\\%*+\\-<>!\\/^|&\\u00F7\\u22BB]=?","\\?","\\$","~",":","\\u00D7","\\u2208","\\u2209","\\u220B","\\u220C","\\u2218","\\u221A","\\u221B","\\u2229","\\u222A","\\u2260","\\u2264","\\u2265","\\u2286","\\u2288","\\u228A","\\u22C5","\\b(in|isa)\\b(?!.?\\()"],""),JNr=/^[;,()[\]{}]/,eUr=/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/,tUr=iE([GNr,YNr,ZNr,qNr],"'"),nUr=["begin","function","type","struct","immutable","let","macro","for","while","quote","if","else","elseif","try","finally","catch","do"],iUr=["end","else","elseif","catch","finally"],h5n=["if","else","elseif","while","for","begin","let","end","do","try","catch","finally","return","break","continue","global","local","const","export","import","importall","using","function","where","macro","module","baremodule","struct","type","mutable","immutable","quote","typealias","abstract","primitive","bitstype"],f5n=["true","false","nothing","NaN","Inf"],rUr=iE(nUr),oUr=iE(iUr),sUr=iE(h5n),aUr=iE(f5n),lUr=/^@[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,cUr=/^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,dUr=/^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/,uUr=iE(u5n,"","@"),hUr=iE(u5n,"",":");function A4t(e){return e.nestedArrays>0}function fUr(e){return e.nestedGenerators>0}function p4t(e,t){return typeof t>"u"&&(t=0),e.scopes.length<=t?null:e.scopes[e.scopes.length-(t+1)]}function VW(e,t){if(e.match("#=",!1))return t.tokenize=mUr,t.tokenize(e,t);var n=t.leavingExpr;if(e.sol()&&(n=!1),t.leavingExpr=!1,n&&e.match(/^'+/))return"operator";if(e.match(/\.{4,}/))return"error";if(e.match(/\.{1,3}/))return"operator";if(e.eatSpace())return null;var r=e.peek();if(r==="#")return e.skipToEnd(),"comment";if(r==="["&&(t.scopes.push("["),t.nestedArrays++),r==="("&&(t.scopes.push("("),t.nestedGenerators++),A4t(t)&&r==="]"){for(;t.scopes.length&&p4t(t)!=="[";)t.scopes.pop();t.scopes.pop(),t.nestedArrays--,t.leavingExpr=!0}if(fUr(t)&&r===")"){for(;t.scopes.length&&p4t(t)!=="(";)t.scopes.pop();t.scopes.pop(),t.nestedGenerators--,t.leavingExpr=!0}if(A4t(t)){if(t.lastToken=="end"&&e.match(":"))return"operator";if(e.match("end"))return"number"}var o;if((o=e.match(rUr,!1))&&t.scopes.push(o[0]),e.match(oUr,!1)&&t.scopes.pop(),e.match(/^::(?![:\$])/))return t.tokenize=gUr,t.tokenize(e,t);if(!n&&(e.match(cUr)||e.match(hUr)))return"builtin";if(e.match(KNr))return"operator";if(e.match(/^\.?\d/,!1)){var s=RegExp(/^im\b/),a=!1;if(e.match(/^0x\.[0-9a-f_]+p[\+\-]?[_\d]+/i)&&(a=!0),e.match(/^0x[0-9a-f_]+/i)&&(a=!0),e.match(/^0b[01_]+/i)&&(a=!0),e.match(/^0o[0-7_]+/i)&&(a=!0),e.match(/^(?:(?:\d[_\d]*)?\.(?!\.)(?:\d[_\d]*)?|\d[_\d]*\.(?!\.)(?:\d[_\d]*))?([Eef][\+\-]?[_\d]+)?/i)&&(a=!0),e.match(/^\d[_\d]*(e[\+\-]?\d+)?/i)&&(a=!0),a)return e.match(s),t.leavingExpr=!0,"number"}if(e.match("'"))return t.tokenize=kUr,t.tokenize(e,t);if(e.match(dUr))return t.tokenize=vUr(e.current()),t.tokenize(e,t);if(e.match(lUr)||e.match(uUr))return"meta";if(e.match(JNr))return null;if(e.match(sUr))return"keyword";if(e.match(aUr))return"builtin";var l=t.isDefinition||t.lastToken=="function"||t.lastToken=="macro"||t.lastToken=="type"||t.lastToken=="struct"||t.lastToken=="immutable";return e.match(eUr)?l?e.peek()==="."?(t.isDefinition=!0,"variable"):(t.isDefinition=!1,"def"):(t.leavingExpr=!0,"variable"):(e.next(),"error")}function gUr(e,t){return e.match(/.*?(?=[,;{}()=\s]|$)/),e.match("{")?t.nestedParameters++:e.match("}")&&t.nestedParameters>0&&t.nestedParameters--,t.nestedParameters>0?e.match(/.*?(?={|})/)||e.next():t.nestedParameters==0&&(t.tokenize=VW),"builtin"}function mUr(e,t){return e.match("#=")&&t.nestedComments++,e.match(/.*?(?=(#=|=#))/)||e.skipToEnd(),e.match("=#")&&(t.nestedComments--,t.nestedComments==0&&(t.tokenize=VW)),"comment"}function kUr(e,t){var n=!1,r;if(e.match(tUr))n=!0;else if(r=e.match(/\\u([a-f0-9]{1,4})(?=')/i)){var o=parseInt(r[1],16);(o<=55295||o>=57344)&&(n=!0,e.next())}else if(r=e.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)){var o=parseInt(r[1],16);o<=1114111&&(n=!0,e.next())}return n?(t.leavingExpr=!0,t.tokenize=VW,"string"):(e.match(/^[^']+(?=')/)||e.skipToEnd(),e.match("'")&&(t.tokenize=VW),"error")}function vUr(e){e.substr(-3)==='"""'?e='"""':e.substr(-1)==='"'&&(e='"');function t(n,r){if(n.eat("\\"))n.next();else{if(n.match(e))return r.tokenize=VW,r.leavingExpr=!0,"string";n.eat(/[`"]/)}return n.eatWhile(/[^\\`"]/),"string"}return t}const AUr={name:"julia",startState:function(){return{tokenize:VW,scopes:[],lastToken:null,leavingExpr:!1,isDefinition:!1,nestedArrays:0,nestedComments:0,nestedGenerators:0,nestedParameters:0,firstParenPos:-1}},token:function(e,t){var n=t.tokenize(e,t),r=e.current();return r&&n&&(t.lastToken=r),n},indent:function(e,t,n){var r=0;return(t==="]"||t===")"||/^end\b/.test(t)||/^else/.test(t)||/^catch\b/.test(t)||/^elseif\b/.test(t)||/^finally/.test(t))&&(r=-1),(e.scopes.length+r)*n.unit},languageData:{indentOnInput:/^\s*(end|else|catch|finally)\b$/,commentTokens:{line:"#",block:{open:"#=",close:"=#"}},closeBrackets:{brackets:["(","[","{",'"']},autocomplete:h5n.concat(f5n)}},pUr=Object.freeze(Object.defineProperty({__proto__:null,julia:AUr},Symbol.toStringTag,{value:"Module"}));var bUr=function(e,t){var n=t.next||"start";{t.next=t.next;var r=cN[n];if(r.splice){for(var o=0;o|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+Iue+")?))\\s*$"),gP="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",mP={token:"string",regex:".+"},cN={start:[{token:"docComment",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+gP},{token:"atom",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+gP},{token:"invalid",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+gP},{token:"className.standard",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+gP},{token:"variableName.function.standard",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+gP},{token:"variableName.standard",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+gP},{token:"variableName",regex:Iue+"\\s*:(?![:=])"},{token:"variableName",regex:Iue},{token:"operatorKeyword",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"operatorKeyword",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"docString",regex:"'''",next:"qdoc"},{token:"docString",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"regexp",regex:"//",next:"heregex"},{token:"regexp",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"number",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"paren",regex:"[({[]"},{token:"paren",regex:"[)}\\]]",next:"key"},{token:"operatorKeyword",regex:"\\S+"},{token:"content",regex:"\\s+"}],heregex:[{token:"regexp",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"regexp",regex:"\\s*#{"},{token:"comment",regex:"\\s+(?:#.*)?"},{token:"regexp",regex:"\\S+"}],key:[{token:"operatorKeyword",regex:"[.?@!]+"},{token:"variableName",regex:Iue,next:"start"},{token:"content",regex:"",next:"start"}],comment:[{token:"docComment",regex:".*?\\*/",next:"start"},{token:"docComment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},mP],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},mP],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},mP],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},mP],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},mP],words:[{token:"string",regex:".*?\\]>",next:"key"},mP]};for(var b8e in cN){var Vae=cN[b8e];if(Vae.splice)for(var zae=0,OUr=Vae.length;zae!?^\/\|]/;function S4t(e,t,n){return t.tokenize=n,n(e,t)}function qKe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if(/[\[\]{}\(\),\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1),null;if(/\d/.test(r))return e.eatWhile(/[\w\.]/),"number";if(r=="\\")return e.eat("\\"),e.eat(/./),"number";if(r=="/"&&e.eat("*"))return S4t(e,t,RUr);if(r==";"&&e.match(/ *\( *\(/))return S4t(e,t,IUr);if(r==";"&&!t.inParams)return e.skipToEnd(),"comment";if(r=='"')return e.eat(/"/),"keyword";if(r=="$")return e.eatWhile(/[$_a-z0-9A-Z\.:]/),O4t&&O4t.propertyIsEnumerable(e.current().toLowerCase())?"keyword":(t.beforeParams=!0,"builtin");if(r=="%")return e.eatWhile(/[^,\s()]/),t.beforeParams=!0,"string";if(_4t.test(r))return e.eatWhile(_4t),"operator";e.eatWhile(/[\w\$_{}]/);var o=e.current().toLowerCase();return y4t&&y4t.propertyIsEnumerable(o)?"keyword":C4t&&C4t.propertyIsEnumerable(o)?(t.beforeParams=!0,"keyword"):null}function RUr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=qKe;break}n=r=="*"}return"comment"}function IUr(e,t){for(var n=0,r;r=e.next();){if(r==";"&&n==2){t.tokenize=qKe;break}r==")"?n++:r!=" "&&(n=0)}return"meta"}const MUr={name:"mirc",startState:function(){return{tokenize:qKe,beforeParams:!1,inParams:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}},PUr=Object.freeze(Object.defineProperty({__proto__:null,mirc:MUr},Symbol.toStringTag,{value:"Module"}));var L4t="[a-zA-Z\\$][a-zA-Z0-9\\$]*",FUr="(?:\\d+)",g5n="(?:\\.\\d+|\\d+\\.\\d*|\\d+)",NUr="(?:\\.\\w+|\\w+\\.\\w*|\\w+)",m5n="(?:`(?:`?"+g5n+")?)",UUr=new RegExp("(?:"+FUr+"(?:\\^\\^"+NUr+m5n+"?(?:\\*\\^[+-]?\\d+)?))"),jUr=new RegExp("(?:"+g5n+m5n+"?(?:\\*\\^[+-]?\\d+)?)"),WUr=new RegExp("(?:`?)(?:"+L4t+")(?:`(?:"+L4t+"))*(?:`?)");function KKe(e,t){var n;return n=e.next(),n==='"'?(t.tokenize=VUr,t.tokenize(e,t)):n==="("&&e.eat("*")?(t.commentLevel++,t.tokenize=zUr,t.tokenize(e,t)):(e.backUp(1),e.match(UUr,!0,!1)||e.match(jUr,!0,!1)?"number":e.match(/(?:In|Out)\[[0-9]*\]/,!0,!1)?"atom":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,!0,!1)?"meta":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,!0,!1)?"string.special":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/,!0,!1)||e.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)?"variableName.special":e.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/,!0,!1)?"character":e.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":e.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/,!0,!1)?"variableName.constant":e.match(WUr,!0,!1)?"keyword":e.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,!0,!1)?"operator":(e.next(),"error"))}function VUr(e,t){for(var n,r=!1,o=!1;(n=e.next())!=null;){if(n==='"'&&!o){r=!0;break}o=!o&&n==="\\"}return r&&!o&&(t.tokenize=KKe),"string"}function zUr(e,t){for(var n,r;t.commentLevel>0&&(r=e.next())!=null;)n==="("&&r==="*"&&t.commentLevel++,n==="*"&&r===")"&&t.commentLevel--,n=r;return t.commentLevel<=0&&(t.tokenize=KKe),"comment"}const HUr={name:"mathematica",startState:function(){return{tokenize:KKe,commentLevel:0}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{block:{open:"(*",close:"*)"}}}},$Ur=Object.freeze(Object.defineProperty({__proto__:null,mathematica:HUr},Symbol.toStringTag,{value:"Module"}));function JKe(e){for(var t={},n=e.split(" "),r=0;r+\-\/^\[\]]/,YUr=/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/,CU=/[0-9]/,p5n=/[_a-zA-Z]/;function ZUr(e,t){return e.skipToEnd(),t.tokenize=null,"comment"}function qUr(e,t){for(var n=!1,r;r=e.next();){if(n&&r=="/"){t.tokenize=null;break}n=r=="*"}return"comment"}function KUr(e,t){for(var n=!1,r;(r=e.next())!=null;){if(r=='"'&&!n){t.tokenize=null,t.sol=!1;break}n=!n&&r=="\\"}return"string"}function JUr(e,t){for(e.eatWhile(CU);e.eat(CU)||e.eat(p5n););var n=e.current();return t.sol&&(n=="package"||n=="model"||n=="when"||n=="connector")?t.level++:t.sol&&n=="end"&&t.level>0&&t.level--,t.tokenize=null,t.sol=!1,k5n.propertyIsEnumerable(n)?"keyword":v5n.propertyIsEnumerable(n)?"builtin":A5n.propertyIsEnumerable(n)?"atom":"variable"}function ejr(e,t){for(;e.eat(/[^']/););return t.tokenize=null,t.sol=!1,e.eat("'")?"variable":"error"}function tjr(e,t){return e.eatWhile(CU),e.eat(".")&&e.eatWhile(CU),(e.eat("e")||e.eat("E"))&&(e.eat("-")||e.eat("+"),e.eatWhile(CU)),t.tokenize=null,t.sol=!1,"number"}const njr={name:"modelica",startState:function(){return{tokenize:null,level:0,sol:!0}},token:function(e,t){if(t.tokenize!=null)return t.tokenize(e,t);if(e.sol()&&(t.sol=!0),e.eatSpace())return t.tokenize=null,null;var n=e.next();if(n=="/"&&e.eat("/"))t.tokenize=ZUr;else if(n=="/"&&e.eat("*"))t.tokenize=qUr;else{if(YUr.test(n+e.peek()))return e.next(),t.tokenize=null,"operator";if(GUr.test(n))return t.tokenize=null,"operator";if(p5n.test(n))t.tokenize=JUr;else if(n=="'"&&e.peek()&&e.peek()!="'")t.tokenize=ejr;else if(n=='"')t.tokenize=KUr;else if(CU.test(n))t.tokenize=tjr;else return t.tokenize=null,"error"}return t.tokenize(e,t)},indent:function(e,t,n){if(e.tokenize!=null)return null;var r=e.level;return/(algorithm)/.test(t)&&r--,/(equation)/.test(t)&&r--,/(initial algorithm)/.test(t)&&r--,/(initial equation)/.test(t)&&r--,/(end)/.test(t)&&r--,r>0?n.unit*r:0},languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:XUr}},ijr=Object.freeze(Object.defineProperty({__proto__:null,modelica:njr},Symbol.toStringTag,{value:"Module"}));function b5n(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var rjr=new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"),ojr=new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"),sjr=new RegExp("^[\\.,:]"),ajr=new RegExp("[()]"),ljr=new RegExp("^[%A-Za-z][A-Za-z0-9]*"),cjr=["break","close","do","else","for","goto","halt","hang","if","job","kill","lock","merge","new","open","quit","read","set","tcommit","trollback","tstart","use","view","write","xecute","b","c","d","e","f","g","h","i","j","k","l","m","n","o","q","r","s","tc","tro","ts","u","v","w","x"],djr=["\\$ascii","\\$char","\\$data","\\$ecode","\\$estack","\\$etrap","\\$extract","\\$find","\\$fnumber","\\$get","\\$horolog","\\$io","\\$increment","\\$job","\\$justify","\\$length","\\$name","\\$next","\\$order","\\$piece","\\$qlength","\\$qsubscript","\\$query","\\$quit","\\$random","\\$reverse","\\$select","\\$stack","\\$test","\\$text","\\$translate","\\$view","\\$x","\\$y","\\$a","\\$c","\\$d","\\$e","\\$ec","\\$es","\\$et","\\$f","\\$fn","\\$g","\\$h","\\$i","\\$j","\\$l","\\$n","\\$na","\\$o","\\$p","\\$q","\\$ql","\\$qs","\\$r","\\$re","\\$s","\\$st","\\$t","\\$tr","\\$v","\\$z"],ujr=b5n(djr),hjr=b5n(cjr);function fjr(e,t){e.sol()&&(t.label=!0,t.commandMode=0);var n=e.peek();return n==" "||n==" "?(t.label=!1,t.commandMode==0?t.commandMode=1:(t.commandMode<0||t.commandMode==2)&&(t.commandMode=0)):n!="."&&t.commandMode>0&&(n==":"?t.commandMode=-1:t.commandMode=2),(n==="("||n===" ")&&(t.label=!1),n===";"?(e.skipToEnd(),"comment"):e.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)?"number":n=='"'?e.skipTo('"')?(e.next(),"string"):(e.skipToEnd(),"error"):e.match(ojr)||e.match(rjr)?"operator":e.match(sjr)?null:ajr.test(n)?(e.next(),"bracket"):t.commandMode>0&&e.match(hjr)?"controlKeyword":e.match(ujr)?"builtin":e.match(ljr)?"variable":n==="$"||n==="^"?(e.next(),"builtin"):n==="@"?(e.next(),"string.special"):/[\w%]/.test(n)?(e.eatWhile(/[\w%]/),"variable"):(e.next(),"error")}const gjr={name:"mumps",startState:function(){return{label:!1,commandMode:0}},token:function(e,t){var n=fjr(e,t);return t.label?"tag":n}},mjr=Object.freeze(Object.defineProperty({__proto__:null,mumps:gjr},Symbol.toStringTag,{value:"Module"}));var w5n=["From","Sender","Reply-To","To","Cc","Bcc","Message-ID","In-Reply-To","References","Resent-From","Resent-Sender","Resent-To","Resent-Cc","Resent-Bcc","Resent-Message-ID","Return-Path","Received"],O5n=["Date","Subject","Comments","Keywords","Resent-Date"],kjr=/^[ \t]/,vjr=/^From /,Ajr=new RegExp("^("+w5n.join("|")+"): "),pjr=new RegExp("^("+O5n.join("|")+"): "),bjr=/^[^:]+:/,wjr=/^[^ ]+@[^ ]+/,Ojr=/^.*?(?=[^ ]+?@[^ ]+)/,yjr=/^<.*?>/,Cjr=/^.*?(?=<.*>)/;function _jr(e){return e==="Subject"?"header":"string"}function Sjr(e,t){if(e.sol()){if(t.inSeparator=!1,t.inHeader&&e.match(kjr))return null;if(t.inHeader=!1,t.header=null,e.match(vjr))return t.inHeaders=!0,t.inSeparator=!0,"atom";var n,r=!1;return(n=e.match(pjr))||(r=!0)&&(n=e.match(Ajr))?(t.inHeaders=!0,t.inHeader=!0,t.emailPermitted=r,t.header=n[1],"atom"):t.inHeaders&&(n=e.match(bjr))?(t.inHeader=!0,t.emailPermitted=!0,t.header=n[1],"atom"):(t.inHeaders=!1,e.skipToEnd(),null)}if(t.inSeparator)return e.match(wjr)?"link":(e.match(Ojr)||e.skipToEnd(),"atom");if(t.inHeader){var o=_jr(t.header);if(t.emailPermitted){if(e.match(yjr))return o+" link";if(e.match(Cjr))return o}return e.skipToEnd(),o}return e.skipToEnd(),null}const Ljr={name:"mbox",startState:function(){return{inSeparator:!1,inHeader:!1,emailPermitted:!1,header:null,inHeaders:!1}},token:Sjr,blankLine:function(e){e.inHeaders=e.inSeparator=e.inHeader=!1},languageData:{autocomplete:w5n.concat(O5n)}},xjr=Object.freeze(Object.defineProperty({__proto__:null,mbox:Ljr},Symbol.toStringTag,{value:"Module"}));function eJe(e){for(var t={},n=e.split(" "),r=0;r*\/]/.test(r)?f4(null,"select-op"):/[;{}:\[\]]/.test(r)?f4(null,r):(e.eatWhile(/[\w\\\-]/),f4("variable","variable"))}function x4t(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r=="/"){t.tokenize=Kpe;break}n=r=="*"}return f4("comment","comment")}function E4t(e,t){for(var n=0,r;(r=e.next())!=null;){if(n>=2&&r==">"){t.tokenize=Kpe;break}n=r=="-"?n+1:0}return f4("comment","comment")}function Djr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null&&!(o==e&&!r);)r=!r&&o=="\\";return r||(n.tokenize=Kpe),f4("string","string")}}const Bjr={name:"nginx",startState:function(){return{tokenize:Kpe,baseIndent:0,stack:[]}},token:function(e,t){if(e.eatSpace())return null;Fx=null;var n=t.tokenize(e,t),r=t.stack[t.stack.length-1];return Fx=="hash"&&r=="rule"?n="atom":n=="variable"&&(r=="rule"?n="number":(!r||r=="@media{")&&(n="tag")),r=="rule"&&/^[\{\};]$/.test(Fx)&&t.stack.pop(),Fx=="{"?r=="@media"?t.stack[t.stack.length-1]="@media{":t.stack.push("{"):Fx=="}"?t.stack.pop():Fx=="@media"?t.stack.push("@media"):r=="{"&&Fx!="comment"&&t.stack.push("rule"),n},indent:function(e,t,n){var r=e.stack.length;return/^\}/.test(t)&&(r-=e.stack[e.stack.length-1]=="rule"?2:1),e.baseIndent+r*n.unit},languageData:{indentOnInput:/^\s*\}$/}},Rjr=Object.freeze(Object.defineProperty({__proto__:null,nginx:Bjr},Symbol.toStringTag,{value:"Module"})),Ijr=jKe({start:[{regex:/(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/,token:"number"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/`(?:[^\\`]|\\.)*`?/,token:"string"},{regex:/^\s*(?:\!(addincludedir|addplugindir|appendfile|assert|cd|define|delfile|echo|error|execute|finalize|getdllversion|gettlbversion|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|uninstfinalize|verbose|warning))\b/i,token:"keyword"},{regex:/^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:\!(else|endif|macroend))\b/i,token:"keyword",dedent:!0},{regex:/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Target|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/i,token:"keyword"},{regex:/^\s*(?:Function|PageEx|Section(?:Group)?)\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/i,token:"keyword",dedent:!0},{regex:/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/i,token:"atom"},{regex:/\b(?:admin|all|amd64-unicode|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|x-86-(ansi|unicode)|zlib)\b/i,token:"builtin"},{regex:/\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:2|3|4|5|Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/i,token:"variable-2",indent:!0},{regex:/\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/i,token:"keyword",dedent:!0},{regex:/\$\{(?:RunningX64)\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:Disable|Enable)X64FSRedirection\}/i,token:"keyword",dedent:!0},{regex:/(#|;).*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/\$\w[\w\.]*/,token:"variable"},{regex:/\${[\!\w\.:-]+}/,token:"variableName.constant"},{regex:/\$\([\!\w\.:-]+\)/,token:"atom"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],languageData:{name:"nsis",indentOnInput:/^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/i,commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}}),Mjr=Object.freeze(Object.defineProperty({__proto__:null,nsis:Ijr},Symbol.toStringTag,{value:"Module"}));var Ps={PRE_SUBJECT:0,WRITING_SUB_URI:1,WRITING_BNODE_URI:2,PRE_PRED:3,WRITING_PRED_URI:4,PRE_OBJ:5,WRITING_OBJ_URI:6,WRITING_OBJ_BNODE:7,WRITING_OBJ_LITERAL:8,WRITING_LIT_LANG:9,WRITING_LIT_TYPE:10,POST_OBJ:11,ERROR:12};function $2(e,t){var n=e.location,r;n==Ps.PRE_SUBJECT&&t=="<"?r=Ps.WRITING_SUB_URI:n==Ps.PRE_SUBJECT&&t=="_"?r=Ps.WRITING_BNODE_URI:n==Ps.PRE_PRED&&t=="<"?r=Ps.WRITING_PRED_URI:n==Ps.PRE_OBJ&&t=="<"?r=Ps.WRITING_OBJ_URI:n==Ps.PRE_OBJ&&t=="_"?r=Ps.WRITING_OBJ_BNODE:n==Ps.PRE_OBJ&&t=='"'?r=Ps.WRITING_OBJ_LITERAL:n==Ps.WRITING_SUB_URI&&t==">"||n==Ps.WRITING_BNODE_URI&&t==" "?r=Ps.PRE_PRED:n==Ps.WRITING_PRED_URI&&t==">"?r=Ps.PRE_OBJ:n==Ps.WRITING_OBJ_URI&&t==">"||n==Ps.WRITING_OBJ_BNODE&&t==" "||n==Ps.WRITING_OBJ_LITERAL&&t=='"'||n==Ps.WRITING_LIT_LANG&&t==" "||n==Ps.WRITING_LIT_TYPE&&t==">"?r=Ps.POST_OBJ:n==Ps.WRITING_OBJ_LITERAL&&t=="@"?r=Ps.WRITING_LIT_LANG:n==Ps.WRITING_OBJ_LITERAL&&t=="^"?r=Ps.WRITING_LIT_TYPE:t==" "&&(n==Ps.PRE_SUBJECT||n==Ps.PRE_PRED||n==Ps.PRE_OBJ||n==Ps.POST_OBJ)?r=n:n==Ps.POST_OBJ&&t=="."?r=Ps.PRE_SUBJECT:r=Ps.ERROR,e.location=r}const Pjr={name:"ntriples",startState:function(){return{location:Ps.PRE_SUBJECT,uris:[],anchors:[],bnodes:[],langs:[],types:[]}},token:function(e,t){var n=e.next();if(n=="<"){$2(t,n);var r="";return e.eatWhile(function(d){return d!="#"&&d!=">"?(r+=d,!0):!1}),t.uris.push(r),e.match("#",!1)||(e.next(),$2(t,">")),"variable"}if(n=="#"){var o="";return e.eatWhile(function(d){return d!=">"&&d!=" "?(o+=d,!0):!1}),t.anchors.push(o),"url"}if(n==">")return $2(t,">"),"variable";if(n=="_"){$2(t,n);var s="";return e.eatWhile(function(d){return d!=" "?(s+=d,!0):!1}),t.bnodes.push(s),e.next(),$2(t," "),"builtin"}if(n=='"')return $2(t,n),e.eatWhile(function(d){return d!='"'}),e.next(),e.peek()!="@"&&e.peek()!="^"&&$2(t,'"'),"string";if(n=="@"){$2(t,"@");var a="";return e.eatWhile(function(d){return d!=" "?(a+=d,!0):!1}),t.langs.push(a),e.next(),$2(t," "),"string.special"}if(n=="^"){e.next(),$2(t,"^");var l="";return e.eatWhile(function(d){return d!=">"?(l+=d,!0):!1}),t.types.push(l),e.next(),$2(t,">"),"variable"}n==" "&&$2(t,n),n=="."&&$2(t,n)}},Fjr=Object.freeze(Object.defineProperty({__proto__:null,ntriples:Pjr},Symbol.toStringTag,{value:"Module"}));function tJe(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var Njr=new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"),Ujr=new RegExp("^[\\(\\[\\{\\},:=;\\.]"),jjr=new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"),Wjr=new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"),Vjr=new RegExp("^((>>=)|(<<=))"),zjr=new RegExp("^[\\]\\)]"),Hjr=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*"),$jr=tJe(["error","eval","function","abs","acos","atan","asin","cos","cosh","exp","log","prod","sum","log10","max","min","sign","sin","sinh","sqrt","tan","reshape","break","zeros","default","margin","round","ones","rand","syn","ceil","floor","size","clear","zeros","eye","mean","std","cov","det","eig","inv","norm","rank","trace","expm","logm","sqrtm","linspace","plot","title","xlabel","ylabel","legend","text","grid","meshgrid","mesh","num2str","fft","ifft","arrayfun","cellfun","input","fliplr","flipud","ismember"]),Xjr=tJe(["return","case","switch","else","elseif","end","endif","endfunction","if","otherwise","do","for","while","try","catch","classdef","properties","events","methods","global","persistent","endfor","endwhile","printf","sprintf","disp","until","continue","pkg"]);function y5n(e,t){return!e.sol()&&e.peek()==="'"?(e.next(),t.tokenize=_U,"operator"):(t.tokenize=_U,_U(e,t))}function Gjr(e,t){return e.match(/^.*%}/)?(t.tokenize=_U,"comment"):(e.skipToEnd(),"comment")}function _U(e,t){if(e.eatSpace())return null;if(e.match("%{"))return t.tokenize=Gjr,e.skipToEnd(),"comment";if(e.match(/^[%#]/))return e.skipToEnd(),"comment";if(e.match(/^[0-9\.+-]/,!1)){if(e.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/))return e.tokenize=_U,"number";if(e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/))return"number"}if(e.match(tJe(["nan","NaN","inf","Inf"])))return"number";var n=e.match(/^"(?:[^"]|"")*("|$)/)||e.match(/^'(?:[^']|'')*('|$)/);return n?n[1]?"string":"error":e.match(Xjr)?"keyword":e.match($jr)?"builtin":e.match(Hjr)?"variable":e.match(Njr)||e.match(jjr)?"operator":e.match(Ujr)||e.match(Wjr)||e.match(Vjr)?null:e.match(zjr)?(t.tokenize=y5n,null):(e.next(),"error")}const Yjr={name:"octave",startState:function(){return{tokenize:_U}},token:function(e,t){var n=t.tokenize(e,t);return(n==="number"||n==="variable")&&(t.tokenize=y5n),n},languageData:{commentTokens:{line:"%"}}},Zjr=Object.freeze(Object.defineProperty({__proto__:null,octave:Yjr},Symbol.toStringTag,{value:"Module"}));function die(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var qjr=/[\^@!\|<>#~\.\*\-\+\\/,=]/,Kjr=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,Jjr=/(:::)|(\.\.\.)|(=<:)|(>=:)/,C5n=["in","then","else","of","elseof","elsecase","elseif","catch","finally","with","require","prepare","import","export","define","do"],_5n=["end"],eWr=die(["true","false","nil","unit"]),tWr=die(["andthen","at","attr","declare","feat","from","lex","mod","div","mode","orelse","parser","prod","prop","scanner","self","syn","token"]),nWr=die(["local","proc","fun","case","class","if","cond","or","dis","choice","not","thread","try","raise","lock","for","suchthat","meth","functor"]),S5n=die(C5n),L5n=die(_5n);function YB(e,t){if(e.eatSpace())return null;if(e.match(/[{}]/))return"bracket";if(e.match("[]"))return"keyword";if(e.match(Jjr)||e.match(Kjr))return"operator";if(e.match(eWr))return"atom";var n=e.match(nWr);if(n)return t.doInCurrentLine?t.doInCurrentLine=!1:t.currentIndent++,n[0]=="proc"||n[0]=="fun"?t.tokenize=oWr:n[0]=="class"?t.tokenize=iWr:n[0]=="meth"&&(t.tokenize=rWr),"keyword";if(e.match(S5n)||e.match(tWr))return"keyword";if(e.match(L5n))return t.currentIndent--,"keyword";var r=e.next();if(r=='"'||r=="'")return t.tokenize=sWr(r),t.tokenize(e,t);if(/[~\d]/.test(r)){if(r=="~")if(/^[0-9]/.test(e.peek())){if(e.next()=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return"number"}else return null;return r=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)?"number":null}return r=="%"?(e.skipToEnd(),"comment"):r=="/"&&e.eat("*")?(t.tokenize=T4t,T4t(e,t)):qjr.test(r)?"operator":(e.eatWhile(/\w/),"variable")}function iWr(e,t){return e.eatSpace()?null:(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),t.tokenize=YB,"type")}function rWr(e,t){return e.eatSpace()?null:(e.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),t.tokenize=YB,"def")}function oWr(e,t){return e.eatSpace()?null:!t.hasPassedFirstStage&&e.eat("{")?(t.hasPassedFirstStage=!0,"bracket"):t.hasPassedFirstStage?(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),t.hasPassedFirstStage=!1,t.tokenize=YB,"def"):(t.tokenize=YB,null)}function T4t(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=YB;break}n=r=="*"}return"comment"}function sWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=YB),"string"}}function aWr(){var e=C5n.concat(_5n);return new RegExp("[\\[\\]]|("+e.join("|")+")$")}const lWr={name:"oz",startState:function(){return{tokenize:YB,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(e,t){return e.sol()&&(t.doInCurrentLine=0),t.tokenize(e,t)},indent:function(e,t,n){var r=t.replace(/^\s+|\s+$/g,"");return r.match(L5n)||r.match(S5n)||r.match(/(\[])/)?n.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*n.unit},languageData:{indentOnInut:aWr(),commentTokens:{line:"%",block:{open:"/*",close:"*/"}}}},cWr=Object.freeze(Object.defineProperty({__proto__:null,oz:lWr},Symbol.toStringTag,{value:"Module"}));function dWr(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/;function fWr(e,t){var n=e.next();if(n=="#"&&t.startOfLine)return e.skipToEnd(),"meta";if(n=='"'||n=="'")return t.tokenize=gWr(n),t.tokenize(e,t);if(n=="("&&e.eat("*"))return t.tokenize=D4t,D4t(e,t);if(n=="{")return t.tokenize=B4t,B4t(e,t);if(/[\[\]\(\),;\:\.]/.test(n))return null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"&&e.eat("/"))return e.skipToEnd(),"comment";if(Q4t.test(n))return e.eatWhile(Q4t),"operator";e.eatWhile(/[\w\$_]/);var r=e.current().toLowerCase();return uWr.propertyIsEnumerable(r)?"keyword":hWr.propertyIsEnumerable(r)?"atom":"variable"}function gWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=null),"string"}}function D4t(e,t){for(var n=!1,r;r=e.next();){if(r==")"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function B4t(e,t){for(var n;n=e.next();)if(n=="}"){t.tokenize=null;break}return"comment"}const mWr={name:"pascal",startState:function(){return{tokenize:null}},token:function(e,t){if(e.eatSpace())return null;var n=(t.tokenize||fWr)(e,t);return n=="comment"||n=="meta",n},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{block:{open:"(*",close:"*)"}}}},kWr=Object.freeze(Object.defineProperty({__proto__:null,pascal:mWr},Symbol.toStringTag,{value:"Module"}));function $f(e,t){return e.string.charAt(e.pos+(t||0))}function R4t(e,t){if(t){var n=e.pos-t;return e.string.substr(n>=0?n:0,t)}else return e.string.substr(0,e.pos-1)}function O8e(e,t){var n=e.string.length,r=n-e.pos+1;return e.string.substr(e.pos,t&&t=(r=e.string.length-1)?e.pos=r:e.pos=n}var q$={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},bl="string.special",wl=/[goseximacplud]/;function ho(e,t,n,r,o){return t.chain=null,t.style=null,t.tail=null,t.tokenize=function(s,a){for(var l=!1,d,u=0;d=s.next();){if(d===n[u]&&!l)return n[++u]!==void 0?(a.chain=n[u],a.style=r,a.tail=o):o&&s.eatWhile(o),a.tokenize=ome,r;l=!l&&d=="\\"}return r},t.tokenize(e,t)}function y8e(e,t,n){return t.tokenize=function(r,o){return r.string==n&&(o.tokenize=ome),r.skipToEnd(),"string"},t.tokenize(e,t)}function ome(e,t){if(e.eatSpace())return null;if(t.chain)return ho(e,t,t.chain,t.style,t.tail);if(e.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(e.match(/^<<(?=[_a-zA-Z])/))return e.eatWhile(/\w/),y8e(e,t,e.current().substr(2));if(e.sol()&&e.match(/^\=item(?!\w)/))return y8e(e,t,"=cut");var n=e.next();if(n=='"'||n=="'"){if(R4t(e,3)=="<<"+n){var r=e.pos;e.eatWhile(/\w/);var o=e.current().substr(1);if(o&&e.eat(n))return y8e(e,t,o);e.pos=r}return ho(e,t,[n],"string")}if(n=="q"){var s=$f(e,-2);if(!(s&&/\w/.test(s))){if(s=$f(e,0),s=="x"){if(s=$f(e,1),s=="(")return Ld(e,2),ho(e,t,[")"],bl,wl);if(s=="[")return Ld(e,2),ho(e,t,["]"],bl,wl);if(s=="{")return Ld(e,2),ho(e,t,["}"],bl,wl);if(s=="<")return Ld(e,2),ho(e,t,[">"],bl,wl);if(/[\^'"!~\/]/.test(s))return Ld(e,1),ho(e,t,[e.eat(s)],bl,wl)}else if(s=="q"){if(s=$f(e,1),s=="(")return Ld(e,2),ho(e,t,[")"],"string");if(s=="[")return Ld(e,2),ho(e,t,["]"],"string");if(s=="{")return Ld(e,2),ho(e,t,["}"],"string");if(s=="<")return Ld(e,2),ho(e,t,[">"],"string");if(/[\^'"!~\/]/.test(s))return Ld(e,1),ho(e,t,[e.eat(s)],"string")}else if(s=="w"){if(s=$f(e,1),s=="(")return Ld(e,2),ho(e,t,[")"],"bracket");if(s=="[")return Ld(e,2),ho(e,t,["]"],"bracket");if(s=="{")return Ld(e,2),ho(e,t,["}"],"bracket");if(s=="<")return Ld(e,2),ho(e,t,[">"],"bracket");if(/[\^'"!~\/]/.test(s))return Ld(e,1),ho(e,t,[e.eat(s)],"bracket")}else if(s=="r"){if(s=$f(e,1),s=="(")return Ld(e,2),ho(e,t,[")"],bl,wl);if(s=="[")return Ld(e,2),ho(e,t,["]"],bl,wl);if(s=="{")return Ld(e,2),ho(e,t,["}"],bl,wl);if(s=="<")return Ld(e,2),ho(e,t,[">"],bl,wl);if(/[\^'"!~\/]/.test(s))return Ld(e,1),ho(e,t,[e.eat(s)],bl,wl)}else if(/[\^'"!~\/(\[{<]/.test(s)){if(s=="(")return Ld(e,1),ho(e,t,[")"],"string");if(s=="[")return Ld(e,1),ho(e,t,["]"],"string");if(s=="{")return Ld(e,1),ho(e,t,["}"],"string");if(s=="<")return Ld(e,1),ho(e,t,[">"],"string");if(/[\^'"!~\/]/.test(s))return ho(e,t,[e.eat(s)],"string")}}}if(n=="m"){var s=$f(e,-2);if(!(s&&/\w/.test(s))&&(s=e.eat(/[(\[{<\^'"!~\/]/),s)){if(/[\^'"!~\/]/.test(s))return ho(e,t,[s],bl,wl);if(s=="(")return ho(e,t,[")"],bl,wl);if(s=="[")return ho(e,t,["]"],bl,wl);if(s=="{")return ho(e,t,["}"],bl,wl);if(s=="<")return ho(e,t,[">"],bl,wl)}}if(n=="s"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s))return s=="["?ho(e,t,["]","]"],bl,wl):s=="{"?ho(e,t,["}","}"],bl,wl):s=="<"?ho(e,t,[">",">"],bl,wl):s=="("?ho(e,t,[")",")"],bl,wl):ho(e,t,[s,s],bl,wl)}if(n=="y"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s))return s=="["?ho(e,t,["]","]"],bl,wl):s=="{"?ho(e,t,["}","}"],bl,wl):s=="<"?ho(e,t,[">",">"],bl,wl):s=="("?ho(e,t,[")",")"],bl,wl):ho(e,t,[s,s],bl,wl)}if(n=="t"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat("r"),s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s)))return s=="["?ho(e,t,["]","]"],bl,wl):s=="{"?ho(e,t,["}","}"],bl,wl):s=="<"?ho(e,t,[">",">"],bl,wl):s=="("?ho(e,t,[")",")"],bl,wl):ho(e,t,[s,s],bl,wl)}if(n=="`")return ho(e,t,[n],"builtin");if(n=="/")return/~\s*$/.test(R4t(e))?ho(e,t,[n],bl,wl):"operator";if(n=="$"){var r=e.pos;if(e.eatWhile(/\d/)||e.eat("{")&&e.eatWhile(/\d/)&&e.eat("}"))return"builtin";e.pos=r}if(/[$@%]/.test(n)){var r=e.pos;if(e.eat("^")&&e.eat(/[A-Z]/)||!/[@$%&]/.test($f(e,-2))&&e.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var s=e.current();if(q$[s])return"builtin"}e.pos=r}if(/[$@%&]/.test(n)&&(e.eatWhile(/[\w$]/)||e.eat("{")&&e.eatWhile(/[\w$]/)&&e.eat("}"))){var s=e.current();return q$[s]?"builtin":"variable"}if(n=="#"&&$f(e,-2)!="$")return e.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(n)){var r=e.pos;if(e.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),q$[e.current()])return"operator";e.pos=r}if(n=="_"&&e.pos==1){if(O8e(e,6)=="_END__")return ho(e,t,["\0"],"comment");if(O8e(e,7)=="_DATA__")return ho(e,t,["\0"],"builtin");if(O8e(e,7)=="_C__")return ho(e,t,["\0"],"string")}if(/\w/.test(n)){var r=e.pos;if($f(e,-2)=="{"&&($f(e,0)=="}"||e.eatWhile(/\w/)&&$f(e,0)=="}"))return"string";e.pos=r}if(/[A-Z]/.test(n)){var a=$f(e,-2),r=e.pos;if(e.eatWhile(/[A-Z_]/),/[\da-z]/.test($f(e,0)))e.pos=r;else{var s=q$[e.current()];return s?(s[1]&&(s=s[0]),a!=":"?s==1?"keyword":s==2?"def":s==3?"atom":s==4?"operator":s==5?"builtin":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(n)){var a=$f(e,-2);e.eatWhile(/\w/);var s=q$[e.current()];return s?(s[1]&&(s=s[0]),a!=":"?s==1?"keyword":s==2?"def":s==3?"atom":s==4?"operator":s==5?"builtin":"meta":"meta"):"meta"}return null}const vWr={name:"perl",startState:function(){return{tokenize:ome,chain:null,style:null,tail:null}},token:function(e,t){return(t.tokenize||ome)(e,t)},languageData:{commentTokens:{line:"#"},wordChars:"$"}},AWr=Object.freeze(Object.defineProperty({__proto__:null,perl:vWr},Symbol.toStringTag,{value:"Module"}));function nJe(e){for(var t={},n=e.split(" "),r=0;r=&?:\/!|]/;function F4t(e,t,n){return t.tokenize=n,n(e,t)}function pWr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=iJe;break}n=r=="*"}return"comment"}function bWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=iJe),"error"}}function iJe(e,t){var n=e.next();return n=='"'||n=="'"?F4t(e,t,bWr(n)):/[\[\]{}\(\),;\.]/.test(n)?null:/\d/.test(n)?(e.eatWhile(/[\w\.]/),"number"):n=="/"?e.eat("*")?F4t(e,t,pWr):(e.eatWhile(Hae),"operator"):n=="-"?e.eat("-")?(e.skipToEnd(),"comment"):(e.eatWhile(Hae),"operator"):Hae.test(n)?(e.eatWhile(Hae),"operator"):(e.eatWhile(/[\w\$_]/),M4t&&M4t.propertyIsEnumerable(e.current().toUpperCase())&&!e.eat(")")&&!e.eat(".")?"keyword":I4t&&I4t.propertyIsEnumerable(e.current().toUpperCase())?"builtin":P4t&&P4t.propertyIsEnumerable(e.current().toUpperCase())?"type":"variable")}const wWr={name:"pig",startState:function(){return{tokenize:iJe,startOfLine:!0}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{autocomplete:(x5n+T5n+E5n).split(" ")}},OWr=Object.freeze(Object.defineProperty({__proto__:null,pig:wWr},Symbol.toStringTag,{value:"Module"}));function Fz(e,t){t=t||{};for(var n=t.prefix!==void 0?t.prefix:"^",r=t.suffix!==void 0?t.suffix:"\\b",o=0;o/,LWr=Fz([_Wr,SWr],{suffix:""}),xWr=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,EWr=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,TWr=/[A-Z]:|%|\?/i,QWr=Fz([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),DWr=Fz([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),BWr=Fz([TWr,QWr,DWr],{suffix:Q5n}),N4t={keyword:yWr,number:xWr,operator:LWr,builtin:BWr,punctuation:CWr,variable:EWr};function E8(e,t){var n=t.returnStack[t.returnStack.length-1];if(n&&n.shouldReturnFrom(t))return t.tokenize=n.tokenize,t.returnStack.pop(),t.tokenize(e,t);if(e.eatSpace())return null;if(e.eat("("))return t.bracketNesting+=1,"punctuation";if(e.eat(")"))return t.bracketNesting-=1,"punctuation";for(var r in N4t)if(e.match(N4t[r]))return r;var o=e.next();if(o==="'")return RWr(e,t);if(o==="$")return wFe(e,t);if(o==='"')return D5n(e,t);if(o==="<"&&e.eat("#"))return t.tokenize=U4t,U4t(e,t);if(o==="#")return e.skipToEnd(),"comment";if(o==="@"){var s=e.eat(/["']/);if(s&&e.eol())return t.tokenize=sme,t.startQuote=s[0],sme(e,t);if(e.eol())return"error";if(e.peek().match(/[({]/))return"punctuation";if(e.peek().match(bFe))return wFe(e,t)}return"error"}function RWr(e,t){for(var n;(n=e.peek())!=null;)if(e.next(),n==="'"&&!e.eat("'"))return t.tokenize=E8,"string";return"error"}function D5n(e,t){for(var n;(n=e.peek())!=null;){if(n==="$")return t.tokenize=IWr,"string";if(e.next(),n==="`"){e.next();continue}if(n==='"'&&!e.eat('"'))return t.tokenize=E8,"string"}return"error"}function IWr(e,t){return B5n(e,t,D5n)}function MWr(e,t){return t.tokenize=sme,t.startQuote='"',sme(e,t)}function PWr(e,t){return B5n(e,t,MWr)}function B5n(e,t,n){if(e.match("$(")){var r=t.bracketNesting;return t.returnStack.push({shouldReturnFrom:function(o){return o.bracketNesting===r},tokenize:n}),t.tokenize=E8,t.bracketNesting+=1,"punctuation"}else return e.next(),t.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:n}),t.tokenize=wFe,t.tokenize(e,t)}function U4t(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r==">"){t.tokenize=E8;break}n=r==="#"}return"comment"}function wFe(e,t){var n=e.peek();return e.eat("{")?(t.tokenize=j4t,j4t(e,t)):n!=null&&n.match(bFe)?(e.eatWhile(bFe),t.tokenize=E8,"variable"):(t.tokenize=E8,"error")}function j4t(e,t){for(var n;(n=e.next())!=null;)if(n==="}"){t.tokenize=E8;break}return"variable"}function sme(e,t){var n=t.startQuote;if(e.sol()&&e.match(new RegExp(n+"@")))t.tokenize=E8;else if(n==='"')for(;!e.eol();){var r=e.peek();if(r==="$")return t.tokenize=PWr,"string";e.next(),r==="`"&&e.next()}else e.skipToEnd();return"string"}const FWr={name:"powershell",startState:function(){return{returnStack:[],bracketNesting:0,tokenize:E8}},token:function(e,t){return t.tokenize(e,t)},languageData:{commentTokens:{line:"#",block:{open:"<#",close:"#>"}}}},NWr=Object.freeze(Object.defineProperty({__proto__:null,powerShell:FWr},Symbol.toStringTag,{value:"Module"})),UWr={name:"properties",token:function(e,t){var n=e.sol()||t.afterSection,r=e.eol();if(t.afterSection=!1,n&&(t.nextMultiline?(t.inMultiline=!0,t.nextMultiline=!1):t.position="def"),r&&!t.nextMultiline&&(t.inMultiline=!1,t.position="def"),n)for(;e.eatSpace(););var o=e.next();return n&&(o==="#"||o==="!"||o===";")?(t.position="comment",e.skipToEnd(),"comment"):n&&o==="["?(t.afterSection=!0,e.skipTo("]"),e.eat("]"),"header"):o==="="||o===":"?(t.position="quote",null):(o==="\\"&&t.position==="quote"&&e.eol()&&(t.nextMultiline=!0),t.position)},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}},jWr=Object.freeze(Object.defineProperty({__proto__:null,properties:UWr},Symbol.toStringTag,{value:"Module"}));function WWr(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var R5n=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],VWr=WWr(R5n),zWr=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*");function HWr(e){return e.eatSpace()?null:e.match("//")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(VWr)?"keyword":e.match(zWr)?"variable":(e.next(),null)}const $Wr={name:"protobuf",token:HWr,languageData:{autocomplete:R5n}},XWr=Object.freeze(Object.defineProperty({__proto__:null,protobuf:$Wr},Symbol.toStringTag,{value:"Module"}));var W4t={"{":"}","(":")","[":"]"};function GWr(e){if(typeof e!="object")return e;let t={};for(let n in e){let r=e[n];t[n]=r instanceof Array?r.slice():r}return t}let YWr=class I5n{constructor(t){this.indentUnit=t,this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=p6.startState(t),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken=""}copy(){var t=new I5n(this.indentUnit);return t.javaScriptLine=this.javaScriptLine,t.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,t.javaScriptArguments=this.javaScriptArguments,t.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,t.isInterpolating=this.isInterpolating,t.interpolationNesting=this.interpolationNesting,t.jsState=(p6.copyState||GWr)(this.jsState),t.restOfLine=this.restOfLine,t.isIncludeFiltered=this.isIncludeFiltered,t.isEach=this.isEach,t.lastTag=this.lastTag,t.isAttrs=this.isAttrs,t.attrsNest=this.attrsNest.slice(),t.inAttributeName=this.inAttributeName,t.attributeIsType=this.attributeIsType,t.attrValue=this.attrValue,t.indentOf=this.indentOf,t.indentToken=this.indentToken,t}};function ZWr(e,t){if(e.sol()&&(t.javaScriptLine=!1,t.javaScriptLineExcludesColon=!1),t.javaScriptLine){if(t.javaScriptLineExcludesColon&&e.peek()===":"){t.javaScriptLine=!1,t.javaScriptLineExcludesColon=!1;return}var n=p6.token(e,t.jsState);return e.eol()&&(t.javaScriptLine=!1),n||!0}}function qWr(e,t){if(t.javaScriptArguments){if(t.javaScriptArgumentsDepth===0&&e.peek()!=="("){t.javaScriptArguments=!1;return}if(e.peek()==="("?t.javaScriptArgumentsDepth++:e.peek()===")"&&t.javaScriptArgumentsDepth--,t.javaScriptArgumentsDepth===0){t.javaScriptArguments=!1;return}var n=p6.token(e,t.jsState);return n||!0}}function KWr(e){if(e.match(/^yield\b/))return"keyword"}function JWr(e){if(e.match(/^(?:doctype) *([^\n]+)?/))return"meta"}function M5n(e,t){if(e.match("#{"))return t.isInterpolating=!0,t.interpolationNesting=0,"punctuation"}function eVr(e,t){if(t.isInterpolating){if(e.peek()==="}"){if(t.interpolationNesting--,t.interpolationNesting<0)return e.next(),t.isInterpolating=!1,"punctuation"}else e.peek()==="{"&&t.interpolationNesting++;return p6.token(e,t.jsState)||!0}}function tVr(e,t){if(e.match(/^case\b/))return t.javaScriptLine=!0,"keyword"}function nVr(e,t){if(e.match(/^when\b/))return t.javaScriptLine=!0,t.javaScriptLineExcludesColon=!0,"keyword"}function iVr(e){if(e.match(/^default\b/))return"keyword"}function rVr(e,t){if(e.match(/^extends?\b/))return t.restOfLine="string","keyword"}function oVr(e,t){if(e.match(/^append\b/))return t.restOfLine="variable","keyword"}function sVr(e,t){if(e.match(/^prepend\b/))return t.restOfLine="variable","keyword"}function aVr(e,t){if(e.match(/^block\b *(?:(prepend|append)\b)?/))return t.restOfLine="variable","keyword"}function lVr(e,t){if(e.match(/^include\b/))return t.restOfLine="string","keyword"}function cVr(e,t){if(e.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&e.match("include"))return t.isIncludeFiltered=!0,"keyword"}function dVr(e,t){if(t.isIncludeFiltered){var n=P5n(e,t);return t.isIncludeFiltered=!1,t.restOfLine="string",n}}function uVr(e,t){if(e.match(/^mixin\b/))return t.javaScriptLine=!0,"keyword"}function hVr(e,t){if(e.match(/^\+([-\w]+)/))return e.match(/^\( *[-\w]+ *=/,!1)||(t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0),"variable";if(e.match("+#{",!1))return e.next(),t.mixinCallAfter=!0,M5n(e,t)}function fVr(e,t){if(t.mixinCallAfter)return t.mixinCallAfter=!1,e.match(/^\( *[-\w]+ *=/,!1)||(t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0),!0}function gVr(e,t){if(e.match(/^(if|unless|else if|else)\b/))return t.javaScriptLine=!0,"keyword"}function mVr(e,t){if(e.match(/^(- *)?(each|for)\b/))return t.isEach=!0,"keyword"}function kVr(e,t){if(t.isEach){if(e.match(/^ in\b/))return t.javaScriptLine=!0,t.isEach=!1,"keyword";if(e.sol()||e.eol())t.isEach=!1;else if(e.next()){for(;!e.match(/^ in\b/,!1)&&e.next(););return"variable"}}}function vVr(e,t){if(e.match(/^while\b/))return t.javaScriptLine=!0,"keyword"}function AVr(e,t){var n;if(n=e.match(/^(\w(?:[-:\w]*\w)?)\/?/))return t.lastTag=n[1].toLowerCase(),"tag"}function P5n(e,t){if(e.match(/^:([\w\-]+)/))return rJe(e,t),"atom"}function pVr(e,t){if(e.match(/^(!?=|-)/))return t.javaScriptLine=!0,"punctuation"}function bVr(e){if(e.match(/^#([\w-]+)/))return"builtin"}function wVr(e){if(e.match(/^\.([\w-]+)/))return"className"}function OVr(e,t){if(e.peek()=="(")return e.next(),t.isAttrs=!0,t.attrsNest=[],t.inAttributeName=!0,t.attrValue="",t.attributeIsType=!1,"punctuation"}function F5n(e,t){if(t.isAttrs){if(W4t[e.peek()]&&t.attrsNest.push(W4t[e.peek()]),t.attrsNest[t.attrsNest.length-1]===e.peek())t.attrsNest.pop();else if(e.eat(")"))return t.isAttrs=!1,"punctuation";if(t.inAttributeName&&e.match(/^[^=,\)!]+/))return(e.peek()==="="||e.peek()==="!")&&(t.inAttributeName=!1,t.jsState=p6.startState(2),t.lastTag==="script"&&e.current().trim().toLowerCase()==="type"?t.attributeIsType=!0:t.attributeIsType=!1),"attribute";var n=p6.token(e,t.jsState);if(t.attrsNest.length===0&&(n==="string"||n==="variable"||n==="keyword"))try{return Function("","var x "+t.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),t.inAttributeName=!0,t.attrValue="",e.backUp(e.current().length),F5n(e,t)}catch{}return t.attrValue+=e.current(),n||!0}}function yVr(e,t){if(e.match(/^&attributes\b/))return t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0,"keyword"}function CVr(e){if(e.sol()&&e.eatSpace())return"indent"}function _Vr(e,t){if(e.match(/^ *\/\/(-)?([^\n]*)/))return t.indentOf=e.indentation(),t.indentToken="comment","comment"}function SVr(e){if(e.match(/^: */))return"colon"}function LVr(e,t){if(e.match(/^(?:\| ?| )([^\n]+)/))return"string";if(e.match(/^(<[^\n]*)/,!1))return rJe(e,t),e.skipToEnd(),t.indentToken}function xVr(e,t){if(e.eat("."))return rJe(e,t),"dot"}function EVr(e){return e.next(),null}function rJe(e,t){t.indentOf=e.indentation(),t.indentToken="string"}function TVr(e,t){if(e.sol()&&(t.restOfLine=""),t.restOfLine){e.skipToEnd();var n=t.restOfLine;return t.restOfLine="",n}}function QVr(e){return new YWr(e)}function DVr(e){return e.copy()}function BVr(e,t){var n=TVr(e,t)||eVr(e,t)||dVr(e,t)||kVr(e,t)||F5n(e,t)||ZWr(e,t)||qWr(e,t)||fVr(e,t)||KWr(e)||JWr(e)||M5n(e,t)||tVr(e,t)||nVr(e,t)||iVr(e)||rVr(e,t)||oVr(e,t)||sVr(e,t)||aVr(e,t)||lVr(e,t)||cVr(e,t)||uVr(e,t)||hVr(e,t)||gVr(e,t)||mVr(e,t)||vVr(e,t)||AVr(e,t)||P5n(e,t)||pVr(e,t)||bVr(e)||wVr(e)||OVr(e,t)||yVr(e,t)||CVr(e)||LVr(e,t)||_Vr(e,t)||SVr(e)||xVr(e,t)||EVr(e);return n===!0?null:n}const RVr={startState:QVr,copyState:DVr,token:BVr},IVr=Object.freeze(Object.defineProperty({__proto__:null,pug:RVr},Symbol.toStringTag,{value:"Module"}));var OFe={},MVr=/({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;function Jpe(e,t){for(var n=t.split(" "),r=0;r.*/,!1),o=e.match(/(\s+)?[\w:_]+(\s+)?{/,!1),s=e.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/,!1),a=e.next();if(a==="$")return e.match(MVr)?t.continueString?"variableName.special":"variable":"error";if(t.continueString)return e.backUp(1),V4t(e,t);if(t.inDefinition){if(e.match(/(\s+)?[\w:_]+(\s+)?/))return"def";e.match(/\s+{/),t.inDefinition=!1}return t.inInclude?(e.match(/(\s+)?\S+(\s+)?/),t.inInclude=!1,"def"):e.match(/(\s+)?\w+\(/)?(e.backUp(1),"def"):r?(e.match(/(\s+)?\w+/),"tag"):n&&OFe.hasOwnProperty(n)?(e.backUp(1),e.match(/[\w]+/),e.match(/\s+\S+\s+{/,!1)&&(t.inDefinition=!0),n=="include"&&(t.inInclude=!0),OFe[n]):/(^|\s+)[A-Z][\w:_]+/.test(n)?(e.backUp(1),e.match(/(^|\s+)[A-Z][\w:_]+/),"def"):o?(e.match(/(\s+)?[\w:_]+/),"def"):s?(e.match(/(\s+)?[@]{1,2}/),"atom"):a=="#"?(e.skipToEnd(),"comment"):a=="'"||a=='"'?(t.pending=a,V4t(e,t)):a=="{"||a=="}"?"bracket":a=="/"?(e.match(/^[^\/]*\//),"string.special"):a.match(/[0-9]/)?(e.eatWhile(/[0-9]+/),"number"):a=="="?(e.peek()==">"&&e.next(),"operator"):(e.eatWhile(/[\w-]/),null)}const FVr={name:"puppet",startState:function(){var e={};return e.inDefinition=!1,e.inInclude=!1,e.continueString=!1,e.pending=!1,e},token:function(e,t){return e.eatSpace()?null:PVr(e,t)}},NVr=Object.freeze(Object.defineProperty({__proto__:null,puppet:FVr},Symbol.toStringTag,{value:"Module"}));var V7,UVr=WVr(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),jVr=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;function WVr(e){return new RegExp("^("+e.join("|")+")$")}function zW(e,t){var n=e.sol(),r=e.next();if(V7=null,n){if(r=="/")return(t.tokenize=VVr)(e,t);if(r=="\\")return e.eol()||/\s/.test(e.peek())?(e.skipToEnd(),/^\\\s*$/.test(e.current())?(t.tokenize=HVr)(e):t.tokenize=zW,"comment"):(t.tokenize=zW,"builtin")}if(/\s/.test(r))return e.peek()=="/"?(e.skipToEnd(),"comment"):"null";if(r=='"')return(t.tokenize=$Vr)(e,t);if(r=="`")return e.eatWhile(/[A-Za-z\d_:\/.]/),"macroName";if(r=="."&&/\d/.test(e.peek())||/\d/.test(r)){var o=null;return e.backUp(1),e.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)||e.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)||e.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)||e.match(/^\d+[ptuv]{1}/)?o="temporal":(e.match(/^0[NwW]{1}/)||e.match(/^0x[\da-fA-F]*/)||e.match(/^[01]+[b]{1}/)||e.match(/^\d+[chijn]{1}/)||e.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))&&(o="number"),o&&(!(r=e.peek())||jVr.test(r))?o:(e.next(),"error")}return/[A-Za-z]|\./.test(r)?(e.eatWhile(/[A-Za-z._\d]/),UVr.test(e.current())?"keyword":"variable"):/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(r)||/[{}\(\[\]\)]/.test(r)?null:"error"}function VVr(e,t){return e.skipToEnd(),/^\/\s*$/.test(e.current())?(t.tokenize=zVr)(e,t):t.tokenize=zW,"comment"}function zVr(e,t){var n=e.sol()&&e.peek()=="\\";return e.skipToEnd(),n&&/^\\\s*$/.test(e.current())&&(t.tokenize=zW),"comment"}function HVr(e){return e.skipToEnd(),"comment"}function $Vr(e,t){for(var n=!1,r,o=!1;r=e.next();){if(r=='"'&&!n){o=!0;break}n=!n&&r=="\\"}return o&&(t.tokenize=zW),"string"}function $ae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function C8e(e){e.indent=e.context.indent,e.context=e.context.prev}const XVr={name:"q",startState:function(){return{tokenize:zW,context:null,indent:0,col:0}},token:function(e,t){e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation());var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),V7=="(")$ae(t,")",e.column());else if(V7=="[")$ae(t,"]",e.column());else if(V7=="{")$ae(t,"}",e.column());else if(/[\]\}\)]/.test(V7)){for(;t.context&&t.context.type=="pattern";)C8e(t);t.context&&V7==t.context.type&&C8e(t)}else V7=="."&&t.context&&t.context.type=="pattern"?C8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?$ae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"/"}}},GVr=Object.freeze(Object.defineProperty({__proto__:null,q:XVr},Symbol.toStringTag,{value:"Module"}));function ebe(e){for(var t={},n=0;n=!&|~$:]/,gb;function yFe(e,t){gb=null;var n=e.next();if(n=="#")return e.skipToEnd(),"comment";if(n=="0"&&e.eat("x"))return e.eatWhile(/[\da-f]/i),"number";if(n=="."&&e.eat(/\d/))return e.match(/\d*(?:e[+\-]?\d+)?/),"number";if(/\d/.test(n))return e.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/),"number";if(n=="'"||n=='"')return t.tokenize=ezr(n),"string";if(n=="`")return e.match(/[^`]+`/),"string.special";if(n=="."&&e.match(/.(?:[.]|\d+)/))return"keyword";if(/[a-zA-Z\.]/.test(n)){e.eatWhile(/[\w\.]/);var r=e.current();return ZVr.propertyIsEnumerable(r)?"atom":KVr.propertyIsEnumerable(r)?(JVr.propertyIsEnumerable(r)&&!e.match(/\s*if(\s+|$)/,!1)&&(gb="block"),"keyword"):qVr.propertyIsEnumerable(r)?"builtin":"variable"}else return n=="%"?(e.skipTo("%")&&e.next(),"variableName.special"):n=="<"&&e.eat("-")||n=="<"&&e.match("<-")||n=="-"&&e.match(/>>?/)||n=="="&&t.ctx.argList?"operator":z4t.test(n)?(n=="$"||e.eatWhile(z4t),"operator"):/[\(\){}\[\];]/.test(n)?(gb=n,n==";"?"punctuation":null):null}function ezr(e){return function(t,n){if(t.eat("\\")){var r=t.next();return r=="x"?t.match(/^[a-f0-9]{2}/i):(r=="u"||r=="U")&&t.eat("{")&&t.skipTo("}")?t.next():r=="u"?t.match(/^[a-f0-9]{4}/i):r=="U"?t.match(/^[a-f0-9]{8}/i):/[0-7]/.test(r)&&t.match(/^[0-7]{1,2}/),"string.special"}else{for(var o;(o=t.next())!=null;){if(o==e){n.tokenize=yFe;break}if(o=="\\"){t.backUp(1);break}}return"string"}}}var H4t=1,_8e=2,S8e=4;function Xae(e,t,n){e.ctx={type:t,indent:e.indent,flags:0,column:n.column(),prev:e.ctx}}function $4t(e,t){var n=e.ctx;e.ctx={type:n.type,indent:n.indent,flags:n.flags|t,column:n.column,prev:n.prev}}function L8e(e){e.indent=e.ctx.indent,e.ctx=e.ctx.prev}const tzr={name:"r",startState:function(e){return{tokenize:yFe,ctx:{type:"top",indent:-e,flags:_8e},indent:0,afterIdent:!1}},token:function(e,t){if(e.sol()&&(t.ctx.flags&3||(t.ctx.flags|=_8e),t.ctx.flags&S8e&&L8e(t),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);return n!="comment"&&!(t.ctx.flags&_8e)&&$4t(t,H4t),(gb==";"||gb=="{"||gb=="}")&&t.ctx.type=="block"&&L8e(t),gb=="{"?Xae(t,"}",e):gb=="("?(Xae(t,")",e),t.afterIdent&&(t.ctx.argList=!0)):gb=="["?Xae(t,"]",e):gb=="block"?Xae(t,"block",e):gb==t.ctx.type?L8e(t):t.ctx.type=="block"&&n!="comment"&&$4t(t,S8e),t.afterIdent=n=="variable"||n=="keyword",n},indent:function(e,t,n){if(e.tokenize!=yFe)return 0;var r=t&&t.charAt(0),o=e.ctx,s=r==o.type;return o.flags&S8e&&(o=o.prev),o.type=="block"?o.indent+(r=="{"?0:n.unit):o.flags&H4t?o.column+(s?0:1):o.indent+(s?0:n.unit)},languageData:{wordChars:".",commentTokens:{line:"#"},autocomplete:N5n.concat(U5n,j5n)}},nzr=Object.freeze(Object.defineProperty({__proto__:null,r:tzr},Symbol.toStringTag,{value:"Module"}));var izr=/^-+$/,rzr=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /,ozr=/^[\w+.-]+@[\w.-]+/;const szr={name:"rpmchanges",token:function(e){return e.sol()&&(e.match(izr)||e.match(rzr))?"tag":e.match(ozr)?"string":(e.next(),null)}};var azr=/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/,lzr=/^[a-zA-Z0-9()]+:/,czr=/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/,dzr=/^%(ifnarch|ifarch|if)/,uzr=/^%(else|endif)/,hzr=/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/;const fzr={name:"rpmspec",startState:function(){return{controlFlow:!1,macroParameters:!1,section:!1}},token:function(e,t){var n=e.peek();if(n=="#")return e.skipToEnd(),"comment";if(e.sol()){if(e.match(lzr))return"header";if(e.match(czr))return"atom"}if(e.match(/^\$\w+/)||e.match(/^\$\{\w+\}/))return"def";if(e.match(uzr))return"keyword";if(e.match(dzr))return t.controlFlow=!0,"keyword";if(t.controlFlow){if(e.match(hzr))return"operator";if(e.match(/^(\d+)/))return"number";e.eol()&&(t.controlFlow=!1)}if(e.match(azr))return e.eol()&&(t.controlFlow=!1),"number";if(e.match(/^%[\w]+/))return e.match("(")&&(t.macroParameters=!0),"keyword";if(t.macroParameters){if(e.match(/^\d+/))return"number";if(e.match(")"))return t.macroParameters=!1,"keyword"}return e.match(/^%\{\??[\w \-\:\!]+\}/)?(e.eol()&&(t.controlFlow=!1),"def"):(e.next(),null)}},X4t=Object.freeze(Object.defineProperty({__proto__:null,rpmChanges:szr,rpmSpec:fzr},Symbol.toStringTag,{value:"Module"}));function oJe(e){for(var t={},n=0,r=e.length;n]/)?(e.eat(/[\<\>]/),"atom"):e.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":e.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(e.eatWhile(/[\w$\xa1-\uffff]/),e.eat(/[\?\!\=]/),"atom"):"operator";if(n=="@"&&e.match(/^@?[a-zA-Z_\xa1-\uffff]/))return e.eat("@"),e.eatWhile(/[\w\xa1-\uffff]/),"propertyName";if(n=="$")return e.eat(/[a-zA-Z_]/)?e.eatWhile(/[\w]/):e.eat(/\d/)?e.eat(/\d/):e.next(),"variableName.special";if(/[a-zA-Z_\xa1-\uffff]/.test(n))return e.eatWhile(/[\w\xa1-\uffff]/),e.eat(/[\?\!]/),e.eat(":")?"atom":"variable";if(n=="|"&&(t.varList||t.lastTok=="{"||t.lastTok=="do"))return mb="|",null;if(/[\(\)\[\]{}\\;]/.test(n))return mb=n,null;if(n=="-"&&e.eat(">"))return"operator";if(/[=+\-\/*:\.^%<>~|]/.test(n)){var l=e.eatWhile(/[=+\-\/*:\.^%<>~|]/);return n=="."&&!l&&(mb="."),"operator"}else return null}}}function Azr(e){for(var t=e.pos,n=0,r,o=!1,s=!1;(r=e.next())!=null;)if(s)s=!1;else{if("[{(".indexOf(r)>-1)n++;else if("]})".indexOf(r)>-1){if(n--,n<0)break}else if(r=="/"&&n==0){o=!0;break}s=r=="\\"}return e.backUp(e.pos-t),o}function CFe(e){return e||(e=1),function(t,n){if(t.peek()=="}"){if(e==1)return n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n);n.tokenize[n.tokenize.length-1]=CFe(e-1)}else t.peek()=="{"&&(n.tokenize[n.tokenize.length-1]=CFe(e+1));return ame(t,n)}}function pzr(){var e=!1;return function(t,n){return e?(n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n)):(e=!0,ame(t,n))}}function K$(e,t,n,r){return function(o,s){var a=!1,l;for(s.context.type==="read-quoted-paused"&&(s.context=s.context.prev,o.eat("}"));(l=o.next())!=null;){if(l==e&&(r||!a)){s.tokenize.pop();break}if(n&&l=="#"&&!a){if(o.eat("{")){e=="}"&&(s.context={prev:s.context,type:"read-quoted-paused"}),s.tokenize.push(CFe());break}else if(/[@\$]/.test(o.peek())){s.tokenize.push(pzr());break}}a=!a&&l=="\\"}return t}}function bzr(e,t){return function(n,r){return t&&n.eatSpace(),n.match(e)?r.tokenize.pop():n.skipToEnd(),"string"}}function wzr(e,t){return e.sol()&&e.match("=end")&&e.eol()&&t.tokenize.pop(),e.skipToEnd(),"comment"}const Ozr={name:"ruby",startState:function(e){return{tokenize:[ame],indented:0,context:{type:"top",indented:-e},continuedLine:!1,lastTok:null,varList:!1}},token:function(e,t){mb=null,e.sol()&&(t.indented=e.indentation());var n=t.tokenize[t.tokenize.length-1](e,t),r,o=mb;if(n=="variable"){var s=e.current();n=t.lastTok=="."?"property":gzr.propertyIsEnumerable(e.current())?"keyword":/^[A-Z]/.test(s)?"tag":t.lastTok=="def"||t.lastTok=="class"||t.varList?"def":"variable",n=="keyword"&&(o=s,mzr.propertyIsEnumerable(s)?r="indent":kzr.propertyIsEnumerable(s)?r="dedent":((s=="if"||s=="unless")&&e.column()==e.indentation()||s=="do"&&t.context.indented=|!=|<>)/,_zr=/[=\(:\),{}.*<>+\-\/^\[\]]/;function Qg(e,t,n){if(n)for(var r=t.split(" "),o=0;ointeger char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"),Qzr=V5n("define let letrec let* lambda define-macro defmacro let-syntax letrec-syntax let-values let*-values define-syntax syntax-rules define-values when unless");function Dzr(e,t,n){this.indent=e,this.type=t,this.prev=n}function x8e(e,t,n){e.indentStack=new Dzr(t,n,e.indentStack)}function Bzr(e){e.indentStack=e.indentStack.prev}var Rzr=new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i),Izr=new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i),Mzr=new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i),Pzr=new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);function Fzr(e){return e.match(Rzr)}function Nzr(e){return e.match(Izr)}function E8e(e,t){return t===!0&&e.backUp(1),e.match(Pzr)}function Uzr(e){return e.match(Mzr)}function tpt(e,t){for(var n,r=!1;(n=e.next())!=null;){if(n==t.token&&!r){t.state.mode=!1;break}r=!r&&n=="\\"}}const jzr={name:"scheme",startState:function(){return{indentStack:null,indentation:0,mode:!1,sExprComment:!1,sExprQuote:!1}},token:function(e,t){if(t.indentStack==null&&e.sol()&&(t.indentation=e.indentation()),e.eatSpace())return null;var n=null;switch(t.mode){case"string":tpt(e,{token:'"',state:t}),n=Z4t;break;case"symbol":tpt(e,{token:"|",state:t}),n=q4t;break;case"comment":for(var r,o=!1;(r=e.next())!=null;){if(r=="#"&&o){t.mode=!1;break}o=r=="|"}n=d7;break;case"s-expr-comment":if(t.mode=!1,e.peek()=="("||e.peek()=="[")t.sExprComment=0;else{e.eatWhile(/[^\s\(\)\[\]]/),n=d7;break}default:var s=e.next();if(s=='"')t.mode="string",n=Z4t;else if(s=="'")e.peek()=="("||e.peek()=="["?(typeof t.sExprQuote!="number"&&(t.sExprQuote=0),n=J$):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),n=J$);else if(s=="|")t.mode="symbol",n=q4t;else if(s=="#")if(e.eat("|"))t.mode="comment",n=d7;else if(e.eat(/[tf]/i))n=J$;else if(e.eat(";"))t.mode="s-expr-comment",n=d7;else{var a=null,l=!1,d=!0;e.eat(/[ei]/i)?l=!0:e.backUp(1),e.match(/^#b/i)?a=Fzr:e.match(/^#o/i)?a=Nzr:e.match(/^#x/i)?a=Uzr:e.match(/^#d/i)?a=E8e:e.match(/^[-+0-9.]/,!1)?(d=!1,a=E8e):l||e.eat("#"),a!=null&&(d&&!l&&e.match(/^#[ei]/i),a(e)&&(n=K4t))}else if(/^[-+0-9.]/.test(s)&&E8e(e,!0))n=K4t;else if(s==";")e.skipToEnd(),n=d7;else if(s=="("||s=="["){for(var u="",h=e.column(),g;(g=e.eat(/[^\s\(\[\;\)\]]/))!=null;)u+=g;u.length>0&&Qzr.propertyIsEnumerable(u)?x8e(t,h+Tzr,s):(e.eatSpace(),e.eol()||e.peek()==";"?x8e(t,h+1,s):x8e(t,h+e.current().length,s)),e.backUp(e.current().length-1),typeof t.sExprComment=="number"&&t.sExprComment++,typeof t.sExprQuote=="number"&&t.sExprQuote++,n=J4t}else s==")"||s=="]"?(n=J4t,t.indentStack!=null&&t.indentStack.type==(s==")"?"(":"[")&&(Bzr(t),typeof t.sExprComment=="number"&&--t.sExprComment==0&&(n=d7,t.sExprComment=!1),typeof t.sExprQuote=="number"&&--t.sExprQuote==0&&(n=J$,t.sExprQuote=!1))):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),ept&&ept.propertyIsEnumerable(e.current())?n=Ezr:n="variable")}return typeof t.sExprComment=="number"?d7:typeof t.sExprQuote=="number"?J$:n},indent:function(e){return e.indentStack==null?e.indentation:e.indentStack.indent},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:";;"}}},Wzr=Object.freeze(Object.defineProperty({__proto__:null,scheme:jzr},Symbol.toStringTag,{value:"Module"}));var _Fe={};function sJe(e,t){for(var n=0;n1&&e.eat("$");var n=e.next();return/['"({]/.test(n)?(t.tokens[0]=tbe(n,n=="("?"quote":n=="{"?"def":"string"),HW(e,t)):(/\d/.test(n)||e.eatWhile(/\w/),t.tokens.shift(),"def")};function Hzr(e){return function(t,n){return t.sol()&&t.string==e&&n.tokens.shift(),t.skipToEnd(),"string.special"}}function HW(e,t){return(t.tokens[0]||Vzr)(e,t)}const $zr={name:"shell",startState:function(){return{tokens:[]}},token:function(e,t){return HW(e,t)},languageData:{autocomplete:z5n.concat(H5n,$5n),closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"#"}}},Xzr=Object.freeze(Object.defineProperty({__proto__:null,shell:$zr},Symbol.toStringTag,{value:"Module"}));function G5n(e){for(var t={},n=e.split(" "),r=0;r=@%|&?!.,:;^]/,eHr=/true|false|nil|self|super|thisContext/,DG=function(e,t){this.next=e,this.parent=t},uie=function(e,t,n){this.name=e,this.context=t,this.eos=n},Y5n=function(){this.context=new DG(Z5n,null),this.expectVariable=!0,this.indentation=0,this.userIndentationDelta=0};Y5n.prototype.userIndent=function(e,t){this.userIndentationDelta=e>0?e/t-this.indentation:0};var Z5n=function(e,t,n){var r=new uie(null,t,!1),o=e.next();return o==='"'?r=rpt(e,new DG(rpt,t)):o==="'"?r=opt(e,new DG(opt,t)):o==="#"?e.peek()==="'"?(e.next(),r=spt(e,new DG(spt,t))):e.eatWhile(/[^\s.{}\[\]()]/)?r.name="string.special":r.name="meta":o==="$"?(e.next()==="<"&&(e.eatWhile(/[^\s>]/),e.next()),r.name="string.special"):o==="|"&&n.expectVariable?r.context=new DG(tHr,t):/[\[\]{}()]/.test(o)?(r.name="bracket",r.eos=/[\[{(]/.test(o),o==="["?n.indentation++:o==="]"&&(n.indentation=Math.max(0,n.indentation-1))):ipt.test(o)?(e.eatWhile(ipt),r.name="operator",r.eos=o!==";"):/\d/.test(o)?(e.eatWhile(/[\w\d]/),r.name="number"):/[\w_]/.test(o)?(e.eatWhile(/[\w\d_]/),r.name=n.expectVariable?eHr.test(e.current())?"keyword":"variable":null):r.eos=n.expectVariable,r},rpt=function(e,t){return e.eatWhile(/[^"]/),new uie("comment",e.eat('"')?t.parent:t,!0)},opt=function(e,t){return e.eatWhile(/[^']/),new uie("string",e.eat("'")?t.parent:t,!1)},spt=function(e,t){return e.eatWhile(/[^']/),new uie("string.special",e.eat("'")?t.parent:t,!1)},tHr=function(e,t){var n=new uie(null,t,!1),r=e.next();return r==="|"?(n.context=t.parent,n.eos=!0):(e.eatWhile(/[^|]/),n.name="variable"),n};const nHr={name:"smalltalk",startState:function(){return new Y5n},token:function(e,t){if(t.userIndent(e.indentation(),e.indentUnit),e.eatSpace())return null;var n=t.context.next(e,t.context,t);return t.context=n.context,t.expectVariable=n.eos,n.name},blankLine:function(e,t){e.userIndent(0,t)},indent:function(e,t,n){var r=e.context.next===Z5n&&t&&t.charAt(0)==="]"?-1:e.userIndentationDelta;return(e.indentation+r)*n.unit},languageData:{indentOnInput:/^\s*\]$/}},iHr=Object.freeze(Object.defineProperty({__proto__:null,smalltalk:nHr},Symbol.toStringTag,{value:"Module"}));var q5n=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,rHr=/[\|\!\+\-\*\?\~\^\&]/,oHr=/^(OR|AND|NOT|TO)$/;function sHr(e){return parseFloat(e).toString()===e}function aHr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null&&!(o==e&&!r);)r=!r&&o=="\\";return r||(n.tokenize=hie),"string"}}function lHr(e){return function(t,n){return e=="|"?t.eat(/\|/):e=="&"&&t.eat(/\&/),n.tokenize=hie,"operator"}}function cHr(e){return function(t,n){for(var r=e;(e=t.peek())&&e.match(q5n)!=null;)r+=t.next();return n.tokenize=hie,oHr.test(r)?"operator":sHr(r)?"number":t.peek()==":"?"propertyName":"string"}}function hie(e,t){var n=e.next();return n=='"'?t.tokenize=aHr(n):rHr.test(n)?t.tokenize=lHr(n):q5n.test(n)&&(t.tokenize=cHr(n)),t.tokenize!=hie?t.tokenize(e,t):null}const dHr={name:"solr",startState:function(){return{tokenize:hie}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}},uHr=Object.freeze(Object.defineProperty({__proto__:null,solr:dHr},Symbol.toStringTag,{value:"Module"}));var P_;function K5n(e){return new RegExp("^(?:"+e.join("|")+")$","i")}var hHr=K5n(["str","lang","langmatches","datatype","bound","sameterm","isiri","isuri","iri","uri","bnode","count","sum","min","max","avg","sample","group_concat","rand","abs","ceil","floor","round","concat","substr","strlen","replace","ucase","lcase","encode_for_uri","contains","strstarts","strends","strbefore","strafter","year","month","day","hours","minutes","seconds","timezone","tz","now","uuid","struuid","md5","sha1","sha256","sha384","sha512","coalesce","if","strlang","strdt","isnumeric","regex","exists","isblank","isliteral","a","bind"]),fHr=K5n(["base","prefix","select","distinct","reduced","construct","describe","ask","from","named","where","order","limit","offset","filter","optional","graph","by","asc","desc","as","having","undef","values","group","minus","in","not","service","silent","using","insert","delete","union","true","false","with","data","copy","to","move","add","create","drop","clear","load","into"]),gHr=/[*+\-<>=&|\^\/!\?]/,apt="[A-Za-z_\\-0-9]",mHr=new RegExp("[A-Za-z]"),kHr=new RegExp("(("+apt+"|\\.)*("+apt+"))?:");function J5n(e,t){var n=e.next();if(P_=null,n=="$"||n=="?")return n=="?"&&e.match(/\s/,!1)?"operator":(e.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/),"variableName.local");if(n=="<"&&!e.match(/^[\s\u00a0=]/,!1))return e.match(/^[^\s\u00a0>]*>?/),"atom";if(n=='"'||n=="'")return t.tokenize=vHr(n),t.tokenize(e,t);if(/[{}\(\),\.;\[\]]/.test(n))return P_=n,"bracket";if(n=="#")return e.skipToEnd(),"comment";if(gHr.test(n))return"operator";if(n==":")return lpt(e),"atom";if(n=="@")return e.eatWhile(/[a-z\d\-]/i),"meta";if(mHr.test(n)&&e.match(kHr))return lpt(e),"atom";e.eatWhile(/[_\w\d]/);var r=e.current();return hHr.test(r)?"builtin":fHr.test(r)?"keyword":"variable"}function lpt(e){e.match(/(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/i)}function vHr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=J5n;break}r=!r&&o=="\\"}return"string"}}function Gae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function Yae(e){e.indent=e.context.indent,e.context=e.context.prev}const AHr={name:"sparql",startState:function(){return{tokenize:J5n,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),P_=="(")Gae(t,")",e.column());else if(P_=="[")Gae(t,"]",e.column());else if(P_=="{")Gae(t,"}",e.column());else if(/[\]\}\)]/.test(P_)){for(;t.context&&t.context.type=="pattern";)Yae(t);t.context&&P_==t.context.type&&(Yae(t),P_=="}"&&t.context&&t.context.type=="pattern"&&Yae(t))}else P_=="."&&t.context&&t.context.type=="pattern"?Yae(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Gae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"#"}}},pHr=Object.freeze(Object.defineProperty({__proto__:null,sparql:AHr},Symbol.toStringTag,{value:"Module"})),bHr={name:"spreadsheet",startState:function(){return{stringType:null,stack:[]}},token:function(e,t){if(e){switch(t.stack.length===0&&(e.peek()=='"'||e.peek()=="'")&&(t.stringType=e.peek(),e.next(),t.stack.unshift("string")),t.stack[0]){case"string":for(;t.stack[0]==="string"&&!e.eol();)e.peek()===t.stringType?(e.next(),t.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return"string";case"characterClass":for(;t.stack[0]==="characterClass"&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(/^\\./)||t.stack.shift();return"operator"}var n=e.peek();switch(n){case"[":return e.next(),t.stack.unshift("characterClass"),"bracket";case":":return e.next(),"operator";case"\\":return e.match(/\\[a-z]+/)?"string.special":(e.next(),"atom");case".":case",":case";":case"*":case"-":case"+":case"^":case"<":case"/":case"=":return e.next(),"atom";case"$":return e.next(),"builtin"}return e.match(/\d+/)?e.match(/^\w+/)?"error":"number":e.match(/^[a-zA-Z_]\w*/)?e.match(/(?=[\(.])/,!1)?"keyword":"variable":["[","]","(",")","{","}"].indexOf(n)!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}},wHr=Object.freeze(Object.defineProperty({__proto__:null,spreadsheet:bHr},Symbol.toStringTag,{value:"Module"}));var e9n=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],aJe=["domain","regexp","url-prefix","url"],t9n=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],n9n=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","dynamic-range","video-dynamic-range"],i9n=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],r9n=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],o9n=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],s9n=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],a9n=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","high","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","standard","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],l9n=["in","and","or","not","is not","is a","is","isnt","defined","if unless"],c9n=["for","if","else","unless","from","to"],d9n=["null","true","false","href","title","type","not-allowed","readonly","disabled"],OHr=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],yHr=e9n.concat(aJe,t9n,n9n,i9n,r9n,s9n,a9n,o9n,l9n,c9n,d9n,OHr);function u9n(e){return e=e.sort(function(t,n){return n>t}),new RegExp("^(("+e.join(")|(")+"))\\b")}function I3(e){for(var t={},n=0;n]=?|\?:|\~)/,MHr=u9n(l9n),PHr=I3(c9n),h9n=new RegExp(/^\-(moz|ms|o|webkit)-/i),FHr=I3(d9n),T8e="",aA={},fw,u7,cpt,ws;function NHr(e,t){if(T8e=e.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),t.context.line.firstWord=T8e?T8e[0].replace(/^\s*/,""):"",t.context.line.indent=e.indentation(),fw=e.peek(),e.match("//"))return e.skipToEnd(),["comment","comment"];if(e.match("/*"))return t.tokenize=dpt,dpt(e,t);if(fw=='"'||fw=="'")return e.next(),t.tokenize=f9n(fw),t.tokenize(e,t);if(fw=="@")return e.next(),e.eatWhile(/[\w\\-]/),["def",e.current()];if(fw=="#"){if(e.next(),e.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if(e.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return e.match(h9n)?["meta","vendor-prefixes"]:e.match(/^-?[0-9]?\.?[0-9]/)?(e.eatWhile(/[a-z%]/i),["number","unit"]):fw=="!"?(e.next(),[e.match(/^(important|optional)/i)?"keyword":"operator","important"]):fw=="."&&e.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:e.match(QHr)?(e.peek()=="("&&(t.tokenize=UHr),["property","word"]):e.match(/^[a-z][\w-]*\(/i)?(e.backUp(1),["keyword","mixin"]):e.match(/^(\+|-)[a-z][\w-]*\(/i)?(e.backUp(1),["keyword","block-mixin"]):e.string.match(/^\s*&/)&&e.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:e.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?(e.backUp(1),["variableName.special","reference"]):e.match(/^&{1}\s*$/)?["variableName.special","reference"]:e.match(MHr)?["operator","operator"]:e.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?e.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!sy(e.current())?(e.match("."),["variable","variable-name"]):["variable","word"]:e.match(IHr)?["operator",e.current()]:/[:;,{}\[\]\(\)]/.test(fw)?(e.next(),[null,fw]):(e.next(),[null,null])}function dpt(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r=="/"){t.tokenize=null;break}n=r=="*"}return["comment","comment"]}function f9n(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){e==")"&&t.backUp(1);break}r=!r&&o=="\\"}return(o==e||!r&&e!=")")&&(n.tokenize=null),["string","string"]}}function UHr(e,t){return e.next(),e.match(/\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=f9n(")"),[null,"("]}function g9n(e,t,n,r){this.type=e,this.indent=t,this.prev=n,this.line=r||{firstWord:"",indent:0}}function po(e,t,n,r){return r=r>=0?r:t.indentUnit,e.context=new g9n(n,t.indentation()+r,e.context),n}function ZB(e,t,n){var r=e.context.indent-t.indentUnit;return n=n||!1,e.context=e.context.prev,n&&(e.context.indent=r),e.context.type}function jHr(e,t,n){return aA[n.context.type](e,t,n)}function cJe(e,t,n,r){for(var o=1;o>0;o--)n.context=n.context.prev;return jHr(e,t,n)}function sy(e){return e.toLowerCase()in _Hr}function qB(e){return e=e.toLowerCase(),e in SHr||e in RHr}function oD(e){return e.toLowerCase()in PHr}function upt(e){return e.toLowerCase().match(h9n)}function vI(e){var t=e.toLowerCase(),n="variable";return sy(e)?n="tag":oD(e)?n="block-keyword":qB(e)?n="property":t in xHr||t in FHr?n="atom":t=="return"||t in EHr?n="keyword":e.match(/^[A-Z]/)&&(n="string"),n}function m9n(e,t){return l0(t)&&(e=="{"||e=="]"||e=="hash"||e=="qualifier")||e=="block-mixin"}function k9n(e,t){return e=="{"&&t.match(/^\s*\$?[\w-]+/i,!1)}function v9n(e,t){return e==":"&&t.match(/^[a-z-]+/,!1)}function AT(e){return e.sol()||e.string.match(new RegExp("^\\s*"+CHr(e.current())))}function l0(e){return e.eol()||e.match(/^\s*$/,!1)}function S4(e){var t=/^\s*[-_]*[a-z0-9]+[\w-]*/i,n=typeof e=="string"?e.match(t):e.string.match(t);return n?n[0].replace(/^\s*/,""):""}aA.block=function(e,t,n){if(e=="comment"&&AT(t)||e==","&&l0(t)||e=="mixin")return po(n,t,"block",0);if(k9n(e,t))return po(n,t,"interpolation");if(l0(t)&&e=="]"&&!/^\s*(\.|#|:|\[|\*|&)/.test(t.string)&&!sy(S4(t)))return po(n,t,"block",0);if(m9n(e,t))return po(n,t,"block");if(e=="}"&&l0(t))return po(n,t,"block",0);if(e=="variable-name")return t.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||oD(S4(t))?po(n,t,"variableName"):po(n,t,"variableName",0);if(e=="=")return!l0(t)&&!oD(S4(t))?po(n,t,"block",0):po(n,t,"block");if(e=="*"&&(l0(t)||t.match(/\s*(,|\.|#|\[|:|{)/,!1)))return ws="tag",po(n,t,"block");if(v9n(e,t))return po(n,t,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test(e))return po(n,t,l0(t)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test(e))return po(n,t,"keyframes");if(/@extends?/.test(e))return po(n,t,"extend",0);if(e&&e.charAt(0)=="@")return t.indentation()>0&&qB(t.current().slice(1))?(ws="variable","block"):/(@import|@require|@charset)/.test(e)?po(n,t,"block",0):po(n,t,"block");if(e=="reference"&&l0(t))return po(n,t,"block");if(e=="(")return po(n,t,"parens");if(e=="vendor-prefixes")return po(n,t,"vendorPrefixes");if(e=="word"){var r=t.current();if(ws=vI(r),ws=="property")return AT(t)?po(n,t,"block",0):(ws="atom","block");if(ws=="tag"){if(/embed|menu|pre|progress|sub|table/.test(r)&&qB(S4(t))||t.string.match(new RegExp("\\[\\s*"+r+"|"+r+"\\s*\\]")))return ws="atom","block";if(lJe.test(r)&&(AT(t)&&t.string.match(/=/)||!AT(t)&&!t.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!sy(S4(t))))return ws="variable",oD(S4(t))?"block":po(n,t,"block",0);if(l0(t))return po(n,t,"block")}if(ws=="block-keyword")return ws="keyword",t.current(/(if|unless)/)&&!AT(t)?"block":po(n,t,"block");if(r=="return")return po(n,t,"block",0);if(ws=="variable"&&t.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return po(n,t,"block")}return n.context.type};aA.parens=function(e,t,n){if(e=="(")return po(n,t,"parens");if(e==")")return n.context.prev.type=="parens"?ZB(n,t):t.string.match(/^[a-z][\w-]*\(/i)&&l0(t)||oD(S4(t))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(S4(t))||!t.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&sy(S4(t))?po(n,t,"block"):t.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||t.string.match(/^\s*(\(|\)|[0-9])/)||t.string.match(/^\s+[a-z][\w-]*\(/i)||t.string.match(/^\s+[\$-]?[a-z]/i)?po(n,t,"block",0):l0(t)?po(n,t,"block"):po(n,t,"block",0);if(e&&e.charAt(0)=="@"&&qB(t.current().slice(1))&&(ws="variable"),e=="word"){var r=t.current();ws=vI(r),ws=="tag"&&lJe.test(r)&&(ws="variable"),(ws=="property"||r=="to")&&(ws="atom")}return e=="variable-name"?po(n,t,"variableName"):v9n(e,t)?po(n,t,"pseudo"):n.context.type};aA.vendorPrefixes=function(e,t,n){return e=="word"?(ws="property",po(n,t,"block",0)):ZB(n,t)};aA.pseudo=function(e,t,n){return qB(S4(t.string))?cJe(e,t,n):(t.match(/^[a-z-]+/),ws="variableName.special",l0(t)?po(n,t,"block"):ZB(n,t))};aA.atBlock=function(e,t,n){if(e=="(")return po(n,t,"atBlock_parens");if(m9n(e,t))return po(n,t,"block");if(k9n(e,t))return po(n,t,"interpolation");if(e=="word"){var r=t.current().toLowerCase();if(/^(only|not|and|or)$/.test(r)?ws="keyword":THr.hasOwnProperty(r)?ws="tag":BHr.hasOwnProperty(r)?ws="attribute":DHr.hasOwnProperty(r)?ws="property":LHr.hasOwnProperty(r)?ws="string.special":ws=vI(t.current()),ws=="tag"&&l0(t))return po(n,t,"block")}return e=="operator"&&/^(not|and|or)$/.test(t.current())&&(ws="keyword"),n.context.type};aA.atBlock_parens=function(e,t,n){if(e=="{"||e=="}")return n.context.type;if(e==")")return l0(t)?po(n,t,"block"):po(n,t,"atBlock");if(e=="word"){var r=t.current().toLowerCase();return ws=vI(r),/^(max|min)/.test(r)&&(ws="property"),ws=="tag"&&(lJe.test(r)?ws="variable":ws="atom"),n.context.type}return aA.atBlock(e,t,n)};aA.keyframes=function(e,t,n){return t.indentation()=="0"&&(e=="}"&&AT(t)||e=="]"||e=="hash"||e=="qualifier"||sy(t.current()))?cJe(e,t,n):e=="{"?po(n,t,"keyframes"):e=="}"?AT(t)?ZB(n,t,!0):po(n,t,"keyframes"):e=="unit"&&/^[0-9]+\%$/.test(t.current())?po(n,t,"keyframes"):e=="word"&&(ws=vI(t.current()),ws=="block-keyword")?(ws="keyword",po(n,t,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test(e)?po(n,t,l0(t)?"block":"atBlock"):e=="mixin"?po(n,t,"block",0):n.context.type};aA.interpolation=function(e,t,n){return e=="{"&&ZB(n,t)&&po(n,t,"block"),e=="}"?t.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||t.string.match(/^\s*[a-z]/i)&&sy(S4(t))?po(n,t,"block"):!t.string.match(/^(\{|\s*\&)/)||t.match(/\s*[\w-]/,!1)?po(n,t,"block",0):po(n,t,"block"):e=="variable-name"?po(n,t,"variableName",0):(e=="word"&&(ws=vI(t.current()),ws=="tag"&&(ws="atom")),n.context.type)};aA.extend=function(e,t,n){return e=="["||e=="="?"extend":e=="]"?ZB(n,t):e=="word"?(ws=vI(t.current()),"extend"):ZB(n,t)};aA.variableName=function(e,t,n){return e=="string"||e=="["||e=="]"||t.current().match(/^(\.|\$)/)?(t.current().match(/^\.[\w-]+/i)&&(ws="variable"),"variableName"):cJe(e,t,n)};const WHr={name:"stylus",startState:function(){return{tokenize:null,state:"block",context:new g9n("block",0,null)}},token:function(e,t){return!t.tokenize&&e.eatSpace()?null:(u7=(t.tokenize||NHr)(e,t),u7&&typeof u7=="object"&&(cpt=u7[1],u7=u7[0]),ws=u7,t.state=aA[t.state](cpt,e,t),ws)},indent:function(e,t,n){var r=e.context,o=t&&t.charAt(0),s=r.indent,a=S4(t),l=r.line.indent,d=e.context.prev?e.context.prev.line.firstWord:"",u=e.context.prev?e.context.prev.line.indent:l;return r.prev&&(o=="}"&&(r.type=="block"||r.type=="atBlock"||r.type=="keyframes")||o==")"&&(r.type=="parens"||r.type=="atBlock_parens")||o=="{"&&r.type=="at")?s=r.indent-n.unit:/(\})/.test(o)||(/@|\$|\d/.test(o)||/^\{/.test(t)||/^\s*\/(\/|\*)/.test(t)||/^\s*\/\*/.test(d)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(t)||/^(\+|-)?[a-z][\w-]*\(/i.test(t)||/^return/.test(t)||oD(a)?s=l:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(o)||sy(a)?/\,\s*$/.test(d)?s=u:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(d)||sy(d)?s=l<=u?u:u+n.unit:s=l:!/,\s*$/.test(t)&&(upt(a)||qB(a))&&(oD(d)?s=l<=u?u:u+n.unit:/^\{/.test(d)?s=l<=u?l:u+n.unit:upt(d)||qB(d)?s=l>=u?u:l:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(d)||/=\s*$/.test(d)||sy(d)||/^\$[\w-\.\[\]\'\"]/.test(d)?s=u+n.unit:s=l)),s},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:yHr}},VHr=Object.freeze(Object.defineProperty({__proto__:null,stylus:WHr},Symbol.toStringTag,{value:"Module"}));function nbe(e){for(var t={},n=0;n~^?!",YHr=":;,.(){}[]",ZHr=/^\-?0b[01][01_]*/,qHr=/^\-?0o[0-7][0-7_]*/,KHr=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,JHr=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,e$r=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,t$r=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,n$r=/^\#[A-Za-z]+/,i$r=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;function A9n(e,t,n){if(e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;var r=e.peek();if(r=="/"){if(e.match("//"))return e.skipToEnd(),"comment";if(e.match("/*"))return t.tokenize.push(SFe),SFe(e,t)}if(e.match(n$r))return"builtin";if(e.match(i$r))return"attribute";if(e.match(ZHr)||e.match(qHr)||e.match(KHr)||e.match(JHr))return"number";if(e.match(t$r))return"property";if(GHr.indexOf(r)>-1)return e.next(),"operator";if(YHr.indexOf(r)>-1)return e.next(),e.match(".."),"punctuation";var o;if(o=e.match(/("""|"|')/)){var s=o$r.bind(null,o[0]);return t.tokenize.push(s),s(e,t)}if(e.match(e$r)){var a=e.current();return XHr.hasOwnProperty(a)?"type":$Hr.hasOwnProperty(a)?"atom":zHr.hasOwnProperty(a)?(HHr.hasOwnProperty(a)&&(t.prev="define"),"keyword"):n=="define"?"def":"variable"}return e.next(),null}function r$r(){var e=0;return function(t,n,r){var o=A9n(t,n,r);if(o=="punctuation"){if(t.current()=="(")++e;else if(t.current()==")"){if(e==0)return t.backUp(1),n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n);--e}}return o}}function o$r(e,t,n){for(var r=e.length==1,o,s=!1;o=t.peek();)if(s){if(t.next(),o=="(")return n.tokenize.push(r$r()),"string";s=!1}else{if(t.match(e))return n.tokenize.pop(),"string";t.next(),s=o=="\\"}return r&&n.tokenize.pop(),"string"}function SFe(e,t){for(var n;n=e.next();)if(n==="/"&&e.eat("*"))t.tokenize.push(SFe);else if(n==="*"&&e.eat("/")){t.tokenize.pop();break}return"comment"}function s$r(e,t,n){this.prev=e,this.align=t,this.indented=n}function a$r(e,t){var n=t.match(/^\s*($|\/[\/\*]|[)}\]])/,!1)?null:t.column()+1;e.context=new s$r(e.context,n,e.indented)}function l$r(e){e.context&&(e.indented=e.context.indented,e.context=e.context.prev)}const c$r={name:"swift",startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(e,t){var n=t.prev;t.prev=null;var r=t.tokenize[t.tokenize.length-1]||A9n,o=r(e,t,n);if(!o||o=="comment"?t.prev=n:t.prev||(t.prev=o),o=="punctuation"){var s=/[\(\[\{]|([\]\)\}])/.exec(e.current());s&&(s[1]?l$r:a$r)(t,e)}return o},indent:function(e,t,n){var r=e.context;if(!r)return 0;var o=/^[\]\}\)]/.test(t);return r.align!=null?r.align-(o?1:0):r.indented+(o?0:n.unit)},languageData:{indentOnInput:/^\s*[\)\}\]]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}},d$r=Object.freeze(Object.defineProperty({__proto__:null,swift:c$r},Symbol.toStringTag,{value:"Module"}));function p9n(e){function t(g,m){g.cmdState.push(m)}function n(g){return g.cmdState.length>0?g.cmdState[g.cmdState.length-1]:null}function r(g){var m=g.cmdState.pop();m&&m.closeBracket()}function o(g){for(var m=g.cmdState,v=m.length-1;v>=0;v--){var f=m[v];if(f.name!="DEFAULT")return f}return{styleIdentifier:function(){return null}}}function s(g,m,v){return function(){this.name=g,this.bracketNo=0,this.style=m,this.styles=v,this.argument=null,this.styleIdentifier=function(){return this.styles[this.bracketNo-1]||null},this.openBracket=function(){return this.bracketNo++,"bracket"},this.closeBracket=function(){}}}var a={};a.importmodule=s("importmodule","tag",["string","builtin"]),a.documentclass=s("documentclass","tag",["","atom"]),a.usepackage=s("usepackage","tag",["atom"]),a.begin=s("begin","tag",["atom"]),a.end=s("end","tag",["atom"]),a.label=s("label","tag",["atom"]),a.ref=s("ref","tag",["atom"]),a.eqref=s("eqref","tag",["atom"]),a.cite=s("cite","tag",["atom"]),a.bibitem=s("bibitem","tag",["atom"]),a.Bibitem=s("Bibitem","tag",["atom"]),a.RBibitem=s("RBibitem","tag",["atom"]),a.DEFAULT=function(){this.name="DEFAULT",this.style="tag",this.styleIdentifier=this.openBracket=this.closeBracket=function(){}};function l(g,m){g.f=m}function d(g,m){var v;if(g.match(/^\\[a-zA-Z@\xc0-\u1fff\u2060-\uffff]+/)){var f=g.current().slice(1);return v=a.hasOwnProperty(f)?a[f]:a.DEFAULT,v=new v,t(m,v),l(m,h),v.style}if(g.match(/^\\[$&%#{}_]/)||g.match(/^\\[,;!\/\\]/))return"tag";if(g.match("\\["))return l(m,function(A,p){return u(A,p,"\\]")}),"keyword";if(g.match("\\("))return l(m,function(A,p){return u(A,p,"\\)")}),"keyword";if(g.match("$$"))return l(m,function(A,p){return u(A,p,"$$")}),"keyword";if(g.match("$"))return l(m,function(A,p){return u(A,p,"$")}),"keyword";var k=g.next();if(k=="%")return g.skipToEnd(),"comment";if(k=="}"||k=="]"){if(v=n(m),v)v.closeBracket(k),l(m,h);else return"error";return"bracket"}else return k=="{"||k=="["?(v=a.DEFAULT,v=new v,t(m,v),"bracket"):/\d/.test(k)?(g.eatWhile(/[\w.%]/),"atom"):(g.eatWhile(/[\w\-_]/),v=o(m),v.name=="begin"&&(v.argument=g.current()),v.styleIdentifier())}function u(g,m,v){if(g.eatSpace())return null;if(v&&g.match(v))return l(m,d),"keyword";if(g.match(/^\\[a-zA-Z@]+/))return"tag";if(g.match(/^[a-zA-Z]+/))return"variableName.special";if(g.match(/^\\[$&%#{}_]/)||g.match(/^\\[,;!\/]/)||g.match(/^[\^_&]/))return"tag";if(g.match(/^[+\-<>|=,\/@!*:;'"`~#?]/))return null;if(g.match(/^(\d+\.\d*|\d*\.\d+|\d+)/))return"number";var f=g.next();return f=="{"||f=="}"||f=="["||f=="]"||f=="("||f==")"?"bracket":f=="%"?(g.skipToEnd(),"comment"):"error"}function h(g,m){var v=g.peek(),f;return v=="{"||v=="["?(f=n(m),f.openBracket(v),g.eat(v),l(m,d),"bracket"):/[ \t\r]/.test(v)?(g.eat(v),null):(l(m,d),r(m),d(g,m))}return{name:"stex",startState:function(){var g=e?function(m,v){return u(m,v)}:d;return{cmdState:[],f:g}},copyState:function(g){return{cmdState:g.cmdState.slice(),f:g.f}},token:function(g,m){return m.f(g,m)},blankLine:function(g){g.f=d,g.cmdState.length=0},languageData:{commentTokens:{line:"%"}}}}const u$r=p9n(!1),h$r=p9n(!0),hpt=Object.freeze(Object.defineProperty({__proto__:null,stex:u$r,stexMath:h$r},Symbol.toStringTag,{value:"Module"}));function b9n(e){var t=e.statementIndentUnit,n=e.dontAlignCalls,r=e.noIndentKeywords||[],o=e.multiLineStrings,s=e.hooks||{};function a(R){for(var I={},F=R.split(" "),j=0;j=0)return j}var W=R.context,H=I&&I.charAt(0);W.type=="statement"&&H=="}"&&(W=W.prev);var $=!1,G=I.match(A);return G&&($=M(G[0],W.type)),W.type=="statement"?W.indented+(H=="{"?0:t||F.unit):p.test(W.type)&&W.align&&!n?W.column+($?0:1):W.type==")"&&!$?W.indented+(t||F.unit):W.indented+($?0:F.unit)},languageData:{indentOnInput:B(),commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}}}const f$r=b9n({});var Q8e={"|":"link",">":"property",$:"variable",$$:"variable","?$":"qualifier","?*":"qualifier","-":"contentSeparator","/":"property","/-":"property","@":"variableName.special","@-":"variableName.special","@++":"variableName.special","@+=":"variableName.special","@+=-":"variableName.special","@--":"variableName.special","@-=":"variableName.special","%+":"tag","%-":"tag","%":"tag",">>":"tag","<<":"tag","<>":"tag","#":"tag","^":"attribute","^^":"attribute","^!":"attribute","*":"variable","**":"variable","\\":"keyword",'"':"comment"},fpt={"/":"beh-hier",">":"beh-hier","-":"phys-hier","|":"pipe","?":"when","@":"stage","\\":"keyword"},D8e=3,gpt=/^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/,g$r=/^[! ] */,m$r=/^\/[\/\*]/;const k$r=b9n({hooks:{electricInput:!1,token:function(e,t){var n=void 0,r;if(e.sol()&&!t.tlvInBlockComment){e.peek()=="\\"&&(n="def",e.skipToEnd(),e.string.match(/\\SV/)?t.tlvCodeActive=!1:e.string.match(/\\TLV/)&&(t.tlvCodeActive=!0)),t.tlvCodeActive&&e.pos==0&&t.indented==0&&(r=e.match(g$r,!1))&&(t.indented=r[0].length);var o=t.indented,s=o/D8e;if(s<=t.tlvIndentationStyle.length){var a=e.string.length==o,l=s*D8e;if(l0||(t.tlvIndentationStyle[s]=fpt[u],s++))}if(!a)for(;t.tlvIndentationStyle.length>s;)t.tlvIndentationStyle.pop()}t.tlvNextIndent=o}if(t.tlvCodeActive){var r;if(n===void 0)if(t.tlvInBlockComment)e.match(/^.*?\*\//)?t.tlvInBlockComment=!1:e.skipToEnd(),n="comment";else if((r=e.match(m$r))&&!t.tlvInBlockComment)r[0]=="//"?e.skipToEnd():t.tlvInBlockComment=!0,n="comment";else if(r=e.match(gpt)){var h=r[1],g=r[2];Q8e.hasOwnProperty(h)&&(g.length>0||e.eol())?n=Q8e[h]:e.backUp(e.current().length-1)}else e.match(/^\t+/)?n="invalid":e.match(/^[\[\]{}\(\);\:]+/)?n="meta":(r=e.match(/^[mM]4([\+_])?[\w\d_]*/))?n=r[1]=="+"?"keyword.special":"keyword":e.match(/^ +/)?e.eol()&&(n="error"):e.match(/^[\w\d_]+/)?n="number":e.next()}else e.match(/^[mM]4([\w\d_]*)/)&&(n="keyword");return n},indent:function(e){return e.tlvCodeActive==!0?e.tlvNextIndent:-1},startState:function(e){e.tlvIndentationStyle=[],e.tlvCodeActive=!0,e.tlvNextIndent=-1,e.tlvInBlockComment=!1}}}),mpt=Object.freeze(Object.defineProperty({__proto__:null,tlv:k$r,verilog:f$r},Symbol.toStringTag,{value:"Module"}));function w9n(e){for(var t={},n=e.split(" "),r=0;r!?^\/\|]/;function B8e(e,t,n){return t.tokenize=n,n(e,t)}function ibe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if((r=='"'||r=="'")&&t.inParams)return B8e(e,t,v$r(r));if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1),null;if(/\d/.test(r))return e.eatWhile(/[\w\.]/),"number";if(r=="#")return e.eat("*")?B8e(e,t,A$r):r=="#"&&e.match(/ *\[ *\[/)?B8e(e,t,p$r):(e.skipToEnd(),"comment");if(r=='"')return e.skipTo(/"/),"comment";if(r=="$")return e.eatWhile(/[$_a-z0-9A-Z\.{:]/),e.eatWhile(/}/),t.beforeParams=!0,"builtin";if(Apt.test(r))return e.eatWhile(Apt),"comment";e.eatWhile(/[\w\$_{}\xa1-\uffff]/);var o=e.current().toLowerCase();return kpt&&kpt.propertyIsEnumerable(o)?"keyword":vpt&&vpt.propertyIsEnumerable(o)?(t.beforeParams=!0,"keyword"):null}function v$r(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=ibe),"string"}}function A$r(e,t){for(var n=!1,r;r=e.next();){if(r=="#"&&n){t.tokenize=ibe;break}n=r=="*"}return"comment"}function p$r(e,t){for(var n=0,r;r=e.next();){if(r=="#"&&n==2){t.tokenize=ibe;break}r=="]"?n++:r!=" "&&(n=0)}return"meta"}const b$r={name:"tcl",startState:function(){return{tokenize:ibe,beforeParams:!1,inParams:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{line:"#"}}},w$r=Object.freeze(Object.defineProperty({__proto__:null,tcl:b$r},Symbol.toStringTag,{value:"Module"}));var Tv={addition:"inserted",attributes:"propertyName",bold:"strong",cite:"keyword",code:"monospace",definitionList:"list",deletion:"deleted",div:"punctuation",em:"emphasis",footnote:"variable",footCite:"qualifier",header:"heading",html:"comment",image:"atom",italic:"emphasis",link:"link",linkDefinition:"link",list1:"list",list2:"list.special",list3:"list",notextile:"string.special",pre:"operator",p:"content",quote:"bracket",span:"quote",specialChar:"character",strong:"strong",sub:"content.special",sup:"content.special",table:"variableName.special",tableHeading:"operator"};function O$r(e,t){t.mode=nu.newLayout,t.tableHeading=!1,t.layoutType==="definitionList"&&t.spanningLayout&&e.match(Fl("definitionListEnd"),!1)&&(t.spanningLayout=!1)}function ppt(e,t,n){if(n==="_")return e.eat("_")?X2(e,t,"italic",/__/,2):X2(e,t,"em",/_/,1);if(n==="*")return e.eat("*")?X2(e,t,"bold",/\*\*/,2):X2(e,t,"strong",/\*/,1);if(n==="[")return e.match(/\d+\]/)&&(t.footCite=!0),t0(t);if(n==="("){var r=e.match(/^(r|tm|c)\)/);if(r)return Tv.specialChar}if(n==="<"&&e.match(/(\w+)[^>]+>[^<]+<\/\1>/))return Tv.html;if(n==="?"&&e.eat("?"))return X2(e,t,"cite",/\?\?/,2);if(n==="="&&e.eat("="))return X2(e,t,"notextile",/==/,2);if(n==="-"&&!e.eat("-"))return X2(e,t,"deletion",/-/,1);if(n==="+")return X2(e,t,"addition",/\+/,1);if(n==="~")return X2(e,t,"sub",/~/,1);if(n==="^")return X2(e,t,"sup",/\^/,1);if(n==="%")return X2(e,t,"span",/%/,1);if(n==="@")return X2(e,t,"code",/@/,1);if(n==="!"){var o=X2(e,t,"image",/(?:\([^\)]+\))?!/,1);return e.match(/^:\S+/),o}return t0(t)}function X2(e,t,n,r,o){var s=e.pos>o?e.string.charAt(e.pos-o-1):null,a=e.peek();if(t[n]){if((!a||/\W/.test(a))&&s&&/\S/.test(s)){var l=t0(t);return t[n]=!1,l}}else(!s||/\W/.test(s))&&a&&/\S/.test(a)&&e.match(new RegExp("^.*\\S"+r.source+"(?:\\W|$)"),!1)&&(t[n]=!0,t.mode=nu.attributes);return t0(t)}function t0(e){var t=O9n(e);if(t)return t;var n=[];return e.layoutType&&n.push(Tv[e.layoutType]),n=n.concat(y$r(e,"addition","bold","cite","code","deletion","em","footCite","image","italic","link","span","strong","sub","sup","table","tableHeading")),e.layoutType==="header"&&n.push(Tv.header+"-"+e.header),n.length?n.join(" "):null}function O9n(e){var t=e.layoutType;switch(t){case"notextile":case"code":case"pre":return Tv[t];default:return e.notextile?Tv.notextile+(t?" "+Tv[t]:""):null}}function y$r(e){for(var t=[],n=1;n]+)?>(?:[^<]+<\/\1>)?/,link:/[^"]+":\S/,linkDefinition:/\[[^\s\]]+\]\S+/,list:/(?:#+|\*+)/,notextile:"notextile",para:"p",pre:"pre",table:"table",tableCellAttributes:/[\/\\]\d+/,tableHeading:/\|_\./,tableText:/[^"_\*\[\(\?\+~\^%@|-]+/,text:/[^!"_=\*\[\(<\?\+~\^%@-]+/},attributes:{align:/(?:<>|<|>|=)/,selector:/\([^\(][^\)]+\)/,lang:/\[[^\[\]]+\]/,pad:/(?:\(+|\)+){1,2}/,css:/\{[^\}]+\}/},createRe:function(e){switch(e){case"drawTable":return oa.makeRe("^",oa.single.drawTable,"$");case"html":return oa.makeRe("^",oa.single.html,"(?:",oa.single.html,")*","$");case"linkDefinition":return oa.makeRe("^",oa.single.linkDefinition,"$");case"listLayout":return oa.makeRe("^",oa.single.list,Fl("allAttributes"),"*\\s+");case"tableCellAttributes":return oa.makeRe("^",oa.choiceRe(oa.single.tableCellAttributes,Fl("allAttributes")),"+\\.");case"type":return oa.makeRe("^",Fl("allTypes"));case"typeLayout":return oa.makeRe("^",Fl("allTypes"),Fl("allAttributes"),"*\\.\\.?","(\\s+|$)");case"attributes":return oa.makeRe("^",Fl("allAttributes"),"+");case"allTypes":return oa.choiceRe(oa.single.div,oa.single.foot,oa.single.header,oa.single.bc,oa.single.bq,oa.single.notextile,oa.single.pre,oa.single.table,oa.single.para);case"allAttributes":return oa.choiceRe(oa.attributes.selector,oa.attributes.css,oa.attributes.lang,oa.attributes.align,oa.attributes.pad);default:return oa.makeRe("^",oa.single[e])}},makeRe:function(){for(var e="",t=0;t$/,P$r=/^\x3C!--\}\}\}-->$/,F$r=/^\{\{\{$/,N$r=/^\}\}\}$/,U$r=/.*?\}\}\}/;function fx(e,t,n){return t.tokenize=n,n(e,t)}function Oy(e,t){var n=e.sol(),r=e.peek();if(t.block=!1,n&&/[<\/\*{}\-]/.test(r)){if(e.match(F$r))return t.block=!0,fx(e,t,bpt);if(e.match(B$r))return"quote";if(e.match(Q$r)||e.match(D$r)||e.match(R$r)||e.match(I$r)||e.match(M$r)||e.match(P$r))return"comment";if(e.match(T$r))return"contentSeparator"}if(e.next(),n&&/[\/\*!#;:>|]/.test(r)){if(r=="!")return e.skipToEnd(),"header";if(r=="*")return e.eatWhile("*"),"comment";if(r=="#")return e.eatWhile("#"),"comment";if(r==";")return e.eatWhile(";"),"comment";if(r==":")return e.eatWhile(":"),"comment";if(r==">")return e.eatWhile(">"),"quote";if(r=="|")return"header"}if(r=="{"&&e.match("{{"))return fx(e,t,bpt);if(/[hf]/i.test(r)&&/[ti]/i.test(e.peek())&&e.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))return"link";if(r=='"')return"string";if(r=="~"||/[\[\]]/.test(r)&&e.match(r))return"brace";if(r=="@")return e.eatWhile(E$r),"link";if(/\d/.test(r))return e.eatWhile(/\d/),"number";if(r=="/"){if(e.eat("%"))return fx(e,t,j$r);if(e.eat("/"))return fx(e,t,V$r)}if(r=="_"&&e.eat("_"))return fx(e,t,z$r);if(r=="-"&&e.eat("-")){if(e.peek()!=" ")return fx(e,t,H$r);if(e.peek()==" ")return"brace"}return r=="'"&&e.eat("'")?fx(e,t,W$r):r=="<"&&e.eat("<")?fx(e,t,$$r):(e.eatWhile(/[\w\$_]/),L$r.propertyIsEnumerable(e.current())?"keyword":null)}function j$r(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=Oy;break}n=r=="%"}return"comment"}function W$r(e,t){for(var n=!1,r;r=e.next();){if(r=="'"&&n){t.tokenize=Oy;break}n=r=="'"}return"strong"}function bpt(e,t){var n=t.block;return n&&e.current()?"comment":!n&&e.match(U$r)||n&&e.sol()&&e.match(N$r)?(t.tokenize=Oy,"comment"):(e.next(),"comment")}function V$r(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=Oy;break}n=r=="/"}return"emphasis"}function z$r(e,t){for(var n=!1,r;r=e.next();){if(r=="_"&&n){t.tokenize=Oy;break}n=r=="_"}return"link"}function H$r(e,t){for(var n=!1,r;r=e.next();){if(r=="-"&&n){t.tokenize=Oy;break}n=r=="-"}return"deleted"}function $$r(e,t){if(e.current()=="<<")return"meta";var n=e.next();return n?n==">"&&e.peek()==">"?(e.next(),t.tokenize=Oy,"meta"):(e.eatWhile(/[\w\$_]/),x$r.propertyIsEnumerable(e.current())?"keyword":null):(t.tokenize=Oy,null)}const X$r={name:"tiddlywiki",startState:function(){return{tokenize:Oy}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n}},G$r=Object.freeze(Object.defineProperty({__proto__:null,tiddlyWiki:X$r},Symbol.toStringTag,{value:"Module"}));function $p(e,t,n){return function(r,o){for(;!r.eol();){if(r.match(t)){o.tokenize=w4;break}r.next()}return n&&(o.tokenize=n),e}}function vP(e){return function(t,n){for(;!t.eol();)t.next();return n.tokenize=w4,e}}function w4(e,t){function n(s){return t.tokenize=s,s(e,t)}var r=e.sol(),o=e.next();switch(o){case"{":return e.eat("/"),e.eatSpace(),e.eatWhile(/[^\s\u00a0=\"\'\/?(}]/),t.tokenize=dJe,"tag";case"_":if(e.eat("_"))return n($p("strong","__",w4));break;case"'":if(e.eat("'"))return n($p("em","''",w4));break;case"(":if(e.eat("("))return n($p("link","))",w4));break;case"[":return n($p("url","]",w4));case"|":if(e.eat("|"))return n($p("comment","||"));break;case"-":if(e.eat("="))return n($p("header string","=-",w4));if(e.eat("-"))return n($p("error tw-deleted","--",w4));break;case"=":if(e.match("=="))return n($p("tw-underline","===",w4));break;case":":if(e.eat(":"))return n($p("comment","::"));break;case"^":return n($p("tw-box","^"));case"~":if(e.match("np~"))return n($p("meta","~/np~"));break}if(r)switch(o){case"!":return e.match("!!!!!")||e.match("!!!!")||e.match("!!!")||e.match("!!"),n(vP("header string"));case"*":case"#":case"+":return n(vP("tw-listitem bracket"))}return null}var LFe,Mue;function dJe(e,t){var n=e.next(),r=e.peek();return n=="}"?(t.tokenize=w4,"tag"):n=="("||n==")"?"bracket":n=="="?(Mue="equals",r==">"&&(e.next(),r=e.peek()),/[\'\"]/.test(r)||(t.tokenize=Z$r()),"operator"):/[\'\"]/.test(n)?(t.tokenize=Y$r(n),t.tokenize(e,t)):(e.eatWhile(/[^\s\u00a0=\"\'\/?]/),"keyword")}function Y$r(e){return function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=dJe;break}return"string"}}function Z$r(){return function(e,t){for(;!e.eol();){var n=e.next(),r=e.peek();if(n==" "||n==","||/[ )}]/.test(r)){t.tokenize=dJe;break}}return"string"}}var ug,$W;function fie(){for(var e=arguments.length-1;e>=0;e--)ug.cc.push(arguments[e])}function Vv(){return fie.apply(null,arguments),!0}function y9n(e,t){var n=ug.context&&ug.context.noIndent;ug.context={prev:ug.context,pluginName:e,indent:ug.indented,startOfLine:t,noIndent:n}}function wpt(){ug.context&&(ug.context=ug.context.prev)}function q$r(e){if(e=="openPlugin")return ug.pluginName=LFe,Vv(xFe,K$r(ug.startOfLine));if(e=="closePlugin"){var t=!1;return ug.context?(t=ug.context.pluginName!=LFe,wpt()):t=!0,t&&($W="error"),Vv(J$r(t))}else return e=="string"&&((!ug.context||ug.context.name!="!cdata")&&y9n("!cdata"),ug.tokenize==w4&&wpt()),Vv()}function K$r(e){return function(t){return t=="selfclosePlugin"||t=="endPlugin"||t=="endPlugin"&&y9n(ug.pluginName,e),Vv()}}function J$r(e){return function(t){return e&&($W="error"),t=="endPlugin"?Vv():fie()}}function xFe(e){return e=="keyword"?($W="attribute",Vv(xFe)):e=="equals"?Vv(eXr,xFe):fie()}function eXr(e){return e=="keyword"?($W="string",Vv()):e=="string"?Vv(C9n):fie()}function C9n(e){return e=="string"?Vv(C9n):fie()}const tXr={name:"tiki",startState:function(){return{tokenize:w4,cc:[],indented:0,startOfLine:!0,pluginName:null,context:null}},token:function(e,t){if(e.sol()&&(t.startOfLine=!0,t.indented=e.indentation()),e.eatSpace())return null;$W=Mue=LFe=null;var n=t.tokenize(e,t);if((n||Mue)&&n!="comment")for(ug=t;;){var r=t.cc.pop()||q$r;if(r(Mue||n))break}return t.startOfLine=!1,$W||n},indent:function(e,t,n){var r=e.context;if(r&&r.noIndent)return 0;for(r&&/^{\//.test(t)&&(r=r.prev);r&&!r.startOfLine;)r=r.prev;return r?r.indent+n.unit:0}},nXr=Object.freeze(Object.defineProperty({__proto__:null,tiki:tXr},Symbol.toStringTag,{value:"Module"})),iXr={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(e,t){let n;if(!t.inString&&(n=e.match(/^('''|"""|'|")/))&&(t.stringType=n[0],t.inString=!0),e.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(e.match(t.stringType))t.inString=!1;else if(e.peek()==="\\")e.next(),e.next();else{if(e.eol())break;e.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&e.peek()==="]")return e.next(),t.inArray--,"bracket";if(t.lhs&&e.peek()==="["&&e.skipTo("]"))return e.next(),e.peek()==="]"&&e.next(),"atom";if(e.peek()==="#")return e.skipToEnd(),"comment";if(e.eatSpace())return null;if(t.lhs&&e.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(t.lhs&&e.peek()==="=")return e.next(),t.lhs=!1,null;if(!t.lhs&&e.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(e.match("true")||e.match("false")))return"atom";if(!t.lhs&&e.peek()==="[")return t.inArray++,e.next(),"bracket";if(!t.lhs&&e.match(/^\-?\d+(?:\.\d+)?/))return"number";e.eatSpace()||e.next()}return null},languageData:{commentTokens:{line:"#"}}},rXr=Object.freeze(Object.defineProperty({__proto__:null,toml:iXr},Symbol.toStringTag,{value:"Module"}));var Opt={};function oXr(e){if(e.eatSpace())return null;var t=e.sol(),n=e.next();if(n==="\\")return e.match("fB")||e.match("fR")||e.match("fI")||e.match("u")||e.match("d")||e.match("%")||e.match("&")?"string":e.match("m[")?(e.skipTo("]"),e.next(),"string"):e.match("s+")||e.match("s-")?(e.eatWhile(/[\d-]/),"string"):((e.match("(")||e.match("*("))&&e.eatWhile(/[\w-]/),"string");if(t&&(n==="."||n==="'")&&e.eat("\\")&&e.eat('"'))return e.skipToEnd(),"comment";if(t&&n==="."){if(e.match("B ")||e.match("I ")||e.match("R "))return"attribute";if(e.match("TH ")||e.match("SH ")||e.match("SS ")||e.match("HP "))return e.skipToEnd(),"quote";if(e.match(/[A-Z]/)&&e.match(/[A-Z]/)||e.match(/[a-z]/)&&e.match(/[a-z]/))return"attribute"}e.eatWhile(/[\w-]/);var r=e.current();return Opt.hasOwnProperty(r)?Opt[r]:null}function sXr(e,t){return(t.tokens[0]||oXr)(e,t)}const aXr={name:"troff",startState:function(){return{tokens:[]}},token:function(e,t){return sXr(e,t)}},lXr=Object.freeze(Object.defineProperty({__proto__:null,troff:aXr},Symbol.toStringTag,{value:"Module"}));function hk(e){for(var t={},n=e.split(" "),r=0;r!\/]/,KA;function CXr(e,t){var n=e.next();if(n=='"'||n=="'")return t.tokenize=_Xr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\\:\?\.]/.test(n))return KA=n,"punctuation";if(n=="#")return e.skipToEnd(),"atom";if(n=="%")return e.eatWhile(/\b/),"atom";if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("*"))return t.tokenize=Cpt,Cpt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(ypt.test(n))return n=="@"&&(e.match("try")||e.match("catch")||e.match("lazy"))?"keyword":(e.eatWhile(ypt),"operator");e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current();return cXr.propertyIsEnumerable(r)?"keyword":dXr.propertyIsEnumerable(r)?"builtin":uXr.propertyIsEnumerable(r)||fXr.propertyIsEnumerable(r)||gXr.propertyIsEnumerable(r)||hXr.propertyIsEnumerable(r)||mXr.propertyIsEnumerable(r)||kXr.propertyIsEnumerable(r)?"def":vXr.propertyIsEnumerable(r)||AXr.propertyIsEnumerable(r)||pXr.propertyIsEnumerable(r)?"string":bXr.propertyIsEnumerable(r)?"typeName.standard":wXr.propertyIsEnumerable(r)?"modifier":OXr.propertyIsEnumerable(r)?"atom":"variable"}function _Xr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){var a=t.peek();a&&(a=a.toLowerCase(),(a=="b"||a=="h"||a=="o")&&t.next()),s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=null),"string"}}function Cpt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function S9n(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Zae(e,t,n){var r=e.indented;return e.context&&e.context.type=="statement"&&(r=e.context.indented),e.context=new S9n(r,t,n,null,e.context)}function eX(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const SXr={name:"ttcn",startState:function(){return{tokenize:null,context:new S9n(0,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;KA=null;var r=(t.tokenize||CXr)(e,t);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(KA==";"||KA==":"||KA==",")&&n.type=="statement")eX(t);else if(KA=="{")Zae(t,e.column(),"}");else if(KA=="[")Zae(t,e.column(),"]");else if(KA=="(")Zae(t,e.column(),")");else if(KA=="}"){for(;n.type=="statement";)n=eX(t);for(n.type=="}"&&(n=eX(t));n.type=="statement";)n=eX(t)}else KA==n.type?eX(t):yXr&&((n.type=="}"||n.type=="top")&&KA!=";"||n.type=="statement"&&KA=="newstatement")&&Zae(t,e.column(),"statement");return t.startOfLine=!1,r},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:_9n}},LXr=Object.freeze(Object.defineProperty({__proto__:null,ttcn:SXr},Symbol.toStringTag,{value:"Module"}));function R8e(e){for(var t={},n=e.split(" "),r=0;r=&|]/;function E9n(e,t){var n=e.next();if(s5=null,n=="<"&&!e.match(/^[\s\u00a0=]/,!1))return e.match(/^[^\s\u00a0>]*>?/),"atom";if(n=='"'||n=="'")return t.tokenize=PXr(n),t.tokenize(e,t);if(/[{}\(\),\.;\[\]]/.test(n))return s5=n,null;if(n=="#")return e.skipToEnd(),"comment";if(Spt.test(n))return e.eatWhile(Spt),null;if(n==":")return"operator";if(e.eatWhile(/[_\w\d]/),e.peek()==":")return"variableName.special";var r=e.current();return MXr.test(r)?"meta":n>="A"&&n<="Z"?"comment":"keyword";var r=e.current()}function PXr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=E9n;break}r=!r&&o=="\\"}return"string"}}function Kae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function I8e(e){e.indent=e.context.indent,e.context=e.context.prev}const FXr={name:"turtle",startState:function(){return{tokenize:E9n,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),s5=="(")Kae(t,")",e.column());else if(s5=="[")Kae(t,"]",e.column());else if(s5=="{")Kae(t,"}",e.column());else if(/[\]\}\)]/.test(s5)){for(;t.context&&t.context.type=="pattern";)I8e(t);t.context&&s5==t.context.type&&I8e(t)}else s5=="."&&t.context&&t.context.type=="pattern"?I8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Kae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"#"}}},NXr=Object.freeze(Object.defineProperty({__proto__:null,turtle:FXr},Symbol.toStringTag,{value:"Module"}));function Nz(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var T9n=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],UXr=Nz(T9n),Q9n=["unsigned","short","long","unrestricted","float","double","boolean","byte","octet","Promise","ArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","ByteString","DOMString","USVString","sequence","object","RegExp","Error","DOMException","FrozenArray","any","void"],jXr=Nz(Q9n),D9n=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],WXr=Nz(D9n),B9n=["true","false","Infinity","NaN","null"],VXr=Nz(B9n),zXr=["callback","dictionary","enum","interface"],HXr=Nz(zXr),$Xr=["typedef"],XXr=Nz($Xr),GXr=/^[:<=>?]/,YXr=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,ZXr=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,Lpt=/^_?[A-Za-z][0-9A-Z_a-z-]*/,qXr=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,KXr=/^"[^"]*"/,JXr=/^\/\*.*?\*\//,eGr=/^\/\*.*/,tGr=/^.*?\*\//;function nGr(e,t){if(e.eatSpace())return null;if(t.inComment)return e.match(tGr)?(t.inComment=!1,"comment"):(e.skipToEnd(),"comment");if(e.match("//"))return e.skipToEnd(),"comment";if(e.match(JXr))return"comment";if(e.match(eGr))return t.inComment=!0,"comment";if(e.match(/^-?[0-9\.]/,!1)&&(e.match(YXr)||e.match(ZXr)))return"number";if(e.match(KXr))return"string";if(t.startDef&&e.match(Lpt))return"def";if(t.endDef&&e.match(qXr))return t.endDef=!1,"def";if(e.match(WXr))return"keyword";if(e.match(jXr)){var n=t.lastToken,r=(e.match(/^\s*(.+?)\b/,!1)||[])[1];return n===":"||n==="implements"||r==="implements"||r==="="?"builtin":"type"}return e.match(UXr)?"builtin":e.match(VXr)?"atom":e.match(Lpt)?"variable":e.match(GXr)?"operator":(e.next(),null)}const iGr={name:"webidl",startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(e,t){var n=nGr(e,t);if(n){var r=e.current();t.lastToken=r,n==="keyword"?(t.startDef=HXr.test(r),t.endDef=t.endDef||XXr.test(r)):t.startDef=!1}return n},languageData:{autocomplete:T9n.concat(Q9n).concat(D9n).concat(B9n)}},rGr=Object.freeze(Object.defineProperty({__proto__:null,webIDL:iGr},Symbol.toStringTag,{value:"Module"}));var EFe="error";function rE(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var oGr=new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),sGr=new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),aGr=new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),lGr=new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),cGr=new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),dGr=new RegExp("^[_A-Za-z][_A-Za-z0-9]*"),R9n=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],I9n=["else","elseif","case","catch","finally"],M9n=["next","loop"],P9n=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],uGr=rE(P9n),F9n=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],N9n=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],hGr=rE(F9n),fGr=rE(N9n),gGr='"',mGr=rE(R9n),U9n=rE(I9n),j9n=rE(M9n),W9n=rE(["end"]),kGr=rE(["do"]);function TFe(e,t){t.currentIndent++}function Pue(e,t){t.currentIndent--}function QFe(e,t){if(e.eatSpace())return null;var n=e.peek();if(n==="'")return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var r=!1;if((e.match(/^\d*\.\d+F?/i)||e.match(/^\d+\.\d*F?/)||e.match(/^\.\d+F?/))&&(r=!0),r)return e.eat(/J/i),"number";var o=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?o=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),o=!0):e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}return e.match(gGr)?(t.tokenize=vGr(e.current()),t.tokenize(e,t)):e.match(cGr)||e.match(lGr)?null:e.match(aGr)||e.match(oGr)||e.match(uGr)?"operator":e.match(sGr)?null:e.match(kGr)?(TFe(e,t),t.doInCurrentLine=!0,"keyword"):e.match(mGr)?(t.doInCurrentLine?t.doInCurrentLine=!1:TFe(e,t),"keyword"):e.match(U9n)?"keyword":e.match(W9n)?(Pue(e,t),Pue(e,t),"keyword"):e.match(j9n)?(Pue(e,t),"keyword"):e.match(fGr)||e.match(hGr)?"keyword":e.match(dGr)?"variable":(e.next(),EFe)}function vGr(e){var t=e.length==1,n="string";return function(r,o){for(;!r.eol();){if(r.eatWhile(/[^'"]/),r.match(e))return o.tokenize=QFe,n;r.eat(/['"]/)}return t&&(o.tokenize=QFe),n}}function AGr(e,t){var n=t.tokenize(e,t),r=e.current();if(r===".")return n=t.tokenize(e,t),n==="variable"?"variable":EFe;var o="[({".indexOf(r);return o!==-1&&TFe(e,t),o="])}".indexOf(r),o!==-1&&Pue(e,t)?EFe:n}const pGr={name:"vb",startState:function(){return{tokenize:QFe,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(e,t){e.sol()&&(t.currentIndent+=t.nextLineIndent,t.nextLineIndent=0,t.doInCurrentLine=0);var n=AGr(e,t);return t.lastToken={style:n,content:e.current()},n},indent:function(e,t,n){var r=t.replace(/^\s+|\s+$/g,"");return r.match(j9n)||r.match(W9n)||r.match(U9n)?n.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*n.unit},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:"'"},autocomplete:R9n.concat(I9n).concat(M9n).concat(P9n).concat(F9n).concat(N9n)}},bGr=Object.freeze(Object.defineProperty({__proto__:null,vb:pGr},Symbol.toStringTag,{value:"Module"}));function V9n(e){var t="error";function n(q){return new RegExp("^(("+q.join(")|(")+"))\\b","i")}var r=new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),o=new RegExp("^((<>)|(<=)|(>=))"),s=new RegExp("^[\\.,]"),a=new RegExp("^[\\(\\)]"),l=new RegExp("^[A-Za-z][_A-Za-z0-9]*"),d=["class","sub","select","while","if","function","property","with","for"],u=["else","elseif","case"],h=["next","loop","wend"],g=n(["and","or","not","xor","is","mod","eqv","imp"]),m=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on error resume next","on error goto 0","option explicit","call","me"],v=["true","false","nothing","empty","null"],f=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],k=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],A=["WScript","err","debug","RegExp"],p=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],b=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],w=["server","response","request","session","application"],O=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],y=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],C=b.concat(p);A=A.concat(k),e.isASP&&(A=A.concat(w),C=C.concat(y,O));var _=n(m),S=n(v),L=n(f),E=n(A),T=n(C),D='"',P=n(d),Q=n(u),M=n(h),B=n(["end"]),R=n(["do"]),I=n(["on error resume next","exit"]),F=n(["rem"]);function j(q,re){re.currentIndent++}function W(q,re){re.currentIndent--}function H(q,re){if(q.eatSpace())return null;var J=q.peek();if(J==="'"||q.match(F))return q.skipToEnd(),"comment";if(q.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!q.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var oe=!1;if((q.match(/^\d*\.\d+/i)||q.match(/^\d+\.\d*/)||q.match(/^\.\d+/))&&(oe=!0),oe)return q.eat(/J/i),"number";var se=!1;if(q.match(/^&H[0-9a-f]+/i)||q.match(/^&O[0-7]+/i)?se=!0:q.match(/^[1-9]\d*F?/)?(q.eat(/J/i),se=!0):q.match(/^0(?![\dx])/i)&&(se=!0),se)return q.eat(/L/i),"number"}return q.match(D)?(re.tokenize=$(q.current()),re.tokenize(q,re)):q.match(o)||q.match(r)||q.match(g)?"operator":q.match(s)?null:q.match(a)?"bracket":q.match(I)?(re.doInCurrentLine=!0,"keyword"):q.match(R)?(j(q,re),re.doInCurrentLine=!0,"keyword"):q.match(P)?(re.doInCurrentLine?re.doInCurrentLine=!1:j(q,re),"keyword"):q.match(Q)?"keyword":q.match(B)?(W(q,re),W(q,re),"keyword"):q.match(M)?(re.doInCurrentLine?re.doInCurrentLine=!1:W(q,re),"keyword"):q.match(_)?"keyword":q.match(S)?"atom":q.match(T)?"variableName.special":q.match(L)||q.match(E)?"builtin":q.match(l)?"variable":(q.next(),t)}function $(q){var re=q.length==1,J="string";return function(oe,se){for(;!oe.eol();){if(oe.eatWhile(/[^'"]/),oe.match(q))return se.tokenize=H,J;oe.eat(/['"]/)}return re&&(se.tokenize=H),J}}function G(q,re){var J=re.tokenize(q,re),oe=q.current();return oe==="."?(J=re.tokenize(q,re),oe=q.current(),J&&(J.substr(0,8)==="variable"||J==="builtin"||J==="keyword")?((J==="builtin"||J==="keyword")&&(J="variable"),C.indexOf(oe.substr(1))>-1&&(J="keyword"),J):t):J}return{name:"vbscript",startState:function(){return{tokenize:H,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(q,re){q.sol()&&(re.currentIndent+=re.nextLineIndent,re.nextLineIndent=0,re.doInCurrentLine=0);var J=G(q,re);return re.lastToken={style:J,content:q.current()},J===null&&(J=null),J},indent:function(q,re,J){var oe=re.replace(/^\s+|\s+$/g,"");return oe.match(M)||oe.match(B)||oe.match(Q)?J.unit*(q.currentIndent-1):q.currentIndent<0?0:q.currentIndent*J.unit}}}const wGr=V9n({}),OGr=V9n({isASP:!0}),yGr=Object.freeze(Object.defineProperty({__proto__:null,vbScript:wGr,vbScriptASP:OGr},Symbol.toStringTag,{value:"Module"}));function uJe(e){for(var t={},n=e.split(" "),r=0;r!?:\/|]/;function ele(e,t,n){return t.tokenize=n,n(e,t)}function sbe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if(r=="'"&&!t.inString&&t.inParams)return t.lastTokenWasBuiltin=!1,ele(e,t,Qpt(r));if(r=='"'){if(t.lastTokenWasBuiltin=!1,t.inString)return t.inString=!1,"string";if(t.inParams)return ele(e,t,Qpt(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1,t.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(/[\w\.]/),"number";if(r=="#"&&e.eat("*"))return t.lastTokenWasBuiltin=!1,ele(e,t,CGr);if(r=="#"&&e.match(/ *\[ *\[/))return t.lastTokenWasBuiltin=!1,ele(e,t,_Gr);if(r=="#"&&e.eat("#"))return t.lastTokenWasBuiltin=!1,e.skipToEnd(),"comment";if(r=="$")return e.eat("!"),e.eatWhile(/[\w\d\$_\.{}-]/),Ept&&Ept.propertyIsEnumerable(e.current())?"keyword":(t.lastTokenWasBuiltin=!0,t.beforeParams=!0,"builtin");if(Tpt.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(Tpt),"operator";e.eatWhile(/[\w\$_{}@]/);var o=e.current();return xpt&&xpt.propertyIsEnumerable(o)?"keyword":Jae&&Jae.propertyIsEnumerable(o)||e.current().match(/^#@?[a-z0-9_]+ *$/i)&&e.peek()=="("&&!(Jae&&Jae.propertyIsEnumerable(o.toLowerCase()))?(t.beforeParams=!0,t.lastTokenWasBuiltin=!1,"keyword"):t.inString?(t.lastTokenWasBuiltin=!1,"string"):e.pos>o.length&&e.string.charAt(e.pos-o.length-1)=="."&&t.lastTokenWasBuiltin?"builtin":(t.lastTokenWasBuiltin=!1,null)}}function Qpt(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}if(e=='"'&&t.peek()=="$"&&!r){n.inString=!0,s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=sbe),"string"}}function CGr(e,t){for(var n=!1,r;r=e.next();){if(r=="#"&&n){t.tokenize=sbe;break}n=r=="*"}return"comment"}function _Gr(e,t){for(var n=0,r;r=e.next();){if(r=="#"&&n==2){t.tokenize=sbe;break}r=="]"?n++:r!=" "&&(n=0)}return"meta"}const SGr={name:"velocity",startState:function(){return{tokenize:sbe,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{line:"##",block:{open:"#*",close:"*#"}}}},LGr=Object.freeze(Object.defineProperty({__proto__:null,velocity:SGr},Symbol.toStringTag,{value:"Module"}));function hJe(e){for(var t={},n=e.split(","),r=0;r",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],l=0,d=h.length;l\"\'\/?]/);)a+=l;return LF(e,t,FGr(a,s))}else{if(n=="{")return mS(t,{type:"codeblock"}),null;if(n=="}")return R4(t),null;if(X9n(t))return n==">"?"tag":n=="/"&&e.eat(">")?(R4(t),"tag"):"variable";if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if(n==="("&&e.eat(":"))return mS(t,{type:"comment"}),LF(e,t,IGr);if(!o&&(n==='"'||n==="'"))return $9n(e,t,n);if(n==="$")return LF(e,t,PGr);if(n===":"&&e.eat("="))return"keyword";if(n==="(")return mS(t,{type:"paren"}),null;if(n===")")return R4(t),null;if(n==="[")return mS(t,{type:"bracket"}),null;if(n==="]")return R4(t),null;var d=nle.propertyIsEnumerable(n)&&nle[n];if(o&&n==='"')for(;e.next()!=='"';);if(o&&n==="'")for(;e.next()!=="'";);d||e.eatWhile(/[\w\$_-]/);var u=e.eat(":");!e.eat(":")&&u&&e.eatWhile(/[\w\$_-]/),e.match(/^[ \t]*\(/,!1)&&(r=!0);var h=e.current();return d=nle.propertyIsEnumerable(h)&&nle[h],r&&!d&&(d={type:"function_call",style:"def"}),WGr(t)?(R4(t),"variable"):((h=="element"||h=="attribute"||d.type=="axis_specifier")&&mS(t,{type:"xmlconstructor"}),d?d.style:"variable")}}function IGr(e,t){for(var n=!1,r=!1,o=0,s;s=e.next();){if(s==")"&&n)if(o>0)o--;else{R4(t);break}else s==":"&&r&&o++;n=s==":",r=s=="("}return"comment"}function MGr(e,t){return function(n,r){for(var o;o=n.next();)if(o==e){R4(r),t&&(r.tokenize=t);break}else if(n.match("{",!1)&&Fue(r))return mS(r,{type:"codeblock"}),r.tokenize=r3,"string";return"string"}}function $9n(e,t,n,r){let o=MGr(n,r);return mS(t,{type:"string",name:n,tokenize:o}),LF(e,t,o)}function PGr(e,t){var n=/[\w\$_-]/;if(e.eat('"')){for(;e.next()!=='"';);e.eat(":")}else e.eatWhile(n),e.match(":=",!1)||e.eat(":");return e.eatWhile(n),t.tokenize=r3,"variable"}function FGr(e,t){return function(n,r){if(n.eatSpace(),t&&n.eat(">"))return R4(r),r.tokenize=r3,"tag";if(n.eat("/")||mS(r,{type:"tag",name:e,tokenize:r3}),n.eat(">"))r.tokenize=r3;else return r.tokenize=DFe,"tag";return"tag"}}function DFe(e,t){var n=e.next();return n=="/"&&e.eat(">")?(Fue(t)&&R4(t),X9n(t)&&R4(t),"tag"):n==">"?(Fue(t)&&R4(t),"tag"):n=="="?null:n=='"'||n=="'"?$9n(e,t,n,DFe):(Fue(t)||mS(t,{type:"attribute",tokenize:DFe}),e.eat(/[a-zA-Z_:]/),e.eatWhile(/[-a-zA-Z0-9_:.]/),e.eatSpace(),(e.match(">",!1)||e.match("/",!1))&&(R4(t),t.tokenize=r3),"attribute")}function NGr(e,t){for(var n;n=e.next();)if(n=="-"&&e.match("->",!0))return t.tokenize=r3,"comment"}function UGr(e,t){for(var n;n=e.next();)if(n=="]"&&e.match("]",!0))return t.tokenize=r3,"comment"}function jGr(e,t){for(var n;n=e.next();)if(n=="?"&&e.match(">",!0))return t.tokenize=r3,"processingInstruction"}function X9n(e){return fJe(e,"tag")}function Fue(e){return fJe(e,"attribute")}function WGr(e){return fJe(e,"xmlconstructor")}function VGr(e){return e.current()==='"'?e.match(/^[^\"]+\"\:/,!1):e.current()==="'"?e.match(/^[^\"]+\'\:/,!1):!1}function fJe(e,t){return e.stack.length&&e.stack[e.stack.length-1].type==t}function mS(e,t){e.stack.push(t)}function R4(e){e.stack.pop();var t=e.stack.length&&e.stack[e.stack.length-1].tokenize;e.tokenize=t||r3}const zGr={name:"xquery",startState:function(){return{tokenize:r3,cc:[],stack:[]}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{commentTokens:{block:{open:"(:",close:":)"}}}},HGr=Object.freeze(Object.defineProperty({__proto__:null,xQuery:zGr},Symbol.toStringTag,{value:"Module"}));function $Gr(e){for(var t={},n=e.split(" "),r=0;r|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function JGr(e,t){for(var n,r=!1,o=!1;(n=e.next())!=null;){if(n==='"'&&!o){r=!0;break}o=!o&&n==="\\"}return r&&!o&&(t.tokenize=dme),"string"}function eYr(e,t){for(var n,r;(r=e.next())!=null;){if(n==="*"&&r==="/"){t.tokenize=dme;break}n=r}return"comment"}function M8e(e){var t=null;return e.scopes.length>0&&(t=e.scopes[e.scopes.length-1]),t}const tYr={name:"yacas",startState:function(){return{tokenize:dme,scopes:[]}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},indent:function(e,t,n){if(e.tokenize!==dme&&e.tokenize!==null)return null;var r=0;return(t==="]"||t==="];"||t==="}"||t==="};"||t===");")&&(r=-1),(e.scopes.length+r)*n.unit},languageData:{electricInput:/[{}\[\]()\;]/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},nYr=Object.freeze(Object.defineProperty({__proto__:null,yacas:tYr},Symbol.toStringTag,{value:"Module"}));function G9n(e){var t,n;e?(t=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,n=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(t=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,n=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var r=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,o=/^(n?[zc]|p[oe]?|m)\b/i,s=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,a=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:"z80",startState:function(){return{context:0}},token:function(l,d){if(l.column()||(d.context=0),l.eatSpace())return null;var u;if(l.eatWhile(/\w/))if(e&&l.eat(".")&&l.eatWhile(/\w/),u=l.current(),l.indentation()){if((d.context==1||d.context==4)&&r.test(u))return d.context=4,"variable";if(d.context==2&&o.test(u))return d.context=4,"variableName.special";if(t.test(u))return d.context=1,"keyword";if(n.test(u))return d.context=2,"keyword";if(d.context==4&&a.test(u))return"number";if(s.test(u))return"error"}else return l.match(a)?"number":null;else{if(l.eat(";"))return l.skipToEnd(),"comment";if(l.eat('"')){for(;(u=l.next())&&u!='"';)u=="\\"&&l.next();return"string"}else if(l.eat("'")){if(l.match(/\\?.'/))return"number"}else if(l.eat(".")||l.sol()&&l.eat("#")){if(d.context=5,l.eatWhile(/\w/))return"def"}else if(l.eat("$")){if(l.eatWhile(/[\da-f]/i))return"number"}else if(l.eat("%")){if(l.eatWhile(/[01]/))return"number"}else l.next()}return null}}}const iYr=G9n(!1),rYr=G9n(!0),oYr=Object.freeze(Object.defineProperty({__proto__:null,ez80:rYr,z80:iYr},Symbol.toStringTag,{value:"Module"}));function gJe(e){return{name:"mscgen",startState:cYr,copyState:dYr,token:uYr(e),languageData:{commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}}}const sYr=gJe({keywords:["msc"],options:["hscale","width","arcgradient","wordwraparcs"],constants:["true","false","on","off"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),aYr=gJe({keywords:null,options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:null,brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),lYr=gJe({keywords:["msc","xu"],options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip","title","deactivate","activate","activation"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]});function ile(e){return new RegExp("^\\b("+e.join("|")+")\\b","i")}function iX(e){return new RegExp("^(?:"+e.join("|")+")","i")}function cYr(){return{inComment:!1,inString:!1,inAttributeList:!1,inScript:!1}}function dYr(e){return{inComment:e.inComment,inString:e.inString,inAttributeList:e.inAttributeList,inScript:e.inScript}}function uYr(e){return function(t,n){if(t.match(iX(e.brackets),!0,!0))return"bracket";if(!n.inComment){if(t.match(/\/\*[^\*\/]*/,!0,!0))return n.inComment=!0,"comment";if(t.match(iX(e.singlecomment),!0,!0))return t.skipToEnd(),"comment"}if(n.inComment)return t.match(/[^\*\/]*\*\//,!0,!0)?n.inComment=!1:t.skipToEnd(),"comment";if(!n.inString&&t.match(/\"(\\\"|[^\"])*/,!0,!0))return n.inString=!0,"string";if(n.inString)return t.match(/[^\"]*\"/,!0,!0)?n.inString=!1:t.skipToEnd(),"string";if(e.keywords&&t.match(ile(e.keywords),!0,!0)||t.match(ile(e.options),!0,!0)||t.match(ile(e.arcsWords),!0,!0)||t.match(iX(e.arcsOthers),!0,!0))return"keyword";if(e.operators&&t.match(iX(e.operators),!0,!0))return"operator";if(e.constants&&t.match(iX(e.constants),!0,!0))return"variable";if(!e.inAttributeList&&e.attributes&&t.match("[",!0,!0))return e.inAttributeList=!0,"bracket";if(e.inAttributeList){if(e.attributes!==null&&t.match(ile(e.attributes),!0,!0))return"attribute";if(t.match("]",!0,!0))return e.inAttributeList=!1,"bracket"}return t.next(),null}}const P8e=Object.freeze(Object.defineProperty({__proto__:null,mscgen:sYr,msgenny:aYr,xu:lYr},Symbol.toStringTag,{value:"Module"})),hYr=zd.deserialize({version:14,states:"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",stateData:"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~",goto:"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso",nodeNames:"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity",maxTerm:36,nodeProps:[["isolate",-3,3,13,17,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m<%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|!b#qP;=`<%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y%W$pP;=`<%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|",tokenizers:[6,7,new Cv("b~RP#q#rU~XP#q#r[~aOT~~",17,4),new Cv("!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOU~~![P;=`<%lm~!bP#o#p!e~!jOk~~",72,2),new Cv("[~RPwxU~ZOp~~",11,15),new Cv("[~RPrsU~ZOn~~",11,14),new Cv("!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOc~~![P;=`<%lm~!dOt~~",66,35),new Cv("!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^<%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^<%lOr~!^Ob~~!aP;=`<%lr~",66,33)],topRules:{Content:[0,1],Attribute:[1,7]},tokenPrec:157}),fYr=E0.parser.configure({top:"SingleExpression"}),Y9n=hYr.configure({props:[Xd({Text:ve.content,Is:ve.definitionOperator,AttributeName:ve.attributeName,VueAttributeName:ve.keyword,Identifier:ve.variableName,"AttributeValue ScriptAttributeValue":ve.attributeValue,Entity:ve.character,"{{ }}":ve.brace,"@ :":ve.punctuation})]}),Z9n={parser:fYr},gYr=Y9n.configure({wrap:Ap((e,t)=>e.name=="InterpolationContent"?Z9n:null)}),mYr=Y9n.configure({wrap:Ap((e,t)=>e.name=="AttributeScript"?Z9n:null),top:"Attribute"}),kYr={parser:gYr},vYr={parser:mYr},BFe=dI();function q9n(e){return e.configure({dialect:"selfClosing",wrap:Ap(AYr)},"vue")}const K9n=q9n(BFe.language);function AYr(e,t){switch(e.name){case"Attribute":return/^(@|:|v-)/.test(t.read(e.from,e.from+2))?vYr:null;case"Text":return kYr}return null}function pYr(e={}){let t=BFe;if(e.base){if(e.base.language.name!="html"||!(e.base.language instanceof Vd))throw new RangeError("The base option must be the result of calling html(...)");t=e.base}return new wd(t.language==BFe.language?K9n:q9n(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:["{",'"']}})])}const bYr=Object.freeze(Object.defineProperty({__proto__:null,vue:pYr,vueLanguage:K9n},Symbol.toStringTag,{value:"Module"})),wYr=1,OYr=33,yYr=34,CYr=35,_Yr=36,SYr=new go(e=>{let t=e.pos;for(;;){if(e.next==10){e.advance();break}else if(e.next==123&&e.peek(1)==123||e.next<0)break;e.advance()}e.pos>t&&e.acceptToken(wYr)});function abe(e,t,n){return new go(r=>{let o=r.pos;for(;r.next!=e&&r.next>=0&&(n||r.next!=38&&(r.next!=123||r.peek(1)!=123));)r.advance();r.pos>o&&r.acceptToken(t)})}const LYr=abe(39,OYr,!1),xYr=abe(34,yYr,!1),EYr=abe(39,CYr,!0),TYr=abe(34,_Yr,!0),QYr=zd.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<e.name=="InterpolationContent"?RFe:null)}),IYr=J9n.configure({wrap:Ap((e,t)=>{var n;return e.name=="InterpolationContent"?RFe:e.name!="AttributeInterpolation"?null:((n=e.node.parent)===null||n===void 0?void 0:n.name)=="StatementAttributeValue"?BYr:RFe}),top:"Attribute"}),MYr={parser:RYr},PYr={parser:IYr},IFe=dI({selfClosingTags:!0});function e6n(e){return e.configure({wrap:Ap(FYr)},"angular")}const t6n=e6n(IFe.language);function FYr(e,t){switch(e.name){case"Attribute":return/^[*#(\[]|\{\{/.test(t.read(e.from,e.to))?PYr:null;case"Text":return MYr}return null}function NYr(e={}){let t=IFe;if(e.base){if(e.base.language.name!="html"||!(e.base.language instanceof Vd))throw new RangeError("The base option must be the result of calling html(...)");t=e.base}return new wd(t.language==IFe.language?t6n:e6n(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/})])}const UYr=Object.freeze(Object.defineProperty({__proto__:null,angular:NYr,angularLanguage:t6n},Symbol.toStringTag,{value:"Module"})),jYr=Je({__name:"404",setup(e){const t=_pe();function n(){t.push("/")}const r=X(()=>window==null?void 0:window.$electron);return(o,s)=>{const a=Si;return xe(),Ge("div",{class:"notFound",style:no({height:Ae(r)?"calc(100vh - 32px)":"100vh"})},[s[1]||(s[1]=ge("span",{class:"title"},"404",-1)),s[2]||(s[2]=ge("div",{class:"notFoundText"},"页面不存在",-1)),c(a,{class:"notFoundBtn",theme:"primary",onClick:n},{default:Oe(()=>[...s[0]||(s[0]=[Bt("返回首页",-1)])]),_:1})],4)}}}),WYr=oo(jYr,[["__scopeId","data-v-0b027e54"]]),VYr=Object.freeze(Object.defineProperty({__proto__:null,default:WYr},Symbol.toStringTag,{value:"Module"})),lbe="data:image/png;base64,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";function n6n(e,t){return function(){return e.apply(t,arguments)}}const{toString:zYr}=Object.prototype,{getPrototypeOf:mJe}=Object,{iterator:cbe,toStringTag:i6n}=Symbol,dbe=(e=>t=>{const n=zYr.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),M3=e=>(e=e.toLowerCase(),t=>dbe(t)===e),ube=e=>t=>typeof t===e,{isArray:Uz}=Array,XW=ube("undefined");function gie(e){return e!==null&&!XW(e)&&e.constructor!==null&&!XW(e.constructor)&&e2(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const r6n=M3("ArrayBuffer");function HYr(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&r6n(e.buffer),t}const $Yr=ube("string"),e2=ube("function"),o6n=ube("number"),mie=e=>e!==null&&typeof e=="object",XYr=e=>e===!0||e===!1,Nue=e=>{if(dbe(e)!=="object")return!1;const t=mJe(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(i6n in e)&&!(cbe in e)},GYr=e=>{if(!mie(e)||gie(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},YYr=M3("Date"),ZYr=M3("File"),qYr=e=>!!(e&&typeof e.uri<"u"),KYr=e=>e&&typeof e.getParts<"u",JYr=M3("Blob"),eZr=M3("FileList"),tZr=e=>mie(e)&&e2(e.pipe);function nZr(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Ipt=nZr(),Mpt=typeof Ipt.FormData<"u"?Ipt.FormData:void 0,iZr=e=>{let t;return e&&(Mpt&&e instanceof Mpt||e2(e.append)&&((t=dbe(e))==="formdata"||t==="object"&&e2(e.toString)&&e.toString()==="[object FormData]"))},rZr=M3("URLSearchParams"),[oZr,sZr,aZr,lZr]=["ReadableStream","Request","Response","Headers"].map(M3),cZr=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function kie(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,o;if(typeof e!="object"&&(e=[e]),Uz(e))for(r=0,o=e.length;r0;)if(o=n[r],t===o.toLowerCase())return o;return null}const nQ=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,a6n=e=>!XW(e)&&e!==nQ;function MFe(){const{caseless:e,skipUndefined:t}=a6n(this)&&this||{},n={},r=(o,s)=>{if(s==="__proto__"||s==="constructor"||s==="prototype")return;const a=e&&s6n(n,s)||s;Nue(n[a])&&Nue(o)?n[a]=MFe(n[a],o):Nue(o)?n[a]=MFe({},o):Uz(o)?n[a]=o.slice():(!t||!XW(o))&&(n[a]=o)};for(let o=0,s=arguments.length;o(kie(t,(o,s)=>{n&&e2(o)?Object.defineProperty(e,s,{value:n6n(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,s,{value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),uZr=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),hZr=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},fZr=(e,t,n,r)=>{let o,s,a;const l={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)a=o[s],(!r||r(a,e,t))&&!l[a]&&(t[a]=e[a],l[a]=!0);e=n!==!1&&mJe(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},gZr=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},mZr=e=>{if(!e)return null;if(Uz(e))return e;let t=e.length;if(!o6n(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},kZr=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&mJe(Uint8Array)),vZr=(e,t)=>{const r=(e&&e[cbe]).call(e);let o;for(;(o=r.next())&&!o.done;){const s=o.value;t.call(e,s[0],s[1])}},AZr=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},pZr=M3("HTMLFormElement"),bZr=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,o){return r.toUpperCase()+o}),Ppt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),wZr=M3("RegExp"),l6n=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};kie(n,(o,s)=>{let a;(a=t(o,s,e))!==!1&&(r[s]=a||o)}),Object.defineProperties(e,r)},OZr=e=>{l6n(e,(t,n)=>{if(e2(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(e2(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},yZr=(e,t)=>{const n={},r=o=>{o.forEach(s=>{n[s]=!0})};return Uz(e)?r(e):r(String(e).split(t)),n},CZr=()=>{},_Zr=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function SZr(e){return!!(e&&e2(e.append)&&e[i6n]==="FormData"&&e[cbe])}const LZr=e=>{const t=new Array(10),n=(r,o)=>{if(mie(r)){if(t.indexOf(r)>=0)return;if(gie(r))return r;if(!("toJSON"in r)){t[o]=r;const s=Uz(r)?[]:{};return kie(r,(a,l)=>{const d=n(a,o+1);!XW(d)&&(s[l]=d)}),t[o]=void 0,s}}return r};return n(e,0)},xZr=M3("AsyncFunction"),EZr=e=>e&&(mie(e)||e2(e))&&e2(e.then)&&e2(e.catch),c6n=((e,t)=>e?setImmediate:t?((n,r)=>(nQ.addEventListener("message",({source:o,data:s})=>{o===nQ&&s===n&&r.length&&r.shift()()},!1),o=>{r.push(o),nQ.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",e2(nQ.postMessage)),TZr=typeof queueMicrotask<"u"?queueMicrotask.bind(nQ):typeof process<"u"&&process.nextTick||c6n,QZr=e=>e!=null&&e2(e[cbe]),vn={isArray:Uz,isArrayBuffer:r6n,isBuffer:gie,isFormData:iZr,isArrayBufferView:HYr,isString:$Yr,isNumber:o6n,isBoolean:XYr,isObject:mie,isPlainObject:Nue,isEmptyObject:GYr,isReadableStream:oZr,isRequest:sZr,isResponse:aZr,isHeaders:lZr,isUndefined:XW,isDate:YYr,isFile:ZYr,isReactNativeBlob:qYr,isReactNative:KYr,isBlob:JYr,isRegExp:wZr,isFunction:e2,isStream:tZr,isURLSearchParams:rZr,isTypedArray:kZr,isFileList:eZr,forEach:kie,merge:MFe,extend:dZr,trim:cZr,stripBOM:uZr,inherits:hZr,toFlatObject:fZr,kindOf:dbe,kindOfTest:M3,endsWith:gZr,toArray:mZr,forEachEntry:vZr,matchAll:AZr,isHTMLForm:pZr,hasOwnProperty:Ppt,hasOwnProp:Ppt,reduceDescriptors:l6n,freezeMethods:OZr,toObjectSet:yZr,toCamelCase:bZr,noop:CZr,toFiniteNumber:_Zr,findKey:s6n,global:nQ,isContextDefined:a6n,isSpecCompliantForm:SZr,toJSONObject:LZr,isAsyncFn:xZr,isThenable:EZr,setImmediate:c6n,asap:TZr,isIterable:QZr};let No=class d6n extends Error{static from(t,n,r,o,s,a){const l=new d6n(t.message,n||t.code,r,o,s);return l.cause=t,l.name=t.name,t.status!=null&&l.status==null&&(l.status=t.status),a&&Object.assign(l,a),l}constructor(t,n,r,o,s){super(t),Object.defineProperty(this,"message",{value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),o&&(this.request=o),s&&(this.response=s,this.status=s.status)}toJSON(){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:vn.toJSONObject(this.config),code:this.code,status:this.status}}};No.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";No.ERR_BAD_OPTION="ERR_BAD_OPTION";No.ECONNABORTED="ECONNABORTED";No.ETIMEDOUT="ETIMEDOUT";No.ERR_NETWORK="ERR_NETWORK";No.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";No.ERR_DEPRECATED="ERR_DEPRECATED";No.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";No.ERR_BAD_REQUEST="ERR_BAD_REQUEST";No.ERR_CANCELED="ERR_CANCELED";No.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";No.ERR_INVALID_URL="ERR_INVALID_URL";const DZr=null;function PFe(e){return vn.isPlainObject(e)||vn.isArray(e)}function u6n(e){return vn.endsWith(e,"[]")?e.slice(0,-2):e}function F8e(e,t,n){return e?e.concat(t).map(function(o,s){return o=u6n(o),!n&&s?"["+o+"]":o}).join(n?".":""):t}function BZr(e){return vn.isArray(e)&&!e.some(PFe)}const RZr=vn.toFlatObject(vn,{},null,function(t){return/^is[A-Z]/.test(t)});function hbe(e,t,n){if(!vn.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=vn.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(k,A){return!vn.isUndefined(A[k])});const r=n.metaTokens,o=n.visitor||h,s=n.dots,a=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&vn.isSpecCompliantForm(t);if(!vn.isFunction(o))throw new TypeError("visitor must be a function");function u(f){if(f===null)return"";if(vn.isDate(f))return f.toISOString();if(vn.isBoolean(f))return f.toString();if(!d&&vn.isBlob(f))throw new No("Blob is not supported. Use a Buffer instead.");return vn.isArrayBuffer(f)||vn.isTypedArray(f)?d&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function h(f,k,A){let p=f;if(vn.isReactNative(t)&&vn.isReactNativeBlob(f))return t.append(F8e(A,k,s),u(f)),!1;if(f&&!A&&typeof f=="object"){if(vn.endsWith(k,"{}"))k=r?k:k.slice(0,-2),f=JSON.stringify(f);else if(vn.isArray(f)&&BZr(f)||(vn.isFileList(f)||vn.endsWith(k,"[]"))&&(p=vn.toArray(f)))return k=u6n(k),p.forEach(function(w,O){!(vn.isUndefined(w)||w===null)&&t.append(a===!0?F8e([k],O,s):a===null?k:k+"[]",u(w))}),!1}return PFe(f)?!0:(t.append(F8e(A,k,s),u(f)),!1)}const g=[],m=Object.assign(RZr,{defaultVisitor:h,convertValue:u,isVisitable:PFe});function v(f,k){if(!vn.isUndefined(f)){if(g.indexOf(f)!==-1)throw Error("Circular reference detected in "+k.join("."));g.push(f),vn.forEach(f,function(p,b){(!(vn.isUndefined(p)||p===null)&&o.call(t,p,vn.isString(b)?b.trim():b,k,m))===!0&&v(p,k?k.concat(b):[b])}),g.pop()}}if(!vn.isObject(e))throw new TypeError("data must be an object");return v(e),t}function Fpt(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function kJe(e,t){this._pairs=[],e&&hbe(e,this,t)}const h6n=kJe.prototype;h6n.append=function(t,n){this._pairs.push([t,n])};h6n.toString=function(t){const n=t?function(r){return t.call(this,r,Fpt)}:Fpt;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function IZr(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function f6n(e,t,n){if(!t)return e;const r=n&&n.encode||IZr,o=vn.isFunction(n)?{serialize:n}:n,s=o&&o.serialize;let a;if(s?a=s(t,o):a=vn.isURLSearchParams(t)?t.toString():new kJe(t,o).toString(r),a){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class Npt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){vn.forEach(this.handlers,function(r){r!==null&&t(r)})}}const vJe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},MZr=typeof URLSearchParams<"u"?URLSearchParams:kJe,PZr=typeof FormData<"u"?FormData:null,FZr=typeof Blob<"u"?Blob:null,NZr={isBrowser:!0,classes:{URLSearchParams:MZr,FormData:PZr,Blob:FZr},protocols:["http","https","file","blob","url","data"]},AJe=typeof window<"u"&&typeof document<"u",FFe=typeof navigator=="object"&&navigator||void 0,UZr=AJe&&(!FFe||["ReactNative","NativeScript","NS"].indexOf(FFe.product)<0),jZr=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",WZr=AJe&&window.location.href||"http://localhost",VZr=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:AJe,hasStandardBrowserEnv:UZr,hasStandardBrowserWebWorkerEnv:jZr,navigator:FFe,origin:WZr},Symbol.toStringTag,{value:"Module"})),r1={...VZr,...NZr};function zZr(e,t){return hbe(e,new r1.classes.URLSearchParams,{visitor:function(n,r,o,s){return r1.isNode&&vn.isBuffer(n)?(this.append(r,n.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...t})}function HZr(e){return vn.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function $Zr(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r=n.length;return a=!a&&vn.isArray(o)?o.length:a,d?(vn.hasOwnProp(o,a)?o[a]=[o[a],r]:o[a]=r,!l):((!o[a]||!vn.isObject(o[a]))&&(o[a]=[]),t(n,r,o[a],s)&&vn.isArray(o[a])&&(o[a]=$Zr(o[a])),!l)}if(vn.isFormData(e)&&vn.isFunction(e.entries)){const n={};return vn.forEachEntry(e,(r,o)=>{t(HZr(r),o,n,0)}),n}return null}function XZr(e,t,n){if(vn.isString(e))try{return(t||JSON.parse)(e),vn.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const vie={transitional:vJe,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",o=r.indexOf("application/json")>-1,s=vn.isObject(t);if(s&&vn.isHTMLForm(t)&&(t=new FormData(t)),vn.isFormData(t))return o?JSON.stringify(g6n(t)):t;if(vn.isArrayBuffer(t)||vn.isBuffer(t)||vn.isStream(t)||vn.isFile(t)||vn.isBlob(t)||vn.isReadableStream(t))return t;if(vn.isArrayBufferView(t))return t.buffer;if(vn.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(s){if(r.indexOf("application/x-www-form-urlencoded")>-1)return zZr(t,this.formSerializer).toString();if((l=vn.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return hbe(l?{"files[]":t}:t,d&&new d,this.formSerializer)}}return s||o?(n.setContentType("application/json",!1),XZr(t)):t}],transformResponse:[function(t){const n=this.transitional||vie.transitional,r=n&&n.forcedJSONParsing,o=this.responseType==="json";if(vn.isResponse(t)||vn.isReadableStream(t))return t;if(t&&vn.isString(t)&&(r&&!this.responseType||o)){const a=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?No.from(l,No.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:r1.classes.FormData,Blob:r1.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};vn.forEach(["delete","get","head","post","put","patch"],e=>{vie.headers[e]={}});const GZr=vn.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"]),YZr=e=>{const t={};let n,r,o;return e&&e.split(` +`,{label:"if",detail:"block",type:"keyword"}),Gs("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),Gs("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),Gs("import ${module}",{label:"import",detail:"statement",type:"keyword"}),Gs("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],WLn=bpe(ULn,Kne(JQr.concat(eDr)));function XSe(e){let{node:t,pos:n}=e,r=e.lineIndent(n,-1),o=null;for(;;){let s=t.childBefore(n);if(s)if(s.name=="Comment")n=s.from;else if(s.name=="Body"||s.name=="MatchBody")e.baseIndentFor(s)+e.unit<=r&&(o=s),t=s;else if(s.name=="MatchClause")t=s;else if(s.type.is("Statement"))t=s;else break;else break}return o}function GSe(e,t){let n=e.baseIndentFor(t),r=e.lineAt(e.pos,-1),o=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&e.node.ton?null:n+e.unit}const Que=Vd.define({name:"python",parser:qQr.configure({props:[Vu.add({Body:e=>{var t;let n=/^\s*(#|$)/.test(e.textAfter)&&XSe(e)||e.node;return(t=GSe(e,n))!==null&&t!==void 0?t:e.continue()},MatchBody:e=>{var t;let n=XSe(e);return(t=GSe(e,n||e.node))!==null&&t!==void 0?t:e.continue()},IfStatement:e=>/^\s*(else:|elif )/.test(e.textAfter)?e.baseIndent:e.continue(),"ForStatement WhileStatement":e=>/^\s*else:/.test(e.textAfter)?e.baseIndent:e.continue(),TryStatement:e=>/^\s*(except[ :]|finally:|else:)/.test(e.textAfter)?e.baseIndent:e.continue(),MatchStatement:e=>/^\s*case /.test(e.textAfter)?e.baseIndent+e.unit:e.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":Xv({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":Xv({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":Xv({closing:"]"}),MemberExpression:e=>e.baseIndent+e.unit,"String FormatString":()=>null,Script:e=>{var t;let n=XSe(e);return(t=n&&GSe(e,n))!==null&&t!==void 0?t:e.continue()}}),kh.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":bA,Body:(e,t)=>({from:e.from+1,to:e.to-(e.to==t.doc.length?0:1)}),"String FormatString":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function tDr(){return new wd(Que,[Que.data.of({autocomplete:jLn}),Que.data.of({autocomplete:WLn})])}const nDr=Object.freeze(Object.defineProperty({__proto__:null,globalCompletion:WLn,localCompletionSource:jLn,python:tDr,pythonLanguage:Que},Symbol.toStringTag,{value:"Module"})),iDr=1,rDr=2,oDr=3,sDr=4,aDr=5,Kvt=98,lDr=101,cDr=102,Jvt=114,dDr=69,Qae=48,eAt=46,uDr=43,hDr=45,tAt=35,nAt=34,fDr=124,gDr=60,mDr=62;function eFe(e){return e>=48&&e<=57}function Dae(e){return eFe(e)||e==95}const kDr=new go((e,t)=>{if(eFe(e.next)){let n=!1;do e.advance();while(Dae(e.next));if(e.next==eAt){if(n=!0,e.advance(),eFe(e.next))do e.advance();while(Dae(e.next));else if(e.next==eAt||e.next>127||/\w/.test(String.fromCharCode(e.next)))return}if(e.next==lDr||e.next==dDr){if(n=!0,e.advance(),(e.next==uDr||e.next==hDr)&&e.advance(),!Dae(e.next))return;do e.advance();while(Dae(e.next))}if(e.next==cDr){let r=e.peek(1);if(r==Qae+3&&e.peek(2)==Qae+2||r==Qae+6&&e.peek(2)==Qae+4)e.advance(3),n=!0;else return}n&&e.acceptToken(aDr)}else if(e.next==Kvt||e.next==Jvt){if(e.next==Kvt&&e.advance(),e.next!=Jvt)return;e.advance();let n=0;for(;e.next==tAt;)n++,e.advance();if(e.next!=nAt)return;e.advance();e:for(;;){if(e.next<0)return;let r=e.next==nAt;if(e.advance(),r){for(let o=0;o{e.next==fDr&&e.acceptToken(iDr,1)}),ADr=new go(e=>{e.next==gDr?e.acceptToken(rDr,1):e.next==mDr&&e.acceptToken(oDr,1)}),pDr=Xd({"const macro_rules struct union enum type fn impl trait let static":ve.definitionKeyword,"mod use crate":ve.moduleKeyword,"pub unsafe async mut extern default move":ve.modifier,"for if else loop while match continue break return await":ve.controlKeyword,"as in ref":ve.operatorKeyword,"where _ crate super dyn":ve.keyword,self:ve.self,String:ve.string,Char:ve.character,RawString:ve.special(ve.string),Boolean:ve.bool,Identifier:ve.variableName,"CallExpression/Identifier":ve.function(ve.variableName),BoundIdentifier:ve.definition(ve.variableName),"FunctionItem/BoundIdentifier":ve.function(ve.definition(ve.variableName)),LoopLabel:ve.labelName,FieldIdentifier:ve.propertyName,"CallExpression/FieldExpression/FieldIdentifier":ve.function(ve.propertyName),Lifetime:ve.special(ve.variableName),ScopeIdentifier:ve.namespace,TypeIdentifier:ve.typeName,"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier":ve.macroName,"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier":ve.macroName,'"!"':ve.macroName,UpdateOp:ve.updateOperator,LineComment:ve.lineComment,BlockComment:ve.blockComment,Integer:ve.integer,Float:ve.float,ArithOp:ve.arithmeticOperator,LogicOp:ve.logicOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,"=":ve.definitionOperator,".. ... => ->":ve.punctuation,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,". DerefOp":ve.derefOperator,"&":ve.operator,", ; ::":ve.separator,"Attribute/...":ve.meta}),bDr={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476},wDr=zd.deserialize({version:14,states:"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5]QYO'#GUO&,SQYO'#JkOOQQ,5]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5]QYO,5]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<]O&3qQWO,5>]OOQO-E;o-E;oOOQO<WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<]QYO<]QYO<]QYO<]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&eQZO7+(|O&@tQWO,5>qOOQO-E]QYO<]QYO,5]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5]QYO,5PO&I]QYO,5@VOOQV<]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<m,5>mOOQO-EnOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-EX,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E]QYO<o,5>oOOQQ-E]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<e,5>eOOQO-E;w-E;wO'?rQWO<wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p",nodeNames:"⚠ | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType",maxTerm:359,nodeProps:[["isolate",-4,4,6,7,33,""],["group",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,"Expression",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,"Type",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,"Statement",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,"Pattern"],["openedBy",9,"[",38,"{",47,"("],["closedBy",12,"]",39,"}",45,")"]],propSources:[pDr],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n",tokenizers:[vDr,ADr,kDr,0,1,2,3],topRules:{SourceFile:[0,8]},specialized:[{term:281,get:e=>bDr[e]||-1}],tokenPrec:15596}),VLn=Vd.define({name:"rust",parser:wDr.configure({props:[Vu.add({IfExpression:Pu({except:/^\s*({|else\b)/}),"String BlockComment":()=>null,AttributeItem:e=>e.continue(),"Statement MatchArm":Pu()}),kh.add(e=>{if(/(Block|edTokens|List)$/.test(e.name))return bA;if(e.name=="BlockComment")return t=>({from:t.from+2,to:t.to-2})})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:\{|\})$/,closeBrackets:{stringPrefixes:["b","r","br"]}}});function ODr(){return new wd(VLn)}const yDr=Object.freeze(Object.defineProperty({__proto__:null,rust:ODr,rustLanguage:VLn},Symbol.toStringTag,{value:"Module"})),zLn=168,tFe=169,CDr=170,_Dr=1,SDr=2,iAt=3,LDr=171,xDr=172,rAt=4,oAt=173,EDr=5,TDr=174,sAt=175,aAt=176,YSe=177,lAt=6,cAt=7,QDr=8,DDr=9,Qpe=0,_S=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],BDr=58,RDr=40,yKe=95,IDr=91,tZ=45,MDr=46,CKe=35,PDr=37,HLn=123,FDr=125,nZ=47,iZ=42,B4=10,dAt=61,NDr=43,UDr=38;function NW(e){return e>=65&&e<=90||e>=97&&e<=122||e>=161}function _Ke(e){return e>=48&&e<=57}function SKe(e){let t;return e.next==nZ&&((t=e.peek(1))==nZ||t==iZ)}const jDr=new go((e,t)=>{if(t.dialectEnabled(Qpe)){let n;if(e.next<0&&t.canShift(aAt))e.acceptToken(aAt);else if(((n=e.peek(-1))==B4||n<0)&&t.canShift(sAt)){let r=0;for(;e.next!=B4&&_S.includes(e.next);)e.advance(),r++;e.next==B4||SKe(e)?e.acceptToken(sAt,-r):r&&e.acceptToken(YSe)}else if(e.next==B4)e.acceptToken(TDr,1);else if(_S.includes(e.next)){for(e.advance();e.next!=B4&&_S.includes(e.next);)e.advance();e.acceptToken(YSe)}}else{let n=0;for(;_S.includes(e.next);)e.advance(),n++;n&&e.acceptToken(YSe)}},{contextual:!0}),WDr=new go((e,t)=>{if(SKe(e)){if(e.advance(),t.dialectEnabled(Qpe)){let n=-1;for(let r=1;;r++){let o=e.peek(-r-1);if(o==B4||o<0){n=r+1;break}else if(!_S.includes(o))break}if(n>-1){let r=e.next==iZ,o=0;for(e.advance();e.next>=0;)if(e.next==B4){e.advance();let s=0;for(;e.next!=B4&&_S.includes(e.next);)s++,e.advance();if(s=0;)e.advance();e.acceptToken(lAt)}else{for(e.advance();e.next>=0;){let{next:n}=e;if(e.advance(),n==iZ&&e.next==nZ){e.advance();break}}e.acceptToken(cAt)}}}),VDr=new go((e,t)=>{(e.next==NDr||e.next==dAt)&&t.dialectEnabled(Qpe)&&e.acceptToken(e.next==dAt?QDr:DDr,1)}),zDr=new go((e,t)=>{if(!t.dialectEnabled(Qpe))return;let n=t.context.depth;if(e.next<0&&n){e.acceptToken(tFe);return}if(e.peek(-1)==B4){let o=0;for(;e.next!=B4&&_S.includes(e.next);)e.advance(),o++;o!=n&&e.next!=B4&&!SKe(e)&&(o{for(let n=!1,r=0,o=0;;o++){let{next:s}=e;if(NW(s)||s==tZ||s==yKe||n&&_Ke(s))!n&&(s!=tZ||o>0)&&(n=!0),r===o&&s==tZ&&r++,e.advance();else if(s==CKe&&e.peek(1)==HLn){e.acceptToken(EDr,2);break}else{n&&e.acceptToken(r==2&&t.canShift(rAt)?rAt:t.canShift(oAt)?oAt:s==RDr?LDr:xDr);break}}}),$Dr=new go(e=>{if(e.next==FDr){for(e.advance();NW(e.next)||e.next==tZ||e.next==yKe||_Ke(e.next);)e.advance();e.next==CKe&&e.peek(1)==HLn?e.acceptToken(SDr,2):e.acceptToken(_Dr)}}),XDr=new go(e=>{if(_S.includes(e.peek(-1))){let{next:t}=e;(NW(t)||t==yKe||t==CKe||t==MDr||t==IDr||t==BDr&&NW(e.peek(1))||t==tZ||t==UDr||t==iZ)&&e.acceptToken(CDr)}}),GDr=new go(e=>{if(!_S.includes(e.peek(-1))){let{next:t}=e;if(t==PDr&&(e.advance(),e.acceptToken(iAt)),NW(t)){do e.advance();while(NW(e.next)||_Ke(e.next));e.acceptToken(iAt)}}});function $Ln(e,t){this.parent=e,this.depth=t,this.hash=(e?e.hash+e.hash<<8:0)+t+(t<<4)}const YDr=new $Ln(null,0),ZDr=new cI({start:YDr,shift(e,t,n,r){return t==zLn?new $Ln(e,n.pos-r.pos):t==tFe?e.parent:e},hash(e){return e.hash}}),qDr=Xd({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":ve.definitionKeyword,"Keyword selector":ve.keyword,ControlKeyword:ve.controlKeyword,NamespaceName:ve.namespace,KeyframeName:ve.labelName,KeyframeRangeName:ve.operatorKeyword,TagName:ve.tagName,"ClassName Suffix":ve.className,PseudoClassName:ve.constant(ve.className),IdName:ve.labelName,"FeatureName PropertyName":ve.propertyName,AttributeName:ve.attributeName,NumberLiteral:ve.number,KeywordQuery:ve.keyword,UnaryQueryOp:ve.operatorKeyword,"CallTag ValueName":ve.atom,VariableName:ve.variableName,SassVariableName:ve.special(ve.variableName),Callee:ve.operatorKeyword,Unit:ve.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":ve.definitionOperator,MatchOp:ve.compareOperator,"ChildOp SiblingOp, LogicOp":ve.logicOperator,BinOp:ve.arithmeticOperator,"Important Global Default":ve.modifier,Comment:ve.blockComment,LineComment:ve.lineComment,ColorLiteral:ve.color,"ParenthesizedContent StringLiteral":ve.string,"InterpolationStart InterpolationContinue InterpolationEnd":ve.meta,': "..."':ve.punctuation,"PseudoOp #":ve.derefOperator,"; ,":ve.separator,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace}),KDr={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},JDr={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},eBr={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},tBr={__proto__:null,layer:166,not:184,only:184,selector:190},nBr=zd.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:"⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles",maxTerm:196,context:ZDr,nodeProps:[["openedBy",1,"InterpolationStart",5,"InterpolationEnd",21,"(",43,"[",78,"{"],["isolate",-3,6,7,26,""],["closedBy",22,")",44,"]",70,"}"]],propSources:[qDr],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[zDr,XDr,$Dr,GDr,HDr,jDr,WDr,VDr,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:e=>KDr[e]||-1},{term:171,get:e=>JDr[e]||-1},{term:80,get:e=>eBr[e]||-1},{term:173,get:e=>tBr[e]||-1}],tokenPrec:3217}),qge=Vd.define({name:"sass",parser:nBr.configure({props:[kh.add({Block:bA,Comment(e,t){return{from:e.from+2,to:t.sliceDoc(e.to-2,e.to)=="*/"?e.to-2:e.to}}}),Vu.add({Declaration:Pu()})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"$-"}}),iBr=qge.configure({dialect:"indented",props:[Vu.add({"Block RuleSet":e=>e.baseIndent+e.unit}),kh.add({Block:e=>({from:e.from,to:e.to})})]}),XLn=Ope(e=>e.name=="VariableName"||e.name=="SassVariableName");function rBr(e){return new wd(e!=null&&e.indented?iBr:qge,qge.data.of({autocomplete:XLn}))}const uAt=Object.freeze(Object.defineProperty({__proto__:null,sass:rBr,sassCompletionSource:XLn,sassLanguage:qge},Symbol.toStringTag,{value:"Module"})),oBr={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34},sBr=zd.deserialize({version:14,states:"!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h",stateData:"!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O",goto:"xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV",nodeNames:"⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String",maxTerm:17,nodeProps:[["isolate",-3,1,2,11,""],["openedBy",4,"("],["closedBy",5,")"],["group",-6,6,7,8,9,10,11,"Expression"]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{",tokenizers:[0],topRules:{Module:[0,3]},specialized:[{term:9,get:e=>oBr[e]||-1}],tokenPrec:0}),GLn=Vd.define({name:"wast",parser:sBr.configure({props:[Vu.add({App:Xv({closing:")",align:!1})}),kh.add({App:bA,BlockComment(e){return{from:e.from+2,to:e.to-2}}}),Xd({Keyword:ve.keyword,Type:ve.typeName,Number:ve.number,String:ve.string,Identifier:ve.variableName,LineComment:ve.lineComment,BlockComment:ve.blockComment,"( )":ve.paren})]}),languageData:{commentTokens:{line:";;",block:{open:"(;",close:";)"}},closeBrackets:{brackets:["(",'"']}}});function aBr(){return new wd(GLn)}const lBr=Object.freeze(Object.defineProperty({__proto__:null,wast:aBr,wastLanguage:GLn},Symbol.toStringTag,{value:"Module"})),nFe=1,cBr=2,dBr=3,uBr=4,hBr=5,fBr=36,gBr=37,mBr=38,kBr=11,vBr=13;function ABr(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function pBr(e){return e==9||e==10||e==13||e==32}let hAt=null,fAt=null,gAt=0;function iFe(e,t){let n=e.pos+t;if(fAt==e&&gAt==n)return hAt;for(;pBr(e.peek(t));)t++;let r="";for(;;){let o=e.peek(t);if(!ABr(o))break;r+=String.fromCharCode(o),t++}return fAt=e,gAt=n,hAt=r||null}function mAt(e,t){this.name=e,this.parent=t}const bBr=new cI({start:null,shift(e,t,n,r){return t==nFe?new mAt(iFe(r,1)||"",e):e},reduce(e,t){return t==kBr&&e?e.parent:e},reuse(e,t,n,r){let o=t.type.id;return o==nFe||o==vBr?new mAt(iFe(r,1)||"",e):e},strict:!1}),wBr=new go((e,t)=>{if(e.next==60){if(e.advance(),e.next==47){e.advance();let n=iFe(e,0);if(!n)return e.acceptToken(hBr);if(t.context&&n==t.context.name)return e.acceptToken(cBr);for(let r=t.context;r;r=r.parent)if(r.name==n)return e.acceptToken(dBr,-2);e.acceptToken(uBr)}else if(e.next!=33&&e.next!=63)return e.acceptToken(nFe)}},{contextual:!0});function LKe(e,t){return new go(n=>{let r=0,o=t.charCodeAt(0);e:for(;!(n.next<0);n.advance(),r++)if(n.next==o){for(let s=1;s"),yBr=LKe(gBr,"?>"),CBr=LKe(mBr,"]]>"),_Br=Xd({Text:ve.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":ve.angleBracket,TagName:ve.tagName,"MismatchedCloseTag/TagName":[ve.tagName,ve.invalid],AttributeName:ve.attributeName,AttributeValue:ve.attributeValue,Is:ve.definitionOperator,"EntityReference CharacterReference":ve.character,Comment:ve.blockComment,ProcessingInst:ve.processingInstruction,DoctypeDecl:ve.documentMeta,Cdata:ve.special(ve.string)}),SBr=zd.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[wBr,OBr,yBr,CBr,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function Due(e,t){let n=t&&t.getChild("TagName");return n?e.sliceString(n.from,n.to):""}function ZSe(e,t){let n=t&&t.firstChild;return!n||n.name!="OpenTag"?"":Due(e,n)}function LBr(e,t,n){let r=t&&t.getChildren("Attribute").find(s=>s.from<=n&&s.to>=n),o=r&&r.getChild("AttributeName");return o?e.sliceString(o.from,o.to):""}function qSe(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name=="Element")return t;return null}function xBr(e,t){var n;let r=tc(e).resolveInner(t,-1),o=null;for(let s=r;!o&&s.parent;s=s.parent)(s.name=="OpenTag"||s.name=="CloseTag"||s.name=="SelfClosingTag"||s.name=="MismatchedCloseTag")&&(o=s);if(o&&(o.to>t||o.lastChild.type.isError)){let s=o.parent;if(r.name=="TagName")return o.name=="CloseTag"||o.name=="MismatchedCloseTag"?{type:"closeTag",from:r.from,context:s}:{type:"openTag",from:r.from,context:qSe(s)};if(r.name=="AttributeName")return{type:"attrName",from:r.from,context:o};if(r.name=="AttributeValue")return{type:"attrValue",from:r.from,context:o};let a=r==o||r.name=="Attribute"?r.childBefore(t):r;return(a==null?void 0:a.name)=="StartTag"?{type:"openTag",from:t,context:qSe(s)}:(a==null?void 0:a.name)=="StartCloseTag"&&a.to<=t?{type:"closeTag",from:t,context:s}:(a==null?void 0:a.name)=="Is"?{type:"attrValue",from:t,context:o}:a?{type:"attrName",from:t,context:o}:null}else if(r.name=="StartCloseTag")return{type:"closeTag",from:t,context:r.parent};for(;r.parent&&r.to==t&&!(!((n=r.lastChild)===null||n===void 0)&&n.type.isError);)r=r.parent;return r.name=="Element"||r.name=="Text"||r.name=="Document"?{type:"tag",from:t,context:r.name=="Element"?r:qSe(r)}:null}let EBr=class{constructor(t,n,r){this.attrs=n,this.attrValues=r,this.children=[],this.name=t.name,this.completion=Object.assign(Object.assign({type:"type"},t.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=t.textContent?t.textContent.map(o=>({label:o,type:"text"})):[]}};const KSe=/^[:\-\.\w\u00b7-\uffff]*$/;function kAt(e){return Object.assign(Object.assign({type:"property"},e.completion||{}),{label:e.name})}function vAt(e){return typeof e=="string"?{label:`"${e}"`,type:"constant"}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function YLn(e,t){let n=[],r=[],o=Object.create(null);for(let d of t){let u=kAt(d);n.push(u),d.global&&r.push(u),d.values&&(o[d.name]=d.values.map(vAt))}let s=[],a=[],l=Object.create(null);for(let d of e){let u=r,h=o;d.attributes&&(u=u.concat(d.attributes.map(m=>typeof m=="string"?n.find(v=>v.label==m)||{label:m,type:"property"}:(m.values&&(h==o&&(h=Object.create(h)),h[m.name]=m.values.map(vAt)),kAt(m)))));let g=new EBr(d,u,h);l[g.name]=g,s.push(g),d.top&&a.push(g)}a.length||(a=s);for(let d=0;d{var u;let{doc:h}=d.state,g=xBr(d.state,d.pos);if(!g||g.type=="tag"&&!d.explicit)return null;let{type:m,from:v,context:f}=g;if(m=="openTag"){let k=a,A=ZSe(h,f);if(A){let p=l[A];k=(p==null?void 0:p.children)||s}return{from:v,options:k.map(p=>p.completion),validFor:KSe}}else if(m=="closeTag"){let k=ZSe(h,f);return k?{from:v,to:d.pos+(h.sliceString(d.pos,d.pos+1)==">"?1:0),options:[((u=l[k])===null||u===void 0?void 0:u.closeNameCompletion)||{label:k+">",type:"type"}],validFor:KSe}:null}else if(m=="attrName"){let k=l[Due(h,f)];return{from:v,options:(k==null?void 0:k.attrs)||r,validFor:KSe}}else if(m=="attrValue"){let k=LBr(h,f,v);if(!k)return null;let A=l[Due(h,f)],p=((A==null?void 0:A.attrValues)||o)[k];return!p||!p.length?null:{from:v,to:d.pos+(h.sliceString(d.pos,d.pos+1)=='"'?1:0),options:p,validFor:/^"[^"]*"?$/}}else if(m=="tag"){let k=ZSe(h,f),A=l[k],p=[],b=f&&f.lastChild;k&&(!b||b.name!="CloseTag"||Due(h,b)!=k)&&p.push(A?A.closeCompletion:{label:"",type:"type",boost:2});let w=p.concat(((A==null?void 0:A.children)||(f?s:a)).map(O=>O.openCompletion));if(f&&(A!=null&&A.text.length)){let O=f.firstChild;O.to>d.pos-20&&!/\S/.test(d.state.sliceDoc(O.to,d.pos))&&(w=w.concat(A.text))}return{from:v,options:w,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const Kge=Vd.define({name:"xml",parser:SBr.configure({props:[Vu.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),kh.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!="OpenTag"?null:{from:t.to,to:n.name=="CloseTag"?n.from:e.to}}}),xqe.add({"OpenTag CloseTag":e=>e.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"\x3C!--",close:"-->"}},indentOnInput:/^\s*<\/$/}});function TBr(e={}){let t=[Kge.data.of({autocomplete:YLn(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(ZLn),new wd(Kge,t)}function AAt(e,t,n=e.length){if(!t)return"";let r=t.firstChild,o=r&&r.getChild("TagName");return o?e.sliceString(o.from,Math.min(o.to,n)):""}const ZLn=er.inputHandler.of((e,t,n,r,o)=>{if(e.composing||e.state.readOnly||t!=n||r!=">"&&r!="/"||!Kge.isActiveAt(e.state,t,-1))return!1;let s=o(),{state:a}=s,l=a.changeByRange(d=>{var u,h,g;let{head:m}=d,v=a.doc.sliceString(m-1,m)==r,f=tc(a).resolveInner(m,-1),k;if(v&&r==">"&&f.name=="EndTag"){let A=f.parent;if(((h=(u=A.parent)===null||u===void 0?void 0:u.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(k=AAt(a.doc,A.parent,m))){let p=m+(a.doc.sliceString(m,m+1)===">"?1:0),b=``;return{range:d,changes:{from:m,to:p,insert:b}}}}else if(v&&r=="/"&&f.name=="StartCloseTag"){let A=f.parent;if(f.from==m-2&&((g=A.lastChild)===null||g===void 0?void 0:g.name)!="CloseTag"&&(k=AAt(a.doc,A,m))){let p=m+(a.doc.sliceString(m,m+1)===">"?1:0),b=`${k}>`;return{range:Ln.cursor(m+b.length,-1),changes:{from:m,to:p,insert:b}}}}return{range:d}});return l.changes.empty?!1:(e.dispatch([s,a.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),QBr=Object.freeze(Object.defineProperty({__proto__:null,autoCloseTags:ZLn,completeFromSchema:YLn,xml:TBr,xmlLanguage:Kge},Symbol.toStringTag,{value:"Module"})),SF=63,pAt=64,DBr=1,BBr=2,qLn=3,RBr=4,KLn=5,IBr=6,MBr=7,JLn=65,PBr=66,FBr=8,NBr=9,UBr=10,jBr=11,WBr=12,exn=13,VBr=19,zBr=20,HBr=29,$Br=33,XBr=34,GBr=47,YBr=0,xKe=1,rFe=2,QK=3,oFe=4;let vT=class{constructor(t,n,r){this.parent=t,this.depth=n,this.type=r,this.hash=(t?t.hash+t.hash<<8:0)+n+(n<<4)+r}};vT.top=new vT(null,-1,YBr);function rZ(e,t){for(let n=0,r=t-e.pos-1;;r--,n++){let o=e.peek(r);if(S8(o)||o==-1)return n}}function sFe(e){return e==32||e==9}function S8(e){return e==10||e==13}function txn(e){return sFe(e)||S8(e)}function eQ(e){return e<0||txn(e)}const ZBr=new cI({start:vT.top,reduce(e,t){return e.type==QK&&(t==zBr||t==XBr)?e.parent:e},shift(e,t,n,r){if(t==qLn)return new vT(e,rZ(r,r.pos),xKe);if(t==JLn||t==KLn)return new vT(e,rZ(r,r.pos),rFe);if(t==SF)return e.parent;if(t==VBr||t==$Br)return new vT(e,0,QK);if(t==exn&&e.type==oFe)return e.parent;if(t==GBr){let o=/[1-9]/.exec(r.read(r.pos,n.pos));if(o)return new vT(e,e.depth+ +o[0],oFe)}return e},hash(e){return e.hash}});function UW(e,t,n=0){return e.peek(n)==t&&e.peek(n+1)==t&&e.peek(n+2)==t&&eQ(e.peek(n+3))}const qBr=new go((e,t)=>{if(e.next==-1&&t.canShift(pAt))return e.acceptToken(pAt);let n=e.peek(-1);if((S8(n)||n<0)&&t.context.type!=QK){if(UW(e,45))if(t.canShift(SF))e.acceptToken(SF);else return e.acceptToken(DBr,3);if(UW(e,46))if(t.canShift(SF))e.acceptToken(SF);else return e.acceptToken(BBr,3);let r=0;for(;e.next==32;)r++,e.advance();(r{if(t.context.type==QK){e.next==63&&(e.advance(),eQ(e.next)&&e.acceptToken(MBr));return}if(e.next==45)e.advance(),eQ(e.next)&&e.acceptToken(t.context.type==xKe&&t.context.depth==rZ(e,e.pos-1)?RBr:qLn);else if(e.next==63)e.advance(),eQ(e.next)&&e.acceptToken(t.context.type==rFe&&t.context.depth==rZ(e,e.pos-1)?IBr:KLn);else{let n=e.pos;for(;;)if(sFe(e.next)){if(e.pos==n)return;e.advance()}else if(e.next==33)nxn(e);else if(e.next==38)aFe(e);else if(e.next==42){aFe(e);break}else if(e.next==39||e.next==34){if(EKe(e,!0))break;return}else if(e.next==91||e.next==123){if(!eRr(e))return;break}else{ixn(e,!0,!1,0);break}for(;sFe(e.next);)e.advance();if(e.next==58){if(e.pos==n&&t.canShift(HBr))return;let r=e.peek(1);eQ(r)&&e.acceptTokenTo(t.context.type==rFe&&t.context.depth==rZ(e,n)?PBr:JLn,n)}}},{contextual:!0});function JBr(e){return e>32&&e<127&&e!=34&&e!=37&&e!=44&&e!=60&&e!=62&&e!=92&&e!=94&&e!=96&&e!=123&&e!=124&&e!=125}function bAt(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function wAt(e,t){return e.next==37?(e.advance(),bAt(e.next)&&e.advance(),bAt(e.next)&&e.advance(),!0):JBr(e.next)||t&&e.next==44?(e.advance(),!0):!1}function nxn(e){if(e.advance(),e.next==60){for(e.advance();;)if(!wAt(e,!0)){e.next==62&&e.advance();break}}else for(;wAt(e,!1););}function aFe(e){for(e.advance();!eQ(e.next)&&Jge(e.next)!="f";)e.advance()}function EKe(e,t){let n=e.next,r=!1,o=e.pos;for(e.advance();;){let s=e.next;if(s<0)break;if(e.advance(),s==n)if(s==39)if(e.next==39)e.advance();else break;else break;else if(s==92&&n==34)e.next>=0&&e.advance();else if(S8(s)){if(t)return!1;r=!0}else if(t&&e.pos>=o+1024)return!1}return!r}function eRr(e){for(let t=[],n=e.pos+1024;;)if(e.next==91||e.next==123)t.push(e.next),e.advance();else if(e.next==39||e.next==34){if(!EKe(e,!0))return!1}else if(e.next==93||e.next==125){if(t[t.length-1]!=e.next-2)return!1;if(t.pop(),e.advance(),!t.length)return!0}else{if(e.next<0||e.pos>n||S8(e.next))return!1;e.advance()}}const tRr="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function Jge(e){return e<33?"u":e>125?"s":tRr[e-33]}function JSe(e,t){let n=Jge(e);return n!="u"&&!(t&&n=="f")}function ixn(e,t,n,r){if(Jge(e.next)=="s"||(e.next==63||e.next==58||e.next==45)&&JSe(e.peek(1),n))e.advance();else return!1;let o=e.pos;for(;;){let s=e.next,a=0,l=r+1;for(;txn(s);){if(S8(s)){if(t)return!1;l=0}else l++;s=e.peek(++a)}if(!(s>=0&&(s==58?JSe(e.peek(a+1),n):s==35?e.peek(a-1)!=32:JSe(s,n)))||!n&&l<=r||l==0&&!n&&(UW(e,45,a)||UW(e,46,a)))break;if(t&&Jge(s)=="f")return!1;for(let u=a;u>=0;u--)e.advance();if(t&&e.pos>o+1024)return!1}return!0}const nRr=new go((e,t)=>{if(e.next==33)nxn(e),e.acceptToken(WBr);else if(e.next==38||e.next==42){let n=e.next==38?UBr:jBr;aFe(e),e.acceptToken(n)}else e.next==39||e.next==34?(EKe(e,!1),e.acceptToken(NBr)):ixn(e,!1,t.context.type==QK,t.context.depth)&&e.acceptToken(FBr)}),iRr=new go((e,t)=>{let n=t.context.type==oFe?t.context.depth:-1,r=e.pos;e:for(;;){let o=0,s=e.next;for(;s==32;)s=e.peek(++o);if(!o&&(UW(e,45,o)||UW(e,46,o))||!S8(s)&&(n<0&&(n=Math.max(t.context.depth+1,o)),oYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:ZBr,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[rRr],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[qBr,KBr,nRr,iRr,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),sRr=zd.deserialize({version:14,states:"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d",stateData:"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~",goto:"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS",nodeNames:"⚠ Document Frontmatter DashLine FrontmatterContent Body",maxTerm:10,skippedNodes:[0],repeatNodeCount:2,tokenData:"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~",tokenizers:[0],topRules:{Document:[0,1]},tokenPrec:67}),TKe=Vd.define({name:"yaml",parser:oRr.configure({props:[Vu.add({Stream:e=>{for(let t=e.node.resolve(e.pos,-1);t&&t.to>=e.pos;t=t.parent){if(t.name=="BlockLiteralContent"&&t.frome.pos)return null}}return null},FlowMapping:Xv({closing:"}"}),FlowSequence:Xv({closing:"]"})}),kh.add({"FlowMapping FlowSequence":bA,"Item Pair BlockLiteral":(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function aRr(){return new wd(TKe)}const lRr=Vd.define({name:"yaml-frontmatter",parser:sRr.configure({props:[Xd({DashLine:ve.meta})]})});function cRr(e){let{language:t,support:n}=e.content instanceof wd?e.content:{language:e.content,support:[]};return new wd(lRr.configure({wrap:Ap(r=>r.name=="FrontmatterContent"?{parser:TKe.parser}:r.name=="Body"?{parser:t.parser}:null)}),n)}const dRr=Object.freeze(Object.defineProperty({__proto__:null,yaml:aRr,yamlFrontmatter:cRr,yamlLanguage:TKe},Symbol.toStringTag,{value:"Module"}));var uRr={"+":["conjugate","add"],"−":["negate","subtract"],"×":["signOf","multiply"],"÷":["reciprocal","divide"],"⌈":["ceiling","greaterOf"],"⌊":["floor","lesserOf"],"∣":["absolute","residue"],"⍳":["indexGenerate","indexOf"],"?":["roll","deal"],"⋆":["exponentiate","toThePowerOf"],"⍟":["naturalLog","logToTheBase"],"○":["piTimes","circularFuncs"],"!":["factorial","binomial"],"⌹":["matrixInverse","matrixDivide"],"<":[null,"lessThan"],"≤":[null,"lessThanOrEqual"],"=":[null,"equals"],">":[null,"greaterThan"],"≥":[null,"greaterThanOrEqual"],"≠":[null,"notEqual"],"≡":["depth","match"],"≢":[null,"notMatch"],"∈":["enlist","membership"],"⍷":[null,"find"],"∪":["unique","union"],"∩":[null,"intersection"],"∼":["not","without"],"∨":[null,"or"],"∧":[null,"and"],"⍱":[null,"nor"],"⍲":[null,"nand"],"⍴":["shapeOf","reshape"],",":["ravel","catenate"],"⍪":[null,"firstAxisCatenate"],"⌽":["reverse","rotate"],"⊖":["axis1Reverse","axis1Rotate"],"⍉":["transpose",null],"↑":["first","take"],"↓":[null,"drop"],"⊂":["enclose","partitionWithAxis"],"⊃":["diclose","pick"],"⌷":[null,"index"],"⍋":["gradeUp",null],"⍒":["gradeDown",null],"⊤":["encode",null],"⊥":["decode",null],"⍕":["format","formatByExample"],"⍎":["execute",null],"⊣":["stop","left"],"⊢":["pass","right"]},hRr=/[\.\/⌿⍀¨⍣]/,fRr=/⍬/,gRr=/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/,mRr=/←/,kRr=/[⍝#].*$/,vRr=function(e){var t;return t=!1,function(n){return t=n,n===e?t==="\\":!0}};const ARr={name:"apl",startState:function(){return{prev:!1,func:!1,op:!1,string:!1,escape:!1}},token:function(e,t){var n;return e.eatSpace()?null:(n=e.next(),n==='"'||n==="'"?(e.eatWhile(vRr(n)),e.next(),t.prev=!0,"string"):/[\[{\(]/.test(n)?(t.prev=!1,null):/[\]}\)]/.test(n)?(t.prev=!0,null):fRr.test(n)?(t.prev=!1,"atom"):/[¯\d]/.test(n)?(t.func?(t.func=!1,t.prev=!1):t.prev=!0,e.eatWhile(/[\w\.]/),"number"):hRr.test(n)||mRr.test(n)?"operator":gRr.test(n)?(t.func=!0,t.prev=!1,uRr[n]?"variableName.function.standard":"variableName.function"):kRr.test(n)?(e.skipToEnd(),"comment"):n==="∘"&&e.peek()==="."?(e.next(),"variableName.function"):(e.eatWhile(/[\w\$_]/),t.prev=!0,"keyword"))}},pRr=Object.freeze(Object.defineProperty({__proto__:null,apl:ARr},Symbol.toStringTag,{value:"Module"}));function e8e(e){var t=e.match(/^\s*\S/);return e.skipToEnd(),t?"error":null}const bRr={name:"asciiarmor",token:function(e,t){var n;if(t.state=="top")return e.sol()&&(n=e.match(/^-----BEGIN (.*)?-----\s*$/))?(t.state="headers",t.type=n[1],"tag"):e8e(e);if(t.state=="headers"){if(e.sol()&&e.match(/^\w+:/))return t.state="header","atom";var r=e8e(e);return r&&(t.state="body"),r}else{if(t.state=="header")return e.skipToEnd(),t.state="headers","string";if(t.state=="body")return e.sol()&&(n=e.match(/^-----END (.*)?-----\s*$/))?n[1]!=t.type?"error":(t.state="end","tag"):e.eatWhile(/[A-Za-z0-9+\/=]/)?null:(e.next(),"error");if(t.state=="end")return e8e(e)}},blankLine:function(e){e.state=="headers"&&(e.state="body")},startState:function(){return{state:"top",type:null}}},wRr=Object.freeze(Object.defineProperty({__proto__:null,asciiArmor:bRr},Symbol.toStringTag,{value:"Module"}));function ux(e){for(var t={},n=e.split(" "),r=0;r?$/.test(n)?(t.extenExten=!0,t.extenStart=!1,"strong"):(t.extenStart=!1,e.skipToEnd(),"error");if(t.extenExten)return t.extenExten=!1,t.extenPriority=!0,e.eatWhile(/[^,]/),t.extenInclude&&(e.skipToEnd(),t.extenPriority=!1,t.extenInclude=!1),t.extenSame&&(t.extenPriority=!1,t.extenSame=!1,t.extenApplication=!0),"tag";if(t.extenPriority)return t.extenPriority=!1,t.extenApplication=!0,e.next(),t.extenSame?null:(e.eatWhile(/[^,]/),"number");if(t.extenApplication){if(e.eatWhile(/,/),n=e.current(),n===",")return null;if(e.eatWhile(/\w/),n=e.current().toLowerCase(),t.extenApplication=!1,SRr.indexOf(n)!==-1)return"def"}else return LRr(e,t);return null},languageData:{commentTokens:{line:";",block:{open:";--",close:"--;"}}}},ERr=Object.freeze(Object.defineProperty({__proto__:null,asterisk:xRr},Symbol.toStringTag,{value:"Module"}));var TRr="><+-.,[]".split("");const QRr={name:"brainfuck",startState:function(){return{commentLine:!1,left:0,right:0,commentLoop:!1}},token:function(e,t){if(e.eatSpace())return null;e.sol()&&(t.commentLine=!1);var n=e.next().toString();if(TRr.indexOf(n)!==-1){if(t.commentLine===!0)return e.eol()&&(t.commentLine=!1),"comment";if(n==="]"||n==="[")return n==="["?t.left++:t.right++,"bracket";if(n==="+"||n==="-")return"keyword";if(n==="<"||n===">")return"atom";if(n==="."||n===",")return"def"}else return t.commentLine=!0,e.eol()&&(t.commentLine=!1),"comment";e.eol()&&(t.commentLine=!1)}},DRr=Object.freeze(Object.defineProperty({__proto__:null,brainfuck:QRr},Symbol.toStringTag,{value:"Module"}));var BRr="builtin",RRr="comment",OAt="string",yAt="atom",IRr="number",MRr="keyword",PRr="header",FRr="def",NRr="link";function QKe(e){for(var t={},n=e.split(" "),r=0;r >= "),h4={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,symbol:/[\w*+\-]/};function URr(e,t){return e==="0"&&t.eat(/x/i)?(t.eatWhile(h4.hex),!0):((e=="+"||e=="-")&&h4.digit.test(t.peek())&&(t.eat(h4.sign),e=t.next()),h4.digit.test(e)?(t.eat(e),t.eatWhile(h4.digit),t.peek()=="."&&(t.eat("."),t.eatWhile(h4.digit)),t.eat(h4.exponent)&&(t.eat(h4.sign),t.eatWhile(h4.digit)),!0):!1)}const jRr={name:"cobol",startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(e,t){if(t.indentStack==null&&e.sol()&&(t.indentation=6),e.eatSpace())return null;var n=null;switch(t.mode){case"string":for(var r=!1;(r=e.next())!=null;)if((r=='"'||r=="'")&&!e.match(/['"]/,!1)){t.mode=!1;break}n=OAt;break;default:var o=e.next(),s=e.column();if(s>=0&&s<=5)n=FRr;else if(s>=72&&s<=79)e.skipToEnd(),n=PRr;else if(o=="*"&&s==6)e.skipToEnd(),n=RRr;else if(o=='"'||o=="'")t.mode="string",n=OAt;else if(o=="'"&&!h4.digit_or_colon.test(e.peek()))n=yAt;else if(o==".")n=NRr;else if(URr(o,e))n=IRr;else{if(e.current().match(h4.symbol))for(;s<71&&e.eat(h4.symbol)!==void 0;)s++;_At&&_At.propertyIsEnumerable(e.current().toUpperCase())?n=MRr:SAt&&SAt.propertyIsEnumerable(e.current().toUpperCase())?n=BRr:CAt&&CAt.propertyIsEnumerable(e.current().toUpperCase())?n=yAt:n=null}}return n},indent:function(e){return e.indentStack==null?e.indentation:e.indentStack.indent}},WRr=Object.freeze(Object.defineProperty({__proto__:null,cobol:jRr},Symbol.toStringTag,{value:"Module"}));function DKe(e,t,n,r,o,s){this.indented=e,this.column=t,this.type=n,this.info=r,this.align=o,this.prev=s}function Bae(e,t,n,r){var o=e.indented;return e.context&&e.context.type=="statement"&&n!="statement"&&(o=e.context.indented),e.context=new DKe(o,t,n,r,null,e.context)}function $$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}function LAt(e,t,n){if(t.prevToken=="variable"||t.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||t.typeAtEndOfLine&&e.column()==e.indentation())return!0}function t8e(e){for(;;){if(!e||e.type=="top")return!0;if(e.type=="}"&&e.prev.info!="namespace")return!1;e=e.prev}}function O2(e){var t=e.statementIndentUnit,n=e.dontAlignCalls,r=e.keywords||{},o=e.types||{},s=e.builtin||{},a=e.blockKeywords||{},l=e.defKeywords||{},d=e.atoms||{},u=e.hooks||{},h=e.multiLineStrings,g=e.indentStatements!==!1,m=e.indentSwitch!==!1,v=e.namespaceSeparator,f=e.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,k=e.numberStart||/[\d\.]/,A=e.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,p=e.isOperatorChar||/[+\-*&%=<>!?|\/]/,b=e.isIdentifierChar||/[\w\$_\xa1-\uffff]/,w=e.isReservedIdentifier||!1,O,y;function C(E,T){var D=E.next();if(u[D]){var P=u[D](E,T);if(P!==!1)return P}if(D=='"'||D=="'")return T.tokenize=_(D),T.tokenize(E,T);if(k.test(D)){if(E.backUp(1),E.match(A))return"number";E.next()}if(f.test(D))return O=D,null;if(D=="/"){if(E.eat("*"))return T.tokenize=S,S(E,T);if(E.eat("/"))return E.skipToEnd(),"comment"}if(p.test(D)){for(;!E.match(/^\/[\/*]/,!1)&&E.eat(p););return"operator"}if(E.eatWhile(b),v)for(;E.match(v);)E.eatWhile(b);var Q=E.current();return M_(r,Q)?(M_(a,Q)&&(O="newstatement"),M_(l,Q)&&(y=!0),"keyword"):M_(o,Q)?"type":M_(s,Q)||w&&w(Q)?(M_(a,Q)&&(O="newstatement"),"builtin"):M_(d,Q)?"atom":"variable"}function _(E){return function(T,D){for(var P=!1,Q,M=!1;(Q=T.next())!=null;){if(Q==E&&!P){M=!0;break}P=!P&&Q=="\\"}return(M||!(P||h))&&(D.tokenize=null),"string"}}function S(E,T){for(var D=!1,P;P=E.next();){if(P=="/"&&D){T.tokenize=null;break}D=P=="*"}return"comment"}function L(E,T){e.typeFirstDefinitions&&E.eol()&&t8e(T.context)&&(T.typeAtEndOfLine=LAt(E,T,E.pos))}return{name:e.name,startState:function(E){return{tokenize:null,context:new DKe(-E,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(E,T){var D=T.context;if(E.sol()&&(D.align==null&&(D.align=!1),T.indented=E.indentation(),T.startOfLine=!0),E.eatSpace())return L(E,T),null;O=y=null;var P=(T.tokenize||C)(E,T);if(P=="comment"||P=="meta")return P;if(D.align==null&&(D.align=!0),O==";"||O==":"||O==","&&E.match(/^\s*(?:\/\/.*)?$/,!1))for(;T.context.type=="statement";)$$(T);else if(O=="{")Bae(T,E.column(),"}");else if(O=="[")Bae(T,E.column(),"]");else if(O=="(")Bae(T,E.column(),")");else if(O=="}"){for(;D.type=="statement";)D=$$(T);for(D.type=="}"&&(D=$$(T));D.type=="statement";)D=$$(T)}else O==D.type?$$(T):g&&((D.type=="}"||D.type=="top")&&O!=";"||D.type=="statement"&&O=="newstatement")&&Bae(T,E.column(),"statement",E.current());if(P=="variable"&&(T.prevToken=="def"||e.typeFirstDefinitions&&LAt(E,T,E.start)&&t8e(T.context)&&E.match(/^\s*\(/,!1))&&(P="def"),u.token){var Q=u.token(E,T,P);Q!==void 0&&(P=Q)}return P=="def"&&e.styleDefs===!1&&(P="variable"),T.startOfLine=!1,T.prevToken=y?"def":P||O,L(E,T),P},indent:function(E,T,D){if(E.tokenize!=C&&E.tokenize!=null||E.typeAtEndOfLine&&t8e(E.context))return null;var P=E.context,Q=T&&T.charAt(0),M=Q==P.type;if(P.type=="statement"&&Q=="}"&&(P=P.prev),e.dontIndentStatements)for(;P.type=="statement"&&e.dontIndentStatements.test(P.info);)P=P.prev;if(u.indent){var B=u.indent(E,P,T,D.unit);if(typeof B=="number")return B}var R=P.prev&&P.prev.info=="switch";if(e.allmanIndentation&&/[{(]/.test(Q)){for(;P.type!="top"&&P.type!="}";)P=P.prev;return P.indented}return P.type=="statement"?P.indented+(Q=="{"?0:t||D.unit):P.align&&(!n||P.type!=")")?P.column+(M?0:1):P.type==")"&&!M?P.indented+(t||D.unit):P.indented+(M?0:D.unit)+(!M&&R&&!/^(?:case|default)\b/.test(T)?D.unit:0)},languageData:{indentOnInput:m?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:Object.keys(r).concat(Object.keys(o)).concat(Object.keys(s)).concat(Object.keys(d)),...e.languageData}}}function Qr(e){for(var t={},n=e.split(" "),r=0;r!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return e.match('""')?(t.tokenize=cxn,t.tokenize(e,t)):!1},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"character":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(e,t){var n=t.context;return n.type=="}"&&n.align&&e.eat(">")?(t.context=new DKe(n.indented,n.column,n.type,n.info,null,n.prev),"operator"):!1},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function ZRr(e){return function(t,n){for(var r=!1,o,s=!1;!t.eol();){if(!e&&!r&&t.match('"')){s=!0;break}if(e&&t.match('"""')){s=!0;break}o=t.next(),!r&&o=="$"&&t.match("{")&&t.skipTo("}"),r=!r&&o=="\\"&&!e}return(s||!e)&&(n.tokenize=null),"string"}}const qRr=O2({name:"kotlin",keywords:Qr("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam"),types:Qr("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(ul?|l|f)?/i,blockKeywords:Qr("catch class do else finally for if where try while enum"),defKeywords:Qr("class val var object interface fun"),atoms:Qr("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,t){return t.prevToken=="."?"variable":"operator"},'"':function(e,t){return t.tokenize=ZRr(e.match('""')),t.tokenize(e,t)},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1},indent:function(e,t,n,r){var o=n&&n.charAt(0);if((e.prevToken=="}"||e.prevToken==")")&&n=="")return e.indented;if(e.prevToken=="operator"&&n!="}"&&e.context.type!="}"||e.prevToken=="variable"&&o=="."||(e.prevToken=="}"||e.prevToken==")")&&o==".")return r*2+t.indented;if(t.align&&t.type=="}")return t.indented+(e.context.type==(n||"").charAt(0)?0:r)}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}}),KRr=O2({name:"shader",keywords:Qr("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:Qr("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:Qr("for while do if else struct"),builtin:Qr("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:Qr("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":nE}}),JRr=O2({name:"nesc",keywords:Qr(oie+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:sie,blockKeywords:Qr(aie),atoms:Qr("null true false"),hooks:{"#":nE}}),eIr=O2({name:"objectivec",keywords:Qr(oie+" "+oxn),types:axn,builtin:Qr(sxn),blockKeywords:Qr(aie+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:Qr(Dpe+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:Qr("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Rpe,hooks:{"#":nE,"*":Bpe}}),tIr=O2({name:"objectivecpp",keywords:Qr(oie+" "+oxn+" "+rxn),types:axn,builtin:Qr(sxn),blockKeywords:Qr(aie+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:Qr(Dpe+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:Qr("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Rpe,hooks:{"#":nE,"*":Bpe,u:o9,U:o9,L:o9,R:o9,0:Rh,1:Rh,2:Rh,3:Rh,4:Rh,5:Rh,6:Rh,7:Rh,8:Rh,9:Rh,token:function(e,t,n){if(n=="variable"&&e.peek()=="("&&(t.prevToken==";"||t.prevToken==null||t.prevToken=="}")&&lxn(e.current()))return"def"}},namespaceSeparator:"::"}),nIr=O2({name:"squirrel",keywords:Qr("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:sie,blockKeywords:Qr("case catch class else for foreach if switch try while"),defKeywords:Qr("function local class"),typeFirstDefinitions:!0,atoms:Qr("true false null"),hooks:{"#":nE}});var Bue=null;function dxn(e){return function(t,n){for(var r=!1,o,s=!1;!t.eol();){if(!r&&t.match('"')&&(e=="single"||t.match('""'))){s=!0;break}if(!r&&t.match("``")){Bue=dxn(e),s=!0;break}o=t.next(),r=e=="single"&&!r&&o=="\\"}return s&&(n.tokenize=null),"string"}}const iIr=O2({name:"ceylon",keywords:Qr("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){var t=e.charAt(0);return t===t.toUpperCase()&&t!==t.toLowerCase()},blockKeywords:Qr("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:Qr("class dynamic function interface module object package value"),builtin:Qr("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:Qr("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return t.tokenize=dxn(e.match('""')?"triple":"single"),t.tokenize(e,t)},"`":function(e,t){return!Bue||!e.match("`")?!1:(t.tokenize=Bue,Bue=null,t.tokenize(e,t))},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"string.special":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},token:function(e,t,n){if((n=="variable"||n=="type")&&t.prevToken==".")return"variableName.special"}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function rIr(e){(e.interpolationStack||(e.interpolationStack=[])).push(e.tokenize)}function uxn(e){return(e.interpolationStack||(e.interpolationStack=[])).pop()}function oIr(e){return e.interpolationStack?e.interpolationStack.length:0}function n8e(e,t,n,r){var o=!1;if(t.eat(e))if(t.eat(e))o=!0;else return"string";function s(a,l){for(var d=!1;!a.eol();){if(!r&&!d&&a.peek()=="$")return rIr(l),l.tokenize=sIr,"string";var u=a.next();if(u==e&&!d&&(!o||a.match(e+e))){l.tokenize=null;break}d=!r&&!d&&u=="\\"}return"string"}return n.tokenize=s,s(t,n)}function sIr(e,t){return e.eat("$"),e.eat("{")?t.tokenize=null:t.tokenize=aIr,null}function aIr(e,t){return e.eatWhile(/[\w_]/),t.tokenize=uxn(t),"variable"}const lIr=O2({name:"dart",keywords:Qr("this super static final const abstract class extends external factory implements mixin get native set typedef with enum throw rethrow assert break case continue default in return new deferred async await covariant try catch finally do else for if switch while import library export part of show hide is as extension on yield late required sealed base interface when inline"),blockKeywords:Qr("try catch finally do else for if switch while"),builtin:Qr("void bool num int double dynamic var String Null Never"),atoms:Qr("true false null"),number:/^(?:0x[a-f\d_]+|(?:[\d_]+\.?[\d_]*|\.[\d_]+)(?:e[-+]?[\d_]+)?)/i,hooks:{"@":function(e){return e.eatWhile(/[\w\$_\.]/),"meta"},"'":function(e,t){return n8e("'",e,t,!1)},'"':function(e,t){return n8e('"',e,t,!1)},r:function(e,t){var n=e.peek();return n=="'"||n=='"'?n8e(e.next(),e,t,!0):!1},"}":function(e,t){return oIr(t)>0?(t.tokenize=uxn(t),null):!1},"/":function(e,t){return e.eat("*")?(t.tokenize=DK(1),t.tokenize(e,t)):!1},token:function(e,t,n){if(n=="variable"){var r=RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g");if(r.test(e.current()))return"type"}}}}),l7=Object.freeze(Object.defineProperty({__proto__:null,c:HRr,ceylon:iIr,clike:O2,cpp:$Rr,csharp:GRr,dart:lIr,java:XRr,kotlin:qRr,nesC:JRr,objectiveC:eIr,objectiveCpp:tIr,scala:YRr,shader:KRr,squirrel:nIr},Symbol.toStringTag,{value:"Module"}));var hxn=["false","nil","true"],fxn=[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],gxn=["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],cIr=["->","->>","as->","binding","bound-fn","case","catch","comment","cond","cond->","cond->>","condp","def","definterface","defmethod","defn","defmacro","defprotocol","defrecord","defstruct","deftype","do","doseq","dotimes","doto","extend","extend-protocol","extend-type","fn","for","future","if","if-let","if-not","if-some","let","letfn","locking","loop","ns","proxy","reify","struct-map","some->","some->>","try","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn"],dIr=Ipe(hxn),uIr=Ipe(fxn),hIr=Ipe(gxn),fIr=Ipe(cIr),gIr=/^(?:[\\\[\]\s"(),;@^`{}~]|$)/,mIr=/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,kIr=/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,vIr=/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;function BKe(e,t){if(e.eatSpace()||e.eat(","))return["space",null];if(e.match(mIr))return[null,"number"];if(e.match(kIr))return[null,"string.special"];if(e.eat(/^"/))return(t.tokenize=AIr)(e,t);if(e.eat(/^[(\[{]/))return["open","bracket"];if(e.eat(/^[)\]}]/))return["close","bracket"];if(e.eat(/^;/))return e.skipToEnd(),["space","comment"];if(e.eat(/^[#'@^`~]/))return[null,"meta"];var n=e.match(vIr),r=n&&n[0];return r?r==="comment"&&t.lastToken==="("?(t.tokenize=pIr)(e,t):TG(r,dIr)||r.charAt(0)===":"?["symbol","atom"]:TG(r,uIr)||TG(r,hIr)?["symbol","keyword"]:t.lastToken==="("?["symbol","builtin"]:["symbol","variable"]:(e.next(),e.eatWhile(function(o){return!TG(o,gIr)}),[null,"error"])}function AIr(e,t){for(var n=!1,r;r=e.next();){if(r==='"'&&!n){t.tokenize=BKe;break}n=!n&&r==="\\"}return[null,"string"]}function pIr(e,t){for(var n=1,r;r=e.next();)if(r===")"&&n--,r==="("&&n++,n===0){e.backUp(1),t.tokenize=BKe;break}return["space","comment"]}function Ipe(e){for(var t={},n=0;n*\/]/.test(B)?w(null,"select-op"):B=="."&&Q.match(/^-?[_a-z][_a-z0-9-]*/i)?w("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(B)?w(null,B):Q.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(Q.current())&&(M.tokenize=C),w("variableName.function","variable")):/[\w\\\-]/.test(B)?(Q.eatWhile(/[\w\\\-]/),w("property","word")):w(null,null)}function y(Q){return function(M,B){for(var R=!1,I;(I=M.next())!=null;){if(I==Q&&!R){Q==")"&&M.backUp(1);break}R=!R&&I=="\\"}return(I==Q||!R&&Q!=")")&&(B.tokenize=null),w("string","string")}}function C(Q,M){return Q.next(),Q.match(/^\s*[\"\')]/,!1)?M.tokenize=null:M.tokenize=y(")"),w(null,"(")}function _(Q,M,B){this.type=Q,this.indent=M,this.prev=B}function S(Q,M,B,R){return Q.context=new _(B,M.indentation()+(R===!1?0:M.indentUnit),Q.context),B}function L(Q){return Q.context.prev&&(Q.context=Q.context.prev),Q.context.type}function E(Q,M,B){return P[B.context.type](Q,M,B)}function T(Q,M,B,R){for(var I=R||1;I>0;I--)B.context=B.context.prev;return E(Q,M,B)}function D(Q){var M=Q.current().toLowerCase();m.hasOwnProperty(M)?b="atom":g.hasOwnProperty(M)?b="keyword":b="variable"}var P={};return P.top=function(Q,M,B){if(Q=="{")return S(B,M,"block");if(Q=="}"&&B.context.prev)return L(B);if(k&&/@component/i.test(Q))return S(B,M,"atComponentBlock");if(/^@(-moz-)?document$/i.test(Q))return S(B,M,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(Q))return S(B,M,"atBlock");if(/^@(font-face|counter-style)/i.test(Q))return B.stateArg=Q,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(Q))return"keyframes";if(Q&&Q.charAt(0)=="@")return S(B,M,"at");if(Q=="hash")b="builtin";else if(Q=="word")b="tag";else{if(Q=="variable-definition")return"maybeprop";if(Q=="interpolation")return S(B,M,"interpolation");if(Q==":")return"pseudo";if(v&&Q=="(")return S(B,M,"parens")}return B.context.type},P.block=function(Q,M,B){if(Q=="word"){var R=M.current().toLowerCase();return l.hasOwnProperty(R)?(b="property","maybeprop"):d.hasOwnProperty(R)?(b=A?"string.special":"property","maybeprop"):v?(b=M.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(b="error","maybeprop")}else return Q=="meta"?"block":!v&&(Q=="hash"||Q=="qualifier")?(b="error","block"):P.top(Q,M,B)},P.maybeprop=function(Q,M,B){return Q==":"?S(B,M,"prop"):E(Q,M,B)},P.prop=function(Q,M,B){if(Q==";")return L(B);if(Q=="{"&&v)return S(B,M,"propBlock");if(Q=="}"||Q=="{")return T(Q,M,B);if(Q=="(")return S(B,M,"parens");if(Q=="hash"&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(M.current()))b="error";else if(Q=="word")D(M);else if(Q=="interpolation")return S(B,M,"interpolation");return"prop"},P.propBlock=function(Q,M,B){return Q=="}"?L(B):Q=="word"?(b="property","maybeprop"):B.context.type},P.parens=function(Q,M,B){return Q=="{"||Q=="}"?T(Q,M,B):Q==")"?L(B):Q=="("?S(B,M,"parens"):Q=="interpolation"?S(B,M,"interpolation"):(Q=="word"&&D(M),"parens")},P.pseudo=function(Q,M,B){return Q=="meta"?"pseudo":Q=="word"?(b="variableName.constant",B.context.type):E(Q,M,B)},P.documentTypes=function(Q,M,B){return Q=="word"&&r.hasOwnProperty(M.current())?(b="tag",B.context.type):P.atBlock(Q,M,B)},P.atBlock=function(Q,M,B){if(Q=="(")return S(B,M,"atBlock_parens");if(Q=="}"||Q==";")return T(Q,M,B);if(Q=="{")return L(B)&&S(B,M,v?"block":"top");if(Q=="interpolation")return S(B,M,"interpolation");if(Q=="word"){var R=M.current().toLowerCase();R=="only"||R=="not"||R=="and"||R=="or"?b="keyword":o.hasOwnProperty(R)?b="attribute":s.hasOwnProperty(R)?b="property":a.hasOwnProperty(R)?b="keyword":l.hasOwnProperty(R)?b="property":d.hasOwnProperty(R)?b=A?"string.special":"property":m.hasOwnProperty(R)?b="atom":g.hasOwnProperty(R)?b="keyword":b="error"}return B.context.type},P.atComponentBlock=function(Q,M,B){return Q=="}"?T(Q,M,B):Q=="{"?L(B)&&S(B,M,v?"block":"top",!1):(Q=="word"&&(b="error"),B.context.type)},P.atBlock_parens=function(Q,M,B){return Q==")"?L(B):Q=="{"||Q=="}"?T(Q,M,B,2):P.atBlock(Q,M,B)},P.restricted_atBlock_before=function(Q,M,B){return Q=="{"?S(B,M,"restricted_atBlock"):Q=="word"&&B.stateArg=="@counter-style"?(b="variable","restricted_atBlock_before"):E(Q,M,B)},P.restricted_atBlock=function(Q,M,B){return Q=="}"?(B.stateArg=null,L(B)):Q=="word"?(B.stateArg=="@font-face"&&!u.hasOwnProperty(M.current().toLowerCase())||B.stateArg=="@counter-style"&&!h.hasOwnProperty(M.current().toLowerCase())?b="error":b="property","maybeprop"):"restricted_atBlock"},P.keyframes=function(Q,M,B){return Q=="word"?(b="variable","keyframes"):Q=="{"?S(B,M,"top"):E(Q,M,B)},P.at=function(Q,M,B){return Q==";"?L(B):Q=="{"||Q=="}"?T(Q,M,B):(Q=="word"?b="tag":Q=="hash"&&(b="builtin"),"at")},P.interpolation=function(Q,M,B){return Q=="}"?L(B):Q=="{"||Q==";"?T(Q,M,B):(Q=="word"?b="variable":Q!="variable"&&Q!="("&&Q!=")"&&(b="error"),"interpolation")},{name:e.name,startState:function(){return{tokenize:null,state:t?"block":"top",stateArg:null,context:new _(t?"block":"top",0,null)}},token:function(Q,M){if(!M.tokenize&&Q.eatSpace())return null;var B=(M.tokenize||O)(Q,M);return B&&typeof B=="object"&&(p=B[1],B=B[0]),b=B,p!="comment"&&(M.state=P[M.state](p,Q,M)),b},indent:function(Q,M,B){var R=Q.context,I=M&&M.charAt(0),F=R.indent;return R.type=="prop"&&(I=="}"||I==")")&&(R=R.prev),R.prev&&(I=="}"&&(R.type=="block"||R.type=="top"||R.type=="interpolation"||R.type=="restricted_atBlock")?(R=R.prev,F=R.indent):(I==")"&&(R.type=="parens"||R.type=="atBlock_parens")||I=="{"&&(R.type=="at"||R.type=="atBlock"))&&(F=Math.max(0,R.indent-B.unit))),F},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:f,block:{open:"/*",close:"*/"}},autocomplete:yxn}}}function Zy(e){for(var t={},n=0;n|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,RIr=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,QAt=/^[_A-Za-z$][_A-Za-z$0-9]*/,IIr=/^@[_A-Za-z$][_A-Za-z$0-9]*/,MIr=Vpe(["and","or","not","is","isnt","in","instanceof","typeof"]),eme=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],PIr=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],FIr=Vpe(eme.concat(PIr));eme=Vpe(eme);var NIr=/^('{3}|\"{3}|['\"])/,UIr=/^(\/{3}|\/)/,jIr=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],WIr=Vpe(jIr);function BK(e,t){if(e.sol()){t.scope.align===null&&(t.scope.align=!1);var n=t.scope.offset;if(e.eatSpace()){var r=e.indentation();return r>n&&t.scope.type=="coffee"?"indent":r0&&lFe(e,t)}if(e.eatSpace())return null;var o=e.peek();if(e.match("####"))return e.skipToEnd(),"comment";if(e.match("###"))return t.tokenize=VIr,t.tokenize(e,t);if(o==="#")return e.skipToEnd(),"comment";if(e.match(/^-?[0-9\.]/,!1)){var s=!1;if(e.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(s=!0),e.match(/^-?\d+\.\d*/)&&(s=!0),e.match(/^-?\.\d+/)&&(s=!0),s)return e.peek()=="."&&e.backUp(1),"number";var a=!1;if(e.match(/^-?0x[0-9a-f]+/i)&&(a=!0),e.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(a=!0),e.match(/^-?0(?![\dx])/i)&&(a=!0),a)return"number"}if(e.match(NIr))return t.tokenize=DAt(e.current(),!1,"string"),t.tokenize(e,t);if(e.match(UIr)){if(e.current()!="/"||e.match(/^.*\//,!1))return t.tokenize=DAt(e.current(),!0,"string.special"),t.tokenize(e,t);e.backUp(1)}return e.match(BIr)||e.match(MIr)?"operator":e.match(RIr)?"punctuation":e.match(WIr)?"atom":e.match(IIr)||t.prop&&e.match(QAt)?"property":e.match(FIr)?"keyword":e.match(QAt)?"variable":(e.next(),Cxn)}function DAt(e,t,n){return function(r,o){for(;!r.eol();)if(r.eatWhile(/[^'"\/\\]/),r.eat("\\")){if(r.next(),t&&r.eol())return n}else{if(r.match(e))return o.tokenize=BK,n;r.eat(/['"\/]/)}return t&&(o.tokenize=BK),n}}function VIr(e,t){for(;!e.eol();){if(e.eatWhile(/[^#]/),e.match("###")){t.tokenize=BK;break}e.eatWhile("#")}return"comment"}function r8e(e,t,n="coffee"){for(var r=0,o=!1,s=null,a=t.scope;a;a=a.prev)if(a.type==="coffee"||a.type=="}"){r=a.offset+e.indentUnit;break}n!=="coffee"?(o=null,s=e.column()+e.current().length):t.scope.align&&(t.scope.align=!1),t.scope={offset:r,type:n,prev:t.scope,align:o,alignOffset:s}}function lFe(e,t){if(t.scope.prev)if(t.scope.type==="coffee"){for(var n=e.indentation(),r=!1,o=t.scope;o;o=o.prev)if(n===o.offset){r=!0;break}if(!r)return!0;for(;t.scope.prev&&t.scope.offset!==n;)t.scope=t.scope.prev;return!1}else return t.scope=t.scope.prev,!1}function zIr(e,t){var n=t.tokenize(e,t),r=e.current();r==="return"&&(t.dedent=!0),((r==="->"||r==="=>")&&e.eol()||n==="indent")&&r8e(e,t);var o="[({".indexOf(r);if(o!==-1&&r8e(e,t,"])}".slice(o,o+1)),eme.exec(r)&&r8e(e,t),r=="then"&&lFe(e,t),n==="dedent"&&lFe(e,t))return Cxn;if(o="])}".indexOf(r),o!==-1){for(;t.scope.type=="coffee"&&t.scope.prev;)t.scope=t.scope.prev;t.scope.type==r&&(t.scope=t.scope.prev)}return t.dedent&&e.eol()&&(t.scope.type=="coffee"&&t.scope.prev&&(t.scope=t.scope.prev),t.dedent=!1),n=="indent"||n=="dedent"?null:n}const HIr={name:"coffeescript",startState:function(){return{tokenize:BK,scope:{offset:0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(e,t){var n=t.scope.align===null&&t.scope;n&&e.sol()&&(n.align=!1);var r=zIr(e,t);return r&&r!="comment"&&(n&&(n.align=!0),t.prop=r=="punctuation"&&e.current()=="."),r},indent:function(e,t){if(e.tokenize!=BK)return 0;var n=e.scope,r=t&&"])}".indexOf(t.charAt(0))>-1;if(r)for(;n.type=="coffee"&&n.prev;)n=n.prev;var o=r&&n.type===t.charAt(0);return n.align?n.alignOffset-(o?1:0):(o?n.prev:n).offset},languageData:{commentTokens:{line:"#"}}},$Ir=Object.freeze(Object.defineProperty({__proto__:null,coffeeScript:HIr},Symbol.toStringTag,{value:"Module"}));var XIr=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,_xn=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,GIr=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,YIr=/[^\s'`,@()\[\]";]/,_v;function o8e(e){for(var t;t=e.next();)if(t=="\\")e.next();else if(!YIr.test(t)){e.backUp(1);break}return e.current()}function FKe(e,t){if(e.eatSpace())return _v="ws",null;if(e.match(GIr))return"number";var n=e.next();if(n=="\\"&&(n=e.next()),n=='"')return(t.tokenize=ZIr)(e,t);if(n=="(")return _v="open","bracket";if(n==")")return _v="close","bracket";if(n==";")return e.skipToEnd(),_v="ws","comment";if(/['`,@]/.test(n))return null;if(n=="|")return e.skipTo("|")?(e.next(),"variableName"):(e.skipToEnd(),"error");if(n=="#"){var n=e.next();return n=="("?(_v="open","bracket"):/[+\-=\.']/.test(n)||/\d/.test(n)&&e.match(/^\d*#/)?null:n=="|"?(t.tokenize=qIr)(e,t):n==":"?(o8e(e),"meta"):n=="\\"?(e.next(),o8e(e),"string.special"):"error"}else{var r=o8e(e);return r=="."?null:(_v="symbol",r=="nil"||r=="t"||r.charAt(0)==":"?"atom":t.lastType=="open"&&(XIr.test(r)||_xn.test(r))?"keyword":r.charAt(0)=="&"?"variableName.special":"variableName")}}function ZIr(e,t){for(var n=!1,r;r=e.next();){if(r=='"'&&!n){t.tokenize=FKe;break}n=!n&&r=="\\"}return"string"}function qIr(e,t){for(var n,r;n=e.next();){if(n=="#"&&r=="|"){t.tokenize=FKe;break}r=n}return _v="ws","comment"}const KIr={name:"commonlisp",startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:FKe}},token:function(e,t){e.sol()&&typeof t.ctx.indentTo!="number"&&(t.ctx.indentTo=t.ctx.start+1),_v=null;var n=t.tokenize(e,t);return _v!="ws"&&(t.ctx.indentTo==null?_v=="symbol"&&_xn.test(e.current())?t.ctx.indentTo=t.ctx.start+e.indentUnit:t.ctx.indentTo="next":t.ctx.indentTo=="next"&&(t.ctx.indentTo=e.column()),t.lastType=_v),_v=="open"?t.ctx={prev:t.ctx,start:e.column(),indentTo:null}:_v=="close"&&(t.ctx=t.ctx.prev||t.ctx),n},indent:function(e){var t=e.ctx.indentTo;return typeof t=="number"?t:e.ctx.start+1},languageData:{commentTokens:{line:";;",block:{open:"#|",close:"|#"}},closeBrackets:{brackets:["(","[","{",'"']}}},JIr=Object.freeze(Object.defineProperty({__proto__:null,commonLisp:KIr},Symbol.toStringTag,{value:"Module"}));var zpe=function(e){return new RegExp("^(?:"+e.join("|")+")$","i")},eMr=function(e){o5=null;var t=e.next();if(t==='"')return e.match(/^.*?"/),"string";if(t==="'")return e.match(/^.*?'/),"string";if(/[{}\(\),\.;\[\]]/.test(t))return o5=t,"punctuation";if(t==="/"&&e.eat("/"))return e.skipToEnd(),"comment";if(BAt.test(t))return e.eatWhile(BAt),null;if(e.eatWhile(/[_\w\d]/),e.eat(":"))return e.eatWhile(/[\w\d_\-]/),"atom";var n=e.current();return tMr.test(n)?"builtin":nMr.test(n)?"def":iMr.test(n)||rMr.test(n)?"keyword":"variable"},Rae=function(e,t,n){return e.context={prev:e.context,indent:e.indent,col:n,type:t}},s8e=function(e){return e.indent=e.context.indent,e.context=e.context.prev},o5,tMr=zpe(["abs","acos","allShortestPaths","asin","atan","atan2","avg","ceil","coalesce","collect","cos","cot","count","degrees","e","endnode","exp","extract","filter","floor","haversin","head","id","keys","labels","last","left","length","log","log10","lower","ltrim","max","min","node","nodes","percentileCont","percentileDisc","pi","radians","rand","range","reduce","rel","relationship","relationships","replace","reverse","right","round","rtrim","shortestPath","sign","sin","size","split","sqrt","startnode","stdev","stdevp","str","substring","sum","tail","tan","timestamp","toFloat","toInt","toString","trim","type","upper"]),nMr=zpe(["all","and","any","contains","exists","has","in","none","not","or","single","xor"]),iMr=zpe(["as","asc","ascending","assert","by","case","commit","constraint","create","csv","cypher","delete","desc","descending","detach","distinct","drop","else","end","ends","explain","false","fieldterminator","foreach","from","headers","in","index","is","join","limit","load","match","merge","null","on","optional","order","periodic","profile","remove","return","scan","set","skip","start","starts","then","true","union","unique","unwind","using","when","where","with","call","yield"]),rMr=zpe(["access","active","assign","all","alter","as","catalog","change","copy","create","constraint","constraints","current","database","databases","dbms","default","deny","drop","element","elements","exists","from","grant","graph","graphs","if","index","indexes","label","labels","management","match","name","names","new","node","nodes","not","of","on","or","password","populated","privileges","property","read","relationship","relationships","remove","replace","required","revoke","role","roles","set","show","start","status","stop","suspended","to","traverse","type","types","user","users","with","write"]),BAt=/[*+\-<>=&|~%^]/;const oMr={name:"cypher",startState:function(){return{tokenize:eMr,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!=="comment"&&t.context&&t.context.align==null&&t.context.type!=="pattern"&&(t.context.align=!0),o5==="(")Rae(t,")",e.column());else if(o5==="[")Rae(t,"]",e.column());else if(o5==="{")Rae(t,"}",e.column());else if(/[\]\}\)]/.test(o5)){for(;t.context&&t.context.type==="pattern";)s8e(t);t.context&&o5===t.context.type&&s8e(t)}else o5==="."&&t.context&&t.context.type==="pattern"?s8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Rae(t,"pattern",e.column()):t.context.type==="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type==="pattern";)o=o.prev;var s=o&&r===o.type;return o?o.type==="keywords"?null:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0}},sMr=Object.freeze(Object.defineProperty({__proto__:null,cypher:oMr},Symbol.toStringTag,{value:"Module"}));function cFe(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var aMr=cFe(["and","or","not","is"]),RAt=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],IAt=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function zp(e){return e.scopes[e.scopes.length-1]}function NKe(e){for(var t="error",n=e.delimiters||e.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,r=[e.singleOperators,e.doubleOperators,e.doubleDelimiters,e.tripleDelimiters,e.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],o=0;oS?p(y,C):L0&&w(y,C)&&(E+=" "+t),E}}return f(y,C)}function f(y,C,_){if(y.eatSpace())return null;if(!_&&y.match(/^#.*/))return"comment";if(y.match(/^[0-9\.]/,!1)){var S=!1;if(y.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(S=!0),y.match(/^[\d_]+\.\d*/)&&(S=!0),y.match(/^\.\d+/)&&(S=!0),S)return y.eat(/J/i),"number";var L=!1;if(y.match(/^0x[0-9a-f_]+/i)&&(L=!0),y.match(/^0b[01_]+/i)&&(L=!0),y.match(/^0o[0-7_]+/i)&&(L=!0),y.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(y.eat(/J/i),L=!0),y.match(/^0(?![\dx])/i)&&(L=!0),L)return y.eat(/L/i),"number"}if(y.match(h)){var E=y.current().toLowerCase().indexOf("f")!==-1;return E?(C.tokenize=k(y.current(),C.tokenize),C.tokenize(y,C)):(C.tokenize=A(y.current(),C.tokenize),C.tokenize(y,C))}for(var T=0;T=0;)y=y.substr(1);var _=y.length==1,S="string";function L(T){return function(D,P){var Q=f(D,P,!0);return Q=="punctuation"&&(D.current()=="{"?P.tokenize=L(T+1):D.current()=="}"&&(T>1?P.tokenize=L(T-1):P.tokenize=E)),Q}}function E(T,D){for(;!T.eol();)if(T.eatWhile(/[^'"\{\}\\]/),T.eat("\\")){if(T.next(),_&&T.eol())return S}else{if(T.match(y))return D.tokenize=C,S;if(T.match("{{"))return S;if(T.match("{",!1))return D.tokenize=L(0),T.current()?S:D.tokenize(T,D);if(T.match("}}"))return S;if(T.match("}"))return t;T.eat(/['"]/)}if(_){if(e.singleLineStringErrors)return t;D.tokenize=C}return S}return E.isString=!0,E}function A(y,C){for(;"rubf".indexOf(y.charAt(0).toLowerCase())>=0;)y=y.substr(1);var _=y.length==1,S="string";function L(E,T){for(;!E.eol();)if(E.eatWhile(/[^'"\\]/),E.eat("\\")){if(E.next(),_&&E.eol())return S}else{if(E.match(y))return T.tokenize=C,S;E.eat(/['"]/)}if(_){if(e.singleLineStringErrors)return t;T.tokenize=C}return S}return L.isString=!0,L}function p(y,C){for(;zp(C).type!="py";)C.scopes.pop();C.scopes.push({offset:zp(C).offset+y.indentUnit,type:"py",align:null})}function b(y,C,_){var S=y.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:y.column()+1;C.scopes.push({offset:C.indent+(s||y.indentUnit),type:_,align:S})}function w(y,C){for(var _=y.indentation();C.scopes.length>1&&zp(C).offset>_;){if(zp(C).type!="py")return!0;C.scopes.pop()}return zp(C).offset!=_}function O(y,C){y.sol()&&(C.beginningOfLine=!0,C.dedent=!1);var _=C.tokenize(y,C),S=y.current();if(C.beginningOfLine&&S=="@")return y.match(u,!1)?"meta":d?"operator":t;if(/\S/.test(S)&&(C.beginningOfLine=!1),(_=="variable"||_=="builtin")&&C.lastToken=="meta"&&(_="meta"),(S=="pass"||S=="return")&&(C.dedent=!0),S=="lambda"&&(C.lambda=!0),S==":"&&!C.lambda&&zp(C).type=="py"&&y.match(/^\s*(?:#|$)/,!1)&&p(y,C),S.length==1&&!/string|comment/.test(_)){var L="[({".indexOf(S);if(L!=-1&&b(y,C,"])}".slice(L,L+1)),L="])}".indexOf(S),L!=-1)if(zp(C).type==S)C.indent=C.scopes.pop().offset-(s||y.indentUnit);else return t}return C.dedent&&y.eol()&&zp(C).type=="py"&&C.scopes.length>1&&C.scopes.pop(),_}return{name:"python",startState:function(){return{tokenize:v,scopes:[{offset:0,type:"py",align:null}],indent:0,lastToken:null,lambda:!1,dedent:0}},token:function(y,C){var _=C.errorToken;_&&(C.errorToken=!1);var S=O(y,C);return S&&S!="comment"&&(C.lastToken=S=="keyword"||S=="punctuation"?y.current():S),S=="punctuation"&&(S=null),y.eol()&&C.lambda&&(C.lambda=!1),_?t:S},indent:function(y,C,_){if(y.tokenize!=v)return y.tokenize.isString?null:0;var S=zp(y),L=S.type==C.charAt(0)||S.type=="py"&&!y.dedent&&/^(else:|elif |except |finally:)/.test(C);return S.align!=null?S.align-(L?1:0):S.offset-(L?s||_.unit:0)},languageData:{autocomplete:RAt.concat(IAt).concat(["exec","print"]),indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,commentTokens:{line:"#"},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}}}var lMr=function(e){return e.split(" ")};const cMr=NKe({}),dMr=NKe({extra_keywords:lMr("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")}),uMr=Object.freeze(Object.defineProperty({__proto__:null,cython:dMr,mkPython:NKe,python:cMr},Symbol.toStringTag,{value:"Module"}));function Pz(e,t){return new RegExp((t?"":"^")+"(?:"+e.join("|")+")"+(t?"$":"\\b"))}function hx(e,t,n){return n.tokenize.push(e),e(t,n)}var dFe=/^(?:[-+/%|&^]|\*\*?|[<>]{2})/,uFe=/^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/,Sxn=/^(?:\[\][?=]?)/,hMr=/^(?:\.(?:\.{2})?|->|[?:])/,oZ=/^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,Rue=/^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,fMr=Pz(["abstract","alias","as","asm","begin","break","case","class","def","do","else","elsif","end","ensure","enum","extend","for","fun","if","include","instance_sizeof","lib","macro","module","next","of","out","pointerof","private","protected","rescue","return","require","select","sizeof","struct","super","then","type","typeof","uninitialized","union","unless","until","when","while","with","yield","__DIR__","__END_LINE__","__FILE__","__LINE__"]),gMr=Pz(["true","false","nil","self"]),mMr=["def","fun","macro","class","module","struct","lib","enum","union","do","for"],kMr=Pz(mMr),vMr=["if","unless","case","while","until","begin","then"],AMr=Pz(vMr),Lxn=["end","else","elsif","rescue","ensure"],pMr=Pz(Lxn),xxn=["\\)","\\}","\\]"],bMr=new RegExp("^(?:"+xxn.join("|")+")$"),MAt={def:PAt,fun:PAt,macro:wMr,class:hP,module:hP,struct:hP,lib:hP,enum:hP,union:hP},a8e={"[":"]","{":"}","(":")","<":">"};function UKe(e,t){if(e.eatSpace())return null;if(t.lastToken!="\\"&&e.match("{%",!1))return hx(GB("%","%"),e,t);if(t.lastToken!="\\"&&e.match("{{",!1))return hx(GB("{","}"),e,t);if(e.peek()=="#")return e.skipToEnd(),"comment";var n;if(e.match(oZ))return e.eat(/[?!]/),n=e.current(),e.eat(":")?"atom":t.lastToken=="."?"property":fMr.test(n)?(kMr.test(n)?!(n=="fun"&&t.blocks.indexOf("lib")>=0)&&!(n=="def"&&t.lastToken=="abstract")&&(t.blocks.push(n),t.currentIndent+=1):(t.lastStyle=="operator"||!t.lastStyle)&&AMr.test(n)?(t.blocks.push(n),t.currentIndent+=1):n=="end"&&(t.blocks.pop(),t.currentIndent-=1),MAt.hasOwnProperty(n)&&t.tokenize.push(MAt[n]),"keyword"):gMr.test(n)?"atom":"variable";if(e.eat("@"))return e.peek()=="["?hx(RK("[","]","meta"),e,t):(e.eat("@"),e.match(oZ)||e.match(Rue),"propertyName");if(e.match(Rue))return"tag";if(e.eat(":"))return e.eat('"')?hx(l8e('"',"atom",!1),e,t):e.match(oZ)||e.match(Rue)||e.match(dFe)||e.match(uFe)||e.match(Sxn)?"atom":(e.eat(":"),"operator");if(e.eat('"'))return hx(l8e('"',"string",!0),e,t);if(e.peek()=="%"){var r="string",o=!0,s;if(e.match("%r"))r="string.special",s=e.next();else if(e.match("%w"))o=!1,s=e.next();else if(e.match("%q"))o=!1,s=e.next();else if(s=e.match(/^%([^\w\s=])/))s=s[1];else{if(e.match(/^%[a-zA-Z_\u009F-\uFFFF][\w\u009F-\uFFFF]*/))return"meta";if(e.eat("%"))return"operator"}return a8e.hasOwnProperty(s)&&(s=a8e[s]),hx(l8e(s,r,o),e,t)}return(n=e.match(/^<<-('?)([A-Z]\w*)\1/))?hx(OMr(n[2],!n[1]),e,t):e.eat("'")?(e.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/),e.eat("'"),"atom"):e.eat("0")?(e.eat("x")?e.match(/^[0-9a-fA-F_]+/):e.eat("o")?e.match(/^[0-7_]+/):e.eat("b")&&e.match(/^[01_]+/),"number"):e.eat(/^\d/)?(e.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?\d+)?/),"number"):e.match(dFe)?(e.eat("="),"operator"):e.match(uFe)||e.match(hMr)?"operator":(n=e.match(/[({[]/,!1))?(n=n[0],hx(RK(n,a8e[n],null),e,t)):e.eat("\\")?(e.next(),"meta"):(e.next(),null)}function RK(e,t,n,r){return function(o,s){if(!r&&o.match(e))return s.tokenize[s.tokenize.length-1]=RK(e,t,n,!0),s.currentIndent+=1,n;var a=UKe(o,s);return o.current()===t&&(s.tokenize.pop(),s.currentIndent-=1,a=n),a}}function GB(e,t,n){return function(r,o){return!n&&r.match("{"+e)?(o.currentIndent+=1,o.tokenize[o.tokenize.length-1]=GB(e,t,!0),"meta"):r.match(t+"}")?(o.currentIndent-=1,o.tokenize.pop(),"meta"):UKe(r,o)}}function wMr(e,t){if(e.eatSpace())return null;var n;if(n=e.match(oZ)){if(n=="def")return"keyword";e.eat(/[?!]/)}return t.tokenize.pop(),"def"}function PAt(e,t){return e.eatSpace()?null:(e.match(oZ)?e.eat(/[!?]/):e.match(dFe)||e.match(uFe)||e.match(Sxn),t.tokenize.pop(),"def")}function hP(e,t){return e.eatSpace()?null:(e.match(Rue),t.tokenize.pop(),"def")}function l8e(e,t,n){return function(r,o){for(var s=!1;r.peek();)if(s)r.next(),s=!1;else{if(r.match("{%",!1))return o.tokenize.push(GB("%","%")),t;if(r.match("{{",!1))return o.tokenize.push(GB("{","}")),t;if(n&&r.match("#{",!1))return o.tokenize.push(RK("#{","}","meta")),t;var a=r.next();if(a==e)return o.tokenize.pop(),t;s=n&&a=="\\"}return t}}function OMr(e,t){return function(n,r){if(n.sol()&&(n.eatSpace(),n.match(e)))return r.tokenize.pop(),"string";for(var o=!1;n.peek();)if(o)n.next(),o=!1;else{if(n.match("{%",!1))return r.tokenize.push(GB("%","%")),"string";if(n.match("{{",!1))return r.tokenize.push(GB("{","}")),"string";if(t&&n.match("#{",!1))return r.tokenize.push(RK("#{","}","meta")),"string";o=n.next()=="\\"&&t}return"string"}}const yMr={name:"crystal",startState:function(){return{tokenize:[UKe],currentIndent:0,lastToken:null,lastStyle:null,blocks:[]}},token:function(e,t){var n=t.tokenize[t.tokenize.length-1](e,t),r=e.current();return n&&n!="comment"&&(t.lastToken=r,t.lastStyle=n),n},indent:function(e,t,n){return t=t.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g,""),pMr.test(t)||bMr.test(t)?n.unit*(e.currentIndent-1):n.unit*e.currentIndent},languageData:{indentOnInput:Pz(xxn.concat(Lxn),!0),commentTokens:{line:"#"}}},CMr=Object.freeze(Object.defineProperty({__proto__:null,crystal:yMr},Symbol.toStringTag,{value:"Module"}));function Iae(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/,xk;function WAt(e,t){var n=e.next();if(UAt[n]){var r=UAt[n](e,t);if(r!==!1)return r}if(n=='"'||n=="'"||n=="`")return t.tokenize=TMr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\:\.]/.test(n))return xk=n,null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("+"))return t.tokenize=zAt,zAt(e,t);if(e.eat("*"))return t.tokenize=VAt,VAt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(jAt.test(n))return e.eatWhile(jAt),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var o=e.current();return SMr.propertyIsEnumerable(o)?(NAt.propertyIsEnumerable(o)&&(xk="newstatement"),"keyword"):LMr.propertyIsEnumerable(o)?(NAt.propertyIsEnumerable(o)&&(xk="newstatement"),"builtin"):xMr.propertyIsEnumerable(o)?"atom":"variable"}function TMr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!(r||EMr))&&(n.tokenize=null),"string"}}function VAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function zAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="+"}return"comment"}function Exn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Mae(e,t,n){var r=e.indented;return e.context&&e.context.type=="statement"&&(r=e.context.indented),e.context=new Exn(r,t,n,null,e.context)}function X$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const QMr={name:"d",startState:function(e){return{tokenize:null,context:new Exn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;xk=null;var r=(t.tokenize||WAt)(e,t);if(r=="comment"||r=="meta")return r;if(n.align==null&&(n.align=!0),(xk==";"||xk==":"||xk==",")&&n.type=="statement")X$(t);else if(xk=="{")Mae(t,e.column(),"}");else if(xk=="[")Mae(t,e.column(),"]");else if(xk=="(")Mae(t,e.column(),")");else if(xk=="}"){for(;n.type=="statement";)n=X$(t);for(n.type=="}"&&(n=X$(t));n.type=="statement";)n=X$(t)}else xk==n.type?X$(t):((n.type=="}"||n.type=="top")&&xk!=";"||n.type=="statement"&&xk=="newstatement")&&Mae(t,e.column(),"statement");return t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=WAt&&e.tokenize!=null)return null;var r=e.context,o=t&&t.charAt(0);r.type=="statement"&&o=="}"&&(r=r.prev);var s=o==r.type;return r.type=="statement"?r.indented+(o=="{"?0:_Mr||n.unit):r.align?r.column+(s?0:1):r.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},DMr=Object.freeze(Object.defineProperty({__proto__:null,d:QMr},Symbol.toStringTag,{value:"Module"}));var HAt={"+":"inserted","-":"deleted","@":"meta"};const BMr={name:"diff",token:function(e){var t=e.string.search(/[\t ]+?$/);if(!e.sol()||t===0)return e.skipToEnd(),("error "+(HAt[e.string.charAt(0)]||"")).replace(/ $/,"");var n=HAt[e.peek()]||e.skipToEnd();return t===-1?e.skipToEnd():e.pos=t,n}},RMr=Object.freeze(Object.defineProperty({__proto__:null,diff:BMr},Symbol.toStringTag,{value:"Module"}));function jKe(e){Txn(e,"start");var t={},n=e.languageData||{},r=!1;for(var o in e)if(o!=n&&e.hasOwnProperty(o))for(var s=t[o]=[],a=e[o],l=0;l2&&a.token&&typeof a.token!="string"){n.pending=[];for(var u=2;u-1)return null;var o=n.indent.length-1,s=e[n.state];e:for(;;){for(var a=0;a"),ab("meta",n);if(n=="#"&&e.eatWhile(/[\w]/))return ab("atom","tag");if(n=="|")return ab("keyword","separator");if(n.match(/[\(\)\[\]\-\.,\+\?>]/))return ab(null,n);if(n.match(/[\[\]]/))return ab("rule",n);if(n=='"'||n=="'")return t.tokenize=YMr(n),t.tokenize(e,t);if(e.eatWhile(/[a-zA-Z\?\+\d]/)){var r=e.current();return r.substr(r.length-1,r.length).match(/\?|\+/)!==null&&e.backUp(1),ab("tag","tag")}else return n=="%"||n=="*"?ab("number","number"):(e.eatWhile(/[\w\\\-_%.{,]/),ab(null,null))}}function $At(e,t){for(var n=0,r;(r=e.next())!=null;){if(n>=2&&r==">"){t.tokenize=Hpe;break}n=r=="-"?n+1:0}return ab("comment","comment")}function YMr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=Hpe;break}r=!r&&o=="\\"}return ab("string","tag")}}function ZMr(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=Hpe;break}n.next()}return e}}const qMr={name:"dtd",startState:function(){return{tokenize:Hpe,baseIndent:0,stack:[]}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t),r=t.stack[t.stack.length-1];return e.current()=="["||Fm==="doindent"||Fm=="["?t.stack.push("rule"):Fm==="endtag"?t.stack[t.stack.length-1]="endtag":e.current()=="]"||Fm=="]"||Fm==">"&&r=="rule"?t.stack.pop():Fm=="["&&t.stack.push("["),n},indent:function(e,t,n){var r=e.stack.length;return t.charAt(0)==="]"?r--:t.substr(t.length-1,t.length)===">"&&(t.substr(0,1)==="<"||Fm=="doindent"&&t.length>1||(Fm=="doindent"?r--:Fm==">"&&t.length>1||Fm=="tag"&&t!==">"||(Fm=="tag"&&e.stack[e.stack.length-1]=="rule"?r--:Fm=="tag"?r++:t===">"&&e.stack[e.stack.length-1]=="rule"&&Fm===">"?r--:t===">"&&e.stack[e.stack.length-1]=="rule"||(t.substr(0,1)!=="<"&&t.substr(0,1)===">"?r=r-1:t===">"||(r=r-1)))),(Fm==null||Fm=="]")&&r--),e.baseIndent+r*n.unit},languageData:{indentOnInput:/^\s*[\]>]$/}},KMr=Object.freeze(Object.defineProperty({__proto__:null,dtd:qMr},Symbol.toStringTag,{value:"Module"}));function XAt(e,t){for(var n=0;n",symbolGlobal:"\\*"+QG+"\\*",symbolConstant:"\\$"+QG},tPr={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variableName.standard",symbolConstant:"variableName.constant"};for(var c8e in s9)s9.hasOwnProperty(c8e)&&(s9[c8e]=new RegExp("^"+s9[c8e]));s9.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var cie={};cie.keyword="keyword";cie.definition="def";cie.simpleDefinition="def";cie.signalingCalls="builtin";var Ixn={},Mxn={};XAt(["keyword","definition","simpleDefinition","signalingCalls"],function(e){XAt(_f[e],function(t){Ixn[t]=e,Mxn[t]=cie[e]})});function d8e(e,t,n){return t.tokenize=n,n(e,t)}function WKe(e,t){var n=e.peek();if(n=="'"||n=='"')return e.next(),d8e(e,t,GAt(n,"string"));if(n=="/"){if(e.next(),e.eat("*"))return d8e(e,t,nPr);if(e.eat("/"))return e.skipToEnd(),"comment";e.backUp(1)}else if(/[+\-\d\.]/.test(n)){if(e.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i)||e.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i)||e.match(/^[+-]?\d+/))return"number"}else{if(n=="#")return e.next(),n=e.peek(),n=='"'?(e.next(),d8e(e,t,GAt('"',"string"))):n=="b"?(e.next(),e.eatWhile(/[01]/),"number"):n=="x"?(e.next(),e.eatWhile(/[\da-f]/i),"number"):n=="o"?(e.next(),e.eatWhile(/[0-7]/),"number"):n=="#"?(e.next(),"punctuation"):n=="["||n=="("?(e.next(),"bracket"):e.match(/f|t|all-keys|include|key|next|rest/i)?"atom":(e.eatWhile(/[-a-zA-Z]/),"error");if(n=="~")return e.next(),n=e.peek(),n=="="?(e.next(),n=e.peek(),n=="="&&e.next(),"operator"):"operator";if(n==":"){if(e.next(),n=e.peek(),n=="=")return e.next(),"operator";if(n==":")return e.next(),"punctuation"}else{if("[](){}".indexOf(n)!=-1)return e.next(),"bracket";if(".,".indexOf(n)!=-1)return e.next(),"punctuation";if(e.match("end"))return"keyword"}}for(var r in s9)if(s9.hasOwnProperty(r)){var o=s9[r];if(o instanceof Array&&JMr(o,function(s){return e.match(s)})||e.match(o))return tPr[r]}return/[+\-*\/^=<>&|]/.test(n)?(e.next(),"operator"):e.match("define")?"def":(e.eatWhile(/[\w\-]/),Ixn.hasOwnProperty(e.current())?Mxn[e.current()]:e.current().match(ePr)?"variable":(e.next(),"variableName.standard"))}function nPr(e,t){for(var n=!1,r=!1,o=0,s;s=e.next();){if(s=="/"&&n)if(o>0)o--;else{t.tokenize=WKe;break}else s=="*"&&r&&o++;n=s=="*",r=s=="/"}return"comment"}function GAt(e,t){return function(n,r){for(var o=!1,s,a=!1;(s=n.next())!=null;){if(s==e&&!o){a=!0;break}o=!o&&s=="\\"}return(a||!o)&&(r.tokenize=WKe),t}}const iPr={name:"dylan",startState:function(){return{tokenize:WKe,currentIndent:0}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{commentTokens:{block:{open:"/*",close:"*/"}}}},rPr=Object.freeze(Object.defineProperty({__proto__:null,dylan:iPr},Symbol.toStringTag,{value:"Module"}));var Pae={slash:0,parenthesis:1},hw={comment:0,_string:1,characterClass:2};const oPr={name:"ebnf",startState:function(){return{stringType:null,commentType:null,braced:0,lhs:!0,localState:null,stack:[],inDefinition:!1}},token:function(e,t){if(e){switch(t.stack.length===0&&(e.peek()=='"'||e.peek()=="'"?(t.stringType=e.peek(),e.next(),t.stack.unshift(hw._string)):e.match("/*")?(t.stack.unshift(hw.comment),t.commentType=Pae.slash):e.match("(*")&&(t.stack.unshift(hw.comment),t.commentType=Pae.parenthesis)),t.stack[0]){case hw._string:for(;t.stack[0]===hw._string&&!e.eol();)e.peek()===t.stringType?(e.next(),t.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return t.lhs?"property":"string";case hw.comment:for(;t.stack[0]===hw.comment&&!e.eol();)t.commentType===Pae.slash&&e.match("*/")||t.commentType===Pae.parenthesis&&e.match("*)")?(t.stack.shift(),t.commentType=null):e.match(/^.[^\*]*/);return"comment";case hw.characterClass:for(;t.stack[0]===hw.characterClass&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(".")||t.stack.shift();return"operator"}var n=e.peek();switch(n){case"[":return e.next(),t.stack.unshift(hw.characterClass),"bracket";case":":case"|":case";":return e.next(),"operator";case"%":if(e.match("%%"))return"header";if(e.match(/[%][A-Za-z]+/))return"keyword";if(e.match(/[%][}]/))return"bracket";break;case"/":if(e.match(/[\/][A-Za-z]+/))return"keyword";case"\\":if(e.match(/[\][a-z]+/))return"string.special";case".":if(e.match("."))return"atom";case"*":case"-":case"+":case"^":if(e.match(n))return"atom";case"$":if(e.match("$$"))return"builtin";if(e.match(/[$][0-9]+/))return"variableName.special";case"<":if(e.match(/<<[a-zA-Z_]+>>/))return"builtin"}return e.match("//")?(e.skipToEnd(),"comment"):e.match("return")?"operator":e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)?e.match(/(?=[\(.])/)?"variable":e.match(/(?=[\s\n]*[:=])/)?"def":"variableName.special":["[","]","(",")"].indexOf(e.peek())!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}},sPr=Object.freeze(Object.defineProperty({__proto__:null,ebnf:oPr},Symbol.toStringTag,{value:"Module"}));function mI(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/,Gm;function tme(e,t){var n=e.next();if(ZAt[n]){var r=ZAt[n](e,t);if(r!==!1)return r}if(n=='"'||n=="'")return t.tokenize=fPr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\:\.]/.test(n))return Gm=n,null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("*"))return t.tokenize=KAt,KAt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(qAt.test(n))return e.eatWhile(qAt),"operator";e.eatWhile(/[\w\$_]/);var o=e.current().toLowerCase();if(lPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"keyword";if(cPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"variable";if(dPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"modifier";if(YAt.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"type";if(uPr.propertyIsEnumerable(o))return fP.propertyIsEnumerable(o)&&(Gm="newstatement"),"builtin";for(var s=o.length-1;s>=0&&(!isNaN(o[s])||o[s]=="_");)--s;if(s>0){var a=o.substr(0,s+1);if(YAt.propertyIsEnumerable(a))return fP.propertyIsEnumerable(a)&&(Gm="newstatement"),"type"}return hPr.propertyIsEnumerable(o)?"atom":null}function fPr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=tme),"string"}}function KAt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=tme;break}n=r=="*"}return"comment"}function Pxn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Fae(e,t,n){return e.context=new Pxn(e.indented,t,n,null,e.context)}function G$(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const gPr={name:"ecl",startState:function(e){return{tokenize:null,context:new Pxn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;Gm=null;var r=(t.tokenize||tme)(e,t);if(r=="comment"||r=="meta")return r;if(n.align==null&&(n.align=!0),(Gm==";"||Gm==":")&&n.type=="statement")G$(t);else if(Gm=="{")Fae(t,e.column(),"}");else if(Gm=="[")Fae(t,e.column(),"]");else if(Gm=="(")Fae(t,e.column(),")");else if(Gm=="}"){for(;n.type=="statement";)n=G$(t);for(n.type=="}"&&(n=G$(t));n.type=="statement";)n=G$(t)}else Gm==n.type?G$(t):(n.type=="}"||n.type=="top"||n.type=="statement"&&Gm=="newstatement")&&Fae(t,e.column(),"statement");return t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=tme&&e.tokenize!=null)return 0;var r=e.context,o=t&&t.charAt(0);r.type=="statement"&&o=="}"&&(r=r.prev);var s=o==r.type;return r.type=="statement"?r.indented+(o=="{"?0:n.unit):r.align?r.column+(s?0:1):r.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/}},mPr=Object.freeze(Object.defineProperty({__proto__:null,ecl:gPr},Symbol.toStringTag,{value:"Module"}));function Fxn(e){for(var t={},n=0,r=e.length;n>"]);function APr(e,t,n){return n.tokenize.push(e),e(t,n)}function pPr(e,t){if(e.eatSpace())return null;var n=e.next();return n=='"'||n=="'"?APr(bPr(n,"string"),e,t):n=="-"&&e.eat("-")?(e.skipToEnd(),"comment"):n==":"&&e.eat("=")?"operator":/[0-9]/.test(n)?(e.eatWhile(/[xXbBCc0-9\.]/),e.eat(/[\?\!]/),"variable"):/[a-zA-Z_0-9]/.test(n)?(e.eatWhile(/[a-zA-Z_0-9]/),e.eat(/[\?\!]/),"variable"):/[=+\-\/*^%<>~]/.test(n)?(e.eatWhile(/[=+\-\/*^%<>~]/),"operator"):null}function bPr(e,t,n){return function(r,o){for(var s=!1,a;(a=r.next())!=null;){if(a==e&&!s){o.tokenize.pop();break}s=!s&&a=="%"}return t}}const wPr={name:"eiffel",startState:function(){return{tokenize:[pPr]}},token:function(e,t){var n=t.tokenize[t.tokenize.length-1](e,t);if(n=="variable"){var r=e.current();n=kPr.propertyIsEnumerable(e.current())?"keyword":vPr.propertyIsEnumerable(e.current())?"operator":/^[A-Z][A-Z_0-9]*$/g.test(r)?"tag":/^0[bB][0-1]+$/g.test(r)||/^0[cC][0-7]+$/g.test(r)||/^0[xX][a-fA-F0-9]+$/g.test(r)||/^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(r)||/^[0-9]+$/g.test(r)?"number":"variable"}return n},languageData:{commentTokens:{line:"--"}}},OPr=Object.freeze(Object.defineProperty({__proto__:null,eiffel:wPr},Symbol.toStringTag,{value:"Module"}));function Y$(e,t,n){return t(n),n(e,t)}var yPr=/[a-z]/,CPr=/[A-Z]/,JAt=/[a-zA-Z0-9_]/,Nae=/[0-9]/,_Pr=/[0-9A-Fa-f]/,e4t=/[-&*+.\\/<>=?^|:]/,SPr=/[(),[\]{}]/,LPr=/[ \v\f]/;function L8(){return function(e,t){if(e.eatWhile(LPr))return null;var n=e.next();if(SPr.test(n))return n==="{"&&e.eat("-")?Y$(e,t,Nxn(1)):n==="["&&e.match("glsl|")?Y$(e,t,QPr):"builtin";if(n==="'")return Y$(e,t,TPr);if(n==='"')return e.eat('"')?e.eat('"')?Y$(e,t,xPr):"string":Y$(e,t,EPr);if(CPr.test(n))return e.eatWhile(JAt),"type";if(yPr.test(n)){var r=e.pos===1;return e.eatWhile(JAt),r?"def":"variable"}if(Nae.test(n)){if(n==="0"){if(e.eat(/[xX]/))return e.eatWhile(_Pr),"number"}else e.eatWhile(Nae);return e.eat(".")&&e.eatWhile(Nae),e.eat(/[eE]/)&&(e.eat(/[-+]/),e.eatWhile(Nae)),"number"}return e4t.test(n)?n==="-"&&e.eat("-")?(e.skipToEnd(),"comment"):(e.eatWhile(e4t),"keyword"):n==="_"?"keyword":"error"}}function Nxn(e){return e==0?L8():function(t,n){for(;!t.eol();){var r=t.next();if(r=="{"&&t.eat("-"))++e;else if(r=="-"&&t.eat("}")&&(--e,e===0))return n(L8()),"comment"}return n(Nxn(e)),"comment"}}function xPr(e,t){for(;!e.eol();){var n=e.next();if(n==='"'&&e.eat('"')&&e.eat('"'))return t(L8()),"string"}return"string"}function EPr(e,t){for(;e.skipTo('\\"');)e.next(),e.next();return e.skipTo('"')?(e.next(),t(L8()),"string"):(e.skipToEnd(),t(L8()),"error")}function TPr(e,t){for(;e.skipTo("\\'");)e.next(),e.next();return e.skipTo("'")?(e.next(),t(L8()),"string"):(e.skipToEnd(),t(L8()),"error")}function QPr(e,t){for(;!e.eol();){var n=e.next();if(n==="|"&&e.eat("]"))return t(L8()),"string"}return"string"}var DPr={case:1,of:1,as:1,if:1,then:1,else:1,let:1,in:1,type:1,alias:1,module:1,where:1,import:1,exposing:1,port:1};const BPr={name:"elm",startState:function(){return{f:L8()}},copyState:function(e){return{f:e.f}},token:function(e,t){var n=t.f(e,function(o){t.f=o}),r=e.current();return DPr.hasOwnProperty(r)?"keyword":n},languageData:{commentTokens:{line:"--"}}},RPr=Object.freeze(Object.defineProperty({__proto__:null,elm:BPr},Symbol.toStringTag,{value:"Module"}));var IPr=["-type","-spec","-export_type","-opaque"],MPr=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"],PPr=/[\->,;]/,FPr=["->",";",","],NPr=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"],UPr=/[\+\-\*\/<>=\|:!]/,jPr=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"],WPr=/[<\(\[\{]/,hFe=["<<","(","[","{"],VPr=/[>\)\]\}]/,Uxn=["}","]",")",">>"],zPr=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"],HPr=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"],Uae=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/,$Pr=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;function XPr(e,t){if(t.in_string)return t.in_string=!i4t(e),$a(t,e,"string");if(t.in_atom)return t.in_atom=!r4t(e),$a(t,e,"atom");if(e.eatSpace())return $a(t,e,"whitespace");if(!sZ(t)&&e.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/))return t1(e.current(),IPr)?$a(t,e,"type"):$a(t,e,"attribute");var n=e.next();if(n=="%")return e.skipToEnd(),$a(t,e,"comment");if(n==":")return $a(t,e,"colon");if(n=="?")return e.eatSpace(),e.eatWhile(Uae),$a(t,e,"macro");if(n=="#")return e.eatSpace(),e.eatWhile(Uae),$a(t,e,"record");if(n=="$")return e.next()=="\\"&&!e.match($Pr)?$a(t,e,"error"):$a(t,e,"number");if(n==".")return $a(t,e,"dot");if(n=="'"){if(!(t.in_atom=!r4t(e))){if(e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),$a(t,e,"fun");if(e.match(/\s*\(/,!1)||e.match(/\s*:/,!1))return $a(t,e,"function")}return $a(t,e,"atom")}if(n=='"')return t.in_string=!i4t(e),$a(t,e,"string");if(/[A-Z_Ø-ÞÀ-Ö]/.test(n))return e.eatWhile(Uae),$a(t,e,"variable");if(/[a-z_ß-öø-ÿ]/.test(n)){if(e.eatWhile(Uae),e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),$a(t,e,"fun");var r=e.current();return t1(r,MPr)?$a(t,e,"keyword"):t1(r,NPr)?$a(t,e,"operator"):e.match(/\s*\(/,!1)?t1(r,HPr)&&(sZ(t).token!=":"||sZ(t,2).token=="erlang")?$a(t,e,"builtin"):t1(r,zPr)?$a(t,e,"guard"):$a(t,e,"function"):GPr(e)==":"?r=="erlang"?$a(t,e,"builtin"):$a(t,e,"function"):t1(r,["true","false"])?$a(t,e,"boolean"):$a(t,e,"atom")}var o=/[0-9]/,s=/[0-9a-zA-Z]/;return o.test(n)?(e.eatWhile(o),e.eat("#")?e.eatWhile(s)||e.backUp(1):e.eat(".")&&(e.eatWhile(o)?e.eat(/[eE]/)&&(e.eat(/[-+]/)?e.eatWhile(o)||e.backUp(2):e.eatWhile(o)||e.backUp(1)):e.backUp(1)),$a(t,e,"number")):t4t(e,WPr,hFe)?$a(t,e,"open_paren"):t4t(e,VPr,Uxn)?$a(t,e,"close_paren"):n4t(e,PPr,FPr)?$a(t,e,"separator"):n4t(e,UPr,jPr)?$a(t,e,"operator"):$a(t,e,null)}function t4t(e,t,n){if(e.current().length==1&&t.test(e.current())){for(e.backUp(1);t.test(e.peek());)if(e.next(),t1(e.current(),n))return!0;e.backUp(e.current().length-1)}return!1}function n4t(e,t,n){if(e.current().length==1&&t.test(e.current())){for(;t.test(e.peek());)e.next();for(;01&&e[t].type==="fun"&&e[t-1].token==="fun")return e.slice(0,t-1);switch(e[t].token){case"}":return Hp(e,{g:["{"]});case"]":return Hp(e,{i:["["]});case")":return Hp(e,{i:["("]});case">>":return Hp(e,{i:["<<"]});case"end":return Hp(e,{i:["begin","case","fun","if","receive","try"]});case",":return Hp(e,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return Hp(e,{r:["when"],m:["try","if","case","receive"]});case";":return Hp(e,{E:["case","fun","if","receive","try","when"]});case"catch":return Hp(e,{e:["try"]});case"of":return Hp(e,{e:["case"]});case"after":return Hp(e,{e:["receive","try"]});default:return e}}function Hp(e,t){for(var n in t)for(var r=e.length-1,o=t[n],s=r-1;-1"?t1(a.token,["receive","case","if","try"])?a.column+n.unit+n.unit:a.column+n.unit:t1(s.token,hFe)?s.column+s.token.length:(r=iFr(e),rD(r)?r.column+n.unit:0):0}function tFr(e){var t=e.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);return rD(t)&&t.index===0?t[0]:""}function nFr(e){var t=e.tokenStack.slice(0,-1),n=nme(t,"type",["open_paren"]);return rD(t[n])?t[n]:!1}function iFr(e){var t=e.tokenStack,n=nme(t,"type",["open_paren","separator","keyword"]),r=nme(t,"type",["operator"]);return rD(n)&&rD(r)&&n!=&|~^\/]/,a=e.support||{},l=e.hooks||{},d=e.dateSQL||{date:!0,time:!0,timestamp:!0},u=e.backslashStringEscapes!==!1,h=e.brackets||/^[\{}\(\)\[\]]/,g=e.punctuation||/^[;.,:]/;function m(p,b){var w=p.next();if(l[w]){var O=l[w](p,b);if(O!==!1)return O}if(a.hexNumber&&(w=="0"&&p.match(/^[xX][0-9a-fA-F]+/)||(w=="x"||w=="X")&&p.match(/^'[0-9a-fA-F]*'/)))return"number";if(a.binaryNumber&&((w=="b"||w=="B")&&p.match(/^'[01]+'/)||w=="0"&&p.match(/^b[01]*/)))return"number";if(w.charCodeAt(0)>47&&w.charCodeAt(0)<58)return p.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),a.decimallessFloat&&p.match(/^\.(?!\.)/),"number";if(w=="?"&&(p.eatSpace()||p.eol()||p.eat(";")))return"macroName";if(w=="'"||w=='"'&&a.doubleQuote)return b.tokenize=v(w),b.tokenize(p,b);if((a.nCharCast&&(w=="n"||w=="N")||a.charsetCast&&w=="_"&&p.match(/[a-z][a-z0-9]*/i))&&(p.peek()=="'"||p.peek()=='"'))return"keyword";if(a.escapeConstant&&(w=="e"||w=="E")&&(p.peek()=="'"||p.peek()=='"'&&a.doubleQuote))return b.tokenize=function(C,_){return(_.tokenize=v(C.next(),!0))(C,_)},"keyword";if(a.commentSlashSlash&&w=="/"&&p.eat("/"))return p.skipToEnd(),"comment";if(a.commentHash&&w=="#"||w=="-"&&p.eat("-")&&(!a.commentSpaceRequired||p.eat(" ")))return p.skipToEnd(),"comment";if(w=="/"&&p.eat("*"))return b.tokenize=f(1),b.tokenize(p,b);if(w=="."){if(a.zerolessFloat&&p.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(p.match(/^\.+/))return null;if(a.ODBCdotTable&&p.match(/^[\w\d_$#]+/))return"type"}else{if(s.test(w))return p.eatWhile(s),"operator";if(h.test(w))return"bracket";if(g.test(w))return p.eatWhile(g),"punctuation";if(w=="{"&&(p.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||p.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";p.eatWhile(/^[_\w\d]/);var y=p.current().toLowerCase();return d.hasOwnProperty(y)&&(p.match(/^( )+'[^']*'/)||p.match(/^( )+"[^"]*"/))?"number":n.hasOwnProperty(y)?"atom":r.hasOwnProperty(y)?"type":o.hasOwnProperty(y)?"keyword":t.hasOwnProperty(y)?"builtin":null}}function v(p,b){return function(w,O){for(var y=!1,C;(C=w.next())!=null;){if(C==p&&!y){O.tokenize=m;break}y=(u||b)&&!y&&C=="\\"}return"string"}}function f(p){return function(b,w){var O=b.match(/^.*?(\/\*|\*\/)/);return O?O[1]=="/*"?w.tokenize=f(p+1):p>1?w.tokenize=f(p-1):w.tokenize=m:b.skipToEnd(),"comment"}}function k(p,b,w){b.context={prev:b.context,indent:p.indentation(),col:p.column(),type:w}}function A(p){p.indent=p.context.indent,p.context=p.context.prev}return{name:"sql",startState:function(){return{tokenize:m,context:null}},token:function(p,b){if(p.sol()&&b.context&&b.context.align==null&&(b.context.align=!1),b.tokenize==m&&p.eatSpace())return null;var w=b.tokenize(p,b);if(w=="comment")return w;b.context&&b.context.align==null&&(b.context.align=!0);var O=p.current();return O=="("?k(p,b,")"):O=="["?k(p,b,"]"):b.context&&b.context.type==O&&A(b),w},indent:function(p,b,w){var O=p.context;if(!O)return null;var y=b.charAt(0)==O.type;return O.align?O.col+(y?0:1):O.indent+(y?0:w.unit)},languageData:{commentTokens:{line:a.commentSlashSlash?"//":a.commentHash?"#":"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}}}function VKe(e){for(var t;(t=e.next())!=null;)if(t=="`"&&!e.eat("`"))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null}function sFr(e){for(var t;(t=e.next())!=null;)if(t=='"'&&!e.eat('"'))return"string.special";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"string.special":null}function tQ(e){return e.eat("@")&&(e.match("session."),e.match("local."),e.match("global.")),e.eat("'")?(e.match(/^.*'/),"string.special"):e.eat('"')?(e.match(/^.*"/),"string.special"):e.eat("`")?(e.match(/^.*`/),"string.special"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"string.special":null}function Vxn(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"string.special":null}var kI="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function ur(e){for(var t={},n=e.split(" "),r=0;r!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:ur("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":tQ}}),cFr=y2({client:ur("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:ur(kI+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":tQ,"`":VKe,"\\":Vxn}}),dFr=y2({client:ur("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:ur(kI+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":tQ,"`":VKe,"\\":Vxn}}),uFr=y2({client:ur("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:ur(kI+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:ur("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:ur("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:ur("date time timestamp datetime"),support:ur("decimallessFloat zerolessFloat"),hooks:{"@":tQ,":":tQ,"?":tQ,$:tQ,'"':sFr,"`":VKe}}),hFr=y2({client:{},keywords:ur("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:ur("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:ur("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:ur("commentSlashSlash decimallessFloat"),hooks:{}}),fFr=y2({client:ur("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:ur("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:ur("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:ur("date time timestamp"),support:ur("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),gFr=y2({keywords:ur("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:ur("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:ur("date timestamp"),support:ur("ODBCdotTable doubleQuote binaryNumber hexNumber")}),mFr=y2({client:ur("source"),keywords:ur(kI+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:ur("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:ur("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),kFr=y2({keywords:ur("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:ur("false true"),builtin:ur("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),vFr=y2({client:ur("source"),keywords:ur("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:ur("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:ur("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),AFr=y2({keywords:ur("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:ur("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:ur("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:ur("date time timestamp"),support:ur("ODBCdotTable doubleQuote zerolessFloat")}),pFr=y2({client:ur("source"),keywords:ur("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:ur("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:ur("time"),support:ur("decimallessFloat zerolessFloat binaryNumber hexNumber")}),bFr=Object.freeze(Object.defineProperty({__proto__:null,cassandra:hFr,esper:pFr,gpSQL:vFr,gql:kFr,hive:gFr,mariaDB:dFr,msSQL:lFr,mySQL:cFr,pgSQL:mFr,plSQL:fFr,sparkSQL:AFr,sql:y2,sqlite:uFr,standardSQL:aFr},Symbol.toStringTag,{value:"Module"})),wFr=jKe({start:[{regex:/#?!.*/,token:"comment"},{regex:/"""/,token:"string",next:"string3"},{regex:/(STRING:)(\s)/,token:["keyword",null],next:"string2"},{regex:/\S*?"/,token:"string",next:"string"},{regex:/(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/,token:"number"},{regex:/((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/,token:["keyword",null,"def",null,"bracket"],next:"stack"},{regex:/(M\:)(\s+)(\S+)(\s+)(\S+)/,token:["keyword",null,"def",null,"tag"]},{regex:/USING\:/,token:"keyword",next:"vocabulary"},{regex:/(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"tag"]},{regex:/(\S+\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"def"]},{regex:/(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>|\.\*\?]+(?=\s|$)/,token:"builtin"},{regex:/[\)><]+\S+(?=\s|$)/,token:"builtin"},{regex:/(?:[\+\-\=\/\*<>])(?=\s|$)/,token:"keyword"},{regex:/\S+/,token:"variable"},{regex:/\s+|./,token:null}],vocabulary:[{regex:/;/,token:"keyword",next:"start"},{regex:/\S+/,token:"tag"},{regex:/\s+|./,token:null}],string:[{regex:/(?:[^\\]|\\.)*?"/,token:"string",next:"start"},{regex:/.*/,token:"string"}],string2:[{regex:/^;/,token:"keyword",next:"start"},{regex:/.*/,token:"string"}],string3:[{regex:/(?:[^\\]|\\.)*?"""/,token:"string",next:"start"},{regex:/.*/,token:"string"}],stack:[{regex:/\)/,token:"bracket",next:"start"},{regex:/--/,token:"bracket"},{regex:/\S+/,token:"meta"},{regex:/\s+|./,token:null}],languageData:{name:"factor",dontIndentStates:["start","vocabulary","string","string3","stack"],commentTokens:{line:"!"}}}),OFr=Object.freeze(Object.defineProperty({__proto__:null,factor:wFr},Symbol.toStringTag,{value:"Module"}));var yFr={term:!0,method:!0,accu:!0,rule:!0,then:!0,is:!0,and:!0,or:!0,if:!0,default:!0},Hxn={var_input:!0,var_output:!0,fuzzify:!0,defuzzify:!0,function_block:!0,ruleblock:!0},fFe={end_ruleblock:!0,end_defuzzify:!0,end_function_block:!0,end_fuzzify:!0,end_var:!0},CFr={true:!0,false:!0,nan:!0,real:!0,min:!0,max:!0,cog:!0,cogs:!0},o4t=/[+\-*&^%:=<>!|\/]/;function gFe(e,t){var n=e.next();if(/[\d\.]/.test(n))return n=="."?e.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):n=="0"?e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^0[0-7]+/):e.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(n=="/"||n=="("){if(e.eat("*"))return t.tokenize=s4t,s4t(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(o4t.test(n))return e.eatWhile(o4t),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current().toLowerCase();return yFr.propertyIsEnumerable(r)||Hxn.propertyIsEnumerable(r)||fFe.propertyIsEnumerable(r)?"keyword":CFr.propertyIsEnumerable(r)?"atom":"variable"}function s4t(e,t){for(var n=!1,r;r=e.next();){if((r=="/"||r==")")&&n){t.tokenize=gFe;break}n=r=="*"}return"comment"}function $xn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function _Fr(e,t,n){return e.context=new $xn(e.indented,t,n,null,e.context)}function SFr(e){if(e.context.prev){var t=e.context.type;return t=="end_block"&&(e.indented=e.context.indented),e.context=e.context.prev}}const LFr={name:"fcl",startState:function(e){return{tokenize:null,context:new $xn(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;var r=(t.tokenize||gFe)(e,t);if(r=="comment")return r;n.align==null&&(n.align=!0);var o=e.current().toLowerCase();return Hxn.propertyIsEnumerable(o)?_Fr(t,e.column(),"end_block"):fFe.propertyIsEnumerable(o)&&SFr(t),t.startOfLine=!1,r},indent:function(e,t,n){if(e.tokenize!=gFe&&e.tokenize!=null)return 0;var r=e.context,o=fFe.propertyIsEnumerable(t);return r.align?r.column+(o?0:1):r.indented+(o?0:n.unit)},languageData:{commentTokens:{line:"//",block:{open:"(*",close:"*)"}}}},xFr=Object.freeze(Object.defineProperty({__proto__:null,fcl:LFr},Symbol.toStringTag,{value:"Module"}));function Xxn(e){var t=[];return e.split(" ").forEach(function(n){t.push({name:n})}),t}var EFr=Xxn("INVERT AND OR XOR 2* 2/ LSHIFT RSHIFT 0= = 0< < > U< MIN MAX 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP >R R> R@ + - 1+ 1- ABS NEGATE S>D * M* UM* FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT CHAR [CHAR] [ ] BL FIND EXECUTE IMMEDIATE COUNT LITERAL STATE ; DOES> >BODY EVALUATE SOURCE >IN <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL FILL MOVE . CR EMIT SPACE SPACES TYPE U. .R U.R ACCEPT TRUE FALSE <> U> 0<> 0> NIP TUCK ROLL PICK 2>R 2R@ 2R> WITHIN UNUSED MARKER I J TO COMPILE, [COMPILE] SAVE-INPUT RESTORE-INPUT PAD ERASE 2LITERAL DNEGATE D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS M+ M*/ D. D.R 2ROT DU< CATCH THROW FREE RESIZE ALLOCATE CS-PICK CS-ROLL GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL"),TFr=Xxn("IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE");function h8e(e,t){var n;for(n=e.length-1;n>=0;n--)if(e[n].name===t.toUpperCase())return e[n]}const QFr={name:"forth",startState:function(){return{state:"",base:10,coreWordList:EFr,immediateWordList:TFr,wordList:[]}},token:function(e,t){var n;if(e.eatSpace())return null;if(t.state===""){if(e.match(/^(\]|:NONAME)(\s|$)/i))return t.state=" compilation","builtin";if(n=e.match(/^(\:)\s+(\S+)(\s|$)+/),n)return t.wordList.push({name:n[2].toUpperCase()}),t.state=" compilation","def";if(n=e.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i),n)return t.wordList.push({name:n[2].toUpperCase()}),"def";if(n=e.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/),n)return"builtin"}else{if(e.match(/^(\;|\[)(\s)/))return t.state="",e.backUp(1),"builtin";if(e.match(/^(\;|\[)($)/))return t.state="","builtin";if(e.match(/^(POSTPONE)\s+\S+(\s|$)+/))return"builtin"}if(n=e.match(/^(\S+)(\s+|$)/),n)return h8e(t.wordList,n[1])!==void 0?"variable":n[1]==="\\"?(e.skipToEnd(),"comment"):h8e(t.coreWordList,n[1])!==void 0?"builtin":h8e(t.immediateWordList,n[1])!==void 0?"keyword":n[1]==="("?(e.eatWhile(function(r){return r!==")"}),e.eat(")"),"comment"):n[1]===".("?(e.eatWhile(function(r){return r!==")"}),e.eat(")"),"string"):n[1]==='S"'||n[1]==='."'||n[1]==='C"'?(e.eatWhile(function(r){return r!=='"'}),e.eat('"'),"string"):n[1]-68719476735?"number":"atom"}},DFr=Object.freeze(Object.defineProperty({__proto__:null,forth:QFr},Symbol.toStringTag,{value:"Module"}));function zKe(e){for(var t={},n=0;n\/\:]/,MFr=/^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;function PFr(e,t){if(e.match(MFr))return"operator";var n=e.next();if(n=="!")return e.skipToEnd(),"comment";if(n=='"'||n=="'")return t.tokenize=FFr(n),t.tokenize(e,t);if(/[\[\]\(\),]/.test(n))return null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(a4t.test(n))return e.eatWhile(a4t),"operator";e.eatWhile(/[\w\$_]/);var r=e.current().toLowerCase();return BFr.hasOwnProperty(r)?"keyword":RFr.hasOwnProperty(r)||IFr.hasOwnProperty(r)?"builtin":"variable"}function FFr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=null),"string"}}const NFr={name:"fortran",startState:function(){return{tokenize:null}},token:function(e,t){if(e.eatSpace())return null;var n=(t.tokenize||PFr)(e,t);return n=="comment"||n=="meta",n}},UFr=Object.freeze(Object.defineProperty({__proto__:null,fortran:NFr},Symbol.toStringTag,{value:"Module"}));function HKe(e){var t={as:"keyword",do:"keyword",else:"keyword",end:"keyword",exception:"keyword",fun:"keyword",functor:"keyword",if:"keyword",in:"keyword",include:"keyword",let:"keyword",of:"keyword",open:"keyword",rec:"keyword",struct:"keyword",then:"keyword",type:"keyword",val:"keyword",while:"keyword",with:"keyword"},n=e.extraWords||{};for(var r in n)n.hasOwnProperty(r)&&(t[r]=e.extraWords[r]);var o=[];for(var s in t)o.push(s);function a(h,g){var m=h.next();if(m==='"')return g.tokenize=l,g.tokenize(h,g);if(m==="{"&&h.eat("|"))return g.longString=!0,g.tokenize=u,g.tokenize(h,g);if(m==="("&&h.match(/^\*(?!\))/))return g.commentLevel++,g.tokenize=d,g.tokenize(h,g);if(m==="~"||m==="?")return h.eatWhile(/\w/),"variableName.special";if(m==="`")return h.eatWhile(/\w/),"quote";if(m==="/"&&e.slashComments&&h.eat("/"))return h.skipToEnd(),"comment";if(/\d/.test(m))return m==="0"&&h.eat(/[bB]/)&&h.eatWhile(/[01]/),m==="0"&&h.eat(/[xX]/)&&h.eatWhile(/[0-9a-fA-F]/),m==="0"&&h.eat(/[oO]/)?h.eatWhile(/[0-7]/):(h.eatWhile(/[\d_]/),h.eat(".")&&h.eatWhile(/[\d]/),h.eat(/[eE]/)&&h.eatWhile(/[\d\-+]/)),"number";if(/[+\-*&%=<>!?|@\.~:]/.test(m))return"operator";if(/[\w\xa1-\uffff]/.test(m)){h.eatWhile(/[\w\xa1-\uffff]/);var v=h.current();return t.hasOwnProperty(v)?t[v]:"variable"}return null}function l(h,g){for(var m,v=!1,f=!1;(m=h.next())!=null;){if(m==='"'&&!f){v=!0;break}f=!f&&m==="\\"}return v&&!f&&(g.tokenize=a),"string"}function d(h,g){for(var m,v;g.commentLevel>0&&(v=h.next())!=null;)m==="("&&v==="*"&&g.commentLevel++,m==="*"&&v===")"&&g.commentLevel--,m=v;return g.commentLevel<=0&&(g.tokenize=a),"comment"}function u(h,g){for(var m,v;g.longString&&(v=h.next())!=null;)m==="|"&&v==="}"&&(g.longString=!1),m=v;return g.longString||(g.tokenize=a),"string"}return{startState:function(){return{tokenize:a,commentLevel:0,longString:!1}},token:function(h,g){return h.eatSpace()?null:g.tokenize(h,g)},languageData:{autocomplete:o,commentTokens:{line:e.slashComments?"//":void 0,block:{open:"(*",close:"*)"}}}}}const jFr=HKe({extraWords:{and:"keyword",assert:"keyword",begin:"keyword",class:"keyword",constraint:"keyword",done:"keyword",downto:"keyword",external:"keyword",function:"keyword",initializer:"keyword",lazy:"keyword",match:"keyword",method:"keyword",module:"keyword",mutable:"keyword",new:"keyword",nonrec:"keyword",object:"keyword",private:"keyword",sig:"keyword",to:"keyword",try:"keyword",value:"keyword",virtual:"keyword",when:"keyword",raise:"builtin",failwith:"builtin",true:"builtin",false:"builtin",asr:"builtin",land:"builtin",lor:"builtin",lsl:"builtin",lsr:"builtin",lxor:"builtin",mod:"builtin",or:"builtin",raise_notrace:"builtin",trace:"builtin",exit:"builtin",print_string:"builtin",print_endline:"builtin",int:"type",float:"type",bool:"type",char:"type",string:"type",unit:"type",List:"builtin"}}),WFr=HKe({extraWords:{abstract:"keyword",assert:"keyword",base:"keyword",begin:"keyword",class:"keyword",default:"keyword",delegate:"keyword","do!":"keyword",done:"keyword",downcast:"keyword",downto:"keyword",elif:"keyword",extern:"keyword",finally:"keyword",for:"keyword",function:"keyword",global:"keyword",inherit:"keyword",inline:"keyword",interface:"keyword",internal:"keyword",lazy:"keyword","let!":"keyword",match:"keyword",member:"keyword",module:"keyword",mutable:"keyword",namespace:"keyword",new:"keyword",null:"keyword",override:"keyword",private:"keyword",public:"keyword","return!":"keyword",return:"keyword",select:"keyword",static:"keyword",to:"keyword",try:"keyword",upcast:"keyword","use!":"keyword",use:"keyword",void:"keyword",when:"keyword","yield!":"keyword",yield:"keyword",atomic:"keyword",break:"keyword",checked:"keyword",component:"keyword",const:"keyword",constraint:"keyword",constructor:"keyword",continue:"keyword",eager:"keyword",event:"keyword",external:"keyword",fixed:"keyword",method:"keyword",mixin:"keyword",object:"keyword",parallel:"keyword",process:"keyword",protected:"keyword",pure:"keyword",sealed:"keyword",tailcall:"keyword",trait:"keyword",virtual:"keyword",volatile:"keyword",List:"builtin",Seq:"builtin",Map:"builtin",Set:"builtin",Option:"builtin",int:"builtin",string:"builtin",not:"builtin",true:"builtin",false:"builtin",raise:"builtin",failwith:"builtin"},slashComments:!0}),VFr=HKe({extraWords:{abstype:"keyword",and:"keyword",andalso:"keyword",case:"keyword",datatype:"keyword",fn:"keyword",handle:"keyword",infix:"keyword",infixr:"keyword",local:"keyword",nonfix:"keyword",op:"keyword",orelse:"keyword",raise:"keyword",withtype:"keyword",eqtype:"keyword",sharing:"keyword",sig:"keyword",signature:"keyword",structure:"keyword",where:"keyword",true:"keyword",false:"keyword",int:"builtin",real:"builtin",string:"builtin",char:"builtin",bool:"builtin"},slashComments:!0}),f8e=Object.freeze(Object.defineProperty({__proto__:null,fSharp:WFr,oCaml:jFr,sml:VFr},Symbol.toStringTag,{value:"Module"}));function Gxn(e){var t=[],n="",r={".abort":"builtin",".align":"builtin",".altmacro":"builtin",".ascii":"builtin",".asciz":"builtin",".balign":"builtin",".balignw":"builtin",".balignl":"builtin",".bundle_align_mode":"builtin",".bundle_lock":"builtin",".bundle_unlock":"builtin",".byte":"builtin",".cfi_startproc":"builtin",".comm":"builtin",".data":"builtin",".def":"builtin",".desc":"builtin",".dim":"builtin",".double":"builtin",".eject":"builtin",".else":"builtin",".elseif":"builtin",".end":"builtin",".endef":"builtin",".endfunc":"builtin",".endif":"builtin",".equ":"builtin",".equiv":"builtin",".eqv":"builtin",".err":"builtin",".error":"builtin",".exitm":"builtin",".extern":"builtin",".fail":"builtin",".file":"builtin",".fill":"builtin",".float":"builtin",".func":"builtin",".global":"builtin",".gnu_attribute":"builtin",".hidden":"builtin",".hword":"builtin",".ident":"builtin",".if":"builtin",".incbin":"builtin",".include":"builtin",".int":"builtin",".internal":"builtin",".irp":"builtin",".irpc":"builtin",".lcomm":"builtin",".lflags":"builtin",".line":"builtin",".linkonce":"builtin",".list":"builtin",".ln":"builtin",".loc":"builtin",".loc_mark_labels":"builtin",".local":"builtin",".long":"builtin",".macro":"builtin",".mri":"builtin",".noaltmacro":"builtin",".nolist":"builtin",".octa":"builtin",".offset":"builtin",".org":"builtin",".p2align":"builtin",".popsection":"builtin",".previous":"builtin",".print":"builtin",".protected":"builtin",".psize":"builtin",".purgem":"builtin",".pushsection":"builtin",".quad":"builtin",".reloc":"builtin",".rept":"builtin",".sbttl":"builtin",".scl":"builtin",".section":"builtin",".set":"builtin",".short":"builtin",".single":"builtin",".size":"builtin",".skip":"builtin",".sleb128":"builtin",".space":"builtin",".stab":"builtin",".string":"builtin",".struct":"builtin",".subsection":"builtin",".symver":"builtin",".tag":"builtin",".text":"builtin",".title":"builtin",".type":"builtin",".uleb128":"builtin",".val":"builtin",".version":"builtin",".vtable_entry":"builtin",".vtable_inherit":"builtin",".warning":"builtin",".weak":"builtin",".weakref":"builtin",".word":"builtin"},o={};function s(){n="#",o.al="variable",o.ah="variable",o.ax="variable",o.eax="variableName.special",o.rax="variableName.special",o.bl="variable",o.bh="variable",o.bx="variable",o.ebx="variableName.special",o.rbx="variableName.special",o.cl="variable",o.ch="variable",o.cx="variable",o.ecx="variableName.special",o.rcx="variableName.special",o.dl="variable",o.dh="variable",o.dx="variable",o.edx="variableName.special",o.rdx="variableName.special",o.si="variable",o.esi="variableName.special",o.rsi="variableName.special",o.di="variable",o.edi="variableName.special",o.rdi="variableName.special",o.sp="variable",o.esp="variableName.special",o.rsp="variableName.special",o.bp="variable",o.ebp="variableName.special",o.rbp="variableName.special",o.ip="variable",o.eip="variableName.special",o.rip="variableName.special",o.cs="keyword",o.ds="keyword",o.ss="keyword",o.es="keyword",o.fs="keyword",o.gs="keyword"}function a(){n="@",r.syntax="builtin",o.r0="variable",o.r1="variable",o.r2="variable",o.r3="variable",o.r4="variable",o.r5="variable",o.r6="variable",o.r7="variable",o.r8="variable",o.r9="variable",o.r10="variable",o.r11="variable",o.r12="variable",o.sp="variableName.special",o.lr="variableName.special",o.pc="variableName.special",o.r13=o.sp,o.r14=o.lr,o.r15=o.pc,t.push(function(u,h){if(u==="#")return h.eatWhile(/\w/),"number"})}e==="x86"?s():(e==="arm"||e==="armv6")&&a();function l(u,h){for(var g=!1,m;(m=u.next())!=null;){if(m===h&&!g)return!1;g=!g&&m==="\\"}return g}function d(u,h){for(var g=!1,m;(m=u.next())!=null;){if(m==="/"&&g){h.tokenize=null;break}g=m==="*"}return"comment"}return{name:"gas",startState:function(){return{tokenize:null}},token:function(u,h){if(h.tokenize)return h.tokenize(u,h);if(u.eatSpace())return null;var g,m,v=u.next();if(v==="/"&&u.eat("*"))return h.tokenize=d,d(u,h);if(v===n)return u.skipToEnd(),"comment";if(v==='"')return l(u,'"'),"string";if(v===".")return u.eatWhile(/\w/),m=u.current().toLowerCase(),g=r[m],g||null;if(v==="=")return u.eatWhile(/\w/),"tag";if(v==="{"||v==="}")return"bracket";if(/\d/.test(v))return v==="0"&&u.eat("x")?(u.eatWhile(/[0-9a-fA-F]/),"number"):(u.eatWhile(/\d/),"number");if(/\w/.test(v))return u.eatWhile(/\w/),u.eat(":")?"tag":(m=u.current().toLowerCase(),g=o[m],g||null);for(var f=0;f]*>?/)?"variable":(e.next(),e.eatWhile(/[^@"<#]/),null)}},GFr=Object.freeze(Object.defineProperty({__proto__:null,gherkin:XFr},Symbol.toStringTag,{value:"Module"}));function $pe(e){for(var t={},n=e.split(" "),r=0;r"))return Hm="->",null;if(/[+\-*&%=<>!?|\/~]/.test(n))return e.eatWhile(/[+\-*&%=<>|~]/),"operator";if(e.eatWhile(/[\w\$_]/),n=="@")return e.eatWhile(/[\w\$_\.]/),"meta";if(t.lastToken==".")return"property";if(e.eat(":"))return Hm="proplabel","property";var r=e.current();return KFr.propertyIsEnumerable(r)?"atom":YFr.propertyIsEnumerable(r)?(ZFr.propertyIsEnumerable(r)?Hm="newstatement":qFr.propertyIsEnumerable(r)&&(Hm="standalone"),"keyword"):"variable"}$Ke.isBase=!0;function l4t(e,t,n){var r=!1;if(e!="/"&&t.eat(e))if(t.eat(e))r=!0;else return"string";function o(s,a){for(var l=!1,d,u=!r;(d=s.next())!=null;){if(d==e&&!l){if(!r)break;if(s.match(e+e)){u=!0;break}}if(e=='"'&&d=="$"&&!l){if(s.eat("{"))return a.tokenize.push(JFr()),"string";if(s.match(/^\w/,!1))return a.tokenize.push(eNr),"string"}l=!l&&d=="\\"}return u&&a.tokenize.pop(),"string"}return n.tokenize.push(o),o(t,n)}function JFr(){var e=1;function t(n,r){if(n.peek()=="}"){if(e--,e==0)return r.tokenize.pop(),r.tokenize[r.tokenize.length-1](n,r)}else n.peek()=="{"&&e++;return $Ke(n,r)}return t.isBase=!0,t}function eNr(e,t){var n=e.match(/^(\.|[\w\$_]+)/);return(!n||!e.match(n[0]=="."?/^[\w$_]/:/^\./))&&t.tokenize.pop(),n?n[0]=="."?null:"variable":t.tokenize[t.tokenize.length-1](e,t)}function c4t(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize.pop();break}n=r=="*"}return"comment"}function mFe(e,t){return!e||e=="operator"||e=="->"||/[\.\[\{\(,;:]/.test(e)||e=="newstatement"||e=="keyword"||e=="proplabel"||e=="standalone"&&!t}function Yxn(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function jae(e,t,n){return e.context=new Yxn(e.indented,t,n,null,e.context)}function c7(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const tNr={name:"groovy",startState:function(e){return{tokenize:[$Ke],context:new Yxn(-e,0,"top",!1),indented:0,startOfLine:!0,lastToken:null}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0,n.type=="statement"&&!mFe(t.lastToken,!0)&&(c7(t),n=t.context)),e.eatSpace())return null;Hm=null;var r=t.tokenize[t.tokenize.length-1](e,t);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(Hm==";"||Hm==":")&&n.type=="statement")c7(t);else if(Hm=="->"&&n.type=="statement"&&n.prev.type=="}")c7(t),t.context.align=!1;else if(Hm=="{")jae(t,e.column(),"}");else if(Hm=="[")jae(t,e.column(),"]");else if(Hm=="(")jae(t,e.column(),")");else if(Hm=="}"){for(;n.type=="statement";)n=c7(t);for(n.type=="}"&&(n=c7(t));n.type=="statement";)n=c7(t)}else Hm==n.type?c7(t):(n.type=="}"||n.type=="top"||n.type=="statement"&&Hm=="newstatement")&&jae(t,e.column(),"statement");return t.startOfLine=!1,t.lastToken=Hm||r,r},indent:function(e,t,n){if(!e.tokenize[e.tokenize.length-1].isBase)return null;var r=t&&t.charAt(0),o=e.context;o.type=="statement"&&!mFe(e.lastToken,!0)&&(o=o.prev);var s=r==o.type;return o.type=="statement"?o.indented+(r=="{"?0:n.unit):o.align?o.column+(s?0:1):o.indented+(s?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}},nNr=Object.freeze(Object.defineProperty({__proto__:null,groovy:tNr},Symbol.toStringTag,{value:"Module"}));function kFe(e,t,n){return t(n),n(e,t)}var iNr=/[a-z_]/,rNr=/[A-Z]/,g8e=/\d/,oNr=/[0-9A-Fa-f]/,sNr=/[0-7]/,d4t=/[a-z_A-Z0-9'\xa1-\uffff]/,m8e=/[-!#$%&*+.\/<=>?@\\^|~:]/,aNr=/[(),;[\]`{}]/,Zxn=/[ \t\v\f]/;function jW(e,t){if(e.eatWhile(Zxn))return null;var n=e.next();if(aNr.test(n)){if(n=="{"&&e.eat("-")){var r="comment";return e.eat("#")&&(r="meta"),kFe(e,t,qxn(r,1))}return null}if(n=="'")return e.eat("\\"),e.next(),e.eat("'")?"string":"error";if(n=='"')return kFe(e,t,Kxn);if(rNr.test(n))return e.eatWhile(d4t),e.eat(".")?"qualifier":"type";if(iNr.test(n))return e.eatWhile(d4t),"variable";if(g8e.test(n)){if(n=="0"){if(e.eat(/[xX]/))return e.eatWhile(oNr),"integer";if(e.eat(/[oO]/))return e.eatWhile(sNr),"number"}e.eatWhile(g8e);var r="number";return e.match(/^\.\d+/)&&(r="number"),e.eat(/[eE]/)&&(r="number",e.eat(/[-+]/),e.eatWhile(g8e)),r}return n=="."&&e.eat(".")?"keyword":m8e.test(n)?n=="-"&&e.eat(/-/)&&(e.eatWhile(/-/),!e.eat(m8e))?(e.skipToEnd(),"comment"):(e.eatWhile(m8e),"variable"):"error"}function qxn(e,t){return t==0?jW:function(n,r){for(var o=t;!n.eol();){var s=n.next();if(s=="{"&&n.eat("-"))++o;else if(s=="-"&&n.eat("}")&&(--o,o==0))return r(jW),e}return r(qxn(e,o)),e}}function Kxn(e,t){for(;!e.eol();){var n=e.next();if(n=='"')return t(jW),"string";if(n=="\\"){if(e.eol()||e.eat(Zxn))return t(lNr),"string";e.eat("&")||e.next()}}return t(jW),"error"}function lNr(e,t){return e.eat("\\")?kFe(e,t,Kxn):(e.next(),t(jW),"error")}var u4t=function(){var e={};function t(n){return function(){for(var r=0;r","@","~","=>"),t("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<*","<=","<$>","<*>","=<<","==",">",">=",">>",">>=","^","^^","||","*","*>","**"),t("builtin")("Applicative","Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),t("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","pure","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"),e}();const cNr={name:"haskell",startState:function(){return{f:jW}},copyState:function(e){return{f:e.f}},token:function(e,t){var n=t.f(e,function(o){t.f=o}),r=e.current();return u4t.hasOwnProperty(r)?u4t[r]:n},languageData:{commentTokens:{line:"--",block:{open:"{-",close:"-}"}}}},dNr=Object.freeze(Object.defineProperty({__proto__:null,haskell:cNr},Symbol.toStringTag,{value:"Module"}));function Bh(e){return{type:e,style:"keyword"}}var h4t=Bh("keyword a"),k8e=Bh("keyword b"),Z$=Bh("keyword c"),uNr=Bh("operator"),v8e={type:"atom",style:"atom"},Wae={type:"attribute",style:"attribute"},Ym=Bh("typedef"),f4t={if:h4t,while:h4t,else:k8e,do:k8e,try:k8e,return:Z$,break:Z$,continue:Z$,new:Z$,throw:Z$,var:Bh("var"),inline:Wae,static:Wae,using:Bh("import"),public:Wae,private:Wae,cast:Bh("cast"),import:Bh("import"),macro:Bh("macro"),function:Bh("function"),catch:Bh("catch"),untyped:Bh("untyped"),callback:Bh("cb"),for:Bh("for"),switch:Bh("switch"),case:Bh("case"),default:Bh("default"),in:uNr,never:Bh("property_access"),trace:Bh("trace"),class:Ym,abstract:Ym,enum:Ym,interface:Ym,typedef:Ym,extends:Ym,implements:Ym,dynamic:Ym,true:v8e,false:v8e,null:v8e},A8e=/[+\-*&%=<>!?|]/;function g4t(e,t,n){return t.tokenize=n,n(e,t)}function Jxn(e,t){for(var n=!1,r;(r=e.next())!=null;){if(r==t&&!n)return!0;n=!n&&r=="\\"}}var Ym,e5n;function yk(e,t,n){return Ym=e,e5n=n,t}function ime(e,t){var n=e.next();if(n=='"'||n=="'")return g4t(e,t,hNr(n));if(/[\[\]{}\(\),;\:\.]/.test(n))return yk(n);if(n=="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),yk("number","number");if(/\d/.test(n)||n=="-"&&e.eat(/\d/))return e.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/),yk("number","number");if(t.reAllowed&&n=="~"&&e.eat(/\//))return Jxn(e,"/"),e.eatWhile(/[gimsu]/),yk("regexp","string.special");if(n=="/")return e.eat("*")?g4t(e,t,fNr):e.eat("/")?(e.skipToEnd(),yk("comment","comment")):(e.eatWhile(A8e),yk("operator",null,e.current()));if(n=="#")return e.skipToEnd(),yk("conditional","meta");if(n=="@")return e.eat(/:/),e.eatWhile(/[\w_]/),yk("metadata","meta");if(A8e.test(n))return e.eatWhile(A8e),yk("operator",null,e.current());var r;if(/[A-Z]/.test(n))return e.eatWhile(/[\w_<>]/),r=e.current(),yk("type","type",r);e.eatWhile(/[\w_]/);var r=e.current(),o=f4t.propertyIsEnumerable(r)&&f4t[r];return o&&t.kwAllowed?yk(o.type,o.style,r):yk("variable","variable",r)}function hNr(e){return function(t,n){return Jxn(t,e)&&(n.tokenize=ime),yk("string","string")}}function fNr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=ime;break}n=r=="*"}return yk("comment","comment")}var t5n={atom:!0,number:!0,variable:!0,string:!0,regexp:!0};function n5n(e,t,n,r,o,s){this.indented=e,this.column=t,this.type=n,this.prev=o,this.info=s,r!=null&&(this.align=r)}function gNr(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0}function mNr(e,t,n,r,o){var s=e.cc;for(Rd.state=e,Rd.stream=o,Rd.marked=null,Rd.cc=s,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){var a=s.length?s.pop():SS;if(a(n,r)){for(;s.length&&s[s.length-1].lex;)s.pop()();return Rd.marked?Rd.marked:n=="variable"&&gNr(e,r)?"variableName.local":n=="variable"&&kNr(e,r)?"variableName.special":t}}}function kNr(e,t){if(/[a-z]/.test(t.charAt(0)))return!1;for(var n=e.importedtypes.length,r=0;r=0;e--)Rd.cc.push(arguments[e])}function pr(){return x8.apply(null,arguments),!0}function m4t(e,t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}function Xpe(e){var t=Rd.state;if(t.context){if(Rd.marked="def",m4t(e,t.localVars))return;t.localVars={name:e,next:t.localVars}}else if(t.globalVars){if(m4t(e,t.globalVars))return;t.globalVars={name:e,next:t.globalVars}}}var vNr={name:"this",next:null};function vFe(){Rd.state.context||(Rd.state.localVars=vNr),Rd.state.context={prev:Rd.state.context,vars:Rd.state.localVars}}function rme(){Rd.state.localVars=Rd.state.context.vars,Rd.state.context=Rd.state.context.prev}rme.lex=!0;function gf(e,t){var n=function(){var r=Rd.state;r.lexical=new n5n(r.indented,Rd.stream.column(),e,null,r.lexical,t)};return n.lex=!0,n}function nh(){var e=Rd.state;e.lexical.prev&&(e.lexical.type==")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}nh.lex=!0;function i0(e){function t(n){return n==e?pr():e==";"?x8():pr(t)}return t}function SS(e){return e=="@"?pr(AFe):e=="var"?pr(gf("vardef"),XKe,i0(";"),nh):e=="keyword a"?pr(gf("form"),W4,SS,nh):e=="keyword b"?pr(gf("form"),SS,nh):e=="{"?pr(gf("}"),vFe,pFe,nh,rme):e==";"?pr():e=="attribute"?pr(r5n):e=="function"?pr(IK):e=="for"?pr(gf("form"),i0("("),gf(")"),yNr,i0(")"),nh,SS,nh):e=="variable"?pr(gf("stat"),bNr):e=="switch"?pr(gf("form"),W4,gf("}","switch"),i0("{"),pFe,nh,nh):e=="case"?pr(W4,i0(":")):e=="default"?pr(i0(":")):e=="catch"?pr(gf("form"),vFe,i0("("),a5n,i0(")"),SS,nh,rme):e=="import"?pr(o5n,i0(";")):e=="typedef"?pr(pNr):x8(gf("stat"),W4,i0(";"),nh)}function W4(e){return t5n.hasOwnProperty(e)||e=="type"?pr(yO):e=="function"?pr(IK):e=="keyword c"?pr(p8e):e=="("?pr(gf(")"),p8e,i0(")"),nh,yO):e=="operator"?pr(W4):e=="["?pr(gf("]"),WW(p8e,"]"),nh,yO):e=="{"?pr(gf("}"),WW(ONr,"}"),nh,yO):pr()}function p8e(e){return e.match(/[;\}\)\],]/)?x8():x8(W4)}function yO(e,t){if(e=="operator"&&/\+\+|--/.test(t))return pr(yO);if(e=="operator"||e==":")return pr(W4);if(e!=";"){if(e=="(")return pr(gf(")"),WW(W4,")"),nh,yO);if(e==".")return pr(wNr,yO);if(e=="[")return pr(gf("]"),W4,i0("]"),nh,yO)}}function r5n(e){if(e=="attribute")return pr(r5n);if(e=="function")return pr(IK);if(e=="var")return pr(XKe)}function AFe(e){if(e==":"||e=="variable")return pr(AFe);if(e=="(")return pr(gf(")"),WW(ANr,")"),nh,SS)}function ANr(e){if(e=="variable")return pr()}function o5n(e,t){if(e=="variable"&&/[A-Z]/.test(t.charAt(0)))return i5n(t),pr();if(e=="variable"||e=="property"||e=="."||t=="*")return pr(o5n)}function pNr(e,t){if(e=="variable"&&/[A-Z]/.test(t.charAt(0)))return i5n(t),pr();if(e=="type"&&/[A-Z]/.test(t.charAt(0)))return pr()}function bNr(e){return e==":"?pr(nh,SS):x8(yO,i0(";"),nh)}function wNr(e){if(e=="variable")return Rd.marked="property",pr()}function ONr(e){if(e=="variable"&&(Rd.marked="property"),t5n.hasOwnProperty(e))return pr(i0(":"),W4)}function WW(e,t){function n(r){return r==","?pr(e,n):r==t?pr():pr(i0(t))}return function(r){return r==t?pr():x8(e,n)}}function pFe(e){return e=="}"?pr():x8(SS,pFe)}function XKe(e,t){return e=="variable"?(Xpe(t),pr(Gpe,s5n)):pr()}function s5n(e,t){if(t=="=")return pr(W4,s5n);if(e==",")return pr(XKe)}function yNr(e,t){return e=="variable"?(Xpe(t),pr(CNr,W4)):x8()}function CNr(e,t){if(t=="in")return pr()}function IK(e,t){if(e=="variable"||e=="type")return Xpe(t),pr(IK);if(t=="new")return pr(IK);if(e=="(")return pr(gf(")"),vFe,WW(a5n,")"),nh,Gpe,SS,rme)}function Gpe(e){if(e==":")return pr(_Nr)}function _Nr(e){if(e=="type"||e=="variable")return pr();if(e=="{")return pr(gf("}"),WW(SNr,"}"),nh)}function SNr(e){if(e=="variable")return pr(Gpe)}function a5n(e,t){if(e=="variable")return Xpe(t),pr(Gpe)}const LNr={name:"haxe",startState:function(e){var t=["Int","Float","String","Void","Std","Bool","Dynamic","Array"],n={tokenize:ime,reAllowed:!0,kwAllowed:!0,cc:[],lexical:new n5n(-e,0,"block",!1),importedtypes:t,context:null,indented:0};return n},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);return Ym=="comment"?n:(t.reAllowed=!!(Ym=="operator"||Ym=="keyword c"||Ym.match(/^[\[{}\(,;:]$/)),t.kwAllowed=Ym!=".",mNr(t,n,Ym,e5n,e))},indent:function(e,t,n){if(e.tokenize!=ime)return 0;var r=t&&t.charAt(0),o=e.lexical;o.type=="stat"&&r=="}"&&(o=o.prev);var s=o.type,a=r==s;return s=="vardef"?o.indented+4:s=="form"&&r=="{"?o.indented:s=="stat"||s=="form"?o.indented+n.unit:o.info=="switch"&&!a?o.indented+(/^(?:case|default)\b/.test(t)?n.unit:2*n.unit):o.align?o.column+(a?0:1):o.indented+(a?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},xNr={name:"hxml",startState:function(){return{define:!1,inString:!1}},token:function(e,t){var o=e.peek(),n=e.sol();if(o=="#")return e.skipToEnd(),"comment";if(n&&o=="-"){var r="variable-2";return e.eat(/-/),e.peek()=="-"&&(e.eat(/-/),r="keyword a"),e.peek()=="D"&&(e.eat(/[D]/),r="keyword c",t.define=!0),e.eatWhile(/[A-Z]/i),r}var o=e.peek();return t.inString==!1&&o=="'"&&(t.inString=!0,e.next()),t.inString==!0?(e.skipTo("'")||e.skipToEnd(),e.peek()=="'"&&(e.next(),t.inString=!1),"string"):(e.next(),null)},languageData:{commentTokens:{line:"#"}}},k4t=Object.freeze(Object.defineProperty({__proto__:null,haxe:LNr,hxml:xNr},Symbol.toStringTag,{value:"Module"}));function GKe(e,t){return e.skipToEnd(),t.cur=Ype,"error"}function ENr(e,t){return e.match(/^HTTP\/\d\.\d/)?(t.cur=TNr,"keyword"):e.match(/^[A-Z]+/)&&/[ \t]/.test(e.peek())?(t.cur=DNr,"keyword"):GKe(e,t)}function TNr(e,t){var n=e.match(/^\d+/);if(!n)return GKe(e,t);t.cur=QNr;var r=Number(n[0]);return r>=100&&r<400?"atom":"error"}function QNr(e,t){return e.skipToEnd(),t.cur=Ype,null}function DNr(e,t){return e.eatWhile(/\S/),t.cur=BNr,"string.special"}function BNr(e,t){return e.match(/^HTTP\/\d\.\d$/)?(t.cur=Ype,"keyword"):GKe(e,t)}function Ype(e){return e.sol()&&!e.eat(/[ \t]/)?e.match(/^.*?:/)?"atom":(e.skipToEnd(),"error"):(e.skipToEnd(),"string")}function v4t(e){return e.skipToEnd(),null}const RNr={name:"http",token:function(e,t){var n=t.cur;return n!=Ype&&n!=v4t&&e.eatSpace()?null:n(e,t)},blankLine:function(e){e.cur=v4t},startState:function(){return{cur:ENr}}},INr=Object.freeze(Object.defineProperty({__proto__:null,http:RNr},Symbol.toStringTag,{value:"Module"}));function l5n(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var c5n=["a_correlate","abs","acos","adapt_hist_equal","alog","alog2","alog10","amoeba","annotate","app_user_dir","app_user_dir_query","arg_present","array_equal","array_indices","arrow","ascii_template","asin","assoc","atan","axis","axis","bandpass_filter","bandreject_filter","barplot","bar_plot","beseli","beselj","beselk","besely","beta","biginteger","bilinear","bin_date","binary_template","bindgen","binomial","bit_ffs","bit_population","blas_axpy","blk_con","boolarr","boolean","boxplot","box_cursor","breakpoint","broyden","bubbleplot","butterworth","bytarr","byte","byteorder","bytscl","c_correlate","calendar","caldat","call_external","call_function","call_method","call_procedure","canny","catch","cd","cdf","ceil","chebyshev","check_math","chisqr_cvf","chisqr_pdf","choldc","cholsol","cindgen","cir_3pnt","clipboard","close","clust_wts","cluster","cluster_tree","cmyk_convert","code_coverage","color_convert","color_exchange","color_quan","color_range_map","colorbar","colorize_sample","colormap_applicable","colormap_gradient","colormap_rotation","colortable","comfit","command_line_args","common","compile_opt","complex","complexarr","complexround","compute_mesh_normals","cond","congrid","conj","constrained_min","contour","contour","convert_coord","convol","convol_fft","coord2to3","copy_lun","correlate","cos","cosh","cpu","cramer","createboxplotdata","create_cursor","create_struct","create_view","crossp","crvlength","ct_luminance","cti_test","cursor","curvefit","cv_coord","cvttobm","cw_animate","cw_animate_getp","cw_animate_load","cw_animate_run","cw_arcball","cw_bgroup","cw_clr_index","cw_colorsel","cw_defroi","cw_field","cw_filesel","cw_form","cw_fslider","cw_light_editor","cw_light_editor_get","cw_light_editor_set","cw_orient","cw_palette_editor","cw_palette_editor_get","cw_palette_editor_set","cw_pdmenu","cw_rgbslider","cw_tmpl","cw_zoom","db_exists","dblarr","dcindgen","dcomplex","dcomplexarr","define_key","define_msgblk","define_msgblk_from_file","defroi","defsysv","delvar","dendro_plot","dendrogram","deriv","derivsig","determ","device","dfpmin","diag_matrix","dialog_dbconnect","dialog_message","dialog_pickfile","dialog_printersetup","dialog_printjob","dialog_read_image","dialog_write_image","dictionary","digital_filter","dilate","dindgen","dissolve","dist","distance_measure","dlm_load","dlm_register","doc_library","double","draw_roi","edge_dog","efont","eigenql","eigenvec","ellipse","elmhes","emboss","empty","enable_sysrtn","eof","eos","erase","erf","erfc","erfcx","erode","errorplot","errplot","estimator_filter","execute","exit","exp","expand","expand_path","expint","extract","extract_slice","f_cvf","f_pdf","factorial","fft","file_basename","file_chmod","file_copy","file_delete","file_dirname","file_expand_path","file_gunzip","file_gzip","file_info","file_lines","file_link","file_mkdir","file_move","file_poll_input","file_readlink","file_same","file_search","file_tar","file_test","file_untar","file_unzip","file_which","file_zip","filepath","findgen","finite","fix","flick","float","floor","flow3","fltarr","flush","format_axis_values","forward_function","free_lun","fstat","fulstr","funct","function","fv_test","fx_root","fz_roots","gamma","gamma_ct","gauss_cvf","gauss_pdf","gauss_smooth","gauss2dfit","gaussfit","gaussian_function","gaussint","get_drive_list","get_dxf_objects","get_kbrd","get_login_info","get_lun","get_screen_size","getenv","getwindows","greg2jul","grib","grid_input","grid_tps","grid3","griddata","gs_iter","h_eq_ct","h_eq_int","hanning","hash","hdf","hdf5","heap_free","heap_gc","heap_nosave","heap_refcount","heap_save","help","hilbert","hist_2d","hist_equal","histogram","hls","hough","hqr","hsv","i18n_multibytetoutf8","i18n_multibytetowidechar","i18n_utf8tomultibyte","i18n_widechartomultibyte","ibeta","icontour","iconvertcoord","idelete","identity","idl_base64","idl_container","idl_validname","idlexbr_assistant","idlitsys_createtool","idlunit","iellipse","igamma","igetcurrent","igetdata","igetid","igetproperty","iimage","image","image_cont","image_statistics","image_threshold","imaginary","imap","indgen","int_2d","int_3d","int_tabulated","intarr","interpol","interpolate","interval_volume","invert","ioctl","iopen","ir_filter","iplot","ipolygon","ipolyline","iputdata","iregister","ireset","iresolve","irotate","isa","isave","iscale","isetcurrent","isetproperty","ishft","isocontour","isosurface","isurface","itext","itranslate","ivector","ivolume","izoom","journal","json_parse","json_serialize","jul2greg","julday","keyword_set","krig2d","kurtosis","kw_test","l64indgen","la_choldc","la_cholmprove","la_cholsol","la_determ","la_eigenproblem","la_eigenql","la_eigenvec","la_elmhes","la_gm_linear_model","la_hqr","la_invert","la_least_square_equality","la_least_squares","la_linear_equation","la_ludc","la_lumprove","la_lusol","la_svd","la_tridc","la_trimprove","la_triql","la_trired","la_trisol","label_date","label_region","ladfit","laguerre","lambda","lambdap","lambertw","laplacian","least_squares_filter","leefilt","legend","legendre","linbcg","lindgen","linfit","linkimage","list","ll_arc_distance","lmfit","lmgr","lngamma","lnp_test","loadct","locale_get","logical_and","logical_or","logical_true","lon64arr","lonarr","long","long64","lsode","lu_complex","ludc","lumprove","lusol","m_correlate","machar","make_array","make_dll","make_rt","map","mapcontinents","mapgrid","map_2points","map_continents","map_grid","map_image","map_patch","map_proj_forward","map_proj_image","map_proj_info","map_proj_init","map_proj_inverse","map_set","matrix_multiply","matrix_power","max","md_test","mean","meanabsdev","mean_filter","median","memory","mesh_clip","mesh_decimate","mesh_issolid","mesh_merge","mesh_numtriangles","mesh_obj","mesh_smooth","mesh_surfacearea","mesh_validate","mesh_volume","message","min","min_curve_surf","mk_html_help","modifyct","moment","morph_close","morph_distance","morph_gradient","morph_hitormiss","morph_open","morph_thin","morph_tophat","multi","n_elements","n_params","n_tags","ncdf","newton","noise_hurl","noise_pick","noise_scatter","noise_slur","norm","obj_class","obj_destroy","obj_hasmethod","obj_isa","obj_new","obj_valid","objarr","on_error","on_ioerror","online_help","openr","openu","openw","oplot","oploterr","orderedhash","p_correlate","parse_url","particle_trace","path_cache","path_sep","pcomp","plot","plot3d","plot","plot_3dbox","plot_field","ploterr","plots","polar_contour","polar_surface","polyfill","polyshade","pnt_line","point_lun","polarplot","poly","poly_2d","poly_area","poly_fit","polyfillv","polygon","polyline","polywarp","popd","powell","pref_commit","pref_get","pref_set","prewitt","primes","print","printf","printd","pro","product","profile","profiler","profiles","project_vol","ps_show_fonts","psafm","pseudo","ptr_free","ptr_new","ptr_valid","ptrarr","pushd","qgrid3","qhull","qromb","qromo","qsimp","query_*","query_ascii","query_bmp","query_csv","query_dicom","query_gif","query_image","query_jpeg","query_jpeg2000","query_mrsid","query_pict","query_png","query_ppm","query_srf","query_tiff","query_video","query_wav","r_correlate","r_test","radon","randomn","randomu","ranks","rdpix","read","readf","read_ascii","read_binary","read_bmp","read_csv","read_dicom","read_gif","read_image","read_interfile","read_jpeg","read_jpeg2000","read_mrsid","read_pict","read_png","read_ppm","read_spr","read_srf","read_sylk","read_tiff","read_video","read_wav","read_wave","read_x11_bitmap","read_xwd","reads","readu","real_part","rebin","recall_commands","recon3","reduce_colors","reform","region_grow","register_cursor","regress","replicate","replicate_inplace","resolve_all","resolve_routine","restore","retall","return","reverse","rk4","roberts","rot","rotate","round","routine_filepath","routine_info","rs_test","s_test","save","savgol","scale3","scale3d","scatterplot","scatterplot3d","scope_level","scope_traceback","scope_varfetch","scope_varname","search2d","search3d","sem_create","sem_delete","sem_lock","sem_release","set_plot","set_shading","setenv","sfit","shade_surf","shade_surf_irr","shade_volume","shift","shift_diff","shmdebug","shmmap","shmunmap","shmvar","show3","showfont","signum","simplex","sin","sindgen","sinh","size","skewness","skip_lun","slicer3","slide_image","smooth","sobel","socket","sort","spawn","sph_4pnt","sph_scat","spher_harm","spl_init","spl_interp","spline","spline_p","sprsab","sprsax","sprsin","sprstp","sqrt","standardize","stddev","stop","strarr","strcmp","strcompress","streamline","streamline","stregex","stretch","string","strjoin","strlen","strlowcase","strmatch","strmessage","strmid","strpos","strput","strsplit","strtrim","struct_assign","struct_hide","strupcase","surface","surface","surfr","svdc","svdfit","svsol","swap_endian","swap_endian_inplace","symbol","systime","t_cvf","t_pdf","t3d","tag_names","tan","tanh","tek_color","temporary","terminal_size","tetra_clip","tetra_surface","tetra_volume","text","thin","thread","threed","tic","time_test2","timegen","timer","timestamp","timestamptovalues","tm_test","toc","total","trace","transpose","tri_surf","triangulate","trigrid","triql","trired","trisol","truncate_lun","ts_coef","ts_diff","ts_fcast","ts_smooth","tv","tvcrs","tvlct","tvrd","tvscl","typename","uindgen","uint","uintarr","ul64indgen","ulindgen","ulon64arr","ulonarr","ulong","ulong64","uniq","unsharp_mask","usersym","value_locate","variance","vector","vector_field","vel","velovect","vert_t3d","voigt","volume","voronoi","voxel_proj","wait","warp_tri","watershed","wdelete","wf_draw","where","widget_base","widget_button","widget_combobox","widget_control","widget_displaycontextmenu","widget_draw","widget_droplist","widget_event","widget_info","widget_label","widget_list","widget_propertysheet","widget_slider","widget_tab","widget_table","widget_text","widget_tree","widget_tree_move","widget_window","wiener_filter","window","window","write_bmp","write_csv","write_gif","write_image","write_jpeg","write_jpeg2000","write_nrif","write_pict","write_png","write_ppm","write_spr","write_srf","write_sylk","write_tiff","write_video","write_wav","write_wave","writeu","wset","wshow","wtn","wv_applet","wv_cwt","wv_cw_wavelet","wv_denoise","wv_dwt","wv_fn_coiflet","wv_fn_daubechies","wv_fn_gaussian","wv_fn_haar","wv_fn_morlet","wv_fn_paul","wv_fn_symlet","wv_import_data","wv_import_wavelet","wv_plot3d_wps","wv_plot_multires","wv_pwt","wv_tool_denoise","xbm_edit","xdisplayfile","xdxf","xfont","xinteranimate","xloadct","xmanager","xmng_tmpl","xmtool","xobjview","xobjview_rotate","xobjview_write_image","xpalette","xpcolor","xplot3d","xregistered","xroi","xsq_test","xsurface","xvaredit","xvolume","xvolume_rotate","xvolume_write_image","xyouts","zlib_compress","zlib_uncompress","zoom","zoom_24"],MNr=l5n(c5n),d5n=["begin","end","endcase","endfor","endwhile","endif","endrep","endforeach","break","case","continue","for","foreach","goto","if","then","else","repeat","until","switch","while","do","pro","function"],PNr=l5n(d5n),FNr=new RegExp("^[_a-z¡-￿][_a-z0-9¡-￿]*","i"),NNr=/[+\-*&=<>\/@#~$]/,UNr=new RegExp("(and|or|eq|lt|le|gt|ge|ne|not)","i");function jNr(e){return e.eatSpace()?null:e.match(";")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(PNr)?"keyword":e.match(MNr)?"builtin":e.match(FNr)?"variable":e.match(NNr)||e.match(UNr)?"operator":(e.next(),null)}const WNr={name:"idl",token:function(e){return jNr(e)},languageData:{autocomplete:c5n.concat(d5n)}},VNr=Object.freeze(Object.defineProperty({__proto__:null,idl:WNr},Symbol.toStringTag,{value:"Module"}));function Zpe(e){var t=e.statementIndent,n=e.jsonld,r=e.json||n,o=e.typescript,s=e.wordCharacters||/[\w$\xa1-\uffff]/,a=function(){function Ue(Wo){return{type:Wo,style:"keyword"}}var ut=Ue("keyword a"),Nt=Ue("keyword b"),wn=Ue("keyword c"),Cn=Ue("keyword d"),wr=Ue("operator"),Kr={type:"atom",style:"atom"};return{if:Ue("if"),while:ut,with:ut,else:Nt,do:Nt,try:Nt,finally:Nt,return:Cn,break:Cn,continue:Cn,new:Ue("new"),delete:wn,void:wn,throw:wn,debugger:Ue("debugger"),var:Ue("var"),const:Ue("var"),let:Ue("var"),function:Ue("function"),catch:Ue("catch"),for:Ue("for"),switch:Ue("switch"),case:Ue("case"),default:Ue("default"),in:wr,typeof:wr,instanceof:wr,true:Kr,false:Kr,null:Kr,undefined:Kr,NaN:Kr,Infinity:Kr,this:Ue("this"),class:Ue("class"),super:Ue("atom"),yield:wn,export:Ue("export"),import:Ue("import"),extends:wn,await:wn}}(),l=/[+\-*&%=<>!?|~^@]/,d=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function u(Ue){for(var ut=!1,Nt,wn=!1;(Nt=Ue.next())!=null;){if(!ut){if(Nt=="/"&&!wn)return;Nt=="["?wn=!0:wn&&Nt=="]"&&(wn=!1)}ut=!ut&&Nt=="\\"}}var h,g;function m(Ue,ut,Nt){return h=Ue,g=Nt,ut}function v(Ue,ut){var Nt=Ue.next();if(Nt=='"'||Nt=="'")return ut.tokenize=f(Nt),ut.tokenize(Ue,ut);if(Nt=="."&&Ue.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if(Nt=="."&&Ue.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(Nt))return m(Nt);if(Nt=="="&&Ue.eat(">"))return m("=>","operator");if(Nt=="0"&&Ue.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(Nt))return Ue.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if(Nt=="/")return Ue.eat("*")?(ut.tokenize=k,k(Ue,ut)):Ue.eat("/")?(Ue.skipToEnd(),m("comment","comment")):wi(Ue,ut,1)?(u(Ue),Ue.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string.special")):(Ue.eat("="),m("operator","operator",Ue.current()));if(Nt=="`")return ut.tokenize=A,A(Ue,ut);if(Nt=="#"&&Ue.peek()=="!")return Ue.skipToEnd(),m("meta","meta");if(Nt=="#"&&Ue.eatWhile(s))return m("variable","property");if(Nt=="<"&&Ue.match("!--")||Nt=="-"&&Ue.match("->")&&!/\S/.test(Ue.string.slice(0,Ue.start)))return Ue.skipToEnd(),m("comment","comment");if(l.test(Nt))return(Nt!=">"||!ut.lexical||ut.lexical.type!=">")&&(Ue.eat("=")?(Nt=="!"||Nt=="=")&&Ue.eat("="):/[<>*+\-|&?]/.test(Nt)&&(Ue.eat(Nt),Nt==">"&&Ue.eat(Nt))),Nt=="?"&&Ue.eat(".")?m("."):m("operator","operator",Ue.current());if(s.test(Nt)){Ue.eatWhile(s);var wn=Ue.current();if(ut.lastType!="."){if(a.propertyIsEnumerable(wn)){var Cn=a[wn];return m(Cn.type,Cn.style,wn)}if(wn=="async"&&Ue.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",wn)}return m("variable","variable",wn)}}function f(Ue){return function(ut,Nt){var wn=!1,Cn;if(n&&ut.peek()=="@"&&ut.match(d))return Nt.tokenize=v,m("jsonld-keyword","meta");for(;(Cn=ut.next())!=null&&!(Cn==Ue&&!wn);)wn=!wn&&Cn=="\\";return wn||(Nt.tokenize=v),m("string","string")}}function k(Ue,ut){for(var Nt=!1,wn;wn=Ue.next();){if(wn=="/"&&Nt){ut.tokenize=v;break}Nt=wn=="*"}return m("comment","comment")}function A(Ue,ut){for(var Nt=!1,wn;(wn=Ue.next())!=null;){if(!Nt&&(wn=="`"||wn=="$"&&Ue.eat("{"))){ut.tokenize=v;break}Nt=!Nt&&wn=="\\"}return m("quasi","string.special",Ue.current())}var p="([{}])";function b(Ue,ut){ut.fatArrowAt&&(ut.fatArrowAt=null);var Nt=Ue.string.indexOf("=>",Ue.start);if(!(Nt<0)){if(o){var wn=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(Ue.string.slice(Ue.start,Nt));wn&&(Nt=wn.index)}for(var Cn=0,wr=!1,Kr=Nt-1;Kr>=0;--Kr){var Wo=Ue.string.charAt(Kr),pl=p.indexOf(Wo);if(pl>=0&&pl<3){if(!Cn){++Kr;break}if(--Cn==0){Wo=="("&&(wr=!0);break}}else if(pl>=3&&pl<6)++Cn;else if(s.test(Wo))wr=!0;else if(/["'\/`]/.test(Wo))for(;;--Kr){if(Kr==0)return;var pu=Ue.string.charAt(Kr-1);if(pu==Wo&&Ue.string.charAt(Kr-2)!="\\"){Kr--;break}}else if(wr&&!Cn){++Kr;break}}wr&&!Cn&&(ut.fatArrowAt=Kr)}}var w={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function O(Ue,ut,Nt,wn,Cn,wr){this.indented=Ue,this.column=ut,this.type=Nt,this.prev=Cn,this.info=wr,wn!=null&&(this.align=wn)}function y(Ue,ut){for(var Nt=Ue.localVars;Nt;Nt=Nt.next)if(Nt.name==ut)return!0;for(var wn=Ue.context;wn;wn=wn.prev)for(var Nt=wn.vars;Nt;Nt=Nt.next)if(Nt.name==ut)return!0}function C(Ue,ut,Nt,wn,Cn){var wr=Ue.cc;for(_.state=Ue,_.stream=Cn,_.marked=null,_.cc=wr,_.style=ut,Ue.lexical.hasOwnProperty("align")||(Ue.lexical.align=!0);;){var Kr=wr.length?wr.pop():r?q:$;if(Kr(Nt,wn)){for(;wr.length&&wr[wr.length-1].lex;)wr.pop()();return _.marked?_.marked:Nt=="variable"&&y(Ue,wn)?"variableName.local":ut}}}var _={state:null,marked:null,cc:null};function S(){for(var Ue=arguments.length-1;Ue>=0;Ue--)_.cc.push(arguments[Ue])}function L(){return S.apply(null,arguments),!0}function E(Ue,ut){for(var Nt=ut;Nt;Nt=Nt.next)if(Nt.name==Ue)return!0;return!1}function T(Ue){var ut=_.state;if(_.marked="def",ut.context){if(ut.lexical.info=="var"&&ut.context&&ut.context.block){var Nt=D(Ue,ut.context);if(Nt!=null){ut.context=Nt;return}}else if(!E(Ue,ut.localVars)){ut.localVars=new M(Ue,ut.localVars);return}}e.globalVars&&!E(Ue,ut.globalVars)&&(ut.globalVars=new M(Ue,ut.globalVars))}function D(Ue,ut){if(ut)if(ut.block){var Nt=D(Ue,ut.prev);return Nt?Nt==ut.prev?ut:new Q(Nt,ut.vars,!0):null}else return E(Ue,ut.vars)?ut:new Q(ut.prev,new M(Ue,ut.vars),!1);else return null}function P(Ue){return Ue=="public"||Ue=="private"||Ue=="protected"||Ue=="abstract"||Ue=="readonly"}function Q(Ue,ut,Nt){this.prev=Ue,this.vars=ut,this.block=Nt}function M(Ue,ut){this.name=Ue,this.next=ut}var B=new M("this",new M("arguments",null));function R(){_.state.context=new Q(_.state.context,_.state.localVars,!1),_.state.localVars=B}function I(){_.state.context=new Q(_.state.context,_.state.localVars,!0),_.state.localVars=null}R.lex=I.lex=!0;function F(){_.state.localVars=_.state.context.vars,_.state.context=_.state.context.prev}F.lex=!0;function j(Ue,ut){var Nt=function(){var wn=_.state,Cn=wn.indented;if(wn.lexical.type=="stat")Cn=wn.lexical.indented;else for(var wr=wn.lexical;wr&&wr.type==")"&&wr.align;wr=wr.prev)Cn=wr.indented;wn.lexical=new O(Cn,_.stream.column(),Ue,null,wn.lexical,ut)};return Nt.lex=!0,Nt}function W(){var Ue=_.state;Ue.lexical.prev&&(Ue.lexical.type==")"&&(Ue.indented=Ue.lexical.indented),Ue.lexical=Ue.lexical.prev)}W.lex=!0;function H(Ue){function ut(Nt){return Nt==Ue?L():Ue==";"||Nt=="}"||Nt==")"||Nt=="]"?S():L(ut)}return ut}function $(Ue,ut){return Ue=="var"?L(j("vardef",ut),on,H(";"),W):Ue=="keyword a"?L(j("form"),J,$,W):Ue=="keyword b"?L(j("form"),$,W):Ue=="keyword d"?_.stream.match(/^\s*$/,!1)?L():L(j("stat"),se,H(";"),W):Ue=="debugger"?L(H(";")):Ue=="{"?L(j("}"),I,Te,W,F):Ue==";"?L():Ue=="if"?(_.state.lexical.info=="else"&&_.state.cc[_.state.cc.length-1]==W&&_.state.cc.pop()(),L(j("form"),J,$,W,Hr)):Ue=="function"?L(is):Ue=="for"?L(j("form"),I,Bo,$,F,W):Ue=="class"||o&&ut=="interface"?(_.marked="keyword",L(j("form",Ue=="class"?Ue:ut),tr,W)):Ue=="variable"?o&&ut=="declare"?(_.marked="keyword",L($)):o&&(ut=="module"||ut=="enum"||ut=="type")&&_.stream.match(/^\s*\w/,!1)?(_.marked="keyword",ut=="enum"?L(bn):ut=="type"?L(Gt,H("operator"),et,H(";")):L(j("form"),pn,H("{"),j("}"),Te,W,W)):o&&ut=="namespace"?(_.marked="keyword",L(j("form"),q,$,W)):o&&ut=="abstract"?(_.marked="keyword",L($)):L(j("stat"),he):Ue=="switch"?L(j("form"),J,H("{"),j("}","switch"),I,Te,W,W,F):Ue=="case"?L(q,H(":")):Ue=="default"?L(H(":")):Ue=="catch"?L(j("form"),R,G,$,W,F):Ue=="export"?L(j("stat"),Kt,W):Ue=="import"?L(j("stat"),Zt,W):Ue=="async"?L($):ut=="@"?L(q,$):S(j("stat"),q,H(";"),W)}function G(Ue){if(Ue=="(")return L(gi,H(")"))}function q(Ue,ut){return oe(Ue,ut,!1)}function re(Ue,ut){return oe(Ue,ut,!0)}function J(Ue){return Ue!="("?S():L(j(")"),se,H(")"),W)}function oe(Ue,ut,Nt){if(_.state.fatArrowAt==_.stream.start){var wn=Nt?Y:z;if(Ue=="(")return L(R,j(")"),me(gi,")"),W,H("=>"),wn,F);if(Ue=="variable")return S(R,pn,H("=>"),wn,F)}var Cn=Nt?ue:le;return w.hasOwnProperty(Ue)?L(Cn):Ue=="function"?L(is,Cn):Ue=="class"||o&&ut=="interface"?(_.marked="keyword",L(j("form"),ri,W)):Ue=="keyword c"||Ue=="async"?L(Nt?re:q):Ue=="("?L(j(")"),se,H(")"),W,Cn):Ue=="operator"||Ue=="spread"?L(Nt?re:q):Ue=="["?L(j("]"),nt,W,Cn):Ue=="{"?_e(Ce,"}",null,Cn):Ue=="quasi"?S(ee,Cn):Ue=="new"?L(ie(Nt)):L()}function se(Ue){return Ue.match(/[;\}\)\],]/)?S():S(q)}function le(Ue,ut){return Ue==","?L(se):ue(Ue,ut,!1)}function ue(Ue,ut,Nt){var wn=Nt==!1?le:ue,Cn=Nt==!1?q:re;if(Ue=="=>")return L(R,Nt?Y:z,F);if(Ue=="operator")return/\+\+|--/.test(ut)||o&&ut=="!"?L(wn):o&&ut=="<"&&_.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?L(j(">"),me(et,">"),W,wn):ut=="?"?L(q,H(":"),Cn):L(Cn);if(Ue=="quasi")return S(ee,wn);if(Ue!=";"){if(Ue=="(")return _e(re,")","call",wn);if(Ue==".")return L(pe,wn);if(Ue=="[")return L(j("]"),se,H("]"),W,wn);if(o&&ut=="as")return _.marked="keyword",L(et,wn);if(Ue=="regexp")return _.state.lastType=_.marked="operator",_.stream.backUp(_.stream.pos-_.stream.start-1),L(Cn)}}function ee(Ue,ut){return Ue!="quasi"?S():ut.slice(ut.length-2)!="${"?L(ee):L(se,de)}function de(Ue){if(Ue=="}")return _.marked="string.special",_.state.tokenize=A,L(ee)}function z(Ue){return b(_.stream,_.state),S(Ue=="{"?$:q)}function Y(Ue){return b(_.stream,_.state),S(Ue=="{"?$:re)}function ie(Ue){return function(ut){return ut=="."?L(Ue?Z:te):ut=="variable"&&o?L(St,Ue?ue:le):S(Ue?re:q)}}function te(Ue,ut){if(ut=="target")return _.marked="keyword",L(le)}function Z(Ue,ut){if(ut=="target")return _.marked="keyword",L(ue)}function he(Ue){return Ue==":"?L(W,$):S(le,H(";"),W)}function pe(Ue){if(Ue=="variable")return _.marked="property",L()}function Ce(Ue,ut){if(Ue=="async")return _.marked="property",L(Ce);if(Ue=="variable"||_.style=="keyword"){if(_.marked="property",ut=="get"||ut=="set")return L(Qe);var Nt;return o&&_.state.fatArrowAt==_.stream.start&&(Nt=_.stream.match(/^\s*:\s*/,!1))&&(_.state.fatArrowAt=_.stream.pos+Nt[0].length),L(ke)}else{if(Ue=="number"||Ue=="string")return _.marked=n?"property":_.style+" property",L(ke);if(Ue=="jsonld-keyword")return L(ke);if(o&&P(ut))return _.marked="keyword",L(Ce);if(Ue=="[")return L(q,De,H("]"),ke);if(Ue=="spread")return L(re,ke);if(ut=="*")return _.marked="keyword",L(Ce);if(Ue==":")return S(ke)}}function Qe(Ue){return Ue!="variable"?S(ke):(_.marked="property",L(is))}function ke(Ue){if(Ue==":")return L(re);if(Ue=="(")return S(is)}function me(Ue,ut,Nt){function wn(Cn,wr){if(Nt?Nt.indexOf(Cn)>-1:Cn==","){var Kr=_.state.lexical;return Kr.info=="call"&&(Kr.pos=(Kr.pos||0)+1),L(function(Wo,pl){return Wo==ut||pl==ut?S():S(Ue)},wn)}return Cn==ut||wr==ut?L():Nt&&Nt.indexOf(";")>-1?S(Ue):L(H(ut))}return function(Cn,wr){return Cn==ut||wr==ut?L():S(Ue,wn)}}function _e(Ue,ut,Nt){for(var wn=3;wn"),et);if(Ue=="quasi")return S(Ie,gt)}function st(Ue){if(Ue=="=>")return L(et)}function Me(Ue){return Ue.match(/[\}\)\]]/)?L():Ue==","||Ue==";"?L(Me):S(Se,Me)}function Se(Ue,ut){if(Ue=="variable"||_.style=="keyword")return _.marked="property",L(Se);if(ut=="?"||Ue=="number"||Ue=="string")return L(Se);if(Ue==":")return L(et);if(Ue=="[")return L(H("variable"),Ye,H("]"),Se);if(Ue=="(")return S(yi,Se);if(!Ue.match(/[;\}\)\],]/))return L()}function Ie(Ue,ut){return Ue!="quasi"?S():ut.slice(ut.length-2)!="${"?L(Ie):L(et,ze)}function ze(Ue){if(Ue=="}")return _.marked="string.special",_.state.tokenize=A,L(Ie)}function Ze(Ue,ut){return Ue=="variable"&&_.stream.match(/^\s*[?:]/,!1)||ut=="?"?L(Ze):Ue==":"?L(et):Ue=="spread"?L(Ze):S(et)}function gt(Ue,ut){if(ut=="<")return L(j(">"),me(et,">"),W,gt);if(ut=="|"||Ue=="."||ut=="&")return L(et);if(Ue=="[")return L(et,H("]"),gt);if(ut=="extends"||ut=="implements")return _.marked="keyword",L(et);if(ut=="?")return L(et,H(":"),et)}function St(Ue,ut){if(ut=="<")return L(j(">"),me(et,">"),W,gt)}function Pt(){return S(et,dn)}function dn(Ue,ut){if(ut=="=")return L(et)}function on(Ue,ut){return ut=="enum"?(_.marked="keyword",L(bn)):S(pn,De,Pi,rr)}function pn(Ue,ut){if(o&&P(ut))return _.marked="keyword",L(pn);if(Ue=="variable")return T(ut),L();if(Ue=="spread")return L(pn);if(Ue=="[")return _e(Zn,"]");if(Ue=="{")return _e(ni,"}")}function ni(Ue,ut){return Ue=="variable"&&!_.stream.match(/^\s*:/,!1)?(T(ut),L(Pi)):(Ue=="variable"&&(_.marked="property"),Ue=="spread"?L(pn):Ue=="}"?S():Ue=="["?L(q,H("]"),H(":"),ni):L(H(":"),pn,Pi))}function Zn(){return S(pn,Pi)}function Pi(Ue,ut){if(ut=="=")return L(re)}function rr(Ue){if(Ue==",")return L(on)}function Hr(Ue,ut){if(Ue=="keyword b"&&ut=="else")return L(j("form","else"),$,W)}function Bo(Ue,ut){if(ut=="await")return L(Bo);if(Ue=="(")return L(j(")"),lo,W)}function lo(Ue){return Ue=="var"?L(on,Fr):Ue=="variable"?L(Fr):S(Fr)}function Fr(Ue,ut){return Ue==")"?L():Ue==";"?L(Fr):ut=="in"||ut=="of"?(_.marked="keyword",L(q,Fr)):S(q,Fr)}function is(Ue,ut){if(ut=="*")return _.marked="keyword",L(is);if(Ue=="variable")return T(ut),L(is);if(Ue=="(")return L(R,j(")"),me(gi,")"),W,ot,$,F);if(o&&ut=="<")return L(j(">"),me(Pt,">"),W,is)}function yi(Ue,ut){if(ut=="*")return _.marked="keyword",L(yi);if(Ue=="variable")return T(ut),L(yi);if(Ue=="(")return L(R,j(")"),me(gi,")"),W,ot,F);if(o&&ut=="<")return L(j(">"),me(Pt,">"),W,yi)}function Gt(Ue,ut){if(Ue=="keyword"||Ue=="variable")return _.marked="type",L(Gt);if(ut=="<")return L(j(">"),me(Pt,">"),W)}function gi(Ue,ut){return ut=="@"&&L(q,gi),Ue=="spread"?L(gi):o&&P(ut)?(_.marked="keyword",L(gi)):o&&Ue=="this"?L(De,Pi):S(pn,De,Pi)}function ri(Ue,ut){return Ue=="variable"?tr(Ue,ut):ht(Ue,ut)}function tr(Ue,ut){if(Ue=="variable")return T(ut),L(ht)}function ht(Ue,ut){if(ut=="<")return L(j(">"),me(Pt,">"),W,ht);if(ut=="extends"||ut=="implements"||o&&Ue==",")return ut=="implements"&&(_.marked="keyword"),L(o?et:q,ht);if(Ue=="{")return L(j("}"),At,W)}function At(Ue,ut){if(Ue=="async"||Ue=="variable"&&(ut=="static"||ut=="get"||ut=="set"||o&&P(ut))&&_.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return _.marked="keyword",L(At);if(Ue=="variable"||_.style=="keyword")return _.marked="property",L(Mt,At);if(Ue=="number"||Ue=="string")return L(Mt,At);if(Ue=="[")return L(q,De,H("]"),Mt,At);if(ut=="*")return _.marked="keyword",L(At);if(o&&Ue=="(")return S(yi,At);if(Ue==";"||Ue==",")return L(At);if(Ue=="}")return L();if(ut=="@")return L(q,At)}function Mt(Ue,ut){if(ut=="!"||ut=="?")return L(Mt);if(Ue==":")return L(et,Pi);if(ut=="=")return L(re);var Nt=_.state.lexical.prev,wn=Nt&&Nt.info=="interface";return S(wn?yi:is)}function Kt(Ue,ut){return ut=="*"?(_.marked="keyword",L(Ne,H(";"))):ut=="default"?(_.marked="keyword",L(q,H(";"))):Ue=="{"?L(me(qn,"}"),Ne,H(";")):S($)}function qn(Ue,ut){if(ut=="as")return _.marked="keyword",L(H("variable"));if(Ue=="variable")return S(re,qn)}function Zt(Ue){return Ue=="string"?L():Ue=="("?S(q):Ue=="."?S(le):S(so,Un,Ne)}function so(Ue,ut){return Ue=="{"?_e(so,"}"):(Ue=="variable"&&T(ut),ut=="*"&&(_.marked="keyword"),L(dt))}function Un(Ue){if(Ue==",")return L(so,Un)}function dt(Ue,ut){if(ut=="as")return _.marked="keyword",L(so)}function Ne(Ue,ut){if(ut=="from")return _.marked="keyword",L(q)}function nt(Ue){return Ue=="]"?L():S(me(re,"]"))}function bn(){return S(j("form"),pn,H("{"),j("}"),me(hn,"}"),W,W)}function hn(){return S(pn,Pi)}function En(Ue,ut){return Ue.lastType=="operator"||Ue.lastType==","||l.test(ut.charAt(0))||/[,.]/.test(ut.charAt(0))}function wi(Ue,ut,Nt){return ut.tokenize==v&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(ut.lastType)||ut.lastType=="quasi"&&/\{\s*$/.test(Ue.string.slice(0,Ue.pos-Nt))}return{name:e.name,startState:function(Ue){var ut={tokenize:v,lastType:"sof",cc:[],lexical:new O(-Ue,0,"block",!1),localVars:e.localVars,context:e.localVars&&new Q(null,null,!1),indented:0};return e.globalVars&&typeof e.globalVars=="object"&&(ut.globalVars=e.globalVars),ut},token:function(Ue,ut){if(Ue.sol()&&(ut.lexical.hasOwnProperty("align")||(ut.lexical.align=!1),ut.indented=Ue.indentation(),b(Ue,ut)),ut.tokenize!=k&&Ue.eatSpace())return null;var Nt=ut.tokenize(Ue,ut);return h=="comment"?Nt:(ut.lastType=h=="operator"&&(g=="++"||g=="--")?"incdec":h,C(ut,Nt,h,g,Ue))},indent:function(Ue,ut,Nt){if(Ue.tokenize==k||Ue.tokenize==A)return null;if(Ue.tokenize!=v)return 0;var wn=ut&&ut.charAt(0),Cn=Ue.lexical,wr;if(!/^\s*else\b/.test(ut))for(var Kr=Ue.cc.length-1;Kr>=0;--Kr){var Wo=Ue.cc[Kr];if(Wo==W)Cn=Cn.prev;else if(Wo!=Hr&&Wo!=F)break}for(;(Cn.type=="stat"||Cn.type=="form")&&(wn=="}"||(wr=Ue.cc[Ue.cc.length-1])&&(wr==le||wr==ue)&&!/^[,\.=+\-*:?[\(]/.test(ut));)Cn=Cn.prev;t&&Cn.type==")"&&Cn.prev.type=="stat"&&(Cn=Cn.prev);var pl=Cn.type,pu=wn==pl;return pl=="vardef"?Cn.indented+(Ue.lastType=="operator"||Ue.lastType==","?Cn.info.length+1:0):pl=="form"&&wn=="{"?Cn.indented:pl=="form"?Cn.indented+Nt.unit:pl=="stat"?Cn.indented+(En(Ue,ut)?t||Nt.unit:0):Cn.info=="switch"&&!pu&&e.doubleIndentSwitch!=!1?Cn.indented+(/^(?:case|default)\b/.test(ut)?Nt.unit:2*Nt.unit):Cn.align?Cn.column+(pu?0:1):Cn.indented+(pu?0:Nt.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:r?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}const p6=Zpe({name:"javascript"}),zNr=Zpe({name:"json",json:!0}),HNr=Zpe({name:"json",jsonld:!0}),$Nr=Zpe({name:"typescript",typescript:!0}),XNr=Object.freeze(Object.defineProperty({__proto__:null,javascript:p6,json:zNr,jsonld:HNr,typescript:$Nr},Symbol.toStringTag,{value:"Module"}));function iE(e,t,n){return typeof n>"u"&&(n=""),typeof t>"u"&&(t="\\b"),new RegExp("^"+n+"(("+e.join(")|(")+"))"+t)}var GNr="\\\\[0-7]{1,3}",YNr="\\\\x[A-Fa-f0-9]{1,2}",ZNr=`\\\\[abefnrtv0%?'"\\\\]`,qNr="([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])",u5n=["[<>]:","[<>=]=","<<=?",">>>?=?","=>","--?>","<--[->]?","\\/\\/","\\.{2,3}","[\\.\\\\%*+\\-<>!\\/^|&]=?","\\?","\\$","~",":"],KNr=iE(["[<>]:","[<>=]=","[!=]==","<<=?",">>>?=?","=>?","--?>","<--[->]?","\\/\\/","[\\\\%*+\\-<>!\\/^|&\\u00F7\\u22BB]=?","\\?","\\$","~",":","\\u00D7","\\u2208","\\u2209","\\u220B","\\u220C","\\u2218","\\u221A","\\u221B","\\u2229","\\u222A","\\u2260","\\u2264","\\u2265","\\u2286","\\u2288","\\u228A","\\u22C5","\\b(in|isa)\\b(?!.?\\()"],""),JNr=/^[;,()[\]{}]/,eUr=/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/,tUr=iE([GNr,YNr,ZNr,qNr],"'"),nUr=["begin","function","type","struct","immutable","let","macro","for","while","quote","if","else","elseif","try","finally","catch","do"],iUr=["end","else","elseif","catch","finally"],h5n=["if","else","elseif","while","for","begin","let","end","do","try","catch","finally","return","break","continue","global","local","const","export","import","importall","using","function","where","macro","module","baremodule","struct","type","mutable","immutable","quote","typealias","abstract","primitive","bitstype"],f5n=["true","false","nothing","NaN","Inf"],rUr=iE(nUr),oUr=iE(iUr),sUr=iE(h5n),aUr=iE(f5n),lUr=/^@[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,cUr=/^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,dUr=/^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/,uUr=iE(u5n,"","@"),hUr=iE(u5n,"",":");function A4t(e){return e.nestedArrays>0}function fUr(e){return e.nestedGenerators>0}function p4t(e,t){return typeof t>"u"&&(t=0),e.scopes.length<=t?null:e.scopes[e.scopes.length-(t+1)]}function VW(e,t){if(e.match("#=",!1))return t.tokenize=mUr,t.tokenize(e,t);var n=t.leavingExpr;if(e.sol()&&(n=!1),t.leavingExpr=!1,n&&e.match(/^'+/))return"operator";if(e.match(/\.{4,}/))return"error";if(e.match(/\.{1,3}/))return"operator";if(e.eatSpace())return null;var r=e.peek();if(r==="#")return e.skipToEnd(),"comment";if(r==="["&&(t.scopes.push("["),t.nestedArrays++),r==="("&&(t.scopes.push("("),t.nestedGenerators++),A4t(t)&&r==="]"){for(;t.scopes.length&&p4t(t)!=="[";)t.scopes.pop();t.scopes.pop(),t.nestedArrays--,t.leavingExpr=!0}if(fUr(t)&&r===")"){for(;t.scopes.length&&p4t(t)!=="(";)t.scopes.pop();t.scopes.pop(),t.nestedGenerators--,t.leavingExpr=!0}if(A4t(t)){if(t.lastToken=="end"&&e.match(":"))return"operator";if(e.match("end"))return"number"}var o;if((o=e.match(rUr,!1))&&t.scopes.push(o[0]),e.match(oUr,!1)&&t.scopes.pop(),e.match(/^::(?![:\$])/))return t.tokenize=gUr,t.tokenize(e,t);if(!n&&(e.match(cUr)||e.match(hUr)))return"builtin";if(e.match(KNr))return"operator";if(e.match(/^\.?\d/,!1)){var s=RegExp(/^im\b/),a=!1;if(e.match(/^0x\.[0-9a-f_]+p[\+\-]?[_\d]+/i)&&(a=!0),e.match(/^0x[0-9a-f_]+/i)&&(a=!0),e.match(/^0b[01_]+/i)&&(a=!0),e.match(/^0o[0-7_]+/i)&&(a=!0),e.match(/^(?:(?:\d[_\d]*)?\.(?!\.)(?:\d[_\d]*)?|\d[_\d]*\.(?!\.)(?:\d[_\d]*))?([Eef][\+\-]?[_\d]+)?/i)&&(a=!0),e.match(/^\d[_\d]*(e[\+\-]?\d+)?/i)&&(a=!0),a)return e.match(s),t.leavingExpr=!0,"number"}if(e.match("'"))return t.tokenize=kUr,t.tokenize(e,t);if(e.match(dUr))return t.tokenize=vUr(e.current()),t.tokenize(e,t);if(e.match(lUr)||e.match(uUr))return"meta";if(e.match(JNr))return null;if(e.match(sUr))return"keyword";if(e.match(aUr))return"builtin";var l=t.isDefinition||t.lastToken=="function"||t.lastToken=="macro"||t.lastToken=="type"||t.lastToken=="struct"||t.lastToken=="immutable";return e.match(eUr)?l?e.peek()==="."?(t.isDefinition=!0,"variable"):(t.isDefinition=!1,"def"):(t.leavingExpr=!0,"variable"):(e.next(),"error")}function gUr(e,t){return e.match(/.*?(?=[,;{}()=\s]|$)/),e.match("{")?t.nestedParameters++:e.match("}")&&t.nestedParameters>0&&t.nestedParameters--,t.nestedParameters>0?e.match(/.*?(?={|})/)||e.next():t.nestedParameters==0&&(t.tokenize=VW),"builtin"}function mUr(e,t){return e.match("#=")&&t.nestedComments++,e.match(/.*?(?=(#=|=#))/)||e.skipToEnd(),e.match("=#")&&(t.nestedComments--,t.nestedComments==0&&(t.tokenize=VW)),"comment"}function kUr(e,t){var n=!1,r;if(e.match(tUr))n=!0;else if(r=e.match(/\\u([a-f0-9]{1,4})(?=')/i)){var o=parseInt(r[1],16);(o<=55295||o>=57344)&&(n=!0,e.next())}else if(r=e.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)){var o=parseInt(r[1],16);o<=1114111&&(n=!0,e.next())}return n?(t.leavingExpr=!0,t.tokenize=VW,"string"):(e.match(/^[^']+(?=')/)||e.skipToEnd(),e.match("'")&&(t.tokenize=VW),"error")}function vUr(e){e.substr(-3)==='"""'?e='"""':e.substr(-1)==='"'&&(e='"');function t(n,r){if(n.eat("\\"))n.next();else{if(n.match(e))return r.tokenize=VW,r.leavingExpr=!0,"string";n.eat(/[`"]/)}return n.eatWhile(/[^\\`"]/),"string"}return t}const AUr={name:"julia",startState:function(){return{tokenize:VW,scopes:[],lastToken:null,leavingExpr:!1,isDefinition:!1,nestedArrays:0,nestedComments:0,nestedGenerators:0,nestedParameters:0,firstParenPos:-1}},token:function(e,t){var n=t.tokenize(e,t),r=e.current();return r&&n&&(t.lastToken=r),n},indent:function(e,t,n){var r=0;return(t==="]"||t===")"||/^end\b/.test(t)||/^else/.test(t)||/^catch\b/.test(t)||/^elseif\b/.test(t)||/^finally/.test(t))&&(r=-1),(e.scopes.length+r)*n.unit},languageData:{indentOnInput:/^\s*(end|else|catch|finally)\b$/,commentTokens:{line:"#",block:{open:"#=",close:"=#"}},closeBrackets:{brackets:["(","[","{",'"']},autocomplete:h5n.concat(f5n)}},pUr=Object.freeze(Object.defineProperty({__proto__:null,julia:AUr},Symbol.toStringTag,{value:"Module"}));var bUr=function(e,t){var n=t.next||"start";{t.next=t.next;var r=cN[n];if(r.splice){for(var o=0;o|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+Iue+")?))\\s*$"),gP="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",mP={token:"string",regex:".+"},cN={start:[{token:"docComment",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+gP},{token:"atom",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+gP},{token:"invalid",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+gP},{token:"className.standard",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+gP},{token:"variableName.function.standard",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+gP},{token:"variableName.standard",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+gP},{token:"variableName",regex:Iue+"\\s*:(?![:=])"},{token:"variableName",regex:Iue},{token:"operatorKeyword",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"operatorKeyword",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"docString",regex:"'''",next:"qdoc"},{token:"docString",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"regexp",regex:"//",next:"heregex"},{token:"regexp",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"number",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"paren",regex:"[({[]"},{token:"paren",regex:"[)}\\]]",next:"key"},{token:"operatorKeyword",regex:"\\S+"},{token:"content",regex:"\\s+"}],heregex:[{token:"regexp",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"regexp",regex:"\\s*#{"},{token:"comment",regex:"\\s+(?:#.*)?"},{token:"regexp",regex:"\\S+"}],key:[{token:"operatorKeyword",regex:"[.?@!]+"},{token:"variableName",regex:Iue,next:"start"},{token:"content",regex:"",next:"start"}],comment:[{token:"docComment",regex:".*?\\*/",next:"start"},{token:"docComment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},mP],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},mP],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},mP],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},mP],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},mP],words:[{token:"string",regex:".*?\\]>",next:"key"},mP]};for(var b8e in cN){var Vae=cN[b8e];if(Vae.splice)for(var zae=0,OUr=Vae.length;zae!?^\/\|]/;function S4t(e,t,n){return t.tokenize=n,n(e,t)}function qKe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if(/[\[\]{}\(\),\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1),null;if(/\d/.test(r))return e.eatWhile(/[\w\.]/),"number";if(r=="\\")return e.eat("\\"),e.eat(/./),"number";if(r=="/"&&e.eat("*"))return S4t(e,t,RUr);if(r==";"&&e.match(/ *\( *\(/))return S4t(e,t,IUr);if(r==";"&&!t.inParams)return e.skipToEnd(),"comment";if(r=='"')return e.eat(/"/),"keyword";if(r=="$")return e.eatWhile(/[$_a-z0-9A-Z\.:]/),O4t&&O4t.propertyIsEnumerable(e.current().toLowerCase())?"keyword":(t.beforeParams=!0,"builtin");if(r=="%")return e.eatWhile(/[^,\s()]/),t.beforeParams=!0,"string";if(_4t.test(r))return e.eatWhile(_4t),"operator";e.eatWhile(/[\w\$_{}]/);var o=e.current().toLowerCase();return y4t&&y4t.propertyIsEnumerable(o)?"keyword":C4t&&C4t.propertyIsEnumerable(o)?(t.beforeParams=!0,"keyword"):null}function RUr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=qKe;break}n=r=="*"}return"comment"}function IUr(e,t){for(var n=0,r;r=e.next();){if(r==";"&&n==2){t.tokenize=qKe;break}r==")"?n++:r!=" "&&(n=0)}return"meta"}const MUr={name:"mirc",startState:function(){return{tokenize:qKe,beforeParams:!1,inParams:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}},PUr=Object.freeze(Object.defineProperty({__proto__:null,mirc:MUr},Symbol.toStringTag,{value:"Module"}));var L4t="[a-zA-Z\\$][a-zA-Z0-9\\$]*",FUr="(?:\\d+)",g5n="(?:\\.\\d+|\\d+\\.\\d*|\\d+)",NUr="(?:\\.\\w+|\\w+\\.\\w*|\\w+)",m5n="(?:`(?:`?"+g5n+")?)",UUr=new RegExp("(?:"+FUr+"(?:\\^\\^"+NUr+m5n+"?(?:\\*\\^[+-]?\\d+)?))"),jUr=new RegExp("(?:"+g5n+m5n+"?(?:\\*\\^[+-]?\\d+)?)"),WUr=new RegExp("(?:`?)(?:"+L4t+")(?:`(?:"+L4t+"))*(?:`?)");function KKe(e,t){var n;return n=e.next(),n==='"'?(t.tokenize=VUr,t.tokenize(e,t)):n==="("&&e.eat("*")?(t.commentLevel++,t.tokenize=zUr,t.tokenize(e,t)):(e.backUp(1),e.match(UUr,!0,!1)||e.match(jUr,!0,!1)?"number":e.match(/(?:In|Out)\[[0-9]*\]/,!0,!1)?"atom":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,!0,!1)?"meta":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,!0,!1)?"string.special":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/,!0,!1)||e.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)?"variableName.special":e.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/,!0,!1)?"character":e.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":e.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/,!0,!1)?"variableName.constant":e.match(WUr,!0,!1)?"keyword":e.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,!0,!1)?"operator":(e.next(),"error"))}function VUr(e,t){for(var n,r=!1,o=!1;(n=e.next())!=null;){if(n==='"'&&!o){r=!0;break}o=!o&&n==="\\"}return r&&!o&&(t.tokenize=KKe),"string"}function zUr(e,t){for(var n,r;t.commentLevel>0&&(r=e.next())!=null;)n==="("&&r==="*"&&t.commentLevel++,n==="*"&&r===")"&&t.commentLevel--,n=r;return t.commentLevel<=0&&(t.tokenize=KKe),"comment"}const HUr={name:"mathematica",startState:function(){return{tokenize:KKe,commentLevel:0}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{block:{open:"(*",close:"*)"}}}},$Ur=Object.freeze(Object.defineProperty({__proto__:null,mathematica:HUr},Symbol.toStringTag,{value:"Module"}));function JKe(e){for(var t={},n=e.split(" "),r=0;r+\-\/^\[\]]/,YUr=/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/,CU=/[0-9]/,p5n=/[_a-zA-Z]/;function ZUr(e,t){return e.skipToEnd(),t.tokenize=null,"comment"}function qUr(e,t){for(var n=!1,r;r=e.next();){if(n&&r=="/"){t.tokenize=null;break}n=r=="*"}return"comment"}function KUr(e,t){for(var n=!1,r;(r=e.next())!=null;){if(r=='"'&&!n){t.tokenize=null,t.sol=!1;break}n=!n&&r=="\\"}return"string"}function JUr(e,t){for(e.eatWhile(CU);e.eat(CU)||e.eat(p5n););var n=e.current();return t.sol&&(n=="package"||n=="model"||n=="when"||n=="connector")?t.level++:t.sol&&n=="end"&&t.level>0&&t.level--,t.tokenize=null,t.sol=!1,k5n.propertyIsEnumerable(n)?"keyword":v5n.propertyIsEnumerable(n)?"builtin":A5n.propertyIsEnumerable(n)?"atom":"variable"}function ejr(e,t){for(;e.eat(/[^']/););return t.tokenize=null,t.sol=!1,e.eat("'")?"variable":"error"}function tjr(e,t){return e.eatWhile(CU),e.eat(".")&&e.eatWhile(CU),(e.eat("e")||e.eat("E"))&&(e.eat("-")||e.eat("+"),e.eatWhile(CU)),t.tokenize=null,t.sol=!1,"number"}const njr={name:"modelica",startState:function(){return{tokenize:null,level:0,sol:!0}},token:function(e,t){if(t.tokenize!=null)return t.tokenize(e,t);if(e.sol()&&(t.sol=!0),e.eatSpace())return t.tokenize=null,null;var n=e.next();if(n=="/"&&e.eat("/"))t.tokenize=ZUr;else if(n=="/"&&e.eat("*"))t.tokenize=qUr;else{if(YUr.test(n+e.peek()))return e.next(),t.tokenize=null,"operator";if(GUr.test(n))return t.tokenize=null,"operator";if(p5n.test(n))t.tokenize=JUr;else if(n=="'"&&e.peek()&&e.peek()!="'")t.tokenize=ejr;else if(n=='"')t.tokenize=KUr;else if(CU.test(n))t.tokenize=tjr;else return t.tokenize=null,"error"}return t.tokenize(e,t)},indent:function(e,t,n){if(e.tokenize!=null)return null;var r=e.level;return/(algorithm)/.test(t)&&r--,/(equation)/.test(t)&&r--,/(initial algorithm)/.test(t)&&r--,/(initial equation)/.test(t)&&r--,/(end)/.test(t)&&r--,r>0?n.unit*r:0},languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:XUr}},ijr=Object.freeze(Object.defineProperty({__proto__:null,modelica:njr},Symbol.toStringTag,{value:"Module"}));function b5n(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var rjr=new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"),ojr=new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"),sjr=new RegExp("^[\\.,:]"),ajr=new RegExp("[()]"),ljr=new RegExp("^[%A-Za-z][A-Za-z0-9]*"),cjr=["break","close","do","else","for","goto","halt","hang","if","job","kill","lock","merge","new","open","quit","read","set","tcommit","trollback","tstart","use","view","write","xecute","b","c","d","e","f","g","h","i","j","k","l","m","n","o","q","r","s","tc","tro","ts","u","v","w","x"],djr=["\\$ascii","\\$char","\\$data","\\$ecode","\\$estack","\\$etrap","\\$extract","\\$find","\\$fnumber","\\$get","\\$horolog","\\$io","\\$increment","\\$job","\\$justify","\\$length","\\$name","\\$next","\\$order","\\$piece","\\$qlength","\\$qsubscript","\\$query","\\$quit","\\$random","\\$reverse","\\$select","\\$stack","\\$test","\\$text","\\$translate","\\$view","\\$x","\\$y","\\$a","\\$c","\\$d","\\$e","\\$ec","\\$es","\\$et","\\$f","\\$fn","\\$g","\\$h","\\$i","\\$j","\\$l","\\$n","\\$na","\\$o","\\$p","\\$q","\\$ql","\\$qs","\\$r","\\$re","\\$s","\\$st","\\$t","\\$tr","\\$v","\\$z"],ujr=b5n(djr),hjr=b5n(cjr);function fjr(e,t){e.sol()&&(t.label=!0,t.commandMode=0);var n=e.peek();return n==" "||n==" "?(t.label=!1,t.commandMode==0?t.commandMode=1:(t.commandMode<0||t.commandMode==2)&&(t.commandMode=0)):n!="."&&t.commandMode>0&&(n==":"?t.commandMode=-1:t.commandMode=2),(n==="("||n===" ")&&(t.label=!1),n===";"?(e.skipToEnd(),"comment"):e.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)?"number":n=='"'?e.skipTo('"')?(e.next(),"string"):(e.skipToEnd(),"error"):e.match(ojr)||e.match(rjr)?"operator":e.match(sjr)?null:ajr.test(n)?(e.next(),"bracket"):t.commandMode>0&&e.match(hjr)?"controlKeyword":e.match(ujr)?"builtin":e.match(ljr)?"variable":n==="$"||n==="^"?(e.next(),"builtin"):n==="@"?(e.next(),"string.special"):/[\w%]/.test(n)?(e.eatWhile(/[\w%]/),"variable"):(e.next(),"error")}const gjr={name:"mumps",startState:function(){return{label:!1,commandMode:0}},token:function(e,t){var n=fjr(e,t);return t.label?"tag":n}},mjr=Object.freeze(Object.defineProperty({__proto__:null,mumps:gjr},Symbol.toStringTag,{value:"Module"}));var w5n=["From","Sender","Reply-To","To","Cc","Bcc","Message-ID","In-Reply-To","References","Resent-From","Resent-Sender","Resent-To","Resent-Cc","Resent-Bcc","Resent-Message-ID","Return-Path","Received"],O5n=["Date","Subject","Comments","Keywords","Resent-Date"],kjr=/^[ \t]/,vjr=/^From /,Ajr=new RegExp("^("+w5n.join("|")+"): "),pjr=new RegExp("^("+O5n.join("|")+"): "),bjr=/^[^:]+:/,wjr=/^[^ ]+@[^ ]+/,Ojr=/^.*?(?=[^ ]+?@[^ ]+)/,yjr=/^<.*?>/,Cjr=/^.*?(?=<.*>)/;function _jr(e){return e==="Subject"?"header":"string"}function Sjr(e,t){if(e.sol()){if(t.inSeparator=!1,t.inHeader&&e.match(kjr))return null;if(t.inHeader=!1,t.header=null,e.match(vjr))return t.inHeaders=!0,t.inSeparator=!0,"atom";var n,r=!1;return(n=e.match(pjr))||(r=!0)&&(n=e.match(Ajr))?(t.inHeaders=!0,t.inHeader=!0,t.emailPermitted=r,t.header=n[1],"atom"):t.inHeaders&&(n=e.match(bjr))?(t.inHeader=!0,t.emailPermitted=!0,t.header=n[1],"atom"):(t.inHeaders=!1,e.skipToEnd(),null)}if(t.inSeparator)return e.match(wjr)?"link":(e.match(Ojr)||e.skipToEnd(),"atom");if(t.inHeader){var o=_jr(t.header);if(t.emailPermitted){if(e.match(yjr))return o+" link";if(e.match(Cjr))return o}return e.skipToEnd(),o}return e.skipToEnd(),null}const Ljr={name:"mbox",startState:function(){return{inSeparator:!1,inHeader:!1,emailPermitted:!1,header:null,inHeaders:!1}},token:Sjr,blankLine:function(e){e.inHeaders=e.inSeparator=e.inHeader=!1},languageData:{autocomplete:w5n.concat(O5n)}},xjr=Object.freeze(Object.defineProperty({__proto__:null,mbox:Ljr},Symbol.toStringTag,{value:"Module"}));function eJe(e){for(var t={},n=e.split(" "),r=0;r*\/]/.test(r)?f4(null,"select-op"):/[;{}:\[\]]/.test(r)?f4(null,r):(e.eatWhile(/[\w\\\-]/),f4("variable","variable"))}function x4t(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r=="/"){t.tokenize=Kpe;break}n=r=="*"}return f4("comment","comment")}function E4t(e,t){for(var n=0,r;(r=e.next())!=null;){if(n>=2&&r==">"){t.tokenize=Kpe;break}n=r=="-"?n+1:0}return f4("comment","comment")}function Djr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null&&!(o==e&&!r);)r=!r&&o=="\\";return r||(n.tokenize=Kpe),f4("string","string")}}const Bjr={name:"nginx",startState:function(){return{tokenize:Kpe,baseIndent:0,stack:[]}},token:function(e,t){if(e.eatSpace())return null;Fx=null;var n=t.tokenize(e,t),r=t.stack[t.stack.length-1];return Fx=="hash"&&r=="rule"?n="atom":n=="variable"&&(r=="rule"?n="number":(!r||r=="@media{")&&(n="tag")),r=="rule"&&/^[\{\};]$/.test(Fx)&&t.stack.pop(),Fx=="{"?r=="@media"?t.stack[t.stack.length-1]="@media{":t.stack.push("{"):Fx=="}"?t.stack.pop():Fx=="@media"?t.stack.push("@media"):r=="{"&&Fx!="comment"&&t.stack.push("rule"),n},indent:function(e,t,n){var r=e.stack.length;return/^\}/.test(t)&&(r-=e.stack[e.stack.length-1]=="rule"?2:1),e.baseIndent+r*n.unit},languageData:{indentOnInput:/^\s*\}$/}},Rjr=Object.freeze(Object.defineProperty({__proto__:null,nginx:Bjr},Symbol.toStringTag,{value:"Module"})),Ijr=jKe({start:[{regex:/(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/,token:"number"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/`(?:[^\\`]|\\.)*`?/,token:"string"},{regex:/^\s*(?:\!(addincludedir|addplugindir|appendfile|assert|cd|define|delfile|echo|error|execute|finalize|getdllversion|gettlbversion|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|uninstfinalize|verbose|warning))\b/i,token:"keyword"},{regex:/^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:\!(else|endif|macroend))\b/i,token:"keyword",dedent:!0},{regex:/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Target|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/i,token:"keyword"},{regex:/^\s*(?:Function|PageEx|Section(?:Group)?)\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/i,token:"keyword",dedent:!0},{regex:/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/i,token:"atom"},{regex:/\b(?:admin|all|amd64-unicode|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|x-86-(ansi|unicode)|zlib)\b/i,token:"builtin"},{regex:/\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:2|3|4|5|Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/i,token:"variable-2",indent:!0},{regex:/\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/i,token:"keyword",dedent:!0},{regex:/\$\{(?:RunningX64)\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:Disable|Enable)X64FSRedirection\}/i,token:"keyword",dedent:!0},{regex:/(#|;).*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/\$\w[\w\.]*/,token:"variable"},{regex:/\${[\!\w\.:-]+}/,token:"variableName.constant"},{regex:/\$\([\!\w\.:-]+\)/,token:"atom"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],languageData:{name:"nsis",indentOnInput:/^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/i,commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}}),Mjr=Object.freeze(Object.defineProperty({__proto__:null,nsis:Ijr},Symbol.toStringTag,{value:"Module"}));var Ps={PRE_SUBJECT:0,WRITING_SUB_URI:1,WRITING_BNODE_URI:2,PRE_PRED:3,WRITING_PRED_URI:4,PRE_OBJ:5,WRITING_OBJ_URI:6,WRITING_OBJ_BNODE:7,WRITING_OBJ_LITERAL:8,WRITING_LIT_LANG:9,WRITING_LIT_TYPE:10,POST_OBJ:11,ERROR:12};function $2(e,t){var n=e.location,r;n==Ps.PRE_SUBJECT&&t=="<"?r=Ps.WRITING_SUB_URI:n==Ps.PRE_SUBJECT&&t=="_"?r=Ps.WRITING_BNODE_URI:n==Ps.PRE_PRED&&t=="<"?r=Ps.WRITING_PRED_URI:n==Ps.PRE_OBJ&&t=="<"?r=Ps.WRITING_OBJ_URI:n==Ps.PRE_OBJ&&t=="_"?r=Ps.WRITING_OBJ_BNODE:n==Ps.PRE_OBJ&&t=='"'?r=Ps.WRITING_OBJ_LITERAL:n==Ps.WRITING_SUB_URI&&t==">"||n==Ps.WRITING_BNODE_URI&&t==" "?r=Ps.PRE_PRED:n==Ps.WRITING_PRED_URI&&t==">"?r=Ps.PRE_OBJ:n==Ps.WRITING_OBJ_URI&&t==">"||n==Ps.WRITING_OBJ_BNODE&&t==" "||n==Ps.WRITING_OBJ_LITERAL&&t=='"'||n==Ps.WRITING_LIT_LANG&&t==" "||n==Ps.WRITING_LIT_TYPE&&t==">"?r=Ps.POST_OBJ:n==Ps.WRITING_OBJ_LITERAL&&t=="@"?r=Ps.WRITING_LIT_LANG:n==Ps.WRITING_OBJ_LITERAL&&t=="^"?r=Ps.WRITING_LIT_TYPE:t==" "&&(n==Ps.PRE_SUBJECT||n==Ps.PRE_PRED||n==Ps.PRE_OBJ||n==Ps.POST_OBJ)?r=n:n==Ps.POST_OBJ&&t=="."?r=Ps.PRE_SUBJECT:r=Ps.ERROR,e.location=r}const Pjr={name:"ntriples",startState:function(){return{location:Ps.PRE_SUBJECT,uris:[],anchors:[],bnodes:[],langs:[],types:[]}},token:function(e,t){var n=e.next();if(n=="<"){$2(t,n);var r="";return e.eatWhile(function(d){return d!="#"&&d!=">"?(r+=d,!0):!1}),t.uris.push(r),e.match("#",!1)||(e.next(),$2(t,">")),"variable"}if(n=="#"){var o="";return e.eatWhile(function(d){return d!=">"&&d!=" "?(o+=d,!0):!1}),t.anchors.push(o),"url"}if(n==">")return $2(t,">"),"variable";if(n=="_"){$2(t,n);var s="";return e.eatWhile(function(d){return d!=" "?(s+=d,!0):!1}),t.bnodes.push(s),e.next(),$2(t," "),"builtin"}if(n=='"')return $2(t,n),e.eatWhile(function(d){return d!='"'}),e.next(),e.peek()!="@"&&e.peek()!="^"&&$2(t,'"'),"string";if(n=="@"){$2(t,"@");var a="";return e.eatWhile(function(d){return d!=" "?(a+=d,!0):!1}),t.langs.push(a),e.next(),$2(t," "),"string.special"}if(n=="^"){e.next(),$2(t,"^");var l="";return e.eatWhile(function(d){return d!=">"?(l+=d,!0):!1}),t.types.push(l),e.next(),$2(t,">"),"variable"}n==" "&&$2(t,n),n=="."&&$2(t,n)}},Fjr=Object.freeze(Object.defineProperty({__proto__:null,ntriples:Pjr},Symbol.toStringTag,{value:"Module"}));function tJe(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var Njr=new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"),Ujr=new RegExp("^[\\(\\[\\{\\},:=;\\.]"),jjr=new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"),Wjr=new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"),Vjr=new RegExp("^((>>=)|(<<=))"),zjr=new RegExp("^[\\]\\)]"),Hjr=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*"),$jr=tJe(["error","eval","function","abs","acos","atan","asin","cos","cosh","exp","log","prod","sum","log10","max","min","sign","sin","sinh","sqrt","tan","reshape","break","zeros","default","margin","round","ones","rand","syn","ceil","floor","size","clear","zeros","eye","mean","std","cov","det","eig","inv","norm","rank","trace","expm","logm","sqrtm","linspace","plot","title","xlabel","ylabel","legend","text","grid","meshgrid","mesh","num2str","fft","ifft","arrayfun","cellfun","input","fliplr","flipud","ismember"]),Xjr=tJe(["return","case","switch","else","elseif","end","endif","endfunction","if","otherwise","do","for","while","try","catch","classdef","properties","events","methods","global","persistent","endfor","endwhile","printf","sprintf","disp","until","continue","pkg"]);function y5n(e,t){return!e.sol()&&e.peek()==="'"?(e.next(),t.tokenize=_U,"operator"):(t.tokenize=_U,_U(e,t))}function Gjr(e,t){return e.match(/^.*%}/)?(t.tokenize=_U,"comment"):(e.skipToEnd(),"comment")}function _U(e,t){if(e.eatSpace())return null;if(e.match("%{"))return t.tokenize=Gjr,e.skipToEnd(),"comment";if(e.match(/^[%#]/))return e.skipToEnd(),"comment";if(e.match(/^[0-9\.+-]/,!1)){if(e.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/))return e.tokenize=_U,"number";if(e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/))return"number"}if(e.match(tJe(["nan","NaN","inf","Inf"])))return"number";var n=e.match(/^"(?:[^"]|"")*("|$)/)||e.match(/^'(?:[^']|'')*('|$)/);return n?n[1]?"string":"error":e.match(Xjr)?"keyword":e.match($jr)?"builtin":e.match(Hjr)?"variable":e.match(Njr)||e.match(jjr)?"operator":e.match(Ujr)||e.match(Wjr)||e.match(Vjr)?null:e.match(zjr)?(t.tokenize=y5n,null):(e.next(),"error")}const Yjr={name:"octave",startState:function(){return{tokenize:_U}},token:function(e,t){var n=t.tokenize(e,t);return(n==="number"||n==="variable")&&(t.tokenize=y5n),n},languageData:{commentTokens:{line:"%"}}},Zjr=Object.freeze(Object.defineProperty({__proto__:null,octave:Yjr},Symbol.toStringTag,{value:"Module"}));function die(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var qjr=/[\^@!\|<>#~\.\*\-\+\\/,=]/,Kjr=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,Jjr=/(:::)|(\.\.\.)|(=<:)|(>=:)/,C5n=["in","then","else","of","elseof","elsecase","elseif","catch","finally","with","require","prepare","import","export","define","do"],_5n=["end"],eWr=die(["true","false","nil","unit"]),tWr=die(["andthen","at","attr","declare","feat","from","lex","mod","div","mode","orelse","parser","prod","prop","scanner","self","syn","token"]),nWr=die(["local","proc","fun","case","class","if","cond","or","dis","choice","not","thread","try","raise","lock","for","suchthat","meth","functor"]),S5n=die(C5n),L5n=die(_5n);function YB(e,t){if(e.eatSpace())return null;if(e.match(/[{}]/))return"bracket";if(e.match("[]"))return"keyword";if(e.match(Jjr)||e.match(Kjr))return"operator";if(e.match(eWr))return"atom";var n=e.match(nWr);if(n)return t.doInCurrentLine?t.doInCurrentLine=!1:t.currentIndent++,n[0]=="proc"||n[0]=="fun"?t.tokenize=oWr:n[0]=="class"?t.tokenize=iWr:n[0]=="meth"&&(t.tokenize=rWr),"keyword";if(e.match(S5n)||e.match(tWr))return"keyword";if(e.match(L5n))return t.currentIndent--,"keyword";var r=e.next();if(r=='"'||r=="'")return t.tokenize=sWr(r),t.tokenize(e,t);if(/[~\d]/.test(r)){if(r=="~")if(/^[0-9]/.test(e.peek())){if(e.next()=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return"number"}else return null;return r=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)?"number":null}return r=="%"?(e.skipToEnd(),"comment"):r=="/"&&e.eat("*")?(t.tokenize=T4t,T4t(e,t)):qjr.test(r)?"operator":(e.eatWhile(/\w/),"variable")}function iWr(e,t){return e.eatSpace()?null:(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),t.tokenize=YB,"type")}function rWr(e,t){return e.eatSpace()?null:(e.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),t.tokenize=YB,"def")}function oWr(e,t){return e.eatSpace()?null:!t.hasPassedFirstStage&&e.eat("{")?(t.hasPassedFirstStage=!0,"bracket"):t.hasPassedFirstStage?(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),t.hasPassedFirstStage=!1,t.tokenize=YB,"def"):(t.tokenize=YB,null)}function T4t(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=YB;break}n=r=="*"}return"comment"}function sWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=YB),"string"}}function aWr(){var e=C5n.concat(_5n);return new RegExp("[\\[\\]]|("+e.join("|")+")$")}const lWr={name:"oz",startState:function(){return{tokenize:YB,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(e,t){return e.sol()&&(t.doInCurrentLine=0),t.tokenize(e,t)},indent:function(e,t,n){var r=t.replace(/^\s+|\s+$/g,"");return r.match(L5n)||r.match(S5n)||r.match(/(\[])/)?n.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*n.unit},languageData:{indentOnInut:aWr(),commentTokens:{line:"%",block:{open:"/*",close:"*/"}}}},cWr=Object.freeze(Object.defineProperty({__proto__:null,oz:lWr},Symbol.toStringTag,{value:"Module"}));function dWr(e){for(var t={},n=e.split(" "),r=0;r!?|\/]/;function fWr(e,t){var n=e.next();if(n=="#"&&t.startOfLine)return e.skipToEnd(),"meta";if(n=='"'||n=="'")return t.tokenize=gWr(n),t.tokenize(e,t);if(n=="("&&e.eat("*"))return t.tokenize=D4t,D4t(e,t);if(n=="{")return t.tokenize=B4t,B4t(e,t);if(/[\[\]\(\),;\:\.]/.test(n))return null;if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"&&e.eat("/"))return e.skipToEnd(),"comment";if(Q4t.test(n))return e.eatWhile(Q4t),"operator";e.eatWhile(/[\w\$_]/);var r=e.current().toLowerCase();return uWr.propertyIsEnumerable(r)?"keyword":hWr.propertyIsEnumerable(r)?"atom":"variable"}function gWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=null),"string"}}function D4t(e,t){for(var n=!1,r;r=e.next();){if(r==")"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function B4t(e,t){for(var n;n=e.next();)if(n=="}"){t.tokenize=null;break}return"comment"}const mWr={name:"pascal",startState:function(){return{tokenize:null}},token:function(e,t){if(e.eatSpace())return null;var n=(t.tokenize||fWr)(e,t);return n=="comment"||n=="meta",n},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{block:{open:"(*",close:"*)"}}}},kWr=Object.freeze(Object.defineProperty({__proto__:null,pascal:mWr},Symbol.toStringTag,{value:"Module"}));function $f(e,t){return e.string.charAt(e.pos+(t||0))}function R4t(e,t){if(t){var n=e.pos-t;return e.string.substr(n>=0?n:0,t)}else return e.string.substr(0,e.pos-1)}function O8e(e,t){var n=e.string.length,r=n-e.pos+1;return e.string.substr(e.pos,t&&t=(r=e.string.length-1)?e.pos=r:e.pos=n}var q$={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},bl="string.special",wl=/[goseximacplud]/;function fo(e,t,n,r,o){return t.chain=null,t.style=null,t.tail=null,t.tokenize=function(s,a){for(var l=!1,d,u=0;d=s.next();){if(d===n[u]&&!l)return n[++u]!==void 0?(a.chain=n[u],a.style=r,a.tail=o):o&&s.eatWhile(o),a.tokenize=ome,r;l=!l&&d=="\\"}return r},t.tokenize(e,t)}function y8e(e,t,n){return t.tokenize=function(r,o){return r.string==n&&(o.tokenize=ome),r.skipToEnd(),"string"},t.tokenize(e,t)}function ome(e,t){if(e.eatSpace())return null;if(t.chain)return fo(e,t,t.chain,t.style,t.tail);if(e.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(e.match(/^<<(?=[_a-zA-Z])/))return e.eatWhile(/\w/),y8e(e,t,e.current().substr(2));if(e.sol()&&e.match(/^\=item(?!\w)/))return y8e(e,t,"=cut");var n=e.next();if(n=='"'||n=="'"){if(R4t(e,3)=="<<"+n){var r=e.pos;e.eatWhile(/\w/);var o=e.current().substr(1);if(o&&e.eat(n))return y8e(e,t,o);e.pos=r}return fo(e,t,[n],"string")}if(n=="q"){var s=$f(e,-2);if(!(s&&/\w/.test(s))){if(s=$f(e,0),s=="x"){if(s=$f(e,1),s=="(")return Ld(e,2),fo(e,t,[")"],bl,wl);if(s=="[")return Ld(e,2),fo(e,t,["]"],bl,wl);if(s=="{")return Ld(e,2),fo(e,t,["}"],bl,wl);if(s=="<")return Ld(e,2),fo(e,t,[">"],bl,wl);if(/[\^'"!~\/]/.test(s))return Ld(e,1),fo(e,t,[e.eat(s)],bl,wl)}else if(s=="q"){if(s=$f(e,1),s=="(")return Ld(e,2),fo(e,t,[")"],"string");if(s=="[")return Ld(e,2),fo(e,t,["]"],"string");if(s=="{")return Ld(e,2),fo(e,t,["}"],"string");if(s=="<")return Ld(e,2),fo(e,t,[">"],"string");if(/[\^'"!~\/]/.test(s))return Ld(e,1),fo(e,t,[e.eat(s)],"string")}else if(s=="w"){if(s=$f(e,1),s=="(")return Ld(e,2),fo(e,t,[")"],"bracket");if(s=="[")return Ld(e,2),fo(e,t,["]"],"bracket");if(s=="{")return Ld(e,2),fo(e,t,["}"],"bracket");if(s=="<")return Ld(e,2),fo(e,t,[">"],"bracket");if(/[\^'"!~\/]/.test(s))return Ld(e,1),fo(e,t,[e.eat(s)],"bracket")}else if(s=="r"){if(s=$f(e,1),s=="(")return Ld(e,2),fo(e,t,[")"],bl,wl);if(s=="[")return Ld(e,2),fo(e,t,["]"],bl,wl);if(s=="{")return Ld(e,2),fo(e,t,["}"],bl,wl);if(s=="<")return Ld(e,2),fo(e,t,[">"],bl,wl);if(/[\^'"!~\/]/.test(s))return Ld(e,1),fo(e,t,[e.eat(s)],bl,wl)}else if(/[\^'"!~\/(\[{<]/.test(s)){if(s=="(")return Ld(e,1),fo(e,t,[")"],"string");if(s=="[")return Ld(e,1),fo(e,t,["]"],"string");if(s=="{")return Ld(e,1),fo(e,t,["}"],"string");if(s=="<")return Ld(e,1),fo(e,t,[">"],"string");if(/[\^'"!~\/]/.test(s))return fo(e,t,[e.eat(s)],"string")}}}if(n=="m"){var s=$f(e,-2);if(!(s&&/\w/.test(s))&&(s=e.eat(/[(\[{<\^'"!~\/]/),s)){if(/[\^'"!~\/]/.test(s))return fo(e,t,[s],bl,wl);if(s=="(")return fo(e,t,[")"],bl,wl);if(s=="[")return fo(e,t,["]"],bl,wl);if(s=="{")return fo(e,t,["}"],bl,wl);if(s=="<")return fo(e,t,[">"],bl,wl)}}if(n=="s"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s))return s=="["?fo(e,t,["]","]"],bl,wl):s=="{"?fo(e,t,["}","}"],bl,wl):s=="<"?fo(e,t,[">",">"],bl,wl):s=="("?fo(e,t,[")",")"],bl,wl):fo(e,t,[s,s],bl,wl)}if(n=="y"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s))return s=="["?fo(e,t,["]","]"],bl,wl):s=="{"?fo(e,t,["}","}"],bl,wl):s=="<"?fo(e,t,[">",">"],bl,wl):s=="("?fo(e,t,[")",")"],bl,wl):fo(e,t,[s,s],bl,wl)}if(n=="t"){var s=/[\/>\]})\w]/.test($f(e,-2));if(!s&&(s=e.eat("r"),s&&(s=e.eat(/[(\[{<\^'"!~\/]/),s)))return s=="["?fo(e,t,["]","]"],bl,wl):s=="{"?fo(e,t,["}","}"],bl,wl):s=="<"?fo(e,t,[">",">"],bl,wl):s=="("?fo(e,t,[")",")"],bl,wl):fo(e,t,[s,s],bl,wl)}if(n=="`")return fo(e,t,[n],"builtin");if(n=="/")return/~\s*$/.test(R4t(e))?fo(e,t,[n],bl,wl):"operator";if(n=="$"){var r=e.pos;if(e.eatWhile(/\d/)||e.eat("{")&&e.eatWhile(/\d/)&&e.eat("}"))return"builtin";e.pos=r}if(/[$@%]/.test(n)){var r=e.pos;if(e.eat("^")&&e.eat(/[A-Z]/)||!/[@$%&]/.test($f(e,-2))&&e.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var s=e.current();if(q$[s])return"builtin"}e.pos=r}if(/[$@%&]/.test(n)&&(e.eatWhile(/[\w$]/)||e.eat("{")&&e.eatWhile(/[\w$]/)&&e.eat("}"))){var s=e.current();return q$[s]?"builtin":"variable"}if(n=="#"&&$f(e,-2)!="$")return e.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(n)){var r=e.pos;if(e.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),q$[e.current()])return"operator";e.pos=r}if(n=="_"&&e.pos==1){if(O8e(e,6)=="_END__")return fo(e,t,["\0"],"comment");if(O8e(e,7)=="_DATA__")return fo(e,t,["\0"],"builtin");if(O8e(e,7)=="_C__")return fo(e,t,["\0"],"string")}if(/\w/.test(n)){var r=e.pos;if($f(e,-2)=="{"&&($f(e,0)=="}"||e.eatWhile(/\w/)&&$f(e,0)=="}"))return"string";e.pos=r}if(/[A-Z]/.test(n)){var a=$f(e,-2),r=e.pos;if(e.eatWhile(/[A-Z_]/),/[\da-z]/.test($f(e,0)))e.pos=r;else{var s=q$[e.current()];return s?(s[1]&&(s=s[0]),a!=":"?s==1?"keyword":s==2?"def":s==3?"atom":s==4?"operator":s==5?"builtin":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(n)){var a=$f(e,-2);e.eatWhile(/\w/);var s=q$[e.current()];return s?(s[1]&&(s=s[0]),a!=":"?s==1?"keyword":s==2?"def":s==3?"atom":s==4?"operator":s==5?"builtin":"meta":"meta"):"meta"}return null}const vWr={name:"perl",startState:function(){return{tokenize:ome,chain:null,style:null,tail:null}},token:function(e,t){return(t.tokenize||ome)(e,t)},languageData:{commentTokens:{line:"#"},wordChars:"$"}},AWr=Object.freeze(Object.defineProperty({__proto__:null,perl:vWr},Symbol.toStringTag,{value:"Module"}));function nJe(e){for(var t={},n=e.split(" "),r=0;r=&?:\/!|]/;function F4t(e,t,n){return t.tokenize=n,n(e,t)}function pWr(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=iJe;break}n=r=="*"}return"comment"}function bWr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return(s||!r)&&(n.tokenize=iJe),"error"}}function iJe(e,t){var n=e.next();return n=='"'||n=="'"?F4t(e,t,bWr(n)):/[\[\]{}\(\),;\.]/.test(n)?null:/\d/.test(n)?(e.eatWhile(/[\w\.]/),"number"):n=="/"?e.eat("*")?F4t(e,t,pWr):(e.eatWhile(Hae),"operator"):n=="-"?e.eat("-")?(e.skipToEnd(),"comment"):(e.eatWhile(Hae),"operator"):Hae.test(n)?(e.eatWhile(Hae),"operator"):(e.eatWhile(/[\w\$_]/),M4t&&M4t.propertyIsEnumerable(e.current().toUpperCase())&&!e.eat(")")&&!e.eat(".")?"keyword":I4t&&I4t.propertyIsEnumerable(e.current().toUpperCase())?"builtin":P4t&&P4t.propertyIsEnumerable(e.current().toUpperCase())?"type":"variable")}const wWr={name:"pig",startState:function(){return{tokenize:iJe,startOfLine:!0}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{autocomplete:(x5n+T5n+E5n).split(" ")}},OWr=Object.freeze(Object.defineProperty({__proto__:null,pig:wWr},Symbol.toStringTag,{value:"Module"}));function Fz(e,t){t=t||{};for(var n=t.prefix!==void 0?t.prefix:"^",r=t.suffix!==void 0?t.suffix:"\\b",o=0;o/,LWr=Fz([_Wr,SWr],{suffix:""}),xWr=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,EWr=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,TWr=/[A-Z]:|%|\?/i,QWr=Fz([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),DWr=Fz([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),BWr=Fz([TWr,QWr,DWr],{suffix:Q5n}),N4t={keyword:yWr,number:xWr,operator:LWr,builtin:BWr,punctuation:CWr,variable:EWr};function E8(e,t){var n=t.returnStack[t.returnStack.length-1];if(n&&n.shouldReturnFrom(t))return t.tokenize=n.tokenize,t.returnStack.pop(),t.tokenize(e,t);if(e.eatSpace())return null;if(e.eat("("))return t.bracketNesting+=1,"punctuation";if(e.eat(")"))return t.bracketNesting-=1,"punctuation";for(var r in N4t)if(e.match(N4t[r]))return r;var o=e.next();if(o==="'")return RWr(e,t);if(o==="$")return wFe(e,t);if(o==='"')return D5n(e,t);if(o==="<"&&e.eat("#"))return t.tokenize=U4t,U4t(e,t);if(o==="#")return e.skipToEnd(),"comment";if(o==="@"){var s=e.eat(/["']/);if(s&&e.eol())return t.tokenize=sme,t.startQuote=s[0],sme(e,t);if(e.eol())return"error";if(e.peek().match(/[({]/))return"punctuation";if(e.peek().match(bFe))return wFe(e,t)}return"error"}function RWr(e,t){for(var n;(n=e.peek())!=null;)if(e.next(),n==="'"&&!e.eat("'"))return t.tokenize=E8,"string";return"error"}function D5n(e,t){for(var n;(n=e.peek())!=null;){if(n==="$")return t.tokenize=IWr,"string";if(e.next(),n==="`"){e.next();continue}if(n==='"'&&!e.eat('"'))return t.tokenize=E8,"string"}return"error"}function IWr(e,t){return B5n(e,t,D5n)}function MWr(e,t){return t.tokenize=sme,t.startQuote='"',sme(e,t)}function PWr(e,t){return B5n(e,t,MWr)}function B5n(e,t,n){if(e.match("$(")){var r=t.bracketNesting;return t.returnStack.push({shouldReturnFrom:function(o){return o.bracketNesting===r},tokenize:n}),t.tokenize=E8,t.bracketNesting+=1,"punctuation"}else return e.next(),t.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:n}),t.tokenize=wFe,t.tokenize(e,t)}function U4t(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r==">"){t.tokenize=E8;break}n=r==="#"}return"comment"}function wFe(e,t){var n=e.peek();return e.eat("{")?(t.tokenize=j4t,j4t(e,t)):n!=null&&n.match(bFe)?(e.eatWhile(bFe),t.tokenize=E8,"variable"):(t.tokenize=E8,"error")}function j4t(e,t){for(var n;(n=e.next())!=null;)if(n==="}"){t.tokenize=E8;break}return"variable"}function sme(e,t){var n=t.startQuote;if(e.sol()&&e.match(new RegExp(n+"@")))t.tokenize=E8;else if(n==='"')for(;!e.eol();){var r=e.peek();if(r==="$")return t.tokenize=PWr,"string";e.next(),r==="`"&&e.next()}else e.skipToEnd();return"string"}const FWr={name:"powershell",startState:function(){return{returnStack:[],bracketNesting:0,tokenize:E8}},token:function(e,t){return t.tokenize(e,t)},languageData:{commentTokens:{line:"#",block:{open:"<#",close:"#>"}}}},NWr=Object.freeze(Object.defineProperty({__proto__:null,powerShell:FWr},Symbol.toStringTag,{value:"Module"})),UWr={name:"properties",token:function(e,t){var n=e.sol()||t.afterSection,r=e.eol();if(t.afterSection=!1,n&&(t.nextMultiline?(t.inMultiline=!0,t.nextMultiline=!1):t.position="def"),r&&!t.nextMultiline&&(t.inMultiline=!1,t.position="def"),n)for(;e.eatSpace(););var o=e.next();return n&&(o==="#"||o==="!"||o===";")?(t.position="comment",e.skipToEnd(),"comment"):n&&o==="["?(t.afterSection=!0,e.skipTo("]"),e.eat("]"),"header"):o==="="||o===":"?(t.position="quote",null):(o==="\\"&&t.position==="quote"&&e.eol()&&(t.nextMultiline=!0),t.position)},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}},jWr=Object.freeze(Object.defineProperty({__proto__:null,properties:UWr},Symbol.toStringTag,{value:"Module"}));function WWr(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var R5n=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],VWr=WWr(R5n),zWr=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*");function HWr(e){return e.eatSpace()?null:e.match("//")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(VWr)?"keyword":e.match(zWr)?"variable":(e.next(),null)}const $Wr={name:"protobuf",token:HWr,languageData:{autocomplete:R5n}},XWr=Object.freeze(Object.defineProperty({__proto__:null,protobuf:$Wr},Symbol.toStringTag,{value:"Module"}));var W4t={"{":"}","(":")","[":"]"};function GWr(e){if(typeof e!="object")return e;let t={};for(let n in e){let r=e[n];t[n]=r instanceof Array?r.slice():r}return t}let YWr=class I5n{constructor(t){this.indentUnit=t,this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=p6.startState(t),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken=""}copy(){var t=new I5n(this.indentUnit);return t.javaScriptLine=this.javaScriptLine,t.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,t.javaScriptArguments=this.javaScriptArguments,t.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,t.isInterpolating=this.isInterpolating,t.interpolationNesting=this.interpolationNesting,t.jsState=(p6.copyState||GWr)(this.jsState),t.restOfLine=this.restOfLine,t.isIncludeFiltered=this.isIncludeFiltered,t.isEach=this.isEach,t.lastTag=this.lastTag,t.isAttrs=this.isAttrs,t.attrsNest=this.attrsNest.slice(),t.inAttributeName=this.inAttributeName,t.attributeIsType=this.attributeIsType,t.attrValue=this.attrValue,t.indentOf=this.indentOf,t.indentToken=this.indentToken,t}};function ZWr(e,t){if(e.sol()&&(t.javaScriptLine=!1,t.javaScriptLineExcludesColon=!1),t.javaScriptLine){if(t.javaScriptLineExcludesColon&&e.peek()===":"){t.javaScriptLine=!1,t.javaScriptLineExcludesColon=!1;return}var n=p6.token(e,t.jsState);return e.eol()&&(t.javaScriptLine=!1),n||!0}}function qWr(e,t){if(t.javaScriptArguments){if(t.javaScriptArgumentsDepth===0&&e.peek()!=="("){t.javaScriptArguments=!1;return}if(e.peek()==="("?t.javaScriptArgumentsDepth++:e.peek()===")"&&t.javaScriptArgumentsDepth--,t.javaScriptArgumentsDepth===0){t.javaScriptArguments=!1;return}var n=p6.token(e,t.jsState);return n||!0}}function KWr(e){if(e.match(/^yield\b/))return"keyword"}function JWr(e){if(e.match(/^(?:doctype) *([^\n]+)?/))return"meta"}function M5n(e,t){if(e.match("#{"))return t.isInterpolating=!0,t.interpolationNesting=0,"punctuation"}function eVr(e,t){if(t.isInterpolating){if(e.peek()==="}"){if(t.interpolationNesting--,t.interpolationNesting<0)return e.next(),t.isInterpolating=!1,"punctuation"}else e.peek()==="{"&&t.interpolationNesting++;return p6.token(e,t.jsState)||!0}}function tVr(e,t){if(e.match(/^case\b/))return t.javaScriptLine=!0,"keyword"}function nVr(e,t){if(e.match(/^when\b/))return t.javaScriptLine=!0,t.javaScriptLineExcludesColon=!0,"keyword"}function iVr(e){if(e.match(/^default\b/))return"keyword"}function rVr(e,t){if(e.match(/^extends?\b/))return t.restOfLine="string","keyword"}function oVr(e,t){if(e.match(/^append\b/))return t.restOfLine="variable","keyword"}function sVr(e,t){if(e.match(/^prepend\b/))return t.restOfLine="variable","keyword"}function aVr(e,t){if(e.match(/^block\b *(?:(prepend|append)\b)?/))return t.restOfLine="variable","keyword"}function lVr(e,t){if(e.match(/^include\b/))return t.restOfLine="string","keyword"}function cVr(e,t){if(e.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&e.match("include"))return t.isIncludeFiltered=!0,"keyword"}function dVr(e,t){if(t.isIncludeFiltered){var n=P5n(e,t);return t.isIncludeFiltered=!1,t.restOfLine="string",n}}function uVr(e,t){if(e.match(/^mixin\b/))return t.javaScriptLine=!0,"keyword"}function hVr(e,t){if(e.match(/^\+([-\w]+)/))return e.match(/^\( *[-\w]+ *=/,!1)||(t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0),"variable";if(e.match("+#{",!1))return e.next(),t.mixinCallAfter=!0,M5n(e,t)}function fVr(e,t){if(t.mixinCallAfter)return t.mixinCallAfter=!1,e.match(/^\( *[-\w]+ *=/,!1)||(t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0),!0}function gVr(e,t){if(e.match(/^(if|unless|else if|else)\b/))return t.javaScriptLine=!0,"keyword"}function mVr(e,t){if(e.match(/^(- *)?(each|for)\b/))return t.isEach=!0,"keyword"}function kVr(e,t){if(t.isEach){if(e.match(/^ in\b/))return t.javaScriptLine=!0,t.isEach=!1,"keyword";if(e.sol()||e.eol())t.isEach=!1;else if(e.next()){for(;!e.match(/^ in\b/,!1)&&e.next(););return"variable"}}}function vVr(e,t){if(e.match(/^while\b/))return t.javaScriptLine=!0,"keyword"}function AVr(e,t){var n;if(n=e.match(/^(\w(?:[-:\w]*\w)?)\/?/))return t.lastTag=n[1].toLowerCase(),"tag"}function P5n(e,t){if(e.match(/^:([\w\-]+)/))return rJe(e,t),"atom"}function pVr(e,t){if(e.match(/^(!?=|-)/))return t.javaScriptLine=!0,"punctuation"}function bVr(e){if(e.match(/^#([\w-]+)/))return"builtin"}function wVr(e){if(e.match(/^\.([\w-]+)/))return"className"}function OVr(e,t){if(e.peek()=="(")return e.next(),t.isAttrs=!0,t.attrsNest=[],t.inAttributeName=!0,t.attrValue="",t.attributeIsType=!1,"punctuation"}function F5n(e,t){if(t.isAttrs){if(W4t[e.peek()]&&t.attrsNest.push(W4t[e.peek()]),t.attrsNest[t.attrsNest.length-1]===e.peek())t.attrsNest.pop();else if(e.eat(")"))return t.isAttrs=!1,"punctuation";if(t.inAttributeName&&e.match(/^[^=,\)!]+/))return(e.peek()==="="||e.peek()==="!")&&(t.inAttributeName=!1,t.jsState=p6.startState(2),t.lastTag==="script"&&e.current().trim().toLowerCase()==="type"?t.attributeIsType=!0:t.attributeIsType=!1),"attribute";var n=p6.token(e,t.jsState);if(t.attrsNest.length===0&&(n==="string"||n==="variable"||n==="keyword"))try{return Function("","var x "+t.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),t.inAttributeName=!0,t.attrValue="",e.backUp(e.current().length),F5n(e,t)}catch{}return t.attrValue+=e.current(),n||!0}}function yVr(e,t){if(e.match(/^&attributes\b/))return t.javaScriptArguments=!0,t.javaScriptArgumentsDepth=0,"keyword"}function CVr(e){if(e.sol()&&e.eatSpace())return"indent"}function _Vr(e,t){if(e.match(/^ *\/\/(-)?([^\n]*)/))return t.indentOf=e.indentation(),t.indentToken="comment","comment"}function SVr(e){if(e.match(/^: */))return"colon"}function LVr(e,t){if(e.match(/^(?:\| ?| )([^\n]+)/))return"string";if(e.match(/^(<[^\n]*)/,!1))return rJe(e,t),e.skipToEnd(),t.indentToken}function xVr(e,t){if(e.eat("."))return rJe(e,t),"dot"}function EVr(e){return e.next(),null}function rJe(e,t){t.indentOf=e.indentation(),t.indentToken="string"}function TVr(e,t){if(e.sol()&&(t.restOfLine=""),t.restOfLine){e.skipToEnd();var n=t.restOfLine;return t.restOfLine="",n}}function QVr(e){return new YWr(e)}function DVr(e){return e.copy()}function BVr(e,t){var n=TVr(e,t)||eVr(e,t)||dVr(e,t)||kVr(e,t)||F5n(e,t)||ZWr(e,t)||qWr(e,t)||fVr(e,t)||KWr(e)||JWr(e)||M5n(e,t)||tVr(e,t)||nVr(e,t)||iVr(e)||rVr(e,t)||oVr(e,t)||sVr(e,t)||aVr(e,t)||lVr(e,t)||cVr(e,t)||uVr(e,t)||hVr(e,t)||gVr(e,t)||mVr(e,t)||vVr(e,t)||AVr(e,t)||P5n(e,t)||pVr(e,t)||bVr(e)||wVr(e)||OVr(e,t)||yVr(e,t)||CVr(e)||LVr(e,t)||_Vr(e,t)||SVr(e)||xVr(e,t)||EVr(e);return n===!0?null:n}const RVr={startState:QVr,copyState:DVr,token:BVr},IVr=Object.freeze(Object.defineProperty({__proto__:null,pug:RVr},Symbol.toStringTag,{value:"Module"}));var OFe={},MVr=/({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;function Jpe(e,t){for(var n=t.split(" "),r=0;r.*/,!1),o=e.match(/(\s+)?[\w:_]+(\s+)?{/,!1),s=e.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/,!1),a=e.next();if(a==="$")return e.match(MVr)?t.continueString?"variableName.special":"variable":"error";if(t.continueString)return e.backUp(1),V4t(e,t);if(t.inDefinition){if(e.match(/(\s+)?[\w:_]+(\s+)?/))return"def";e.match(/\s+{/),t.inDefinition=!1}return t.inInclude?(e.match(/(\s+)?\S+(\s+)?/),t.inInclude=!1,"def"):e.match(/(\s+)?\w+\(/)?(e.backUp(1),"def"):r?(e.match(/(\s+)?\w+/),"tag"):n&&OFe.hasOwnProperty(n)?(e.backUp(1),e.match(/[\w]+/),e.match(/\s+\S+\s+{/,!1)&&(t.inDefinition=!0),n=="include"&&(t.inInclude=!0),OFe[n]):/(^|\s+)[A-Z][\w:_]+/.test(n)?(e.backUp(1),e.match(/(^|\s+)[A-Z][\w:_]+/),"def"):o?(e.match(/(\s+)?[\w:_]+/),"def"):s?(e.match(/(\s+)?[@]{1,2}/),"atom"):a=="#"?(e.skipToEnd(),"comment"):a=="'"||a=='"'?(t.pending=a,V4t(e,t)):a=="{"||a=="}"?"bracket":a=="/"?(e.match(/^[^\/]*\//),"string.special"):a.match(/[0-9]/)?(e.eatWhile(/[0-9]+/),"number"):a=="="?(e.peek()==">"&&e.next(),"operator"):(e.eatWhile(/[\w-]/),null)}const FVr={name:"puppet",startState:function(){var e={};return e.inDefinition=!1,e.inInclude=!1,e.continueString=!1,e.pending=!1,e},token:function(e,t){return e.eatSpace()?null:PVr(e,t)}},NVr=Object.freeze(Object.defineProperty({__proto__:null,puppet:FVr},Symbol.toStringTag,{value:"Module"}));var V7,UVr=WVr(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),jVr=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;function WVr(e){return new RegExp("^("+e.join("|")+")$")}function zW(e,t){var n=e.sol(),r=e.next();if(V7=null,n){if(r=="/")return(t.tokenize=VVr)(e,t);if(r=="\\")return e.eol()||/\s/.test(e.peek())?(e.skipToEnd(),/^\\\s*$/.test(e.current())?(t.tokenize=HVr)(e):t.tokenize=zW,"comment"):(t.tokenize=zW,"builtin")}if(/\s/.test(r))return e.peek()=="/"?(e.skipToEnd(),"comment"):"null";if(r=='"')return(t.tokenize=$Vr)(e,t);if(r=="`")return e.eatWhile(/[A-Za-z\d_:\/.]/),"macroName";if(r=="."&&/\d/.test(e.peek())||/\d/.test(r)){var o=null;return e.backUp(1),e.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)||e.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)||e.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)||e.match(/^\d+[ptuv]{1}/)?o="temporal":(e.match(/^0[NwW]{1}/)||e.match(/^0x[\da-fA-F]*/)||e.match(/^[01]+[b]{1}/)||e.match(/^\d+[chijn]{1}/)||e.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))&&(o="number"),o&&(!(r=e.peek())||jVr.test(r))?o:(e.next(),"error")}return/[A-Za-z]|\./.test(r)?(e.eatWhile(/[A-Za-z._\d]/),UVr.test(e.current())?"keyword":"variable"):/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(r)||/[{}\(\[\]\)]/.test(r)?null:"error"}function VVr(e,t){return e.skipToEnd(),/^\/\s*$/.test(e.current())?(t.tokenize=zVr)(e,t):t.tokenize=zW,"comment"}function zVr(e,t){var n=e.sol()&&e.peek()=="\\";return e.skipToEnd(),n&&/^\\\s*$/.test(e.current())&&(t.tokenize=zW),"comment"}function HVr(e){return e.skipToEnd(),"comment"}function $Vr(e,t){for(var n=!1,r,o=!1;r=e.next();){if(r=='"'&&!n){o=!0;break}n=!n&&r=="\\"}return o&&(t.tokenize=zW),"string"}function $ae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function C8e(e){e.indent=e.context.indent,e.context=e.context.prev}const XVr={name:"q",startState:function(){return{tokenize:zW,context:null,indent:0,col:0}},token:function(e,t){e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation());var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),V7=="(")$ae(t,")",e.column());else if(V7=="[")$ae(t,"]",e.column());else if(V7=="{")$ae(t,"}",e.column());else if(/[\]\}\)]/.test(V7)){for(;t.context&&t.context.type=="pattern";)C8e(t);t.context&&V7==t.context.type&&C8e(t)}else V7=="."&&t.context&&t.context.type=="pattern"?C8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?$ae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"/"}}},GVr=Object.freeze(Object.defineProperty({__proto__:null,q:XVr},Symbol.toStringTag,{value:"Module"}));function ebe(e){for(var t={},n=0;n=!&|~$:]/,gb;function yFe(e,t){gb=null;var n=e.next();if(n=="#")return e.skipToEnd(),"comment";if(n=="0"&&e.eat("x"))return e.eatWhile(/[\da-f]/i),"number";if(n=="."&&e.eat(/\d/))return e.match(/\d*(?:e[+\-]?\d+)?/),"number";if(/\d/.test(n))return e.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/),"number";if(n=="'"||n=='"')return t.tokenize=ezr(n),"string";if(n=="`")return e.match(/[^`]+`/),"string.special";if(n=="."&&e.match(/.(?:[.]|\d+)/))return"keyword";if(/[a-zA-Z\.]/.test(n)){e.eatWhile(/[\w\.]/);var r=e.current();return ZVr.propertyIsEnumerable(r)?"atom":KVr.propertyIsEnumerable(r)?(JVr.propertyIsEnumerable(r)&&!e.match(/\s*if(\s+|$)/,!1)&&(gb="block"),"keyword"):qVr.propertyIsEnumerable(r)?"builtin":"variable"}else return n=="%"?(e.skipTo("%")&&e.next(),"variableName.special"):n=="<"&&e.eat("-")||n=="<"&&e.match("<-")||n=="-"&&e.match(/>>?/)||n=="="&&t.ctx.argList?"operator":z4t.test(n)?(n=="$"||e.eatWhile(z4t),"operator"):/[\(\){}\[\];]/.test(n)?(gb=n,n==";"?"punctuation":null):null}function ezr(e){return function(t,n){if(t.eat("\\")){var r=t.next();return r=="x"?t.match(/^[a-f0-9]{2}/i):(r=="u"||r=="U")&&t.eat("{")&&t.skipTo("}")?t.next():r=="u"?t.match(/^[a-f0-9]{4}/i):r=="U"?t.match(/^[a-f0-9]{8}/i):/[0-7]/.test(r)&&t.match(/^[0-7]{1,2}/),"string.special"}else{for(var o;(o=t.next())!=null;){if(o==e){n.tokenize=yFe;break}if(o=="\\"){t.backUp(1);break}}return"string"}}}var H4t=1,_8e=2,S8e=4;function Xae(e,t,n){e.ctx={type:t,indent:e.indent,flags:0,column:n.column(),prev:e.ctx}}function $4t(e,t){var n=e.ctx;e.ctx={type:n.type,indent:n.indent,flags:n.flags|t,column:n.column,prev:n.prev}}function L8e(e){e.indent=e.ctx.indent,e.ctx=e.ctx.prev}const tzr={name:"r",startState:function(e){return{tokenize:yFe,ctx:{type:"top",indent:-e,flags:_8e},indent:0,afterIdent:!1}},token:function(e,t){if(e.sol()&&(t.ctx.flags&3||(t.ctx.flags|=_8e),t.ctx.flags&S8e&&L8e(t),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);return n!="comment"&&!(t.ctx.flags&_8e)&&$4t(t,H4t),(gb==";"||gb=="{"||gb=="}")&&t.ctx.type=="block"&&L8e(t),gb=="{"?Xae(t,"}",e):gb=="("?(Xae(t,")",e),t.afterIdent&&(t.ctx.argList=!0)):gb=="["?Xae(t,"]",e):gb=="block"?Xae(t,"block",e):gb==t.ctx.type?L8e(t):t.ctx.type=="block"&&n!="comment"&&$4t(t,S8e),t.afterIdent=n=="variable"||n=="keyword",n},indent:function(e,t,n){if(e.tokenize!=yFe)return 0;var r=t&&t.charAt(0),o=e.ctx,s=r==o.type;return o.flags&S8e&&(o=o.prev),o.type=="block"?o.indent+(r=="{"?0:n.unit):o.flags&H4t?o.column+(s?0:1):o.indent+(s?0:n.unit)},languageData:{wordChars:".",commentTokens:{line:"#"},autocomplete:N5n.concat(U5n,j5n)}},nzr=Object.freeze(Object.defineProperty({__proto__:null,r:tzr},Symbol.toStringTag,{value:"Module"}));var izr=/^-+$/,rzr=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /,ozr=/^[\w+.-]+@[\w.-]+/;const szr={name:"rpmchanges",token:function(e){return e.sol()&&(e.match(izr)||e.match(rzr))?"tag":e.match(ozr)?"string":(e.next(),null)}};var azr=/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/,lzr=/^[a-zA-Z0-9()]+:/,czr=/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/,dzr=/^%(ifnarch|ifarch|if)/,uzr=/^%(else|endif)/,hzr=/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/;const fzr={name:"rpmspec",startState:function(){return{controlFlow:!1,macroParameters:!1,section:!1}},token:function(e,t){var n=e.peek();if(n=="#")return e.skipToEnd(),"comment";if(e.sol()){if(e.match(lzr))return"header";if(e.match(czr))return"atom"}if(e.match(/^\$\w+/)||e.match(/^\$\{\w+\}/))return"def";if(e.match(uzr))return"keyword";if(e.match(dzr))return t.controlFlow=!0,"keyword";if(t.controlFlow){if(e.match(hzr))return"operator";if(e.match(/^(\d+)/))return"number";e.eol()&&(t.controlFlow=!1)}if(e.match(azr))return e.eol()&&(t.controlFlow=!1),"number";if(e.match(/^%[\w]+/))return e.match("(")&&(t.macroParameters=!0),"keyword";if(t.macroParameters){if(e.match(/^\d+/))return"number";if(e.match(")"))return t.macroParameters=!1,"keyword"}return e.match(/^%\{\??[\w \-\:\!]+\}/)?(e.eol()&&(t.controlFlow=!1),"def"):(e.next(),null)}},X4t=Object.freeze(Object.defineProperty({__proto__:null,rpmChanges:szr,rpmSpec:fzr},Symbol.toStringTag,{value:"Module"}));function oJe(e){for(var t={},n=0,r=e.length;n]/)?(e.eat(/[\<\>]/),"atom"):e.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":e.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(e.eatWhile(/[\w$\xa1-\uffff]/),e.eat(/[\?\!\=]/),"atom"):"operator";if(n=="@"&&e.match(/^@?[a-zA-Z_\xa1-\uffff]/))return e.eat("@"),e.eatWhile(/[\w\xa1-\uffff]/),"propertyName";if(n=="$")return e.eat(/[a-zA-Z_]/)?e.eatWhile(/[\w]/):e.eat(/\d/)?e.eat(/\d/):e.next(),"variableName.special";if(/[a-zA-Z_\xa1-\uffff]/.test(n))return e.eatWhile(/[\w\xa1-\uffff]/),e.eat(/[\?\!]/),e.eat(":")?"atom":"variable";if(n=="|"&&(t.varList||t.lastTok=="{"||t.lastTok=="do"))return mb="|",null;if(/[\(\)\[\]{}\\;]/.test(n))return mb=n,null;if(n=="-"&&e.eat(">"))return"operator";if(/[=+\-\/*:\.^%<>~|]/.test(n)){var l=e.eatWhile(/[=+\-\/*:\.^%<>~|]/);return n=="."&&!l&&(mb="."),"operator"}else return null}}}function Azr(e){for(var t=e.pos,n=0,r,o=!1,s=!1;(r=e.next())!=null;)if(s)s=!1;else{if("[{(".indexOf(r)>-1)n++;else if("]})".indexOf(r)>-1){if(n--,n<0)break}else if(r=="/"&&n==0){o=!0;break}s=r=="\\"}return e.backUp(e.pos-t),o}function CFe(e){return e||(e=1),function(t,n){if(t.peek()=="}"){if(e==1)return n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n);n.tokenize[n.tokenize.length-1]=CFe(e-1)}else t.peek()=="{"&&(n.tokenize[n.tokenize.length-1]=CFe(e+1));return ame(t,n)}}function pzr(){var e=!1;return function(t,n){return e?(n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n)):(e=!0,ame(t,n))}}function K$(e,t,n,r){return function(o,s){var a=!1,l;for(s.context.type==="read-quoted-paused"&&(s.context=s.context.prev,o.eat("}"));(l=o.next())!=null;){if(l==e&&(r||!a)){s.tokenize.pop();break}if(n&&l=="#"&&!a){if(o.eat("{")){e=="}"&&(s.context={prev:s.context,type:"read-quoted-paused"}),s.tokenize.push(CFe());break}else if(/[@\$]/.test(o.peek())){s.tokenize.push(pzr());break}}a=!a&&l=="\\"}return t}}function bzr(e,t){return function(n,r){return t&&n.eatSpace(),n.match(e)?r.tokenize.pop():n.skipToEnd(),"string"}}function wzr(e,t){return e.sol()&&e.match("=end")&&e.eol()&&t.tokenize.pop(),e.skipToEnd(),"comment"}const Ozr={name:"ruby",startState:function(e){return{tokenize:[ame],indented:0,context:{type:"top",indented:-e},continuedLine:!1,lastTok:null,varList:!1}},token:function(e,t){mb=null,e.sol()&&(t.indented=e.indentation());var n=t.tokenize[t.tokenize.length-1](e,t),r,o=mb;if(n=="variable"){var s=e.current();n=t.lastTok=="."?"property":gzr.propertyIsEnumerable(e.current())?"keyword":/^[A-Z]/.test(s)?"tag":t.lastTok=="def"||t.lastTok=="class"||t.varList?"def":"variable",n=="keyword"&&(o=s,mzr.propertyIsEnumerable(s)?r="indent":kzr.propertyIsEnumerable(s)?r="dedent":((s=="if"||s=="unless")&&e.column()==e.indentation()||s=="do"&&t.context.indented=|!=|<>)/,_zr=/[=\(:\),{}.*<>+\-\/^\[\]]/;function Qg(e,t,n){if(n)for(var r=t.split(" "),o=0;ointeger char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"),Qzr=V5n("define let letrec let* lambda define-macro defmacro let-syntax letrec-syntax let-values let*-values define-syntax syntax-rules define-values when unless");function Dzr(e,t,n){this.indent=e,this.type=t,this.prev=n}function x8e(e,t,n){e.indentStack=new Dzr(t,n,e.indentStack)}function Bzr(e){e.indentStack=e.indentStack.prev}var Rzr=new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i),Izr=new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i),Mzr=new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i),Pzr=new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);function Fzr(e){return e.match(Rzr)}function Nzr(e){return e.match(Izr)}function E8e(e,t){return t===!0&&e.backUp(1),e.match(Pzr)}function Uzr(e){return e.match(Mzr)}function tpt(e,t){for(var n,r=!1;(n=e.next())!=null;){if(n==t.token&&!r){t.state.mode=!1;break}r=!r&&n=="\\"}}const jzr={name:"scheme",startState:function(){return{indentStack:null,indentation:0,mode:!1,sExprComment:!1,sExprQuote:!1}},token:function(e,t){if(t.indentStack==null&&e.sol()&&(t.indentation=e.indentation()),e.eatSpace())return null;var n=null;switch(t.mode){case"string":tpt(e,{token:'"',state:t}),n=Z4t;break;case"symbol":tpt(e,{token:"|",state:t}),n=q4t;break;case"comment":for(var r,o=!1;(r=e.next())!=null;){if(r=="#"&&o){t.mode=!1;break}o=r=="|"}n=d7;break;case"s-expr-comment":if(t.mode=!1,e.peek()=="("||e.peek()=="[")t.sExprComment=0;else{e.eatWhile(/[^\s\(\)\[\]]/),n=d7;break}default:var s=e.next();if(s=='"')t.mode="string",n=Z4t;else if(s=="'")e.peek()=="("||e.peek()=="["?(typeof t.sExprQuote!="number"&&(t.sExprQuote=0),n=J$):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),n=J$);else if(s=="|")t.mode="symbol",n=q4t;else if(s=="#")if(e.eat("|"))t.mode="comment",n=d7;else if(e.eat(/[tf]/i))n=J$;else if(e.eat(";"))t.mode="s-expr-comment",n=d7;else{var a=null,l=!1,d=!0;e.eat(/[ei]/i)?l=!0:e.backUp(1),e.match(/^#b/i)?a=Fzr:e.match(/^#o/i)?a=Nzr:e.match(/^#x/i)?a=Uzr:e.match(/^#d/i)?a=E8e:e.match(/^[-+0-9.]/,!1)?(d=!1,a=E8e):l||e.eat("#"),a!=null&&(d&&!l&&e.match(/^#[ei]/i),a(e)&&(n=K4t))}else if(/^[-+0-9.]/.test(s)&&E8e(e,!0))n=K4t;else if(s==";")e.skipToEnd(),n=d7;else if(s=="("||s=="["){for(var u="",h=e.column(),g;(g=e.eat(/[^\s\(\[\;\)\]]/))!=null;)u+=g;u.length>0&&Qzr.propertyIsEnumerable(u)?x8e(t,h+Tzr,s):(e.eatSpace(),e.eol()||e.peek()==";"?x8e(t,h+1,s):x8e(t,h+e.current().length,s)),e.backUp(e.current().length-1),typeof t.sExprComment=="number"&&t.sExprComment++,typeof t.sExprQuote=="number"&&t.sExprQuote++,n=J4t}else s==")"||s=="]"?(n=J4t,t.indentStack!=null&&t.indentStack.type==(s==")"?"(":"[")&&(Bzr(t),typeof t.sExprComment=="number"&&--t.sExprComment==0&&(n=d7,t.sExprComment=!1),typeof t.sExprQuote=="number"&&--t.sExprQuote==0&&(n=J$,t.sExprQuote=!1))):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),ept&&ept.propertyIsEnumerable(e.current())?n=Ezr:n="variable")}return typeof t.sExprComment=="number"?d7:typeof t.sExprQuote=="number"?J$:n},indent:function(e){return e.indentStack==null?e.indentation:e.indentStack.indent},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:";;"}}},Wzr=Object.freeze(Object.defineProperty({__proto__:null,scheme:jzr},Symbol.toStringTag,{value:"Module"}));var _Fe={};function sJe(e,t){for(var n=0;n1&&e.eat("$");var n=e.next();return/['"({]/.test(n)?(t.tokens[0]=tbe(n,n=="("?"quote":n=="{"?"def":"string"),HW(e,t)):(/\d/.test(n)||e.eatWhile(/\w/),t.tokens.shift(),"def")};function Hzr(e){return function(t,n){return t.sol()&&t.string==e&&n.tokens.shift(),t.skipToEnd(),"string.special"}}function HW(e,t){return(t.tokens[0]||Vzr)(e,t)}const $zr={name:"shell",startState:function(){return{tokens:[]}},token:function(e,t){return HW(e,t)},languageData:{autocomplete:z5n.concat(H5n,$5n),closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"#"}}},Xzr=Object.freeze(Object.defineProperty({__proto__:null,shell:$zr},Symbol.toStringTag,{value:"Module"}));function G5n(e){for(var t={},n=e.split(" "),r=0;r=@%|&?!.,:;^]/,eHr=/true|false|nil|self|super|thisContext/,DG=function(e,t){this.next=e,this.parent=t},uie=function(e,t,n){this.name=e,this.context=t,this.eos=n},Y5n=function(){this.context=new DG(Z5n,null),this.expectVariable=!0,this.indentation=0,this.userIndentationDelta=0};Y5n.prototype.userIndent=function(e,t){this.userIndentationDelta=e>0?e/t-this.indentation:0};var Z5n=function(e,t,n){var r=new uie(null,t,!1),o=e.next();return o==='"'?r=rpt(e,new DG(rpt,t)):o==="'"?r=opt(e,new DG(opt,t)):o==="#"?e.peek()==="'"?(e.next(),r=spt(e,new DG(spt,t))):e.eatWhile(/[^\s.{}\[\]()]/)?r.name="string.special":r.name="meta":o==="$"?(e.next()==="<"&&(e.eatWhile(/[^\s>]/),e.next()),r.name="string.special"):o==="|"&&n.expectVariable?r.context=new DG(tHr,t):/[\[\]{}()]/.test(o)?(r.name="bracket",r.eos=/[\[{(]/.test(o),o==="["?n.indentation++:o==="]"&&(n.indentation=Math.max(0,n.indentation-1))):ipt.test(o)?(e.eatWhile(ipt),r.name="operator",r.eos=o!==";"):/\d/.test(o)?(e.eatWhile(/[\w\d]/),r.name="number"):/[\w_]/.test(o)?(e.eatWhile(/[\w\d_]/),r.name=n.expectVariable?eHr.test(e.current())?"keyword":"variable":null):r.eos=n.expectVariable,r},rpt=function(e,t){return e.eatWhile(/[^"]/),new uie("comment",e.eat('"')?t.parent:t,!0)},opt=function(e,t){return e.eatWhile(/[^']/),new uie("string",e.eat("'")?t.parent:t,!1)},spt=function(e,t){return e.eatWhile(/[^']/),new uie("string.special",e.eat("'")?t.parent:t,!1)},tHr=function(e,t){var n=new uie(null,t,!1),r=e.next();return r==="|"?(n.context=t.parent,n.eos=!0):(e.eatWhile(/[^|]/),n.name="variable"),n};const nHr={name:"smalltalk",startState:function(){return new Y5n},token:function(e,t){if(t.userIndent(e.indentation(),e.indentUnit),e.eatSpace())return null;var n=t.context.next(e,t.context,t);return t.context=n.context,t.expectVariable=n.eos,n.name},blankLine:function(e,t){e.userIndent(0,t)},indent:function(e,t,n){var r=e.context.next===Z5n&&t&&t.charAt(0)==="]"?-1:e.userIndentationDelta;return(e.indentation+r)*n.unit},languageData:{indentOnInput:/^\s*\]$/}},iHr=Object.freeze(Object.defineProperty({__proto__:null,smalltalk:nHr},Symbol.toStringTag,{value:"Module"}));var q5n=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,rHr=/[\|\!\+\-\*\?\~\^\&]/,oHr=/^(OR|AND|NOT|TO)$/;function sHr(e){return parseFloat(e).toString()===e}function aHr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null&&!(o==e&&!r);)r=!r&&o=="\\";return r||(n.tokenize=hie),"string"}}function lHr(e){return function(t,n){return e=="|"?t.eat(/\|/):e=="&"&&t.eat(/\&/),n.tokenize=hie,"operator"}}function cHr(e){return function(t,n){for(var r=e;(e=t.peek())&&e.match(q5n)!=null;)r+=t.next();return n.tokenize=hie,oHr.test(r)?"operator":sHr(r)?"number":t.peek()==":"?"propertyName":"string"}}function hie(e,t){var n=e.next();return n=='"'?t.tokenize=aHr(n):rHr.test(n)?t.tokenize=lHr(n):q5n.test(n)&&(t.tokenize=cHr(n)),t.tokenize!=hie?t.tokenize(e,t):null}const dHr={name:"solr",startState:function(){return{tokenize:hie}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}},uHr=Object.freeze(Object.defineProperty({__proto__:null,solr:dHr},Symbol.toStringTag,{value:"Module"}));var P_;function K5n(e){return new RegExp("^(?:"+e.join("|")+")$","i")}var hHr=K5n(["str","lang","langmatches","datatype","bound","sameterm","isiri","isuri","iri","uri","bnode","count","sum","min","max","avg","sample","group_concat","rand","abs","ceil","floor","round","concat","substr","strlen","replace","ucase","lcase","encode_for_uri","contains","strstarts","strends","strbefore","strafter","year","month","day","hours","minutes","seconds","timezone","tz","now","uuid","struuid","md5","sha1","sha256","sha384","sha512","coalesce","if","strlang","strdt","isnumeric","regex","exists","isblank","isliteral","a","bind"]),fHr=K5n(["base","prefix","select","distinct","reduced","construct","describe","ask","from","named","where","order","limit","offset","filter","optional","graph","by","asc","desc","as","having","undef","values","group","minus","in","not","service","silent","using","insert","delete","union","true","false","with","data","copy","to","move","add","create","drop","clear","load","into"]),gHr=/[*+\-<>=&|\^\/!\?]/,apt="[A-Za-z_\\-0-9]",mHr=new RegExp("[A-Za-z]"),kHr=new RegExp("(("+apt+"|\\.)*("+apt+"))?:");function J5n(e,t){var n=e.next();if(P_=null,n=="$"||n=="?")return n=="?"&&e.match(/\s/,!1)?"operator":(e.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/),"variableName.local");if(n=="<"&&!e.match(/^[\s\u00a0=]/,!1))return e.match(/^[^\s\u00a0>]*>?/),"atom";if(n=='"'||n=="'")return t.tokenize=vHr(n),t.tokenize(e,t);if(/[{}\(\),\.;\[\]]/.test(n))return P_=n,"bracket";if(n=="#")return e.skipToEnd(),"comment";if(gHr.test(n))return"operator";if(n==":")return lpt(e),"atom";if(n=="@")return e.eatWhile(/[a-z\d\-]/i),"meta";if(mHr.test(n)&&e.match(kHr))return lpt(e),"atom";e.eatWhile(/[_\w\d]/);var r=e.current();return hHr.test(r)?"builtin":fHr.test(r)?"keyword":"variable"}function lpt(e){e.match(/(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/i)}function vHr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=J5n;break}r=!r&&o=="\\"}return"string"}}function Gae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function Yae(e){e.indent=e.context.indent,e.context=e.context.prev}const AHr={name:"sparql",startState:function(){return{tokenize:J5n,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),P_=="(")Gae(t,")",e.column());else if(P_=="[")Gae(t,"]",e.column());else if(P_=="{")Gae(t,"}",e.column());else if(/[\]\}\)]/.test(P_)){for(;t.context&&t.context.type=="pattern";)Yae(t);t.context&&P_==t.context.type&&(Yae(t),P_=="}"&&t.context&&t.context.type=="pattern"&&Yae(t))}else P_=="."&&t.context&&t.context.type=="pattern"?Yae(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Gae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"#"}}},pHr=Object.freeze(Object.defineProperty({__proto__:null,sparql:AHr},Symbol.toStringTag,{value:"Module"})),bHr={name:"spreadsheet",startState:function(){return{stringType:null,stack:[]}},token:function(e,t){if(e){switch(t.stack.length===0&&(e.peek()=='"'||e.peek()=="'")&&(t.stringType=e.peek(),e.next(),t.stack.unshift("string")),t.stack[0]){case"string":for(;t.stack[0]==="string"&&!e.eol();)e.peek()===t.stringType?(e.next(),t.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return"string";case"characterClass":for(;t.stack[0]==="characterClass"&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(/^\\./)||t.stack.shift();return"operator"}var n=e.peek();switch(n){case"[":return e.next(),t.stack.unshift("characterClass"),"bracket";case":":return e.next(),"operator";case"\\":return e.match(/\\[a-z]+/)?"string.special":(e.next(),"atom");case".":case",":case";":case"*":case"-":case"+":case"^":case"<":case"/":case"=":return e.next(),"atom";case"$":return e.next(),"builtin"}return e.match(/\d+/)?e.match(/^\w+/)?"error":"number":e.match(/^[a-zA-Z_]\w*/)?e.match(/(?=[\(.])/,!1)?"keyword":"variable":["[","]","(",")","{","}"].indexOf(n)!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}},wHr=Object.freeze(Object.defineProperty({__proto__:null,spreadsheet:bHr},Symbol.toStringTag,{value:"Module"}));var e9n=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],aJe=["domain","regexp","url-prefix","url"],t9n=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],n9n=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","dynamic-range","video-dynamic-range"],i9n=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],r9n=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],o9n=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],s9n=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],a9n=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","high","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","standard","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],l9n=["in","and","or","not","is not","is a","is","isnt","defined","if unless"],c9n=["for","if","else","unless","from","to"],d9n=["null","true","false","href","title","type","not-allowed","readonly","disabled"],OHr=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],yHr=e9n.concat(aJe,t9n,n9n,i9n,r9n,s9n,a9n,o9n,l9n,c9n,d9n,OHr);function u9n(e){return e=e.sort(function(t,n){return n>t}),new RegExp("^(("+e.join(")|(")+"))\\b")}function I3(e){for(var t={},n=0;n]=?|\?:|\~)/,MHr=u9n(l9n),PHr=I3(c9n),h9n=new RegExp(/^\-(moz|ms|o|webkit)-/i),FHr=I3(d9n),T8e="",aA={},fw,u7,cpt,ws;function NHr(e,t){if(T8e=e.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),t.context.line.firstWord=T8e?T8e[0].replace(/^\s*/,""):"",t.context.line.indent=e.indentation(),fw=e.peek(),e.match("//"))return e.skipToEnd(),["comment","comment"];if(e.match("/*"))return t.tokenize=dpt,dpt(e,t);if(fw=='"'||fw=="'")return e.next(),t.tokenize=f9n(fw),t.tokenize(e,t);if(fw=="@")return e.next(),e.eatWhile(/[\w\\-]/),["def",e.current()];if(fw=="#"){if(e.next(),e.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if(e.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return e.match(h9n)?["meta","vendor-prefixes"]:e.match(/^-?[0-9]?\.?[0-9]/)?(e.eatWhile(/[a-z%]/i),["number","unit"]):fw=="!"?(e.next(),[e.match(/^(important|optional)/i)?"keyword":"operator","important"]):fw=="."&&e.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:e.match(QHr)?(e.peek()=="("&&(t.tokenize=UHr),["property","word"]):e.match(/^[a-z][\w-]*\(/i)?(e.backUp(1),["keyword","mixin"]):e.match(/^(\+|-)[a-z][\w-]*\(/i)?(e.backUp(1),["keyword","block-mixin"]):e.string.match(/^\s*&/)&&e.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:e.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?(e.backUp(1),["variableName.special","reference"]):e.match(/^&{1}\s*$/)?["variableName.special","reference"]:e.match(MHr)?["operator","operator"]:e.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?e.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!sy(e.current())?(e.match("."),["variable","variable-name"]):["variable","word"]:e.match(IHr)?["operator",e.current()]:/[:;,{}\[\]\(\)]/.test(fw)?(e.next(),[null,fw]):(e.next(),[null,null])}function dpt(e,t){for(var n=!1,r;(r=e.next())!=null;){if(n&&r=="/"){t.tokenize=null;break}n=r=="*"}return["comment","comment"]}function f9n(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){e==")"&&t.backUp(1);break}r=!r&&o=="\\"}return(o==e||!r&&e!=")")&&(n.tokenize=null),["string","string"]}}function UHr(e,t){return e.next(),e.match(/\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=f9n(")"),[null,"("]}function g9n(e,t,n,r){this.type=e,this.indent=t,this.prev=n,this.line=r||{firstWord:"",indent:0}}function po(e,t,n,r){return r=r>=0?r:t.indentUnit,e.context=new g9n(n,t.indentation()+r,e.context),n}function ZB(e,t,n){var r=e.context.indent-t.indentUnit;return n=n||!1,e.context=e.context.prev,n&&(e.context.indent=r),e.context.type}function jHr(e,t,n){return aA[n.context.type](e,t,n)}function cJe(e,t,n,r){for(var o=1;o>0;o--)n.context=n.context.prev;return jHr(e,t,n)}function sy(e){return e.toLowerCase()in _Hr}function qB(e){return e=e.toLowerCase(),e in SHr||e in RHr}function oD(e){return e.toLowerCase()in PHr}function upt(e){return e.toLowerCase().match(h9n)}function vI(e){var t=e.toLowerCase(),n="variable";return sy(e)?n="tag":oD(e)?n="block-keyword":qB(e)?n="property":t in xHr||t in FHr?n="atom":t=="return"||t in EHr?n="keyword":e.match(/^[A-Z]/)&&(n="string"),n}function m9n(e,t){return l0(t)&&(e=="{"||e=="]"||e=="hash"||e=="qualifier")||e=="block-mixin"}function k9n(e,t){return e=="{"&&t.match(/^\s*\$?[\w-]+/i,!1)}function v9n(e,t){return e==":"&&t.match(/^[a-z-]+/,!1)}function AT(e){return e.sol()||e.string.match(new RegExp("^\\s*"+CHr(e.current())))}function l0(e){return e.eol()||e.match(/^\s*$/,!1)}function S4(e){var t=/^\s*[-_]*[a-z0-9]+[\w-]*/i,n=typeof e=="string"?e.match(t):e.string.match(t);return n?n[0].replace(/^\s*/,""):""}aA.block=function(e,t,n){if(e=="comment"&&AT(t)||e==","&&l0(t)||e=="mixin")return po(n,t,"block",0);if(k9n(e,t))return po(n,t,"interpolation");if(l0(t)&&e=="]"&&!/^\s*(\.|#|:|\[|\*|&)/.test(t.string)&&!sy(S4(t)))return po(n,t,"block",0);if(m9n(e,t))return po(n,t,"block");if(e=="}"&&l0(t))return po(n,t,"block",0);if(e=="variable-name")return t.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||oD(S4(t))?po(n,t,"variableName"):po(n,t,"variableName",0);if(e=="=")return!l0(t)&&!oD(S4(t))?po(n,t,"block",0):po(n,t,"block");if(e=="*"&&(l0(t)||t.match(/\s*(,|\.|#|\[|:|{)/,!1)))return ws="tag",po(n,t,"block");if(v9n(e,t))return po(n,t,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test(e))return po(n,t,l0(t)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test(e))return po(n,t,"keyframes");if(/@extends?/.test(e))return po(n,t,"extend",0);if(e&&e.charAt(0)=="@")return t.indentation()>0&&qB(t.current().slice(1))?(ws="variable","block"):/(@import|@require|@charset)/.test(e)?po(n,t,"block",0):po(n,t,"block");if(e=="reference"&&l0(t))return po(n,t,"block");if(e=="(")return po(n,t,"parens");if(e=="vendor-prefixes")return po(n,t,"vendorPrefixes");if(e=="word"){var r=t.current();if(ws=vI(r),ws=="property")return AT(t)?po(n,t,"block",0):(ws="atom","block");if(ws=="tag"){if(/embed|menu|pre|progress|sub|table/.test(r)&&qB(S4(t))||t.string.match(new RegExp("\\[\\s*"+r+"|"+r+"\\s*\\]")))return ws="atom","block";if(lJe.test(r)&&(AT(t)&&t.string.match(/=/)||!AT(t)&&!t.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!sy(S4(t))))return ws="variable",oD(S4(t))?"block":po(n,t,"block",0);if(l0(t))return po(n,t,"block")}if(ws=="block-keyword")return ws="keyword",t.current(/(if|unless)/)&&!AT(t)?"block":po(n,t,"block");if(r=="return")return po(n,t,"block",0);if(ws=="variable"&&t.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return po(n,t,"block")}return n.context.type};aA.parens=function(e,t,n){if(e=="(")return po(n,t,"parens");if(e==")")return n.context.prev.type=="parens"?ZB(n,t):t.string.match(/^[a-z][\w-]*\(/i)&&l0(t)||oD(S4(t))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(S4(t))||!t.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&sy(S4(t))?po(n,t,"block"):t.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||t.string.match(/^\s*(\(|\)|[0-9])/)||t.string.match(/^\s+[a-z][\w-]*\(/i)||t.string.match(/^\s+[\$-]?[a-z]/i)?po(n,t,"block",0):l0(t)?po(n,t,"block"):po(n,t,"block",0);if(e&&e.charAt(0)=="@"&&qB(t.current().slice(1))&&(ws="variable"),e=="word"){var r=t.current();ws=vI(r),ws=="tag"&&lJe.test(r)&&(ws="variable"),(ws=="property"||r=="to")&&(ws="atom")}return e=="variable-name"?po(n,t,"variableName"):v9n(e,t)?po(n,t,"pseudo"):n.context.type};aA.vendorPrefixes=function(e,t,n){return e=="word"?(ws="property",po(n,t,"block",0)):ZB(n,t)};aA.pseudo=function(e,t,n){return qB(S4(t.string))?cJe(e,t,n):(t.match(/^[a-z-]+/),ws="variableName.special",l0(t)?po(n,t,"block"):ZB(n,t))};aA.atBlock=function(e,t,n){if(e=="(")return po(n,t,"atBlock_parens");if(m9n(e,t))return po(n,t,"block");if(k9n(e,t))return po(n,t,"interpolation");if(e=="word"){var r=t.current().toLowerCase();if(/^(only|not|and|or)$/.test(r)?ws="keyword":THr.hasOwnProperty(r)?ws="tag":BHr.hasOwnProperty(r)?ws="attribute":DHr.hasOwnProperty(r)?ws="property":LHr.hasOwnProperty(r)?ws="string.special":ws=vI(t.current()),ws=="tag"&&l0(t))return po(n,t,"block")}return e=="operator"&&/^(not|and|or)$/.test(t.current())&&(ws="keyword"),n.context.type};aA.atBlock_parens=function(e,t,n){if(e=="{"||e=="}")return n.context.type;if(e==")")return l0(t)?po(n,t,"block"):po(n,t,"atBlock");if(e=="word"){var r=t.current().toLowerCase();return ws=vI(r),/^(max|min)/.test(r)&&(ws="property"),ws=="tag"&&(lJe.test(r)?ws="variable":ws="atom"),n.context.type}return aA.atBlock(e,t,n)};aA.keyframes=function(e,t,n){return t.indentation()=="0"&&(e=="}"&&AT(t)||e=="]"||e=="hash"||e=="qualifier"||sy(t.current()))?cJe(e,t,n):e=="{"?po(n,t,"keyframes"):e=="}"?AT(t)?ZB(n,t,!0):po(n,t,"keyframes"):e=="unit"&&/^[0-9]+\%$/.test(t.current())?po(n,t,"keyframes"):e=="word"&&(ws=vI(t.current()),ws=="block-keyword")?(ws="keyword",po(n,t,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test(e)?po(n,t,l0(t)?"block":"atBlock"):e=="mixin"?po(n,t,"block",0):n.context.type};aA.interpolation=function(e,t,n){return e=="{"&&ZB(n,t)&&po(n,t,"block"),e=="}"?t.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||t.string.match(/^\s*[a-z]/i)&&sy(S4(t))?po(n,t,"block"):!t.string.match(/^(\{|\s*\&)/)||t.match(/\s*[\w-]/,!1)?po(n,t,"block",0):po(n,t,"block"):e=="variable-name"?po(n,t,"variableName",0):(e=="word"&&(ws=vI(t.current()),ws=="tag"&&(ws="atom")),n.context.type)};aA.extend=function(e,t,n){return e=="["||e=="="?"extend":e=="]"?ZB(n,t):e=="word"?(ws=vI(t.current()),"extend"):ZB(n,t)};aA.variableName=function(e,t,n){return e=="string"||e=="["||e=="]"||t.current().match(/^(\.|\$)/)?(t.current().match(/^\.[\w-]+/i)&&(ws="variable"),"variableName"):cJe(e,t,n)};const WHr={name:"stylus",startState:function(){return{tokenize:null,state:"block",context:new g9n("block",0,null)}},token:function(e,t){return!t.tokenize&&e.eatSpace()?null:(u7=(t.tokenize||NHr)(e,t),u7&&typeof u7=="object"&&(cpt=u7[1],u7=u7[0]),ws=u7,t.state=aA[t.state](cpt,e,t),ws)},indent:function(e,t,n){var r=e.context,o=t&&t.charAt(0),s=r.indent,a=S4(t),l=r.line.indent,d=e.context.prev?e.context.prev.line.firstWord:"",u=e.context.prev?e.context.prev.line.indent:l;return r.prev&&(o=="}"&&(r.type=="block"||r.type=="atBlock"||r.type=="keyframes")||o==")"&&(r.type=="parens"||r.type=="atBlock_parens")||o=="{"&&r.type=="at")?s=r.indent-n.unit:/(\})/.test(o)||(/@|\$|\d/.test(o)||/^\{/.test(t)||/^\s*\/(\/|\*)/.test(t)||/^\s*\/\*/.test(d)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(t)||/^(\+|-)?[a-z][\w-]*\(/i.test(t)||/^return/.test(t)||oD(a)?s=l:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(o)||sy(a)?/\,\s*$/.test(d)?s=u:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(d)||sy(d)?s=l<=u?u:u+n.unit:s=l:!/,\s*$/.test(t)&&(upt(a)||qB(a))&&(oD(d)?s=l<=u?u:u+n.unit:/^\{/.test(d)?s=l<=u?l:u+n.unit:upt(d)||qB(d)?s=l>=u?u:l:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(d)||/=\s*$/.test(d)||sy(d)||/^\$[\w-\.\[\]\'\"]/.test(d)?s=u+n.unit:s=l)),s},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:yHr}},VHr=Object.freeze(Object.defineProperty({__proto__:null,stylus:WHr},Symbol.toStringTag,{value:"Module"}));function nbe(e){for(var t={},n=0;n~^?!",YHr=":;,.(){}[]",ZHr=/^\-?0b[01][01_]*/,qHr=/^\-?0o[0-7][0-7_]*/,KHr=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,JHr=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,e$r=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,t$r=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,n$r=/^\#[A-Za-z]+/,i$r=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;function A9n(e,t,n){if(e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;var r=e.peek();if(r=="/"){if(e.match("//"))return e.skipToEnd(),"comment";if(e.match("/*"))return t.tokenize.push(SFe),SFe(e,t)}if(e.match(n$r))return"builtin";if(e.match(i$r))return"attribute";if(e.match(ZHr)||e.match(qHr)||e.match(KHr)||e.match(JHr))return"number";if(e.match(t$r))return"property";if(GHr.indexOf(r)>-1)return e.next(),"operator";if(YHr.indexOf(r)>-1)return e.next(),e.match(".."),"punctuation";var o;if(o=e.match(/("""|"|')/)){var s=o$r.bind(null,o[0]);return t.tokenize.push(s),s(e,t)}if(e.match(e$r)){var a=e.current();return XHr.hasOwnProperty(a)?"type":$Hr.hasOwnProperty(a)?"atom":zHr.hasOwnProperty(a)?(HHr.hasOwnProperty(a)&&(t.prev="define"),"keyword"):n=="define"?"def":"variable"}return e.next(),null}function r$r(){var e=0;return function(t,n,r){var o=A9n(t,n,r);if(o=="punctuation"){if(t.current()=="(")++e;else if(t.current()==")"){if(e==0)return t.backUp(1),n.tokenize.pop(),n.tokenize[n.tokenize.length-1](t,n);--e}}return o}}function o$r(e,t,n){for(var r=e.length==1,o,s=!1;o=t.peek();)if(s){if(t.next(),o=="(")return n.tokenize.push(r$r()),"string";s=!1}else{if(t.match(e))return n.tokenize.pop(),"string";t.next(),s=o=="\\"}return r&&n.tokenize.pop(),"string"}function SFe(e,t){for(var n;n=e.next();)if(n==="/"&&e.eat("*"))t.tokenize.push(SFe);else if(n==="*"&&e.eat("/")){t.tokenize.pop();break}return"comment"}function s$r(e,t,n){this.prev=e,this.align=t,this.indented=n}function a$r(e,t){var n=t.match(/^\s*($|\/[\/\*]|[)}\]])/,!1)?null:t.column()+1;e.context=new s$r(e.context,n,e.indented)}function l$r(e){e.context&&(e.indented=e.context.indented,e.context=e.context.prev)}const c$r={name:"swift",startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(e,t){var n=t.prev;t.prev=null;var r=t.tokenize[t.tokenize.length-1]||A9n,o=r(e,t,n);if(!o||o=="comment"?t.prev=n:t.prev||(t.prev=o),o=="punctuation"){var s=/[\(\[\{]|([\]\)\}])/.exec(e.current());s&&(s[1]?l$r:a$r)(t,e)}return o},indent:function(e,t,n){var r=e.context;if(!r)return 0;var o=/^[\]\}\)]/.test(t);return r.align!=null?r.align-(o?1:0):r.indented+(o?0:n.unit)},languageData:{indentOnInput:/^\s*[\)\}\]]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}},d$r=Object.freeze(Object.defineProperty({__proto__:null,swift:c$r},Symbol.toStringTag,{value:"Module"}));function p9n(e){function t(g,m){g.cmdState.push(m)}function n(g){return g.cmdState.length>0?g.cmdState[g.cmdState.length-1]:null}function r(g){var m=g.cmdState.pop();m&&m.closeBracket()}function o(g){for(var m=g.cmdState,v=m.length-1;v>=0;v--){var f=m[v];if(f.name!="DEFAULT")return f}return{styleIdentifier:function(){return null}}}function s(g,m,v){return function(){this.name=g,this.bracketNo=0,this.style=m,this.styles=v,this.argument=null,this.styleIdentifier=function(){return this.styles[this.bracketNo-1]||null},this.openBracket=function(){return this.bracketNo++,"bracket"},this.closeBracket=function(){}}}var a={};a.importmodule=s("importmodule","tag",["string","builtin"]),a.documentclass=s("documentclass","tag",["","atom"]),a.usepackage=s("usepackage","tag",["atom"]),a.begin=s("begin","tag",["atom"]),a.end=s("end","tag",["atom"]),a.label=s("label","tag",["atom"]),a.ref=s("ref","tag",["atom"]),a.eqref=s("eqref","tag",["atom"]),a.cite=s("cite","tag",["atom"]),a.bibitem=s("bibitem","tag",["atom"]),a.Bibitem=s("Bibitem","tag",["atom"]),a.RBibitem=s("RBibitem","tag",["atom"]),a.DEFAULT=function(){this.name="DEFAULT",this.style="tag",this.styleIdentifier=this.openBracket=this.closeBracket=function(){}};function l(g,m){g.f=m}function d(g,m){var v;if(g.match(/^\\[a-zA-Z@\xc0-\u1fff\u2060-\uffff]+/)){var f=g.current().slice(1);return v=a.hasOwnProperty(f)?a[f]:a.DEFAULT,v=new v,t(m,v),l(m,h),v.style}if(g.match(/^\\[$&%#{}_]/)||g.match(/^\\[,;!\/\\]/))return"tag";if(g.match("\\["))return l(m,function(A,p){return u(A,p,"\\]")}),"keyword";if(g.match("\\("))return l(m,function(A,p){return u(A,p,"\\)")}),"keyword";if(g.match("$$"))return l(m,function(A,p){return u(A,p,"$$")}),"keyword";if(g.match("$"))return l(m,function(A,p){return u(A,p,"$")}),"keyword";var k=g.next();if(k=="%")return g.skipToEnd(),"comment";if(k=="}"||k=="]"){if(v=n(m),v)v.closeBracket(k),l(m,h);else return"error";return"bracket"}else return k=="{"||k=="["?(v=a.DEFAULT,v=new v,t(m,v),"bracket"):/\d/.test(k)?(g.eatWhile(/[\w.%]/),"atom"):(g.eatWhile(/[\w\-_]/),v=o(m),v.name=="begin"&&(v.argument=g.current()),v.styleIdentifier())}function u(g,m,v){if(g.eatSpace())return null;if(v&&g.match(v))return l(m,d),"keyword";if(g.match(/^\\[a-zA-Z@]+/))return"tag";if(g.match(/^[a-zA-Z]+/))return"variableName.special";if(g.match(/^\\[$&%#{}_]/)||g.match(/^\\[,;!\/]/)||g.match(/^[\^_&]/))return"tag";if(g.match(/^[+\-<>|=,\/@!*:;'"`~#?]/))return null;if(g.match(/^(\d+\.\d*|\d*\.\d+|\d+)/))return"number";var f=g.next();return f=="{"||f=="}"||f=="["||f=="]"||f=="("||f==")"?"bracket":f=="%"?(g.skipToEnd(),"comment"):"error"}function h(g,m){var v=g.peek(),f;return v=="{"||v=="["?(f=n(m),f.openBracket(v),g.eat(v),l(m,d),"bracket"):/[ \t\r]/.test(v)?(g.eat(v),null):(l(m,d),r(m),d(g,m))}return{name:"stex",startState:function(){var g=e?function(m,v){return u(m,v)}:d;return{cmdState:[],f:g}},copyState:function(g){return{cmdState:g.cmdState.slice(),f:g.f}},token:function(g,m){return m.f(g,m)},blankLine:function(g){g.f=d,g.cmdState.length=0},languageData:{commentTokens:{line:"%"}}}}const u$r=p9n(!1),h$r=p9n(!0),hpt=Object.freeze(Object.defineProperty({__proto__:null,stex:u$r,stexMath:h$r},Symbol.toStringTag,{value:"Module"}));function b9n(e){var t=e.statementIndentUnit,n=e.dontAlignCalls,r=e.noIndentKeywords||[],o=e.multiLineStrings,s=e.hooks||{};function a(R){for(var I={},F=R.split(" "),j=0;j=0)return j}var W=R.context,H=I&&I.charAt(0);W.type=="statement"&&H=="}"&&(W=W.prev);var $=!1,G=I.match(A);return G&&($=M(G[0],W.type)),W.type=="statement"?W.indented+(H=="{"?0:t||F.unit):p.test(W.type)&&W.align&&!n?W.column+($?0:1):W.type==")"&&!$?W.indented+(t||F.unit):W.indented+($?0:F.unit)},languageData:{indentOnInput:B(),commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}}}const f$r=b9n({});var Q8e={"|":"link",">":"property",$:"variable",$$:"variable","?$":"qualifier","?*":"qualifier","-":"contentSeparator","/":"property","/-":"property","@":"variableName.special","@-":"variableName.special","@++":"variableName.special","@+=":"variableName.special","@+=-":"variableName.special","@--":"variableName.special","@-=":"variableName.special","%+":"tag","%-":"tag","%":"tag",">>":"tag","<<":"tag","<>":"tag","#":"tag","^":"attribute","^^":"attribute","^!":"attribute","*":"variable","**":"variable","\\":"keyword",'"':"comment"},fpt={"/":"beh-hier",">":"beh-hier","-":"phys-hier","|":"pipe","?":"when","@":"stage","\\":"keyword"},D8e=3,gpt=/^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/,g$r=/^[! ] */,m$r=/^\/[\/\*]/;const k$r=b9n({hooks:{electricInput:!1,token:function(e,t){var n=void 0,r;if(e.sol()&&!t.tlvInBlockComment){e.peek()=="\\"&&(n="def",e.skipToEnd(),e.string.match(/\\SV/)?t.tlvCodeActive=!1:e.string.match(/\\TLV/)&&(t.tlvCodeActive=!0)),t.tlvCodeActive&&e.pos==0&&t.indented==0&&(r=e.match(g$r,!1))&&(t.indented=r[0].length);var o=t.indented,s=o/D8e;if(s<=t.tlvIndentationStyle.length){var a=e.string.length==o,l=s*D8e;if(l0||(t.tlvIndentationStyle[s]=fpt[u],s++))}if(!a)for(;t.tlvIndentationStyle.length>s;)t.tlvIndentationStyle.pop()}t.tlvNextIndent=o}if(t.tlvCodeActive){var r;if(n===void 0)if(t.tlvInBlockComment)e.match(/^.*?\*\//)?t.tlvInBlockComment=!1:e.skipToEnd(),n="comment";else if((r=e.match(m$r))&&!t.tlvInBlockComment)r[0]=="//"?e.skipToEnd():t.tlvInBlockComment=!0,n="comment";else if(r=e.match(gpt)){var h=r[1],g=r[2];Q8e.hasOwnProperty(h)&&(g.length>0||e.eol())?n=Q8e[h]:e.backUp(e.current().length-1)}else e.match(/^\t+/)?n="invalid":e.match(/^[\[\]{}\(\);\:]+/)?n="meta":(r=e.match(/^[mM]4([\+_])?[\w\d_]*/))?n=r[1]=="+"?"keyword.special":"keyword":e.match(/^ +/)?e.eol()&&(n="error"):e.match(/^[\w\d_]+/)?n="number":e.next()}else e.match(/^[mM]4([\w\d_]*)/)&&(n="keyword");return n},indent:function(e){return e.tlvCodeActive==!0?e.tlvNextIndent:-1},startState:function(e){e.tlvIndentationStyle=[],e.tlvCodeActive=!0,e.tlvNextIndent=-1,e.tlvInBlockComment=!1}}}),mpt=Object.freeze(Object.defineProperty({__proto__:null,tlv:k$r,verilog:f$r},Symbol.toStringTag,{value:"Module"}));function w9n(e){for(var t={},n=e.split(" "),r=0;r!?^\/\|]/;function B8e(e,t,n){return t.tokenize=n,n(e,t)}function ibe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if((r=='"'||r=="'")&&t.inParams)return B8e(e,t,v$r(r));if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1),null;if(/\d/.test(r))return e.eatWhile(/[\w\.]/),"number";if(r=="#")return e.eat("*")?B8e(e,t,A$r):r=="#"&&e.match(/ *\[ *\[/)?B8e(e,t,p$r):(e.skipToEnd(),"comment");if(r=='"')return e.skipTo(/"/),"comment";if(r=="$")return e.eatWhile(/[$_a-z0-9A-Z\.{:]/),e.eatWhile(/}/),t.beforeParams=!0,"builtin";if(Apt.test(r))return e.eatWhile(Apt),"comment";e.eatWhile(/[\w\$_{}\xa1-\uffff]/);var o=e.current().toLowerCase();return kpt&&kpt.propertyIsEnumerable(o)?"keyword":vpt&&vpt.propertyIsEnumerable(o)?(t.beforeParams=!0,"keyword"):null}function v$r(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=ibe),"string"}}function A$r(e,t){for(var n=!1,r;r=e.next();){if(r=="#"&&n){t.tokenize=ibe;break}n=r=="*"}return"comment"}function p$r(e,t){for(var n=0,r;r=e.next();){if(r=="#"&&n==2){t.tokenize=ibe;break}r=="]"?n++:r!=" "&&(n=0)}return"meta"}const b$r={name:"tcl",startState:function(){return{tokenize:ibe,beforeParams:!1,inParams:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{line:"#"}}},w$r=Object.freeze(Object.defineProperty({__proto__:null,tcl:b$r},Symbol.toStringTag,{value:"Module"}));var Tv={addition:"inserted",attributes:"propertyName",bold:"strong",cite:"keyword",code:"monospace",definitionList:"list",deletion:"deleted",div:"punctuation",em:"emphasis",footnote:"variable",footCite:"qualifier",header:"heading",html:"comment",image:"atom",italic:"emphasis",link:"link",linkDefinition:"link",list1:"list",list2:"list.special",list3:"list",notextile:"string.special",pre:"operator",p:"content",quote:"bracket",span:"quote",specialChar:"character",strong:"strong",sub:"content.special",sup:"content.special",table:"variableName.special",tableHeading:"operator"};function O$r(e,t){t.mode=nu.newLayout,t.tableHeading=!1,t.layoutType==="definitionList"&&t.spanningLayout&&e.match(Fl("definitionListEnd"),!1)&&(t.spanningLayout=!1)}function ppt(e,t,n){if(n==="_")return e.eat("_")?X2(e,t,"italic",/__/,2):X2(e,t,"em",/_/,1);if(n==="*")return e.eat("*")?X2(e,t,"bold",/\*\*/,2):X2(e,t,"strong",/\*/,1);if(n==="[")return e.match(/\d+\]/)&&(t.footCite=!0),t0(t);if(n==="("){var r=e.match(/^(r|tm|c)\)/);if(r)return Tv.specialChar}if(n==="<"&&e.match(/(\w+)[^>]+>[^<]+<\/\1>/))return Tv.html;if(n==="?"&&e.eat("?"))return X2(e,t,"cite",/\?\?/,2);if(n==="="&&e.eat("="))return X2(e,t,"notextile",/==/,2);if(n==="-"&&!e.eat("-"))return X2(e,t,"deletion",/-/,1);if(n==="+")return X2(e,t,"addition",/\+/,1);if(n==="~")return X2(e,t,"sub",/~/,1);if(n==="^")return X2(e,t,"sup",/\^/,1);if(n==="%")return X2(e,t,"span",/%/,1);if(n==="@")return X2(e,t,"code",/@/,1);if(n==="!"){var o=X2(e,t,"image",/(?:\([^\)]+\))?!/,1);return e.match(/^:\S+/),o}return t0(t)}function X2(e,t,n,r,o){var s=e.pos>o?e.string.charAt(e.pos-o-1):null,a=e.peek();if(t[n]){if((!a||/\W/.test(a))&&s&&/\S/.test(s)){var l=t0(t);return t[n]=!1,l}}else(!s||/\W/.test(s))&&a&&/\S/.test(a)&&e.match(new RegExp("^.*\\S"+r.source+"(?:\\W|$)"),!1)&&(t[n]=!0,t.mode=nu.attributes);return t0(t)}function t0(e){var t=O9n(e);if(t)return t;var n=[];return e.layoutType&&n.push(Tv[e.layoutType]),n=n.concat(y$r(e,"addition","bold","cite","code","deletion","em","footCite","image","italic","link","span","strong","sub","sup","table","tableHeading")),e.layoutType==="header"&&n.push(Tv.header+"-"+e.header),n.length?n.join(" "):null}function O9n(e){var t=e.layoutType;switch(t){case"notextile":case"code":case"pre":return Tv[t];default:return e.notextile?Tv.notextile+(t?" "+Tv[t]:""):null}}function y$r(e){for(var t=[],n=1;n]+)?>(?:[^<]+<\/\1>)?/,link:/[^"]+":\S/,linkDefinition:/\[[^\s\]]+\]\S+/,list:/(?:#+|\*+)/,notextile:"notextile",para:"p",pre:"pre",table:"table",tableCellAttributes:/[\/\\]\d+/,tableHeading:/\|_\./,tableText:/[^"_\*\[\(\?\+~\^%@|-]+/,text:/[^!"_=\*\[\(<\?\+~\^%@-]+/},attributes:{align:/(?:<>|<|>|=)/,selector:/\([^\(][^\)]+\)/,lang:/\[[^\[\]]+\]/,pad:/(?:\(+|\)+){1,2}/,css:/\{[^\}]+\}/},createRe:function(e){switch(e){case"drawTable":return oa.makeRe("^",oa.single.drawTable,"$");case"html":return oa.makeRe("^",oa.single.html,"(?:",oa.single.html,")*","$");case"linkDefinition":return oa.makeRe("^",oa.single.linkDefinition,"$");case"listLayout":return oa.makeRe("^",oa.single.list,Fl("allAttributes"),"*\\s+");case"tableCellAttributes":return oa.makeRe("^",oa.choiceRe(oa.single.tableCellAttributes,Fl("allAttributes")),"+\\.");case"type":return oa.makeRe("^",Fl("allTypes"));case"typeLayout":return oa.makeRe("^",Fl("allTypes"),Fl("allAttributes"),"*\\.\\.?","(\\s+|$)");case"attributes":return oa.makeRe("^",Fl("allAttributes"),"+");case"allTypes":return oa.choiceRe(oa.single.div,oa.single.foot,oa.single.header,oa.single.bc,oa.single.bq,oa.single.notextile,oa.single.pre,oa.single.table,oa.single.para);case"allAttributes":return oa.choiceRe(oa.attributes.selector,oa.attributes.css,oa.attributes.lang,oa.attributes.align,oa.attributes.pad);default:return oa.makeRe("^",oa.single[e])}},makeRe:function(){for(var e="",t=0;t$/,P$r=/^\x3C!--\}\}\}-->$/,F$r=/^\{\{\{$/,N$r=/^\}\}\}$/,U$r=/.*?\}\}\}/;function fx(e,t,n){return t.tokenize=n,n(e,t)}function Oy(e,t){var n=e.sol(),r=e.peek();if(t.block=!1,n&&/[<\/\*{}\-]/.test(r)){if(e.match(F$r))return t.block=!0,fx(e,t,bpt);if(e.match(B$r))return"quote";if(e.match(Q$r)||e.match(D$r)||e.match(R$r)||e.match(I$r)||e.match(M$r)||e.match(P$r))return"comment";if(e.match(T$r))return"contentSeparator"}if(e.next(),n&&/[\/\*!#;:>|]/.test(r)){if(r=="!")return e.skipToEnd(),"header";if(r=="*")return e.eatWhile("*"),"comment";if(r=="#")return e.eatWhile("#"),"comment";if(r==";")return e.eatWhile(";"),"comment";if(r==":")return e.eatWhile(":"),"comment";if(r==">")return e.eatWhile(">"),"quote";if(r=="|")return"header"}if(r=="{"&&e.match("{{"))return fx(e,t,bpt);if(/[hf]/i.test(r)&&/[ti]/i.test(e.peek())&&e.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))return"link";if(r=='"')return"string";if(r=="~"||/[\[\]]/.test(r)&&e.match(r))return"brace";if(r=="@")return e.eatWhile(E$r),"link";if(/\d/.test(r))return e.eatWhile(/\d/),"number";if(r=="/"){if(e.eat("%"))return fx(e,t,j$r);if(e.eat("/"))return fx(e,t,V$r)}if(r=="_"&&e.eat("_"))return fx(e,t,z$r);if(r=="-"&&e.eat("-")){if(e.peek()!=" ")return fx(e,t,H$r);if(e.peek()==" ")return"brace"}return r=="'"&&e.eat("'")?fx(e,t,W$r):r=="<"&&e.eat("<")?fx(e,t,$$r):(e.eatWhile(/[\w\$_]/),L$r.propertyIsEnumerable(e.current())?"keyword":null)}function j$r(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=Oy;break}n=r=="%"}return"comment"}function W$r(e,t){for(var n=!1,r;r=e.next();){if(r=="'"&&n){t.tokenize=Oy;break}n=r=="'"}return"strong"}function bpt(e,t){var n=t.block;return n&&e.current()?"comment":!n&&e.match(U$r)||n&&e.sol()&&e.match(N$r)?(t.tokenize=Oy,"comment"):(e.next(),"comment")}function V$r(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=Oy;break}n=r=="/"}return"emphasis"}function z$r(e,t){for(var n=!1,r;r=e.next();){if(r=="_"&&n){t.tokenize=Oy;break}n=r=="_"}return"link"}function H$r(e,t){for(var n=!1,r;r=e.next();){if(r=="-"&&n){t.tokenize=Oy;break}n=r=="-"}return"deleted"}function $$r(e,t){if(e.current()=="<<")return"meta";var n=e.next();return n?n==">"&&e.peek()==">"?(e.next(),t.tokenize=Oy,"meta"):(e.eatWhile(/[\w\$_]/),x$r.propertyIsEnumerable(e.current())?"keyword":null):(t.tokenize=Oy,null)}const X$r={name:"tiddlywiki",startState:function(){return{tokenize:Oy}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n}},G$r=Object.freeze(Object.defineProperty({__proto__:null,tiddlyWiki:X$r},Symbol.toStringTag,{value:"Module"}));function $p(e,t,n){return function(r,o){for(;!r.eol();){if(r.match(t)){o.tokenize=w4;break}r.next()}return n&&(o.tokenize=n),e}}function vP(e){return function(t,n){for(;!t.eol();)t.next();return n.tokenize=w4,e}}function w4(e,t){function n(s){return t.tokenize=s,s(e,t)}var r=e.sol(),o=e.next();switch(o){case"{":return e.eat("/"),e.eatSpace(),e.eatWhile(/[^\s\u00a0=\"\'\/?(}]/),t.tokenize=dJe,"tag";case"_":if(e.eat("_"))return n($p("strong","__",w4));break;case"'":if(e.eat("'"))return n($p("em","''",w4));break;case"(":if(e.eat("("))return n($p("link","))",w4));break;case"[":return n($p("url","]",w4));case"|":if(e.eat("|"))return n($p("comment","||"));break;case"-":if(e.eat("="))return n($p("header string","=-",w4));if(e.eat("-"))return n($p("error tw-deleted","--",w4));break;case"=":if(e.match("=="))return n($p("tw-underline","===",w4));break;case":":if(e.eat(":"))return n($p("comment","::"));break;case"^":return n($p("tw-box","^"));case"~":if(e.match("np~"))return n($p("meta","~/np~"));break}if(r)switch(o){case"!":return e.match("!!!!!")||e.match("!!!!")||e.match("!!!")||e.match("!!"),n(vP("header string"));case"*":case"#":case"+":return n(vP("tw-listitem bracket"))}return null}var LFe,Mue;function dJe(e,t){var n=e.next(),r=e.peek();return n=="}"?(t.tokenize=w4,"tag"):n=="("||n==")"?"bracket":n=="="?(Mue="equals",r==">"&&(e.next(),r=e.peek()),/[\'\"]/.test(r)||(t.tokenize=Z$r()),"operator"):/[\'\"]/.test(n)?(t.tokenize=Y$r(n),t.tokenize(e,t)):(e.eatWhile(/[^\s\u00a0=\"\'\/?]/),"keyword")}function Y$r(e){return function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=dJe;break}return"string"}}function Z$r(){return function(e,t){for(;!e.eol();){var n=e.next(),r=e.peek();if(n==" "||n==","||/[ )}]/.test(r)){t.tokenize=dJe;break}}return"string"}}var ug,$W;function fie(){for(var e=arguments.length-1;e>=0;e--)ug.cc.push(arguments[e])}function Vv(){return fie.apply(null,arguments),!0}function y9n(e,t){var n=ug.context&&ug.context.noIndent;ug.context={prev:ug.context,pluginName:e,indent:ug.indented,startOfLine:t,noIndent:n}}function wpt(){ug.context&&(ug.context=ug.context.prev)}function q$r(e){if(e=="openPlugin")return ug.pluginName=LFe,Vv(xFe,K$r(ug.startOfLine));if(e=="closePlugin"){var t=!1;return ug.context?(t=ug.context.pluginName!=LFe,wpt()):t=!0,t&&($W="error"),Vv(J$r(t))}else return e=="string"&&((!ug.context||ug.context.name!="!cdata")&&y9n("!cdata"),ug.tokenize==w4&&wpt()),Vv()}function K$r(e){return function(t){return t=="selfclosePlugin"||t=="endPlugin"||t=="endPlugin"&&y9n(ug.pluginName,e),Vv()}}function J$r(e){return function(t){return e&&($W="error"),t=="endPlugin"?Vv():fie()}}function xFe(e){return e=="keyword"?($W="attribute",Vv(xFe)):e=="equals"?Vv(eXr,xFe):fie()}function eXr(e){return e=="keyword"?($W="string",Vv()):e=="string"?Vv(C9n):fie()}function C9n(e){return e=="string"?Vv(C9n):fie()}const tXr={name:"tiki",startState:function(){return{tokenize:w4,cc:[],indented:0,startOfLine:!0,pluginName:null,context:null}},token:function(e,t){if(e.sol()&&(t.startOfLine=!0,t.indented=e.indentation()),e.eatSpace())return null;$W=Mue=LFe=null;var n=t.tokenize(e,t);if((n||Mue)&&n!="comment")for(ug=t;;){var r=t.cc.pop()||q$r;if(r(Mue||n))break}return t.startOfLine=!1,$W||n},indent:function(e,t,n){var r=e.context;if(r&&r.noIndent)return 0;for(r&&/^{\//.test(t)&&(r=r.prev);r&&!r.startOfLine;)r=r.prev;return r?r.indent+n.unit:0}},nXr=Object.freeze(Object.defineProperty({__proto__:null,tiki:tXr},Symbol.toStringTag,{value:"Module"})),iXr={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(e,t){let n;if(!t.inString&&(n=e.match(/^('''|"""|'|")/))&&(t.stringType=n[0],t.inString=!0),e.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(e.match(t.stringType))t.inString=!1;else if(e.peek()==="\\")e.next(),e.next();else{if(e.eol())break;e.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&e.peek()==="]")return e.next(),t.inArray--,"bracket";if(t.lhs&&e.peek()==="["&&e.skipTo("]"))return e.next(),e.peek()==="]"&&e.next(),"atom";if(e.peek()==="#")return e.skipToEnd(),"comment";if(e.eatSpace())return null;if(t.lhs&&e.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(t.lhs&&e.peek()==="=")return e.next(),t.lhs=!1,null;if(!t.lhs&&e.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(e.match("true")||e.match("false")))return"atom";if(!t.lhs&&e.peek()==="[")return t.inArray++,e.next(),"bracket";if(!t.lhs&&e.match(/^\-?\d+(?:\.\d+)?/))return"number";e.eatSpace()||e.next()}return null},languageData:{commentTokens:{line:"#"}}},rXr=Object.freeze(Object.defineProperty({__proto__:null,toml:iXr},Symbol.toStringTag,{value:"Module"}));var Opt={};function oXr(e){if(e.eatSpace())return null;var t=e.sol(),n=e.next();if(n==="\\")return e.match("fB")||e.match("fR")||e.match("fI")||e.match("u")||e.match("d")||e.match("%")||e.match("&")?"string":e.match("m[")?(e.skipTo("]"),e.next(),"string"):e.match("s+")||e.match("s-")?(e.eatWhile(/[\d-]/),"string"):((e.match("(")||e.match("*("))&&e.eatWhile(/[\w-]/),"string");if(t&&(n==="."||n==="'")&&e.eat("\\")&&e.eat('"'))return e.skipToEnd(),"comment";if(t&&n==="."){if(e.match("B ")||e.match("I ")||e.match("R "))return"attribute";if(e.match("TH ")||e.match("SH ")||e.match("SS ")||e.match("HP "))return e.skipToEnd(),"quote";if(e.match(/[A-Z]/)&&e.match(/[A-Z]/)||e.match(/[a-z]/)&&e.match(/[a-z]/))return"attribute"}e.eatWhile(/[\w-]/);var r=e.current();return Opt.hasOwnProperty(r)?Opt[r]:null}function sXr(e,t){return(t.tokens[0]||oXr)(e,t)}const aXr={name:"troff",startState:function(){return{tokens:[]}},token:function(e,t){return sXr(e,t)}},lXr=Object.freeze(Object.defineProperty({__proto__:null,troff:aXr},Symbol.toStringTag,{value:"Module"}));function hk(e){for(var t={},n=e.split(" "),r=0;r!\/]/,KA;function CXr(e,t){var n=e.next();if(n=='"'||n=="'")return t.tokenize=_Xr(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\\:\?\.]/.test(n))return KA=n,"punctuation";if(n=="#")return e.skipToEnd(),"atom";if(n=="%")return e.eatWhile(/\b/),"atom";if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("*"))return t.tokenize=Cpt,Cpt(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(ypt.test(n))return n=="@"&&(e.match("try")||e.match("catch")||e.match("lazy"))?"keyword":(e.eatWhile(ypt),"operator");e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current();return cXr.propertyIsEnumerable(r)?"keyword":dXr.propertyIsEnumerable(r)?"builtin":uXr.propertyIsEnumerable(r)||fXr.propertyIsEnumerable(r)||gXr.propertyIsEnumerable(r)||hXr.propertyIsEnumerable(r)||mXr.propertyIsEnumerable(r)||kXr.propertyIsEnumerable(r)?"def":vXr.propertyIsEnumerable(r)||AXr.propertyIsEnumerable(r)||pXr.propertyIsEnumerable(r)?"string":bXr.propertyIsEnumerable(r)?"typeName.standard":wXr.propertyIsEnumerable(r)?"modifier":OXr.propertyIsEnumerable(r)?"atom":"variable"}function _Xr(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){var a=t.peek();a&&(a=a.toLowerCase(),(a=="b"||a=="h"||a=="o")&&t.next()),s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=null),"string"}}function Cpt(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function S9n(e,t,n,r,o){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=o}function Zae(e,t,n){var r=e.indented;return e.context&&e.context.type=="statement"&&(r=e.context.indented),e.context=new S9n(r,t,n,null,e.context)}function eX(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const SXr={name:"ttcn",startState:function(){return{tokenize:null,context:new S9n(0,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;KA=null;var r=(t.tokenize||CXr)(e,t);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(KA==";"||KA==":"||KA==",")&&n.type=="statement")eX(t);else if(KA=="{")Zae(t,e.column(),"}");else if(KA=="[")Zae(t,e.column(),"]");else if(KA=="(")Zae(t,e.column(),")");else if(KA=="}"){for(;n.type=="statement";)n=eX(t);for(n.type=="}"&&(n=eX(t));n.type=="statement";)n=eX(t)}else KA==n.type?eX(t):yXr&&((n.type=="}"||n.type=="top")&&KA!=";"||n.type=="statement"&&KA=="newstatement")&&Zae(t,e.column(),"statement");return t.startOfLine=!1,r},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:_9n}},LXr=Object.freeze(Object.defineProperty({__proto__:null,ttcn:SXr},Symbol.toStringTag,{value:"Module"}));function R8e(e){for(var t={},n=e.split(" "),r=0;r=&|]/;function E9n(e,t){var n=e.next();if(s5=null,n=="<"&&!e.match(/^[\s\u00a0=]/,!1))return e.match(/^[^\s\u00a0>]*>?/),"atom";if(n=='"'||n=="'")return t.tokenize=PXr(n),t.tokenize(e,t);if(/[{}\(\),\.;\[\]]/.test(n))return s5=n,null;if(n=="#")return e.skipToEnd(),"comment";if(Spt.test(n))return e.eatWhile(Spt),null;if(n==":")return"operator";if(e.eatWhile(/[_\w\d]/),e.peek()==":")return"variableName.special";var r=e.current();return MXr.test(r)?"meta":n>="A"&&n<="Z"?"comment":"keyword";var r=e.current()}function PXr(e){return function(t,n){for(var r=!1,o;(o=t.next())!=null;){if(o==e&&!r){n.tokenize=E9n;break}r=!r&&o=="\\"}return"string"}}function Kae(e,t,n){e.context={prev:e.context,indent:e.indent,col:n,type:t}}function I8e(e){e.indent=e.context.indent,e.context=e.context.prev}const FXr={name:"turtle",startState:function(){return{tokenize:E9n,context:null,indent:0,col:0}},token:function(e,t){if(e.sol()&&(t.context&&t.context.align==null&&(t.context.align=!1),t.indent=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);if(n!="comment"&&t.context&&t.context.align==null&&t.context.type!="pattern"&&(t.context.align=!0),s5=="(")Kae(t,")",e.column());else if(s5=="[")Kae(t,"]",e.column());else if(s5=="{")Kae(t,"}",e.column());else if(/[\]\}\)]/.test(s5)){for(;t.context&&t.context.type=="pattern";)I8e(t);t.context&&s5==t.context.type&&I8e(t)}else s5=="."&&t.context&&t.context.type=="pattern"?I8e(t):/atom|string|variable/.test(n)&&t.context&&(/[\}\]]/.test(t.context.type)?Kae(t,"pattern",e.column()):t.context.type=="pattern"&&!t.context.align&&(t.context.align=!0,t.context.col=e.column()));return n},indent:function(e,t,n){var r=t&&t.charAt(0),o=e.context;if(/[\]\}]/.test(r))for(;o&&o.type=="pattern";)o=o.prev;var s=o&&r==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(s?0:1):o.indent+(s?0:n.unit):0},languageData:{commentTokens:{line:"#"}}},NXr=Object.freeze(Object.defineProperty({__proto__:null,turtle:FXr},Symbol.toStringTag,{value:"Module"}));function Nz(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var T9n=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],UXr=Nz(T9n),Q9n=["unsigned","short","long","unrestricted","float","double","boolean","byte","octet","Promise","ArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","ByteString","DOMString","USVString","sequence","object","RegExp","Error","DOMException","FrozenArray","any","void"],jXr=Nz(Q9n),D9n=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],WXr=Nz(D9n),B9n=["true","false","Infinity","NaN","null"],VXr=Nz(B9n),zXr=["callback","dictionary","enum","interface"],HXr=Nz(zXr),$Xr=["typedef"],XXr=Nz($Xr),GXr=/^[:<=>?]/,YXr=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,ZXr=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,Lpt=/^_?[A-Za-z][0-9A-Z_a-z-]*/,qXr=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,KXr=/^"[^"]*"/,JXr=/^\/\*.*?\*\//,eGr=/^\/\*.*/,tGr=/^.*?\*\//;function nGr(e,t){if(e.eatSpace())return null;if(t.inComment)return e.match(tGr)?(t.inComment=!1,"comment"):(e.skipToEnd(),"comment");if(e.match("//"))return e.skipToEnd(),"comment";if(e.match(JXr))return"comment";if(e.match(eGr))return t.inComment=!0,"comment";if(e.match(/^-?[0-9\.]/,!1)&&(e.match(YXr)||e.match(ZXr)))return"number";if(e.match(KXr))return"string";if(t.startDef&&e.match(Lpt))return"def";if(t.endDef&&e.match(qXr))return t.endDef=!1,"def";if(e.match(WXr))return"keyword";if(e.match(jXr)){var n=t.lastToken,r=(e.match(/^\s*(.+?)\b/,!1)||[])[1];return n===":"||n==="implements"||r==="implements"||r==="="?"builtin":"type"}return e.match(UXr)?"builtin":e.match(VXr)?"atom":e.match(Lpt)?"variable":e.match(GXr)?"operator":(e.next(),null)}const iGr={name:"webidl",startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(e,t){var n=nGr(e,t);if(n){var r=e.current();t.lastToken=r,n==="keyword"?(t.startDef=HXr.test(r),t.endDef=t.endDef||XXr.test(r)):t.startDef=!1}return n},languageData:{autocomplete:T9n.concat(Q9n).concat(D9n).concat(B9n)}},rGr=Object.freeze(Object.defineProperty({__proto__:null,webIDL:iGr},Symbol.toStringTag,{value:"Module"}));var EFe="error";function rE(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var oGr=new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),sGr=new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),aGr=new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),lGr=new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),cGr=new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),dGr=new RegExp("^[_A-Za-z][_A-Za-z0-9]*"),R9n=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],I9n=["else","elseif","case","catch","finally"],M9n=["next","loop"],P9n=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],uGr=rE(P9n),F9n=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],N9n=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],hGr=rE(F9n),fGr=rE(N9n),gGr='"',mGr=rE(R9n),U9n=rE(I9n),j9n=rE(M9n),W9n=rE(["end"]),kGr=rE(["do"]);function TFe(e,t){t.currentIndent++}function Pue(e,t){t.currentIndent--}function QFe(e,t){if(e.eatSpace())return null;var n=e.peek();if(n==="'")return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var r=!1;if((e.match(/^\d*\.\d+F?/i)||e.match(/^\d+\.\d*F?/)||e.match(/^\.\d+F?/))&&(r=!0),r)return e.eat(/J/i),"number";var o=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?o=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),o=!0):e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}return e.match(gGr)?(t.tokenize=vGr(e.current()),t.tokenize(e,t)):e.match(cGr)||e.match(lGr)?null:e.match(aGr)||e.match(oGr)||e.match(uGr)?"operator":e.match(sGr)?null:e.match(kGr)?(TFe(e,t),t.doInCurrentLine=!0,"keyword"):e.match(mGr)?(t.doInCurrentLine?t.doInCurrentLine=!1:TFe(e,t),"keyword"):e.match(U9n)?"keyword":e.match(W9n)?(Pue(e,t),Pue(e,t),"keyword"):e.match(j9n)?(Pue(e,t),"keyword"):e.match(fGr)||e.match(hGr)?"keyword":e.match(dGr)?"variable":(e.next(),EFe)}function vGr(e){var t=e.length==1,n="string";return function(r,o){for(;!r.eol();){if(r.eatWhile(/[^'"]/),r.match(e))return o.tokenize=QFe,n;r.eat(/['"]/)}return t&&(o.tokenize=QFe),n}}function AGr(e,t){var n=t.tokenize(e,t),r=e.current();if(r===".")return n=t.tokenize(e,t),n==="variable"?"variable":EFe;var o="[({".indexOf(r);return o!==-1&&TFe(e,t),o="])}".indexOf(r),o!==-1&&Pue(e,t)?EFe:n}const pGr={name:"vb",startState:function(){return{tokenize:QFe,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(e,t){e.sol()&&(t.currentIndent+=t.nextLineIndent,t.nextLineIndent=0,t.doInCurrentLine=0);var n=AGr(e,t);return t.lastToken={style:n,content:e.current()},n},indent:function(e,t,n){var r=t.replace(/^\s+|\s+$/g,"");return r.match(j9n)||r.match(W9n)||r.match(U9n)?n.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*n.unit},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:"'"},autocomplete:R9n.concat(I9n).concat(M9n).concat(P9n).concat(F9n).concat(N9n)}},bGr=Object.freeze(Object.defineProperty({__proto__:null,vb:pGr},Symbol.toStringTag,{value:"Module"}));function V9n(e){var t="error";function n(q){return new RegExp("^(("+q.join(")|(")+"))\\b","i")}var r=new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),o=new RegExp("^((<>)|(<=)|(>=))"),s=new RegExp("^[\\.,]"),a=new RegExp("^[\\(\\)]"),l=new RegExp("^[A-Za-z][_A-Za-z0-9]*"),d=["class","sub","select","while","if","function","property","with","for"],u=["else","elseif","case"],h=["next","loop","wend"],g=n(["and","or","not","xor","is","mod","eqv","imp"]),m=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on error resume next","on error goto 0","option explicit","call","me"],v=["true","false","nothing","empty","null"],f=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],k=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],A=["WScript","err","debug","RegExp"],p=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],b=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],w=["server","response","request","session","application"],O=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],y=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],C=b.concat(p);A=A.concat(k),e.isASP&&(A=A.concat(w),C=C.concat(y,O));var _=n(m),S=n(v),L=n(f),E=n(A),T=n(C),D='"',P=n(d),Q=n(u),M=n(h),B=n(["end"]),R=n(["do"]),I=n(["on error resume next","exit"]),F=n(["rem"]);function j(q,re){re.currentIndent++}function W(q,re){re.currentIndent--}function H(q,re){if(q.eatSpace())return null;var J=q.peek();if(J==="'"||q.match(F))return q.skipToEnd(),"comment";if(q.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!q.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var oe=!1;if((q.match(/^\d*\.\d+/i)||q.match(/^\d+\.\d*/)||q.match(/^\.\d+/))&&(oe=!0),oe)return q.eat(/J/i),"number";var se=!1;if(q.match(/^&H[0-9a-f]+/i)||q.match(/^&O[0-7]+/i)?se=!0:q.match(/^[1-9]\d*F?/)?(q.eat(/J/i),se=!0):q.match(/^0(?![\dx])/i)&&(se=!0),se)return q.eat(/L/i),"number"}return q.match(D)?(re.tokenize=$(q.current()),re.tokenize(q,re)):q.match(o)||q.match(r)||q.match(g)?"operator":q.match(s)?null:q.match(a)?"bracket":q.match(I)?(re.doInCurrentLine=!0,"keyword"):q.match(R)?(j(q,re),re.doInCurrentLine=!0,"keyword"):q.match(P)?(re.doInCurrentLine?re.doInCurrentLine=!1:j(q,re),"keyword"):q.match(Q)?"keyword":q.match(B)?(W(q,re),W(q,re),"keyword"):q.match(M)?(re.doInCurrentLine?re.doInCurrentLine=!1:W(q,re),"keyword"):q.match(_)?"keyword":q.match(S)?"atom":q.match(T)?"variableName.special":q.match(L)||q.match(E)?"builtin":q.match(l)?"variable":(q.next(),t)}function $(q){var re=q.length==1,J="string";return function(oe,se){for(;!oe.eol();){if(oe.eatWhile(/[^'"]/),oe.match(q))return se.tokenize=H,J;oe.eat(/['"]/)}return re&&(se.tokenize=H),J}}function G(q,re){var J=re.tokenize(q,re),oe=q.current();return oe==="."?(J=re.tokenize(q,re),oe=q.current(),J&&(J.substr(0,8)==="variable"||J==="builtin"||J==="keyword")?((J==="builtin"||J==="keyword")&&(J="variable"),C.indexOf(oe.substr(1))>-1&&(J="keyword"),J):t):J}return{name:"vbscript",startState:function(){return{tokenize:H,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(q,re){q.sol()&&(re.currentIndent+=re.nextLineIndent,re.nextLineIndent=0,re.doInCurrentLine=0);var J=G(q,re);return re.lastToken={style:J,content:q.current()},J===null&&(J=null),J},indent:function(q,re,J){var oe=re.replace(/^\s+|\s+$/g,"");return oe.match(M)||oe.match(B)||oe.match(Q)?J.unit*(q.currentIndent-1):q.currentIndent<0?0:q.currentIndent*J.unit}}}const wGr=V9n({}),OGr=V9n({isASP:!0}),yGr=Object.freeze(Object.defineProperty({__proto__:null,vbScript:wGr,vbScriptASP:OGr},Symbol.toStringTag,{value:"Module"}));function uJe(e){for(var t={},n=e.split(" "),r=0;r!?:\/|]/;function ele(e,t,n){return t.tokenize=n,n(e,t)}function sbe(e,t){var n=t.beforeParams;t.beforeParams=!1;var r=e.next();if(r=="'"&&!t.inString&&t.inParams)return t.lastTokenWasBuiltin=!1,ele(e,t,Qpt(r));if(r=='"'){if(t.lastTokenWasBuiltin=!1,t.inString)return t.inString=!1,"string";if(t.inParams)return ele(e,t,Qpt(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&n?t.inParams=!0:r==")"&&(t.inParams=!1,t.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(/[\w\.]/),"number";if(r=="#"&&e.eat("*"))return t.lastTokenWasBuiltin=!1,ele(e,t,CGr);if(r=="#"&&e.match(/ *\[ *\[/))return t.lastTokenWasBuiltin=!1,ele(e,t,_Gr);if(r=="#"&&e.eat("#"))return t.lastTokenWasBuiltin=!1,e.skipToEnd(),"comment";if(r=="$")return e.eat("!"),e.eatWhile(/[\w\d\$_\.{}-]/),Ept&&Ept.propertyIsEnumerable(e.current())?"keyword":(t.lastTokenWasBuiltin=!0,t.beforeParams=!0,"builtin");if(Tpt.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(Tpt),"operator";e.eatWhile(/[\w\$_{}@]/);var o=e.current();return xpt&&xpt.propertyIsEnumerable(o)?"keyword":Jae&&Jae.propertyIsEnumerable(o)||e.current().match(/^#@?[a-z0-9_]+ *$/i)&&e.peek()=="("&&!(Jae&&Jae.propertyIsEnumerable(o.toLowerCase()))?(t.beforeParams=!0,t.lastTokenWasBuiltin=!1,"keyword"):t.inString?(t.lastTokenWasBuiltin=!1,"string"):e.pos>o.length&&e.string.charAt(e.pos-o.length-1)=="."&&t.lastTokenWasBuiltin?"builtin":(t.lastTokenWasBuiltin=!1,null)}}function Qpt(e){return function(t,n){for(var r=!1,o,s=!1;(o=t.next())!=null;){if(o==e&&!r){s=!0;break}if(e=='"'&&t.peek()=="$"&&!r){n.inString=!0,s=!0;break}r=!r&&o=="\\"}return s&&(n.tokenize=sbe),"string"}}function CGr(e,t){for(var n=!1,r;r=e.next();){if(r=="#"&&n){t.tokenize=sbe;break}n=r=="*"}return"comment"}function _Gr(e,t){for(var n=0,r;r=e.next();){if(r=="#"&&n==2){t.tokenize=sbe;break}r=="]"?n++:r!=" "&&(n=0)}return"meta"}const SGr={name:"velocity",startState:function(){return{tokenize:sbe,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{line:"##",block:{open:"#*",close:"*#"}}}},LGr=Object.freeze(Object.defineProperty({__proto__:null,velocity:SGr},Symbol.toStringTag,{value:"Module"}));function hJe(e){for(var t={},n=e.split(","),r=0;r",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],l=0,d=h.length;l\"\'\/?]/);)a+=l;return LF(e,t,FGr(a,s))}else{if(n=="{")return mS(t,{type:"codeblock"}),null;if(n=="}")return R4(t),null;if(X9n(t))return n==">"?"tag":n=="/"&&e.eat(">")?(R4(t),"tag"):"variable";if(/\d/.test(n))return e.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if(n==="("&&e.eat(":"))return mS(t,{type:"comment"}),LF(e,t,IGr);if(!o&&(n==='"'||n==="'"))return $9n(e,t,n);if(n==="$")return LF(e,t,PGr);if(n===":"&&e.eat("="))return"keyword";if(n==="(")return mS(t,{type:"paren"}),null;if(n===")")return R4(t),null;if(n==="[")return mS(t,{type:"bracket"}),null;if(n==="]")return R4(t),null;var d=nle.propertyIsEnumerable(n)&&nle[n];if(o&&n==='"')for(;e.next()!=='"';);if(o&&n==="'")for(;e.next()!=="'";);d||e.eatWhile(/[\w\$_-]/);var u=e.eat(":");!e.eat(":")&&u&&e.eatWhile(/[\w\$_-]/),e.match(/^[ \t]*\(/,!1)&&(r=!0);var h=e.current();return d=nle.propertyIsEnumerable(h)&&nle[h],r&&!d&&(d={type:"function_call",style:"def"}),WGr(t)?(R4(t),"variable"):((h=="element"||h=="attribute"||d.type=="axis_specifier")&&mS(t,{type:"xmlconstructor"}),d?d.style:"variable")}}function IGr(e,t){for(var n=!1,r=!1,o=0,s;s=e.next();){if(s==")"&&n)if(o>0)o--;else{R4(t);break}else s==":"&&r&&o++;n=s==":",r=s=="("}return"comment"}function MGr(e,t){return function(n,r){for(var o;o=n.next();)if(o==e){R4(r),t&&(r.tokenize=t);break}else if(n.match("{",!1)&&Fue(r))return mS(r,{type:"codeblock"}),r.tokenize=r3,"string";return"string"}}function $9n(e,t,n,r){let o=MGr(n,r);return mS(t,{type:"string",name:n,tokenize:o}),LF(e,t,o)}function PGr(e,t){var n=/[\w\$_-]/;if(e.eat('"')){for(;e.next()!=='"';);e.eat(":")}else e.eatWhile(n),e.match(":=",!1)||e.eat(":");return e.eatWhile(n),t.tokenize=r3,"variable"}function FGr(e,t){return function(n,r){if(n.eatSpace(),t&&n.eat(">"))return R4(r),r.tokenize=r3,"tag";if(n.eat("/")||mS(r,{type:"tag",name:e,tokenize:r3}),n.eat(">"))r.tokenize=r3;else return r.tokenize=DFe,"tag";return"tag"}}function DFe(e,t){var n=e.next();return n=="/"&&e.eat(">")?(Fue(t)&&R4(t),X9n(t)&&R4(t),"tag"):n==">"?(Fue(t)&&R4(t),"tag"):n=="="?null:n=='"'||n=="'"?$9n(e,t,n,DFe):(Fue(t)||mS(t,{type:"attribute",tokenize:DFe}),e.eat(/[a-zA-Z_:]/),e.eatWhile(/[-a-zA-Z0-9_:.]/),e.eatSpace(),(e.match(">",!1)||e.match("/",!1))&&(R4(t),t.tokenize=r3),"attribute")}function NGr(e,t){for(var n;n=e.next();)if(n=="-"&&e.match("->",!0))return t.tokenize=r3,"comment"}function UGr(e,t){for(var n;n=e.next();)if(n=="]"&&e.match("]",!0))return t.tokenize=r3,"comment"}function jGr(e,t){for(var n;n=e.next();)if(n=="?"&&e.match(">",!0))return t.tokenize=r3,"processingInstruction"}function X9n(e){return fJe(e,"tag")}function Fue(e){return fJe(e,"attribute")}function WGr(e){return fJe(e,"xmlconstructor")}function VGr(e){return e.current()==='"'?e.match(/^[^\"]+\"\:/,!1):e.current()==="'"?e.match(/^[^\"]+\'\:/,!1):!1}function fJe(e,t){return e.stack.length&&e.stack[e.stack.length-1].type==t}function mS(e,t){e.stack.push(t)}function R4(e){e.stack.pop();var t=e.stack.length&&e.stack[e.stack.length-1].tokenize;e.tokenize=t||r3}const zGr={name:"xquery",startState:function(){return{tokenize:r3,cc:[],stack:[]}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t);return n},languageData:{commentTokens:{block:{open:"(:",close:":)"}}}},HGr=Object.freeze(Object.defineProperty({__proto__:null,xQuery:zGr},Symbol.toStringTag,{value:"Module"}));function $Gr(e){for(var t={},n=e.split(" "),r=0;r|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function JGr(e,t){for(var n,r=!1,o=!1;(n=e.next())!=null;){if(n==='"'&&!o){r=!0;break}o=!o&&n==="\\"}return r&&!o&&(t.tokenize=dme),"string"}function eYr(e,t){for(var n,r;(r=e.next())!=null;){if(n==="*"&&r==="/"){t.tokenize=dme;break}n=r}return"comment"}function M8e(e){var t=null;return e.scopes.length>0&&(t=e.scopes[e.scopes.length-1]),t}const tYr={name:"yacas",startState:function(){return{tokenize:dme,scopes:[]}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},indent:function(e,t,n){if(e.tokenize!==dme&&e.tokenize!==null)return null;var r=0;return(t==="]"||t==="];"||t==="}"||t==="};"||t===");")&&(r=-1),(e.scopes.length+r)*n.unit},languageData:{electricInput:/[{}\[\]()\;]/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},nYr=Object.freeze(Object.defineProperty({__proto__:null,yacas:tYr},Symbol.toStringTag,{value:"Module"}));function G9n(e){var t,n;e?(t=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,n=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(t=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,n=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var r=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,o=/^(n?[zc]|p[oe]?|m)\b/i,s=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,a=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:"z80",startState:function(){return{context:0}},token:function(l,d){if(l.column()||(d.context=0),l.eatSpace())return null;var u;if(l.eatWhile(/\w/))if(e&&l.eat(".")&&l.eatWhile(/\w/),u=l.current(),l.indentation()){if((d.context==1||d.context==4)&&r.test(u))return d.context=4,"variable";if(d.context==2&&o.test(u))return d.context=4,"variableName.special";if(t.test(u))return d.context=1,"keyword";if(n.test(u))return d.context=2,"keyword";if(d.context==4&&a.test(u))return"number";if(s.test(u))return"error"}else return l.match(a)?"number":null;else{if(l.eat(";"))return l.skipToEnd(),"comment";if(l.eat('"')){for(;(u=l.next())&&u!='"';)u=="\\"&&l.next();return"string"}else if(l.eat("'")){if(l.match(/\\?.'/))return"number"}else if(l.eat(".")||l.sol()&&l.eat("#")){if(d.context=5,l.eatWhile(/\w/))return"def"}else if(l.eat("$")){if(l.eatWhile(/[\da-f]/i))return"number"}else if(l.eat("%")){if(l.eatWhile(/[01]/))return"number"}else l.next()}return null}}}const iYr=G9n(!1),rYr=G9n(!0),oYr=Object.freeze(Object.defineProperty({__proto__:null,ez80:rYr,z80:iYr},Symbol.toStringTag,{value:"Module"}));function gJe(e){return{name:"mscgen",startState:cYr,copyState:dYr,token:uYr(e),languageData:{commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}}}const sYr=gJe({keywords:["msc"],options:["hscale","width","arcgradient","wordwraparcs"],constants:["true","false","on","off"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),aYr=gJe({keywords:null,options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:null,brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),lYr=gJe({keywords:["msc","xu"],options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip","title","deactivate","activate","activation"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]});function ile(e){return new RegExp("^\\b("+e.join("|")+")\\b","i")}function iX(e){return new RegExp("^(?:"+e.join("|")+")","i")}function cYr(){return{inComment:!1,inString:!1,inAttributeList:!1,inScript:!1}}function dYr(e){return{inComment:e.inComment,inString:e.inString,inAttributeList:e.inAttributeList,inScript:e.inScript}}function uYr(e){return function(t,n){if(t.match(iX(e.brackets),!0,!0))return"bracket";if(!n.inComment){if(t.match(/\/\*[^\*\/]*/,!0,!0))return n.inComment=!0,"comment";if(t.match(iX(e.singlecomment),!0,!0))return t.skipToEnd(),"comment"}if(n.inComment)return t.match(/[^\*\/]*\*\//,!0,!0)?n.inComment=!1:t.skipToEnd(),"comment";if(!n.inString&&t.match(/\"(\\\"|[^\"])*/,!0,!0))return n.inString=!0,"string";if(n.inString)return t.match(/[^\"]*\"/,!0,!0)?n.inString=!1:t.skipToEnd(),"string";if(e.keywords&&t.match(ile(e.keywords),!0,!0)||t.match(ile(e.options),!0,!0)||t.match(ile(e.arcsWords),!0,!0)||t.match(iX(e.arcsOthers),!0,!0))return"keyword";if(e.operators&&t.match(iX(e.operators),!0,!0))return"operator";if(e.constants&&t.match(iX(e.constants),!0,!0))return"variable";if(!e.inAttributeList&&e.attributes&&t.match("[",!0,!0))return e.inAttributeList=!0,"bracket";if(e.inAttributeList){if(e.attributes!==null&&t.match(ile(e.attributes),!0,!0))return"attribute";if(t.match("]",!0,!0))return e.inAttributeList=!1,"bracket"}return t.next(),null}}const P8e=Object.freeze(Object.defineProperty({__proto__:null,mscgen:sYr,msgenny:aYr,xu:lYr},Symbol.toStringTag,{value:"Module"})),hYr=zd.deserialize({version:14,states:"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",stateData:"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~",goto:"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso",nodeNames:"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity",maxTerm:36,nodeProps:[["isolate",-3,3,13,17,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m<%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|!b#qP;=`<%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y%W$pP;=`<%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|",tokenizers:[6,7,new Cv("b~RP#q#rU~XP#q#r[~aOT~~",17,4),new Cv("!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOU~~![P;=`<%lm~!bP#o#p!e~!jOk~~",72,2),new Cv("[~RPwxU~ZOp~~",11,15),new Cv("[~RPrsU~ZOn~~",11,14),new Cv("!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOc~~![P;=`<%lm~!dOt~~",66,35),new Cv("!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^<%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^<%lOr~!^Ob~~!aP;=`<%lr~",66,33)],topRules:{Content:[0,1],Attribute:[1,7]},tokenPrec:157}),fYr=E0.parser.configure({top:"SingleExpression"}),Y9n=hYr.configure({props:[Xd({Text:ve.content,Is:ve.definitionOperator,AttributeName:ve.attributeName,VueAttributeName:ve.keyword,Identifier:ve.variableName,"AttributeValue ScriptAttributeValue":ve.attributeValue,Entity:ve.character,"{{ }}":ve.brace,"@ :":ve.punctuation})]}),Z9n={parser:fYr},gYr=Y9n.configure({wrap:Ap((e,t)=>e.name=="InterpolationContent"?Z9n:null)}),mYr=Y9n.configure({wrap:Ap((e,t)=>e.name=="AttributeScript"?Z9n:null),top:"Attribute"}),kYr={parser:gYr},vYr={parser:mYr},BFe=dI();function q9n(e){return e.configure({dialect:"selfClosing",wrap:Ap(AYr)},"vue")}const K9n=q9n(BFe.language);function AYr(e,t){switch(e.name){case"Attribute":return/^(@|:|v-)/.test(t.read(e.from,e.from+2))?vYr:null;case"Text":return kYr}return null}function pYr(e={}){let t=BFe;if(e.base){if(e.base.language.name!="html"||!(e.base.language instanceof Vd))throw new RangeError("The base option must be the result of calling html(...)");t=e.base}return new wd(t.language==BFe.language?K9n:q9n(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:["{",'"']}})])}const bYr=Object.freeze(Object.defineProperty({__proto__:null,vue:pYr,vueLanguage:K9n},Symbol.toStringTag,{value:"Module"})),wYr=1,OYr=33,yYr=34,CYr=35,_Yr=36,SYr=new go(e=>{let t=e.pos;for(;;){if(e.next==10){e.advance();break}else if(e.next==123&&e.peek(1)==123||e.next<0)break;e.advance()}e.pos>t&&e.acceptToken(wYr)});function abe(e,t,n){return new go(r=>{let o=r.pos;for(;r.next!=e&&r.next>=0&&(n||r.next!=38&&(r.next!=123||r.peek(1)!=123));)r.advance();r.pos>o&&r.acceptToken(t)})}const LYr=abe(39,OYr,!1),xYr=abe(34,yYr,!1),EYr=abe(39,CYr,!0),TYr=abe(34,_Yr,!0),QYr=zd.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<e.name=="InterpolationContent"?RFe:null)}),IYr=J9n.configure({wrap:Ap((e,t)=>{var n;return e.name=="InterpolationContent"?RFe:e.name!="AttributeInterpolation"?null:((n=e.node.parent)===null||n===void 0?void 0:n.name)=="StatementAttributeValue"?BYr:RFe}),top:"Attribute"}),MYr={parser:RYr},PYr={parser:IYr},IFe=dI({selfClosingTags:!0});function e6n(e){return e.configure({wrap:Ap(FYr)},"angular")}const t6n=e6n(IFe.language);function FYr(e,t){switch(e.name){case"Attribute":return/^[*#(\[]|\{\{/.test(t.read(e.from,e.to))?PYr:null;case"Text":return MYr}return null}function NYr(e={}){let t=IFe;if(e.base){if(e.base.language.name!="html"||!(e.base.language instanceof Vd))throw new RangeError("The base option must be the result of calling html(...)");t=e.base}return new wd(t.language==IFe.language?t6n:e6n(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/})])}const UYr=Object.freeze(Object.defineProperty({__proto__:null,angular:NYr,angularLanguage:t6n},Symbol.toStringTag,{value:"Module"})),jYr=Je({__name:"404",setup(e){const t=_pe();function n(){t.push("/")}const r=X(()=>window==null?void 0:window.$electron);return(o,s)=>{const a=Si;return xe(),Ge("div",{class:"notFound",style:no({height:Ae(r)?"calc(100vh - 32px)":"100vh"})},[s[1]||(s[1]=ge("span",{class:"title"},"404",-1)),s[2]||(s[2]=ge("div",{class:"notFoundText"},"页面不存在",-1)),c(a,{class:"notFoundBtn",theme:"primary",onClick:n},{default:Oe(()=>[...s[0]||(s[0]=[Bt("返回首页",-1)])]),_:1})],4)}}}),WYr=oo(jYr,[["__scopeId","data-v-0b027e54"]]),VYr=Object.freeze(Object.defineProperty({__proto__:null,default:WYr},Symbol.toStringTag,{value:"Module"})),lbe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAQAElEQVR4AeydCbx9U/n/r795ChmTIVIajGmgVIbkR1SGMk8hyVCmUOYhQwqJEhlSUVJKZExFpkyZC0WGopIxkuH/+Xy/7td3uPfcs89ee+81vL2e5659ztnrWc/zXtf9nmev6f8N8R8EIAABCEAAAhCAAAQgAAEIQAACnRNoOEHvPD4cgAAEIAABCEAAAhCAAAQgAAEIJEEg7QQ9CcQ4CQEIQAACEIAABCAAAQhAAAIQGJsACXoPRnwEAQhAAAIQgAAEIAABCEAAAhBoiwAJelukp2yHdyAAAQhAAAIQgAAEIAABCEAAAhMIkKBPQJHbBfFAAAIQgAAEIAABCEAAAhCAQEoESNBT6q2YfMUXCEAAAhCAAAQgAAEIQAACEAhKgAQ9KE6MhSKAHQhAAAIQgAAEIAABCEAAAqURIEEvrceJ1wRQCEAAAhCAAAQgAAEIQAAC0REgQY+uS3AofQJEAAEIQAACEIAABCAAAQhAoDoBEvTqzKgBgW4J0DoEIAABCEAAAhCAAAQgkCUBEvQsu5WgIDA4AWpCAAIQgAAEIAABCEAAAt0QIEHvhjutQqBUAsQNAQhAAAIQgAAEIAABCIxCgAR9FDC8DQEIpEgAnyEAAQhAAAIQgAAEIJAuARL0dPsOzyEAgbYJ0B4EIAABCEAAAhCAAAQaJECC3iBcTEMAAhCoQoB7IQABCEAAAhCAAATKJkCCXnb/Ez0EIFAOASKFAAQgAAEIQAACEIicAAl65B2EexCAAATSIICXEIAABCAAAQhAAAJ1CZCg1yVIfQhAAAIQaJ4ALUAAAhCAAAQgAIECCJCgF9DJhAgBCEAAAr0J8CkEIAABCEAAAhCIgQAJegy9gA8QgAAEIJAzAWKDAAQgAAEIQAACfREgQe8LEzdBAAIQgAAEYiWAXxCAAAQgAAEI5EKABD2XniQOCEAAAhCAQBMEsAkBCEAAAhCAQGsESNBbQ01DEIAABCAAAQhMToDXEIAABCAAAQi8SoAE/VUWXEEAAhCAAAQgkBcBooEABCAAAQgkRYAEPanuwlkIQAACEIAABOIhgCcQgAAEIACBsARI0MPyxBoEIAABCEAAAhAIQwArEIAABCBQHAES9OK6nIAhAAEIQAACEIDA0BAMIAABCEAgPgIk6PH1CR5BAAIQgAAEIACB1AngPwQgAAEIDECABH0AaFSBAAQgAAEIQAACEOiSAG1DAAIQyJMACXqe/UpUEIAABCAAAQhAAAKDEqAeBCAAgY4IkKB3BJ5mIQABCEAAAhCAAATKJEDUEIAABEYjQII+GhnehwAEIAABCEAAAhCAQHoE8BgCEEiYAAl6wp2H6xCAAAQgAAEIQAACEGiXAK1BAAJNEiBBb5IutiEAAQhAAAIQgAAEIACB/glwJwQKJ0CCXvgvAOFDAAIQgAAEIAABCECgFALECYHYCZCgx95D+AcBCEAAAhCAAAQgAAEIpEAAHyFQmwAJem2EGIAABCAAAQhAAAIQgAAEINA0AeyXQIAEvYReJkYIQAACEIAABCAAAQhAAAK9CPBZFARI0KPoBpyAAAQgAAEIQAACEIAABCCQLwEi648ACXp/nLgLAhCAAAQgAAEIQAACEIAABOIkkI1XJOjZdCWBQAACEIAABCAAAQhAAAIQgEB4Au1ZJEFvjzUtQQACEIAABCAAAQhAAAIQgAAEJiUw0SsS9IlgcAkBCEAAAhCAAAQgAAEIQAACEOiKQBMJelex0C4EIAABCEAAAhCAAAQgAAEIQCBZAgkm6MmyxnEIQAACEIAABCAAAQhAAAIQgMCoBEjQJ0fDawhAAAIQgAAEIAABCEAAAhCAQAcESNBbhk5zEIAABCAAAQhAAAIQgAAEIACBkQiQoI9EJd338BwCEIAABCAAAQhAAAIQgAAEEiVAgp5ox3XjNq1CAAIQgAAEIAABCEAAAhCAQFMESNCbIovd6gSoAQEIQAACEIAABCAAAQhAoGACJOgFd35poRMvBCAAAQhAAAIQgAAEIACBmAmQoMfcO/iWEgF8hQAEIAABCEAAAhCAAAQgUIsACXotfFSGQFsEaAcCEIAABCAAAQhAAAIQyJ0ACXruPUx8EOiHAPdAAAIQgAAEIAABCEAAAp0TIEHvvAtwAAL5EyBCCEAAAhCAAAQgAAEIQGBsAiToYzPiDghAIG4CeAcBCEAAAhCAAAQgAIEsCJCgZ9GNBAEBCDRHAMsQgAAEIAABCEAAAhBohwAJejucaQUCEIDAyAR4FwIQgAAEIAABCEAAAq8QIEF/BQQFBCAAgRwJEBMEIAABCEAAAhCAQDoESNDT6Ss8hQAEIBAbAfyBAAQgAAEIQAACEAhIgAQ9IExMQQACEIBASALYggAEIAABCEAAAmURIEEvq7+JFgIQgAAEhglQQgACEIAABCAAgcgIkKBH1iG4AwEIQAACeRAgCghAAAIQgAAEIFCVAAl6VWLcDwEIQAACEOieAB5AAAIQgAAEIJAhARL0DDuVkCAAAQhAAAL1CFAbAhCAAAQgAIEuCJCgd0GdNiEAAQhAAAIlEyB2CEAAAhCAAARGJECCPiIW3oQABCAAAQhAIFUC+A0BCEAAAhBIlQAJeqo9h98QgAAEIAABCHRBgDYhAAEIQAACjREgQW8MLYYhAAEIQAACEIBAVQLcDwEIQAACJRMgQS+594kdAhCAAAQgAIGyCBAtBCAAAQhETYAEPeruwTkIQAACEIAABCCQDgE8hQAEIACBegRI0OvxozYEIAABCEAAAhCAQDsEaAUCEIBA9gRI0LPvYgKEAAQgAAEIQAACEBibAHdAAAIQ6J4ACXr3fYAHEIAABCAAAQhAAAK5EyA+CEAAAn0QIEHvAxK3QAACEIAABCAAAQhAIGYC+AYBCORBgAQ9j34kCghAAAIQgAAEIAABCDRFALsQgEBLBEjQWwJNMxCAAAQgAAEIQAACEIDASAR4DwIQGCZAgj5MghICEIAABCAAAQhAAAIQyI8AEUEgIQIk6Al1Fq5CAAIQgAAEIAABCEAAAnERwBsIhCRAgh6SJrYgAAEIQAACEIAABCAAAQiEI4ClwgiQoBfW4YQLAQhAAAIQgAAEIAABCEBgPAF+xkaABD22HsEfCEAAAhCAAAQgAAEIQAACORAghsoESNArI6MCBCAAAQhAAAIQgAAEIAABCHRNIMf2SdBz7FViggAEIAABCEAAAhCAAAQgAIE6BDqpS4LeCXYahQAEIAABCEAAAhCAAAQyJLCpYrpb+jfpb6R7SReSIhCYjMDIL0nQR+bCuxCAAAQgAAEIQAACEIAABPolsLBu/JX0DOli0vmkH5AeJr1ferH0fVIEAj0JBEvQe7bChxCAAAQgAAEIQAACEIAABPIksL3CukO6snQ0WU0fXCk9WIpAYFQCqSToowbABxCAAAQgAAEIQAACEIAABDogMLfavFR6gnQmaT+yj246XYpAYEQCJOjjsPADAhCAAAQgAAEIQAACEIBA3wTerTtvka4qrSqbq8KWUgQCUxAgQZ8CSQNvYBICEIAABCAAAQhAAAIQyIXAZxTItVKvM1cxkByjWvNKEQhMQoAEfRIcab7AawhAAAIQgAAEIAABCECgcQKzqYVzpN+U1hXb8kh6XTvUz4wACXpmHdpAOJiEAAQgAAEIQAACEIBA6QTeIQC3SdeVhpJ/hTKEnXwIkKDn05eJRoLbEIAABCAAAQhAAAIQiJrAWvLuCukC0pDi49dC2sNWBgRI0DPoRELoQYCPIAABCEAAAhCAAAQgMDiBbVX1Z9J+d2nXrX3LnX3fyY3FECBBL6arCbQJAtiEAAQgAAEIQAACEMiWwHGK7NvSJnKmJ2T3YSkCgUkINPHLNkkDvIAABAYmQEUIQAACEIAABCAAgfYJvEZN/lq6o7QpubEpw9hNmwAJetr9h/cQqEGAqhCAAAQgAAEIQAACkxHwOnMfofbByd4P/fK60AaxlwcBEvQ8+pEoIBAfATyCAAQgAAEIQAACaRFYQu5eL32LtGnxQ4Cm28B+ggRI0BPsNFyGAASGhmAAAQhAAAIQgAAEAhJYQbauks4rbVpeVgOXSxEITEGABH0KJLwBAQhAYAgEEIAABCAAAQiUQ8DHqF2mcGeVtiFef/54Gw3RRnoESNDT6zM8hgAEkidAABCAAAQgAAEIREJgc/lxnnRGaVtyaVsN0U56BEjQ0+szPIYABCDQmwCfQgACEIAABCDQDwHv0n5aPzcGvofp7YGB5mSOBD2n3iQWCEAAAi0QoAkIQAACEIBABgS+rBiOk04lbVNeUGM+wk0FAoEpCZCgT8mEdyAAAQhAoDsCtAwBCEAAAhBomsDxamBvaRfijej+20XDtJkGARL0NPoJLyEAAQhAIAgBjEAAAhCAQOEETlX8n5V2Jed31TDtpkGABD2NfsJLCEAAAhBIgQA+QgACEIBArASmlmNnSreUdikXdNk4bcdPgAQ9/j7CQwhAAAIQgMA4AvyAAAQgAIGBCZyhmhtKu5S/qvHbpAgERiVAgj4qGj6AAAQgAAEIFEWAYCEAAQjkSuCHCmwjadfyi64doP34CZCgx99HeAgBCEAAAhDIgAAhQAACEGidwDRq8SfST0pjENafx9ALkftAgh55B+EeBCAAAQhAAAJ9EOAWCEAAApMSmFYvz5WuI41BnpcTl0oRCPQkQILeEw8fQgACEIAABCAAgaEhGEAAAskR+Jk8/og0FrlIjjhJV4FAYHQCJOijs+ETCEAAAhCAAAQg0AYB2oAABMIRmF6mLpeuIY1J/MAgJn/wJVICJOiRdgxuQQACEIAABCAAgTAEsAKBYgjMoEi9znsllbEJCXpsPRKpPyTokXYMbkEAAhCAAAQgAIEkCOAkBOIg4OTcu6SvGoc7k3hxhV79U4pAYEwCJOhjIuIGCEAAAhCAAAQgAIGuCNAuBPok4N3aY0zO7f6P/QOFQD8ESND7ocQ9EIAABCAAAQhAAAI5EiCmPAj8QGHEtuZcLk2QH0244gICYxAgQR8DEB9DAAIQgAAEIAABCEBgMALUaoHA59TGRtJY5To59ncpAoG+CJCg94WJmyAAAQhAAAIQgAAEIBAZAdwxgc/4R8TK9PaIOydG10jQY+wVfIIABCAAAQhAAAIQgEDHBBJp/q3y8yBprHJ2rI7hV5wESNDj7Be8ggAEIAABCEAAAhCAQM4EQsa2v4y9TXqzNCa5Qc7cJ0Ug0DcBEvS+UXEjBCAAAQhAAAIQgAAEIBApgTvl17LSnaRPDg3pZ/fC5nDd90FyHpCgJ9dlOAwBCEAAAhCAAAQgAAEIjELgG3p/celZ0uakP8s/7O827oLAqwRI0F9lwRUEIAABCEAAAhCAAAQgkD4B75rund2XVyh/kHYhV6nR+6UDCZXKJUCCXm7fEzkEIAABCEAAAhCAAARyJnCtgltGuoP0OWmb8v02G6vYFrdHTIAEPeLOwTUIQAACEIAABCAAuxb/JAAAEABJREFUAQhAoDaBE2TBu707Yddl4/KiWjhTWqgQdh0CJOh16FEXAhCAAAQgAAEIQAACEGiCwOsCG/Vu6p7y/knZvUPapPxKxv8tRZogkLlNEvTMO5jwIAABCEAAAhCAAAQgkBgBrx9/WD7/VrqyNKT4XPK3y+CW0ielTQibwzVBtSWbXTdDgt51D9A+BCAAAQhAAAIQgAAEIDBM4DO6+IHU8n798Gj0+SrfJA0pp8vYm6VO2FUElXOCWsNYTgTGjIUEfUxE3AABCEAAAhCAAAQgAAEItEBgX7XxTenksqbe+JP0AGlIeUTGPOV9CZWhEvVzZetxKQKBgQjUS9AHapJKEIAABCAAAQhAAAIQgAAEJhCYSlfHSQ+S9pL99eG90rWkIeV2GXOi7un0D+i6jrA5XB161B2KOkGnfyAAAQhAAAIQgAAEIACB7Al4uvmOfUa5qO47T+pjzGZRGVJ+LWNvk/phgYrK8pRq/FyKQGBgAiUn6ANDoyIEIAABCEAAAhCAAAQgEISAE9rNBrC0sercJv2gNKQ8LWM7S1eQ3iKtIl57/lyVCtwLgckJkKBPTiTYawxBAAIQgAAEIAABCEAAAqMQmFXve8R6bZWDysKqaBsegZ9D1yHlGhlbWvop6T+l/cj3+rmJeyDQiwAJei86MX+GbxCAAAQgAAEIQAACEEiTwJxy+3JpqNHvzWXrDqk3k1MRVE6VtcWkx0h7iTecu6zXDXwGgX4IkKD3Q6nAewgZAhCAAAQgAAEIQAACDRB4nWx6dHo5lSFlPhnzcWwexZ5b1yHlCRnbRepj2S5QOZIMHw030me8B4G+CZCg942KGwMSwBQEIAABCEAAAhCAQHkE3q6Qfy/1iLSKRmQTWW3K/t2y/RGpR+rvUjmx+MHAxK+5hsBABEjQB8JGpbgJ4B0EIAABCEAAAhCAQGQEvOna7+TT66VNyrdl/Gppk/JLGffDhq1VPiT9q/RGKQKB2gRI0GsjxEBxBAgYAhCAAAQgAAEIQKAKgfV181XS2aRNiteB79lkAxPZfknXp0jfJPWovQoEAvUJkKDXZ4gFCAQlgDEIQAACEIAABCCQEYHtFcuPpG2I14k/3kZDE7XxrK6vlCIQCEKABD0IRoxAIBkCOAoBCEAAAhCAAATaInCkGjpBOpW0ablEDZwp7Ue8i3w/93EPBFonQILeOnIahEDOBIgNAhCAAAQgAAEIjCNwln7uIW1LtuuzoTfovn9KvyNdRIpAICoCJOhRdQfOQAACPQnwIQQgAAEIQAACsRPwOvMr5OQG0rZkdzX0F2k/ctArN31K5Z+lJ0rnlyIQiIIACXoU3YATEIBADATwAQIQgAAEIACBWgQWVu1rpStK25Jr1NBXpf3I23TTZtKJ5dN64Z3Yj1L5GikCgU4JkKB3ip/GIQCBgggQKgQgAAEIQCBnAsspuOuli0vbkufV0KbSfuXQHjfups/+KGVHdkFAuiNAgt4de1qGAAQgEJAApiAAAQhAAAKdEVhLLf9WOpe0TfmSGrtX2o+8Uzd9XNpL5tOH35P+RurRdhUIBNolQILeLm9agwAEIJAmAbyGAAQgAAEIjExgB719nnQmaZtynRrztHQVfckRfd01/qYPqLhd+g0p094FAWmPAAl6e6xpCQIQgAAERiHA2xCAAAQgkBwBH532NXntJFZFq+Kp7RtXaHFV3buKtKr44cOdqrSuFIFAKwRI0FvBTCMQgAAEINAhAZqGAAQgAIGwBGaQuXOku0i7kL3UaL9T23Xr0OH+MaB6h3fH6lkCCw5og2oQ6JsACXrfqLgRAhCAAAQgMBIB3oMABCBQFAGvM/ca7XU6ivpXavdoab/idedef97v/aPd53X2f9WH+0oRCDRGgAS9MbQYhgAEIAABCAQggAkIQAAC8RB4s1z5vfTd0i7kaTW6ubSK9Nq5vYqd4XsP0sVdUgQCjRAgQW8EK0YhAAEIQAACaRDASwhAAAJ9EniP7rtG+gZpV7KlGn5I2q/spBub2I39EdlFINAIARL0RrBiFAIQgAAEIACBoaEhIEAAAnkQ8PRuH6M2R4fhnKG2vRZcRV8yu+4KPXouk+Pk++N+8gMCDRAgQW8AKiYhAAEIQAACEGiDAG1AAAItENhNbXiDtOlUdiUPqmHvqK6ib/GxarP2fXe1G39U7XbuhkD/BEjQ+2fFnRCAAAQgAAEIlESAWCFQNgEfo/ZtIThK2rVsJAeekvYrS+nGbaVNyM9k9HEpAoFGCJCgN4IVoxCAAAQgAAEIQKA3AT6FQMQEZpJvP5c2leTKdN9yku68UlpFvqWb/YBBRXBhentwpBicmAAJ+sQ0uIYABCAAAQhAAAJ5ECAKCAxKYH5VvFbqdecqOhVvCLdrRQ820/0rSJuQ52X0F1IEAo0RIEFvDC2GIQABCEAAAhCAQK4EiCtTAksorpukLlV0LlvIAx+tpqIv8cj/1/q6c7CbLle1Z6UIBBojQILeGFoMQwACEIAABCAAAQgMRIBKXRBYU4165HwelTHI9+TEZdIqcoBunkvalHj9eVO2sQuBcQRI0Mdh4AcEIAABCEAAAhCAQCkEiHMKArvonfOlHoFW0bk8Ig92lFaRN+vmPaRNitflN2kf2xAYIkHnlwACEIAABCAAAQhAAALhCKRm6etyuMlp4TJfWT6jGk9Iq8h3qtw8wL03qo7XxKtAINAcARL05thiGQIQgAAEIAABCEAAAoEJBDM3rSydK91JGpOcLWfsl4q+ZWvduaK0SbmgSePYhsAwARL0YRKUEIAABCAAAQhAAAIQKIPArArzEunHpJNKt68eU/MePVfRt8ypO78qbVpI0JsmjP1xBEjQx2HgBwQgAAEIQAACEIAABIogMJ+ivFr6QWnrMkaDO+hzJ+kq+pbjdeds0ibF0+2vabIBbENgmAAJ+jAJSghAAAIQgAAEIAABCORN4G0K73rp26WxyS/l0FnSKrKabt5AOixNlR49f7kp49iFwMQESNAnpsE1BCAAAQhAAAIQgAAE8iSwssK6Tvp6aWzylBz6lLSKzKibm94YTk2MEyfoQ0ND4675AYFGCZCgN4oX4xCAAAQgAAEIQAACEOicwIby4CLpzNIYxVPb/17RscN0/4LSpsUj5+c13cg4+/yAgAiQoAsCAgEIQAACEIAABCAAgUwJ7Ke4zpR613YV0cmv5NEZ0iqyrG7eWdqGeO2516C30VajbWA8DQIk6Gn0E15CAAIQgAAEIAABCECgKoFTVOFAaaziqe2bDODcaaozlbQNYfS8P8rcFYgACXogkJiBAAQgAAEIQAACEIBAJARmkR8emd5KZczyeTlXdWr7F1VnKWlb4s3r2mqLdkYlUM4HJOjl9DWRQgACEIAABCAAAQjkT2Behfg7qTeFUxGtXCbPPMKvom9ZTHceKm1L/PDg5rYao50OCUTUNAl6RJ2BKxCAAAQgAAEIQAACEKhBwMeo3aD6bY4wq7nK8oxqbC6tKt+vWqHm/efXrE91CIwjUOUHCXoVWtwLAQhAAAIQgAAEIACBOAl4xPxauRbjMWpyaxLZTa8ellaR7XTzu6Vtyi/abIy2IGACAyToroZCAAIQgAAEIAABCEAAApEQ8DFql8gXrz1XEbV4+v2JFT2cR/cfJW1TnldjPppOBQKB9gjEl6C3FzstQQACEIAABCAAAQhAIHUCBysAH6M2tcrY5Tk5OMiu7V6r3vbDh8vl67NSBAKtEiguQW+VLo1BAAIQgAAEIAABCECgGQLTyqwT831UpiJ7yNH7pVVkfd38EWnbwvT2tonT3jgCJOjjMAT7gSEIQAACEIAABCAAAQg0TcCjyT5GzVPbm24rlH1PbT++orHZdH/VOqoSRM4JYgUjEKhIgAS9IrBub6d1CEAAAhCAAAQgAIHCCXgTOG8Gt2JCHIantr9c0eev6n6vP1fRqtyu1v4mRSDQOgES9NaRR9wgrkEAAhCAAAQgAAEIxEzAx6f5GDUfpxazn5P79kW9UXVq+/Kqs7W0C2F6exfUaXMcARL0cRj40QYB2oAABCAAAQhAAAIQGJiAj1G7WrXnlaYkv5ezx0iryPS6+XRpV0KC3hV52h0iQeeXIBcCxAEBCEAAAhCAAARyJbC5AvMxajOpTEl8VNlGcrjq1Pa9VefN0i7kSTXq9fIqEAi0T4AEvX3mtJgkAZyGAAQgAAEIQAACnRA4TK16NDmFY9Tk6iSyr17dK60iTsy/VKVC4HvPk72qDxRUBYFAGAIk6GE4YgUC9QhQGwIQgAAEIAABCExKwMeoeSfxvSZ9O5lXf5CnR0mrih9GTFO1UsD7md4eECamqhMgQa/OjBoQSI4ADkMAAhCAAAQgkBQBHy/mY9TWTcrrV519QZee2v6SyiqyjW725nAqOpEX1eoFUgQCnREgQe8MPQ1DIBsCBAIBCEAAAhCAQDgCC8nUddKUjlGTu5PIgXp1p7SKzKmbBxlxV7VgcqUseQ26CgQC3RAgQe+GO61CAAJ9E+BGCEAAAhCAQDEEho9R8zrsVIP21PYvD+D8carjmQMqOhOmt3eGnoaHCZCgD5OghAAEyiRA1BCAAAQgAIE4CHxMbvgYtblUpiqDTm3/sAL2lHgVnQoJeqf4adwESNBNAYUABCDQEAHMQgACEIAABPogsL/uOVea2jFqcnkSOVSvqk5tn1F1TpZ2LX+WA3dJEQh0SoAEvVP8NA4BCECgFgEqQwACEIBA2gRmkPtOzA9Qmbo4MT9kgCC8Xn3BAeqFrsLmcKGJYm8gAiToA2GjEgQgAIESCBAjBCAAAQg0SGB+2b5K6qntKpIW79buKeqe4l4lkLfr5l2lMchFMTiBDxAgQed3AAIQgAAEuiFAqxCAAATKJbCsQr9J6lJF8nKEIvDmcCr6lql053elU0u7Fh+vdnnXTtA+BEyABN0UUAhAAAIQyI4AAUEAAhCIlMAn5JdHzudRmYPcqyAGmaK/o+q9QxqD/EZOPCNFINA5ARL0zrsAByAAAQhAIEECuAwBCEBgEAJeo/0jVfTacxVZyMaK4nlpFXmdbh7kKDZVa0QubMQqRiEwAAES9AGgUQUCEIAABCDQLAGsQwACmRHw7uzeDO5LmcV1pOK5TlpVvqUKs0hjkYtjcQQ/IECCzu8ABCAAAQhAoDQCxAsBCLRJwDuUX6sGc9gMTmFMEE9t33fCq/4v1tGtH5XGIv+QI1XXz6sKAoFmCJCgN8MVqxCAAAQgAIFiCRA4BCAwgcC7dOXN4JZQmZMM79pedWq7R82/GRkIjleLrENKd4cEvfTfAOKHAAQgAAEIpEUAbyGQCoFN5OiV0jmluYl3bf/9AEEdpjrzSmMSjleLqTfwZYgEnV8CCEAAAhCAAAQgMIEAFxCoTcDHhx0lK9+TTifNTe5UQIPs2u4d23dQ3ZjkZTnDCLogIPEQIEGPpy/wBAIQgAAEIACB3AkQX+4EPIX7FwpyN2mOMujU9iOFg90AABAASURBVKkF47tSP7xQEY1cL0+ekCIQiIYACXo0XYEjEIAABCAAAQhAoB4BandK4A1q3dO+11SZq3iK+iAbqu0uIG+XxiZMb4+tR/CHKe78DkAAAhCAAAQgAAEI9EWAm0Yn8F59dKP0LdJcZdCp7YsIyIHSGOXCGJ3Cp7IJMIJedv8TPQQgAAEIQAACEIiEQLJubCXPfyOdQ5qrvKDANpK6VFFJTtXd00tjk2fk0DVSBAJRESBBj6o7cAYCEIAABCAAAQhAoBEC4Y36e/TXZfYU6TTSnOXLCm6Qqe3eyf6DqhujeHr7izE6hk9lE/AflrIJED0EIAABCEAAAhCAAASqEXiNbneCt5PKcZLxD09tP3iA+GZTnWOlsQrT22PtmcL9IkEv/BeA8CEAAQhAAAIQgAAEKhFYTHffIP2QtC3pqh1PaR90avvX5PSc0ljll7E6hl9lEyBBL7v/iR4CEIAABCAAAQhAoH8Cq+hW79TuJF2XuciocXjkfJCp7SvK4qekscof5diDUgQC0REgQY+uS3AIAhCAAAQgAAEIQCBCAp7O7mnts0foWxMuOTH32vOqtr0e/+RJKsX34tL4XMIjCIwnQII+ngM/IQABCEAAAhCAAAQgMBqBE/WBN4Rz8qnLImQzRekp7ioqyV66e3FpazJAQxcPUIcqEGiFAAl6K5hpBAIQgAAEIAABCEAgQQJzy+erpZ+WliT7KthbpVXFZ57vU7VSy/d75/bLKrTJrRBolQAJequ4aQwCEIAABCAAAQhAIBECS8tPT/NeXmVJ4pgHmdpuRj5yLsYzz+3bsPrsc5+BPvy645LmITApARL0SXnwCgIQgAAEIAABCEAAAhsIwbXS10lLkucVrHdtf0llVdlUFVaSxi5lTW+PvTfwbwoCJOhTIOENCEAAAhCAAAQgAIFCCUytuI+RniWNfSRYLgaXA2XR556rqCTeOM/cKlXq6GYS9IDgMRWeAAl6eKZYhAAEIAABCEAAAhBIj4CTzMvl9uekJYqnth8+YOBfUb2YzzyXe+PEU9s9M2LcC35ET6BIB0nQi+x2goYABCAAAQhAAAIQmIjA23V9s/T90hKlztT2FQRsG2kK4mPyXk7BUXxsg0CcbZCgx9kveAUBCEAAAhCAAAQg0A6BddXM76ULS0uV/RT4IFPbfezcqaqbijC9PZWeysHPAWMgQR8QHNUgAAEIQAACEIAABJImMJW895Tuc1TOKC1V/HDCU9QHiX9PVVpcmoqcn4qj+FkugX4T9HIJETkEIAABCEAAAhCAQG4EXqOAfil1gqmiWKkztX0RUdtXmorcK0cflCIQiJpAJAl61IxwDgIQgAAEIAABCEAgHwIe8b1R4awuLV32EQAnrioqyymqkdJO90xvV4ch8RMoI0GPvx/wEAIQgAAEIAABCECgeQJOym9QM2+Uli6e2n7UgBA2Vr2VpCnJJSk5i6/lEiBBD9D3mIAABCAAAQhAAAIQiJ7A/vLQ09pnVlm6DE9tH2RHcx9H9/XEADpORtAT67RS3SVBj7/n8RACEIAABCAAAQhAYHACTsjPU/UDpN4YTkXxsrcIDDq1/QjVnVOaklwjZ5+RIhCIngAJevRd1LSD2IcABCAAAQhAAALZEvDRaZ7Svla2EVYPzFPbj65ebVyNFfTz09LUhNHz1HqsYH9J0Avu/FZCpxEIQAACEIAABCDQDYFV1OzNUm8KpwIRgeekG0k95VtFJZlGd58qTVFI0FPstUJ9JkEvtONzCZs4IAABCEAAAhCAwAgEfHyaNwXzeukRPi72rTpT23cXtRQfdnhq+9XyHYFAEgRI0JPoJpzsiADNQgACEIAABCCQFgEf+3WOXD5cyvdcQZhIfqfrY6WDyCKq5DX8KpITP6gZZMZAcoHicB4E+MOVRz8SRZIEcBoCEIAABCAAgYAEFpQtbwa2rkpkUgLP6uVm0kET1RNV1w8/VCQnFybnMQ4XTYAEvejuJ/isCRAcBCAAAQhAoBwC71eoN0mXkSJTEvCU/79M+XZf72you1aTpiqXpeo4fpdJgAS9zH4nagjUJoABCEAAAhCAQCQEdpYfv5KmdvSXXG5FPLX9GwO2NIvqDbrju6p2Lg/Kg3ukCASSIUCCnkxX4SgEiiJAsBCAAAQgAIGxCMyoG74r9bpq7zCuS2QEApvqvUGnth+huvNJU5VfpOo4fpdLgAS93L4ncggUTIDQIQABCEAgcQLetOwGxeB11SqQUQjspPfvkw4iy6nS9tKU5dKUncf3MgmQoJfZ70QNAQg0SQDbEIAABCDQJIGPyvgfpG+VIqMTqDO1fWqZPU06lTRV8awBEvRUe69gv0nQC+58QocABNIkgNcQgAAECibg9dA/U/yzSpHeBDy1vfcdo3+6mz5aQpqyXCvnn5AiEEiKAAl6Ut2FsxCAAAQaJ0ADEIAABGIk8Ho55YTr8yqRsQnsoFsGndq+gOoeIE1dLk89APwvkwAJepn9TtQQgAAEOiJAsxCAAAQqE/igatwifbcUGZuAp7afMPZto95xsj7xBnwqkhbv7J90ADhfJgES9DL7naghAAEI5EmAqCAAgZwIeP3z/grIidZrVSJjE3hGt2wiHVQ+oYqrS1OXFxTAFVIEAskRIEFPrstwGAIQgAAEuiJAuxCAQGsEnJBfrNY81ZrvqwLRp+yh++6XDiKzqNLXpTmIZxH8N4dAiKE8AvzBK6/PiRgCEIAABOIkgFcQgMB4Ap7K7intHxr/kp99EnBS+s0+7x3ptiP05nzSHMSzLnKIgxgKJECCXmCnEzIEIAABCJRIgJghkASBneXllVJvCqcC6ZNA3anty6md7aW5CAl6Lj1ZYBwk6AV2OiFDAAIQgAAEghPAIATqEZhZ1c+WHiudVopUI+Bj0Qad2j61mjpN6jX/KpIXT22/JvkoCKBYAiToxXY9gUMAAhCAAATSIYCnWRN4q6K7Sbq+FKlOwKPFJ1avNqHGLrpaQpqL/FqBeJM4FQgE0iNAgp5en+ExBCAAAQhAAAJhCWCtOwIbq+kbpG+SItUJeGr7ZtWrTaixgK4OkuYkfmCRUzzEUhgBEvTCOpxwIQABCEAAAhBomwDtjUBgOr3nUd/vq5xRigxGYFdVe1g6qJysirnxJ0FXpyLpEiBBT7fv8BwCEIAABCAAAQgMDaXHYCG57DXCn1aJDE7Aiei3B68+tJ7qri7NSTyjwDMycoqJWAojQIJeWIcTLgQgAAEIQAACEKhCIPC9a8iej1BbViUyOAEnonWmts+ipr8hzU0uVUAvSxEIJEuABD3ZrsNxCEAAAhCAAAQgkAwB7xR+uLw9XzqbdFgoByPgjd3qTG0/TM3OJ81NPKsgt5iIpzACJOiFdTjhQgACEIAABCAAgZYJzK32fivdU9ryUV5qMT9xEnpSjbCWU90dpDmK2eQYFzEVRIAEvaDOJlQIQAACEIAABCDQMoH3qj1PaXepy8yk/XDqTm33TIbT5HaOD0oeV1y3SREIJE2ABD3p7sN5CEAAAhCAAAQgEC2BveSZR85znEqt0JqXEVr4nN6rM7Xd9ZeQjRzlohyDIqbyCJCgl9fnRAwBCEAAAhCAAASaJOA15uepAa9z9oitLpEABLwB2ndq2FlQdQ+VDktu5WW5BUQ8ZRIgQS+z34kaAhCAAAQgAAEINEHA65tvleG1pEg4Ak/K1BbSOuJ16zPUMVCtbut3X956izQIgQYIkKA3ABWTEIAABCAAAQhAoEAC3ln8asXtkVoVSEACZltnavs68iWvM88V0ETyqK7vkSIQSJ4ACXryXUgAEIAABCAAAQhAoFMCntL+C3nwNem0UiQsAe9MfkoNkz7z/IQa9VOo+svQTmIPAl0RIEHvijztQgACEIAABCAAgfQJLK0QPKX9IyqR8AQ8tX2zmma97jz3jfr8EKMmplar0xgERiVAgj4qGj6AAAQgAAEIQAACEOhBYGd9dp2UKe2C0JB41/U6U9u9J8BODfkWk9kLY3Kme1/wIGUCJOgp9x6+QwACEIAABCAAgfYJeMq0p7Qfq6ankyLNEPCosM8sH9S6d9B3/RzPPJ+Yyd164TXoKpBWCNBIowRI0BvFi3EIQAACEIAABCCQFQGmtLfTnSGmtnvkPNczzyfuBT/ImPg114kTKN19EvTSfwOIHwIQgAAEIAABCPRHYAfddq30DVKkWQJePlBnarvXnH+5WRejsU6CHk1XJOFI9E6SoEffRTgIAQhAAAIQgAAEOiUwq1o/R/oN6fRSpFkC58v86dI6crwqzygtQTj/vIReTibG+o6SoNdniAUIQAACEIAABCCQK4GlFNiN0nWlSPMEnlAT20jryFqqXEp/3a5Y/yFFIJANgZ4JejZREggEIAABCEAAAhCAQFUC26uCp7QvphJph8Auaubv0kHFo+bfHLRygvWuTNBnXIZATwJdJug9HeNDCEAAAhCAAAQgAIFOCMykVn8qPUE6gxRph8BlauZUaR05VJUXkJYivy0lUOIsh0DGCXo5nUikEIAABCAAAQhAIBCBt8vOLdKPS5H2CDyrpraQ1hHv2O7N5erYSK0uG8Sl1mP4OyYBEvQxEY1yA29DAAIQgAAEIACBvAh8WuFcL32jFGmXwF5q7iHpoDKVKp4mnVpaivxFgdZZDqDqCATiI0CCHl+fjPOIHxCAAAQgAAEIQKAlArOonR9KT5QypV0QWpbr1N5x0jqykyovJy1JrigpWGIthwAJejl9PXGkXEMAAhCAAAQgAAETcFJ3qy4+KUXaJ/C8mtxE+rJ0UJlPFb32XEVRwvrzorq7nGBJ0Mvp6xYjpSkIQAACEIAABBIgsId8vFr6BinSDYGD1Ow90jpyvCp7FoSKooQEvajuLidYEvRy+jqfSIkEAhCAAAQgAIE6BOZS5YukR0qnlSLdELhDzR4hrSOrq/K60tLkMQV8txSBQHYESNCz61ICqkuA+hCAAAQgAIGMCays2G6TfliKdEfgRTXtqe0vqBxUZlTFk6Ulio+kKzFuYi6AAAl6AZ1MiFERwBkIQAACEIBAFwSmUaOHSZ3YzKsS6ZbAUWr+ZmkdOViVF5CWKExvL7HXC4mZBL2QjibMUggQJwQgAAEIQGAKAgvqnWukPsrLx3HpEumQgNec71ez/SVU//PSUoUEvdSeLyBuEvQCOpkQIRCMAIYgAAEIQCA1Ah+Xw96l3bu16xKJgICntnv39kFd8UOW01R5ammJ8rSC9jINFQgE8iNAgp5fnxIRBJIlgOMQgAAEIBCMwAyy9G3pT6WzSZE4CHjH9etquvJZ1S/5gcuvFf9LUgQCWRIgQc+yWwkKAhAYgQBvQQACECiFwOIK1Oubt1WJxEPgIbniZQYqBpb5VPNwacnC9PaSe7+A2EnQC+hkQoQABNogQBsQgAAEoiDwGXlxk9RJugokIgJbyBdPz1YxsBynmrNIS5YrSg6e2PMnQIKefx8TIQQgkAMBYoAEqqSsAAAQAElEQVQABCDQm4CnsXs6+zd1m4/fUoFEROC78sU76KsYWFZXzfWlJctzCv56KQKBbAmQoGfbtQQGAQhAoH8C3AkBCCRNYHl5743gvCGcLpHICDwmf3aW1hE/dDm5joFM6v5OcbwgRSCQLQES9Gy7lsAgAAEIREMARyAAgWYIeDfvL8q0p/z6KDVdIhES8LKDJ2r6daDqLyAtXVh/XvpvQAHxk6AX0MmECAEIQCBvAkQHgSIJvF5RXyo9VDqNFImTwLly62xpHVlKlfeQIkNDJOj8FmRPgAQ9+y4mQAhAAAIQqEWAyhCIj8Bmcul26SpSJF4CHjXfrqZ7niVxSk0buVT31PZrcgmGOCAwGgES9NHI8D4EIAABCECgBQI0AYEKBObUvedIveGYN4XTJRIxgV3k26PSOuLp8cvVMZBR3esUizeJU4FAIF8CJOj59i2RQQACEIAABCCQD4H/Uyh3SNeVIvETuFIuniqtI/Op8pFSZDwB77Uw/oqfEMiYAAl6xp1LaBCAAAQgAIFmCWC9BQKzqI2TpL+UziNF4ifwrFzcVFpXjpUB978KRARYfy4ISP4ESNDz72MihAAEIAABCKRJAK/fKwS3SbeRIukQ2Euu3i+tI6ur8ielyHgCL6kgQRcEJH8CJOj59zERQgACEIAABCAwAoGI35pOvnlqs6f0LqxrJB0CXid9XE13Z1T9k6XIqwT+oMunpQgEsidAgp59FxMgBCAAAQhAAAIdEBi0ySVV8Wapj9Xie5pAJCTPy9dNpC9L68j+qryAFHmVwFWvXnIFgbwJ8Ic/7/4lOghAAAIQgAAE0iAwtdzcW3q99K3SMYSPIyRwkHy6R1pHFlfl3aXIpAQ4Xm1SHrzKmAAJesadS2gQgAAEIAABCCRBYFF5ebX0y1JPb1fRsdB8VQLeYf+IqpVGuN87v/thzQgfFf0WCXrR3V9W8CToZfU30UIAAhCAAAQgEBcBn3N9i1x6l7QYySzQFxWPp7a/oLKObKfKK0iRSQk8qZd1ZybIBAKBNAiQoKfRT3gJAQhAAAIQgEBeBHzGtY9O+6bCmlmKhCPQtqWj1KD3DVAxsMypmodLkSkJeLPEKd/lHQhkSoAEPdOOJSwIQAACEIAABKIlsK48u1P6f1IkOQKTOOyR3f0meWewF975ffbBqmZfi+nt2XcxAU5MgAR9YhpcQwACEIAABCAAgeYIOAH7gcyfI/W1CiRxAp7a7t3b64SxkipvJB0v/JycAAn65ER4nTUBEvSsu5fgIAABCEAAAhCIhMCq8sOj5iRiApGJnKA4fO65ioFletU8RdqaJNhQXcYJhozLJRMgQS+594kdAhCAAAQgAIGmCcykBo6XXir1unMVSAYEHlIMe0rris88X6SukYjqh3bldhn0JnEqEAiUQYAEvYx+JkoIQAACEIAABNon4J3Zb1Wzn5UieRHYSuE8La0jPvN8jzoGCqg72fT2AiImxOIJkKAX/ysAAAhAAAIQgAAEAhOYVvYOkV4tXVSK5EXgbIVzibSu+Mzzaeoaybx+uwl65jAJLw0CJOhp9BNeQgACEIAABCCQBoG3ys0bpF+STi1F8iLwhMLZSVpXtpUBzjwXhDEkqwR9jFj5GALjCJCgj8PADwhAAAIQgAAEIFCLwFSqvZv0JumSUiRPArsrrEekdcRnnh9Zx0AhdZ9VnHdIkf4IcFcmBEjQM+lIwoAABCAAAQhAoDMCb1LLv5YeJfWu3CqQDAlcqZhOltaVY2WAY/YEYQy5Sp+/JEWiIIATbREgQW+LNO1AAAIQgAAEIJAjgQMU1J+kH5AieRPYIkB4Pm5vkwB2SjDhPRxKiJMYTQCdQIAEfQIKLiAAAQhAAAIQgEDfBHw0ls9n9jFZfVfixmQJfFGe/1laR2ZQ5ZOkSH8EWH/eHyfu6oNASreQoKfUW/gKAQhAAAIQgEAMBLzW3GtjfYxaDP7gQ7MEbpP5w6R1xUm+H+zUtVNK/WtLCZQ4kycQNAAS9KA4MQYBCEAAAhCAQMYE3qvYnKx5rblHQ/USKYDA1gFiXFw29pUi/RG4R7f9U4pAoDgCUyboxSEgYAhAAAIQgAAEINCTwHT61Em5Nwl7u66Rcgh4QzcvZagb8al1DRRWn9HzwjqccF8l0HqC/mrTXEEAAhCAAAQgAIHoCSwtD2+Relq7j1LTJVIIgYcU597SuuIR+BXqGimsPuvPC+twwn2VQG4J+quRcQUBCEAAAhCAAATqEThY1W+WenqyCqQwAk6sn60Z89yq/xUpUo0AO7hX48XdGREgQa/UmdwMAQhAAAIQgEABBDyN/SbFuY8UKZPAWQr7Imld+aoMzCFF+ifwnG69QYpAoEgCJOgxdTu+QAACEIAABCDQNYG95IA3gltGJVImgX8r7J2kdWVlGdhMilQjcH2127kbAnkRIEHPqz97RsOHEIAABCAAAQiMSuD1+uR30hDHackMkjCBXeV73R3Ep5eN70iR6gTYIK46M2pkRIAEPaPO7DgUmocABCAAAQikSmANOX671MeoqUAKJvBbxX6atK58UQYWkSLVCbBBXHVm1MiIAAl6Rp2ZdyhEBwEIQAACEAhOYAZZPE56gXQ2KQKBLQMg8KaC+wWwU6oJNogrteeJexwBEvRxGPhRPAEAQAACEIBAaQSWUsA+Pm1HlQgETOAL+vEXaV05ua6Bgus/rNh9vJ0KBAJlEiBBL7PfibplAjQHAQhAAAJREVhL3nid65tUIhAwAW9MFuI4NI/Ar2iD6EAE3A8DVaQSBHIhQIKeS08SR8kEiB0CEIAABPonsJ5uPU/q6e0qEAiMI7DVuJ/1fsyl6l+TIoMT4Hi1wdlRMxMCJOiZdCRhQKA5AliGAAQgkA2BNyqSH0sRCExM4EC98NF6KmrJUao9hxQZnMCNg1elJgTyIECCnkc/EgUE0iWA5xCAAATaI7Bne03RUiIE7pCfh0jrygoysIUUqUfgpnrVqQ2B9AmQoKffh0QAAQj0IMBHEIAABF4h8DqVJFCCgEwg8KKuNpG+IK0j06jyqVKkHoFHVZ0N4gQBKZsACXrZ/U/0EIBAPQLUhgAE0iGwm1ydTopAYJjA0bq4WVpXviQDPlpNBVKDAOvPa8Cjaj4ESNDz6UsigQAEsiNAQBCAQCACs8vOZ6UIBIYJ3K8LJ9Yqaskiqr23FKlPgPXn9RliIQMCJOgZdCIhQAACEBiIAJUgUA6B7RTqjFIEAsMENtXF89K6cooMTC9F6hNgBL0+QyxkQIAEPYNOJAQIQAACMRLAJwhEQmAq+bGDFIHAMIETdHGltK5sLgMrSZEwBBhBD8MRK4kTIEFPvANxHwIQgEChBAgbAv0SWFM3LihFIGAC3oQsxG7+XjbxNRtEgxB4Qla87EAFAoGyCZCgl93/RA8BCEAAAiMS4M2MCDB6nlFnBgjFO/k/HcCOk/M5A9jBxHgCvx9f8BMCECBB53cAAhCAAAQg0DYB2muLwKJqaA0pAgETOE0/LpPWlRVlYCspEo7A9eFMYQkCaRMgQU+7//AeAhCAAAQgMAUB3phAgCRqAoriLx4Vgc9L68o0MnCyFAlL4Kaw5rAGgXQJkKCn23d4DgEIQAACEOiCQEptbpmSs/jaKIFPybrXOauoJXup9uJSJCwBNogLyxNrCRMgQU+483AdAhCAAAQgkB+BYBEtL0sLSBEInC0E50vryiIysI8UCUvgWZm7R4pAAAIiQIIuCAgEIAABCEAAAtkR2HjEiHizNAKPKeDPSEPIKTIyvRQJS+DasOawBoG0CZCgp91/eA8BCEAAAhCAwJQEptZbG0hbFxqMjsDn5JGTdBW1ZFPVXkmKhCfA9PbwTLGYMAES9IQ7D9chAAEIQAACEBiRwKp6dx5pbkI81Qh4Wvv3qlUZ8e459O4xUqQZAjc0YxarEEiTAAl6mv2G1xCAAAQgAAEIjE5go9E/4pPRCWT1ydOKZjtpCPmKjMwpRZohwA7uzXDFaqIESNAT7TjchgAEIAABCEBgRALT6t31pEhsBNr1Z3c195C0rqwgA1tLkWYIeIO4O5sxjVUIpEmABD3NfsNrCEAAAhCAAARGJrCm3p5VihRGYKJwr9T1idK6Mo0MnCpFmiPA+vPm2GI5UQIk6Il2HG5DAAIQgAAEIDAiATaHGxFLMW96RNYbuoUIeOIzz0PYw8aUBEjQp2TCO4UTIEEv/BeA8CEAAQhAAAIZEZhRsXxcipRLYD+Ffr+0rrR85nldd5OtT4KebNfheFMESNCbIotdCEAAAhCAAATaJrCWGnSSrgIpkIB3Az8qUNzfkZ18zjxXMJGK+yxS13ALAt0QIEHvhjutQgACEIAABCAQnsD64U1iMSECWwTy1VPkVw5kqwgzNYK8tUZdqkIgSwIk6Fl2K0FBAAIQgAAEiiPgkfO1i4uagIcJHKqL26V15bUycKwUaZ7AdX02wW0QKIoACXpR3U2wEIAABCAAgWwJrKHInKSrQAojcI/iPUgaQk6QESfpKpCGCfyhYft9muc2CMRFgAQ9rv7AGwhAAAIQgAAEBiPA9PbBuOVQaxMF8by0rnxEBjgFQBBakhAzHlpytUYzVIVARQIk6BWBcTsEIAABCEAAAtERmFYesXu7IBQo31LMIaZKzyY7p0iR9gjc1l5T+bZEZPkRIEHPr0+JCAIQgAAEIFAagQ8rYKa3C0Jh8rDi/YI0hHj393lCGMJG3wRI0PtG1dmNNNwBARL0DqDTJAQgAAEIQAACQQmsE9QaxlIhsK0cfUpaV1aRgW2kSHsEHldTj0iRogkQ/EgESNBHosJ7EIAABCAAAQikQmAqOcr0dkEoTE5XvBdI64pnXjC1vS7F6vVvqV6FGhCoSCDR20nQE+043IYABCAAAQhAYByBFfVzTilSDoG/KdSdpSHkcBlZWIq0S4AN4trlTWsNEGjKJAl6U2SxCwEIQAACEIBAGwQYPW+DclxtbCx3npTWlXfLwE5SpH0CrD9vnzktJkLglQQ9EW9xEwIQgAAEIAABCExKYN1JX/IqcwLHK75fS+vKdDLwfamXSKhAWibACHrLwGkuHQLtJOjp8MBTCEAAAhCAAATSIbCkXH2DFCmDwL0Kc3dpCDlARhaTIt0QuLWbZmkVAvETyCJBjx8zHkIAAhCAAAQg0ACBjzZgE5PxEthMrj0nrSvLyMDeUqQbAt69/bFumqZVCMRPgAR97D7iDghAAAIQgAAE4iTA+vM4+6UJrw6U0aulIcQ7wIewg43BCDC9fTBu1CqEAAl65x2NAxCAAAQgAAEIDEDgdarzTimSP4HrFOJB0hDiKfJLhTCEjYEJkKAPjI6KJRAgQc+9l4kPAhCAAAQgkCeBdfIMi6gmI/CUXq8nfUlaV94mAwdLkW4JsIN7t/xpPXICJOiRd1Ds7uEfBCAAAQhAoCMCTG/vCHzLzW6p9h6UhpCzZWQGKdItAUbQu+VP65ETIEGPvIMKd4/wG2+iZQAAEABJREFUIQABCEAAAiMRmENvriJF8iZwisL7iTSEfFFGPIKuAumYwM0dt0/zEIiaAAl61N2Dc80SwDoEIAABCCRKwKPnUyfqO26PTsDT2T1a7inQ5+u2naQhxEfx7RvCEDZqE3D/PlPbCgYgkDEBEvSMO5fQOiZA8xCAAAQg0BSB9ZsyjN1gBG6RpR9KvbmbE+0Nde1ZD8uqXFA61Qj6Gr3nz5ZUuZb0P9IQcpaMMLVdECIQprdH0Am4EDcBEvS4+wfvIDAqAT6AAAQgUCiB2RT3mlIkLgIeGT1GLq0qdfK9tEon5fur/IbUyfrlKj292ffqshXZW628R4rEQcCzI+LwBC8gECkBEvRIOwa3INAxAZqHAAQgECuBj8XqWIF+/UMxHy1dXuqR711U/koaiywsR/aTIvEQIEGPpy/wJFICJOiRdgxuQSBvAkQHAQhAYGACHpUduDIVgxDwKLgflMwja7tKr5XGKN+SU0xtF4SI5I6IfMEVCERJgAQ9ym7BKQhAoBYBKkMAArkS8O7tH841uATi8vrh9eSn15H/XGXMspGc+z8pEhcB/w7F5RHeQCAyAiTokXUI7kAAAvETwEMIQKAzAp9Uy+zeLggty5Nqb2vpEtJQx57JVGMykyx/TYrEReA+ucMO7oKAQKAXARL0XnT4DAIQgED7BGgRAhAYnYBHRUf/lE+aIHCujL5Zeoo0Fdldjs4nReIiwOh5XP2BN5ESIEGPtGNwCwIQgEAzBLAKgWQJeL3zB5L1Pj3HX5DLm0vXkT4iTUVmkaN7SJH4CJCgx9cneBQhARL0CDsFlyAAAQgkSwDHIdAcgU1l2sd3qUAaJvCY7K8iPUOamiwkh52kq0AiI3BrZP7gDgSiJECCHmW34BQEIAABCIxEgPeKJsDu7e10/1/UzDulV0hTFO8SfniKjhfgMyPoBXQyIdYnQIJenyEWIAABCEAgDwJEES+BN8q1d0mRZgn4+LT3qAkn6SqSlb3l+V1SJC4Cf4zLHbyBQJwESNDj7Be8ggAEIACB7AgQUA0CG9eoS9X+CDys21aS/kOag3jGxUs5BJJJDN7H4D+ZxEIYEGiUAAl6o3gxDgEIQAACEGiJQN7NkKA3379rq4knpLnIHxTIYVIkDgJ3x+EGXkAgfgIk6PH3ER5CAAIQgAAEOifQoQNLqe23SJHmCOwg0zdKc5N9FNA9UqR7AvRD932AB4kQIEFPpKNwEwIQgAAEIJAxgV6hbdDrQz6rTeBSWThBmqtsm2tgicVFgp5Yh+FudwRI0LtjT8sQgAAEIAABCIxNwGdxj31Xzzv4cBQCz+j9LaQ5y68V3LlSpFsC93bbPK1DIB0CJOjp9BWeQgACEIAABEoj4B3FF4g+6HQd/Ipc9+ZwKrKWL2QdXRrBsQY9jX7CywgIkKBH0Am4AAEIQAACEIDAiAQ2GvHdwt5sKNxnZffr0hLEyeFPSwg04hg5Yi3izsG1uAiQoMfVH3gDAQhAAAIQgMB4AlOpIEEXhIbkO7L776GhIRVFyFFFRBlnkP+UW09LEQhAoA8CJOh9QOIWCEAAAhCAAARaJ7CyWpxHioQn8LJMHiltQaJp4ip54pF0FUjLBNggrmXgNJc2ARL0tPsP7yEAAQhAAAK5Etgw18AiiMs7tz8QgR/1Xahm4axqt3N3IAIk6IFAYqYMAiToZfQzUUIAAhCAAARSI/CJ1BxOyN9vJeRrSFfPrmqM+4MQYOZCEIwYKYUACXopPU2cEIAABCAAgXQIrCVXZ5ci4Qn8VybPl5Yotyrov0tjkVL8YAS9lJ4mziAESNCDYMQIBCAAAQhAAAIBCTC9PSDMyUz9Rq+dpKsoUi4sJ+poIiVBj6YrcCQFAiToKfQSPkIAAhCAAATKITCDQv24FGmGQOkJ6mXNYC3Qav8hM8W9f1bcCYEhEnR+CSAAAQhAAAIQiInAR+XMzFKkGQI3NmM2Gaue5p6Msxk46uPVBjrOL4PYCQECAxEgQR8IG5UgAAEIQAACEGiIANPbGwL7itnSE9S7XuFA0Q6BO9pppnIrVIBAtARI0KPtGhyDAAQgAAEIFEdgVkW8jhRphsAjMvuYtGTx+vu/lgyg5dgLnd7eMmWay4oACXpW3UkwEIAABCAAgaQJrJe09/E7f3/8LrbioR9UtNIQjQzdC4MGCGAyawIk6Fl3L8FBAAIQgAAEkiLA9PZmu+vRZs0nY5010e11FTu4t8c6WEsY6pYACXq3/GkdAhCAAAQgAIHxBOZSsboUaY4ACfp4tk+ML/jZAgES9BYgJ9YE7o5BgAR9DEB8DAEIQAACEIBAKwQ+2UorZTfyXNnhT4h+6glXXDRNgAS9acLYn4xA+i9J0NPvQyKAAAQgAAEI5ECA6e3N9yKJ6XjG044v+NkwAc9U+EfDbWAeAu0SaKE1EvQWINMEBCAAAQhAAAI9CSyiT98vRZolQGI6nu8M4wt+NkyAHdwbBoz5/Ag4IhJ0U0AhAAEIQAACEOiSwGZdNl5Q2zMWFGuvUOfv9SGfBSPA9PZgKDFUEoEGE/SSMBIrBCAAAQhAAAI1CGxZoy5V+yewUP+3Zn3nollHF09wHLEWT1/gSUIE0k3QE4KMqxCAAAQgAAEIjErAU9s9xX3UG/ggGIEFgllK15BPC2AmQTv9xwh6O5xpJTMCJOijdChvQwACEIAABCDQCoEtWmmFRkxgYf0oPTldWgyQdgg80E4ztAKBvAiQoHfTn7QKAQhAAAIQgMDQkDfrYvf2dn8T3tluc9G1tmx0HuXr0MP5hkZkEGiOAAl6c2w7tEzTEIAABCAAgSQIrC8vZ5Yi7RF4T3tNRdnS8lF6ladT9+cZFlFBoFkCJOjN8s3TOlFBAAIQgAAEwhDYPIwZrFQgsFKFe3O7dSYF9BEp0jyBJ9XEf6QIBCBQkQAJekVg3N48AVqAAAQgAIEiCHjDstWKiDSuIJ2gzhKXS615s4Za8rIKFUjDBB5s2D7mIZAtARL0bLuWwEYhwNsQgAAEIBAHAUbPu+uHtbtrutOW2ZCwPfwPtdcULUEgLwIk6Hn1J9F0TgAHIAABCECgTwJb9Xkft4UnsHF4k9FbnFcelvpgQqG3Loygt46cBnMhQIKeS08SRxkEiBICEIBAHgS8UddieYSSZBRryetFpCXJNiUFG0GsjKBH0Am4kCYBEvQ0+w2vIdAIAYxCAAIQaInAli21QzOjE9hx9I+y+8QnBeyRXVRxB0SCHnf/4F3EBEjQI+4cXINAZgQIBwIQgMAwgQ2GLyg7I+ARZU/77syBFht2cj5bi+3R1NDQX4EAAQgMRoAEfTBu1IIABKIjgEMQgEAiBJycz56Irzm7+RoFd7Q0d/FpAV/IPcgI43s4Qp9wCQJJECBBT6KbcBICEOicAA5AAAKhCLCTdiiS9e1sJBMrS3OW4xTcjFKkXQJMcW+XN61lRIAEPaPOJBQIQCBdAngOgUIIeEr1GoXEmkqYp8lRj6aryE68Gd7Hs4sqjYD+kYabeAmB+AiQoMfXJ3gEAQhAIDQB7EEgFgKbx+IIfkwgsJCuTpbmJnMpoFOlSPsE/tJ+k7QIgXwIkKDn05dEAgEIQKAjAjQLgb4JsHt736havfETai23hyenKyYn6SqQlgk82HJ7NAeBrAiQoGfVnQQDAQhAIEMChJQLgeUUyNukSJwEviO31pTmICcoiFxiUSjJCevPk+syHI6JAAl6TL2BLxCAAAQg0DoBGmyNAKPnraEeqKFpVOun0g9JUxYn59unHEAGvjOCnkEnEkJ3BEjQu2NPyxCAAAQgkD8BIhxPYFoVm0qRuAlMJ/d+IU1xIz9/p/2efCc5F4SOhRH0jjuA5tMm4D9maUeA9xCAAAQgAIFiCSQTuHfTnj0Zb8t2dHqF/3Op16WrSEJmkJd+sLCJSqR7Aoygd98HeJAwARL0hDsP1yEAAQhAAAKNEghnfItwprDUAgFPd/+R2tlLGru8UQ5eI01x1F9uZykk6Fl2K0G1RYAEvS3StAMBCEAAAhAok8DcCvtj0imEN6IncJg8PE86mzRG8YOfP8ixpaVIPAQeiMcVPIFAegRI0NPrMzyGAAQgAAEIpERgo46cpdkwBLw8wUlwTFPefSLAlQrvNOnMUiQuAqxBj6s/8CYxAiToiXUY7kIAAhCAAAQSI+BRzsRc7sfdou5ZWNF6yvt1Kt8v7Upep4bPkF4vfZ8UiY/Aw/G5hEcQSIsACXpa/YW3EIAABCAAgZQILCFn3yFFqhKI8/53ya3fSi+SvlPalvgBwdFq7F4ppwEIQsTC+vOIOwfX0iBAgp5GP+ElBCAAAQhAIEUCnH0eaa/VdOvDqv976cXSj0ubktVl2DvK36fy89IZpUjcBJjeHnf/4F0CBEjQE+gkXIQABCAAAQgkSmCzRP3G7f4IrKbbfir1pmCHqFxFOtPQ0JCKgcSzLbZRzeOld0svlK4tRdIhwAh6On2Fp5ESIEGPtGNwCwIQgAAEIJA4gTXl/zxSJH8CCyjEL0kvkz4j9Rrx76r0e95cbiVdD+uHdL25dE/psdKzpT4m7WWVN0hPkn5Wuph0FOHtiAkwgh5x5+BaGgRI0NPoJ7yEAAQgAAEIpEbAI6Gp+Yy/YQh4l3XPnvCoujeXu1xmh/USXZ8uPVy6s3R96Xuk8Qie1CHwjzqVqQsBCAwNkaDzWwABCEAAAhCAQGgCc8ngx6QIBCAwGYHMXz6aeXyEB4HGCZCgN46YBiAAAQhAAALFEfDmcHzHKK7bCTgCAl278EjXDtA+BFInwD+eqfcg/kMAAhCAAATiI7B1fC7hEQQgUJ/AmBZI0MdExA0Q6E2ABL03Hz6FAAQgAAEIQKAagffq9rdIEQhAoDwC/64VMpUhAAHWoPM7AAEIQAACEIBAUAKfCmoNYxCAQCoEvBP/UzE7i28QSIEAI+gp9BI+QgACEIAABNIgMLPc3ECKQAAC5REofYO48nqciBshQILeCFaMQgACEIAABIok4OR8liIjJ2gIQOAJEDRJANulECBBL6WniRMCEIAABCDQPAGmtzfPmBYgECuBx2J1DL/6IMAt0RAgQY+mK3AEAhCAAAQgkDQBbwz3vqQjwHkIQKAOAUbQ69DLvC7h9U+ABL1/VtwJAQhAAAIQgMDoBLYb/SM+gQAECiDADu4FdHKkIWblFgl6Vt1JMBCAAAQgAIHOCGzZWcs0DAEIxEDgXzE4gQ8QCE+gXYsk6O3ypjUIQAACEIBAjgQ2UlCzSxEIQKBcAuziXm7fE3kdApPVJUGfDAgvIQABCEAAAhCoTGDbyjWoAAEI5Ebgb7kFRDwQ6IJA6AS9ixhoEwIQgAAEIACB7ggspKZXliIQgEDZBB4qO3yih0AYAokl6GGCxgoEIAABCEAAAsEIbB/MEoYgAIGUCdyXsvP4DoFYCJCgT9wTXEMAAhCAAAQgUIXANLqZ6e2CgECgcALPKv67pAgEIFCTAAl6TYBVqnMvBFdpqtUAABAASURBVCAAAQhAIDMCH1U8c0oRCECgbAJXKvyXpAgEIFCTAAl6TYARVccVCEAAAhCAQNsEGD1vmzjtQSBOAufG6RZeQSA9AiTo6fVZRx7TLAQgAAEIQGASAovq1epSBAIQKJvAfxX+GVIEAhAIQIAEPQBETAQggAkIQAACEEiNwE5yeCopAgEIlE3gawr/KSkCAQgEIECCHgAiJuIngIcQgAAEIBCUwGtkbTspAgEIlE3gDoX/RSkCAQgEIkCCHggkZoomQPAQgAAESiOwlQKeUYpAAALlEnheoW8gRSAAgYAESNADwsQUBJohgFUIQAACURHwtPado/IIZyAAgbYJeMf2jdXobVIEAhAISIAEPSBMTEEgSQI4DQEIQKAagY/odm8QpwKBAAQKJbCj4j5HikAAAoEJkKAHBoo5CEBgUgK8ggAEsiPw+ewiIiAIQKAKga/r5m9KEQhAoAECJOgNQMUkBCDQGgEaggAE2iXwNjW3qhSBAATKJHCewv6cFIEABBoiQILeEFjMQgACORAgBghAYDICjJ5PBoSXECiIwE8V67pSBAIQaJAACXqDcDENAQhAoCcBPoRAWgReK3e3lSIQgEB5BM5SyE7OX1CJQAACDRIgQW8QLqYhAAEIdEmAtiEQmMCnA9vDHAQgkAaBk+Smd2xXgUAAAk0TIEFvmjD2IQABCORJgKjKI7BTeSETMQSKJ3CICPjh3MsqEQhAoAUCJOgtQKYJCEAAAhCoSoD7IyPwSfkzvxSBAATKIXCsQt1XikAAAi0SIEFvETZNQQACEIBAJARwoyoBdm2uSoz7IZA2gTPlPptCCgICgbYJkKC3TZz2IAABCEAgewKZBbic4nmvFIEABMog4KPUWHNeRl8TZYQESNAj7BRcggAEIAABCPQg0PZHjKK1TZz2INAdgZ+p6fWkCAQg0BEBEvSOwNMsBCAAAQhAIE4Ck3i1kF5tKEUgAIH8CXxfIfootf+pRCAAgY4IkKB3BJ5mIQABCEAAAgkQ2Fs+TiMNJ1iCAARiJPBNObWZ9CUpAgEIdEiABL1D+DQNAQhAAAIQiJjA6+Tbp6RJCc5CAAKVCRysGp+VcpSaICAQ6JoACXrXPUD7EIAABCAAgTgJePR8ujhd68wrGoZAbgR2UUD7SREIQCASAiTokXQEbkAAAhCAQLIEXivPF5S+RfoO6fulKzWgH5TN5aXLSt8qXVT6eulc0lmlIcU2twtpEFv9EOAeCLRGwKPlW6u1Y6QIBCAQEQES9Ig6A1cgAAEIQKAxAnPI8iLSZaQfkK4pXV+6uXR76W7SfaWHSY+Vniz9gfRc6cXSK6Q3S++WPix9QuovuNZ/6fqv0julN0h/K728Af21bF4tvVF6h/Re6YPSf0iflNqvGVSGEEbPQ1CMzQb+QGA8gRdUbCA9RYpAAAKRESBBj6xDcAcCEIAABEYlMLs+eZN0BenaUq+P/oJKr5/0BkdOqC/Q699Jb5M6eX1KpZPox1T+WXqT9DfS86VnS0+XniA9SnqQdC/pzlKPLG2k8mPS1aQrSpeWLib12uzXqIxN/IDhuQBOzS0bXo+qAoFA/wS4MxkC/rvmv3/JOIyjECiJAAl6Sb1NrBCAAATiIuBp4Z6u7QTYybAT4wPlohNmf3n0KPStev13qZPsf6v8k/Qq6c+l35EeId1H+hmpbayh8r3St0s9/XsWlSXIHxWkeaioLZ5NEGokvrYzGIDAKwQo6hPwzJ93yYwfZKpAIACBGAmQoMfYK/gEAQhAIE0CXre8pFz/sHRLqUejj1Z5hvSX0uul90mfljrh9rRwT9f2FHKPfntquTcr8pRzTz/3Ou4ldO+8UqQ3gT17f9z3p56lsEPfd3MjBLIhkH0gftD5HkXpv8MqEAhAIFYCJOix9gx+QQACEIiHwIxyxYny6io9rfxLKo+X/kTq0ez7VTrh9lroW3R9kfRUqddzf17lptL/ky4nXVg6sxQJR8Dr438WyJxHz0uZdRAIGWYg0AeBbm/xfhUeOfdMm249oXUIQGBMAiToYyLiBghAAAJZE5hK0XlNtXcH/6Su95AeJ3XC503RvHb7P3rtqeYXqvQ06kNUeo3yOiq9HnwhlUh3BD4XqGkn5n6gEsgcZiAAgbYI9GjHf8ffrc+9J4cKBAIQiJ0ACXrsPYR/EIAABOoT8Ii1j//ytHFPOz9JJi+TelTlJZXe/du7g/9Q10dKd5R+VOpN0bz7uS6RSAl4aYA3vgvh3q4y4iRdBQIBCGRA4FLF8D6pH7SqGFioCAEItEiABL1F2DQFAQhAoEECXv/t9YWbqA2v4/6uSu9m/ohKr/n28V/eeM3TzrfRe6tIF5Ui6RLwzIbdA7nvxHyXQLYwAwEIdE/Af++9tMh/J7r3pqcHfAgBCExMgAR9YhpcQwACEIibgKejO6leU256rfDJKp2E/0ul139fo/J7Uu+EvplK72Y+j0okTwJfVlh/k4aQnWTEG8SpQCAAgcQJ+NhJL1l6MfE4wriPFQgkRoAEPbEOw10IQKAIAtMrSu+G7i9Y++v6TKnXEXokxNPSz9fro6RbS52Ev1YlUhaBBxSulyOoqC3eBNDT22sbwgAEINA5AZ/o4D1COnekFAeIEwKhCZCghyaKPQhAAALVCLxBt3u99xdVelf0u1Q+J/Vu6F4TfoCuN5R6PfgMKhEImICPQvufLwKobXmJRABTmIAABDoi4NFyn5gR6sFdR2HQ7GQEeFkgARL0AjudkCEAgU4IzKRWveP5dip9RJmPxnpc13+Resf0Q1V6V/TFVSIQ6EXgt/rwPGkI8QaCe4cwhA0IQKAzAp5d5fXm3+/MAxpOlABux0iABD3GXsEnCEAgdQLe+Xx1BeFR8Z+q/LP0GelV0m9JPf1wRZWzSREIVCXgEe+qdUa7/wv6gCUSgoBAIFEC3qHdO7V7x/ZEQ8DtbAkQ2EAESNAHwkYlCEAAAhMIOBlfTa88CvljlR4R9xemC3XtUfGPq1xEikAgBIETZeQ2aQhxYu7NBkPYwgYEINA+gfvVpM849x4lukQgUBaBXKMlQc+1Z4kLAhBogoA301pVhidPxi/We95Rez2VXlOuAoFAcAL/lkX/7qkIIgfJiqe4q0AgAIHECNwuf98l9cahKhAIQCAwgc7MkaB3hp6GIQCBBAh4Cro3cPuKfL1W+qTU0whJxgUCaZ3A7mrRSbqK2uIHSZ+pbQUDEIBAFwR+o0a9p4mP19QlAgEIpEdgdI9J0EdnwycQgEB5BOZWyD7a7DiVf5A6GfIGbk6MPI1wGr2HQKALAler0VOkoeRwGZpaikAAAmkR8L9JXlb1VFpu4y0EINAvgSAJer+NcR8EIACByAh4FHFj+eSN2/6k8lGpjzbbUeVS0qmkCARiILBNQCfeIVsbSBEIQCAtAifIXe9rEuqIRZlDIACB2AikkKDHxgx/IACBdAm8Wa470fmuSm+u4w3dfCyNjz57k95DIBAjAS+xuCOgY0cFtIUpCECgHQKHqJmQJzjIHAIBCMRIgAR9KMZuwScIQCAQAY+C+wuNR8W9Vu+PsnuSdDPpQlIEAr0IPKIP75L6eDyv+RxWv6+3W5EH1coB0lDyIRlaWYpAAALpENhFru4rRSAAgQIIkKA33cnYhwAE2iSwtBrzsVE/V+n1415H/g1de135XCqRsgj4ocw1CtlH3vkhjR/OePTYX3Q/r/e3knrnfe/M7z0GFtfr+aTerd/LG3z9Vr1+n3SlidTvL6zX/tL8rMomZScZ/480lBwdyhB2IACBxgm8rBa2lh4jRSAAgUIIkKAn3tG4D4HCCbxG8TvBOlXl36Q3S52Ara1ydilSBgGPbHsfgV0V7prSt0mdYM+j0jsdr6FyQ+mnpXtIPVX0WJWnSX8i/ZX091LvQ+DR8ed0PZb8VTf4S7OTfl02Ij6+79yAls1giYD2MAUBCDRH4AWZ9l4RITeHlEkEAhCInQAJeuw91K1/tA6BGAl42voX5JiTsidU/li6pdSjmiqQQgg4ifYIuB/EeHR7e8Xt0eFfqrxT2pbc0mBDHj0PZd47th8Wyhh2IACBRgn8V9Z9xOfZKhEIQKAwAiTohXV4XOHiDQT6IjCL7lpHeqL0AamnrR+h8gNSpFwC31boHgH3QxpddiZeStFE454J4hH9ULY/I0M+tUAFAgEIREzgGfnmY9T8sFGXCAQgUBoBEvTSerykeIk1ZQLewM1rhC9VEE9JPQ3Z05MX0DUCARPwxm0uu9Z/NuCAp9kfGNDuzLJ1kBSBAATiJvC43Pug9AopAgEIFEqABL3Qjifs+gSwEJzAsrK4n/QmqY9A83Rlb96ll0hDBLzBmXlfIPunSw+XOjG0XqTrmMVrwGPw78kGnNhLNp+WhhJvnPjaUMawAwEINELAm1o6Ob+hEesYhQAEkiFAgp5MV+FoYQRKCXcVBfp16X3SG6VODJdRiYQj8JBMXSk9Q+pRVK/Xf7+u55fOJH2H9CNSv7+3Sh/pZV1f1x7NURGleBpoDI6FTtCvV1Ceuq8iiPj0Am+MF8QYRiAAgUYI+DjF98pyk3tayDwCAQikQIAEPYVewkcIBCfQmUEnhB9X62dKvXb4MpXeCMtHVukSGZCAd68/S3U9Ar6dSq9ffLNK72TuZQFOyDfX6/2lHil3wu5d7/VyVPEI7vdH/bT7D2L59yv0Qwz//xCSrjeG8z4OIW1iCwIQCEfgbpnyUY73qEQgAAEIDMXyBYeugAAEciIwaSxOyjfSW15H7lHPn+raxz35iDRdIgMQ8Lpnj7JuqroeIfXyADP2CLg3T/PafX/p08e15LpatZut7N+rZlvoz/pj/d3W113f013XSEOJTzzYOpQx7EAAAsEJeMR8RVmNZcmOXEEgAIGuCZCgd90DtA+BPAk4efqEQhtOyn+ga+/ErqK+FGrhXsV9qHR56dxSHzHmEe5/6bop8Y75Tdmua3fWugYiq+8ZC6Gnop+sGD2LQgUCAQhERsAP47zm/NHI/MIdCECgYwIk6B13AM1DICMCMyiWiZPyH+l1ikm53I5KnIDvKI8Wk+4jvVbalvyxrYYGaCemTc/cRwOEMEkVr/v/+yTv1Hvh2RXvqmeC2hCAQEMEvLzrQ7IdeomMTCIQgEDqBEjQU+9B/IdAtwSGk3Kvf/ZUX5LyMfuj0g23624n5ser7EKeU6PeWVhFdPK6iDzy6Hcdd+5S5a9KQ4lnsBwZyhh2IACBoAR+JmvemNNLvnSJQAACEJiUAAn6pDx4BQEI9EfAu82epFu9FtpJ+Qa6nlGKhCXgJQLVRljCtm9rj/hHhPqGiHyqm6B/NnAsPq4wpgcYgcPDHASSJeBlST4h47/JRoDjEIBA4wRI0BtHTAMQyIaANyPbXdHcIf2ddBvpzFKkOQJ3Nme6b8ueGTHh5oguPEocizsv1HDkbNW9XBpKFpWhXaUIBCAQF4Fvyp3NpHX+Xqg6AgEI5E6ABD33HiZS+EZQAAAQAElEQVQ+CNQnsLZMnCv1VOevqHyrFGmHgJm309Lorfg4vNE/DftJFWtTV7m54Xv/N6D9Z1VvF2lIOVbGppUiEIBAPAR8BKZnyrwcj0t4AgEIxEqABD3WnsEvCHRLwOue/YXiYbnxc+nHpEj7BGJYo1h3+nZT1AYYhWrKlaFBfTlYHj0kDSWrytBaUgQCEIiHgI+/tMbjEZ5AAAJREyBBj7p7cA4CrRLwGvIt1OKVUp+hvadK1rEKQocy6MhsSJefD2ksoC1vYBfQXC1T4/upmgkfm3dYtSo97/ao+bd73sGHEIBAmwQ8Wu5Rcz/sbrNd2oIABBInQIKeeAfiPgQCEFhSNk6U+izW01S+T1qSeATznkgDfjECv2JN0P8TAZs6LuxQtfIY939On3v9uQoEAhDomIBn1Xi9udedd+wKzUMAAqkRIEFPrcfwFwJhCHiDrW1l6jrpLdJPS2eRliAXK0hvdvcelbNKF5C+Sdrm+eJqri+JYZ21v2j25WzLN8U09d6j11XC9zFLF1WpMMa93sDRO7ePcVvPj/kQAhAIQ8A7tHundu/YHsYiViAAgaIIkKAX1d0EC4GhxcXA02A9Wu7yXXqdu3jH+UMU5IekU0lXl/rMaT+cmDjJO0PvxyYx/I32NM3YuNifp/wjEp2+oh8e7a5YpeftR+lTP2xSEavgFwSKIOB9Qz6iSP0QTgUCAQhAoDqBGL78VfeaGhCAQFUCq6jC+dK7pB45z/l4tF8rxoOkjtkzBVbU9b7Sy6S95K+9Puzos6ojs024GWuCPvHDlSbirmKzSj/tL8P3S0OJH7J574hQ9tK0g9cQ6J7Ak3LBD4LH+rdGtyEQgAAERidAgj46Gz6BQA4EvAbuZgXiLwxrqsxRHldQx0tXknqEfGWVToJ8trSPsdLLvuRvfd3V7k1VR2ab8G6aJowGsBnTGnQ/COonJCfmR/ZzY4V7Tq5wL7cOSIBqEBiDgP8der/uuUaKQAACEKhFgAS9Fj4qQyBKAq+RV7tKfUTad1UuLc1RfPzbhgpsDumO0t9I68g/6lRuqO4MDdmtYjbWBN1TSavE0eS9XgPej/2ddVPI3ee3kb2lpEjaBPA+bQL/kvveXNX7uegSgQAEIFCPAAl6PX7UhkBMBOaWM16L6l3JvcY6tyPSPBr+U8XopNzrbT+m6x9KQ4lHQELZCmUnhgR9ulDBBLYTMtGt65ofio1l40Ld4IdKKoLI7LLyFSkCgTEI8HGDBLyfywqyf4cUgQAEIBCEAAl6EIwYgUCnBLwL+XHywNNnd1OZ227sf1ZMu0jnka4rdVLexPrjmDYdU5jjpN+p0+NubuhHrPsVxHAEnZHP7x9j6P/0eehj1Y6QTSfpKhAIdEig3KY9S215hX+3FIEABCAQjAAJejCUGIJA6wR8NNgpavUBqad4z6gyJ7lKwTghf6PKY6RNJOUyO0Fe0lVsSXoMa9Bj8EFdM4U46Z3izQ7e6Gemited+0FTKPfeKUPe7FEFAoG8CUQanTcV9cj5XyL1D7cgAIGECZCgJ9x5uF4sgSUV+Q+kf5JuJc1NvLmbd6b2mj5PaW8zvpjWNTvuGKa4ezmBfYlNq+yc3qTvy4xh/EF9fqg0lHgjRD+YcxnKJnYgUCqBQeJ2Uu7k3En6IPWpAwEIQKAnARL0nnj4EAJREXiDvDlD6o1oNlKZq5ymwK6XdiEx7Qzu+GP4G93P+mr72rbGMmNkrATdGzZ6/4RQfLaXIT+kU4FAAAItE/B0dk9r9/T2PprmFghAAALVCcTw5a+619SAQFkE5lS4nuLtp/ab6jp36fLvEiPoU/52xbqnQSxr4z3bY0pq49/xbJCzx18G+end4kOOxgdxCiMQKISAN4LzyLk3hosjZLyAAASyJNDlF+EsgRIUBAIS8AjhfrJ3n/RzUqR5AiFHOkN4O28IIzVt+AFRTRONVF+wEavVjHqDxvf0qPLZHp8N8pF3bWdjuEHIUQcC9Qh45pqXXflItXqWEqqNqxCAQDcESNC74U6rEBiLwHa6wZtKHagy1hFMuZadxHR0l+HG4M8cdiRCXTgCn9br4YOT6bt6fF71I28Mt2XVStwPAQjUJnCDLLxfGuNRnHIrWcFxCEBgFAIk6KOA4W0IdETgo2r3j9JvSeeTlihdHp8Vy87gw/3+z+GLjkpPqe6o6TGbXXnMO5q7YTaZ3kO6p3Qk+bvePEgaSqaWIW8MpwKBAARaJHCF2vqg9EkpkhQBnIVAugRI0NPtOzzPi8BbFc6F0p9J3ywtWV7uMPjYEvS/dcjCTc/jH5Hq2+TXe6WhxcsK3iGjH5OuJF1T6qnqR6j8udSj4h5J89Fpox2xtpvuC3ksoI9RZGM4QUUg0CKBy9TWatLY9iaRS0jnBHAAAg0SIEFvEC6mIdAHAU8fPlb3efOZ1VUiQ0MvdAihy9H7kcL2EV0jvd/We69vq6EB2/md6nk5iB9qvUXXTqiH1bNRdtZ7TqwPUDmxnqTXF0h//YpepdJ7PfjhkEe/PaX1XL3nTd7OV3m89AvStaWLS3vJlfrQxyCqCCKexXBwEEsYgQAE+iXwS924hvS/UgQCrROgwbIJkKCX3f9E3y0Bj4rdIxecRKhAIiDQ5cOBkcJ/ZKQ3W3zPR/u12NxATXk5iJeF3KnaTqiH1bNR/PDLifX++mxi3Uav/eXbU1et3pk51Jp2j7bLfDA5WpZmlSIQgEA7BM5RM545E9uMKrmFQCAIAYxEToAEPfIOwr0sCayqqDxN9jiVr5UikxLwKOak75T7ylOpu4x+sS4bT7Bt/z99a0C/PYW/hKMVAyLDFARqEfipam8gRSAAgYEJULEuARL0ugSpD4H+CcytW8+UXioda5qsbkEgMPRSxwx8jFjHLiTTvDf0+1JAb6eVLTaGEwQEAi0RcHL+CbUV21InuYRAAAITCBRwQYJeQCcTYhQEtpcX90o3lCK9CXSdlPb2rt1Puzpizxsjee32xu2Gm3Rrnkr/VMAIPidbPMgTBAQCLRD4kdpYV0pyLggIBEomEEPsJOgx9AI+5EzgnQruJukJ0ljXkTqpsH8HykfvUq2iU+lyiruPs+o0+MkaX2qy10299LILb0TmdduPqZGLpU44VSB9ELhW95wqDSWeuRDymLZQfmEHAjkS8Mg5DyNz7FligkB8BPryiAS9L0zcBIHKBGZTDSe9v1e5jDRGeUhO7SqdX7qD1Ltc+2gpv6+XRcp0kUX98cD+eCM0b4r2Rdm9SPpnqR+IeNnFPrr2zuc+WUCXSAUCoTeG81r2GSu0z60QgMBgBJycM619MHbUggAEGiIweILekEOYhUAGBNZRDN5V2tPadRmdPCyPnJB7lM47RD+t1xPL3RO/6OC6y79L03cQb68mt9aHi0qriqdGf0iVtpUeJvXRX07EfZSYjxY7VO99WLqIFKlH4ERVv1EaSnzcYugHM6F8ww4EciJAcp5TbxILBDIi0OUX4Z4Y+RACCRKYUz57E7ifqJxXGpt4ZHwnOfV6qUf3VYwo/x7x3fbe7PLv0kzthdl3S5fozgWlk4uTcD8M8sZkp+vDK6R++OJE3KcEuN639d5e0vdJkfAE/iWTe0tDiR8QnRzKGHYgAIFRCZCcj4qGDyAAga4JdPlFuMvYaRsCoQn4WBaPmse4Cdz9CnY7qUfMv6FyLOn6aK+pxnKwwc9j3CfAI+h/VcxOvCdWJ+F+GHSIPttcuqL0dVKkPQJepx/ygdb+ct3/n6pAIACBhgiQnDcEFrMQgEAYAiToYThOZoWXBRHw0WneWOssxewRdBXRiKeqbyVv3ij1SKqKvuTJvu5q7iYfL9Wc9d6WWX/dmw+fvkrgBl2GPAbNMyL2kE0EAhBojgDJeXNssQwBCAQiQIIeCGSrZmgsFgLe9dWjmN5YKxaf7Mef9GMT6Zulp0mrHhvzjOp0KV3upB7j0oQu+4K2Ryew5egfDfSJd4GfZqCaVIIABPoh4AfpbAjXDynugQAEOiVAgt4p/jgbx6sxCXiH9nN11/elr5XGIp5i7y8fHon7QQ2nnqtRN0TVrkbQ5wvhPDaKIHCUorxNGko2laEVpAgEINAMASfnfqhe9YF1M95gFQIQgEAPAiToPeDwUSMEUje6rAK4RerjyFREId6F3Wthl5A3P5bWlefrGqhZv6ujzjzjoKbrVC+AwN8V437SUDK7DB0jRSAAgWYIDCfn3sOjmRawCgEIQCAgARL0gDAxFQOBRn3wDug+TmmhRlupZvxs3e7E8isqX5CGkFITdD/gCMEPG3kT8BGFzwYM8cuyFdv+FXIJgUAWBEjOs+hGgoBAWQRI0Mvqb6IdjIB39nYi/PWhweo3UesfMuojtj6p8m/SkPK/kMYGsOWjpgaoVrvKSrUtYCB3AhcqQO+cryKILCcrn5EiEIBAeAIk5+GZYhECEGiBAAl6C5BpImkCy8j7m6XrSxuXPhvwLrQeNfc6+D6rVLqt6zV6M1fyNszN3u1+7TCmsJIpAe/N8NnAsfl0hS6PFQwcDuYgEA2BM+TJRlKmtQsCAgEIpEWABD2t/sLbdgn47PCb1KTPoVYRhWwvL9aVDnJWuar1JaGmyvfV2Ag3zTTCe029taMMPyj1cVkzqEQgMBqBQ/XBX6ShxEtm3hHKGHYgAIEJBLwXS+hTFiYY5wICEIBA0wRI0JsmjP1UCXxDjn9LGpNcImfa8GnAEQd5F0a8aVYYSyNb8aiKlyz4IcdxuuX1UgQCvQjcqw8PkYYSnxjgteeh7GEHAhAYT8DJ+Ya6fEmKQAACEEiSAAl6kt2G0w0S8OjtebLvjaBURCVNJ67DwXY9xX2OYUcmKeu98BFWfujymMz4CDovWfBxeXqJQGBMAtuOeUe1G76m22eRIhCAQDgCXv7lo0a7/jcsXERYggAEiiRAgl5ktxP0KAQ8qvU7fbaWNEZpK6HsegR97kDwPX34cNnytOSrVPqhy6jJvz5HIDASgTP15uXSUOLNCD2LI5Q97EAAAkNDPxcEb5qqAoEABCCQNgES9LT7D+/DEVhSpm6QelM4FVFKKQn6/APS91FV3ujNSfl9suH+3FPlG6RdC+2nSeAZub2bNJT4hALvdxDKHnYgAIGhIZ+usJ5AdL1/ilxAIAABCNQnQIJenyEW0iewmkLwyPmgiaGqtyLzttLK0FDXa/cWUZwzSvuRt+mmXaVXS/8p9SiKk/KFdV2QEGpDBPaW3ZDHGO4je/79VoFAAAIBCPxKNj4mJTkXBAQCEMiDAAl6Hv1IFIMT8NrSi1V9VikSD4EPjuLK4nrfU9W9ydu/dH279KvS5aVIUwTKtHujwvYmgiqCiH939wpiCSMQgIAJODn/iC6elyIQgAAEsiFAgp5NVxLIAAT2Vx2fQ6wiGWljo7iu16C7M47QDx9vt4ZKr9l1Ev5nXd8l9WZv3uTttbpGMiAQaQjbB/brVNmbRopAAAL1CVwpE07On1OJQAACEMiKfQJe2QAAEABJREFUAAl6Vt1JMBUIODE/oML9sdzaxlndMfxdWErAfbTVBSq9QZensTM1WDCQygQGqfAtVbpOGkq2lCGfJKACgQAEahJwcr66bJCcCwICAQjkRyCGL+L5USWimAlMK+fOlXpqu4rkpN+12ckFhsMQiISAl0547Xmf7ox5m2e9HDXmXdwAAQj0Q+Ba3eTk/D8qEQhAAAJZEiBBz7JbCWoUAj53+BJ95g1lVCQp3gW6acdjmOLedIzYh8BoBDxb4/HRPhzgfZ957hMGBqg6NDRELQhAYJiAk/MP6QXJuSAgEIBAvgRI0PPtWyKblIDXK1+ht0bbfEwfJSFtjKBPlQQJnIRAeAI+DeC7Ac16WvtWAe0FN4VBCCRCwJs2Ojl/OhF/cRMCEIDAwARI0AdGR8WECPjILa8nXSYhn0dztY1NphhBH40+7+dO4FMBA/T/q94YLqDJ5EzhMARCELhVRlaRkpwLAgIBCORPgAQ9/z4uPcJ5BMBHsbxRJQIBCEBgNAJH6gOfEqAiiOwpKz5aTQXSDAGsFkDAyblP8niigFgJEQIQgMA4AiTo4zDwI1MC3pzJybmP68olxDamn7fRRi79QRx5EHhQYYQ81cEnDuwjm0jKBPC9awJ+YLaynHhMikAAAhAohgAJejFdXVygMynii6Vvl+YkL7UQDFPcW4BME1ER2EHePCsNJafIUBtHIqoZJFUC+N2TwAP61HvG+FQFXSIQgAAEyiFAgl5OX5cU6XQK9nzpu6RIdQKMoFdnRo10CVwk138uDSUbyJCn5KpAINAZgZQbdlLu/4ceTTkIfIcABCAwKAES9EHJUS9mAj+Wc/7HXUV20sbo9ovZUSMgCIxM4Dm9va00lMwqQ8dIEQhkTqCx8LwR3Gqy/mcpAgEIQKBIAiToRXZ71kF/X9GtLc1V/ttCYM+30AZNQCAGAgfJCU+lVRFEDpSV+aQIBCBQnYD/7Vld1W4a0g8EAhCAQKkESNBL7fk84/YuzBvnGdqEqP4z4aq5i9c2ZxrLEIiGwB/lyWHSUPIWGdpZikAAAtUJeH+V9VTtKmnjQgMQgAAEYiZAgh5z7+BbFQJe97lHlQqJ3htyI6vJEcyrN34k/ZYUgUDuBLYLHODJsje1FIEABKoT2FpVfiHNQYgBAhCAQC0CJOi18FE5EgJLyg/vmqwie2lqivsWInen9BNSBAK5E/BSmN8EDPKTsvU+KQIBCFQn4CMJT6terdQaxA0BCOROgAQ99x7OP77ZFOLPpD5WTUX2EnqK+xtE7AKpvxzNoRKBQO4EnlGAu0lDif/2sDFcKJrYKY3ADxTwoVIkFgL4AQEIdE6ABL3zLsCBmgQ8JXuRmjZSqu5dp0P462T8azL0F+kaUgQCpRDwUphHAgbr0b/XBbSHKQiUQsCzWLYsJVjiHE+AnxCAwNgESNDHZsQd8RI4RK59WFqK/DNAoB7t21N27pXuIkUgUAKBJxTk3VI/0PumylCyqAztLkUgAIFqBPz/40dV5X9SBAKhCGAHAlkQIEHPohuLDOLjivpL0pLkXzWDdUJ+n2wcLvUIugoEAlET+Le8827rHmk7R9dOrn2U2Q669n4Jq6hceQRdSe8tLZ1fOpV0dumbpd5MUkUw+bYsTStFIACB/gn4/2s/XH+y/yrcCYEYCOADBNohQILeDmdaCUvAo1bfC2syCWv+UjOIo5uo0gNST2mfWyUCga4IeA8FPyS6Tg54x2Zv7vhlXe8q3VS6mnRZ6eulTqx95J+PL3PCvb7e+6z0AOkJ0h9LL5f+egR1Qn+L3v+btClZW4ZXlSIQgED/BLzR6Ud0u/8OqEAgAIEJBLiAwCsESNBfAUGRFIEz5e3M0tLEyU2VmD2CeIUq+GHGAioRCDRJ4DEZv0l6rvTrUm/E5qR6eV37oZoTbv9/6z0j3qP3nOD6aCXPhDlar72z+qUqb5Y+LI1Zppdzx0sRCECgGgE/ML66WhXuhgAEQhDARjoESNDT6Ss8HU9gfxXvlpYoL/YZtBMgJztOdFbssw63QWAsAg/qhqukfkDmXZe31/X/SZeQziidU/oO6TrSz0k9Y8PT0q/VtTcjVJGNeKO5BbOJhkAg0A4B//vtvwnttEYrEIBAmwRoKyABEvSAMDHVOAGPxHl6a+MNRdrADGP45WnBJ+meP0s3liIQqELgId3sEezvqPQXae+u/EFdD49+OyF9n177d8s7l39L1xdJb5eGOl1ApqIXc3D80TuKgxCIiIAT84Mi8gdXIACBpAiU5SwJeln9nXK0nhr7g5QDCOD7m0ax4Y2wvqHPPMK5jUoEAr0IPKoPL5MeJ/2M1LMsZlPpZRBeA+7fIX+RPl3v/Vaa2+i3Qqolx6i2p7irQCAAgT4IeD8IT23v41ZugQAEINABgciaJEGPrENwZ1QCXtPqqduj3lDAB/MpRk8hVjFBvMGWRz69q/WEN7mAgAg8LnWC7ZHuHXXtjda86dq8uv6QdGfpidLfSdlNWRD6EG8Kt24f93ELBCAwnsDfVawu9eZwKhAIQAAC5RGoGjEJelVi3N8FAR+p9qkuGo6wzVPl06elG0k9lX1vlUjZBJ5W+F4bfrLKz0s9Cu5ZFT5Kz1PUvVbcG5p5Z/NBTwKQWUQEDpMiEIBAfwS89MU7tjtJ768Gd0EAAhCAwFDFBB1iEGidwKxq0euqVSAisJTUo56e7l/6jAKhKE6eUsSenn6wSn/xXUil/x/x2vBtdX2s1OvImzxeTE0UKx49/0mx0RM4BKoR8NGJN1arwt0QgAAEIBBXgk5/QGBKAl4LO9eUb/MOBLIn8JIi9AZs3rTNyfeSeu214p6evp+uL5A+IEXaI+B9HtZTc2tJfa0CgQAERiDgh4jeGG6Ej3gLAhCAAAR6ESgqQe8Fgs+iJLCYvGJttSAgRRB4TFE66Xby/WFde4q6jzDzpm2evn6b3ntZinRP4Hy58BbpV6UIBCAwKYFz9dJ/x1QgEIAABCBQlQAJelVio9/PJ+EJ+MvvtOHNYhECnRN4UR7cLPUGbluoXFw6p9TT1j3ydImu2bhNECKWZ+Tb7lIvO7leJQIBCAwN+UGij2KEBQQgAAEIDEiABH1AcO1XK65F7zj90eKiJuBcCTyhwH4m/aLUv9uvUbms1Bu4fVfln6RImgRuldvvlrov3c+6RCBQJAHPAlpTkT8rRSAAAQhAYEACJOgDgsuuWlwBTSV3vOu0CgQCSRLwzuq/lOd7SJeT+ngzn0bgXcC9m/p/9B6SDwEvPfBsiDcrpLOkCARKI+A9Mz6moNkXQxAQCEAAAnUIkKDXoUfdvglUvHFr3f82KQKBVAj8V4468d5f5fulXj/ukaSjdO1djP3lVZdI5gQeVXw+AnF1lfdLEQiUQmA3BXqlFIEABCAAgZoESNBrAqR6cAIzy+KXpVWEeyHQBYFr1egR0uEN3Tx13acO+EvqC3ofKZfAxQr9rVL/LfufSgQCORP4oYI7RhpKZpCh06RbSeeVIhCAAASKIkCCXlR3JxGs/0GeOy5P8QYC4wh486OjdeWp6l5Dvryu95J6QzfWXAoEMgkB/058Se8sLb1GikAgRwI3KShvdKkimHjmkW2eIot/l94gPUDqv7kqEAhAAAJ5EyBBz7t/U4xu5xSdruUzlWMlcLccO0m6gXQe6ZLSXaXe7O0plUizBOaSeR9l9j6V60i3le4t9ekOp6v0UWdXqbxX6iRhJpUxyp1yagXpp6WPSxEI5ELgHwpkLamX+KgIIj7JYvLjVd8hy14+dLVKb0R3pspNpLNJEQhAAALZESBBz65Lkw7I/zC/KekIInQel/om4B24f6K7/eVwEZXe8MtJ1Y907S+iKpCaBBZSfSer66v8nPRQqR+C/FTlb6V3Sf8p9aZrZu7k1ksG3C/f1vueMu6HJJvr2mv8bWtRXbufYt94z3H679sZ8heBQOoEvK+GT1p5OGAg/vvgUy16mfT+Hhvqhu9J/cDLy0n8/7834tRbCAQgAIH0CZCgp9+HOUXw+ZyCKSSW1MP0CKynTr5XgcwuXU96gvQ+KdI/AX859gyD/1MVb/K4j0rvan6eyt9LH5E66fbGaWZ+tl57zaqPndtG11424M31Ftf1nNIqcrBudhsqohc/fPDDhVXkqWdoqEAgkCQB/z8eeunGuSLhvyUq+pbVdOeJ0n9JL5X6Aev8KhEIQAACyRIgQU+267Jz3Lu2fyi7qAioJoHg1Z+RxXOkW0o9PdLTpw/UtadOqkBGIOANm/z/p0esd9Ln3hjPU0w94n2PXnuttb8c36JrHy13skonzdup9PTXd6r0EgEVwcU75O8X3GrzBi9XE0tI/XAo5PRgmUQg0DgBJ8I+MjJkQx45X7amwVVV/xvSh6TXSfeU+v8zFQgEIACBdAiQoKfTV7l7yuh57j3cXXx/VdM+V99HX82ia0+v9hrmJ4f0AhlHwDslf0BX3qTRybWnj/5Or/8mdQJ+u0qv+f66yi9IPcXUI95v1LUTeBWty3Nq0UeaqUhSnpfXfji0lEon7CoQCERPwLOLPhHYS496bxbY5rtk73DprVIvnTlSpWdKqUAgAAEIxE2ABD3u/inFO68pC/2PcynsiHNkAt44zF/OltPHC0t3lHqtoor2JMKWvK5+bfnlJNs7JDsJ9zpO75T8G73v9zx11Rsw+cvsfHovVvHo2J9ida6CX47BU979sCHket4KLnArBPoi4CMDve7cfzP6qtDHTd5HwqPefdw68C1eOrOHavvvnZeZeD8LP5DUWwgEIACB+AiQoMfXJyV69BkF3dUonJpGMiHgkXLv8P1uxbOY1Dt+ewq0LrOU0YKaWR/4wcSmKg+Rekq/R8C9BvyPev1zqaepe7TcSbin+uutpMQbx3k0Pymnx3D2LH3uRMK/wy/oGoFAbAS8xMUj0qH88kkN3gAylL1+7HiPC58I4QeS/jfDI+veJb6futwDAQhAoBUCJOitYKaRMQh45GiMWyp/fG3lGlRIkYBHHH02udeSe6R8dwWRyoZhcrWW+Cz2lWVhe6k3XPMMgQd0/bT0eql3C/c53Ovq2mvIVVSRqO/9VNTeDe6c+86/w5727ocQg1uiJgTCEvi+zHkzNhXBxJtFdjlLZ0FF4pH1G1R6Jov3s/BJC3qJQAACEOiOAAl6d+xpeTwBr2H17s/jX4X56aTNu0eHsYaV2Aj8Ww55I7IPqny91MdueWdwXWYr/tLonc49Iu4RcI/8+Fi4Xyli7zrvI8u8m/ECep2GDO7lXqoacgd0j6B5w6uZZDcW8fFyXuPvHd+9A34sfuFHmQS8httHmYWM/jsytpI0FvHfWO8J4UTdCbuXAfnfl1j8ww8IQKAgAiToBXV2pKF6dC+0a05YvFYutF3sdUfgSTXtdYMfVuljeDxF0buI62V24tFTHz3mKdx+8OBRVX9p9FnhHhH3GnKP/GQXeB8Bead4T88f89Y+b/AUW+9P4KTfSUhMCZCRhGMAABAASURBVIND8CwIL9f4ml4w7V0QkNYJ/Ect+t9pl7oMIt4/IuZZMJ7y7r8zDypan0zxSZUIBCAAgdYIkKC3hpqGRiGwzijv13n7JFV+SYqkTcBHovnoHR/v5XXSPrbrkrRDmsJ7T8v3l1+P4npNpL8E/0F3+XfY6z29gZLXlOstRAS2kIYUT2+d8RWDfujh3dS/qdezSntJm5/5Ac1uanBpaa4PpRQaEikBPwz1jI5Q7vnffG/gGcpe03b+Tw38UPqo1H+n36oSgQAEINAoARL0RvFifAwCXnvmBGSM2yp97A2x/A+pN8SqVJGboyDgI728WdZ68sZHojkh8wiGXmYh3jnYo+Cepu6d031kkX9nnSj6s+FkMYtgAwfhaeg3B7Q5t2x59FzFJOJNK72Zno/jm+SD9l6M2NIdetfLOrz5n3939BKBQKMEfKrDDwK24IdMIe0FdG1MU/574b/T/v/wat3tWU7+N0qXCAQgAIGwBEjQw/LEWjUCHjmsVmPsuz3i6rsYQTeFdNR7Bni9raeve9PAtnf2bYKUv7ytLsNeN36FSj808ii5X3uaus8e19tIHwTu0T1flIaUQ2VstHXnr9Nn3sDKD4e8T4ZeRiPerMu7vR87sEdUhMDYBHzyw0gPsMauOfId/nv3C32Uw4ktyysOz3LyYIAfYni/CL2FQAACEAhDgAQ9DEesDEbAm14NVnPkWv/S2x6ZVDHEek1TiFu9md/+ctHJkM/W9Xrb5/Q6VfHDBU/f9HphH+/2lAK5UOoR8xVVIoMT2HrwqiPW9Lpuj4CN+OFEb3p6qxOVg/ReTImF92T4vHx6u9T7FKiIR/AkeQJeauN/nz2jKVQwP5Oh3Dax9IwnH1fppSc+fm5LxYhAAAIQqE2ABL02QgwMSGB21fOu0yqCiUeWho09P3xBGR2BS+WRZ094h1wnPqlO151fcWwo9eZ1TuL8gMgj/7vovWWlSBgC3rHfX4DDWBtvxcdFTTX+csyf0+uOfaXeRG4DlTGJp9v6iMHN5NQ/pSUIMTZPwBu4edZKqJb8b/N7QhmL1M4S8utUqUfVPTvH/z7oJQIBCECgOgES9OrMqBGGQBP/WH9vItcYQZ8IRgSXHk0+Rn68WeoHM96RXJdJiUcrvT7ZI/33y/OHpGdKvYnS21Qi4Qn4iDGfCx7Ssh+qrDKAQW/o5/0Rfq26PpJJRTTiv32eiu9p7y9G41WSjhTvtKdse1O0UCD2lqGNpaWI16p7OY7/ffCDCT9AKyV24oQABAIRIEEPBBIzlQm8s3KN3hUe0Me/lw4LCfowiW7L29S8pxJ7/aFHlkOeXy3TjYq/aHlk8nS14lERx+Idvr1J10J6D2megNfAPhGwGe/O7iUIdUx6ozYfe+djmOrYCV13eNq7j+n7XWjj2AtEIG4z/vvs0yNCebmGDH1ZWqr4wcSVCt5LnjwrQZcIBCAAgbEJkKCPzYg7miEQOkE/dzI3/zvZa162S8AjB153vaSa/Y405FpGmWtEvJ7Qm7p9VdZ91JmTcm866M3rnKzrbaRFAt448MeB2ztQ9rzngYra8gVZ8DRg776vy2jE0979/57XwzLtPZpuaceRmq18UvW9/lxFbfH/Z/77WdtQBga85Mn/DvrfFKa/Z9ChhACBpgmQoDdNGPujEVhutA8GfJ8EfUBwAat5St8+sudk1qPMKYzieVqwE63L5be/mHpTt1117VFIFUhHBHz292cDt+0+9SyOkGb9++Od+U+QUY/Oq4hGPPPD/nnaezRO4Ui0BHzW/ljHGFZx3sepzVWlQgH3+t9Gpr8X0NGECIG6BEjQ6xKk/iAEPN15wUEqjlLn33r/V9KJJYUR24n9Tfn6Tjnv0Trv0OvRgdhH7byW3A8SPEruEVBPVV5JMSDxEPCX2AcDu+NjkQKbnGBue135/wMfEajLaGR42rtH8K6LxisciY3ARXKo7tIPmZggfug5wN/UCfVLuBie/u6HIl5KVULMxAgBCPRJgAS9T1DcFpTAu4JaGxrypk1Dk/1Hgj4ZkAZe+qGI1xh6gzSP1jXQRDCTy8jSwVJP//Vacl97RFVvIZERuEn+fEMaUry537tDGhzBlk8l8Kih/7946wifd/mWkwBvzGkOfqDZpS+0HReBf8idkAniW2TPf19VRCZxurO03PJSAK//31rX00oRCECgcAIk6IX/AnQU/uKB2514c7hh088MX1AGJ+Adoz0it6ose0q4iijFD4IOl2ceJXfS51Hz2BInuYdMRsBr/l+e7L06Lz1j5yt1DFSsu7Lu9+yMo1TOIo1JfLycd6D3cVAhGccUI75UI+BZH07Sq9Ua/e6Z9JGXVfhvri7LkZqRLqb6J0v/LP28dAYpAgEIFEqABL3Qju847JDT2x3K9f4xmXo98WRv8bIGgedU16Oab1Dp0RaPyOkyOlleHh0p/YvUU3r3VOl1uCqQBAj4gYpnOIR09esy1nai7FEwr+n1wyH//yIXopF/yRPvKO3N7TwtXy+RQgkcrbgvk4YU71juKe7vkNE5pJ5l5Yej3vDR/z/oLaQHAS8Vc7/43zAvnRm+lRICECiIAAl6QZ0dUahtJOiPRRRvyq6Yo6crus98/M79EQbzXvnkLzR/VXm1dA+pHySoQBIg8Hf56ETR62C9y7peBpPVZMk7U6voRDx67+mr3kgu9MyhugH5+CefsuAHCd6Ur6496qdFwA/C9mrY5cdl37OsvDfJJ3Tt2RtzqvQsmfNVIqMTmE8fefNJT33fQNcNC+YhAIGYCJCgx9Qb5fjiJ8Shor1PhkZaU+kv/foIGZDAA6r3Oan7aj+VsW385vW0Tsq9kZh3i/eUQD9EkKtIAwR8PNBdsmvWv1DppPMYlftKd5R6w6MPq/T07l7qGQ5eZuAjmDwVdirV8bX3Mfg/XXumhoog4lFzTxkNYqymEY9Wm5+n2jvumuaCVX9Rlrw5mNcNn6NrpBwCfnD1fAfh+qHvGWp3Lan/X1hHpf+eeENDXSKTEfDU97P0nmcmeFmZLhMUXIYABCoRIEGvhIubAxFYKJAdm3Ei6XIkDfllfyT7Ob73NwXljWrcR54aHNNme4vINz8s8IjCNbp2Uu6NuXSJ1CDg0evzVN9rpndQ6UTb01M9C+E1eu0k2iPBTqxX1Ou1pVtIfWTZISqPl54pvUTqDRt76bW6x4mqH6A1/bvl3fn9e6wmo5Hd5ckfpU5KVEQjPiJxfXnjBMAPPXWJZEzA/5/7//uuQ/TfAB+R6r8ns8kZz3jx/gi6RCYj4H1fLtV7nmm0hEpkIgJcQiA3AiToufVoGvF46lYoTz2COpotP6kf7TPen5TAU3q5t3RR6SnSWOS1csQjtFep9OY5ngLtEQW9RCoQ8MMqj8CcpjpOEj+k0gm4k2+PXn9Ur700wFMqnWh7gycvZ/DvhT5KTvwg4bOReu1ZKT+Rb576G9usD+9A79H0A+Tff6VIfgSc5Pn/8xgjs2/eH8H/j3xVDjqBV4FMRMAPUG/Va2/W6r/hukQaJoB5CLROgAS9deTFNxj6C2mvEXSPBhcPvA8A3nHX/9B7gy4ncn1UafwWT7/0VGpvaHWcWltBivRHwEs+LtatXve5rkqPfM+ocjnpVlJ/8fXGUE7A9TJL8YOI2ANbXQ563wQ/GNNlNOLE3A/CnKj79ygax3CkNoFHZMG7tquIWjyjww8SPUPKf6+idrYj5zZRu95IzkuN/CBbL5E0CeA1BKYkQII+JRPeaZbA7IHN+x/y0Uz6y8hon/H+0JCfwHvauKeKxzDbwCPjXlduX36oDvqIFBmbgKdMe0TMDzU8A8Jf1pz8eefkn6q6p5SrKEa+rEhT2rnf/nq68fvkd0ziqe7+PfIGVfwtjalnBvfFJwrEtp9Ir2j8sNGJuv9/9t+yXveW+pn3irlXwXvnfBUIBCYjwMskCZCgJ9ltSTvtjZtCBtBrijsj6COT9o7SXmPsL2v+Ej7yXe296x19f6vmvLbcDwt8NI9eIqMQ8JdWr/neVJ/PJfVIp9eUnq1rj6ioKFbershT/KLqPrxCvn9L6rW4KqKRH8kTPzzzSOYLukbSJOA9Rbx8JUXvvbxpXTnujST9AFeXyEQEPPDhPTf877n/XZ/oIy4h0CwBrDdDgAS9Ga5YHZ3AzKN/NNAnTHHvH9ufdKs3p1pJpdcYq+hMvO7ZXxifkAenS98vRUYn4KnQ3gHcnDxC7l3Tv6/bvQRABfIKAf8uTf3KdWqF9wPYTk77QZVnQ+gyGvExbB7JXFoeeSd/FUhCBHyk2p4J+Tuaq94gbRl96P00VCCTEVhYr70jvjdR9f+reolAIGkCxTpPgl5s13cWeOgEvdcouZ+6dxZoRA07ifNGa4vLJ++Yq6Iz8bq5K9X67dKdpN4lXAUyAgGPlH9T7zsp9xcvjwybnd5CRiDg3yevsx/ho6TemlveeonH+Sq9WZaKaOQOeeIN+DzrxX9X9BKJnMB/5N960lj2F5ErtcQP5f3/uZdo1TKUcWUfQ3qz4vP+MrOqRCAAgREJxPsmCXq8fZOrZ6H/sXi+ByiPGPf4uIiPPC3V6/d8FFZXATu59AZ0j8oBf6mKba2t3IpKvGP9hvLII+XeiZykXDDGkPn1+WHSnGRNBeO/YbFtIie3hs7QD097/7ZKJG4Cfjjr36O4vazunady+yFW9Zrl1NhZoXqPkk+oRCAAgbYJ1GiPBL0GPKoORCD0GvT/9fDinh6f5f7R9QrQ08g9LdXTyPWydfmAWvRO7F4X5+mVHhnUW8goBPzwYll95gcYHkHVJdInAW8uGHp2Tp9NN3qbd9/3JnLe6M//PzXaWEXjj+t+T8n3aJ1H1vUSiYyAN1Y7NTKfQrrjDQx95FhIm7nZep0C8j4SXh6wkK4RCEAgAQL9JOgJhIGLCRHwF86Q7vZK0L3zcFfJacgYq9jyNMZdVeFdUu8MraJ18TE+16lVb0bHTuwCMYaY0xK6xyNCnpaoS6QCAe+pENua7Qru93Wrl6f498QPcWJ70OX/15dSFLtJvVZdBRIBAT8Y3SICP5p04RkZ978xLLcQiDHkw/rc3wn80F6XCAQgEDOBCBL0mPHgWwMEvBFSSLMvjmGspITnUrHwbtAeTdRl6+LjXu5Xqz+Q+gGBCqQHgb/rM+/E7gTTa/L1EhmAwHcGqJNqFe/h4JlBXvoQUwz+O/w1OeS/P+eoRLon4HXnT3XvRuMeeE36No23kkcDMykMbzb6e5VLShEIQCBSAvkn6JGCL9itlwPH/uwY9krY7fVJMfiUdDWpE2QVrckMaskjZ96s7xhdM4VOEPoQJ5Vv1n3eiV0FMiCBQ1VvUWlJ4o0VvaeEv2S/NbLAH5I/60t9HJYTJ10iHRDwKGkJ//YNo/Xmp96pfvg1ZW8C79THt0gPkiIQgECEBEjQa3YK1SsTCD2CPpYDN4x1Q+Kfnyf/Pf217XWGXqrgdeV+IHCUfJhPioxNwBvlefOYp8ZpAAAQAElEQVQvj/iUMLo1NpHB7/DvvXe2H9xC2jX9JfsPCsEPKaZXGZN4vasfQHnjvl7LkGLyORdfLlMg3hxURVHCzI3q3b2vqnhT0jeoRCAAgYgIkKBH1BkjuJLjW6F/5zyC24vTtb0+TPgzH8G1sfz/qNRTpVW0It6F/0tq6a9S78w+j0qkPwLeSMsb9/2yv9u5awwCfig1zRj35P7xtArwi1L/bq2sMibxfhj2zVNpnQTE5FuuvvjfAp8AkWt8veL6Z68P+WxUAivoE4+me7mVLhEIQCAGAqGTpRhiwoe+CWRx41gjt16v6WmXWQT7ShDemdejh2e+8rqNYjY14ulwD6o8RDqXFOmfgDcxYjOj/nmNdedWusFfLFUgIuBp/r9S+V3pnNKYxMc8+WSCLeUUSZQgNCRePubjtEplzPKqwX+x/ODdRyd6/xjPjhvcEjUhAIEgBEjQg2DEyIgE2nmznxHci9txpfFWnOR5k6h11dI/pG3I7GrkYKkTc0+H8/pXvUQqEPBI4lq637sqq0BqEvDvpDckq2kmy+o+CeBuRbattO3lRGqyp5yuT98kPVnqZFIFEpCAj+O7MqC91Ex5s83UfI7NX5/Aco2cYsq7ICAQ6JIACXqX9MtsO9gXs1fwzftK2avw7ua9Pk/hM6/p9IZQfsLdhr9eOuCNhv6sxvaRziJFBiOwt6r5S48KJAABJ+dO0gOYytLEHIrq21L/znlJhS6jkcfliR8eLK/S0/JVIAEI+Ki7/QLYSdXEinKck0MEIYD4yERvMLhqAFuYgAAEBiRAgj4gOKoNTCD0hkH9JOgXDOBtTFV2kTPeFbmtUfOt1d69Uh/H4i/7ukQGJDC8u/2A1ak2GQF/Eff09sne5uUIBN6t93x83xEqfbySimjECeXb5Y03mhzrJA7dhvQg4IcePlLtpR735PyRp2T7VIycY2w7Nv+774GNPdpumPYgAIHxBEjQx3PgZ3sE/hu4qX6muPsLjEegAzddx1xfdb12cxnd6ePLVDQuq6sFt+kpqPPrGqlPwOv66lvBggl4Qzj/bvoa7Z+Ad7q/S7evI41NjpRDi0l9TJYKZAACXvbkJUgDVM2iyimKwicGqEACE/D/n16aEtgs5iAAgbEIkKCPRYjPQxMIPYLuNY39+Pjjfm6K6J6T5IuTcx+jpMuKUu32N+r286UXSvmiIwgBxcfQBTRXtCknmt4csWgIAwa/oOr9ROr/x2NbX/qw/PLDA88SekDXSP8ETtCtqc8QUwgDi2d5lbpr/cDQKlbcXPf7FIbYNp+UWwgE8iVAgp5v38YaWegR9Hf0GWgqZ6Q+qXg8XfHTKr25mIrGZGZZ9vRX73Tvs7n1sj/hrr4JvLbvO7mxF4FF9GHJa2wVfhDxLJk7ZckbPk6nMibxLCc/IPTfpNAPcmOKM5QvXr7g5U+h7KVmx8d8ep+U1PxO0V+fmHG9HH+LFIEABFogQILeAmSamITAC5O8qv/CG5p4DdpYlnxu+Flj3dTx5x5t9eZJHulq2pUt1IATc49K6jIqycmZ9+cUTIexeKRw+g7bz6lpbwDpIxOdqH84ssD8UHIv+bSk9AopMjIBr9v3g9znR/4463e9/OoSRej9C1QgLRHwzJtr1dbKUgQCEGiYAAl6w4AxPwWBJr5QOEmfoqER3vDOxiO8HcVb/jK6nDzxl2YVjcnSsvw76WnSsc6Q1y05SqsxOQFiWnY95J9UdU9/VoEEJLCobHnU+myVTnpURCPeC+MD8mYb6WNSZFICO+ilGakoSvxg2TMHPlRU1PEE62NWfyV3fGyoCgQCEGiKAAl6U2SxOxqBJhL0fqe5Xy6nPGqsIirxJjf+MupzzptyzOvHvK79ZjXwXinSFIEp7R435Vu80ycBH+93bJ/3cttgBNZXtT9JvWOzN+LTZTTi3bk97Z3NFl/tEs8EO/XVl0Vcza0ovUzND5Y5YlEwOpbz1L4fnKpAIACBJgiQoDdBFZu9CHgKY6/PB/nMI8/91ostWdpNjvtYMxWNic8dvlvWPRqlAmmZwGpqL9jvnWyVJIcpWGZ6CELD4v0ovGPzbWrHDwtVRCN+cOmNqj4oj+6TliyOv+l/L2Liu5Kc8S7ij6pcV4rEQ+CHcoUjLwUBgUATBEjQm6CKzV4EQm8S57ZW9Y8+1SMyT/V5b5O3PS3j3pjtayqbkoVl2NPRPLXf55rqJdIRgR3V7lHS2CUm//zgzdxi8il3X7wc4zcK0iPWsf3N+K388maBB6osVbzu/D8FBO/R2RsUp2e9+eGMLpEICXj2nze0jdA1XIJA2gRI0NPuvxS9b2IE3ZuXLNsnjGd034nSLsWjAd487JcNOuHdfX32MRu6NAi5omnPlihtaupkiPp+OZXu9HRWFUgHBDZVm572vrHK2OQAObSY1Ec/qShG/Pfjxkyj9WkXGym270u954BHZ/tduqYqSIcE/H2qpFkdHaKm6ZIIkKCX1NtxxNrEGnRHVmX629ddoSP1xj7vVtteC64iuPhM86tl1SPz3q1Zl0hEBLaUL/6S7ZFKXSKjENhZ7y8hrSbcHZLAXDLmhMkbyS2g65jkXjnzPumnpJ4CryJruUzR+W+6imzE/eeHLd4Z3H34A0XmB0KxzdyQW8gYBE7W58x0EAQEAqEIkKCHIomdfgk0MYLutqsk6A+oQhfTjT3i4/NEfZyaXAgu3uHWib+PagtuHIPBCHi2h2c3eJSIDfumxPo6vXWINDop1CGfRODTJT4bYfyekeKHXd+L0LdQLv1dhjaUpire6NF/8zZRAEdLvYTC0/Sv1PX+Uj+wVoEkTsB7BXjmTeJh4D4E4iBAgh5HP5TkRVMJ+tsE8U3SfsUJwD/7vTnAfd6B1iMG/w5ga3ITs+mNM6WeEuwvQ7pEEiDgdZY+8u4W+erkZ1aVyNCQN9Qr8fc45r53fxwvB/2QcSmVMYlHXzeTQ17O82eVuYmnfof8t8qcLhAk7zNwjMp9pP7744cAPr7MG7P1o7bzMdX1rCAvqfLeAJ6dZru/0PseGbff3vPFs4b8EOXzet+bEM6oEsmPgPueIzHz61ci6oAACXoH0AtvsolN4oaRfmL4oo/yCd1zsLQNOUGN+CgjFcHFI/JO8PzlKrhxDLZCYEm14uTHI2U+Cs+jTXorCfHa0ZCOri5j3ghLBRKWQBBr/nvjZMuJnZP2IEYDGfm17LxV6kSxyX9n1ERr4lMMHFeoBn1EmZctrCGDHu38nEr/O+i/P37Ie4lee2O2ftQbkJ6r+z2LwdPv99P1TlLb/YhKj4zPqRIpi8DZCtcDJioQCEBgUAIk6IOSo96gBF4YtGIf9bbr456Jb/HTfk/dnPi90Nf+grVDaKOv2NtXpUe0FlKJpE9gJoXgo/CcAFkP0msfLaUiKnmXvPHvnvc68AkBehlEPKrmtYxBjGGkMQJTy7ITO28i59FdvRwaGorjp/c48brmt8sd/21UkaxcJ8+d9KoIJv7/y0tIghnEEAQmI+AHdxfqPY7HFAQEAoMSIEEflBz1BiXgL1CD1h2rnhPVKmvRba/JI0K+pAa+KA0t3rzJIx1O4ELbxl4cBDyK7iTYo2der+kd/z2NtO3pxYsKxzpSJwo/U+kpq04c/LvnkX9v5qa3g4jXo8a2GVmQwDI14kTPG3t5TbHXgTcaZkXjw5vIbaV6/p1VkZR4WrhnkoR8oO2RbdtMCgTOJklgQXntZQ5+6KpLBAIQqEqABL0qMe6vS8BfPOra6FXfa9x6fT75Z96oxuumJn+/7mv78eW6Rkao73V/t+l9rxVUgRRAwF9yvK7P00j/oHidsP9epTeZc6Ls3XO9MaD3ItDbleX1qrGi1HacJH9X114b7yMJnej8RK89bfijKieesrq3Xj8sDSFO8HyMVAhb2GiXgNcUe5nNoWo2tpMjvC+H9yZxKfdGldg+8IafDwZ0amHZ8lIrFQgEWiGwnFrxvyUqEAhAoCoBEvSqxLg/dgLvl4MefVTRt+yhO0M+ONhe9o6VhhaPqHrd37yhDWMvKQJO2N8pj73JnH8nvHuup5s/rvdelvp3+VGV90m9hMPT5a/Qtaf8OsF30u317r7P9zsR8Oe24+nB3nDLu8t7yr2qjSh+QODN3Eb8cIA3vY51mgHqUSUOAtPJDc8W8rR37yOgl9GI/7/wSLo36fTvfgeOVWrS/y/8tFKNsW/2unM2oRybE3eEJeC9d0LOsgrrHdYgEDEBEvSIOwfXBibgqcBVKj+imz0dXUVt8Qjkt2pbmdSAR6W88YpHSyf9hFcQmJKA1wDOrbc9avYWlX5g5RFyb/DlKfKetu6HPL5PHw8kXis/UMURKtmWfRvhI95KjICntnr96Y/l9/zSmMQPqLx5lR9CxbqJ3N0CtqO0mvS+2/ug+OFE77v4FALNEPBghf/9acY6ViGQKQES9Ew7tvCwPAJYdS2rRwM9ulgH3XdUOXQSPY9sehq+n0TrEoFA5wQ8td1TmkM44inzR4YwhI2oCHit8z3yKLZlC94Dxcs1vH+C93eQi1GJZ8V4CUsop7wUaq+6xqgPgZoEvEzKe1bUNEN1CJRDgAS9nL6OKdJnW3DmkAHa8Eiep/wOUHXo56oUesM5j3zeJLtey6UCgUDnBK6RB0dIQ4nX1c8Ryhh2oiLgpRhHySP/DVtGZUzikWrv5+G13rFsIrerAN0sDSWeJXNWKGMN2sF0/gQ8o6uJvX7yJ0eExRIgQS+26zsNfNAkuIrT/uLl6bxV6lyvm0+UVhUnLRuo0kvSUOJzZD1yHts00VDxYSc9At40zsdqhfr/19PavTFdeiTwuAoBJ+f+23q0Ks0sjUm8iZU3kfO671C/14PEd5kqmY+KYOJzzT1DJZjBNA3hdSQEVpUf3gvi/7N3JnDXVWP/f97/SymljJGZqIgkIWNSqRBCyJjIPGQmZY4MmadQIZJCIRUSMkREUqkIJRENKkJ4/79vded+7ucezrCHtff+Pp/retY+++y91rW++9zn7Guva10rhSIBCSxFQAd9KUK+32UC75jA+JfnHJJmpRhJSLb10Bz592hV8sxUxBIliyXpyiGKBBol8Ly0RuK5FFMLCeFwiqauyAo6QeB/YyUrW/wiJQ8fUxQjJJF7aqxhnmwbSeQYwX9s2q9SmGdPhECVdVqXBKYlwHz0mtdHn9ZEz5dAGQR00Mu4DkOzgpu1JvrM/LtxMwpfHMOYwz7KaMrlOZabTW6wslmJED78wUpqshIJVEeArNJVOtTMi2VpteostKYuECA3CA8fmZNKfo2SbCaJ3DoxaI9ok0L0VZW/IZvF+Kb7kCYVCSxJgJUEDljyqJIP0DYJNERAB70h0DazHIGVl3tV74u3TVA9yYPeNcJ5jAixhNUIh450yKdz1MuiigRKInBWjKkyNPHWqe/VUWW4BB6Rrp8WJe9HiqLkDbGGz+i3U9YtJEhk6cyq2mFKFCt+/E9VFVqPBComQKg7D6UqzAFwUQAAEABJREFUrrYf1dkLCcwQ0EGfIWHZVwJk6yU0d9z+kbDn1EVO+lTe+0C0Kjk8FTG/N4UigaII8Ln8S4UW7Zu6mnxIl+aUAgmsGZs+EsURZum/bBYjTOW4f6whmupPKesQEsJVtbznjH0HZeMGUUUCJRMgeaRT+Jq/QrbYIQI66B26WD0ytcr52qNgYZTiDqMcOOeYheYF/jrHPT1alRDyuW1VlVmPBCoksHvqIvQ3RSXC3xQhuJVUZiW9IHDf9IK53yVGDxGOy1SMj8bGKoWVTLZPhf+KViVvTkXMo0+hSKBoAkx1YZpT0UZq3LgEPL5KAjroVdK0rlEJVJntfJQ2r5WDGFlIMZb8LEfPN/pOEjdusPL21HJoamAeewpFAkURYGRzkuUKF+rEanmj6kzVqVLpCQHyb5DtnazvJXXpwhjDA9n7pfxltAohKR0Pequoizpw9nV4IKF2hQAPf2/RFWO1swACAzNBB31gF7yQ7rbxudsgfZ/EOXhfziP8PMUVgqP/1Su2pv/vc6niYVFFAqURILP1Eyo2ikgWM/hWDLVn1W2c/vwkSrbn0pZkOzZ2sSTba1JOIyzt9plpKphz7np5zUh/CmUCAn/LOazcwgN5Hkp+K69nK8uoMh2BFQiY+sDKLXw/Nh0JGLN6JzyU612n7FA3CZRmdRuOUmkMtKd5AoxoN9/qsmUkddtq2fj/mId4Tk77a5Q6UkwtZMRm1GPqilqs4I9pm5uar6dkTj4PQMgezFJ1cCLSgORizGGmr4Txs/TP1jmeJFHsZyTp2Xn94iiJw96U8kPRmQchx2ebUasLUirNEeC6nV1hczhefB4qrNKqekzg+ekbDlGJDzBfH9t44HtiynEFB+9Z4560yPFEpXwx768SVf5LgO8unOz9s4sl516Q8klRlkS9d0qmvN0kJcn0eBB082xvGCXvAFNwZuum2b9RdP0oyQM577rZhjnno+RTYD/vcxzHc97mOY52+V3kN/+YvK4yciLVdVqY8nT7TvdA4yUwGoGxj9JBHxuZJ3ScwMdj/w2j4wghjjvmBEIIeXqezamEep4yVQ3NnHxGmjkiSkIXbirJvsqNKcsjcVPCaCg3NVvmGEZbSaxHBmRGShkB+3D2c4PEaBHLdFEXGfKPyn5C+9nPTQvLyu2dfTjnOOm0xQ83S+TdPfsZtbp+StokARI3V9xA7Zx9zLuk7sUS+uUwZQwCXDeuzxinLHkoc3i5fkse6AESuIoA81T5HB6W1zeNliQnxxhC8ccdTefBJCO2Ob0S4cEo34+VVNbRSpgWQbLB58T+e0T5niF0mt8IHjS+LvveE/1klHwv5NTg96KK3/JUeYWQRJP6eADDgyVG3Bl5xyGnXX4XeRiNw05CRGy8Vc7kgTUPs7kv4ZzsGpyUmHticBfBDpdHYDwHvTz7tUgC4xLAqcQxHPc8Qt8Idx/3vLnHPzI7cCpTFCOMhLM0Dw42IwwkReIGgifbjHq/NJYyqs1yQNyY1pXVOM0sKefnCG6uGB0hG/ir8prReZz21bPNDQ+j8V/KNmGIKZQxCLD0FTeMY5yy5KG75gicmRSKBMYmsF3OOCVa4pJsjKazUsgoo+l8L1XphPF3BZugGYSQ9wXn+r3pLQ9nGaXmd2qTvN4lyqoqP0zZFfltDOWBNQ+zeWA/05+7ZT85D7jf+EG2+y5cy9IewPWduf3rAIGiHPQO8NLEfhDgKXaVya9GpXLPHFjCXEEyJjPiwOgCzjgPLXaIbYSoM8Jwera7KJfGaG54GI3nxpUwRBxDwht5AHFu3lcWJ0A4ZpVzK7nxIjJi8VZ9VwKLE7hO3uY7iwelt8x2SfLzGINTRSj15dmeT47OTr6XUlQid00tVdaX6ooTHsbyvU1E1Z1jHctyEZ7O9Acezlb5sCPVFyM/jiVEHJGglnsGPvv8nuHI84A8b/dOXtK7HtkhCUxJYEgO+pSoPL1nBHZLf5rMno6jwqhuG/PvL0lfCSXHCV8r2+tEGXEg/Lyrzni6MJIwskV4I31fO2fwQIIHE4QdcgOYXcpVBBiZqnoEitBN5mpe1YSFBKYiwJJshBCXdkPPcmmEUjMlBwdrdieJUGLKzux902wTKfTZaSoo+FwieAgHJ2cF05n43iZ666SCba7bNH6/uXcgsmlmihn5W3hgxWer7vabqJ/w/zbujZrom21IYCICOugTYZvvJPd1kADz95gH1oTpjARww9FEW7RBOOCns0GSJZ7A8wOIDedl35CFBxI8mGCkmOvBCAVhqicMGUr6TlIlpgtkszKBMXkLKqvQiiQQAtzIvy0lc3wZSc5mMcKoLqPp5Cw56yqryM/x56u2qyjIEXHbKioqpA6SgOKUk8+EjPQkVBv69/Fil4YpZkzT4yE70W8PycEkVU3RWeEehXuVznZAwyVQNQEd9KqJ1lWf9dZBYI1USkg3WVyzWZsQOk5G19oamFUxGX2Z53697Ht8lNcplAUIMMePRE+M2DDnnlEwRnEWOLy3u8mwzhSBqjpIpMa7qqrMeiQwDwESgjFavU/e4/suRTFyYCwhFH+blKxykaISeXJqYfQ0Rafl97Gehyx875LkDqecFUGyWxmTAMvAEqGBk8vc9e+PeX4ph/NAtxRbtEMCrRPQQW/9EpRhwICtuGP6zkhzilrk0amV0LQUtQlzyp+R2llyh6fQn892lfOIU90ghKz1zCNlFIdRMEIrq8y4XCpERmO+UrFxOOfkAKi4WquTwAoEcEoYhSWLd2n3NEeuYO3kO3iASCK0yWto/0xyCBC2zpQvsnc7Ul7dNSEUnrnr90qVPPTgAQiRdHnZCSEhLSvEdMJYjZRA3QRK+zGru7/W3w6B0lslAQsjp1XbSRgic7+rrnemvmOzwbI9zClnFOmvea1UQ4CROZITEUJIsh4yx1dTc1m18Jkhe3+VVhHWzohOlXValwQWI8DDILJeH5+DyKqeoldCWP8h6RGJ0lJ0TpheRaK3+8dytlMoNRLggRUPQJjCx99FjU1VWnUfokMqBWJlwyWggz7ca99mz/9TbeOV1EaI3cMrqem/lTDXuerwedhxo8bSMvdLU4dGlfoIMCrBDQ7LuDHXDwegvtaar5kHU1Vmt185XSB5UQpFAo0TYE76j9Iqzkmf7m8+lj518cEDv09EqTFqPuREb7l8rQg5Z3jAfLO0zmDBv1OWLCzzWrJ92iaBxgj06QesMWg2NDWBUj93hLqTNGz5Dk72ipDz+0x26oJnfTDvELpG2Dw3oXmpNEiAuX5kaSYUrw+OOnPtCYOsEiGrI9y6ygqtSwJjElgpx+8VJcLoNim7LiT4JOlcl/rxtRjLNCEivE7JttIugXPSPJ8jHpZ8IdulCtFXpdqmXRJolECpjlKjEGxMAlcRYDko5gxOO1Jxk9Q3suOTY5cSEr0RLv/sHHhmVGmXwBFpHkedUaHfZburQgh/lbYzR3b3Kiu0LglMQYC5uD/P+XxvpuikEBb+/g5ZzrKWD4i9W0WZJpRCKYgAD2W3jz08POFvI5vFiU56cZdEg9ogoIPeBnXbLJkAmd15+j/NKCDOOWvVTttP5j1vmUpI/DapY57TlZoIMJdy3dT9pmjX5OgYfEy0SmH5pyrrsy4JTEuAh644uGS2Xn/ayho+n6zchIgz/7zhpidqjqiFu+TMb0aVsgnw8ISBCJKilmbpg0ozSHsk0AYBHfQ2qNtm6QRYIgrnhQRhk9j6xpzEMjIpJpKLctYLosx7rnKJnlRZtQy+PrK8vzoUmHrw05RdkbdXbChL5GxWcZ1WJ4GqCDB1idHdN6RCQuBTFC+fiIXTPCjO6Y0Iv3X87b+ikdZspEoC5CDZIBXisKcoQhxBL+IyaETbBHTQ274Ctl8qAdaw/UaMw1lPMZb8IkcTXvmblOMKo5BkZX/PuCf28vjudIqsuRvF3HdESxdCG5nKUZWda6aiqh3+VKlIoFIC10xtPEzj80828bwsVng43IWRRKLNCMP/VrEkNWwpAifnAELeX56yBCHRYwl2aIMEWiWgg94qfhsvnAAhkd+NjWRATTGW/DZHMxdv1DnKZ+d4nPpnpjw/qjRAoIYmXpI6t45eEC1Vqnamqe+GpXZWuyQwhwDRLkRIsdoAU5rmvF3Eyz/EChIupihWCI9mrrm/V8VeorEMe2uOJo/ID1K2LTrpbV8B22+dgA5665dAAwonQHK278XGSbIBM4I+ipNOVlVGIZgnmaaUjhM4KvYzIkEkRTaLEm78P16hRRunrp2jigS6ROB/YuzToqdHSfaYojjZOxYx2p+iKPl7rHlwlPDoFEqPCJyRvjAdhKVFs9makMugtcZtWAIlENBBL+EqDMuGLn7mbp5LhJNOQrBsjiWEPrNmOWFkc0/kRue52UlWVeadZ1PpCYFfpx/c6DBSl806ZKI6vzTRWQuftOfCb/mOBIoncKNYeFD0y1FW30hRlLy+KGuWLftr7GHU/Csplf4SeF66Rl6Rf6RsQzZso1HblEBJBLroLJXET1vGJ/Cf8U8p4gzmohPuzjzjcQ1i1JLw9dkJ31juhFFWMgyPW5/Hd4PAX2Lm5tGSbmZHn3sew5eQ++R9btZTKBLoNAFGhFk1g1H1kjrCShE87CvBpktiBN9nx6ZU+k/gk+kiuRouS9m0EFHYdJu2J4GiCOigF3U5NKZwAtePfd+OEraeYiy5OEezZBrzHvfJNiFc842q5y2lZwQel/4QSZGidZn9kGhaY945TQWeK4HCCDAfne9nol6ImirFvM8UYshjYscPo8pwCDAf/bEtdHeSaMUWzLRJCdRHQAe9PrbW3E8Cq6VbZHcnLD2bY8suOeMZUcLbUygDIMDDmYemn4SHpmhNmKaBLVUYwFI4RIBUUVcddVinBCYlwJJhPDzdadIKKj7vixXXN0l1ZPg+YpITPafzBPj8PavhXjDd5NoNt2lzEiiKgA56UZdDYzpE4HOx9elRRQKjECBh3PNHObDGY1gSqarqB54YriqM1lMogdVj175R5qZfN2WbclybjaftT0fJ8J1CGSiBD6Xfn4o2KSTobbI925JAUQR00Iu6HBrTMQKEqr+xYzZrbnsEuOE/qb3mlzEqWFXzk0zzqKrt/tdjD0shwNx0Mqnfr2WDyFnShgnMf/dhXBvky2uTxHHk02nKsnWaash2JFAiAR30Eq+KNnWJAGvVfqxLBmtrqwQIFW3LgN9W2DBTPSqszqqaJGBbYxFYO0d/M8qyZ9dK2Yac30ajaZPfN6djBYSy7MIweGG0KdFBb4q07RRJQAe9yMuiUR0j8NTYy/y8VVMqEliMAJ8TEu8sdkxd71W5ZM65dRlpvZ0n0McO/E86tWv0+CgOe4pGpY1M2j9JDw+MKhKYIcCShBfNvKi5XLPm+q1eAkUT0EEv+vJoXIcIbB1bWX6G5CbZVCSwIIHPLvhOvW+sVGH1JEqssDqrksCoBFo9boO0zlSRG6dsUpgT32R7tFTCeVMAABAASURBVPVK/lMlMIfAIXNe1/Vy5boqtl4JdIGADnoXrpI2doXAXWMoow73SqlIYCEChy/0Rs37b1lh/YT7/l+F9VmVBMogsLQVzMtuci4uFq3Ffw3qBWnrqKgigbkEfjp3R02vq3ygXJOJViuB+gjooNfH1pqHSYAbqe+m68+JKhKYjwAJn86c742a992+wvpPT10fjCoSGBqBqUaWJ4DF6HmVD9dGMaHKFR9Gac9jukPgXw2Z6gh6Q6BtpkwCOuhlXhet6j6B96ULH4kqEpiPwI/n21nzvqojO0h498uabbZ6CZRE4IAY0/TI8iZpc1Sp6rivVlWR9fSOwH8a6pEOekOgbaZMAjroZV4XreoHgaelGydEXc8zEJTlCDQdIkvj9+G/CvXS1LVt9OKoIoG+Ezg7HWwjMoql3tJ0o/Kj+VtzrwSWbdQQAx30hkDbTJkEdNDLvC5a1R8C/JidmO7sFFUkMEOgDQd9jTS+Q7RKOSOVbRX9a1SRQJ8JPDqda+Nh1CPTbtPyz6YbvKI9/+sCgW0aMvIaDbVjMxIokoAOepGXpfdGDe1m/tq5ovtGD47iJKVQBk6ANWXbQFDHCCDLxuGkt9WnNjja5rAIbJfu8jlP0ahsn9aann+eJpddzn99U/szNQHymNxq6lqsQAISWJKADvqSiDygBgKsKVtDtcVX+ahY+LNo1aHGqVLpGIHbtGTv/dJu1XPRU+Wy7+U/lqCizKYigd4QYKrSl1rqTdMJ6Wa62dQ845n2+lAOoQ+vGUIn7aMESiCgg17CVRieDUNenukWudzHRveMKsMlsGGLXd+rprZ/n3p5AMBN3L+zrUigywT4ndolHfhYtA0hKuVubTScNtePKkURaN2Ye8eCHaOKBCTQAAEd9AYg24QE5iHAyAiJeNaZ5z139ZvAddO9LaNtCREcdc1rxTF/fTq2abSNpeTSrCKBqQngnD8ltbS5Esfeab8t4e+3rbZttw0CS7f53qUP8QgJSKAqAjroVZG0nnEIcBM/zvF9PXbjdIyQ92emVIZD4PEFdJVRwZvXaMfxqftOUZz1v6dUJNAVAnxemfv9iRYNJgrlji22z2hpi83bdGEE3hN7SHibYjLxLAlIYDwCOujj8fJoCVRNYJVU+MHod6IkYEmh9JzArgX0j2SFX44dq0Xrkr+lYhwN5tt/NNuKBEoncE4MvHv00Ghbcs80/Npom8II+pptGmDbxRAgkuR5xVgzvyHulUDvCOig9+6SdqJDhA92wtAGjWTE4rS0t3tU6S8BsqjjsJbQwzvHiC9G65Zz08DTo7T3rZSKBEok8LUYRW6Ik1K2JTdMwwdF25ZrxQC+q1IoAybAw6L9Wup/QfeJLRGw2UET0EEf9OW38wUSICT457GLH8YUSo8IrJ2+vC5akjwgxrD8X4raBcdns7TyiOiPo4oESiFAVAtJ2c5v0SCiWo5O+yQSTdG6PL91CzSgTQI8rDq8RQP+1WLbzTZtaxKYh4AO+jxQ3FU7gZKXcDmv9t4v3QBzD7+fwz4QvU5U6QeBz6Qb14+WJiz/9+EGjSJ8mOzUD0+bJEpMoUigFQI8KGJu7btaaf2/jTJifURekrchRRFyo1jxjKgyPAI4599Mt68XbUsub6vhvrVrf7pJQAe9m9et61aX6qATirtW4H4uWoI8K0b8IsqIYwqlwwTeEdvvGy1VWE7qgIaNOyztbRLFKYHPn7KtSKAJAnzXPzEN8aDopynblk/HAOZ9pyhKWJKxzmSSRXVWY64gwAMrnPO2cxCYTPiKy1H8fxpYEwEd9JrAWm0nCZxwldWMKL76qu22i5vEgM9HcWZumVLpHgFGoV7UAbPJLk9II4kLmzSXKR0vSYM3jm4TPTB6WVSRQNUELkiFL42SB6LpB1JpdgW5afYcFy31ISxh9zw8iInKAAiwsgx5Qtp2zkGtgw6FwetwAeigD/fa2/MVCZw5a9ebsn2/6O+jJch2MeI3Uey6dkqlGwS2jZkfinZFsJdkWddtwWAia45MuztGCa/dOeW3o4oEpiWAE/zCVIJj/vaULKWWolXZPK2fGL1HtGS5T4wzeWkg9Fx4OMrI+eqF9NM56IVciF6bUXDndNALvjg9Nu1/Cu3b3Pnnx8ZOltzBMc5mEfKqWPHLKM5LCqVgAoSsHlKwfQuZxooCbTsOl8a4faP3j5I0a7eUOFkpFAmMRIDQdT43t8rR/C2+O+VfoiUID1pJCFdiTor5+JC89MnzveG+XhB4cXrxlWidy26m+rFEB30sXB5cIoFpbNJBn4ae5/aNAOGPc/t0TnYwT7GJ5ajS1EhCKPBHcyQJthjdyKZSGAGylZP0qelw8aowMO8Uh7iE0Pyz06k9ozhZODTMHSYMfr6/1xymDJjAz9J3RnvXSclcWj43v812KUIeitNjDA9aU3RK9o+1LJeYQukRgY+kL0SVpChKXGatqMuhMU0TGMFBb9ok25NAawQuWqBllt55WN7jBiVFMcJ8MUb5GaV1fnoxl2UZyxMdE3OYv5mi00LyNh5O3aCQXuCUM3eYMHicdRyeN8c2HLMUysAI/C395UEYI4DrZpvs029M+atoScJ3AQ9VmbJxu5IMG9OWfXL8c6JK9wkwjYn55k8rtCtMeSrUNM2SQP0E2nfQ6++jLUhgVAKXLHHgTnn/udHS5JExiDB8wiadnx4YLcr70jahtCl6Iw9NT5hWUcJoekxZTr6TV4xG4pitne2nRD8ePSuq9JPAD9ItnHCiVPi+I2/C3tnHyHSK4mT7WMRqHH2ZlsR3XIkjrsGsjEiAaKSTcix5dlIUKTroRV4WjWqKQO8d9KZA2s5YBEqdgz5K4qD3p6f3iv45WprgqPw6RjGalEJpkADzXEmu1tfRJUYAGU0nkeJjGuQ6TlMsnYVzjpNORMltc/JTo5+MEiafQukgAeaS4xQSxXSd2H/PKGHsjP5ls1i5Yyz7RpRlO5mWlM3eCL8xJHTkevSmUwPpyB7p5/eirCCQoljRQS/20mhYEwR00Kej7NmTESj1c/fPEbvz/Rx35yhliqLkhrGG0Q3mzvfVWUwXixJueHgwskVRVtVjzK1T7WeihOoyap3NYoWHCfvFuidFSTRHaDHhnITIExGQ3UphBBhp/mxsYtk9EgSumm3mkj8vJVMtlopyymGtCysQMK+X5QMf0Lo19RnwoFTN0qSlZ6GPmUoIsGQrD7Vel+0uiHPQu3CVtLE2AqU6SrV1uFsVa23DBEZ10DGL0TpG0gmt5HVpSrgvo044jn0JrSyNMSG2p8WortzwxNTKhLnfjGx+LDWWMj89piwqOOXYS5I5nHVG/3ACWX7rEzkThyqF0gABlq/8Qtoh6ocQ8PWzTWQVJREaRGvwEOiy7O+S0B++c3kQ1CW7J7WVKBWSSe41aQWe1wgB7gH4fis5pH0uiH/P3eFrCQyJgA76kK723L76ei6By+fuGOE1oX5b57gSQ95j1jJCr0lOhCP56GX+q4IAIxFkEScR3O2rqLDDdRBCTkKuEuenL4WV0VicQHIGsITUnXICTiIjgs/M9gejRMmQJDKbypgEmDLEQxHCvJlmwFJd5MtYK/UQXotjToI/HHVGzrO7k8IoPyP8RC2RB4TXnezIFEa/LOeeGmX6QQqlEAIkkmW1F+4BrleITaOa8b+jHuhxEugjAR30Pl7VQvq0iBncBC/ydmtvTRpSdVQs3iCKw5aiSMGRJHSUbNcPL9LC8o26WUwkBwGh04/NtnIlAUaiGfH8XV6+PMp89RSdlR/G8g9Hnx0lSoYIAfrIcouPyz7mPzPX/bvZPi86ZOGhJs414ed8Bp4RGIR144CzxCCRCg/MPqYZvCbl56N9YcYqAiSr43P/nvSLqKUUg5X10nPmNvNgq+vfAelKpwVnnGkWfJfhpHexM6XeJ3aRpTZ3kIAOegcvWg9MntQRnt31OranSUryxxi0efTV0ZKFUUJGrH4cI8l+nEJZggDzrvfNMSQaw2m7VraVFQnglL0lu5n+8YGUOGcpeiGMtvM3w/x7nDIS0d0nPWM0eLWUm0R58MXIO44oTgp/Z4zAE/LctVDtdOcKYRkzom++nlfM52c6xy7Z3irK9V0pJWHpJHBj3jjLcH0z+whhT9FLISqJBzhETe2WHrJcVQolBHCq+Bvgoc3T81pplgAPxXZNk0Q1Mc2iy/f4pd4nBq8igfoJdPmPt346tlAXAX7E66q7ononroYQR5YwYdmziStp4MS7po3Do8dHddQDYR65Q/Z9KsqIOUvsZVMZgQA3ic/KcSx7dURKwppT9Fb+mp4RRnpYShw3Qrl5kEMINyPwt8l+wp4ZVVw328zff0RK5oW+NCVh3h9KSYQLjjCJt/j+uDj7xhXCyv+SkxilZmSXG/VT8vonUZYnw3nm754pGthKQkmSHDIPn+kKj8pxjHiTAJBROJYxY2R0y+zn/demZGSOFQsIX8/LwQgPYcjIzgMXHlIMpuMTdJSs9Tys4TNC1MkEVXjKmAR4IMLfO3lx1hzzXA+XgAQKI6CDXtgFGYg5pTroVdlF0hxGqrkJnv+SlrOXsF1u2LG5747UKNRXz0GE6eLMnJztHaPK5ATIz3BITr8gShhwV8MtY/7UgsPNQ4vvpKZDo0Rl4CCTWIwHGiRHwxGGEVEbOPR8J42jPBzh5pyR/ZunjXWiLPfFAznmBxN+/pDs43PNSCcPCN6Q18zDZ4QcB5Q540yFuTD7lWXL+F48NiAIF+ahSzaVEQmQRO7TOZaHRHy+s6lUTID8GWelTh6IkB8lm4oEJNB1AjroXb+C3bR/mlDyOntcpV2XxlBuggmFJTw2L5uTCVoiMRaO1G9zLgm/mHObzcEI0xPI5M3II6OZdx9Mz5vpKGHAJNJipPmkNEk4tDeTAaEUSYDPK1EQhPfzvch0hiIN7YhR68dOpofw0NP8HYFRgRDCzgO//VMXD+NSKBKQQF8I6KD35Up2qx+MCJVocR1/DySTIlyUUPIS+zzXJtaLJtkTc0jfmTcZiUuxnPTlBU45fSWE/eh0iuW3nF8eEDULCRXfljb4jH01JSGwjPxmU5FAqwQI8f9yLCDig4SQJNfMS6UiAkwbIrKMaRj8NpLLoKKqB1EN+S6YY06eD6aakAdiEB23kxIYGoE6HJKhMbS//SFQ198DcxYZkX1lh1Ax95R5qX+Ize+NErKfogmprQ2ycRMOSBgv4cY45UQLEE5cW6NWvCgBQroJgSXh1gE5kqUA+exlU5FAIwTun1ZYhopIp4Oz/eCoUi8BIrTI7M8KKDibJF68Zb1Ndrp2clcwHYaHmswxZ45/pzuk8RKQwOIE6nJIFm/Vd4dOoNT1Lev+eyDDNSMIXRlNn/mcPjcbzEkleRXbXRntJDkXo7OMkhNa/af0Y/9ly5Yxj5S55nmpFEKAJGqPjy0kSmN6CHkRCOHkoUp2KxKolMB2qY0cAIyUkziPhH2MTma30jABnE2OerluAAAQAElEQVSy4ZMY8ci0zd89S1pmc9DCNIsXhAD5UMiK/+Js+7sVCIoEhkCgbodkCAztY38INPH3cGpwMZrODUk2OyUbxVpG03mKT6ZqwuGzqwjhJo/RWDJSE6KKM05GW0ZnGSUn8VYjhtpIJQRYWYAQTq4jD1fIdE528Uoqt5LBESAjPVNYPp+ek3WfjPuszIATlF1KIQQeFDv4u2dJSzLAs1wjUTXXz/6hCA+PDkpneXj0rpTcL6RQJCCBIRFowiEZEk/72m0CTf497BlULIuSonNClujdYzUJ5Uj4hfNEkrnsql2YI84NCyNehPoRps6NDGGSzGdmnWZCVPs68lo74AIb4OHKK2IXS5D9X0qW+OI1ocldieaI2UrDBHhgR9TSj9Pu+VGSQLK8HdEaeakUToAM8KxuQFQNU2CI4mK1gYfHbn6DUvRG7pKeEOlFklIeHu2Q10OXUnMVDf262P+GCDTpkDTUJZuRwMQEmv57uObElpZzIgm/cJZYpo2lXpjf/daY9/Ioy5WRsXebbG82R1nuCUeapEyMbHEsc96Zp898xA/meEYRcMa4wWYeP4mFLst+Qv6YM0qyHBK9OQoWKNVIJ2rZIlbyUIjQ5L9lm88HS7jxWTOfQIAMVMi0zvcO3xk8yOGBHa9ZYm6gSHrVbfKgPD89+kKUJQD5u8epZRoTU8eyuzNyw1hKtABLLJ6Y7Z9EifRifzaVEOBvOIUigWESaNohGSZle90VAk3Pje9b2B5LvTC/m7WVGbliuTIy9n4lH4Bj5ihrLROKTlImRrY4lqzxRBYQ/s8azYwi4Ixxg32rnE9ioRRKZwnUYzifD5Zw47NGRn4SG7I0Fje8m9bTpLW2TOBGaZ/vGqJovp9tbuaPTcn3Dt8Z2VR6ToC/e/7GmcbE8m08rOPhLa/flL4TocZnYZ1styUkvCS6jOkUJHnjt5ApYoyUM98eO+/clnGFt+sIeuEXSPPqJaCDXi9fa+8WgaZ/EExK1K3Ph9YWTuAq89ZK+cgoo2vfS4nzRmLG/bLNDf39Uvq3FwgdEZaSIqwZZ+aI2HxO9I9RonWIorlnthUJMN2F6U+MqDMyvU+QEE1xRkq+A5jX/p1sE0LOEm+Ey78mr0nExuoezP2eG+k19zW5MUhmyQNBpnnxgIhkg+Q2YLoV+TJOT508JOSBAQkviS7jGJK8EU12k7yvLE2Aa7b0UR4hgZ4S0EHv6YW1WxMRaNpBX3kiKz1JAhIYl8DdcsJTojjt30rJklqMtuPkMa2CcNOlIlpymlIzAZxtprvgPH03beHk4PAQ1ozTtXX2rR1VJDAuATLD3zsn4YizxBvh8q/NaxKx7Z8Sx31upNfc16wuwXKQTKkhUSoPiBgdJ7cB063Il8EDJR4S8sAg1XZSyOtCvzaM9TxsSKFIQAJNEtBBb5K2bc0QaNoRnml3qZJM4EsdU+X7JDyrsj7rkoAERifAfHXCpJlWQbgpiajIc8BKCySkY+oFo7ZPTZWEytc8xSKt9F9wWtZLN3FmeGDCKCS5JlhGihEzwtWZ7oLzdK8cx/EpFAlIoCECRBfcPm3x0ILEfHwX5mXjUup9YuMgbHCYBHTQh3nd7fX8BEhu1qSTvtL8ZrhXAhJoiQBOOA4kS7qRvJBR24/FFkLlcd5ZLYDkdMxx/3D2k9CQ0FVGmxiZY4SO88tL9hRja5Y1Uv8do0QjsMrCHtlmySzC0lntgcRejIjzAIRwYKYcMApJrol1c6wiAQm0R4BErCRv5cEZqx7MWMLf7cy2pQQk0BABHfSGQNvMcgRK/dwRAkcIW1OjNk0npVvuIvhCAhIYmwAP8FjejTnuu+RsEhqS/Ik5poTIMscVB5QkUIwIX5RjfhVlDvxRKUlg9b6ULAfI3FceAjCvlXnxhHeT+IqVERjBIjEi4dwsGciDg6ojbkhgxYOEW8QeHOSNUjJqzej2Q7KN48zcXBI2MnefvhJtgNPN1AAeVDDCxpzw/8vx9PXnKYlGYJUF+vi0vCYsnT71bWmsdE2RQC8I7JVe3CbK33SK5eSvy73yhQQk0AiBUh2lRjpvI60RqPpGs8qOcIPMTXSVdS5UlyFcC5FxvwT6QYBRZW58mQO/VbpEAqvnpGR0mbmvhNHzUJB58YR3s3QUo82n5RhGtHB+/5RtRu9ZYhCnH2UkGoeYBwG/y/scyzmcSx3Uxc02Wa1xon+ZY8gezWgY56MksOL83+Y9QsxPSMm8b0a3v5RtQs8Jc2XJQ+buEy3AfH2cbqYG8KCCpa94iJDDaxUrl4AEqifAEm93SbWviC4k/1zoDfdLQAL1EdBBr4+tNXeXABmDSQRTdw8cQa+bsPVLoJ8EiPLB+WcE/KbpIqPtjLozUs1DRkbjcaDJao0TfdscQ/ZoR7EDYkVxjwQGR+Bt6THOOU56NheUyxd8xzckIIHaCOig14bWijtOgKVUPllzH/z7qxmw1UtAAhJonYAGSKAcAkTSMNf8ZSOa9J8Rj6v6MCMMqyZqfZ0ioIPQqculsQ0TeELaY3mfFLWIP0C1YLVSCUhAAsMhYE8lMAIBpsWQF4JIG6a/jHCKh0hAAm0R0EFvi7ztdoUA4e7My7xeDQbroNcA1SolIAEJSKAyAlbUfQIfSBeYBvPalOMmfSNfRU5rXNpqt/GO2qAE5iOggz4fFffVTaBrc5rIbMwyS2tVDMa/v4qBWp0EJCABCXSJgLbWSIDVFtZJ/SSmJNlkNseWtu5T2mp3bECeIIE6CPgHUAdV61yKwDWXOqDA91mGiCWUWIqtKvN8QlwVSeuRgAQkIAEJzCUwzNfcq2ySrj8q+qvoNNJWpF9bc9+nYeW5EqiMgA56ZSitaAAEeBLN8kU461V0t8ks7iyX9OAYvVTG1hyiSEACEpCABCSwFIHC3j819jAt774pfxStQq5RRSXWIQEJjEdAB308Xh4tAUbQCXfftAIUTT6ZviD2fiXKsioPSnloVJGABCQgAQlIoEwCo1rFKPlTcvAdoodFq5QuRjxW2X/rkkArBHTQW8Fuox0nQMI4nPRdp+xHkyPol8yy9avZfkSUfjw35W+iigQkIAEJSEAC3SHAvHJ+w4nu+/j4Zo90xiojHVX9QU0OYFRvvTVKYEoCOuhTAvT0QRPYO73/SHRSafLv7+J5jLww+94fvXWUH3kd9YBQJCABCUhAAgUTuCi27Ra9ZZTf8BS1ycoT1zzdiebomY6fZ3ecQJMOQsdRab4E5iXwtOw9PLpadFxZadwTpjh+Pgd9dnX8yOOoPzA7PxNVJCABCUhAAhIoi8DBMYcR8z1TXhatW1atu4FJ6/c8CfSZgA56n6+ufWuKwLZp6CfRDaLjyLXGOXjKY0f9If9G2nlc9CbRvaKzQ+PzUpGABCQgAQlIoGECf0h7D4nuED0/2pS05aC3HeLeFF/bkcC8BHTQ58XiTgmMTYAn2sfnrHHmpTc5gv732DaOcDPwipywdvQF0bOiigQkIAEJSEACzRPYOE0SrZeiUVm90db+21jPQ9z/21G3JDAfAR30+ai4TwKTEWBEnHnpP8jpd4wuJZOExS9V50Lv/3OhN5bYf2nef0+UuW47pjwzqkhAAhKQgAQk0ByBtkaU12yui8u11GQS3eUa7sULO9F5Ajronb+EdqBAAnePTT+P7h5dTJr84ZvUQZ9t/4F5cdvoM6PnRhUJSEACEpCABOonwABA/a2s2EKT9ykrtu6eIgloVP0EdNDrZ2wLKxIYSujS69P1n0bXjc4n151vZ037qnDQZ0z7cDYYUd855alRRQISkIAEJCCB+gg0OSVudi9uMPuF2xJogIBNhIAOeiAojRNoK1Sr8Y6mwQ2jv4i+Izp7Lhfh7Wh2NyL/qLiVy1PfvtE7RB8ZJWIghSIBCUhAAhKQQMUErlFxfaNWd8NRD/Q4CXSDQDes1EHvxnXSyu4TeFG68MfoodFHRAkVT9GY/KfGlj6fuu8UJcPsUSkVCUhAAhKQgASqI9DGwMbtqjPfmiQwEAIVdVMHvSKQViOBEQiskmMeFsWhZTmzbDYm/26gJTLMbp12COnfP6UiAQlIQAISkMD0BNpImrb+9GZbgwQkMAmBhRz0SeryHAlIYHQC1xv90EqObHLe/+mxeKcoUQJfTKlIQAISkIAEJDA5gTbu1+8xubmeKQEJTEOgjT/4ZcuWTWOy50pAAhMQ+NcE50x7CkuyETGweSo6IqpIQAISkIAEJDA+gaZD3G8dE3eNKhKQQAsE+umgtwDSJiUggQUJHJN3to2SVC6FIgEJSEACEpDAGASaDHFfI3YxZY1pedlUJCCBpgnooE9A3FMk0EECTcxBXwoLy7MtdYzvS0ACEpCABCSwPIEm79e/nKbbnn/edMRAuqxIoBwCTf7Bl9Prsi3ROgn0lYBLsfX1ytovCUhAAhKok0ATDiu5cb6WTtwnqkhAAi0S0EFvEX47TdvqQAk0GR63EOK/5Y3fRxUJSEACEpBAVwj8PYZ+MtrmMqJ136/fLf07KbpFVJGABFomUPcffMvds/nGCSzdoJ+5pRn1+Yjz+tw5+yYBCUhAAr0h8IP05BnRG0WfFGUZ0eNStiHXqLHRx6Tu70bXjpYiTUQMlNJX7ZDACgR0llZA4o6aCfxnmvo9t/MEzu98D+yABCQgAQn0lQC/UW9L59aL3jO6T/SS6IycPLPRcFlHFNy10gdyw3wm5UpRRQISKISADnohF0IziiDQZyNKeRp9cZ8h2zcJSEACEugcgb/G4v2jrDZyg5Qvi54WnU/aigKregR9g3TuR9FdoiXK/5VolDZJoCkCOuhNkbYdCSwTQQhcGlUkIAEJSEACbRK4LI0fEH1YdLXoTtEjoktJW79hVY6gvyKdZL75HVMqEpBAgQR00Au8KJokgYkILH5SlT/ui7e0+Lsk21n8CN+VgAQkIAEJ1EPgi6l2hygZy5+YktcpRpa2fsOuObKFCx+4Tt76XvTNUUUCEiiYgA56wRdH0yRQIYGp/9YrsuUfFdVjNRKQgAQkIIFRCDAy/uQcuHqUEfODU07qaP8757Yh0zror4zRZ0Q3jSoSkEDhBEq5aS8ck+ZJoPMESvlbv3wBku6WgAQkIAEJVEGAXCeHpqKdo2tGmVv+iZRVhKe35aBPmsTt8en3b6N7RrskzkHv0tXS1soJlHLTXnnHrFACEliOQNUJZparfIwXLWXxv9rCQ7JFZt5npvxI9MyoIgEJSEAC3SbwjZj/qug9omtEHxHdN/qXaB9k1TE7cbMcf1SUefa3SNk1KSWxbde4aW9PCOig9+RC2g0JLEGglL/1tkYfZvCcnQ3WtmVpGbLX3javWeP2oSnfEj0hOr54hgQkIAEJNEmAcO13pcEtozhzD0zJ3OofpuyjXHuMTpGF/pQcv1VUkYAEOkiglJv2DqLTZAl0ikApf+tth62dM89V+1P2fTnKHL2NU14/+rgoTjw3gdlsV2xdAhKQgASW/TIMdo+S7p/GpAAAEABJREFU7Oz2KXeNfj06BLnOCJ3cPsf8OrpXlPn2KTorbd8rdBachveDQCk37f2gaS8kUC6BUkLc2/7OuWSES3RBjvlMlDB4bgLXyjYO+/tS9tFhT7cUCUhAAsUSYA71vWPd7aJvjP4qOjRZzEFnuTQeVHwuUG4V7YMQFdGHftgHCUxEoO2b5YmM9iQJSGBsAqUss9b2d84kSYLOC20c9uelxGHfIOVu0e9HlSUJeIAEJCCBqQjwHczyYFNV0vGTWRZubhfukB2fjv48Soh/it6II+i9uZR2ZBICbd8sT2Kz50hAAuMTKGUEvW07/jo+uhXOODl7yIh7r5SrRDePvib6k6jSNAHbk4AE+k6gpHvVf7UE++az2uW3h6R4/BYR3TXrrd5sOoLem0tpRyYhUNKX3iT2e44EJDAagVJG0Nt20Ku+uWIt3WNyCV4fvWv0ltEXR4+MVvEwINUobRKwbQlIoHUCJTlrfOe3AWSTNLpe9P3R70YfEFUkIIGeEtBB7+mFtVsSmENAB/1KIHVnkT8rzewd3Sa6WpSRjtemPC6qSGAuAV9LQALdIkBS0TYsXjONnhp9dlSRgAR6TkAHvecX2O5J4CoCOuhXgqjbQb+ylf/+zzz11+XlplGywz895RFRRQINELAJCUigYgJDTFBXMUKrk4AEliKgg74UId+XQD8ITBtafnAw4FymmEqmtWOqxnNym4lnyA7/0diwbZTM8Czr9rNsKxLoJgGtHjqBcwOA3waihoaSg4OM8um2IgEJSKA+Ajro9bG1ZgmURGDav/WbpTP7RMmmu0dKRoNTjC1tO+ilzGWE41tCb8NoKTbFFEUC5RDQkuIInBiL3ht9TJTlvNZOuUOUvBuscpHNWqTNB6tzO3RZdvD9nUKRgAQkUA+BaW/a67HKWiUggaoJTBviPpPw7IYxjJDtP6f8SJRlXlKMLG076NNyGLmjHigBCRRNQOMWJ0A+jUNyyMujm0WvHb1L9PnRz0bnjiTXOTf7P2mvJDm/JGO0RQIS6B8BHfT+XVN7JIH5CEzrmM446LPrflpesMzL11JuHR1FVhrloBqPKfU7bz6+NWKwaglIoF4CnaqdUeFvxmKierZLeYMoK1I8OuVbo9+K/i26mFy02JtTvleag74Uiym76+kSkMDQCZR6szr069L3/nMz0Pc+lta/aR30xZaW2SKdJfHZaSmfGV0lupBcc6E3GtrfdvsLdbPp5HUL2eF+CUigCwSms/H4nL5f9LnRjaOrRlm2i7wYX8r2JCPEdT5kLM1BL/V3JJdOkYAE+kBAB70PV7F7fShpPln36E1m8bQO+qUjNHv7HPPB6O+jjMTcNOVcmdaOufWN+7rtEPuF7C3tBnQhO90vAQl0h8CFMfXrUUbBn5jyTlFyXtw95VOjrKl9QsoVZIIddTropd0zMNVrAkSeIgEJSGA0Ajroo3HyqGoJlPZjW23vyqxtWsd4nJA+1mtl3uLvguIH0TdFGZ1Jsexy/mtRS3XQHUFv8UNh0xLoAQESuB2Yfrwq+qAoCdyul3LLKN/HB6T8ebQEGdeGku4Z1ojxN4kq9RIo6ZrX21Nrl8A8BHTQ54HirtoJ/Kv2FmxgLoFpHdNJR0cYqeGG8RsxiKkN907ZprQ9B77Nvi/V9ndywF2jhLkS/npMti+JKhKQQDkESN52ZMxhVPzJKQlRZ1ScBG475vWbo1+NsgRaikalkO+LWvt8j1prt3IJSEACIaCDHgiKBAZAYFoHfZwR9IVwXitvTLo8W06tREp10Ev4Lj4nhFnLmOkJhL9untfXid4xSuKoXVK+JkoG55NSKhKQQH0EfpWqZxzxnbO9aXS1KMnbtknJqPgnUlYVop6qppZ/Tl3D/BXwAGL+d5rfu8uy5tu0RQlIYGAESrgpHBhyuxsCzrcNhIZlWge97dD0qnCtXFVFFddTwnfxQssknZK+kjiKZfVen23WQL5zSm6aCfVkm5DaF2Ufx5ANmoSBF+S1IgEJjEbgoBz28OjMPPF1sj3jiO+b7eOik0Yy5dRGpC4HfdopWlV1nmiFR1ZV2UL1uF8CEpBACTeFXoXhEXBuUfPXfNqss32ZllCqg978J2LFFkkoteLexff8IW8zmk5I7TuzzSg7+QbWyzbREjjxG2ab0NvXptwnemj0h1FFAhL4L4EvZvOwaFfnicf0ZXX9TpRwr8p8fub4088ua1ds57ejK7ZqpwQqJ1DCl17lnbLC4gnooDd/iab9W69rZKRpEqU66NNGOFTBsa75oz+LcdzYvi7lM6KPiDKPkxuw9bP9kCjL85FM8GvZHmXFgBymSKBXBOpybpuEVFek1bS/X9MyYOSchKe3m7ai/p9fWQ+9T6wMpRV1kUDbX3pdZKbN0xPow43I9BS6VUNdN15NU2AefNNtjtLetUc5qOZj2nCMf5E+HR79cPTV0a2iq0dvHt0i+p7oGVFFAn0n0Ifv2Lp+29t6gMn38l754P0oypSDFEqrBGxcAgMhoIM+kAttNyUwJYG6brymNGvs00t10MfuSA0nkGW/hmonqpIl+o7OmS+I3j5K+G8KRQITEyCZ2rdy9mzNy2KkD0st1tWHppN7bpRPBdnwz0z5sqjSPAEirBpv1QYlUAoBHfRSroR2SKBsAn0JcddBX/hzVnICqiMWNtt3BkKAKRhkNv9u+stcbRISviHbz4/uEGXVAfIfoIQk3zj7uMmfUfZtln2zlQiN7CpC/lGEFdMZUdfvRBMO+qrpOp+l01PyMOcVKW8UVdoh0McQ93ZI2monCeigd/Kydd7ovozGdv5CjNGBPoRf0l1CFinVFQmUNII+17qT5+7wdacJ4GxzTXnw8rH0hNUBnpWS/AQsJ3abbM841jMlS/4RZnyfvEe2cxIS7pHt90YPjh4TZQUBFAfrj3m9lHDcUsc09X5dzm1T9tNOXb/tq1B5DXqr1PmcKA98/pzy3VHnmQeC0kUC2twnAjrofbqa9kUC9RHoi4NOZvH6KE1WM47HZGdWe1bJI3hnV9vVqWsj/HXGcVyqxNm8V1pkZHcxZf49jufjcyzO5wtT7hZllJgM+WTAPyCvvxA9KvqdKKN9F6UsXX4TAxmdvHdKRiX5zG+Q7W2jT4u+JvqhKBn+WU7s19luQn7fRCMjttEHB72uEPeqH6w+OteESAw+Z+/L9nbRuh4CpGpFAj0gYBcaJaCD3ihuG5NAZwn0xUHfMleAUbgUxUgT4ZujdLau0a9R2l7qmFFGQ5eqo8r3TxmjMpyA7+d4RnYXUzLYM5L36RxL+DajeXtmm1HiF6UkA/4TU24f3Tp63+i60etGeUiwdkqWtPtyytJk1xjESPf3Uv4pWopMsrRgXbb34Tu2ru+QNSqAzooR70g9fJd8NiUPzVIoEpBACQS0YXkCOujL8/CVBCQwP4G+zAdbLd0jI++jUpYipTjodY1+VcG5tPB7kkdV0a8q6zg3lbGk3VkpSxOy9ZdmE/ZczH+FaMkRLKMiqvM75IajGjHrOKJXiNwgKoOHajzoIoJj1iFuSkACAyDQuS7qoHfukvXC4LqesvcCjp2onQCjMcxZZRSlhNF0khPV3ukRGvjPCMe0eUhJTnpJodFzr0mJodKlOujMhZ/Lr63XJV63cVnU+R3CfPFR7GGqCFNCTs3BJBUkEuUe2VYkIAEJ1ESg+mp10Ktnao1LEyAcc+mjPKIkAnXeeLXVT+YhnpHG94veIdqWVD2/ctJ+lB4lUZIDc96kkBs4ryROdJeRfcoStaSHPqVdt0muV52/E2Thn88mRtafnjfIX8BKFORnIH/DetmndJeA94ndvXZaXgGB5Rz0CuqzCgmMQqDOH/FR2veY8Qn0+Zo9JTjIKH10ysdGmxZH0JsmPl17f8/pf4uWKiU5nTDyYQYUllYd9MUZkUjwTlcdcveUZP7/YUo+XyRQfFi2S/kujSnKlARKf2A8Zfc8XQKLE2jSQV/cEt8dEoGSb26HdB3s6/IENs/LA6Nkxd435Q7RJrK+r552SpD/LcGIRWwo5feqpMRi8+EqzdFj+ar57CxhX0m/RaVdt0muT53T124cg2aSDP4g27tHN4kqEpCABHpHoJQbngrAWkWHCJQ2wtMhdK2Z2ucR9LlQmaO+U3YeFMW5+HZKEg1dL2UdsmYdlU5QZ+m/B9eYoE91nPKXOiqtsM7SHL3SeVWIfqqq6nRupzJsjJPrHvUkyecNxrDHQ7tLoPQHxt0lq+WdIFD6DVk5ELWkSgLME6uyPuuqn0DdN17192DyFljOikRD56eKn0RZquehKa8TrUJKcdCvWUVnaqxjlRrrHqfqkhKLzWd3nZm052tvqX0+kF2K0JXv92GZtSE9yL3yqvl/XQScg14XWevtBAEd9EIu08DMuHRg/e1Dd4fsoM++fnfJC5bq+WJKRgZ/nPLt0e2ijLynGFt00MdG1uoJJYVFzweiNEevdF7zMWxjX2nXbRIGpT0cmqQPnlMGAR30Mq6DVrREQAe9JfANN1tacyVn9S2NlfaUTeCuMe/F0cOizF0/IeVHo7tGN4uO4rTXFTqf5seSa411dLMHl5Lpnl6TJI6yVC3NSSqdVynXsQ8PQR1BL+XT1H07DHHv/jW0B1MQ0EGfAp6nzhAYu/zN2Gd4ggS6QWCjmLlzdO/oMVGcdj7vX8j2y6I47bdMOVtYJmj267a2S3KC5zJYee6OFl//o8W2R2m6tLnMOm2jXLVly/owYljaw6Fl/ussAR30zl46Da+CgA56FRStY1wCOCyjn+ORJRDow81jWxxxyB+exveK4rTz+We0bEafmv0lyCij/W3ZWdLofumhyHyu2rpO87Vb8ndHSQ+lSvqMz3cdR9lX2mdvFJs9pkwCOuhlXhetaoiADnpDoG1mOQI4KMvtaPPFnLbPyWvClglZzqZyFQFvvK4C0eOilLnw8yEuyXkpLUv6fLxK2lfyd8eqBYEqyZaCsGjKQAnonwz0wtvtKwn4B3AlB/9vlsDJzTY3Vmtk6UYZ8Xx6zpw2A3Gq6IX4NLsXl3HRTpQSaj+fkSVlmDdke74rtPC+kq7dXCtLGkEvJRfFXEbjvPZvYxxaHrsYAe85FqPje70noIPe+0tcZAcvjFWnRkuUX88yimRft8vrQ6OFSmNmlRym2hiEnjd0k4L7d42CbHOe7XgXo2QHvZSl+yC6Fv+1pOtX1K4OekUgraYXORm8jBKYmIAO+sToPHFKAsdNeX5dp/9+TsWEvD8i+3aM8mAhxYDErg6JwLoFd7akB0Slj+yUxIqPVEkJ/rBntl5n9ouWt3kY3IQJN0sjj4+yPOS3U/41+qWoIoGSCJT2PVYSG20ZAAEd9AFc5EK7+INC7bpgAbsOzP4Not+PDlFq+bEcIsiC+3yX2FbSXO+Yc7XgRFz9ouWNkkbz50NRmn0lO+g3mA9gS/vuWWO7m6fut0VPip4dPSDK8pD3Tcnc9z+nVCRQEoHSH4SWxEpbehXRaRsAABAASURBVEhAB72HF7UjXfpaoXayLNZCpjG6fq+8+caoUj4BLRyfwAvGP6WRM0rKBbFSIz2evJHSHHQcwMl7U++Z16+3+rFq3y5HV8Fq49Tz7Og+UR6Ek6Tv6Gy/JMpD5hQryHkr7Jlsh9M/JuPmWRKQgASWI6CDvhwOXzRI4My09YtoaXLJCAbtnmM2jf42OhTxafYKV7qXO96SXv00+tBoSVLS568KJ6pOtqU9QCgpjHwu95IcdFZReOFcA0d4TXK5R+a4j0f/GP1R9P1RkpzePeUocvEoB3mMBBokYD6DBmHbVHkEdNDLuyZDsujLBXZ21FBa5tBvGPuPjA5BDHFv+iq31x6f6y+meR5AfSDl46I3irYpa7fZ+Jy2V5vzurSXpU1TKJnXzQu7eG+KPXtEF5M75E3mkL875YnR86OHRJ8UnfTvdJQH06l+SWG0fsmDPEACIxDQQR8Bkof0l4AOen+vbRd6hhNQmp1/G8Ogv+TYbaJDCHkvaQQzyJVpCYxw/i1yzLOin44yMofD/rlsEyp7v5RNLlF157RXipQ8Igyj0kb4S+Z1e4AVpq+LPZdGj41+8yplmxVGcIBPzj7mkD8/ZVV/F1U56DFJkUAlBHTQK8FoJV0loIPe1SvXD7u56eDGv6Te/GMCYwh5x2HBgZng9E6c4ndFJy5TrUbisG+fFkg29a2UOBGnpzwo+qroVtGZpdqyWak8utLapquspMRi8/Vk9fl2trjvui22vVTTpa5cwMOv+8T4+1+lbN8q23XJPyuq2DnoFYG0mmU8jBKDBAZLwJvuwV76YjrO6FwxxsSQSRz0nLaMhw13ysa+0T6K3xV9vKrT94mloXZINYTmHpWSRIqshEASSBx5ks49Jvt5gLVeSubZphhLNsrRD4rOklY363oIUVWnSgspL/WBBnO316kKesfrmfR3b263darmEvH1pASq+kxO2r7nSaBVAt50t4rfxkOA5ctSFCOXT2EJYYI75/yHR3FSUvRG/K7ozaWsvSOMmG6RVgiFf1fKz0QZcT815YVRMrKTJPI72f5s9J1RlnxilHyzbM/oA7L90ijhvCkalKWbKnXkFctLdIjXwLDClIdGhZnUmjk6Q62ht+EFCPA7scBb7pZA/wl4093/a1x6D4+Pgb+MliJVhOgdls4wNxAHJJu9EOeg9+IyFtEJkpjdOpbcO4pTTubqt2cbZ/2YlDP6jWy/NUpSrBRFCaP6ExtU84k3rrn+SaovKRkbUwDIHfLaSTrS03Oqmu9rMtGefkBa6NbfW2jTJiVQDAEd9GIuxaANKSks/F8VXYlzUs99oyxblaLz4ndF5y+hHaiQwMtTV4kj1TFrGbkCKEvStmwihH3LgHh9lAc+f0jJkmJfSclqBSmUEKjqd88Q98BUKiHgCHolGK2kqwS86e7qleuX3fukO6U8La1qJCFdukJemf+ZoztOdvicUpw4MlLcJdGgFgncJW2TTRvHj2iAvCxCCCVfq15LJqp9p5x1m+g0wtx/IhcY/X5qKiIxIaPgKDkQeNB7RPaz9NifU+IsnpHyq1ESeTJlokQ2Ma91gVXrRmiABGYR6Po906yuuCmB8QnooI/PzDOqJ8A6rvtXX+1ENVbtoGPEwfnv7tHTol2Va3TVcO2WQE0EWHMax4/59GeljcOje0YJ2X9iygdHN42SHK+psHOyfqfJ4uRRsehXURxB9LhszywhNlOSaPPMZcuuyN7MMXOVBIQn5DxGvz+WEqf8NSlRnHUeAmyd10wvun5KZXQCVUztGr01j5TA0gQuWvoQj5BAfwnooPf32natZ+8uxGBuCuswhdG2TVJxV+elO4Kei6dIYAECzLHeNu8RMUPSu09k+8vR70VJjnduSr5bCNtk+xd5jUM645wuVfK98bucQx2LKfkvcljxco9YyMOE2cpSYrVHI6RdZUUCVX2/V1XPiha6Z2gESCg6tD7bXwlcTUAH/WoUbrRMgBvWQ1u2gea5+aWsQ8nyzrz0D9VRec11miSuZsBWPwgCJMhjNJ0s8Diksx3UxbZJqHfTQRDqdie1XgISqIZA31bCqYaKtQyGgA76YC51Jzq6WyesnN7IZ6WKXaNdEh30Ll0tbZWABHpIoLYuVTXyXVU9tXXUijtDwBH0zlwqDa2DgA56HVStc1ICp+TE/aJtSlN/E0QMtNnPcdtuisu4dnm8BCQgAQlMR+DK7/fp6vBsCVRJgJwTVdZnXRLoFAG/lDt1uQZh7B7p5eXRtqSpv4mV2+rghO02xWVC8zxNAhKQgAQmJNDIyPeEtnna8Aj8I11mScQUigSGScCb7mFe95J7TSKkd5RsYEW2dc1B9wauogtvNRKQgAR6SqDOHC5LIfP9/hD4ZX+6Yk8kMBkBHfTJuHlWvQTenOrbShDS1FzrptoJykrEZdYqwWglEpCABIojUNW9YI8f5BZ3zfps0Jl97px9k8AoBKr6Uh6lLY+RwKgELs6Bu0fbkKb+Jrp2I9MUlzauuW1KQAISGDKBrv0e9e9a2aPZBH42+4XbEhgiAW+6h3jVu9HnD8TMU6NNS1M3Kk2HAk7bXlNcmr7eticBCUhg6ASq+n6f9ndm6Nehtv53rOLjOmav5kqgcgI66JUjtcIKCTy7wrpGraqpv4mmQ9z/PSqABY6r6gZugerdLQEJSEACLRGo6ndPB72lC3hVs5elfHmU3+ubpWwqVDxNVSrfr7Q2K5NABwlU9aXcwa5rcgcIfDM2fjTapFyzocb+01A7M83wgz2zPUk57fmTtOk5EpCABCRQP4Gqkpb6O1H/tVqohc/kjdtF3xpFzsl/h0W7JoS3n7+80b6SwPAI6KAP75p3rccvjcHnRpuSvjro045sND3i39T1th0JSEACQyewUkUApv2dqciMQVVzenq7RfRxUZzyFFcL7139oiMb+zZupw1KoEACOugFXhRNWo7ARXnVZKj7qmmvCenaCHoTTGxDAhKQgASaJ1DVKh3eUzZ77V6d5taNHh2dT86ab2fh+w4o3L6xzfMECUxCwC/TSah5TtMEDk2D+0SbkE2baCRtND3SMG3ood8VuWiKBCQgAQksSMDfiQXRVPrG51LbLaJvii4mbS1Xu5hNi7332bxpeHsgjCEe2lMCfpn29ML2sFsvSJ9OjtYt70kDD4jWLU2PoE/7QMDviro/EdYvAQlIQAISWJjAj/PW/aOPip4dXUouXOqAwt7/SGH2aM4yEbRFwJvutsjb7rgE/p4THhH9W7RuIbHKBjU30rSDPu3f+rQj8DXjtHoJSEACEmiZwLS/My2bX2zzp8Sy7aN3i347OqqQ1X3UY9s+jlxDC4Xqt22b7ddFwHoXJOCX6YJofKNAAmfEpudE65bV0wAZ5DdKWZdMu+zZuHY1/UBgXPs8XgISkIAEuk1g2kitbve+eut/nyp3it4x+oXouPLXcU9o8fi3p20/P4GgVEegyzXpoHf56g3T9v3TbZYTSVGrXD+146TXNSe9aQc93ZlKHEGfCp8nS0ACEug9AVf7qOYSE5q+a6q6aZR7nhQTCZGHE53Y8EnMlW8qz1DDXbO5HhOotWs66LXitfKaCOySen8drVuukwa+EX1gtGrp2oh21x4oVH29rE8CEpCABCRQJwFGvEn8RgK4d1XQEPVVUE3tVZD759LaW7EBCXSIwP9b1iFjNVUCVxG4JOVjok3ItdLI16MPiVYpXQvl0kGv8upblwQkIIH+ETDSarJrylzxvXIqjjlLpw3JWSWvEA56uq9IQAIzBGofQZ9pyFICFRM4PvXtHG1KvpSGSFKXopMy7Y1T10b8O3mRNFoCEpBAhwl4Tzn+xds7p+CYvyIlod4pBiUfTG8J6U+hSEACMwS6/mU60w/LYRLYN90mHCxFI/L5tPL4aBdl2hF7R9C7eNW1WQISkEBzBKZ9ENycpe239KGYsHb0xdE/R4cq7xhqx+23BBYjoIO+GJ1lvtkBAoSDfapBOw9IW6+KDk100Id2xe2vBCQgAQlUTYD7lduk0mdFWVosxWCFAZahMxjsxbfjixPQQV+cT73vWntVBJ6QipgnnqIR4UfloLTE/PQUE0nXRhp00Ce6zJ4kAQlIYDAEuva71uSF+V0a2yLK/UoTSW7TVNHCEnLcSxVtpMZJoC0COuhtkW+g3YE1wfzwnzTY5x3S1nejhKilGFuuMfYZ7Z7gHPR2+du6BCQggdIJeE+58BW6c946OqpcSeAlKUiOl0KRgATmEvDLdC4RX49KoLTjyHr6oBj1m2hTctc0xEOBe6UcV/533BNaPp6n3V1ZsqVlVDYvAQlIYJAEHEFf+LL/Y+G3BvfO99LjA6OKBCSwAAEd9AXAuLttAhO1/6ec9cAoZYpG5EZphZH056YcR7o2gn5wOrdadLvo4VFFAhKQgAQkMJuADvpsGstvr7T8y0G/Gvd+adCw7PwwCeigD/O697nXZ6ZzOOl/SbmwVP/Oe1Plx6KjStMO+rRZ3Gf6xXJzD8mLDaJ7RI+LKhKQgAQkIIGuRYY1ecWu2WRjBbf1nthG5GEKRQISWIiADvpCZNzfZQInxfhto03LU9Mgbd855VJy7aUOqPj9qv/WT459b4huGr1d9M1RkuCkUCQgAQlIYIAEqv6d6RNCR9CXLTs9F/TlUUUCEliCgF+mSwDy7c4SYI7TNi1Yz8jyiWl3qR8hwsVz2EQyyUl1Jnn7ZQxi6bmbp9w8+sWoIgEJSEACwyLgPeXC17vpqLmFLWnvnR3T9N+jigQksAQBv0yXAOTbnSZwZKxvYyQ9zS57S/5jbvo6KeeTpkfQx5gbOJ+5I+87Jkc+LLpelFH136ZUJCABCUig/wS8p1z4Gq+88FuDeGf39PLHUUUCEhiBgF+mI0DykE4TOCLWbxltQ8jufkYaZjmRFMvJdZd71b8Xp6VLjKrfKuVW0f8mlssLRQISkIAEekfAOegLX9Ihh7iTq+aNC6PxHQlIYC4BHfS5RHzdRwJfT6dIHNfWMmFvS/vHRtePzshNZjYGUH4tfSSx3B1Tfipaq1i5BCQgAQm0QkAHfWHsQ00Sd3GQPCGqSEACYxDQQR8Dlod2msA3Yv19o3+MtiH3SaOnRHFWWarsptluUqrK4j6NzfSfH2oeTrw4FfE6RadEYyUgAQlIYH4CTU2lmr/1svcO1UF/TC7Lr6KKBCQwBgEd9DFgeWjnCbC0xybpxS+ibckWafiw6GbRJqWkG6c/pON7RxlR3yGljnogXCn+LwEJSKCzBEyEtvCla8NBX2Vhcxp55xVphVxAKRQJSGAcAjro49Dy2D4QODuduEf06KjSPoGDYwKOOvPUmaeWl0ptBKxYAhKQQH0EvKdcmG0bc9DbvB4HBcVeUUUCEpiAQJt/vBOY6ykSqIQAc6IYyf5wJbV1o5KSRtDnI0boP2uqvyBvXhpVOkhAkyUggU4SqOr3wRH0hS9/GyPoC1tT7zsnpvqdoooEJDAhAR30CcEGUaJnAAAQAElEQVR5Wi8IPDO92DU6BKlzHfQq+b0nld06umdUkcBsAm5LQAL1EKgquVtVjn49vWy31jYeXrSRGJcpbA8N6suiigQkMCEBHfQJwXlabwi8Kz3ZNtr3Udsu3Tj9Oddjt+i+UUUCDRGwGQkMlkBVDnobTmhXLlobI+jvbxjOBWnvAVGmEqZQJCCBSQnooE9KzvP6ROCIdIbwan9UAqIgOb4gWzRFAtMR8GwJlEugKse6Kkd/HFK/ycHfiv4uWrKs3LBxL0t7z442JQxybJnG2kzCm+YVCfSDgA56P66jvZiewM9Txd2iP4z2UUpYZm1crn8Z9wSPl8BQCdhvCUxBoCsO+t/SRx6ofyDlU6M3jDIlilVRiLrKy2Klyd/gp4VCkwna/p72iEQ8IaUiAQlUQEAHvQKIVtEbAuelJ/ePfiyqtE+g6RGH9nusBRIok4BW9ZtAVQ56VfXMpn1SXuwffWz0BlEcweek3C/KdKgUV0jpEVf/vMLK+v97e5r4SLRJeUQaOzaqSEACFRHQQa8IpNX0hgBPgnn6vGN61EaClTRbi3RpDvoMgLbXcJ2xw1ICEqiVgJW3TKAqx7qqedaHh8dToteP3jlKRnCW7Vos8dhvc1zJwuh/nfZdJ5V/NfriaJOyfRo7MqpIQAIVEtBBrxCmVfWKwIHpzcZRnt6nUFog4Ah6C9BtUgK9I2CHliJQ1dzxlZZqaJ73eSj+g+xnBY+Hp1w1+pDox6MkHUsxkuAAXzLSke0cxBztulpm7jf3KpR1tTG3Xq7bFtn5hagiAQlUTEAHvWKgVtcrAqelNzy9/3BKpXkCXVkarnkytigBCRRDoAeGVDWCPqqDfk6YfSj6oCiRUvdM+YLoYdHFRsnz9qJy/qLvtvtmHQ76mukSDzIYOb9FtpuSC9MQ0wGPTqlIQAI1ENBBrwGqVfaOwDPTI+a/8YQ+m0pDBHTQGwJtMxKQQLEEmjCsCQf93HTkrVGc8ZulfFYUxzJFZVJyYtGqR/efGGpkTH9SyiblT2nsvtG+JtRN1xQJtE9AB739a6AF3SDA/LcNY+pPol2UJjPIVsXn31VVZD0SkIAEJDAfgSv2VRXizjzoKyq86r+vp3x19F7RtaMvjxLOnqIWqdoJrtLIiyuqbP3Uc0z0E9G1ok0KS9rxgOXkJhu1LQkMkYAO+hCvun2elMAvc+Jdo++MKvUT6OJDhfqp2IIEJCCBaglUNYL+05hF/paHpbx2dMtly5a9KeX3o01IyYldx5lPPx+rNbJz7+gpUZaVS9GokCX/7mnxzKgiAQnUTEAHvWbAVt9LAi9Kr7aOEuqVQqmJwL9qqrfKam+Sypj79+CUL4seEvVzEQiKBCTQGQJVOegbpcesgPLFlI1MCUs7s2Wa+euz6ylt++kx6IzortE2hOvJQwF/29qgb5uDJKCDPsjLbqcrIHBU6rhT9GvRLkgXl1krfQT9j7nwf4ieHf1K9G3RR0dvFL119DFR5lwS5jnt6EmqUiQgAQnUQqAqB70W48aolMziYxy+5KFVHTBp6P39YsCJ0X2iN4y2Ie9Lo0REtPHAJU0rEhgmAR30YV53e10NARy0rVLVK6OlSxcd9NKTxDEfb6HrznufzZvMuWTpG9bzJTHStlft+1TKn0UVCUhAAm0T6IuDXmrU1eXzX+AF9xKJ8OW8+60oK8mkaEVemFafF1UkIIGGCeigNwzc5npJ4C3p1cbR06OlyvNjGGvLpuiMlJ4k7vdjkmRpoSNyDqPqT0hJ0kEenBA6+Pq8/l5UkYAEJNA0gaqSxDVt99z2/jl3RyGvR3XQN4i9h0ZPiDJtKsUUMvmpZMOn/XdPXoVnSkAC0xDQQZ+GnudK4L8E+EFdNy9x1lMUJ2R7/VKs+nz0dtEuSOkh7lXNx2OU5DW5IPeOrh7dLooT/42U3CilUCQgAQnURsAR9NrQXlHxUnzJY7JfjjwpSjh5itaEkHpG8Jm2tagRvikBCdRHQAe9PrbWPEwChLsTklbqGqGPyGVhpJ/w63tkW5mcwPmTn7rgmZfmHR6kEBr/wGyvGeXz9KqU340qEpCABKomsJQDWXV7Q6tvlQU6zNQnMrP/Nu8/Jdq2HBADNo3+Otq22L4EBk1AB33Ql9/O10SAp+A4v8zfKjWxCsnMjkv/GaVlHn02i5PSR9AvaogYn6c3p637RGdC4t+Y7Z9EFQlIQALTEuhLiHupvxmr5gLxsDXFFcJ68a/LFo55W5nZ0/xy8uy8emK0r5nw07XZ4rYEyiagg1729dG6bhNg/tZ66QLzjlMUKQ+IVWSkZ53aLbKtjE6A0e7Rj67uSELid091d42uH31JlEzyKRQJSEACYxNwBH1sZGOfQGLQZ+Yspi8xQr1Htq8dbVuwhfXNP9i2Ib1q385IYEoCOuhTAvR0CSxBAMeJzN075riq5iynqsrlnqmRJeOOTVlKMjlGi2NOsdKWgz4byC/y4h3Re0Ud+QgERQISGJuADvrYyMY+gfsAnOCX5szrRUuQD8cIplAdn1LpEAFN7T8BHfT+X2N7WAaBA2PG7aP8QKcoVgijZg404dOPa9nK0r+f/toyn9nN/y4vDo8qEpCABMYloIM+LrFuH89gwUPTBUb0S3jQHFOUgghoSgEESr8BLgCRJkigMgLMWWaeF0lYfl5ZrfVUdJdU++ko4W+sg8qcubxsVEq/aSzJQefC/Ir/VAlIoDgCv4xFTE05NWWJUvp37ajM+jKXftT+TnIc66vfMSdSplAk0DQB2xuFgA76KJQ8RgLVEiA5251S5cuif4+WLLeKce+J/j76ruhNok1J6d9PpSUA/GdTF8Z2JCCBZTygw/H+dlh8Jvq26IuiJOBkTu+Nss00HZSlLTfL6ztEiVJKUZT0xbEt/TejzYt+cRrfOcrIOSPo2VQk0EMCPemSX2Y9uZB2o5MEuKFbN5Z/JVq6kMzmBTESR/0DKZtw1K+ZdkqW0h6u/LtkWNomgY4RwIn5amwmqdfzU+4QxblmqtJq2UZxvO+fbaYD8cD1ndk+JMqcXs7P5grCcok49iu80eKO0r9rR0Wz8qgHDuy4I9NfHg7tm1KRgASmINDUqTroTZG2HQnMT+Cs7H5w9GHRM6NdkGfFSBz1/VISCp+iFin9ZusftfR68kovn/zURs8k1HeuficWEP57bsrSIhNiktJTAhemXz+LHhzFwX5gSlbeWCMlI+APSvny6HujHINzfUa2GT1PMbEcPfGZ9ZzYl3vBlerB09la/xLLnxrdJnpOVJGABMomcLV1fflSvrpDbkigowS+GLtvG31ltCsOylNiK8nkuGllBCkvK5VVKq2t+spKc4hLs2c+4sx7JNR3rt43BzPCs3ZKojVmwoJZBvDJ2bdblGz1H0n52SgjQiekVCQwDgEc471zAt9XRAGRTXvDvGZ0nIimb2T7tCjhwClqk9I+u/9XW0+brbj0h7pN0mB5V75TeZDeZLu2JQEJVECgHge9AsOsQgIDJfCW9Ps20S79qLLEFwnlGP3cI7bfOFqFrFpFJTXW8a8a656k6tLsma8PX5hv5wL7CAP+Zt77RHTP6Euiu0QfE2VEaOOUM478dtl+VXSfKDemJ6es28lKE0pHCHwqdjIivkXKF0eZM/6HlG1JadFS/2kLRMXtMu2g4io7V935sZhRc5Z1I9ItLxUJSKBrBDrpoHcNsvZKYEwCf8zx/MDeNSWhvyk6ITjmr4ulOOoHpSR0P8XE0kbm+HGMLe2mtgsO+o/GATzisTjyLA345hz/jCg3phukJEyZG3amYbCPecQkPCTiY9oQ5VSvdIjA7rF1oTnheatxObvxFhdvsC/5K1ZfvJu9f5f8MORF6NID/t5fFDsogUkI6KCvSM09EiiFAOHjhP4SjvnbUowa0Q5CRglnZpTq7Tln/ei4sua4JzR8fGk3tV0IcceZbvIy4YifmAYZVWceMYkOSfSF485SQz/Me0r/CbBcZEm95CFmSfZ04btjFF5DddBZGWajAHpOlLwKKRQJSKDLBHTQG796NiiBsQkQjslyZ4T3ds1RXyu9JaT0lJREA+yUEucoxZJSuoPel3mbS16Iig4gtwJaUXVTV8Nn8k1T19JcBZekqTdEiVKZUUaG+ZsiuRnz9atQwsBn6nlU2uOm//UpPxk9NnpetEtS0sj5DDemX5S0CkQXom9m2C1Wlv6bsZjtk7xHOPvTc+Km0Z9GFQlIoCcEdNB7ciGv7oYbfSZAgqyuOupcl3vnP5Z5wdFgKSJu/kkIlt3zyi3m3evOhQiUFnI/106ckrn72n5NNvm2bRil/T/nIBLrkePhtdme0Tdme/8oyc2Yr1+Fkkhtpp7PpW7CZl+T8knR+0V56Mbc/0Oz3QUp8XMHN74HKUvQvjjoTLMqgWcTNjBdh3D2jzbRmG1IQALNEtBBb5Z351uzA0UQ6LqjDsRH5j+WLbo05VejJADbJOWMEKp4+5kXliMRKN1BLzGMlmWISkvYNd/FfnV2lpb5uyvTA/iOCb7ipCQHvcS/zXEv2FCc8wMChgf1TNcxnD0wFAn0kYAOeh+vanf7pOXjEeiDo06Pt8x/LHHEDT9h4yijXqUvsxazlTEIlDpKV9r85PmQnjrfzpb3NZ1PYNLulhRKPrsP5EeY/brN7T446Cwp1ibDuts+Kg2Q8PKJKbs21S0mKxKQwDgEdNDHoeWxHSfQW/NnHPWd08MujAbGzF7I//aiF811otTfm981h2DilkqMjugCN4D/k/8K1JIeHHTdQSdBGiPLBV7mqU0icoa8EFunJhJeplAkIIG+Eyj1hqnv3O1fHwm03yfmd982ZrBE2+kplXoJXKPe6seuvbSs8nM7cM25Owp5XWISsbloSvusYd8F/NcBLTVy4x8FsSuV0VKISI5GngSc2JssdXDH3mdJyofH5o2j5IVIoUhAAkMhoIM+lCttPztPYIwO7Jdj143uGCVTdQqlBgKlOZxMDaihm5VVuXJlNVVbURcc9BKvbVfmv5bqfJZkV9dG0HFcv52vge9Ft4/2Sb6fzmwTJSfLYSkVCUhggAR00Ad40e3yYAgcmJ6y1vNjUi61BEsOUcYkUJrDWXrI/WIZ+8dEX+nhJIqrtMIaKivJmZvpXklJzmZsmq8sNbKkpGkLJdky3zVk33r5j2UG/5DyC9H7Rvskx6QzOOb3SnlkVJGABAZMQAd9wBffrg+GwGfTU+bosVbyV7LdgvSyyWsV1iuWvirMpOXMKY3XjHEkJJzZLrUscYTzslJhzbGrVAe9pKiIEh8AcRlvk/9eFiWEnUSJrGbAMn/Z1Rs5PD3BKd88pY55ICgSkMCyZTrofgokMBwCrJX84HSXkQjC4LPZE2mnG6u10+yCrZY4T3musWvM3VHA65KyaS+Eo1QHqtQlzGZz/J/ZL9yel0BJI+g8TN49VhL19auUe0XZl6JXckh6c+foQ6KEtadQJCABCVxJQAf9Sg7+L4EhETgtuEoaEwAAEABJREFUnSWRHEl19sx2V+aSxtR2ZIFWS3M2u/B9fr0FWLa5u6Rs2gtxKNVBLynR2ULsSt1f0oODth30B+UivSvK8mGMlr8+2xtG+ygfT6d4SP7olCdFFQlIQAIrEOjCDd0KRrtDAhKohABz+XZLTTeLPi+K455CGZHAmiMet9RhVb3fhe/z61bV2Qrr6YKDXmKIO5egCw56qbkZSksyyfVsSvnNeUYaIwna31IS2v2ClLeI9lGINOEBxC3TuadE/a0NBEUCEliYQBdu6Ba23nckIIEqCHCD9L5UxFN91ls9ONvK0gTWXvqQRo9Y4Ia/URuWaqzE+cBtjx4uxYz3Sx1BL9UumM1oqVM/Svp7beJe8H65IG+O/ix6dvRD0e2iq0T7Kr9Ox14YvXF01+hZUUUCEpDAkgSa+FJe0ggPkIAEiiHAeqs7xJqbRsmY+8eUyvwEWIN3/nfa2dtOyOx4fS1xtLoLTmapI+j/HO/yt3J0qfc5K7VCY/5G6/juYAWRp6e5g6KslPCtlK+I3inad/l6OsjDB5LcvTvbXchzETMVCUigFAKl/nCVwkc7JDBUAr9Px/eI8uSfZdqOzbayPIGt8pLQzFISGJU6UhhMV8vYGdOvPrO+DUfQJ2dbYkTE3N6U+ndR0qoGVSwZSX6JnQKfsHUc8p9ne58oD3yvk7LvwsNHogLukI5uGf1SVJGABCQwEQEd9ImweZIEBkWAZdoIT2RE5D3peVfWP46ptQvJjUhq9Lm0tFm0TSnphn8hDqWNJC1kZ2n7Sx3lL2mpsIWuWUmh5LNtXHX2i5a3J/3uYHkwlj77Zuw/P7pvlJHjITjk6eoVQtj6i7PF8m/PSslycCkUCUhAApMT0EGfnJ1nSmBoBE5Jh0nkw43ILtnGMU2hhMD20WOiRB58JiWJgJpOiFbFKFhMr1VKHEGv8XewMpaljvKXatds8CWFks+269qzX7S8PUrCS3KU8L32/th6XPSy6HejTIW6f8qhCWHsj0qnSfy2d8oSv9tiliIBCXSRQBduTLrIVZsl0GcC3Jh9JB3cOHr36H5RwvtSDF5Yuo4pATC5IDRw2t+S8pHRG0brlNIddD43dfZ/0rrrmH87qS0LnTd/KPlCRze3vwsj6KX+XZQ0gs5Upvk+NbfPTpxPlj9jZJjvtWdn3z2ik46659TOCsnt3hrr148Sxk7kVDYVCUhAAtUS0EGvlqe1SWBoBI5Ph58aZVT9+Sl/GFX+S4Cw95fn5SHR86I/ipLJ+GEpbxutUkq/YS71IU6pc5RnfzZacdBnG7DAdhfYlZolvKQRdB4eMhLO99Vjc60/ED05ynJgZB/v6/Jn6eKSclGO+HCUKAE48H3+i7xWJCABCdRGQAe9NrRWLIFBESC8773pMSMrZK7dPduExKdQZhEg6oBMxodm3y+jf44SEk9yJUJI83JiKXWkcKZDpc6jLjUEeoYbZamj/NPYRb+a0JIc4Zn+rjGzUVDJXHIifg6MTcylJtlZNgcrfC/zIJWpSs8MhW9HFQlIQAKNENBBbwSzjUhgUARY+/WN6TFJ5VhSZ89snxlVViRw/ewiJJ7kSoSQEjL8vewjGzA3hUwhyMuRpPQR9FId9FKTiM2+6KU6wgWzuxpfiSPojFhfbaAbxRA4MZY8J8qc/Mel/GJUkYAEJNA4AR30xpHboAQGRYCldnZLjwnnvmdK5jOek1JZmMCmeesZ0Q9GfxDFaSchHxEKjLQzCn+D7J8rPAyZu6+k16WOVJf+YINrWOpvdRcc9HoyinNVJlcd9MnZVX0m0V+E9N8tFd8lyjbLxGVTkYAEJNAOgVJ/9NuhYasSkECdBHA2WY7mZmmE+Xw4nCzNk5fKEgQ2yvvPjTLSzjz2P2WbJcvIAfDpbBMyv2HKkqWkpFizOZU4wjrbvpK3u/BwA36lXeObYtRi6nu1E/hyWnh8lOkGjJr/ONuKBCQggSII6KAXcRk0QgKDI8B8PpLKMRJMNlxCuhnJGByIKTqMw8uoD6GYzJWcoqpGTi3NSZrpdIlzlGdsmylLHanmMzhjY8nl6oUZx2oPbZo0xLYvSacPiO4QXS360CgPN1MoEpCABMoioINe1vXQGgkMkQDryZKUiJGMbQOApXwuTKn0j8C6BXaJm/UCzVrOpFIfbnTFQWdO8XJAW3pBxAEPJl/fUvsNNVtMM3+MJWRgf1BKpjo8MeXBUaKPUigSkIAEyiSgg17mddEqCQyVwBHpOMu2XS/lfaPviP4qqvSDAOsHl9YTbtxLs2muPTh2c/e1/borzjmc+D6hbEvJK/GaNM564u9OWcoDg5jSQVncZH4v3p5D7h29cZRkm19NqUhAAhLoDAEd9M5cKg2VwOAIfCc9fkl0negG0VdFj4sq3SXw8AJNZxmlAs1azqQSneEuOZlrL0ez3he3TvXbR1m94pspGa1lZYbXZvtGUaV6Aj9JlXtEycPB78VLsw3zFOOLZ0hAAhJom4AOettXwPYlIIFRCJycg94cZSSKBEuExH8hry+NKt0hwPxPbqJLspil7kqyZz5bSnSGS7RpPnbsuw3/Vai3SF2bR58QfVGU1Sm+lZI8Giwp+blsvzJKMswSH67EtM7Ld9MDko7yQOSu2X5D9GfR0kX7JCABCSxJQAd9SUQeIAEJFEbg97GHpHKMUpH86T55/cboD6NK2QSYS/3TmPiZKKGnt0/ZthAG27YNS7VfYlIxEjwuZXcp75PbYlRbcPh4EPiInMBnlJFZlt46JK8ZlSXZGKHqR+f1J6NMw9k15f2ifB+lUGoicGTqfXqUZer43ufByG/yWrmagBsSkEAfCOig9+Eq2gcJDJsAIym7B8E9ooQrPyblx6MsRZZCKZAA1+iDseu0KA7PCSkZddwr5U7RTaJNzbu+edoqXUp00JsMG5/2+jwgFZCMktBnRr63zmumz7wvJcttnZiSJR//LyUj4Djin882n9HXpSRi55Epcdy7kFQwpvZCzksv9o8+NkoS0W1SfjT656jSBgHblIAEGiGgg94IZhuRgAQaInBR2vls9ClR5ntunPIV0W9ElTIJ4PBsFNOIiHhZyn2jRENclvKM6OFRMjG/OiUJBFmW7+7ZXi+KkzjtqCX1pKqi5bYFWsdIc4FmLWjSA/POW6OMfJOM8m3ZZv3rB6e8c7TtRHIxQQkBHrjulpKw9bVS8sDuoJRMH0ih9JmAfZOABK4koIN+JQf/l4AE+kmAkVlGZbk5Zy4ooa7vTFdPiSrlEyDhE9dsl5jKHNOPpSQj8w9Snho9J8qNOyOfhB0fm9fczHPNSco1W5kT/Iy8/+goTv4LUr432gVhRYPS7CRxY2k2aU/3CPBdzN8hEQrkNSB0nQR7JH7rXm+0uGQC2iaBzhDQQe/MpdJQCUhgSgKMyDJyRlKnO6auW0UJXT0w5blRpdsESNzFzT2J6BiJZ1mr2cpNP7kLiLDAyX9XuvvcaBeE5enQNmwlid4d0jAPuTZLie6cssSHBjFLKZwAD9aYOsA0F6Kc+C5+fmxmSsFfUioS6CgBzZZAdQR00KtjaU0SkEC3CDDiisO2Y8wmVHrdlIRQfySliYcCQSmKACONRAqwogHLdx0V694TnR0lMOr2zMMKog14WEF9M/rt1Elbf0xJe8z3pU3mcB+TfSjzgLswdz/mKi0T4LuU79THxw5yKfCw59nZ5kGZeUICQpHASAQ8aFAEdNAHdbntrAQksAiB0/PeflHCqZlfy3JuT85r5j+flFKRQAkEcHBYvmurGPO86OwogVG3Z8L9iTYg3J/6ZpSRcUbrGd1M9YoExiJwdo4mKols67fMNt+lfKd+Ott/iCoSkECBBDSpLAI66GVdD62RgATKIcBybp+IOSy1RBIpkpER5ksCoy9lv6M/gaBIQAKDJfDP9Jx8EOT1ILcDDzWZakJUElEWZ+V9RQISkIAExiSggz4mMA+XgAQGS+DS9Jxs8IQHb5dtRhhJYkboJvOZf5R9igQkIIG+ErggHWNZulelJNJi5ZT3jJLX45CUPNRMoUhAAhJokkD/2tJB7981tUcSkEBzBH6Vpgjd3DXlJtH/iZKo7CUpuWH9XUpFAhKQQBcJnBaj948Srk7WfhIGPjSv3xz9TlSRgAQk0H8CLfRQB70F6DYpAQn0msB307t3RAn5JJHWWtl+VJSlv76WkqRbKRQJSEACRRE4Mda8OzqTYX29bO8UJVydRIHZVCQgAQlIoEoC89Wlgz4fFfdJQAISqI7Aeanqc9FXREnsdcOUOO4PSbl79AtRMh2nUCQgAQk0QoAs/YSrk1hwm7R4nehdoi+MmmE9EBQJSEACbRGo0EFvqwu2KwEJSKBzBAh9PzxWvzG6fZRMx2uk3CzKfE6S05k5PjAUCUhgagK/Tg0ktnxTyodHSeR245SEq78+5ZHRS6KKBCQgAQkUQKA7DnoBsDRBAhKQQI0ELk7d34qSEZnl3cgcz5z2u2Ufc0Dfl/L70b9GFQlIQAJzCZyfHcdE947uHL1HdNXobaIktnx1ysOiLIWWQpGABCQggRIJ6KBfdVUsJCABCRRK4Mexizmgz0t5r+hqUW64CZF/abZJ4sRSR46ABYYigQEQuDB9PC768ejLo9tGWeLsBik3j744um/0h9HLoooEJCABCXSIgA56MxfLViQgAQlUSYCQVULk355KSeLEUkfMIWVuO/PcySq/T94j0zJLI2VTkYAEOkSAiJoTYi/zwZkKw985K0SwvOP1sn/T6FOib40eEXWJs0BQJCABCfSBgA56H67iMjshAQlI4AoCzG0nU/y78uoZ0ftGWRqJm3rmtz87rwmV/0bKc6OKBCTQHgEenjHKzVKNzAV/UkwhSoZEkuSk2DivyahOMkkiZVgh4k/Zp0hAAhKQQI8J6KD3+OJW1jUrkoAEuk6Am3rmt38wHSFU/oEp146uHt0oyjJwhMoy6n50XpNV/t8pFQlIYDoC/O2RO+KTqYaM6Y9PydzwNVPy8Ixt9vEex3CsSzEGjiIBCUhgqAR00Id65Qvqt6ZIQAKtEbg0Lf80yjJwhMoy6r5FXpNV/hop141uHX1u9B1RMkGfktJ5rYGgSCAE+Fs4LeVXo+SK2C3lY6N3j/IAjOgVRsUZHWeUnNFyRs3/kvcVCUhAAhKQwAoEdNBXQOKOnhGwOxKQwOQETs+pR0XfH31JlEzQd0xJZuibpbx/9KlRHA9CcL+e7V9EzTQfCEovCDACTqLGz6c3b4uS3+GRKVldAeebv4X18vpBUVZb2DPlQdHjozwAS6FIQAISkIAERieggz46K4+UwDwE3CWBwRI4Jz3/dnS/KOG5JLHaMtvrR8k0f92Ud4puE8VxeW1KMksz0sgovFnnA0RpnQAJF5n+8YlYwoMmPqs42zjdLHOIE44zjlP+shxDfgecdZx2nPfsUiQgAQlIQALVEdBBr46lNUmgegLWKIHuErgopv88emSU0N/Xpdw5ivPDKJ+1QeEAAAu3SURBVDxZ53Hk2caxf1re2yP6gejB0W9GceR1ggJCGZvAeTnjxCifPx4ivSnbz48+OkoGdCJAcMBZspAEik/Ofh408VnlIRJh69mlSEACEpCABJoloIPeLG9bk0BRBDRGAi0TIBQeJ5zQ+I/FljdEnxPdIfqAKM47I5g4UpS8Jqye95kXz6g8ie8OybGM5hNef362lf4SOCtdYw73YSk/FOWhzi4pHxJlpHvG8V4rr+8SJYKDaRivzvZ7o3xWjktJBEgKRQISkIAEJFAWAR30sq6H1kigTwTsiwSqJMBIOs48jjgj7MyLZ1SepeMYFcVxJ7z+BmkUh/4mKe8cJendjilfGOUBwEdS4tyxZNWvsm2ofSC0JBem3TOjJ0RZPYBkhYxgM9ebVQUY1d4q7zFVYua63jKvyXz+8JTPis5c08OzTdi5jndAKBKQgAQk0F0COujdvXZaLoGBE7D7EliUwB/y7klRHL8DU747OjPainN3n7xeJ0qoPQ49jt8mef3gKPPpcRD3yjajtGTexgE8Nq9/FmUZOpzLbA5a/p7enxs9Nfq96Fein4q+L4rj/OKUTGvYPuXmUZb0Y4UAlhiD+fWy77bRjaM8SGG5P+aAM9ebVQWYF/61vMdUCSMjAkKRgAQkIIH+E9BB7/81tocSkMAkBDxnaAQInf5ROo2TSUZ6HMRX5DWjtI9PSQj1/VJuGMXJxLnEyVwlrxndxcG/Q7Zx8hnNJ0R/PmXJrQ1y3C2iJNKjjrp1jbRFRAHzrWl7KRvns5t99049TDNYOyU203e26Tfv8XDjCXnveVEehuydksSAX0h5TJQl/Xi44RJjgaFIQAISkIAE5iOggz4fFfdJQAISqJmA1feGAKPIjO7i4DOSjJNPGD5J7ubT76fnJ0fPjpJIL0XtcnFaIKKAjOW0vZSN89nNPkbJmWbAqHmqVCQgAQlIQAISqJqADnrVRK1PAhKQQPsEtEACEpCABCQgAQlIoIMEdNA7eNE0WQISkEC7BGxdAhKQgAQkIAEJSKAOAjrodVC1TglIQAISmJyAZ0pAAhKQgAQkIIGBEtBBH+iFt9sSkIAEhkrAfktAAhKQgAQkIIFSCeigl3pltEsCEpCABLpIQJslIAEJSEACEpDAxAR00CdG54kSkIAEJCCBpgnYngQkIAEJSEACfSagg97nq2vfJCABCUhAAuMQ8FgJSEACEpCABFoloIPeKn4bl4AEJCABCQyHgD2VgAQkIAEJSGBxAjroi/PxXQlIQAISkIAEukFAKyUgAQlIQAKdJ6CD3vlLaAckIAEJSEACEqifgC1IQAISkIAE6iegg14/Y1uQgAQkIAEJSEACixPwXQlIQAISkEAI6KAHgiIBCUhAAhKQgAT6TMC+SUACEpBANwjooHfjOmmlBCQgAQlIQAISKJWAdklAAhKQQEUEdNArAmk1EpCABCQgAQlIQAJ1ELBOCUhAAsMhoIM+nGttTyUgAQlIQAISkIAE5hLwtQQkIIGCCOigF3QxNEUCEpCABCQgAQlIoF8E7I0EJCCBcQjooI9Dy2MlIAEJSEACEpCABCRQDgEtkYAEekZAB71nF9TuSEACEpCABCQgAQlIoBoC1iIBCTRNQAe9aeK2JwEJSEACEpCABCQgAQksWyYDCUhgBQI66CsgcYcEJCABCUhAAhKQgAQk0HUC2i+BLhLQQe/iVdNmCUhAAhKQgAQkIAEJSKBNArYtgVoI6KDXgtVKJSABCUhAAhKQgAQkIAEJTErA84ZKQAd9qFfefktAAhKQgAQkIAEJSEACwyRgr4sloINe7KXRMAlIQAISkIAEJCABCUhAAt0joMWTE9BBn5ydZ0pAAhKQgAQkIAEJSEACEpBAswR63ZoOeq8vr52TgAQkIAEJSEACEpCABCQggdEJtHukDnq7/G1dAhKQgAQkIAEJSEACEpCABIZCYIl+6qAvAci3JSABCUhAAhKQgAQkIAEJSEACTRCY1kFvwkbbkIAEJCABCUhAAhKQgAQkIAEJ9J5A4Q567/nbQQlIQAISkIAEJCABCUhAAhKQwBUEhu2gX4HA/yQgAQlIQAISkIAEJCABCUhAAu0T0EGv8RpYtQQkIAEJSEACEpCABCQgAQlIYFQCOuijkirvOC2SgAQkIAEJSEACEpCABCQggR4R0EHv0cWstivWJgEJSEACEpCABCQgAQlIQAJNEtBBb5K2bf2XgFsSkIAEJCABCUhAAhKQgAQksBwBHfTlcPiiLwTshwQkIAEJSEACEpCABCQgga4R0EHv2hXT3hIIaIMEJCABCUhAAhKQgAQkIIHKCeigV47UCiUwLQHPl4AEJCABCUhAAhKQgASGSEAHfYhX3T4Pm4C9l4AEJCABCUhAAhKQgASKJKCDXuRl0SgJdJeAlktAAhKQgAQkIAEJSEACkxHQQZ+Mm2dJQALtELBVCUhAAhKQgAQkIAEJ9JaADnpvL60dk4AExifgGRKQgAQkIAEJSEACEmiPgA56e+xtWQISGBoB+ysBCUhAAhKQgAQkIIFFCOigLwLHtyQgAQl0iYC2SkACEpCABCQgAQl0m4AOerevn9ZLQAISaIqA7UhAAhKQgAQkIAEJ1ExAB71mwFYvAQlIQAKjEPAYCUhAAhKQgAQkIAEddD8DEpCABCTQfwL2UAISkIAEJCABCXSAgA56By6SJkpAAhKQQNkEtE4CEpCABCQgAQlUQUAHvQqK1iEBCUhAAhKoj4A1S0ACEpCABCQwEAI66AO50HZTAhKQgAQkMD8B90pAAhKQgAQkUAoBHfRSroR2SEACEpCABPpIwD5JQAISkIAEJDAyAR30kVF5oAQkIAEJSEACpRHQHglIQAISkECfCOig9+lq2hcJSEACEpCABKokYF0SkIAEJCCBRgnooDeK28YkIAEJSEACEpDADAFLCUhAAhKQwPIEdNCX5+ErCUhAAhKQgAQk0A8C9kICEpCABDpHQAe9c5dMgyUgAQlIQAISkED7BLRAAhKQgASqJ6CDXj1Ta5SABCQgAQlIQAISmI6AZ0tAAhIYJAEd9EFedjstAQlIQAISkIAEhkzAvktAAhIok4AOepnXRaskIAEJSEACEpCABLpKQLslIAEJTEhAB31CcJ4mAQlIQAISkIAEJCCBNgjYpgQk0F8COuj9vbb2TAISkIAEJCABCUhAAuMS8HgJSKBFAjroLcK3aQlIQAISkIAEJCABCQyLgL2VgAQWI6CDvhgd35OABCQgAQlIQAISkIAEukNASyXQcQI66B2/gJovAQlIQAISkIAEJCABCTRDwFYkUDcBHfS6CVu/BCQgAQlIQAISkIAEJCCBpQl4hASW6aD7IZCABCQgAQlIQAISkIAEJNB7AnawCwR00LtwlbRRAhKQgAQkIAEJSEACEpBAyQS0rRICOuiVYLQSCUhAAhKQgAQkIAEJSEACEqiLwFDq1UEfypW2nxKQgAQkIAEJSEACEpCABCQwH4Fi9umgF3MpNEQCEpCABCQgAQlIQAISkIAE+kdg9B7poI/OyiMlIAEJSEACEpCABCQgAQlIQAK1EZjIQa/NGiuWgAQkIAEJSEACEpCABCQgAQkMlECJDvpAL4XdloAEJCABCUhAAhKQgAQkIIEhExiggz7ky23fJSABCUhAAhKQgAQkIAEJSKBUAjroVV8Z65OABCQgAQlIQAISkIAEJCABCUxAQAd9AmhtnmLbEpCABCQgAQlIQAISkIAEJNBPAjro/byuk/bK8yQgAQlIQAISkIAEJCABCUigJQI66C2BH2az9loCEpCABCQgAQlIQAISkIAEFiKgg74QGfd3j4AWS0ACEpCABCQgAQlIQAIS6DABHfQOXzxNb5aArUlAAhKQgAQkIAEJSEACEqiTgA56nXStWwKjE/BICUhAAhKQgAQkIAEJSGDgBHTQB/4BsPtDIWA/JSABCUhAAhKQgAQkIIHSCeigl36FtE8CXSCgjRKQgAQkIAEJSEACEpDA1AT+PwAAAP//EWyv6wAAAAZJREFUAwAgRX+EInOpewAAAABJRU5ErkJggg==";function n6n(e,t){return function(){return e.apply(t,arguments)}}const{toString:zYr}=Object.prototype,{getPrototypeOf:mJe}=Object,{iterator:cbe,toStringTag:i6n}=Symbol,dbe=(e=>t=>{const n=zYr.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),M3=e=>(e=e.toLowerCase(),t=>dbe(t)===e),ube=e=>t=>typeof t===e,{isArray:Uz}=Array,XW=ube("undefined");function gie(e){return e!==null&&!XW(e)&&e.constructor!==null&&!XW(e.constructor)&&e2(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const r6n=M3("ArrayBuffer");function HYr(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&r6n(e.buffer),t}const $Yr=ube("string"),e2=ube("function"),o6n=ube("number"),mie=e=>e!==null&&typeof e=="object",XYr=e=>e===!0||e===!1,Nue=e=>{if(dbe(e)!=="object")return!1;const t=mJe(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(i6n in e)&&!(cbe in e)},GYr=e=>{if(!mie(e)||gie(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},YYr=M3("Date"),ZYr=M3("File"),qYr=e=>!!(e&&typeof e.uri<"u"),KYr=e=>e&&typeof e.getParts<"u",JYr=M3("Blob"),eZr=M3("FileList"),tZr=e=>mie(e)&&e2(e.pipe);function nZr(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Ipt=nZr(),Mpt=typeof Ipt.FormData<"u"?Ipt.FormData:void 0,iZr=e=>{let t;return e&&(Mpt&&e instanceof Mpt||e2(e.append)&&((t=dbe(e))==="formdata"||t==="object"&&e2(e.toString)&&e.toString()==="[object FormData]"))},rZr=M3("URLSearchParams"),[oZr,sZr,aZr,lZr]=["ReadableStream","Request","Response","Headers"].map(M3),cZr=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function kie(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,o;if(typeof e!="object"&&(e=[e]),Uz(e))for(r=0,o=e.length;r0;)if(o=n[r],t===o.toLowerCase())return o;return null}const nQ=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,a6n=e=>!XW(e)&&e!==nQ;function MFe(){const{caseless:e,skipUndefined:t}=a6n(this)&&this||{},n={},r=(o,s)=>{if(s==="__proto__"||s==="constructor"||s==="prototype")return;const a=e&&s6n(n,s)||s;Nue(n[a])&&Nue(o)?n[a]=MFe(n[a],o):Nue(o)?n[a]=MFe({},o):Uz(o)?n[a]=o.slice():(!t||!XW(o))&&(n[a]=o)};for(let o=0,s=arguments.length;o(kie(t,(o,s)=>{n&&e2(o)?Object.defineProperty(e,s,{value:n6n(o,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,s,{value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),uZr=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),hZr=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},fZr=(e,t,n,r)=>{let o,s,a;const l={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)a=o[s],(!r||r(a,e,t))&&!l[a]&&(t[a]=e[a],l[a]=!0);e=n!==!1&&mJe(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},gZr=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},mZr=e=>{if(!e)return null;if(Uz(e))return e;let t=e.length;if(!o6n(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},kZr=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&mJe(Uint8Array)),vZr=(e,t)=>{const r=(e&&e[cbe]).call(e);let o;for(;(o=r.next())&&!o.done;){const s=o.value;t.call(e,s[0],s[1])}},AZr=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},pZr=M3("HTMLFormElement"),bZr=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,o){return r.toUpperCase()+o}),Ppt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),wZr=M3("RegExp"),l6n=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};kie(n,(o,s)=>{let a;(a=t(o,s,e))!==!1&&(r[s]=a||o)}),Object.defineProperties(e,r)},OZr=e=>{l6n(e,(t,n)=>{if(e2(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(e2(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},yZr=(e,t)=>{const n={},r=o=>{o.forEach(s=>{n[s]=!0})};return Uz(e)?r(e):r(String(e).split(t)),n},CZr=()=>{},_Zr=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function SZr(e){return!!(e&&e2(e.append)&&e[i6n]==="FormData"&&e[cbe])}const LZr=e=>{const t=new Array(10),n=(r,o)=>{if(mie(r)){if(t.indexOf(r)>=0)return;if(gie(r))return r;if(!("toJSON"in r)){t[o]=r;const s=Uz(r)?[]:{};return kie(r,(a,l)=>{const d=n(a,o+1);!XW(d)&&(s[l]=d)}),t[o]=void 0,s}}return r};return n(e,0)},xZr=M3("AsyncFunction"),EZr=e=>e&&(mie(e)||e2(e))&&e2(e.then)&&e2(e.catch),c6n=((e,t)=>e?setImmediate:t?((n,r)=>(nQ.addEventListener("message",({source:o,data:s})=>{o===nQ&&s===n&&r.length&&r.shift()()},!1),o=>{r.push(o),nQ.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",e2(nQ.postMessage)),TZr=typeof queueMicrotask<"u"?queueMicrotask.bind(nQ):typeof process<"u"&&process.nextTick||c6n,QZr=e=>e!=null&&e2(e[cbe]),vn={isArray:Uz,isArrayBuffer:r6n,isBuffer:gie,isFormData:iZr,isArrayBufferView:HYr,isString:$Yr,isNumber:o6n,isBoolean:XYr,isObject:mie,isPlainObject:Nue,isEmptyObject:GYr,isReadableStream:oZr,isRequest:sZr,isResponse:aZr,isHeaders:lZr,isUndefined:XW,isDate:YYr,isFile:ZYr,isReactNativeBlob:qYr,isReactNative:KYr,isBlob:JYr,isRegExp:wZr,isFunction:e2,isStream:tZr,isURLSearchParams:rZr,isTypedArray:kZr,isFileList:eZr,forEach:kie,merge:MFe,extend:dZr,trim:cZr,stripBOM:uZr,inherits:hZr,toFlatObject:fZr,kindOf:dbe,kindOfTest:M3,endsWith:gZr,toArray:mZr,forEachEntry:vZr,matchAll:AZr,isHTMLForm:pZr,hasOwnProperty:Ppt,hasOwnProp:Ppt,reduceDescriptors:l6n,freezeMethods:OZr,toObjectSet:yZr,toCamelCase:bZr,noop:CZr,toFiniteNumber:_Zr,findKey:s6n,global:nQ,isContextDefined:a6n,isSpecCompliantForm:SZr,toJSONObject:LZr,isAsyncFn:xZr,isThenable:EZr,setImmediate:c6n,asap:TZr,isIterable:QZr};let No=class d6n extends Error{static from(t,n,r,o,s,a){const l=new d6n(t.message,n||t.code,r,o,s);return l.cause=t,l.name=t.name,t.status!=null&&l.status==null&&(l.status=t.status),a&&Object.assign(l,a),l}constructor(t,n,r,o,s){super(t),Object.defineProperty(this,"message",{value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),o&&(this.request=o),s&&(this.response=s,this.status=s.status)}toJSON(){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:vn.toJSONObject(this.config),code:this.code,status:this.status}}};No.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";No.ERR_BAD_OPTION="ERR_BAD_OPTION";No.ECONNABORTED="ECONNABORTED";No.ETIMEDOUT="ETIMEDOUT";No.ERR_NETWORK="ERR_NETWORK";No.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";No.ERR_DEPRECATED="ERR_DEPRECATED";No.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";No.ERR_BAD_REQUEST="ERR_BAD_REQUEST";No.ERR_CANCELED="ERR_CANCELED";No.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";No.ERR_INVALID_URL="ERR_INVALID_URL";const DZr=null;function PFe(e){return vn.isPlainObject(e)||vn.isArray(e)}function u6n(e){return vn.endsWith(e,"[]")?e.slice(0,-2):e}function F8e(e,t,n){return e?e.concat(t).map(function(o,s){return o=u6n(o),!n&&s?"["+o+"]":o}).join(n?".":""):t}function BZr(e){return vn.isArray(e)&&!e.some(PFe)}const RZr=vn.toFlatObject(vn,{},null,function(t){return/^is[A-Z]/.test(t)});function hbe(e,t,n){if(!vn.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=vn.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(k,A){return!vn.isUndefined(A[k])});const r=n.metaTokens,o=n.visitor||h,s=n.dots,a=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&vn.isSpecCompliantForm(t);if(!vn.isFunction(o))throw new TypeError("visitor must be a function");function u(f){if(f===null)return"";if(vn.isDate(f))return f.toISOString();if(vn.isBoolean(f))return f.toString();if(!d&&vn.isBlob(f))throw new No("Blob is not supported. Use a Buffer instead.");return vn.isArrayBuffer(f)||vn.isTypedArray(f)?d&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function h(f,k,A){let p=f;if(vn.isReactNative(t)&&vn.isReactNativeBlob(f))return t.append(F8e(A,k,s),u(f)),!1;if(f&&!A&&typeof f=="object"){if(vn.endsWith(k,"{}"))k=r?k:k.slice(0,-2),f=JSON.stringify(f);else if(vn.isArray(f)&&BZr(f)||(vn.isFileList(f)||vn.endsWith(k,"[]"))&&(p=vn.toArray(f)))return k=u6n(k),p.forEach(function(w,O){!(vn.isUndefined(w)||w===null)&&t.append(a===!0?F8e([k],O,s):a===null?k:k+"[]",u(w))}),!1}return PFe(f)?!0:(t.append(F8e(A,k,s),u(f)),!1)}const g=[],m=Object.assign(RZr,{defaultVisitor:h,convertValue:u,isVisitable:PFe});function v(f,k){if(!vn.isUndefined(f)){if(g.indexOf(f)!==-1)throw Error("Circular reference detected in "+k.join("."));g.push(f),vn.forEach(f,function(p,b){(!(vn.isUndefined(p)||p===null)&&o.call(t,p,vn.isString(b)?b.trim():b,k,m))===!0&&v(p,k?k.concat(b):[b])}),g.pop()}}if(!vn.isObject(e))throw new TypeError("data must be an object");return v(e),t}function Fpt(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function kJe(e,t){this._pairs=[],e&&hbe(e,this,t)}const h6n=kJe.prototype;h6n.append=function(t,n){this._pairs.push([t,n])};h6n.toString=function(t){const n=t?function(r){return t.call(this,r,Fpt)}:Fpt;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function IZr(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function f6n(e,t,n){if(!t)return e;const r=n&&n.encode||IZr,o=vn.isFunction(n)?{serialize:n}:n,s=o&&o.serialize;let a;if(s?a=s(t,o):a=vn.isURLSearchParams(t)?t.toString():new kJe(t,o).toString(r),a){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class Npt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){vn.forEach(this.handlers,function(r){r!==null&&t(r)})}}const vJe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},MZr=typeof URLSearchParams<"u"?URLSearchParams:kJe,PZr=typeof FormData<"u"?FormData:null,FZr=typeof Blob<"u"?Blob:null,NZr={isBrowser:!0,classes:{URLSearchParams:MZr,FormData:PZr,Blob:FZr},protocols:["http","https","file","blob","url","data"]},AJe=typeof window<"u"&&typeof document<"u",FFe=typeof navigator=="object"&&navigator||void 0,UZr=AJe&&(!FFe||["ReactNative","NativeScript","NS"].indexOf(FFe.product)<0),jZr=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",WZr=AJe&&window.location.href||"http://localhost",VZr=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:AJe,hasStandardBrowserEnv:UZr,hasStandardBrowserWebWorkerEnv:jZr,navigator:FFe,origin:WZr},Symbol.toStringTag,{value:"Module"})),r1={...VZr,...NZr};function zZr(e,t){return hbe(e,new r1.classes.URLSearchParams,{visitor:function(n,r,o,s){return r1.isNode&&vn.isBuffer(n)?(this.append(r,n.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...t})}function HZr(e){return vn.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function $Zr(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r=n.length;return a=!a&&vn.isArray(o)?o.length:a,d?(vn.hasOwnProp(o,a)?o[a]=[o[a],r]:o[a]=r,!l):((!o[a]||!vn.isObject(o[a]))&&(o[a]=[]),t(n,r,o[a],s)&&vn.isArray(o[a])&&(o[a]=$Zr(o[a])),!l)}if(vn.isFormData(e)&&vn.isFunction(e.entries)){const n={};return vn.forEachEntry(e,(r,o)=>{t(HZr(r),o,n,0)}),n}return null}function XZr(e,t,n){if(vn.isString(e))try{return(t||JSON.parse)(e),vn.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const vie={transitional:vJe,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",o=r.indexOf("application/json")>-1,s=vn.isObject(t);if(s&&vn.isHTMLForm(t)&&(t=new FormData(t)),vn.isFormData(t))return o?JSON.stringify(g6n(t)):t;if(vn.isArrayBuffer(t)||vn.isBuffer(t)||vn.isStream(t)||vn.isFile(t)||vn.isBlob(t)||vn.isReadableStream(t))return t;if(vn.isArrayBufferView(t))return t.buffer;if(vn.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(s){if(r.indexOf("application/x-www-form-urlencoded")>-1)return zZr(t,this.formSerializer).toString();if((l=vn.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return hbe(l?{"files[]":t}:t,d&&new d,this.formSerializer)}}return s||o?(n.setContentType("application/json",!1),XZr(t)):t}],transformResponse:[function(t){const n=this.transitional||vie.transitional,r=n&&n.forcedJSONParsing,o=this.responseType==="json";if(vn.isResponse(t)||vn.isReadableStream(t))return t;if(t&&vn.isString(t)&&(r&&!this.responseType||o)){const a=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?No.from(l,No.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:r1.classes.FormData,Blob:r1.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};vn.forEach(["delete","get","head","post","put","patch"],e=>{vie.headers[e]={}});const GZr=vn.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"]),YZr=e=>{const t={};let n,r,o;return e&&e.split(` `).forEach(function(a){o=a.indexOf(":"),n=a.substring(0,o).trim().toLowerCase(),r=a.substring(o+1).trim(),!(!n||t[n]&&GZr[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Upt=Symbol("internals");function rX(e){return e&&String(e).trim().toLowerCase()}function Uue(e){return e===!1||e==null?e:vn.isArray(e)?e.map(Uue):String(e)}function ZZr(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const qZr=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function N8e(e,t,n,r,o){if(vn.isFunction(r))return r.call(this,t,n);if(o&&(t=n),!!vn.isString(t)){if(vn.isString(r))return t.indexOf(r)!==-1;if(vn.isRegExp(r))return r.test(t)}}function KZr(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function JZr(e,t){const n=vn.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(o,s,a){return this[r].call(this,t,o,s,a)},configurable:!0})})}let t2=class{constructor(t){t&&this.set(t)}set(t,n,r){const o=this;function s(l,d,u){const h=rX(d);if(!h)throw new Error("header name must be a non-empty string");const g=vn.findKey(o,h);(!g||o[g]===void 0||u===!0||u===void 0&&o[g]!==!1)&&(o[g||d]=Uue(l))}const a=(l,d)=>vn.forEach(l,(u,h)=>s(u,h,d));if(vn.isPlainObject(t)||t instanceof this.constructor)a(t,n);else if(vn.isString(t)&&(t=t.trim())&&!qZr(t))a(YZr(t),n);else if(vn.isObject(t)&&vn.isIterable(t)){let l={},d,u;for(const h of t){if(!vn.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[u=h[0]]=(d=l[u])?vn.isArray(d)?[...d,h[1]]:[d,h[1]]:h[1]}a(l,n)}else t!=null&&s(n,t,r);return this}get(t,n){if(t=rX(t),t){const r=vn.findKey(this,t);if(r){const o=this[r];if(!n)return o;if(n===!0)return ZZr(o);if(vn.isFunction(n))return n.call(this,o,r);if(vn.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=rX(t),t){const r=vn.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||N8e(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let o=!1;function s(a){if(a=rX(a),a){const l=vn.findKey(r,a);l&&(!n||N8e(r,r[l],l,n))&&(delete r[l],o=!0)}}return vn.isArray(t)?t.forEach(s):s(t),o}clear(t){const n=Object.keys(this);let r=n.length,o=!1;for(;r--;){const s=n[r];(!t||N8e(this,this[s],s,t,!0))&&(delete this[s],o=!0)}return o}normalize(t){const n=this,r={};return vn.forEach(this,(o,s)=>{const a=vn.findKey(r,s);if(a){n[a]=Uue(o),delete n[s];return}const l=t?KZr(s):String(s).trim();l!==s&&delete n[s],n[l]=Uue(o),r[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return vn.forEach(this,(r,o)=>{r!=null&&r!==!1&&(n[o]=t&&vn.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(o=>r.set(o)),r}static accessor(t){const r=(this[Upt]=this[Upt]={accessors:{}}).accessors,o=this.prototype;function s(a){const l=rX(a);r[l]||(JZr(o,a),r[l]=!0)}return vn.isArray(t)?t.forEach(s):s(t),this}};t2.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);vn.reduceDescriptors(t2.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});vn.freezeMethods(t2);function U8e(e,t){const n=this||vie,r=t||n,o=t2.from(r.headers);let s=r.data;return vn.forEach(e,function(l){s=l.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function m6n(e){return!!(e&&e.__CANCEL__)}let Aie=class extends No{constructor(t,n,r){super(t??"canceled",No.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function k6n(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new No("Request failed with status code "+n.status,[No.ERR_BAD_REQUEST,No.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function eqr(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function tqr(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o=0,s=0,a;return t=t!==void 0?t:1e3,function(d){const u=Date.now(),h=r[s];a||(a=u),n[o]=d,r[o]=u;let g=s,m=0;for(;g!==o;)m+=n[g++],g=g%e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),u-a{n=h,o=null,s&&(clearTimeout(s),s=null),e(...u)};return[(...u)=>{const h=Date.now(),g=h-n;g>=r?a(u,h):(o=u,s||(s=setTimeout(()=>{s=null,a(o)},r-g)))},()=>o&&a(o)]}const ume=(e,t,n=3)=>{let r=0;const o=tqr(50,250);return nqr(s=>{const a=s.loaded,l=s.lengthComputable?s.total:void 0,d=a-r,u=o(d),h=a<=l;r=a;const g={loaded:a,total:l,progress:l?a/l:void 0,bytes:d,rate:u||void 0,estimated:u&&l&&h?(l-a)/u:void 0,event:s,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(g)},n)},jpt=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Wpt=e=>(...t)=>vn.asap(()=>e(...t)),iqr=r1.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,r1.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(r1.origin),r1.navigator&&/(msie|trident)/i.test(r1.navigator.userAgent)):()=>!0,rqr=r1.hasStandardBrowserEnv?{write(e,t,n,r,o,s,a){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];vn.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),vn.isString(r)&&l.push(`path=${r}`),vn.isString(o)&&l.push(`domain=${o}`),s===!0&&l.push("secure"),vn.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function oqr(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function sqr(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function v6n(e,t,n){let r=!oqr(t);return e&&(r||n==!1)?sqr(e,t):t}const Vpt=e=>e instanceof t2?{...e}:e;function KB(e,t){t=t||{};const n={};function r(u,h,g,m){return vn.isPlainObject(u)&&vn.isPlainObject(h)?vn.merge.call({caseless:m},u,h):vn.isPlainObject(h)?vn.merge({},h):vn.isArray(h)?h.slice():h}function o(u,h,g,m){if(vn.isUndefined(h)){if(!vn.isUndefined(u))return r(void 0,u,g,m)}else return r(u,h,g,m)}function s(u,h){if(!vn.isUndefined(h))return r(void 0,h)}function a(u,h){if(vn.isUndefined(h)){if(!vn.isUndefined(u))return r(void 0,u)}else return r(void 0,h)}function l(u,h,g){if(g in t)return r(u,h);if(g in e)return r(void 0,u)}const d={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(u,h,g)=>o(Vpt(u),Vpt(h),g,!0)};return vn.forEach(Object.keys({...e,...t}),function(h){if(h==="__proto__"||h==="constructor"||h==="prototype")return;const g=vn.hasOwnProp(d,h)?d[h]:o,m=g(e[h],t[h],h);vn.isUndefined(m)&&g!==l||(n[h]=m)}),n}const A6n=e=>{const t=KB({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:l}=t;if(t.headers=a=t2.from(a),t.url=f6n(v6n(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),vn.isFormData(n)){if(r1.hasStandardBrowserEnv||r1.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(vn.isFunction(n.getHeaders)){const d=n.getHeaders(),u=["content-type","content-length"];Object.entries(d).forEach(([h,g])=>{u.includes(h.toLowerCase())&&a.set(h,g)})}}if(r1.hasStandardBrowserEnv&&(r&&vn.isFunction(r)&&(r=r(t)),r||r!==!1&&iqr(t.url))){const d=o&&s&&rqr.read(s);d&&a.set(o,d)}return t},aqr=typeof XMLHttpRequest<"u",lqr=aqr&&function(e){return new Promise(function(n,r){const o=A6n(e);let s=o.data;const a=t2.from(o.headers).normalize();let{responseType:l,onUploadProgress:d,onDownloadProgress:u}=o,h,g,m,v,f;function k(){v&&v(),f&&f(),o.cancelToken&&o.cancelToken.unsubscribe(h),o.signal&&o.signal.removeEventListener("abort",h)}let A=new XMLHttpRequest;A.open(o.method.toUpperCase(),o.url,!0),A.timeout=o.timeout;function p(){if(!A)return;const w=t2.from("getAllResponseHeaders"in A&&A.getAllResponseHeaders()),y={data:!l||l==="text"||l==="json"?A.responseText:A.response,status:A.status,statusText:A.statusText,headers:w,config:e,request:A};k6n(function(_){n(_),k()},function(_){r(_),k()},y),A=null}"onloadend"in A?A.onloadend=p:A.onreadystatechange=function(){!A||A.readyState!==4||A.status===0&&!(A.responseURL&&A.responseURL.indexOf("file:")===0)||setTimeout(p)},A.onabort=function(){A&&(r(new No("Request aborted",No.ECONNABORTED,e,A)),A=null)},A.onerror=function(O){const y=O&&O.message?O.message:"Network Error",C=new No(y,No.ERR_NETWORK,e,A);C.event=O||null,r(C),A=null},A.ontimeout=function(){let O=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const y=o.transitional||vJe;o.timeoutErrorMessage&&(O=o.timeoutErrorMessage),r(new No(O,y.clarifyTimeoutError?No.ETIMEDOUT:No.ECONNABORTED,e,A)),A=null},s===void 0&&a.setContentType(null),"setRequestHeader"in A&&vn.forEach(a.toJSON(),function(O,y){A.setRequestHeader(y,O)}),vn.isUndefined(o.withCredentials)||(A.withCredentials=!!o.withCredentials),l&&l!=="json"&&(A.responseType=o.responseType),u&&([m,f]=ume(u,!0),A.addEventListener("progress",m)),d&&A.upload&&([g,v]=ume(d),A.upload.addEventListener("progress",g),A.upload.addEventListener("loadend",v)),(o.cancelToken||o.signal)&&(h=w=>{A&&(r(!w||w.type?new Aie(null,e,A):w),A.abort(),A=null)},o.cancelToken&&o.cancelToken.subscribe(h),o.signal&&(o.signal.aborted?h():o.signal.addEventListener("abort",h)));const b=eqr(o.url);if(b&&r1.protocols.indexOf(b)===-1){r(new No("Unsupported protocol "+b+":",No.ERR_BAD_REQUEST,e));return}A.send(s||null)})},cqr=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,o;const s=function(u){if(!o){o=!0,l();const h=u instanceof Error?u:this.reason;r.abort(h instanceof No?h:new Aie(h instanceof Error?h.message:h))}};let a=t&&setTimeout(()=>{a=null,s(new No(`timeout of ${t}ms exceeded`,No.ETIMEDOUT))},t);const l=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),e=null)};e.forEach(u=>u.addEventListener("abort",s));const{signal:d}=r;return d.unsubscribe=()=>vn.asap(l),d}},dqr=function*(e,t){let n=e.byteLength;if(n{const o=uqr(e,t);let s=0,a,l=d=>{a||(a=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:u,value:h}=await o.next();if(u){l(),d.close();return}let g=h.byteLength;if(n){let m=s+=g;n(m)}d.enqueue(new Uint8Array(h))}catch(u){throw l(u),u}},cancel(d){return l(d),o.return()}},{highWaterMark:2})},Hpt=64*1024,{isFunction:rle}=vn,fqr=(({Request:e,Response:t})=>({Request:e,Response:t}))(vn.global),{ReadableStream:$pt,TextEncoder:Xpt}=vn.global,Gpt=(e,...t)=>{try{return!!e(...t)}catch{return!1}},gqr=e=>{e=vn.merge.call({skipUndefined:!0},fqr,e);const{fetch:t,Request:n,Response:r}=e,o=t?rle(t):typeof fetch=="function",s=rle(n),a=rle(r);if(!o)return!1;const l=o&&rle($pt),d=o&&(typeof Xpt=="function"?(f=>k=>f.encode(k))(new Xpt):async f=>new Uint8Array(await new n(f).arrayBuffer())),u=s&&l&&Gpt(()=>{let f=!1;const k=new n(r1.origin,{body:new $pt,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!k}),h=a&&l&&Gpt(()=>vn.isReadableStream(new r("").body)),g={stream:h&&(f=>f.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!g[f]&&(g[f]=(k,A)=>{let p=k&&k[f];if(p)return p.call(k);throw new No(`Response type '${f}' is not supported`,No.ERR_NOT_SUPPORT,A)})});const m=async f=>{if(f==null)return 0;if(vn.isBlob(f))return f.size;if(vn.isSpecCompliantForm(f))return(await new n(r1.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(vn.isArrayBufferView(f)||vn.isArrayBuffer(f))return f.byteLength;if(vn.isURLSearchParams(f)&&(f=f+""),vn.isString(f))return(await d(f)).byteLength},v=async(f,k)=>{const A=vn.toFiniteNumber(f.getContentLength());return A??m(k)};return async f=>{let{url:k,method:A,data:p,signal:b,cancelToken:w,timeout:O,onDownloadProgress:y,onUploadProgress:C,responseType:_,headers:S,withCredentials:L="same-origin",fetchOptions:E}=A6n(f),T=t||fetch;_=_?(_+"").toLowerCase():"text";let D=cqr([b,w&&w.toAbortSignal()],O),P=null;const Q=D&&D.unsubscribe&&(()=>{D.unsubscribe()});let M;try{if(C&&u&&A!=="get"&&A!=="head"&&(M=await v(S,p))!==0){let W=new n(k,{method:"POST",body:p,duplex:"half"}),H;if(vn.isFormData(p)&&(H=W.headers.get("content-type"))&&S.setContentType(H),W.body){const[$,G]=jpt(M,ume(Wpt(C)));p=zpt(W.body,Hpt,$,G)}}vn.isString(L)||(L=L?"include":"omit");const B=s&&"credentials"in n.prototype,R={...E,signal:D,method:A.toUpperCase(),headers:S.normalize().toJSON(),body:p,duplex:"half",credentials:B?L:void 0};P=s&&new n(k,R);let I=await(s?T(P,E):T(k,R));const F=h&&(_==="stream"||_==="response");if(h&&(y||F&&Q)){const W={};["status","statusText","headers"].forEach(q=>{W[q]=I[q]});const H=vn.toFiniteNumber(I.headers.get("content-length")),[$,G]=y&&jpt(H,ume(Wpt(y),!0))||[];I=new r(zpt(I.body,Hpt,$,()=>{G&&G(),Q&&Q()}),W)}_=_||"text";let j=await g[vn.findKey(g,_)||"text"](I,f);return!F&&Q&&Q(),await new Promise((W,H)=>{k6n(W,H,{data:j,headers:t2.from(I.headers),status:I.status,statusText:I.statusText,config:f,request:P})})}catch(B){throw Q&&Q(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new No("Network Error",No.ERR_NETWORK,f,P,B&&B.response),{cause:B.cause||B}):No.from(B,B&&B.code,f,P,B&&B.response)}}},mqr=new Map,p6n=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let a=s.length,l=a,d,u,h=mqr;for(;l--;)d=s[l],u=h.get(d),u===void 0&&h.set(d,u=l?new Map:gqr(t)),h=u;return u};p6n();const pJe={http:DZr,xhr:lqr,fetch:{get:p6n}};vn.forEach(pJe,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ypt=e=>`- ${e}`,kqr=e=>vn.isFunction(e)||e===null||e===!1;function vqr(e,t){e=vn.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let a=0;a`adapter ${d} `+(u===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : `+a.map(Ypt).join(` `):" "+Ypt(a[0]):"as no adapter specified";throw new No("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return o}const b6n={getAdapter:vqr,adapters:pJe};function j8e(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Aie(null,e)}function Zpt(e){return j8e(e),e.headers=t2.from(e.headers),e.data=U8e.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),b6n.getAdapter(e.adapter||vie.adapter,e)(e).then(function(r){return j8e(e),r.data=U8e.call(e,e.transformResponse,r),r.headers=t2.from(r.headers),r},function(r){return m6n(r)||(j8e(e),r&&r.response&&(r.response.data=U8e.call(e,e.transformResponse,r.response),r.response.headers=t2.from(r.response.headers))),Promise.reject(r)})}const w6n="1.13.6",fbe={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{fbe[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const qpt={};fbe.transitional=function(t,n,r){function o(s,a){return"[Axios v"+w6n+"] Transitional option '"+s+"'"+a+(r?". "+r:"")}return(s,a,l)=>{if(t===!1)throw new No(o(a," has been removed"+(n?" in "+n:"")),No.ERR_DEPRECATED);return n&&!qpt[a]&&(qpt[a]=!0,console.warn(o(a," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(s,a,l):!0}};fbe.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Aqr(e,t,n){if(typeof e!="object")throw new No("options must be an object",No.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],a=t[s];if(a){const l=e[s],d=l===void 0||a(l,s,e);if(d!==!0)throw new No("option "+s+" must be "+d,No.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new No("Unknown option "+s,No.ERR_BAD_OPTION)}}const jue={assertOptions:Aqr,validators:fbe},HA=jue.validators;let sD=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Npt,response:new Npt}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const s=o.stack?o.stack.replace(/^.+\n/,""):"";try{r.stack?s&&!String(r.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=KB(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&jue.assertOptions(r,{silentJSONParsing:HA.transitional(HA.boolean),forcedJSONParsing:HA.transitional(HA.boolean),clarifyTimeoutError:HA.transitional(HA.boolean),legacyInterceptorReqResOrdering:HA.transitional(HA.boolean)},!1),o!=null&&(vn.isFunction(o)?n.paramsSerializer={serialize:o}:jue.assertOptions(o,{encode:HA.function,serialize:HA.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),jue.assertOptions(n,{baseUrl:HA.spelling("baseURL"),withXsrfToken:HA.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=s&&vn.merge(s.common,s[n.method]);s&&vn.forEach(["delete","get","head","post","put","patch","common"],f=>{delete s[f]}),n.headers=t2.concat(a,s);const l=[];let d=!0;this.interceptors.request.forEach(function(k){if(typeof k.runWhen=="function"&&k.runWhen(n)===!1)return;d=d&&k.synchronous;const A=n.transitional||vJe;A&&A.legacyInterceptorReqResOrdering?l.unshift(k.fulfilled,k.rejected):l.push(k.fulfilled,k.rejected)});const u=[];this.interceptors.response.forEach(function(k){u.push(k.fulfilled,k.rejected)});let h,g=0,m;if(!d){const f=[Zpt.bind(this),void 0];for(f.unshift(...l),f.push(...u),m=f.length,h=Promise.resolve(n);g{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](o);r._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(l=>{r.subscribe(l),s=l}).then(o);return a.cancel=function(){r.unsubscribe(s)},a},t(function(s,a,l){r.reason||(r.reason=new Aie(s,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new O6n(function(o){t=o}),cancel:t}}};function bqr(e){return function(n){return e.apply(null,n)}}function wqr(e){return vn.isObject(e)&&e.isAxiosError===!0}const NFe={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(NFe).forEach(([e,t])=>{NFe[t]=e});function y6n(e){const t=new sD(e),n=n6n(sD.prototype.request,t);return vn.extend(n,sD.prototype,t,{allOwnKeys:!0}),vn.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return y6n(KB(e,o))},n}const gh=y6n(vie);gh.Axios=sD;gh.CanceledError=Aie;gh.CancelToken=pqr;gh.isCancel=m6n;gh.VERSION=w6n;gh.toFormData=hbe;gh.AxiosError=No;gh.Cancel=gh.CanceledError;gh.all=function(t){return Promise.all(t)};gh.spread=bqr;gh.isAxiosError=wqr;gh.mergeConfig=KB;gh.AxiosHeaders=t2;gh.formToJSON=e=>g6n(vn.isHTMLForm(e)?new FormData(e):e);gh.getAdapter=b6n.getAdapter;gh.HttpStatusCode=NFe;gh.default=gh;const{Axios:PNs,AxiosError:FNs,CanceledError:NNs,isCancel:UNs,CancelToken:jNs,VERSION:WNs,all:VNs,Cancel:zNs,isAxiosError:HNs,spread:$Ns,toFormData:XNs,AxiosHeaders:GNs,HttpStatusCode:YNs,formToJSON:ZNs,getAdapter:qNs,mergeConfig:KNs}=gh,mn=gh.create();mn.interceptors.request.use(function(e){const{baseUrl:t,otherSetting:n}=xs(ku());e.baseURL=t.value,e.timeout=n.value.axiosTimeOut;const r=localStorage.getItem("token");return r&&(e.headers.Authorization=r),e});mn.interceptors.response.use(function(e){return e.data},function(e){var t;return e.status===401&&(localStorage.removeItem("token"),tie.push("/login"),i1.error(window.$t("common.sessionExpired"))),Promise.reject(((t=e==null?void 0:e.response)==null?void 0:t.data)??e)});const Oqr={class:"languageConfig"},yqr={class:"sectionDesc"},Cqr={class:"langGrid"},_qr=["onClick"],Sqr={class:"langInfo"},Lqr={class:"langName"},xqr={class:"langNative"},Eqr=Je({__name:"languageConfig",setup(e){const t=fe(yW.value??"zh-CN"),{locale:n}=aI();function r(o){var s;n.value=o,t.value=o,yW.value=o,(s=window.$message)==null||s.success($t("settings.language.msg.saved"))}return(o,s)=>{const a=dL;return xe(),Ge("div",Oqr,[ge("p",yqr,Pe(o.$t("settings.language.desc")),1),ge("div",Cqr,[(xe(!0),Ge(sn,null,Bi(Ae(GZe),l=>(xe(),Ge("div",{key:l.value,class:Eo(["langCard",{active:Ae(t)===l.value}]),onClick:d=>r(l.value)},[ge("div",Sqr,[ge("div",Lqr,Pe(l.label),1),ge("div",xqr,Pe(l.tips),1)]),Ae(t)===l.value?(xe(),Ut(a,{key:0,name:"check-circle-filled",class:"checkIcon"})):nn("",!0)],10,_qr))),128))])])}}}),Tqr=oo(Eqr,[["__scopeId","data-v-6430745e"]]),Qqr={class:"requestConfig"},Dqr=Je({__name:"requestConfig",setup(e){const{baseUrl:t,isElectron:n}=xs(ku()),r=fe({baseUrl:""}),o={baseUrl:[{required:!0,message:$t("settings.request.msg.enterApi"),trigger:"blur"},{pattern:/^https?:\/\/.+/,message:$t("settings.request.msg.validUrl"),trigger:"blur"}]};function s(){r.value.baseUrl=t.value}function a(){t.value=r.value.baseUrl,window.$message.success($t("settings.request.msg.saved"))}function l(){r.value.baseUrl="http://localhost:10588",t.value=r.value.baseUrl,window.$message.success($t("settings.request.msg.reset"))}async function d(){try{const h=await(await fetch("toonflow://getPort")).json();h!=null&&h.port&&(t.value=`http://localhost:${h.port}/api`,n.value=!0,window.$message.success($t("settings.request.msg.refreshSuccess"))),window.$message.error($t("settings.request.msg.refreshFailed"))}catch{window.$message.error($t("settings.request.msg.refreshFailed"))}}return An(()=>{s()}),(u,h)=>{const g=Ez,m=dL,v=Wu,f=p2,k=Si,A=Ev,p=A2;return xe(),Ge("div",Qqr,[c(g,{style:{"margin-bottom":"16px"},theme:"warning",message:u.$t("settings.request.warning")},null,8,["message"]),c(p,{data:r.value,labelAlign:"top",rules:o},{default:Oe(()=>[c(f,{label:u.$t("settings.request.apiAddress"),name:"baseUrl"},{default:Oe(()=>[c(v,{modelValue:r.value.baseUrl,"onUpdate:modelValue":h[0]||(h[0]=b=>r.value.baseUrl=b),placeholder:u.$t("settings.request.apiPlaceholder"),clearable:""},{"prefix-icon":Oe(()=>[c(m,{name:"link"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),c(f,null,{default:Oe(()=>[c(A,{size:"small"},{default:Oe(()=>[c(k,{theme:"primary",type:"submit",onClick:a},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.save")),1)]),_:1}),c(k,{theme:"default",onClick:l},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.reset")),1)]),_:1}),Ae(n)?(xe(),Ut(k,{key:0,theme:"warning",onClick:d},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.refresh")),1)]),_:1})):nn("",!0)]),_:1})]),_:1})]),_:1},8,["data"])])}}}),Bqr=Je({__name:"loginConfig",setup(e){const t=fe(null),n=fe(!1),r=fe({id:null,name:"",password:""}),o={name:[{required:!0,message:$t("settings.login.msg.enterUsername"),trigger:"blur"},{min:2,max:20,message:$t("settings.login.msg.usernameLength"),trigger:"blur"}],password:[{required:!0,message:$t("settings.login.msg.enterPassword"),trigger:"blur"},{min:6,max:20,message:$t("settings.login.msg.passwordLength"),trigger:"blur"}]};async function s(){try{const u=await mn.get("/setting/loginConfig/getUser");r.value={id:u.data.id??null,name:u.data.name??"",password:u.data.password??""}}catch{window.$message.error($t("settings.login.msg.fetchFailed"))}}async function a(){n.value=!0;try{await mn.post("/setting/loginConfig/updateUserPwd",r.value),window.$message.success($t("settings.login.msg.saveSuccess")),await s()}catch{window.$message.error($t("settings.login.msg.saveFailed"))}finally{n.value=!1}}function l(u){u.validateResult===!0&&a()}function d(){var u;(u=t.value)==null||u.reset()}return An(()=>{s()}),(u,h)=>{const g=Wu,m=p2,v=Si,f=Ev,k=A2,A=Wc;return xe(),Ut(A,{loading:Ae(n)},{default:Oe(()=>[c(k,{ref_key:"formRef",ref:t,labelAlign:"top",data:Ae(r),rules:o,colon:!0,onSubmit:l,onReset:d},{default:Oe(()=>[c(m,{label:u.$t("settings.login.username"),name:"name"},{default:Oe(()=>[c(g,{modelValue:Ae(r).name,"onUpdate:modelValue":h[0]||(h[0]=p=>Ae(r).name=p),placeholder:u.$t("settings.login.usernamePlaceholder"),clearable:"",width:"100%"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(m,{label:u.$t("settings.login.password"),name:"password"},{default:Oe(()=>[c(g,{modelValue:Ae(r).password,"onUpdate:modelValue":h[1]||(h[1]=p=>Ae(r).password=p),type:"password",placeholder:u.$t("settings.login.passwordPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(m,{"status-icon":!1},{default:Oe(()=>[c(f,{size:"small"},{default:Oe(()=>[c(v,{theme:"primary",type:"submit",loading:Ae(n)},{default:Oe(()=>[Bt(Pe(u.$t("settings.login.modify")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])}}}),Rqr="data:image/png;base64,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",Iqr="data:image/png;base64,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",Mqr="data:image/png;base64,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",Pqr="data:image/png;base64,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",Kpt="data:image/png;base64,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",Fqr="data:image/png;base64,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",Nqr="data:image/png;base64,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",Uqr="data:image/png;base64,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",jqr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABdFBMVEUC26MAAAAAAQEACwgAFhAAIhkAOisBW0QBfl0Bp3wCzJgC16AADwsAEw4AQDABelsCu4sCtIYBc1YAJRwAAgEADgoBQzIBkWwCzpoCyZYBhGMAKR8AAQAABAMALSIBhmQC0JsCzpkBeFoADgsAAwIAKh8BongC2qMCvo0BSDUABgQBUT0CxZMC1qABfV0AEAwAIBgC2aECp30ADAkBeFkCvIwBZUsC1Z4CwpEBNScAAgIBV0EC050BXkYBbFEBjGgC2qIAFA8CtYcAMCQC1Z8BfFwAEg4BUz4Cs4UC2aICv44BhWMBPS0AOSoC1J4BgWAACQYCvY0CsoQACQcBjWkAHRUBV0ABSzgAKB0C1p8Bb1MACAYC0ZwBkWsCuIkCsIMBmXICwI8BiWYCypcBfl4Cr4MACggBdVcCxpQCxpMAIxoBRDMBbVEAGhMBpnsBj2oC2KEBg2IBgF8ANykABwUBe1wBRjQAFRACxJIBo3kBimf////Yuo2SAAAAAWJLR0R7T9K1/AAAAm5JREFUeNrt2tdTU1EQBvDdBAQ1FgIBExI1lBBKEGlibNgVFRtKRwEbBAIWbH+9Lz452XsznJPNN+N+z3cmvzn3tLsbIovFYrFYLBaLxVKvcFWJRBsajzQ1Hz12XBEREzAnTp46XQNH5R9ribe2CY5Ee8cZHQRRMtWZFhiZs+fO6yCIsl3d0hTp6c0pIagv398jMQYGh3QQRIXhC+KCGcld1EEQjTaKirFxb+skBEETvaIiM3lJCUFTl0VF8cpVJQRNyWNRvObnjYQjaEKeF8XrXhRVIGhUXiMDN6aVEDQs7hd885YWotAvIvj2HSUE5btlxV0tRF9XWkTcyyshKNspD8V957lZJYJSbSIi9kALkWyVh6LpoRKC4jKiYUYL0RKTFY+0ENOPZcSTWSUEPY2IiGfPtRAvXspDMaeFKLySEa/dtorqETQvIxYWtRBLMmJ5RQuxKiN4TQvxJgDxVguxHoDY0EJsBiDeaSEWAxDx/woB8TpmECbm+wCE2hKF2Kwgtm2EAwziKIe41CBc7yAuuhBXfoSPH4jPQIQPYoTSAESRBKFcBFE4QyghIhRTEcrKCAV2hFYDQtMFoP0E0IhDaEkCNGcD2tTMHz5+UkAENOz/zoj4Vs0RMQ5LZHvO338YQn9NTKaUrC3i36d2Kj61W/ZxejkiOLG3X38ERz97UbghOLqn1pyVEZwoAyB418MacUZwyX2/cEdkHIsTXhC87byDe0BE3Mq5fhA84nqm+kDwFwTEV8dbtxfEN8dvQS8IPkBAfHe7eftB/HCrIfpB8E8ExC8ExG8EhEYPLBThfHxYLBaLxWKxWCyWQ+QPoptb+kQLop8AAAAASUVORK5CYII=",Wqr="data:image/png;base64,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",Vqr="data:image/png;base64,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",Wue={deepSeek:Rqr,volcengine:Iqr,kling:Mqr,zhipu:Pqr,qwen:Kpt,wan:Kpt,openai:Fqr,vidu:Nqr,anthropic:Uqr,runninghub:jqr,gemini:Wqr,grsai:Vqr},zqr={class:"optionItem"},Hqr={class:"optionMain"},$qr={class:"optionLabel"},Xqr={class:"optionType"},Gqr={class:"emptyActionWrap"},Yqr=Je({__name:"modelSelect",props:Fc({type:{type:String,default:"all"},size:{type:String,default:"medium"},placeholder:{type:String},changeConfig:{type:Boolean,default:!1}},{modelValue:{type:String,default:""},modelModifiers:{}}),emits:Fc(["change"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t;async function s(f){if(n.value=f,r.changeConfig){const{data:k}=await mn.post("/modelSelect/getModelDetail",{modelId:f});o("change",f,k)}else o("change",f)}const a=fe([]);An(()=>{u()});function l(f){f&&u()}const d={image:$t("components.modelSelect.type.image"),text:$t("components.modelSelect.type.text"),video:$t("components.modelSelect.type.video")};function u(){mn.post("/modelSelect/getModelList",{type:r.type}).then(f=>{const k=new Map;f.data.forEach(A=>{const p=A.id;k.has(p)||k.set(p,{group:A.name,id:A.id,children:[]}),k.get(p).children.push({id:A.id,label:A.label,value:A.value,vendorId:A.vendorId,type:d[A.type]})}),a.value=Array.from(k.values()),a.value.map(A=>A.children).flat().every(A=>`${A.id}:${A.value}`!==n.value)&&(n.value="")}).catch(f=>{console.error($t("components.modelSelect.msg.fetchModelFailed"),f)})}const h=[{pattern:/gpt|o1|o3|o4|openai/i,provider:"openai"},{pattern:/claude|anthropic/i,provider:"anthropic"},{pattern:/deepseek/i,provider:"deepSeek"},{pattern:/gemini|veo/i,provider:"gemini"},{pattern:/qwen|qwq|tongyi|通义|wanx|万相|wan/i,provider:"qwen"},{pattern:/glm|zhipu|智谱/i,provider:"zhipu"},{pattern:/doubao|seedream|seedance|volc/i,provider:"volcengine"},{pattern:/kling|可灵/i,provider:"kling"},{pattern:/vidu/i,provider:"vidu"},{pattern:/runninghub/i,provider:"runninghub"},{pattern:/grok|xai|grsai/i,provider:"grsai"}];function g(f,k){const A=`${f||""} ${k||""}`.trim();if(!A)return null;const p=h.find(b=>b.pattern.test(A));return p?Wue[p.provider]:null}function m(f){var k;return((k=f==null?void 0:f.slice(0,1))==null?void 0:k.toUpperCase())||"M"}function v(){const f=ku();f.activeMenu="vendorConfig",f.showSetting=!0}return(f,k)=>{const A=yZe,p=uL,b=Rvi,w=Si,O=pA;return xe(),Ut(O,{size:r.size,modelValue:n.value,"onUpdate:modelValue":k[0]||(k[0]=y=>n.value=y),placeholder:r.placeholder??f.$t("components.modelSelect.placeholder"),onChange:s,onPopupVisibleChange:l},{empty:Oe(()=>[ge("div",Gqr,[c(w,{class:"emptyActionButton",size:"small",variant:"text",theme:"primary",onClick:Mr(v,["stop"])},{default:Oe(()=>[Bt(Pe(f.$t("components.modelSelect.goSetting")),1)]),_:1})])]),default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(a),(y,C)=>(xe(),Ut(b,{key:C,label:y.group},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(y.children,_=>(xe(),Ut(p,{key:_.id,value:`${_.id}:${_.value}`,label:_.label},{default:Oe(()=>[ge("div",zqr,[ge("div",Hqr,[g(_.label,_.value)?(xe(),Ut(A,{key:0,size:"24px",shape:"round",image:g(_.label,_.value)},null,8,["image"])):(xe(),Ut(A,{key:1,size:"24px",shape:"round",class:"fallbackAvatar"},{default:Oe(()=>[Bt(Pe(m(_.label)),1)]),_:2},1024)),ge("div",$qr,Pe(_.label),1)]),ge("span",Xqr,Pe(_.type),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["size","modelValue","placeholder"])}}}),T8=oo(Yqr,[["__scopeId","data-v-a402fa9b"]]),Zqr={class:"aiConfog"},qqr={class:"banner"},Kqr={class:"content f ac jb"},Jqr={class:"textContent ac"},eKr={class:"btnList f w"},tKr={class:"rightBtnList f nw"},nKr={class:"cardGrid"},iKr={class:"skillCardHeader"},rKr={class:"headerLeft"},oKr={class:"skillName"},sKr={class:"skillCardBody"},aKr={class:"dialogContent"},lKr=Je({__name:"agentConfog",setup(e){const{isElectron:t}=xs(ku()),n=fe([]),r=fe(!1),o=fe(null),s=fe(""),a=[{pattern:/gpt|o1|o3|o4|openai/i,provider:"openai"},{pattern:/claude|anthropic/i,provider:"anthropic"},{pattern:/deepseek/i,provider:"deepSeek"},{pattern:/gemini|veo/i,provider:"gemini"},{pattern:/qwen|qwq|tongyi|通义|wanx|万相|wan/i,provider:"qwen"},{pattern:/glm|zhipu|智谱/i,provider:"zhipu"},{pattern:/doubao|seedream|seedance|volc/i,provider:"volcengine"},{pattern:/kling|可灵/i,provider:"kling"},{pattern:/vidu/i,provider:"vidu"},{pattern:/runninghub/i,provider:"runninghub"},{pattern:/grok|xai|grsai/i,provider:"grsai"}];function l(y){if(!y)return null;const C=Object.keys(Wue).find(_=>_.toLowerCase()===y.toLowerCase());return C?Wue[C]:null}function d(y,C){const _=`${y||""} ${C||""}`.trim();if(!_)return null;const S=a.find(L=>L.pattern.test(_));return S?Wue[S.provider]:null}function u(y){return l(y.icon)||d(y.modelName,y.model)}function h(y){return(y==null?void 0:y.slice(0,1))||"A"}function g(y){if(y.disabled)return window.$message.warning($t("settings.agent.msg.notAvailable"));o.value=y,s.value=y.modelName,r.value=!0}const m=fe(null);function v(){var C,_,S,L,E;o.value&&(o.value.modelName=s.value,o.value.vendorId=m.value);const y={id:(C=o.value)==null?void 0:C.id,name:(_=o.value)==null?void 0:_.name,model:s.value.split(":")[1]||((S=o.value)==null?void 0:S.model),modelName:(L=o.value)==null?void 0:L.modelName,vendorId:s.value.split(":")[0],desc:(E=o.value)==null?void 0:E.desc};mn.post("/setting/agentDeploy/deployAgentModel",y).then(()=>{window.$message.success($t("settings.agent.msg.configSuccess")),A()}).catch(T=>{window.$message.error(`${$t("settings.agent.msg.updateConfigFailed")}${T.message}`)}).finally(()=>{r.value=!1})}async function f(){t.value?await fetch("toonflow://openurlwithbrowser?url=https://api.toonflow.net"):window.open("https://api.toonflow.net","_blank")}const k=fe(!1);function A(){mn.post("/setting/agentDeploy/getAgentDeploy").then(y=>{n.value=y.data.map(C=>({id:C.id,model:C.model,modelName:C.modelName,vendorId:C.vendorId,name:C.name,icon:C.icon,desc:C.desc,disabled:C.disabled}))}).catch(y=>{window.$message.error(`${$t("settings.agent.msg.getAgentListFailed")}${y.message}`)}).finally(()=>{})}An(()=>{A()});async function p(){k.value=!0,await O();const y=w.value.find(C=>C.id==="toonflow");if(!y){window.$message.error($t("settings.agent.msg.toonflowNotFound")),k.value=!1;return}if(!y.inputValues.apiKey){k.value=!1;const C=fe(""),_=fo({theme:"warning",header:$t("settings.agent.fillKeyHeader"),body:()=>xn("div",{style:"padding: 8px 0"},[xn(Wu,{modelValue:C.value,"onUpdate:modelValue":S=>C.value=S,placeholder:$t("settings.agent.keyPlaceholder"),type:"password"})]),confirmBtn:$t("settings.agent.confirm"),cancelBtn:$t("settings.agent.cancel"),onConfirm:()=>{if(!C.value){window.$message.warning($t("settings.agent.msg.enterKey"));return}_.hide(),b(C.value)},onClose:()=>{_.hide()}});return}b(y.inputValues.apiKey)}function b(y){k.value=!0,mn.post("/setting/agentDeploy/agentSetKey",{key:y}).then(()=>{window.$message.success($t("settings.agent.msg.configSuccess")),A()}).catch(C=>{window.$message.error(`${$t("settings.agent.msg.updateConfigFailed")}${C.message}`)}).finally(()=>{r.value=!1,k.value=!1})}const w=fe([]);async function O(){try{const y=await mn.post("/setting/vendorConfig/getVendorList");w.value=y.data.map(C=>({...C,enable:C.enable==1}))}catch(y){window.$message.error(`${$t("settings.vendor.msg.getVendorListFailed")}${y.message}`)}}return(y,C)=>{var R;const _=_n("i-good-two"),S=_n("i-share"),L=Si,E=yZe,T=Sg,D=km,P=p2,Q=A2,M=gc,B=f4e("loading");return uu((xe(),Ge("div",Zqr,[ge("div",qqr,[ge("div",Kqr,[ge("div",Jqr,[c(_,{class:"icon",theme:"filled",size:"24",fill:"currentColor"}),ge("span",null,Pe(y.$t("settings.agent.bannerDesc")),1)]),ge("div",eKr,[c(L,{onClick:f},{suffix:Oe(()=>[c(S,{theme:"outline"})]),default:Oe(()=>[Bt(Pe(y.$t("settings.agent.visitWebsite"))+" ",1)]),_:1}),ge("div",tKr,[c(L,{onClick:p},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.oneClickFill")),1)]),_:1})])])])]),ge("div",nKr,[(xe(!0),Ge(sn,null,Bi(Ae(n),(I,F)=>(xe(),Ut(D,{hoverShadow:"",key:F,class:"skillCard",onClick:j=>g(I)},{default:Oe(()=>[ge("div",iKr,[ge("div",rKr,[u(I)?(xe(),Ut(E,{key:0,image:u(I),shape:"round"},null,8,["image"])):(xe(),Ut(E,{key:1,shape:"round",class:"fallbackAvatar"},{default:Oe(()=>[Bt(Pe(h(I.name)),1)]),_:2},1024)),ge("span",oKr,Pe(I.name),1)]),I.model&&!I.disabled?(xe(),Ut(T,{key:0,theme:"primary",variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(I.model),1)]),_:2},1024)):I.disabled?(xe(),Ut(T,{key:1,variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.notOpen")),1)]),_:1})):!I.disabled&&!I.model?(xe(),Ut(T,{key:2,theme:"warning",variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.notConfigured")),1)]),_:1})):nn("",!0)]),ge("div",sKr,Pe(I.desc),1)]),_:2},1032,["onClick"]))),128))]),c(M,{visible:Ae(r),"onUpdate:visible":C[1]||(C[1]=I=>Fn(r)?r.value=I:null),header:((R=Ae(o))==null?void 0:R.name)+" "+y.$t("settings.agent.modelConfig"),width:"480px","on-confirm":v,"confirm-btn":y.$t("settings.agent.confirm"),"cancel-btn":y.$t("settings.agent.cancel")},{default:Oe(()=>[ge("div",aKr,[c(Q,{"label-align":"left","label-width":70},{default:Oe(()=>[c(P,{label:y.$t("settings.agent.selectModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(s),"onUpdate:modelValue":C[0]||(C[0]=I=>Fn(s)?s.value=I:null),type:"text"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])])),[[B,Ae(k)]])}}}),cKr=oo(lKr,[["__scopeId","data-v-cbb834b1"]]),dKr={class:"dbConfig"},uKr={class:"actionInfo"},hKr={class:"confirmContent"},fKr={class:"confirmContent"},gKr=Je({__name:"dbConfig",setup(e){const t=fe(!1),n=fe(!1),r=fe(""),o=fe(null),s={deleteAll:{title:()=>$t("settings.db.msg.clearDbTitle"),firstMessage:()=>$t("settings.db.msg.firstConfirm"),secondMessage:()=>$t("settings.db.msg.secondConfirm"),keyword:()=>$t("settings.db.msg.keyword")}},a=X(()=>{const v=s[o.value||"deleteAll"];return{title:v.title(),firstMessage:v.firstMessage(),secondMessage:v.secondMessage(),keyword:v.keyword()}}),l=X(()=>r.value===a.value.keyword),d=X(()=>l.value?$t("settings.db.msg.confirm"):`${$t("settings.db.msg.pleaseInput")}"${a.value.keyword}"`);function u(){o.value="deleteAll",r.value="",t.value=!0}function h(){t.value=!1,n.value=!0}async function g(){if(l.value){n.value=!1,Wh(!0);try{await mn.get("/setting/dbConfig/clearData"),window.$message.success($t("settings.db.msg.cleared")),tie.push("/login")}catch{window.$message.error($t("settings.db.msg.operationFailed"))}finally{Wh(!1),o.value=null,r.value=""}}}function m(){t.value=!1,n.value=!1,o.value=null,r.value="",window.$message.info($t("settings.db.msg.cancelled"))}return(v,f)=>{const k=_n("i-clear"),A=Si,p=km,b=_n("i-attention"),w=gc,O=Wu;return xe(),Ge("div",dKr,[c(p,{class:"actionItem"},{default:Oe(()=>[ge("div",uKr,[ge("h4",null,Pe(v.$t("settings.db.clearDb")),1),ge("p",null,Pe(v.$t("settings.db.clearDbDesc")),1)]),c(A,{theme:"danger",variant:"outline",onClick:u},{icon:Oe(()=>[c(k,{theme:"outline",size:"14",fill:"currentColor"})]),default:Oe(()=>[Bt(" "+Pe(v.$t("settings.db.clearData")),1)]),_:1})]),_:1}),c(w,{visible:t.value,"onUpdate:visible":f[0]||(f[0]=y=>t.value=y),header:a.value.title,"confirm-btn":{content:v.$t("settings.db.msg.confirm"),theme:"danger"},onConfirm:h,onCancel:m},{default:Oe(()=>[ge("div",hKr,[c(b,{theme:"filled",size:"48",fill:"#e34d59"}),ge("p",null,Pe(a.value.firstMessage),1)])]),_:1},8,["visible","header","confirm-btn"]),c(w,{visible:n.value,"onUpdate:visible":f[2]||(f[2]=y=>n.value=y),header:a.value.title,"confirm-btn":{content:d.value,theme:"danger",disabled:!l.value},onConfirm:g,onCancel:m},{default:Oe(()=>[ge("div",fKr,[c(b,{theme:"filled",size:"48",fill:"#e34d59"}),ge("p",null,Pe(a.value.secondMessage),1),c(O,{modelValue:r.value,"onUpdate:modelValue":f[1]||(f[1]=y=>r.value=y),placeholder:`${v.$t("settings.db.msg.pleaseInput")} ${a.value.keyword} ${v.$t("settings.db.confirmAction")}`,class:"confirmInput"},null,8,["modelValue","placeholder"])])]),_:1},8,["visible","header","confirm-btn"])])}}}),mKr=oo(gKr,[["__scopeId","data-v-0f49f50e"]]),kKr={class:"otherConfig"},vKr=Je({__name:"otherConfig",setup(e){const{otherSetting:t,canvasWheelEvent:n}=xs(ku()),r=X({get:()=>{const s=t.value.axiosTimeOut;return s==null||isNaN(s)?600:Math.floor(s/1e3)},set:s=>{s==null||isNaN(s)||(t.value.axiosTimeOut=s*1e3)}});function o(){t.value.chapterReg="/第\\s*([0-90-9零一二三四五六七八九十百千万]+)\\s*[章回节]\\s*([^\\n\\r]*)/g"}return(s,a)=>{const l=Si,d=c2,u=p2,h=Lz,g=x3n,m=OZe,v=A2;return xe(),Ge("div",kKr,[c(v,{"label-align":"top"},{default:Oe(()=>[c(u,{name:"chapterReg"},{label:Oe(()=>[ge("span",null,Pe(s.$t("settings.other.chapterRegex")),1),c(l,{style:{"margin-left":"15px"},onClick:o,size:"small"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.restoreDefault")),1)]),_:1})]),default:Oe(()=>[c(d,{modelValue:Ae(t).chapterReg,"onUpdate:modelValue":a[0]||(a[0]=f=>Ae(t).chapterReg=f),placeholder:s.$t("settings.other.regexPlaceholder"),style:{width:"400px"}},null,8,["modelValue","placeholder"])]),_:1}),c(u,{label:s.$t("settings.other.requestTimeout"),name:"axiosTimeOut"},{default:Oe(()=>[c(h,{"auto-width":"",suffix:s.$t("settings.other.seconds"),min:10,modelValue:r.value,"onUpdate:modelValue":a[1]||(a[1]=f=>r.value=f),allowInputOverLimit:!1,placeholder:s.$t("settings.other.inputSeconds")},null,8,["suffix","modelValue","placeholder"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.agentCanvasScalingMethod")},{default:Oe(()=>[c(m,{variant:"default-filled",modelValue:Ae(n),"onUpdate:modelValue":a[2]||(a[2]=f=>Fn(n)?n.value=f:null)},{default:Oe(()=>[c(g,{value:"zoom"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.zoom")),1)]),_:1}),c(g,{value:"scroll"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.scroll")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.isInteracting")},{default:Oe(()=>[c(m,{variant:"default-filled",modelValue:Ae(t).interacting,"onUpdate:modelValue":a[3]||(a[3]=f=>Ae(t).interacting=f)},{default:Oe(()=>[c(g,{value:!1},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.closeIsInteracting")),1)]),_:1}),c(g,{value:!0},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.openIsInteracting")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.assetConcurrency"),name:"assetsBatchGenereateSize"},{default:Oe(()=>[c(h,{"auto-width":"",suffix:s.$t("settings.other.count"),min:1,modelValue:Ae(t).assetsBatchGenereateSize,"onUpdate:modelValue":a[4]||(a[4]=f=>Ae(t).assetsBatchGenereateSize=f),allowInputOverLimit:!1,placeholder:s.$t("settings.other.inputCount")},null,8,["suffix","modelValue","placeholder"])]),_:1},8,["label"])]),_:1})])}}}),AKr=oo(vKr,[["__scopeId","data-v-a6ec5f61"]]),pKr="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='96'%20height='96'%3e%3cpath%20d='M0%200%20C2.60491411%203.39771405%202.43893626%206.83010556%202%2011%20C0.20437595%2013.75329021%20-1.05254922%2015.52627461%20-4%2017%20C-9.16062661%2017.49941548%20-9.16062661%2017.49941548%20-12%2017%20C-14.90799783%2014.4555019%20-15.90702057%2013.04601863%20-16.25%209.1875%20C-16.1675%208.465625%20-16.085%207.74375%20-16%207%20C-17.0725%207.639375%20-18.145%208.27875%20-19.25%208.9375%20C-27.64061736%2013.11803647%20-42.1161507%2013.9612831%20-51%2011%20C-51.09796875%2011.67804687%20-51.1959375%2012.35609375%20-51.296875%2013.0546875%20C-52.09650113%2018.03167082%20-53.07549372%2022.54151804%20-55.0625%2027.1875%20C-58.18113878%2034.59280707%20-58.84191514%2041.34103871%20-56%2049%20C-51.69477815%2055.71108112%20-45.90514151%2058.44542058%20-38.375%2060.3125%20C-28.59646317%2061.98237321%20-17.61397475%2061.2378015%20-9%2056%20C-6.49898905%2053.93089054%20-4.42615578%2051.9334749%20-3%2049%20C-2.8015185%2045.84858524%20-2.8015185%2045.84858524%20-3%2043%20C-3.63502441%2042.9498877%20-4.27004883%2042.89977539%20-4.92431641%2042.84814453%20C-7.82522523%2042.61482321%20-10.72505632%2042.37001416%20-13.625%2042.125%20C-14.62402344%2042.04636719%20-15.62304688%2041.96773437%20-16.65234375%2041.88671875%20C-29.19293478%2040.80706522%20-29.19293478%2040.80706522%20-33%2037%20C-32.79953373%2033.85936171%20-32.54877905%2031.72339057%20-30.625%2029.1875%20C-24.50435236%2024.71471903%20-13.19717736%2026.55890184%20-6%2027%20C-2.41396623%2027.60321914%200.69870236%2028.49303823%204%2030%20C4.94875%2030.4125%205.8975%2030.825%206.875%2031.25%20C11.08743551%2034.71906454%2012.65632177%2038.68972676%2014%2043.8125%20C14.64326159%2052.37282738%209.41850308%2059.51339193%204.13671875%2065.7421875%20C-2.45750281%2072.7101218%20-11.41635656%2078.38746195%20-21.19140625%2079.17700195%20C-37.70773611%2079.60385521%20-50.14814106%2078.46993862%20-63%2067%20C-73.50321308%2056.03782298%20-76.52428161%2045.45597262%20-76.2734375%2030.625%20C-75.77333104%2018.46399527%20-69.95822491%208.40894719%20-61.1875%200.1875%20C-43.74979764%20-14.14115465%20-17.3489938%20-15.03579462%200%200%20Z%20'%20fill='%23DA203E'%20transform='translate(80,13)'/%3e%3c/svg%3e";var C6n={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Ho,function(){var n=1e3,r=6e4,o=36e5,s="millisecond",a="second",l="minute",d="hour",u="day",h="week",g="month",m="quarter",v="year",f="date",k="Invalid Date",A=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(Q){var M=["th","st","nd","rd"],B=Q%100;return"["+Q+(M[(B-20)%10]||M[B]||M[0])+"]"}},w=function(Q,M,B){var R=String(Q);return!R||R.length>=M?Q:""+Array(M+1-R.length).join(B)+Q},O={s:w,z:function(Q){var M=-Q.utcOffset(),B=Math.abs(M),R=Math.floor(B/60),I=B%60;return(M<=0?"+":"-")+w(R,2,"0")+":"+w(I,2,"0")},m:function Q(M,B){if(M.date()1)return Q(j[0])}else{var W=M.name;C[W]=M,I=W}return!R&&I&&(y=I),I||!R&&y},E=function(Q,M){if(S(Q))return Q.clone();var B=typeof M=="object"?M:{};return B.date=Q,B.args=arguments,new D(B)},T=O;T.l=L,T.i=S,T.w=function(Q,M){return E(Q,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var D=function(){function Q(B){this.$L=L(B.locale,null,!0),this.parse(B),this.$x=this.$x||B.x||{},this[_]=!0}var M=Q.prototype;return M.parse=function(B){this.$d=function(R){var I=R.date,F=R.utc;if(I===null)return new Date(NaN);if(T.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var j=I.match(A);if(j){var W=j[2]-1||0,H=(j[7]||"0").substring(0,3);return F?new Date(Date.UTC(j[1],W,j[3]||1,j[4]||0,j[5]||0,j[6]||0,H)):new Date(j[1],W,j[3]||1,j[4]||0,j[5]||0,j[6]||0,H)}}return new Date(I)}(B),this.init()},M.init=function(){var B=this.$d;this.$y=B.getFullYear(),this.$M=B.getMonth(),this.$D=B.getDate(),this.$W=B.getDay(),this.$H=B.getHours(),this.$m=B.getMinutes(),this.$s=B.getSeconds(),this.$ms=B.getMilliseconds()},M.$utils=function(){return T},M.isValid=function(){return this.$d.toString()!==k},M.isSame=function(B,R){var I=E(B);return this.startOf(R)<=I&&I<=this.endOf(R)},M.isAfter=function(B,R){return E(B){const e=fe("v1.0.7"),t=fe(""),n=fe(null),r=X(()=>n.value?Number(n.value.id):-1),o=fe(null);async function s(a){var u;const l=await mn.post("/project/getSingleProject",{id:a});n.value=l.data[0];const d=await mn.post("/script/getScrptApi",{projectId:a});o.value=((u=d.data)==null?void 0:u.id)||null}return{version:e,activeMenu:t,project:n,projectId:r,currentScriptId:o,setProjectById:s}},{persist:!1}),yKr={class:"about"},CKr={class:"f"},_Kr={class:"appName"},SKr={class:"data"},LKr={class:"version"},xKr={class:"renew ac"},EKr={style:{"margin-left":"5px"}},TKr={class:"codeRepository"},QKr={class:"f"},DKr={class:"github"},BKr={style:{"margin-left":"15px"}},RKr={style:{"font-size":"15px","font-weight":"900"}},IKr={class:"f"},MKr={class:"gitee"},PKr={style:{"margin-left":"15px"}},FKr={style:{"font-size":"15px","font-weight":"900"}},NKr={class:"license"},UKr={class:"ac jb",style:{cursor:"pointer"}},jKr={class:"f"},WKr={class:"data"},VKr={style:{"margin-left":"15px"}},zKr={style:{"font-size":"12px",color:"#666"}},HKr={class:"updateDialog"},$Kr={class:"updateHeader"},XKr={class:"updateIcon"},GKr={class:"updateTitle"},YKr={key:0,class:"versionCompare"},ZKr={class:"versionCard current"},qKr={class:"versionLabel"},KKr={class:"arrow"},JKr={class:"versionCard latest"},eJr={class:"versionLabel"},tJr={key:1,class:"versionTime"},nJr={class:"versionTimeValue"},iJr={key:2,class:"customUrl"},rJr={class:"sourceSelect"},oJr={class:"sourceTitle"},sJr={class:"sourceCards"},aJr=["onClick"],lJr=["src","alt"],cJr={class:"sourceName"},dJr={key:0,class:"checkMark"},uJr={style:{display:"flex","justify-content":"flex-end",gap:"8px","padding-top":"4px"}},hJr=Je({__name:"about",setup(e){const{t}=aI(),{version:n}=xs(OKr()),{isElectron:r,needUpdate:o}=xs(ku()),s=fe(!1),a=fe(""),l=fe(0);let d=null;function u(){l.value++,l.value===1&&(d=setTimeout(()=>{l.value=0},3e3)),l.value>=3&&(l.value=0,d&&clearTimeout(d),s.value=!s.value,s.value||(a.value=""),i1.info(s.value?"已开启自定义更新地址":"已关闭自定义更新地址"))}const h=fe(!1),g=fe("toonflow"),m=fe([{value:"toonflow",label:"ToonFlow",iconType:"image",iconSrc:wKr,iconClass:"toonflow",iconBg:"#ececec",disabled:!1},{value:"github",label:t("settings.about.github"),iconType:"component",iconName:"github",iconClass:"github",disabled:!0},{value:"atomgit",label:"AtomGit",iconType:"image",iconSrc:pKr,iconClass:"atomgit",iconBg:"#f9f9fb",disabled:!0},{value:"gitee",label:t("settings.about.gitee"),iconType:"component",iconName:"code",iconClass:"gitee",disabled:!0}]),v=fe(!1),f=fe({needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""}),k=X(()=>f.value.time?JB(f.value.time).format("YYYY-MM-DD HH:mm:ss"):"");pt(g,()=>{f.value={needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""}});async function A(_){r.value?await fetch(`toonflow://openurlwithbrowser?url=${_}`):window.open(_,"_blank")}An(async()=>{const{data:_}=await mn.get("/other/getVersion");n.value=_});function p(){f.value={needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""},g.value="toonflow",h.value=!0}function b(_){return{toonflow:"ToonFlow",github:"GitHub",atomgit:"AtomGit",gitee:"Gitee"}[_]}async function w(){v.value=!0;try{const{data:_}=await mn.post("/setting/about/checkUpdate",{source:g.value,url:a.value||null});a.value&&(_.needUpdate=!0),f.value=_,_.needUpdate?window.$message.success(t("settings.about.updateAvailable")):i1.success(t("settings.about.noUpdate"))}catch(_){i1.error(_.message??t("settings.about.updateFailed"))}finally{v.value=!1}}async function O(_){try{return await(await fetch(`toonflow://${_}`)).json()}catch{}}async function y(){v.value=!0;try{await mn.post("/setting/about/downloadApp",{url:f.value.url,reinstall:f.value.reinstall,version:f.value.version}),O("apprestart"),i1.success(t("settings.about.updateSuccess")),h.value=!1}catch(_){i1.error(_.message??t("settings.about.updateFailed"))}finally{v.value=!1}}function C(){const _=f.value.reinstall?` +`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=KB(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&jue.assertOptions(r,{silentJSONParsing:HA.transitional(HA.boolean),forcedJSONParsing:HA.transitional(HA.boolean),clarifyTimeoutError:HA.transitional(HA.boolean),legacyInterceptorReqResOrdering:HA.transitional(HA.boolean)},!1),o!=null&&(vn.isFunction(o)?n.paramsSerializer={serialize:o}:jue.assertOptions(o,{encode:HA.function,serialize:HA.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),jue.assertOptions(n,{baseUrl:HA.spelling("baseURL"),withXsrfToken:HA.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=s&&vn.merge(s.common,s[n.method]);s&&vn.forEach(["delete","get","head","post","put","patch","common"],f=>{delete s[f]}),n.headers=t2.concat(a,s);const l=[];let d=!0;this.interceptors.request.forEach(function(k){if(typeof k.runWhen=="function"&&k.runWhen(n)===!1)return;d=d&&k.synchronous;const A=n.transitional||vJe;A&&A.legacyInterceptorReqResOrdering?l.unshift(k.fulfilled,k.rejected):l.push(k.fulfilled,k.rejected)});const u=[];this.interceptors.response.forEach(function(k){u.push(k.fulfilled,k.rejected)});let h,g=0,m;if(!d){const f=[Zpt.bind(this),void 0];for(f.unshift(...l),f.push(...u),m=f.length,h=Promise.resolve(n);g{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](o);r._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(l=>{r.subscribe(l),s=l}).then(o);return a.cancel=function(){r.unsubscribe(s)},a},t(function(s,a,l){r.reason||(r.reason=new Aie(s,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new O6n(function(o){t=o}),cancel:t}}};function bqr(e){return function(n){return e.apply(null,n)}}function wqr(e){return vn.isObject(e)&&e.isAxiosError===!0}const NFe={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(NFe).forEach(([e,t])=>{NFe[t]=e});function y6n(e){const t=new sD(e),n=n6n(sD.prototype.request,t);return vn.extend(n,sD.prototype,t,{allOwnKeys:!0}),vn.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return y6n(KB(e,o))},n}const gh=y6n(vie);gh.Axios=sD;gh.CanceledError=Aie;gh.CancelToken=pqr;gh.isCancel=m6n;gh.VERSION=w6n;gh.toFormData=hbe;gh.AxiosError=No;gh.Cancel=gh.CanceledError;gh.all=function(t){return Promise.all(t)};gh.spread=bqr;gh.isAxiosError=wqr;gh.mergeConfig=KB;gh.AxiosHeaders=t2;gh.formToJSON=e=>g6n(vn.isHTMLForm(e)?new FormData(e):e);gh.getAdapter=b6n.getAdapter;gh.HttpStatusCode=NFe;gh.default=gh;const{Axios:PNs,AxiosError:FNs,CanceledError:NNs,isCancel:UNs,CancelToken:jNs,VERSION:WNs,all:VNs,Cancel:zNs,isAxiosError:HNs,spread:$Ns,toFormData:XNs,AxiosHeaders:GNs,HttpStatusCode:YNs,formToJSON:ZNs,getAdapter:qNs,mergeConfig:KNs}=gh,mn=gh.create();mn.interceptors.request.use(function(e){const{baseUrl:t,otherSetting:n}=xs(ku());e.baseURL=t.value,e.timeout=n.value.axiosTimeOut;const r=localStorage.getItem("token");return r&&(e.headers.Authorization=r),e});mn.interceptors.response.use(function(e){return e.data},function(e){var t;return e.status===401&&(localStorage.removeItem("token"),tie.push("/login"),i1.error(window.$t("common.sessionExpired"))),Promise.reject(((t=e==null?void 0:e.response)==null?void 0:t.data)??e)});const Oqr={class:"languageConfig"},yqr={class:"sectionDesc"},Cqr={class:"langGrid"},_qr=["onClick"],Sqr={class:"langInfo"},Lqr={class:"langName"},xqr={class:"langNative"},Eqr=Je({__name:"languageConfig",setup(e){const t=fe(yW.value??"zh-CN"),{locale:n}=aI();function r(o){var s;n.value=o,t.value=o,yW.value=o,(s=window.$message)==null||s.success($t("settings.language.msg.saved"))}return(o,s)=>{const a=dL;return xe(),Ge("div",Oqr,[ge("p",yqr,Pe(o.$t("settings.language.desc")),1),ge("div",Cqr,[(xe(!0),Ge(sn,null,Bi(Ae(GZe),l=>(xe(),Ge("div",{key:l.value,class:Eo(["langCard",{active:Ae(t)===l.value}]),onClick:d=>r(l.value)},[ge("div",Sqr,[ge("div",Lqr,Pe(l.label),1),ge("div",xqr,Pe(l.tips),1)]),Ae(t)===l.value?(xe(),Ut(a,{key:0,name:"check-circle-filled",class:"checkIcon"})):nn("",!0)],10,_qr))),128))])])}}}),Tqr=oo(Eqr,[["__scopeId","data-v-6430745e"]]),Qqr={class:"requestConfig"},Dqr=Je({__name:"requestConfig",setup(e){const{baseUrl:t,isElectron:n}=xs(ku()),r=fe({baseUrl:""}),o={baseUrl:[{required:!0,message:$t("settings.request.msg.enterApi"),trigger:"blur"},{pattern:/^https?:\/\/.+/,message:$t("settings.request.msg.validUrl"),trigger:"blur"}]};function s(){r.value.baseUrl=t.value}function a(){t.value=r.value.baseUrl,window.$message.success($t("settings.request.msg.saved"))}function l(){r.value.baseUrl="http://localhost:10588",t.value=r.value.baseUrl,window.$message.success($t("settings.request.msg.reset"))}async function d(){try{const h=await(await fetch("toonflow://getPort")).json();h!=null&&h.port&&(t.value=`http://localhost:${h.port}/api`,n.value=!0,window.$message.success($t("settings.request.msg.refreshSuccess"))),window.$message.error($t("settings.request.msg.refreshFailed"))}catch{window.$message.error($t("settings.request.msg.refreshFailed"))}}return An(()=>{s()}),(u,h)=>{const g=Ez,m=dL,v=Wu,f=p2,k=Si,A=Ev,p=A2;return xe(),Ge("div",Qqr,[c(g,{style:{"margin-bottom":"16px"},theme:"warning",message:u.$t("settings.request.warning")},null,8,["message"]),c(p,{data:r.value,labelAlign:"top",rules:o},{default:Oe(()=>[c(f,{label:u.$t("settings.request.apiAddress"),name:"baseUrl"},{default:Oe(()=>[c(v,{modelValue:r.value.baseUrl,"onUpdate:modelValue":h[0]||(h[0]=b=>r.value.baseUrl=b),placeholder:u.$t("settings.request.apiPlaceholder"),clearable:""},{"prefix-icon":Oe(()=>[c(m,{name:"link"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),c(f,null,{default:Oe(()=>[c(A,{size:"small"},{default:Oe(()=>[c(k,{theme:"primary",type:"submit",onClick:a},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.save")),1)]),_:1}),c(k,{theme:"default",onClick:l},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.reset")),1)]),_:1}),Ae(n)?(xe(),Ut(k,{key:0,theme:"warning",onClick:d},{default:Oe(()=>[Bt(Pe(u.$t("settings.request.refresh")),1)]),_:1})):nn("",!0)]),_:1})]),_:1})]),_:1},8,["data"])])}}}),Bqr=Je({__name:"loginConfig",setup(e){const t=fe(null),n=fe(!1),r=fe({id:null,name:"",password:""}),o={name:[{required:!0,message:$t("settings.login.msg.enterUsername"),trigger:"blur"},{min:2,max:20,message:$t("settings.login.msg.usernameLength"),trigger:"blur"}],password:[{required:!0,message:$t("settings.login.msg.enterPassword"),trigger:"blur"},{min:6,max:20,message:$t("settings.login.msg.passwordLength"),trigger:"blur"}]};async function s(){try{const u=await mn.get("/setting/loginConfig/getUser");r.value={id:u.data.id??null,name:u.data.name??"",password:u.data.password??""}}catch{window.$message.error($t("settings.login.msg.fetchFailed"))}}async function a(){n.value=!0;try{await mn.post("/setting/loginConfig/updateUserPwd",r.value),window.$message.success($t("settings.login.msg.saveSuccess")),await s()}catch{window.$message.error($t("settings.login.msg.saveFailed"))}finally{n.value=!1}}function l(u){u.validateResult===!0&&a()}function d(){var u;(u=t.value)==null||u.reset()}return An(()=>{s()}),(u,h)=>{const g=Wu,m=p2,v=Si,f=Ev,k=A2,A=Wc;return xe(),Ut(A,{loading:Ae(n)},{default:Oe(()=>[c(k,{ref_key:"formRef",ref:t,labelAlign:"top",data:Ae(r),rules:o,colon:!0,onSubmit:l,onReset:d},{default:Oe(()=>[c(m,{label:u.$t("settings.login.username"),name:"name"},{default:Oe(()=>[c(g,{modelValue:Ae(r).name,"onUpdate:modelValue":h[0]||(h[0]=p=>Ae(r).name=p),placeholder:u.$t("settings.login.usernamePlaceholder"),clearable:"",width:"100%"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(m,{label:u.$t("settings.login.password"),name:"password"},{default:Oe(()=>[c(g,{modelValue:Ae(r).password,"onUpdate:modelValue":h[1]||(h[1]=p=>Ae(r).password=p),type:"password",placeholder:u.$t("settings.login.passwordPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(m,{"status-icon":!1},{default:Oe(()=>[c(f,{size:"small"},{default:Oe(()=>[c(v,{theme:"primary",type:"submit",loading:Ae(n)},{default:Oe(()=>[Bt(Pe(u.$t("settings.login.modify")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])}}}),Rqr="data:image/png;base64,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",Iqr="data:image/png;base64,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",Mqr="data:image/png;base64,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",Pqr="data:image/png;base64,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",Kpt="data:image/png;base64,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",Fqr="data:image/png;base64,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",Nqr="data:image/png;base64,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",Uqr="data:image/png;base64,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",jqr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABdFBMVEUC26MAAAAAAQEACwgAFhAAIhkAOisBW0QBfl0Bp3wCzJgC16AADwsAEw4AQDABelsCu4sCtIYBc1YAJRwAAgEADgoBQzIBkWwCzpoCyZYBhGMAKR8AAQAABAMALSIBhmQC0JsCzpkBeFoADgsAAwIAKh8BongC2qMCvo0BSDUABgQBUT0CxZMC1qABfV0AEAwAIBgC2aECp30ADAkBeFkCvIwBZUsC1Z4CwpEBNScAAgIBV0EC050BXkYBbFEBjGgC2qIAFA8CtYcAMCQC1Z8BfFwAEg4BUz4Cs4UC2aICv44BhWMBPS0AOSoC1J4BgWAACQYCvY0CsoQACQcBjWkAHRUBV0ABSzgAKB0C1p8Bb1MACAYC0ZwBkWsCuIkCsIMBmXICwI8BiWYCypcBfl4Cr4MACggBdVcCxpQCxpMAIxoBRDMBbVEAGhMBpnsBj2oC2KEBg2IBgF8ANykABwUBe1wBRjQAFRACxJIBo3kBimf////Yuo2SAAAAAWJLR0R7T9K1/AAAAm5JREFUeNrt2tdTU1EQBvDdBAQ1FgIBExI1lBBKEGlibNgVFRtKRwEbBAIWbH+9Lz452XsznJPNN+N+z3cmvzn3tLsbIovFYrFYLBaLxVKvcFWJRBsajzQ1Hz12XBEREzAnTp46XQNH5R9ribe2CY5Ee8cZHQRRMtWZFhiZs+fO6yCIsl3d0hTp6c0pIagv398jMQYGh3QQRIXhC+KCGcld1EEQjTaKirFxb+skBEETvaIiM3lJCUFTl0VF8cpVJQRNyWNRvObnjYQjaEKeF8XrXhRVIGhUXiMDN6aVEDQs7hd885YWotAvIvj2HSUE5btlxV0tRF9XWkTcyyshKNspD8V957lZJYJSbSIi9kALkWyVh6LpoRKC4jKiYUYL0RKTFY+0ENOPZcSTWSUEPY2IiGfPtRAvXspDMaeFKLySEa/dtorqETQvIxYWtRBLMmJ5RQuxKiN4TQvxJgDxVguxHoDY0EJsBiDeaSEWAxDx/woB8TpmECbm+wCE2hKF2Kwgtm2EAwziKIe41CBc7yAuuhBXfoSPH4jPQIQPYoTSAESRBKFcBFE4QyghIhRTEcrKCAV2hFYDQtMFoP0E0IhDaEkCNGcD2tTMHz5+UkAENOz/zoj4Vs0RMQ5LZHvO338YQn9NTKaUrC3i36d2Kj61W/ZxejkiOLG3X38ERz97UbghOLqn1pyVEZwoAyB418MacUZwyX2/cEdkHIsTXhC87byDe0BE3Mq5fhA84nqm+kDwFwTEV8dbtxfEN8dvQS8IPkBAfHe7eftB/HCrIfpB8E8ExC8ExG8EhEYPLBThfHxYLBaLxWKxWCyWQ+QPoptb+kQLop8AAAAASUVORK5CYII=",Wqr="data:image/png;base64,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",Vqr="data:image/png;base64,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",Wue={deepSeek:Rqr,volcengine:Iqr,kling:Mqr,zhipu:Pqr,qwen:Kpt,wan:Kpt,openai:Fqr,vidu:Nqr,anthropic:Uqr,runninghub:jqr,gemini:Wqr,grsai:Vqr},zqr={class:"optionItem"},Hqr={class:"optionMain"},$qr={class:"optionLabel"},Xqr={class:"optionType"},Gqr={class:"emptyActionWrap"},Yqr=Je({__name:"modelSelect",props:Fc({type:{type:String,default:"all"},size:{type:String,default:"medium"},placeholder:{type:String},changeConfig:{type:Boolean,default:!1}},{modelValue:{type:String,default:""},modelModifiers:{}}),emits:Fc(["change"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t;async function s(f){if(n.value=f,r.changeConfig){const{data:k}=await mn.post("/modelSelect/getModelDetail",{modelId:f});o("change",f,k)}else o("change",f)}const a=fe([]);An(()=>{u()});function l(f){f&&u()}const d={image:$t("components.modelSelect.type.image"),text:$t("components.modelSelect.type.text"),video:$t("components.modelSelect.type.video")};function u(){mn.post("/modelSelect/getModelList",{type:r.type}).then(f=>{const k=new Map;f.data.forEach(A=>{const p=A.id;k.has(p)||k.set(p,{group:A.name,id:A.id,children:[]}),k.get(p).children.push({id:A.id,label:A.label,value:A.value,vendorId:A.vendorId,type:d[A.type]})}),a.value=Array.from(k.values()),a.value.map(A=>A.children).flat().every(A=>`${A.id}:${A.value}`!==n.value)&&(n.value="")}).catch(f=>{console.error($t("components.modelSelect.msg.fetchModelFailed"),f)})}const h=[{pattern:/gpt|o1|o3|o4|openai/i,provider:"openai"},{pattern:/claude|anthropic/i,provider:"anthropic"},{pattern:/deepseek/i,provider:"deepSeek"},{pattern:/gemini|veo/i,provider:"gemini"},{pattern:/qwen|qwq|tongyi|通义|wanx|万相|wan/i,provider:"qwen"},{pattern:/glm|zhipu|智谱/i,provider:"zhipu"},{pattern:/doubao|seedream|seedance|volc/i,provider:"volcengine"},{pattern:/kling|可灵/i,provider:"kling"},{pattern:/vidu/i,provider:"vidu"},{pattern:/runninghub/i,provider:"runninghub"},{pattern:/grok|xai|grsai/i,provider:"grsai"}];function g(f,k){const A=`${f||""} ${k||""}`.trim();if(!A)return null;const p=h.find(b=>b.pattern.test(A));return p?Wue[p.provider]:null}function m(f){var k;return((k=f==null?void 0:f.slice(0,1))==null?void 0:k.toUpperCase())||"M"}function v(){const f=ku();f.activeMenu="vendorConfig",f.showSetting=!0}return(f,k)=>{const A=yZe,p=uL,b=Rvi,w=Si,O=pA;return xe(),Ut(O,{size:r.size,modelValue:n.value,"onUpdate:modelValue":k[0]||(k[0]=y=>n.value=y),placeholder:r.placeholder??f.$t("components.modelSelect.placeholder"),onChange:s,onPopupVisibleChange:l},{empty:Oe(()=>[ge("div",Gqr,[c(w,{class:"emptyActionButton",size:"small",variant:"text",theme:"primary",onClick:Mr(v,["stop"])},{default:Oe(()=>[Bt(Pe(f.$t("components.modelSelect.goSetting")),1)]),_:1})])]),default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(a),(y,C)=>(xe(),Ut(b,{key:C,label:y.group},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(y.children,_=>(xe(),Ut(p,{key:_.id,value:`${_.id}:${_.value}`,label:_.label},{default:Oe(()=>[ge("div",zqr,[ge("div",Hqr,[g(_.label,_.value)?(xe(),Ut(A,{key:0,size:"24px",shape:"round",image:g(_.label,_.value)},null,8,["image"])):(xe(),Ut(A,{key:1,size:"24px",shape:"round",class:"fallbackAvatar"},{default:Oe(()=>[Bt(Pe(m(_.label)),1)]),_:2},1024)),ge("div",$qr,Pe(_.label),1)]),ge("span",Xqr,Pe(_.type),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["size","modelValue","placeholder"])}}}),T8=oo(Yqr,[["__scopeId","data-v-a402fa9b"]]),Zqr={class:"aiConfog"},qqr={class:"banner"},Kqr={class:"content f ac jb"},Jqr={class:"textContent ac"},eKr={class:"btnList f w"},tKr={class:"rightBtnList f nw"},nKr={class:"cardGrid"},iKr={class:"skillCardHeader"},rKr={class:"headerLeft"},oKr={class:"skillName"},sKr={class:"skillCardBody"},aKr={class:"dialogContent"},lKr=Je({__name:"agentConfog",setup(e){const{isElectron:t}=xs(ku()),n=fe([]),r=fe(!1),o=fe(null),s=fe(""),a=[{pattern:/gpt|o1|o3|o4|openai/i,provider:"openai"},{pattern:/claude|anthropic/i,provider:"anthropic"},{pattern:/deepseek/i,provider:"deepSeek"},{pattern:/gemini|veo/i,provider:"gemini"},{pattern:/qwen|qwq|tongyi|通义|wanx|万相|wan/i,provider:"qwen"},{pattern:/glm|zhipu|智谱/i,provider:"zhipu"},{pattern:/doubao|seedream|seedance|volc/i,provider:"volcengine"},{pattern:/kling|可灵/i,provider:"kling"},{pattern:/vidu/i,provider:"vidu"},{pattern:/runninghub/i,provider:"runninghub"},{pattern:/grok|xai|grsai/i,provider:"grsai"}];function l(y){if(!y)return null;const C=Object.keys(Wue).find(_=>_.toLowerCase()===y.toLowerCase());return C?Wue[C]:null}function d(y,C){const _=`${y||""} ${C||""}`.trim();if(!_)return null;const S=a.find(L=>L.pattern.test(_));return S?Wue[S.provider]:null}function u(y){return l(y.icon)||d(y.modelName,y.model)}function h(y){return(y==null?void 0:y.slice(0,1))||"A"}function g(y){if(y.disabled)return window.$message.warning($t("settings.agent.msg.notAvailable"));o.value=y,s.value=y.modelName,r.value=!0}const m=fe(null);function v(){var C,_,S,L,E;o.value&&(o.value.modelName=s.value,o.value.vendorId=m.value);const y={id:(C=o.value)==null?void 0:C.id,name:(_=o.value)==null?void 0:_.name,model:s.value.split(":")[1]||((S=o.value)==null?void 0:S.model),modelName:(L=o.value)==null?void 0:L.modelName,vendorId:s.value.split(":")[0],desc:(E=o.value)==null?void 0:E.desc};mn.post("/setting/agentDeploy/deployAgentModel",y).then(()=>{window.$message.success($t("settings.agent.msg.configSuccess")),A()}).catch(T=>{window.$message.error(`${$t("settings.agent.msg.updateConfigFailed")}${T.message}`)}).finally(()=>{r.value=!1})}async function f(){t.value?await fetch("toonflow://openurlwithbrowser?url=https://api.toonflow.net"):window.open("https://api.toonflow.net","_blank")}const k=fe(!1);function A(){mn.post("/setting/agentDeploy/getAgentDeploy").then(y=>{n.value=y.data.map(C=>({id:C.id,model:C.model,modelName:C.modelName,vendorId:C.vendorId,name:C.name,icon:C.icon,desc:C.desc,disabled:C.disabled}))}).catch(y=>{window.$message.error(`${$t("settings.agent.msg.getAgentListFailed")}${y.message}`)}).finally(()=>{})}An(()=>{A()});async function p(){k.value=!0,await O();const y=w.value.find(C=>C.id==="toonflow");if(!y){window.$message.error($t("settings.agent.msg.toonflowNotFound")),k.value=!1;return}if(!y.inputValues.apiKey){k.value=!1;const C=fe(""),_=co({theme:"warning",header:$t("settings.agent.fillKeyHeader"),body:()=>xn("div",{style:"padding: 8px 0"},[xn(Wu,{modelValue:C.value,"onUpdate:modelValue":S=>C.value=S,placeholder:$t("settings.agent.keyPlaceholder"),type:"password"})]),confirmBtn:$t("settings.agent.confirm"),cancelBtn:$t("settings.agent.cancel"),onConfirm:()=>{if(!C.value){window.$message.warning($t("settings.agent.msg.enterKey"));return}_.hide(),b(C.value)},onClose:()=>{_.hide()}});return}b(y.inputValues.apiKey)}function b(y){k.value=!0,mn.post("/setting/agentDeploy/agentSetKey",{key:y}).then(()=>{window.$message.success($t("settings.agent.msg.configSuccess")),A()}).catch(C=>{window.$message.error(`${$t("settings.agent.msg.updateConfigFailed")}${C.message}`)}).finally(()=>{r.value=!1,k.value=!1})}const w=fe([]);async function O(){try{const y=await mn.post("/setting/vendorConfig/getVendorList");w.value=y.data.map(C=>({...C,enable:C.enable==1}))}catch(y){window.$message.error(`${$t("settings.vendor.msg.getVendorListFailed")}${y.message}`)}}return(y,C)=>{var R;const _=_n("i-good-two"),S=_n("i-share"),L=Si,E=yZe,T=Sg,D=km,P=p2,Q=A2,M=gc,B=f4e("loading");return uu((xe(),Ge("div",Zqr,[ge("div",qqr,[ge("div",Kqr,[ge("div",Jqr,[c(_,{class:"icon",theme:"filled",size:"24",fill:"currentColor"}),ge("span",null,Pe(y.$t("settings.agent.bannerDesc")),1)]),ge("div",eKr,[c(L,{onClick:f},{suffix:Oe(()=>[c(S,{theme:"outline"})]),default:Oe(()=>[Bt(Pe(y.$t("settings.agent.visitWebsite"))+" ",1)]),_:1}),ge("div",tKr,[c(L,{onClick:p},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.oneClickFill")),1)]),_:1})])])])]),ge("div",nKr,[(xe(!0),Ge(sn,null,Bi(Ae(n),(I,F)=>(xe(),Ut(D,{hoverShadow:"",key:F,class:"skillCard",onClick:j=>g(I)},{default:Oe(()=>[ge("div",iKr,[ge("div",rKr,[u(I)?(xe(),Ut(E,{key:0,image:u(I),shape:"round"},null,8,["image"])):(xe(),Ut(E,{key:1,shape:"round",class:"fallbackAvatar"},{default:Oe(()=>[Bt(Pe(h(I.name)),1)]),_:2},1024)),ge("span",oKr,Pe(I.name),1)]),I.model&&!I.disabled?(xe(),Ut(T,{key:0,theme:"primary",variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(I.model),1)]),_:2},1024)):I.disabled?(xe(),Ut(T,{key:1,variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.notOpen")),1)]),_:1})):!I.disabled&&!I.model?(xe(),Ut(T,{key:2,theme:"warning",variant:"light",size:"small"},{default:Oe(()=>[Bt(Pe(y.$t("settings.agent.notConfigured")),1)]),_:1})):nn("",!0)]),ge("div",sKr,Pe(I.desc),1)]),_:2},1032,["onClick"]))),128))]),c(M,{visible:Ae(r),"onUpdate:visible":C[1]||(C[1]=I=>Fn(r)?r.value=I:null),header:((R=Ae(o))==null?void 0:R.name)+" "+y.$t("settings.agent.modelConfig"),width:"480px","on-confirm":v,"confirm-btn":y.$t("settings.agent.confirm"),"cancel-btn":y.$t("settings.agent.cancel")},{default:Oe(()=>[ge("div",aKr,[c(Q,{"label-align":"left","label-width":70},{default:Oe(()=>[c(P,{label:y.$t("settings.agent.selectModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(s),"onUpdate:modelValue":C[0]||(C[0]=I=>Fn(s)?s.value=I:null),type:"text"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])])),[[B,Ae(k)]])}}}),cKr=oo(lKr,[["__scopeId","data-v-cbb834b1"]]),dKr={class:"dbConfig"},uKr={class:"actionInfo"},hKr={class:"confirmContent"},fKr={class:"confirmContent"},gKr=Je({__name:"dbConfig",setup(e){const t=fe(!1),n=fe(!1),r=fe(""),o=fe(null),s={deleteAll:{title:()=>$t("settings.db.msg.clearDbTitle"),firstMessage:()=>$t("settings.db.msg.firstConfirm"),secondMessage:()=>$t("settings.db.msg.secondConfirm"),keyword:()=>$t("settings.db.msg.keyword")}},a=X(()=>{const v=s[o.value||"deleteAll"];return{title:v.title(),firstMessage:v.firstMessage(),secondMessage:v.secondMessage(),keyword:v.keyword()}}),l=X(()=>r.value===a.value.keyword),d=X(()=>l.value?$t("settings.db.msg.confirm"):`${$t("settings.db.msg.pleaseInput")}"${a.value.keyword}"`);function u(){o.value="deleteAll",r.value="",t.value=!0}function h(){t.value=!1,n.value=!0}async function g(){if(l.value){n.value=!1,Wh(!0);try{await mn.get("/setting/dbConfig/clearData"),window.$message.success($t("settings.db.msg.cleared")),tie.push("/login")}catch{window.$message.error($t("settings.db.msg.operationFailed"))}finally{Wh(!1),o.value=null,r.value=""}}}function m(){t.value=!1,n.value=!1,o.value=null,r.value="",window.$message.info($t("settings.db.msg.cancelled"))}return(v,f)=>{const k=_n("i-clear"),A=Si,p=km,b=_n("i-attention"),w=gc,O=Wu;return xe(),Ge("div",dKr,[c(p,{class:"actionItem"},{default:Oe(()=>[ge("div",uKr,[ge("h4",null,Pe(v.$t("settings.db.clearDb")),1),ge("p",null,Pe(v.$t("settings.db.clearDbDesc")),1)]),c(A,{theme:"danger",variant:"outline",onClick:u},{icon:Oe(()=>[c(k,{theme:"outline",size:"14",fill:"currentColor"})]),default:Oe(()=>[Bt(" "+Pe(v.$t("settings.db.clearData")),1)]),_:1})]),_:1}),c(w,{visible:t.value,"onUpdate:visible":f[0]||(f[0]=y=>t.value=y),header:a.value.title,"confirm-btn":{content:v.$t("settings.db.msg.confirm"),theme:"danger"},onConfirm:h,onCancel:m},{default:Oe(()=>[ge("div",hKr,[c(b,{theme:"filled",size:"48",fill:"#e34d59"}),ge("p",null,Pe(a.value.firstMessage),1)])]),_:1},8,["visible","header","confirm-btn"]),c(w,{visible:n.value,"onUpdate:visible":f[2]||(f[2]=y=>n.value=y),header:a.value.title,"confirm-btn":{content:d.value,theme:"danger",disabled:!l.value},onConfirm:g,onCancel:m},{default:Oe(()=>[ge("div",fKr,[c(b,{theme:"filled",size:"48",fill:"#e34d59"}),ge("p",null,Pe(a.value.secondMessage),1),c(O,{modelValue:r.value,"onUpdate:modelValue":f[1]||(f[1]=y=>r.value=y),placeholder:`${v.$t("settings.db.msg.pleaseInput")} ${a.value.keyword} ${v.$t("settings.db.confirmAction")}`,class:"confirmInput"},null,8,["modelValue","placeholder"])])]),_:1},8,["visible","header","confirm-btn"])])}}}),mKr=oo(gKr,[["__scopeId","data-v-0f49f50e"]]),kKr={class:"otherConfig"},vKr=Je({__name:"otherConfig",setup(e){const{otherSetting:t,canvasWheelEvent:n}=xs(ku()),r=X({get:()=>{const s=t.value.axiosTimeOut;return s==null||isNaN(s)?600:Math.floor(s/1e3)},set:s=>{s==null||isNaN(s)||(t.value.axiosTimeOut=s*1e3)}});function o(){t.value.chapterReg="/第\\s*([0-90-9零一二三四五六七八九十百千万]+)\\s*[章回节]\\s*([^\\n\\r]*)/g"}return(s,a)=>{const l=Si,d=c2,u=p2,h=Lz,g=x3n,m=OZe,v=A2;return xe(),Ge("div",kKr,[c(v,{"label-align":"top"},{default:Oe(()=>[c(u,{name:"chapterReg"},{label:Oe(()=>[ge("span",null,Pe(s.$t("settings.other.chapterRegex")),1),c(l,{style:{"margin-left":"15px"},onClick:o,size:"small"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.restoreDefault")),1)]),_:1})]),default:Oe(()=>[c(d,{modelValue:Ae(t).chapterReg,"onUpdate:modelValue":a[0]||(a[0]=f=>Ae(t).chapterReg=f),placeholder:s.$t("settings.other.regexPlaceholder"),style:{width:"400px"}},null,8,["modelValue","placeholder"])]),_:1}),c(u,{label:s.$t("settings.other.requestTimeout"),name:"axiosTimeOut"},{default:Oe(()=>[c(h,{"auto-width":"",suffix:s.$t("settings.other.seconds"),min:10,modelValue:r.value,"onUpdate:modelValue":a[1]||(a[1]=f=>r.value=f),allowInputOverLimit:!1,placeholder:s.$t("settings.other.inputSeconds")},null,8,["suffix","modelValue","placeholder"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.agentCanvasScalingMethod")},{default:Oe(()=>[c(m,{variant:"default-filled",modelValue:Ae(n),"onUpdate:modelValue":a[2]||(a[2]=f=>Fn(n)?n.value=f:null)},{default:Oe(()=>[c(g,{value:"zoom"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.zoom")),1)]),_:1}),c(g,{value:"scroll"},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.scroll")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.isInteracting")},{default:Oe(()=>[c(m,{variant:"default-filled",modelValue:Ae(t).interacting,"onUpdate:modelValue":a[3]||(a[3]=f=>Ae(t).interacting=f)},{default:Oe(()=>[c(g,{value:!1},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.closeIsInteracting")),1)]),_:1}),c(g,{value:!0},{default:Oe(()=>[Bt(Pe(s.$t("settings.other.openIsInteracting")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(u,{label:s.$t("settings.other.assetConcurrency"),name:"assetsBatchGenereateSize"},{default:Oe(()=>[c(h,{"auto-width":"",suffix:s.$t("settings.other.count"),min:1,modelValue:Ae(t).assetsBatchGenereateSize,"onUpdate:modelValue":a[4]||(a[4]=f=>Ae(t).assetsBatchGenereateSize=f),allowInputOverLimit:!1,placeholder:s.$t("settings.other.inputCount")},null,8,["suffix","modelValue","placeholder"])]),_:1},8,["label"])]),_:1})])}}}),AKr=oo(vKr,[["__scopeId","data-v-a6ec5f61"]]),pKr="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='96'%20height='96'%3e%3cpath%20d='M0%200%20C2.60491411%203.39771405%202.43893626%206.83010556%202%2011%20C0.20437595%2013.75329021%20-1.05254922%2015.52627461%20-4%2017%20C-9.16062661%2017.49941548%20-9.16062661%2017.49941548%20-12%2017%20C-14.90799783%2014.4555019%20-15.90702057%2013.04601863%20-16.25%209.1875%20C-16.1675%208.465625%20-16.085%207.74375%20-16%207%20C-17.0725%207.639375%20-18.145%208.27875%20-19.25%208.9375%20C-27.64061736%2013.11803647%20-42.1161507%2013.9612831%20-51%2011%20C-51.09796875%2011.67804687%20-51.1959375%2012.35609375%20-51.296875%2013.0546875%20C-52.09650113%2018.03167082%20-53.07549372%2022.54151804%20-55.0625%2027.1875%20C-58.18113878%2034.59280707%20-58.84191514%2041.34103871%20-56%2049%20C-51.69477815%2055.71108112%20-45.90514151%2058.44542058%20-38.375%2060.3125%20C-28.59646317%2061.98237321%20-17.61397475%2061.2378015%20-9%2056%20C-6.49898905%2053.93089054%20-4.42615578%2051.9334749%20-3%2049%20C-2.8015185%2045.84858524%20-2.8015185%2045.84858524%20-3%2043%20C-3.63502441%2042.9498877%20-4.27004883%2042.89977539%20-4.92431641%2042.84814453%20C-7.82522523%2042.61482321%20-10.72505632%2042.37001416%20-13.625%2042.125%20C-14.62402344%2042.04636719%20-15.62304688%2041.96773437%20-16.65234375%2041.88671875%20C-29.19293478%2040.80706522%20-29.19293478%2040.80706522%20-33%2037%20C-32.79953373%2033.85936171%20-32.54877905%2031.72339057%20-30.625%2029.1875%20C-24.50435236%2024.71471903%20-13.19717736%2026.55890184%20-6%2027%20C-2.41396623%2027.60321914%200.69870236%2028.49303823%204%2030%20C4.94875%2030.4125%205.8975%2030.825%206.875%2031.25%20C11.08743551%2034.71906454%2012.65632177%2038.68972676%2014%2043.8125%20C14.64326159%2052.37282738%209.41850308%2059.51339193%204.13671875%2065.7421875%20C-2.45750281%2072.7101218%20-11.41635656%2078.38746195%20-21.19140625%2079.17700195%20C-37.70773611%2079.60385521%20-50.14814106%2078.46993862%20-63%2067%20C-73.50321308%2056.03782298%20-76.52428161%2045.45597262%20-76.2734375%2030.625%20C-75.77333104%2018.46399527%20-69.95822491%208.40894719%20-61.1875%200.1875%20C-43.74979764%20-14.14115465%20-17.3489938%20-15.03579462%200%200%20Z%20'%20fill='%23DA203E'%20transform='translate(80,13)'/%3e%3c/svg%3e";var C6n={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Ho,function(){var n=1e3,r=6e4,o=36e5,s="millisecond",a="second",l="minute",d="hour",u="day",h="week",g="month",m="quarter",v="year",f="date",k="Invalid Date",A=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(Q){var M=["th","st","nd","rd"],B=Q%100;return"["+Q+(M[(B-20)%10]||M[B]||M[0])+"]"}},w=function(Q,M,B){var R=String(Q);return!R||R.length>=M?Q:""+Array(M+1-R.length).join(B)+Q},O={s:w,z:function(Q){var M=-Q.utcOffset(),B=Math.abs(M),R=Math.floor(B/60),I=B%60;return(M<=0?"+":"-")+w(R,2,"0")+":"+w(I,2,"0")},m:function Q(M,B){if(M.date()1)return Q(j[0])}else{var W=M.name;C[W]=M,I=W}return!R&&I&&(y=I),I||!R&&y},E=function(Q,M){if(S(Q))return Q.clone();var B=typeof M=="object"?M:{};return B.date=Q,B.args=arguments,new D(B)},T=O;T.l=L,T.i=S,T.w=function(Q,M){return E(Q,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var D=function(){function Q(B){this.$L=L(B.locale,null,!0),this.parse(B),this.$x=this.$x||B.x||{},this[_]=!0}var M=Q.prototype;return M.parse=function(B){this.$d=function(R){var I=R.date,F=R.utc;if(I===null)return new Date(NaN);if(T.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var j=I.match(A);if(j){var W=j[2]-1||0,H=(j[7]||"0").substring(0,3);return F?new Date(Date.UTC(j[1],W,j[3]||1,j[4]||0,j[5]||0,j[6]||0,H)):new Date(j[1],W,j[3]||1,j[4]||0,j[5]||0,j[6]||0,H)}}return new Date(I)}(B),this.init()},M.init=function(){var B=this.$d;this.$y=B.getFullYear(),this.$M=B.getMonth(),this.$D=B.getDate(),this.$W=B.getDay(),this.$H=B.getHours(),this.$m=B.getMinutes(),this.$s=B.getSeconds(),this.$ms=B.getMilliseconds()},M.$utils=function(){return T},M.isValid=function(){return this.$d.toString()!==k},M.isSame=function(B,R){var I=E(B);return this.startOf(R)<=I&&I<=this.endOf(R)},M.isAfter=function(B,R){return E(B){const e=fe("v1.0.7"),t=fe(""),n=fe(null),r=X(()=>n.value?Number(n.value.id):-1),o=fe(null);async function s(a){var u;const l=await mn.post("/project/getSingleProject",{id:a});n.value=l.data[0];const d=await mn.post("/script/getScrptApi",{projectId:a});o.value=((u=d.data)==null?void 0:u.id)||null}return{version:e,activeMenu:t,project:n,projectId:r,currentScriptId:o,setProjectById:s}},{persist:!1}),yKr={class:"about"},CKr={class:"f"},_Kr={class:"appName"},SKr={class:"data"},LKr={class:"version"},xKr={class:"renew ac"},EKr={style:{"margin-left":"5px"}},TKr={class:"codeRepository"},QKr={class:"f"},DKr={class:"github"},BKr={style:{"margin-left":"15px"}},RKr={style:{"font-size":"15px","font-weight":"900"}},IKr={class:"f"},MKr={class:"gitee"},PKr={style:{"margin-left":"15px"}},FKr={style:{"font-size":"15px","font-weight":"900"}},NKr={class:"license"},UKr={class:"ac jb",style:{cursor:"pointer"}},jKr={class:"f"},WKr={class:"data"},VKr={style:{"margin-left":"15px"}},zKr={style:{"font-size":"12px",color:"#666"}},HKr={class:"updateDialog"},$Kr={class:"updateHeader"},XKr={class:"updateIcon"},GKr={class:"updateTitle"},YKr={key:0,class:"versionCompare"},ZKr={class:"versionCard current"},qKr={class:"versionLabel"},KKr={class:"arrow"},JKr={class:"versionCard latest"},eJr={class:"versionLabel"},tJr={key:1,class:"versionTime"},nJr={class:"versionTimeValue"},iJr={key:2,class:"customUrl"},rJr={class:"sourceSelect"},oJr={class:"sourceTitle"},sJr={class:"sourceCards"},aJr=["onClick"],lJr=["src","alt"],cJr={class:"sourceName"},dJr={key:0,class:"checkMark"},uJr={style:{display:"flex","justify-content":"flex-end",gap:"8px","padding-top":"4px"}},hJr=Je({__name:"about",setup(e){const{t}=aI(),{version:n}=xs(OKr()),{isElectron:r,needUpdate:o}=xs(ku()),s=fe(!1),a=fe(""),l=fe(0);let d=null;function u(){if(l.value++,l.value===1&&(d=setTimeout(()=>{l.value=0},3e3)),l.value>=3){if(l.value=0,d&&clearTimeout(d),s.value)return;s.value=!0,i1.info("已开启自定义更新地址")}}const h=fe(!1),g=fe("toonflow"),m=fe([{value:"toonflow",label:"ToonFlow",iconType:"image",iconSrc:wKr,iconClass:"toonflow",iconBg:"#ececec",disabled:!1},{value:"github",label:t("settings.about.github"),iconType:"component",iconName:"github",iconClass:"github",disabled:!0},{value:"atomgit",label:"AtomGit",iconType:"image",iconSrc:pKr,iconClass:"atomgit",iconBg:"#f9f9fb",disabled:!0},{value:"gitee",label:t("settings.about.gitee"),iconType:"component",iconName:"code",iconClass:"gitee",disabled:!0}]),v=fe(!1),f=fe({needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""}),k=X(()=>f.value.time?JB(f.value.time).format("YYYY-MM-DD HH:mm:ss"):"");pt(g,()=>{f.value={needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""}});async function A(_){r.value?await fetch(`toonflow://openurlwithbrowser?url=${_}`):window.open(_,"_blank")}An(async()=>{const{data:_}=await mn.get("/other/getVersion");n.value=_});function p(){f.value={needUpdate:!1,latestVersion:"",reinstall:!1,time:0,url:"",version:""},g.value="toonflow",h.value=!0}function b(_){return{toonflow:"ToonFlow",github:"GitHub",atomgit:"AtomGit",gitee:"Gitee"}[_]}async function w(){v.value=!0;try{const{data:_}=await mn.post("/setting/about/checkUpdate",{source:g.value,url:a.value||null});a.value&&(_.needUpdate=!0),f.value=_,_.needUpdate?window.$message.success(t("settings.about.updateAvailable")):i1.success(t("settings.about.noUpdate"))}catch(_){i1.error(_.message??t("settings.about.updateFailed"))}finally{v.value=!1}}async function O(_){try{return await(await fetch(`toonflow://${_}`)).json()}catch{}}async function y(){v.value=!0;try{if(f.value.reinstall){const _=co.alert({header:t("settings.about.reinstallRequired"),body:f.value.url,onConfirm:()=>{_.destroy()},onClose:()=>{_.destroy()}});try{await fetch(`toonflow://openurlwithbrowser?url=${f.value.url}`)}catch{}return}await mn.post("/setting/about/downloadApp",{url:f.value.url,reinstall:f.value.reinstall,version:f.value.version}),O("apprestart"),i1.success(t("settings.about.updateSuccess")),h.value=!1}catch(_){i1.error(_.message??t("settings.about.updateFailed"))}finally{v.value=!1}}function C(){const _=f.value.reinstall?` -检测到该版本需要重新安装更新,安装过程中可能会替换现有安装,请先保存当前工作。`:"",S=fo.confirm({header:"确认更新",body:`将通过 ${b(g.value)} 更新到 v${f.value.latestVersion},确认继续吗?${_}`,confirmBtn:{content:t("settings.about.confirmUpdate"),theme:"primary"},cancelBtn:t("settings.about.cancel"),onConfirm:async()=>{S.destroy(),await y()},onClose:()=>S.destroy()})}return(_,S)=>{const L=Sg,E=_n("i-refresh"),T=Si,D=CZe,P=km,Q=_n("i-github"),M=_n("i-right"),B=fW,R=_n("i-code"),I=_n("i-notes"),F=Wu,j=_n("i-check-one"),W=gc;return xe(),Ge("div",yKr,[c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",CKr,[ge("img",{src:lbe,alt:"ToonFlow Logo",class:"logo",onClick:u}),ge("div",_Kr,[S[6]||(S[6]=ge("div",{class:"name"},"ToonFlow",-1)),ge("div",SKr,Pe(_.$t("settings.about.slogan")),1),ge("div",LKr,[c(L,{theme:"primary",shape:"round",size:"small",style:{padding:"10px"}},{default:Oe(()=>[Bt("v"+Pe(Ae(n)),1)]),_:1})])]),ge("div",xKr,[c(D,{count:Ae(o)?1:0,dot:"",offset:[-4,-4]},{default:Oe(()=>[c(T,{theme:"primary",onClick:p},{icon:Oe(()=>[c(E,{theme:"outline",size:"18"})]),default:Oe(()=>[ge("span",EKr,Pe(Ae(o)?_.$t("settings.about.upToDate"):_.$t("settings.about.checkUpdate")),1)]),_:1})]),_:1},8,["count"])])])]),_:1}),ge("div",TKr,[ge("span",null,Pe(_.$t("settings.about.codeRepository")),1),c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",{class:"ac jb",style:{cursor:"pointer"},onClick:S[0]||(S[0]=H=>A("https://github.com/HBAI-Ltd/Toonflow-app"))},[ge("div",QKr,[ge("div",DKr,[c(Q,{theme:"outline",size:"22",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",BKr,[ge("div",null,[ge("span",RKr,Pe(_.$t("settings.about.githubRepo")),1)]),S[7]||(S[7]=ge("div",null,[ge("span",{style:{"font-size":"12px",color:"#666"}},"https://github.com/HBAI-Ltd/Toonflow-app")],-1))])]),c(M,{theme:"outline",size:"18"})]),c(B),ge("div",{class:"ac jb",style:{cursor:"pointer"},onClick:S[1]||(S[1]=H=>A("https://gitee.com/HBAI-Ltd/Toonflow-app"))},[ge("div",IKr,[ge("div",MKr,[c(R,{theme:"outline",size:"20",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",PKr,[ge("div",null,[ge("span",FKr,Pe(_.$t("settings.about.giteeRepo")),1)]),S[8]||(S[8]=ge("div",null,[ge("span",{style:{"font-size":"12px",color:"#666"}},"https://gitee.com/HBAI-Ltd/Toonflow-app")],-1))])]),c(M,{theme:"outline",size:"18"})])]),_:1})]),ge("div",NKr,[ge("span",null,Pe(_.$t("settings.about.license")),1),c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",UKr,[ge("div",jKr,[ge("div",WKr,[c(I,{theme:"outline",size:"20",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",VKr,[S[9]||(S[9]=ge("div",null,[ge("span",{style:{"font-size":"15px","font-weight":"900"}},"Apache-2.0 License")],-1)),ge("div",null,[ge("span",zKr,Pe(_.$t("settings.about.licenseDesc")),1)])])]),c(M,{theme:"outline",size:"18"})])]),_:1})]),c(W,{visible:Ae(h),"onUpdate:visible":S[5]||(S[5]=H=>Fn(h)?h.value=H:null),header:!1,"confirm-btn":null,"cancel-btn":null,"close-on-overlay-click":!1,width:"600px"},{footer:Oe(()=>[ge("div",uJr,[c(T,{variant:"outline",onClick:S[3]||(S[3]=H=>h.value=!1),disabled:Ae(v)},{default:Oe(()=>[Bt(Pe(_.$t("settings.about.cancel")),1)]),_:1},8,["disabled"]),c(T,{theme:"primary",onClick:S[4]||(S[4]=H=>Ae(f).needUpdate?C():w()),loading:Ae(v)},{icon:Oe(()=>[c(E,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(Ae(f).needUpdate?_.$t("settings.about.confirmUpdate"):_.$t("settings.about.checkUpdate")),1)]),_:1},8,["loading"])])]),default:Oe(()=>[ge("div",HKr,[ge("div",$Kr,[ge("div",XKr,[c(E,{theme:"outline",size:"28",style:{color:"var(--td-brand-color)"}})]),ge("div",GKr,Pe(Ae(f).needUpdate?_.$t("settings.about.updateAvailable"):Ae(f).latestVersion?_.$t("settings.about.noUpdate"):_.$t("settings.about.selectUpdateSource")),1)]),Ae(f).latestVersion?(xe(),Ge("div",YKr,[ge("div",ZKr,[ge("span",qKr,Pe(_.$t("settings.about.currentVersion")),1),c(L,{theme:"default",shape:"round",size:"medium"},{default:Oe(()=>[Bt("v"+Pe(Ae(n)),1)]),_:1})]),ge("div",KKr,[c(M,{theme:"outline",size:"20",style:{color:"var(--td-brand-color)"}})]),ge("div",JKr,[ge("span",eJr,Pe(_.$t("settings.about.latestVersionLabel")),1),c(L,{theme:"success",shape:"round",size:"medium"},{default:Oe(()=>[Bt("v"+Pe(Ae(f).latestVersion),1)]),_:1})])])):nn("",!0),Ae(k)?(xe(),Ge("div",tJr,[S[10]||(S[10]=ge("span",{class:"versionTimeLabel"},"更新时间",-1)),ge("span",nJr,Pe(Ae(k)),1)])):nn("",!0),Ae(s)?(xe(),Ge("div",iJr,[c(F,{modelValue:Ae(a),"onUpdate:modelValue":S[2]||(S[2]=H=>Fn(a)?a.value=H:null),placeholder:"输入自定义更新地址",clearable:"",style:{"margin-bottom":"12px"}},null,8,["modelValue"])])):nn("",!0),ge("div",rJr,[ge("span",oJr,Pe(_.$t("settings.about.selectUpdateSource")),1),ge("div",sJr,[(xe(!0),Ge(sn,null,Bi(Ae(m),H=>(xe(),Ge("div",{class:Eo(["sourceCard",{active:Ae(g)===H.value,disabled:H.disabled}]),key:H.value,onClick:$=>!H.disabled&&(g.value=H.value)},[ge("div",{class:Eo(["sourceIcon",H.iconClass]),style:no(H.iconBg?{background:H.iconBg}:void 0)},[H.iconType==="image"?(xe(),Ge("img",{key:0,src:H.iconSrc,alt:H.label,style:{width:"22px",height:"22px"}},null,8,lJr)):H.iconName==="github"?(xe(),Ut(Q,{key:1,theme:"outline",size:"22"})):H.iconName==="code"?(xe(),Ut(R,{key:2,theme:"outline",size:"22"})):nn("",!0)],6),ge("span",cJr,Pe(H.label),1),Ae(g)===H.value?(xe(),Ge("div",dJr,[c(j,{theme:"filled",size:"18",style:{color:"var(--td-brand-color)"}})])):nn("",!0)],10,aJr))),128))])])])]),_:1},8,["visible"])])}}}),fJr=oo(hJr,[["__scopeId","data-v-cc71b619"]]),gJr={class:"logout-config"},mJr=Je({__name:"logoutConfig",setup(e){const t=_pe(),n=fe(!1);function r(){const s=fo.confirm({header:$t("settings.logout.logout"),body:$t("settings.logout.confirmLogout"),confirmBtn:{content:$t("settings.logout.logout"),theme:"danger"},cancelBtn:$t("common.cancel"),onConfirm:async()=>{s.destroy(),await o()},onClose:()=>s.destroy()})}async function o(){n.value=!0;try{localStorage.removeItem("token"),localStorage.removeItem("user"),window.$message.success($t("settings.logout.msg.logoutSuccess")),t.push("/login")}catch{window.$message.error($t("settings.logout.msg.logoutFailed"))}finally{n.value=!1}}return(s,a)=>{const l=Ez,d=dL,u=Si,h=Ev;return xe(),Ge("div",gJr,[c(h,{direction:"vertical",size:"medium"},{default:Oe(()=>[c(l,{theme:"warning",message:s.$t("settings.logout.warning")},null,8,["message"]),c(u,{theme:"danger",loading:n.value,onClick:r},{icon:Oe(()=>[c(d,{name:"logout"})]),default:Oe(()=>[Bt(" "+Pe(s.$t("settings.logout.logout")),1)]),_:1},8,["loading"])]),_:1})])}}}),kJr=oo(mJr,[["__scopeId","data-v-e0f76e54"]]);function _6n(){return globalThis._VSCODE_NLS_MESSAGES}function bJe(){return globalThis._VSCODE_NLS_LANGUAGE}const vJr=bJe()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0;function hme(e,t){let n;return t.length===0?n=e:n=e.replace(/\{(\d+)\}/g,(r,o)=>{const s=o[0],a=t[s];let l=r;return typeof a=="string"?l=a:(typeof a=="number"||typeof a=="boolean"||a===void 0||a===null)&&(l=String(a)),l}),vJr&&(n="["+n.replace(/[aouei]/g,"$&$&")+"]"),n}function U(e,t,...n){return hme(typeof e=="number"?S6n(e,t):t,n)}function S6n(e,t){var r;const n=(r=_6n())==null?void 0:r[e];if(typeof n!="string"){if(typeof t=="string")return t;throw new Error(`!!! NLS MISSING: ${e} !!!`)}return n}function _t(e,t,...n){let r;typeof e=="number"?r=S6n(e,t):r=t;const o=hme(r,n);return{value:o,original:t===r?o:hme(t,n)}}function AJr(e,t){const n=e;typeof n.vscodeWindowId!="number"&&Object.defineProperty(n,"vscodeWindowId",{get:()=>t})}const Ls=window,kve=class kve{constructor(){this.mapWindowIdToZoomFactor=new Map}getZoomFactor(t){return this.mapWindowIdToZoomFactor.get(this.getWindowId(t))??1}getWindowId(t){return t.vscodeWindowId}};kve.INSTANCE=new kve;let UFe=kve;function L6n(e,t,n){typeof t=="string"&&(t=e.matchMedia(t)),t.addEventListener("change",n)}function jFe(e){return UFe.INSTANCE.getZoomFactor(e)}const jz=navigator.userAgent,k1=jz.indexOf("Firefox")>=0,gbe=jz.indexOf("AppleWebKit")>=0,pie=jz.indexOf("Chrome")>=0,eR=!pie&&jz.indexOf("Safari")>=0,x6n=!pie&&!eR&&gbe;jz.indexOf("Electron/")>=0;const Jpt=jz.indexOf("Android")>=0;let W8e=!1;if(typeof Ls.matchMedia=="function"){const e=Ls.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),t=Ls.matchMedia("(display-mode: fullscreen)");W8e=e.matches,L6n(Ls,e,({matches:n})=>{W8e&&t.matches||(W8e=n)})}function wJe(){return globalThis.MonacoEnvironment}class pJr{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(t){setTimeout(()=>{throw t.stack?GW.isErrorNoTelemetry(t)?new GW(t.message+` +检测到该版本需要重新安装更新,安装过程中可能会替换现有安装,请先保存当前工作。`:"",S=co.confirm({header:"确认更新",body:`将通过 ${b(g.value)} 更新到 v${f.value.latestVersion},确认继续吗?${_}`,confirmBtn:{content:t("settings.about.confirmUpdate"),theme:"primary"},cancelBtn:t("settings.about.cancel"),onConfirm:async()=>{S.destroy(),await y()},onClose:()=>S.destroy()})}return(_,S)=>{const L=Sg,E=_n("i-refresh"),T=Si,D=CZe,P=km,Q=_n("i-github"),M=_n("i-right"),B=fW,R=_n("i-code"),I=_n("i-notes"),F=Wu,j=_n("i-check-one"),W=gc;return xe(),Ge("div",yKr,[c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",CKr,[ge("img",{src:lbe,alt:"ToonFlow Logo",class:"logo",onClick:u}),ge("div",_Kr,[S[6]||(S[6]=ge("div",{class:"name"},"ToonFlow",-1)),ge("div",SKr,Pe(_.$t("settings.about.slogan")),1),ge("div",LKr,[c(L,{theme:"primary",shape:"round",size:"small",style:{padding:"10px"}},{default:Oe(()=>[Bt("v"+Pe(Ae(n)),1)]),_:1})])]),ge("div",xKr,[c(D,{count:Ae(o)?1:0,dot:"",offset:[-4,-4]},{default:Oe(()=>[c(T,{theme:"primary",onClick:p},{icon:Oe(()=>[c(E,{theme:"outline",size:"18"})]),default:Oe(()=>[ge("span",EKr,Pe(Ae(o)?_.$t("settings.about.upToDate"):_.$t("settings.about.checkUpdate")),1)]),_:1})]),_:1},8,["count"])])])]),_:1}),ge("div",TKr,[ge("span",null,Pe(_.$t("settings.about.codeRepository")),1),c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",{class:"ac jb",style:{cursor:"pointer"},onClick:S[0]||(S[0]=H=>A("https://github.com/HBAI-Ltd/Toonflow-app"))},[ge("div",QKr,[ge("div",DKr,[c(Q,{theme:"outline",size:"22",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",BKr,[ge("div",null,[ge("span",RKr,Pe(_.$t("settings.about.githubRepo")),1)]),S[7]||(S[7]=ge("div",null,[ge("span",{style:{"font-size":"12px",color:"#666"}},"https://github.com/HBAI-Ltd/Toonflow-app")],-1))])]),c(M,{theme:"outline",size:"18"})]),c(B),ge("div",{class:"ac jb",style:{cursor:"pointer"},onClick:S[1]||(S[1]=H=>A("https://gitee.com/HBAI-Ltd/Toonflow-app"))},[ge("div",IKr,[ge("div",MKr,[c(R,{theme:"outline",size:"20",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",PKr,[ge("div",null,[ge("span",FKr,Pe(_.$t("settings.about.giteeRepo")),1)]),S[8]||(S[8]=ge("div",null,[ge("span",{style:{"font-size":"12px",color:"#666"}},"https://gitee.com/HBAI-Ltd/Toonflow-app")],-1))])]),c(M,{theme:"outline",size:"18"})])]),_:1})]),ge("div",NKr,[ge("span",null,Pe(_.$t("settings.about.license")),1),c(P,{bordered:"",style:{width:"100%"},class:"logoCard"},{default:Oe(()=>[ge("div",UKr,[ge("div",jKr,[ge("div",WKr,[c(I,{theme:"outline",size:"20",class:"c",style:{width:"100%",height:"100%"}})]),ge("div",VKr,[S[9]||(S[9]=ge("div",null,[ge("span",{style:{"font-size":"15px","font-weight":"900"}},"Apache-2.0 License")],-1)),ge("div",null,[ge("span",zKr,Pe(_.$t("settings.about.licenseDesc")),1)])])]),c(M,{theme:"outline",size:"18"})])]),_:1})]),c(W,{visible:Ae(h),"onUpdate:visible":S[5]||(S[5]=H=>Fn(h)?h.value=H:null),header:!1,"confirm-btn":null,"cancel-btn":null,"close-on-overlay-click":!1,width:"600px"},{footer:Oe(()=>[ge("div",uJr,[c(T,{variant:"outline",onClick:S[3]||(S[3]=H=>h.value=!1),disabled:Ae(v)},{default:Oe(()=>[Bt(Pe(_.$t("settings.about.cancel")),1)]),_:1},8,["disabled"]),c(T,{theme:"primary",onClick:S[4]||(S[4]=H=>Ae(f).needUpdate?C():w()),loading:Ae(v)},{icon:Oe(()=>[c(E,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(Ae(f).needUpdate?_.$t("settings.about.confirmUpdate"):_.$t("settings.about.checkUpdate")),1)]),_:1},8,["loading"])])]),default:Oe(()=>[ge("div",HKr,[ge("div",$Kr,[ge("div",XKr,[c(E,{theme:"outline",size:"28",style:{color:"var(--td-brand-color)"}})]),ge("div",GKr,Pe(Ae(f).needUpdate?_.$t("settings.about.updateAvailable"):Ae(f).latestVersion?_.$t("settings.about.noUpdate"):_.$t("settings.about.selectUpdateSource")),1)]),Ae(f).latestVersion?(xe(),Ge("div",YKr,[ge("div",ZKr,[ge("span",qKr,Pe(_.$t("settings.about.currentVersion")),1),c(L,{theme:"default",shape:"round",size:"medium"},{default:Oe(()=>[Bt("v"+Pe(Ae(n)),1)]),_:1})]),ge("div",KKr,[c(M,{theme:"outline",size:"20",style:{color:"var(--td-brand-color)"}})]),ge("div",JKr,[ge("span",eJr,Pe(_.$t("settings.about.latestVersionLabel")),1),c(L,{theme:"success",shape:"round",size:"medium"},{default:Oe(()=>[Bt("v"+Pe(Ae(f).latestVersion),1)]),_:1})])])):nn("",!0),Ae(k)?(xe(),Ge("div",tJr,[S[10]||(S[10]=ge("span",{class:"versionTimeLabel"},"更新时间",-1)),ge("span",nJr,Pe(Ae(k)),1)])):nn("",!0),Ae(s)?(xe(),Ge("div",iJr,[c(F,{modelValue:Ae(a),"onUpdate:modelValue":S[2]||(S[2]=H=>Fn(a)?a.value=H:null),placeholder:"输入自定义更新地址",clearable:"",style:{"margin-bottom":"12px"}},null,8,["modelValue"])])):nn("",!0),ge("div",rJr,[ge("span",oJr,Pe(_.$t("settings.about.selectUpdateSource")),1),ge("div",sJr,[(xe(!0),Ge(sn,null,Bi(Ae(m),H=>(xe(),Ge("div",{class:Eo(["sourceCard",{active:Ae(g)===H.value,disabled:H.disabled}]),key:H.value,onClick:$=>!H.disabled&&(g.value=H.value)},[ge("div",{class:Eo(["sourceIcon",H.iconClass]),style:no(H.iconBg?{background:H.iconBg}:void 0)},[H.iconType==="image"?(xe(),Ge("img",{key:0,src:H.iconSrc,alt:H.label,style:{width:"22px",height:"22px"}},null,8,lJr)):H.iconName==="github"?(xe(),Ut(Q,{key:1,theme:"outline",size:"22"})):H.iconName==="code"?(xe(),Ut(R,{key:2,theme:"outline",size:"22"})):nn("",!0)],6),ge("span",cJr,Pe(H.label),1),Ae(g)===H.value?(xe(),Ge("div",dJr,[c(j,{theme:"filled",size:"18",style:{color:"var(--td-brand-color)"}})])):nn("",!0)],10,aJr))),128))])])])]),_:1},8,["visible"])])}}}),fJr=oo(hJr,[["__scopeId","data-v-471012aa"]]),gJr={class:"logout-config"},mJr=Je({__name:"logoutConfig",setup(e){const t=_pe(),n=fe(!1);function r(){const s=co.confirm({header:$t("settings.logout.logout"),body:$t("settings.logout.confirmLogout"),confirmBtn:{content:$t("settings.logout.logout"),theme:"danger"},cancelBtn:$t("common.cancel"),onConfirm:async()=>{s.destroy(),await o()},onClose:()=>s.destroy()})}async function o(){n.value=!0;try{localStorage.removeItem("token"),localStorage.removeItem("user"),window.$message.success($t("settings.logout.msg.logoutSuccess")),t.push("/login")}catch{window.$message.error($t("settings.logout.msg.logoutFailed"))}finally{n.value=!1}}return(s,a)=>{const l=Ez,d=dL,u=Si,h=Ev;return xe(),Ge("div",gJr,[c(h,{direction:"vertical",size:"medium"},{default:Oe(()=>[c(l,{theme:"warning",message:s.$t("settings.logout.warning")},null,8,["message"]),c(u,{theme:"danger",loading:n.value,onClick:r},{icon:Oe(()=>[c(d,{name:"logout"})]),default:Oe(()=>[Bt(" "+Pe(s.$t("settings.logout.logout")),1)]),_:1},8,["loading"])]),_:1})])}}}),kJr=oo(mJr,[["__scopeId","data-v-e0f76e54"]]);function _6n(){return globalThis._VSCODE_NLS_MESSAGES}function bJe(){return globalThis._VSCODE_NLS_LANGUAGE}const vJr=bJe()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0;function hme(e,t){let n;return t.length===0?n=e:n=e.replace(/\{(\d+)\}/g,(r,o)=>{const s=o[0],a=t[s];let l=r;return typeof a=="string"?l=a:(typeof a=="number"||typeof a=="boolean"||a===void 0||a===null)&&(l=String(a)),l}),vJr&&(n="["+n.replace(/[aouei]/g,"$&$&")+"]"),n}function U(e,t,...n){return hme(typeof e=="number"?S6n(e,t):t,n)}function S6n(e,t){var r;const n=(r=_6n())==null?void 0:r[e];if(typeof n!="string"){if(typeof t=="string")return t;throw new Error(`!!! NLS MISSING: ${e} !!!`)}return n}function _t(e,t,...n){let r;typeof e=="number"?r=S6n(e,t):r=t;const o=hme(r,n);return{value:o,original:t===r?o:hme(t,n)}}function AJr(e,t){const n=e;typeof n.vscodeWindowId!="number"&&Object.defineProperty(n,"vscodeWindowId",{get:()=>t})}const Ls=window,kve=class kve{constructor(){this.mapWindowIdToZoomFactor=new Map}getZoomFactor(t){return this.mapWindowIdToZoomFactor.get(this.getWindowId(t))??1}getWindowId(t){return t.vscodeWindowId}};kve.INSTANCE=new kve;let UFe=kve;function L6n(e,t,n){typeof t=="string"&&(t=e.matchMedia(t)),t.addEventListener("change",n)}function jFe(e){return UFe.INSTANCE.getZoomFactor(e)}const jz=navigator.userAgent,k1=jz.indexOf("Firefox")>=0,gbe=jz.indexOf("AppleWebKit")>=0,pie=jz.indexOf("Chrome")>=0,eR=!pie&&jz.indexOf("Safari")>=0,x6n=!pie&&!eR&&gbe;jz.indexOf("Electron/")>=0;const Jpt=jz.indexOf("Android")>=0;let W8e=!1;if(typeof Ls.matchMedia=="function"){const e=Ls.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),t=Ls.matchMedia("(display-mode: fullscreen)");W8e=e.matches,L6n(Ls,e,({matches:n})=>{W8e&&t.matches||(W8e=n)})}function wJe(){return globalThis.MonacoEnvironment}class pJr{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(t){setTimeout(()=>{throw t.stack?GW.isErrorNoTelemetry(t)?new GW(t.message+` `+t.stack):new Error(t.message+` `+t.stack):t},0)}}emit(t){this.listeners.forEach(n=>{n(t)})}onUnexpectedError(t){this.unexpectedErrorHandler(t),this.emit(t)}onUnexpectedExternalError(t){this.unexpectedErrorHandler(t)}}const OJe=new pJr;function fme(e){OJe.onUnexpectedError(e)}function zi(e){C2(e)||OJe.onUnexpectedError(e)}function Nc(e){C2(e)||OJe.onUnexpectedExternalError(e)}function WFe(e){if(e instanceof Error){const{name:t,message:n,cause:r}=e,o=e.stacktrace||e.stack;return{$isError:!0,name:t,message:n,stack:o,noTelemetry:GW.isErrorNoTelemetry(e),cause:r?WFe(r):void 0,code:e.code}}return e}const gme="Canceled";function C2(e){return e instanceof lA?!0:e instanceof Error&&e.name===gme&&e.message===gme}class lA extends Error{constructor(){super(gme),this.name=this.message}}function bJr(){const e=new Error(gme);return e.name=e.message,e}function Gv(e){return e?new Error(`Illegal argument: ${e}`):new Error("Illegal argument")}function mme(e){return e?new Error(`Illegal state: ${e}`):new Error("Illegal state")}class wJr extends Error{constructor(t){super("NotSupported"),t&&(this.message=t)}}class GW extends Error{constructor(t){super(t),this.name="CodeExpectedError"}static fromError(t){if(t instanceof GW)return t;const n=new GW;return n.message=t.message,n.stack=t.stack,n}static isErrorNoTelemetry(t){return t.name==="CodeExpectedError"}}class ui extends Error{constructor(t){super(t||"An unexpected bug occurred."),Object.setPrototypeOf(this,ui.prototype)}}function V8e(e,t){if(!e)throw new Error(t?`Assertion failed (${t})`:"Assertion Failed")}function bie(e,t="Unreachable"){throw new Error(t)}function PK(e,t="unexpected state"){if(!e)throw typeof t=="string"?new ui(`Assertion Failed: ${t}`):t}function ebt(e,t="Soft Assertion Failed"){e||zi(new ui(t))}function b6(e){if(!e()){debugger;e(),zi(new ui("Assertion Failed"))}}function wie(e,t){let n=0;for(;n"u"}function Ru(e){return!Qv(e)}function Qv(e){return Sf(e)||e===null}function Oo(e,t){if(!e)throw new Error(t?`Unexpected type, expected '${t}'`:"Unexpected type")}function a9(e){return PK(e!=null,"Argument is `undefined` or `null`."),e}function tR(e){return typeof e=="function"}function CJr(e,t){const n=Math.min(e.length,t.length);for(let r=0;r=0,NK=eb.indexOf("Macintosh")>=0,CJe=(eb.indexOf("Macintosh")>=0||eb.indexOf("iPad")>=0||eb.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,aZ=eb.indexOf("Linux")>=0,T6n=(eb==null?void 0:eb.indexOf("Mobi"))>=0,yJe=!0,Vue=bJe()||iQ,ole=navigator.language.toLowerCase(),tbt=ole):console.error("Unable to resolve platform.");let zue=0;NK?zue=1:FK?zue=3:aZ&&(zue=2);const mh=FK,Tr=NK,v1=aZ,v3=E6n,qy=yJe,EJr=yJe&&typeof KS.importScripts=="function",TJr=EJr?KS.origin:void 0,cA=CJe,Q6n=T6n,z8e=zue,yy=eb,QJr=Vue,DJr=typeof KS.postMessage=="function"&&!KS.importScripts,Oie=(()=>{if(DJr){const e=[];KS.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let r=0,o=e.length;r{const r=++t;e.push({id:r,callback:n}),KS.postMessage({vscodeScheduleAsyncWork:r},"*")}}return e=>setTimeout(e)})(),b0=NK||CJe?2:FK?1:3;let nbt=!0,ibt=!1;function D6n(){if(!ibt){ibt=!0;const e=new Uint8Array(2);e[0]=1,e[1]=2,nbt=new Uint16Array(e.buffer)[0]===513}return nbt}const _Je=!!(yy&&yy.indexOf("Chrome")>=0),BJr=!!(yy&&yy.indexOf("Firefox")>=0),RJr=!!(!_Je&&yy&&yy.indexOf("Safari")>=0),B6n=!!(yy&&yy.indexOf("Edg/")>=0),IJr=!!(yy&&yy.indexOf("Android")>=0),yie={clipboard:{writeText:v3||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:v3||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},pointerEvents:Ls.PointerEvent&&("ontouchstart"in Ls||navigator.maxTouchPoints>0)};class SJe{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(t,n){this._keyCodeToStr[t]=n,this._strToKeyCode[n.toLowerCase()]=t}keyCodeToStr(t){return this._keyCodeToStr[t]}strToKeyCode(t){return this._strToKeyCode[t.toLowerCase()]||0}}const Hue=new SJe,HFe=new SJe,$Fe=new SJe,R6n=new Array(230),MJr=Object.create(null),PJr=Object.create(null),LJe=[];for(let e=0;e<=193;e++)LJe[e]=-1;(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=[],r=[];for(const o of t){const[s,a,l,d,u,h,g,m,v]=o;if(r[a]||(r[a]=!0,MJr[l]=a,PJr[l.toLowerCase()]=a,s&&(LJe[a]=d)),!n[d]){if(n[d]=!0,!u)throw new Error(`String representation missing for key code ${d} around scan code ${l}`);Hue.define(d,u),HFe.define(d,m||u),$Fe.define(d,v||m||u)}h&&(R6n[h]=d)}})();var kS;(function(e){function t(l){return Hue.keyCodeToStr(l)}e.toString=t;function n(l){return Hue.strToKeyCode(l)}e.fromString=n;function r(l){return HFe.keyCodeToStr(l)}e.toUserSettingsUS=r;function o(l){return $Fe.keyCodeToStr(l)}e.toUserSettingsGeneral=o;function s(l){return HFe.strToKeyCode(l)||$Fe.strToKeyCode(l)}e.fromUserSettings=s;function a(l){if(l>=98&&l<=113)return null;switch(l){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return Hue.keyCodeToStr(l)}e.toElectronAccelerator=a})(kS||(kS={}));function Uc(e,t){const n=(t&65535)<<16>>>0;return(e|n)>>>0}function XFe(e,t){if(typeof e=="number"){if(e===0)return null;const n=(e&65535)>>>0,r=(e&4294901760)>>>16;return r!==0?new H8e([sle(n,t),sle(r,t)]):new H8e([sle(n,t)])}else{const n=[];for(let r=0;r=0;S--)yield _[S]}e.reverse=l;function d(_){return!_||_[Symbol.iterator]().next().done===!0}e.isEmpty=d;function u(_){return _[Symbol.iterator]().next().value}e.first=u;function h(_,S){let L=0;for(const E of _)if(S(E,L++))return!0;return!1}e.some=h;function g(_,S){let L=0;for(const E of _)if(!S(E,L++))return!1;return!0}e.every=g;function m(_,S){for(const L of _)if(S(L))return L}e.find=m;function*v(_,S){for(const L of _)S(L)&&(yield L)}e.filter=v;function*f(_,S){let L=0;for(const E of _)yield S(E,L++)}e.map=f;function*k(_,S){let L=0;for(const E of _)yield*S(E,L++)}e.flatMap=k;function*A(..._){for(const S of _)VFe(S)?yield*S:yield S}e.concat=A;function p(_,S,L){let E=L;for(const T of _)E=S(E,T);return E}e.reduce=p;function b(_){let S=0;for(const L of _)S++;return S}e.length=b;function*w(_,S,L=_.length){for(S<-_.length&&(S=0),S<0&&(S+=_.length),L<0?L+=_.length:L>_.length&&(L=_.length);S1)throw new AggregateError(t,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}else if(e)return e.dispose(),e}function G4(...e){return Hn(()=>us(e))}class XJr{constructor(t){this._isDisposed=!1,this._fn=t}dispose(){if(!this._isDisposed){if(!this._fn)throw new Error("Unbound disposable context: Need to use an arrow function to preserve the value of this");this._isDisposed=!0,this._fn()}}}function Hn(e){return new XJr(e)}var ED;let xt=(ED=class{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{us(this._toDispose)}finally{this._toDispose.clear()}}add(t){if(!t||t===ft.None)return t;if(t===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?ED.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(t),t}delete(t){if(t){if(t===this)throw new Error("Cannot dispose a disposable on itself!");this._toDispose.delete(t),t.dispose()}}},ED.DISABLE_DISPOSED_WARNING=!1,ED);const uat=class uat{constructor(){this._store=new xt,this._store}dispose(){this._store.dispose()}_register(t){if(t===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(t)}};uat.None=Object.freeze({dispose(){}});let ft=uat;class ts{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(t){var n;this._isDisposed||t===this._value||((n=this._value)==null||n.dispose(),this._value=t)}clear(){this.value=void 0}dispose(){var t;this._isDisposed=!0,(t=this._value)==null||t.dispose(),this._value=void 0}}class GJr{constructor(t){this._disposable=t,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}class YJr{constructor(t){this.object=t}dispose(){}}class mbe{constructor(){this._store=new Map,this._isDisposed=!1}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{us(this._store.values())}finally{this._store.clear()}}get(t){return this._store.get(t)}set(t,n,r=!1){var o;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),r||(o=this._store.get(t))==null||o.dispose(),this._store.set(t,n)}deleteAndDispose(t){var n;(n=this._store.get(t))==null||n.dispose(),this._store.delete(t)}values(){return this._store.values()}[Symbol.iterator](){return this._store[Symbol.iterator]()}}var US;let Kd=(US=class{constructor(t){this.element=t,this.next=US.Undefined,this.prev=US.Undefined}},US.Undefined=new US(void 0),US);class bg{constructor(){this._first=Kd.Undefined,this._last=Kd.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===Kd.Undefined}clear(){let t=this._first;for(;t!==Kd.Undefined;){const n=t.next;t.prev=Kd.Undefined,t.next=Kd.Undefined,t=n}this._first=Kd.Undefined,this._last=Kd.Undefined,this._size=0}unshift(t){return this._insert(t,!1)}push(t){return this._insert(t,!0)}_insert(t,n){const r=new Kd(t);if(this._first===Kd.Undefined)this._first=r,this._last=r;else if(n){const s=this._last;this._last=r,r.prev=s,s.next=r}else{const s=this._first;this._first=r,r.next=s,s.prev=r}this._size+=1;let o=!1;return()=>{o||(o=!0,this._remove(r))}}shift(){if(this._first!==Kd.Undefined){const t=this._first.element;return this._remove(this._first),t}}pop(){if(this._last!==Kd.Undefined){const t=this._last.element;return this._remove(this._last),t}}_remove(t){if(t.prev!==Kd.Undefined&&t.next!==Kd.Undefined){const n=t.prev;n.next=t.next,t.next.prev=n}else t.prev===Kd.Undefined&&t.next===Kd.Undefined?(this._first=Kd.Undefined,this._last=Kd.Undefined):t.next===Kd.Undefined?(this._last=this._last.prev,this._last.next=Kd.Undefined):t.prev===Kd.Undefined&&(this._first=this._first.next,this._first.prev=Kd.Undefined);this._size-=1}*[Symbol.iterator](){let t=this._first;for(;t!==Kd.Undefined;)yield t.element,t=t.next}}const ZJr=globalThis.performance.now.bind(globalThis.performance);class vu{static create(t){return new vu(t)}constructor(t){this._now=t===!1?Date.now:ZJr,this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}var an;(function(e){e.None=()=>ft.None;function t(D,P){return m(D,()=>{},0,void 0,!0,void 0,P)}e.defer=t;function n(D){return(P,Q=null,M)=>{let B=!1,R;return R=D(I=>{if(!B)return R?R.dispose():B=!0,P.call(Q,I)},null,M),B&&R.dispose(),R}}e.once=n;function r(D,P){return e.once(e.filter(D,P))}e.onceIf=r;function o(D,P,Q){return h((M,B=null,R)=>D(I=>M.call(B,P(I)),null,R),Q)}e.map=o;function s(D,P,Q){return h((M,B=null,R)=>D(I=>{P(I),M.call(B,I)},null,R),Q)}e.forEach=s;function a(D,P,Q){return h((M,B=null,R)=>D(I=>P(I)&&M.call(B,I),null,R),Q)}e.filter=a;function l(D){return D}e.signal=l;function d(...D){return(P,Q=null,M)=>{const B=G4(...D.map(R=>R(I=>P.call(Q,I))));return g(B,M)}}e.any=d;function u(D,P,Q,M){let B=Q;return o(D,R=>(B=P(B,R),B),M)}e.reduce=u;function h(D,P){let Q;const M={onWillAddFirstListener(){Q=D(B.fire,B)},onDidRemoveLastListener(){Q==null||Q.dispose()}},B=new at(M);return P==null||P.add(B),B.event}function g(D,P){return P instanceof Array?P.push(D):P&&P.add(D),D}function m(D,P,Q=100,M=!1,B=!1,R,I){let F,j,W,H=0,$;const G={leakWarningThreshold:R,onWillAddFirstListener(){F=D(re=>{H++,j=P(j,re),M&&!W&&(q.fire(j),j=void 0),$=()=>{const J=j;j=void 0,W=void 0,(!M||H>1)&&q.fire(J),H=0},typeof Q=="number"?(W&&clearTimeout(W),W=setTimeout($,Q)):W===void 0&&(W=null,queueMicrotask($))})},onWillRemoveListener(){B&&H>0&&($==null||$())},onDidRemoveLastListener(){$=void 0,F.dispose()}},q=new at(G);return I==null||I.add(q),q.event}e.debounce=m;function v(D,P=0,Q){return e.debounce(D,(M,B)=>M?(M.push(B),M):[B],P,void 0,!0,void 0,Q)}e.accumulate=v;function f(D,P=(M,B)=>M===B,Q){let M=!0,B;return a(D,R=>{const I=M||!P(R,B);return M=!1,B=R,I},Q)}e.latch=f;function k(D,P,Q){return[e.filter(D,P,Q),e.filter(D,M=>!P(M),Q)]}e.split=k;function A(D,P=!1,Q=[],M){let B=Q.slice(),R=D(j=>{B?B.push(j):F.fire(j)});M&&M.add(R);const I=()=>{B==null||B.forEach(j=>F.fire(j)),B=null},F=new at({onWillAddFirstListener(){R||(R=D(j=>F.fire(j)),M&&M.add(R))},onDidAddFirstListener(){B&&(P?setTimeout(I):I())},onDidRemoveLastListener(){R&&R.dispose(),R=null}});return M&&M.add(F),F.event}e.buffer=A;function p(D,P){return(M,B,R)=>{const I=P(new w);return D(function(F){const j=I.evaluate(F);j!==b&&M.call(B,j)},void 0,R)}}e.chain=p;const b=Symbol("HaltChainable");class w{constructor(){this.steps=[]}map(P){return this.steps.push(P),this}forEach(P){return this.steps.push(Q=>(P(Q),Q)),this}filter(P){return this.steps.push(Q=>P(Q)?Q:b),this}reduce(P,Q){let M=Q;return this.steps.push(B=>(M=P(M,B),M)),this}latch(P=(Q,M)=>Q===M){let Q=!0,M;return this.steps.push(B=>{const R=Q||!P(B,M);return Q=!1,M=B,R?B:b}),this}evaluate(P){for(const Q of this.steps)if(P=Q(P),P===b)break;return P}}function O(D,P,Q=M=>M){const M=(...F)=>I.fire(Q(...F)),B=()=>D.on(P,M),R=()=>D.removeListener(P,M),I=new at({onWillAddFirstListener:B,onDidRemoveLastListener:R});return I.event}e.fromNodeEventEmitter=O;function y(D,P,Q=M=>M){const M=(...F)=>I.fire(Q(...F)),B=()=>D.addEventListener(P,M),R=()=>D.removeEventListener(P,M),I=new at({onWillAddFirstListener:B,onDidRemoveLastListener:R});return I.event}e.fromDOMEventEmitter=y;function C(D,P){let Q;const M=new Promise((B,R)=>{const I=n(D)(B,null,P);Q=()=>I.dispose()});return M.cancel=Q,M}e.toPromise=C;function _(D,P){return D(Q=>P.fire(Q))}e.forward=_;function S(D,P,Q){return P(Q),D(M=>P(M))}e.runAndSubscribe=S;class L{constructor(P,Q){this._observable=P,this._counter=0,this._hasChanged=!1;const M={onWillAddFirstListener:()=>{P.addObserver(this),this._observable.reportChanges()},onDidRemoveLastListener:()=>{P.removeObserver(this)}};this.emitter=new at(M),Q&&Q.add(this.emitter)}beginUpdate(P){this._counter++}handlePossibleChange(P){}handleChange(P,Q){this._hasChanged=!0}endUpdate(P){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function E(D,P){return new L(D,P).emitter.event}e.fromObservable=E;function T(D){return(P,Q,M)=>{let B=0,R=!1;const I={beginUpdate(){B++},endUpdate(){B--,B===0&&(D.reportChanges(),R&&(R=!1,P.call(Q)))},handlePossibleChange(){},handleChange(){R=!0}};D.addObserver(I),D.reportChanges();const F={dispose(){D.removeObserver(I)}};return M instanceof xt?M.add(F):Array.isArray(M)&&M.push(F),F}}e.fromObservableLight=T})(an||(an={}));const $N=class $N{constructor(t){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${t}_${$N._idPool++}`,$N.all.add(this)}start(t){this._stopWatch=new vu,this.listenerCount=t}stop(){if(this._stopWatch){const t=this._stopWatch.elapsed();this.durations.push(t),this.elapsedOverall+=t,this.invocationCount+=1,this._stopWatch=void 0}}};$N.all=new Set,$N._idPool=0;let GFe=$N,qJr=-1;const vve=class vve{constructor(t,n,r=(vve._idPool++).toString(16).padStart(3,"0")){this._errorHandler=t,this.threshold=n,this.name=r,this._warnCountdown=0}dispose(){var t;(t=this._stacks)==null||t.clear()}check(t,n){const r=this.threshold;if(r<=0||n{const s=this._stacks.get(t.value)||0;this._stacks.set(t.value,s-1)}}getMostFrequentStack(){if(!this._stacks)return;let t,n=0;for(const[r,o]of this._stacks)(!t||n{var l,d,u,h,g,m,v;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){const f=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(f);const k=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],A=new JJr(`${f}. HINT: Stack shows most frequent listener (${k[1]}-times)`,k[0]);return(((l=this._options)==null?void 0:l.onListenerError)||zi)(A),ft.None}if(this._disposed)return ft.None;n&&(t=t.bind(n));const o=new $8e(t);let s;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(o.stack=xJe.create(),s=this._leakageMon.check(o.stack,this._size+1)),this._listeners?this._listeners instanceof $8e?(this._deliveryQueue??(this._deliveryQueue=new I6n),this._listeners=[this._listeners,o]):this._listeners.push(o):((u=(d=this._options)==null?void 0:d.onWillAddFirstListener)==null||u.call(d,this),this._listeners=o,(g=(h=this._options)==null?void 0:h.onDidAddFirstListener)==null||g.call(h,this)),(v=(m=this._options)==null?void 0:m.onDidAddListener)==null||v.call(m,this),this._size++;const a=Hn(()=>{s==null||s(),this._removeListener(o)});return r instanceof xt?r.add(a):Array.isArray(r)&&r.push(a),a}),this._event}_removeListener(t){var s,a,l,d;if((a=(s=this._options)==null?void 0:s.onWillRemoveListener)==null||a.call(s,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(d=(l=this._options)==null?void 0:l.onDidRemoveLastListener)==null||d.call(l,this),this._size=0;return}const n=this._listeners,r=n.indexOf(t);if(r===-1)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--,n[r]=void 0;const o=this._deliveryQueue.current===this;if(this._size*eeo<=n.length){let u=0;for(let h=0;h0}};const teo=()=>new I6n;class I6n{constructor(){this.i=-1,this.end=0}enqueue(t,n,r){this.i=0,this.end=r,this.current=t,this.value=n}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class rR extends at{constructor(t){super(t),this._isPaused=0,this._eventQueue=new bg,this._mergeFn=t==null?void 0:t.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const t=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(t))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(t){this._size&&(this._isPaused!==0?this._eventQueue.push(t):super.fire(t))}}class M6n extends rR{constructor(t){super(t),this._delay=t.delay??100}fire(t){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(t)}}class neo extends at{constructor(t){super(t),this._queuedEvents=[],this._mergeFn=t==null?void 0:t.merge}fire(t){this.hasListeners()&&(this._queuedEvents.push(t),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(n=>super.fire(n)),this._queuedEvents=[]}))}}class ieo{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new at({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(t){const n={event:t,listener:null};return this.events.push(n),this.hasListeners&&this.hook(n),Hn(iR(()=>{this.hasListeners&&this.unhook(n);const o=this.events.indexOf(n);this.events.splice(o,1)}))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(t=>this.hook(t))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(t=>this.unhook(t))}hook(t){t.listener=t.event(n=>this.emitter.fire(n))}unhook(t){var n;(n=t.listener)==null||n.dispose(),t.listener=null}dispose(){var t;this.emitter.dispose();for(const n of this.events)(t=n.listener)==null||t.dispose();this.events=[]}}class Cie{constructor(){this.data=[]}wrapEvent(t,n,r){return(o,s,a)=>t(l=>{const d=this.data[this.data.length-1];if(!n){d?d.buffers.push(()=>o.call(s,l)):o.call(s,l);return}const u=d;if(!u){o.call(s,n(r,l));return}u.items??(u.items=[]),u.items.push(l),u.buffers.length===0&&d.buffers.push(()=>{u.reducedResult??(u.reducedResult=r?u.items.reduce(n,r):u.items.reduce(n)),o.call(s,u.reducedResult)})},void 0,a)}bufferEvents(t){const n={buffers:new Array};this.data.push(n);const r=t();return this.data.pop(),n.buffers.forEach(o=>o()),r}}class oX{constructor(){this.listening=!1,this.inputEvent=an.None,this.inputEventListener=ft.None,this.emitter=new at({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(t){this.inputEvent=t,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=t(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}const P6n=Object.freeze(function(e,t){const n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}});var Er;(function(e){function t(n){return n===e.None||n===e.Cancelled||n instanceof $ue?!0:!n||typeof n!="object"?!1:typeof n.isCancellationRequested=="boolean"&&typeof n.onCancellationRequested=="function"}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:an.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:P6n})})(Er||(Er={}));class $ue{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?P6n:(this._emitter||(this._emitter=new at),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}let ja=class{constructor(t){this._token=void 0,this._parentListener=void 0,this._parentListener=t&&t.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new $ue),this._token}cancel(){this._token?this._token instanceof $ue&&this._token.cancel():this._token=Er.Cancelled}dispose(t=!1){var n;t&&this.cancel(),(n=this._parentListener)==null||n.dispose(),this._token?this._token instanceof $ue&&this._token.dispose():this._token=Er.None}};function ZFe(e){const t=new ja;return e.add({dispose(){t.cancel()}}),t.token}const F6n=Symbol("MicrotaskDelay");function qFe(e){return!!e&&typeof e.then=="function"}function Fd(e){const t=new ja,n=e(t.token);let r=!1;const o=new Promise((s,a)=>{const l=t.token.onCancellationRequested(()=>{r=!0,l.dispose(),a(new lA)});Promise.resolve(n).then(d=>{l.dispose(),t.dispose(),r?AI(d)&&d.dispose():s(d)},d=>{l.dispose(),t.dispose(),a(d)})});return new class{cancel(){t.cancel(),t.dispose()}then(s,a){return o.then(s,a)}catch(s){return this.then(void 0,s)}finally(s){return o.finally(s)}}}function YW(e,t,n){return new Promise((r,o)=>{const s=t.onCancellationRequested(()=>{s.dispose(),r(n)});e.then(r,o).finally(()=>s.dispose())})}function reo(e,t){return new Promise((n,r)=>{const o=t.onCancellationRequested(()=>{o.dispose(),r(new lA)});e.then(n,r).finally(()=>o.dispose())})}let oeo=class{constructor(){this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null,this.cancellationTokenSource=new ja}queue(t){if(this.cancellationTokenSource.token.isCancellationRequested)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=t,!this.queuedPromise){const n=()=>{if(this.queuedPromise=null,this.cancellationTokenSource.token.isCancellationRequested)return;const r=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,r};this.queuedPromise=new Promise(r=>{this.activePromise.then(n,n).then(r)})}return new Promise((n,r)=>{this.queuedPromise.then(n,r)})}return this.activePromise=t(this.cancellationTokenSource.token),new Promise((n,r)=>{this.activePromise.then(o=>{this.activePromise=null,n(o)},o=>{this.activePromise=null,r(o)})})}dispose(){this.cancellationTokenSource.cancel()}};const seo=(e,t)=>{let n=!0;const r=setTimeout(()=>{n=!1,t()},e);return{isTriggered:()=>n,dispose:()=>{clearTimeout(r),n=!1}}},aeo=e=>{let t=!0;return queueMicrotask(()=>{t&&(t=!1,e())}),{isTriggered:()=>t,dispose:()=>{t=!1}}};class dA{constructor(t){this.defaultDelay=t,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(t,n=this.defaultDelay){this.task=t,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((o,s)=>{this.doResolve=o,this.doReject=s}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const o=this.task;return this.task=null,o()}}));const r=()=>{var o;this.deferred=null,(o=this.doResolve)==null||o.call(this,null)};return this.deferred=n===F6n?aeo(r):seo(n,r),this.completionPromise}isTriggered(){var t;return!!((t=this.deferred)!=null&&t.isTriggered())}cancel(){var t;this.cancelTimeout(),this.completionPromise&&((t=this.doReject)==null||t.call(this,new lA),this.completionPromise=null)}cancelTimeout(){var t;(t=this.deferred)==null||t.dispose(),this.deferred=null}dispose(){this.cancel()}}class N6n{constructor(t){this.delayer=new dA(t),this.throttler=new oeo}trigger(t,n){return this.delayer.trigger(()=>this.throttler.queue(t),n)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function Cy(e,t){return t?new Promise((n,r)=>{const o=setTimeout(()=>{s.dispose(),n()},e),s=t.onCancellationRequested(()=>{clearTimeout(o),s.dispose(),r(new lA)})}):Fd(n=>Cy(e,n))}function B8(e,t=0,n){const r=setTimeout(()=>{e(),n&&o.dispose()},t),o=Hn(()=>{clearTimeout(r),n==null||n.delete(o)});return n==null||n.add(o),o}function EJe(e,t=r=>!!r,n=null){let r=0;const o=e.length,s=()=>{if(r>=o)return Promise.resolve(n);const a=e[r++];return Promise.resolve(a()).then(d=>t(d)?Promise.resolve(d):s())};return s()}let leo=class{constructor(){this._runningTask=void 0,this._pendingTasks=[]}schedule(t){const n=new pI;return this._pendingTasks.push({task:t,deferred:n,setUndefinedWhenCleared:!1}),this._runIfNotRunning(),n.p}_runIfNotRunning(){this._runningTask===void 0&&this._processQueue()}async _processQueue(){if(this._pendingTasks.length===0)return;const t=this._pendingTasks.shift();if(t){if(this._runningTask)throw new ui;this._runningTask=t.task;try{const n=await t.task();t.deferred.complete(n)}catch(n){t.deferred.error(n)}finally{this._runningTask=void 0,this._processQueue()}}}clearPending(){const t=this._pendingTasks;this._pendingTasks=[];for(const n of t)n.setUndefinedWhenCleared?n.deferred.complete(void 0):n.deferred.error(new lA)}};class I0{constructor(t,n){this._isDisposed=!1,this._token=void 0,typeof t=="function"&&typeof n=="number"&&this.setIfNotSet(t,n)}dispose(){this.cancel(),this._isDisposed=!0}cancel(){this._token!==void 0&&(clearTimeout(this._token),this._token=void 0)}cancelAndSet(t,n){if(this._isDisposed)throw new ui("Calling 'cancelAndSet' on a disposed TimeoutTimer");this.cancel(),this._token=setTimeout(()=>{this._token=void 0,t()},n)}setIfNotSet(t,n){if(this._isDisposed)throw new ui("Calling 'setIfNotSet' on a disposed TimeoutTimer");this._token===void 0&&(this._token=setTimeout(()=>{this._token=void 0,t()},n))}}class TJe{constructor(){this.disposable=void 0,this.isDisposed=!1}cancel(){var t;(t=this.disposable)==null||t.dispose(),this.disposable=void 0}cancelAndSet(t,n,r=globalThis){if(this.isDisposed)throw new ui("Calling 'cancelAndSet' on a disposed IntervalTimer");this.cancel();const o=r.setInterval(()=>{t()},n);this.disposable=Hn(()=>{r.clearInterval(o),this.disposable=void 0})}dispose(){this.cancel(),this.isDisposed=!0}}class Es{constructor(t,n){this.timeoutToken=void 0,this.runner=t,this.timeout=n,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=void 0)}schedule(t=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,t)}get delay(){return this.timeout}set delay(t){this.timeout=t}isScheduled(){return this.timeoutToken!==void 0}onTimeout(){this.timeoutToken=void 0,this.runner&&this.doRun()}doRun(){var t;(t=this.runner)==null||t.call(this)}}let QJe,lZ;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?lZ=(t,n,r)=>{Oie(()=>{if(o)return;const s=Date.now()+15;n(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,s-Date.now())}}))});let o=!1;return{dispose(){o||(o=!0)}}}:lZ=(t,n,r)=>{const o=t.requestIdleCallback(n,typeof r=="number"?{timeout:r}:void 0);let s=!1;return{dispose(){s||(s=!0,t.cancelIdleCallback(o))}}},QJe=(t,n)=>lZ(globalThis,t,n)})();class U6n{constructor(t,n){this._didRun=!1,this._executor=()=>{try{this._value=n()}catch(r){this._error=r}finally{this._didRun=!0}},this._handle=lZ(t,()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class ceo extends U6n{constructor(t){super(globalThis,t)}}class pI{get isRejected(){var t;return((t=this.outcome)==null?void 0:t.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((t,n)=>{this.completeCallback=t,this.errorCallback=n})}complete(t){return this.isSettled?Promise.resolve():new Promise(n=>{this.completeCallback(t),this.outcome={outcome:0,value:t},n()})}error(t){return this.isSettled?Promise.resolve():new Promise(n=>{this.errorCallback(t),this.outcome={outcome:1,value:t},n()})}cancel(){return this.error(new lA)}}var UK;(function(e){async function t(r){let o;const s=await Promise.all(r.map(a=>a.then(l=>l,l=>{o||(o=l)})));if(typeof o<"u")throw o;return s}e.settled=t;function n(r){return new Promise(async(o,s)=>{try{await r(o,s)}catch(a){s(a)}})}e.withAsyncBody=n})(UK||(UK={}));function deo(e){const t=new ja,n=e(t.token);return new heo(t,async r=>{const o=t.token.onCancellationRequested(()=>{o.dispose(),t.dispose(),r.reject(new lA)});try{for await(const s of n){if(t.token.isCancellationRequested)return;r.emitOne(s)}o.dispose(),t.dispose()}catch(s){o.dispose(),t.dispose(),r.reject(s)}})}class ueo{constructor(){this._unsatisfiedConsumers=[],this._unconsumedValues=[]}get hasFinalValue(){return!!this._finalValue}produce(t){if(this._ensureNoFinalValue(),this._unsatisfiedConsumers.length>0){const n=this._unsatisfiedConsumers.shift();this._resolveOrRejectDeferred(n,t)}else this._unconsumedValues.push(t)}produceFinal(t){this._ensureNoFinalValue(),this._finalValue=t;for(const n of this._unsatisfiedConsumers)this._resolveOrRejectDeferred(n,t);this._unsatisfiedConsumers.length=0}_ensureNoFinalValue(){if(this._finalValue)throw new ui("ProducerConsumer: cannot produce after final value has been set")}_resolveOrRejectDeferred(t,n){n.ok?t.complete(n.value):t.error(n.error)}consume(){if(this._unconsumedValues.length>0||this._finalValue){const t=this._unconsumedValues.length>0?this._unconsumedValues.shift():this._finalValue;return t.ok?Promise.resolve(t.value):Promise.reject(t.error)}else{const t=new pI;return this._unsatisfiedConsumers.push(t),t.p}}}const _k=class _k{constructor(t,n){this._onReturn=n,this._producerConsumer=new ueo,this._iterator={next:()=>this._producerConsumer.consume(),return:()=>{var r;return(r=this._onReturn)==null||r.call(this),Promise.resolve({done:!0,value:void 0})},throw:async r=>(this._finishError(r),{done:!0,value:void 0})},queueMicrotask(async()=>{const r=t({emitOne:o=>this._producerConsumer.produce({ok:!0,value:{done:!1,value:o}}),emitMany:o=>{for(const s of o)this._producerConsumer.produce({ok:!0,value:{done:!1,value:s}})},reject:o=>this._finishError(o)});if(!this._producerConsumer.hasFinalValue)try{await r,this._finishOk()}catch(o){this._finishError(o)}})}static fromArray(t){return new _k(n=>{n.emitMany(t)})}static fromPromise(t){return new _k(async n=>{n.emitMany(await t)})}static fromPromisesResolveOrder(t){return new _k(async n=>{await Promise.all(t.map(async r=>n.emitOne(await r)))})}static merge(t){return new _k(async n=>{await Promise.all(t.map(async r=>{for await(const o of r)n.emitOne(o)}))})}static map(t,n){return new _k(async r=>{for await(const o of t)r.emitOne(n(o))})}map(t){return _k.map(this,t)}static coalesce(t){return _k.filter(t,n=>!!n)}coalesce(){return _k.coalesce(this)}static filter(t,n){return new _k(async r=>{for await(const o of t)n(o)&&r.emitOne(o)})}filter(t){return _k.filter(this,t)}_finishOk(){this._producerConsumer.hasFinalValue||this._producerConsumer.produceFinal({ok:!0,value:{done:!0,value:void 0}})}_finishError(t){this._producerConsumer.hasFinalValue||this._producerConsumer.produceFinal({ok:!1,error:t})}[Symbol.asyncIterator](){return this._iterator}};_k.EMPTY=_k.fromArray([]);let Yv=_k;class heo extends Yv{constructor(t,n){super(n),this._source=t}cancel(){this._source.cancel()}}function j6n(e){return e}class feo{constructor(t,n){this.lastCache=void 0,this.lastArgKey=void 0,typeof t=="function"?(this._fn=t,this._computeKey=j6n):(this._fn=n,this._computeKey=t.getCacheKey)}get(t){const n=this._computeKey(t);return this.lastArgKey!==n&&(this.lastArgKey=n,this.lastCache=this._fn(t)),this.lastCache}}class KFe{get cachedValues(){return this._map}constructor(t,n){this._map=new Map,this._map2=new Map,typeof t=="function"?(this._fn=t,this._computeKey=j6n):(this._fn=n,this._computeKey=t.getCacheKey)}get(t){const n=this._computeKey(t);if(this._map2.has(n))return this._map2.get(n);const r=this._fn(t);return this._map.set(t,r),this._map2.set(n,r),r}}var pT;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Running=1]="Running",e[e.Completed=2]="Completed"})(pT||(pT={}));class zh{constructor(t){this.executor=t,this._state=pT.Uninitialized}get value(){if(this._state===pT.Uninitialized){this._state=pT.Running;try{this._value=this.executor()}catch(t){this._error=t}finally{this._state=pT.Completed}}else if(this._state===pT.Running)throw new Error("Cannot read the value of a lazy that is being initialized");if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}function W6n(e){return!e||typeof e!="string"?!0:e.trim().length===0}const geo=/{(\d+)}/g;function oR(e,...t){return t.length===0?e:e.replace(geo,function(n,r){const o=parseInt(r,10);return isNaN(o)||o<0||o>=t.length?n:t[o]})}function meo(e){return e.replace(/[<>"'&]/g,t=>{switch(t){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return t})}function Y4(e){return e.replace(/[<>&]/g,function(t){switch(t){case"<":return"<";case">":return">";case"&":return"&";default:return t}})}function M0(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function keo(e,t=" "){const n=_ie(e,t);return V6n(n,t)}function _ie(e,t){if(!e||!t)return e;const n=t.length;if(n===0||e.length===0)return e;let r=0;for(;e.indexOf(t,r)===r;)r=r+n;return e.substring(r)}function V6n(e,t){if(!e||!t)return e;const n=t.length,r=e.length;if(n===0||r===0)return e;let o=r,s=-1;for(;s=e.lastIndexOf(t,o-1),!(s===-1||s+n!==o);){if(s===0)return"";o=s}return e.substring(0,o)}function veo(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function z6n(e,t,n={}){if(!e)throw new Error("Cannot create regex from empty string");t||(e=M0(e)),n.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e=e+"\\b"));let r="";return n.global&&(r+="g"),n.matchCase||(r+="i"),n.multiline&&(r+="m"),n.unicode&&(r+="u"),new RegExp(e,r)}function H6n(e){return e.source==="^"||e.source==="^$"||e.source==="$"||e.source==="^\\s*$"?!1:!!(e.exec("")&&e.lastIndex===0)}function P0(e){return e.split(/\r\n|\r|\n/)}function Og(e){for(let t=0,n=e.length;t=0;n--){const r=e.charCodeAt(n);if(r!==32&&r!==9)return n}return-1}function jK(e,t){return et?1:0}function DJe(e,t,n=0,r=e.length,o=0,s=t.length){for(;nu)return 1}const a=r-n,l=s-o;return al?1:0}function JFe(e,t){return Wz(e,t,0,e.length,0,t.length)}function Wz(e,t,n=0,r=e.length,o=0,s=t.length){for(;n=128||u>=128)return DJe(e.toLowerCase(),t.toLowerCase(),n,r,o,s);l9(d)&&(d-=32),l9(u)&&(u-=32);const h=d-u;if(h!==0)return h}const a=r-n,l=s-o;return al?1:0}function ale(e){return e>=48&&e<=57}function l9(e){return e>=97&&e<=122}function dO(e){return e>=65&&e<=90}function rQ(e,t){return e.length===t.length&&Wz(e,t)===0}function BJe(e,t){const n=t.length;return n<=e.length&&Wz(e,t,0,n)===0}function Aeo(e,t){const n=e.length,r=n-t.length;return r>=0&&Wz(e,t,r,n)===0}function dp(e,t){const n=Math.min(e.length,t.length);let r;for(r=0;r1){const r=e.charCodeAt(t-2);if(Id(r))return RJe(r,n)}return n}class IJe{get offset(){return this._offset}constructor(t,n=0){this._str=t,this._len=t.length,this._offset=n}setOffset(t){this._offset=t}prevCodePoint(){const t=peo(this._str,this._offset);return this._offset-=t>=65536?2:1,t}nextCodePoint(){const t=kme(this._str,this._len,this._offset);return this._offset+=t>=65536?2:1,t}eol(){return this._offset>=this._len}}class vme{get offset(){return this._iterator.offset}constructor(t,n=0){this._iterator=new IJe(t,n)}nextGraphemeLength(){const t=Ame.getInstance(),n=this._iterator,r=n.offset;let o=t.getGraphemeBreakType(n.nextCodePoint());for(;!n.eol();){const s=n.offset,a=t.getGraphemeBreakType(n.nextCodePoint());if(obt(o,a)){n.setOffset(s);break}o=a}return n.offset-r}prevGraphemeLength(){const t=Ame.getInstance(),n=this._iterator,r=n.offset;let o=t.getGraphemeBreakType(n.prevCodePoint());for(;n.offset>0;){const s=n.offset,a=t.getGraphemeBreakType(n.prevCodePoint());if(obt(a,o)){n.setOffset(s);break}o=a}return r-n.offset}eol(){return this._iterator.eol()}}function MJe(e,t){return new vme(e,t).nextGraphemeLength()}function $6n(e,t){return new vme(e,t).prevGraphemeLength()}function beo(e,t){t>0&&w6(e.charCodeAt(t))&&t--;const n=t+MJe(e,t);return[n-$6n(e,n),n]}let X8e;function weo(){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 ZW(e){return X8e||(X8e=weo()),X8e.test(e)}const Oeo=/^[\t\n\r\x20-\x7E]*$/;function Sie(e){return Oeo.test(e)}const X6n=/[\u2028\u2029]/;function G6n(e){return X6n.test(e)}function I8(e){return e>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function PJe(e){return e>=127462&&e<=127487||e===8986||e===8987||e===9200||e===9203||e>=9728&&e<=10175||e===11088||e===11093||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129008||e>=129280&&e<=129535||e>=129648&&e<=129782}const yeo="\uFEFF";function FJe(e){return!!(e&&e.length>0&&e.charCodeAt(0)===65279)}function Ceo(e,t=!1){return e?(t&&(e=e.replace(/\\./g,"")),e.toLowerCase()!==e):!1}function Y6n(e){return e=e%(2*26),e<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function obt(e,t){return e===0?t!==5&&t!==7:e===2&&t===3?!1:e===4||e===2||e===3||t===4||t===2||t===3?!0:!(e===8&&(t===8||t===9||t===11||t===12)||(e===11||e===9)&&(t===9||t===10)||(e===12||e===10)&&t===10||t===5||t===13||t===7||e===1||e===13&&t===14||e===6&&t===6)}const UT=class UT{static getInstance(){return UT._INSTANCE||(UT._INSTANCE=new UT),UT._INSTANCE}constructor(){this._data=_eo()}getGraphemeBreakType(t){if(t<32)return t===10?3:t===13?2:4;if(t<127)return 0;const n=this._data,r=n.length/3;let o=1;for(;o<=r;)if(tn[3*o+1])o=2*o+1;else return n[3*o+2];return 0}};UT._INSTANCE=null;let Ame=UT;function _eo(){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 Seo(e,t){if(e===0)return 0;const n=Leo(e,t);if(n!==void 0)return n;const r=new IJe(t,e);return r.prevCodePoint(),r.offset}function Leo(e,t){const n=new IJe(t,e);let r=n.prevCodePoint();for(;xeo(r)||r===65039||r===8419;){if(n.offset===0)return;r=n.prevCodePoint()}if(!PJe(r))return;let o=n.offset;return o>0&&n.prevCodePoint()===8205&&(o=n.offset),o}function xeo(e){return 127995<=e&&e<=127999}const Z6n=" ",Ww=class Ww{static getInstance(t){return Ww.cache.get(Array.from(t))}static getLocales(){return Ww._locales.value}constructor(t){this.confusableDictionary=t}isAmbiguous(t){return this.confusableDictionary.has(t)}getPrimaryConfusable(t){return this.confusableDictionary.get(t)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}};Ww.ambiguousCharacterData=new zh(()=>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,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,1523,96,8242,96,1370,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,118002,50,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,118003,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,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,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,118008,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,118009,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,117974,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,117975,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,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,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,117977,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,117978,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,117979,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,117980,71,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,117981,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,117983,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,117984,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,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,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,117985,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,117986,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,117987,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,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,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,117989,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,117990,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,117991,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,117992,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,117993,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,117994,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,117995,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,71910,87,71919,87,117996,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,117997,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,117998,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,71909,90,66293,90,65338,90,8484,90,8488,90,117999,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,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,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,8218,44,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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"cs":[65374,126,8218,44,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,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"de":[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,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"es":[8211,45,65374,126,8218,44,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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"fr":[65374,126,8218,44,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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"it":[160,32,8211,45,65374,126,8218,44,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,65292,44,65297,49,65307,59,65311,63],"ja":[8211,45,8218,44,65281,33,8216,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,65292,44,65297,49,65307,59],"ko":[8211,45,65374,126,8218,44,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,65292,44,65297,49,65307,59,65311,63],"pl":[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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"pt-BR":[65374,126,8218,44,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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,8218,44,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,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"ru":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,8218,44,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,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],"zh-hans":[160,32,65374,126,8218,44,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,65297,49],"zh-hant":[8211,45,65374,126,8218,44,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]}')),Ww.cache=new feo({getCacheKey:JSON.stringify},t=>{function n(h){const g=new Map;for(let m=0;m!h.startsWith("_")&&Object.hasOwn(s,h));a.length===0&&(a=["_default"]);let l;for(const h of a){const g=n(s[h]);l=o(l,g)}const d=n(s._common),u=r(d,l);return new Ww(u)}),Ww._locales=new zh(()=>Object.keys(Ww.ambiguousCharacterData.value).filter(t=>!t.startsWith("_")));let WK=Ww;const XN=class XN{static getRawData(){return JSON.parse('{"_common":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,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,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],"cs":[173,8203,12288],"de":[173,8203,12288],"es":[8203,12288],"fr":[173,8203,12288],"it":[160,173,12288],"ja":[173],"ko":[173,12288],"pl":[173,8203,12288],"pt-BR":[173,8203,12288],"qps-ploc":[160,173,8203,12288],"ru":[173,12288],"tr":[160,173,8203,12288],"zh-hans":[160,173,8203,12288],"zh-hant":[173,12288]}')}static getData(){return this._data||(this._data=new Set([...Object.values(XN.getRawData())].flat())),this._data}static isInvisibleCharacter(t){return XN.getData().has(t)}static get codePoints(){return XN.getData()}};XN._data=void 0;let aD=XN;var sbt={};let SU;const G8e=globalThis.vscode;var Mvn;if(typeof G8e<"u"&&typeof G8e.process<"u"){const e=G8e.process;SU={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else typeof process<"u"&&typeof((Mvn=process==null?void 0:process.versions)==null?void 0:Mvn.node)=="string"?SU={get platform(){return process.platform},get arch(){return process.arch},get env(){return sbt},cwd(){return sbt.VSCODE_CWD||process.cwd()}}:SU={get platform(){return mh?"win32":Tr?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const pme=SU.cwd,bme=SU.env,Eeo=SU.platform,Teo=65,Qeo=97,Deo=90,Beo=122,lD=46,tg=47,vk=92,VC=58,Reo=63;class q6n extends Error{constructor(t,n,r){let o;typeof n=="string"&&n.indexOf("not ")===0?(o="must not be",n=n.replace(/^not /,"")):o="must be";const s=t.indexOf(".")!==-1?"property":"argument";let a=`The "${t}" ${s} ${o} of type ${n}`;a+=`. Received type ${typeof r}`,super(a),this.code="ERR_INVALID_ARG_TYPE"}}function Ieo(e,t){if(e===null||typeof e!="object")throw new q6n(t,"Object",e)}function Qu(e,t){if(typeof e!="string")throw new q6n(t,"string",e)}const oE=Eeo==="win32";function Cs(e){return e===tg||e===vk}function eNe(e){return e===tg}function zC(e){return e>=Teo&&e<=Deo||e>=Qeo&&e<=Beo}function wme(e,t,n,r){let o="",s=0,a=-1,l=0,d=0;for(let u=0;u<=e.length;++u){if(u2){const h=o.lastIndexOf(n);h===-1?(o="",s=0):(o=o.slice(0,h),s=o.length-1-o.lastIndexOf(n)),a=u,l=0;continue}else if(o.length!==0){o="",s=0,a=u,l=0;continue}}t&&(o+=o.length>0?`${n}..`:"..",s=2)}else o.length>0?o+=`${n}${e.slice(a+1,u)}`:o=e.slice(a+1,u),s=u-a-1;a=u,l=0}else d===lD&&l!==-1?++l:l=-1}return o}function Meo(e){return e?`${e[0]==="."?"":"."}${e}`:""}function K6n(e,t){Ieo(t,"pathObject");const n=t.dir||t.root,r=t.base||`${t.name||""}${Meo(t.ext)}`;return n?n===t.root?`${n}${r}`:`${n}${e}${r}`:r}const w0={resolve(...e){let t="",n="",r=!1;for(let o=e.length-1;o>=-1;o--){let s;if(o>=0){if(s=e[o],Qu(s,`paths[${o}]`),s.length===0)continue}else t.length===0?s=pme():(s=bme[`=${t}`]||pme(),(s===void 0||s.slice(0,2).toLowerCase()!==t.toLowerCase()&&s.charCodeAt(2)===vk)&&(s=`${t}\\`));const a=s.length;let l=0,d="",u=!1;const h=s.charCodeAt(0);if(a===1)Cs(h)&&(l=1,u=!0);else if(Cs(h))if(u=!0,Cs(s.charCodeAt(1))){let g=2,m=g;for(;g2&&Cs(s.charCodeAt(2))&&(u=!0,l=3));if(d.length>0)if(t.length>0){if(d.toLowerCase()!==t.toLowerCase())continue}else t=d;if(r){if(t.length>0)break}else if(n=`${s.slice(l)}\\${n}`,r=u,u&&t.length>0)break}return n=wme(n,!r,"\\",Cs),r?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){Qu(e,"path");const t=e.length;if(t===0)return".";let n=0,r,o=!1;const s=e.charCodeAt(0);if(t===1)return eNe(s)?"\\":e;if(Cs(s))if(o=!0,Cs(e.charCodeAt(1))){let l=2,d=l;for(;l2&&Cs(e.charCodeAt(2))&&(o=!0,n=3));let a=n0&&Cs(e.charCodeAt(t-1))&&(a+="\\"),!o&&r===void 0&&e.includes(":")){if(a.length>=2&&zC(a.charCodeAt(0))&&a.charCodeAt(1)===VC)return`.\\${a}`;let l=e.indexOf(":");do if(l===t-1||Cs(e.charCodeAt(l+1)))return`.\\${a}`;while((l=e.indexOf(":",l+1))!==-1)}return r===void 0?o?`\\${a}`:a:o?`${r}\\${a}`:`${r}${a}`},isAbsolute(e){Qu(e,"path");const t=e.length;if(t===0)return!1;const n=e.charCodeAt(0);return Cs(n)||t>2&&zC(n)&&e.charCodeAt(1)===VC&&Cs(e.charCodeAt(2))},join(...e){if(e.length===0)return".";let t,n;for(let s=0;s0&&(t===void 0?t=n=a:t+=`\\${a}`)}if(t===void 0)return".";let r=!0,o=0;if(typeof n=="string"&&Cs(n.charCodeAt(0))){++o;const s=n.length;s>1&&Cs(n.charCodeAt(1))&&(++o,s>2&&(Cs(n.charCodeAt(2))?++o:r=!1))}if(r){for(;o=2&&(t=`\\${t.slice(o)}`)}return w0.normalize(t)},relative(e,t){if(Qu(e,"from"),Qu(t,"to"),e===t)return"";const n=w0.resolve(e),r=w0.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return"";if(n.length!==e.length||r.length!==t.length){const f=n.split("\\"),k=r.split("\\");f[f.length-1]===""&&f.pop(),k[k.length-1]===""&&k.pop();const A=f.length,p=k.length,b=Ab?k.slice(w).join("\\"):A>b?"..\\".repeat(A-1-w)+"..":"":"..\\".repeat(A-w)+k.slice(w).join("\\")}let o=0;for(;oo&&e.charCodeAt(s-1)===vk;)s--;const a=s-o;let l=0;for(;ll&&t.charCodeAt(d-1)===vk;)d--;const u=d-l,h=ah){if(t.charCodeAt(l+m)===vk)return r.slice(l+m+1);if(m===2)return r.slice(l+m)}a>h&&(e.charCodeAt(o+m)===vk?g=m:m===2&&(g=3)),g===-1&&(g=0)}let v="";for(m=o+g+1;m<=s;++m)(m===s||e.charCodeAt(m)===vk)&&(v+=v.length===0?"..":"\\..");return l+=g,v.length>0?`${v}${r.slice(l,d)}`:(r.charCodeAt(l)===vk&&++l,r.slice(l,d))},toNamespacedPath(e){if(typeof e!="string"||e.length===0)return e;const t=w0.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===vk){if(t.charCodeAt(1)===vk){const n=t.charCodeAt(2);if(n!==Reo&&n!==lD)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(zC(t.charCodeAt(0))&&t.charCodeAt(1)===VC&&t.charCodeAt(2)===vk)return`\\\\?\\${t}`;return t},dirname(e){Qu(e,"path");const t=e.length;if(t===0)return".";let n=-1,r=0;const o=e.charCodeAt(0);if(t===1)return Cs(o)?e:".";if(Cs(o)){if(n=r=1,Cs(e.charCodeAt(1))){let l=2,d=l;for(;l2&&Cs(e.charCodeAt(2))?3:2,r=n);let s=-1,a=!0;for(let l=t-1;l>=r;--l)if(Cs(e.charCodeAt(l))){if(!a){s=l;break}}else a=!1;if(s===-1){if(n===-1)return".";s=n}return e.slice(0,s)},basename(e,t){t!==void 0&&Qu(t,"suffix"),Qu(e,"path");let n=0,r=-1,o=!0,s;if(e.length>=2&&zC(e.charCodeAt(0))&&e.charCodeAt(1)===VC&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let a=t.length-1,l=-1;for(s=e.length-1;s>=n;--s){const d=e.charCodeAt(s);if(Cs(d)){if(!o){n=s+1;break}}else l===-1&&(o=!1,l=s+1),a>=0&&(d===t.charCodeAt(a)?--a===-1&&(r=s):(a=-1,r=l))}return n===r?r=l:r===-1&&(r=e.length),e.slice(n,r)}for(s=e.length-1;s>=n;--s)if(Cs(e.charCodeAt(s))){if(!o){n=s+1;break}}else r===-1&&(o=!1,r=s+1);return r===-1?"":e.slice(n,r)},extname(e){Qu(e,"path");let t=0,n=-1,r=0,o=-1,s=!0,a=0;e.length>=2&&e.charCodeAt(1)===VC&&zC(e.charCodeAt(0))&&(t=r=2);for(let l=e.length-1;l>=t;--l){const d=e.charCodeAt(l);if(Cs(d)){if(!s){r=l+1;break}continue}o===-1&&(s=!1,o=l+1),d===lD?n===-1?n=l:a!==1&&(a=1):n!==-1&&(a=-1)}return n===-1||o===-1||a===0||a===1&&n===o-1&&n===r+1?"":e.slice(n,o)},format:K6n.bind(null,"\\"),parse(e){Qu(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;const n=e.length;let r=0,o=e.charCodeAt(0);if(n===1)return Cs(o)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(Cs(o)){if(r=1,Cs(e.charCodeAt(1))){let g=2,m=g;for(;g0&&(t.root=e.slice(0,r));let s=-1,a=r,l=-1,d=!0,u=e.length-1,h=0;for(;u>=r;--u){if(o=e.charCodeAt(u),Cs(o)){if(!d){a=u+1;break}continue}l===-1&&(d=!1,l=u+1),o===lD?s===-1?s=u:h!==1&&(h=1):s!==-1&&(h=-1)}return l!==-1&&(s===-1||h===0||h===1&&s===l-1&&s===a+1?t.base=t.name=e.slice(a,l):(t.name=e.slice(a,s),t.base=e.slice(a,l),t.ext=e.slice(s,l))),a>0&&a!==r?t.dir=e.slice(0,a-1):t.dir=t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},Peo=(()=>{if(oE){const e=/\\/g;return()=>{const t=pme().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>pme()})(),Jc={resolve(...e){let t="",n=!1;for(let r=e.length-1;r>=0&&!n;r--){const o=e[r];Qu(o,`paths[${r}]`),o.length!==0&&(t=`${o}/${t}`,n=o.charCodeAt(0)===tg)}if(!n){const r=Peo();t=`${r}/${t}`,n=r.charCodeAt(0)===tg}return t=wme(t,!n,"/",eNe),n?`/${t}`:t.length>0?t:"."},normalize(e){if(Qu(e,"path"),e.length===0)return".";const t=e.charCodeAt(0)===tg,n=e.charCodeAt(e.length-1)===tg;return e=wme(e,!t,"/",eNe),e.length===0?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute(e){return Qu(e,"path"),e.length>0&&e.charCodeAt(0)===tg},join(...e){if(e.length===0)return".";const t=[];for(let n=0;n0&&t.push(r)}return t.length===0?".":Jc.normalize(t.join("/"))},relative(e,t){if(Qu(e,"from"),Qu(t,"to"),e===t||(e=Jc.resolve(e),t=Jc.resolve(t),e===t))return"";const n=1,r=e.length,o=r-n,s=1,a=t.length-s,l=ol){if(t.charCodeAt(s+u)===tg)return t.slice(s+u+1);if(u===0)return t.slice(s+u)}else o>l&&(e.charCodeAt(n+u)===tg?d=u:u===0&&(d=0));let h="";for(u=n+d+1;u<=r;++u)(u===r||e.charCodeAt(u)===tg)&&(h+=h.length===0?"..":"/..");return`${h}${t.slice(s+d)}`},toNamespacedPath(e){return e},dirname(e){if(Qu(e,"path"),e.length===0)return".";const t=e.charCodeAt(0)===tg;let n=-1,r=!0;for(let o=e.length-1;o>=1;--o)if(e.charCodeAt(o)===tg){if(!r){n=o;break}}else r=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)},basename(e,t){t!==void 0&&Qu(t,"suffix"),Qu(e,"path");let n=0,r=-1,o=!0,s;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let a=t.length-1,l=-1;for(s=e.length-1;s>=0;--s){const d=e.charCodeAt(s);if(d===tg){if(!o){n=s+1;break}}else l===-1&&(o=!1,l=s+1),a>=0&&(d===t.charCodeAt(a)?--a===-1&&(r=s):(a=-1,r=l))}return n===r?r=l:r===-1&&(r=e.length),e.slice(n,r)}for(s=e.length-1;s>=0;--s)if(e.charCodeAt(s)===tg){if(!o){n=s+1;break}}else r===-1&&(o=!1,r=s+1);return r===-1?"":e.slice(n,r)},extname(e){Qu(e,"path");let t=-1,n=0,r=-1,o=!0,s=0;for(let a=e.length-1;a>=0;--a){const l=e[a];if(l==="/"){if(!o){n=a+1;break}continue}r===-1&&(o=!1,r=a+1),l==="."?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||r===-1||s===0||s===1&&t===r-1&&t===n+1?"":e.slice(t,r)},format:K6n.bind(null,"/"),parse(e){Qu(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;const n=e.charCodeAt(0)===tg;let r;n?(t.root="/",r=1):r=0;let o=-1,s=0,a=-1,l=!0,d=e.length-1,u=0;for(;d>=r;--d){const h=e.charCodeAt(d);if(h===tg){if(!l){s=d+1;break}continue}a===-1&&(l=!1,a=d+1),h===lD?o===-1?o=d:u!==1&&(u=1):o!==-1&&(u=-1)}if(a!==-1){const h=s===0&&n?1:s;o===-1||u===0||u===1&&o===a-1&&o===s+1?t.base=t.name=e.slice(h,a):(t.name=e.slice(h,o),t.base=e.slice(h,a),t.ext=e.slice(o,a))}return s>0?t.dir=e.slice(0,s-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};Jc.win32=w0.win32=w0;Jc.posix=w0.posix=Jc;const J6n=oE?w0.normalize:Jc.normalize,Feo=oE?w0.resolve:Jc.resolve,Neo=oE?w0.relative:Jc.relative,Xue=oE?w0.dirname:Jc.dirname,JS=oE?w0.basename:Jc.basename,Ueo=oE?w0.extname:Jc.extname,o3=oE?w0.sep:Jc.sep,jeo=/^\w[\w\d+.-]*$/,Weo=/^\//,Veo=/^\/\//;function zeo(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&&!jeo.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path){if(e.authority){if(!Weo.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(Veo.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 Heo(e,t){return!e&&!t?"file":e}function $eo(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==Mb&&(t=Mb+t):t=Mb;break}return t}const Tc="",Mb="/",Xeo=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;let vi=class Gue{static isUri(t){return t instanceof Gue?!0:!t||typeof t!="object"?!1:typeof t.authority=="string"&&typeof t.fragment=="string"&&typeof t.path=="string"&&typeof t.query=="string"&&typeof t.scheme=="string"&&typeof t.fsPath=="string"&&typeof t.with=="function"&&typeof t.toString=="function"}constructor(t,n,r,o,s,a=!1){typeof t=="object"?(this.scheme=t.scheme||Tc,this.authority=t.authority||Tc,this.path=t.path||Tc,this.query=t.query||Tc,this.fragment=t.fragment||Tc):(this.scheme=Heo(t,a),this.authority=n||Tc,this.path=$eo(this.scheme,r||Tc),this.query=o||Tc,this.fragment=s||Tc,zeo(this,a))}get fsPath(){return Ome(this,!1)}with(t){if(!t)return this;let{scheme:n,authority:r,path:o,query:s,fragment:a}=t;return n===void 0?n=this.scheme:n===null&&(n=Tc),r===void 0?r=this.authority:r===null&&(r=Tc),o===void 0?o=this.path:o===null&&(o=Tc),s===void 0?s=this.query:s===null&&(s=Tc),a===void 0?a=this.fragment:a===null&&(a=Tc),n===this.scheme&&r===this.authority&&o===this.path&&s===this.query&&a===this.fragment?this:new AP(n,r,o,s,a)}static parse(t,n=!1){const r=Xeo.exec(t);return r?new AP(r[2]||Tc,lle(r[4]||Tc),lle(r[5]||Tc),lle(r[7]||Tc),lle(r[9]||Tc),n):new AP(Tc,Tc,Tc,Tc,Tc)}static file(t){let n=Tc;if(mh&&(t=t.replace(/\\/g,Mb)),t[0]===Mb&&t[1]===Mb){const r=t.indexOf(Mb,2);r===-1?(n=t.substring(2),t=Mb):(n=t.substring(2,r),t=t.substring(r)||Mb)}return new AP("file",n,t,Tc,Tc)}static from(t,n){return new AP(t.scheme,t.authority,t.path,t.query,t.fragment,n)}static joinPath(t,...n){if(!t.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let r;return mh&&t.scheme==="file"?r=Gue.file(w0.join(Ome(t,!0),...n)).path:r=Jc.join(t.path,...n),t.with({path:r})}toString(t=!1){return tNe(this,t)}toJSON(){return this}static revive(t){if(t){if(t instanceof Gue)return t;{const n=new AP(t);return n._formatted=t.external??null,n._fsPath=t._sep===eEn?t.fsPath??null:null,n}}else return t}};const eEn=mh?1:void 0;let AP=class extends vi{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=Ome(this,!1)),this._fsPath}toString(t=!1){return t?tNe(this,!0):(this._formatted||(this._formatted=tNe(this,!1)),this._formatted)}toJSON(){const t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=eEn),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t}};const tEn={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 abt(e,t,n){let r,o=-1;for(let s=0;s=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||a===45||a===46||a===95||a===126||t&&a===47||n&&a===91||n&&a===93||n&&a===58)o!==-1&&(r+=encodeURIComponent(e.substring(o,s)),o=-1),r!==void 0&&(r+=e.charAt(s));else{r===void 0&&(r=e.substr(0,s));const l=tEn[a];l!==void 0?(o!==-1&&(r+=encodeURIComponent(e.substring(o,s)),o=-1),r+=l):o===-1&&(o=s)}}return o!==-1&&(r+=encodeURIComponent(e.substring(o))),r!==void 0?r:e}function Geo(e){let t;for(let n=0;n1&&e.scheme==="file"?n=`//${e.authority}${e.path}`:e.path.charCodeAt(0)===47&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&e.path.charCodeAt(2)===58?t?n=e.path.substr(1):n=e.path[1].toLowerCase()+e.path.substr(2):n=e.path,mh&&(n=n.replace(/\//g,"\\")),n}function tNe(e,t){const n=t?Geo:abt;let r="",{scheme:o,authority:s,path:a,query:l,fragment:d}=e;if(o&&(r+=o,r+=":"),(s||o==="file")&&(r+=Mb,r+=Mb),s){let u=s.indexOf("@");if(u!==-1){const h=s.substr(0,u);s=s.substr(u+1),u=h.lastIndexOf(":"),u===-1?r+=n(h,!1,!1):(r+=n(h.substr(0,u),!1,!1),r+=":",r+=n(h.substr(u+1),!1,!0)),r+="@"}s=s.toLowerCase(),u=s.lastIndexOf(":"),u===-1?r+=n(s,!1,!0):(r+=n(s.substr(0,u),!1,!0),r+=s.substr(u))}if(a){if(a.length>=3&&a.charCodeAt(0)===47&&a.charCodeAt(2)===58){const u=a.charCodeAt(1);u>=65&&u<=90&&(a=`/${String.fromCharCode(u+32)}:${a.substr(3)}`)}else if(a.length>=2&&a.charCodeAt(1)===58){const u=a.charCodeAt(0);u>=65&&u<=90&&(a=`${String.fromCharCode(u+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return l&&(r+="?",r+=n(l,!1,!1)),d&&(r+="#",r+=t?d:abt(d,!1,!1)),r}function nEn(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+nEn(e.substr(3)):e}}const lbt=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function lle(e){return e.match(lbt)?e.replace(lbt,t=>nEn(t)):e}var Ci;(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.vscodeNotebookCellMetadataDiff="vscode-notebook-cell-metadata-diff",e.vscodeNotebookCellOutput="vscode-notebook-cell-output",e.vscodeNotebookCellOutputDiff="vscode-notebook-cell-output-diff",e.vscodeNotebookMetadata="vscode-notebook-metadata",e.vscodeInteractiveInput="vscode-interactive-input",e.vscodeSettings="vscode-settings",e.vscodeWorkspaceTrust="vscode-workspace-trust",e.vscodeTerminal="vscode-terminal",e.vscodeChatCodeBlock="vscode-chat-code-block",e.vscodeChatCodeCompareBlock="vscode-chat-code-compare-block",e.vscodeChatEditor="vscode-chat-editor",e.vscodeChatInput="chatSessionInput",e.vscodeLocalChatSession="vscode-chat-session",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",e.commentsInput="comment",e.codeSetting="code-setting",e.outputChannel="output",e.accessibleView="accessible-view",e.chatEditingSnapshotScheme="chat-editing-snapshot-text-model",e.chatEditingModel="chat-editing-text-model",e.copilotPr="copilot-pr"})(Ci||(Ci={}));function kbe(e,t){return vi.isUri(e)?rQ(e.scheme,t):BJe(e,t+":")}function nNe(e,...t){return t.some(n=>kbe(e,n))}const Yeo="tkn";class Zeo{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._serverRootPath="/"}setPreferredWebSchema(t){this._preferredWebSchema=t}get _remoteResourcesPath(){return Jc.join(this._serverRootPath,Ci.vscodeRemoteResource)}rewrite(t){if(this._delegate)try{return this._delegate(t)}catch(l){return zi(l),t}const n=t.authority;let r=this._hosts[n];r&&r.indexOf(":")!==-1&&r.indexOf("[")===-1&&(r=`[${r}]`);const o=this._ports[n],s=this._connectionTokens[n];let a=`path=${encodeURIComponent(t.path)}`;return typeof s=="string"&&(a+=`&${Yeo}=${encodeURIComponent(s)}`),vi.from({scheme:qy?this._preferredWebSchema:Ci.vscodeRemoteResource,authority:`${r}:${o}`,path:this._remoteResourcesPath,query:a})}}const iEn=new Zeo,qeo="vscode-app",vq=class vq{uriToBrowserUri(t){return t.scheme===Ci.vscodeRemote?iEn.rewrite(t):t.scheme===Ci.file&&(v3||TJr===`${Ci.vscodeFileResource}://${vq.FALLBACK_AUTHORITY}`)?t.with({scheme:Ci.vscodeFileResource,authority:t.authority||vq.FALLBACK_AUTHORITY,query:null,fragment:null}):t}};vq.FALLBACK_AUTHORITY=qeo;let iNe=vq;const rEn=new iNe;var rNe;(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 n="vscode-coi";function r(s){let a;typeof s=="string"?a=new URL(s).searchParams:s instanceof URL?a=s.searchParams:vi.isUri(s)&&(a=new URL(s.toString(!0)).searchParams);const l=a==null?void 0:a.get(n);if(l)return t.get(l)}e.getHeadersFromQuery=r;function o(s,a,l){if(!globalThis.crossOriginIsolated)return;const d=a&&l?"3":l?"2":"1";s instanceof URLSearchParams?s.set(n,d):s[n]=d}e.addSearchParam=o})(rNe||(rNe={}));const cbt=typeof Buffer<"u";new zh(()=>new Uint8Array(256));let Y8e;class B9{static wrap(t){return cbt&&!Buffer.isBuffer(t)&&(t=Buffer.from(t.buffer,t.byteOffset,t.byteLength)),new B9(t)}constructor(t){this.buffer=t,this.byteLength=this.buffer.byteLength}toString(){return cbt?this.buffer.toString():(Y8e||(Y8e=new TextDecoder),Y8e.decode(this.buffer))}}function Keo(e,t){return e[t+0]<<0>>>0|e[t+1]<<8>>>0}function Jeo(e,t,n){e[n+0]=t&255,t=t>>>8,e[n+1]=t&255}function kb(e,t){return e[t]*2**24+e[t+1]*2**16+e[t+2]*2**8+e[t+3]}function vb(e,t,n){e[n+3]=t,t=t>>>8,e[n+2]=t,t=t>>>8,e[n+1]=t,t=t>>>8,e[n]=t}function dbt(e,t){return e[t]}function ubt(e,t,n){e[n]=t}const hbt="0123456789abcdef";function eto({buffer:e}){let t="";for(let n=0;n>>4],t+=hbt[r&15]}return t}function Lie(e){return vbe(e,0)}function vbe(e,t){switch(typeof e){case"object":return e===null?LS(349,t):Array.isArray(e)?nto(e,t):ito(e,t);case"string":return NJe(e,t);case"boolean":return tto(e,t);case"number":return LS(e,t);case"undefined":return LS(937,t);default:return LS(617,t)}}function LS(e,t){return(t<<5)-t+e|0}function tto(e,t){return LS(e?433:863,t)}function NJe(e,t){t=LS(149417,t);for(let n=0,r=e.length;nvbe(r,n),t)}function ito(e,t){return t=LS(181387,t),Object.keys(e).sort().reduce((n,r)=>(n=NJe(r,n),vbe(e[r],n)),t)}function Z8e(e,t,n=32){const r=n-t,o=~((1<>>r)>>>0}function sX(e,t=32){return e instanceof ArrayBuffer?eto(B9.wrap(new Uint8Array(e))):(e>>>0).toString(16).padStart(t/4,"0")}const Ave=class Ave{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(t){const n=t.length;if(n===0)return;const r=this._buff;let o=this._buffLen,s=this._leftoverHighSurrogate,a,l;for(s!==0?(a=s,l=-1,s=0):(a=t.charCodeAt(0),l=0);;){let d=a;if(Id(a))if(l+1>>6,t[n++]=128|(r&63)>>>0):r<65536?(t[n++]=224|(r&61440)>>>12,t[n++]=128|(r&4032)>>>6,t[n++]=128|(r&63)>>>0):(t[n++]=240|(r&1835008)>>>18,t[n++]=128|(r&258048)>>>12,t[n++]=128|(r&4032)>>>6,t[n++]=128|(r&63)>>>0),n>=64&&(this._step(),n-=64,this._totalLen+=64,t[0]=t[64],t[1]=t[65],t[2]=t[66]),n}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()),sX(this._h0)+sX(this._h1)+sX(this._h2)+sX(this._h3)+sX(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,this._buff.subarray(this._buffLen).fill(0),this._buffLen>56&&(this._step(),this._buff.fill(0));const t=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(t/4294967296),!1),this._buffDV.setUint32(60,t%4294967296,!1),this._step()}_step(){const t=Ave._bigBlock32,n=this._buffDV;for(let g=0;g<64;g+=4)t.setUint32(g,n.getUint32(g,!1),!1);for(let g=64;g<320;g+=4)t.setUint32(g,Z8e(t.getUint32(g-12,!1)^t.getUint32(g-32,!1)^t.getUint32(g-56,!1)^t.getUint32(g-64,!1),1),!1);let r=this._h0,o=this._h1,s=this._h2,a=this._h3,l=this._h4,d,u,h;for(let g=0;g<80;g++)g<20?(d=o&s|~o&a,u=1518500249):g<40?(d=o^s^a,u=1859775393):g<60?(d=o&s|o&a|s&a,u=2400959708):(d=o^s^a,u=3395469782),h=Z8e(r,5)+d+l+u+t.getUint32(g*4,!1)&4294967295,l=a,a=s,s=Z8e(o,30),o=r,r=h;this._h0=this._h0+r&4294967295,this._h1=this._h1+o&4294967295,this._h2=this._h2+s&4294967295,this._h3=this._h3+a&4294967295,this._h4=this._h4+l&4294967295}};Ave._bigBlock32=new DataView(new ArrayBuffer(320));let oNe=Ave;function rto(e){if(e.length===0)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function Na(e,t,n=(r,o)=>r===o){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(let r=0,o=e.length;rn(e[r],t))}function UJe(e,t){let n=0,r=e-1;for(;n<=r;){const o=(n+r)/2|0,s=t(o);if(s<0)n=o+1;else if(s>0)r=o-1;else return o}return-(n+1)}function sNe(e,t,n){if(e=e|0,e>=t.length)throw new TypeError("invalid index");const r=t[Math.floor(t.length*Math.random())],o=[],s=[],a=[];for(const l of t){const d=n(l,r);d<0?o.push(l):d>0?s.push(l):a.push(l)}return e!!t)}function gbt(e){let t=0;for(let n=0;n0}function M8(e,t=n=>n){const n=new Set;return e.filter(r=>{const o=t(r);return n.has(o)?!1:(n.add(o),!0)})}function Xg(e,t){let n=typeof t=="number"?e:0;typeof t=="number"?n=e:(n=0,t=e);const r=[];if(n<=t)for(let o=n;ot;o--)r.push(o);return r}function Abe(e,t,n){const r=e.slice(0,t),o=e.slice(t);return r.concat(n,o)}function q8e(e,t){const n=e.indexOf(t);n>-1&&(e.splice(n,1),e.unshift(t))}function cle(e,t){const n=e.indexOf(t);n>-1&&(e.splice(n,1),e.push(t))}function aNe(e,t){for(const n of t)e.push(n)}function ato(e,t){const n=[];for(const r of e){const o=t(r);o!==void 0&&n.push(o)}return n}function WJe(e){return Array.isArray(e)?e:[e]}function lto(e,t,n){const r=aEn(e,t),o=e.length,s=n.length;e.length=o+s;for(let a=o-1;a>=r;a--)e[a+s]=e[a];for(let a=0;a0}e.isGreaterThan=r;function o(s){return s===0}e.isNeitherLessOrGreaterThan=o,e.greaterThan=1,e.lessThan=-1,e.neitherLessOrGreaterThan=0})(R9||(R9={}));function qh(e,t){return(n,r)=>t(e(n),e(r))}function cto(...e){return(t,n)=>{for(const r of e){const o=r(t,n);if(!R9.isNeitherLessOrGreaterThan(o))return o}return R9.neitherLessOrGreaterThan}}const T0=(e,t)=>e-t,lEn=(e,t)=>T0(e?1:0,t?1:0);function cEn(e){return(t,n)=>-e(t,n)}function dto(e){return(t,n)=>t===void 0?n===void 0?R9.neitherLessOrGreaterThan:R9.lessThan:n===void 0?R9.greaterThan:e(t,n)}class P8{constructor(t){this.firstIdx=0,this.items=t,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(t){let n=this.firstIdx;for(;n=0&&t(this.items[n]);)n--;const r=n===this.lastIdx?null:this.items.slice(n+1,this.lastIdx+1);return this.lastIdx=n,r}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const t=this.items[this.firstIdx];return this.firstIdx++,t}takeCount(t){const n=this.items.slice(this.firstIdx,this.firstIdx+t);return this.firstIdx+=t,n}}const GN=class GN{constructor(t){this.iterate=t}toArray(){const t=[];return this.iterate(n=>(t.push(n),!0)),t}filter(t){return new GN(n=>this.iterate(r=>t(r)?n(r):!0))}map(t){return new GN(n=>this.iterate(r=>n(t(r))))}findLast(t){let n;return this.iterate(r=>(t(r)&&(n=r),!0)),n}findLastMaxBy(t){let n,r=!0;return this.iterate(o=>((r||R9.isGreaterThan(t(o,n)))&&(r=!1,n=o),!0)),n}};GN.empty=new GN(t=>{});let cD=GN;class _me{constructor(t){this._indexMap=t}static createSortPermutation(t,n){const r=Array.from(t.keys()).sort((o,s)=>n(t[o],t[s]));return new _me(r)}apply(t){return t.map((n,r)=>t[this._indexMap[r]])}inverse(){const t=this._indexMap.slice();for(let n=0;nt+n,0)}let z7;function uto(e){z7?z7 instanceof mbt?z7.loggers.push(e):z7=new mbt([z7,e]):z7=e}function Of(){return z7}class mbt{constructor(t){this.loggers=t}handleObservableCreated(t,n){for(const r of this.loggers)r.handleObservableCreated(t,n)}handleOnListenerCountChanged(t,n){for(const r of this.loggers)r.handleOnListenerCountChanged(t,n)}handleObservableUpdated(t,n){for(const r of this.loggers)r.handleObservableUpdated(t,n)}handleAutorunCreated(t,n){for(const r of this.loggers)r.handleAutorunCreated(t,n)}handleAutorunDisposed(t){for(const n of this.loggers)n.handleAutorunDisposed(t)}handleAutorunDependencyChanged(t,n,r){for(const o of this.loggers)o.handleAutorunDependencyChanged(t,n,r)}handleAutorunStarted(t){for(const n of this.loggers)n.handleAutorunStarted(t)}handleAutorunFinished(t){for(const n of this.loggers)n.handleAutorunFinished(t)}handleDerivedDependencyChanged(t,n,r){for(const o of this.loggers)o.handleDerivedDependencyChanged(t,n,r)}handleDerivedCleared(t){for(const n of this.loggers)n.handleDerivedCleared(t)}handleBeginTransaction(t){for(const n of this.loggers)n.handleBeginTransaction(t)}handleEndTransaction(t){for(const n of this.loggers)n.handleEndTransaction(t)}}var Hd;(function(e){let t=!1;function n(){t=!0}e.enable=n;function r(){if(!t)return;const o=Error,s=o.stackTraceLimit;o.stackTraceLimit=3;const a=new Error().stack;return o.stackTraceLimit=s,VJe.fromStack(a,2)}e.ofCaller=r})(Hd||(Hd={}));class VJe{static fromStack(t,n){const r=t.split(` -`),o=hto(r[n+1]);if(o)return new VJe(o.fileName,o.line,o.column,o.id)}constructor(t,n,r,o){this.fileName=t,this.line=n,this.column=r,this.id=o}}function hto(e){const t=e.match(/\((.*):(\d+):(\d+)\)/);if(t)return{fileName:t[1],line:parseInt(t[2]),column:parseInt(t[3]),id:e};const n=e.match(/at ([^\(\)]*):(\d+):(\d+)/);if(n)return{fileName:n[1],line:parseInt(n[2]),column:parseInt(n[3]),id:e}}const f2=(e,t)=>e===t;function VK(e=f2){return(t,n)=>Na(t,n,e)}function zJe(){return(e,t)=>e.equals(t)}function oQ(e,t,n){if(n!==void 0){const r=e;return r==null||t===void 0||t===null?t===r:n(r,t)}else{const r=e;return(o,s)=>o==null||s===void 0||s===null?s===o:r(o,s)}}function lNe(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{const a=HJe(s);if(a!==void 0)return a;const d=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(s.toString());if(d)return`${this.debugName}.${d[2]}`;if(!o)return`${this.debugName} (mapped)`},debugReferenceFn:s},a=>s(this.read(a),a),r)}flatten(){return dNe({owner:void 0,debugName:()=>`${this.debugName} (flattened)`},t=>this.read(t).read(t))}recomputeInitiallyAndOnChange(t,n){return t.add(uEn(this,n)),this}}class Vz extends hEn{constructor(t){var n;super(),this._observers=new Set,(n=Of())==null||n.handleObservableCreated(this,t)}addObserver(t){var r;const n=this._observers.size;this._observers.add(t),n===0&&this.onFirstObserverAdded(),n!==this._observers.size&&((r=Of())==null||r.handleOnListenerCountChanged(this,this._observers.size))}removeObserver(t){var r;const n=this._observers.delete(t);n&&this._observers.size===0&&this.onLastObserverRemoved(),n&&((r=Of())==null||r.handleOnListenerCountChanged(this,this._observers.size))}onFirstObserverAdded(){}onLastObserverRemoved(){}debugGetObservers(){return this._observers}}function pto(e){switch(e){case 0:return"initial";case 1:return"dependenciesMightHaveChanged";case 2:return"stale";case 3:return"upToDate";default:return""}}class pv extends Vz{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(t,n,r,o=void 0,s,a){var l;super(a),this._debugNameData=t,this._computeFn=n,this._changeTracker=r,this._handleLastObserverRemoved=o,this._equalityComparator=s,this._state=0,this._value=void 0,this._updateCount=0,this._dependencies=new Set,this._dependenciesToBeRemoved=new Set,this._changeSummary=void 0,this._isUpdating=!1,this._isComputing=!1,this._didReportChange=!1,this._isInBeforeUpdate=!1,this._isReaderValid=!1,this._store=void 0,this._delayedStore=void 0,this._removedObserverToCallEndUpdateOn=null,this._changeSummary=(l=this._changeTracker)==null?void 0:l.createChangeSummary(void 0)}onLastObserverRemoved(){var t,n;this._state=0,this._value=void 0,(t=Of())==null||t.handleDerivedCleared(this);for(const r of this._dependencies)r.removeObserver(this);this._dependencies.clear(),this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._delayedStore!==void 0&&(this._delayedStore.dispose(),this._delayedStore=void 0),(n=this._handleLastObserverRemoved)==null||n.call(this)}get(){var n,r;if(this._isComputing,this._observers.size===0){let o;try{this._isReaderValid=!0;let s;this._changeTracker&&(s=this._changeTracker.createChangeSummary(void 0),(r=(n=this._changeTracker).beforeUpdate)==null||r.call(n,this,s)),o=this._computeFn(this,s)}finally{this._isReaderValid=!1}return this.onLastObserverRemoved(),o}else{do{if(this._state===1){for(const o of this._dependencies)if(o.reportChanges(),this._state===2)break}this._state===1&&(this._state=3),this._state!==3&&this._recompute()}while(this._state!==3);return this._value}}_recompute(){var r,o,s,a;let t=!1;this._isComputing=!0,this._didReportChange=!1;const n=this._dependenciesToBeRemoved;this._dependenciesToBeRemoved=this._dependencies,this._dependencies=n;try{const l=this._changeSummary;this._isReaderValid=!0,this._changeTracker&&(this._isInBeforeUpdate=!0,(o=(r=this._changeTracker).beforeUpdate)==null||o.call(r,this,l),this._isInBeforeUpdate=!1,this._changeSummary=(s=this._changeTracker)==null?void 0:s.createChangeSummary(l));const d=this._state!==0,u=this._value;this._state=3;const h=this._delayedStore;h!==void 0&&(this._delayedStore=void 0);try{this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._value=this._computeFn(this,l)}finally{this._isReaderValid=!1;for(const g of this._dependenciesToBeRemoved)g.removeObserver(this);this._dependenciesToBeRemoved.clear(),h!==void 0&&h.dispose()}t=this._didReportChange||d&&!this._equalityComparator(u,this._value),(a=Of())==null||a.handleObservableUpdated(this,{oldValue:u,newValue:this._value,change:void 0,didChange:t,hadValue:d})}catch(l){fme(l)}if(this._isComputing=!1,!this._didReportChange&&t)for(const l of this._observers)l.handleChange(this,void 0);else this._didReportChange=!1}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(t){if(this._isUpdating)throw new ui("Cyclic deriveds are not supported yet!");this._updateCount++,this._isUpdating=!0;try{const n=this._updateCount===1;if(this._state===3&&(this._state=1,!n))for(const r of this._observers)r.handlePossibleChange(this);if(n)for(const r of this._observers)r.beginUpdate(this)}finally{this._isUpdating=!1}}endUpdate(t){if(this._updateCount--,this._updateCount===0){const n=[...this._observers];for(const r of n)r.endUpdate(this);if(this._removedObserverToCallEndUpdateOn){const r=[...this._removedObserverToCallEndUpdateOn];this._removedObserverToCallEndUpdateOn=null;for(const o of r)o.endUpdate(this)}}b6(()=>this._updateCount>=0)}handlePossibleChange(t){if(this._state===3&&this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)){this._state=1;for(const n of this._observers)n.handlePossibleChange(this)}}handleChange(t,n){var r;if(this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)||this._isInBeforeUpdate){(r=Of())==null||r.handleDerivedDependencyChanged(this,t,n);let o=!1;try{o=this._changeTracker?this._changeTracker.handleChange({changedObservable:t,change:n,didChange:a=>a===t},this._changeSummary):!0}catch(a){fme(a)}const s=this._state===3;if(o&&(this._state===1||s)&&(this._state=2,s))for(const a of this._observers)a.handlePossibleChange(this)}}_ensureReaderValid(){if(!this._isReaderValid)throw new ui("The reader object cannot be used outside its compute function!")}readObservable(t){this._ensureReaderValid(),t.addObserver(this);const n=t.get();return this._dependencies.add(t),this._dependenciesToBeRemoved.delete(t),n}get store(){return this._ensureReaderValid(),this._store===void 0&&(this._store=new xt),this._store}addObserver(t){const n=!this._observers.has(t)&&this._updateCount>0;super.addObserver(t),n&&(this._removedObserverToCallEndUpdateOn&&this._removedObserverToCallEndUpdateOn.has(t)?this._removedObserverToCallEndUpdateOn.delete(t):t.beginUpdate(this))}removeObserver(t){this._observers.has(t)&&this._updateCount>0&&(this._removedObserverToCallEndUpdateOn||(this._removedObserverToCallEndUpdateOn=new Set),this._removedObserverToCallEndUpdateOn.add(t)),super.removeObserver(t)}debugGetState(){return{state:this._state,stateStr:pto(this._state),updateCount:this._updateCount,isComputing:this._isComputing,dependencies:this._dependencies,value:this._value}}debugSetValue(t){this._value=t}debugRecompute(){this._isComputing?this._state=2:this._recompute()}setValue(t,n,r){this._value=t;const o=this._observers;n.updateObserver(this,this);for(const s of o)s.handleChange(this,r)}}class fEn extends pv{constructor(t,n,r,o=void 0,s,a,l){super(t,n,r,o,s,l),this.set=a}}function Rt(e,t,n=Hd.ofCaller()){return t!==void 0?new pv(new tf(e,void 0,t),t,void 0,void 0,f2,n):new pv(new tf(void 0,void 0,e),e,void 0,void 0,f2,n)}function $Je(e,t,n,r=Hd.ofCaller()){return new fEn(new tf(e,void 0,t),t,void 0,void 0,f2,n,r)}function Vh(e,t,n=Hd.ofCaller()){return new pv(new tf(e.owner,e.debugName,e.debugReferenceFn),t,void 0,e.onLastObserverRemoved,e.equalsFn??f2,n)}vto(Vh);function pbt(e,t,n=Hd.ofCaller()){return new pv(new tf(e.owner,e.debugName,void 0),t,e.changeTracker,void 0,e.equalityComparer??f2,n)}function vv(e,t,n=Hd.ofCaller()){let r,o;t===void 0?(r=e,o=void 0):(o=e,r=t);let s;return new pv(new tf(o,void 0,r),a=>{s?s.clear():s=new xt;const l=r(a);return l&&s.add(l),l},void 0,()=>{s&&(s.dispose(),s=void 0)},f2,n)}function bto(e){switch(e){case 1:return"dependenciesMightHaveChanged";case 2:return"stale";case 3:return"upToDate";default:return""}}class zK{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(t,n,r,o){var s,a;this._debugNameData=t,this._runFn=n,this._changeTracker=r,this._state=2,this._updateCount=0,this._disposed=!1,this._dependencies=new Set,this._dependenciesToBeRemoved=new Set,this._isRunning=!1,this._store=void 0,this._delayedStore=void 0,this._changeSummary=(s=this._changeTracker)==null?void 0:s.createChangeSummary(void 0),(a=Of())==null||a.handleAutorunCreated(this,o),this._run()}dispose(){var t;if(!this._disposed){this._disposed=!0;for(const n of this._dependencies)n.removeObserver(this);this._dependencies.clear(),this._store!==void 0&&this._store.dispose(),this._delayedStore!==void 0&&this._delayedStore.dispose(),(t=Of())==null||t.handleAutorunDisposed(this)}}_run(){var n,r,o,s;const t=this._dependenciesToBeRemoved;this._dependenciesToBeRemoved=this._dependencies,this._dependencies=t,this._state=3;try{if(!this._disposed){(n=Of())==null||n.handleAutorunStarted(this);const a=this._changeSummary,l=this._delayedStore;l!==void 0&&(this._delayedStore=void 0);try{this._isRunning=!0,this._changeTracker&&((o=(r=this._changeTracker).beforeUpdate)==null||o.call(r,this,a),this._changeSummary=this._changeTracker.createChangeSummary(a)),this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._runFn(this,a)}catch(d){fme(d)}finally{this._isRunning=!1,l!==void 0&&l.dispose()}}}finally{this._disposed||(s=Of())==null||s.handleAutorunFinished(this);for(const a of this._dependenciesToBeRemoved)a.removeObserver(this);this._dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(t){this._state===3&&(this._state=1),this._updateCount++}endUpdate(t){try{if(this._updateCount===1)do{if(this._state===1){this._state=3;for(const n of this._dependencies)if(n.reportChanges(),this._state===2)break}this._state!==3&&this._run()}while(this._state!==3)}finally{this._updateCount--}b6(()=>this._updateCount>=0)}handlePossibleChange(t){this._state===3&&this._isDependency(t)&&(this._state=1)}handleChange(t,n){var r;if(this._isDependency(t)){(r=Of())==null||r.handleAutorunDependencyChanged(this,t,n);try{(this._changeTracker?this._changeTracker.handleChange({changedObservable:t,change:n,didChange:s=>s===t},this._changeSummary):!0)&&(this._state=2)}catch(o){fme(o)}}}_isDependency(t){return this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)}_ensureNoRunning(){if(!this._isRunning)throw new ui("The reader object cannot be used outside its compute function!")}readObservable(t){if(this._ensureNoRunning(),this._disposed)return t.get();t.addObserver(this);const n=t.get();return this._dependencies.add(t),this._dependenciesToBeRemoved.delete(t),n}get store(){if(this._ensureNoRunning(),this._disposed)throw new ui("Cannot access store after dispose");return this._store===void 0&&(this._store=new xt),this._store}debugGetState(){return{isRunning:this._isRunning,updateCount:this._updateCount,dependencies:this._dependencies,state:this._state,stateStr:bto(this._state)}}debugRerun(){this._isRunning?this._state=2:this._run()}}function Oi(e,t=Hd.ofCaller()){return new zK(new tf(void 0,void 0,e),e,void 0,t)}function pbe(e,t,n=Hd.ofCaller()){return new zK(new tf(e.owner,e.debugName,e.debugReferenceFn??t),t,void 0,n)}function zz(e,t,n=Hd.ofCaller()){return new zK(new tf(e.owner,e.debugName,e.debugReferenceFn??t),t,e.changeTracker,n)}function wto(e,t){const n=new xt,r=zz({owner:e.owner,debugName:e.debugName,debugReferenceFn:e.debugReferenceFn??t,changeTracker:e.changeTracker},(o,s)=>{n.clear(),t(o,s,n)});return Hn(()=>{r.dispose(),n.dispose()})}function Ef(e){const t=new xt,n=pbe({owner:void 0,debugName:void 0,debugReferenceFn:e},r=>{t.clear(),e(r,t)});return Hn(()=>{n.dispose(),t.dispose()})}function Oto(e,t){let n;return pbe({debugReferenceFn:t},r=>{const o=e.read(r),s=n;n=o,t({lastValue:s,newValue:o})})}function bbt(e){const t=new Error("BugIndicatingErrorRecovery: "+e);zi(t),console.error("recovered from an error that indicates a bug",t)}function la(e,t){const n=new Hz(e,t);try{e(n)}finally{n.finish()}}let dle;function BG(e){if(dle)e(dle);else{const t=new Hz(e,void 0);dle=t;try{e(t)}finally{t.finish(),dle=void 0}}}async function yto(e,t){const n=new Hz(e,t);try{await e(n)}finally{n.finish()}}function qW(e,t,n){e?t(e):la(t,n)}class Hz{constructor(t,n){var r;this._fn=t,this._getDebugName=n,this._updatingObservers=[],(r=Of())==null||r.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():HJe(this._fn)}updateObserver(t,n){if(!this._updatingObservers){bbt("Transaction already finished!"),la(r=>{r.updateObserver(t,n)});return}this._updatingObservers.push({observer:t,observable:n}),t.beginUpdate(n)}finish(){var n;const t=this._updatingObservers;if(!t){bbt("transaction.finish() has already been called!");return}for(let r=0;rxS.globalTransaction,f2,o??Hd.ofCaller())}function gEn(e,t,n,r=Hd.ofCaller()){return new xS(new tf(e.owner,e.debugName,e.debugReferenceFn??n),t,n,()=>xS.globalTransaction,e.equalsFn??f2,r)}class xS extends Vz{constructor(t,n,r,o,s,a){super(a),this._debugNameData=t,this.event=n,this._getValue=r,this._getTransaction=o,this._equalityComparator=s,this._hasValue=!1,this.handleEvent=l=>{var m;const d=this._getValue(l),u=this._value,h=!this._hasValue||!this._equalityComparator(u,d);let g=!1;h&&(this._value=d,this._hasValue&&(g=!0,qW(this._getTransaction(),v=>{var f;(f=Of())==null||f.handleObservableUpdated(this,{oldValue:u,newValue:d,change:void 0,didChange:h,hadValue:this._hasValue});for(const k of this._observers)v.updateObserver(k,this),k.handleChange(this,void 0)},()=>{const v=this.getDebugName();return"Event fired"+(v?`: ${v}`:"")})),this._hasValue=!0),g||(m=Of())==null||m.handleObservableUpdated(this,{oldValue:u,newValue:d,change:void 0,didChange:h,hadValue:this._hasValue})}}getDebugName(){return this._debugNameData.getDebugName(this)}get debugName(){const t=this.getDebugName();return"From Event"+(t?`: ${t}`:"")}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)}debugSetValue(t){this._value=t}debugGetState(){return{value:this._value,hasValue:this._hasValue}}}(function(e){e.Observer=xS;function t(n,r){let o=!1;xS.globalTransaction===void 0&&(xS.globalTransaction=n,o=!0);try{r()}finally{o&&(xS.globalTransaction=void 0)}}e.batchEventsGlobally=t})(Ko||(Ko={}));function wbt(e,t){let n=!1,r,o;return Ko(s=>{const a=Oi(l=>{const d=e.read(l);n?(o&&clearTimeout(o),o=setTimeout(()=>{r=d,s()},t)):(n=!0,r=d)});return{dispose(){a.dispose(),n=!1,r=void 0}}},()=>n?r:e.get())}function KW(e,t){const n=new Cto(!0,t);e.addObserver(n);try{n.beginUpdate(e)}finally{n.endUpdate(e)}return Hn(()=>{e.removeObserver(n)})}Ato(KW);class Cto{constructor(t,n){this._forceRecompute=t,this._handleValue=n,this._counter=0}beginUpdate(t){this._counter++}endUpdate(t){this._counter===1&&this._forceRecompute&&(this._handleValue?this._handleValue(t.get()):t.reportChanges()),this._counter--}handlePossibleChange(t){}handleChange(t,n){}}function vL(e,t){let n;return Vh({owner:e,debugReferenceFn:t},o=>(n=t(o,n),n))}function XJe(e,t,n,r){let o=new Obt(n,r);return Vh({debugReferenceFn:n,owner:e,onLastObserverRemoved:()=>{o.dispose(),o=new Obt(n)}},a=>(o.setItems(t.read(a)),o.getItems()))}let Obt=class{constructor(t,n){this._map=t,this._keySelector=n,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach(t=>t.store.dispose()),this._cache.clear()}setItems(t){const n=[],r=new Set(this._cache.keys());for(const o of t){const s=this._keySelector?this._keySelector(o):o;let a=this._cache.get(s);if(a)r.delete(s);else{const l=new xt;a={out:this._map(o,l),store:l},this._cache.set(s,a)}n.push(a.out)}for(const o of r)this._cache.get(o).store.dispose(),this._cache.delete(o);this._items=n}getItems(){return this._items}};function dN(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 e===null?"null":Array.isArray(e)?_to(e,t):Sto(e,t);case"symbol":return e.toString();case"function":return`[[Function${e.name?" "+e.name:""}]]`;default:return""+e}}function _to(e,t){let n="[ ",r=!0;for(const o of e){if(r||(n+=", "),n.length-5>t){n+="...";break}r=!1,n+=`${dN(o,t-n.length)}`}return n+=" ]",n}function Sto(e,t){if(typeof e.toString=="function"&&e.toString!==Object.prototype.toString){const s=e.toString();return s.length<=t?s:s.substring(0,t-3)+"..."}const n=dEn(e);let r=n?n+"(":"{ ",o=!0;for(const[s,a]of Object.entries(e)){if(o||(r+=", "),r.length-5>t){r+="...";break}o=!1,r+=`${s}: ${dN(a,t-r.length)}`}return r+=n?")":" }",r}class GJe{static createClient(t,n){return new GJe(t,n)}constructor(t,n){this._channelFactory=t,this._getHandler=n,this._channel=this._channelFactory({handleNotification:s=>{const a=s,l=this._getHandler().notifications[a[0]];if(!l)throw new Error(`Unknown notification "${a[0]}"!`);l(...a[1])},handleRequest:s=>{const a=s;try{return{type:"result",value:this._getHandler().requests[a[0]](...a[1])}}catch(l){return{type:"error",value:l}}}});const r=new Proxy({},{get:(s,a)=>async(...l)=>{const d=await this._channel.sendRequest([a,l]);if(d.type==="error")throw d.value;return d.value}}),o=new Proxy({},{get:(s,a)=>(...l)=>{this._channel.sendNotification([a,l])}});this.api={notifications:o,requests:r}}}function Lto(e,t){const n=globalThis;let r=[],o;const{channel:s,handler:a}=xto({sendNotification:d=>{o?o.sendNotification(d):r.push(d)}});let l;return(n.$$debugValueEditor_debugChannels??(n.$$debugValueEditor_debugChannels={}))[e]=d=>{l=t(),o=d;for(const u of r)d.sendNotification(u);return r=[],a},GJe.createClient(s,()=>{if(!l)throw new Error("Not supported");return l})}function xto(e){let t;return{channel:r=>(t=r,{sendNotification:o=>{e.sendNotification(o)},sendRequest:o=>{throw new Error("not supported")}}),handler:{handleRequest:r=>r.type==="notification"?t==null?void 0:t.handleNotification(r.data):t==null?void 0:t.handleRequest(r.data)}}}class Eto{constructor(){this._timeout=void 0}throttle(t,n){this._timeout===void 0&&(this._timeout=setTimeout(()=>{this._timeout=void 0,t()},n))}dispose(){this._timeout!==void 0&&clearTimeout(this._timeout)}}function mEn(e,t){for(const n in t)e[n]&&typeof e[n]=="object"&&t[n]&&typeof t[n]=="object"?mEn(e[n],t[n]):e[n]=t[n]}function kEn(e,t){for(const n in t)t[n]===null?delete e[n]:e[n]&&typeof e[n]=="object"&&t[n]&&typeof t[n]=="object"?kEn(e[n],t[n]):e[n]=t[n]}function Ti(e,t,n=Hd.ofCaller()){let r;return typeof e=="string"?r=new tf(void 0,e,void 0):r=new tf(e,void 0,void 0),new HK(r,t,f2,n)}class HK extends Vz{get debugName(){return this._debugNameData.getDebugName(this)??"ObservableValue"}constructor(t,n,r,o){var s;super(o),this._debugNameData=t,this._equalityComparator=r,this._value=n,(s=Of())==null||s.handleObservableUpdated(this,{hadValue:!1,newValue:n,change:void 0,didChange:!0,oldValue:void 0})}get(){return this._value}set(t,n,r){var s;if(r===void 0&&this._equalityComparator(this._value,t))return;let o;n||(n=o=new Hz(()=>{},()=>`Setting ${this.debugName}`));try{const a=this._value;this._setValue(t),(s=Of())==null||s.handleObservableUpdated(this,{oldValue:a,newValue:t,change:r,didChange:!0,hadValue:!0});for(const l of this._observers)n.updateObserver(l,this),l.handleChange(this,r)}finally{o&&o.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(t){this._value=t}debugGetState(){return{value:this._value}}debugSetValue(t){this._value=t}}function YJe(e,t,n=Hd.ofCaller()){let r;return typeof e=="string"?r=new tf(void 0,e,void 0):r=new tf(e,void 0,void 0),new Tto(r,t,f2,n)}class Tto extends HK{_setValue(t){this._value!==t&&(this._value&&this._value.dispose(),this._value=t)}dispose(){var t;(t=this._value)==null||t.dispose()}}const jT=class jT{static getInstance(){return jT._instance===void 0&&(jT._instance=new jT),jT._instance}getTransactionState(){const t=[],n=[...this._activeTransactions];if(n.length===0)return;const r=n.flatMap(s=>s.debugGetUpdatingObservers()??[]).map(s=>s.observer),o=new Set;for(;r.length>0;){const s=r.shift();if(o.has(s))continue;o.add(s);const a=this._getInfo(s,l=>{o.has(l)||r.push(l)});a&&t.push(a)}return{names:n.map(s=>s.getDebugName()??"tx"),affected:t}}_getObservableInfo(t){const n=this._instanceInfos.get(t);if(!n){zi(new ui("No info found"));return}return n}_getAutorunInfo(t){const n=this._instanceInfos.get(t);if(!n){zi(new ui("No info found"));return}return n}_getInfo(t,n){if(t instanceof pv){const r=[...t.debugGetObservers()];for(const d of r)n(d);const o=this._getObservableInfo(t);if(!o)return;const s=t.debugGetState(),a={name:t.debugName,instanceId:o.instanceId,updateCount:s.updateCount},l=[...o.changedObservables].map(d=>{var u;return(u=this._instanceInfos.get(d))==null?void 0:u.instanceId}).filter(Ru);if(s.isComputing)return{...a,type:"observable/derived",state:"updating",changedDependencies:l,initialComputation:!1};switch(s.state){case 0:return{...a,type:"observable/derived",state:"noValue"};case 3:return{...a,type:"observable/derived",state:"upToDate"};case 2:return{...a,type:"observable/derived",state:"stale",changedDependencies:l};case 1:return{...a,type:"observable/derived",state:"possiblyStale"}}}else if(t instanceof zK){const r=this._getAutorunInfo(t);if(!r)return;const o={name:t.debugName,instanceId:r.instanceId,updateCount:r.updateCount},s=[...r.changedObservables].map(a=>this._instanceInfos.get(a).instanceId);if(t.debugGetState().isRunning)return{...o,type:"autorun",state:"updating",changedDependencies:s};switch(t.debugGetState().state){case 3:return{...o,type:"autorun",state:"upToDate"};case 2:return{...o,type:"autorun",state:"stale",changedDependencies:s};case 1:return{...o,type:"autorun",state:"possiblyStale"}}}}_formatObservable(t){const n=this._getObservableInfo(t);if(n)return{name:t.debugName,instanceId:n.instanceId}}_formatObserver(t){var r;if(t instanceof pv)return{name:t.toString(),instanceId:(r=this._getObservableInfo(t))==null?void 0:r.instanceId};const n=this._getAutorunInfo(t);if(n)return{name:t.toString(),instanceId:n.instanceId}}constructor(){this._declarationId=0,this._instanceId=0,this._declarations=new Map,this._instanceInfos=new WeakMap,this._aliveInstances=new Map,this._activeTransactions=new Set,this._channel=Lto("observableDevTools",()=>({notifications:{setDeclarationIdFilter:t=>{},logObservableValue:t=>{console.log("logObservableValue",t)},flushUpdates:()=>{this._flushUpdates()},resetUpdates:()=>{this._pendingChanges=null,this._channel.api.notifications.handleChange(this._fullState,!0)}},requests:{getDeclarations:()=>{const t={};for(const n of this._declarations.values())t[n.id]=n;return{decls:t}},getSummarizedInstances:()=>null,getObservableValueInfo:t=>({observers:[...this._aliveInstances.get(t).debugGetObservers()].map(r=>this._formatObserver(r)).filter(Ru)}),getDerivedInfo:t=>{const n=this._aliveInstances.get(t);return{dependencies:[...n.debugGetState().dependencies].map(r=>this._formatObservable(r)).filter(Ru),observers:[...n.debugGetObservers()].map(r=>this._formatObserver(r)).filter(Ru)}},getAutorunInfo:t=>({dependencies:[...this._aliveInstances.get(t).debugGetState().dependencies].map(r=>this._formatObservable(r)).filter(Ru)}),getTransactionState:()=>this.getTransactionState(),setValue:(t,n)=>{const r=this._aliveInstances.get(t);if(r instanceof pv)r.debugSetValue(n);else if(r instanceof HK)r.debugSetValue(n);else if(r instanceof xS)r.debugSetValue(n);else throw new ui("Observable is not supported");const o=[...r.debugGetObservers()];for(const s of o)s.beginUpdate(r);for(const s of o)s.handleChange(r,void 0);for(const s of o)s.endUpdate(r)},getValue:t=>{const n=this._aliveInstances.get(t);if(n instanceof pv)return dN(n.debugGetState().value,200);if(n instanceof HK)return dN(n.debugGetState().value,200)},logValue:t=>{const n=this._aliveInstances.get(t);if(n&&"get"in n)console.log("Logged Value:",n.get());else throw new ui("Observable is not supported")},rerun:t=>{const n=this._aliveInstances.get(t);if(n instanceof pv)n.debugRecompute();else if(n instanceof zK)n.debugRerun();else throw new ui("Observable is not supported")}}})),this._pendingChanges=null,this._changeThrottler=new Eto,this._fullState={},this._flushUpdates=()=>{this._pendingChanges!==null&&(this._channel.api.notifications.handleChange(this._pendingChanges,!1),this._pendingChanges=null)},Hd.enable()}_handleChange(t){kEn(this._fullState,t),this._pendingChanges===null?this._pendingChanges=t:mEn(this._pendingChanges,t),this._changeThrottler.throttle(this._flushUpdates,10)}_getDeclarationId(t,n){if(!n)return-1;let r=this._declarations.get(n.id);return r===void 0&&(r={id:this._declarationId++,type:t,url:n.fileName,line:n.line,column:n.column},this._declarations.set(n.id,r),this._handleChange({decls:{[r.id]:r}})),r.id}handleObservableCreated(t,n){const o={declarationId:this._getDeclarationId("observable/value",n),instanceId:this._instanceId++,listenerCount:0,lastValue:void 0,updateCount:0,changedObservables:new Set};this._instanceInfos.set(t,o)}handleOnListenerCountChanged(t,n){const r=this._getObservableInfo(t);if(r){if(r.listenerCount===0&&n>0){const o=t instanceof pv?"observable/derived":"observable/value";this._aliveInstances.set(r.instanceId,t),this._handleChange({instances:{[r.instanceId]:{instanceId:r.instanceId,declarationId:r.declarationId,formattedValue:r.lastValue,type:o,name:t.debugName}}})}else r.listenerCount>0&&n===0&&(this._handleChange({instances:{[r.instanceId]:null}}),this._aliveInstances.delete(r.instanceId));r.listenerCount=n}}handleObservableUpdated(t,n){if(t instanceof pv){this._handleDerivedRecomputed(t,n);return}const r=this._getObservableInfo(t);r&&n.didChange&&(r.lastValue=dN(n.newValue,30),r.listenerCount>0&&this._handleChange({instances:{[r.instanceId]:{formattedValue:r.lastValue}}}))}handleAutorunCreated(t,n){const o={declarationId:this._getDeclarationId("autorun",n),instanceId:this._instanceId++,updateCount:0,changedObservables:new Set};this._instanceInfos.set(t,o),this._aliveInstances.set(o.instanceId,t),o&&this._handleChange({instances:{[o.instanceId]:{instanceId:o.instanceId,declarationId:o.declarationId,runCount:0,type:"autorun",name:t.debugName}}})}handleAutorunDisposed(t){const n=this._getAutorunInfo(t);n&&(this._handleChange({instances:{[n.instanceId]:null}}),this._instanceInfos.delete(t),this._aliveInstances.delete(n.instanceId))}handleAutorunDependencyChanged(t,n,r){const o=this._getAutorunInfo(t);o&&o.changedObservables.add(n)}handleAutorunStarted(t){}handleAutorunFinished(t){const n=this._getAutorunInfo(t);n&&(n.changedObservables.clear(),n.updateCount++,this._handleChange({instances:{[n.instanceId]:{runCount:n.updateCount}}}))}handleDerivedDependencyChanged(t,n,r){const o=this._getObservableInfo(t);o&&o.changedObservables.add(n)}_handleDerivedRecomputed(t,n){const r=this._getObservableInfo(t);if(!r)return;const o=dN(n.newValue,30);r.updateCount++,r.changedObservables.clear(),r.lastValue=o,r.listenerCount>0&&this._handleChange({instances:{[r.instanceId]:{formattedValue:o,recomputationCount:r.updateCount}}})}handleDerivedCleared(t){const n=this._getObservableInfo(t);n&&(n.lastValue=void 0,n.changedObservables.clear(),n.listenerCount>0&&this._handleChange({instances:{[n.instanceId]:{formattedValue:void 0}}}))}handleBeginTransaction(t){this._activeTransactions.add(t)}handleEndTransaction(t){this._activeTransactions.delete(t)}};jT._instance=void 0;let uNe=jT;bme&&bme.VSCODE_DEV_DEBUG_OBSERVABLES&&uto(uNe.getInstance());const{getWindow:ii,getDocument:Qto,getWindows:vEn,getWindowsCount:Dto,getWindowId:$K,getWindowById:ybt,onDidRegisterWindow:xie,onWillUnregisterWindow:Bto,onDidUnregisterWindow:Rto}=function(){const e=new Map;AJr(Ls,1);const t={window:Ls,disposables:new xt};e.set(Ls.vscodeWindowId,t);const n=new at,r=new at,o=new at;function s(a,l){return(typeof a=="number"?e.get(a):void 0)??(l?t:void 0)}return{onDidRegisterWindow:n.event,onWillUnregisterWindow:o.event,onDidUnregisterWindow:r.event,registerWindow(a){if(e.has(a.vscodeWindowId))return ft.None;const l=new xt,d={window:a,disposables:l.add(new xt)};return e.set(a.vscodeWindowId,d),l.add(Hn(()=>{e.delete(a.vscodeWindowId),r.fire(a)})),l.add(wt(a,rn.BEFORE_UNLOAD,()=>{o.fire(a)})),n.fire(d),l},getWindows(){return e.values()},getWindowsCount(){return e.size},getWindowId(a){return a.vscodeWindowId},hasWindow(a){return e.has(a)},getWindowById:s,getWindow(a){var u;const l=a;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;const d=a;return d!=null&&d.view?d.view.window:Ls},getDocument(a){return ii(a).document}}}();function uh(e){for(;e.firstChild;)e.firstChild.remove()}class Ito{constructor(t,n,r,o){this._node=t,this._type=n,this._handler=r,this._options=o||!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 wt(e,t,n,r){return new Ito(e,t,n,r)}function AEn(e,t){return function(n){return t(new Xh(e,n))}}function Mto(e){return function(t){return e(new Us(t))}}const wc=function(t,n,r,o){let s=r;return n==="click"||n==="mousedown"||n==="contextmenu"?s=AEn(ii(t),r):(n==="keydown"||n==="keypress"||n==="keyup")&&(s=Mto(r)),wt(t,n,s,o)},Pto=function(t,n,r){const o=AEn(ii(t),n);return pEn(t,o,r)};function pEn(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_DOWN:rn.MOUSE_DOWN,t,n)}function Fto(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_MOVE:rn.MOUSE_MOVE,t,n)}function Cbt(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_UP:rn.MOUSE_UP,t,n)}function RG(e,t,n){return lZ(e,t,n)}class K8e extends U6n{constructor(t,n){super(t,n)}}let Lme,A1;class ZJe extends TJe{constructor(t){super(),this.defaultTarget=t&&ii(t)}cancelAndSet(t,n,r){return super.cancelAndSet(t,n,r??this.defaultTarget)}}class J8e{constructor(t,n=0){this._runner=t,this.priority=n,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(t){zi(t)}}static sort(t,n){return n.priority-t.priority}}(function(){const e=new Map,t=new Map,n=new Map,r=new Map,o=s=>{n.set(s,!1);const a=e.get(s)??[];for(t.set(s,a),e.set(s,[]),r.set(s,!0);a.length>0;)a.sort(J8e.sort),a.shift().execute();r.set(s,!1)};A1=(s,a,l=0)=>{const d=$K(s),u=new J8e(a,l);let h=e.get(d);return h||(h=[],e.set(d,h)),h.push(u),n.get(d)||(n.set(d,!0),s.requestAnimationFrame(()=>o(d))),u},Lme=(s,a,l)=>{const d=$K(s);if(r.get(d)){const u=new J8e(a,l);let h=t.get(d);return h||(h=[],t.set(d,h)),h.push(u),u}else return A1(s,a,l)}})();function bbe(e){return ii(e).getComputedStyle(e,null)}function O6(e,t,n){const r=ii(e),o=r.document;if(e!==o.body)return new cs(e.clientWidth,e.clientHeight);if(cA&&(r!=null&&r.visualViewport))return new cs(r.visualViewport.width,r.visualViewport.height);if(r!=null&&r.innerWidth&&r.innerHeight)return new cs(r.innerWidth,r.innerHeight);if(o.body&&o.body.clientWidth&&o.body.clientHeight)return new cs(o.body.clientWidth,o.body.clientHeight);if(o.documentElement&&o.documentElement.clientWidth&&o.documentElement.clientHeight)return new cs(o.documentElement.clientWidth,o.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}class bc{static convertToPixels(t,n){return parseFloat(n)||0}static getDimension(t,n){const r=bbe(t),o=r?r.getPropertyValue(n):"0";return bc.convertToPixels(t,o)}static getBorderLeftWidth(t){return bc.getDimension(t,"border-left-width")}static getBorderRightWidth(t){return bc.getDimension(t,"border-right-width")}static getBorderTopWidth(t){return bc.getDimension(t,"border-top-width")}static getBorderBottomWidth(t){return bc.getDimension(t,"border-bottom-width")}static getPaddingLeft(t){return bc.getDimension(t,"padding-left")}static getPaddingRight(t){return bc.getDimension(t,"padding-right")}static getPaddingTop(t){return bc.getDimension(t,"padding-top")}static getPaddingBottom(t){return bc.getDimension(t,"padding-bottom")}static getMarginLeft(t){return bc.getDimension(t,"margin-left")}static getMarginTop(t){return bc.getDimension(t,"margin-top")}static getMarginRight(t){return bc.getDimension(t,"margin-right")}static getMarginBottom(t){return bc.getDimension(t,"margin-bottom")}}const WT=class WT{constructor(t,n){this.width=t,this.height=n}with(t=this.width,n=this.height){return t!==this.width||n!==this.height?new WT(t,n):this}static is(t){return typeof t=="object"&&typeof t.height=="number"&&typeof t.width=="number"}static lift(t){return t instanceof WT?t:new WT(t.width,t.height)}static equals(t,n){return t===n?!0:!t||!n?!1:t.width===n.width&&t.height===n.height}};WT.None=new WT(0,0);let cs=WT;function bEn(e){let t=e.offsetParent,n=e.offsetTop,r=e.offsetLeft;for(;(e=e.parentNode)!==null&&e!==e.ownerDocument.body&&e!==e.ownerDocument.documentElement;){n-=e.scrollTop;const o=OEn(e)?null:bbe(e);o&&(r-=o.direction!=="rtl"?e.scrollLeft:-e.scrollLeft),e===t&&(r+=bc.getBorderLeftWidth(e),n+=bc.getBorderTopWidth(e),n+=e.offsetTop,r+=e.offsetLeft,t=e.offsetParent)}return{left:r,top:n}}function Nto(e,t,n){typeof t=="number"&&(e.style.width=`${t}px`),typeof n=="number"&&(e.style.height=`${n}px`)}function Kl(e){const t=e.getBoundingClientRect(),n=ii(e);return{left:t.left+n.scrollX,top:t.top+n.scrollY,width:t.width,height:t.height}}function wEn(e){let t=e,n=1;do{const r=bbe(t).zoom;r!=null&&r!=="1"&&(n*=r),t=t.parentElement}while(t!==null&&t!==t.ownerDocument.documentElement);return n}function s0(e){const t=bc.getMarginLeft(e)+bc.getMarginRight(e);return e.offsetWidth+t}function eLe(e){const t=bc.getBorderLeftWidth(e)+bc.getBorderRightWidth(e),n=bc.getPaddingLeft(e)+bc.getPaddingRight(e);return e.offsetWidth-t-n}function Uto(e){const t=bc.getBorderTopWidth(e)+bc.getBorderBottomWidth(e),n=bc.getPaddingTop(e)+bc.getPaddingBottom(e);return e.offsetHeight-t-n}function ES(e){const t=bc.getMarginTop(e)+bc.getMarginBottom(e);return e.offsetHeight+t}function gu(e,t){return!!(t!=null&&t.contains(e))}function jto(e,t,n){for(;e&&e.nodeType===e.ELEMENT_NODE;){if(e.classList.contains(t))return e;if(n){if(typeof n=="string"){if(e.classList.contains(n))return null}else if(e===n)return null}e=e.parentNode}return null}function tLe(e,t,n){return!!jto(e,t,n)}function OEn(e){return e&&!!e.host&&!!e.mode}function xme(e){return!!y6(e)}function y6(e){var t;for(;e.parentNode;){if(e===((t=e.ownerDocument)==null?void 0:t.body))return null;e=e.parentNode}return OEn(e)?e:null}function Nd(){let e=Eie().activeElement;for(;e!=null&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function wbe(e){return Nd()===e}function yEn(e){return gu(Nd(),e)}function Eie(){return Dto()<=1?Ls.document:Array.from(vEn()).map(({window:t})=>t.document).find(t=>t.hasFocus())??Ls.document}function vs(){var t;return((t=Eie().defaultView)==null?void 0:t.window)??Ls}const Wto=new class{constructor(){this.mutationObservers=new Map}observe(e,t,n){let r=this.mutationObservers.get(e);r||(r=new Map,this.mutationObservers.set(e,r));const o=Lie(n);let s=r.get(o);if(s)s.users+=1;else{const a=new at,l=new MutationObserver(u=>a.fire(u));l.observe(e,n);const d=s={users:1,observer:l,onDidMutate:a.event};t.add(Hn(()=>{d.users-=1,d.users===0&&(a.dispose(),l.disconnect(),r==null||r.delete(o),(r==null?void 0:r.size)===0&&this.mutationObservers.delete(e))})),r.set(o,s)}return s.onDidMutate}};function ec(e){return e instanceof HTMLElement||e instanceof ii(e).HTMLElement}function _bt(e){return e instanceof HTMLAnchorElement||e instanceof ii(e).HTMLAnchorElement}function CEn(e){return e instanceof SVGElement||e instanceof ii(e).SVGElement}function qJe(e){return e instanceof MouseEvent||e instanceof ii(e).MouseEvent}function eS(e){return e instanceof KeyboardEvent||e instanceof ii(e).KeyboardEvent}const rn={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",KEY_DOWN:"keydown",KEY_UP:"keyup",BEFORE_UNLOAD:"beforeunload",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend"};function Vto(e){const t=e;return!!(t&&typeof t.preventDefault=="function"&&typeof t.stopPropagation=="function")}const Qo={stop:(e,t)=>(e.preventDefault(),t&&e.stopPropagation(),e)};function zto(e){const t=[];for(let n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)t[n]=e.scrollTop,e=e.parentNode;return t}function Hto(e,t){for(let n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)e.scrollTop!==t[n]&&(e.scrollTop=t[n]),e=e.parentNode}let $to=class hNe extends ft{get onDidFocus(){return this._onDidFocus.event}get onDidBlur(){return this._onDidBlur.event}static hasFocusWithin(t){if(ec(t)){const n=y6(t),r=n?n.activeElement:t.ownerDocument.activeElement;return gu(r,t)}else{const n=t;return gu(n.document.activeElement,n.document)}}constructor(t){super(),this._onDidFocus=this._register(new at),this._onDidBlur=this._register(new at);let n=hNe.hasFocusWithin(t),r=!1;const o=()=>{r=!1,n||(n=!0,this._onDidFocus.fire())},s=()=>{n&&(r=!0,(ec(t)?ii(t):t).setTimeout(()=>{r&&(r=!1,n=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{hNe.hasFocusWithin(t)!==n&&(n?s():o())},this._register(wt(t,rn.FOCUS,o,!0)),this._register(wt(t,rn.BLUR,s,!0)),ec(t)&&(this._register(wt(t,rn.FOCUS_IN,()=>this._refreshStateHandler())),this._register(wt(t,rn.FOCUS_OUT,()=>this._refreshStateHandler())))}};function uA(e){return new $to(e)}function Xto(e,t){return e.after(t),t}function Xt(e,...t){if(e.append(...t),t.length===1&&typeof t[0]!="string")return t[0]}function Obe(e,t){return e.insertBefore(t,e.firstChild),t}function mu(e,...t){e.textContent="",Xt(e,...t)}const Gto=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var XK;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.SVG="http://www.w3.org/2000/svg"})(XK||(XK={}));function _En(e,t,n,...r){const o=Gto.exec(t);if(!o)throw new Error("Bad use of emmet");const s=o[1]||"div";let a;return e!==XK.HTML?a=document.createElementNS(e,s):a=document.createElement(s),o[3]&&(a.id=o[3]),o[4]&&(a.className=o[4].replace(/\./g," ").trim()),n&&Object.entries(n).forEach(([l,d])=>{typeof d>"u"||(/^on\w+$/.test(l)?a[l]=d:l==="selected"?d&&a.setAttribute(l,"true"):a.setAttribute(l,d))}),a.append(...r),a}function tn(e,t,...n){return _En(XK.HTML,e,t,...n)}tn.SVG=function(e,t,...n){return _En(XK.SVG,e,t,...n)};function Yto(e,...t){e?k0(...t):tm(...t)}function k0(...e){for(const t of e)t.style.display="",t.removeAttribute("aria-hidden")}function tm(...e){for(const t of e)t.style.display="none",t.setAttribute("aria-hidden","true")}function Sbt(e,t){const n=e.devicePixelRatio*t;return Math.max(1,Math.floor(n))/e.devicePixelRatio}function SEn(e){Ls.open(e,"_blank","noopener")}function Zto(e,t){const n=()=>{t(),r=A1(e,n)};let r=A1(e,n);return Hn(()=>r.dispose())}iEn.setPreferredWebSchema(/^https:/.test(Ls.location.href)?"https":"http");class TS extends at{constructor(){super(),this._subscriptions=new xt,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(an.runAndSubscribe(xie,({window:t,disposables:n})=>this.registerListeners(t,n),{window:Ls,disposables:this._subscriptions}))}registerListeners(t,n){n.add(wt(t,"keydown",r=>{if(r.defaultPrevented)return;const o=new Us(r);if(!(o.keyCode===6&&r.repeat)){if(r.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(r.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(r.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(r.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(o.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=r.altKey,this._keyStatus.ctrlKey=r.ctrlKey,this._keyStatus.metaKey=r.metaKey,this._keyStatus.shiftKey=r.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=r,this.fire(this._keyStatus))}},!0)),n.add(wt(t,"keyup",r=>{r.defaultPrevented||(!r.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!r.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!r.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!r.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=r.altKey,this._keyStatus.ctrlKey=r.ctrlKey,this._keyStatus.metaKey=r.metaKey,this._keyStatus.shiftKey=r.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=r,this.fire(this._keyStatus)))},!0)),n.add(wt(t.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),n.add(wt(t.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),n.add(wt(t.document.body,"mousemove",r=>{r.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),n.add(wt(t,"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 TS.instance||(TS.instance=new TS),TS.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class qto extends ft{constructor(t,n){super(),this.element=t,this.callbacks=n,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(wt(this.element,rn.DRAG_START,t=>{var n,r;(r=(n=this.callbacks).onDragStart)==null||r.call(n,t)})),this.callbacks.onDrag&&this._register(wt(this.element,rn.DRAG,t=>{var n,r;(r=(n=this.callbacks).onDrag)==null||r.call(n,t)})),this._register(wt(this.element,rn.DRAG_ENTER,t=>{var n,r;this.counter++,this.dragStartTime=t.timeStamp,(r=(n=this.callbacks).onDragEnter)==null||r.call(n,t)})),this._register(wt(this.element,rn.DRAG_OVER,t=>{var n,r;t.preventDefault(),(r=(n=this.callbacks).onDragOver)==null||r.call(n,t,t.timeStamp-this.dragStartTime)})),this._register(wt(this.element,rn.DRAG_LEAVE,t=>{var n,r;this.counter--,this.counter===0&&(this.dragStartTime=0,(r=(n=this.callbacks).onDragLeave)==null||r.call(n,t))})),this._register(wt(this.element,rn.DRAG_END,t=>{var n,r;this.counter=0,this.dragStartTime=0,(r=(n=this.callbacks).onDragEnd)==null||r.call(n,t)})),this._register(wt(this.element,rn.DROP,t=>{var n,r;this.counter=0,this.dragStartTime=0,(r=(n=this.callbacks).onDrop)==null||r.call(n,t)}))}}const Kto=/(?[\w\-]+)?(?:#(?[\w\-]+))?(?(?:\.(?:[\w\-]+))*)(?:@(?(?:[\w\_])+))?/;function wo(e,...t){let n,r;Array.isArray(t[0])?(n={},r=t[0]):(n=t[0]||{},r=t[1]);const o=Kto.exec(e);if(!o||!o.groups)throw new Error("Bad use of h");const s=o.groups.tag||"div",a=document.createElement(s);o.groups.id&&(a.id=o.groups.id);const l=[];if(o.groups.class)for(const u of o.groups.class.split("."))u!==""&&l.push(u);if(n.className!==void 0)for(const u of n.className.split("."))u!==""&&l.push(u);l.length>0&&(a.className=l.join(" "));const d={};if(o.groups.name&&(d[o.groups.name]=a),r)for(const u of r)ec(u)?a.appendChild(u):typeof u=="string"?a.append(u):"root"in u&&(Object.assign(d,u),a.appendChild(u.root));for(const[u,h]of Object.entries(n))if(u!=="className")if(u==="style")for(const[g,m]of Object.entries(h))a.style.setProperty(GK(g),typeof m=="number"?m+"px":""+m);else u==="tabIndex"?a.tabIndex=h:a.setAttribute(GK(u),h.toString());return d.root=a,d}function GK(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function s3(e){return e.tagName.toLowerCase()==="input"||e.tagName.toLowerCase()==="textarea"||ec(e)&&!!e.editContext}var cr;(function(e){function t(o=void 0){return(s,a,l)=>{const d=a.class;delete a.class;const u=a.ref;delete a.ref;const h=a.obsRef;return delete a.obsRef,new eno(s,u,h,o,d,a,l)}}function n(o,s=void 0){const a=t(s);return(l,d)=>a(o,l,d)}e.div=n("div"),e.elem=t(void 0),e.svg=n("svg","http://www.w3.org/2000/svg"),e.svgElem=t("http://www.w3.org/2000/svg");function r(){let o;const s=function(a){o=a};return Object.defineProperty(s,"element",{get(){if(!o)throw new ui("Make sure the ref is set before accessing the element. Maybe wrong initialization order?");return o}}),s}e.ref=r})(cr||(cr={}));class KJe{constructor(t,n,r,o,s,a,l){this._deriveds=[],this._element=o?document.createElementNS(o,t):document.createElement(t),n&&n(this._element),r&&this._deriveds.push(Rt(d=>{r(this),d.store.add({dispose:()=>{r(null)}})})),s&&(xEn(s)?this._deriveds.push(Rt(this,d=>{Lbt(this._element,xbt(s,d))})):Lbt(this._element,xbt(s,void 0)));for(const[d,u]of Object.entries(a))if(d==="style")for(const[h,g]of Object.entries(u)){const m=GK(h);sQ(g)?this._deriveds.push(Vh({owner:this,debugName:()=>`set.style.${m}`},v=>{this._element.style.setProperty(m,Ebt(g.read(v)))})):this._element.style.setProperty(m,Ebt(g))}else d==="tabIndex"?sQ(u)?this._deriveds.push(Rt(this,h=>{this._element.tabIndex=u.read(h)})):this._element.tabIndex=u:d.startsWith("on")?this._element[d]=u:sQ(u)?this._deriveds.push(Vh({owner:this,debugName:()=>`set.${d}`},h=>{Tbt(this._element,d,u.read(h))})):Tbt(this._element,d,u);if(l){let d=function(h,g){return sQ(g)?d(h,g.read(h)):Array.isArray(g)?g.flatMap(m=>d(h,m)):g instanceof KJe?(h&&g.readEffect(h),[g._element]):g?[g]:[]};const u=Rt(this,h=>{this._element.replaceChildren(...d(h,l))});this._deriveds.push(u),EEn(l)||u.get()}}readEffect(t){for(const n of this._deriveds)n.read(t)}keepUpdated(t){return Rt(n=>{this.readEffect(n)}).recomputeInitiallyAndOnChange(t),this}toDisposableLiveElement(){const t=new xt;return this.keepUpdated(t),new Jto(this._element,t)}}function Lbt(e,t){CEn(e)?e.setAttribute("class",t):e.className=t}function LEn(e,t,n){if(sQ(e)){n(e.read(t));return}if(Array.isArray(e)){for(const r of e)LEn(r,t,n);return}n(e)}function xbt(e,t){let n="";return LEn(e,t,r=>{r&&(n.length===0?n=r:n+=" "+r)}),n}function xEn(e){return sQ(e)?!0:Array.isArray(e)?e.some(t=>xEn(t)):!1}function Ebt(e){return typeof e=="number"?e+"px":e}function EEn(e){return sQ(e)?!0:Array.isArray(e)?e.some(t=>EEn(t)):!1}class Jto{constructor(t,n){this.element=t,this._disposable=n}dispose(){this._disposable.dispose()}}class eno extends KJe{constructor(){super(...arguments),this._isHovered=void 0,this._didMouseMoveDuringHover=void 0}get element(){return this._element}get isHovered(){if(!this._isHovered){const t=Ti("hovered",!1);this._element.addEventListener("mouseenter",n=>t.set(!0,void 0)),this._element.addEventListener("mouseleave",n=>t.set(!1,void 0)),this._isHovered=t}return this._isHovered}get didMouseMoveDuringHover(){if(!this._didMouseMoveDuringHover){let t=!1;const n=Ti("didMouseMoveDuringHover",!1);this._element.addEventListener("mouseenter",r=>{t=!0}),this._element.addEventListener("mousemove",r=>{t&&n.set(!0,void 0)}),this._element.addEventListener("mouseleave",r=>{t=!1,n.set(!1,void 0)}),this._didMouseMoveDuringHover=n}return this._didMouseMoveDuringHover}}function Tbt(e,t,n){n==null?e.removeAttribute(GK(t)):e.setAttribute(GK(t),String(n))}function sQ(e){return!!e&&e.read!==void 0&&e.reportChanges!==void 0}const Qbt=2e4;let bT,Yue,fNe,Zue,gNe;function tno(e){bT=document.createElement("div"),bT.className="monaco-aria-container";const t=()=>{const r=document.createElement("div");return r.className="monaco-alert",r.setAttribute("role","alert"),r.setAttribute("aria-atomic","true"),bT.appendChild(r),r};Yue=t(),fNe=t();const n=()=>{const r=document.createElement("div");return r.className="monaco-status",r.setAttribute("aria-live","polite"),r.setAttribute("aria-atomic","true"),bT.appendChild(r),r};Zue=n(),gNe=n(),e.appendChild(bT)}function um(e){bT&&(Yue.textContent!==e?(uh(fNe),Eme(Yue,e)):(uh(Yue),Eme(fNe,e)))}function A3(e){bT&&(Zue.textContent!==e?(uh(gNe),Eme(Zue,e)):(uh(Zue),Eme(gNe,e)))}function Eme(e,t){uh(e),t.length>Qbt&&(t=t.substr(0,Qbt)),e.textContent=t,e.style.visibility="hidden",e.style.visibility="visible"}var Zb;(function(e){e.serviceIds=new Map,e.DI_TARGET="$di$target",e.DI_DEPENDENCIES="$di$dependencies";function t(n){return n[e.DI_DEPENDENCIES]||[]}e.getServiceDependencies=t})(Zb||(Zb={}));const Yn=Cr("instantiationService");function nno(e,t,n){t[Zb.DI_TARGET]===t?t[Zb.DI_DEPENDENCIES].push({id:e,index:n}):(t[Zb.DI_DEPENDENCIES]=[{id:e,index:n}],t[Zb.DI_TARGET]=t)}function Cr(e){if(Zb.serviceIds.has(e))return Zb.serviceIds.get(e);const t=function(n,r,o){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");nno(t,n,o)};return t.toString=()=>e,Zb.serviceIds.set(e,t),t}const yo=Cr("codeEditorService");let it=class H7{constructor(t,n){this.lineNumber=t,this.column=n}with(t=this.lineNumber,n=this.column){return t===this.lineNumber&&n===this.column?this:new H7(t,n)}delta(t=0,n=0){return this.with(Math.max(1,this.lineNumber+t),Math.max(1,this.column+n))}equals(t){return H7.equals(this,t)}static equals(t,n){return!t&&!n?!0:!!t&&!!n&&t.lineNumber===n.lineNumber&&t.column===n.column}isBefore(t){return H7.isBefore(this,t)}static isBefore(t,n){return t.lineNumbere.run(...t)}}const kNe=Object.create(null);function ye(e,t){if(fu(t)){const n=kNe[t];if(n===void 0)throw new Error(`${e} references an unknown codicon: ${t}`);t=n}return kNe[e]=t,{id:e}}function TEn(){return kNe}const ino={add:ye("add",6e4),plus:ye("plus",6e4),gistNew:ye("gist-new",6e4),repoCreate:ye("repo-create",6e4),lightbulb:ye("lightbulb",60001),lightBulb:ye("light-bulb",60001),repo:ye("repo",60002),repoDelete:ye("repo-delete",60002),gistFork:ye("gist-fork",60003),repoForked:ye("repo-forked",60003),gitPullRequest:ye("git-pull-request",60004),gitPullRequestAbandoned:ye("git-pull-request-abandoned",60004),recordKeys:ye("record-keys",60005),keyboard:ye("keyboard",60005),tag:ye("tag",60006),gitPullRequestLabel:ye("git-pull-request-label",60006),tagAdd:ye("tag-add",60006),tagRemove:ye("tag-remove",60006),person:ye("person",60007),personFollow:ye("person-follow",60007),personOutline:ye("person-outline",60007),personFilled:ye("person-filled",60007),sourceControl:ye("source-control",60008),mirror:ye("mirror",60009),mirrorPublic:ye("mirror-public",60009),star:ye("star",60010),starAdd:ye("star-add",60010),starDelete:ye("star-delete",60010),starEmpty:ye("star-empty",60010),comment:ye("comment",60011),commentAdd:ye("comment-add",60011),alert:ye("alert",60012),warning:ye("warning",60012),search:ye("search",60013),searchSave:ye("search-save",60013),logOut:ye("log-out",60014),signOut:ye("sign-out",60014),logIn:ye("log-in",60015),signIn:ye("sign-in",60015),eye:ye("eye",60016),eyeUnwatch:ye("eye-unwatch",60016),eyeWatch:ye("eye-watch",60016),circleFilled:ye("circle-filled",60017),primitiveDot:ye("primitive-dot",60017),closeDirty:ye("close-dirty",60017),debugBreakpoint:ye("debug-breakpoint",60017),debugBreakpointDisabled:ye("debug-breakpoint-disabled",60017),debugHint:ye("debug-hint",60017),terminalDecorationSuccess:ye("terminal-decoration-success",60017),primitiveSquare:ye("primitive-square",60018),edit:ye("edit",60019),pencil:ye("pencil",60019),info:ye("info",60020),issueOpened:ye("issue-opened",60020),gistPrivate:ye("gist-private",60021),gitForkPrivate:ye("git-fork-private",60021),lock:ye("lock",60021),mirrorPrivate:ye("mirror-private",60021),close:ye("close",60022),removeClose:ye("remove-close",60022),x:ye("x",60022),repoSync:ye("repo-sync",60023),sync:ye("sync",60023),clone:ye("clone",60024),desktopDownload:ye("desktop-download",60024),beaker:ye("beaker",60025),microscope:ye("microscope",60025),vm:ye("vm",60026),deviceDesktop:ye("device-desktop",60026),file:ye("file",60027),more:ye("more",60028),ellipsis:ye("ellipsis",60028),kebabHorizontal:ye("kebab-horizontal",60028),mailReply:ye("mail-reply",60029),reply:ye("reply",60029),organization:ye("organization",60030),organizationFilled:ye("organization-filled",60030),organizationOutline:ye("organization-outline",60030),newFile:ye("new-file",60031),fileAdd:ye("file-add",60031),newFolder:ye("new-folder",60032),fileDirectoryCreate:ye("file-directory-create",60032),trash:ye("trash",60033),trashcan:ye("trashcan",60033),history:ye("history",60034),clock:ye("clock",60034),folder:ye("folder",60035),fileDirectory:ye("file-directory",60035),symbolFolder:ye("symbol-folder",60035),logoGithub:ye("logo-github",60036),markGithub:ye("mark-github",60036),github:ye("github",60036),terminal:ye("terminal",60037),console:ye("console",60037),repl:ye("repl",60037),zap:ye("zap",60038),symbolEvent:ye("symbol-event",60038),error:ye("error",60039),stop:ye("stop",60039),variable:ye("variable",60040),symbolVariable:ye("symbol-variable",60040),array:ye("array",60042),symbolArray:ye("symbol-array",60042),symbolModule:ye("symbol-module",60043),symbolPackage:ye("symbol-package",60043),symbolNamespace:ye("symbol-namespace",60043),symbolObject:ye("symbol-object",60043),symbolMethod:ye("symbol-method",60044),symbolFunction:ye("symbol-function",60044),symbolConstructor:ye("symbol-constructor",60044),symbolBoolean:ye("symbol-boolean",60047),symbolNull:ye("symbol-null",60047),symbolNumeric:ye("symbol-numeric",60048),symbolNumber:ye("symbol-number",60048),symbolStructure:ye("symbol-structure",60049),symbolStruct:ye("symbol-struct",60049),symbolParameter:ye("symbol-parameter",60050),symbolTypeParameter:ye("symbol-type-parameter",60050),symbolKey:ye("symbol-key",60051),symbolText:ye("symbol-text",60051),symbolReference:ye("symbol-reference",60052),goToFile:ye("go-to-file",60052),symbolEnum:ye("symbol-enum",60053),symbolValue:ye("symbol-value",60053),symbolRuler:ye("symbol-ruler",60054),symbolUnit:ye("symbol-unit",60054),activateBreakpoints:ye("activate-breakpoints",60055),archive:ye("archive",60056),arrowBoth:ye("arrow-both",60057),arrowDown:ye("arrow-down",60058),arrowLeft:ye("arrow-left",60059),arrowRight:ye("arrow-right",60060),arrowSmallDown:ye("arrow-small-down",60061),arrowSmallLeft:ye("arrow-small-left",60062),arrowSmallRight:ye("arrow-small-right",60063),arrowSmallUp:ye("arrow-small-up",60064),arrowUp:ye("arrow-up",60065),bell:ye("bell",60066),bold:ye("bold",60067),book:ye("book",60068),bookmark:ye("bookmark",60069),debugBreakpointConditionalUnverified:ye("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:ye("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:ye("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:ye("debug-breakpoint-data-unverified",60072),debugBreakpointData:ye("debug-breakpoint-data",60073),debugBreakpointDataDisabled:ye("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:ye("debug-breakpoint-log-unverified",60074),debugBreakpointLog:ye("debug-breakpoint-log",60075),debugBreakpointLogDisabled:ye("debug-breakpoint-log-disabled",60075),briefcase:ye("briefcase",60076),broadcast:ye("broadcast",60077),browser:ye("browser",60078),bug:ye("bug",60079),calendar:ye("calendar",60080),caseSensitive:ye("case-sensitive",60081),check:ye("check",60082),checklist:ye("checklist",60083),chevronDown:ye("chevron-down",60084),chevronLeft:ye("chevron-left",60085),chevronRight:ye("chevron-right",60086),chevronUp:ye("chevron-up",60087),chromeClose:ye("chrome-close",60088),chromeMaximize:ye("chrome-maximize",60089),chromeMinimize:ye("chrome-minimize",60090),chromeRestore:ye("chrome-restore",60091),circleOutline:ye("circle-outline",60092),circle:ye("circle",60092),debugBreakpointUnverified:ye("debug-breakpoint-unverified",60092),terminalDecorationIncomplete:ye("terminal-decoration-incomplete",60092),circleSlash:ye("circle-slash",60093),circuitBoard:ye("circuit-board",60094),clearAll:ye("clear-all",60095),clippy:ye("clippy",60096),closeAll:ye("close-all",60097),cloudDownload:ye("cloud-download",60098),cloudUpload:ye("cloud-upload",60099),code:ye("code",60100),collapseAll:ye("collapse-all",60101),colorMode:ye("color-mode",60102),commentDiscussion:ye("comment-discussion",60103),creditCard:ye("credit-card",60105),dash:ye("dash",60108),dashboard:ye("dashboard",60109),database:ye("database",60110),debugContinue:ye("debug-continue",60111),debugDisconnect:ye("debug-disconnect",60112),debugPause:ye("debug-pause",60113),debugRestart:ye("debug-restart",60114),debugStart:ye("debug-start",60115),debugStepInto:ye("debug-step-into",60116),debugStepOut:ye("debug-step-out",60117),debugStepOver:ye("debug-step-over",60118),debugStop:ye("debug-stop",60119),debug:ye("debug",60120),deviceCameraVideo:ye("device-camera-video",60121),deviceCamera:ye("device-camera",60122),deviceMobile:ye("device-mobile",60123),diffAdded:ye("diff-added",60124),diffIgnored:ye("diff-ignored",60125),diffModified:ye("diff-modified",60126),diffRemoved:ye("diff-removed",60127),diffRenamed:ye("diff-renamed",60128),diff:ye("diff",60129),diffSidebyside:ye("diff-sidebyside",60129),discard:ye("discard",60130),editorLayout:ye("editor-layout",60131),emptyWindow:ye("empty-window",60132),exclude:ye("exclude",60133),extensions:ye("extensions",60134),eyeClosed:ye("eye-closed",60135),fileBinary:ye("file-binary",60136),fileCode:ye("file-code",60137),fileMedia:ye("file-media",60138),filePdf:ye("file-pdf",60139),fileSubmodule:ye("file-submodule",60140),fileSymlinkDirectory:ye("file-symlink-directory",60141),fileSymlinkFile:ye("file-symlink-file",60142),fileZip:ye("file-zip",60143),files:ye("files",60144),filter:ye("filter",60145),flame:ye("flame",60146),foldDown:ye("fold-down",60147),foldUp:ye("fold-up",60148),fold:ye("fold",60149),folderActive:ye("folder-active",60150),folderOpened:ye("folder-opened",60151),gear:ye("gear",60152),gift:ye("gift",60153),gistSecret:ye("gist-secret",60154),gist:ye("gist",60155),gitCommit:ye("git-commit",60156),gitCompare:ye("git-compare",60157),compareChanges:ye("compare-changes",60157),gitMerge:ye("git-merge",60158),githubAction:ye("github-action",60159),githubAlt:ye("github-alt",60160),globe:ye("globe",60161),grabber:ye("grabber",60162),graph:ye("graph",60163),gripper:ye("gripper",60164),heart:ye("heart",60165),home:ye("home",60166),horizontalRule:ye("horizontal-rule",60167),hubot:ye("hubot",60168),inbox:ye("inbox",60169),issueReopened:ye("issue-reopened",60171),issues:ye("issues",60172),italic:ye("italic",60173),jersey:ye("jersey",60174),json:ye("json",60175),kebabVertical:ye("kebab-vertical",60176),key:ye("key",60177),law:ye("law",60178),lightbulbAutofix:ye("lightbulb-autofix",60179),linkExternal:ye("link-external",60180),link:ye("link",60181),listOrdered:ye("list-ordered",60182),listUnordered:ye("list-unordered",60183),liveShare:ye("live-share",60184),loading:ye("loading",60185),location:ye("location",60186),mailRead:ye("mail-read",60187),mail:ye("mail",60188),markdown:ye("markdown",60189),megaphone:ye("megaphone",60190),mention:ye("mention",60191),milestone:ye("milestone",60192),gitPullRequestMilestone:ye("git-pull-request-milestone",60192),mortarBoard:ye("mortar-board",60193),move:ye("move",60194),multipleWindows:ye("multiple-windows",60195),mute:ye("mute",60196),noNewline:ye("no-newline",60197),note:ye("note",60198),octoface:ye("octoface",60199),openPreview:ye("open-preview",60200),package:ye("package",60201),paintcan:ye("paintcan",60202),pin:ye("pin",60203),play:ye("play",60204),run:ye("run",60204),plug:ye("plug",60205),preserveCase:ye("preserve-case",60206),preview:ye("preview",60207),project:ye("project",60208),pulse:ye("pulse",60209),question:ye("question",60210),quote:ye("quote",60211),radioTower:ye("radio-tower",60212),reactions:ye("reactions",60213),references:ye("references",60214),refresh:ye("refresh",60215),regex:ye("regex",60216),remoteExplorer:ye("remote-explorer",60217),remote:ye("remote",60218),remove:ye("remove",60219),replaceAll:ye("replace-all",60220),replace:ye("replace",60221),repoClone:ye("repo-clone",60222),repoForcePush:ye("repo-force-push",60223),repoPull:ye("repo-pull",60224),repoPush:ye("repo-push",60225),report:ye("report",60226),requestChanges:ye("request-changes",60227),rocket:ye("rocket",60228),rootFolderOpened:ye("root-folder-opened",60229),rootFolder:ye("root-folder",60230),rss:ye("rss",60231),ruby:ye("ruby",60232),saveAll:ye("save-all",60233),saveAs:ye("save-as",60234),save:ye("save",60235),screenFull:ye("screen-full",60236),screenNormal:ye("screen-normal",60237),searchStop:ye("search-stop",60238),server:ye("server",60240),settingsGear:ye("settings-gear",60241),settings:ye("settings",60242),shield:ye("shield",60243),smiley:ye("smiley",60244),sortPrecedence:ye("sort-precedence",60245),splitHorizontal:ye("split-horizontal",60246),splitVertical:ye("split-vertical",60247),squirrel:ye("squirrel",60248),starFull:ye("star-full",60249),starHalf:ye("star-half",60250),symbolClass:ye("symbol-class",60251),symbolColor:ye("symbol-color",60252),symbolConstant:ye("symbol-constant",60253),symbolEnumMember:ye("symbol-enum-member",60254),symbolField:ye("symbol-field",60255),symbolFile:ye("symbol-file",60256),symbolInterface:ye("symbol-interface",60257),symbolKeyword:ye("symbol-keyword",60258),symbolMisc:ye("symbol-misc",60259),symbolOperator:ye("symbol-operator",60260),symbolProperty:ye("symbol-property",60261),wrench:ye("wrench",60261),wrenchSubaction:ye("wrench-subaction",60261),symbolSnippet:ye("symbol-snippet",60262),tasklist:ye("tasklist",60263),telescope:ye("telescope",60264),textSize:ye("text-size",60265),threeBars:ye("three-bars",60266),thumbsdown:ye("thumbsdown",60267),thumbsup:ye("thumbsup",60268),tools:ye("tools",60269),triangleDown:ye("triangle-down",60270),triangleLeft:ye("triangle-left",60271),triangleRight:ye("triangle-right",60272),triangleUp:ye("triangle-up",60273),twitter:ye("twitter",60274),unfold:ye("unfold",60275),unlock:ye("unlock",60276),unmute:ye("unmute",60277),unverified:ye("unverified",60278),verified:ye("verified",60279),versions:ye("versions",60280),vmActive:ye("vm-active",60281),vmOutline:ye("vm-outline",60282),vmRunning:ye("vm-running",60283),watch:ye("watch",60284),whitespace:ye("whitespace",60285),wholeWord:ye("whole-word",60286),window:ye("window",60287),wordWrap:ye("word-wrap",60288),zoomIn:ye("zoom-in",60289),zoomOut:ye("zoom-out",60290),listFilter:ye("list-filter",60291),listFlat:ye("list-flat",60292),listSelection:ye("list-selection",60293),selection:ye("selection",60293),listTree:ye("list-tree",60294),debugBreakpointFunctionUnverified:ye("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:ye("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:ye("debug-breakpoint-function-disabled",60296),debugStackframeActive:ye("debug-stackframe-active",60297),circleSmallFilled:ye("circle-small-filled",60298),debugStackframeDot:ye("debug-stackframe-dot",60298),terminalDecorationMark:ye("terminal-decoration-mark",60298),debugStackframe:ye("debug-stackframe",60299),debugStackframeFocused:ye("debug-stackframe-focused",60299),debugBreakpointUnsupported:ye("debug-breakpoint-unsupported",60300),symbolString:ye("symbol-string",60301),debugReverseContinue:ye("debug-reverse-continue",60302),debugStepBack:ye("debug-step-back",60303),debugRestartFrame:ye("debug-restart-frame",60304),debugAlt:ye("debug-alt",60305),callIncoming:ye("call-incoming",60306),callOutgoing:ye("call-outgoing",60307),menu:ye("menu",60308),expandAll:ye("expand-all",60309),feedback:ye("feedback",60310),gitPullRequestReviewer:ye("git-pull-request-reviewer",60310),groupByRefType:ye("group-by-ref-type",60311),ungroupByRefType:ye("ungroup-by-ref-type",60312),account:ye("account",60313),gitPullRequestAssignee:ye("git-pull-request-assignee",60313),bellDot:ye("bell-dot",60314),debugConsole:ye("debug-console",60315),library:ye("library",60316),output:ye("output",60317),runAll:ye("run-all",60318),syncIgnored:ye("sync-ignored",60319),pinned:ye("pinned",60320),githubInverted:ye("github-inverted",60321),serverProcess:ye("server-process",60322),serverEnvironment:ye("server-environment",60323),pass:ye("pass",60324),issueClosed:ye("issue-closed",60324),stopCircle:ye("stop-circle",60325),playCircle:ye("play-circle",60326),record:ye("record",60327),debugAltSmall:ye("debug-alt-small",60328),vmConnect:ye("vm-connect",60329),cloud:ye("cloud",60330),merge:ye("merge",60331),export:ye("export",60332),graphLeft:ye("graph-left",60333),magnet:ye("magnet",60334),notebook:ye("notebook",60335),redo:ye("redo",60336),checkAll:ye("check-all",60337),pinnedDirty:ye("pinned-dirty",60338),passFilled:ye("pass-filled",60339),circleLargeFilled:ye("circle-large-filled",60340),circleLarge:ye("circle-large",60341),circleLargeOutline:ye("circle-large-outline",60341),combine:ye("combine",60342),gather:ye("gather",60342),table:ye("table",60343),variableGroup:ye("variable-group",60344),typeHierarchy:ye("type-hierarchy",60345),typeHierarchySub:ye("type-hierarchy-sub",60346),typeHierarchySuper:ye("type-hierarchy-super",60347),gitPullRequestCreate:ye("git-pull-request-create",60348),runAbove:ye("run-above",60349),runBelow:ye("run-below",60350),notebookTemplate:ye("notebook-template",60351),debugRerun:ye("debug-rerun",60352),workspaceTrusted:ye("workspace-trusted",60353),workspaceUntrusted:ye("workspace-untrusted",60354),workspaceUnknown:ye("workspace-unknown",60355),terminalCmd:ye("terminal-cmd",60356),terminalDebian:ye("terminal-debian",60357),terminalLinux:ye("terminal-linux",60358),terminalPowershell:ye("terminal-powershell",60359),terminalTmux:ye("terminal-tmux",60360),terminalUbuntu:ye("terminal-ubuntu",60361),terminalBash:ye("terminal-bash",60362),arrowSwap:ye("arrow-swap",60363),copy:ye("copy",60364),personAdd:ye("person-add",60365),filterFilled:ye("filter-filled",60366),wand:ye("wand",60367),debugLineByLine:ye("debug-line-by-line",60368),inspect:ye("inspect",60369),layers:ye("layers",60370),layersDot:ye("layers-dot",60371),layersActive:ye("layers-active",60372),compass:ye("compass",60373),compassDot:ye("compass-dot",60374),compassActive:ye("compass-active",60375),azure:ye("azure",60376),issueDraft:ye("issue-draft",60377),gitPullRequestClosed:ye("git-pull-request-closed",60378),gitPullRequestDraft:ye("git-pull-request-draft",60379),debugAll:ye("debug-all",60380),debugCoverage:ye("debug-coverage",60381),runErrors:ye("run-errors",60382),folderLibrary:ye("folder-library",60383),debugContinueSmall:ye("debug-continue-small",60384),beakerStop:ye("beaker-stop",60385),graphLine:ye("graph-line",60386),graphScatter:ye("graph-scatter",60387),pieChart:ye("pie-chart",60388),bracket:ye("bracket",60175),bracketDot:ye("bracket-dot",60389),bracketError:ye("bracket-error",60390),lockSmall:ye("lock-small",60391),azureDevops:ye("azure-devops",60392),verifiedFilled:ye("verified-filled",60393),newline:ye("newline",60394),layout:ye("layout",60395),layoutActivitybarLeft:ye("layout-activitybar-left",60396),layoutActivitybarRight:ye("layout-activitybar-right",60397),layoutPanelLeft:ye("layout-panel-left",60398),layoutPanelCenter:ye("layout-panel-center",60399),layoutPanelJustify:ye("layout-panel-justify",60400),layoutPanelRight:ye("layout-panel-right",60401),layoutPanel:ye("layout-panel",60402),layoutSidebarLeft:ye("layout-sidebar-left",60403),layoutSidebarRight:ye("layout-sidebar-right",60404),layoutStatusbar:ye("layout-statusbar",60405),layoutMenubar:ye("layout-menubar",60406),layoutCentered:ye("layout-centered",60407),target:ye("target",60408),indent:ye("indent",60409),recordSmall:ye("record-small",60410),errorSmall:ye("error-small",60411),terminalDecorationError:ye("terminal-decoration-error",60411),arrowCircleDown:ye("arrow-circle-down",60412),arrowCircleLeft:ye("arrow-circle-left",60413),arrowCircleRight:ye("arrow-circle-right",60414),arrowCircleUp:ye("arrow-circle-up",60415),layoutSidebarRightOff:ye("layout-sidebar-right-off",60416),layoutPanelOff:ye("layout-panel-off",60417),layoutSidebarLeftOff:ye("layout-sidebar-left-off",60418),blank:ye("blank",60419),heartFilled:ye("heart-filled",60420),map:ye("map",60421),mapHorizontal:ye("map-horizontal",60421),foldHorizontal:ye("fold-horizontal",60421),mapFilled:ye("map-filled",60422),mapHorizontalFilled:ye("map-horizontal-filled",60422),foldHorizontalFilled:ye("fold-horizontal-filled",60422),circleSmall:ye("circle-small",60423),bellSlash:ye("bell-slash",60424),bellSlashDot:ye("bell-slash-dot",60425),commentUnresolved:ye("comment-unresolved",60426),gitPullRequestGoToChanges:ye("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:ye("git-pull-request-new-changes",60428),searchFuzzy:ye("search-fuzzy",60429),commentDraft:ye("comment-draft",60430),send:ye("send",60431),sparkle:ye("sparkle",60432),insert:ye("insert",60433),mic:ye("mic",60434),thumbsdownFilled:ye("thumbsdown-filled",60435),thumbsupFilled:ye("thumbsup-filled",60436),coffee:ye("coffee",60437),snake:ye("snake",60438),game:ye("game",60439),vr:ye("vr",60440),chip:ye("chip",60441),piano:ye("piano",60442),music:ye("music",60443),micFilled:ye("mic-filled",60444),repoFetch:ye("repo-fetch",60445),copilot:ye("copilot",60446),lightbulbSparkle:ye("lightbulb-sparkle",60447),robot:ye("robot",60448),sparkleFilled:ye("sparkle-filled",60449),diffSingle:ye("diff-single",60450),diffMultiple:ye("diff-multiple",60451),surroundWith:ye("surround-with",60452),share:ye("share",60453),gitStash:ye("git-stash",60454),gitStashApply:ye("git-stash-apply",60455),gitStashPop:ye("git-stash-pop",60456),vscode:ye("vscode",60457),vscodeInsiders:ye("vscode-insiders",60458),codeOss:ye("code-oss",60459),runCoverage:ye("run-coverage",60460),runAllCoverage:ye("run-all-coverage",60461),coverage:ye("coverage",60462),githubProject:ye("github-project",60463),mapVertical:ye("map-vertical",60464),foldVertical:ye("fold-vertical",60464),mapVerticalFilled:ye("map-vertical-filled",60465),foldVerticalFilled:ye("fold-vertical-filled",60465),goToSearch:ye("go-to-search",60466),percentage:ye("percentage",60467),sortPercentage:ye("sort-percentage",60467),attach:ye("attach",60468),goToEditingSession:ye("go-to-editing-session",60469),editSession:ye("edit-session",60470),codeReview:ye("code-review",60471),copilotWarning:ye("copilot-warning",60472),python:ye("python",60473),copilotLarge:ye("copilot-large",60474),copilotWarningLarge:ye("copilot-warning-large",60475),keyboardTab:ye("keyboard-tab",60476),copilotBlocked:ye("copilot-blocked",60477),copilotNotConnected:ye("copilot-not-connected",60478),flag:ye("flag",60479),lightbulbEmpty:ye("lightbulb-empty",60480),symbolMethodArrow:ye("symbol-method-arrow",60481),copilotUnavailable:ye("copilot-unavailable",60482),repoPinned:ye("repo-pinned",60483),keyboardTabAbove:ye("keyboard-tab-above",60484),keyboardTabBelow:ye("keyboard-tab-below",60485),gitPullRequestDone:ye("git-pull-request-done",60486),mcp:ye("mcp",60487),extensionsLarge:ye("extensions-large",60488),layoutPanelDock:ye("layout-panel-dock",60489),layoutSidebarLeftDock:ye("layout-sidebar-left-dock",60490),layoutSidebarRightDock:ye("layout-sidebar-right-dock",60491),copilotInProgress:ye("copilot-in-progress",60492),copilotError:ye("copilot-error",60493),copilotSuccess:ye("copilot-success",60494),chatSparkle:ye("chat-sparkle",60495),searchSparkle:ye("search-sparkle",60496),editSparkle:ye("edit-sparkle",60497),copilotSnooze:ye("copilot-snooze",60498),sendToRemoteAgent:ye("send-to-remote-agent",60499),commentDiscussionSparkle:ye("comment-discussion-sparkle",60500),chatSparkleWarning:ye("chat-sparkle-warning",60501),chatSparkleError:ye("chat-sparkle-error",60502),collection:ye("collection",60503),newCollection:ye("new-collection",60504),thinking:ye("thinking",60505),build:ye("build",60506),commentDiscussionQuote:ye("comment-discussion-quote",60507),cursor:ye("cursor",60508),eraser:ye("eraser",60509),fileText:ye("file-text",60510),gitLens:ye("git-lens",60511),quotes:ye("quotes",60512),rename:ye("rename",60513),runWithDeps:ye("run-with-deps",60514),debugConnected:ye("debug-connected",60515),strikethrough:ye("strikethrough",60516),openInProduct:ye("open-in-product",60517),indexZero:ye("index-zero",60518),agent:ye("agent",60519),editCode:ye("edit-code",60520),repoSelected:ye("repo-selected",60521),skip:ye("skip",60522),mergeInto:ye("merge-into",60523),gitBranchChanges:ye("git-branch-changes",60524),gitBranchStagedChanges:ye("git-branch-staged-changes",60525),gitBranchConflicts:ye("git-branch-conflicts",60526),gitBranch:ye("git-branch",60527),gitBranchCreate:ye("git-branch-create",60527),gitBranchDelete:ye("git-branch-delete",60527),searchLarge:ye("search-large",60528),terminalGitBash:ye("terminal-git-bash",60529)},rno={dialogError:ye("dialog-error","error"),dialogWarning:ye("dialog-warning","warning"),dialogInfo:ye("dialog-info","info"),dialogClose:ye("dialog-close","close"),treeItemExpanded:ye("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:ye("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:ye("tree-filter-on-type-off","list-selection"),treeFilterClear:ye("tree-filter-clear","close"),treeItemLoading:ye("tree-item-loading","loading"),menuSelection:ye("menu-selection","check"),menuSubmenu:ye("menu-submenu","chevron-right"),menuBarMore:ye("menubar-more","more"),scrollbarButtonLeft:ye("scrollbar-button-left","triangle-left"),scrollbarButtonRight:ye("scrollbar-button-right","triangle-right"),scrollbarButtonUp:ye("scrollbar-button-up","triangle-up"),scrollbarButtonDown:ye("scrollbar-button-down","triangle-down"),toolBarMore:ye("toolbar-more","more"),quickInputBack:ye("quick-input-back","arrow-left"),dropDownButton:ye("drop-down-button",60084),symbolCustomColor:ye("symbol-customcolor",60252),exportIcon:ye("export",60332),workspaceUnspecified:ye("workspace-unspecified",60355),newLine:ye("newline",60394),thumbsDownFilled:ye("thumbsdown-filled",60435),thumbsUpFilled:ye("thumbsup-filled",60436),gitFetch:ye("git-fetch",60445),lightbulbSparkleAutofix:ye("lightbulb-sparkle-autofix",60447),debugBreakpointPending:ye("debug-breakpoint-pending",60377)},zt={...ino,...rno};var vNe;(function(e){function t(n){return!!n&&typeof n=="object"&&typeof n.id=="string"}e.isThemeColor=t})(vNe||(vNe={}));var fi;(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 n(f){const k=t.exec(f.id);if(!k)return n(zt.error);const[,A,p]=k,b=["codicon","codicon-"+A];return p&&b.push("codicon-modifier-"+p.substring(1)),b}e.asClassNameArray=n;function r(f){return n(f).join(" ")}e.asClassName=r;function o(f){return"."+n(f).join(".")}e.asCSSSelector=o;function s(f){return!!f&&typeof f=="object"&&typeof f.id=="string"&&(typeof f.color>"u"||vNe.isThemeColor(f.color))}e.isThemeIcon=s;const a=new RegExp(`^\\$\\((${e.iconNameExpression}(?:${e.iconModifierExpression})?)\\)$`);function l(f){const k=a.exec(f);if(!k)return;const[,A]=k;return{id:A}}e.fromString=l;function d(f){return{id:f}}e.fromId=d;function u(f,k){let A=f.id;const p=A.lastIndexOf("~");return p!==-1&&(A=A.substring(0,p)),k&&(A=`${A}~${k}`),{id:A}}e.modify=u;function h(f){const k=f.id.lastIndexOf("~");if(k!==-1)return f.id.substring(k+1)}e.getModifier=h;function g(f,k){var A,p;return f.id===k.id&&((A=f.color)==null?void 0:A.id)===((p=k.color)==null?void 0:p.id)}e.isEqual=g;function m(f){return(f==null?void 0:f.id)===zt.file.id}e.isFile=m;function v(f){return(f==null?void 0:f.id)===zt.folder.id}e.isFolder=v})(fi||(fi={}));const ba=Cr("commandService"),co=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new at,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(e,t){if(!e)throw new Error("invalid command");if(typeof e=="string"){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.metadata&&Array.isArray(e.metadata.args)){const a=[];for(const d of e.metadata.args)a.push(d.constraint);const l=e.handler;e.handler=function(d,...u){return CJr(u,a),l(d,...u)}}const{id:n}=e;let r=this._commands.get(n);r||(r=new bg,this._commands.set(n,r));const o=r.unshift(e),s=Hn(()=>{o();const a=this._commands.get(n);a!=null&&a.isEmpty()&&this._commands.delete(n)});return this._onDidRegisterCommand.fire(n),s}registerCommandAlias(e,t){return co.registerCommand(e,(n,...r)=>n.get(ba).executeCommand(t,...r))}getCommand(e){const t=this._commands.get(e);if(!(!t||t.isEmpty()))return to.first(t)}getCommands(){const e=new Map;for(const t of this._commands.keys()){const n=this.getCommand(t);n&&e.set(t,n)}return e}};co.registerCommand("noop",()=>{});function nLe(...e){switch(e.length){case 1:return U(1693,"Did you mean {0}?",e[0]);case 2:return U(1694,"Did you mean {0} or {1}?",e[0],e[1]);case 3:return U(1695,"Did you mean {0}, {1} or {2}?",e[0],e[1],e[2]);default:return}}const ono=U(1696,"Did you forget to open or close the quote?"),sno=U(1697,"Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");var jS;let aX=(jS=class{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(t){switch(t.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return t.isTripleEq?"===":"==";case 4:return t.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return t.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 t.lexeme;case 18:return t.lexeme;case 19:return t.lexeme;case 20:return"EOF";default:throw mme(`unhandled token type: ${JSON.stringify(t)}; have you forgotten to add a case?`)}}reset(t){return this._input=t,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const n=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:n})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const n=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:n})}else this._match(126)?this._addToken(9):this._error(nLe("==","=~"));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(nLe("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(nLe("||"));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(t){return this._isAtEnd()||this._input.charCodeAt(this._current)!==t?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(t){this._tokens.push({type:t,offset:this._start})}_error(t){const n=this._start,r=this._input.substring(this._start,this._current),o={type:19,offset:this._start,lexeme:r};this._errors.push({offset:n,lexeme:r,additionalInfo:t}),this._tokens.push(o)}_string(){this.stringRe.lastIndex=this._start;const t=this.stringRe.exec(this._input);if(t){this._current=this._start+t[0].length;const n=this._input.substring(this._start,this._current),r=jS._keywords.get(n);r?this._addToken(r):this._tokens.push({type:17,lexeme:n,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(ono);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let t=this._current,n=!1,r=!1;for(;;){if(t>=this._input.length){this._current=t,this._error(sno);return}const s=this._input.charCodeAt(t);if(n)n=!1;else if(s===47&&!r){t++;break}else s===91?r=!0:s===92?n=!0:s===93&&(r=!1);t++}for(;t=this._input.length}},jS._regexFlags=new Set(["i","g","s","m","y","u"].map(t=>t.charCodeAt(0))),jS._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]),jS);const Df=new Map;Df.set("false",!1);Df.set("true",!0);Df.set("isMac",Tr);Df.set("isLinux",v1);Df.set("isWindows",mh);Df.set("isWeb",qy);Df.set("isMacNative",Tr&&!qy);Df.set("isEdge",B6n);Df.set("isFirefox",BJr);Df.set("isChrome",_Je);Df.set("isSafari",RJr);const ano=Object.prototype.hasOwnProperty,lno={regexParsingWithErrorRecovery:!0},cno=U(1675,"Empty context key expression"),dno=U(1676,"Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),uno=U(1677,"'in' after 'not'."),Dbt=U(1678,"closing parenthesis ')'"),hno=U(1679,"Unexpected token"),fno=U(1680,"Did you forget to put && or || before the token?"),gno=U(1681,"Unexpected end of expression"),mno=U(1682,"Did you forget to put a context key?");var RO;let kno=(RO=class{constructor(t=lno){this._config=t,this._scanner=new aX,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(t){if(t===""){this._parsingErrors.push({message:cno,offset:0,lexeme:"",additionalInfo:dno});return}this._tokens=this._scanner.reset(t).scan(),this._current=0,this._parsingErrors=[];try{const n=this._expr();if(!this._isAtEnd()){const r=this._peek(),o=r.type===17?fno:void 0;throw this._parsingErrors.push({message:hno,offset:r.offset,lexeme:aX.getLexeme(r),additionalInfo:o}),RO._parseError}return n}catch(n){if(n!==RO._parseError)throw n;return}}_expr(){return this._or()}_or(){const t=[this._and()];for(;this._matchOne(16);){const n=this._and();t.push(n)}return t.length===1?t[0]:Ft.or(...t)}_and(){const t=[this._term()];for(;this._matchOne(15);){const n=this._term();t.push(n)}return t.length===1?t[0]:Ft.and(...t)}_term(){if(this._matchOne(2)){const t=this._peek();switch(t.type){case 11:return this._advance(),hm.INSTANCE;case 12:return this._advance(),p1.INSTANCE;case 0:{this._advance();const n=this._expr();return this._consume(1,Dbt),n==null?void 0:n.negate()}case 17:return this._advance(),wI.create(t.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",t)}}return this._primary()}_primary(){const t=this._peek();switch(t.type){case 11:return this._advance(),Ft.true();case 12:return this._advance(),Ft.false();case 0:{this._advance();const n=this._expr();return this._consume(1,Dbt),n}case 17:{const n=t.lexeme;if(this._advance(),this._matchOne(9)){const o=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),o.type!==10)throw this._errExpectedButGot("REGEX",o);const s=o.lexeme,a=s.lastIndexOf("/"),l=a===s.length-1?void 0:this._removeFlagsGY(s.substring(a+1));let d;try{d=new RegExp(s.substring(1,a),l)}catch{throw this._errExpectedButGot("REGEX",o)}return YK.create(n,d)}switch(o.type){case 10:case 19:{const s=[o.lexeme];this._advance();let a=this._peek(),l=0;for(let m=0;m=0){const u=s.slice(l+1,d),h=s[d+1]==="i"?"i":"";try{a=new RegExp(u,h)}catch{throw this._errExpectedButGot("REGEX",o)}}}if(a===null)throw this._errExpectedButGot("REGEX",o);return YK.create(n,a)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,uno);const o=this._value();return Ft.notIn(n,o)}switch(this._peek().type){case 3:{this._advance();const o=this._value();if(this._previous().type===18)return Ft.equals(n,o);switch(o){case"true":return Ft.has(n);case"false":return Ft.not(n);default:return Ft.equals(n,o)}}case 4:{this._advance();const o=this._value();if(this._previous().type===18)return Ft.notEquals(n,o);switch(o){case"true":return Ft.not(n);case"false":return Ft.has(n);default:return Ft.notEquals(n,o)}}case 5:return this._advance(),Ebe.create(n,this._value());case 6:return this._advance(),Tbe.create(n,this._value());case 7:return this._advance(),Lbe.create(n,this._value());case 8:return this._advance(),xbe.create(n,this._value());case 13:return this._advance(),Ft.in(n,this._value());default:return Ft.has(n)}}case 20:throw this._parsingErrors.push({message:gno,offset:t.offset,lexeme:"",additionalInfo:mno}),RO._parseError;default:throw this._errExpectedButGot(`true | false | KEY +`),o=hto(r[n+1]);if(o)return new VJe(o.fileName,o.line,o.column,o.id)}constructor(t,n,r,o){this.fileName=t,this.line=n,this.column=r,this.id=o}}function hto(e){const t=e.match(/\((.*):(\d+):(\d+)\)/);if(t)return{fileName:t[1],line:parseInt(t[2]),column:parseInt(t[3]),id:e};const n=e.match(/at ([^\(\)]*):(\d+):(\d+)/);if(n)return{fileName:n[1],line:parseInt(n[2]),column:parseInt(n[3]),id:e}}const f2=(e,t)=>e===t;function VK(e=f2){return(t,n)=>Na(t,n,e)}function zJe(){return(e,t)=>e.equals(t)}function oQ(e,t,n){if(n!==void 0){const r=e;return r==null||t===void 0||t===null?t===r:n(r,t)}else{const r=e;return(o,s)=>o==null||s===void 0||s===null?s===o:r(o,s)}}function lNe(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{const a=HJe(s);if(a!==void 0)return a;const d=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(s.toString());if(d)return`${this.debugName}.${d[2]}`;if(!o)return`${this.debugName} (mapped)`},debugReferenceFn:s},a=>s(this.read(a),a),r)}flatten(){return dNe({owner:void 0,debugName:()=>`${this.debugName} (flattened)`},t=>this.read(t).read(t))}recomputeInitiallyAndOnChange(t,n){return t.add(uEn(this,n)),this}}class Vz extends hEn{constructor(t){var n;super(),this._observers=new Set,(n=Of())==null||n.handleObservableCreated(this,t)}addObserver(t){var r;const n=this._observers.size;this._observers.add(t),n===0&&this.onFirstObserverAdded(),n!==this._observers.size&&((r=Of())==null||r.handleOnListenerCountChanged(this,this._observers.size))}removeObserver(t){var r;const n=this._observers.delete(t);n&&this._observers.size===0&&this.onLastObserverRemoved(),n&&((r=Of())==null||r.handleOnListenerCountChanged(this,this._observers.size))}onFirstObserverAdded(){}onLastObserverRemoved(){}debugGetObservers(){return this._observers}}function pto(e){switch(e){case 0:return"initial";case 1:return"dependenciesMightHaveChanged";case 2:return"stale";case 3:return"upToDate";default:return""}}class pv extends Vz{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(t,n,r,o=void 0,s,a){var l;super(a),this._debugNameData=t,this._computeFn=n,this._changeTracker=r,this._handleLastObserverRemoved=o,this._equalityComparator=s,this._state=0,this._value=void 0,this._updateCount=0,this._dependencies=new Set,this._dependenciesToBeRemoved=new Set,this._changeSummary=void 0,this._isUpdating=!1,this._isComputing=!1,this._didReportChange=!1,this._isInBeforeUpdate=!1,this._isReaderValid=!1,this._store=void 0,this._delayedStore=void 0,this._removedObserverToCallEndUpdateOn=null,this._changeSummary=(l=this._changeTracker)==null?void 0:l.createChangeSummary(void 0)}onLastObserverRemoved(){var t,n;this._state=0,this._value=void 0,(t=Of())==null||t.handleDerivedCleared(this);for(const r of this._dependencies)r.removeObserver(this);this._dependencies.clear(),this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._delayedStore!==void 0&&(this._delayedStore.dispose(),this._delayedStore=void 0),(n=this._handleLastObserverRemoved)==null||n.call(this)}get(){var n,r;if(this._isComputing,this._observers.size===0){let o;try{this._isReaderValid=!0;let s;this._changeTracker&&(s=this._changeTracker.createChangeSummary(void 0),(r=(n=this._changeTracker).beforeUpdate)==null||r.call(n,this,s)),o=this._computeFn(this,s)}finally{this._isReaderValid=!1}return this.onLastObserverRemoved(),o}else{do{if(this._state===1){for(const o of this._dependencies)if(o.reportChanges(),this._state===2)break}this._state===1&&(this._state=3),this._state!==3&&this._recompute()}while(this._state!==3);return this._value}}_recompute(){var r,o,s,a;let t=!1;this._isComputing=!0,this._didReportChange=!1;const n=this._dependenciesToBeRemoved;this._dependenciesToBeRemoved=this._dependencies,this._dependencies=n;try{const l=this._changeSummary;this._isReaderValid=!0,this._changeTracker&&(this._isInBeforeUpdate=!0,(o=(r=this._changeTracker).beforeUpdate)==null||o.call(r,this,l),this._isInBeforeUpdate=!1,this._changeSummary=(s=this._changeTracker)==null?void 0:s.createChangeSummary(l));const d=this._state!==0,u=this._value;this._state=3;const h=this._delayedStore;h!==void 0&&(this._delayedStore=void 0);try{this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._value=this._computeFn(this,l)}finally{this._isReaderValid=!1;for(const g of this._dependenciesToBeRemoved)g.removeObserver(this);this._dependenciesToBeRemoved.clear(),h!==void 0&&h.dispose()}t=this._didReportChange||d&&!this._equalityComparator(u,this._value),(a=Of())==null||a.handleObservableUpdated(this,{oldValue:u,newValue:this._value,change:void 0,didChange:t,hadValue:d})}catch(l){fme(l)}if(this._isComputing=!1,!this._didReportChange&&t)for(const l of this._observers)l.handleChange(this,void 0);else this._didReportChange=!1}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(t){if(this._isUpdating)throw new ui("Cyclic deriveds are not supported yet!");this._updateCount++,this._isUpdating=!0;try{const n=this._updateCount===1;if(this._state===3&&(this._state=1,!n))for(const r of this._observers)r.handlePossibleChange(this);if(n)for(const r of this._observers)r.beginUpdate(this)}finally{this._isUpdating=!1}}endUpdate(t){if(this._updateCount--,this._updateCount===0){const n=[...this._observers];for(const r of n)r.endUpdate(this);if(this._removedObserverToCallEndUpdateOn){const r=[...this._removedObserverToCallEndUpdateOn];this._removedObserverToCallEndUpdateOn=null;for(const o of r)o.endUpdate(this)}}b6(()=>this._updateCount>=0)}handlePossibleChange(t){if(this._state===3&&this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)){this._state=1;for(const n of this._observers)n.handlePossibleChange(this)}}handleChange(t,n){var r;if(this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)||this._isInBeforeUpdate){(r=Of())==null||r.handleDerivedDependencyChanged(this,t,n);let o=!1;try{o=this._changeTracker?this._changeTracker.handleChange({changedObservable:t,change:n,didChange:a=>a===t},this._changeSummary):!0}catch(a){fme(a)}const s=this._state===3;if(o&&(this._state===1||s)&&(this._state=2,s))for(const a of this._observers)a.handlePossibleChange(this)}}_ensureReaderValid(){if(!this._isReaderValid)throw new ui("The reader object cannot be used outside its compute function!")}readObservable(t){this._ensureReaderValid(),t.addObserver(this);const n=t.get();return this._dependencies.add(t),this._dependenciesToBeRemoved.delete(t),n}get store(){return this._ensureReaderValid(),this._store===void 0&&(this._store=new xt),this._store}addObserver(t){const n=!this._observers.has(t)&&this._updateCount>0;super.addObserver(t),n&&(this._removedObserverToCallEndUpdateOn&&this._removedObserverToCallEndUpdateOn.has(t)?this._removedObserverToCallEndUpdateOn.delete(t):t.beginUpdate(this))}removeObserver(t){this._observers.has(t)&&this._updateCount>0&&(this._removedObserverToCallEndUpdateOn||(this._removedObserverToCallEndUpdateOn=new Set),this._removedObserverToCallEndUpdateOn.add(t)),super.removeObserver(t)}debugGetState(){return{state:this._state,stateStr:pto(this._state),updateCount:this._updateCount,isComputing:this._isComputing,dependencies:this._dependencies,value:this._value}}debugSetValue(t){this._value=t}debugRecompute(){this._isComputing?this._state=2:this._recompute()}setValue(t,n,r){this._value=t;const o=this._observers;n.updateObserver(this,this);for(const s of o)s.handleChange(this,r)}}class fEn extends pv{constructor(t,n,r,o=void 0,s,a,l){super(t,n,r,o,s,l),this.set=a}}function Rt(e,t,n=Hd.ofCaller()){return t!==void 0?new pv(new tf(e,void 0,t),t,void 0,void 0,f2,n):new pv(new tf(void 0,void 0,e),e,void 0,void 0,f2,n)}function $Je(e,t,n,r=Hd.ofCaller()){return new fEn(new tf(e,void 0,t),t,void 0,void 0,f2,n,r)}function Vh(e,t,n=Hd.ofCaller()){return new pv(new tf(e.owner,e.debugName,e.debugReferenceFn),t,void 0,e.onLastObserverRemoved,e.equalsFn??f2,n)}vto(Vh);function pbt(e,t,n=Hd.ofCaller()){return new pv(new tf(e.owner,e.debugName,void 0),t,e.changeTracker,void 0,e.equalityComparer??f2,n)}function vv(e,t,n=Hd.ofCaller()){let r,o;t===void 0?(r=e,o=void 0):(o=e,r=t);let s;return new pv(new tf(o,void 0,r),a=>{s?s.clear():s=new xt;const l=r(a);return l&&s.add(l),l},void 0,()=>{s&&(s.dispose(),s=void 0)},f2,n)}function bto(e){switch(e){case 1:return"dependenciesMightHaveChanged";case 2:return"stale";case 3:return"upToDate";default:return""}}class zK{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(t,n,r,o){var s,a;this._debugNameData=t,this._runFn=n,this._changeTracker=r,this._state=2,this._updateCount=0,this._disposed=!1,this._dependencies=new Set,this._dependenciesToBeRemoved=new Set,this._isRunning=!1,this._store=void 0,this._delayedStore=void 0,this._changeSummary=(s=this._changeTracker)==null?void 0:s.createChangeSummary(void 0),(a=Of())==null||a.handleAutorunCreated(this,o),this._run()}dispose(){var t;if(!this._disposed){this._disposed=!0;for(const n of this._dependencies)n.removeObserver(this);this._dependencies.clear(),this._store!==void 0&&this._store.dispose(),this._delayedStore!==void 0&&this._delayedStore.dispose(),(t=Of())==null||t.handleAutorunDisposed(this)}}_run(){var n,r,o,s;const t=this._dependenciesToBeRemoved;this._dependenciesToBeRemoved=this._dependencies,this._dependencies=t,this._state=3;try{if(!this._disposed){(n=Of())==null||n.handleAutorunStarted(this);const a=this._changeSummary,l=this._delayedStore;l!==void 0&&(this._delayedStore=void 0);try{this._isRunning=!0,this._changeTracker&&((o=(r=this._changeTracker).beforeUpdate)==null||o.call(r,this,a),this._changeSummary=this._changeTracker.createChangeSummary(a)),this._store!==void 0&&(this._store.dispose(),this._store=void 0),this._runFn(this,a)}catch(d){fme(d)}finally{this._isRunning=!1,l!==void 0&&l.dispose()}}}finally{this._disposed||(s=Of())==null||s.handleAutorunFinished(this);for(const a of this._dependenciesToBeRemoved)a.removeObserver(this);this._dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(t){this._state===3&&(this._state=1),this._updateCount++}endUpdate(t){try{if(this._updateCount===1)do{if(this._state===1){this._state=3;for(const n of this._dependencies)if(n.reportChanges(),this._state===2)break}this._state!==3&&this._run()}while(this._state!==3)}finally{this._updateCount--}b6(()=>this._updateCount>=0)}handlePossibleChange(t){this._state===3&&this._isDependency(t)&&(this._state=1)}handleChange(t,n){var r;if(this._isDependency(t)){(r=Of())==null||r.handleAutorunDependencyChanged(this,t,n);try{(this._changeTracker?this._changeTracker.handleChange({changedObservable:t,change:n,didChange:s=>s===t},this._changeSummary):!0)&&(this._state=2)}catch(o){fme(o)}}}_isDependency(t){return this._dependencies.has(t)&&!this._dependenciesToBeRemoved.has(t)}_ensureNoRunning(){if(!this._isRunning)throw new ui("The reader object cannot be used outside its compute function!")}readObservable(t){if(this._ensureNoRunning(),this._disposed)return t.get();t.addObserver(this);const n=t.get();return this._dependencies.add(t),this._dependenciesToBeRemoved.delete(t),n}get store(){if(this._ensureNoRunning(),this._disposed)throw new ui("Cannot access store after dispose");return this._store===void 0&&(this._store=new xt),this._store}debugGetState(){return{isRunning:this._isRunning,updateCount:this._updateCount,dependencies:this._dependencies,state:this._state,stateStr:bto(this._state)}}debugRerun(){this._isRunning?this._state=2:this._run()}}function Oi(e,t=Hd.ofCaller()){return new zK(new tf(void 0,void 0,e),e,void 0,t)}function pbe(e,t,n=Hd.ofCaller()){return new zK(new tf(e.owner,e.debugName,e.debugReferenceFn??t),t,void 0,n)}function zz(e,t,n=Hd.ofCaller()){return new zK(new tf(e.owner,e.debugName,e.debugReferenceFn??t),t,e.changeTracker,n)}function wto(e,t){const n=new xt,r=zz({owner:e.owner,debugName:e.debugName,debugReferenceFn:e.debugReferenceFn??t,changeTracker:e.changeTracker},(o,s)=>{n.clear(),t(o,s,n)});return Hn(()=>{r.dispose(),n.dispose()})}function Ef(e){const t=new xt,n=pbe({owner:void 0,debugName:void 0,debugReferenceFn:e},r=>{t.clear(),e(r,t)});return Hn(()=>{n.dispose(),t.dispose()})}function Oto(e,t){let n;return pbe({debugReferenceFn:t},r=>{const o=e.read(r),s=n;n=o,t({lastValue:s,newValue:o})})}function bbt(e){const t=new Error("BugIndicatingErrorRecovery: "+e);zi(t),console.error("recovered from an error that indicates a bug",t)}function la(e,t){const n=new Hz(e,t);try{e(n)}finally{n.finish()}}let dle;function BG(e){if(dle)e(dle);else{const t=new Hz(e,void 0);dle=t;try{e(t)}finally{t.finish(),dle=void 0}}}async function yto(e,t){const n=new Hz(e,t);try{await e(n)}finally{n.finish()}}function qW(e,t,n){e?t(e):la(t,n)}class Hz{constructor(t,n){var r;this._fn=t,this._getDebugName=n,this._updatingObservers=[],(r=Of())==null||r.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():HJe(this._fn)}updateObserver(t,n){if(!this._updatingObservers){bbt("Transaction already finished!"),la(r=>{r.updateObserver(t,n)});return}this._updatingObservers.push({observer:t,observable:n}),t.beginUpdate(n)}finish(){var n;const t=this._updatingObservers;if(!t){bbt("transaction.finish() has already been called!");return}for(let r=0;rxS.globalTransaction,f2,o??Hd.ofCaller())}function gEn(e,t,n,r=Hd.ofCaller()){return new xS(new tf(e.owner,e.debugName,e.debugReferenceFn??n),t,n,()=>xS.globalTransaction,e.equalsFn??f2,r)}class xS extends Vz{constructor(t,n,r,o,s,a){super(a),this._debugNameData=t,this.event=n,this._getValue=r,this._getTransaction=o,this._equalityComparator=s,this._hasValue=!1,this.handleEvent=l=>{var m;const d=this._getValue(l),u=this._value,h=!this._hasValue||!this._equalityComparator(u,d);let g=!1;h&&(this._value=d,this._hasValue&&(g=!0,qW(this._getTransaction(),v=>{var f;(f=Of())==null||f.handleObservableUpdated(this,{oldValue:u,newValue:d,change:void 0,didChange:h,hadValue:this._hasValue});for(const k of this._observers)v.updateObserver(k,this),k.handleChange(this,void 0)},()=>{const v=this.getDebugName();return"Event fired"+(v?`: ${v}`:"")})),this._hasValue=!0),g||(m=Of())==null||m.handleObservableUpdated(this,{oldValue:u,newValue:d,change:void 0,didChange:h,hadValue:this._hasValue})}}getDebugName(){return this._debugNameData.getDebugName(this)}get debugName(){const t=this.getDebugName();return"From Event"+(t?`: ${t}`:"")}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)}debugSetValue(t){this._value=t}debugGetState(){return{value:this._value,hasValue:this._hasValue}}}(function(e){e.Observer=xS;function t(n,r){let o=!1;xS.globalTransaction===void 0&&(xS.globalTransaction=n,o=!0);try{r()}finally{o&&(xS.globalTransaction=void 0)}}e.batchEventsGlobally=t})(Ko||(Ko={}));function wbt(e,t){let n=!1,r,o;return Ko(s=>{const a=Oi(l=>{const d=e.read(l);n?(o&&clearTimeout(o),o=setTimeout(()=>{r=d,s()},t)):(n=!0,r=d)});return{dispose(){a.dispose(),n=!1,r=void 0}}},()=>n?r:e.get())}function KW(e,t){const n=new Cto(!0,t);e.addObserver(n);try{n.beginUpdate(e)}finally{n.endUpdate(e)}return Hn(()=>{e.removeObserver(n)})}Ato(KW);class Cto{constructor(t,n){this._forceRecompute=t,this._handleValue=n,this._counter=0}beginUpdate(t){this._counter++}endUpdate(t){this._counter===1&&this._forceRecompute&&(this._handleValue?this._handleValue(t.get()):t.reportChanges()),this._counter--}handlePossibleChange(t){}handleChange(t,n){}}function vL(e,t){let n;return Vh({owner:e,debugReferenceFn:t},o=>(n=t(o,n),n))}function XJe(e,t,n,r){let o=new Obt(n,r);return Vh({debugReferenceFn:n,owner:e,onLastObserverRemoved:()=>{o.dispose(),o=new Obt(n)}},a=>(o.setItems(t.read(a)),o.getItems()))}let Obt=class{constructor(t,n){this._map=t,this._keySelector=n,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach(t=>t.store.dispose()),this._cache.clear()}setItems(t){const n=[],r=new Set(this._cache.keys());for(const o of t){const s=this._keySelector?this._keySelector(o):o;let a=this._cache.get(s);if(a)r.delete(s);else{const l=new xt;a={out:this._map(o,l),store:l},this._cache.set(s,a)}n.push(a.out)}for(const o of r)this._cache.get(o).store.dispose(),this._cache.delete(o);this._items=n}getItems(){return this._items}};function dN(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 e===null?"null":Array.isArray(e)?_to(e,t):Sto(e,t);case"symbol":return e.toString();case"function":return`[[Function${e.name?" "+e.name:""}]]`;default:return""+e}}function _to(e,t){let n="[ ",r=!0;for(const o of e){if(r||(n+=", "),n.length-5>t){n+="...";break}r=!1,n+=`${dN(o,t-n.length)}`}return n+=" ]",n}function Sto(e,t){if(typeof e.toString=="function"&&e.toString!==Object.prototype.toString){const s=e.toString();return s.length<=t?s:s.substring(0,t-3)+"..."}const n=dEn(e);let r=n?n+"(":"{ ",o=!0;for(const[s,a]of Object.entries(e)){if(o||(r+=", "),r.length-5>t){r+="...";break}o=!1,r+=`${s}: ${dN(a,t-r.length)}`}return r+=n?")":" }",r}class GJe{static createClient(t,n){return new GJe(t,n)}constructor(t,n){this._channelFactory=t,this._getHandler=n,this._channel=this._channelFactory({handleNotification:s=>{const a=s,l=this._getHandler().notifications[a[0]];if(!l)throw new Error(`Unknown notification "${a[0]}"!`);l(...a[1])},handleRequest:s=>{const a=s;try{return{type:"result",value:this._getHandler().requests[a[0]](...a[1])}}catch(l){return{type:"error",value:l}}}});const r=new Proxy({},{get:(s,a)=>async(...l)=>{const d=await this._channel.sendRequest([a,l]);if(d.type==="error")throw d.value;return d.value}}),o=new Proxy({},{get:(s,a)=>(...l)=>{this._channel.sendNotification([a,l])}});this.api={notifications:o,requests:r}}}function Lto(e,t){const n=globalThis;let r=[],o;const{channel:s,handler:a}=xto({sendNotification:d=>{o?o.sendNotification(d):r.push(d)}});let l;return(n.$$debugValueEditor_debugChannels??(n.$$debugValueEditor_debugChannels={}))[e]=d=>{l=t(),o=d;for(const u of r)d.sendNotification(u);return r=[],a},GJe.createClient(s,()=>{if(!l)throw new Error("Not supported");return l})}function xto(e){let t;return{channel:r=>(t=r,{sendNotification:o=>{e.sendNotification(o)},sendRequest:o=>{throw new Error("not supported")}}),handler:{handleRequest:r=>r.type==="notification"?t==null?void 0:t.handleNotification(r.data):t==null?void 0:t.handleRequest(r.data)}}}class Eto{constructor(){this._timeout=void 0}throttle(t,n){this._timeout===void 0&&(this._timeout=setTimeout(()=>{this._timeout=void 0,t()},n))}dispose(){this._timeout!==void 0&&clearTimeout(this._timeout)}}function mEn(e,t){for(const n in t)e[n]&&typeof e[n]=="object"&&t[n]&&typeof t[n]=="object"?mEn(e[n],t[n]):e[n]=t[n]}function kEn(e,t){for(const n in t)t[n]===null?delete e[n]:e[n]&&typeof e[n]=="object"&&t[n]&&typeof t[n]=="object"?kEn(e[n],t[n]):e[n]=t[n]}function Ti(e,t,n=Hd.ofCaller()){let r;return typeof e=="string"?r=new tf(void 0,e,void 0):r=new tf(e,void 0,void 0),new HK(r,t,f2,n)}class HK extends Vz{get debugName(){return this._debugNameData.getDebugName(this)??"ObservableValue"}constructor(t,n,r,o){var s;super(o),this._debugNameData=t,this._equalityComparator=r,this._value=n,(s=Of())==null||s.handleObservableUpdated(this,{hadValue:!1,newValue:n,change:void 0,didChange:!0,oldValue:void 0})}get(){return this._value}set(t,n,r){var s;if(r===void 0&&this._equalityComparator(this._value,t))return;let o;n||(n=o=new Hz(()=>{},()=>`Setting ${this.debugName}`));try{const a=this._value;this._setValue(t),(s=Of())==null||s.handleObservableUpdated(this,{oldValue:a,newValue:t,change:r,didChange:!0,hadValue:!0});for(const l of this._observers)n.updateObserver(l,this),l.handleChange(this,r)}finally{o&&o.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(t){this._value=t}debugGetState(){return{value:this._value}}debugSetValue(t){this._value=t}}function YJe(e,t,n=Hd.ofCaller()){let r;return typeof e=="string"?r=new tf(void 0,e,void 0):r=new tf(e,void 0,void 0),new Tto(r,t,f2,n)}class Tto extends HK{_setValue(t){this._value!==t&&(this._value&&this._value.dispose(),this._value=t)}dispose(){var t;(t=this._value)==null||t.dispose()}}const jT=class jT{static getInstance(){return jT._instance===void 0&&(jT._instance=new jT),jT._instance}getTransactionState(){const t=[],n=[...this._activeTransactions];if(n.length===0)return;const r=n.flatMap(s=>s.debugGetUpdatingObservers()??[]).map(s=>s.observer),o=new Set;for(;r.length>0;){const s=r.shift();if(o.has(s))continue;o.add(s);const a=this._getInfo(s,l=>{o.has(l)||r.push(l)});a&&t.push(a)}return{names:n.map(s=>s.getDebugName()??"tx"),affected:t}}_getObservableInfo(t){const n=this._instanceInfos.get(t);if(!n){zi(new ui("No info found"));return}return n}_getAutorunInfo(t){const n=this._instanceInfos.get(t);if(!n){zi(new ui("No info found"));return}return n}_getInfo(t,n){if(t instanceof pv){const r=[...t.debugGetObservers()];for(const d of r)n(d);const o=this._getObservableInfo(t);if(!o)return;const s=t.debugGetState(),a={name:t.debugName,instanceId:o.instanceId,updateCount:s.updateCount},l=[...o.changedObservables].map(d=>{var u;return(u=this._instanceInfos.get(d))==null?void 0:u.instanceId}).filter(Ru);if(s.isComputing)return{...a,type:"observable/derived",state:"updating",changedDependencies:l,initialComputation:!1};switch(s.state){case 0:return{...a,type:"observable/derived",state:"noValue"};case 3:return{...a,type:"observable/derived",state:"upToDate"};case 2:return{...a,type:"observable/derived",state:"stale",changedDependencies:l};case 1:return{...a,type:"observable/derived",state:"possiblyStale"}}}else if(t instanceof zK){const r=this._getAutorunInfo(t);if(!r)return;const o={name:t.debugName,instanceId:r.instanceId,updateCount:r.updateCount},s=[...r.changedObservables].map(a=>this._instanceInfos.get(a).instanceId);if(t.debugGetState().isRunning)return{...o,type:"autorun",state:"updating",changedDependencies:s};switch(t.debugGetState().state){case 3:return{...o,type:"autorun",state:"upToDate"};case 2:return{...o,type:"autorun",state:"stale",changedDependencies:s};case 1:return{...o,type:"autorun",state:"possiblyStale"}}}}_formatObservable(t){const n=this._getObservableInfo(t);if(n)return{name:t.debugName,instanceId:n.instanceId}}_formatObserver(t){var r;if(t instanceof pv)return{name:t.toString(),instanceId:(r=this._getObservableInfo(t))==null?void 0:r.instanceId};const n=this._getAutorunInfo(t);if(n)return{name:t.toString(),instanceId:n.instanceId}}constructor(){this._declarationId=0,this._instanceId=0,this._declarations=new Map,this._instanceInfos=new WeakMap,this._aliveInstances=new Map,this._activeTransactions=new Set,this._channel=Lto("observableDevTools",()=>({notifications:{setDeclarationIdFilter:t=>{},logObservableValue:t=>{console.log("logObservableValue",t)},flushUpdates:()=>{this._flushUpdates()},resetUpdates:()=>{this._pendingChanges=null,this._channel.api.notifications.handleChange(this._fullState,!0)}},requests:{getDeclarations:()=>{const t={};for(const n of this._declarations.values())t[n.id]=n;return{decls:t}},getSummarizedInstances:()=>null,getObservableValueInfo:t=>({observers:[...this._aliveInstances.get(t).debugGetObservers()].map(r=>this._formatObserver(r)).filter(Ru)}),getDerivedInfo:t=>{const n=this._aliveInstances.get(t);return{dependencies:[...n.debugGetState().dependencies].map(r=>this._formatObservable(r)).filter(Ru),observers:[...n.debugGetObservers()].map(r=>this._formatObserver(r)).filter(Ru)}},getAutorunInfo:t=>({dependencies:[...this._aliveInstances.get(t).debugGetState().dependencies].map(r=>this._formatObservable(r)).filter(Ru)}),getTransactionState:()=>this.getTransactionState(),setValue:(t,n)=>{const r=this._aliveInstances.get(t);if(r instanceof pv)r.debugSetValue(n);else if(r instanceof HK)r.debugSetValue(n);else if(r instanceof xS)r.debugSetValue(n);else throw new ui("Observable is not supported");const o=[...r.debugGetObservers()];for(const s of o)s.beginUpdate(r);for(const s of o)s.handleChange(r,void 0);for(const s of o)s.endUpdate(r)},getValue:t=>{const n=this._aliveInstances.get(t);if(n instanceof pv)return dN(n.debugGetState().value,200);if(n instanceof HK)return dN(n.debugGetState().value,200)},logValue:t=>{const n=this._aliveInstances.get(t);if(n&&"get"in n)console.log("Logged Value:",n.get());else throw new ui("Observable is not supported")},rerun:t=>{const n=this._aliveInstances.get(t);if(n instanceof pv)n.debugRecompute();else if(n instanceof zK)n.debugRerun();else throw new ui("Observable is not supported")}}})),this._pendingChanges=null,this._changeThrottler=new Eto,this._fullState={},this._flushUpdates=()=>{this._pendingChanges!==null&&(this._channel.api.notifications.handleChange(this._pendingChanges,!1),this._pendingChanges=null)},Hd.enable()}_handleChange(t){kEn(this._fullState,t),this._pendingChanges===null?this._pendingChanges=t:mEn(this._pendingChanges,t),this._changeThrottler.throttle(this._flushUpdates,10)}_getDeclarationId(t,n){if(!n)return-1;let r=this._declarations.get(n.id);return r===void 0&&(r={id:this._declarationId++,type:t,url:n.fileName,line:n.line,column:n.column},this._declarations.set(n.id,r),this._handleChange({decls:{[r.id]:r}})),r.id}handleObservableCreated(t,n){const o={declarationId:this._getDeclarationId("observable/value",n),instanceId:this._instanceId++,listenerCount:0,lastValue:void 0,updateCount:0,changedObservables:new Set};this._instanceInfos.set(t,o)}handleOnListenerCountChanged(t,n){const r=this._getObservableInfo(t);if(r){if(r.listenerCount===0&&n>0){const o=t instanceof pv?"observable/derived":"observable/value";this._aliveInstances.set(r.instanceId,t),this._handleChange({instances:{[r.instanceId]:{instanceId:r.instanceId,declarationId:r.declarationId,formattedValue:r.lastValue,type:o,name:t.debugName}}})}else r.listenerCount>0&&n===0&&(this._handleChange({instances:{[r.instanceId]:null}}),this._aliveInstances.delete(r.instanceId));r.listenerCount=n}}handleObservableUpdated(t,n){if(t instanceof pv){this._handleDerivedRecomputed(t,n);return}const r=this._getObservableInfo(t);r&&n.didChange&&(r.lastValue=dN(n.newValue,30),r.listenerCount>0&&this._handleChange({instances:{[r.instanceId]:{formattedValue:r.lastValue}}}))}handleAutorunCreated(t,n){const o={declarationId:this._getDeclarationId("autorun",n),instanceId:this._instanceId++,updateCount:0,changedObservables:new Set};this._instanceInfos.set(t,o),this._aliveInstances.set(o.instanceId,t),o&&this._handleChange({instances:{[o.instanceId]:{instanceId:o.instanceId,declarationId:o.declarationId,runCount:0,type:"autorun",name:t.debugName}}})}handleAutorunDisposed(t){const n=this._getAutorunInfo(t);n&&(this._handleChange({instances:{[n.instanceId]:null}}),this._instanceInfos.delete(t),this._aliveInstances.delete(n.instanceId))}handleAutorunDependencyChanged(t,n,r){const o=this._getAutorunInfo(t);o&&o.changedObservables.add(n)}handleAutorunStarted(t){}handleAutorunFinished(t){const n=this._getAutorunInfo(t);n&&(n.changedObservables.clear(),n.updateCount++,this._handleChange({instances:{[n.instanceId]:{runCount:n.updateCount}}}))}handleDerivedDependencyChanged(t,n,r){const o=this._getObservableInfo(t);o&&o.changedObservables.add(n)}_handleDerivedRecomputed(t,n){const r=this._getObservableInfo(t);if(!r)return;const o=dN(n.newValue,30);r.updateCount++,r.changedObservables.clear(),r.lastValue=o,r.listenerCount>0&&this._handleChange({instances:{[r.instanceId]:{formattedValue:o,recomputationCount:r.updateCount}}})}handleDerivedCleared(t){const n=this._getObservableInfo(t);n&&(n.lastValue=void 0,n.changedObservables.clear(),n.listenerCount>0&&this._handleChange({instances:{[n.instanceId]:{formattedValue:void 0}}}))}handleBeginTransaction(t){this._activeTransactions.add(t)}handleEndTransaction(t){this._activeTransactions.delete(t)}};jT._instance=void 0;let uNe=jT;bme&&bme.VSCODE_DEV_DEBUG_OBSERVABLES&&uto(uNe.getInstance());const{getWindow:ii,getDocument:Qto,getWindows:vEn,getWindowsCount:Dto,getWindowId:$K,getWindowById:ybt,onDidRegisterWindow:xie,onWillUnregisterWindow:Bto,onDidUnregisterWindow:Rto}=function(){const e=new Map;AJr(Ls,1);const t={window:Ls,disposables:new xt};e.set(Ls.vscodeWindowId,t);const n=new at,r=new at,o=new at;function s(a,l){return(typeof a=="number"?e.get(a):void 0)??(l?t:void 0)}return{onDidRegisterWindow:n.event,onWillUnregisterWindow:o.event,onDidUnregisterWindow:r.event,registerWindow(a){if(e.has(a.vscodeWindowId))return ft.None;const l=new xt,d={window:a,disposables:l.add(new xt)};return e.set(a.vscodeWindowId,d),l.add(Hn(()=>{e.delete(a.vscodeWindowId),r.fire(a)})),l.add(wt(a,rn.BEFORE_UNLOAD,()=>{o.fire(a)})),n.fire(d),l},getWindows(){return e.values()},getWindowsCount(){return e.size},getWindowId(a){return a.vscodeWindowId},hasWindow(a){return e.has(a)},getWindowById:s,getWindow(a){var u;const l=a;if((u=l==null?void 0:l.ownerDocument)!=null&&u.defaultView)return l.ownerDocument.defaultView.window;const d=a;return d!=null&&d.view?d.view.window:Ls},getDocument(a){return ii(a).document}}}();function uh(e){for(;e.firstChild;)e.firstChild.remove()}class Ito{constructor(t,n,r,o){this._node=t,this._type=n,this._handler=r,this._options=o||!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 wt(e,t,n,r){return new Ito(e,t,n,r)}function AEn(e,t){return function(n){return t(new Xh(e,n))}}function Mto(e){return function(t){return e(new Us(t))}}const wc=function(t,n,r,o){let s=r;return n==="click"||n==="mousedown"||n==="contextmenu"?s=AEn(ii(t),r):(n==="keydown"||n==="keypress"||n==="keyup")&&(s=Mto(r)),wt(t,n,s,o)},Pto=function(t,n,r){const o=AEn(ii(t),n);return pEn(t,o,r)};function pEn(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_DOWN:rn.MOUSE_DOWN,t,n)}function Fto(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_MOVE:rn.MOUSE_MOVE,t,n)}function Cbt(e,t,n){return wt(e,cA&&yie.pointerEvents?rn.POINTER_UP:rn.MOUSE_UP,t,n)}function RG(e,t,n){return lZ(e,t,n)}class K8e extends U6n{constructor(t,n){super(t,n)}}let Lme,A1;class ZJe extends TJe{constructor(t){super(),this.defaultTarget=t&&ii(t)}cancelAndSet(t,n,r){return super.cancelAndSet(t,n,r??this.defaultTarget)}}class J8e{constructor(t,n=0){this._runner=t,this.priority=n,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(t){zi(t)}}static sort(t,n){return n.priority-t.priority}}(function(){const e=new Map,t=new Map,n=new Map,r=new Map,o=s=>{n.set(s,!1);const a=e.get(s)??[];for(t.set(s,a),e.set(s,[]),r.set(s,!0);a.length>0;)a.sort(J8e.sort),a.shift().execute();r.set(s,!1)};A1=(s,a,l=0)=>{const d=$K(s),u=new J8e(a,l);let h=e.get(d);return h||(h=[],e.set(d,h)),h.push(u),n.get(d)||(n.set(d,!0),s.requestAnimationFrame(()=>o(d))),u},Lme=(s,a,l)=>{const d=$K(s);if(r.get(d)){const u=new J8e(a,l);let h=t.get(d);return h||(h=[],t.set(d,h)),h.push(u),u}else return A1(s,a,l)}})();function bbe(e){return ii(e).getComputedStyle(e,null)}function O6(e,t,n){const r=ii(e),o=r.document;if(e!==o.body)return new cs(e.clientWidth,e.clientHeight);if(cA&&(r!=null&&r.visualViewport))return new cs(r.visualViewport.width,r.visualViewport.height);if(r!=null&&r.innerWidth&&r.innerHeight)return new cs(r.innerWidth,r.innerHeight);if(o.body&&o.body.clientWidth&&o.body.clientHeight)return new cs(o.body.clientWidth,o.body.clientHeight);if(o.documentElement&&o.documentElement.clientWidth&&o.documentElement.clientHeight)return new cs(o.documentElement.clientWidth,o.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}class bc{static convertToPixels(t,n){return parseFloat(n)||0}static getDimension(t,n){const r=bbe(t),o=r?r.getPropertyValue(n):"0";return bc.convertToPixels(t,o)}static getBorderLeftWidth(t){return bc.getDimension(t,"border-left-width")}static getBorderRightWidth(t){return bc.getDimension(t,"border-right-width")}static getBorderTopWidth(t){return bc.getDimension(t,"border-top-width")}static getBorderBottomWidth(t){return bc.getDimension(t,"border-bottom-width")}static getPaddingLeft(t){return bc.getDimension(t,"padding-left")}static getPaddingRight(t){return bc.getDimension(t,"padding-right")}static getPaddingTop(t){return bc.getDimension(t,"padding-top")}static getPaddingBottom(t){return bc.getDimension(t,"padding-bottom")}static getMarginLeft(t){return bc.getDimension(t,"margin-left")}static getMarginTop(t){return bc.getDimension(t,"margin-top")}static getMarginRight(t){return bc.getDimension(t,"margin-right")}static getMarginBottom(t){return bc.getDimension(t,"margin-bottom")}}const WT=class WT{constructor(t,n){this.width=t,this.height=n}with(t=this.width,n=this.height){return t!==this.width||n!==this.height?new WT(t,n):this}static is(t){return typeof t=="object"&&typeof t.height=="number"&&typeof t.width=="number"}static lift(t){return t instanceof WT?t:new WT(t.width,t.height)}static equals(t,n){return t===n?!0:!t||!n?!1:t.width===n.width&&t.height===n.height}};WT.None=new WT(0,0);let cs=WT;function bEn(e){let t=e.offsetParent,n=e.offsetTop,r=e.offsetLeft;for(;(e=e.parentNode)!==null&&e!==e.ownerDocument.body&&e!==e.ownerDocument.documentElement;){n-=e.scrollTop;const o=OEn(e)?null:bbe(e);o&&(r-=o.direction!=="rtl"?e.scrollLeft:-e.scrollLeft),e===t&&(r+=bc.getBorderLeftWidth(e),n+=bc.getBorderTopWidth(e),n+=e.offsetTop,r+=e.offsetLeft,t=e.offsetParent)}return{left:r,top:n}}function Nto(e,t,n){typeof t=="number"&&(e.style.width=`${t}px`),typeof n=="number"&&(e.style.height=`${n}px`)}function Kl(e){const t=e.getBoundingClientRect(),n=ii(e);return{left:t.left+n.scrollX,top:t.top+n.scrollY,width:t.width,height:t.height}}function wEn(e){let t=e,n=1;do{const r=bbe(t).zoom;r!=null&&r!=="1"&&(n*=r),t=t.parentElement}while(t!==null&&t!==t.ownerDocument.documentElement);return n}function s0(e){const t=bc.getMarginLeft(e)+bc.getMarginRight(e);return e.offsetWidth+t}function eLe(e){const t=bc.getBorderLeftWidth(e)+bc.getBorderRightWidth(e),n=bc.getPaddingLeft(e)+bc.getPaddingRight(e);return e.offsetWidth-t-n}function Uto(e){const t=bc.getBorderTopWidth(e)+bc.getBorderBottomWidth(e),n=bc.getPaddingTop(e)+bc.getPaddingBottom(e);return e.offsetHeight-t-n}function ES(e){const t=bc.getMarginTop(e)+bc.getMarginBottom(e);return e.offsetHeight+t}function gu(e,t){return!!(t!=null&&t.contains(e))}function jto(e,t,n){for(;e&&e.nodeType===e.ELEMENT_NODE;){if(e.classList.contains(t))return e;if(n){if(typeof n=="string"){if(e.classList.contains(n))return null}else if(e===n)return null}e=e.parentNode}return null}function tLe(e,t,n){return!!jto(e,t,n)}function OEn(e){return e&&!!e.host&&!!e.mode}function xme(e){return!!y6(e)}function y6(e){var t;for(;e.parentNode;){if(e===((t=e.ownerDocument)==null?void 0:t.body))return null;e=e.parentNode}return OEn(e)?e:null}function Nd(){let e=Eie().activeElement;for(;e!=null&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function wbe(e){return Nd()===e}function yEn(e){return gu(Nd(),e)}function Eie(){return Dto()<=1?Ls.document:Array.from(vEn()).map(({window:t})=>t.document).find(t=>t.hasFocus())??Ls.document}function vs(){var t;return((t=Eie().defaultView)==null?void 0:t.window)??Ls}const Wto=new class{constructor(){this.mutationObservers=new Map}observe(e,t,n){let r=this.mutationObservers.get(e);r||(r=new Map,this.mutationObservers.set(e,r));const o=Lie(n);let s=r.get(o);if(s)s.users+=1;else{const a=new at,l=new MutationObserver(u=>a.fire(u));l.observe(e,n);const d=s={users:1,observer:l,onDidMutate:a.event};t.add(Hn(()=>{d.users-=1,d.users===0&&(a.dispose(),l.disconnect(),r==null||r.delete(o),(r==null?void 0:r.size)===0&&this.mutationObservers.delete(e))})),r.set(o,s)}return s.onDidMutate}};function ec(e){return e instanceof HTMLElement||e instanceof ii(e).HTMLElement}function _bt(e){return e instanceof HTMLAnchorElement||e instanceof ii(e).HTMLAnchorElement}function CEn(e){return e instanceof SVGElement||e instanceof ii(e).SVGElement}function qJe(e){return e instanceof MouseEvent||e instanceof ii(e).MouseEvent}function eS(e){return e instanceof KeyboardEvent||e instanceof ii(e).KeyboardEvent}const rn={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",KEY_DOWN:"keydown",KEY_UP:"keyup",BEFORE_UNLOAD:"beforeunload",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend"};function Vto(e){const t=e;return!!(t&&typeof t.preventDefault=="function"&&typeof t.stopPropagation=="function")}const Qo={stop:(e,t)=>(e.preventDefault(),t&&e.stopPropagation(),e)};function zto(e){const t=[];for(let n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)t[n]=e.scrollTop,e=e.parentNode;return t}function Hto(e,t){for(let n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)e.scrollTop!==t[n]&&(e.scrollTop=t[n]),e=e.parentNode}let $to=class hNe extends ft{get onDidFocus(){return this._onDidFocus.event}get onDidBlur(){return this._onDidBlur.event}static hasFocusWithin(t){if(ec(t)){const n=y6(t),r=n?n.activeElement:t.ownerDocument.activeElement;return gu(r,t)}else{const n=t;return gu(n.document.activeElement,n.document)}}constructor(t){super(),this._onDidFocus=this._register(new at),this._onDidBlur=this._register(new at);let n=hNe.hasFocusWithin(t),r=!1;const o=()=>{r=!1,n||(n=!0,this._onDidFocus.fire())},s=()=>{n&&(r=!0,(ec(t)?ii(t):t).setTimeout(()=>{r&&(r=!1,n=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{hNe.hasFocusWithin(t)!==n&&(n?s():o())},this._register(wt(t,rn.FOCUS,o,!0)),this._register(wt(t,rn.BLUR,s,!0)),ec(t)&&(this._register(wt(t,rn.FOCUS_IN,()=>this._refreshStateHandler())),this._register(wt(t,rn.FOCUS_OUT,()=>this._refreshStateHandler())))}};function uA(e){return new $to(e)}function Xto(e,t){return e.after(t),t}function Xt(e,...t){if(e.append(...t),t.length===1&&typeof t[0]!="string")return t[0]}function Obe(e,t){return e.insertBefore(t,e.firstChild),t}function mu(e,...t){e.textContent="",Xt(e,...t)}const Gto=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var XK;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.SVG="http://www.w3.org/2000/svg"})(XK||(XK={}));function _En(e,t,n,...r){const o=Gto.exec(t);if(!o)throw new Error("Bad use of emmet");const s=o[1]||"div";let a;return e!==XK.HTML?a=document.createElementNS(e,s):a=document.createElement(s),o[3]&&(a.id=o[3]),o[4]&&(a.className=o[4].replace(/\./g," ").trim()),n&&Object.entries(n).forEach(([l,d])=>{typeof d>"u"||(/^on\w+$/.test(l)?a[l]=d:l==="selected"?d&&a.setAttribute(l,"true"):a.setAttribute(l,d))}),a.append(...r),a}function tn(e,t,...n){return _En(XK.HTML,e,t,...n)}tn.SVG=function(e,t,...n){return _En(XK.SVG,e,t,...n)};function Yto(e,...t){e?k0(...t):tm(...t)}function k0(...e){for(const t of e)t.style.display="",t.removeAttribute("aria-hidden")}function tm(...e){for(const t of e)t.style.display="none",t.setAttribute("aria-hidden","true")}function Sbt(e,t){const n=e.devicePixelRatio*t;return Math.max(1,Math.floor(n))/e.devicePixelRatio}function SEn(e){Ls.open(e,"_blank","noopener")}function Zto(e,t){const n=()=>{t(),r=A1(e,n)};let r=A1(e,n);return Hn(()=>r.dispose())}iEn.setPreferredWebSchema(/^https:/.test(Ls.location.href)?"https":"http");class TS extends at{constructor(){super(),this._subscriptions=new xt,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(an.runAndSubscribe(xie,({window:t,disposables:n})=>this.registerListeners(t,n),{window:Ls,disposables:this._subscriptions}))}registerListeners(t,n){n.add(wt(t,"keydown",r=>{if(r.defaultPrevented)return;const o=new Us(r);if(!(o.keyCode===6&&r.repeat)){if(r.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(r.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(r.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(r.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(o.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=r.altKey,this._keyStatus.ctrlKey=r.ctrlKey,this._keyStatus.metaKey=r.metaKey,this._keyStatus.shiftKey=r.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=r,this.fire(this._keyStatus))}},!0)),n.add(wt(t,"keyup",r=>{r.defaultPrevented||(!r.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!r.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!r.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!r.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=r.altKey,this._keyStatus.ctrlKey=r.ctrlKey,this._keyStatus.metaKey=r.metaKey,this._keyStatus.shiftKey=r.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=r,this.fire(this._keyStatus)))},!0)),n.add(wt(t.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),n.add(wt(t.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),n.add(wt(t.document.body,"mousemove",r=>{r.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),n.add(wt(t,"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 TS.instance||(TS.instance=new TS),TS.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class qto extends ft{constructor(t,n){super(),this.element=t,this.callbacks=n,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(wt(this.element,rn.DRAG_START,t=>{var n,r;(r=(n=this.callbacks).onDragStart)==null||r.call(n,t)})),this.callbacks.onDrag&&this._register(wt(this.element,rn.DRAG,t=>{var n,r;(r=(n=this.callbacks).onDrag)==null||r.call(n,t)})),this._register(wt(this.element,rn.DRAG_ENTER,t=>{var n,r;this.counter++,this.dragStartTime=t.timeStamp,(r=(n=this.callbacks).onDragEnter)==null||r.call(n,t)})),this._register(wt(this.element,rn.DRAG_OVER,t=>{var n,r;t.preventDefault(),(r=(n=this.callbacks).onDragOver)==null||r.call(n,t,t.timeStamp-this.dragStartTime)})),this._register(wt(this.element,rn.DRAG_LEAVE,t=>{var n,r;this.counter--,this.counter===0&&(this.dragStartTime=0,(r=(n=this.callbacks).onDragLeave)==null||r.call(n,t))})),this._register(wt(this.element,rn.DRAG_END,t=>{var n,r;this.counter=0,this.dragStartTime=0,(r=(n=this.callbacks).onDragEnd)==null||r.call(n,t)})),this._register(wt(this.element,rn.DROP,t=>{var n,r;this.counter=0,this.dragStartTime=0,(r=(n=this.callbacks).onDrop)==null||r.call(n,t)}))}}const Kto=/(?[\w\-]+)?(?:#(?[\w\-]+))?(?(?:\.(?:[\w\-]+))*)(?:@(?(?:[\w\_])+))?/;function wo(e,...t){let n,r;Array.isArray(t[0])?(n={},r=t[0]):(n=t[0]||{},r=t[1]);const o=Kto.exec(e);if(!o||!o.groups)throw new Error("Bad use of h");const s=o.groups.tag||"div",a=document.createElement(s);o.groups.id&&(a.id=o.groups.id);const l=[];if(o.groups.class)for(const u of o.groups.class.split("."))u!==""&&l.push(u);if(n.className!==void 0)for(const u of n.className.split("."))u!==""&&l.push(u);l.length>0&&(a.className=l.join(" "));const d={};if(o.groups.name&&(d[o.groups.name]=a),r)for(const u of r)ec(u)?a.appendChild(u):typeof u=="string"?a.append(u):"root"in u&&(Object.assign(d,u),a.appendChild(u.root));for(const[u,h]of Object.entries(n))if(u!=="className")if(u==="style")for(const[g,m]of Object.entries(h))a.style.setProperty(GK(g),typeof m=="number"?m+"px":""+m);else u==="tabIndex"?a.tabIndex=h:a.setAttribute(GK(u),h.toString());return d.root=a,d}function GK(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function s3(e){return e.tagName.toLowerCase()==="input"||e.tagName.toLowerCase()==="textarea"||ec(e)&&!!e.editContext}var cr;(function(e){function t(o=void 0){return(s,a,l)=>{const d=a.class;delete a.class;const u=a.ref;delete a.ref;const h=a.obsRef;return delete a.obsRef,new eno(s,u,h,o,d,a,l)}}function n(o,s=void 0){const a=t(s);return(l,d)=>a(o,l,d)}e.div=n("div"),e.elem=t(void 0),e.svg=n("svg","http://www.w3.org/2000/svg"),e.svgElem=t("http://www.w3.org/2000/svg");function r(){let o;const s=function(a){o=a};return Object.defineProperty(s,"element",{get(){if(!o)throw new ui("Make sure the ref is set before accessing the element. Maybe wrong initialization order?");return o}}),s}e.ref=r})(cr||(cr={}));class KJe{constructor(t,n,r,o,s,a,l){this._deriveds=[],this._element=o?document.createElementNS(o,t):document.createElement(t),n&&n(this._element),r&&this._deriveds.push(Rt(d=>{r(this),d.store.add({dispose:()=>{r(null)}})})),s&&(xEn(s)?this._deriveds.push(Rt(this,d=>{Lbt(this._element,xbt(s,d))})):Lbt(this._element,xbt(s,void 0)));for(const[d,u]of Object.entries(a))if(d==="style")for(const[h,g]of Object.entries(u)){const m=GK(h);sQ(g)?this._deriveds.push(Vh({owner:this,debugName:()=>`set.style.${m}`},v=>{this._element.style.setProperty(m,Ebt(g.read(v)))})):this._element.style.setProperty(m,Ebt(g))}else d==="tabIndex"?sQ(u)?this._deriveds.push(Rt(this,h=>{this._element.tabIndex=u.read(h)})):this._element.tabIndex=u:d.startsWith("on")?this._element[d]=u:sQ(u)?this._deriveds.push(Vh({owner:this,debugName:()=>`set.${d}`},h=>{Tbt(this._element,d,u.read(h))})):Tbt(this._element,d,u);if(l){let d=function(h,g){return sQ(g)?d(h,g.read(h)):Array.isArray(g)?g.flatMap(m=>d(h,m)):g instanceof KJe?(h&&g.readEffect(h),[g._element]):g?[g]:[]};const u=Rt(this,h=>{this._element.replaceChildren(...d(h,l))});this._deriveds.push(u),EEn(l)||u.get()}}readEffect(t){for(const n of this._deriveds)n.read(t)}keepUpdated(t){return Rt(n=>{this.readEffect(n)}).recomputeInitiallyAndOnChange(t),this}toDisposableLiveElement(){const t=new xt;return this.keepUpdated(t),new Jto(this._element,t)}}function Lbt(e,t){CEn(e)?e.setAttribute("class",t):e.className=t}function LEn(e,t,n){if(sQ(e)){n(e.read(t));return}if(Array.isArray(e)){for(const r of e)LEn(r,t,n);return}n(e)}function xbt(e,t){let n="";return LEn(e,t,r=>{r&&(n.length===0?n=r:n+=" "+r)}),n}function xEn(e){return sQ(e)?!0:Array.isArray(e)?e.some(t=>xEn(t)):!1}function Ebt(e){return typeof e=="number"?e+"px":e}function EEn(e){return sQ(e)?!0:Array.isArray(e)?e.some(t=>EEn(t)):!1}class Jto{constructor(t,n){this.element=t,this._disposable=n}dispose(){this._disposable.dispose()}}class eno extends KJe{constructor(){super(...arguments),this._isHovered=void 0,this._didMouseMoveDuringHover=void 0}get element(){return this._element}get isHovered(){if(!this._isHovered){const t=Ti("hovered",!1);this._element.addEventListener("mouseenter",n=>t.set(!0,void 0)),this._element.addEventListener("mouseleave",n=>t.set(!1,void 0)),this._isHovered=t}return this._isHovered}get didMouseMoveDuringHover(){if(!this._didMouseMoveDuringHover){let t=!1;const n=Ti("didMouseMoveDuringHover",!1);this._element.addEventListener("mouseenter",r=>{t=!0}),this._element.addEventListener("mousemove",r=>{t&&n.set(!0,void 0)}),this._element.addEventListener("mouseleave",r=>{t=!1,n.set(!1,void 0)}),this._didMouseMoveDuringHover=n}return this._didMouseMoveDuringHover}}function Tbt(e,t,n){n==null?e.removeAttribute(GK(t)):e.setAttribute(GK(t),String(n))}function sQ(e){return!!e&&e.read!==void 0&&e.reportChanges!==void 0}const Qbt=2e4;let bT,Yue,fNe,Zue,gNe;function tno(e){bT=document.createElement("div"),bT.className="monaco-aria-container";const t=()=>{const r=document.createElement("div");return r.className="monaco-alert",r.setAttribute("role","alert"),r.setAttribute("aria-atomic","true"),bT.appendChild(r),r};Yue=t(),fNe=t();const n=()=>{const r=document.createElement("div");return r.className="monaco-status",r.setAttribute("aria-live","polite"),r.setAttribute("aria-atomic","true"),bT.appendChild(r),r};Zue=n(),gNe=n(),e.appendChild(bT)}function um(e){bT&&(Yue.textContent!==e?(uh(fNe),Eme(Yue,e)):(uh(Yue),Eme(fNe,e)))}function A3(e){bT&&(Zue.textContent!==e?(uh(gNe),Eme(Zue,e)):(uh(Zue),Eme(gNe,e)))}function Eme(e,t){uh(e),t.length>Qbt&&(t=t.substr(0,Qbt)),e.textContent=t,e.style.visibility="hidden",e.style.visibility="visible"}var Zb;(function(e){e.serviceIds=new Map,e.DI_TARGET="$di$target",e.DI_DEPENDENCIES="$di$dependencies";function t(n){return n[e.DI_DEPENDENCIES]||[]}e.getServiceDependencies=t})(Zb||(Zb={}));const Yn=Cr("instantiationService");function nno(e,t,n){t[Zb.DI_TARGET]===t?t[Zb.DI_DEPENDENCIES].push({id:e,index:n}):(t[Zb.DI_DEPENDENCIES]=[{id:e,index:n}],t[Zb.DI_TARGET]=t)}function Cr(e){if(Zb.serviceIds.has(e))return Zb.serviceIds.get(e);const t=function(n,r,o){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");nno(t,n,o)};return t.toString=()=>e,Zb.serviceIds.set(e,t),t}const yo=Cr("codeEditorService");let it=class H7{constructor(t,n){this.lineNumber=t,this.column=n}with(t=this.lineNumber,n=this.column){return t===this.lineNumber&&n===this.column?this:new H7(t,n)}delta(t=0,n=0){return this.with(Math.max(1,this.lineNumber+t),Math.max(1,this.column+n))}equals(t){return H7.equals(this,t)}static equals(t,n){return!t&&!n?!0:!!t&&!!n&&t.lineNumber===n.lineNumber&&t.column===n.column}isBefore(t){return H7.isBefore(this,t)}static isBefore(t,n){return t.lineNumbere.run(...t)}}const kNe=Object.create(null);function ye(e,t){if(fu(t)){const n=kNe[t];if(n===void 0)throw new Error(`${e} references an unknown codicon: ${t}`);t=n}return kNe[e]=t,{id:e}}function TEn(){return kNe}const ino={add:ye("add",6e4),plus:ye("plus",6e4),gistNew:ye("gist-new",6e4),repoCreate:ye("repo-create",6e4),lightbulb:ye("lightbulb",60001),lightBulb:ye("light-bulb",60001),repo:ye("repo",60002),repoDelete:ye("repo-delete",60002),gistFork:ye("gist-fork",60003),repoForked:ye("repo-forked",60003),gitPullRequest:ye("git-pull-request",60004),gitPullRequestAbandoned:ye("git-pull-request-abandoned",60004),recordKeys:ye("record-keys",60005),keyboard:ye("keyboard",60005),tag:ye("tag",60006),gitPullRequestLabel:ye("git-pull-request-label",60006),tagAdd:ye("tag-add",60006),tagRemove:ye("tag-remove",60006),person:ye("person",60007),personFollow:ye("person-follow",60007),personOutline:ye("person-outline",60007),personFilled:ye("person-filled",60007),sourceControl:ye("source-control",60008),mirror:ye("mirror",60009),mirrorPublic:ye("mirror-public",60009),star:ye("star",60010),starAdd:ye("star-add",60010),starDelete:ye("star-delete",60010),starEmpty:ye("star-empty",60010),comment:ye("comment",60011),commentAdd:ye("comment-add",60011),alert:ye("alert",60012),warning:ye("warning",60012),search:ye("search",60013),searchSave:ye("search-save",60013),logOut:ye("log-out",60014),signOut:ye("sign-out",60014),logIn:ye("log-in",60015),signIn:ye("sign-in",60015),eye:ye("eye",60016),eyeUnwatch:ye("eye-unwatch",60016),eyeWatch:ye("eye-watch",60016),circleFilled:ye("circle-filled",60017),primitiveDot:ye("primitive-dot",60017),closeDirty:ye("close-dirty",60017),debugBreakpoint:ye("debug-breakpoint",60017),debugBreakpointDisabled:ye("debug-breakpoint-disabled",60017),debugHint:ye("debug-hint",60017),terminalDecorationSuccess:ye("terminal-decoration-success",60017),primitiveSquare:ye("primitive-square",60018),edit:ye("edit",60019),pencil:ye("pencil",60019),info:ye("info",60020),issueOpened:ye("issue-opened",60020),gistPrivate:ye("gist-private",60021),gitForkPrivate:ye("git-fork-private",60021),lock:ye("lock",60021),mirrorPrivate:ye("mirror-private",60021),close:ye("close",60022),removeClose:ye("remove-close",60022),x:ye("x",60022),repoSync:ye("repo-sync",60023),sync:ye("sync",60023),clone:ye("clone",60024),desktopDownload:ye("desktop-download",60024),beaker:ye("beaker",60025),microscope:ye("microscope",60025),vm:ye("vm",60026),deviceDesktop:ye("device-desktop",60026),file:ye("file",60027),more:ye("more",60028),ellipsis:ye("ellipsis",60028),kebabHorizontal:ye("kebab-horizontal",60028),mailReply:ye("mail-reply",60029),reply:ye("reply",60029),organization:ye("organization",60030),organizationFilled:ye("organization-filled",60030),organizationOutline:ye("organization-outline",60030),newFile:ye("new-file",60031),fileAdd:ye("file-add",60031),newFolder:ye("new-folder",60032),fileDirectoryCreate:ye("file-directory-create",60032),trash:ye("trash",60033),trashcan:ye("trashcan",60033),history:ye("history",60034),clock:ye("clock",60034),folder:ye("folder",60035),fileDirectory:ye("file-directory",60035),symbolFolder:ye("symbol-folder",60035),logoGithub:ye("logo-github",60036),markGithub:ye("mark-github",60036),github:ye("github",60036),terminal:ye("terminal",60037),console:ye("console",60037),repl:ye("repl",60037),zap:ye("zap",60038),symbolEvent:ye("symbol-event",60038),error:ye("error",60039),stop:ye("stop",60039),variable:ye("variable",60040),symbolVariable:ye("symbol-variable",60040),array:ye("array",60042),symbolArray:ye("symbol-array",60042),symbolModule:ye("symbol-module",60043),symbolPackage:ye("symbol-package",60043),symbolNamespace:ye("symbol-namespace",60043),symbolObject:ye("symbol-object",60043),symbolMethod:ye("symbol-method",60044),symbolFunction:ye("symbol-function",60044),symbolConstructor:ye("symbol-constructor",60044),symbolBoolean:ye("symbol-boolean",60047),symbolNull:ye("symbol-null",60047),symbolNumeric:ye("symbol-numeric",60048),symbolNumber:ye("symbol-number",60048),symbolStructure:ye("symbol-structure",60049),symbolStruct:ye("symbol-struct",60049),symbolParameter:ye("symbol-parameter",60050),symbolTypeParameter:ye("symbol-type-parameter",60050),symbolKey:ye("symbol-key",60051),symbolText:ye("symbol-text",60051),symbolReference:ye("symbol-reference",60052),goToFile:ye("go-to-file",60052),symbolEnum:ye("symbol-enum",60053),symbolValue:ye("symbol-value",60053),symbolRuler:ye("symbol-ruler",60054),symbolUnit:ye("symbol-unit",60054),activateBreakpoints:ye("activate-breakpoints",60055),archive:ye("archive",60056),arrowBoth:ye("arrow-both",60057),arrowDown:ye("arrow-down",60058),arrowLeft:ye("arrow-left",60059),arrowRight:ye("arrow-right",60060),arrowSmallDown:ye("arrow-small-down",60061),arrowSmallLeft:ye("arrow-small-left",60062),arrowSmallRight:ye("arrow-small-right",60063),arrowSmallUp:ye("arrow-small-up",60064),arrowUp:ye("arrow-up",60065),bell:ye("bell",60066),bold:ye("bold",60067),book:ye("book",60068),bookmark:ye("bookmark",60069),debugBreakpointConditionalUnverified:ye("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:ye("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:ye("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:ye("debug-breakpoint-data-unverified",60072),debugBreakpointData:ye("debug-breakpoint-data",60073),debugBreakpointDataDisabled:ye("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:ye("debug-breakpoint-log-unverified",60074),debugBreakpointLog:ye("debug-breakpoint-log",60075),debugBreakpointLogDisabled:ye("debug-breakpoint-log-disabled",60075),briefcase:ye("briefcase",60076),broadcast:ye("broadcast",60077),browser:ye("browser",60078),bug:ye("bug",60079),calendar:ye("calendar",60080),caseSensitive:ye("case-sensitive",60081),check:ye("check",60082),checklist:ye("checklist",60083),chevronDown:ye("chevron-down",60084),chevronLeft:ye("chevron-left",60085),chevronRight:ye("chevron-right",60086),chevronUp:ye("chevron-up",60087),chromeClose:ye("chrome-close",60088),chromeMaximize:ye("chrome-maximize",60089),chromeMinimize:ye("chrome-minimize",60090),chromeRestore:ye("chrome-restore",60091),circleOutline:ye("circle-outline",60092),circle:ye("circle",60092),debugBreakpointUnverified:ye("debug-breakpoint-unverified",60092),terminalDecorationIncomplete:ye("terminal-decoration-incomplete",60092),circleSlash:ye("circle-slash",60093),circuitBoard:ye("circuit-board",60094),clearAll:ye("clear-all",60095),clippy:ye("clippy",60096),closeAll:ye("close-all",60097),cloudDownload:ye("cloud-download",60098),cloudUpload:ye("cloud-upload",60099),code:ye("code",60100),collapseAll:ye("collapse-all",60101),colorMode:ye("color-mode",60102),commentDiscussion:ye("comment-discussion",60103),creditCard:ye("credit-card",60105),dash:ye("dash",60108),dashboard:ye("dashboard",60109),database:ye("database",60110),debugContinue:ye("debug-continue",60111),debugDisconnect:ye("debug-disconnect",60112),debugPause:ye("debug-pause",60113),debugRestart:ye("debug-restart",60114),debugStart:ye("debug-start",60115),debugStepInto:ye("debug-step-into",60116),debugStepOut:ye("debug-step-out",60117),debugStepOver:ye("debug-step-over",60118),debugStop:ye("debug-stop",60119),debug:ye("debug",60120),deviceCameraVideo:ye("device-camera-video",60121),deviceCamera:ye("device-camera",60122),deviceMobile:ye("device-mobile",60123),diffAdded:ye("diff-added",60124),diffIgnored:ye("diff-ignored",60125),diffModified:ye("diff-modified",60126),diffRemoved:ye("diff-removed",60127),diffRenamed:ye("diff-renamed",60128),diff:ye("diff",60129),diffSidebyside:ye("diff-sidebyside",60129),discard:ye("discard",60130),editorLayout:ye("editor-layout",60131),emptyWindow:ye("empty-window",60132),exclude:ye("exclude",60133),extensions:ye("extensions",60134),eyeClosed:ye("eye-closed",60135),fileBinary:ye("file-binary",60136),fileCode:ye("file-code",60137),fileMedia:ye("file-media",60138),filePdf:ye("file-pdf",60139),fileSubmodule:ye("file-submodule",60140),fileSymlinkDirectory:ye("file-symlink-directory",60141),fileSymlinkFile:ye("file-symlink-file",60142),fileZip:ye("file-zip",60143),files:ye("files",60144),filter:ye("filter",60145),flame:ye("flame",60146),foldDown:ye("fold-down",60147),foldUp:ye("fold-up",60148),fold:ye("fold",60149),folderActive:ye("folder-active",60150),folderOpened:ye("folder-opened",60151),gear:ye("gear",60152),gift:ye("gift",60153),gistSecret:ye("gist-secret",60154),gist:ye("gist",60155),gitCommit:ye("git-commit",60156),gitCompare:ye("git-compare",60157),compareChanges:ye("compare-changes",60157),gitMerge:ye("git-merge",60158),githubAction:ye("github-action",60159),githubAlt:ye("github-alt",60160),globe:ye("globe",60161),grabber:ye("grabber",60162),graph:ye("graph",60163),gripper:ye("gripper",60164),heart:ye("heart",60165),home:ye("home",60166),horizontalRule:ye("horizontal-rule",60167),hubot:ye("hubot",60168),inbox:ye("inbox",60169),issueReopened:ye("issue-reopened",60171),issues:ye("issues",60172),italic:ye("italic",60173),jersey:ye("jersey",60174),json:ye("json",60175),kebabVertical:ye("kebab-vertical",60176),key:ye("key",60177),law:ye("law",60178),lightbulbAutofix:ye("lightbulb-autofix",60179),linkExternal:ye("link-external",60180),link:ye("link",60181),listOrdered:ye("list-ordered",60182),listUnordered:ye("list-unordered",60183),liveShare:ye("live-share",60184),loading:ye("loading",60185),location:ye("location",60186),mailRead:ye("mail-read",60187),mail:ye("mail",60188),markdown:ye("markdown",60189),megaphone:ye("megaphone",60190),mention:ye("mention",60191),milestone:ye("milestone",60192),gitPullRequestMilestone:ye("git-pull-request-milestone",60192),mortarBoard:ye("mortar-board",60193),move:ye("move",60194),multipleWindows:ye("multiple-windows",60195),mute:ye("mute",60196),noNewline:ye("no-newline",60197),note:ye("note",60198),octoface:ye("octoface",60199),openPreview:ye("open-preview",60200),package:ye("package",60201),paintcan:ye("paintcan",60202),pin:ye("pin",60203),play:ye("play",60204),run:ye("run",60204),plug:ye("plug",60205),preserveCase:ye("preserve-case",60206),preview:ye("preview",60207),project:ye("project",60208),pulse:ye("pulse",60209),question:ye("question",60210),quote:ye("quote",60211),radioTower:ye("radio-tower",60212),reactions:ye("reactions",60213),references:ye("references",60214),refresh:ye("refresh",60215),regex:ye("regex",60216),remoteExplorer:ye("remote-explorer",60217),remote:ye("remote",60218),remove:ye("remove",60219),replaceAll:ye("replace-all",60220),replace:ye("replace",60221),repoClone:ye("repo-clone",60222),repoForcePush:ye("repo-force-push",60223),repoPull:ye("repo-pull",60224),repoPush:ye("repo-push",60225),report:ye("report",60226),requestChanges:ye("request-changes",60227),rocket:ye("rocket",60228),rootFolderOpened:ye("root-folder-opened",60229),rootFolder:ye("root-folder",60230),rss:ye("rss",60231),ruby:ye("ruby",60232),saveAll:ye("save-all",60233),saveAs:ye("save-as",60234),save:ye("save",60235),screenFull:ye("screen-full",60236),screenNormal:ye("screen-normal",60237),searchStop:ye("search-stop",60238),server:ye("server",60240),settingsGear:ye("settings-gear",60241),settings:ye("settings",60242),shield:ye("shield",60243),smiley:ye("smiley",60244),sortPrecedence:ye("sort-precedence",60245),splitHorizontal:ye("split-horizontal",60246),splitVertical:ye("split-vertical",60247),squirrel:ye("squirrel",60248),starFull:ye("star-full",60249),starHalf:ye("star-half",60250),symbolClass:ye("symbol-class",60251),symbolColor:ye("symbol-color",60252),symbolConstant:ye("symbol-constant",60253),symbolEnumMember:ye("symbol-enum-member",60254),symbolField:ye("symbol-field",60255),symbolFile:ye("symbol-file",60256),symbolInterface:ye("symbol-interface",60257),symbolKeyword:ye("symbol-keyword",60258),symbolMisc:ye("symbol-misc",60259),symbolOperator:ye("symbol-operator",60260),symbolProperty:ye("symbol-property",60261),wrench:ye("wrench",60261),wrenchSubaction:ye("wrench-subaction",60261),symbolSnippet:ye("symbol-snippet",60262),tasklist:ye("tasklist",60263),telescope:ye("telescope",60264),textSize:ye("text-size",60265),threeBars:ye("three-bars",60266),thumbsdown:ye("thumbsdown",60267),thumbsup:ye("thumbsup",60268),tools:ye("tools",60269),triangleDown:ye("triangle-down",60270),triangleLeft:ye("triangle-left",60271),triangleRight:ye("triangle-right",60272),triangleUp:ye("triangle-up",60273),twitter:ye("twitter",60274),unfold:ye("unfold",60275),unlock:ye("unlock",60276),unmute:ye("unmute",60277),unverified:ye("unverified",60278),verified:ye("verified",60279),versions:ye("versions",60280),vmActive:ye("vm-active",60281),vmOutline:ye("vm-outline",60282),vmRunning:ye("vm-running",60283),watch:ye("watch",60284),whitespace:ye("whitespace",60285),wholeWord:ye("whole-word",60286),window:ye("window",60287),wordWrap:ye("word-wrap",60288),zoomIn:ye("zoom-in",60289),zoomOut:ye("zoom-out",60290),listFilter:ye("list-filter",60291),listFlat:ye("list-flat",60292),listSelection:ye("list-selection",60293),selection:ye("selection",60293),listTree:ye("list-tree",60294),debugBreakpointFunctionUnverified:ye("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:ye("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:ye("debug-breakpoint-function-disabled",60296),debugStackframeActive:ye("debug-stackframe-active",60297),circleSmallFilled:ye("circle-small-filled",60298),debugStackframeDot:ye("debug-stackframe-dot",60298),terminalDecorationMark:ye("terminal-decoration-mark",60298),debugStackframe:ye("debug-stackframe",60299),debugStackframeFocused:ye("debug-stackframe-focused",60299),debugBreakpointUnsupported:ye("debug-breakpoint-unsupported",60300),symbolString:ye("symbol-string",60301),debugReverseContinue:ye("debug-reverse-continue",60302),debugStepBack:ye("debug-step-back",60303),debugRestartFrame:ye("debug-restart-frame",60304),debugAlt:ye("debug-alt",60305),callIncoming:ye("call-incoming",60306),callOutgoing:ye("call-outgoing",60307),menu:ye("menu",60308),expandAll:ye("expand-all",60309),feedback:ye("feedback",60310),gitPullRequestReviewer:ye("git-pull-request-reviewer",60310),groupByRefType:ye("group-by-ref-type",60311),ungroupByRefType:ye("ungroup-by-ref-type",60312),account:ye("account",60313),gitPullRequestAssignee:ye("git-pull-request-assignee",60313),bellDot:ye("bell-dot",60314),debugConsole:ye("debug-console",60315),library:ye("library",60316),output:ye("output",60317),runAll:ye("run-all",60318),syncIgnored:ye("sync-ignored",60319),pinned:ye("pinned",60320),githubInverted:ye("github-inverted",60321),serverProcess:ye("server-process",60322),serverEnvironment:ye("server-environment",60323),pass:ye("pass",60324),issueClosed:ye("issue-closed",60324),stopCircle:ye("stop-circle",60325),playCircle:ye("play-circle",60326),record:ye("record",60327),debugAltSmall:ye("debug-alt-small",60328),vmConnect:ye("vm-connect",60329),cloud:ye("cloud",60330),merge:ye("merge",60331),export:ye("export",60332),graphLeft:ye("graph-left",60333),magnet:ye("magnet",60334),notebook:ye("notebook",60335),redo:ye("redo",60336),checkAll:ye("check-all",60337),pinnedDirty:ye("pinned-dirty",60338),passFilled:ye("pass-filled",60339),circleLargeFilled:ye("circle-large-filled",60340),circleLarge:ye("circle-large",60341),circleLargeOutline:ye("circle-large-outline",60341),combine:ye("combine",60342),gather:ye("gather",60342),table:ye("table",60343),variableGroup:ye("variable-group",60344),typeHierarchy:ye("type-hierarchy",60345),typeHierarchySub:ye("type-hierarchy-sub",60346),typeHierarchySuper:ye("type-hierarchy-super",60347),gitPullRequestCreate:ye("git-pull-request-create",60348),runAbove:ye("run-above",60349),runBelow:ye("run-below",60350),notebookTemplate:ye("notebook-template",60351),debugRerun:ye("debug-rerun",60352),workspaceTrusted:ye("workspace-trusted",60353),workspaceUntrusted:ye("workspace-untrusted",60354),workspaceUnknown:ye("workspace-unknown",60355),terminalCmd:ye("terminal-cmd",60356),terminalDebian:ye("terminal-debian",60357),terminalLinux:ye("terminal-linux",60358),terminalPowershell:ye("terminal-powershell",60359),terminalTmux:ye("terminal-tmux",60360),terminalUbuntu:ye("terminal-ubuntu",60361),terminalBash:ye("terminal-bash",60362),arrowSwap:ye("arrow-swap",60363),copy:ye("copy",60364),personAdd:ye("person-add",60365),filterFilled:ye("filter-filled",60366),wand:ye("wand",60367),debugLineByLine:ye("debug-line-by-line",60368),inspect:ye("inspect",60369),layers:ye("layers",60370),layersDot:ye("layers-dot",60371),layersActive:ye("layers-active",60372),compass:ye("compass",60373),compassDot:ye("compass-dot",60374),compassActive:ye("compass-active",60375),azure:ye("azure",60376),issueDraft:ye("issue-draft",60377),gitPullRequestClosed:ye("git-pull-request-closed",60378),gitPullRequestDraft:ye("git-pull-request-draft",60379),debugAll:ye("debug-all",60380),debugCoverage:ye("debug-coverage",60381),runErrors:ye("run-errors",60382),folderLibrary:ye("folder-library",60383),debugContinueSmall:ye("debug-continue-small",60384),beakerStop:ye("beaker-stop",60385),graphLine:ye("graph-line",60386),graphScatter:ye("graph-scatter",60387),pieChart:ye("pie-chart",60388),bracket:ye("bracket",60175),bracketDot:ye("bracket-dot",60389),bracketError:ye("bracket-error",60390),lockSmall:ye("lock-small",60391),azureDevops:ye("azure-devops",60392),verifiedFilled:ye("verified-filled",60393),newline:ye("newline",60394),layout:ye("layout",60395),layoutActivitybarLeft:ye("layout-activitybar-left",60396),layoutActivitybarRight:ye("layout-activitybar-right",60397),layoutPanelLeft:ye("layout-panel-left",60398),layoutPanelCenter:ye("layout-panel-center",60399),layoutPanelJustify:ye("layout-panel-justify",60400),layoutPanelRight:ye("layout-panel-right",60401),layoutPanel:ye("layout-panel",60402),layoutSidebarLeft:ye("layout-sidebar-left",60403),layoutSidebarRight:ye("layout-sidebar-right",60404),layoutStatusbar:ye("layout-statusbar",60405),layoutMenubar:ye("layout-menubar",60406),layoutCentered:ye("layout-centered",60407),target:ye("target",60408),indent:ye("indent",60409),recordSmall:ye("record-small",60410),errorSmall:ye("error-small",60411),terminalDecorationError:ye("terminal-decoration-error",60411),arrowCircleDown:ye("arrow-circle-down",60412),arrowCircleLeft:ye("arrow-circle-left",60413),arrowCircleRight:ye("arrow-circle-right",60414),arrowCircleUp:ye("arrow-circle-up",60415),layoutSidebarRightOff:ye("layout-sidebar-right-off",60416),layoutPanelOff:ye("layout-panel-off",60417),layoutSidebarLeftOff:ye("layout-sidebar-left-off",60418),blank:ye("blank",60419),heartFilled:ye("heart-filled",60420),map:ye("map",60421),mapHorizontal:ye("map-horizontal",60421),foldHorizontal:ye("fold-horizontal",60421),mapFilled:ye("map-filled",60422),mapHorizontalFilled:ye("map-horizontal-filled",60422),foldHorizontalFilled:ye("fold-horizontal-filled",60422),circleSmall:ye("circle-small",60423),bellSlash:ye("bell-slash",60424),bellSlashDot:ye("bell-slash-dot",60425),commentUnresolved:ye("comment-unresolved",60426),gitPullRequestGoToChanges:ye("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:ye("git-pull-request-new-changes",60428),searchFuzzy:ye("search-fuzzy",60429),commentDraft:ye("comment-draft",60430),send:ye("send",60431),sparkle:ye("sparkle",60432),insert:ye("insert",60433),mic:ye("mic",60434),thumbsdownFilled:ye("thumbsdown-filled",60435),thumbsupFilled:ye("thumbsup-filled",60436),coffee:ye("coffee",60437),snake:ye("snake",60438),game:ye("game",60439),vr:ye("vr",60440),chip:ye("chip",60441),piano:ye("piano",60442),music:ye("music",60443),micFilled:ye("mic-filled",60444),repoFetch:ye("repo-fetch",60445),copilot:ye("copilot",60446),lightbulbSparkle:ye("lightbulb-sparkle",60447),robot:ye("robot",60448),sparkleFilled:ye("sparkle-filled",60449),diffSingle:ye("diff-single",60450),diffMultiple:ye("diff-multiple",60451),surroundWith:ye("surround-with",60452),share:ye("share",60453),gitStash:ye("git-stash",60454),gitStashApply:ye("git-stash-apply",60455),gitStashPop:ye("git-stash-pop",60456),vscode:ye("vscode",60457),vscodeInsiders:ye("vscode-insiders",60458),codeOss:ye("code-oss",60459),runCoverage:ye("run-coverage",60460),runAllCoverage:ye("run-all-coverage",60461),coverage:ye("coverage",60462),githubProject:ye("github-project",60463),mapVertical:ye("map-vertical",60464),foldVertical:ye("fold-vertical",60464),mapVerticalFilled:ye("map-vertical-filled",60465),foldVerticalFilled:ye("fold-vertical-filled",60465),goToSearch:ye("go-to-search",60466),percentage:ye("percentage",60467),sortPercentage:ye("sort-percentage",60467),attach:ye("attach",60468),goToEditingSession:ye("go-to-editing-session",60469),editSession:ye("edit-session",60470),codeReview:ye("code-review",60471),copilotWarning:ye("copilot-warning",60472),python:ye("python",60473),copilotLarge:ye("copilot-large",60474),copilotWarningLarge:ye("copilot-warning-large",60475),keyboardTab:ye("keyboard-tab",60476),copilotBlocked:ye("copilot-blocked",60477),copilotNotConnected:ye("copilot-not-connected",60478),flag:ye("flag",60479),lightbulbEmpty:ye("lightbulb-empty",60480),symbolMethodArrow:ye("symbol-method-arrow",60481),copilotUnavailable:ye("copilot-unavailable",60482),repoPinned:ye("repo-pinned",60483),keyboardTabAbove:ye("keyboard-tab-above",60484),keyboardTabBelow:ye("keyboard-tab-below",60485),gitPullRequestDone:ye("git-pull-request-done",60486),mcp:ye("mcp",60487),extensionsLarge:ye("extensions-large",60488),layoutPanelDock:ye("layout-panel-dock",60489),layoutSidebarLeftDock:ye("layout-sidebar-left-dock",60490),layoutSidebarRightDock:ye("layout-sidebar-right-dock",60491),copilotInProgress:ye("copilot-in-progress",60492),copilotError:ye("copilot-error",60493),copilotSuccess:ye("copilot-success",60494),chatSparkle:ye("chat-sparkle",60495),searchSparkle:ye("search-sparkle",60496),editSparkle:ye("edit-sparkle",60497),copilotSnooze:ye("copilot-snooze",60498),sendToRemoteAgent:ye("send-to-remote-agent",60499),commentDiscussionSparkle:ye("comment-discussion-sparkle",60500),chatSparkleWarning:ye("chat-sparkle-warning",60501),chatSparkleError:ye("chat-sparkle-error",60502),collection:ye("collection",60503),newCollection:ye("new-collection",60504),thinking:ye("thinking",60505),build:ye("build",60506),commentDiscussionQuote:ye("comment-discussion-quote",60507),cursor:ye("cursor",60508),eraser:ye("eraser",60509),fileText:ye("file-text",60510),gitLens:ye("git-lens",60511),quotes:ye("quotes",60512),rename:ye("rename",60513),runWithDeps:ye("run-with-deps",60514),debugConnected:ye("debug-connected",60515),strikethrough:ye("strikethrough",60516),openInProduct:ye("open-in-product",60517),indexZero:ye("index-zero",60518),agent:ye("agent",60519),editCode:ye("edit-code",60520),repoSelected:ye("repo-selected",60521),skip:ye("skip",60522),mergeInto:ye("merge-into",60523),gitBranchChanges:ye("git-branch-changes",60524),gitBranchStagedChanges:ye("git-branch-staged-changes",60525),gitBranchConflicts:ye("git-branch-conflicts",60526),gitBranch:ye("git-branch",60527),gitBranchCreate:ye("git-branch-create",60527),gitBranchDelete:ye("git-branch-delete",60527),searchLarge:ye("search-large",60528),terminalGitBash:ye("terminal-git-bash",60529)},rno={dialogError:ye("dialog-error","error"),dialogWarning:ye("dialog-warning","warning"),dialogInfo:ye("dialog-info","info"),dialogClose:ye("dialog-close","close"),treeItemExpanded:ye("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:ye("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:ye("tree-filter-on-type-off","list-selection"),treeFilterClear:ye("tree-filter-clear","close"),treeItemLoading:ye("tree-item-loading","loading"),menuSelection:ye("menu-selection","check"),menuSubmenu:ye("menu-submenu","chevron-right"),menuBarMore:ye("menubar-more","more"),scrollbarButtonLeft:ye("scrollbar-button-left","triangle-left"),scrollbarButtonRight:ye("scrollbar-button-right","triangle-right"),scrollbarButtonUp:ye("scrollbar-button-up","triangle-up"),scrollbarButtonDown:ye("scrollbar-button-down","triangle-down"),toolBarMore:ye("toolbar-more","more"),quickInputBack:ye("quick-input-back","arrow-left"),dropDownButton:ye("drop-down-button",60084),symbolCustomColor:ye("symbol-customcolor",60252),exportIcon:ye("export",60332),workspaceUnspecified:ye("workspace-unspecified",60355),newLine:ye("newline",60394),thumbsDownFilled:ye("thumbsdown-filled",60435),thumbsUpFilled:ye("thumbsup-filled",60436),gitFetch:ye("git-fetch",60445),lightbulbSparkleAutofix:ye("lightbulb-sparkle-autofix",60447),debugBreakpointPending:ye("debug-breakpoint-pending",60377)},zt={...ino,...rno};var vNe;(function(e){function t(n){return!!n&&typeof n=="object"&&typeof n.id=="string"}e.isThemeColor=t})(vNe||(vNe={}));var fi;(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 n(f){const k=t.exec(f.id);if(!k)return n(zt.error);const[,A,p]=k,b=["codicon","codicon-"+A];return p&&b.push("codicon-modifier-"+p.substring(1)),b}e.asClassNameArray=n;function r(f){return n(f).join(" ")}e.asClassName=r;function o(f){return"."+n(f).join(".")}e.asCSSSelector=o;function s(f){return!!f&&typeof f=="object"&&typeof f.id=="string"&&(typeof f.color>"u"||vNe.isThemeColor(f.color))}e.isThemeIcon=s;const a=new RegExp(`^\\$\\((${e.iconNameExpression}(?:${e.iconModifierExpression})?)\\)$`);function l(f){const k=a.exec(f);if(!k)return;const[,A]=k;return{id:A}}e.fromString=l;function d(f){return{id:f}}e.fromId=d;function u(f,k){let A=f.id;const p=A.lastIndexOf("~");return p!==-1&&(A=A.substring(0,p)),k&&(A=`${A}~${k}`),{id:A}}e.modify=u;function h(f){const k=f.id.lastIndexOf("~");if(k!==-1)return f.id.substring(k+1)}e.getModifier=h;function g(f,k){var A,p;return f.id===k.id&&((A=f.color)==null?void 0:A.id)===((p=k.color)==null?void 0:p.id)}e.isEqual=g;function m(f){return(f==null?void 0:f.id)===zt.file.id}e.isFile=m;function v(f){return(f==null?void 0:f.id)===zt.folder.id}e.isFolder=v})(fi||(fi={}));const ba=Cr("commandService"),uo=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new at,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(e,t){if(!e)throw new Error("invalid command");if(typeof e=="string"){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.metadata&&Array.isArray(e.metadata.args)){const a=[];for(const d of e.metadata.args)a.push(d.constraint);const l=e.handler;e.handler=function(d,...u){return CJr(u,a),l(d,...u)}}const{id:n}=e;let r=this._commands.get(n);r||(r=new bg,this._commands.set(n,r));const o=r.unshift(e),s=Hn(()=>{o();const a=this._commands.get(n);a!=null&&a.isEmpty()&&this._commands.delete(n)});return this._onDidRegisterCommand.fire(n),s}registerCommandAlias(e,t){return uo.registerCommand(e,(n,...r)=>n.get(ba).executeCommand(t,...r))}getCommand(e){const t=this._commands.get(e);if(!(!t||t.isEmpty()))return to.first(t)}getCommands(){const e=new Map;for(const t of this._commands.keys()){const n=this.getCommand(t);n&&e.set(t,n)}return e}};uo.registerCommand("noop",()=>{});function nLe(...e){switch(e.length){case 1:return U(1693,"Did you mean {0}?",e[0]);case 2:return U(1694,"Did you mean {0} or {1}?",e[0],e[1]);case 3:return U(1695,"Did you mean {0}, {1} or {2}?",e[0],e[1],e[2]);default:return}}const ono=U(1696,"Did you forget to open or close the quote?"),sno=U(1697,"Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");var jS;let aX=(jS=class{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(t){switch(t.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return t.isTripleEq?"===":"==";case 4:return t.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return t.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 t.lexeme;case 18:return t.lexeme;case 19:return t.lexeme;case 20:return"EOF";default:throw mme(`unhandled token type: ${JSON.stringify(t)}; have you forgotten to add a case?`)}}reset(t){return this._input=t,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const n=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:n})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const n=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:n})}else this._match(126)?this._addToken(9):this._error(nLe("==","=~"));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(nLe("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(nLe("||"));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(t){return this._isAtEnd()||this._input.charCodeAt(this._current)!==t?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(t){this._tokens.push({type:t,offset:this._start})}_error(t){const n=this._start,r=this._input.substring(this._start,this._current),o={type:19,offset:this._start,lexeme:r};this._errors.push({offset:n,lexeme:r,additionalInfo:t}),this._tokens.push(o)}_string(){this.stringRe.lastIndex=this._start;const t=this.stringRe.exec(this._input);if(t){this._current=this._start+t[0].length;const n=this._input.substring(this._start,this._current),r=jS._keywords.get(n);r?this._addToken(r):this._tokens.push({type:17,lexeme:n,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(ono);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let t=this._current,n=!1,r=!1;for(;;){if(t>=this._input.length){this._current=t,this._error(sno);return}const s=this._input.charCodeAt(t);if(n)n=!1;else if(s===47&&!r){t++;break}else s===91?r=!0:s===92?n=!0:s===93&&(r=!1);t++}for(;t=this._input.length}},jS._regexFlags=new Set(["i","g","s","m","y","u"].map(t=>t.charCodeAt(0))),jS._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]),jS);const Df=new Map;Df.set("false",!1);Df.set("true",!0);Df.set("isMac",Tr);Df.set("isLinux",v1);Df.set("isWindows",mh);Df.set("isWeb",qy);Df.set("isMacNative",Tr&&!qy);Df.set("isEdge",B6n);Df.set("isFirefox",BJr);Df.set("isChrome",_Je);Df.set("isSafari",RJr);const ano=Object.prototype.hasOwnProperty,lno={regexParsingWithErrorRecovery:!0},cno=U(1675,"Empty context key expression"),dno=U(1676,"Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),uno=U(1677,"'in' after 'not'."),Dbt=U(1678,"closing parenthesis ')'"),hno=U(1679,"Unexpected token"),fno=U(1680,"Did you forget to put && or || before the token?"),gno=U(1681,"Unexpected end of expression"),mno=U(1682,"Did you forget to put a context key?");var RO;let kno=(RO=class{constructor(t=lno){this._config=t,this._scanner=new aX,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(t){if(t===""){this._parsingErrors.push({message:cno,offset:0,lexeme:"",additionalInfo:dno});return}this._tokens=this._scanner.reset(t).scan(),this._current=0,this._parsingErrors=[];try{const n=this._expr();if(!this._isAtEnd()){const r=this._peek(),o=r.type===17?fno:void 0;throw this._parsingErrors.push({message:hno,offset:r.offset,lexeme:aX.getLexeme(r),additionalInfo:o}),RO._parseError}return n}catch(n){if(n!==RO._parseError)throw n;return}}_expr(){return this._or()}_or(){const t=[this._and()];for(;this._matchOne(16);){const n=this._and();t.push(n)}return t.length===1?t[0]:Ft.or(...t)}_and(){const t=[this._term()];for(;this._matchOne(15);){const n=this._term();t.push(n)}return t.length===1?t[0]:Ft.and(...t)}_term(){if(this._matchOne(2)){const t=this._peek();switch(t.type){case 11:return this._advance(),hm.INSTANCE;case 12:return this._advance(),p1.INSTANCE;case 0:{this._advance();const n=this._expr();return this._consume(1,Dbt),n==null?void 0:n.negate()}case 17:return this._advance(),wI.create(t.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",t)}}return this._primary()}_primary(){const t=this._peek();switch(t.type){case 11:return this._advance(),Ft.true();case 12:return this._advance(),Ft.false();case 0:{this._advance();const n=this._expr();return this._consume(1,Dbt),n}case 17:{const n=t.lexeme;if(this._advance(),this._matchOne(9)){const o=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),o.type!==10)throw this._errExpectedButGot("REGEX",o);const s=o.lexeme,a=s.lastIndexOf("/"),l=a===s.length-1?void 0:this._removeFlagsGY(s.substring(a+1));let d;try{d=new RegExp(s.substring(1,a),l)}catch{throw this._errExpectedButGot("REGEX",o)}return YK.create(n,d)}switch(o.type){case 10:case 19:{const s=[o.lexeme];this._advance();let a=this._peek(),l=0;for(let m=0;m=0){const u=s.slice(l+1,d),h=s[d+1]==="i"?"i":"";try{a=new RegExp(u,h)}catch{throw this._errExpectedButGot("REGEX",o)}}}if(a===null)throw this._errExpectedButGot("REGEX",o);return YK.create(n,a)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,uno);const o=this._value();return Ft.notIn(n,o)}switch(this._peek().type){case 3:{this._advance();const o=this._value();if(this._previous().type===18)return Ft.equals(n,o);switch(o){case"true":return Ft.has(n);case"false":return Ft.not(n);default:return Ft.equals(n,o)}}case 4:{this._advance();const o=this._value();if(this._previous().type===18)return Ft.notEquals(n,o);switch(o){case"true":return Ft.not(n);case"false":return Ft.has(n);default:return Ft.notEquals(n,o)}}case 5:return this._advance(),Ebe.create(n,this._value());case 6:return this._advance(),Tbe.create(n,this._value());case 7:return this._advance(),Lbe.create(n,this._value());case 8:return this._advance(),xbe.create(n,this._value());case 13:return this._advance(),Ft.in(n,this._value());default:return Ft.has(n)}}case 20:throw this._parsingErrors.push({message:gno,offset:t.offset,lexeme:"",additionalInfo:mno}),RO._parseError;default:throw this._errExpectedButGot(`true | false | KEY | KEY '=~' REGEX | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const t=this._peek();switch(t.type){case 17:case 18:return this._advance(),t.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(t){return t.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(t){return this._check(t)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(t,n){if(this._check(t))return this._advance();throw this._errExpectedButGot(n,this._peek())}_errExpectedButGot(t,n,r){const o=U(1683,`Expected: {0} -Received: '{1}'.`,t,aX.getLexeme(n)),s=n.offset,a=aX.getLexeme(n);return this._parsingErrors.push({message:o,offset:s,lexeme:a,additionalInfo:r}),RO._parseError}_check(t){return this._peek().type===t}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},RO._parseError=new Error,RO);const hat=class hat{static false(){return hm.INSTANCE}static true(){return p1.INSTANCE}static has(t){return bI.create(t)}static equals(t,n){return $z.create(t,n)}static notEquals(t,n){return _be.create(t,n)}static regex(t,n){return YK.create(t,n)}static in(t,n){return ybe.create(t,n)}static notIn(t,n){return Cbe.create(t,n)}static not(t){return wI.create(t)}static and(...t){return aQ.create(t,null,!0)}static or(...t){return vS.create(t,null,!0)}static deserialize(t){return t==null?void 0:this._parser.parse(t)}};hat._parser=new kno({regexParsingWithErrorRecovery:!1});let Ft=hat;function vno(e,t){const n=e?e.substituteConstants():void 0,r=t?t.substituteConstants():void 0;return!n&&!r?!0:!n||!r?!1:n.equals(r)}function cZ(e,t){return e.cmp(t)}const bve=class bve{constructor(){this.type=0}cmp(t){return this.type-t.type}equals(t){return t.type===this.type}substituteConstants(){return this}evaluate(t){return!1}serialize(){return"false"}keys(){return[]}negate(){return p1.INSTANCE}};bve.INSTANCE=new bve;let hm=bve;const wve=class wve{constructor(){this.type=1}cmp(t){return this.type-t.type}equals(t){return t.type===this.type}substituteConstants(){return this}evaluate(t){return!0}serialize(){return"true"}keys(){return[]}negate(){return hm.INSTANCE}};wve.INSTANCE=new wve;let p1=wve;class bI{static create(t,n=null){const r=Df.get(t);return typeof r=="boolean"?r?p1.INSTANCE:hm.INSTANCE:new bI(t,n)}constructor(t,n){this.key=t,this.negated=n,this.type=2}cmp(t){return t.type!==this.type?this.type-t.type:DEn(this.key,t.key)}equals(t){return t.type===this.type?this.key===t.key:!1}substituteConstants(){const t=Df.get(this.key);return typeof t=="boolean"?t?p1.INSTANCE:hm.INSTANCE:this}evaluate(t){return!!t.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=wI.create(this.key,this)),this.negated}}class $z{static create(t,n,r=null){if(typeof n=="boolean")return n?bI.create(t,r):wI.create(t,r);const o=Df.get(t);return typeof o=="boolean"?n===(o?"true":"false")?p1.INSTANCE:hm.INSTANCE:new $z(t,n,r)}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=4}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){const t=Df.get(this.key);if(typeof t=="boolean"){const n=t?"true":"false";return this.value===n?p1.INSTANCE:hm.INSTANCE}return this}evaluate(t){return t.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=_be.create(this.key,this.value,this)),this.negated}}class ybe{static create(t,n){return new ybe(t,n)}constructor(t,n){this.key=t,this.valueKey=n,this.type=10,this.negated=null}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.valueKey,t.key,t.valueKey)}equals(t){return t.type===this.type?this.key===t.key&&this.valueKey===t.valueKey:!1}substituteConstants(){return this}evaluate(t){const n=t.getValue(this.valueKey),r=t.getValue(this.key);return Array.isArray(n)?n.includes(r):typeof r=="string"&&typeof n=="object"&&n!==null?ano.call(n,r):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=Cbe.create(this.key,this.valueKey)),this.negated}}class Cbe{static create(t,n){return new Cbe(t,n)}constructor(t,n){this.key=t,this.valueKey=n,this.type=11,this._negated=ybe.create(t,n)}cmp(t){return t.type!==this.type?this.type-t.type:this._negated.cmp(t._negated)}equals(t){return t.type===this.type?this._negated.equals(t._negated):!1}substituteConstants(){return this}evaluate(t){return!this._negated.evaluate(t)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class _be{static create(t,n,r=null){if(typeof n=="boolean")return n?wI.create(t,r):bI.create(t,r);const o=Df.get(t);return typeof o=="boolean"?n===(o?"true":"false")?hm.INSTANCE:p1.INSTANCE:new _be(t,n,r)}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=5}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){const t=Df.get(this.key);if(typeof t=="boolean"){const n=t?"true":"false";return this.value===n?hm.INSTANCE:p1.INSTANCE}return this}evaluate(t){return t.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=$z.create(this.key,this.value,this)),this.negated}}class wI{static create(t,n=null){const r=Df.get(t);return typeof r=="boolean"?r?hm.INSTANCE:p1.INSTANCE:new wI(t,n)}constructor(t,n){this.key=t,this.negated=n,this.type=3}cmp(t){return t.type!==this.type?this.type-t.type:DEn(this.key,t.key)}equals(t){return t.type===this.type?this.key===t.key:!1}substituteConstants(){const t=Df.get(this.key);return typeof t=="boolean"?t?hm.INSTANCE:p1.INSTANCE:this}evaluate(t){return!t.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=bI.create(this.key,this)),this.negated}}function Sbe(e,t){if(typeof e=="string"){const n=parseFloat(e);isNaN(n)||(e=n)}return typeof e=="string"||typeof e=="number"?t(e):hm.INSTANCE}class Lbe{static create(t,n,r=null){return Sbe(n,o=>new Lbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=12}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Tbe.create(this.key,this.value,this)),this.negated}}class xbe{static create(t,n,r=null){return Sbe(n,o=>new xbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=13}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Ebe.create(this.key,this.value,this)),this.negated}}class Ebe{static create(t,n,r=null){return Sbe(n,o=>new Ebe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=14}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))new Tbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=15}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Lbe.create(this.key,this.value,this)),this.negated}}class YK{static create(t,n){return new YK(t,n)}constructor(t,n){this.key=t,this.regexp=n,this.type=7,this.negated=null}cmp(t){if(t.type!==this.type)return this.type-t.type;if(this.keyt.key)return 1;const n=this.regexp?this.regexp.source:"",r=t.regexp?t.regexp.source:"";return nr?1:0}equals(t){if(t.type===this.type){const n=this.regexp?this.regexp.source:"",r=t.regexp?t.regexp.source:"";return this.key===t.key&&n===r}return!1}substituteConstants(){return this}evaluate(t){const n=t.getValue(this.key);return this.regexp?this.regexp.test(n):!1}serialize(){const t=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${t}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=JJe.create(this)),this.negated}}class JJe{static create(t){return new JJe(t)}constructor(t){this._actual=t,this.type=8}cmp(t){return t.type!==this.type?this.type-t.type:this._actual.cmp(t._actual)}equals(t){return t.type===this.type?this._actual.equals(t._actual):!1}substituteConstants(){return this}evaluate(t){return!this._actual.evaluate(t)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function QEn(e){let t=null;for(let n=0,r=e.length;nt.expr.length)return 1;for(let n=0,r=this.expr.length;n1;){const a=o[o.length-1];if(a.type!==9)break;o.pop();const l=o.pop(),d=o.length===0,u=vS.create(a.expr.map(h=>aQ.create([h,l],null,r)),null,d);u&&(o.push(u),o.sort(cZ))}if(o.length===1)return o[0];if(r){for(let a=0;at.serialize()).join(" && ")}keys(){const t=[];for(const n of this.expr)t.push(...n.keys());return t}negate(){if(!this.negated){const t=[];for(const n of this.expr)t.push(n.negate());this.negated=vS.create(t,this,!0)}return this.negated}}class vS{static create(t,n,r){return vS._normalizeArr(t,n,r)}constructor(t,n){this.expr=t,this.negated=n,this.type=9}cmp(t){if(t.type!==this.type)return this.type-t.type;if(this.expr.lengtht.expr.length)return 1;for(let n=0,r=this.expr.length;nt.serialize()).join(" || ")}keys(){const t=[];for(const n of this.expr)t.push(...n.keys());return t}negate(){if(!this.negated){const t=[];for(const n of this.expr)t.push(n.negate());for(;t.length>1;){const n=t.shift(),r=t.shift(),o=[];for(const s of Rbt(n))for(const a of Rbt(r))o.push(aQ.create([s,a],null,!1));t.unshift(vS.create(o,null,!1))}this.negated=vS.create(t,this,!0)}return this.negated}}const YN=class YN extends bI{static all(){return YN._info.values()}constructor(t,n,r){super(t,null),this._defaultValue=n,typeof r=="object"?YN._info.push({...r,key:t}):r!==!0&&YN._info.push({key:t,description:r,type:n!=null?typeof n:void 0})}bindTo(t){return t.createKey(this.key,this._defaultValue)}getValue(t){return t.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(t){return $z.create(this.key,t)}};YN._info=[];let yn=YN;const Qi=Cr("contextKeyService");function DEn(e,t){return et?1:0}function OI(e,t,n,r){return en?1:tr?1:0}function ANe(e,t){if(e.type===0||t.type===1)return!0;if(e.type===9)return t.type===9?Bbt(e.expr,t.expr):!1;if(t.type===9){for(const n of t.expr)if(ANe(e,n))return!0;return!1}if(e.type===6){if(t.type===6)return Bbt(t.expr,e.expr);for(const n of e.expr)if(ANe(n,t))return!0;return!1}return e.equals(t)}function Bbt(e,t){let n=0,r=0;for(;n{tR(t.dispose)&&t.dispose()}),this.data.clear()}}const Ql=new Ano;class eet{constructor(){this._coreKeybindings=new bg,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(t){if(b0===1){if(t&&t.win)return t.win}else if(b0===2){if(t&&t.mac)return t.mac}else if(t&&t.linux)return t.linux;return t}registerKeybindingRule(t){const n=eet.bindToCurrentPlatform(t),r=new xt;if(n&&n.primary){const o=XFe(n.primary,b0);o&&r.add(this._registerDefaultKeybinding(o,t.id,t.args,t.weight,0,t.when))}if(n&&Array.isArray(n.secondary))for(let o=0,s=n.secondary.length;o{l(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(bno)),this._cachedMergedKeybindings.slice(0)}}const Nu=new eet,pno={EditorModes:"platform.keybindingsRegistry"};Ql.add(pno.EditorModes,Nu);function bno(e,t){if(e.weight1!==t.weight1)return e.weight1-t.weight1;if(e.command&&t.command){if(e.commandt.command)return 1}return e.weight2-t.weight2}var wno=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Ibt=function(e,t){return function(n,r){t(n,r,e)}},que;function LU(e){return e.command!==void 0}function Ono(e){return e.submenu!==void 0}const je=class je{constructor(t){if(je._instances.has(t))throw new TypeError(`MenuId with identifier '${t}' already exists. Use MenuId.for(ident) or a unique identifier`);je._instances.set(t,this),this.id=t}};je._instances=new Map,je.CommandPalette=new je("CommandPalette"),je.DebugBreakpointsContext=new je("DebugBreakpointsContext"),je.DebugCallStackContext=new je("DebugCallStackContext"),je.DebugConsoleContext=new je("DebugConsoleContext"),je.DebugVariablesContext=new je("DebugVariablesContext"),je.NotebookVariablesContext=new je("NotebookVariablesContext"),je.DebugHoverContext=new je("DebugHoverContext"),je.DebugWatchContext=new je("DebugWatchContext"),je.DebugToolBar=new je("DebugToolBar"),je.DebugToolBarStop=new je("DebugToolBarStop"),je.DebugDisassemblyContext=new je("DebugDisassemblyContext"),je.DebugCallStackToolbar=new je("DebugCallStackToolbar"),je.DebugCreateConfiguration=new je("DebugCreateConfiguration"),je.EditorContext=new je("EditorContext"),je.SimpleEditorContext=new je("SimpleEditorContext"),je.EditorContent=new je("EditorContent"),je.EditorLineNumberContext=new je("EditorLineNumberContext"),je.EditorContextCopy=new je("EditorContextCopy"),je.EditorContextPeek=new je("EditorContextPeek"),je.EditorContextShare=new je("EditorContextShare"),je.EditorTitle=new je("EditorTitle"),je.CompactWindowEditorTitle=new je("CompactWindowEditorTitle"),je.EditorTitleRun=new je("EditorTitleRun"),je.EditorTitleContext=new je("EditorTitleContext"),je.EditorTitleContextShare=new je("EditorTitleContextShare"),je.EmptyEditorGroup=new je("EmptyEditorGroup"),je.EmptyEditorGroupContext=new je("EmptyEditorGroupContext"),je.EditorTabsBarContext=new je("EditorTabsBarContext"),je.EditorTabsBarShowTabsSubmenu=new je("EditorTabsBarShowTabsSubmenu"),je.EditorTabsBarShowTabsZenModeSubmenu=new je("EditorTabsBarShowTabsZenModeSubmenu"),je.EditorActionsPositionSubmenu=new je("EditorActionsPositionSubmenu"),je.EditorSplitMoveSubmenu=new je("EditorSplitMoveSubmenu"),je.ExplorerContext=new je("ExplorerContext"),je.ExplorerContextShare=new je("ExplorerContextShare"),je.ExtensionContext=new je("ExtensionContext"),je.ExtensionEditorContextMenu=new je("ExtensionEditorContextMenu"),je.GlobalActivity=new je("GlobalActivity"),je.CommandCenter=new je("CommandCenter"),je.CommandCenterCenter=new je("CommandCenterCenter"),je.LayoutControlMenuSubmenu=new je("LayoutControlMenuSubmenu"),je.LayoutControlMenu=new je("LayoutControlMenu"),je.MenubarMainMenu=new je("MenubarMainMenu"),je.MenubarAppearanceMenu=new je("MenubarAppearanceMenu"),je.MenubarDebugMenu=new je("MenubarDebugMenu"),je.MenubarEditMenu=new je("MenubarEditMenu"),je.MenubarCopy=new je("MenubarCopy"),je.MenubarFileMenu=new je("MenubarFileMenu"),je.MenubarGoMenu=new je("MenubarGoMenu"),je.MenubarHelpMenu=new je("MenubarHelpMenu"),je.MenubarLayoutMenu=new je("MenubarLayoutMenu"),je.MenubarNewBreakpointMenu=new je("MenubarNewBreakpointMenu"),je.PanelAlignmentMenu=new je("PanelAlignmentMenu"),je.PanelPositionMenu=new je("PanelPositionMenu"),je.ActivityBarPositionMenu=new je("ActivityBarPositionMenu"),je.MenubarPreferencesMenu=new je("MenubarPreferencesMenu"),je.MenubarRecentMenu=new je("MenubarRecentMenu"),je.MenubarSelectionMenu=new je("MenubarSelectionMenu"),je.MenubarShare=new je("MenubarShare"),je.MenubarSwitchEditorMenu=new je("MenubarSwitchEditorMenu"),je.MenubarSwitchGroupMenu=new je("MenubarSwitchGroupMenu"),je.MenubarTerminalMenu=new je("MenubarTerminalMenu"),je.MenubarTerminalSuggestStatusMenu=new je("MenubarTerminalSuggestStatusMenu"),je.MenubarViewMenu=new je("MenubarViewMenu"),je.MenubarHomeMenu=new je("MenubarHomeMenu"),je.OpenEditorsContext=new je("OpenEditorsContext"),je.OpenEditorsContextShare=new je("OpenEditorsContextShare"),je.ProblemsPanelContext=new je("ProblemsPanelContext"),je.SCMInputBox=new je("SCMInputBox"),je.SCMChangeContext=new je("SCMChangeContext"),je.SCMResourceContext=new je("SCMResourceContext"),je.SCMResourceContextShare=new je("SCMResourceContextShare"),je.SCMResourceFolderContext=new je("SCMResourceFolderContext"),je.SCMResourceGroupContext=new je("SCMResourceGroupContext"),je.SCMSourceControl=new je("SCMSourceControl"),je.SCMSourceControlInline=new je("SCMSourceControlInline"),je.SCMSourceControlTitle=new je("SCMSourceControlTitle"),je.SCMHistoryTitle=new je("SCMHistoryTitle"),je.SCMHistoryItemContext=new je("SCMHistoryItemContext"),je.SCMHistoryItemChangeContext=new je("SCMHistoryItemChangeContext"),je.SCMHistoryItemRefContext=new je("SCMHistoryItemRefContext"),je.SCMArtifactGroupContext=new je("SCMArtifactGroupContext"),je.SCMArtifactContext=new je("SCMArtifactContext"),je.SCMQuickDiffDecorations=new je("SCMQuickDiffDecorations"),je.SCMTitle=new je("SCMTitle"),je.SearchContext=new je("SearchContext"),je.SearchActionMenu=new je("SearchActionContext"),je.StatusBarWindowIndicatorMenu=new je("StatusBarWindowIndicatorMenu"),je.StatusBarRemoteIndicatorMenu=new je("StatusBarRemoteIndicatorMenu"),je.StickyScrollContext=new je("StickyScrollContext"),je.TestItem=new je("TestItem"),je.TestItemGutter=new je("TestItemGutter"),je.TestProfilesContext=new je("TestProfilesContext"),je.TestMessageContext=new je("TestMessageContext"),je.TestMessageContent=new je("TestMessageContent"),je.TestPeekElement=new je("TestPeekElement"),je.TestPeekTitle=new je("TestPeekTitle"),je.TestCallStack=new je("TestCallStack"),je.TestCoverageFilterItem=new je("TestCoverageFilterItem"),je.TouchBarContext=new je("TouchBarContext"),je.TitleBar=new je("TitleBar"),je.TitleBarContext=new je("TitleBarContext"),je.TitleBarTitleContext=new je("TitleBarTitleContext"),je.TunnelContext=new je("TunnelContext"),je.TunnelPrivacy=new je("TunnelPrivacy"),je.TunnelProtocol=new je("TunnelProtocol"),je.TunnelPortInline=new je("TunnelInline"),je.TunnelTitle=new je("TunnelTitle"),je.TunnelLocalAddressInline=new je("TunnelLocalAddressInline"),je.TunnelOriginInline=new je("TunnelOriginInline"),je.ViewItemContext=new je("ViewItemContext"),je.ViewContainerTitle=new je("ViewContainerTitle"),je.ViewContainerTitleContext=new je("ViewContainerTitleContext"),je.ViewTitle=new je("ViewTitle"),je.ViewTitleContext=new je("ViewTitleContext"),je.CommentEditorActions=new je("CommentEditorActions"),je.CommentThreadTitle=new je("CommentThreadTitle"),je.CommentThreadActions=new je("CommentThreadActions"),je.CommentThreadAdditionalActions=new je("CommentThreadAdditionalActions"),je.CommentThreadTitleContext=new je("CommentThreadTitleContext"),je.CommentThreadCommentContext=new je("CommentThreadCommentContext"),je.CommentTitle=new je("CommentTitle"),je.CommentActions=new je("CommentActions"),je.CommentsViewThreadActions=new je("CommentsViewThreadActions"),je.InteractiveToolbar=new je("InteractiveToolbar"),je.InteractiveCellTitle=new je("InteractiveCellTitle"),je.InteractiveCellDelete=new je("InteractiveCellDelete"),je.InteractiveCellExecute=new je("InteractiveCellExecute"),je.InteractiveInputExecute=new je("InteractiveInputExecute"),je.InteractiveInputConfig=new je("InteractiveInputConfig"),je.ReplInputExecute=new je("ReplInputExecute"),je.IssueReporter=new je("IssueReporter"),je.NotebookToolbar=new je("NotebookToolbar"),je.NotebookToolbarContext=new je("NotebookToolbarContext"),je.NotebookStickyScrollContext=new je("NotebookStickyScrollContext"),je.NotebookCellTitle=new je("NotebookCellTitle"),je.NotebookCellDelete=new je("NotebookCellDelete"),je.NotebookCellInsert=new je("NotebookCellInsert"),je.NotebookCellBetween=new je("NotebookCellBetween"),je.NotebookCellListTop=new je("NotebookCellTop"),je.NotebookCellExecute=new je("NotebookCellExecute"),je.NotebookCellExecuteGoTo=new je("NotebookCellExecuteGoTo"),je.NotebookCellExecutePrimary=new je("NotebookCellExecutePrimary"),je.NotebookDiffCellInputTitle=new je("NotebookDiffCellInputTitle"),je.NotebookDiffDocumentMetadata=new je("NotebookDiffDocumentMetadata"),je.NotebookDiffCellMetadataTitle=new je("NotebookDiffCellMetadataTitle"),je.NotebookDiffCellOutputsTitle=new je("NotebookDiffCellOutputsTitle"),je.NotebookOutputToolbar=new je("NotebookOutputToolbar"),je.NotebookOutlineFilter=new je("NotebookOutlineFilter"),je.NotebookOutlineActionMenu=new je("NotebookOutlineActionMenu"),je.NotebookEditorLayoutConfigure=new je("NotebookEditorLayoutConfigure"),je.NotebookKernelSource=new je("NotebookKernelSource"),je.BulkEditTitle=new je("BulkEditTitle"),je.BulkEditContext=new je("BulkEditContext"),je.TimelineItemContext=new je("TimelineItemContext"),je.TimelineTitle=new je("TimelineTitle"),je.TimelineTitleContext=new je("TimelineTitleContext"),je.TimelineFilterSubMenu=new je("TimelineFilterSubMenu"),je.AccountsContext=new je("AccountsContext"),je.SidebarTitle=new je("SidebarTitle"),je.PanelTitle=new je("PanelTitle"),je.AuxiliaryBarTitle=new je("AuxiliaryBarTitle"),je.TerminalInstanceContext=new je("TerminalInstanceContext"),je.TerminalEditorInstanceContext=new je("TerminalEditorInstanceContext"),je.TerminalNewDropdownContext=new je("TerminalNewDropdownContext"),je.TerminalTabContext=new je("TerminalTabContext"),je.TerminalTabEmptyAreaContext=new je("TerminalTabEmptyAreaContext"),je.TerminalStickyScrollContext=new je("TerminalStickyScrollContext"),je.WebviewContext=new je("WebviewContext"),je.InlineCompletionsActions=new je("InlineCompletionsActions"),je.InlineEditsActions=new je("InlineEditsActions"),je.NewFile=new je("NewFile"),je.MergeInput1Toolbar=new je("MergeToolbar1Toolbar"),je.MergeInput2Toolbar=new je("MergeToolbar2Toolbar"),je.MergeBaseToolbar=new je("MergeBaseToolbar"),je.MergeInputResultToolbar=new je("MergeToolbarResultToolbar"),je.InlineSuggestionToolbar=new je("InlineSuggestionToolbar"),je.InlineEditToolbar=new je("InlineEditToolbar"),je.ChatContext=new je("ChatContext"),je.ChatCodeBlock=new je("ChatCodeblock"),je.ChatCompareBlock=new je("ChatCompareBlock"),je.ChatMessageTitle=new je("ChatMessageTitle"),je.ChatHistory=new je("ChatHistory"),je.ChatWelcomeContext=new je("ChatWelcomeContext"),je.ChatMessageFooter=new je("ChatMessageFooter"),je.ChatExecute=new je("ChatExecute"),je.ChatInput=new je("ChatInput"),je.ChatInputSide=new je("ChatInputSide"),je.ChatModePicker=new je("ChatModePicker"),je.ChatEditingWidgetToolbar=new je("ChatEditingWidgetToolbar"),je.ChatEditingEditorContent=new je("ChatEditingEditorContent"),je.ChatEditingEditorHunk=new je("ChatEditingEditorHunk"),je.ChatEditingDeletedNotebookCell=new je("ChatEditingDeletedNotebookCell"),je.ChatInputAttachmentToolbar=new je("ChatInputAttachmentToolbar"),je.ChatEditingWidgetModifiedFilesToolbar=new je("ChatEditingWidgetModifiedFilesToolbar"),je.ChatInputResourceAttachmentContext=new je("ChatInputResourceAttachmentContext"),je.ChatInputSymbolAttachmentContext=new je("ChatInputSymbolAttachmentContext"),je.ChatInlineResourceAnchorContext=new je("ChatInlineResourceAnchorContext"),je.ChatInlineSymbolAnchorContext=new je("ChatInlineSymbolAnchorContext"),je.ChatMessageCheckpoint=new je("ChatMessageCheckpoint"),je.ChatMessageRestoreCheckpoint=new je("ChatMessageRestoreCheckpoint"),je.ChatNewMenu=new je("ChatNewMenu"),je.ChatEditingCodeBlockContext=new je("ChatEditingCodeBlockContext"),je.ChatTitleBarMenu=new je("ChatTitleBarMenu"),je.ChatAttachmentsContext=new je("ChatAttachmentsContext"),je.ChatToolOutputResourceToolbar=new je("ChatToolOutputResourceToolbar"),je.ChatTextEditorMenu=new je("ChatTextEditorMenu"),je.ChatToolOutputResourceContext=new je("ChatToolOutputResourceContext"),je.ChatMultiDiffContext=new je("ChatMultiDiffContext"),je.ChatSessionsMenu=new je("ChatSessionsMenu"),je.ChatSessionsCreateSubMenu=new je("ChatSessionsCreateSubMenu"),je.ChatConfirmationMenu=new je("ChatConfirmationMenu"),je.ChatEditorInlineExecute=new je("ChatEditorInputExecute"),je.ChatEditorInlineInputSide=new je("ChatEditorInputSide"),je.AccessibleView=new je("AccessibleView"),je.MultiDiffEditorFileToolbar=new je("MultiDiffEditorFileToolbar"),je.DiffEditorHunkToolbar=new je("DiffEditorHunkToolbar"),je.DiffEditorSelectionToolbar=new je("DiffEditorSelectionToolbar");let Wn=je;const wA=Cr("menuService"),pq=class pq{static for(t){let n=this._all.get(t);return n||(n=new pq(t),this._all.set(t,n)),n}static merge(t){const n=new Set;for(const r of t)r instanceof pq&&n.add(r.id);return n}constructor(t){this.id=t,this.has=n=>n===t}};pq._all=new Map;let wT=pq;const Iu=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new neo({merge:wT.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(e){return this._commands.set(e.id,e),this._onDidChangeMenu.fire(wT.for(Wn.CommandPalette)),Hn(()=>{this._commands.delete(e.id)&&this._onDidChangeMenu.fire(wT.for(Wn.CommandPalette))})}getCommand(e){return this._commands.get(e)}getCommands(){const e=new Map;return this._commands.forEach((t,n)=>e.set(n,t)),e}appendMenuItem(e,t){let n=this._menuItems.get(e);n||(n=new bg,this._menuItems.set(e,n));const r=n.push(t);return this._onDidChangeMenu.fire(wT.for(e)),Hn(()=>{r(),this._onDidChangeMenu.fire(wT.for(e))})}appendMenuItems(e){const t=new xt;for(const{id:n,item:r}of e)t.add(this.appendMenuItem(n,r));return t}getMenuItems(e){let t;return this._menuItems.has(e)?t=[...this._menuItems.get(e)]:t=[],e===Wn.CommandPalette&&this._appendImplicitItems(t),t}_appendImplicitItems(e){const t=new Set;for(const n of e)LU(n)&&(t.add(n.command.id),n.alt&&t.add(n.alt.id));this._commands.forEach((n,r)=>{t.has(r)||e.push({command:n})})}};class uD extends JW{constructor(t,n,r){super(`submenuitem.${t.submenu.id}`,typeof t.title=="string"?t.title:t.title.value,r,"submenu"),this.item=t,this.hideActions=n}}let i2=que=class{static label(t,n){return n!=null&&n.renderShortTitle&&t.shortTitle?typeof t.shortTitle=="string"?t.shortTitle:t.shortTitle.value:typeof t.title=="string"?t.title:t.title.value}constructor(t,n,r,o,s,a,l){var u;this.hideActions=o,this.menuKeybinding=s,this._commandService=l,this.id=t.id,this.label=que.label(t,r),this.tooltip=(typeof t.tooltip=="string"?t.tooltip:(u=t.tooltip)==null?void 0:u.value)??"",this.enabled=!t.precondition||a.contextMatchesRules(t.precondition),this.checked=void 0;let d;if(t.toggled){const h=t.toggled.condition?t.toggled:{condition:t.toggled};this.checked=a.contextMatchesRules(h.condition),this.checked&&h.tooltip&&(this.tooltip=typeof h.tooltip=="string"?h.tooltip:h.tooltip.value),this.checked&&fi.isThemeIcon(h.icon)&&(d=h.icon),this.checked&&h.title&&(this.label=typeof h.title=="string"?h.title:h.title.value)}d||(d=fi.isThemeIcon(t.icon)?t.icon:void 0),this.item=t,this.alt=n?new que(n,void 0,r,o,void 0,a,l):void 0,this._options=r,this.class=d&&fi.asClassName(d)}run(...t){var r,o;let n=[];return(r=this._options)!=null&&r.arg&&(n=[...n,this._options.arg]),(o=this._options)!=null&&o.shouldForwardArgs&&(n=[...n,...t]),this._commandService.executeCommand(this.id,...n)}};i2=que=wno([Ibt(5,Qi),Ibt(6,ba)],i2);class zu{constructor(t){this.desc=t}}function ys(e){const t=[],n=new e,{f1:r,menu:o,keybinding:s,...a}=n.desc;if(co.getCommand(a.id))throw new Error(`Cannot register two commands with the same id: ${a.id}`);if(t.push(co.registerCommand({id:a.id,handler:(l,...d)=>n.run(l,...d),metadata:a.metadata??{description:n.desc.title}})),Array.isArray(o))for(const l of o)t.push(Iu.appendMenuItem(l.id,{command:{...a,precondition:l.precondition===null?void 0:a.precondition},...l}));else o&&t.push(Iu.appendMenuItem(o.id,{command:{...a,precondition:o.precondition===null?void 0:a.precondition},...o}));if(r&&(t.push(Iu.appendMenuItem(Wn.CommandPalette,{command:a,when:a.precondition})),t.push(Iu.addCommand(a))),Array.isArray(s))for(const l of s)t.push(Nu.registerKeybindingRule({...l,id:a.id,when:a.precondition?Ft.and(a.precondition,l.when):l.when}));else s&&t.push(Nu.registerKeybindingRule({...s,id:a.id,when:a.precondition?Ft.and(a.precondition,s.when):s.when}));return{dispose(){us(t)}}}const Nf=Cr("telemetryService");var Mbt,Pbt,Fbt;class yno{constructor(t,n){this.uri=t,this.value=n}}function Cno(e){return Array.isArray(e)}const VT=class VT{constructor(t,n){if(this[Mbt]="ResourceMap",t instanceof VT)this.map=new Map(t.map),this.toKey=n??VT.defaultToKey;else if(Cno(t)){this.map=new Map,this.toKey=n??VT.defaultToKey;for(const[r,o]of t)this.set(r,o)}else this.map=new Map,this.toKey=t??VT.defaultToKey}set(t,n){return this.map.set(this.toKey(t),new yno(t,n)),this}get(t){var n;return(n=this.map.get(this.toKey(t)))==null?void 0:n.value}has(t){return this.map.has(this.toKey(t))}get size(){return this.map.size}clear(){this.map.clear()}delete(t){return this.map.delete(this.toKey(t))}forEach(t,n){typeof n<"u"&&(t=t.bind(n));for(const[r,o]of this.map)t(o.value,o.uri,this)}*values(){for(const t of this.map.values())yield t.value}*keys(){for(const t of this.map.values())yield t.uri}*entries(){for(const t of this.map.values())yield[t.uri,t.value]}*[(Mbt=Symbol.toStringTag,Symbol.iterator)](){for(const[,t]of this.map)yield[t.uri,t.value]}};VT.defaultToKey=t=>t.toString();let _c=VT;class _no{constructor(t,n){this[Pbt]="ResourceSet",!t||typeof t=="function"?this._map=new _c(t):(this._map=new _c(n),t.forEach(this.add,this))}get size(){return this._map.size}add(t){return this._map.set(t,t),this}clear(){this._map.clear()}delete(t){return this._map.delete(t)}forEach(t,n){this._map.forEach((r,o)=>t.call(n,o,o,this))}has(t){return this._map.has(t)}entries(){return this._map.entries()}keys(){return this._map.keys()}values(){return this._map.keys()}[(Pbt=Symbol.toStringTag,Symbol.iterator)](){return this.keys()}}class Sno{constructor(){this[Fbt]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var t;return(t=this._head)==null?void 0:t.value}get last(){var t;return(t=this._tail)==null?void 0:t.value}has(t){return this._map.has(t)}get(t,n=0){const r=this._map.get(t);if(r)return n!==0&&this.touch(r,n),r.value}set(t,n,r=0){let o=this._map.get(t);if(o)o.value=n,r!==0&&this.touch(o,r);else{switch(o={key:t,value:n,next:void 0,previous:void 0},r){case 0:this.addItemLast(o);break;case 1:this.addItemFirst(o);break;case 2:this.addItemLast(o);break;default:this.addItemLast(o);break}this._map.set(t,o),this._size++}return this}delete(t){return!!this.remove(t)}remove(t){const n=this._map.get(t);if(n)return this._map.delete(t),this.removeItem(n),this._size--,n.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const t=this._head;return this._map.delete(t.key),this.removeItem(t),this._size--,t.value}forEach(t,n){const r=this._state;let o=this._head;for(;o;){if(n?t.bind(n)(o.value,o.key,this):t(o.value,o.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");o=o.next}}keys(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.key,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}values(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.value,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}entries(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:[r.key,r.value],done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}[(Fbt=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(t){if(t>=this.size)return;if(t===0){this.clear();return}let n=this._head,r=this.size;for(;n&&r>t;)this._map.delete(n.key),n=n.next,r--;this._head=n,this._size=r,n&&(n.previous=void 0),this._state++}trimNew(t){if(t>=this.size)return;if(t===0){this.clear();return}let n=this._tail,r=this.size;for(;n&&r>t;)this._map.delete(n.key),n=n.previous,r--;this._tail=n,this._size=r,n&&(n.next=void 0),this._state++}addItemFirst(t){if(!this._head&&!this._tail)this._tail=t;else if(this._head)t.next=this._head,this._head.previous=t;else throw new Error("Invalid list");this._head=t,this._state++}addItemLast(t){if(!this._head&&!this._tail)this._head=t;else if(this._tail)t.previous=this._tail,this._tail.next=t;else throw new Error("Invalid list");this._tail=t,this._state++}removeItem(t){if(t===this._head&&t===this._tail)this._head=void 0,this._tail=void 0;else if(t===this._head){if(!t.next)throw new Error("Invalid list");t.next.previous=void 0,this._head=t.next}else if(t===this._tail){if(!t.previous)throw new Error("Invalid list");t.previous.next=void 0,this._tail=t.previous}else{const n=t.next,r=t.previous;if(!n||!r)throw new Error("Invalid list");n.previous=r,r.next=n}t.next=void 0,t.previous=void 0,this._state++}touch(t,n){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(n!==1&&n!==2)){if(n===1){if(t===this._head)return;const r=t.next,o=t.previous;t===this._tail?(o.next=void 0,this._tail=o):(r.previous=o,o.next=r),t.previous=void 0,t.next=this._head,this._head.previous=t,this._head=t,this._state++}else if(n===2){if(t===this._tail)return;const r=t.next,o=t.previous;t===this._head?(r.previous=void 0,this._head=r):(r.previous=o,o.next=r),t.next=void 0,t.previous=this._tail,this._tail.next=t,this._tail=t,this._state++}}}toJSON(){const t=[];return this.forEach((n,r)=>{t.push([r,n])}),t}fromJSON(t){this.clear();for(const[n,r]of t)this.set(n,r)}}class Lno extends Sno{constructor(t,n=1){super(),this._limit=t,this._ratio=Math.min(Math.max(0,n),1)}get limit(){return this._limit}set limit(t){this._limit=t,this.checkTrim()}get(t,n=2){return super.get(t,n)}peek(t){return super.get(t,0)}set(t,n){return super.set(t,n,2),this}checkTrim(){this.size>this._limit&&this.trim(Math.round(this._limit*this._ratio))}}class wp extends Lno{constructor(t,n=1){super(t,n)}trim(t){this.trimOld(t)}set(t,n){return super.set(t,n),this.checkTrim(),this}}class xno{constructor(t){if(this._m1=new Map,this._m2=new Map,t)for(const[n,r]of t)this.set(n,r)}clear(){this._m1.clear(),this._m2.clear()}set(t,n){this._m1.set(t,n),this._m2.set(n,t)}get(t){return this._m1.get(t)}getKey(t){return this._m2.get(t)}delete(t){const n=this._m1.get(t);return n===void 0?!1:(this._m1.delete(t),this._m2.delete(n),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class BEn{constructor(){this.map=new Map}add(t,n){let r=this.map.get(t);r||(r=new Set,this.map.set(t,r)),r.add(n)}delete(t,n){const r=this.map.get(t);r&&(r.delete(n),r.size===0&&this.map.delete(t))}forEach(t,n){const r=this.map.get(t);r&&r.forEach(n)}}class Qbe{constructor(){this._data=new Map}set(t,...n){let r=this._data;for(let o=0;o{let o="";for(const[s,a]of n)o+=`${" ".repeat(r)}${s}: `,a instanceof Map?o+=` +Received: '{1}'.`,t,aX.getLexeme(n)),s=n.offset,a=aX.getLexeme(n);return this._parsingErrors.push({message:o,offset:s,lexeme:a,additionalInfo:r}),RO._parseError}_check(t){return this._peek().type===t}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},RO._parseError=new Error,RO);const hat=class hat{static false(){return hm.INSTANCE}static true(){return p1.INSTANCE}static has(t){return bI.create(t)}static equals(t,n){return $z.create(t,n)}static notEquals(t,n){return _be.create(t,n)}static regex(t,n){return YK.create(t,n)}static in(t,n){return ybe.create(t,n)}static notIn(t,n){return Cbe.create(t,n)}static not(t){return wI.create(t)}static and(...t){return aQ.create(t,null,!0)}static or(...t){return vS.create(t,null,!0)}static deserialize(t){return t==null?void 0:this._parser.parse(t)}};hat._parser=new kno({regexParsingWithErrorRecovery:!1});let Ft=hat;function vno(e,t){const n=e?e.substituteConstants():void 0,r=t?t.substituteConstants():void 0;return!n&&!r?!0:!n||!r?!1:n.equals(r)}function cZ(e,t){return e.cmp(t)}const bve=class bve{constructor(){this.type=0}cmp(t){return this.type-t.type}equals(t){return t.type===this.type}substituteConstants(){return this}evaluate(t){return!1}serialize(){return"false"}keys(){return[]}negate(){return p1.INSTANCE}};bve.INSTANCE=new bve;let hm=bve;const wve=class wve{constructor(){this.type=1}cmp(t){return this.type-t.type}equals(t){return t.type===this.type}substituteConstants(){return this}evaluate(t){return!0}serialize(){return"true"}keys(){return[]}negate(){return hm.INSTANCE}};wve.INSTANCE=new wve;let p1=wve;class bI{static create(t,n=null){const r=Df.get(t);return typeof r=="boolean"?r?p1.INSTANCE:hm.INSTANCE:new bI(t,n)}constructor(t,n){this.key=t,this.negated=n,this.type=2}cmp(t){return t.type!==this.type?this.type-t.type:DEn(this.key,t.key)}equals(t){return t.type===this.type?this.key===t.key:!1}substituteConstants(){const t=Df.get(this.key);return typeof t=="boolean"?t?p1.INSTANCE:hm.INSTANCE:this}evaluate(t){return!!t.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=wI.create(this.key,this)),this.negated}}class $z{static create(t,n,r=null){if(typeof n=="boolean")return n?bI.create(t,r):wI.create(t,r);const o=Df.get(t);return typeof o=="boolean"?n===(o?"true":"false")?p1.INSTANCE:hm.INSTANCE:new $z(t,n,r)}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=4}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){const t=Df.get(this.key);if(typeof t=="boolean"){const n=t?"true":"false";return this.value===n?p1.INSTANCE:hm.INSTANCE}return this}evaluate(t){return t.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=_be.create(this.key,this.value,this)),this.negated}}class ybe{static create(t,n){return new ybe(t,n)}constructor(t,n){this.key=t,this.valueKey=n,this.type=10,this.negated=null}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.valueKey,t.key,t.valueKey)}equals(t){return t.type===this.type?this.key===t.key&&this.valueKey===t.valueKey:!1}substituteConstants(){return this}evaluate(t){const n=t.getValue(this.valueKey),r=t.getValue(this.key);return Array.isArray(n)?n.includes(r):typeof r=="string"&&typeof n=="object"&&n!==null?ano.call(n,r):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=Cbe.create(this.key,this.valueKey)),this.negated}}class Cbe{static create(t,n){return new Cbe(t,n)}constructor(t,n){this.key=t,this.valueKey=n,this.type=11,this._negated=ybe.create(t,n)}cmp(t){return t.type!==this.type?this.type-t.type:this._negated.cmp(t._negated)}equals(t){return t.type===this.type?this._negated.equals(t._negated):!1}substituteConstants(){return this}evaluate(t){return!this._negated.evaluate(t)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class _be{static create(t,n,r=null){if(typeof n=="boolean")return n?wI.create(t,r):bI.create(t,r);const o=Df.get(t);return typeof o=="boolean"?n===(o?"true":"false")?hm.INSTANCE:p1.INSTANCE:new _be(t,n,r)}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=5}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){const t=Df.get(this.key);if(typeof t=="boolean"){const n=t?"true":"false";return this.value===n?hm.INSTANCE:p1.INSTANCE}return this}evaluate(t){return t.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=$z.create(this.key,this.value,this)),this.negated}}class wI{static create(t,n=null){const r=Df.get(t);return typeof r=="boolean"?r?hm.INSTANCE:p1.INSTANCE:new wI(t,n)}constructor(t,n){this.key=t,this.negated=n,this.type=3}cmp(t){return t.type!==this.type?this.type-t.type:DEn(this.key,t.key)}equals(t){return t.type===this.type?this.key===t.key:!1}substituteConstants(){const t=Df.get(this.key);return typeof t=="boolean"?t?hm.INSTANCE:p1.INSTANCE:this}evaluate(t){return!t.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=bI.create(this.key,this)),this.negated}}function Sbe(e,t){if(typeof e=="string"){const n=parseFloat(e);isNaN(n)||(e=n)}return typeof e=="string"||typeof e=="number"?t(e):hm.INSTANCE}class Lbe{static create(t,n,r=null){return Sbe(n,o=>new Lbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=12}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Tbe.create(this.key,this.value,this)),this.negated}}class xbe{static create(t,n,r=null){return Sbe(n,o=>new xbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=13}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Ebe.create(this.key,this.value,this)),this.negated}}class Ebe{static create(t,n,r=null){return Sbe(n,o=>new Ebe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=14}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))new Tbe(t,o,r))}constructor(t,n,r){this.key=t,this.value=n,this.negated=r,this.type=15}cmp(t){return t.type!==this.type?this.type-t.type:OI(this.key,this.value,t.key,t.value)}equals(t){return t.type===this.type?this.key===t.key&&this.value===t.value:!1}substituteConstants(){return this}evaluate(t){return typeof this.value=="string"?!1:parseFloat(t.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Lbe.create(this.key,this.value,this)),this.negated}}class YK{static create(t,n){return new YK(t,n)}constructor(t,n){this.key=t,this.regexp=n,this.type=7,this.negated=null}cmp(t){if(t.type!==this.type)return this.type-t.type;if(this.keyt.key)return 1;const n=this.regexp?this.regexp.source:"",r=t.regexp?t.regexp.source:"";return nr?1:0}equals(t){if(t.type===this.type){const n=this.regexp?this.regexp.source:"",r=t.regexp?t.regexp.source:"";return this.key===t.key&&n===r}return!1}substituteConstants(){return this}evaluate(t){const n=t.getValue(this.key);return this.regexp?this.regexp.test(n):!1}serialize(){const t=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${t}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=JJe.create(this)),this.negated}}class JJe{static create(t){return new JJe(t)}constructor(t){this._actual=t,this.type=8}cmp(t){return t.type!==this.type?this.type-t.type:this._actual.cmp(t._actual)}equals(t){return t.type===this.type?this._actual.equals(t._actual):!1}substituteConstants(){return this}evaluate(t){return!this._actual.evaluate(t)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function QEn(e){let t=null;for(let n=0,r=e.length;nt.expr.length)return 1;for(let n=0,r=this.expr.length;n1;){const a=o[o.length-1];if(a.type!==9)break;o.pop();const l=o.pop(),d=o.length===0,u=vS.create(a.expr.map(h=>aQ.create([h,l],null,r)),null,d);u&&(o.push(u),o.sort(cZ))}if(o.length===1)return o[0];if(r){for(let a=0;at.serialize()).join(" && ")}keys(){const t=[];for(const n of this.expr)t.push(...n.keys());return t}negate(){if(!this.negated){const t=[];for(const n of this.expr)t.push(n.negate());this.negated=vS.create(t,this,!0)}return this.negated}}class vS{static create(t,n,r){return vS._normalizeArr(t,n,r)}constructor(t,n){this.expr=t,this.negated=n,this.type=9}cmp(t){if(t.type!==this.type)return this.type-t.type;if(this.expr.lengtht.expr.length)return 1;for(let n=0,r=this.expr.length;nt.serialize()).join(" || ")}keys(){const t=[];for(const n of this.expr)t.push(...n.keys());return t}negate(){if(!this.negated){const t=[];for(const n of this.expr)t.push(n.negate());for(;t.length>1;){const n=t.shift(),r=t.shift(),o=[];for(const s of Rbt(n))for(const a of Rbt(r))o.push(aQ.create([s,a],null,!1));t.unshift(vS.create(o,null,!1))}this.negated=vS.create(t,this,!0)}return this.negated}}const YN=class YN extends bI{static all(){return YN._info.values()}constructor(t,n,r){super(t,null),this._defaultValue=n,typeof r=="object"?YN._info.push({...r,key:t}):r!==!0&&YN._info.push({key:t,description:r,type:n!=null?typeof n:void 0})}bindTo(t){return t.createKey(this.key,this._defaultValue)}getValue(t){return t.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(t){return $z.create(this.key,t)}};YN._info=[];let yn=YN;const Qi=Cr("contextKeyService");function DEn(e,t){return et?1:0}function OI(e,t,n,r){return en?1:tr?1:0}function ANe(e,t){if(e.type===0||t.type===1)return!0;if(e.type===9)return t.type===9?Bbt(e.expr,t.expr):!1;if(t.type===9){for(const n of t.expr)if(ANe(e,n))return!0;return!1}if(e.type===6){if(t.type===6)return Bbt(t.expr,e.expr);for(const n of e.expr)if(ANe(n,t))return!0;return!1}return e.equals(t)}function Bbt(e,t){let n=0,r=0;for(;n{tR(t.dispose)&&t.dispose()}),this.data.clear()}}const Ql=new Ano;class eet{constructor(){this._coreKeybindings=new bg,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(t){if(b0===1){if(t&&t.win)return t.win}else if(b0===2){if(t&&t.mac)return t.mac}else if(t&&t.linux)return t.linux;return t}registerKeybindingRule(t){const n=eet.bindToCurrentPlatform(t),r=new xt;if(n&&n.primary){const o=XFe(n.primary,b0);o&&r.add(this._registerDefaultKeybinding(o,t.id,t.args,t.weight,0,t.when))}if(n&&Array.isArray(n.secondary))for(let o=0,s=n.secondary.length;o{l(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(bno)),this._cachedMergedKeybindings.slice(0)}}const Nu=new eet,pno={EditorModes:"platform.keybindingsRegistry"};Ql.add(pno.EditorModes,Nu);function bno(e,t){if(e.weight1!==t.weight1)return e.weight1-t.weight1;if(e.command&&t.command){if(e.commandt.command)return 1}return e.weight2-t.weight2}var wno=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Ibt=function(e,t){return function(n,r){t(n,r,e)}},que;function LU(e){return e.command!==void 0}function Ono(e){return e.submenu!==void 0}const je=class je{constructor(t){if(je._instances.has(t))throw new TypeError(`MenuId with identifier '${t}' already exists. Use MenuId.for(ident) or a unique identifier`);je._instances.set(t,this),this.id=t}};je._instances=new Map,je.CommandPalette=new je("CommandPalette"),je.DebugBreakpointsContext=new je("DebugBreakpointsContext"),je.DebugCallStackContext=new je("DebugCallStackContext"),je.DebugConsoleContext=new je("DebugConsoleContext"),je.DebugVariablesContext=new je("DebugVariablesContext"),je.NotebookVariablesContext=new je("NotebookVariablesContext"),je.DebugHoverContext=new je("DebugHoverContext"),je.DebugWatchContext=new je("DebugWatchContext"),je.DebugToolBar=new je("DebugToolBar"),je.DebugToolBarStop=new je("DebugToolBarStop"),je.DebugDisassemblyContext=new je("DebugDisassemblyContext"),je.DebugCallStackToolbar=new je("DebugCallStackToolbar"),je.DebugCreateConfiguration=new je("DebugCreateConfiguration"),je.EditorContext=new je("EditorContext"),je.SimpleEditorContext=new je("SimpleEditorContext"),je.EditorContent=new je("EditorContent"),je.EditorLineNumberContext=new je("EditorLineNumberContext"),je.EditorContextCopy=new je("EditorContextCopy"),je.EditorContextPeek=new je("EditorContextPeek"),je.EditorContextShare=new je("EditorContextShare"),je.EditorTitle=new je("EditorTitle"),je.CompactWindowEditorTitle=new je("CompactWindowEditorTitle"),je.EditorTitleRun=new je("EditorTitleRun"),je.EditorTitleContext=new je("EditorTitleContext"),je.EditorTitleContextShare=new je("EditorTitleContextShare"),je.EmptyEditorGroup=new je("EmptyEditorGroup"),je.EmptyEditorGroupContext=new je("EmptyEditorGroupContext"),je.EditorTabsBarContext=new je("EditorTabsBarContext"),je.EditorTabsBarShowTabsSubmenu=new je("EditorTabsBarShowTabsSubmenu"),je.EditorTabsBarShowTabsZenModeSubmenu=new je("EditorTabsBarShowTabsZenModeSubmenu"),je.EditorActionsPositionSubmenu=new je("EditorActionsPositionSubmenu"),je.EditorSplitMoveSubmenu=new je("EditorSplitMoveSubmenu"),je.ExplorerContext=new je("ExplorerContext"),je.ExplorerContextShare=new je("ExplorerContextShare"),je.ExtensionContext=new je("ExtensionContext"),je.ExtensionEditorContextMenu=new je("ExtensionEditorContextMenu"),je.GlobalActivity=new je("GlobalActivity"),je.CommandCenter=new je("CommandCenter"),je.CommandCenterCenter=new je("CommandCenterCenter"),je.LayoutControlMenuSubmenu=new je("LayoutControlMenuSubmenu"),je.LayoutControlMenu=new je("LayoutControlMenu"),je.MenubarMainMenu=new je("MenubarMainMenu"),je.MenubarAppearanceMenu=new je("MenubarAppearanceMenu"),je.MenubarDebugMenu=new je("MenubarDebugMenu"),je.MenubarEditMenu=new je("MenubarEditMenu"),je.MenubarCopy=new je("MenubarCopy"),je.MenubarFileMenu=new je("MenubarFileMenu"),je.MenubarGoMenu=new je("MenubarGoMenu"),je.MenubarHelpMenu=new je("MenubarHelpMenu"),je.MenubarLayoutMenu=new je("MenubarLayoutMenu"),je.MenubarNewBreakpointMenu=new je("MenubarNewBreakpointMenu"),je.PanelAlignmentMenu=new je("PanelAlignmentMenu"),je.PanelPositionMenu=new je("PanelPositionMenu"),je.ActivityBarPositionMenu=new je("ActivityBarPositionMenu"),je.MenubarPreferencesMenu=new je("MenubarPreferencesMenu"),je.MenubarRecentMenu=new je("MenubarRecentMenu"),je.MenubarSelectionMenu=new je("MenubarSelectionMenu"),je.MenubarShare=new je("MenubarShare"),je.MenubarSwitchEditorMenu=new je("MenubarSwitchEditorMenu"),je.MenubarSwitchGroupMenu=new je("MenubarSwitchGroupMenu"),je.MenubarTerminalMenu=new je("MenubarTerminalMenu"),je.MenubarTerminalSuggestStatusMenu=new je("MenubarTerminalSuggestStatusMenu"),je.MenubarViewMenu=new je("MenubarViewMenu"),je.MenubarHomeMenu=new je("MenubarHomeMenu"),je.OpenEditorsContext=new je("OpenEditorsContext"),je.OpenEditorsContextShare=new je("OpenEditorsContextShare"),je.ProblemsPanelContext=new je("ProblemsPanelContext"),je.SCMInputBox=new je("SCMInputBox"),je.SCMChangeContext=new je("SCMChangeContext"),je.SCMResourceContext=new je("SCMResourceContext"),je.SCMResourceContextShare=new je("SCMResourceContextShare"),je.SCMResourceFolderContext=new je("SCMResourceFolderContext"),je.SCMResourceGroupContext=new je("SCMResourceGroupContext"),je.SCMSourceControl=new je("SCMSourceControl"),je.SCMSourceControlInline=new je("SCMSourceControlInline"),je.SCMSourceControlTitle=new je("SCMSourceControlTitle"),je.SCMHistoryTitle=new je("SCMHistoryTitle"),je.SCMHistoryItemContext=new je("SCMHistoryItemContext"),je.SCMHistoryItemChangeContext=new je("SCMHistoryItemChangeContext"),je.SCMHistoryItemRefContext=new je("SCMHistoryItemRefContext"),je.SCMArtifactGroupContext=new je("SCMArtifactGroupContext"),je.SCMArtifactContext=new je("SCMArtifactContext"),je.SCMQuickDiffDecorations=new je("SCMQuickDiffDecorations"),je.SCMTitle=new je("SCMTitle"),je.SearchContext=new je("SearchContext"),je.SearchActionMenu=new je("SearchActionContext"),je.StatusBarWindowIndicatorMenu=new je("StatusBarWindowIndicatorMenu"),je.StatusBarRemoteIndicatorMenu=new je("StatusBarRemoteIndicatorMenu"),je.StickyScrollContext=new je("StickyScrollContext"),je.TestItem=new je("TestItem"),je.TestItemGutter=new je("TestItemGutter"),je.TestProfilesContext=new je("TestProfilesContext"),je.TestMessageContext=new je("TestMessageContext"),je.TestMessageContent=new je("TestMessageContent"),je.TestPeekElement=new je("TestPeekElement"),je.TestPeekTitle=new je("TestPeekTitle"),je.TestCallStack=new je("TestCallStack"),je.TestCoverageFilterItem=new je("TestCoverageFilterItem"),je.TouchBarContext=new je("TouchBarContext"),je.TitleBar=new je("TitleBar"),je.TitleBarContext=new je("TitleBarContext"),je.TitleBarTitleContext=new je("TitleBarTitleContext"),je.TunnelContext=new je("TunnelContext"),je.TunnelPrivacy=new je("TunnelPrivacy"),je.TunnelProtocol=new je("TunnelProtocol"),je.TunnelPortInline=new je("TunnelInline"),je.TunnelTitle=new je("TunnelTitle"),je.TunnelLocalAddressInline=new je("TunnelLocalAddressInline"),je.TunnelOriginInline=new je("TunnelOriginInline"),je.ViewItemContext=new je("ViewItemContext"),je.ViewContainerTitle=new je("ViewContainerTitle"),je.ViewContainerTitleContext=new je("ViewContainerTitleContext"),je.ViewTitle=new je("ViewTitle"),je.ViewTitleContext=new je("ViewTitleContext"),je.CommentEditorActions=new je("CommentEditorActions"),je.CommentThreadTitle=new je("CommentThreadTitle"),je.CommentThreadActions=new je("CommentThreadActions"),je.CommentThreadAdditionalActions=new je("CommentThreadAdditionalActions"),je.CommentThreadTitleContext=new je("CommentThreadTitleContext"),je.CommentThreadCommentContext=new je("CommentThreadCommentContext"),je.CommentTitle=new je("CommentTitle"),je.CommentActions=new je("CommentActions"),je.CommentsViewThreadActions=new je("CommentsViewThreadActions"),je.InteractiveToolbar=new je("InteractiveToolbar"),je.InteractiveCellTitle=new je("InteractiveCellTitle"),je.InteractiveCellDelete=new je("InteractiveCellDelete"),je.InteractiveCellExecute=new je("InteractiveCellExecute"),je.InteractiveInputExecute=new je("InteractiveInputExecute"),je.InteractiveInputConfig=new je("InteractiveInputConfig"),je.ReplInputExecute=new je("ReplInputExecute"),je.IssueReporter=new je("IssueReporter"),je.NotebookToolbar=new je("NotebookToolbar"),je.NotebookToolbarContext=new je("NotebookToolbarContext"),je.NotebookStickyScrollContext=new je("NotebookStickyScrollContext"),je.NotebookCellTitle=new je("NotebookCellTitle"),je.NotebookCellDelete=new je("NotebookCellDelete"),je.NotebookCellInsert=new je("NotebookCellInsert"),je.NotebookCellBetween=new je("NotebookCellBetween"),je.NotebookCellListTop=new je("NotebookCellTop"),je.NotebookCellExecute=new je("NotebookCellExecute"),je.NotebookCellExecuteGoTo=new je("NotebookCellExecuteGoTo"),je.NotebookCellExecutePrimary=new je("NotebookCellExecutePrimary"),je.NotebookDiffCellInputTitle=new je("NotebookDiffCellInputTitle"),je.NotebookDiffDocumentMetadata=new je("NotebookDiffDocumentMetadata"),je.NotebookDiffCellMetadataTitle=new je("NotebookDiffCellMetadataTitle"),je.NotebookDiffCellOutputsTitle=new je("NotebookDiffCellOutputsTitle"),je.NotebookOutputToolbar=new je("NotebookOutputToolbar"),je.NotebookOutlineFilter=new je("NotebookOutlineFilter"),je.NotebookOutlineActionMenu=new je("NotebookOutlineActionMenu"),je.NotebookEditorLayoutConfigure=new je("NotebookEditorLayoutConfigure"),je.NotebookKernelSource=new je("NotebookKernelSource"),je.BulkEditTitle=new je("BulkEditTitle"),je.BulkEditContext=new je("BulkEditContext"),je.TimelineItemContext=new je("TimelineItemContext"),je.TimelineTitle=new je("TimelineTitle"),je.TimelineTitleContext=new je("TimelineTitleContext"),je.TimelineFilterSubMenu=new je("TimelineFilterSubMenu"),je.AccountsContext=new je("AccountsContext"),je.SidebarTitle=new je("SidebarTitle"),je.PanelTitle=new je("PanelTitle"),je.AuxiliaryBarTitle=new je("AuxiliaryBarTitle"),je.TerminalInstanceContext=new je("TerminalInstanceContext"),je.TerminalEditorInstanceContext=new je("TerminalEditorInstanceContext"),je.TerminalNewDropdownContext=new je("TerminalNewDropdownContext"),je.TerminalTabContext=new je("TerminalTabContext"),je.TerminalTabEmptyAreaContext=new je("TerminalTabEmptyAreaContext"),je.TerminalStickyScrollContext=new je("TerminalStickyScrollContext"),je.WebviewContext=new je("WebviewContext"),je.InlineCompletionsActions=new je("InlineCompletionsActions"),je.InlineEditsActions=new je("InlineEditsActions"),je.NewFile=new je("NewFile"),je.MergeInput1Toolbar=new je("MergeToolbar1Toolbar"),je.MergeInput2Toolbar=new je("MergeToolbar2Toolbar"),je.MergeBaseToolbar=new je("MergeBaseToolbar"),je.MergeInputResultToolbar=new je("MergeToolbarResultToolbar"),je.InlineSuggestionToolbar=new je("InlineSuggestionToolbar"),je.InlineEditToolbar=new je("InlineEditToolbar"),je.ChatContext=new je("ChatContext"),je.ChatCodeBlock=new je("ChatCodeblock"),je.ChatCompareBlock=new je("ChatCompareBlock"),je.ChatMessageTitle=new je("ChatMessageTitle"),je.ChatHistory=new je("ChatHistory"),je.ChatWelcomeContext=new je("ChatWelcomeContext"),je.ChatMessageFooter=new je("ChatMessageFooter"),je.ChatExecute=new je("ChatExecute"),je.ChatInput=new je("ChatInput"),je.ChatInputSide=new je("ChatInputSide"),je.ChatModePicker=new je("ChatModePicker"),je.ChatEditingWidgetToolbar=new je("ChatEditingWidgetToolbar"),je.ChatEditingEditorContent=new je("ChatEditingEditorContent"),je.ChatEditingEditorHunk=new je("ChatEditingEditorHunk"),je.ChatEditingDeletedNotebookCell=new je("ChatEditingDeletedNotebookCell"),je.ChatInputAttachmentToolbar=new je("ChatInputAttachmentToolbar"),je.ChatEditingWidgetModifiedFilesToolbar=new je("ChatEditingWidgetModifiedFilesToolbar"),je.ChatInputResourceAttachmentContext=new je("ChatInputResourceAttachmentContext"),je.ChatInputSymbolAttachmentContext=new je("ChatInputSymbolAttachmentContext"),je.ChatInlineResourceAnchorContext=new je("ChatInlineResourceAnchorContext"),je.ChatInlineSymbolAnchorContext=new je("ChatInlineSymbolAnchorContext"),je.ChatMessageCheckpoint=new je("ChatMessageCheckpoint"),je.ChatMessageRestoreCheckpoint=new je("ChatMessageRestoreCheckpoint"),je.ChatNewMenu=new je("ChatNewMenu"),je.ChatEditingCodeBlockContext=new je("ChatEditingCodeBlockContext"),je.ChatTitleBarMenu=new je("ChatTitleBarMenu"),je.ChatAttachmentsContext=new je("ChatAttachmentsContext"),je.ChatToolOutputResourceToolbar=new je("ChatToolOutputResourceToolbar"),je.ChatTextEditorMenu=new je("ChatTextEditorMenu"),je.ChatToolOutputResourceContext=new je("ChatToolOutputResourceContext"),je.ChatMultiDiffContext=new je("ChatMultiDiffContext"),je.ChatSessionsMenu=new je("ChatSessionsMenu"),je.ChatSessionsCreateSubMenu=new je("ChatSessionsCreateSubMenu"),je.ChatConfirmationMenu=new je("ChatConfirmationMenu"),je.ChatEditorInlineExecute=new je("ChatEditorInputExecute"),je.ChatEditorInlineInputSide=new je("ChatEditorInputSide"),je.AccessibleView=new je("AccessibleView"),je.MultiDiffEditorFileToolbar=new je("MultiDiffEditorFileToolbar"),je.DiffEditorHunkToolbar=new je("DiffEditorHunkToolbar"),je.DiffEditorSelectionToolbar=new je("DiffEditorSelectionToolbar");let Wn=je;const wA=Cr("menuService"),pq=class pq{static for(t){let n=this._all.get(t);return n||(n=new pq(t),this._all.set(t,n)),n}static merge(t){const n=new Set;for(const r of t)r instanceof pq&&n.add(r.id);return n}constructor(t){this.id=t,this.has=n=>n===t}};pq._all=new Map;let wT=pq;const Iu=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new neo({merge:wT.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(e){return this._commands.set(e.id,e),this._onDidChangeMenu.fire(wT.for(Wn.CommandPalette)),Hn(()=>{this._commands.delete(e.id)&&this._onDidChangeMenu.fire(wT.for(Wn.CommandPalette))})}getCommand(e){return this._commands.get(e)}getCommands(){const e=new Map;return this._commands.forEach((t,n)=>e.set(n,t)),e}appendMenuItem(e,t){let n=this._menuItems.get(e);n||(n=new bg,this._menuItems.set(e,n));const r=n.push(t);return this._onDidChangeMenu.fire(wT.for(e)),Hn(()=>{r(),this._onDidChangeMenu.fire(wT.for(e))})}appendMenuItems(e){const t=new xt;for(const{id:n,item:r}of e)t.add(this.appendMenuItem(n,r));return t}getMenuItems(e){let t;return this._menuItems.has(e)?t=[...this._menuItems.get(e)]:t=[],e===Wn.CommandPalette&&this._appendImplicitItems(t),t}_appendImplicitItems(e){const t=new Set;for(const n of e)LU(n)&&(t.add(n.command.id),n.alt&&t.add(n.alt.id));this._commands.forEach((n,r)=>{t.has(r)||e.push({command:n})})}};class uD extends JW{constructor(t,n,r){super(`submenuitem.${t.submenu.id}`,typeof t.title=="string"?t.title:t.title.value,r,"submenu"),this.item=t,this.hideActions=n}}let i2=que=class{static label(t,n){return n!=null&&n.renderShortTitle&&t.shortTitle?typeof t.shortTitle=="string"?t.shortTitle:t.shortTitle.value:typeof t.title=="string"?t.title:t.title.value}constructor(t,n,r,o,s,a,l){var u;this.hideActions=o,this.menuKeybinding=s,this._commandService=l,this.id=t.id,this.label=que.label(t,r),this.tooltip=(typeof t.tooltip=="string"?t.tooltip:(u=t.tooltip)==null?void 0:u.value)??"",this.enabled=!t.precondition||a.contextMatchesRules(t.precondition),this.checked=void 0;let d;if(t.toggled){const h=t.toggled.condition?t.toggled:{condition:t.toggled};this.checked=a.contextMatchesRules(h.condition),this.checked&&h.tooltip&&(this.tooltip=typeof h.tooltip=="string"?h.tooltip:h.tooltip.value),this.checked&&fi.isThemeIcon(h.icon)&&(d=h.icon),this.checked&&h.title&&(this.label=typeof h.title=="string"?h.title:h.title.value)}d||(d=fi.isThemeIcon(t.icon)?t.icon:void 0),this.item=t,this.alt=n?new que(n,void 0,r,o,void 0,a,l):void 0,this._options=r,this.class=d&&fi.asClassName(d)}run(...t){var r,o;let n=[];return(r=this._options)!=null&&r.arg&&(n=[...n,this._options.arg]),(o=this._options)!=null&&o.shouldForwardArgs&&(n=[...n,...t]),this._commandService.executeCommand(this.id,...n)}};i2=que=wno([Ibt(5,Qi),Ibt(6,ba)],i2);class zu{constructor(t){this.desc=t}}function ys(e){const t=[],n=new e,{f1:r,menu:o,keybinding:s,...a}=n.desc;if(uo.getCommand(a.id))throw new Error(`Cannot register two commands with the same id: ${a.id}`);if(t.push(uo.registerCommand({id:a.id,handler:(l,...d)=>n.run(l,...d),metadata:a.metadata??{description:n.desc.title}})),Array.isArray(o))for(const l of o)t.push(Iu.appendMenuItem(l.id,{command:{...a,precondition:l.precondition===null?void 0:a.precondition},...l}));else o&&t.push(Iu.appendMenuItem(o.id,{command:{...a,precondition:o.precondition===null?void 0:a.precondition},...o}));if(r&&(t.push(Iu.appendMenuItem(Wn.CommandPalette,{command:a,when:a.precondition})),t.push(Iu.addCommand(a))),Array.isArray(s))for(const l of s)t.push(Nu.registerKeybindingRule({...l,id:a.id,when:a.precondition?Ft.and(a.precondition,l.when):l.when}));else s&&t.push(Nu.registerKeybindingRule({...s,id:a.id,when:a.precondition?Ft.and(a.precondition,s.when):s.when}));return{dispose(){us(t)}}}const Nf=Cr("telemetryService");var Mbt,Pbt,Fbt;class yno{constructor(t,n){this.uri=t,this.value=n}}function Cno(e){return Array.isArray(e)}const VT=class VT{constructor(t,n){if(this[Mbt]="ResourceMap",t instanceof VT)this.map=new Map(t.map),this.toKey=n??VT.defaultToKey;else if(Cno(t)){this.map=new Map,this.toKey=n??VT.defaultToKey;for(const[r,o]of t)this.set(r,o)}else this.map=new Map,this.toKey=t??VT.defaultToKey}set(t,n){return this.map.set(this.toKey(t),new yno(t,n)),this}get(t){var n;return(n=this.map.get(this.toKey(t)))==null?void 0:n.value}has(t){return this.map.has(this.toKey(t))}get size(){return this.map.size}clear(){this.map.clear()}delete(t){return this.map.delete(this.toKey(t))}forEach(t,n){typeof n<"u"&&(t=t.bind(n));for(const[r,o]of this.map)t(o.value,o.uri,this)}*values(){for(const t of this.map.values())yield t.value}*keys(){for(const t of this.map.values())yield t.uri}*entries(){for(const t of this.map.values())yield[t.uri,t.value]}*[(Mbt=Symbol.toStringTag,Symbol.iterator)](){for(const[,t]of this.map)yield[t.uri,t.value]}};VT.defaultToKey=t=>t.toString();let _c=VT;class _no{constructor(t,n){this[Pbt]="ResourceSet",!t||typeof t=="function"?this._map=new _c(t):(this._map=new _c(n),t.forEach(this.add,this))}get size(){return this._map.size}add(t){return this._map.set(t,t),this}clear(){this._map.clear()}delete(t){return this._map.delete(t)}forEach(t,n){this._map.forEach((r,o)=>t.call(n,o,o,this))}has(t){return this._map.has(t)}entries(){return this._map.entries()}keys(){return this._map.keys()}values(){return this._map.keys()}[(Pbt=Symbol.toStringTag,Symbol.iterator)](){return this.keys()}}class Sno{constructor(){this[Fbt]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var t;return(t=this._head)==null?void 0:t.value}get last(){var t;return(t=this._tail)==null?void 0:t.value}has(t){return this._map.has(t)}get(t,n=0){const r=this._map.get(t);if(r)return n!==0&&this.touch(r,n),r.value}set(t,n,r=0){let o=this._map.get(t);if(o)o.value=n,r!==0&&this.touch(o,r);else{switch(o={key:t,value:n,next:void 0,previous:void 0},r){case 0:this.addItemLast(o);break;case 1:this.addItemFirst(o);break;case 2:this.addItemLast(o);break;default:this.addItemLast(o);break}this._map.set(t,o),this._size++}return this}delete(t){return!!this.remove(t)}remove(t){const n=this._map.get(t);if(n)return this._map.delete(t),this.removeItem(n),this._size--,n.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const t=this._head;return this._map.delete(t.key),this.removeItem(t),this._size--,t.value}forEach(t,n){const r=this._state;let o=this._head;for(;o;){if(n?t.bind(n)(o.value,o.key,this):t(o.value,o.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");o=o.next}}keys(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.key,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}values(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:r.value,done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}entries(){const t=this,n=this._state;let r=this._head;const o={[Symbol.iterator](){return o},next(){if(t._state!==n)throw new Error("LinkedMap got modified during iteration.");if(r){const s={value:[r.key,r.value],done:!1};return r=r.next,s}else return{value:void 0,done:!0}}};return o}[(Fbt=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(t){if(t>=this.size)return;if(t===0){this.clear();return}let n=this._head,r=this.size;for(;n&&r>t;)this._map.delete(n.key),n=n.next,r--;this._head=n,this._size=r,n&&(n.previous=void 0),this._state++}trimNew(t){if(t>=this.size)return;if(t===0){this.clear();return}let n=this._tail,r=this.size;for(;n&&r>t;)this._map.delete(n.key),n=n.previous,r--;this._tail=n,this._size=r,n&&(n.next=void 0),this._state++}addItemFirst(t){if(!this._head&&!this._tail)this._tail=t;else if(this._head)t.next=this._head,this._head.previous=t;else throw new Error("Invalid list");this._head=t,this._state++}addItemLast(t){if(!this._head&&!this._tail)this._head=t;else if(this._tail)t.previous=this._tail,this._tail.next=t;else throw new Error("Invalid list");this._tail=t,this._state++}removeItem(t){if(t===this._head&&t===this._tail)this._head=void 0,this._tail=void 0;else if(t===this._head){if(!t.next)throw new Error("Invalid list");t.next.previous=void 0,this._head=t.next}else if(t===this._tail){if(!t.previous)throw new Error("Invalid list");t.previous.next=void 0,this._tail=t.previous}else{const n=t.next,r=t.previous;if(!n||!r)throw new Error("Invalid list");n.previous=r,r.next=n}t.next=void 0,t.previous=void 0,this._state++}touch(t,n){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(n!==1&&n!==2)){if(n===1){if(t===this._head)return;const r=t.next,o=t.previous;t===this._tail?(o.next=void 0,this._tail=o):(r.previous=o,o.next=r),t.previous=void 0,t.next=this._head,this._head.previous=t,this._head=t,this._state++}else if(n===2){if(t===this._tail)return;const r=t.next,o=t.previous;t===this._head?(r.previous=void 0,this._head=r):(r.previous=o,o.next=r),t.next=void 0,t.previous=this._tail,this._tail.next=t,this._tail=t,this._state++}}}toJSON(){const t=[];return this.forEach((n,r)=>{t.push([r,n])}),t}fromJSON(t){this.clear();for(const[n,r]of t)this.set(n,r)}}class Lno extends Sno{constructor(t,n=1){super(),this._limit=t,this._ratio=Math.min(Math.max(0,n),1)}get limit(){return this._limit}set limit(t){this._limit=t,this.checkTrim()}get(t,n=2){return super.get(t,n)}peek(t){return super.get(t,0)}set(t,n){return super.set(t,n,2),this}checkTrim(){this.size>this._limit&&this.trim(Math.round(this._limit*this._ratio))}}class wp extends Lno{constructor(t,n=1){super(t,n)}trim(t){this.trimOld(t)}set(t,n){return super.set(t,n),this.checkTrim(),this}}class xno{constructor(t){if(this._m1=new Map,this._m2=new Map,t)for(const[n,r]of t)this.set(n,r)}clear(){this._m1.clear(),this._m2.clear()}set(t,n){this._m1.set(t,n),this._m2.set(n,t)}get(t){return this._m1.get(t)}getKey(t){return this._m2.get(t)}delete(t){const n=this._m1.get(t);return n===void 0?!1:(this._m1.delete(t),this._m2.delete(n),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class BEn{constructor(){this.map=new Map}add(t,n){let r=this.map.get(t);r||(r=new Set,this.map.set(t,r)),r.add(n)}delete(t,n){const r=this.map.get(t);r&&(r.delete(n),r.size===0&&this.map.delete(t))}forEach(t,n){const r=this.map.get(t);r&&r.forEach(n)}}class Qbe{constructor(){this._data=new Map}set(t,...n){let r=this._data;for(let o=0;o{let o="";for(const[s,a]of n)o+=`${" ".repeat(r)}${s}: `,a instanceof Map?o+=` `+t(a,r+1):o+=`${a} -`;return o};return t(this._data,0)}}function gx(e){return e===47||e===92}function REn(e){return e.replace(/[\\/]/g,Jc.sep)}function Eno(e){return e.indexOf("/")===-1&&(e=REn(e)),/^[a-zA-Z]:(\/|$)/.test(e)&&(e="/"+e),e}function Nbt(e,t=Jc.sep){if(!e)return"";const n=e.length,r=e.charCodeAt(0);if(gx(r)){if(gx(e.charCodeAt(1))&&!gx(e.charCodeAt(2))){let s=3;const a=s;for(;se.length)return!1;if(n){if(!BJe(e,t))return!1;if(t.length===e.length)return!0;let s=t.length;return t.charAt(t.length-1)===r&&s--,e.charAt(s)===r}return t.charAt(t.length-1)!==r&&(t+=r),e.indexOf(t)===0}function IEn(e){return e>=65&&e<=90||e>=97&&e<=122}function Tno(e,t=mh){return t?IEn(e.charCodeAt(0))&&e.charCodeAt(1)===58:!1}function Ew(e){return Ome(e,!0)}class Qno{constructor(t){this._ignorePathCasing=t}compare(t,n,r=!1){return t===n?0:jK(this.getComparisonKey(t,r),this.getComparisonKey(n,r))}isEqual(t,n,r=!1){return t===n?!0:!t||!n?!1:this.getComparisonKey(t,r)===this.getComparisonKey(n,r)}getComparisonKey(t,n=!1){return t.with({path:this._ignorePathCasing(t)?t.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}isEqualOrParent(t,n,r=!1){if(t.scheme===n.scheme){if(t.scheme===Ci.file)return pNe(Ew(t),Ew(n),this._ignorePathCasing(t))&&t.query===n.query&&(r||t.fragment===n.fragment);if(jbt(t.authority,n.authority))return pNe(t.path,n.path,this._ignorePathCasing(t),"/")&&t.query===n.query&&(r||t.fragment===n.fragment)}return!1}joinPath(t,...n){return vi.joinPath(t,...n)}basenameOrAuthority(t){return hA(t)||t.authority}basename(t){return Jc.basename(t.path)}extname(t){return Jc.extname(t.path)}dirname(t){if(t.path.length===0)return t;let n;return t.scheme===Ci.file?n=vi.file(Xue(Ew(t))).path:(n=Jc.dirname(t.path),t.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname("${t.toString})) resulted in a relative path`),n="/")),t.with({path:n})}normalizePath(t){if(!t.path.length)return t;let n;return t.scheme===Ci.file?n=vi.file(J6n(Ew(t))).path:n=Jc.normalize(t.path),t.with({path:n})}relativePath(t,n){if(t.scheme!==n.scheme||!jbt(t.authority,n.authority))return;if(t.scheme===Ci.file){const s=Neo(Ew(t),Ew(n));return mh?REn(s):s}let r=t.path||"/";const o=n.path||"/";if(this._ignorePathCasing(t)){let s=0;for(const a=Math.min(r.length,o.length);sNbt(r).length&&r[r.length-1]===n}else{const r=t.path;return r.length>1&&r.charCodeAt(r.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(t.fsPath)}}removeTrailingPathSeparator(t,n=o3){return Wbt(t,n)?t.with({path:t.path.substr(0,t.path.length-1)}):t}addTrailingPathSeparator(t,n=o3){let r=!1;if(t.scheme===Ci.file){const o=Ew(t);r=o!==void 0&&o.length===Nbt(o).length&&o[o.length-1]===n}else{n="/";const o=t.path;r=o.length===1&&o.charCodeAt(o.length-1)===47}return!r&&!Wbt(t,n)?t.with({path:t.path+"/"}):t}}const Wa=new Qno(()=>!1),C6=Wa.isEqual.bind(Wa);Wa.isEqualOrParent.bind(Wa);Wa.getComparisonKey.bind(Wa);const Dno=Wa.basenameOrAuthority.bind(Wa),hA=Wa.basename.bind(Wa),Bno=Wa.extname.bind(Wa),Dbe=Wa.dirname.bind(Wa),MEn=Wa.joinPath.bind(Wa),Rno=Wa.normalizePath.bind(Wa),Ino=Wa.relativePath.bind(Wa),Ubt=Wa.resolvePath.bind(Wa);Wa.isAbsolutePath.bind(Wa);const jbt=Wa.isEqualAuthority.bind(Wa),Wbt=Wa.hasTrailingPathSeparator.bind(Wa);Wa.removeTrailingPathSeparator.bind(Wa);Wa.addTrailingPathSeparator.bind(Wa);var _6;(function(e){e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime";function t(n){const r=new Map;n.path.substring(n.path.indexOf(";")+1,n.path.lastIndexOf(";")).split(";").forEach(a=>{const[l,d]=a.split(":");l&&d&&r.set(l,d)});const s=n.path.substring(0,n.path.indexOf(";"));return s&&r.set(e.META_DATA_MIME,s),r}e.parseMetaData=t})(_6||(_6={}));const va=Cr("logService"),PEn=Cr("loggerService");var au;(function(e){e[e.Off=0]="Off",e[e.Trace=1]="Trace",e[e.Debug=2]="Debug",e[e.Info=3]="Info",e[e.Warning=4]="Warning",e[e.Error=5]="Error"})(au||(au={}));const FEn=au.Info;function NEn(e,t){return e!==au.Off&&e<=t}class UEn extends ft{constructor(){super(...arguments),this.level=FEn,this._onDidChangeLogLevel=this._register(new at)}get onDidChangeLogLevel(){return this._onDidChangeLogLevel.event}setLevel(t){this.level!==t&&(this.level=t,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(t){return NEn(this.level,t)}canLog(t){return this._store.isDisposed?!1:this.checkLogLevel(t)}}let Mno=class extends UEn{constructor(t=FEn,n=!0){super(),this.useColors=n,this.setLevel(t)}trace(t,...n){this.canLog(au.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",t,...n):console.log(t,...n))}debug(t,...n){this.canLog(au.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",t,...n):console.log(t,...n))}info(t,...n){this.canLog(au.Info)&&(this.useColors?console.log("%c INFO","color: #33f",t,...n):console.log(t,...n))}warn(t,...n){this.canLog(au.Warning)&&(this.useColors?console.warn("%c WARN","color: #993",t,...n):console.log(t,...n))}error(t,...n){this.canLog(au.Error)&&(this.useColors?console.error("%c ERR","color: #f33",t,...n):console.error(t,...n))}};class Pno extends UEn{constructor(t){super(),this.loggers=t,t.length&&this.setLevel(t[0].getLevel())}setLevel(t){for(const n of this.loggers)n.setLevel(t);super.setLevel(t)}trace(t,...n){for(const r of this.loggers)r.trace(t,...n)}debug(t,...n){for(const r of this.loggers)r.debug(t,...n)}info(t,...n){for(const r of this.loggers)r.info(t,...n)}warn(t,...n){for(const r of this.loggers)r.warn(t,...n)}error(t,...n){for(const r of this.loggers)r.error(t,...n)}dispose(){for(const t of this.loggers)t.dispose();super.dispose()}}class Fno extends ft{constructor(t,n,r){if(super(),this.logLevel=t,this.logsHome=n,this._loggers=new _c,this._onDidChangeLoggers=this._register(new at),this._onDidChangeVisibility=this._register(new at),r)for(const o of r)this._loggers.set(o.resource,{logger:void 0,info:o})}getLoggerEntry(t){return fu(t)?[...this._loggers.values()].find(n=>n.info.id===t):this._loggers.get(t)}createLogger(t,n){var d;const r=this.toResource(t),o=fu(t)?t:(n==null?void 0:n.id)??Lie(r.toString()).toString(16);let s=(d=this._loggers.get(r))==null?void 0:d.logger;const a=(n==null?void 0:n.logLevel)==="always"?au.Trace:n==null?void 0:n.logLevel;s||(s=this.doCreateLogger(r,a??this.getLogLevel(r)??this.logLevel,{...n,id:o}));const l={logger:s,info:{resource:r,id:o,logLevel:a,name:n==null?void 0:n.name,hidden:n==null?void 0:n.hidden,group:n==null?void 0:n.group,extensionId:n==null?void 0:n.extensionId,when:n==null?void 0:n.when}};return this.registerLogger(l.info),this._loggers.set(r,l),s}toResource(t){return fu(t)?MEn(this.logsHome,`${t}.log`):t}setVisibility(t,n){const r=this.getLoggerEntry(t);r&&n!==!r.info.hidden&&(r.info.hidden=!n,this._loggers.set(r.info.resource,r),this._onDidChangeVisibility.fire([r.info.resource,n]))}getLogLevel(t){var r;let n;return t&&(n=(r=this._loggers.get(t))==null?void 0:r.info.logLevel),n??this.logLevel}registerLogger(t){const n=this._loggers.get(t.resource);n?n.info.hidden!==t.hidden&&this.setVisibility(t.resource,!t.hidden):(this._loggers.set(t.resource,{info:t,logger:void 0}),this._onDidChangeLoggers.fire({added:[t],removed:[]}))}dispose(){this._loggers.forEach(t=>{var n;return(n=t.logger)==null?void 0:n.dispose()}),this._loggers.clear(),super.dispose()}}class Nno{constructor(){this.onDidChangeLogLevel=new at().event}setLevel(t){}getLevel(){return au.Info}trace(t,...n){}debug(t,...n){}info(t,...n){}warn(t,...n){}error(t,...n){}dispose(){}}class Uno extends Fno{constructor(){super(au.Off,vi.parse("log:///log"))}doCreateLogger(t,n,r){return new Nno}}function jno(e){switch(e){case au.Trace:return"trace";case au.Debug:return"debug";case au.Info:return"info";case au.Warning:return"warn";case au.Error:return"error";case au.Off:return"off"}}new yn("logLevel",jno(au.Info));const bq=class bq{static getRegisteredCommands(){return[...bq.REGISTERED_COMMANDS]}static registerCommand(t){bq.REGISTERED_COMMANDS.add(t)}};bq.REGISTERED_COMMANDS=new Set;let Tme=bq,Bbe=class{constructor(t){this.id=t.id,this.precondition=t.precondition,this._kbOpts=t.kbOpts,this._menuOpts=t.menuOpts,this.metadata=t.metadata,this.canTriggerInlineEdits=t.canTriggerInlineEdits}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const t=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const n of t){let r=n.kbExpr;this.precondition&&(r?r=Ft.and(r,this.precondition):r=this.precondition);const o={id:this.id,weight:n.weight,args:n.args,when:r,primary:n.primary,secondary:n.secondary,win:n.win,linux:n.linux,mac:n.mac};Nu.registerKeybindingRule(o)}}co.registerCommand({id:this.id,handler:(t,n)=>this.runCommand(t,n),metadata:this.metadata}),this.canTriggerInlineEdits&&Tme.registerCommand(this.id)}_registerMenuItem(t){Iu.appendMenuItem(t.menuId,{group:t.group,command:{id:this.id,title:t.title,icon:t.icon,precondition:this.precondition},when:t.when,order:t.order})}};class Xz extends Bbe{constructor(){super(...arguments),this._implementations=[]}addImplementation(t,n,r,o){return this._implementations.push({priority:t,name:n,implementation:r,when:o}),this._implementations.sort((s,a)=>a.priority-s.priority),{dispose:()=>{for(let s=0;s{if(l.get(Qi).contextMatchesRules(r??void 0))return o(l,a,n)})}runCommand(t,n){return $d.runEditorCommand(t,n,this.precondition,(r,o,s)=>this.runEditorCommand(r,o,s))}}class Bn extends $d{static convertOptions(t){let n;Array.isArray(t.menuOpts)?n=t.menuOpts:t.menuOpts?n=[t.menuOpts]:n=[];function r(o){return o.menuId||(o.menuId=Wn.EditorContext),o.title||(o.title=typeof t.label=="string"?t.label:t.label.value),o.when=Ft.and(t.precondition,o.when),o}return Array.isArray(t.contextMenuOpts)?n.push(...t.contextMenuOpts.map(r)):t.contextMenuOpts&&n.push(r(t.contextMenuOpts)),t.menuOpts=n,t}constructor(t){super(Bn.convertOptions(t)),typeof t.label=="string"?(this.label=t.label,this.alias=t.alias??t.label):(this.label=t.label.value,this.alias=t.alias??t.label.original)}runEditorCommand(t,n,r){return this.reportTelemetry(t,n),this.run(t,n,r||{})}reportTelemetry(t,n){t.get(Nf).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class Rbe extends Bn{constructor(){super(...arguments),this._implementations=[]}addImplementation(t,n){return this._implementations.push([t,n]),this._implementations.sort((r,o)=>o[0]-r[0]),{dispose:()=>{for(let r=0;r{var u;const a=s.get(Qi),l=s.get(va);if(!a.contextMatchesRules(this.desc.precondition??void 0)){l.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(u=this.desc.precondition)==null?void 0:u.serialize());return}return this.runEditorCommand(s,o,...n)})}}function _1(e,t){co.registerCommand(e,function(n,...r){const o=n.get(Yn),[s,a]=r;Oo(vi.isUri(s)),Oo(it.isIPosition(a));const l=n.get(ml).getModel(s);if(l){const d=it.lift(a);return o.invokeFunction(t,l,d,...r.slice(2))}return n.get(Dg).createModelReference(s).then(d=>new Promise((u,h)=>{try{const g=o.invokeFunction(t,d.object.textEditorModel,it.lift(a),r.slice(2));u(g)}catch(g){h(g)}}).finally(()=>{d.dispose()}))})}function On(e){return Dv.INSTANCE.registerEditorCommand(e),e}function un(e){const t=new e;return Dv.INSTANCE.registerEditorAction(t),t}function Ibe(e){return Dv.INSTANCE.registerEditorAction(e),e}function Wno(e){Dv.INSTANCE.registerEditorAction(e)}function mo(e,t,n){Dv.INSTANCE.registerEditorContribution(e,t,n)}var xU;(function(e){function t(a){return Dv.INSTANCE.getEditorCommand(a)}e.getEditorCommand=t;function n(){return Dv.INSTANCE.getEditorActions()}e.getEditorActions=n;function r(){return Dv.INSTANCE.getEditorContributions()}e.getEditorContributions=r;function o(a){return Dv.INSTANCE.getEditorContributions().filter(l=>a.indexOf(l.id)>=0)}e.getSomeEditorContributions=o;function s(){return Dv.INSTANCE.getDiffEditorContributions()}e.getDiffEditorContributions=s})(xU||(xU={}));const Vno={EditorCommonContributions:"editor.contributions"},Ove=class Ove{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(t,n,r){this.editorContributions.push({id:t,ctor:n,instantiation:r})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(t){t.register(),this.editorActions.push(t)}getEditorActions(){return this.editorActions}registerEditorCommand(t){t.register(),this.editorCommands[t.id]=t}getEditorCommand(t){return this.editorCommands[t]||null}};Ove.INSTANCE=new Ove;let Dv=Ove;Ql.add(Vno.EditorCommonContributions,Dv.INSTANCE);function Tie(e){return e.register(),e}const WEn=Tie(new Xz({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:Wn.MenubarEditMenu,group:"1_do",title:U(69,"&&Undo"),order:1},{menuId:Wn.CommandPalette,group:"",title:U(70,"Undo"),order:1},{menuId:Wn.SimpleEditorContext,group:"1_do",title:U(71,"Undo"),order:1}]}));Tie(new jEn(WEn,{id:"default:undo",precondition:void 0}));const VEn=Tie(new Xz({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:Wn.MenubarEditMenu,group:"1_do",title:U(72,"&&Redo"),order:2},{menuId:Wn.CommandPalette,group:"",title:U(73,"Redo"),order:1},{menuId:Wn.SimpleEditorContext,group:"1_do",title:U(74,"Redo"),order:2}]}));Tie(new jEn(VEn,{id:"default:redo",precondition:void 0}));const zno=Tie(new Xz({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(75,"&&Select All"),order:1},{menuId:Wn.CommandPalette,group:"",title:U(76,"Select All"),order:1},{menuId:Wn.SimpleEditorContext,group:"9_select",title:U(77,"Select All"),order:1}]}));let Ee=class eh{constructor(t,n,r,o){t>r||t===r&&n>o?(this.startLineNumber=r,this.startColumn=o,this.endLineNumber=t,this.endColumn=n):(this.startLineNumber=t,this.startColumn=n,this.endLineNumber=r,this.endColumn=o)}isEmpty(){return eh.isEmpty(this)}static isEmpty(t){return t.startLineNumber===t.endLineNumber&&t.startColumn===t.endColumn}containsPosition(t){return eh.containsPosition(this,t)}static containsPosition(t,n){return!(n.lineNumbert.endLineNumber||n.lineNumber===t.startLineNumber&&n.columnt.endColumn)}static strictContainsPosition(t,n){return!(n.lineNumbert.endLineNumber||n.lineNumber===t.startLineNumber&&n.column<=t.startColumn||n.lineNumber===t.endLineNumber&&n.column>=t.endColumn)}containsRange(t){return eh.containsRange(this,t)}static containsRange(t,n){return!(n.startLineNumbert.endLineNumber||n.endLineNumber>t.endLineNumber||n.startLineNumber===t.startLineNumber&&n.startColumnt.endColumn)}strictContainsRange(t){return eh.strictContainsRange(this,t)}static strictContainsRange(t,n){return!(n.startLineNumbert.endLineNumber||n.endLineNumber>t.endLineNumber||n.startLineNumber===t.startLineNumber&&n.startColumn<=t.startColumn||n.endLineNumber===t.endLineNumber&&n.endColumn>=t.endColumn)}plusRange(t){return eh.plusRange(this,t)}static plusRange(t,n){let r,o,s,a;return n.startLineNumbert.endLineNumber?(s=n.endLineNumber,a=n.endColumn):n.endLineNumber===t.endLineNumber?(s=n.endLineNumber,a=Math.max(n.endColumn,t.endColumn)):(s=t.endLineNumber,a=t.endColumn),new eh(r,o,s,a)}intersectRanges(t){return eh.intersectRanges(this,t)}static intersectRanges(t,n){let r=t.startLineNumber,o=t.startColumn,s=t.endLineNumber,a=t.endColumn;const l=n.startLineNumber,d=n.startColumn,u=n.endLineNumber,h=n.endColumn;return ru?(s=u,a=h):s===u&&(a=Math.min(a,h)),r>s||r===s&&o>a?null:new eh(r,o,s,a)}equalsRange(t){return eh.equalsRange(this,t)}static equalsRange(t,n){return!t&&!n?!0:!!t&&!!n&&t.startLineNumber===n.startLineNumber&&t.startColumn===n.startColumn&&t.endLineNumber===n.endLineNumber&&t.endColumn===n.endColumn}getEndPosition(){return eh.getEndPosition(this)}static getEndPosition(t){return new it(t.endLineNumber,t.endColumn)}getStartPosition(){return eh.getStartPosition(this)}static getStartPosition(t){return new it(t.startLineNumber,t.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(t,n){return new eh(this.startLineNumber,this.startColumn,t,n)}setStartPosition(t,n){return new eh(t,n,this.endLineNumber,this.endColumn)}collapseToStart(){return eh.collapseToStart(this)}static collapseToStart(t){return new eh(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)}collapseToEnd(){return eh.collapseToEnd(this)}static collapseToEnd(t){return new eh(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn)}delta(t){return new eh(this.startLineNumber+t,this.startColumn,this.endLineNumber+t,this.endColumn)}isSingleLine(){return this.startLineNumber===this.endLineNumber}static fromPositions(t,n=t){return new eh(t.lineNumber,t.column,n.lineNumber,n.column)}static lift(t){return t?new eh(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null}static isIRange(t){return!!t&&typeof t.startLineNumber=="number"&&typeof t.startColumn=="number"&&typeof t.endLineNumber=="number"&&typeof t.endColumn=="number"}static areIntersectingOrTouching(t,n){return!(t.endLineNumbert.startLineNumber}toJSON(){return this}},Qn=class e4 extends Ee{constructor(t,n,r,o){super(t,n,r,o),this.selectionStartLineNumber=t,this.selectionStartColumn=n,this.positionLineNumber=r,this.positionColumn=o}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(t){return e4.selectionsEqual(this,t)}static selectionsEqual(t,n){return t.selectionStartLineNumber===n.selectionStartLineNumber&&t.selectionStartColumn===n.selectionStartColumn&&t.positionLineNumber===n.positionLineNumber&&t.positionColumn===n.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(t,n){return this.getDirection()===0?new e4(this.startLineNumber,this.startColumn,t,n):new e4(t,n,this.startLineNumber,this.startColumn)}getPosition(){return new it(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new it(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(t,n){return this.getDirection()===0?new e4(t,n,this.endLineNumber,this.endColumn):new e4(this.endLineNumber,this.endColumn,t,n)}static fromPositions(t,n=t){return new e4(t.lineNumber,t.column,n.lineNumber,n.column)}static fromRange(t,n){return n===0?new e4(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):new e4(t.endLineNumber,t.endColumn,t.startLineNumber,t.startColumn)}static liftSelection(t){return new e4(t.selectionStartLineNumber,t.selectionStartColumn,t.positionLineNumber,t.positionColumn)}static selectionsArrEqual(t,n){if(t&&!n||!t&&n)return!1;if(!t&&!n)return!0;if(t.length!==n.length)return!1;for(let r=0,o=t.length;r0&&e.getLanguageId(a-1)===o;)a--;return new Hno(e,o,a,s+1,e.getStartOffset(a),e.getEndOffset(s))}class Hno{constructor(t,n,r,o,s,a){this._scopedLineTokensBrand=void 0,this._actual=t,this.languageId=n,this._firstTokenIndex=r,this._lastTokenIndex=o,this.firstCharOffset=s,this._lastCharOffset=a,this.languageIdCodec=t.languageIdCodec}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getLineLength(){return this._lastCharOffset-this.firstCharOffset}getActualLineContentBefore(t){return this._actual.getLineContent().substring(0,this.firstCharOffset+t)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(t){return this._actual.findTokenIndexAtOffset(t+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(t){return this._actual.getStandardTokenType(t+this._firstTokenIndex)}toIViewLineTokens(){return this._actual.sliceAndInflate(this.firstCharOffset,this._lastCharOffset,0)}}function Tw(e){return(e&3)!==0}class Ll{static _nextVisibleColumn(t,n,r){return t===9?Ll.nextRenderTabStop(n,r):I8(t)||PJe(t)?n+2:n+1}static visibleColumnFromColumn(t,n,r){const o=Math.min(n-1,t.length),s=t.substring(0,o),a=new vme(s);let l=0;for(;!a.eol();){const d=kme(s,o,a.offset);a.nextGraphemeLength(),l=this._nextVisibleColumn(d,l,r)}return l}static columnFromVisibleColumn(t,n,r){if(n<=0)return 1;const o=t.length,s=new vme(t);let a=0,l=1;for(;!s.eol();){const d=kme(t,o,s.offset);s.nextGraphemeLength();const u=this._nextVisibleColumn(d,a,r),h=s.offset+1;if(u>=n){const g=n-a;return u-n!0,Yno=()=>!1,Zno=e=>e===" "||e===" ";class pP{static shouldRecreate(t){return t.hasChanged(165)||t.hasChanged(148)||t.hasChanged(45)||t.hasChanged(85)||t.hasChanged(88)||t.hasChanged(89)||t.hasChanged(10)||t.hasChanged(11)||t.hasChanged(15)||t.hasChanged(13)||t.hasChanged(14)||t.hasChanged(20)||t.hasChanged(145)||t.hasChanged(141)||t.hasChanged(59)||t.hasChanged(104)||t.hasChanged(147)||t.hasChanged(93)}constructor(t,n,r,o){this.languageConfigurationService=o,this._cursorMoveConfigurationBrand=void 0,this._languageId=t;const s=r.options,a=s.get(165),l=s.get(59);this.readOnly=s.get(104),this.tabSize=n.tabSize,this.indentSize=n.indentSize,this.insertSpaces=n.insertSpaces,this.stickyTabStops=s.get(132),this.lineHeight=l.lineHeight,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(a.height/this.lineHeight)-2),this.useTabStops=s.get(145),this.trimWhitespaceOnDelete=s.get(141),this.wordSeparators=s.get(148),this.emptySelectionClipboard=s.get(45),this.copyWithSyntaxHighlighting=s.get(31),this.multiCursorMergeOverlapping=s.get(85),this.multiCursorPaste=s.get(88),this.multiCursorLimit=s.get(89),this.autoClosingBrackets=s.get(10),this.autoClosingComments=s.get(11),this.autoClosingQuotes=s.get(15),this.autoClosingDelete=s.get(13),this.autoClosingOvertype=s.get(14),this.autoSurround=s.get(20),this.autoIndent=s.get(16),this.wordSegmenterLocales=s.get(147),this.overtypeOnPaste=s.get(93),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(t,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(t,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(t,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(t).getAutoClosingPairs();const d=this.languageConfigurationService.getLanguageConfiguration(t).getSurroundingPairs();if(d)for(const h of d)this.surroundingPairs[h.open]=h.close;const u=this.languageConfigurationService.getLanguageConfiguration(t).comments;this.blockCommentStartToken=(u==null?void 0:u.blockCommentStartToken)??null}get electricChars(){var t;if(!this._electricChars){this._electricChars={};const n=(t=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)==null?void 0:t.getElectricCharacters();if(n)for(const r of n)this._electricChars[r]=!0}return this._electricChars}get inputMode(){return bNe.getInputMode()}onElectricCharacter(t,n,r){const o=lQ(n,r-1),s=this.languageConfigurationService.getLanguageConfiguration(o.languageId).electricCharacter;return s?s.onElectricCharacter(t,o,r-o.firstCharOffset):null}normalizeIndentation(t){return tet(t,this.indentSize,this.insertSpaces)}_getShouldAutoClose(t,n,r){switch(n){case"beforeWhitespace":return Zno;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(t,r);case"always":return Gno;case"never":return Yno}}_getLanguageDefinedShouldAutoClose(t,n){const r=this.languageConfigurationService.getLanguageConfiguration(t).getAutoCloseBeforeSet(n);return o=>r.indexOf(o)!==-1}visibleColumnFromColumn(t,n){return Ll.visibleColumnFromColumn(t.getLineContent(n.lineNumber),n.column,this.tabSize)}columnFromVisibleColumn(t,n,r){const o=Ll.columnFromVisibleColumn(t.getLineContent(n),r,this.tabSize),s=t.getLineMinColumn(n);if(oa?a:o}}let So=class zEn{static fromModelState(t){return new qno(t)}static fromViewState(t){return new Kno(t)}static fromModelSelection(t){const n=Qn.liftSelection(t),r=new rh(Ee.fromPositions(n.getSelectionStart()),0,0,n.getPosition(),0);return zEn.fromModelState(r)}static fromModelSelections(t){const n=[];for(let r=0,o=t.length;rs,u=o>a,h=oa||po||A0&&o--,OT.columnSelect(t,n,r.fromViewLineNumber,r.fromViewVisualColumn,r.toViewLineNumber,o)}static columnSelectRight(t,n,r){let o=0;const s=Math.min(r.fromViewLineNumber,r.toViewLineNumber),a=Math.max(r.fromViewLineNumber,r.toViewLineNumber);for(let d=s;d<=a;d++){const u=n.getLineMaxColumn(d),h=t.visibleColumnFromColumn(n,new it(d,u));o=Math.max(o,h)}let l=r.toViewVisualColumn;return ls&&(l=new it(s,t.getLineMaxColumn(s)));const d=Ee.fromPositions(r,l);n.addTrackedEditOperation(d,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition())}}class Jno{constructor(t,n){this._range=t,this._text=n}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromRange(o,0)}}class Kue{constructor(t,n,r=!1){this._range=t,this._text=n,this.insertsAutoWhitespace=r}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getStartPosition())}}class Qme{constructor(t,n,r,o,s=!1){this._range=t,this._text=n,this._columnDeltaOffset=o,this._lineNumberDeltaOffset=r,this.insertsAutoWhitespace=s}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class eio{constructor(t){this._range=t}getEditOperations(t,n){const r=t.getValueInRange(this._range),o=this._range.getEndPosition(),s=o.lineNumber;let a=HEn(t,o,r.length);a.lineNumber>s&&(a=new it(s,t.getLineMaxColumn(s)));const l=Ee.fromPositions(o,a);n.addTrackedEditOperation(l,"")}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition())}}class net{constructor(t,n,r,o=!1){this._range=t,this._text=n,this._initialSelection=r,this._forceMoveMarkers=o,this._selectionId=null}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=n.trackSelection(this._initialSelection)}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}function HEn(e,t,n){if(n<0)throw new Error("Unexpected negative delta");const r=e.getLineCount();let o=new it(r,e.getLineMaxColumn(r));for(let s=t.lineNumber;s<=r;s++)if(s===t.lineNumber){const a=n-e.getLineMaxColumn(t.lineNumber)+t.column;if(a<=0){o=new it(t.lineNumber,t.column+n);break}n=a}else{const a=n-e.getLineMaxColumn(s);if(a<=0){o=new it(s,n);break}n=a}return o}class ZK{static whitespaceVisibleColumn(t,n,r){const o=t.length;let s=0,a=-1,l=-1;for(let d=0;dt.getLineMinColumn(n.lineNumber))return n.delta(void 0,-$6n(t.getLineContent(n.lineNumber),n.column-1));if(n.lineNumber>1){const r=n.lineNumber-1;return new it(r,t.getLineMaxColumn(r))}else return n}static leftPositionAtomicSoftTabs(t,n,r){if(n.column<=t.getLineIndentColumn(n.lineNumber)){const o=t.getLineMinColumn(n.lineNumber),s=t.getLineContent(n.lineNumber),a=ZK.atomicPosition(s,n.column-1,r,0);if(a!==-1&&a+1>=o)return new it(n.lineNumber,a+1)}return this.leftPosition(t,n)}static left(t,n,r){const o=t.stickyTabStops?ss.leftPositionAtomicSoftTabs(n,r,t.tabSize):ss.leftPosition(n,r);return new iLe(o.lineNumber,o.column,0)}static moveLeft(t,n,r,o,s){let a,l;if(r.hasSelection()&&!o)a=r.selection.startLineNumber,l=r.selection.startColumn;else{const d=r.position.delta(void 0,-(s-1)),u=n.normalizePosition(ss.clipPositionColumn(d,n),0),h=ss.left(t,n,u);a=h.lineNumber,l=h.column}return r.move(o,a,l,0)}static clipPositionColumn(t,n){return new it(t.lineNumber,ss.clipRange(t.column,n.getLineMinColumn(t.lineNumber),n.getLineMaxColumn(t.lineNumber)))}static clipRange(t,n,r){return tr?r:t}static rightPosition(t,n,r){return rh?(r=h,l?o=n.getLineMaxColumn(r):o=Math.min(n.getLineMaxColumn(r),o)):o=t.columnFromVisibleColumn(n,r,u),v?s=0:s=u-Ll.visibleColumnFromColumn(n.getLineContent(r),o,t.tabSize),d!==void 0){const f=new it(r,o),k=n.normalizePosition(f,d);s=s+(o-k.column),r=k.lineNumber,o=k.column}return new iLe(r,o,s)}static down(t,n,r,o,s,a,l){return this.vertical(t,n,r,o,s,r+a,l,4)}static moveDown(t,n,r,o,s){let a,l;r.hasSelection()&&!o?(a=r.selection.endLineNumber,l=r.selection.endColumn):(a=r.position.lineNumber,l=r.position.column);let d=0,u;do if(u=ss.down(t,n,a+d,l,r.leftoverVisibleColumns,s,!0),n.normalizePosition(new it(u.lineNumber,u.column),2).lineNumber>a)break;while(d++<10&&a+d1&&this._isBlankLine(n,s);)s--;for(;s>1&&!this._isBlankLine(n,s);)s--;return r.move(o,s,n.getLineMinColumn(s),0)}static moveToNextBlankLine(t,n,r,o){const s=n.getLineCount();let a=r.position.lineNumber;for(;a0,l=n.getLineFirstNonWhitespaceColumn(s.lineNumber);if(a&&l>0)return new Ee(s.lineNumber,l,o.lineNumber,o.column)}return new Ee(s.lineNumber,s.column,o.lineNumber,o.column)}static isAutoClosingPairDelete(t,n,r,o,s,a,l){if(n==="never"&&r==="never"||t==="never")return!1;for(let d=0,u=a.length;d=m.length+1)return!1;const v=m.charAt(g.column-2),f=o.get(v);if(!f)return!1;if(S6(v)){if(r==="never")return!1}else if(n==="never")return!1;const k=m.charAt(g.column-1);let A=!1;for(const p of f)p.open===v&&p.close===k&&(A=!0);if(!A)return!1;if(t==="auto"){let p=!1;for(let b=0,w=l.length;b1){const s=n.getLineContent(o.lineNumber),a=Og(s),l=a===-1?s.length+1:a+1;if(o.column<=l){const d=r.visibleColumnFromColumn(n,o),u=Ll.prevIndentTabStop(d,r.indentSize),h=r.columnFromVisibleColumn(n,o.lineNumber,u);return new Ee(o.lineNumber,h,o.lineNumber,o.column)}}return Ee.fromPositions(aR.getPositionAfterDeleteLeft(o,n),o)}static getPositionAfterDeleteLeft(t,n){if(t.column>1){const r=Seo(t.column-1,n.getLineContent(t.lineNumber));return t.with(void 0,r+1)}else if(t.lineNumber>1){const r=t.lineNumber-1;return new it(r,n.getLineMaxColumn(r))}else return t}static cut(t,n,r){const o=[];let s=null;r.sort((a,l)=>it.compare(a.getStartPosition(),l.getEndPosition()));for(let a=0,l=r.length;a1&&(s==null?void 0:s.endLineNumber)!==u.lineNumber?(h=u.lineNumber-1,g=n.getLineMaxColumn(u.lineNumber-1),m=u.lineNumber,v=n.getLineMaxColumn(u.lineNumber)):(h=u.lineNumber,g=1,m=u.lineNumber,v=n.getLineMaxColumn(u.lineNumber));const f=new Ee(h,g,m,v);s=f,f.isEmpty()?o[a]=null:o[a]=new Hh(f,"")}else o[a]=null;else o[a]=new Hh(d,"")}return new fm(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}const yI={DateTimeFormat(e,t){return new zh(()=>{try{return new Intl.DateTimeFormat(e,t)}catch{return new Intl.DateTimeFormat(void 0,t)}})},Collator(e,t){return new zh(()=>{try{return new Intl.Collator(e,t)}catch{return new Intl.Collator(void 0,t)}})},Segmenter(e,t){return new zh(()=>{try{return new Intl.Segmenter(e,t)}catch{return new Intl.Segmenter(void 0,t)}})},Locale(e,t){return new zh(()=>{try{return new Intl.Locale(e,t)}catch{return new Intl.Locale(iQ,t)}})},NumberFormat(e,t){return new zh(()=>{try{return new Intl.NumberFormat(e,t)}catch{return new Intl.NumberFormat(void 0,t)}})}};function Dme(e){return e<0?0:e>255?255:e|0}function bP(e){return e<0?0:e>4294967295?4294967295:e|0}class Gz{constructor(t){const n=Dme(t);this._defaultValue=n,this._asciiMap=Gz._createAsciiMap(n),this._map=new Map}static _createAsciiMap(t){const n=new Uint8Array(256);return n.fill(t),n}set(t,n){const r=Dme(n);t>=0&&t<256?this._asciiMap[t]=r:this._map.set(t,r)}get(t){return t>=0&&t<256?this._asciiMap[t]:this._map.get(t)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class Bme{constructor(){this._actual=new Gz(0)}add(t){this._actual.set(t,1)}has(t){return this._actual.get(t)===1}clear(){return this._actual.clear()}}class tio extends Gz{constructor(t,n){super(0),this._segmenter=null,this._cachedLine=null,this._cachedSegments=[],this.intlSegmenterLocales=n,this.intlSegmenterLocales.length>0?this._segmenter=yI.Segmenter(this.intlSegmenterLocales,{granularity:"word"}):this._segmenter=null;for(let r=0,o=t.length;rn)break;r=o}return r}findNextIntlWordAtOrAfterOffset(t,n){for(const r of this._getIntlSegmenterWordsOnLine(t))if(!(r.index=0;a--){const l=t.charCodeAt(a),d=n.get(l);if(s&&a===s.index)return this._createIntlWord(s,d);if(d===0){if(o===2)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1));o=1}else if(d===2){if(o===1)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1));o=2}else if(d===1&&o!==0)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1))}return o!==0?this._createWord(t,o,1,0,this._findEndOfWord(t,n,o,0)):null}static _findEndOfWord(t,n,r,o){const s=n.findNextIntlWordAtOrAfterOffset(t,o),a=t.length;for(let l=o;l=0;a--){const l=t.charCodeAt(a),d=n.get(l);if(s&&a===s.index)return a;if(d===1||r===1&&d===2||r===2&&d===0)return a+1}return 0}static moveWordLeft(t,n,r,o,s){let a=r.lineNumber,l=r.column;l===1&&a>1&&(a=a-1,l=n.getLineMaxColumn(a));let d=as._findPreviousWordOnLine(t,n,new it(a,l));if(o===0)return new it(a,d?d.start+1:1);if(o===1)return!s&&d&&d.wordType===2&&d.end-d.start===1&&d.nextCharClass===0&&(d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1))),new it(a,d?d.start+1:1);if(o===3){for(;d&&d.wordType===2;)d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1));return new it(a,d?d.start+1:1)}return d&&l<=d.end+1&&(d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1))),new it(a,d?d.end+1:1)}static _moveWordPartLeft(t,n){const r=n.lineNumber,o=t.getLineMaxColumn(r);if(n.column===1)return r>1?new it(r-1,t.getLineMaxColumn(r-1)):n;const s=t.getLineContent(r);for(let a=n.column-1;a>1;a--){const l=s.charCodeAt(a-2),d=s.charCodeAt(a-1);if(l===95&&d!==95)return new it(r,a);if(l===45&&d!==45)return new it(r,a);if((l9(l)||ale(l))&&dO(d))return new it(r,a);if(dO(l)&&dO(d)&&a+1=d.start+1&&(d=as._findNextWordOnLine(t,n,new it(s,d.end+1))),d?a=d.start+1:a=n.getLineMaxColumn(s);return new it(s,a)}static _moveWordPartRight(t,n){const r=n.lineNumber,o=t.getLineMaxColumn(r);if(n.column===o)return r1?u=1:(d--,u=o.getLineMaxColumn(d)):(h&&u<=h.end+1&&(h=as._findPreviousWordOnLine(r,o,new it(d,h.start+1))),h?u=h.end+1:u>1?u=1:(d--,u=o.getLineMaxColumn(d))),new Ee(d,u,l.lineNumber,l.column)}static deleteInsideWord(t,n,r){if(!r.isEmpty())return r;const o=new it(r.positionLineNumber,r.positionColumn),s=this._deleteInsideWordWhitespace(n,o);return s||this._deleteInsideWordDetermineDeleteRange(t,n,o)}static _charAtIsWhitespace(t,n){const r=t.charCodeAt(n);return r===32||r===9}static _deleteInsideWordWhitespace(t,n){const r=t.getLineContent(n.lineNumber),o=r.length;if(o===0)return null;let s=Math.max(n.column-2,0);if(!this._charAtIsWhitespace(r,s))return null;let a=Math.min(n.column-1,o-1);if(!this._charAtIsWhitespace(r,a))return null;for(;s>0&&this._charAtIsWhitespace(r,s-1);)s--;for(;a+11?new Ee(r.lineNumber-1,n.getLineMaxColumn(r.lineNumber-1),r.lineNumber,1):r.lineNumberg.start+1<=r.column&&r.column<=g.end+1,l=(g,m)=>(g=Math.min(g,r.column),m=Math.max(m,r.column),new Ee(r.lineNumber,g,r.lineNumber,m)),d=g=>{let m=g.start+1,v=g.end+1,f=!1;for(;v-11&&this._charAtIsWhitespace(o,m-2);)m--;return l(m,v)},u=as._findPreviousWordOnLine(t,n,r);if(u&&a(u))return d(u);const h=as._findNextWordOnLine(t,n,r);return h&&a(h)?d(h):u&&h?l(u.end+1,h.start+1):u?l(u.start+1,u.end+1):h?l(h.start+1,h.end+1):l(1,s+1)}static _deleteWordPartLeft(t,n){if(!n.isEmpty())return n;const r=n.getPosition(),o=as._moveWordPartLeft(t,r);return new Ee(r.lineNumber,r.column,o.lineNumber,o.column)}static _findFirstNonWhitespaceChar(t,n){const r=t.length;for(let o=n;o=m.start+1&&(m=as._findNextWordOnLine(r,o,new it(d,m.end+1))),m?u=m.start+1:u!!t)}function uO(e){if(!e||typeof e!="object"||e instanceof RegExp)return e;const t=Array.isArray(e)?[]:{};return Object.entries(e).forEach(([n,r])=>{t[n]=r&&typeof r=="object"?uO(r):r}),t}function nio(e){if(!e||typeof e!="object")return e;const t=[e];for(;t.length>0;){const n=t.shift();Object.freeze(n);for(const r in n)if($En.call(n,r)){const o=n[r];typeof o=="object"&&!Object.isFrozen(o)&&!yJr(o)&&t.push(o)}}return e}const $En=Object.prototype.hasOwnProperty;function XEn(e,t){return ONe(e,t,new Set)}function ONe(e,t,n){if(Qv(e))return e;const r=t(e);if(typeof r<"u")return r;if(Array.isArray(e)){const o=[];for(const s of e)o.push(ONe(s,t,n));return o}if(Pd(e)){if(n.has(e))throw new Error("Cannot clone recursive data-structure");n.add(e);const o={};for(const s in e)$En.call(e,s)&&(o[s]=ONe(e[s],t,n));return n.delete(e),o}return e}function Pbe(e,t,n=!0){return Pd(e)?(Pd(t)&&Object.keys(t).forEach(r=>{r in e?n&&(Pd(e[r])&&Pd(t[r])?Pbe(e[r],t[r],n):e[r]=t[r]):e[r]=t[r]}),e):t}function Q0(e,t){if(e===t)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;let n,r;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;nu&&(h=u,g=t.model.getLineMaxColumn(h)),So.fromModelState(new rh(new Ee(a.lineNumber,1,h,g),2,0,new it(h,g),0))}const d=n.modelState.selectionStart.getStartPosition().lineNumber;if(a.lineNumberd){const u=t.getLineCount();let h=l.lineNumber+1,g=1;return h>u&&(h=u,g=t.getLineMaxColumn(h)),So.fromViewState(n.viewState.move(!0,h,g,0))}else{const u=n.modelState.selectionStart.getEndPosition();return So.fromModelState(n.modelState.move(!0,u.lineNumber,u.column,0))}}static word(t,n,r,o){const s=t.model.validatePosition(o);return So.fromModelState(as.word(t.cursorConfig,t.model,n.modelState,r,s))}static cancelSelection(t,n){if(!n.modelState.hasSelection())return new So(n.modelState,n.viewState);const r=n.viewState.position.lineNumber,o=n.viewState.position.column;return So.fromViewState(new rh(new Ee(r,o,r,o),0,0,new it(r,o),0))}static moveTo(t,n,r,o,s){if(r){if(n.modelState.selectionStartKind===1)return this.word(t,n,r,o);if(n.modelState.selectionStartKind===2)return this.line(t,n,r,o,s)}const a=t.model.validatePosition(o),l=s?t.coordinatesConverter.validateViewPosition(new it(s.lineNumber,s.column),a):t.coordinatesConverter.convertModelPositionToViewPosition(a);return So.fromViewState(n.viewState.move(r,l.lineNumber,l.column,0))}static simpleMove(t,n,r,o,s,a){switch(r){case 0:return a===4?this._moveHalfLineLeft(t,n,o):this._moveLeft(t,n,o,s);case 1:return a===4?this._moveHalfLineRight(t,n,o):this._moveRight(t,n,o,s);case 2:return a===2?this._moveUpByViewLines(t,n,o,s):this._moveUpByModelLines(t,n,o,s);case 3:return a===2?this._moveDownByViewLines(t,n,o,s):this._moveDownByModelLines(t,n,o,s);case 4:return a===2?n.map(l=>So.fromViewState(ss.moveToPrevBlankLine(t.cursorConfig,t,l.viewState,o))):n.map(l=>So.fromModelState(ss.moveToPrevBlankLine(t.cursorConfig,t.model,l.modelState,o)));case 5:return a===2?n.map(l=>So.fromViewState(ss.moveToNextBlankLine(t.cursorConfig,t,l.viewState,o))):n.map(l=>So.fromModelState(ss.moveToNextBlankLine(t.cursorConfig,t.model,l.modelState,o)));case 6:return this._moveToViewMinColumn(t,n,o);case 7:return this._moveToViewFirstNonWhitespaceColumn(t,n,o);case 8:return this._moveToViewCenterColumn(t,n,o);case 9:return this._moveToViewMaxColumn(t,n,o);case 10:return this._moveToViewLastNonWhitespaceColumn(t,n,o);default:return null}}static viewportMove(t,n,r,o,s){const a=t.getCompletelyVisibleViewRange(),l=t.coordinatesConverter.convertViewRangeToModelRange(a);switch(r){case 11:{const d=this._firstLineNumberInRange(t.model,l,s),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 13:{const d=this._lastLineNumberInRange(t.model,l,s),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 12:{const d=Math.round((l.startLineNumber+l.endLineNumber)/2),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 14:{const d=[];for(let u=0,h=n.length;ur.endLineNumber-1?a=r.endLineNumber-1:s{const l=t.getTextDirection(s.viewState.position.lineNumber)===Xk.RTL;return So.fromViewState(l?ss.moveRight(t.cursorConfig,t,s.viewState,r,o):ss.moveLeft(t.cursorConfig,t,s.viewState,r,o))})}static _moveHalfLineLeft(t,n,r){const o=[];for(let s=0,a=n.length;s{const l=t.getTextDirection(s.viewState.position.lineNumber)===Xk.RTL;return So.fromViewState(l?ss.moveLeft(t.cursorConfig,t,s.viewState,r,o):ss.moveRight(t.cursorConfig,t,s.viewState,r,o))})}static _moveHalfLineRight(t,n,r){const o=[];for(let s=0,a=n.length;se.length)return!1;if(n){if(!BJe(e,t))return!1;if(t.length===e.length)return!0;let s=t.length;return t.charAt(t.length-1)===r&&s--,e.charAt(s)===r}return t.charAt(t.length-1)!==r&&(t+=r),e.indexOf(t)===0}function IEn(e){return e>=65&&e<=90||e>=97&&e<=122}function Tno(e,t=mh){return t?IEn(e.charCodeAt(0))&&e.charCodeAt(1)===58:!1}function Ew(e){return Ome(e,!0)}class Qno{constructor(t){this._ignorePathCasing=t}compare(t,n,r=!1){return t===n?0:jK(this.getComparisonKey(t,r),this.getComparisonKey(n,r))}isEqual(t,n,r=!1){return t===n?!0:!t||!n?!1:this.getComparisonKey(t,r)===this.getComparisonKey(n,r)}getComparisonKey(t,n=!1){return t.with({path:this._ignorePathCasing(t)?t.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}isEqualOrParent(t,n,r=!1){if(t.scheme===n.scheme){if(t.scheme===Ci.file)return pNe(Ew(t),Ew(n),this._ignorePathCasing(t))&&t.query===n.query&&(r||t.fragment===n.fragment);if(jbt(t.authority,n.authority))return pNe(t.path,n.path,this._ignorePathCasing(t),"/")&&t.query===n.query&&(r||t.fragment===n.fragment)}return!1}joinPath(t,...n){return vi.joinPath(t,...n)}basenameOrAuthority(t){return hA(t)||t.authority}basename(t){return Jc.basename(t.path)}extname(t){return Jc.extname(t.path)}dirname(t){if(t.path.length===0)return t;let n;return t.scheme===Ci.file?n=vi.file(Xue(Ew(t))).path:(n=Jc.dirname(t.path),t.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname("${t.toString})) resulted in a relative path`),n="/")),t.with({path:n})}normalizePath(t){if(!t.path.length)return t;let n;return t.scheme===Ci.file?n=vi.file(J6n(Ew(t))).path:n=Jc.normalize(t.path),t.with({path:n})}relativePath(t,n){if(t.scheme!==n.scheme||!jbt(t.authority,n.authority))return;if(t.scheme===Ci.file){const s=Neo(Ew(t),Ew(n));return mh?REn(s):s}let r=t.path||"/";const o=n.path||"/";if(this._ignorePathCasing(t)){let s=0;for(const a=Math.min(r.length,o.length);sNbt(r).length&&r[r.length-1]===n}else{const r=t.path;return r.length>1&&r.charCodeAt(r.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(t.fsPath)}}removeTrailingPathSeparator(t,n=o3){return Wbt(t,n)?t.with({path:t.path.substr(0,t.path.length-1)}):t}addTrailingPathSeparator(t,n=o3){let r=!1;if(t.scheme===Ci.file){const o=Ew(t);r=o!==void 0&&o.length===Nbt(o).length&&o[o.length-1]===n}else{n="/";const o=t.path;r=o.length===1&&o.charCodeAt(o.length-1)===47}return!r&&!Wbt(t,n)?t.with({path:t.path+"/"}):t}}const Wa=new Qno(()=>!1),C6=Wa.isEqual.bind(Wa);Wa.isEqualOrParent.bind(Wa);Wa.getComparisonKey.bind(Wa);const Dno=Wa.basenameOrAuthority.bind(Wa),hA=Wa.basename.bind(Wa),Bno=Wa.extname.bind(Wa),Dbe=Wa.dirname.bind(Wa),MEn=Wa.joinPath.bind(Wa),Rno=Wa.normalizePath.bind(Wa),Ino=Wa.relativePath.bind(Wa),Ubt=Wa.resolvePath.bind(Wa);Wa.isAbsolutePath.bind(Wa);const jbt=Wa.isEqualAuthority.bind(Wa),Wbt=Wa.hasTrailingPathSeparator.bind(Wa);Wa.removeTrailingPathSeparator.bind(Wa);Wa.addTrailingPathSeparator.bind(Wa);var _6;(function(e){e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime";function t(n){const r=new Map;n.path.substring(n.path.indexOf(";")+1,n.path.lastIndexOf(";")).split(";").forEach(a=>{const[l,d]=a.split(":");l&&d&&r.set(l,d)});const s=n.path.substring(0,n.path.indexOf(";"));return s&&r.set(e.META_DATA_MIME,s),r}e.parseMetaData=t})(_6||(_6={}));const va=Cr("logService"),PEn=Cr("loggerService");var au;(function(e){e[e.Off=0]="Off",e[e.Trace=1]="Trace",e[e.Debug=2]="Debug",e[e.Info=3]="Info",e[e.Warning=4]="Warning",e[e.Error=5]="Error"})(au||(au={}));const FEn=au.Info;function NEn(e,t){return e!==au.Off&&e<=t}class UEn extends ft{constructor(){super(...arguments),this.level=FEn,this._onDidChangeLogLevel=this._register(new at)}get onDidChangeLogLevel(){return this._onDidChangeLogLevel.event}setLevel(t){this.level!==t&&(this.level=t,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(t){return NEn(this.level,t)}canLog(t){return this._store.isDisposed?!1:this.checkLogLevel(t)}}let Mno=class extends UEn{constructor(t=FEn,n=!0){super(),this.useColors=n,this.setLevel(t)}trace(t,...n){this.canLog(au.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",t,...n):console.log(t,...n))}debug(t,...n){this.canLog(au.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",t,...n):console.log(t,...n))}info(t,...n){this.canLog(au.Info)&&(this.useColors?console.log("%c INFO","color: #33f",t,...n):console.log(t,...n))}warn(t,...n){this.canLog(au.Warning)&&(this.useColors?console.warn("%c WARN","color: #993",t,...n):console.log(t,...n))}error(t,...n){this.canLog(au.Error)&&(this.useColors?console.error("%c ERR","color: #f33",t,...n):console.error(t,...n))}};class Pno extends UEn{constructor(t){super(),this.loggers=t,t.length&&this.setLevel(t[0].getLevel())}setLevel(t){for(const n of this.loggers)n.setLevel(t);super.setLevel(t)}trace(t,...n){for(const r of this.loggers)r.trace(t,...n)}debug(t,...n){for(const r of this.loggers)r.debug(t,...n)}info(t,...n){for(const r of this.loggers)r.info(t,...n)}warn(t,...n){for(const r of this.loggers)r.warn(t,...n)}error(t,...n){for(const r of this.loggers)r.error(t,...n)}dispose(){for(const t of this.loggers)t.dispose();super.dispose()}}class Fno extends ft{constructor(t,n,r){if(super(),this.logLevel=t,this.logsHome=n,this._loggers=new _c,this._onDidChangeLoggers=this._register(new at),this._onDidChangeVisibility=this._register(new at),r)for(const o of r)this._loggers.set(o.resource,{logger:void 0,info:o})}getLoggerEntry(t){return fu(t)?[...this._loggers.values()].find(n=>n.info.id===t):this._loggers.get(t)}createLogger(t,n){var d;const r=this.toResource(t),o=fu(t)?t:(n==null?void 0:n.id)??Lie(r.toString()).toString(16);let s=(d=this._loggers.get(r))==null?void 0:d.logger;const a=(n==null?void 0:n.logLevel)==="always"?au.Trace:n==null?void 0:n.logLevel;s||(s=this.doCreateLogger(r,a??this.getLogLevel(r)??this.logLevel,{...n,id:o}));const l={logger:s,info:{resource:r,id:o,logLevel:a,name:n==null?void 0:n.name,hidden:n==null?void 0:n.hidden,group:n==null?void 0:n.group,extensionId:n==null?void 0:n.extensionId,when:n==null?void 0:n.when}};return this.registerLogger(l.info),this._loggers.set(r,l),s}toResource(t){return fu(t)?MEn(this.logsHome,`${t}.log`):t}setVisibility(t,n){const r=this.getLoggerEntry(t);r&&n!==!r.info.hidden&&(r.info.hidden=!n,this._loggers.set(r.info.resource,r),this._onDidChangeVisibility.fire([r.info.resource,n]))}getLogLevel(t){var r;let n;return t&&(n=(r=this._loggers.get(t))==null?void 0:r.info.logLevel),n??this.logLevel}registerLogger(t){const n=this._loggers.get(t.resource);n?n.info.hidden!==t.hidden&&this.setVisibility(t.resource,!t.hidden):(this._loggers.set(t.resource,{info:t,logger:void 0}),this._onDidChangeLoggers.fire({added:[t],removed:[]}))}dispose(){this._loggers.forEach(t=>{var n;return(n=t.logger)==null?void 0:n.dispose()}),this._loggers.clear(),super.dispose()}}class Nno{constructor(){this.onDidChangeLogLevel=new at().event}setLevel(t){}getLevel(){return au.Info}trace(t,...n){}debug(t,...n){}info(t,...n){}warn(t,...n){}error(t,...n){}dispose(){}}class Uno extends Fno{constructor(){super(au.Off,vi.parse("log:///log"))}doCreateLogger(t,n,r){return new Nno}}function jno(e){switch(e){case au.Trace:return"trace";case au.Debug:return"debug";case au.Info:return"info";case au.Warning:return"warn";case au.Error:return"error";case au.Off:return"off"}}new yn("logLevel",jno(au.Info));const bq=class bq{static getRegisteredCommands(){return[...bq.REGISTERED_COMMANDS]}static registerCommand(t){bq.REGISTERED_COMMANDS.add(t)}};bq.REGISTERED_COMMANDS=new Set;let Tme=bq,Bbe=class{constructor(t){this.id=t.id,this.precondition=t.precondition,this._kbOpts=t.kbOpts,this._menuOpts=t.menuOpts,this.metadata=t.metadata,this.canTriggerInlineEdits=t.canTriggerInlineEdits}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const t=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const n of t){let r=n.kbExpr;this.precondition&&(r?r=Ft.and(r,this.precondition):r=this.precondition);const o={id:this.id,weight:n.weight,args:n.args,when:r,primary:n.primary,secondary:n.secondary,win:n.win,linux:n.linux,mac:n.mac};Nu.registerKeybindingRule(o)}}uo.registerCommand({id:this.id,handler:(t,n)=>this.runCommand(t,n),metadata:this.metadata}),this.canTriggerInlineEdits&&Tme.registerCommand(this.id)}_registerMenuItem(t){Iu.appendMenuItem(t.menuId,{group:t.group,command:{id:this.id,title:t.title,icon:t.icon,precondition:this.precondition},when:t.when,order:t.order})}};class Xz extends Bbe{constructor(){super(...arguments),this._implementations=[]}addImplementation(t,n,r,o){return this._implementations.push({priority:t,name:n,implementation:r,when:o}),this._implementations.sort((s,a)=>a.priority-s.priority),{dispose:()=>{for(let s=0;s{if(l.get(Qi).contextMatchesRules(r??void 0))return o(l,a,n)})}runCommand(t,n){return $d.runEditorCommand(t,n,this.precondition,(r,o,s)=>this.runEditorCommand(r,o,s))}}class Bn extends $d{static convertOptions(t){let n;Array.isArray(t.menuOpts)?n=t.menuOpts:t.menuOpts?n=[t.menuOpts]:n=[];function r(o){return o.menuId||(o.menuId=Wn.EditorContext),o.title||(o.title=typeof t.label=="string"?t.label:t.label.value),o.when=Ft.and(t.precondition,o.when),o}return Array.isArray(t.contextMenuOpts)?n.push(...t.contextMenuOpts.map(r)):t.contextMenuOpts&&n.push(r(t.contextMenuOpts)),t.menuOpts=n,t}constructor(t){super(Bn.convertOptions(t)),typeof t.label=="string"?(this.label=t.label,this.alias=t.alias??t.label):(this.label=t.label.value,this.alias=t.alias??t.label.original)}runEditorCommand(t,n,r){return this.reportTelemetry(t,n),this.run(t,n,r||{})}reportTelemetry(t,n){t.get(Nf).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class Rbe extends Bn{constructor(){super(...arguments),this._implementations=[]}addImplementation(t,n){return this._implementations.push([t,n]),this._implementations.sort((r,o)=>o[0]-r[0]),{dispose:()=>{for(let r=0;r{var u;const a=s.get(Qi),l=s.get(va);if(!a.contextMatchesRules(this.desc.precondition??void 0)){l.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(u=this.desc.precondition)==null?void 0:u.serialize());return}return this.runEditorCommand(s,o,...n)})}}function _1(e,t){uo.registerCommand(e,function(n,...r){const o=n.get(Yn),[s,a]=r;Oo(vi.isUri(s)),Oo(it.isIPosition(a));const l=n.get(ml).getModel(s);if(l){const d=it.lift(a);return o.invokeFunction(t,l,d,...r.slice(2))}return n.get(Dg).createModelReference(s).then(d=>new Promise((u,h)=>{try{const g=o.invokeFunction(t,d.object.textEditorModel,it.lift(a),r.slice(2));u(g)}catch(g){h(g)}}).finally(()=>{d.dispose()}))})}function On(e){return Dv.INSTANCE.registerEditorCommand(e),e}function un(e){const t=new e;return Dv.INSTANCE.registerEditorAction(t),t}function Ibe(e){return Dv.INSTANCE.registerEditorAction(e),e}function Wno(e){Dv.INSTANCE.registerEditorAction(e)}function mo(e,t,n){Dv.INSTANCE.registerEditorContribution(e,t,n)}var xU;(function(e){function t(a){return Dv.INSTANCE.getEditorCommand(a)}e.getEditorCommand=t;function n(){return Dv.INSTANCE.getEditorActions()}e.getEditorActions=n;function r(){return Dv.INSTANCE.getEditorContributions()}e.getEditorContributions=r;function o(a){return Dv.INSTANCE.getEditorContributions().filter(l=>a.indexOf(l.id)>=0)}e.getSomeEditorContributions=o;function s(){return Dv.INSTANCE.getDiffEditorContributions()}e.getDiffEditorContributions=s})(xU||(xU={}));const Vno={EditorCommonContributions:"editor.contributions"},Ove=class Ove{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(t,n,r){this.editorContributions.push({id:t,ctor:n,instantiation:r})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(t){t.register(),this.editorActions.push(t)}getEditorActions(){return this.editorActions}registerEditorCommand(t){t.register(),this.editorCommands[t.id]=t}getEditorCommand(t){return this.editorCommands[t]||null}};Ove.INSTANCE=new Ove;let Dv=Ove;Ql.add(Vno.EditorCommonContributions,Dv.INSTANCE);function Tie(e){return e.register(),e}const WEn=Tie(new Xz({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:Wn.MenubarEditMenu,group:"1_do",title:U(69,"&&Undo"),order:1},{menuId:Wn.CommandPalette,group:"",title:U(70,"Undo"),order:1},{menuId:Wn.SimpleEditorContext,group:"1_do",title:U(71,"Undo"),order:1}]}));Tie(new jEn(WEn,{id:"default:undo",precondition:void 0}));const VEn=Tie(new Xz({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:Wn.MenubarEditMenu,group:"1_do",title:U(72,"&&Redo"),order:2},{menuId:Wn.CommandPalette,group:"",title:U(73,"Redo"),order:1},{menuId:Wn.SimpleEditorContext,group:"1_do",title:U(74,"Redo"),order:2}]}));Tie(new jEn(VEn,{id:"default:redo",precondition:void 0}));const zno=Tie(new Xz({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(75,"&&Select All"),order:1},{menuId:Wn.CommandPalette,group:"",title:U(76,"Select All"),order:1},{menuId:Wn.SimpleEditorContext,group:"9_select",title:U(77,"Select All"),order:1}]}));let Ee=class eh{constructor(t,n,r,o){t>r||t===r&&n>o?(this.startLineNumber=r,this.startColumn=o,this.endLineNumber=t,this.endColumn=n):(this.startLineNumber=t,this.startColumn=n,this.endLineNumber=r,this.endColumn=o)}isEmpty(){return eh.isEmpty(this)}static isEmpty(t){return t.startLineNumber===t.endLineNumber&&t.startColumn===t.endColumn}containsPosition(t){return eh.containsPosition(this,t)}static containsPosition(t,n){return!(n.lineNumbert.endLineNumber||n.lineNumber===t.startLineNumber&&n.columnt.endColumn)}static strictContainsPosition(t,n){return!(n.lineNumbert.endLineNumber||n.lineNumber===t.startLineNumber&&n.column<=t.startColumn||n.lineNumber===t.endLineNumber&&n.column>=t.endColumn)}containsRange(t){return eh.containsRange(this,t)}static containsRange(t,n){return!(n.startLineNumbert.endLineNumber||n.endLineNumber>t.endLineNumber||n.startLineNumber===t.startLineNumber&&n.startColumnt.endColumn)}strictContainsRange(t){return eh.strictContainsRange(this,t)}static strictContainsRange(t,n){return!(n.startLineNumbert.endLineNumber||n.endLineNumber>t.endLineNumber||n.startLineNumber===t.startLineNumber&&n.startColumn<=t.startColumn||n.endLineNumber===t.endLineNumber&&n.endColumn>=t.endColumn)}plusRange(t){return eh.plusRange(this,t)}static plusRange(t,n){let r,o,s,a;return n.startLineNumbert.endLineNumber?(s=n.endLineNumber,a=n.endColumn):n.endLineNumber===t.endLineNumber?(s=n.endLineNumber,a=Math.max(n.endColumn,t.endColumn)):(s=t.endLineNumber,a=t.endColumn),new eh(r,o,s,a)}intersectRanges(t){return eh.intersectRanges(this,t)}static intersectRanges(t,n){let r=t.startLineNumber,o=t.startColumn,s=t.endLineNumber,a=t.endColumn;const l=n.startLineNumber,d=n.startColumn,u=n.endLineNumber,h=n.endColumn;return ru?(s=u,a=h):s===u&&(a=Math.min(a,h)),r>s||r===s&&o>a?null:new eh(r,o,s,a)}equalsRange(t){return eh.equalsRange(this,t)}static equalsRange(t,n){return!t&&!n?!0:!!t&&!!n&&t.startLineNumber===n.startLineNumber&&t.startColumn===n.startColumn&&t.endLineNumber===n.endLineNumber&&t.endColumn===n.endColumn}getEndPosition(){return eh.getEndPosition(this)}static getEndPosition(t){return new it(t.endLineNumber,t.endColumn)}getStartPosition(){return eh.getStartPosition(this)}static getStartPosition(t){return new it(t.startLineNumber,t.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(t,n){return new eh(this.startLineNumber,this.startColumn,t,n)}setStartPosition(t,n){return new eh(t,n,this.endLineNumber,this.endColumn)}collapseToStart(){return eh.collapseToStart(this)}static collapseToStart(t){return new eh(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)}collapseToEnd(){return eh.collapseToEnd(this)}static collapseToEnd(t){return new eh(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn)}delta(t){return new eh(this.startLineNumber+t,this.startColumn,this.endLineNumber+t,this.endColumn)}isSingleLine(){return this.startLineNumber===this.endLineNumber}static fromPositions(t,n=t){return new eh(t.lineNumber,t.column,n.lineNumber,n.column)}static lift(t){return t?new eh(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null}static isIRange(t){return!!t&&typeof t.startLineNumber=="number"&&typeof t.startColumn=="number"&&typeof t.endLineNumber=="number"&&typeof t.endColumn=="number"}static areIntersectingOrTouching(t,n){return!(t.endLineNumbert.startLineNumber}toJSON(){return this}},Qn=class e4 extends Ee{constructor(t,n,r,o){super(t,n,r,o),this.selectionStartLineNumber=t,this.selectionStartColumn=n,this.positionLineNumber=r,this.positionColumn=o}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(t){return e4.selectionsEqual(this,t)}static selectionsEqual(t,n){return t.selectionStartLineNumber===n.selectionStartLineNumber&&t.selectionStartColumn===n.selectionStartColumn&&t.positionLineNumber===n.positionLineNumber&&t.positionColumn===n.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(t,n){return this.getDirection()===0?new e4(this.startLineNumber,this.startColumn,t,n):new e4(t,n,this.startLineNumber,this.startColumn)}getPosition(){return new it(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new it(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(t,n){return this.getDirection()===0?new e4(t,n,this.endLineNumber,this.endColumn):new e4(this.endLineNumber,this.endColumn,t,n)}static fromPositions(t,n=t){return new e4(t.lineNumber,t.column,n.lineNumber,n.column)}static fromRange(t,n){return n===0?new e4(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):new e4(t.endLineNumber,t.endColumn,t.startLineNumber,t.startColumn)}static liftSelection(t){return new e4(t.selectionStartLineNumber,t.selectionStartColumn,t.positionLineNumber,t.positionColumn)}static selectionsArrEqual(t,n){if(t&&!n||!t&&n)return!1;if(!t&&!n)return!0;if(t.length!==n.length)return!1;for(let r=0,o=t.length;r0&&e.getLanguageId(a-1)===o;)a--;return new Hno(e,o,a,s+1,e.getStartOffset(a),e.getEndOffset(s))}class Hno{constructor(t,n,r,o,s,a){this._scopedLineTokensBrand=void 0,this._actual=t,this.languageId=n,this._firstTokenIndex=r,this._lastTokenIndex=o,this.firstCharOffset=s,this._lastCharOffset=a,this.languageIdCodec=t.languageIdCodec}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getLineLength(){return this._lastCharOffset-this.firstCharOffset}getActualLineContentBefore(t){return this._actual.getLineContent().substring(0,this.firstCharOffset+t)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(t){return this._actual.findTokenIndexAtOffset(t+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(t){return this._actual.getStandardTokenType(t+this._firstTokenIndex)}toIViewLineTokens(){return this._actual.sliceAndInflate(this.firstCharOffset,this._lastCharOffset,0)}}function Tw(e){return(e&3)!==0}class Ll{static _nextVisibleColumn(t,n,r){return t===9?Ll.nextRenderTabStop(n,r):I8(t)||PJe(t)?n+2:n+1}static visibleColumnFromColumn(t,n,r){const o=Math.min(n-1,t.length),s=t.substring(0,o),a=new vme(s);let l=0;for(;!a.eol();){const d=kme(s,o,a.offset);a.nextGraphemeLength(),l=this._nextVisibleColumn(d,l,r)}return l}static columnFromVisibleColumn(t,n,r){if(n<=0)return 1;const o=t.length,s=new vme(t);let a=0,l=1;for(;!s.eol();){const d=kme(t,o,s.offset);s.nextGraphemeLength();const u=this._nextVisibleColumn(d,a,r),h=s.offset+1;if(u>=n){const g=n-a;return u-n!0,Yno=()=>!1,Zno=e=>e===" "||e===" ";class pP{static shouldRecreate(t){return t.hasChanged(165)||t.hasChanged(148)||t.hasChanged(45)||t.hasChanged(85)||t.hasChanged(88)||t.hasChanged(89)||t.hasChanged(10)||t.hasChanged(11)||t.hasChanged(15)||t.hasChanged(13)||t.hasChanged(14)||t.hasChanged(20)||t.hasChanged(145)||t.hasChanged(141)||t.hasChanged(59)||t.hasChanged(104)||t.hasChanged(147)||t.hasChanged(93)}constructor(t,n,r,o){this.languageConfigurationService=o,this._cursorMoveConfigurationBrand=void 0,this._languageId=t;const s=r.options,a=s.get(165),l=s.get(59);this.readOnly=s.get(104),this.tabSize=n.tabSize,this.indentSize=n.indentSize,this.insertSpaces=n.insertSpaces,this.stickyTabStops=s.get(132),this.lineHeight=l.lineHeight,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(a.height/this.lineHeight)-2),this.useTabStops=s.get(145),this.trimWhitespaceOnDelete=s.get(141),this.wordSeparators=s.get(148),this.emptySelectionClipboard=s.get(45),this.copyWithSyntaxHighlighting=s.get(31),this.multiCursorMergeOverlapping=s.get(85),this.multiCursorPaste=s.get(88),this.multiCursorLimit=s.get(89),this.autoClosingBrackets=s.get(10),this.autoClosingComments=s.get(11),this.autoClosingQuotes=s.get(15),this.autoClosingDelete=s.get(13),this.autoClosingOvertype=s.get(14),this.autoSurround=s.get(20),this.autoIndent=s.get(16),this.wordSegmenterLocales=s.get(147),this.overtypeOnPaste=s.get(93),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(t,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(t,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(t,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(t).getAutoClosingPairs();const d=this.languageConfigurationService.getLanguageConfiguration(t).getSurroundingPairs();if(d)for(const h of d)this.surroundingPairs[h.open]=h.close;const u=this.languageConfigurationService.getLanguageConfiguration(t).comments;this.blockCommentStartToken=(u==null?void 0:u.blockCommentStartToken)??null}get electricChars(){var t;if(!this._electricChars){this._electricChars={};const n=(t=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)==null?void 0:t.getElectricCharacters();if(n)for(const r of n)this._electricChars[r]=!0}return this._electricChars}get inputMode(){return bNe.getInputMode()}onElectricCharacter(t,n,r){const o=lQ(n,r-1),s=this.languageConfigurationService.getLanguageConfiguration(o.languageId).electricCharacter;return s?s.onElectricCharacter(t,o,r-o.firstCharOffset):null}normalizeIndentation(t){return tet(t,this.indentSize,this.insertSpaces)}_getShouldAutoClose(t,n,r){switch(n){case"beforeWhitespace":return Zno;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(t,r);case"always":return Gno;case"never":return Yno}}_getLanguageDefinedShouldAutoClose(t,n){const r=this.languageConfigurationService.getLanguageConfiguration(t).getAutoCloseBeforeSet(n);return o=>r.indexOf(o)!==-1}visibleColumnFromColumn(t,n){return Ll.visibleColumnFromColumn(t.getLineContent(n.lineNumber),n.column,this.tabSize)}columnFromVisibleColumn(t,n,r){const o=Ll.columnFromVisibleColumn(t.getLineContent(n),r,this.tabSize),s=t.getLineMinColumn(n);if(oa?a:o}}let So=class zEn{static fromModelState(t){return new qno(t)}static fromViewState(t){return new Kno(t)}static fromModelSelection(t){const n=Qn.liftSelection(t),r=new rh(Ee.fromPositions(n.getSelectionStart()),0,0,n.getPosition(),0);return zEn.fromModelState(r)}static fromModelSelections(t){const n=[];for(let r=0,o=t.length;rs,u=o>a,h=oa||po||A0&&o--,OT.columnSelect(t,n,r.fromViewLineNumber,r.fromViewVisualColumn,r.toViewLineNumber,o)}static columnSelectRight(t,n,r){let o=0;const s=Math.min(r.fromViewLineNumber,r.toViewLineNumber),a=Math.max(r.fromViewLineNumber,r.toViewLineNumber);for(let d=s;d<=a;d++){const u=n.getLineMaxColumn(d),h=t.visibleColumnFromColumn(n,new it(d,u));o=Math.max(o,h)}let l=r.toViewVisualColumn;return ls&&(l=new it(s,t.getLineMaxColumn(s)));const d=Ee.fromPositions(r,l);n.addTrackedEditOperation(d,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition())}}class Jno{constructor(t,n){this._range=t,this._text=n}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromRange(o,0)}}class Kue{constructor(t,n,r=!1){this._range=t,this._text=n,this.insertsAutoWhitespace=r}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getStartPosition())}}class Qme{constructor(t,n,r,o,s=!1){this._range=t,this._text=n,this._columnDeltaOffset=o,this._lineNumberDeltaOffset=r,this.insertsAutoWhitespace=s}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text)}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class eio{constructor(t){this._range=t}getEditOperations(t,n){const r=t.getValueInRange(this._range),o=this._range.getEndPosition(),s=o.lineNumber;let a=HEn(t,o,r.length);a.lineNumber>s&&(a=new it(s,t.getLineMaxColumn(s)));const l=Ee.fromPositions(o,a);n.addTrackedEditOperation(l,"")}computeCursorState(t,n){const o=n.getInverseEditOperations()[0].range;return Qn.fromPositions(o.getEndPosition())}}class net{constructor(t,n,r,o=!1){this._range=t,this._text=n,this._initialSelection=r,this._forceMoveMarkers=o,this._selectionId=null}getEditOperations(t,n){n.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=n.trackSelection(this._initialSelection)}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}function HEn(e,t,n){if(n<0)throw new Error("Unexpected negative delta");const r=e.getLineCount();let o=new it(r,e.getLineMaxColumn(r));for(let s=t.lineNumber;s<=r;s++)if(s===t.lineNumber){const a=n-e.getLineMaxColumn(t.lineNumber)+t.column;if(a<=0){o=new it(t.lineNumber,t.column+n);break}n=a}else{const a=n-e.getLineMaxColumn(s);if(a<=0){o=new it(s,n);break}n=a}return o}class ZK{static whitespaceVisibleColumn(t,n,r){const o=t.length;let s=0,a=-1,l=-1;for(let d=0;dt.getLineMinColumn(n.lineNumber))return n.delta(void 0,-$6n(t.getLineContent(n.lineNumber),n.column-1));if(n.lineNumber>1){const r=n.lineNumber-1;return new it(r,t.getLineMaxColumn(r))}else return n}static leftPositionAtomicSoftTabs(t,n,r){if(n.column<=t.getLineIndentColumn(n.lineNumber)){const o=t.getLineMinColumn(n.lineNumber),s=t.getLineContent(n.lineNumber),a=ZK.atomicPosition(s,n.column-1,r,0);if(a!==-1&&a+1>=o)return new it(n.lineNumber,a+1)}return this.leftPosition(t,n)}static left(t,n,r){const o=t.stickyTabStops?ss.leftPositionAtomicSoftTabs(n,r,t.tabSize):ss.leftPosition(n,r);return new iLe(o.lineNumber,o.column,0)}static moveLeft(t,n,r,o,s){let a,l;if(r.hasSelection()&&!o)a=r.selection.startLineNumber,l=r.selection.startColumn;else{const d=r.position.delta(void 0,-(s-1)),u=n.normalizePosition(ss.clipPositionColumn(d,n),0),h=ss.left(t,n,u);a=h.lineNumber,l=h.column}return r.move(o,a,l,0)}static clipPositionColumn(t,n){return new it(t.lineNumber,ss.clipRange(t.column,n.getLineMinColumn(t.lineNumber),n.getLineMaxColumn(t.lineNumber)))}static clipRange(t,n,r){return tr?r:t}static rightPosition(t,n,r){return rh?(r=h,l?o=n.getLineMaxColumn(r):o=Math.min(n.getLineMaxColumn(r),o)):o=t.columnFromVisibleColumn(n,r,u),v?s=0:s=u-Ll.visibleColumnFromColumn(n.getLineContent(r),o,t.tabSize),d!==void 0){const f=new it(r,o),k=n.normalizePosition(f,d);s=s+(o-k.column),r=k.lineNumber,o=k.column}return new iLe(r,o,s)}static down(t,n,r,o,s,a,l){return this.vertical(t,n,r,o,s,r+a,l,4)}static moveDown(t,n,r,o,s){let a,l;r.hasSelection()&&!o?(a=r.selection.endLineNumber,l=r.selection.endColumn):(a=r.position.lineNumber,l=r.position.column);let d=0,u;do if(u=ss.down(t,n,a+d,l,r.leftoverVisibleColumns,s,!0),n.normalizePosition(new it(u.lineNumber,u.column),2).lineNumber>a)break;while(d++<10&&a+d1&&this._isBlankLine(n,s);)s--;for(;s>1&&!this._isBlankLine(n,s);)s--;return r.move(o,s,n.getLineMinColumn(s),0)}static moveToNextBlankLine(t,n,r,o){const s=n.getLineCount();let a=r.position.lineNumber;for(;a0,l=n.getLineFirstNonWhitespaceColumn(s.lineNumber);if(a&&l>0)return new Ee(s.lineNumber,l,o.lineNumber,o.column)}return new Ee(s.lineNumber,s.column,o.lineNumber,o.column)}static isAutoClosingPairDelete(t,n,r,o,s,a,l){if(n==="never"&&r==="never"||t==="never")return!1;for(let d=0,u=a.length;d=m.length+1)return!1;const v=m.charAt(g.column-2),f=o.get(v);if(!f)return!1;if(S6(v)){if(r==="never")return!1}else if(n==="never")return!1;const k=m.charAt(g.column-1);let A=!1;for(const p of f)p.open===v&&p.close===k&&(A=!0);if(!A)return!1;if(t==="auto"){let p=!1;for(let b=0,w=l.length;b1){const s=n.getLineContent(o.lineNumber),a=Og(s),l=a===-1?s.length+1:a+1;if(o.column<=l){const d=r.visibleColumnFromColumn(n,o),u=Ll.prevIndentTabStop(d,r.indentSize),h=r.columnFromVisibleColumn(n,o.lineNumber,u);return new Ee(o.lineNumber,h,o.lineNumber,o.column)}}return Ee.fromPositions(aR.getPositionAfterDeleteLeft(o,n),o)}static getPositionAfterDeleteLeft(t,n){if(t.column>1){const r=Seo(t.column-1,n.getLineContent(t.lineNumber));return t.with(void 0,r+1)}else if(t.lineNumber>1){const r=t.lineNumber-1;return new it(r,n.getLineMaxColumn(r))}else return t}static cut(t,n,r){const o=[];let s=null;r.sort((a,l)=>it.compare(a.getStartPosition(),l.getEndPosition()));for(let a=0,l=r.length;a1&&(s==null?void 0:s.endLineNumber)!==u.lineNumber?(h=u.lineNumber-1,g=n.getLineMaxColumn(u.lineNumber-1),m=u.lineNumber,v=n.getLineMaxColumn(u.lineNumber)):(h=u.lineNumber,g=1,m=u.lineNumber,v=n.getLineMaxColumn(u.lineNumber));const f=new Ee(h,g,m,v);s=f,f.isEmpty()?o[a]=null:o[a]=new Hh(f,"")}else o[a]=null;else o[a]=new Hh(d,"")}return new fm(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}const yI={DateTimeFormat(e,t){return new zh(()=>{try{return new Intl.DateTimeFormat(e,t)}catch{return new Intl.DateTimeFormat(void 0,t)}})},Collator(e,t){return new zh(()=>{try{return new Intl.Collator(e,t)}catch{return new Intl.Collator(void 0,t)}})},Segmenter(e,t){return new zh(()=>{try{return new Intl.Segmenter(e,t)}catch{return new Intl.Segmenter(void 0,t)}})},Locale(e,t){return new zh(()=>{try{return new Intl.Locale(e,t)}catch{return new Intl.Locale(iQ,t)}})},NumberFormat(e,t){return new zh(()=>{try{return new Intl.NumberFormat(e,t)}catch{return new Intl.NumberFormat(void 0,t)}})}};function Dme(e){return e<0?0:e>255?255:e|0}function bP(e){return e<0?0:e>4294967295?4294967295:e|0}class Gz{constructor(t){const n=Dme(t);this._defaultValue=n,this._asciiMap=Gz._createAsciiMap(n),this._map=new Map}static _createAsciiMap(t){const n=new Uint8Array(256);return n.fill(t),n}set(t,n){const r=Dme(n);t>=0&&t<256?this._asciiMap[t]=r:this._map.set(t,r)}get(t){return t>=0&&t<256?this._asciiMap[t]:this._map.get(t)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class Bme{constructor(){this._actual=new Gz(0)}add(t){this._actual.set(t,1)}has(t){return this._actual.get(t)===1}clear(){return this._actual.clear()}}class tio extends Gz{constructor(t,n){super(0),this._segmenter=null,this._cachedLine=null,this._cachedSegments=[],this.intlSegmenterLocales=n,this.intlSegmenterLocales.length>0?this._segmenter=yI.Segmenter(this.intlSegmenterLocales,{granularity:"word"}):this._segmenter=null;for(let r=0,o=t.length;rn)break;r=o}return r}findNextIntlWordAtOrAfterOffset(t,n){for(const r of this._getIntlSegmenterWordsOnLine(t))if(!(r.index=0;a--){const l=t.charCodeAt(a),d=n.get(l);if(s&&a===s.index)return this._createIntlWord(s,d);if(d===0){if(o===2)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1));o=1}else if(d===2){if(o===1)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1));o=2}else if(d===1&&o!==0)return this._createWord(t,o,d,a+1,this._findEndOfWord(t,n,o,a+1))}return o!==0?this._createWord(t,o,1,0,this._findEndOfWord(t,n,o,0)):null}static _findEndOfWord(t,n,r,o){const s=n.findNextIntlWordAtOrAfterOffset(t,o),a=t.length;for(let l=o;l=0;a--){const l=t.charCodeAt(a),d=n.get(l);if(s&&a===s.index)return a;if(d===1||r===1&&d===2||r===2&&d===0)return a+1}return 0}static moveWordLeft(t,n,r,o,s){let a=r.lineNumber,l=r.column;l===1&&a>1&&(a=a-1,l=n.getLineMaxColumn(a));let d=as._findPreviousWordOnLine(t,n,new it(a,l));if(o===0)return new it(a,d?d.start+1:1);if(o===1)return!s&&d&&d.wordType===2&&d.end-d.start===1&&d.nextCharClass===0&&(d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1))),new it(a,d?d.start+1:1);if(o===3){for(;d&&d.wordType===2;)d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1));return new it(a,d?d.start+1:1)}return d&&l<=d.end+1&&(d=as._findPreviousWordOnLine(t,n,new it(a,d.start+1))),new it(a,d?d.end+1:1)}static _moveWordPartLeft(t,n){const r=n.lineNumber,o=t.getLineMaxColumn(r);if(n.column===1)return r>1?new it(r-1,t.getLineMaxColumn(r-1)):n;const s=t.getLineContent(r);for(let a=n.column-1;a>1;a--){const l=s.charCodeAt(a-2),d=s.charCodeAt(a-1);if(l===95&&d!==95)return new it(r,a);if(l===45&&d!==45)return new it(r,a);if((l9(l)||ale(l))&&dO(d))return new it(r,a);if(dO(l)&&dO(d)&&a+1=d.start+1&&(d=as._findNextWordOnLine(t,n,new it(s,d.end+1))),d?a=d.start+1:a=n.getLineMaxColumn(s);return new it(s,a)}static _moveWordPartRight(t,n){const r=n.lineNumber,o=t.getLineMaxColumn(r);if(n.column===o)return r1?u=1:(d--,u=o.getLineMaxColumn(d)):(h&&u<=h.end+1&&(h=as._findPreviousWordOnLine(r,o,new it(d,h.start+1))),h?u=h.end+1:u>1?u=1:(d--,u=o.getLineMaxColumn(d))),new Ee(d,u,l.lineNumber,l.column)}static deleteInsideWord(t,n,r){if(!r.isEmpty())return r;const o=new it(r.positionLineNumber,r.positionColumn),s=this._deleteInsideWordWhitespace(n,o);return s||this._deleteInsideWordDetermineDeleteRange(t,n,o)}static _charAtIsWhitespace(t,n){const r=t.charCodeAt(n);return r===32||r===9}static _deleteInsideWordWhitespace(t,n){const r=t.getLineContent(n.lineNumber),o=r.length;if(o===0)return null;let s=Math.max(n.column-2,0);if(!this._charAtIsWhitespace(r,s))return null;let a=Math.min(n.column-1,o-1);if(!this._charAtIsWhitespace(r,a))return null;for(;s>0&&this._charAtIsWhitespace(r,s-1);)s--;for(;a+11?new Ee(r.lineNumber-1,n.getLineMaxColumn(r.lineNumber-1),r.lineNumber,1):r.lineNumberg.start+1<=r.column&&r.column<=g.end+1,l=(g,m)=>(g=Math.min(g,r.column),m=Math.max(m,r.column),new Ee(r.lineNumber,g,r.lineNumber,m)),d=g=>{let m=g.start+1,v=g.end+1,f=!1;for(;v-11&&this._charAtIsWhitespace(o,m-2);)m--;return l(m,v)},u=as._findPreviousWordOnLine(t,n,r);if(u&&a(u))return d(u);const h=as._findNextWordOnLine(t,n,r);return h&&a(h)?d(h):u&&h?l(u.end+1,h.start+1):u?l(u.start+1,u.end+1):h?l(h.start+1,h.end+1):l(1,s+1)}static _deleteWordPartLeft(t,n){if(!n.isEmpty())return n;const r=n.getPosition(),o=as._moveWordPartLeft(t,r);return new Ee(r.lineNumber,r.column,o.lineNumber,o.column)}static _findFirstNonWhitespaceChar(t,n){const r=t.length;for(let o=n;o=m.start+1&&(m=as._findNextWordOnLine(r,o,new it(d,m.end+1))),m?u=m.start+1:u!!t)}function uO(e){if(!e||typeof e!="object"||e instanceof RegExp)return e;const t=Array.isArray(e)?[]:{};return Object.entries(e).forEach(([n,r])=>{t[n]=r&&typeof r=="object"?uO(r):r}),t}function nio(e){if(!e||typeof e!="object")return e;const t=[e];for(;t.length>0;){const n=t.shift();Object.freeze(n);for(const r in n)if($En.call(n,r)){const o=n[r];typeof o=="object"&&!Object.isFrozen(o)&&!yJr(o)&&t.push(o)}}return e}const $En=Object.prototype.hasOwnProperty;function XEn(e,t){return ONe(e,t,new Set)}function ONe(e,t,n){if(Qv(e))return e;const r=t(e);if(typeof r<"u")return r;if(Array.isArray(e)){const o=[];for(const s of e)o.push(ONe(s,t,n));return o}if(Pd(e)){if(n.has(e))throw new Error("Cannot clone recursive data-structure");n.add(e);const o={};for(const s in e)$En.call(e,s)&&(o[s]=ONe(e[s],t,n));return n.delete(e),o}return e}function Pbe(e,t,n=!0){return Pd(e)?(Pd(t)&&Object.keys(t).forEach(r=>{r in e?n&&(Pd(e[r])&&Pd(t[r])?Pbe(e[r],t[r],n):e[r]=t[r]):e[r]=t[r]}),e):t}function Q0(e,t){if(e===t)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;let n,r;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;nu&&(h=u,g=t.model.getLineMaxColumn(h)),So.fromModelState(new rh(new Ee(a.lineNumber,1,h,g),2,0,new it(h,g),0))}const d=n.modelState.selectionStart.getStartPosition().lineNumber;if(a.lineNumberd){const u=t.getLineCount();let h=l.lineNumber+1,g=1;return h>u&&(h=u,g=t.getLineMaxColumn(h)),So.fromViewState(n.viewState.move(!0,h,g,0))}else{const u=n.modelState.selectionStart.getEndPosition();return So.fromModelState(n.modelState.move(!0,u.lineNumber,u.column,0))}}static word(t,n,r,o){const s=t.model.validatePosition(o);return So.fromModelState(as.word(t.cursorConfig,t.model,n.modelState,r,s))}static cancelSelection(t,n){if(!n.modelState.hasSelection())return new So(n.modelState,n.viewState);const r=n.viewState.position.lineNumber,o=n.viewState.position.column;return So.fromViewState(new rh(new Ee(r,o,r,o),0,0,new it(r,o),0))}static moveTo(t,n,r,o,s){if(r){if(n.modelState.selectionStartKind===1)return this.word(t,n,r,o);if(n.modelState.selectionStartKind===2)return this.line(t,n,r,o,s)}const a=t.model.validatePosition(o),l=s?t.coordinatesConverter.validateViewPosition(new it(s.lineNumber,s.column),a):t.coordinatesConverter.convertModelPositionToViewPosition(a);return So.fromViewState(n.viewState.move(r,l.lineNumber,l.column,0))}static simpleMove(t,n,r,o,s,a){switch(r){case 0:return a===4?this._moveHalfLineLeft(t,n,o):this._moveLeft(t,n,o,s);case 1:return a===4?this._moveHalfLineRight(t,n,o):this._moveRight(t,n,o,s);case 2:return a===2?this._moveUpByViewLines(t,n,o,s):this._moveUpByModelLines(t,n,o,s);case 3:return a===2?this._moveDownByViewLines(t,n,o,s):this._moveDownByModelLines(t,n,o,s);case 4:return a===2?n.map(l=>So.fromViewState(ss.moveToPrevBlankLine(t.cursorConfig,t,l.viewState,o))):n.map(l=>So.fromModelState(ss.moveToPrevBlankLine(t.cursorConfig,t.model,l.modelState,o)));case 5:return a===2?n.map(l=>So.fromViewState(ss.moveToNextBlankLine(t.cursorConfig,t,l.viewState,o))):n.map(l=>So.fromModelState(ss.moveToNextBlankLine(t.cursorConfig,t.model,l.modelState,o)));case 6:return this._moveToViewMinColumn(t,n,o);case 7:return this._moveToViewFirstNonWhitespaceColumn(t,n,o);case 8:return this._moveToViewCenterColumn(t,n,o);case 9:return this._moveToViewMaxColumn(t,n,o);case 10:return this._moveToViewLastNonWhitespaceColumn(t,n,o);default:return null}}static viewportMove(t,n,r,o,s){const a=t.getCompletelyVisibleViewRange(),l=t.coordinatesConverter.convertViewRangeToModelRange(a);switch(r){case 11:{const d=this._firstLineNumberInRange(t.model,l,s),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 13:{const d=this._lastLineNumberInRange(t.model,l,s),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 12:{const d=Math.round((l.startLineNumber+l.endLineNumber)/2),u=t.model.getLineFirstNonWhitespaceColumn(d);return[this._moveToModelPosition(t,n[0],o,d,u)]}case 14:{const d=[];for(let u=0,h=n.length;ur.endLineNumber-1?a=r.endLineNumber-1:s{const l=t.getTextDirection(s.viewState.position.lineNumber)===Xk.RTL;return So.fromViewState(l?ss.moveRight(t.cursorConfig,t,s.viewState,r,o):ss.moveLeft(t.cursorConfig,t,s.viewState,r,o))})}static _moveHalfLineLeft(t,n,r){const o=[];for(let s=0,a=n.length;s{const l=t.getTextDirection(s.viewState.position.lineNumber)===Xk.RTL;return So.fromViewState(l?ss.moveLeft(t.cursorConfig,t,s.viewState,r,o):ss.moveRight(t.cursorConfig,t,s.viewState,r,o))})}static _moveHalfLineRight(t,n,r){const o=[];for(let s=0,a=n.length;so!=null),new Promise((o,s)=>{let a=!0,l=!1;const d=e.map(h=>({isFinished:t(h),error:n?n(h):!1,state:h})),u=Oi(h=>{const{isFinished:g,error:m,state:v}=d.read(h);(g||m)&&(a?l=!0:u.dispose(),m?s(m===!0?v:m):o(v))});if(r){const h=r.onCancellationRequested(()=>{u.dispose(),h.dispose(),s(new lA)});if(r.isCancellationRequested){u.dispose(),h.dispose(),s(new lA);return}}a=!1,l&&u.dispose()})}function A0(e,t,n=Hd.ofCaller()){return new z0o(typeof e=="string"?e:new tf(e,void 0,void 0),t,n)}class z0o extends Vz{constructor(t,n,r){super(r),this.event=n,this.handleEvent=()=>{la(o=>{for(const s of this._observers)o.updateObserver(s,this),s.handleChange(this,void 0)},()=>this.debugName)},this.debugName=typeof t=="string"?t:t.getDebugName(this)??"Observable Signal From Event"}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}var H0o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},$0o=function(e,t){return function(n,r){t(n,r,e)}};let oje=class extends ft{setActiveMovedText(t){this._activeMovedText.set(t,void 0)}constructor(t,n,r){super(),this.model=t,this._options=n,this._diffProviderFactoryService=r,this._isDiffUpToDate=Ti(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=Ti(this,void 0),this.diff=this._diff,this._unchangedRegions=Ti(this,void 0),this.unchangedRegions=Rt(this,l=>{var d;return this._options.hideUnchangedRegions.read(l)?((d=this._unchangedRegions.read(l))==null?void 0:d.regions)??[]:(la(u=>{var h;for(const g of((h=this._unchangedRegions.read(void 0))==null?void 0:h.regions)||[])g.collapseAll(u)}),[])}),this.movedTextToCompare=Ti(this,void 0),this._activeMovedText=Ti(this,void 0),this._hoveredMovedText=Ti(this,void 0),this.activeMovedText=Rt(this,l=>this.movedTextToCompare.read(l)??this._hoveredMovedText.read(l)??this._activeMovedText.read(l)),this._cancellationTokenSource=new ja,this._diffProvider=Rt(this,l=>{const d=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(l)}),u=A0("onDidChange",d.onDidChange);return{diffProvider:d,onChangeSignal:u}}),this._register(Hn(()=>this._cancellationTokenSource.cancel()));const o=Mv("contentChangedSignal"),s=this._register(new Es(()=>o.trigger(void 0),200));this._register(Oi(l=>{const d=this._unchangedRegions.read(l);if(!d||d.regions.some(f=>f.isDragged.read(l)))return;const u=d.originalDecorationIds.map(f=>t.original.getDecorationRange(f)).map(f=>f?Ei.fromRangeInclusive(f):void 0),h=d.modifiedDecorationIds.map(f=>t.modified.getDecorationRange(f)).map(f=>f?Ei.fromRangeInclusive(f):void 0),g=d.regions.map((f,k)=>!u[k]||!h[k]?void 0:new A9(u[k].startLineNumber,h[k].startLineNumber,u[k].length,f.visibleLineCountTop.read(l),f.visibleLineCountBottom.read(l))).filter(Ru),m=[];let v=!1;for(const f of jJe(g,(k,A)=>k.getHiddenModifiedRange(l).endLineNumberExclusive===A.getHiddenModifiedRange(l).startLineNumber))if(f.length>1){v=!0;const k=f.reduce((p,b)=>p+b.lineCount,0),A=new A9(f[0].originalLineNumber,f[0].modifiedLineNumber,k,f[0].visibleLineCountTop.read(void 0),f[f.length-1].visibleLineCountBottom.read(void 0));m.push(A)}else m.push(f[0]);if(v){const f=t.original.deltaDecorations(d.originalDecorationIds,m.map(A=>({range:A.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),k=t.modified.deltaDecorations(d.modifiedDecorationIds,m.map(A=>({range:A.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));la(A=>{this._unchangedRegions.set({regions:m,originalDecorationIds:f,modifiedDecorationIds:k},A)})}}));const a=(l,d,u)=>{const h=A9.fromDiffs(l.changes,t.original.getLineCount(),t.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(u),this._options.hideUnchangedRegionsContextLineCount.read(u));let g;const m=this._unchangedRegions.get();if(m){const A=m.originalDecorationIds.map(O=>t.original.getDecorationRange(O)).map(O=>O?Ei.fromRangeInclusive(O):void 0),p=m.modifiedDecorationIds.map(O=>t.modified.getDecorationRange(O)).map(O=>O?Ei.fromRangeInclusive(O):void 0);let w=b0o(m.regions.map((O,y)=>{if(!A[y]||!p[y])return;const C=A[y].length;return new A9(A[y].startLineNumber,p[y].startLineNumber,C,Math.min(O.visibleLineCountTop.get(),C),Math.min(O.visibleLineCountBottom.get(),C-O.visibleLineCountTop.get()))}).filter(Ru),(O,y)=>!y||O.modifiedLineNumber>=y.modifiedLineNumber+y.lineCount&&O.originalLineNumber>=y.originalLineNumber+y.lineCount).map(O=>new Ag(O.getHiddenOriginalRange(u),O.getHiddenModifiedRange(u)));w=Ag.clip(w,Ei.ofLength(1,t.original.getLineCount()),Ei.ofLength(1,t.modified.getLineCount())),g=Ag.inverse(w,t.original.getLineCount(),t.modified.getLineCount())}const v=[];if(g)for(const A of h){const p=g.filter(b=>b.original.intersectsStrict(A.originalUnchangedRange)&&b.modified.intersectsStrict(A.modifiedUnchangedRange));v.push(...A.setVisibleRanges(p,d))}else v.push(...h);const f=t.original.deltaDecorations((m==null?void 0:m.originalDecorationIds)||[],v.map(A=>({range:A.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),k=t.modified.deltaDecorations((m==null?void 0:m.modifiedDecorationIds)||[],v.map(A=>({range:A.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));this._unchangedRegions.set({regions:v,originalDecorationIds:f,modifiedDecorationIds:k},d)};this._register(t.modified.onDidChangeContent(l=>{if(this._diff.get()){const u=BS.fromModelContentChanges(l.changes);this._lastDiff,t.original,t.modified}this._isDiffUpToDate.set(!1,void 0),s.schedule()})),this._register(t.original.onDidChangeContent(l=>{if(this._diff.get()){const u=BS.fromModelContentChanges(l.changes);this._lastDiff,t.original,t.modified}this._isDiffUpToDate.set(!1,void 0),s.schedule()})),this._register(Ef(async(l,d)=>{this._options.hideUnchangedRegionsMinimumLineCount.read(l),this._options.hideUnchangedRegionsContextLineCount.read(l),s.cancel(),o.read(l);const u=this._diffProvider.read(l);u.onChangeSignal.read(l),this._isDiffUpToDate.set(!1,void 0);let h=[];d.add(t.original.onDidChangeContent(v=>{const f=BS.fromModelContentChanges(v.changes);h=m1e(h,f)}));let g=[];d.add(t.modified.onDidChangeContent(v=>{const f=BS.fromModelContentChanges(v.changes);g=m1e(g,f)}));let m=await u.diffProvider.computeDiff(t.original,t.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(l),maxComputationTimeMs:this._options.maxComputationTimeMs.read(l),computeMoves:this._options.showMoves.read(l)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||t.original.isDisposed()||t.modified.isDisposed()||(m=X0o(m,t.original,t.modified),m=(t.original,t.modified,void 0)??m,m=(t.original,t.modified,void 0)??m,la(v=>{a(m,v),this._lastDiff=m;const f=Ltt.fromDiffResult(m);this._diff.set(f,v),this._isDiffUpToDate.set(!0,v);const k=this.movedTextToCompare.read(void 0);this.movedTextToCompare.set(k?this._lastDiff.moves.find(A=>A.lineRangeMapping.modified.intersect(k.lineRangeMapping.modified)):void 0,v)}))}))}ensureModifiedLineIsVisible(t,n,r){var s,a;if(((s=this.diff.get())==null?void 0:s.mappings.length)===0)return;const o=((a=this._unchangedRegions.get())==null?void 0:a.regions)||[];for(const l of o)if(l.getHiddenModifiedRange(void 0).contains(t)){l.showModifiedLine(t,n,r);return}}ensureOriginalLineIsVisible(t,n,r){var s,a;if(((s=this.diff.get())==null?void 0:s.mappings.length)===0)return;const o=((a=this._unchangedRegions.get())==null?void 0:a.regions)||[];for(const l of o)if(l.getHiddenOriginalRange(void 0).contains(t)){l.showOriginalLine(t,n,r);return}}async waitForDiff(){await dDn(this.isDiffUpToDate,t=>t)}serializeState(){const t=this._unchangedRegions.get();return{collapsedRegions:t==null?void 0:t.regions.map(n=>({range:n.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(t){var o;const n=(o=t.collapsedRegions)==null?void 0:o.map(s=>Ei.deserialize(s.range)),r=this._unchangedRegions.get();!r||!n||la(s=>{for(const a of r.regions)for(const l of n)if(a.modifiedUnchangedRange.intersect(l)){a.setHiddenModifiedRange(l,s);break}})}};oje=H0o([$0o(2,cDn)],oje);function X0o(e,t,n){return{changes:e.changes.map(r=>new s2(r.original,r.modified,r.innerChanges?r.innerChanges.map(o=>G0o(o,t,n)):void 0)),moves:e.moves,identical:e.identical,quitEarly:e.quitEarly}}function G0o(e,t,n){let r=e.originalRange,o=e.modifiedRange;return r.startColumn===1&&o.startColumn===1&&(r.endColumn!==1||o.endColumn!==1)&&r.endColumn===t.getLineMaxColumn(r.endLineNumber)&&o.endColumn===n.getLineMaxColumn(o.endLineNumber)&&r.endLineNumbernew uDn(n)),t.moves||[],t.identical,t.quitEarly)}constructor(t,n,r,o){this.mappings=t,this.movedTexts=n,this.identical=r,this.quitEarly=o}}class uDn{constructor(t){this.lineRangeMapping=t}}class A9{static fromDiffs(t,n,r,o,s){const a=s2.inverse(t,n,r),l=[];for(const d of a){let u=d.original.startLineNumber,h=d.modified.startLineNumber,g=d.original.length;const m=u===1&&h===1,v=u+g===n+1&&h+g===r+1;(m||v)&&g>=s+o?(m&&!v&&(g-=s),v&&!m&&(u+=s,h+=s,g-=s),l.push(new A9(u,h,g,0,0))):g>=s*2+o&&(u+=s,h+=s,g-=s*2,l.push(new A9(u,h,g,0,0)))}return l}get originalUnchangedRange(){return Ei.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return Ei.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(t,n,r,o,s){this.originalLineNumber=t,this.modifiedLineNumber=n,this.lineCount=r,this._visibleLineCountTop=Ti(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=Ti(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=Rt(this,d=>this.visibleLineCountTop.read(d)+this.visibleLineCountBottom.read(d)===this.lineCount&&!this.isDragged.read(d)),this.isDragged=Ti(this,void 0);const a=Math.max(Math.min(o,this.lineCount),0),l=Math.max(Math.min(s,this.lineCount-o),0);ebt(o===a),ebt(s===l),this._visibleLineCountTop.set(a,void 0),this._visibleLineCountBottom.set(l,void 0)}setVisibleRanges(t,n){const r=[],o=new Iv(t.map(d=>d.modified)).subtractFrom(this.modifiedUnchangedRange);let s=this.originalLineNumber,a=this.modifiedLineNumber;const l=this.modifiedLineNumber+this.lineCount;if(o.ranges.length===0)this.showAll(n),r.push(this);else{let d=0;for(const u of o.ranges){const h=d===o.ranges.length-1;d++;const g=(h?l:u.endLineNumberExclusive)-a,m=new A9(s,a,g,0,0);m.setHiddenModifiedRange(u,n),r.push(m),s=m.originalUnchangedRange.endLineNumberExclusive,a=m.modifiedUnchangedRange.endLineNumberExclusive}}return r}shouldHideControls(t){return this._shouldHideControls.read(t)}getHiddenOriginalRange(t){return Ei.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(t),this.lineCount-this._visibleLineCountTop.read(t)-this._visibleLineCountBottom.read(t))}getHiddenModifiedRange(t){return Ei.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(t),this.lineCount-this._visibleLineCountTop.read(t)-this._visibleLineCountBottom.read(t))}setHiddenModifiedRange(t,n){const r=t.startLineNumber-this.modifiedLineNumber,o=this.modifiedLineNumber+this.lineCount-t.endLineNumberExclusive;this.setState(r,o,n)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(t=10,n){const r=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+t,r),n)}showMoreBelow(t=10,n){const r=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+t,r),n)}showAll(t){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),t)}showModifiedLine(t,n,r){const o=t+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),s=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-t;n===0&&o{l.preventDefault();const d=t.ownerDocument.getSelection();if(!d||d.rangeCount===0)return;const u=d.getRangeAt(0);if(!u||u.collapsed)return;const h=u.startContainer.nodeType===Node.TEXT_NODE?u.startContainer.parentElement:u.startContainer,g=u.endContainer.nodeType===Node.TEXT_NODE?u.endContainer.parentElement:u.endContainer;if(!h||!g)return;const m=n.getModelPositionAt(h,u.startOffset),v=n.getModelPositionAt(g,u.endOffset);if(!m||!v)return;const f=m.delta(r.original.startLineNumber-1),k=v.delta(r.original.startLineNumber-1),A=k.isBefore(f)?Ee.fromPositions(k,f):Ee.fromPositions(f,k),p=o.getValueInRange(A);s.writeText(p)})),a}class Z0o extends ft{get visibility(){return this._visibility}set visibility(t){this._visibility!==t&&(this._visibility=t,this._diffActions.style.visibility=t?"visible":"hidden")}constructor(t,n,r,o,s,a,l,d,u,h){super(),this._getViewZoneId=t,this._marginDomNode=n,this._deletedCodeDomNode=r,this._modifiedEditor=o,this._diff=s,this._editor=a,this._renderLinesResult=l,this._originalTextModel=d,this._contextMenuService=u,this._clipboardService=h,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=fi.asClassName(zt.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const g=this._modifiedEditor.getOption(75);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${g}px`,this._diffActions.style.lineHeight=`${g}px`,this._marginDomNode.appendChild(this._diffActions);let m=0;const v=o.getOption(144)&&!cA,f=(k,A,p)=>{this._contextMenuService.showContextMenu({domForShadowRoot:v?o.getDomNode()??void 0:void 0,getAnchor:()=>k,onHide:p,getActions:()=>{const b=[],w=s.modified.isEmpty;return b.push(new n2("diff.clipboard.copyDeletedContent",w?s.original.length>1?U(112,"Copy deleted lines"):U(113,"Copy deleted line"):s.original.length>1?U(114,"Copy changed lines"):U(115,"Copy changed line"),void 0,!0,async()=>{const y=this._originalTextModel.getValueInRange(s.original.toExclusiveRange());await this._clipboardService.writeText(y)})),s.original.length>1&&b.push(new n2("diff.clipboard.copyDeletedLineContent",w?U(116,"Copy deleted line ({0})",s.original.startLineNumber+m):U(117,"Copy changed line ({0})",s.original.startLineNumber+m),void 0,!0,async()=>{let y=this._originalTextModel.getLineContent(s.original.startLineNumber+m);y===""&&(y=this._originalTextModel.getEndOfLineSequence()===0?` `:`\r `),await this._clipboardService.writeText(y)})),o.getOption(104)||b.push(new n2("diff.inline.revertChange",U(118,"Revert this change"),void 0,!0,async()=>{this._editor.revert(this._diff)})),b},autoSelectFirstItem:!0})};this._register(wc(this._diffActions,"mousedown",k=>{if(!k.leftButton)return;const{top:A,height:p}=Kl(this._diffActions),b=Math.floor(g/3);k.preventDefault(),f({x:k.posx,y:A+p+b})})),this._register(o.onMouseMove(k=>{(k.target.type===8||k.target.type===5)&&k.target.detail.viewZoneId===this._getViewZoneId()?(m=this._updateLightBulbPosition(this._marginDomNode,k.event.browserEvent.y,g),this.visibility=!0):this.visibility=!1})),this._register(Y0o({domNode:this._deletedCodeDomNode,diffEntry:s,originalModel:this._originalTextModel,renderLinesResult:this._renderLinesResult,clipboardService:h}))}_updateLightBulbPosition(t,n,r){const{top:o}=Kl(t),s=n-o,a=Math.floor(s/r),l=a*r;if(this._diffActions.style.top=`${l}px`,this._renderLinesResult.viewLineCounts){let d=0;for(let u=0;ue});function $ie(e,t,n,r,o=!1){Fu(r,t.fontInfo);const s=n.length>0,a=new sE(1e4);let l=0,d=0;const u=[],h=[];for(let f=0;fnull),r=!0,o=!0){this.lineTokens=t,this.lineBreakData=n,this.mightContainNonBasicASCII=r,this.mightContainRTL=o}}class o8{static fromEditor(t){var s;const n=t.getOptions(),r=n.get(59),o=n.get(165);return new o8(((s=t.getModel())==null?void 0:s.getOptions().tabSize)||0,r,n.get(40),r.typicalHalfwidthCharacterWidth,n.get(118),n.get(75),o.decorationsWidth,n.get(133),n.get(113),n.get(108),n.get(60),n.get(117).verticalScrollbarSize)}constructor(t,n,r,o,s,a,l,d,u,h,g,m,v=!0){this.tabSize=t,this.fontInfo=n,this.disableMonospaceOptimizations=r,this.typicalHalfwidthCharacterWidth=o,this.scrollBeyondLastColumn=s,this.lineHeight=a,this.lineDecorationsWidth=l,this.stopRenderingLineAfter=d,this.renderWhitespace=u,this.renderControlCharacters=h,this.fontLigatures=g,this.verticalScrollbarSize=m,this.setWidth=v}withSetWidth(t){return new o8(this.tabSize,this.fontInfo,this.disableMonospaceOptimizations,this.typicalHalfwidthCharacterWidth,this.scrollBeyondLastColumn,this.lineHeight,this.lineDecorationsWidth,this.stopRenderingLineAfter,this.renderWhitespace,this.renderControlCharacters,this.fontLigatures,this.verticalScrollbarSize,t)}withScrollBeyondLastColumn(t){return new o8(this.tabSize,this.fontInfo,this.disableMonospaceOptimizations,this.typicalHalfwidthCharacterWidth,t,this.lineHeight,this.lineDecorationsWidth,this.stopRenderingLineAfter,this.renderWhitespace,this.renderControlCharacters,this.fontLigatures,this.verticalScrollbarSize,this.setWidth)}}class q0o{constructor(t,n,r,o,s){this.heightInLines=t,this.minWidthInPx=n,this.viewLineCounts=r,this._renderOutputs=o,this._source=s}getModelPositionAt(t,n){let r=t;for(;r&&!r.classList.contains("view-line");)r=r.parentElement;if(!r)return;const o=r.parentElement;if(!o)return;const s=o.querySelectorAll(".view-line");let a=-1;for(let g=0;g=this._renderOutputs.length)return;let l=1,d=a;for(let g=0;gthis._source.lineTokens.length)return;const u=this._renderOutputs[a];if(!u)return;const h=rV(u.characterMapping,t,n)+u.offset;return new it(l,h)}}class yOt extends qme{constructor(t,n,r){super(t,n),this.offset=r}}function COt(e,t,n,r,o,s,a,l,d){l.appendString('
'):l.appendString('px;">');const u=t.getLineContent(),h=g2.isBasicASCII(u,o),g=g2.containsRTL(u,h,s),m=tH(new AL(a.fontInfo.isMonospace&&!a.disableMonospaceOptimizations,a.fontInfo.canUseHalfwidthRightwardsArrow,u,!1,h,g,0,t,n,a.tabSize,0,a.fontInfo.spaceWidth,a.fontInfo.middotWidth,a.fontInfo.wsmiddotWidth,a.stopRenderingLineAfter,a.renderWhitespace,a.renderControlCharacters,a.fontLigatures!==F8.OFF,null,null,a.verticalScrollbarSize),l);l.appendString("
");const v=m.characterMapping.getHorizontalOffset(m.characterMapping.length);return{output:m,maxCharWidth:v}}const U0=Cr("clipboardService"),wL=Cr("contextViewService"),S2=Cr("contextMenuService");var K0o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_Ot=function(e,t){return function(n,r){t(n,r,e)}};let sje=class extends ft{constructor(t,n,r,o,s,a,l,d,u,h){super(),this._targetWindow=t,this._editors=n,this._diffModel=r,this._options=o,this._diffEditorWidget=s,this._canIgnoreViewZoneUpdateEvent=a,this._origViewZonesToIgnore=l,this._modViewZonesToIgnore=d,this._clipboardService=u,this._contextMenuService=h,this._originalTopPadding=Ti(this,0),this._originalScrollOffset=Ti(this,0),this._originalScrollOffsetAnimated=dOt(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=Ti(this,0),this._modifiedScrollOffset=Ti(this,0),this._modifiedScrollOffsetAnimated=dOt(this._targetWindow,this._modifiedScrollOffset,this._store);const g=Ti("invalidateAlignmentsState",0),m=this._register(new Es(()=>{g.set(g.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(w=>{this._canIgnoreViewZoneUpdateEvent()||m.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(w=>{this._canIgnoreViewZoneUpdateEvent()||m.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(w=>{(w.hasChanged(166)||w.hasChanged(75))&&m.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(w=>{(w.hasChanged(166)||w.hasChanged(75))&&m.schedule()}));const v=this._diffModel.map(w=>w?Ko(this,w.model.original.onDidChangeTokens,()=>w.model.original.tokenization.backgroundTokenizationState===2):void 0).map((w,O)=>w==null?void 0:w.read(O)),f=Rt(w=>{const O=this._diffModel.read(w),y=O==null?void 0:O.diff.read(w);if(!O||!y)return null;g.read(w);const _=this._options.renderSideBySide.read(w);return SOt(this._editors.original,this._editors.modified,y.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,_)}),k=Rt(w=>{var C;const O=(C=this._diffModel.read(w))==null?void 0:C.movedTextToCompare.read(w);if(!O)return null;g.read(w);const y=O.changes.map(_=>new uDn(_));return SOt(this._editors.original,this._editors.modified,y,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)});function A(){const w=document.createElement("div");return w.className="diagonal-fill",w}const p=this._register(new xt);this.viewZones=Rt(this,w=>{var I,F,j,W;p.clear();const O=f.read(w)||[],y=[],C=[],_=this._modifiedTopPadding.read(w);_>0&&C.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:_,showInHiddenAreas:!0,suppressMouseDown:!0});const S=this._originalTopPadding.read(w);S>0&&y.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:S,showInHiddenAreas:!0,suppressMouseDown:!0});const L=this._options.renderSideBySide.read(w),E=L||(I=this._editors.modified._getViewModel())==null?void 0:I.createLineBreaksComputer();if(E){const H=this._editors.original.getModel();for(const $ of O)if($.diff)for(let G=$.originalRange.startLineNumber;G<$.originalRange.endLineNumberExclusive;G++){if(G>H.getLineCount())return{orig:y,mod:C};E==null||E.addRequest(H.getLineContent(G),null,null)}}const T=(E==null?void 0:E.finalize())??[];let D=0;const P=this._editors.modified.getOption(75),Q=(F=this._diffModel.read(w))==null?void 0:F.movedTextToCompare.read(w),M=((j=this._editors.original.getModel())==null?void 0:j.mightContainNonBasicASCII())??!1,B=((W=this._editors.original.getModel())==null?void 0:W.mightContainRTL())??!1,R=o8.fromEditor(this._editors.modified);for(const H of O)if(H.diff&&!L&&(!this._options.useTrueInlineDiffRendering.read(w)||!xtt(H.diff))){if(!H.originalRange.isEmpty){v.read(w);const G=document.createElement("div");G.classList.add("view-lines","line-delete","line-delete-selectable","monaco-mouse-cursor-text");const q=this._editors.original.getModel();if(H.originalRange.endLineNumberExclusive-1>q.getLineCount())return{orig:y,mod:C};const re=new Xie(H.originalRange.mapToLineArray(ue=>q.tokenization.getLineTokens(ue)),H.originalRange.mapToLineArray(ue=>T[D++]),M,B),J=[];for(const ue of H.diff.innerChanges||[])J.push(new AD(ue.originalRange.delta(-(H.diff.original.startLineNumber-1)),eje.className,0));const oe=$ie(re,R,J,G),se=document.createElement("div");if(se.className="inline-deleted-margin-view-zone",Fu(se,R.fontInfo),this._options.renderIndicators.read(w))for(let ue=0;uea9(le),se,G,this._editors.modified,H.diff,this._diffEditorWidget,oe,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let ue=0;ue1&&y.push({afterLineNumber:H.originalRange.startLineNumber+ue,domNode:A(),heightInPx:(ee-1)*P,showInHiddenAreas:!0,suppressMouseDown:!0})}C.push({afterLineNumber:H.modifiedRange.startLineNumber-1,domNode:G,heightInPx:oe.heightInLines*P,minWidthInPx:oe.minWidthInPx,marginDomNode:se,setZoneId(ue){le=ue},showInHiddenAreas:!0,suppressMouseDown:!1})}const $=document.createElement("div");$.className="gutter-delete",y.push({afterLineNumber:H.originalRange.endLineNumberExclusive-1,domNode:A(),heightInPx:H.modifiedHeightInPx,marginDomNode:$,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const $=H.modifiedHeightInPx-H.originalHeightInPx;if($>0){if(Q!=null&&Q.lineRangeMapping.original.delta(-1).deltaLength(2).contains(H.originalRange.endLineNumberExclusive-1))continue;y.push({afterLineNumber:H.originalRange.endLineNumberExclusive-1,domNode:A(),heightInPx:$,showInHiddenAreas:!0,suppressMouseDown:!0})}else{let G=function(){const re=document.createElement("div");return re.className="arrow-revert-change "+fi.asClassName(zt.arrowRight),w.store.add(wt(re,"mousedown",J=>J.stopPropagation())),w.store.add(wt(re,"click",J=>{J.stopPropagation(),s.revert(H.diff)})),tn("div",{},re)};if(Q!=null&&Q.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(H.modifiedRange.endLineNumberExclusive-1))continue;let q;H.diff&&H.diff.modified.isEmpty&&this._options.shouldRenderOldRevertArrows.read(w)&&(q=G()),C.push({afterLineNumber:H.modifiedRange.endLineNumberExclusive-1,domNode:A(),heightInPx:-$,marginDomNode:q,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const H of k.read(w)??[]){if(!(Q!=null&&Q.lineRangeMapping.original.intersect(H.originalRange))||!(Q!=null&&Q.lineRangeMapping.modified.intersect(H.modifiedRange)))continue;const $=H.modifiedHeightInPx-H.originalHeightInPx;$>0?y.push({afterLineNumber:H.originalRange.endLineNumberExclusive-1,domNode:A(),heightInPx:$,showInHiddenAreas:!0,suppressMouseDown:!0}):C.push({afterLineNumber:H.modifiedRange.endLineNumberExclusive-1,domNode:A(),heightInPx:-$,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:y,mod:C}});let b=!1;this._register(this._editors.original.onDidScrollChange(w=>{w.scrollLeftChanged&&!b&&(b=!0,this._editors.modified.setScrollLeft(w.scrollLeft),b=!1)})),this._register(this._editors.modified.onDidScrollChange(w=>{w.scrollLeftChanged&&!b&&(b=!0,this._editors.original.setScrollLeft(w.scrollLeft),b=!1)})),this._originalScrollTop=Ko(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=Ko(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register(Oi(w=>{const O=this._originalScrollTop.read(w)-(this._originalScrollOffsetAnimated.read(void 0)-this._modifiedScrollOffsetAnimated.read(w))-(this._originalTopPadding.read(void 0)-this._modifiedTopPadding.read(w));O!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(O,1)})),this._register(Oi(w=>{const O=this._modifiedScrollTop.read(w)-(this._modifiedScrollOffsetAnimated.read(void 0)-this._originalScrollOffsetAnimated.read(w))-(this._modifiedTopPadding.read(void 0)-this._originalTopPadding.read(w));O!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(O,1)})),this._register(Oi(w=>{var C;const O=(C=this._diffModel.read(w))==null?void 0:C.movedTextToCompare.read(w);let y=0;if(O){const _=this._editors.original.getTopForLineNumber(O.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.read(void 0);y=this._editors.modified.getTopForLineNumber(O.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.read(void 0)-_}y>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(y,void 0)):y<0?(this._modifiedTopPadding.set(-y,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.read(void 0)-y,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.read(void 0)+y,void 0,!0)}))}};sje=K0o([_Ot(8,U0),_Ot(9,S2)],sje);function SOt(e,t,n,r,o,s){const a=new P8(LOt(e,r)),l=new P8(LOt(t,o)),d=e.getOption(75),u=t.getOption(75),h=[];let g=0,m=0;function v(f,k){for(;;){let A=a.peek(),p=l.peek();if(A&&A.lineNumber>=f&&(A=void 0),p&&p.lineNumber>=k&&(p=void 0),!A&&!p)break;const b=A?A.lineNumber-g:Number.MAX_VALUE,w=p?p.lineNumber-m:Number.MAX_VALUE;bw?(l.dequeue(),A={lineNumber:p.lineNumber-m+g,heightInPx:0}):(a.dequeue(),l.dequeue()),h.push({originalRange:Ei.ofLength(A.lineNumber,1),modifiedRange:Ei.ofLength(p.lineNumber,1),originalHeightInPx:d+A.heightInPx,modifiedHeightInPx:u+p.heightInPx,diff:void 0})}}for(const f of n){let w=function(O,y,C=!1){var T,D;if(OP.lineNumberP+Q.heightInPx,0))??0,E=((D=l.takeWhile(P=>P.lineNumberP+Q.heightInPx,0))??0;h.push({originalRange:_,modifiedRange:S,originalHeightInPx:_.length*d+L,modifiedHeightInPx:S.length*u+E,diff:f.lineRangeMapping}),b=O,p=y};const k=f.lineRangeMapping;v(k.original.startLineNumber,k.modified.startLineNumber);let A=!0,p=k.modified.startLineNumber,b=k.original.startLineNumber;if(s)for(const O of k.innerChanges||[]){O.originalRange.startColumn>1&&O.modifiedRange.startColumn>1&&w(O.originalRange.startLineNumber,O.modifiedRange.startLineNumber);const y=e.getModel(),C=O.originalRange.endLineNumber<=y.getLineCount()?y.getLineMaxColumn(O.originalRange.endLineNumber):Number.MAX_SAFE_INTEGER;O.originalRange.endColumn1&&r.push({lineNumber:d,heightInPx:a*(u-1)})}for(const d of e.getWhitespaces()){if(t.has(d.id))continue;const u=d.afterLineNumber===0?0:s.convertViewPositionToModelPosition(new it(d.afterLineNumber,1)).lineNumber;n.push({lineNumber:u,heightInPx:d.height})}return m0o(n,r,d=>d.lineNumber,(d,u)=>({lineNumber:d.lineNumber,heightInPx:d.heightInPx+u.heightInPx}))}function xtt(e){return e.innerChanges?e.innerChanges.every(t=>E1e(t.modifiedRange)&&E1e(t.originalRange)||t.originalRange.equalsRange(new Ee(1,1,1,1))):!1}function E1e(e){return e.startLineNumber===e.endLineNumber}const yq=class yq extends ft{constructor(t,n,r,o,s){super(),this._rootElement=t,this._diffModel=n,this._originalEditorLayoutInfo=r,this._modifiedEditorLayoutInfo=o,this._editors=s,this._originalScrollTop=Ko(this,this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=Ko(this,this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=A0("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=Ti(this,0),this._modifiedViewZonesChangedSignal=A0("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=A0("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=Rt(this,h=>{var C;this._element.replaceChildren();const g=this._diffModel.read(h),m=(C=g==null?void 0:g.diff.read(h))==null?void 0:C.movedTexts;if(!m||m.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(h);const v=this._originalEditorLayoutInfo.read(h),f=this._modifiedEditorLayoutInfo.read(h);if(!v||!f){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(h),this._originalViewZonesChangedSignal.read(h);const k=m.map(_=>{function S(R,I){const F=I.getTopForLineNumber(R.startLineNumber,!0),j=I.getTopForLineNumber(R.endLineNumberExclusive,!0);return(F+j)/2}const L=S(_.lineRangeMapping.original,this._editors.original),E=this._originalScrollTop.read(h),T=S(_.lineRangeMapping.modified,this._editors.modified),D=this._modifiedScrollTop.read(h),P=L-E,Q=T-D,M=Math.min(L,T),B=Math.max(L,T);return{range:new Xn(M,B),from:P,to:Q,fromWithoutScroll:L,toWithoutScroll:T,move:_}});k.sort(cto(qh(_=>_.fromWithoutScroll>_.toWithoutScroll,lEn),qh(_=>_.fromWithoutScroll>_.toWithoutScroll?_.fromWithoutScroll:-_.toWithoutScroll,T0)));const A=Ett.compute(k.map(_=>_.range)),p=10,b=v.verticalScrollbarWidth,w=(A.getTrackCount()-1)*10+p*2,O=b+w+(f.contentLeft-yq.movedCodeBlockPadding);let y=0;for(const _ of k){const S=A.getTrack(y),L=b+p+S*10,E=15,T=15,D=O,P=f.glyphMarginWidth+f.lineNumbersWidth,Q=18,M=document.createElementNS("http://www.w3.org/2000/svg","rect");M.classList.add("arrow-rectangle"),M.setAttribute("x",`${D-P}`),M.setAttribute("y",`${_.to-Q/2}`),M.setAttribute("width",`${P}`),M.setAttribute("height",`${Q}`),this._element.appendChild(M);const B=document.createElementNS("http://www.w3.org/2000/svg","g"),R=document.createElementNS("http://www.w3.org/2000/svg","path");R.setAttribute("d",`M 0 ${_.from} L ${L} ${_.from} L ${L} ${_.to} L ${D-T} ${_.to}`),R.setAttribute("fill","none"),B.appendChild(R);const I=document.createElementNS("http://www.w3.org/2000/svg","polygon");I.classList.add("arrow"),h.store.add(Oi(F=>{R.classList.toggle("currentMove",_.move===g.activeMovedText.read(F)),I.classList.toggle("currentMove",_.move===g.activeMovedText.read(F))})),I.setAttribute("points",`${D-T},${_.to-E/2} ${D},${_.to} ${D-T},${_.to+E/2}`),B.appendChild(I),this._element.appendChild(B),y++}this.width.set(w,void 0)}),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register(Hn(()=>this._element.remove())),this._register(Oi(h=>{const g=this._originalEditorLayoutInfo.read(h),m=this._modifiedEditorLayoutInfo.read(h);!g||!m||(this._element.style.left=`${g.width-g.verticalScrollbarWidth}px`,this._element.style.height=`${g.height}px`,this._element.style.width=`${g.verticalScrollbarWidth+g.contentLeft-yq.movedCodeBlockPadding+this.width.read(h)}px`)})),this._register(KW(this._state));const a=Rt(h=>{const g=this._diffModel.read(h),m=g==null?void 0:g.diff.read(h);return m?m.movedTexts.map(v=>({move:v,original:new wN(ca(v.lineRangeMapping.original.startLineNumber-1),18),modified:new wN(ca(v.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register(_1e(this._editors.original,a.map(h=>h.map(g=>g.original)))),this._register(_1e(this._editors.modified,a.map(h=>h.map(g=>g.modified)))),this._register(Ef((h,g)=>{const m=a.read(h);for(const v of m)g.add(new xOt(this._editors.original,v.original,v.move,"original",this._diffModel.get())),g.add(new xOt(this._editors.modified,v.modified,v.move,"modified",this._diffModel.get()))}));const l=A0("original.onDidFocusEditorWidget",h=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>h(void 0),0))),d=A0("modified.onDidFocusEditorWidget",h=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>h(void 0),0)));let u="modified";this._register(zz({changeTracker:{createChangeSummary:()=>{},handleChange:(h,g)=>(h.didChange(l)&&(u="original"),h.didChange(d)&&(u="modified"),!0)}},h=>{l.read(h),d.read(h);const g=this._diffModel.read(h);if(!g)return;const m=g.diff.read(h);let v;if(m&&u==="original"){const f=this._editors.originalCursor.read(h);f&&(v=m.movedTexts.find(k=>k.lineRangeMapping.original.contains(f.lineNumber)))}if(m&&u==="modified"){const f=this._editors.modifiedCursor.read(h);f&&(v=m.movedTexts.find(k=>k.lineRangeMapping.modified.contains(f.lineNumber)))}v!==g.movedTextToCompare.read(void 0)&&g.movedTextToCompare.set(void 0,void 0),g.setActiveMovedText(v)}))}};yq.movedCodeBlockPadding=4;let jU=yq;class Ett{static compute(t){const n=[],r=[];for(const o of t){let s=n.findIndex(a=>!a.intersectsStrict(o));s===-1&&(n.length>=6?s=wco(n,qh(l=>l.intersectWithRangeLength(o),T0)):(s=n.length,n.push(new aet))),n[s].addRange(o),r.push(s)}return new Ett(n.length,r)}constructor(t,n){this._trackCount=t,this.trackPerLineIdx=n}getTrack(t){return this.trackPerLineIdx[t]}getTrackCount(){return this._trackCount}}class xOt extends Ctt{constructor(t,n,r,o,s){const a=wo("div.diff-hidden-lines-widget");super(t,n,a.root),this._editor=t,this._move=r,this._kind=o,this._diffModel=s,this._nodes=wo("div.diff-moved-code-block",{style:{marginRight:"4px"}},[wo("div.text-content@textContent"),wo("div.action-bar@actionBar")]),a.root.appendChild(this._nodes.root);const l=Ko(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register(Q6(this._nodes.root,{paddingRight:l.map(m=>m.verticalScrollbarWidth)}));let d;r.changes.length>0?d=this._kind==="original"?U(131,"Code moved with changes to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):U(132,"Code moved with changes from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):d=this._kind==="original"?U(133,"Code moved to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):U(134,"Code moved from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const u=this._register(new g1(this._nodes.actionBar,{highlightToggledItems:!0})),h=new n2("",d,"",!1);u.push(h,{icon:!1,label:!0});const g=new n2("","Compare",fi.asClassName(zt.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===r?void 0:this._move,void 0)});this._register(Oi(m=>{const v=this._diffModel.movedTextToCompare.read(m)===r;g.checked=v})),u.push(g,{icon:!1,label:!0})}}class J0o extends ft{constructor(t,n,r,o){super(),this._editors=t,this._diffModel=n,this._options=r,this._decorations=Rt(this,s=>{const a=this._diffModel.read(s),l=a==null?void 0:a.diff.read(s);if(!l)return null;const d=this._diffModel.read(s).movedTextToCompare.read(s),u=this._options.renderIndicators.read(s),h=this._options.showEmptyDecorations.read(s),g=[],m=[];if(!d)for(const f of l.mappings)if(f.lineRangeMapping.original.isEmpty||g.push({range:f.lineRangeMapping.original.toInclusiveRange(),options:u?AOt:bOt}),f.lineRangeMapping.modified.isEmpty||m.push({range:f.lineRangeMapping.modified.toInclusiveRange(),options:u?vOt:pOt}),f.lineRangeMapping.modified.isEmpty||f.lineRangeMapping.original.isEmpty)f.lineRangeMapping.original.isEmpty||g.push({range:f.lineRangeMapping.original.toInclusiveRange(),options:j0o}),f.lineRangeMapping.modified.isEmpty||m.push({range:f.lineRangeMapping.modified.toInclusiveRange(),options:N0o});else{const k=this._options.useTrueInlineDiffRendering.read(s)&&xtt(f.lineRangeMapping);for(const A of f.lineRangeMapping.innerChanges||[])if(f.lineRangeMapping.original.contains(A.originalRange.startLineNumber)&&g.push({range:A.originalRange,options:A.originalRange.isEmpty()&&h?W0o:eje}),f.lineRangeMapping.modified.contains(A.modifiedRange.startLineNumber)&&m.push({range:A.modifiedRange,options:A.modifiedRange.isEmpty()&&h&&!k?U0o:wOt}),k){const p=a.model.original.getValueInRange(A.originalRange);m.push({range:A.modifiedRange,options:{description:"deleted-text",before:{content:p,inlineClassName:"inline-deleted-text"},zIndex:1e5,showIfCollapsed:!0}})}}if(d)for(const f of d.changes){const k=f.original.toInclusiveRange();k&&g.push({range:k,options:u?AOt:bOt});const A=f.modified.toInclusiveRange();A&&m.push({range:A,options:u?vOt:pOt});for(const p of f.innerChanges||[])g.push({range:p.originalRange,options:eje}),m.push({range:p.modifiedRange,options:wOt})}const v=this._diffModel.read(s).activeMovedText.read(s);for(const f of l.movedTexts)g.push({range:f.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(f===v?" currentMove":""),blockPadding:[jU.movedCodeBlockPadding,0,jU.movedCodeBlockPadding,jU.movedCodeBlockPadding]}}),m.push({range:f.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(f===v?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:g,modifiedDecorations:m}}),this._register(C1e(this._editors.original,this._decorations.map(s=>(s==null?void 0:s.originalDecorations)||[]))),this._register(C1e(this._editors.modified,this._decorations.map(s=>(s==null?void 0:s.modifiedDecorations)||[])))}}class cu{static equals(t,n){return t.x===n.x&&t.y===n.y}constructor(t,n){this.x=t,this.y=n}add(t){return new cu(this.x+t.x,this.y+t.y)}deltaX(t){return new cu(this.x+t,this.y)}deltaY(t){return new cu(this.x,this.y+t)}toString(){return`(${this.x},${this.y})`}subtract(t){return new cu(this.x-t.x,this.y-t.y)}scale(t){return new cu(this.x*t,this.y*t)}mapComponents(t){return new cu(t(this.x),t(this.y))}isZero(){return this.x===0&&this.y===0}withThreshold(t){return this.mapComponents(n=>n>t?n-t:n<-t?n+t:0)}}function hl(e){return aje.get(e)}const A5=class A5 extends ft{static get(t){let n=A5._map.get(t);if(!n){n=new A5(t),A5._map.set(t,n);const r=t.onDidDispose(()=>{const o=A5._map.get(t);o&&(A5._map.delete(t),o.dispose(),r.dispose())})}return n}_beginUpdate(){this._updateCounter++,this._updateCounter===1&&(this._currentTransaction=new Hz(()=>{}))}_endUpdate(){if(this._updateCounter--,this._updateCounter===0){const t=this._currentTransaction;this._currentTransaction=void 0,t.finish()}}constructor(t){var n;super(),this.editor=t,this._updateCounter=0,this._currentTransaction=void 0,this._model=Ti(this,this.editor.getModel()),this.model=this._model,this.isReadonly=Ko(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(104)),this._versionId=wZ({owner:this,lazy:!0},((n=this.editor.getModel())==null?void 0:n.getVersionId())??null),this.versionId=this._versionId,this._selections=wZ({owner:this,equalsFn:oQ(VK(Qn.selectionsEqual)),lazy:!0},this.editor.getSelections()??null),this.selections=this._selections,this.positions=Vh({owner:this,equalsFn:oQ(VK(it.equals))},r=>{var o;return((o=this.selections.read(r))==null?void 0:o.map(s=>s.getStartPosition()))??null}),this.isFocused=Ko(this,r=>{const o=this.editor.onDidFocusEditorWidget(r),s=this.editor.onDidBlurEditorWidget(r);return{dispose(){o.dispose(),s.dispose()}}},()=>this.editor.hasWidgetFocus()),this.isTextFocused=Ko(this,r=>{const o=this.editor.onDidFocusEditorText(r),s=this.editor.onDidBlurEditorText(r);return{dispose(){o.dispose(),s.dispose()}}},()=>this.editor.hasTextFocus()),this.inComposition=Ko(this,r=>{const o=this.editor.onDidCompositionStart(()=>{r(void 0)}),s=this.editor.onDidCompositionEnd(()=>{r(void 0)});return{dispose(){o.dispose(),s.dispose()}}},()=>this.editor.inComposition),this.value=$Je(this,r=>{var o;return this.versionId.read(r),((o=this.model.read(r))==null?void 0:o.getValue())??""},(r,o)=>{const s=this.model.get();s!==null&&r!==s.getValue()&&s.setValue(r)}),this.valueIsEmpty=Rt(this,r=>{var o;return this.versionId.read(r),((o=this.editor.getModel())==null?void 0:o.getValueLength())===0}),this.cursorSelection=Vh({owner:this,equalsFn:oQ(Qn.selectionsEqual)},r=>{var o;return((o=this.selections.read(r))==null?void 0:o[0])??null}),this.cursorPosition=Vh({owner:this,equalsFn:it.equals},r=>{var o,s;return((s=(o=this.selections.read(r))==null?void 0:o[0])==null?void 0:s.getPosition())??null}),this.cursorLineNumber=Rt(this,r=>{var o;return((o=this.cursorPosition.read(r))==null?void 0:o.lineNumber)??null}),this.onDidType=Mv(this),this.onDidPaste=Mv(this),this.scrollTop=Ko(this.editor.onDidScrollChange,()=>this.editor.getScrollTop()),this.scrollLeft=Ko(this.editor.onDidScrollChange,()=>this.editor.getScrollLeft()),this.layoutInfo=Ko(this.editor.onDidLayoutChange,()=>this.editor.getLayoutInfo()),this.layoutInfoContentLeft=this.layoutInfo.map(r=>r.contentLeft),this.layoutInfoDecorationsLeft=this.layoutInfo.map(r=>r.decorationsLeft),this.layoutInfoWidth=this.layoutInfo.map(r=>r.width),this.layoutInfoHeight=this.layoutInfo.map(r=>r.height),this.layoutInfoMinimap=this.layoutInfo.map(r=>r.minimap),this.layoutInfoVerticalScrollbarWidth=this.layoutInfo.map(r=>r.verticalScrollbarWidth),this.contentWidth=Ko(this.editor.onDidContentSizeChange,()=>this.editor.getContentWidth()),this.contentHeight=Ko(this.editor.onDidContentSizeChange,()=>this.editor.getContentHeight()),this._widgetCounter=0,this.openedPeekWidgets=Ti(this,0),this._register(this.editor.onBeginUpdate(()=>this._beginUpdate())),this._register(this.editor.onEndUpdate(()=>this._endUpdate())),this._register(this.editor.onDidChangeModel(()=>{this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidType(r=>{this._beginUpdate();try{this._forceUpdate(),this.onDidType.trigger(this._currentTransaction,r)}finally{this._endUpdate()}})),this._register(this.editor.onDidPaste(r=>{this._beginUpdate();try{this._forceUpdate(),this.onDidPaste.trigger(this._currentTransaction,r)}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeModelContent(r=>{var o;this._beginUpdate();try{this._versionId.set(((o=this.editor.getModel())==null?void 0:o.getVersionId())??null,this._currentTransaction,r),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeCursorSelection(r=>{this._beginUpdate();try{this._selections.set(this.editor.getSelections(),this._currentTransaction,r),this._forceUpdate()}finally{this._endUpdate()}})),this.domNode=Rt(r=>(this.model.read(r),this.editor.getDomNode()))}forceUpdate(t){this._beginUpdate();try{return this._forceUpdate(),t?t(this._currentTransaction):void 0}finally{this._endUpdate()}}_forceUpdate(){var t;this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._versionId.set(((t=this.editor.getModel())==null?void 0:t.getVersionId())??null,this._currentTransaction,void 0),this._selections.set(this.editor.getSelections(),this._currentTransaction,void 0)}finally{this._endUpdate()}}getOption(t,n=Hd.ofCaller()){return Ko(this,r=>this.editor.onDidChangeConfiguration(o=>{o.hasChanged(t)&&r(void 0)}),()=>this.editor.getOption(t),n)}setDecorations(t){const n=new xt,r=this.editor.createDecorationsCollection();return n.add(pbe({owner:this,debugName:()=>`Apply decorations from ${t.debugName}`},o=>{const s=t.read(o);r.set(s)})),n.add({dispose:()=>{r.clear()}}),n}createOverlayWidget(t){const n="observableOverlayWidget"+this._widgetCounter++,r={getDomNode:()=>t.domNode,getPosition:()=>t.position.get(),getId:()=>n,allowEditorOverflow:t.allowEditorOverflow,getMinContentWidthInPx:()=>t.minContentWidthInPx.get()};this.editor.addOverlayWidget(r);const o=Oi(s=>{t.position.read(s),t.minContentWidthInPx.read(s),this.editor.layoutOverlayWidget(r)});return Hn(()=>{o.dispose(),this.editor.removeOverlayWidget(r)})}createContentWidget(t){const n="observableContentWidget"+this._widgetCounter++,r={getDomNode:()=>t.domNode,getPosition:()=>t.position.get(),getId:()=>n,allowEditorOverflow:t.allowEditorOverflow};this.editor.addContentWidget(r);const o=Oi(s=>{t.position.read(s),this.editor.layoutContentWidget(r)});return Hn(()=>{o.dispose(),this.editor.removeContentWidget(r)})}observeLineOffsetRange(t,n){const r=this.observePosition(t.map(s=>new it(s.startLineNumber,1)),n),o=this.observePosition(t.map(s=>new it(s.endLineNumberExclusive+1,1)),n);return Rt(s=>{var h;r.read(s),o.read(s);const a=t.read(s),l=(h=this.model.read(s))==null?void 0:h.getLineCount(),d=(typeof l<"u"&&a.startLineNumber>l?this.editor.getBottomForLineNumber(l):this.editor.getTopForLineNumber(a.startLineNumber))-this.scrollTop.read(s),u=a.isEmpty?d:this.editor.getBottomForLineNumber(a.endLineNumberExclusive-1)-this.scrollTop.read(s);return new Xn(d,u)})}observePosition(t,n){let r=t.get();const o=wZ({owner:this,debugName:()=>`topLeftOfPosition${r==null?void 0:r.toString()}`,equalsFn:oQ(cu.equals)},new cu(0,0)),s="observablePositionWidget"+this._widgetCounter++,a=document.createElement("div"),l={getDomNode:()=>a,getPosition:()=>r?{preference:[0],position:t.get()}:null,getId:()=>s,allowEditorOverflow:!1,afterRender:(d,u)=>{const h=this._model.get();h&&r&&r.lineNumber>h.getLineCount()?o.set(new cu(0,this.editor.getBottomForLineNumber(h.getLineCount())-this.scrollTop.get()),void 0):o.set(u?new cu(u.left,u.top):null,void 0)}};return this.editor.addContentWidget(l),n.add(Oi(d=>{r=t.read(d),this.editor.layoutContentWidget(l)})),n.add(Hn(()=>{this.editor.removeContentWidget(l)})),o}isTargetHovered(t,n){const r=Ti("isInjectedTextHovered",!1);return n.add(this.editor.onMouseMove(o=>{const s=t(o);r.set(s,void 0)})),n.add(this.editor.onMouseLeave(o=>{r.set(!1,void 0)})),r}observeLineHeightForPosition(t){return Rt(n=>{const r=t instanceof it?t:t.read(n);return r===null?null:(this.getOption(75).read(n),this.editor.getLineHeightForPosition(r))})}observeLineHeightForLine(t){return typeof t=="number"?this.observeLineHeightForPosition(new it(t,1)):Rt(n=>{const r=t.read(n);return r===null?null:this.observeLineHeightForPosition(new it(r,1)).read(n)})}observeLineHeightsForLineRange(t){return Rt(n=>{const r=t instanceof Ei?t:t.read(n),o=[];for(let s=r.startLineNumber;s=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},tko=function(e,t){return function(n,r){t(n,r,e)}},tb,WS;let DJ=(WS=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._editors=t,this._rootElement=n,this._diffModel=r,this._rootWidth=o,this._rootHeight=s,this._modifiedEditorLayoutInfo=a,this._themeService=l,this.width=tb.ENTIRE_DIFF_OVERVIEW_WIDTH;const d=Ko(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),u=Rt(m=>{const v=d.read(m),f=v.getColor(Koo)||(v.getColor(cQ)||INe).transparent(2),k=v.getColor(Joo)||(v.getColor(h9)||MNe).transparent(2);return{insertColor:f,removeColor:k}}),h=es(document.createElement("div"));h.setClassName("diffViewport"),h.setPosition("absolute");const g=wo("div.diffOverview",{style:{position:"absolute",top:"0px",width:tb.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register(bN(g,h.domNode)),this._register(wc(g,rn.POINTER_DOWN,m=>{this._editors.modified.delegateVerticalScrollbarPointerDown(m)})),this._register(wt(g,rn.MOUSE_WHEEL,m=>{this._editors.modified.delegateScrollFromMouseWheelEvent(m)},{passive:!1})),this._register(bN(this._rootElement,g)),this._register(Ef((m,v)=>{const f=this._diffModel.read(m),k=this._editors.original.createOverviewRuler("original diffOverviewRuler");k&&(v.add(k),v.add(bN(g,k.getDomNode())));const A=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(A&&(v.add(A),v.add(bN(g,A.getDomNode()))),!k||!A)return;const p=A0("viewZoneChanged",this._editors.original.onDidChangeViewZones),b=A0("viewZoneChanged",this._editors.modified.onDidChangeViewZones),w=A0("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),O=A0("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);v.add(Oi(y=>{var T;p.read(y),b.read(y),w.read(y),O.read(y);const C=u.read(y),_=(T=f==null?void 0:f.diff.read(y))==null?void 0:T.mappings;function S(D,P,Q){const M=Q._getViewModel();return M?D.filter(B=>B.length>0).map(B=>{const R=M.coordinatesConverter.convertModelPositionToViewPosition(new it(B.startLineNumber,1)),I=M.coordinatesConverter.convertModelPositionToViewPosition(new it(B.endLineNumberExclusive,1)),F=I.lineNumber-R.lineNumber;return new wTn(R.lineNumber,I.lineNumber,F,P.toString())}):[]}const L=S((_||[]).map(D=>D.lineRangeMapping.original),C.removeColor,this._editors.original),E=S((_||[]).map(D=>D.lineRangeMapping.modified),C.insertColor,this._editors.modified);k==null||k.setZones(L),A==null||A.setZones(E)})),v.add(Oi(y=>{const C=this._rootHeight.read(y),_=this._rootWidth.read(y),S=this._modifiedEditorLayoutInfo.read(y);if(S){const L=tb.ENTIRE_DIFF_OVERVIEW_WIDTH-2*tb.ONE_OVERVIEW_WIDTH;k.setLayout({top:0,height:C,right:L+tb.ONE_OVERVIEW_WIDTH,width:tb.ONE_OVERVIEW_WIDTH}),A.setLayout({top:0,height:C,right:0,width:tb.ONE_OVERVIEW_WIDTH});const E=this._editors.modifiedScrollTop.read(y),T=this._editors.modifiedScrollHeight.read(y),D=this._editors.modified.getOption(117),P=new aV(D.verticalHasArrows?D.arrowSize:0,D.verticalScrollbarSize,0,S.height,T,E);h.setTop(P.getSliderPosition()),h.setHeight(P.getSliderSize())}else h.setTop(0),h.setHeight(0);g.style.height=C+"px",g.style.left=_-tb.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",h.setWidth(tb.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}},tb=WS,WS.ONE_OVERVIEW_WIDTH=15,WS.ENTIRE_DIFF_OVERVIEW_WIDTH=WS.ONE_OVERVIEW_WIDTH*2,WS);DJ=tb=eko([tko(6,Dl)],DJ);var nko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},exe=function(e,t){return function(n,r){t(n,r,e)}};let lje=class extends ft{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(t,n,r,o,s,a,l,d){super(),this.originalEditorElement=t,this.modifiedEditorElement=n,this._options=r,this._argCodeEditorWidgetOptions=o,this._createInnerEditor=s,this._contextKeyService=a,this._instantiationService=l,this._keybindingService=d,this.original=this._register(this._createLeftHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.modifiedEditor||{})),this._onDidContentSizeChange=this._register(new at),this.modifiedScrollTop=Ko(this,this.modified.onDidScrollChange,()=>this.modified.getScrollTop()),this.modifiedScrollHeight=Ko(this,this.modified.onDidScrollChange,()=>this.modified.getScrollHeight()),this.modifiedObs=hl(this.modified),this.originalObs=hl(this.original),this.modifiedModel=this.modifiedObs.model,this.modifiedSelections=Ko(this,this.modified.onDidChangeCursorSelection,()=>this.modified.getSelections()??[]),this.modifiedCursor=Vh({owner:this,equalsFn:it.equals},u=>{var h;return((h=this.modifiedSelections.read(u)[0])==null?void 0:h.getPosition())??new it(1,1)}),this.originalCursor=Ko(this,this.original.onDidChangeCursorPosition,()=>this.original.getPosition()??new it(1,1)),this.isOriginalFocused=hl(this.original).isFocused,this.isModifiedFocused=hl(this.modified).isFocused,this.isFocused=Rt(this,u=>this.isOriginalFocused.read(u)||this.isModifiedFocused.read(u)),this._argCodeEditorWidgetOptions=null,this._register(zz({changeTracker:{createChangeSummary:()=>({}),handleChange:(u,h)=>(u.didChange(r.editorOptions)&&Object.assign(h,u.change.changedOptions),!0)}},(u,h)=>{r.editorOptions.read(u),this._options.renderSideBySide.read(u),this.modified.updateOptions(this._adjustOptionsForRightHandSide(u,h)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(u,h))}))}_createLeftHandSideEditor(t,n){const r=this._adjustOptionsForLeftHandSide(void 0,t),o=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,r,n),s=this._contextKeyService.createKey("isInDiffLeftEditor",o.hasWidgetFocus());return this._register(o.onDidFocusEditorWidget(()=>s.set(!0))),this._register(o.onDidBlurEditorWidget(()=>s.set(!1))),o}_createRightHandSideEditor(t,n){const r=this._adjustOptionsForRightHandSide(void 0,t),o=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,r,n),s=this._contextKeyService.createKey("isInDiffRightEditor",o.hasWidgetFocus());return this._register(o.onDidFocusEditorWidget(()=>s.set(!0))),this._register(o.onDidBlurEditorWidget(()=>s.set(!1))),o}_constructInnerEditor(t,n,r,o){const s=this._createInnerEditor(t,n,r,o);return this._register(s.onDidContentSizeChange(a=>{const l=this.original.getContentWidth()+this.modified.getContentWidth()+DJ.ENTIRE_DIFF_OVERVIEW_WIDTH,d=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:d,contentWidth:l,contentHeightChanged:a.contentHeightChanged,contentWidthChanged:a.contentWidthChanged})})),s}_adjustOptionsForLeftHandSide(t,n){const r=this._adjustOptionsForSubEditor(n);return this._options.renderSideBySide.get()?(r.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},r.wordWrapOverride1=this._options.diffWordWrap.get()):(r.wordWrapOverride1="off",r.wordWrapOverride2="off",r.stickyScroll={enabled:!1},r.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),r.glyphMargin=this._options.renderSideBySide.get(),n.originalAriaLabel&&(r.ariaLabel=n.originalAriaLabel),r.ariaLabel=this._updateAriaLabel(r.ariaLabel),r.readOnly=!this._options.originalEditable.get(),r.dropIntoEditor={enabled:!r.readOnly},r.extraEditorClassName="original-in-monaco-diff-editor",r}_adjustOptionsForRightHandSide(t,n){const r=this._adjustOptionsForSubEditor(n);return n.modifiedAriaLabel&&(r.ariaLabel=n.modifiedAriaLabel),r.ariaLabel=this._updateAriaLabel(r.ariaLabel),r.wordWrapOverride1=this._options.diffWordWrap.get(),r.revealHorizontalRightPadding=fg.revealHorizontalRightPadding.defaultValue+DJ.ENTIRE_DIFF_OVERVIEW_WIDTH,r.scrollbar.verticalHasArrows=!1,r.extraEditorClassName="modified-in-monaco-diff-editor",r}_adjustOptionsForSubEditor(t){const n={...t,dimension:{height:0,width:0}};return n.inDiffEditor=!0,n.automaticLayout=!1,n.allowVariableLineHeights=!1,n.allowVariableFonts=!1,n.allowVariableFontsInAccessibilityMode=!1,n.scrollbar={...n.scrollbar||{}},n.folding=!1,n.codeLens=this._options.diffCodeLens.get(),n.fixedOverflowWidgets=!0,n.minimap={...n.minimap||{}},n.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?n.stickyScroll={enabled:!1}:n.stickyScroll=this._options.editorOptions.get().stickyScroll,n}_updateAriaLabel(t){var r;t||(t="");const n=U(111," use {0} to open the accessibility help.",(r=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))==null?void 0:r.getAriaLabel());return this._options.accessibilityVerbose.get()?t+n:t?t.replaceAll(n,""):""}};lje=nko([exe(5,Qi),exe(6,Yn),exe(7,Do)],lje);var oH=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s};const iko=!1;var T1e;(function(e){e.North="north",e.South="south",e.East="east",e.West="west"})(T1e||(T1e={}));let rko=4;const oko=new at;let sko=300;const ako=new at;class Ttt{constructor(t){this.el=t,this.disposables=new xt}get onPointerMove(){return this.disposables.add(new ks(ii(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new ks(ii(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}oH([mc],Ttt.prototype,"onPointerMove",null);oH([mc],Ttt.prototype,"onPointerUp",null);class Qtt{get onPointerMove(){return this.disposables.add(new ks(this.el,ma.Change)).event}get onPointerUp(){return this.disposables.add(new ks(this.el,ma.End)).event}constructor(t){this.el=t,this.disposables=new xt}dispose(){this.disposables.dispose()}}oH([mc],Qtt.prototype,"onPointerMove",null);oH([mc],Qtt.prototype,"onPointerUp",null);class Q1e{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(t){this.factory=t}dispose(){}}oH([mc],Q1e.prototype,"onPointerMove",null);oH([mc],Q1e.prototype,"onPointerUp",null);const EOt="pointer-events-disabled";class kf extends ft{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(t){this._state!==t&&(this.el.classList.toggle("disabled",t===0),this.el.classList.toggle("minimum",t===1),this.el.classList.toggle("maximum",t===2),this._state=t,this.onDidEnablementChange.fire(t))}get onDidStart(){return this._onDidStart.event}get onDidChange(){return this._onDidChange.event}get onDidReset(){return this._onDidReset.event}get onDidEnd(){return this._onDidEnd.event}set orthogonalStartSash(t){if(this._orthogonalStartSash!==t){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),t){const n=r=>{this.orthogonalStartDragHandleDisposables.clear(),r!==0&&(this._orthogonalStartDragHandle=Xt(this.el,tn(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add(Hn(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(wt(this._orthogonalStartDragHandle,"mouseenter",()=>kf.onMouseEnter(t))),this.orthogonalStartDragHandleDisposables.add(wt(this._orthogonalStartDragHandle,"mouseleave",()=>kf.onMouseLeave(t))))};this.orthogonalStartSashDisposables.add(t.onDidEnablementChange.event(n,this)),n(t.state)}this._orthogonalStartSash=t}}set orthogonalEndSash(t){if(this._orthogonalEndSash!==t){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),t){const n=r=>{this.orthogonalEndDragHandleDisposables.clear(),r!==0&&(this._orthogonalEndDragHandle=Xt(this.el,tn(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add(Hn(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(wt(this._orthogonalEndDragHandle,"mouseenter",()=>kf.onMouseEnter(t))),this.orthogonalEndDragHandleDisposables.add(wt(this._orthogonalEndDragHandle,"mouseleave",()=>kf.onMouseLeave(t))))};this.orthogonalEndSashDisposables.add(t.onDidEnablementChange.event(n,this)),n(t.state)}this._orthogonalEndSash=t}}constructor(t,n,r){super(),this.hoverDelay=sko,this.hoverDelayer=this._register(new dA(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new at),this._onDidStart=this._register(new at),this._onDidChange=this._register(new at),this._onDidReset=this._register(new at),this._onDidEnd=this._register(new at),this.orthogonalStartSashDisposables=this._register(new xt),this.orthogonalStartDragHandleDisposables=this._register(new xt),this.orthogonalEndSashDisposables=this._register(new xt),this.orthogonalEndDragHandleDisposables=this._register(new xt),this.linkedSash=void 0,this.el=Xt(t,tn(".monaco-sash")),r.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${r.orthogonalEdge}`),Tr&&this.el.classList.add("mac"),this._register(wt(this.el,"mousedown",s=>this.onPointerStart(s,new Ttt(t)))),this._register(wt(this.el,"dblclick",s=>this.onPointerDoublePress(s))),this._register(wt(this.el,"mouseenter",()=>kf.onMouseEnter(this))),this._register(wt(this.el,"mouseleave",()=>kf.onMouseLeave(this))),this._register(Bf.addTarget(this.el)),this._register(wt(this.el,ma.Start,s=>this.onPointerStart(s,new Qtt(this.el))));let o;this._register(wt(this.el,ma.Tap,s=>{if(o){clearTimeout(o),o=void 0,this.onPointerDoublePress(s);return}clearTimeout(o),o=setTimeout(()=>o=void 0,250)})),typeof r.size=="number"?(this.size=r.size,r.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=rko,this._register(oko.event(s=>{this.size=s,this.layout()}))),this._register(ako.event(s=>this.hoverDelay=s)),this.layoutProvider=n,this.orthogonalStartSash=r.orthogonalStartSash,this.orthogonalEndSash=r.orthogonalEndSash,this.orientation=r.orientation||0,this.orientation===1?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",iko),this.layout()}onPointerStart(t,n){Qo.stop(t);let r=!1;if(!t.__orthogonalSashEvent){const f=this.getOrthogonalSash(t);f&&(r=!0,t.__orthogonalSashEvent=!0,f.onPointerStart(t,new Q1e(n)))}if(this.linkedSash&&!t.__linkedSashEvent&&(t.__linkedSashEvent=!0,this.linkedSash.onPointerStart(t,new Q1e(n))),!this.state)return;const o=this.el.ownerDocument.getElementsByTagName("iframe");for(const f of o)f.classList.add(EOt);const s=t.pageX,a=t.pageY,l=t.altKey,d={startX:s,currentX:s,startY:a,currentY:a,altKey:l};this.el.classList.add("active"),this._onDidStart.fire(d);const u=mA(this.el),h=()=>{let f="";r?f="all-scroll":this.orientation===1?this.state===1?f="s-resize":this.state===2?f="n-resize":f=Tr?"row-resize":"ns-resize":this.state===1?f="e-resize":this.state===2?f="w-resize":f=Tr?"col-resize":"ew-resize",u.textContent=`* { cursor: ${f} !important; }`},g=new xt;h(),r||this.onDidEnablementChange.event(h,null,g);const m=f=>{Qo.stop(f,!1);const k={startX:s,currentX:f.pageX,startY:a,currentY:f.pageY,altKey:l};this._onDidChange.fire(k)},v=f=>{Qo.stop(f,!1),u.remove(),this.el.classList.remove("active"),this._onDidEnd.fire(),g.dispose();for(const k of o)k.classList.remove(EOt)};n.onPointerMove(m,null,g),n.onPointerUp(v,null,g),g.add(n)}onPointerDoublePress(t){const n=this.getOrthogonalSash(t);n&&n._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(t,n=!1){t.el.classList.contains("active")?(t.hoverDelayer.cancel(),t.el.classList.add("hover")):t.hoverDelayer.trigger(()=>t.el.classList.add("hover"),t.hoverDelay).then(void 0,()=>{}),!n&&t.linkedSash&&kf.onMouseEnter(t.linkedSash,!0)}static onMouseLeave(t,n=!1){t.hoverDelayer.cancel(),t.el.classList.remove("hover"),!n&&t.linkedSash&&kf.onMouseLeave(t.linkedSash,!0)}clearSashHoverState(){kf.onMouseLeave(this)}layout(){if(this.orientation===0){const t=this.layoutProvider;this.el.style.left=t.getVerticalSashLeft(this)-this.size/2+"px",t.getVerticalSashTop&&(this.el.style.top=t.getVerticalSashTop(this)+"px"),t.getVerticalSashHeight&&(this.el.style.height=t.getVerticalSashHeight(this)+"px")}else{const t=this.layoutProvider;this.el.style.top=t.getHorizontalSashTop(this)-this.size/2+"px",t.getHorizontalSashLeft&&(this.el.style.left=t.getHorizontalSashLeft(this)+"px"),t.getHorizontalSashWidth&&(this.el.style.width=t.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(t){const n=t.initialTarget??t.target;if(!(!n||!ec(n))&&n.classList.contains("orthogonal-drag-handle"))return n.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}class lko{resetSash(){this._sashRatio.set(void 0,void 0)}constructor(t,n){this._options=t,this.dimensions=n,this.sashLeft=$Je(this,r=>{const o=this._sashRatio.read(r)??this._options.splitViewDefaultRatio.read(r);return this._computeSashLeft(o,r)},(r,o)=>{const s=this.dimensions.width.get();this._sashRatio.set(r/s,o)}),this._sashRatio=Ti(this,void 0)}_computeSashLeft(t,n){const r=this.dimensions.width.read(n),o=Math.floor(this._options.splitViewDefaultRatio.read(n)*r),s=this._options.enableSplitViewResizing.read(n)?Math.floor(t*r):o,a=100;return r<=a*2?o:sr-a?r-a:s}}class hDn extends ft{constructor(t,n,r,o,s,a){super(),this._domNode=t,this._dimensions=n,this._enabled=r,this._boundarySashes=o,this.sashLeft=s,this._resetSash=a,this._sash=this._register(new kf(this._domNode,{getVerticalSashTop:l=>0,getVerticalSashLeft:l=>this.sashLeft.get(),getVerticalSashHeight:l=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(l=>{this.sashLeft.set(this._startSashPosition+(l.currentX-l.startX),void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._resetSash())),this._register(Oi(l=>{const d=this._boundarySashes.read(l);d&&(this._sash.orthogonalEndSash=d.bottom)})),this._register(Oi(l=>{const d=this._enabled.read(l);this._sash.state=d?3:0,this.sashLeft.read(l),this._dimensions.height.read(l),this._sash.layout()}))}}const jve=class jve extends ft{constructor(){super(...arguments),this._id=++jve.idCounter,this._onDidDispose=this._register(new at),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+":v2:"+this._id}getVisibleColumnFromPosition(t){return this._targetEditor.getVisibleColumnFromPosition(t)}getPosition(){return this._targetEditor.getPosition()}setPosition(t,n="api"){this._targetEditor.setPosition(t,n)}revealLine(t,n=0){this._targetEditor.revealLine(t,n)}revealLineInCenter(t,n=0){this._targetEditor.revealLineInCenter(t,n)}revealLineInCenterIfOutsideViewport(t,n=0){this._targetEditor.revealLineInCenterIfOutsideViewport(t,n)}revealLineNearTop(t,n=0){this._targetEditor.revealLineNearTop(t,n)}revealPosition(t,n=0){this._targetEditor.revealPosition(t,n)}revealPositionInCenter(t,n=0){this._targetEditor.revealPositionInCenter(t,n)}revealPositionInCenterIfOutsideViewport(t,n=0){this._targetEditor.revealPositionInCenterIfOutsideViewport(t,n)}revealPositionNearTop(t,n=0){this._targetEditor.revealPositionNearTop(t,n)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(t,n="api"){this._targetEditor.setSelection(t,n)}setSelections(t,n="api"){this._targetEditor.setSelections(t,n)}revealLines(t,n,r=0){this._targetEditor.revealLines(t,n,r)}revealLinesInCenter(t,n,r=0){this._targetEditor.revealLinesInCenter(t,n,r)}revealLinesInCenterIfOutsideViewport(t,n,r=0){this._targetEditor.revealLinesInCenterIfOutsideViewport(t,n,r)}revealLinesNearTop(t,n,r=0){this._targetEditor.revealLinesNearTop(t,n,r)}revealRange(t,n=0,r=!1,o=!0){this._targetEditor.revealRange(t,n,r,o)}revealRangeInCenter(t,n=0){this._targetEditor.revealRangeInCenter(t,n)}revealRangeInCenterIfOutsideViewport(t,n=0){this._targetEditor.revealRangeInCenterIfOutsideViewport(t,n)}revealRangeNearTop(t,n=0){this._targetEditor.revealRangeNearTop(t,n)}revealRangeNearTopIfOutsideViewport(t,n=0){this._targetEditor.revealRangeNearTopIfOutsideViewport(t,n)}revealRangeAtTop(t,n=0){this._targetEditor.revealRangeAtTop(t,n)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(t,n,r){this._targetEditor.trigger(t,n,r)}createDecorationsCollection(t){return this._targetEditor.createDecorationsCollection(t)}changeDecorations(t){return this._targetEditor.changeDecorations(t)}};jve.idCounter=0;let cje=jve;const Oh={enableSplitViewResizing:!0,renderSideBySide:!0,renderMarginRevertIcon:!0,renderGutterMenu:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0,useTrueInlineView:!1},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0,compactMode:!1};function cko(e,t){return vL(e,(n,r)=>r??t(n))}var dko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},uko=function(e,t){return function(n,r){t(n,r,e)}};let dje=class{get editorOptions(){return this._options}constructor(t,n){this._accessibilityService=n,this._diffEditorWidth=Ti(this,0),this._screenReaderMode=Ko(this,this._accessibilityService.onDidChangeScreenReaderOptimized,()=>this._accessibilityService.isScreenReaderOptimized()),this.couldShowInlineViewBecauseOfSize=Rt(this,o=>this._options.read(o).renderSideBySide&&this._diffEditorWidth.read(o)<=this._options.read(o).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=Rt(this,o=>this._options.read(o).renderOverviewRuler),this.renderSideBySide=Rt(this,o=>this.compactMode.read(o)&&this.shouldRenderInlineViewInSmartMode.read(o)?!1:this._options.read(o).renderSideBySide&&!(this._options.read(o).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(o)&&!this._screenReaderMode.read(o))),this.readOnly=Rt(this,o=>this._options.read(o).readOnly),this.shouldRenderOldRevertArrows=Rt(this,o=>!(!this._options.read(o).renderMarginRevertIcon||!this.renderSideBySide.read(o)||this.readOnly.read(o)||this.shouldRenderGutterMenu.read(o))),this.shouldRenderGutterMenu=Rt(this,o=>this._options.read(o).renderGutterMenu),this.renderIndicators=Rt(this,o=>this._options.read(o).renderIndicators),this.enableSplitViewResizing=Rt(this,o=>this._options.read(o).enableSplitViewResizing),this.splitViewDefaultRatio=Rt(this,o=>this._options.read(o).splitViewDefaultRatio),this.ignoreTrimWhitespace=Rt(this,o=>this._options.read(o).ignoreTrimWhitespace),this.maxComputationTimeMs=Rt(this,o=>this._options.read(o).maxComputationTime),this.showMoves=Rt(this,o=>this._options.read(o).experimental.showMoves&&this.renderSideBySide.read(o)),this.isInEmbeddedEditor=Rt(this,o=>this._options.read(o).isInEmbeddedEditor),this.diffWordWrap=Rt(this,o=>this._options.read(o).diffWordWrap),this.originalEditable=Rt(this,o=>this._options.read(o).originalEditable),this.diffCodeLens=Rt(this,o=>this._options.read(o).diffCodeLens),this.accessibilityVerbose=Rt(this,o=>this._options.read(o).accessibilityVerbose),this.diffAlgorithm=Rt(this,o=>this._options.read(o).diffAlgorithm),this.showEmptyDecorations=Rt(this,o=>this._options.read(o).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=Rt(this,o=>this._options.read(o).onlyShowAccessibleDiffViewer),this.compactMode=Rt(this,o=>this._options.read(o).compactMode),this.trueInlineDiffRenderingEnabled=Rt(this,o=>this._options.read(o).experimental.useTrueInlineView),this.useTrueInlineDiffRendering=Rt(this,o=>!this.renderSideBySide.read(o)&&this.trueInlineDiffRenderingEnabled.read(o)),this.hideUnchangedRegions=Rt(this,o=>this._options.read(o).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=Rt(this,o=>this._options.read(o).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=Rt(this,o=>this._options.read(o).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsMinimumLineCount=Rt(this,o=>this._options.read(o).hideUnchangedRegions.minimumLineCount),this._model=Ti(this,void 0),this.shouldRenderInlineViewInSmartMode=this._model.map(this,o=>cko(this,s=>{const a=o==null?void 0:o.diff.read(s);return a?hko(a,this.trueInlineDiffRenderingEnabled.read(s)):void 0})).flatten().map(this,o=>!!o),this.inlineViewHideOriginalLineNumbers=this.compactMode;const r={...t,...TOt(t,Oh)};this._options=Ti(this,r)}updateOptions(t){const n=TOt(t,this._options.get()),r={...this._options.get(),...t,...n};this._options.set(r,void 0,{changedOptions:t})}setWidth(t){this._diffEditorWidth.set(t,void 0)}setModel(t){this._model.set(t,void 0)}};dje=dko([uko(1,vh)],dje);function hko(e,t){return e.mappings.every(n=>fko(n.lineRangeMapping)||gko(n.lineRangeMapping)||t&&xtt(n.lineRangeMapping))}function fko(e){return e.original.length===0}function gko(e){return e.modified.length===0}function TOt(e,t){var n,r,o,s,a,l,d,u;return{enableSplitViewResizing:oi(e.enableSplitViewResizing,t.enableSplitViewResizing),splitViewDefaultRatio:Cro(e.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:oi(e.renderSideBySide,t.renderSideBySide),renderMarginRevertIcon:oi(e.renderMarginRevertIcon,t.renderMarginRevertIcon),maxComputationTime:tS(e.maxComputationTime,t.maxComputationTime,0,1073741824),maxFileSize:tS(e.maxFileSize,t.maxFileSize,0,1073741824),ignoreTrimWhitespace:oi(e.ignoreTrimWhitespace,t.ignoreTrimWhitespace),renderIndicators:oi(e.renderIndicators,t.renderIndicators),originalEditable:oi(e.originalEditable,t.originalEditable),diffCodeLens:oi(e.diffCodeLens,t.diffCodeLens),renderOverviewRuler:oi(e.renderOverviewRuler,t.renderOverviewRuler),diffWordWrap:La(e.diffWordWrap,t.diffWordWrap,["off","on","inherit"]),diffAlgorithm:La(e.diffAlgorithm,t.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:oi(e.accessibilityVerbose,t.accessibilityVerbose),experimental:{showMoves:oi((n=e.experimental)==null?void 0:n.showMoves,t.experimental.showMoves),showEmptyDecorations:oi((r=e.experimental)==null?void 0:r.showEmptyDecorations,t.experimental.showEmptyDecorations),useTrueInlineView:oi((o=e.experimental)==null?void 0:o.useTrueInlineView,t.experimental.useTrueInlineView)},hideUnchangedRegions:{enabled:oi(((s=e.hideUnchangedRegions)==null?void 0:s.enabled)??((a=e.experimental)==null?void 0:a.collapseUnchangedRegions),t.hideUnchangedRegions.enabled),contextLineCount:tS((l=e.hideUnchangedRegions)==null?void 0:l.contextLineCount,t.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:tS((d=e.hideUnchangedRegions)==null?void 0:d.minimumLineCount,t.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:tS((u=e.hideUnchangedRegions)==null?void 0:u.revealLineCount,t.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:oi(e.isInEmbeddedEditor,t.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:oi(e.onlyShowAccessibleDiffViewer,t.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:tS(e.renderSideBySideInlineBreakpoint,t.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:oi(e.useInlineViewWhenSpaceIsLimited,t.useInlineViewWhenSpaceIsLimited),renderGutterMenu:oi(e.renderGutterMenu,t.renderGutterMenu),compactMode:oi(e.compactMode,t.compactMode)}}class mko extends sR{constructor(t,n){super(),this._onDidChangeVisibility=this._register(new at),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=Xt(t,tn(".monaco-dropdown")),this._label=Xt(this._element,tn(".dropdown-label"));let r=n.labelRenderer;r||(r=s=>(s.textContent=n.label||"",null));for(const s of[rn.CLICK,rn.MOUSE_DOWN,ma.Tap])this._register(wt(this.element,s,a=>Qo.stop(a,!0)));for(const s of[rn.MOUSE_DOWN,ma.Tap])this._register(wt(this._label,s,a=>{qJe(a)&&a.button!==0||(this.visible?this.hide():this.show())}));this._register(wt(this._label,rn.KEY_DOWN,s=>{const a=new Us(s);(a.equals(3)||a.equals(10))&&(Qo.stop(s,!0),this.visible?this.hide():this.show())}));const o=r(this._label);o&&this._register(o),this._register(Bf.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class kko extends mko{constructor(t,n){super(t,n),this._options=n,this._actions=[],this.actions=n.actions||[]}set menuOptions(t){this._menuOptions=t}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(t){this._actions=t}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(t,n)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(t,n):void 0,getKeyBinding:t=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(t):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}class D1e extends Fb{get onDidChangeVisibility(){return this._onDidChangeVisibility.event}constructor(t,n,r,o=Object.create(null)){super(null,t,o),this.actionItem=null,this._onDidChangeVisibility=this._register(new at),this.menuActionsOrProvider=n,this.contextMenuProvider=r,this.options=o,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(t){this.actionItem=t;const n=s=>(this.element=Xt(s,tn("a.action-label")),this.renderLabel(this.element)),r=Array.isArray(this.menuActionsOrProvider),o={contextMenuProvider:this.contextMenuProvider,labelRenderer:n,menuAsChild:this.options.menuAsChild,actions:r?this.menuActionsOrProvider:void 0,actionProvider:r?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new kko(t,o)),this._register(this.dropdownMenu.onDidChangeVisibility(s=>{var a;(a=this.element)==null||a.setAttribute("aria-expanded",`${s}`),this._onDidChangeVisibility.fire(s)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const s=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return s.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}renderLabel(t){let n=[];return typeof this.options.classNames=="string"?n=this.options.classNames.split(/\s+/g).filter(r=>!!r):this.options.classNames&&(n=this.options.classNames),n.find(r=>r==="icon")||n.push("codicon"),t.classList.add(...n),this._action.label&&this._register(yp().setupManagedHover(this.options.hoverDelegate??eC("mouse"),t,this._action.label)),null}getTooltip(){let t=null;return this.action.tooltip?t=this.action.tooltip:this.action.label&&(t=this.action.label),t??void 0}setActionContext(t){super.setActionContext(t),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=t:this.dropdownMenu.menuOptions={context:t})}show(){var t;(t=this.dropdownMenu)==null||t.show()}updateEnabled(){var n,r;const t=!this.action.enabled;(n=this.actionItem)==null||n.classList.toggle("disabled",t),(r=this.element)==null||r.classList.toggle("disabled",t)}}const QOt=24;class vko extends ft{get onDidChangeDropdownVisibility(){return this._onDidChangeDropdownVisibility.event}constructor(t,n,r={orientation:0}){if(super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new ieo),this.originalPrimaryActions=[],this.originalSecondaryActions=[],this.hiddenActions=[],this.disposables=this._register(new xt),r.hoverDelegate=r.hoverDelegate??this._register(dQn()),this.options=r,this.toggleMenuAction=this._register(new BJ(()=>{var o;return(o=this.toggleMenuActionViewItem)==null?void 0:o.show()},r.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",t.appendChild(this.element),this.actionBar=this._register(new g1(this.element,{orientation:r.orientation,ariaLabel:r.ariaLabel,actionRunner:r.actionRunner,allowContextMenu:r.allowContextMenu,highlightToggledItems:r.highlightToggledItems,hoverDelegate:r.hoverDelegate,actionViewItemProvider:(o,s)=>{if(o.id===BJ.ID)return this.toggleMenuActionViewItem=new D1e(o,{getActions:()=>this.toggleMenuAction.menuActions},n,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:fi.asClassNameArray(r.moreIcon??zt.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,isMenu:!0,hoverDelegate:this.options.hoverDelegate}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(r.actionViewItemProvider){const a=r.actionViewItemProvider(o,s);if(a)return a}if(o instanceof JW){const a=new D1e(o,o.actions,n,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:o.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,hoverDelegate:this.options.hoverDelegate});return a.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(a),this.disposables.add(this._onDidChangeDropdownVisibility.add(a.onDidChangeVisibility)),a}}})),this.options.responsive){this.element.classList.add("responsive");const o=new ResizeObserver(()=>{this.setToolbarMaxWidth(this.element.getBoundingClientRect().width)});o.observe(this.element),this._store.add(Hn(()=>o.disconnect()))}}set actionRunner(t){this.actionBar.actionRunner=t}get actionRunner(){return this.actionBar.actionRunner}set context(t){var n;this.actionBar.context=t,(n=this.toggleMenuActionViewItem)==null||n.setActionContext(t);for(const r of this.submenuActionViewItems)r.setActionContext(t)}getElement(){return this.element}getItemAction(t){return this.actionBar.getAction(t)}getItemWidth(t){return this.actionBar.getWidth(t)}setActions(t,n){this.clear(),this.originalPrimaryActions=t?t.slice(0):[],this.originalSecondaryActions=n?n.slice(0):[];const r=t?t.slice(0):[];this.hasSecondaryActions=!!(n&&n.length>0),this.hasSecondaryActions&&n&&(this.toggleMenuAction.menuActions=n.slice(0),r.push(this.toggleMenuAction)),r.length>0&&this.options.trailingSeparator&&r.push(new pd),r.forEach(o=>{this.actionBar.push(o,{icon:this.options.icon??!0,label:this.options.label??!1,keybinding:this.getKeybindingLabel(o)})}),this.options.responsive&&(this.hiddenActions.length=0,this.setToolbarMaxWidth(this.element.getBoundingClientRect().width))}getKeybindingLabel(t){var r,o;const n=(o=(r=this.options).getKeyBinding)==null?void 0:o.call(r,t);return(n==null?void 0:n.getLabel())??void 0}getItemsWidthResponsive(){return this.actionBar.length()*QOt}setToolbarMaxWidth(t){if(this.actionBar.isEmpty()||this.getItemsWidthResponsive()<=t&&this.hiddenActions.length===0)return;if(this.getItemsWidthResponsive()>t)for(;this.getItemsWidthResponsive()>t&&this.actionBar.length()>0;){const r=this.originalPrimaryActions.length-this.hiddenActions.length-1;if(r<0)break;const o=Math.min(QOt,this.getItemWidth(r)),s=this.originalPrimaryActions[r];this.hiddenActions.unshift({action:s,size:o}),this.actionBar.pull(r),this.originalSecondaryActions.length===0&&this.hiddenActions.length===1&&this.actionBar.push(this.toggleMenuAction,{icon:this.options.icon??!0,label:this.options.label??!1,keybinding:this.getKeybindingLabel(this.toggleMenuAction)})}else for(;this.hiddenActions.length>0;){const r=this.hiddenActions.shift();if(this.getItemsWidthResponsive()+r.size>t){this.hiddenActions.unshift(r);break}this.actionBar.push(r.action,{icon:this.options.icon??!0,label:this.options.label??!1,keybinding:this.getKeybindingLabel(r.action),index:this.originalPrimaryActions.length-this.hiddenActions.length-1}),this.originalSecondaryActions.length===0&&this.hiddenActions.length===1&&(this.toggleMenuAction.menuActions=[],this.actionBar.pull(this.actionBar.length()-1))}const n=this.hiddenActions.map(r=>r.action);if(this.originalSecondaryActions.length>0||n.length>0){const r=this.originalSecondaryActions.slice(0);this.toggleMenuAction.menuActions=pd.join(n,r)}}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}const Wve=class Wve extends n2{constructor(t,n){n=n||U(17,"More Actions..."),super(Wve.ID,n,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=t}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(t){this._menuActions=t}};Wve.ID="toolbar.toggle.more";let BJ=Wve;class h3e{constructor(t,n,r=n){this.modifierLabels=[null],this.modifierLabels[2]=t,this.modifierLabels[1]=n,this.modifierLabels[3]=r}toLabel(t,n,r){if(n.length===0)return null;const o=[];for(let s=0,a=n.length;sthis.onDidChangeItemsExternal(t)))}onDidChangeItemsExternal(t){var n,r;this._onDidChangeStorage.pause();try{(n=t.changed)==null||n.forEach((o,s)=>this.acceptExternal(s,o)),(r=t.deleted)==null||r.forEach(o=>this.acceptExternal(o,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(t,n){if(this.state===ET.Closed)return;let r=!1;Qv(n)?r=this.cache.delete(t):this.cache.get(t)!==n&&(this.cache.set(t,n),r=!0),r&&this._onDidChangeStorage.fire({key:t,external:!0})}get(t,n){const r=this.cache.get(t);return Qv(r)?n:r}getBoolean(t,n){const r=this.get(t);return Qv(r)?n:r==="true"}getNumber(t,n){const r=this.get(t);return Qv(r)?n:parseInt(r,10)}async set(t,n,r=!1){if(this.state===ET.Closed)return;if(Qv(n))return this.delete(t,r);const o=Pd(n)||Array.isArray(n)?Imo(n):String(n);if(this.cache.get(t)!==o)return this.cache.set(t,o),this.pendingInserts.set(t,o),this.pendingDeletes.delete(t),this._onDidChangeStorage.fire({key:t,external:r}),this.doFlush()}async delete(t,n=!1){if(!(this.state===ET.Closed||!this.cache.delete(t)))return this.pendingDeletes.has(t)||this.pendingDeletes.add(t),this.pendingInserts.delete(t),this._onDidChangeStorage.fire({key:t,external:n}),this.doFlush()}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const t={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(t).finally(()=>{var n;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(n=this.whenFlushedCallbacks.pop())==null||n()})}async flush(t){if(!(this.state===ET.Closed||this.pendingClose))return this.doFlush(t)}async doFlush(t){return this.options.hint===WU.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger(()=>this.flushPending(),t)}async whenFlushed(){if(this.hasPending)return new Promise(t=>this.whenFlushedCallbacks.push(t))}},RD.DEFAULT_FLUSH_DELAY=100,RD);class nxe{constructor(){this.onDidChangeItemsExternal=an.None,this.items=new Map}async updateItems(t){var n,r;(n=t.insert)==null||n.forEach((o,s)=>this.items.set(s,o)),(r=t.delete)==null||r.forEach(o=>this.items.delete(o))}}const uhe="__$__targetStorageMarker",Bg=Cr("storageService");var F9;(function(e){e[e.NONE=0]="NONE",e[e.SHUTDOWN=1]="SHUTDOWN"})(F9||(F9={}));function Cko(e){const t=e.get(uhe);if(t)try{return JSON.parse(t)}catch{}return Object.create(null)}const Vve=class Vve extends ft{constructor(t={flushInterval:Vve.DEFAULT_FLUSH_INTERVAL}){super(),this._onDidChangeValue=this._register(new rR),this._onDidChangeTarget=this._register(new rR),this._onWillSaveState=this._register(new at),this.onWillSaveState=this._onWillSaveState.event,this.runFlushWhenIdle=this._register(new ts),this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0,this.flushWhenIdleScheduler=this._register(new Es(()=>this.doFlushWhenIdle(),t.flushInterval))}onDidChangeValue(t,n,r){return an.filter(this._onDidChangeValue.event,o=>o.scope===t&&(n===void 0||o.key===n),r)}doFlushWhenIdle(){this.runFlushWhenIdle.value=QJe(()=>{this.shouldFlushWhenIdle()&&this.flush(),this.flushWhenIdleScheduler.schedule()})}shouldFlushWhenIdle(){return!0}emitDidChangeValue(t,n){const{key:r,external:o}=n;if(r===uhe){switch(t){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:t})}else this._onDidChangeValue.fire({scope:t,key:r,target:this.getKeyTargets(t)[r],external:o})}get(t,n,r){var o;return(o=this.getStorage(n))==null?void 0:o.get(t,r)}getBoolean(t,n,r){var o;return(o=this.getStorage(n))==null?void 0:o.getBoolean(t,r)}getNumber(t,n,r){var o;return(o=this.getStorage(n))==null?void 0:o.getNumber(t,r)}store(t,n,r,o,s=!1){if(Qv(n)){this.remove(t,r,s);return}this.withPausedEmitters(()=>{var a;this.updateKeyTarget(t,r,o),(a=this.getStorage(r))==null||a.set(t,n,s)})}remove(t,n,r=!1){this.withPausedEmitters(()=>{var o;this.updateKeyTarget(t,n,void 0),(o=this.getStorage(n))==null||o.delete(t,r)})}withPausedEmitters(t){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{t()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(t,n,r,o=!1){var a,l;const s=this.getKeyTargets(n);typeof r=="number"?s[t]!==r&&(s[t]=r,(a=this.getStorage(n))==null||a.set(uhe,JSON.stringify(s),o)):typeof s[t]=="number"&&(delete s[t],(l=this.getStorage(n))==null||l.set(uhe,JSON.stringify(s),o))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(t){switch(t){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(t){const n=this.getStorage(t);return n?Cko(n):Object.create(null)}async flush(t=F9.NONE){this._onWillSaveState.fire({reason:t});const n=this.getStorage(-1),r=this.getStorage(0),o=this.getStorage(1);switch(t){case F9.NONE:await UK.settled([(n==null?void 0:n.whenFlushed())??Promise.resolve(),(r==null?void 0:r.whenFlushed())??Promise.resolve(),(o==null?void 0:o.whenFlushed())??Promise.resolve()]);break;case F9.SHUTDOWN:await UK.settled([(n==null?void 0:n.flush(0))??Promise.resolve(),(r==null?void 0:r.flush(0))??Promise.resolve(),(o==null?void 0:o.flush(0))??Promise.resolve()]);break}}};Vve.DEFAULT_FLUSH_INTERVAL=60*1e3;let uje=Vve;class _ko extends uje{constructor(){super(),this.applicationStorage=this._register(new txe(new nxe,{hint:WU.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new txe(new nxe,{hint:WU.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new txe(new nxe,{hint:WU.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(t=>this.emitDidChangeValue(1,t))),this._register(this.profileStorage.onDidChangeStorage(t=>this.emitDidChangeValue(0,t))),this._register(this.applicationStorage.onDidChangeStorage(t=>this.emitDidChangeValue(-1,t)))}getStorage(t){switch(t){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}shouldFlushWhenIdle(){return!1}}function Sko(e,t){const n={...t};for(const r in e){const o=e[r];n[r]=o!==void 0?en(o):void 0}return n}const fDn={keybindingLabelBackground:en(Iso),keybindingLabelForeground:en(Mso),keybindingLabelBorder:en(Pso),keybindingLabelBottomBorder:en(Fso),keybindingLabelShadow:en(Jz)},Lko={buttonForeground:en(Ybe),buttonSeparator:en(Oso),buttonBackground:en(dQ),buttonHoverBackground:en(yso),buttonSecondaryForeground:en(Q7n),buttonSecondaryBackground:en(Gme),buttonSecondaryHoverBackground:en(_so),buttonBorder:en(Cso)},xko={progressBarBackground:en(Foo)},B1e={inputActiveOptionBorder:en(Die),inputActiveOptionForeground:en(Bie),inputActiveOptionBackground:en(eH)};en(IG),en(Sso),en(Lso),en(xso),en(Eso),en(Tso),en(Qso);const Btt={checkboxBackground:en(Eet),checkboxBorder:en(Dso),checkboxForeground:en(Tet),checkboxDisabledBackground:en(Bso),checkboxDisabledForeground:en(Rso)};en(Gk),en(Hbe),en(Jz),en(Cet),en(iso),en(rso),en(oso),en(Moo);const R1e={inputBackground:en(jNe),inputForeground:en(E7n),inputBorder:en(T7n),inputValidationInfoBorder:en(gso),inputValidationInfoBackground:en(hso),inputValidationInfoForeground:en(fso),inputValidationWarningBorder:en(vso),inputValidationWarningBackground:en(mso),inputValidationWarningForeground:en(kso),inputValidationErrorBorder:en(bso),inputValidationErrorBackground:en(Aso),inputValidationErrorForeground:en(pso)},Eko={listFilterWidgetBackground:en(qso),listFilterWidgetOutline:en(Kso),listFilterWidgetNoMatchesOutline:en(Jso),listFilterWidgetShadow:en(eao),inputBoxStyles:R1e,toggleStyles:B1e},gDn={badgeBackground:en(ihe),badgeForeground:en(Poo),badgeBorder:en(ro)};en(tso),en(eso),en(u3t),en(u3t),en(nso);const sH={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:en(Nso),listFocusForeground:en(Uso),listFocusOutline:en(jso),listActiveSelectionBackground:en(cR),listActiveSelectionForeground:en(oJ),listActiveSelectionIconForeground:en(D7n),listFocusAndSelectionOutline:en(Wso),listFocusAndSelectionBackground:en(cR),listFocusAndSelectionForeground:en(oJ),listInactiveSelectionBackground:en(Vso),listInactiveSelectionIconForeground:en(Hso),listInactiveSelectionForeground:en(zso),listInactiveFocusBackground:en($so),listInactiveFocusOutline:en(Xso),listHoverBackground:en(B7n),listHoverForeground:en(R7n),listDropOverBackground:en(Gso),listDropBetweenBackground:en(Yso),listSelectionOutline:en(Va),listHoverOutline:en(Va),treeIndentGuidesStroke:en(I7n),treeInactiveIndentGuidesStroke:en(tao),treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:en(zbe),tableColumnsBorder:en(nao),tableOddRowsBackgroundColor:en(iao)};function TI(e){return Sko(e,sH)}const Tko={selectBackground:en(Gbe),selectListBackground:en(wso),selectForeground:en(Let),decoratorRightForeground:en(M7n),selectBorder:en(xet),focusBorder:en(_y),listFocusBackground:en(aJ),listInactiveSelectionIconForeground:en(Qet),listFocusForeground:en(sJ),listFocusOutline:A7n(Va,Dt.transparent.toString()),listHoverBackground:en(B7n),listHoverForeground:en(R7n),listHoverOutline:en(Va),selectListBorder:en(pet),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropOverBackground:void 0,listDropBetweenBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0,treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:void 0},Qko={shadowColor:en(Jz),borderColor:en(oao),foregroundColor:en(sao),backgroundColor:en(aao),selectionForegroundColor:en(lao),selectionBackgroundColor:en(cao),selectionBorderColor:en(dao),separatorColor:en(uao),scrollbarShadow:en(zbe),scrollbarSliderBackground:en(y7n),scrollbarSliderHoverBackground:en(C7n),scrollbarSliderActiveBackground:en(_7n)};function Dko(e,t){if(qy)return!1;const n=Bko(e,t),r=e.getValue("window");return(r==null?void 0:r.menuStyle)==="native"?!(!Tr&&!n):(r==null?void 0:r.menuStyle)==="custom"?!1:n}function Bko(e,t){return t||(t=mDn(e)),t==="native"}function mDn(e){if(qy)return"custom";const t=e.getValue("window");if(t){if(Tr&&t.nativeTabs===!0||Tr&&t.nativeFullScreen===!1)return"native";const o=t.titleBarStyle;if(o==="native"||o==="custom")return o}return"custom"}function Rko(e){if(qy||Tr||mDn(e)==="native")return"native";const t=e.getValue("window"),n=t==null?void 0:t.controlsStyle;return n==="custom"||n==="hidden"?n:"native"}var f3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},om=function(e,t){return function(n,r){t(n,r,e)}};function Iko(e,t){const n=[];return Mko(e,n),n}function Mko(e,t,n){const r=TS.getInstance(),o=r.keyStatus.altKey||(mh||v1)&&r.keyStatus.shiftKey;ADn(e,t,o,s=>s==="navigation")}function kDn(e,t,n,r){const o={primary:[],secondary:[]};return vDn(e,o,t,n,r),o}function Pko(e,t,n,r){const o=[];return vDn(e,o,t,n,r),o}function vDn(e,t,n,r,o){ADn(e,t,!1,typeof n=="string"?a=>a===n:n,r,o)}function ADn(e,t,n,r=a=>a==="navigation",o=()=>!1,s=!1){let a,l;Array.isArray(t)?(a=t,l=t):(a=t.primary,l=t.secondary);const d=new Set;for(const[u,h]of e){let g;r(u)?(g=a,g.length>0&&s&&g.push(new pd)):(g=l,g.length>0&&g.push(new pd));for(let m of h){n&&(m=m instanceof i2&&m.alt?m.alt:m);const v=g.push(m);m instanceof JW&&d.add({group:u,action:m,index:v-1})}}for(const{group:u,action:h,index:g}of d){const m=r(u)?a:l,v=h.actions;o(h,u,m.length)&&m.splice(g,1,...v)}}let D6=class extends gV{constructor(t,n,r,o,s,a,l,d){super(void 0,t,{icon:!!(t.class||t.item.icon),label:!t.class&&!t.item.icon,draggable:n==null?void 0:n.draggable,keybinding:n==null?void 0:n.keybinding,hoverDelegate:n==null?void 0:n.hoverDelegate,keybindingNotRenderedWithLabel:n==null?void 0:n.keybindingNotRenderedWithLabel}),this._options=n,this._keybindingService=r,this._notificationService=o,this._contextKeyService=s,this._themeService=a,this._contextMenuService=l,this._accessibilityService=d,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new ts),this._altKey=TS.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(t){t.preventDefault(),t.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(n){this._notificationService.error(n)}}render(t){if(super.render(t),t.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let n=!1;const r=()=>{var s;const o=!!((s=this._menuItemAction.alt)!=null&&s.enabled)&&(!this._accessibilityService.isMotionReduced()||n)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&n);o!==this._wantsAltCommand&&(this._wantsAltCommand=o,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(r)),this._register(wt(t,"mouseleave",o=>{n=!1,r()})),this._register(wt(t,"mouseenter",o=>{n=!0,r()})),r()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var s;const t=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),n=t&&t.getLabel(),r=this._commandAction.tooltip||this._commandAction.label;let o=n?U(1644,"{0} ({1})",r,n):r;if(!this._wantsAltCommand&&((s=this._menuItemAction.alt)!=null&&s.enabled)){const a=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,l=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),d=l&&l.getLabel(),u=d?U(1645,"{0} ({1})",a,d):a;o=U(1646,`{0} -[{1}] {2}`,o,Dtt.modifierLabels[b0].altKey,u)}return o}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(t){this._itemClassDispose.value=void 0;const{element:n,label:r}=this;if(!n||!r)return;const o=this._commandAction.checked&&yko(t.toggled)&&t.toggled.icon?t.toggled.icon:t.icon;if(o)if(fi.isThemeIcon(o)){const s=fi.asClassNameArray(o);r.classList.add(...s),this._itemClassDispose.value=Hn(()=>{r.classList.remove(...s)})}else r.style.backgroundImage=j8(this._themeService.getColorTheme().type)?xy(o.dark):xy(o.light),r.classList.add("icon"),this._itemClassDispose.value=G4(Hn(()=>{r.style.backgroundImage="",r.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};D6=f3e([om(2,Do),om(3,ic),om(4,Qi),om(5,Dl),om(6,S2),om(7,vh)],D6);class Rtt extends D6{render(t){var n;this.options.label=!0,this.options.icon=!1,super.render(t),t.classList.add("text-only"),t.classList.toggle("use-comma",((n=this._options)==null?void 0:n.useComma)??!1)}updateLabel(){var n;const t=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!t)return super.updateLabel();if(this.label){const r=Rtt._symbolPrintEnter(t);(n=this._options)!=null&&n.conversational?this.label.textContent=U(1647,"{1} to {0}",this._action.label,r):this.label.textContent=U(1648,"{0} ({1})",this._action.label,r)}}static _symbolPrintEnter(t){var n;return(n=t.getLabel())==null?void 0:n.replace(/\benter\b/gi,"⏎").replace(/\bEscape\b/gi,"Esc")}}let hje=class extends D1e{constructor(t,n,r,o,s){const a={...n,menuAsChild:(n==null?void 0:n.menuAsChild)??!1,classNames:(n==null?void 0:n.classNames)??(fi.isThemeIcon(t.item.icon)?fi.asClassName(t.item.icon):void 0),keybindingProvider:(n==null?void 0:n.keybindingProvider)??(l=>r.lookupKeybinding(l.id))};super(t,{getActions:()=>t.actions},o,a),this._keybindingService=r,this._contextMenuService=o,this._themeService=s}render(t){super.render(t),Oo(this.element),t.classList.add("menu-entry");const n=this._action,{icon:r}=n.item;if(r&&!fi.isThemeIcon(r)){this.element.classList.add("icon");const o=()=>{this.element&&(this.element.style.backgroundImage=j8(this._themeService.getColorTheme().type)?xy(r.dark):xy(r.light))};o(),this._register(this._themeService.onDidColorThemeChange(()=>{o()}))}}};hje=f3e([om(2,Do),om(3,S2),om(4,Dl)],hje);let fje=class extends Fb{constructor(t,n,r,o,s,a,l,d){super(null,t),this._keybindingService=r,this._notificationService=o,this._contextMenuService=s,this._menuService=a,this._instaService=l,this._storageService=d,this._defaultActionDisposables=this._register(new xt),this._container=null,this._options=n,this._storageKey=`${t.item.submenu.id}_lastActionId`;let u;const h=n!=null&&n.togglePrimaryAction?d.get(this._storageKey,1):void 0;h&&(u=t.actions.find(m=>h===m.id)),u||(u=t.actions[0]),this._defaultAction=this._defaultActionDisposables.add(this._instaService.createInstance(D6,u,{keybinding:this._getDefaultActionKeybindingLabel(u)}));const g={keybindingProvider:m=>this._keybindingService.lookupKeybinding(m.id),...n,menuAsChild:(n==null?void 0:n.menuAsChild)??!0,classNames:(n==null?void 0:n.classNames)??["codicon","codicon-chevron-down"],actionRunner:(n==null?void 0:n.actionRunner)??this._register(new sR)};this._dropdown=this._register(new D1e(t,t.actions,this._contextMenuService,g)),n!=null&&n.togglePrimaryAction&&this._register(this._dropdown.actionRunner.onDidRun(m=>{m.action instanceof i2&&this.update(m.action)}))}update(t){var n;(n=this._options)!=null&&n.togglePrimaryAction&&this._storageService.store(this._storageKey,t.id,1,1),this._defaultActionDisposables.clear(),this._defaultAction=this._defaultActionDisposables.add(this._instaService.createInstance(D6,t,{keybinding:this._getDefaultActionKeybindingLabel(t)})),this._defaultAction.actionRunner=this._defaultActionDisposables.add(new class extends sR{async runAction(r,o){await r.run(void 0)}}),this._container&&this._defaultAction.render(Obe(this._container,tn(".action-container")))}_getDefaultActionKeybindingLabel(t){var r;let n;if((r=this._options)!=null&&r.renderKeybindingWithDefaultActionLabel){const o=this._keybindingService.lookupKeybinding(t.id);o&&(n=`(${o.getLabel()})`)}return n}setActionContext(t){super.setActionContext(t),this._defaultAction.setActionContext(t),this._dropdown.setActionContext(t)}set actionRunner(t){super.actionRunner=t,this._defaultAction.actionRunner=t,this._dropdown.actionRunner=t}get actionRunner(){return super.actionRunner}render(t){this._container=t,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const n=tn(".action-container");this._defaultAction.render(Xt(this._container,n)),this._register(wt(n,rn.KEY_DOWN,o=>{const s=new Us(o);s.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),s.stopPropagation())}));const r=tn(".dropdown-action-container");this._dropdown.render(Xt(this._container,r)),this._register(wt(r,rn.KEY_DOWN,o=>{var a;const s=new Us(o);s.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(a=this._defaultAction.element)==null||a.focus(),s.stopPropagation())}))}focus(t){t?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(t){t?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}};fje=f3e([om(2,Do),om(3,ic),om(4,S2),om(5,wA),om(6,Yn),om(7,Bg)],fje);let gje=class extends g0o{constructor(t,n,r){super(null,t,t.actions.map(o=>({text:o.id===pd.ID?"─────────":o.label,isDisabled:!o.enabled})),0,n,Tko,{ariaLabel:t.tooltip,optionsAsChildren:!0,useCustomDrawn:!Dko(r)}),this.select(Math.max(0,t.actions.findIndex(o=>o.checked)))}render(t){super.render(t),t.style.borderColor=en(xet)}runAction(t,n){const r=this.action.actions[n];r&&this.actionRunner.run(r)}};gje=f3e([om(1,wL),om(2,ar)],gje);function Itt(e,t,n){return t instanceof i2?e.createInstance(D6,t,n):t instanceof uD?t.item.isSelection?e.createInstance(gje,t):t.item.isSplitButton?e.createInstance(fje,t,{...n,togglePrimaryAction:typeof t.item.isSplitButton!="boolean"?t.item.isSplitButton.togglePrimaryAction:!1}):e.createInstance(hje,t,n):void 0}var g3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},dy=function(e,t){return function(n,r){t(n,r,e)}},EF,UG;let mje=class{constructor(t,n,r){this._commandService=t,this._keybindingService=n,this._hiddenStates=new kje(r)}createMenu(t,n,r){return new I1e(t,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...r},this._commandService,this._keybindingService,n)}getMenuActions(t,n,r){const o=new I1e(t,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...r},this._commandService,this._keybindingService,n),s=o.getActions(r);return o.dispose(),s}resetHiddenStates(t){this._hiddenStates.reset(t)}};mje=g3e([dy(0,ba),dy(1,Do),dy(2,Bg)],mje);var ID;let kje=(ID=class{constructor(t){this._storageService=t,this._disposables=new xt,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const n=t.get(EF._key,0,"{}");this._data=JSON.parse(n)}catch{this._data=Object.create(null)}this._disposables.add(t.onDidChangeValue(0,EF._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const n=t.get(EF._key,0,"{}");this._data=JSON.parse(n)}catch(n){console.log("FAILED to read storage after UPDATE",n)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(t,n){return this._hiddenByDefaultCache.get(`${t.id}/${n}`)??!1}setDefaultState(t,n,r){this._hiddenByDefaultCache.set(`${t.id}/${n}`,r)}isHidden(t,n){var s;const r=this._isHiddenByDefault(t,n),o=((s=this._data[t.id])==null?void 0:s.includes(n))??!1;return r?!o:o}updateHidden(t,n,r){this._isHiddenByDefault(t,n)&&(r=!r);const s=this._data[t.id];if(r)s?s.indexOf(n)<0&&s.push(n):this._data[t.id]=[n];else if(s){const a=s.indexOf(n);a>=0&&oto(s,a),s.length===0&&delete this._data[t.id]}this._persist()}reset(t){if(t===void 0)this._data=Object.create(null),this._persist();else{for(const{id:n}of t)this._data[n]&&delete this._data[n];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const t=JSON.stringify(this._data);this._storageService.store(EF._key,t,0,0)}finally{this._ignoreChangeEvent=!1}}},EF=ID,ID._key="menu.hiddenCommands",ID);kje=EF=g3e([dy(0,Bg)],kje);class EZ{constructor(t,n){this._id=t,this._collectContextKeysForSubmenus=n,this._menuGroups=[],this._allMenuIds=new Set,this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get allMenuIds(){return this._allMenuIds}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._allMenuIds.clear(),this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const t=this._sort(Iu.getMenuItems(this._id));let n;for(const r of t){const o=r.group||"";(!n||n[0]!==o)&&(n=[o,[]],this._menuGroups.push(n)),n[1].push(r),this._collectContextKeysAndSubmenuIds(r)}this._allMenuIds.add(this._id)}_sort(t){return t}_collectContextKeysAndSubmenuIds(t){if(EZ._fillInKbExprKeys(t.when,this._structureContextKeys),LU(t)){if(t.command.precondition&&EZ._fillInKbExprKeys(t.command.precondition,this._preconditionContextKeys),t.command.toggled){const n=t.command.toggled.condition||t.command.toggled;EZ._fillInKbExprKeys(n,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&(Iu.getMenuItems(t.submenu).forEach(this._collectContextKeysAndSubmenuIds,this),this._allMenuIds.add(t.submenu))}static _fillInKbExprKeys(t,n){if(t)for(const r of t.keys())n.add(r)}}let vje=UG=class extends EZ{constructor(t,n,r,o,s,a){super(t,r),this._hiddenStates=n,this._commandService=o,this._keybindingService=s,this._contextKeyService=a,this.refresh()}createActionGroups(t){const n=[];for(const r of this._menuGroups){const[o,s]=r;let a;for(const l of s)if(this._contextKeyService.contextMatchesRules(l.when)){const d=LU(l);d&&this._hiddenStates.setDefaultState(this._id,l.command.id,!!l.isHiddenByDefault);const u=Fko(this._id,d?l.command:l,this._hiddenStates);if(d){const h=pDn(this._commandService,this._keybindingService,l.command.id,l.when);(a??(a=[])).push(new i2(l.command,l.alt,t,u,h,this._contextKeyService,this._commandService))}else{const h=new UG(l.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._keybindingService,this._contextKeyService).createActionGroups(t),g=pd.join(...h.map(m=>m[1]));g.length>0&&(a??(a=[])).push(new uD(l,u,g))}}a&&a.length>0&&n.push([o,a])}return n}_sort(t){return t.sort(UG._compareMenuItems)}static _compareMenuItems(t,n){const r=t.group,o=n.group;if(r!==o){if(r){if(!o)return-1}else return 1;if(r==="navigation")return-1;if(o==="navigation")return 1;const l=r.localeCompare(o);if(l!==0)return l}const s=t.order||0,a=n.order||0;return sa?1:UG._compareTitles(LU(t)?t.command.title:t.title,LU(n)?n.command.title:n.title)}static _compareTitles(t,n){const r=typeof t=="string"?t:t.original,o=typeof n=="string"?n:n.original;return r.localeCompare(o)}};vje=UG=g3e([dy(3,ba),dy(4,Do),dy(5,Qi)],vje);let I1e=class{constructor(t,n,r,o,s,a){this._disposables=new xt,this._menuInfo=new vje(t,n,r.emitEventsForSubmenuChanges,o,s,a);const l=new Es(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},r.eventDebounceDelay);this._disposables.add(l),this._disposables.add(Iu.onDidChangeMenu(g=>{for(const m of this._menuInfo.allMenuIds)if(g.has(m)){l.schedule();break}}));const d=this._disposables.add(new xt),u=g=>{let m=!1,v=!1,f=!1;for(const k of g)if(m=m||k.isStructuralChange,v=v||k.isEnablementChange,f=f||k.isToggleChange,m&&v&&f)break;return{menu:this,isStructuralChange:m,isEnablementChange:v,isToggleChange:f}},h=()=>{d.add(a.onDidChangeContext(g=>{const m=g.affectsSome(this._menuInfo.structureContextKeys),v=g.affectsSome(this._menuInfo.preconditionContextKeys),f=g.affectsSome(this._menuInfo.toggledContextKeys);(m||v||f)&&this._onDidChange.fire({menu:this,isStructuralChange:m,isEnablementChange:v,isToggleChange:f})})),d.add(n.onDidChange(g=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new M6n({onWillAddFirstListener:h,onDidRemoveLastListener:d.clear.bind(d),delay:r.eventDebounceDelay,merge:u}),this.onDidChange=this._onDidChange.event}getActions(t){return this._menuInfo.createActionGroups(t)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};I1e=g3e([dy(3,ba),dy(4,Do),dy(5,Qi)],I1e);function Fko(e,t,n){const r=Ono(t)?t.submenu.id:t.id,o=typeof t.title=="string"?t.title:t.title.value,s=dD({id:`hide/${e.id}/${r}`,label:U(1651,"Hide '{0}'",o),run(){n.updateHidden(e,r,!0)}}),a=dD({id:`toggle/${e.id}/${r}`,label:o,get checked(){return!n.isHidden(e,r)},run(){n.updateHidden(e,r,!!this.checked)}});return{hide:s,toggle:a,get isHidden(){return!a.checked}}}function pDn(e,t,n,r=void 0,o=!0){return dD({id:`configureKeybinding/${n}`,label:U(1652,"Configure Keybinding"),enabled:o,run(){const a=!!!t.lookupKeybinding(n)&&r?r.serialize():void 0;e.executeCommand("workbench.action.openGlobalKeybindings",`@command:${n}`+(a?` +when:${a}`:""))}})}const bDn=Cr("IActionViewItemService");class Nko{constructor(){this._providers=new Map,this._onDidChange=new at,this.onDidChange=this._onDidChange.event}dispose(){this._onDidChange.dispose()}lookUp(t,n){return this._providers.get(this._makeKey(t,n))}_makeKey(t,n){return`${t.id}/${n instanceof Wn?n.id:n}`}}zr(bDn,Nko,1);var wDn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Rk=function(e,t){return function(n,r){t(n,r,e)}};let M1e=class extends vko{constructor(t,n,r,o,s,a,l,d){super(t,s,{getKeyBinding:h=>a.lookupKeybinding(h.id)??void 0,...n,allowContextMenu:!0,skipTelemetry:typeof(n==null?void 0:n.telemetrySource)=="string"}),this._options=n,this._menuService=r,this._contextKeyService=o,this._contextMenuService=s,this._keybindingService=a,this._commandService=l,this._sessionDisposables=this._store.add(new xt);const u=n==null?void 0:n.telemetrySource;u&&this._store.add(this.actionBar.onDidRun(h=>d.publicLog2("workbenchActionExecuted",{id:h.action.id,from:u})))}setActions(t,n=[],r){var h,g,m;this._sessionDisposables.clear();const o=t.slice(),s=n.slice(),a=[];let l=0;const d=[];let u=!1;if(((h=this._options)==null?void 0:h.hiddenItemStrategy)!==-1)for(let v=0;vA==null?void 0:A.id)),f=this._options.overflowBehavior.maxItems-v.size;let k=0;for(let A=0;A=f&&(o[A]=void 0,d[A]=p))}}gbt(o),gbt(d),super.setActions(o,pd.join(d,s)),(a.length>0||o.length>0)&&this._sessionDisposables.add(wt(this.getElement(),"contextmenu",v=>{var b,w,O,y,C;const f=new Xh(ii(this.getElement()),v),k=this.getItemAction(f.target);if(!k)return;f.preventDefault(),f.stopPropagation();const A=[];if(k instanceof i2&&k.menuKeybinding)A.push(k.menuKeybinding);else if(!(k instanceof uD||k instanceof BJ)){const _=!!this._keybindingService.lookupKeybinding(k.id);A.push(pDn(this._commandService,this._keybindingService,k.id,void 0,_))}if(a.length>0){let _=!1;if(l===1&&((b=this._options)==null?void 0:b.hiddenItemStrategy)===0){_=!0;for(let S=0;Sthis._menuService.resetHiddenStates(r)}))),p.length!==0&&this._contextMenuService.showContextMenu({getAnchor:()=>f,getActions:()=>p,menuId:(O=this._options)==null?void 0:O.contextMenu,menuActionOptions:{renderShortTitle:!0,...(y=this._options)==null?void 0:y.menuOptions},skipTelemetry:typeof((C=this._options)==null?void 0:C.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};M1e=wDn([Rk(2,wA),Rk(3,Qi),Rk(4,S2),Rk(5,Do),Rk(6,ba),Rk(7,Nf)],M1e);let RJ=class extends M1e{get onDidChangeMenuItems(){return this._onDidChangeMenuItems.event}constructor(t,n,r,o,s,a,l,d,u,h,g){super(t,{resetMenu:n,...r,actionViewItemProvider:(f,k)=>{let A=h.lookUp(n,f instanceof uD?f.item.submenu.id:f.id);A||(A=r==null?void 0:r.actionViewItemProvider);const p=A==null?void 0:A(f,k,g,ii(t).vscodeWindowId);return p||Itt(g,f,k)}},o,s,a,l,d,u),this._onDidChangeMenuItems=this._store.add(new at);const m=this._store.add(o.createMenu(n,s,{emitEventsForSubmenuChanges:!0,eventDebounceDelay:r==null?void 0:r.eventDebounceDelay})),v=()=>{var A,p,b;const{primary:f,secondary:k}=kDn(m.getActions(r==null?void 0:r.menuOptions),(A=r==null?void 0:r.toolbarOptions)==null?void 0:A.primaryGroup,(p=r==null?void 0:r.toolbarOptions)==null?void 0:p.shouldInlineSubmenu,(b=r==null?void 0:r.toolbarOptions)==null?void 0:b.useSeparatorsInPrimaryActions);t.classList.toggle("has-no-actions",f.length===0&&k.length===0),super.setActions(f,k)};this._store.add(m.onDidChange(()=>{v(),this._onDidChangeMenuItems.fire(this)})),this._store.add(h.onDidChange(f=>{f===n&&v()})),v()}setActions(){throw new ui("This toolbar is populated from a menu.")}};RJ=wDn([Rk(3,wA),Rk(4,Qi),Rk(5,S2),Rk(6,Do),Rk(7,ba),Rk(8,Nf),Rk(9,bDn),Rk(10,Yn)],RJ);var Uko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DOt=function(e,t){return function(n,r){t(n,r,e)}};const pm=Cr("hoverService");let mV=class extends ft{get delay(){var t;return this.isInstantlyHovering()?0:(t=this.hoverOptions)!=null&&t.dynamicDelay?n=>{var r,o;return((o=(r=this.hoverOptions)==null?void 0:r.dynamicDelay)==null?void 0:o.call(r,n))??this._delay}:this._delay}constructor(t,n,r={},o,s){super(),this.placement=t,this.hoverOptions=n,this.overrideOptions=r,this.configurationService=o,this.hoverService=s,this.lastHoverHideTime=0,this.timeLimit=200,this.hoverDisposables=this._register(new xt),this._delay=this.configurationService.getValue("workbench.hover.delay"),this._register(this.configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))}))}showHover(t,n){const r=typeof this.overrideOptions=="function"?this.overrideOptions(t,n):this.overrideOptions;this.hoverDisposables.clear();const o=ec(t.target)?[t.target]:t.target.targetElements;for(const a of o)this.hoverDisposables.add(wc(a,"keydown",l=>{l.equals(9)&&this.hoverService.hideHover()}));const s=ec(t.content)?void 0:typeof t.content=="string"?t.content.toString():t.content.value;return this.hoverService.showInstantHover({...t,...r,persistence:{hideOnKeyDown:!0,...r.persistence},id:s,appearance:{...t.appearance,compact:!0,skipFadeInAnimation:this.isInstantlyHovering(),...r.appearance}},n)}isInstantlyHovering(){var t;return!!((t=this.hoverOptions)!=null&&t.instantHover)&&Date.now()-this.lastHoverHideTimethis._editor.getScrollTop()),this.isScrollTopZero=this.scrollTop.map(a=>a===0),this.modelAttached=Ko(this,this._editor.onDidChangeModel,a=>this._editor.hasModel()),this.editorOnDidChangeViewZones=A0("onDidChangeViewZones",this._editor.onDidChangeViewZones),this.editorOnDidContentSizeChange=A0("onDidContentSizeChange",this._editor.onDidContentSizeChange),this.domNodeSizeChanged=Mv("domNodeSizeChanged"),this.views=new Map,this._domNode.className="gutter monaco-editor";const o=this._domNode.appendChild(wo("div.scroll-decoration",{role:"presentation",ariaHidden:"true",style:{width:"100%"}}).root),s=new ResizeObserver(()=>{la(a=>{this.domNodeSizeChanged.trigger(a)})});s.observe(this._domNode),this._register(Hn(()=>s.disconnect())),this._register(Oi(a=>{o.className=this.isScrollTopZero.read(a)?"":"scroll-decoration"})),this._register(Oi(a=>this.render(a)))}dispose(){super.dispose(),mu(this._domNode)}render(t){if(!this.modelAttached.read(t))return;this.domNodeSizeChanged.read(t),this.editorOnDidChangeViewZones.read(t),this.editorOnDidContentSizeChange.read(t);const n=this.scrollTop.read(t),r=this._editor.getVisibleRanges(),o=new Set(this.views.keys()),s=Xn.ofStartAndLength(0,this._domNode.clientHeight);if(!s.isEmpty)for(const a of r){const l=new Ei(a.startLineNumber,a.endLineNumber+1),d=this.itemProvider.getIntersectingGutterItems(l,t);la(u=>{for(const h of d){if(!h.range.intersect(l))continue;o.delete(h.id);let g=this.views.get(h.id);if(g)g.item.set(h,u);else{const k=document.createElement("div");this._domNode.appendChild(k);const A=Ti("item",h),p=this.itemProvider.createView(A,k);g=new Vko(A,p,k),this.views.set(h.id,g)}const m=h.range.startLineNumber<=this._editor.getModel().getLineCount()?this._editor.getTopForLineNumber(h.range.startLineNumber,!0)-n:h.range.startLineNumber>1?this._editor.getBottomForLineNumber(h.range.startLineNumber-1,!1)-n:0,f=(h.range.endLineNumberExclusive===1?Math.max(m,this._editor.getTopForLineNumber(h.range.startLineNumber,!1)-n):Math.max(m,this._editor.getBottomForLineNumber(h.range.endLineNumberExclusive-1,!0)-n))-m;g.domNode.style.top=`${m}px`,g.domNode.style.height=`${f}px`,g.gutterItemView.layout(Xn.ofStartAndLength(m,f),s)}})}for(const a of o){const l=this.views.get(a);l.gutterItemView.dispose(),l.domNode.remove(),this.views.delete(a)}}}class Vko{constructor(t,n,r){this.item=t,this.gutterItemView=n,this.domNode=r}}var yDn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},hhe=function(e,t){return function(n,r){t(n,r,e)}};const ixe=[],Fle=35;let Aje=class extends ft{constructor(t,n,r,o,s,a,l,d,u){super(),this._diffModel=n,this._editors=r,this._options=o,this._sashLayout=s,this._boundarySashes=a,this._instantiationService=l,this._contextKeyService=d,this._menuService=u,this._menu=this._register(this._menuService.createMenu(Wn.DiffEditorHunkToolbar,this._contextKeyService)),this._actions=Ko(this,this._menu.onDidChange,()=>this._menu.getActions()),this._hasActions=this._actions.map(g=>g.length>0),this._showSash=Rt(this,g=>this._options.renderSideBySide.read(g)&&this._hasActions.read(g)),this.width=Rt(this,g=>this._hasActions.read(g)?Fle:0),this.elements=wo("div.gutter@gutter",{style:{position:"absolute",height:"100%",width:Fle+"px"}},[]),this._currentDiff=Rt(this,g=>{var k;const m=this._diffModel.read(g);if(!m)return;const v=(k=m.diff.read(g))==null?void 0:k.mappings,f=this._editors.modifiedCursor.read(g);if(f)return v==null?void 0:v.find(A=>A.lineRangeMapping.modified.contains(f.lineNumber))}),this._selectedDiffs=Rt(this,g=>{const m=this._diffModel.read(g),v=m==null?void 0:m.diff.read(g);if(!v)return ixe;const f=this._editors.modifiedSelections.read(g);if(f.every(b=>b.isEmpty()))return ixe;const k=new Iv(f.map(b=>Ei.fromRangeInclusive(b))),p=v.mappings.filter(b=>b.lineRangeMapping.innerChanges&&k.intersects(b.lineRangeMapping.modified)).map(b=>({mapping:b,rangeMappings:b.lineRangeMapping.innerChanges.filter(w=>f.some(O=>Ee.areIntersecting(w.modifiedRange,O)))}));return p.length===0||p.every(b=>b.rangeMappings.length===0)?ixe:p}),this._register(k0o(t,this.elements.root)),this._register(wt(this.elements.root,"click",()=>{this._editors.modified.focus()})),this._register(Q6(this.elements.root,{display:this._hasActions.map(g=>g?"block":"none")})),vv(this,g=>this._showSash.read(g)?new hDn(t,this._sashLayout.dimensions,this._options.enableSplitViewResizing,this._boundarySashes,$Je(this,v=>this._sashLayout.sashLeft.read(v)-Fle,(v,f)=>this._sashLayout.sashLeft.set(v+Fle,f)),()=>this._sashLayout.resetSash()):void 0).recomputeInitiallyAndOnChange(this._store);const h=Rt(this,g=>{const m=this._diffModel.read(g);if(!m)return[];const v=m.diff.read(g);if(!v)return[];const f=this._selectedDiffs.read(g);if(f.length>0){const A=s2.fromRangeMappings(f.flatMap(p=>p.rangeMappings));return[new BOt(A,!0,Wn.DiffEditorSelectionToolbar,void 0,m.model.original.uri,m.model.modified.uri)]}const k=this._currentDiff.read(g);return v.mappings.map(A=>new BOt(A.lineRangeMapping.withInnerChangesFromLineRanges(),A.lineRangeMapping===(k==null?void 0:k.lineRangeMapping),Wn.DiffEditorHunkToolbar,void 0,m.model.original.uri,m.model.modified.uri))});this._register(new Wko(this._editors.modified,this.elements.root,{getIntersectingGutterItems:(g,m)=>h.read(m),createView:(g,m)=>this._instantiationService.createInstance(pje,g,m,this)})),this._register(wt(this.elements.gutter,rn.MOUSE_WHEEL,g=>{this._editors.modified.getOption(117).handleMouseWheel&&this._editors.modified.delegateScrollFromMouseWheelEvent(g)},{passive:!1}))}computeStagedValue(t){const n=t.innerChanges??[],r=new AR(this._editors.modifiedModel.get()),o=new AR(this._editors.original.getModel());return new V4(n.map(l=>l.toTextEdit(r))).apply(o)}layout(t){this.elements.gutter.style.left=t+"px"}};Aje=yDn([hhe(6,Yn),hhe(7,Qi),hhe(8,wA)],Aje);class BOt{constructor(t,n,r,o,s,a){this.mapping=t,this.showAlways=n,this.menuId=r,this.rangeOverride=o,this.originalUri=s,this.modifiedUri=a}get id(){return this.mapping.modified.toString()}get range(){return this.rangeOverride??this.mapping.modified}}let pje=class extends ft{constructor(t,n,r,o){super(),this._item=t,this._elements=wo("div.gutterItem",{style:{height:"20px",width:"34px"}},[wo("div.background@background",{},[]),wo("div.buttons@buttons",{},[])]),this._showAlways=this._item.map(this,a=>a.showAlways),this._menuId=this._item.map(this,a=>a.menuId),this._isSmall=Ti(this,!1),this._lastItemRange=void 0,this._lastViewRange=void 0;const s=this._register(o.createInstance(mV,"element",{instantHover:!0},{position:{hoverPosition:1}}));this._register(bN(n,this._elements.root)),this._register(Oi(a=>{const l=this._showAlways.read(a);this._elements.root.classList.toggle("noTransition",!0),this._elements.root.classList.toggle("showAlways",l),setTimeout(()=>{this._elements.root.classList.toggle("noTransition",!1)},0)})),this._register(Ef((a,l)=>{this._elements.buttons.replaceChildren();const d=l.add(o.createInstance(RJ,this._elements.buttons,this._menuId.read(a),{orientation:1,hoverDelegate:s,toolbarOptions:{primaryGroup:u=>u.startsWith("primary")},overflowBehavior:{maxItems:this._isSmall.read(a)?1:3},hiddenItemStrategy:0,actionRunner:l.add(new ODn(()=>{const u=this._item.read(void 0),h=u.mapping;return{mapping:h,originalWithModifiedChanges:r.computeStagedValue(h),originalUri:u.originalUri,modifiedUri:u.modifiedUri}})),menuOptions:{shouldForwardArgs:!0}}));l.add(d.onDidChangeMenuItems(()=>{this._lastItemRange&&this.layout(this._lastItemRange,this._lastViewRange)}))}))}layout(t,n){this._lastItemRange=t,this._lastViewRange=n;let r=this._elements.buttons.clientHeight;this._isSmall.set(this._item.get().mapping.original.startLineNumber===1&&t.length<30,void 0),r=this._elements.buttons.clientHeight;const o=t.length/2-r/2,s=r;let a=t.start+o;const l=Xn.tryCreate(s,n.endExclusive-s-r),d=Xn.tryCreate(t.start+s,t.endExclusive-r-s);d&&l&&d.start=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Hko=function(e,t){return function(n,r){t(n,r,e)}},bje,X9;let P1e=(X9=class extends ft{static setBreadcrumbsSourceFactory(t){this._breadcrumbsSourceFactory.set(t,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(t,n,r,o){super(),this._editors=t,this._diffModel=n,this._options=r,this._instantiationService=o,this._modifiedOutlineSource=vv(this,d=>{const u=this._editors.modifiedModel.read(d),h=bje._breadcrumbsSourceFactory.read(d);return!u||!h?void 0:h(u,this._instantiationService)}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(d=>{if(d.reason===1)return;const u=this._diffModel.get();la(h=>{for(const g of this._editors.original.getSelections()||[])u==null||u.ensureOriginalLineIsVisible(g.getStartPosition().lineNumber,0,h),u==null||u.ensureOriginalLineIsVisible(g.getEndPosition().lineNumber,0,h)})})),this._register(this._editors.modified.onDidChangeCursorPosition(d=>{if(d.reason===1)return;const u=this._diffModel.get();la(h=>{for(const g of this._editors.modified.getSelections()||[])u==null||u.ensureModifiedLineIsVisible(g.getStartPosition().lineNumber,0,h),u==null||u.ensureModifiedLineIsVisible(g.getEndPosition().lineNumber,0,h)})}));const s=this._diffModel.map((d,u)=>{var g;const h=(d==null?void 0:d.unchangedRegions.read(u))??[];return h.length===1&&h[0].modifiedLineNumber===1&&h[0].lineCount===((g=this._editors.modifiedModel.read(u))==null?void 0:g.getLineCount())?[]:h});this.viewZones=Rt(this,d=>{const u=this._modifiedOutlineSource.read(d);if(!u)return{origViewZones:[],modViewZones:[]};const h=[],g=[],m=this._options.renderSideBySide.read(d),v=this._options.compactMode.read(d),f=s.read(d);for(let k=0;kA.getHiddenOriginalRange(w).startLineNumber-1),b=new wN(p,12);h.push(b),d.store.add(new ROt(this._editors.original,b,A,!m))}{const p=Rt(this,w=>A.getHiddenModifiedRange(w).startLineNumber-1),b=new wN(p,12);g.push(b),d.store.add(new ROt(this._editors.modified,b,A))}}else{{const p=Rt(this,w=>A.getHiddenOriginalRange(w).startLineNumber-1),b=new wN(p,24);h.push(b),d.store.add(new IOt(this._editors.original,b,A,A.originalUnchangedRange,!m,u,w=>this._diffModel.get().ensureModifiedLineIsVisible(w,2,void 0),this._options))}{const p=Rt(this,w=>A.getHiddenModifiedRange(w).startLineNumber-1),b=new wN(p,24);g.push(b),d.store.add(new IOt(this._editors.modified,b,A,A.modifiedUnchangedRange,!1,u,w=>this._diffModel.get().ensureModifiedLineIsVisible(w,2,void 0),this._options))}}}return{origViewZones:h,modViewZones:g}});const a={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},l={description:"Fold Unchanged",glyphMarginHoverMessage:new bf(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(U(124,"Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+fi.asClassName(zt.fold),zIndex:10001};this._register(C1e(this._editors.original,Rt(this,d=>{const u=s.read(d),h=u.map(g=>({range:g.originalUnchangedRange.toInclusiveRange(),options:a}));for(const g of u)g.shouldHideControls(d)&&h.push({range:Ee.fromPositions(new it(g.originalLineNumber,1)),options:l});return h}))),this._register(C1e(this._editors.modified,Rt(this,d=>{const u=s.read(d),h=u.map(g=>({range:g.modifiedUnchangedRange.toInclusiveRange(),options:a}));for(const g of u)g.shouldHideControls(d)&&h.push({range:Ei.ofLength(g.modifiedLineNumber,1).toInclusiveRange(),options:l});return h}))),this._register(Oi(d=>{const u=s.read(d);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(u.map(h=>h.getHiddenOriginalRange(d).toInclusiveRange()).filter(Ru)),this._editors.modified.setHiddenAreas(u.map(h=>h.getHiddenModifiedRange(d).toInclusiveRange()).filter(Ru))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(d=>{var u;if(!d.event.rightButton&&d.target.position&&((u=d.target.element)!=null&&u.className.includes("fold-unchanged"))){const h=d.target.position.lineNumber,g=this._diffModel.get();if(!g)return;const m=g.unchangedRegions.get().find(v=>v.modifiedUnchangedRange.contains(h));if(!m)return;m.collapseAll(void 0),d.event.stopPropagation(),d.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(d=>{var u;if(!d.event.rightButton&&d.target.position&&((u=d.target.element)!=null&&u.className.includes("fold-unchanged"))){const h=d.target.position.lineNumber,g=this._diffModel.get();if(!g)return;const m=g.unchangedRegions.get().find(v=>v.originalUnchangedRange.contains(h));if(!m)return;m.collapseAll(void 0),d.event.stopPropagation(),d.event.preventDefault()}}))}},bje=X9,X9._breadcrumbsSourceFactory=Ti(X9,()=>({dispose(){},getBreadcrumbItems(t,n){return[]}})),X9);P1e=bje=zko([Hko(3,Yn)],P1e);class ROt extends Ctt{constructor(t,n,r,o=!1){const s=wo("div.diff-hidden-lines-widget");super(t,n,s.root),this._unchangedRegion=r,this._hide=o,this._nodes=wo("div.diff-hidden-lines-compact",[wo("div.line-left",[]),wo("div.text@text",[]),wo("div.line-right",[])]),s.root.appendChild(this._nodes.root),this._hide&&this._nodes.root.replaceChildren(),this._register(Oi(a=>{if(!this._hide){const l=this._unchangedRegion.getHiddenModifiedRange(a).length,d=U(125,"{0} hidden lines",l);this._nodes.text.innerText=d}}))}}class IOt extends Ctt{constructor(t,n,r,o,s,a,l,d){const u=wo("div.diff-hidden-lines-widget");super(t,n,u.root),this._editor=t,this._unchangedRegion=r,this._unchangedRegionRange=o,this._hide=s,this._modifiedOutlineSource=a,this._revealModifiedHiddenLine=l,this._options=d,this._nodes=wo("div.diff-hidden-lines",[wo("div.top@top",{title:U(126,"Click or drag to show more above")}),wo("div.center@content",{style:{display:"flex"}},[wo("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[tn("a",{title:U(127,"Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...P9("$(unfold)"))]),wo("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),wo("div.bottom@bottom",{title:U(128,"Click or drag to show more below"),role:"button"})]),u.root.appendChild(this._nodes.root),this._hide?mu(this._nodes.first):this._register(Q6(this._nodes.first,{width:hl(this._editor).layoutInfoContentLeft})),this._register(Oi(g=>{const m=this._unchangedRegion.visibleLineCountTop.read(g)+this._unchangedRegion.visibleLineCountBottom.read(g)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!m),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(g)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(g)>0),this._nodes.top.classList.toggle("canMoveBottom",!m);const v=this._unchangedRegion.isDragged.read(g),f=this._editor.getDomNode();f&&(f.classList.toggle("draggingUnchangedRegion",!!v),v==="top"?(f.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(g)>0),f.classList.toggle("canMoveBottom",!m)):v==="bottom"?(f.classList.toggle("canMoveTop",!m),f.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(g)>0)):(f.classList.toggle("canMoveTop",!1),f.classList.toggle("canMoveBottom",!1)))}));const h=this._editor;this._register(wt(this._nodes.top,"mousedown",g=>{if(g.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),g.preventDefault();const m=g.clientY;let v=!1;const f=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const k=ii(this._nodes.top),A=wt(k,"mousemove",b=>{const O=b.clientY-m;v=v||Math.abs(O)>2;const y=Math.round(O/h.getOption(75)),C=Math.max(0,Math.min(f+y,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(C,void 0)}),p=wt(k,"mouseup",b=>{v||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),A.dispose(),p.dispose()})})),this._register(wt(this._nodes.bottom,"mousedown",g=>{if(g.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),g.preventDefault();const m=g.clientY;let v=!1;const f=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const k=ii(this._nodes.bottom),A=wt(k,"mousemove",b=>{const O=b.clientY-m;v=v||Math.abs(O)>2;const y=Math.round(O/h.getOption(75)),C=Math.max(0,Math.min(f-y,this._unchangedRegion.getMaxVisibleLineCountBottom())),_=this._unchangedRegionRange.endLineNumberExclusive>h.getModel().getLineCount()?h.getContentHeight():h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(C,void 0);const S=this._unchangedRegionRange.endLineNumberExclusive>h.getModel().getLineCount()?h.getContentHeight():h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(S-_))}),p=wt(k,"mouseup",b=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!v){const w=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const O=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(O-w))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),A.dispose(),p.dispose()})})),this._register(Oi(g=>{const m=[];if(!this._hide){const v=r.getHiddenModifiedRange(g).length,f=U(129,"{0} hidden lines",v),k=tn("span",{title:U(130,"Double click to unfold")},f);k.addEventListener("dblclick",b=>{b.button===0&&(b.preventDefault(),this._unchangedRegion.showAll(void 0))}),m.push(k);const A=this._unchangedRegion.getHiddenModifiedRange(g),p=this._modifiedOutlineSource.getBreadcrumbItems(A,g);if(p.length>0){m.push(tn("span",void 0,"  |  "));for(let b=0;b{this._revealModifiedHiddenLine(w.startLineNumber)}}}}mu(this._nodes.others,...m)}))}}const rxe=[];class $ko extends ft{constructor(t,n,r,o){super(),this._editors=t,this._diffModel=n,this._options=r,this._widget=o,this._selectedDiffs=Rt(this,s=>{const a=this._diffModel.read(s),l=a==null?void 0:a.diff.read(s);if(!l)return rxe;const d=this._editors.modifiedSelections.read(s);if(d.every(m=>m.isEmpty()))return rxe;const u=new Iv(d.map(m=>Ei.fromRangeInclusive(m))),g=l.mappings.filter(m=>m.lineRangeMapping.innerChanges&&u.intersects(m.lineRangeMapping.modified)).map(m=>({mapping:m,rangeMappings:m.lineRangeMapping.innerChanges.filter(v=>d.some(f=>Ee.areIntersecting(v.modifiedRange,f)))}));return g.length===0||g.every(m=>m.rangeMappings.length===0)?rxe:g}),this._register(Ef((s,a)=>{if(!this._options.shouldRenderOldRevertArrows.read(s))return;const l=this._diffModel.read(s),d=l==null?void 0:l.diff.read(s);if(!l||!d||l.movedTextToCompare.read(s))return;const u=[],h=this._selectedDiffs.read(s),g=new Set(h.map(m=>m.mapping));if(h.length>0){const m=this._editors.modifiedSelections.read(s),v=a.add(new F1e(m[m.length-1].positionLineNumber,this._widget,h.flatMap(f=>f.rangeMappings),!0));this._editors.modified.addGlyphMarginWidget(v),u.push(v)}for(const m of d.mappings)if(!g.has(m)&&!m.lineRangeMapping.modified.isEmpty&&m.lineRangeMapping.innerChanges){const v=a.add(new F1e(m.lineRangeMapping.modified.startLineNumber,this._widget,m.lineRangeMapping,!1));this._editors.modified.addGlyphMarginWidget(v),u.push(v)}a.add(Hn(()=>{for(const m of u)this._editors.modified.removeGlyphMarginWidget(m)}))}))}}const zve=class zve extends ft{getId(){return this._id}constructor(t,n,r,o){super(),this._lineNumber=t,this._widget=n,this._diffs=r,this._revertSelection=o,this._id=`revertButton${zve.counter++}`,this._domNode=wo("div.revertButton",{title:this._revertSelection?U(135,"Revert Selected Changes"):U(136,"Revert Change")},[y3(zt.arrowRight)]).root,this._register(wt(this._domNode,rn.MOUSE_DOWN,s=>{s.button!==2&&(s.stopPropagation(),s.preventDefault())})),this._register(wt(this._domNode,rn.MOUSE_UP,s=>{s.stopPropagation(),s.preventDefault()})),this._register(wt(this._domNode,rn.CLICK,s=>{this._diffs instanceof Ag?this._widget.revert(this._diffs):this._widget.revertRangeMappings(this._diffs),s.stopPropagation(),s.preventDefault()}))}getDomNode(){return this._domNode}getPosition(){return{lane:p3.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}};zve.counter=0;let F1e=zve;var Xko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},CX=function(e,t){return function(n,r){t(n,r,e)}};let Ey=class extends cje{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(t,n,r,o,s,a,l,d){super(),this._domElement=t,this._parentContextKeyService=o,this._parentInstantiationService=s,this._codeEditorService=a,this._accessibilitySignalService=l,this._editorProgressService=d,this.elements=wo("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[wo("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),wo("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),wo("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModelSrc=this._register(YJe(this,void 0)),this._diffModel=Rt(this,O=>{var y;return(y=this._diffModelSrc.read(O))==null?void 0:y.object}),this.onDidChangeModel=an.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new rH([Qi,this._contextKeyService]))),this._boundarySashes=Ti(this,void 0),this._accessibleDiffViewerShouldBeVisible=Ti(this,!1),this._accessibleDiffViewerVisible=Rt(this,O=>this._options.onlyShowAccessibleDiffViewer.read(O)?!0:this._accessibleDiffViewerShouldBeVisible.read(O)),this._movedBlocksLinesPart=Ti(this,void 0),this._layoutInfo=Rt(this,O=>{var R,I;const y=this._rootSizeObserver.width.read(O),C=this._rootSizeObserver.height.read(O);this._rootSizeObserver.automaticLayout?this.elements.root.style.height="100%":this.elements.root.style.height=C+"px";const _=this._sash.read(O),S=this._gutter.read(O),L=(S==null?void 0:S.width.read(O))??0,E=((R=this._overviewRulerPart.read(O))==null?void 0:R.width)??0;let T,D,P,Q,M;if(!!_){const F=_.sashLeft.read(O),j=((I=this._movedBlocksLinesPart.read(O))==null?void 0:I.width.read(O))??0;T=0,D=F-L-j,M=F-L,P=F,Q=y-P-E}else{M=0;const F=this._options.inlineViewHideOriginalLineNumbers.read(O);T=L,F?D=0:D=Math.max(5,this._editors.originalObs.layoutInfoDecorationsLeft.read(O)),P=L+D,Q=y-P-E}return this.elements.original.style.left=T+"px",this.elements.original.style.width=D+"px",this._editors.original.layout({width:D,height:C},!0),S==null||S.layout(M),this.elements.modified.style.left=P+"px",this.elements.modified.style.width=Q+"px",this._editors.modified.layout({width:Q,height:C},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((O,y)=>O==null?void 0:O.diff.read(y)),this.onDidUpdateDiff=an.fromObservableLight(this._diffValue),this._codeEditorService.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register(Hn(()=>this.elements.root.remove())),this._rootSizeObserver=this._register(new nDn(this.elements.root,n.dimension)),this._rootSizeObserver.setAutomaticLayout(n.automaticLayout??!1),this._options=this._instantiationService.createInstance(dje,n),this._register(Oi(O=>{this._options.setWidth(this._rootSizeObserver.width.read(O))})),this._contextKeyService.createKey($e.isEmbeddedDiffEditor.key,!1),this._register(Dw($e.isEmbeddedDiffEditor,this._contextKeyService,O=>this._options.isInEmbeddedEditor.read(O))),this._register(Dw($e.comparingMovedCode,this._contextKeyService,O=>{var y;return!!((y=this._diffModel.read(O))!=null&&y.movedTextToCompare.read(O))})),this._register(Dw($e.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,O=>this._options.couldShowInlineViewBecauseOfSize.read(O))),this._register(Dw($e.diffEditorInlineMode,this._contextKeyService,O=>!this._options.renderSideBySide.read(O))),this._register(Dw($e.hasChanges,this._contextKeyService,O=>{var y,C;return(((C=(y=this._diffModel.read(O))==null?void 0:y.diff.read(O))==null?void 0:C.mappings.length)??0)>0})),this._editors=this._register(this._instantiationService.createInstance(lje,this.elements.original,this.elements.modified,this._options,r,(O,y,C,_)=>this._createInnerEditor(O,y,C,_))),this._register(Dw($e.diffEditorOriginalWritable,this._contextKeyService,O=>this._options.originalEditable.read(O))),this._register(Dw($e.diffEditorModifiedWritable,this._contextKeyService,O=>!this._options.readOnly.read(O))),this._register(Dw($e.diffEditorOriginalUri,this._contextKeyService,O=>{var y;return((y=this._diffModel.read(O))==null?void 0:y.model.original.uri.toString())??""})),this._register(Dw($e.diffEditorModifiedUri,this._contextKeyService,O=>{var y;return((y=this._diffModel.read(O))==null?void 0:y.model.modified.uri.toString())??""})),this._overviewRulerPart=vv(this,O=>this._options.renderOverviewRuler.read(O)?this._instantiationService.createInstance(A_(DJ),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(y=>y.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store);const u={height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((O,y)=>{var C;return O-(((C=this._overviewRulerPart.read(y))==null?void 0:C.width)??0)})};this._sashLayout=new lko(this._options,u),this._sash=vv(this,O=>{const y=this._options.renderSideBySide.read(O);return this.elements.root.classList.toggle("side-by-side",y),y?new hDn(this.elements.root,u,this._options.enableSplitViewResizing,this._boundarySashes,this._sashLayout.sashLeft,()=>this._sashLayout.resetSash()):void 0}).recomputeInitiallyAndOnChange(this._store);const h=vv(this,O=>this._instantiationService.createInstance(A_(P1e),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);vv(this,O=>this._instantiationService.createInstance(A_(J0o),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const g=new Set,m=new Set;let v=!1;const f=vv(this,O=>this._instantiationService.createInstance(A_(sje),ii(this._domElement),this._editors,this._diffModel,this._options,this,()=>v||h.read(void 0).isUpdatingHiddenAreas,g,m)).recomputeInitiallyAndOnChange(this._store),k=Rt(this,O=>{const y=f.read(O).viewZones.read(O).orig,C=h.read(O).viewZones.read(O).origViewZones;return y.concat(C)}),A=Rt(this,O=>{const y=f.read(O).viewZones.read(O).mod,C=h.read(O).viewZones.read(O).modViewZones;return y.concat(C)});this._register(_1e(this._editors.original,k,O=>{v=O},g));let p;this._register(_1e(this._editors.modified,A,O=>{v=O,v?p=O3.capture(this._editors.modified):(p==null||p.restore(this._editors.modified),p=void 0)},m)),this._accessibleDiffViewer=vv(this,O=>this._instantiationService.createInstance(A_(kQ),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(y,C)=>this._accessibleDiffViewerShouldBeVisible.set(y,C),this._options.onlyShowAccessibleDiffViewer.map(y=>!y),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((y,C)=>{var _;return(_=y==null?void 0:y.diff.read(C))==null?void 0:_.mappings.map(S=>S.lineRangeMapping)}),new P0o(this._editors))).recomputeInitiallyAndOnChange(this._store);const b=this._accessibleDiffViewerVisible.map(O=>O?"hidden":"visible");this._register(Q6(this.elements.modified,{visibility:b})),this._register(Q6(this.elements.original,{visibility:b})),this._createDiffEditorContributions(),this._codeEditorService.addDiffEditor(this),this._register(Hn(()=>{this._codeEditorService.removeDiffEditor(this)})),this._gutter=vv(this,O=>this._options.shouldRenderGutterMenu.read(O)?this._instantiationService.createInstance(A_(Aje),this.elements.root,this._diffModel,this._editors,this._options,this._sashLayout,this._boundarySashes):void 0),this._register(KW(this._layoutInfo)),vv(this,O=>new(A_(jU))(this.elements.root,this._diffModel,this._layoutInfo.map(y=>y.originalEditor),this._layoutInfo.map(y=>y.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,O=>{this._movedBlocksLinesPart.set(O,void 0)}),this._register(an.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,O=>this._handleCursorPositionChange(O,!0))),this._register(an.runAndSubscribe(this._editors.original.onDidChangeCursorPosition,O=>this._handleCursorPositionChange(O,!1)));const w=this._diffModel.map(this,(O,y)=>{if(O)return O.diff.read(y)===void 0&&!O.isDiffUpToDate.read(y)});this._register(Ef((O,y)=>{if(w.read(O)===!0){const C=this._editorProgressService.show(!0,1e3);y.add(Hn(()=>C.done()))}})),this._register(Ef((O,y)=>{y.add(new(A_($ko))(this._editors,this._diffModel,this._options,this))})),this._register(Ef((O,y)=>{const C=this._diffModel.read(O);if(C)for(const _ of[C.model.original,C.model.modified])y.add(_.onWillDispose(S=>{zi(new ui("TextModel got disposed before DiffEditorWidget model got reset")),this.setModel(null)}))})),this._register(Oi(O=>{this._options.setModel(this._diffModel.read(O))}))}_createInnerEditor(t,n,r,o){return t.createInstance(gR,n,r,o)}_createDiffEditorContributions(){const t=xU.getDiffEditorContributions();for(const n of t)try{this._register(this._instantiationService.createInstance(n.ctor,this))}catch(r){zi(r)}}get _targetEditor(){return this._editors.modified}getEditorType(){return Nie.IDiffEditor}layout(t){this._rootSizeObserver.observe(t)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var r;const t=this._editors.original.saveViewState(),n=this._editors.modified.saveViewState();return{original:t,modified:n,modelState:(r=this._diffModel.get())==null?void 0:r.serializeState()}}restoreViewState(t){var n;if(t&&t.original&&t.modified){const r=t;this._editors.original.restoreViewState(r.original),this._editors.modified.restoreViewState(r.modified),r.modelState&&((n=this._diffModel.get())==null||n.restoreSerializedState(r.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(t){return this._instantiationService.createInstance(oje,t,this._options)}getModel(){var t;return((t=this._diffModel.get())==null?void 0:t.model)??null}setModel(t){const n=t?"model"in t?S1e.create(t).createNewRef(this):S1e.create(this.createViewModel(t),this):null;this.setDiffModel(n)}setDiffModel(t,n){const r=this._diffModel.get();!t&&r&&this._accessibleDiffViewer.get().close(),this._diffModel.get()!==(t==null?void 0:t.object)&&qW(n,o=>{var l;const s=t==null?void 0:t.object;Ko.batchEventsGlobally(o,()=>{this._editors.original.setModel(s?s.model.original:null),this._editors.modified.setModel(s?s.model.modified:null)});const a=(l=this._diffModelSrc.get())==null?void 0:l.createNewRef(this);this._diffModelSrc.set(t==null?void 0:t.createNewRef(this),o),setTimeout(()=>{a==null||a.dispose()},0)})}updateOptions(t){this._options.updateOptions(t)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var n;const t=(n=this._diffModel.get())==null?void 0:n.diff.get();return t?Gko(t):null}getDiffComputationResult(){var n;const t=(n=this._diffModel.get())==null?void 0:n.diff.get();return t?{changes:this.getLineChanges(),changes2:t.mappings.map(r=>r.lineRangeMapping),identical:t.identical,quitEarly:t.quitEarly}:null}revert(t){const n=this._diffModel.get();!n||!n.isDiffUpToDate.get()||(this._editors.modified.pushUndoStop(),this._editors.modified.executeEdits("diffEditor",[{range:t.modified.toExclusiveRange(),text:n.model.original.getValueInRange(t.original.toExclusiveRange())}]),this._editors.modified.pushUndoStop())}revertRangeMappings(t){const n=this._diffModel.get();if(!n||!n.isDiffUpToDate.get())return;const r=t.map(o=>({range:o.modifiedRange,text:n.model.original.getValueInRange(o.originalRange)}));this._editors.modified.pushUndoStop(),this._editors.modified.executeEdits("diffEditor",r),this._editors.modified.pushUndoStop()}revertFocusedRangeMappings(){var d,u;const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const n=(u=(d=this._diffModel.get())==null?void 0:d.diff.get())==null?void 0:u.mappings;if(!n||n.length===0)return;const r=this._editors.modified;if(!r.hasTextFocus())return;const o=r.getPosition().lineNumber,s=r.getSelection(),a=Ei.fromRange(s||new Ee(o,0,o,0)),l=n.filter(h=>h.lineRangeMapping.modified.intersect(a));r.pushUndoStop(),r.executeEdits("diffEditor",l.map(h=>({range:h.lineRangeMapping.modified.toExclusiveRange(),text:t.model.original.getValueInRange(h.lineRangeMapping.original.toExclusiveRange())}))),r.pushUndoStop()}_goTo(t){this._editors.modified.setPosition(new it(t.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(t.lineRangeMapping.modified.toExclusiveRange())}goToDiff(t){var s,a;const n=(a=(s=this._diffModel.get())==null?void 0:s.diff.get())==null?void 0:a.mappings;if(!n||n.length===0)return;const r=this._editors.modified.getPosition().lineNumber;let o;t==="next"?this._editors.modified.getModel().getLineCount()===r?o=n[0]:o=n.find(d=>d.lineRangeMapping.modified.startLineNumber>r)??n[0]:o=cJ(n,l=>l.lineRangeMapping.modified.startLineNumber{var r;const n=(r=t.diff.get())==null?void 0:r.mappings;!n||n.length===0||this._goTo(n[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const t=this._diffModel.get();t&&await t.waitForDiff()}mapToOtherSide(){var a,l;const t=this._editors.modified.hasWidgetFocus(),n=t?this._editors.modified:this._editors.original,r=t?this._editors.original:this._editors.modified;let o;const s=n.getSelection();if(s){const d=(l=(a=this._diffModel.get())==null?void 0:a.diff.get())==null?void 0:l.mappings.map(u=>t?u.lineRangeMapping.flip():u.lineRangeMapping);if(d){const u=uOt(s.getStartPosition(),d),h=uOt(s.getEndPosition(),d);o=Ee.plusRange(u,h)}}return{destination:r,destinationSelection:o}}switchSide(){const{destination:t,destinationSelection:n}=this.mapToOtherSide();t.focus(),n&&t.setSelection(n)}exitCompareMove(){const t=this._diffModel.get();t&&t.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var n;const t=(n=this._diffModel.get())==null?void 0:n.unchangedRegions.get();t&&la(r=>{for(const o of t)o.collapseAll(r)})}showAllUnchangedRegions(){var n;const t=(n=this._diffModel.get())==null?void 0:n.unchangedRegions.get();t&&la(r=>{for(const o of t)o.showAll(r)})}_handleCursorPositionChange(t,n){var r,o;if((t==null?void 0:t.reason)===3){const s=(o=(r=this._diffModel.get())==null?void 0:r.diff.get())==null?void 0:o.mappings.find(a=>n?a.lineRangeMapping.modified.contains(t.position.lineNumber):a.lineRangeMapping.original.contains(t.position.lineNumber));s!=null&&s.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(nm.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):s!=null&&s.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(nm.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):s&&this._accessibilitySignalService.playSignal(nm.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}};Ey=Xko([CX(3,Qi),CX(4,Yn),CX(5,yo),CX(6,pL),CX(7,V8)],Ey);function Gko(e){return e.mappings.map(t=>{const n=t.lineRangeMapping;let r,o,s,a,l=n.innerChanges;return n.original.isEmpty?(r=n.original.startLineNumber-1,o=0,l=void 0):(r=n.original.startLineNumber,o=n.original.endLineNumberExclusive-1),n.modified.isEmpty?(s=n.modified.startLineNumber-1,a=0,l=void 0):(s=n.modified.startLineNumber,a=n.modified.endLineNumberExclusive-1),{originalStartLineNumber:r,originalEndLineNumber:o,modifiedStartLineNumber:s,modifiedEndLineNumber:a,charChanges:l==null?void 0:l.map(d=>({originalStartLineNumber:d.originalRange.startLineNumber,originalStartColumn:d.originalRange.startColumn,originalEndLineNumber:d.originalRange.endLineNumber,originalEndColumn:d.originalRange.endColumn,modifiedStartLineNumber:d.modifiedRange.startLineNumber,modifiedStartColumn:d.modifiedRange.startColumn,modifiedEndLineNumber:d.modifiedRange.endLineNumber,modifiedEndColumn:d.modifiedRange.endColumn}))}})}class Yko extends zu{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:_t(85,"Toggle Collapse Unchanged Regions"),icon:zt.map,toggled:Ft.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:Ft.has("isInDiffEditor"),menu:{when:Ft.has("isInDiffEditor"),id:Wn.EditorTitle,order:22,group:"navigation"}})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.hideUnchangedRegions.enabled");r.updateValue("diffEditor.hideUnchangedRegions.enabled",o)}}class CDn extends zu{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:_t(86,"Toggle Show Moved Code Blocks"),precondition:Ft.has("isInDiffEditor")})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.experimental.showMoves");r.updateValue("diffEditor.experimental.showMoves",o)}}class _Dn extends zu{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:_t(87,"Toggle Use Inline View When Space Is Limited"),precondition:Ft.has("isInDiffEditor")})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");r.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",o)}}const Gie=_t(88,"Diff Editor");class Zko extends Op{constructor(){super({id:"diffEditor.switchSide",title:_t(89,"Switch Side"),icon:zt.arrowSwap,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,r){const o=QI(t);if(o instanceof Ey){if(r&&r.dryRun)return{destinationSelection:o.mapToOtherSide().destinationSelection};o.switchSide()}}}class qko extends Op{constructor(){super({id:"diffEditor.exitCompareMove",title:_t(90,"Exit Compare Move"),icon:zt.close,precondition:$e.comparingMovedCode,f1:!1,category:Gie,keybinding:{weight:1e4,primary:9}})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.exitCompareMove()}}class Kko extends Op{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:_t(91,"Collapse All Unchanged Regions"),icon:zt.fold,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.collapseAllUnchangedRegions()}}class Jko extends Op{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:_t(92,"Show All Unchanged Regions"),icon:zt.unfold,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.showAllUnchangedRegions()}}class wje extends zu{constructor(){super({id:"diffEditor.revert",title:_t(93,"Revert"),f1:!0,category:Gie,precondition:Ft.has("isInDiffEditor")})}run(t,n){return n?this.runViaToolbarContext(t,n):this.runViaCursorOrSelection(t)}runViaCursorOrSelection(t){const n=QI(t);n instanceof Ey&&n.revertFocusedRangeMappings()}runViaToolbarContext(t,n){const r=e2o(t,n.originalUri,n.modifiedUri);r instanceof Ey&&r.revertRangeMappings(n.mapping.innerChanges??[])}}const SDn=_t(94,"Accessible Diff Viewer"),Hve=class Hve extends zu{constructor(){super({id:Hve.id,title:_t(95,"Go to Next Difference"),category:SDn,precondition:Ft.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(t){const n=QI(t);n==null||n.accessibleDiffViewerNext()}};Hve.id="editor.action.accessibleDiffViewer.next";let IJ=Hve;const $ve=class $ve extends zu{constructor(){super({id:$ve.id,title:_t(96,"Go to Previous Difference"),category:SDn,precondition:Ft.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(t){const n=QI(t);n==null||n.accessibleDiffViewerPrev()}};$ve.id="editor.action.accessibleDiffViewer.prev";let N1e=$ve;function e2o(e,t,n){return e.get(yo).listDiffEditors().find(s=>{var d,u;const a=s.getModifiedEditor(),l=s.getOriginalEditor();return a&&((d=a.getModel())==null?void 0:d.uri.toString())===n.toString()&&l&&((u=l.getModel())==null?void 0:u.uri.toString())===t.toString()})||null}function QI(e){const n=e.get(yo).listDiffEditors(),r=Nd();if(r){for(const o of n)if(o.getContainerDomNode().contains(r))return o}return null}ys(Yko);ys(CDn);ys(_Dn);Iu.appendMenuItem(Wn.EditorTitle,{command:{id:new _Dn().desc.id,title:U(119,"Use Inline View When Space Is Limited"),toggled:Ft.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:Ft.has("isInDiffEditor")},order:11,group:"1_diff",when:Ft.and($e.diffEditorRenderSideBySideInlineBreakpointReached,Ft.has("isInDiffEditor"))});Iu.appendMenuItem(Wn.EditorTitle,{command:{id:new CDn().desc.id,title:U(120,"Show Moved Code Blocks"),icon:zt.move,toggled:$z.create("config.diffEditor.experimental.showMoves",!0),precondition:Ft.has("isInDiffEditor")},order:10,group:"1_diff",when:Ft.has("isInDiffEditor")});ys(wje);for(const e of[{icon:zt.arrowRight,key:$e.diffEditorInlineMode.toNegated()},{icon:zt.discard,key:$e.diffEditorInlineMode}])Iu.appendMenuItem(Wn.DiffEditorHunkToolbar,{command:{id:new wje().desc.id,title:U(121,"Revert Block"),icon:e.icon},when:Ft.and($e.diffEditorModifiedWritable,e.key),order:5,group:"primary"}),Iu.appendMenuItem(Wn.DiffEditorSelectionToolbar,{command:{id:new wje().desc.id,title:U(122,"Revert Selection"),icon:e.icon},when:Ft.and($e.diffEditorModifiedWritable,e.key),order:5,group:"primary"});ys(Zko);ys(qko);ys(Kko);ys(Jko);Iu.appendMenuItem(Wn.EditorTitle,{command:{id:IJ.id,title:U(123,"Open Accessible Diff Viewer"),precondition:Ft.has("isInDiffEditor")},order:10,group:"2_diff",when:Ft.and($e.accessibleDiffViewerVisible.negate(),Ft.has("isInDiffEditor"))});co.registerCommandAlias("editor.action.diffReview.next",IJ.id);ys(IJ);co.registerCommandAlias("editor.action.diffReview.prev",N1e.id);ys(N1e);var t2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},n2o=function(e,t){return function(n,r){t(n,r,e)}},Oje;const m3e=new yn("selectionAnchorSet",!1);var MD;let B6=(MD=class{static get(t){return t.getContribution(Oje.ID)}constructor(t,n){this.editor=t,this.selectionAnchorSetContextKey=m3e.bindTo(n),this.modelChangeListener=t.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const t=this.editor.getPosition();this.editor.changeDecorations(n=>{this.decorationId&&n.removeDecoration(this.decorationId),this.decorationId=n.addDecoration(Qn.fromPositions(t,t),{description:"selection-anchor",stickiness:1,hoverMessage:new bf().appendText(U(798,"Selection Anchor")),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),um(U(799,"Anchor set at {0}:{1}",t.lineNumber,t.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const t=this.editor.getModel().getDecorationRange(this.decorationId);t&&this.editor.setPosition(t.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const t=this.editor.getModel().getDecorationRange(this.decorationId);if(t){const n=this.editor.getPosition();this.editor.setSelection(Qn.fromPositions(t.getStartPosition(),n)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const t=this.decorationId;this.editor.changeDecorations(n=>{n.removeDecoration(t),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}},Oje=MD,MD.ID="editor.contrib.selectionAnchorController",MD);B6=Oje=t2o([n2o(1,Qi)],B6);class i2o extends Bn{constructor(){super({id:"editor.action.setSelectionAnchor",label:_t(800,"Set Selection Anchor"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2080),weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.setSelectionAnchor()}}class r2o extends Bn{constructor(){super({id:"editor.action.goToSelectionAnchor",label:_t(801,"Go to Selection Anchor"),precondition:m3e})}async run(t,n){var r;(r=B6.get(n))==null||r.goToSelectionAnchor()}}class o2o extends Bn{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:_t(802,"Select from Anchor to Cursor"),precondition:m3e,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2089),weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.selectFromAnchorToCursor()}}class s2o extends Bn{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:_t(803,"Cancel Selection Anchor"),precondition:m3e,kbOpts:{kbExpr:$e.editorTextFocus,primary:9,weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.cancelSelectionAnchor()}}mo(B6.ID,B6,4);un(i2o);un(r2o);un(o2o);un(s2o);const a2o=Ve("editorOverviewRuler.bracketMatchForeground","#A0A0A0",U(804,"Overview ruler marker color for matching brackets."));class l2o extends Bn{constructor(){super({id:"editor.action.jumpToBracket",label:_t(806,"Go to Bracket"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:3165,weight:100}})}run(t,n){var r;(r=pR.get(n))==null||r.jumpToBracket()}}class c2o extends Bn{constructor(){super({id:"editor.action.selectToBracket",label:_t(807,"Select to Bracket"),precondition:void 0,metadata:{description:_t(808,"Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(t,n,r){var s;let o=!0;r&&r.selectBrackets===!1&&(o=!1),(s=pR.get(n))==null||s.selectToBracket(o)}}class d2o extends Bn{constructor(){super({id:"editor.action.removeBrackets",label:_t(809,"Remove Brackets"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2561,weight:100},canTriggerInlineEdits:!0})}run(t,n){var r;(r=pR.get(n))==null||r.removeBrackets(this.id)}}class u2o{constructor(t,n,r){this.position=t,this.brackets=n,this.options=r}}const p5=class p5 extends ft{static get(t){return t.getContribution(p5.ID)}constructor(t){super(),this._editor=t,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new Es(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(80),this._updateBracketsSoon.schedule(),this._register(t.onDidChangeCursorPosition(n=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModelContent(n=>{this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModel(n=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModelLanguageConfiguration(n=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeConfiguration(n=>{n.hasChanged(80)&&(this._matchBrackets=this._editor.getOption(80),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(t.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(t.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const t=this._editor.getModel(),n=this._editor.getSelections().map(r=>{const o=r.getStartPosition(),s=t.bracketPairs.matchBracket(o);let a=null;if(s)s[0].containsPosition(o)&&!s[1].containsPosition(o)?a=s[1].getStartPosition():s[1].containsPosition(o)&&(a=s[0].getStartPosition());else{const l=t.bracketPairs.findEnclosingBrackets(o);if(l)a=l[1].getStartPosition();else{const d=t.bracketPairs.findNextBracket(o);d&&d.range&&(a=d.range.getStartPosition())}}return a?new Qn(a.lineNumber,a.column,a.lineNumber,a.column):new Qn(o.lineNumber,o.column,o.lineNumber,o.column)});this._editor.setSelections(n),this._editor.revealRange(n[0])}selectToBracket(t){if(!this._editor.hasModel())return;const n=this._editor.getModel(),r=[];this._editor.getSelections().forEach(o=>{const s=o.getStartPosition();let a=n.bracketPairs.matchBracket(s);if(!a&&(a=n.bracketPairs.findEnclosingBrackets(s),!a)){const u=n.bracketPairs.findNextBracket(s);u&&u.range&&(a=n.bracketPairs.matchBracket(u.range.getStartPosition()))}let l=null,d=null;if(a){a.sort(Ee.compareRangesUsingStarts);const[u,h]=a;if(l=t?u.getStartPosition():u.getEndPosition(),d=t?h.getEndPosition():h.getStartPosition(),h.containsPosition(s)){const g=l;l=d,d=g}}l&&d&&r.push(new Qn(l.lineNumber,l.column,d.lineNumber,d.column))}),r.length>0&&(this._editor.setSelections(r),this._editor.revealRange(r[0]))}removeBrackets(t){if(!this._editor.hasModel())return;const n=this._editor.getModel();this._editor.getSelections().forEach(r=>{const o=r.getPosition();let s=n.bracketPairs.matchBracket(o);s||(s=n.bracketPairs.findEnclosingBrackets(o)),s&&(this._editor.pushUndoStop(),this._editor.executeEdits(t,[{range:s[0],text:""},{range:s[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const t=[];let n=0;for(const r of this._lastBracketsData){const o=r.brackets;o&&(t[n++]={range:o[0],options:r.options},t[n++]={range:o[1],options:r.options})}this._decorations.set(t)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const t=this._editor.getSelections();if(t.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const n=this._editor.getModel(),r=n.getVersionId();let o=[];this._lastVersionId===r&&(o=this._lastBracketsData);const s=[];let a=0;for(let g=0,m=t.length;g1&&s.sort(it.compare);const l=[];let d=0,u=0;const h=o.length;for(let g=0,m=s.length;g0&&(n.pushUndoStop(),n.executeCommands(this.id,o),n.pushUndoStop())}}un(m2o);const k2o=Cr("productService");function Mtt(e,t){return{id:t,asString:async()=>e,asFile:()=>{},value:typeof e=="string"?e:void 0}}function v2o(e,t,n,r){const o={id:SI(),name:e,uri:t,data:n};return{id:r,asString:async()=>"",asFile:()=>o,value:void 0}}class xDn{constructor(){this._entries=new Map}get size(){let t=0;for(const n of this._entries)t++;return t}has(t){return this._entries.has(this.toKey(t))}matches(t){const n=[...this._entries.keys()];return to.some(this,([r,o])=>o.asFile())&&n.push("files"),EDn(U1e(t),n)}get(t){var n;return(n=this._entries.get(this.toKey(t)))==null?void 0:n[0]}append(t,n){const r=this._entries.get(t);r?r.push(n):this._entries.set(this.toKey(t),[n])}replace(t,n){this._entries.set(this.toKey(t),[n])}delete(t){this._entries.delete(this.toKey(t))}*[Symbol.iterator](){for(const[t,n]of this._entries)for(const r of n)yield[t,r]}toKey(t){return U1e(t)}}function U1e(e){return e.toLowerCase()}function MOt(e,t){return EDn(U1e(e),t.map(U1e))}function EDn(e,t){if(e==="*/*")return t.length>0;if(t.includes(e))return!0;const n=e.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!n)return!1;const[r,o,s]=n;return s==="*"?t.some(a=>a.startsWith(o+"/")):!1}const k3e=Object.freeze({create:e=>M8(e.map(t=>t.toString())).join(`\r +[{1}] {2}`,o,Dtt.modifierLabels[b0].altKey,u)}return o}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(t){this._itemClassDispose.value=void 0;const{element:n,label:r}=this;if(!n||!r)return;const o=this._commandAction.checked&&yko(t.toggled)&&t.toggled.icon?t.toggled.icon:t.icon;if(o)if(fi.isThemeIcon(o)){const s=fi.asClassNameArray(o);r.classList.add(...s),this._itemClassDispose.value=Hn(()=>{r.classList.remove(...s)})}else r.style.backgroundImage=j8(this._themeService.getColorTheme().type)?xy(o.dark):xy(o.light),r.classList.add("icon"),this._itemClassDispose.value=G4(Hn(()=>{r.style.backgroundImage="",r.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};D6=f3e([om(2,Do),om(3,ic),om(4,Qi),om(5,Dl),om(6,S2),om(7,vh)],D6);class Rtt extends D6{render(t){var n;this.options.label=!0,this.options.icon=!1,super.render(t),t.classList.add("text-only"),t.classList.toggle("use-comma",((n=this._options)==null?void 0:n.useComma)??!1)}updateLabel(){var n;const t=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!t)return super.updateLabel();if(this.label){const r=Rtt._symbolPrintEnter(t);(n=this._options)!=null&&n.conversational?this.label.textContent=U(1647,"{1} to {0}",this._action.label,r):this.label.textContent=U(1648,"{0} ({1})",this._action.label,r)}}static _symbolPrintEnter(t){var n;return(n=t.getLabel())==null?void 0:n.replace(/\benter\b/gi,"⏎").replace(/\bEscape\b/gi,"Esc")}}let hje=class extends D1e{constructor(t,n,r,o,s){const a={...n,menuAsChild:(n==null?void 0:n.menuAsChild)??!1,classNames:(n==null?void 0:n.classNames)??(fi.isThemeIcon(t.item.icon)?fi.asClassName(t.item.icon):void 0),keybindingProvider:(n==null?void 0:n.keybindingProvider)??(l=>r.lookupKeybinding(l.id))};super(t,{getActions:()=>t.actions},o,a),this._keybindingService=r,this._contextMenuService=o,this._themeService=s}render(t){super.render(t),Oo(this.element),t.classList.add("menu-entry");const n=this._action,{icon:r}=n.item;if(r&&!fi.isThemeIcon(r)){this.element.classList.add("icon");const o=()=>{this.element&&(this.element.style.backgroundImage=j8(this._themeService.getColorTheme().type)?xy(r.dark):xy(r.light))};o(),this._register(this._themeService.onDidColorThemeChange(()=>{o()}))}}};hje=f3e([om(2,Do),om(3,S2),om(4,Dl)],hje);let fje=class extends Fb{constructor(t,n,r,o,s,a,l,d){super(null,t),this._keybindingService=r,this._notificationService=o,this._contextMenuService=s,this._menuService=a,this._instaService=l,this._storageService=d,this._defaultActionDisposables=this._register(new xt),this._container=null,this._options=n,this._storageKey=`${t.item.submenu.id}_lastActionId`;let u;const h=n!=null&&n.togglePrimaryAction?d.get(this._storageKey,1):void 0;h&&(u=t.actions.find(m=>h===m.id)),u||(u=t.actions[0]),this._defaultAction=this._defaultActionDisposables.add(this._instaService.createInstance(D6,u,{keybinding:this._getDefaultActionKeybindingLabel(u)}));const g={keybindingProvider:m=>this._keybindingService.lookupKeybinding(m.id),...n,menuAsChild:(n==null?void 0:n.menuAsChild)??!0,classNames:(n==null?void 0:n.classNames)??["codicon","codicon-chevron-down"],actionRunner:(n==null?void 0:n.actionRunner)??this._register(new sR)};this._dropdown=this._register(new D1e(t,t.actions,this._contextMenuService,g)),n!=null&&n.togglePrimaryAction&&this._register(this._dropdown.actionRunner.onDidRun(m=>{m.action instanceof i2&&this.update(m.action)}))}update(t){var n;(n=this._options)!=null&&n.togglePrimaryAction&&this._storageService.store(this._storageKey,t.id,1,1),this._defaultActionDisposables.clear(),this._defaultAction=this._defaultActionDisposables.add(this._instaService.createInstance(D6,t,{keybinding:this._getDefaultActionKeybindingLabel(t)})),this._defaultAction.actionRunner=this._defaultActionDisposables.add(new class extends sR{async runAction(r,o){await r.run(void 0)}}),this._container&&this._defaultAction.render(Obe(this._container,tn(".action-container")))}_getDefaultActionKeybindingLabel(t){var r;let n;if((r=this._options)!=null&&r.renderKeybindingWithDefaultActionLabel){const o=this._keybindingService.lookupKeybinding(t.id);o&&(n=`(${o.getLabel()})`)}return n}setActionContext(t){super.setActionContext(t),this._defaultAction.setActionContext(t),this._dropdown.setActionContext(t)}set actionRunner(t){super.actionRunner=t,this._defaultAction.actionRunner=t,this._dropdown.actionRunner=t}get actionRunner(){return super.actionRunner}render(t){this._container=t,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const n=tn(".action-container");this._defaultAction.render(Xt(this._container,n)),this._register(wt(n,rn.KEY_DOWN,o=>{const s=new Us(o);s.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),s.stopPropagation())}));const r=tn(".dropdown-action-container");this._dropdown.render(Xt(this._container,r)),this._register(wt(r,rn.KEY_DOWN,o=>{var a;const s=new Us(o);s.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(a=this._defaultAction.element)==null||a.focus(),s.stopPropagation())}))}focus(t){t?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(t){t?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}};fje=f3e([om(2,Do),om(3,ic),om(4,S2),om(5,wA),om(6,Yn),om(7,Bg)],fje);let gje=class extends g0o{constructor(t,n,r){super(null,t,t.actions.map(o=>({text:o.id===pd.ID?"─────────":o.label,isDisabled:!o.enabled})),0,n,Tko,{ariaLabel:t.tooltip,optionsAsChildren:!0,useCustomDrawn:!Dko(r)}),this.select(Math.max(0,t.actions.findIndex(o=>o.checked)))}render(t){super.render(t),t.style.borderColor=en(xet)}runAction(t,n){const r=this.action.actions[n];r&&this.actionRunner.run(r)}};gje=f3e([om(1,wL),om(2,ar)],gje);function Itt(e,t,n){return t instanceof i2?e.createInstance(D6,t,n):t instanceof uD?t.item.isSelection?e.createInstance(gje,t):t.item.isSplitButton?e.createInstance(fje,t,{...n,togglePrimaryAction:typeof t.item.isSplitButton!="boolean"?t.item.isSplitButton.togglePrimaryAction:!1}):e.createInstance(hje,t,n):void 0}var g3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},dy=function(e,t){return function(n,r){t(n,r,e)}},EF,UG;let mje=class{constructor(t,n,r){this._commandService=t,this._keybindingService=n,this._hiddenStates=new kje(r)}createMenu(t,n,r){return new I1e(t,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...r},this._commandService,this._keybindingService,n)}getMenuActions(t,n,r){const o=new I1e(t,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...r},this._commandService,this._keybindingService,n),s=o.getActions(r);return o.dispose(),s}resetHiddenStates(t){this._hiddenStates.reset(t)}};mje=g3e([dy(0,ba),dy(1,Do),dy(2,Bg)],mje);var ID;let kje=(ID=class{constructor(t){this._storageService=t,this._disposables=new xt,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const n=t.get(EF._key,0,"{}");this._data=JSON.parse(n)}catch{this._data=Object.create(null)}this._disposables.add(t.onDidChangeValue(0,EF._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const n=t.get(EF._key,0,"{}");this._data=JSON.parse(n)}catch(n){console.log("FAILED to read storage after UPDATE",n)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(t,n){return this._hiddenByDefaultCache.get(`${t.id}/${n}`)??!1}setDefaultState(t,n,r){this._hiddenByDefaultCache.set(`${t.id}/${n}`,r)}isHidden(t,n){var s;const r=this._isHiddenByDefault(t,n),o=((s=this._data[t.id])==null?void 0:s.includes(n))??!1;return r?!o:o}updateHidden(t,n,r){this._isHiddenByDefault(t,n)&&(r=!r);const s=this._data[t.id];if(r)s?s.indexOf(n)<0&&s.push(n):this._data[t.id]=[n];else if(s){const a=s.indexOf(n);a>=0&&oto(s,a),s.length===0&&delete this._data[t.id]}this._persist()}reset(t){if(t===void 0)this._data=Object.create(null),this._persist();else{for(const{id:n}of t)this._data[n]&&delete this._data[n];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const t=JSON.stringify(this._data);this._storageService.store(EF._key,t,0,0)}finally{this._ignoreChangeEvent=!1}}},EF=ID,ID._key="menu.hiddenCommands",ID);kje=EF=g3e([dy(0,Bg)],kje);class EZ{constructor(t,n){this._id=t,this._collectContextKeysForSubmenus=n,this._menuGroups=[],this._allMenuIds=new Set,this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get allMenuIds(){return this._allMenuIds}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._allMenuIds.clear(),this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const t=this._sort(Iu.getMenuItems(this._id));let n;for(const r of t){const o=r.group||"";(!n||n[0]!==o)&&(n=[o,[]],this._menuGroups.push(n)),n[1].push(r),this._collectContextKeysAndSubmenuIds(r)}this._allMenuIds.add(this._id)}_sort(t){return t}_collectContextKeysAndSubmenuIds(t){if(EZ._fillInKbExprKeys(t.when,this._structureContextKeys),LU(t)){if(t.command.precondition&&EZ._fillInKbExprKeys(t.command.precondition,this._preconditionContextKeys),t.command.toggled){const n=t.command.toggled.condition||t.command.toggled;EZ._fillInKbExprKeys(n,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&(Iu.getMenuItems(t.submenu).forEach(this._collectContextKeysAndSubmenuIds,this),this._allMenuIds.add(t.submenu))}static _fillInKbExprKeys(t,n){if(t)for(const r of t.keys())n.add(r)}}let vje=UG=class extends EZ{constructor(t,n,r,o,s,a){super(t,r),this._hiddenStates=n,this._commandService=o,this._keybindingService=s,this._contextKeyService=a,this.refresh()}createActionGroups(t){const n=[];for(const r of this._menuGroups){const[o,s]=r;let a;for(const l of s)if(this._contextKeyService.contextMatchesRules(l.when)){const d=LU(l);d&&this._hiddenStates.setDefaultState(this._id,l.command.id,!!l.isHiddenByDefault);const u=Fko(this._id,d?l.command:l,this._hiddenStates);if(d){const h=pDn(this._commandService,this._keybindingService,l.command.id,l.when);(a??(a=[])).push(new i2(l.command,l.alt,t,u,h,this._contextKeyService,this._commandService))}else{const h=new UG(l.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._keybindingService,this._contextKeyService).createActionGroups(t),g=pd.join(...h.map(m=>m[1]));g.length>0&&(a??(a=[])).push(new uD(l,u,g))}}a&&a.length>0&&n.push([o,a])}return n}_sort(t){return t.sort(UG._compareMenuItems)}static _compareMenuItems(t,n){const r=t.group,o=n.group;if(r!==o){if(r){if(!o)return-1}else return 1;if(r==="navigation")return-1;if(o==="navigation")return 1;const l=r.localeCompare(o);if(l!==0)return l}const s=t.order||0,a=n.order||0;return sa?1:UG._compareTitles(LU(t)?t.command.title:t.title,LU(n)?n.command.title:n.title)}static _compareTitles(t,n){const r=typeof t=="string"?t:t.original,o=typeof n=="string"?n:n.original;return r.localeCompare(o)}};vje=UG=g3e([dy(3,ba),dy(4,Do),dy(5,Qi)],vje);let I1e=class{constructor(t,n,r,o,s,a){this._disposables=new xt,this._menuInfo=new vje(t,n,r.emitEventsForSubmenuChanges,o,s,a);const l=new Es(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},r.eventDebounceDelay);this._disposables.add(l),this._disposables.add(Iu.onDidChangeMenu(g=>{for(const m of this._menuInfo.allMenuIds)if(g.has(m)){l.schedule();break}}));const d=this._disposables.add(new xt),u=g=>{let m=!1,v=!1,f=!1;for(const k of g)if(m=m||k.isStructuralChange,v=v||k.isEnablementChange,f=f||k.isToggleChange,m&&v&&f)break;return{menu:this,isStructuralChange:m,isEnablementChange:v,isToggleChange:f}},h=()=>{d.add(a.onDidChangeContext(g=>{const m=g.affectsSome(this._menuInfo.structureContextKeys),v=g.affectsSome(this._menuInfo.preconditionContextKeys),f=g.affectsSome(this._menuInfo.toggledContextKeys);(m||v||f)&&this._onDidChange.fire({menu:this,isStructuralChange:m,isEnablementChange:v,isToggleChange:f})})),d.add(n.onDidChange(g=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new M6n({onWillAddFirstListener:h,onDidRemoveLastListener:d.clear.bind(d),delay:r.eventDebounceDelay,merge:u}),this.onDidChange=this._onDidChange.event}getActions(t){return this._menuInfo.createActionGroups(t)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};I1e=g3e([dy(3,ba),dy(4,Do),dy(5,Qi)],I1e);function Fko(e,t,n){const r=Ono(t)?t.submenu.id:t.id,o=typeof t.title=="string"?t.title:t.title.value,s=dD({id:`hide/${e.id}/${r}`,label:U(1651,"Hide '{0}'",o),run(){n.updateHidden(e,r,!0)}}),a=dD({id:`toggle/${e.id}/${r}`,label:o,get checked(){return!n.isHidden(e,r)},run(){n.updateHidden(e,r,!!this.checked)}});return{hide:s,toggle:a,get isHidden(){return!a.checked}}}function pDn(e,t,n,r=void 0,o=!0){return dD({id:`configureKeybinding/${n}`,label:U(1652,"Configure Keybinding"),enabled:o,run(){const a=!!!t.lookupKeybinding(n)&&r?r.serialize():void 0;e.executeCommand("workbench.action.openGlobalKeybindings",`@command:${n}`+(a?` +when:${a}`:""))}})}const bDn=Cr("IActionViewItemService");class Nko{constructor(){this._providers=new Map,this._onDidChange=new at,this.onDidChange=this._onDidChange.event}dispose(){this._onDidChange.dispose()}lookUp(t,n){return this._providers.get(this._makeKey(t,n))}_makeKey(t,n){return`${t.id}/${n instanceof Wn?n.id:n}`}}zr(bDn,Nko,1);var wDn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Rk=function(e,t){return function(n,r){t(n,r,e)}};let M1e=class extends vko{constructor(t,n,r,o,s,a,l,d){super(t,s,{getKeyBinding:h=>a.lookupKeybinding(h.id)??void 0,...n,allowContextMenu:!0,skipTelemetry:typeof(n==null?void 0:n.telemetrySource)=="string"}),this._options=n,this._menuService=r,this._contextKeyService=o,this._contextMenuService=s,this._keybindingService=a,this._commandService=l,this._sessionDisposables=this._store.add(new xt);const u=n==null?void 0:n.telemetrySource;u&&this._store.add(this.actionBar.onDidRun(h=>d.publicLog2("workbenchActionExecuted",{id:h.action.id,from:u})))}setActions(t,n=[],r){var h,g,m;this._sessionDisposables.clear();const o=t.slice(),s=n.slice(),a=[];let l=0;const d=[];let u=!1;if(((h=this._options)==null?void 0:h.hiddenItemStrategy)!==-1)for(let v=0;vA==null?void 0:A.id)),f=this._options.overflowBehavior.maxItems-v.size;let k=0;for(let A=0;A=f&&(o[A]=void 0,d[A]=p))}}gbt(o),gbt(d),super.setActions(o,pd.join(d,s)),(a.length>0||o.length>0)&&this._sessionDisposables.add(wt(this.getElement(),"contextmenu",v=>{var b,w,O,y,C;const f=new Xh(ii(this.getElement()),v),k=this.getItemAction(f.target);if(!k)return;f.preventDefault(),f.stopPropagation();const A=[];if(k instanceof i2&&k.menuKeybinding)A.push(k.menuKeybinding);else if(!(k instanceof uD||k instanceof BJ)){const _=!!this._keybindingService.lookupKeybinding(k.id);A.push(pDn(this._commandService,this._keybindingService,k.id,void 0,_))}if(a.length>0){let _=!1;if(l===1&&((b=this._options)==null?void 0:b.hiddenItemStrategy)===0){_=!0;for(let S=0;Sthis._menuService.resetHiddenStates(r)}))),p.length!==0&&this._contextMenuService.showContextMenu({getAnchor:()=>f,getActions:()=>p,menuId:(O=this._options)==null?void 0:O.contextMenu,menuActionOptions:{renderShortTitle:!0,...(y=this._options)==null?void 0:y.menuOptions},skipTelemetry:typeof((C=this._options)==null?void 0:C.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};M1e=wDn([Rk(2,wA),Rk(3,Qi),Rk(4,S2),Rk(5,Do),Rk(6,ba),Rk(7,Nf)],M1e);let RJ=class extends M1e{get onDidChangeMenuItems(){return this._onDidChangeMenuItems.event}constructor(t,n,r,o,s,a,l,d,u,h,g){super(t,{resetMenu:n,...r,actionViewItemProvider:(f,k)=>{let A=h.lookUp(n,f instanceof uD?f.item.submenu.id:f.id);A||(A=r==null?void 0:r.actionViewItemProvider);const p=A==null?void 0:A(f,k,g,ii(t).vscodeWindowId);return p||Itt(g,f,k)}},o,s,a,l,d,u),this._onDidChangeMenuItems=this._store.add(new at);const m=this._store.add(o.createMenu(n,s,{emitEventsForSubmenuChanges:!0,eventDebounceDelay:r==null?void 0:r.eventDebounceDelay})),v=()=>{var A,p,b;const{primary:f,secondary:k}=kDn(m.getActions(r==null?void 0:r.menuOptions),(A=r==null?void 0:r.toolbarOptions)==null?void 0:A.primaryGroup,(p=r==null?void 0:r.toolbarOptions)==null?void 0:p.shouldInlineSubmenu,(b=r==null?void 0:r.toolbarOptions)==null?void 0:b.useSeparatorsInPrimaryActions);t.classList.toggle("has-no-actions",f.length===0&&k.length===0),super.setActions(f,k)};this._store.add(m.onDidChange(()=>{v(),this._onDidChangeMenuItems.fire(this)})),this._store.add(h.onDidChange(f=>{f===n&&v()})),v()}setActions(){throw new ui("This toolbar is populated from a menu.")}};RJ=wDn([Rk(3,wA),Rk(4,Qi),Rk(5,S2),Rk(6,Do),Rk(7,ba),Rk(8,Nf),Rk(9,bDn),Rk(10,Yn)],RJ);var Uko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DOt=function(e,t){return function(n,r){t(n,r,e)}};const pm=Cr("hoverService");let mV=class extends ft{get delay(){var t;return this.isInstantlyHovering()?0:(t=this.hoverOptions)!=null&&t.dynamicDelay?n=>{var r,o;return((o=(r=this.hoverOptions)==null?void 0:r.dynamicDelay)==null?void 0:o.call(r,n))??this._delay}:this._delay}constructor(t,n,r={},o,s){super(),this.placement=t,this.hoverOptions=n,this.overrideOptions=r,this.configurationService=o,this.hoverService=s,this.lastHoverHideTime=0,this.timeLimit=200,this.hoverDisposables=this._register(new xt),this._delay=this.configurationService.getValue("workbench.hover.delay"),this._register(this.configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))}))}showHover(t,n){const r=typeof this.overrideOptions=="function"?this.overrideOptions(t,n):this.overrideOptions;this.hoverDisposables.clear();const o=ec(t.target)?[t.target]:t.target.targetElements;for(const a of o)this.hoverDisposables.add(wc(a,"keydown",l=>{l.equals(9)&&this.hoverService.hideHover()}));const s=ec(t.content)?void 0:typeof t.content=="string"?t.content.toString():t.content.value;return this.hoverService.showInstantHover({...t,...r,persistence:{hideOnKeyDown:!0,...r.persistence},id:s,appearance:{...t.appearance,compact:!0,skipFadeInAnimation:this.isInstantlyHovering(),...r.appearance}},n)}isInstantlyHovering(){var t;return!!((t=this.hoverOptions)!=null&&t.instantHover)&&Date.now()-this.lastHoverHideTimethis._editor.getScrollTop()),this.isScrollTopZero=this.scrollTop.map(a=>a===0),this.modelAttached=Ko(this,this._editor.onDidChangeModel,a=>this._editor.hasModel()),this.editorOnDidChangeViewZones=A0("onDidChangeViewZones",this._editor.onDidChangeViewZones),this.editorOnDidContentSizeChange=A0("onDidContentSizeChange",this._editor.onDidContentSizeChange),this.domNodeSizeChanged=Mv("domNodeSizeChanged"),this.views=new Map,this._domNode.className="gutter monaco-editor";const o=this._domNode.appendChild(wo("div.scroll-decoration",{role:"presentation",ariaHidden:"true",style:{width:"100%"}}).root),s=new ResizeObserver(()=>{la(a=>{this.domNodeSizeChanged.trigger(a)})});s.observe(this._domNode),this._register(Hn(()=>s.disconnect())),this._register(Oi(a=>{o.className=this.isScrollTopZero.read(a)?"":"scroll-decoration"})),this._register(Oi(a=>this.render(a)))}dispose(){super.dispose(),mu(this._domNode)}render(t){if(!this.modelAttached.read(t))return;this.domNodeSizeChanged.read(t),this.editorOnDidChangeViewZones.read(t),this.editorOnDidContentSizeChange.read(t);const n=this.scrollTop.read(t),r=this._editor.getVisibleRanges(),o=new Set(this.views.keys()),s=Xn.ofStartAndLength(0,this._domNode.clientHeight);if(!s.isEmpty)for(const a of r){const l=new Ei(a.startLineNumber,a.endLineNumber+1),d=this.itemProvider.getIntersectingGutterItems(l,t);la(u=>{for(const h of d){if(!h.range.intersect(l))continue;o.delete(h.id);let g=this.views.get(h.id);if(g)g.item.set(h,u);else{const k=document.createElement("div");this._domNode.appendChild(k);const A=Ti("item",h),p=this.itemProvider.createView(A,k);g=new Vko(A,p,k),this.views.set(h.id,g)}const m=h.range.startLineNumber<=this._editor.getModel().getLineCount()?this._editor.getTopForLineNumber(h.range.startLineNumber,!0)-n:h.range.startLineNumber>1?this._editor.getBottomForLineNumber(h.range.startLineNumber-1,!1)-n:0,f=(h.range.endLineNumberExclusive===1?Math.max(m,this._editor.getTopForLineNumber(h.range.startLineNumber,!1)-n):Math.max(m,this._editor.getBottomForLineNumber(h.range.endLineNumberExclusive-1,!0)-n))-m;g.domNode.style.top=`${m}px`,g.domNode.style.height=`${f}px`,g.gutterItemView.layout(Xn.ofStartAndLength(m,f),s)}})}for(const a of o){const l=this.views.get(a);l.gutterItemView.dispose(),l.domNode.remove(),this.views.delete(a)}}}class Vko{constructor(t,n,r){this.item=t,this.gutterItemView=n,this.domNode=r}}var yDn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},hhe=function(e,t){return function(n,r){t(n,r,e)}};const ixe=[],Fle=35;let Aje=class extends ft{constructor(t,n,r,o,s,a,l,d,u){super(),this._diffModel=n,this._editors=r,this._options=o,this._sashLayout=s,this._boundarySashes=a,this._instantiationService=l,this._contextKeyService=d,this._menuService=u,this._menu=this._register(this._menuService.createMenu(Wn.DiffEditorHunkToolbar,this._contextKeyService)),this._actions=Ko(this,this._menu.onDidChange,()=>this._menu.getActions()),this._hasActions=this._actions.map(g=>g.length>0),this._showSash=Rt(this,g=>this._options.renderSideBySide.read(g)&&this._hasActions.read(g)),this.width=Rt(this,g=>this._hasActions.read(g)?Fle:0),this.elements=wo("div.gutter@gutter",{style:{position:"absolute",height:"100%",width:Fle+"px"}},[]),this._currentDiff=Rt(this,g=>{var k;const m=this._diffModel.read(g);if(!m)return;const v=(k=m.diff.read(g))==null?void 0:k.mappings,f=this._editors.modifiedCursor.read(g);if(f)return v==null?void 0:v.find(A=>A.lineRangeMapping.modified.contains(f.lineNumber))}),this._selectedDiffs=Rt(this,g=>{const m=this._diffModel.read(g),v=m==null?void 0:m.diff.read(g);if(!v)return ixe;const f=this._editors.modifiedSelections.read(g);if(f.every(b=>b.isEmpty()))return ixe;const k=new Iv(f.map(b=>Ei.fromRangeInclusive(b))),p=v.mappings.filter(b=>b.lineRangeMapping.innerChanges&&k.intersects(b.lineRangeMapping.modified)).map(b=>({mapping:b,rangeMappings:b.lineRangeMapping.innerChanges.filter(w=>f.some(O=>Ee.areIntersecting(w.modifiedRange,O)))}));return p.length===0||p.every(b=>b.rangeMappings.length===0)?ixe:p}),this._register(k0o(t,this.elements.root)),this._register(wt(this.elements.root,"click",()=>{this._editors.modified.focus()})),this._register(Q6(this.elements.root,{display:this._hasActions.map(g=>g?"block":"none")})),vv(this,g=>this._showSash.read(g)?new hDn(t,this._sashLayout.dimensions,this._options.enableSplitViewResizing,this._boundarySashes,$Je(this,v=>this._sashLayout.sashLeft.read(v)-Fle,(v,f)=>this._sashLayout.sashLeft.set(v+Fle,f)),()=>this._sashLayout.resetSash()):void 0).recomputeInitiallyAndOnChange(this._store);const h=Rt(this,g=>{const m=this._diffModel.read(g);if(!m)return[];const v=m.diff.read(g);if(!v)return[];const f=this._selectedDiffs.read(g);if(f.length>0){const A=s2.fromRangeMappings(f.flatMap(p=>p.rangeMappings));return[new BOt(A,!0,Wn.DiffEditorSelectionToolbar,void 0,m.model.original.uri,m.model.modified.uri)]}const k=this._currentDiff.read(g);return v.mappings.map(A=>new BOt(A.lineRangeMapping.withInnerChangesFromLineRanges(),A.lineRangeMapping===(k==null?void 0:k.lineRangeMapping),Wn.DiffEditorHunkToolbar,void 0,m.model.original.uri,m.model.modified.uri))});this._register(new Wko(this._editors.modified,this.elements.root,{getIntersectingGutterItems:(g,m)=>h.read(m),createView:(g,m)=>this._instantiationService.createInstance(pje,g,m,this)})),this._register(wt(this.elements.gutter,rn.MOUSE_WHEEL,g=>{this._editors.modified.getOption(117).handleMouseWheel&&this._editors.modified.delegateScrollFromMouseWheelEvent(g)},{passive:!1}))}computeStagedValue(t){const n=t.innerChanges??[],r=new AR(this._editors.modifiedModel.get()),o=new AR(this._editors.original.getModel());return new V4(n.map(l=>l.toTextEdit(r))).apply(o)}layout(t){this.elements.gutter.style.left=t+"px"}};Aje=yDn([hhe(6,Yn),hhe(7,Qi),hhe(8,wA)],Aje);class BOt{constructor(t,n,r,o,s,a){this.mapping=t,this.showAlways=n,this.menuId=r,this.rangeOverride=o,this.originalUri=s,this.modifiedUri=a}get id(){return this.mapping.modified.toString()}get range(){return this.rangeOverride??this.mapping.modified}}let pje=class extends ft{constructor(t,n,r,o){super(),this._item=t,this._elements=wo("div.gutterItem",{style:{height:"20px",width:"34px"}},[wo("div.background@background",{},[]),wo("div.buttons@buttons",{},[])]),this._showAlways=this._item.map(this,a=>a.showAlways),this._menuId=this._item.map(this,a=>a.menuId),this._isSmall=Ti(this,!1),this._lastItemRange=void 0,this._lastViewRange=void 0;const s=this._register(o.createInstance(mV,"element",{instantHover:!0},{position:{hoverPosition:1}}));this._register(bN(n,this._elements.root)),this._register(Oi(a=>{const l=this._showAlways.read(a);this._elements.root.classList.toggle("noTransition",!0),this._elements.root.classList.toggle("showAlways",l),setTimeout(()=>{this._elements.root.classList.toggle("noTransition",!1)},0)})),this._register(Ef((a,l)=>{this._elements.buttons.replaceChildren();const d=l.add(o.createInstance(RJ,this._elements.buttons,this._menuId.read(a),{orientation:1,hoverDelegate:s,toolbarOptions:{primaryGroup:u=>u.startsWith("primary")},overflowBehavior:{maxItems:this._isSmall.read(a)?1:3},hiddenItemStrategy:0,actionRunner:l.add(new ODn(()=>{const u=this._item.read(void 0),h=u.mapping;return{mapping:h,originalWithModifiedChanges:r.computeStagedValue(h),originalUri:u.originalUri,modifiedUri:u.modifiedUri}})),menuOptions:{shouldForwardArgs:!0}}));l.add(d.onDidChangeMenuItems(()=>{this._lastItemRange&&this.layout(this._lastItemRange,this._lastViewRange)}))}))}layout(t,n){this._lastItemRange=t,this._lastViewRange=n;let r=this._elements.buttons.clientHeight;this._isSmall.set(this._item.get().mapping.original.startLineNumber===1&&t.length<30,void 0),r=this._elements.buttons.clientHeight;const o=t.length/2-r/2,s=r;let a=t.start+o;const l=Xn.tryCreate(s,n.endExclusive-s-r),d=Xn.tryCreate(t.start+s,t.endExclusive-r-s);d&&l&&d.start=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Hko=function(e,t){return function(n,r){t(n,r,e)}},bje,X9;let P1e=(X9=class extends ft{static setBreadcrumbsSourceFactory(t){this._breadcrumbsSourceFactory.set(t,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(t,n,r,o){super(),this._editors=t,this._diffModel=n,this._options=r,this._instantiationService=o,this._modifiedOutlineSource=vv(this,d=>{const u=this._editors.modifiedModel.read(d),h=bje._breadcrumbsSourceFactory.read(d);return!u||!h?void 0:h(u,this._instantiationService)}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(d=>{if(d.reason===1)return;const u=this._diffModel.get();la(h=>{for(const g of this._editors.original.getSelections()||[])u==null||u.ensureOriginalLineIsVisible(g.getStartPosition().lineNumber,0,h),u==null||u.ensureOriginalLineIsVisible(g.getEndPosition().lineNumber,0,h)})})),this._register(this._editors.modified.onDidChangeCursorPosition(d=>{if(d.reason===1)return;const u=this._diffModel.get();la(h=>{for(const g of this._editors.modified.getSelections()||[])u==null||u.ensureModifiedLineIsVisible(g.getStartPosition().lineNumber,0,h),u==null||u.ensureModifiedLineIsVisible(g.getEndPosition().lineNumber,0,h)})}));const s=this._diffModel.map((d,u)=>{var g;const h=(d==null?void 0:d.unchangedRegions.read(u))??[];return h.length===1&&h[0].modifiedLineNumber===1&&h[0].lineCount===((g=this._editors.modifiedModel.read(u))==null?void 0:g.getLineCount())?[]:h});this.viewZones=Rt(this,d=>{const u=this._modifiedOutlineSource.read(d);if(!u)return{origViewZones:[],modViewZones:[]};const h=[],g=[],m=this._options.renderSideBySide.read(d),v=this._options.compactMode.read(d),f=s.read(d);for(let k=0;kA.getHiddenOriginalRange(w).startLineNumber-1),b=new wN(p,12);h.push(b),d.store.add(new ROt(this._editors.original,b,A,!m))}{const p=Rt(this,w=>A.getHiddenModifiedRange(w).startLineNumber-1),b=new wN(p,12);g.push(b),d.store.add(new ROt(this._editors.modified,b,A))}}else{{const p=Rt(this,w=>A.getHiddenOriginalRange(w).startLineNumber-1),b=new wN(p,24);h.push(b),d.store.add(new IOt(this._editors.original,b,A,A.originalUnchangedRange,!m,u,w=>this._diffModel.get().ensureModifiedLineIsVisible(w,2,void 0),this._options))}{const p=Rt(this,w=>A.getHiddenModifiedRange(w).startLineNumber-1),b=new wN(p,24);g.push(b),d.store.add(new IOt(this._editors.modified,b,A,A.modifiedUnchangedRange,!1,u,w=>this._diffModel.get().ensureModifiedLineIsVisible(w,2,void 0),this._options))}}}return{origViewZones:h,modViewZones:g}});const a={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},l={description:"Fold Unchanged",glyphMarginHoverMessage:new bf(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(U(124,"Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+fi.asClassName(zt.fold),zIndex:10001};this._register(C1e(this._editors.original,Rt(this,d=>{const u=s.read(d),h=u.map(g=>({range:g.originalUnchangedRange.toInclusiveRange(),options:a}));for(const g of u)g.shouldHideControls(d)&&h.push({range:Ee.fromPositions(new it(g.originalLineNumber,1)),options:l});return h}))),this._register(C1e(this._editors.modified,Rt(this,d=>{const u=s.read(d),h=u.map(g=>({range:g.modifiedUnchangedRange.toInclusiveRange(),options:a}));for(const g of u)g.shouldHideControls(d)&&h.push({range:Ei.ofLength(g.modifiedLineNumber,1).toInclusiveRange(),options:l});return h}))),this._register(Oi(d=>{const u=s.read(d);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(u.map(h=>h.getHiddenOriginalRange(d).toInclusiveRange()).filter(Ru)),this._editors.modified.setHiddenAreas(u.map(h=>h.getHiddenModifiedRange(d).toInclusiveRange()).filter(Ru))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(d=>{var u;if(!d.event.rightButton&&d.target.position&&((u=d.target.element)!=null&&u.className.includes("fold-unchanged"))){const h=d.target.position.lineNumber,g=this._diffModel.get();if(!g)return;const m=g.unchangedRegions.get().find(v=>v.modifiedUnchangedRange.contains(h));if(!m)return;m.collapseAll(void 0),d.event.stopPropagation(),d.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(d=>{var u;if(!d.event.rightButton&&d.target.position&&((u=d.target.element)!=null&&u.className.includes("fold-unchanged"))){const h=d.target.position.lineNumber,g=this._diffModel.get();if(!g)return;const m=g.unchangedRegions.get().find(v=>v.originalUnchangedRange.contains(h));if(!m)return;m.collapseAll(void 0),d.event.stopPropagation(),d.event.preventDefault()}}))}},bje=X9,X9._breadcrumbsSourceFactory=Ti(X9,()=>({dispose(){},getBreadcrumbItems(t,n){return[]}})),X9);P1e=bje=zko([Hko(3,Yn)],P1e);class ROt extends Ctt{constructor(t,n,r,o=!1){const s=wo("div.diff-hidden-lines-widget");super(t,n,s.root),this._unchangedRegion=r,this._hide=o,this._nodes=wo("div.diff-hidden-lines-compact",[wo("div.line-left",[]),wo("div.text@text",[]),wo("div.line-right",[])]),s.root.appendChild(this._nodes.root),this._hide&&this._nodes.root.replaceChildren(),this._register(Oi(a=>{if(!this._hide){const l=this._unchangedRegion.getHiddenModifiedRange(a).length,d=U(125,"{0} hidden lines",l);this._nodes.text.innerText=d}}))}}class IOt extends Ctt{constructor(t,n,r,o,s,a,l,d){const u=wo("div.diff-hidden-lines-widget");super(t,n,u.root),this._editor=t,this._unchangedRegion=r,this._unchangedRegionRange=o,this._hide=s,this._modifiedOutlineSource=a,this._revealModifiedHiddenLine=l,this._options=d,this._nodes=wo("div.diff-hidden-lines",[wo("div.top@top",{title:U(126,"Click or drag to show more above")}),wo("div.center@content",{style:{display:"flex"}},[wo("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[tn("a",{title:U(127,"Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...P9("$(unfold)"))]),wo("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),wo("div.bottom@bottom",{title:U(128,"Click or drag to show more below"),role:"button"})]),u.root.appendChild(this._nodes.root),this._hide?mu(this._nodes.first):this._register(Q6(this._nodes.first,{width:hl(this._editor).layoutInfoContentLeft})),this._register(Oi(g=>{const m=this._unchangedRegion.visibleLineCountTop.read(g)+this._unchangedRegion.visibleLineCountBottom.read(g)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!m),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(g)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(g)>0),this._nodes.top.classList.toggle("canMoveBottom",!m);const v=this._unchangedRegion.isDragged.read(g),f=this._editor.getDomNode();f&&(f.classList.toggle("draggingUnchangedRegion",!!v),v==="top"?(f.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(g)>0),f.classList.toggle("canMoveBottom",!m)):v==="bottom"?(f.classList.toggle("canMoveTop",!m),f.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(g)>0)):(f.classList.toggle("canMoveTop",!1),f.classList.toggle("canMoveBottom",!1)))}));const h=this._editor;this._register(wt(this._nodes.top,"mousedown",g=>{if(g.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),g.preventDefault();const m=g.clientY;let v=!1;const f=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const k=ii(this._nodes.top),A=wt(k,"mousemove",b=>{const O=b.clientY-m;v=v||Math.abs(O)>2;const y=Math.round(O/h.getOption(75)),C=Math.max(0,Math.min(f+y,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(C,void 0)}),p=wt(k,"mouseup",b=>{v||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),A.dispose(),p.dispose()})})),this._register(wt(this._nodes.bottom,"mousedown",g=>{if(g.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),g.preventDefault();const m=g.clientY;let v=!1;const f=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const k=ii(this._nodes.bottom),A=wt(k,"mousemove",b=>{const O=b.clientY-m;v=v||Math.abs(O)>2;const y=Math.round(O/h.getOption(75)),C=Math.max(0,Math.min(f-y,this._unchangedRegion.getMaxVisibleLineCountBottom())),_=this._unchangedRegionRange.endLineNumberExclusive>h.getModel().getLineCount()?h.getContentHeight():h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(C,void 0);const S=this._unchangedRegionRange.endLineNumberExclusive>h.getModel().getLineCount()?h.getContentHeight():h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(S-_))}),p=wt(k,"mouseup",b=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!v){const w=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const O=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(O-w))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),A.dispose(),p.dispose()})})),this._register(Oi(g=>{const m=[];if(!this._hide){const v=r.getHiddenModifiedRange(g).length,f=U(129,"{0} hidden lines",v),k=tn("span",{title:U(130,"Double click to unfold")},f);k.addEventListener("dblclick",b=>{b.button===0&&(b.preventDefault(),this._unchangedRegion.showAll(void 0))}),m.push(k);const A=this._unchangedRegion.getHiddenModifiedRange(g),p=this._modifiedOutlineSource.getBreadcrumbItems(A,g);if(p.length>0){m.push(tn("span",void 0,"  |  "));for(let b=0;b{this._revealModifiedHiddenLine(w.startLineNumber)}}}}mu(this._nodes.others,...m)}))}}const rxe=[];class $ko extends ft{constructor(t,n,r,o){super(),this._editors=t,this._diffModel=n,this._options=r,this._widget=o,this._selectedDiffs=Rt(this,s=>{const a=this._diffModel.read(s),l=a==null?void 0:a.diff.read(s);if(!l)return rxe;const d=this._editors.modifiedSelections.read(s);if(d.every(m=>m.isEmpty()))return rxe;const u=new Iv(d.map(m=>Ei.fromRangeInclusive(m))),g=l.mappings.filter(m=>m.lineRangeMapping.innerChanges&&u.intersects(m.lineRangeMapping.modified)).map(m=>({mapping:m,rangeMappings:m.lineRangeMapping.innerChanges.filter(v=>d.some(f=>Ee.areIntersecting(v.modifiedRange,f)))}));return g.length===0||g.every(m=>m.rangeMappings.length===0)?rxe:g}),this._register(Ef((s,a)=>{if(!this._options.shouldRenderOldRevertArrows.read(s))return;const l=this._diffModel.read(s),d=l==null?void 0:l.diff.read(s);if(!l||!d||l.movedTextToCompare.read(s))return;const u=[],h=this._selectedDiffs.read(s),g=new Set(h.map(m=>m.mapping));if(h.length>0){const m=this._editors.modifiedSelections.read(s),v=a.add(new F1e(m[m.length-1].positionLineNumber,this._widget,h.flatMap(f=>f.rangeMappings),!0));this._editors.modified.addGlyphMarginWidget(v),u.push(v)}for(const m of d.mappings)if(!g.has(m)&&!m.lineRangeMapping.modified.isEmpty&&m.lineRangeMapping.innerChanges){const v=a.add(new F1e(m.lineRangeMapping.modified.startLineNumber,this._widget,m.lineRangeMapping,!1));this._editors.modified.addGlyphMarginWidget(v),u.push(v)}a.add(Hn(()=>{for(const m of u)this._editors.modified.removeGlyphMarginWidget(m)}))}))}}const zve=class zve extends ft{getId(){return this._id}constructor(t,n,r,o){super(),this._lineNumber=t,this._widget=n,this._diffs=r,this._revertSelection=o,this._id=`revertButton${zve.counter++}`,this._domNode=wo("div.revertButton",{title:this._revertSelection?U(135,"Revert Selected Changes"):U(136,"Revert Change")},[y3(zt.arrowRight)]).root,this._register(wt(this._domNode,rn.MOUSE_DOWN,s=>{s.button!==2&&(s.stopPropagation(),s.preventDefault())})),this._register(wt(this._domNode,rn.MOUSE_UP,s=>{s.stopPropagation(),s.preventDefault()})),this._register(wt(this._domNode,rn.CLICK,s=>{this._diffs instanceof Ag?this._widget.revert(this._diffs):this._widget.revertRangeMappings(this._diffs),s.stopPropagation(),s.preventDefault()}))}getDomNode(){return this._domNode}getPosition(){return{lane:p3.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}};zve.counter=0;let F1e=zve;var Xko=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},CX=function(e,t){return function(n,r){t(n,r,e)}};let Ey=class extends cje{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(t,n,r,o,s,a,l,d){super(),this._domElement=t,this._parentContextKeyService=o,this._parentInstantiationService=s,this._codeEditorService=a,this._accessibilitySignalService=l,this._editorProgressService=d,this.elements=wo("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[wo("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),wo("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),wo("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModelSrc=this._register(YJe(this,void 0)),this._diffModel=Rt(this,O=>{var y;return(y=this._diffModelSrc.read(O))==null?void 0:y.object}),this.onDidChangeModel=an.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new rH([Qi,this._contextKeyService]))),this._boundarySashes=Ti(this,void 0),this._accessibleDiffViewerShouldBeVisible=Ti(this,!1),this._accessibleDiffViewerVisible=Rt(this,O=>this._options.onlyShowAccessibleDiffViewer.read(O)?!0:this._accessibleDiffViewerShouldBeVisible.read(O)),this._movedBlocksLinesPart=Ti(this,void 0),this._layoutInfo=Rt(this,O=>{var R,I;const y=this._rootSizeObserver.width.read(O),C=this._rootSizeObserver.height.read(O);this._rootSizeObserver.automaticLayout?this.elements.root.style.height="100%":this.elements.root.style.height=C+"px";const _=this._sash.read(O),S=this._gutter.read(O),L=(S==null?void 0:S.width.read(O))??0,E=((R=this._overviewRulerPart.read(O))==null?void 0:R.width)??0;let T,D,P,Q,M;if(!!_){const F=_.sashLeft.read(O),j=((I=this._movedBlocksLinesPart.read(O))==null?void 0:I.width.read(O))??0;T=0,D=F-L-j,M=F-L,P=F,Q=y-P-E}else{M=0;const F=this._options.inlineViewHideOriginalLineNumbers.read(O);T=L,F?D=0:D=Math.max(5,this._editors.originalObs.layoutInfoDecorationsLeft.read(O)),P=L+D,Q=y-P-E}return this.elements.original.style.left=T+"px",this.elements.original.style.width=D+"px",this._editors.original.layout({width:D,height:C},!0),S==null||S.layout(M),this.elements.modified.style.left=P+"px",this.elements.modified.style.width=Q+"px",this._editors.modified.layout({width:Q,height:C},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((O,y)=>O==null?void 0:O.diff.read(y)),this.onDidUpdateDiff=an.fromObservableLight(this._diffValue),this._codeEditorService.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register(Hn(()=>this.elements.root.remove())),this._rootSizeObserver=this._register(new nDn(this.elements.root,n.dimension)),this._rootSizeObserver.setAutomaticLayout(n.automaticLayout??!1),this._options=this._instantiationService.createInstance(dje,n),this._register(Oi(O=>{this._options.setWidth(this._rootSizeObserver.width.read(O))})),this._contextKeyService.createKey($e.isEmbeddedDiffEditor.key,!1),this._register(Dw($e.isEmbeddedDiffEditor,this._contextKeyService,O=>this._options.isInEmbeddedEditor.read(O))),this._register(Dw($e.comparingMovedCode,this._contextKeyService,O=>{var y;return!!((y=this._diffModel.read(O))!=null&&y.movedTextToCompare.read(O))})),this._register(Dw($e.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,O=>this._options.couldShowInlineViewBecauseOfSize.read(O))),this._register(Dw($e.diffEditorInlineMode,this._contextKeyService,O=>!this._options.renderSideBySide.read(O))),this._register(Dw($e.hasChanges,this._contextKeyService,O=>{var y,C;return(((C=(y=this._diffModel.read(O))==null?void 0:y.diff.read(O))==null?void 0:C.mappings.length)??0)>0})),this._editors=this._register(this._instantiationService.createInstance(lje,this.elements.original,this.elements.modified,this._options,r,(O,y,C,_)=>this._createInnerEditor(O,y,C,_))),this._register(Dw($e.diffEditorOriginalWritable,this._contextKeyService,O=>this._options.originalEditable.read(O))),this._register(Dw($e.diffEditorModifiedWritable,this._contextKeyService,O=>!this._options.readOnly.read(O))),this._register(Dw($e.diffEditorOriginalUri,this._contextKeyService,O=>{var y;return((y=this._diffModel.read(O))==null?void 0:y.model.original.uri.toString())??""})),this._register(Dw($e.diffEditorModifiedUri,this._contextKeyService,O=>{var y;return((y=this._diffModel.read(O))==null?void 0:y.model.modified.uri.toString())??""})),this._overviewRulerPart=vv(this,O=>this._options.renderOverviewRuler.read(O)?this._instantiationService.createInstance(A_(DJ),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(y=>y.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store);const u={height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((O,y)=>{var C;return O-(((C=this._overviewRulerPart.read(y))==null?void 0:C.width)??0)})};this._sashLayout=new lko(this._options,u),this._sash=vv(this,O=>{const y=this._options.renderSideBySide.read(O);return this.elements.root.classList.toggle("side-by-side",y),y?new hDn(this.elements.root,u,this._options.enableSplitViewResizing,this._boundarySashes,this._sashLayout.sashLeft,()=>this._sashLayout.resetSash()):void 0}).recomputeInitiallyAndOnChange(this._store);const h=vv(this,O=>this._instantiationService.createInstance(A_(P1e),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);vv(this,O=>this._instantiationService.createInstance(A_(J0o),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const g=new Set,m=new Set;let v=!1;const f=vv(this,O=>this._instantiationService.createInstance(A_(sje),ii(this._domElement),this._editors,this._diffModel,this._options,this,()=>v||h.read(void 0).isUpdatingHiddenAreas,g,m)).recomputeInitiallyAndOnChange(this._store),k=Rt(this,O=>{const y=f.read(O).viewZones.read(O).orig,C=h.read(O).viewZones.read(O).origViewZones;return y.concat(C)}),A=Rt(this,O=>{const y=f.read(O).viewZones.read(O).mod,C=h.read(O).viewZones.read(O).modViewZones;return y.concat(C)});this._register(_1e(this._editors.original,k,O=>{v=O},g));let p;this._register(_1e(this._editors.modified,A,O=>{v=O,v?p=O3.capture(this._editors.modified):(p==null||p.restore(this._editors.modified),p=void 0)},m)),this._accessibleDiffViewer=vv(this,O=>this._instantiationService.createInstance(A_(kQ),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(y,C)=>this._accessibleDiffViewerShouldBeVisible.set(y,C),this._options.onlyShowAccessibleDiffViewer.map(y=>!y),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((y,C)=>{var _;return(_=y==null?void 0:y.diff.read(C))==null?void 0:_.mappings.map(S=>S.lineRangeMapping)}),new P0o(this._editors))).recomputeInitiallyAndOnChange(this._store);const b=this._accessibleDiffViewerVisible.map(O=>O?"hidden":"visible");this._register(Q6(this.elements.modified,{visibility:b})),this._register(Q6(this.elements.original,{visibility:b})),this._createDiffEditorContributions(),this._codeEditorService.addDiffEditor(this),this._register(Hn(()=>{this._codeEditorService.removeDiffEditor(this)})),this._gutter=vv(this,O=>this._options.shouldRenderGutterMenu.read(O)?this._instantiationService.createInstance(A_(Aje),this.elements.root,this._diffModel,this._editors,this._options,this._sashLayout,this._boundarySashes):void 0),this._register(KW(this._layoutInfo)),vv(this,O=>new(A_(jU))(this.elements.root,this._diffModel,this._layoutInfo.map(y=>y.originalEditor),this._layoutInfo.map(y=>y.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,O=>{this._movedBlocksLinesPart.set(O,void 0)}),this._register(an.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,O=>this._handleCursorPositionChange(O,!0))),this._register(an.runAndSubscribe(this._editors.original.onDidChangeCursorPosition,O=>this._handleCursorPositionChange(O,!1)));const w=this._diffModel.map(this,(O,y)=>{if(O)return O.diff.read(y)===void 0&&!O.isDiffUpToDate.read(y)});this._register(Ef((O,y)=>{if(w.read(O)===!0){const C=this._editorProgressService.show(!0,1e3);y.add(Hn(()=>C.done()))}})),this._register(Ef((O,y)=>{y.add(new(A_($ko))(this._editors,this._diffModel,this._options,this))})),this._register(Ef((O,y)=>{const C=this._diffModel.read(O);if(C)for(const _ of[C.model.original,C.model.modified])y.add(_.onWillDispose(S=>{zi(new ui("TextModel got disposed before DiffEditorWidget model got reset")),this.setModel(null)}))})),this._register(Oi(O=>{this._options.setModel(this._diffModel.read(O))}))}_createInnerEditor(t,n,r,o){return t.createInstance(gR,n,r,o)}_createDiffEditorContributions(){const t=xU.getDiffEditorContributions();for(const n of t)try{this._register(this._instantiationService.createInstance(n.ctor,this))}catch(r){zi(r)}}get _targetEditor(){return this._editors.modified}getEditorType(){return Nie.IDiffEditor}layout(t){this._rootSizeObserver.observe(t)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var r;const t=this._editors.original.saveViewState(),n=this._editors.modified.saveViewState();return{original:t,modified:n,modelState:(r=this._diffModel.get())==null?void 0:r.serializeState()}}restoreViewState(t){var n;if(t&&t.original&&t.modified){const r=t;this._editors.original.restoreViewState(r.original),this._editors.modified.restoreViewState(r.modified),r.modelState&&((n=this._diffModel.get())==null||n.restoreSerializedState(r.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(t){return this._instantiationService.createInstance(oje,t,this._options)}getModel(){var t;return((t=this._diffModel.get())==null?void 0:t.model)??null}setModel(t){const n=t?"model"in t?S1e.create(t).createNewRef(this):S1e.create(this.createViewModel(t),this):null;this.setDiffModel(n)}setDiffModel(t,n){const r=this._diffModel.get();!t&&r&&this._accessibleDiffViewer.get().close(),this._diffModel.get()!==(t==null?void 0:t.object)&&qW(n,o=>{var l;const s=t==null?void 0:t.object;Ko.batchEventsGlobally(o,()=>{this._editors.original.setModel(s?s.model.original:null),this._editors.modified.setModel(s?s.model.modified:null)});const a=(l=this._diffModelSrc.get())==null?void 0:l.createNewRef(this);this._diffModelSrc.set(t==null?void 0:t.createNewRef(this),o),setTimeout(()=>{a==null||a.dispose()},0)})}updateOptions(t){this._options.updateOptions(t)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var n;const t=(n=this._diffModel.get())==null?void 0:n.diff.get();return t?Gko(t):null}getDiffComputationResult(){var n;const t=(n=this._diffModel.get())==null?void 0:n.diff.get();return t?{changes:this.getLineChanges(),changes2:t.mappings.map(r=>r.lineRangeMapping),identical:t.identical,quitEarly:t.quitEarly}:null}revert(t){const n=this._diffModel.get();!n||!n.isDiffUpToDate.get()||(this._editors.modified.pushUndoStop(),this._editors.modified.executeEdits("diffEditor",[{range:t.modified.toExclusiveRange(),text:n.model.original.getValueInRange(t.original.toExclusiveRange())}]),this._editors.modified.pushUndoStop())}revertRangeMappings(t){const n=this._diffModel.get();if(!n||!n.isDiffUpToDate.get())return;const r=t.map(o=>({range:o.modifiedRange,text:n.model.original.getValueInRange(o.originalRange)}));this._editors.modified.pushUndoStop(),this._editors.modified.executeEdits("diffEditor",r),this._editors.modified.pushUndoStop()}revertFocusedRangeMappings(){var d,u;const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const n=(u=(d=this._diffModel.get())==null?void 0:d.diff.get())==null?void 0:u.mappings;if(!n||n.length===0)return;const r=this._editors.modified;if(!r.hasTextFocus())return;const o=r.getPosition().lineNumber,s=r.getSelection(),a=Ei.fromRange(s||new Ee(o,0,o,0)),l=n.filter(h=>h.lineRangeMapping.modified.intersect(a));r.pushUndoStop(),r.executeEdits("diffEditor",l.map(h=>({range:h.lineRangeMapping.modified.toExclusiveRange(),text:t.model.original.getValueInRange(h.lineRangeMapping.original.toExclusiveRange())}))),r.pushUndoStop()}_goTo(t){this._editors.modified.setPosition(new it(t.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(t.lineRangeMapping.modified.toExclusiveRange())}goToDiff(t){var s,a;const n=(a=(s=this._diffModel.get())==null?void 0:s.diff.get())==null?void 0:a.mappings;if(!n||n.length===0)return;const r=this._editors.modified.getPosition().lineNumber;let o;t==="next"?this._editors.modified.getModel().getLineCount()===r?o=n[0]:o=n.find(d=>d.lineRangeMapping.modified.startLineNumber>r)??n[0]:o=cJ(n,l=>l.lineRangeMapping.modified.startLineNumber{var r;const n=(r=t.diff.get())==null?void 0:r.mappings;!n||n.length===0||this._goTo(n[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const t=this._diffModel.get();t&&await t.waitForDiff()}mapToOtherSide(){var a,l;const t=this._editors.modified.hasWidgetFocus(),n=t?this._editors.modified:this._editors.original,r=t?this._editors.original:this._editors.modified;let o;const s=n.getSelection();if(s){const d=(l=(a=this._diffModel.get())==null?void 0:a.diff.get())==null?void 0:l.mappings.map(u=>t?u.lineRangeMapping.flip():u.lineRangeMapping);if(d){const u=uOt(s.getStartPosition(),d),h=uOt(s.getEndPosition(),d);o=Ee.plusRange(u,h)}}return{destination:r,destinationSelection:o}}switchSide(){const{destination:t,destinationSelection:n}=this.mapToOtherSide();t.focus(),n&&t.setSelection(n)}exitCompareMove(){const t=this._diffModel.get();t&&t.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var n;const t=(n=this._diffModel.get())==null?void 0:n.unchangedRegions.get();t&&la(r=>{for(const o of t)o.collapseAll(r)})}showAllUnchangedRegions(){var n;const t=(n=this._diffModel.get())==null?void 0:n.unchangedRegions.get();t&&la(r=>{for(const o of t)o.showAll(r)})}_handleCursorPositionChange(t,n){var r,o;if((t==null?void 0:t.reason)===3){const s=(o=(r=this._diffModel.get())==null?void 0:r.diff.get())==null?void 0:o.mappings.find(a=>n?a.lineRangeMapping.modified.contains(t.position.lineNumber):a.lineRangeMapping.original.contains(t.position.lineNumber));s!=null&&s.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(nm.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):s!=null&&s.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(nm.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):s&&this._accessibilitySignalService.playSignal(nm.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}};Ey=Xko([CX(3,Qi),CX(4,Yn),CX(5,yo),CX(6,pL),CX(7,V8)],Ey);function Gko(e){return e.mappings.map(t=>{const n=t.lineRangeMapping;let r,o,s,a,l=n.innerChanges;return n.original.isEmpty?(r=n.original.startLineNumber-1,o=0,l=void 0):(r=n.original.startLineNumber,o=n.original.endLineNumberExclusive-1),n.modified.isEmpty?(s=n.modified.startLineNumber-1,a=0,l=void 0):(s=n.modified.startLineNumber,a=n.modified.endLineNumberExclusive-1),{originalStartLineNumber:r,originalEndLineNumber:o,modifiedStartLineNumber:s,modifiedEndLineNumber:a,charChanges:l==null?void 0:l.map(d=>({originalStartLineNumber:d.originalRange.startLineNumber,originalStartColumn:d.originalRange.startColumn,originalEndLineNumber:d.originalRange.endLineNumber,originalEndColumn:d.originalRange.endColumn,modifiedStartLineNumber:d.modifiedRange.startLineNumber,modifiedStartColumn:d.modifiedRange.startColumn,modifiedEndLineNumber:d.modifiedRange.endLineNumber,modifiedEndColumn:d.modifiedRange.endColumn}))}})}class Yko extends zu{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:_t(85,"Toggle Collapse Unchanged Regions"),icon:zt.map,toggled:Ft.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:Ft.has("isInDiffEditor"),menu:{when:Ft.has("isInDiffEditor"),id:Wn.EditorTitle,order:22,group:"navigation"}})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.hideUnchangedRegions.enabled");r.updateValue("diffEditor.hideUnchangedRegions.enabled",o)}}class CDn extends zu{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:_t(86,"Toggle Show Moved Code Blocks"),precondition:Ft.has("isInDiffEditor")})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.experimental.showMoves");r.updateValue("diffEditor.experimental.showMoves",o)}}class _Dn extends zu{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:_t(87,"Toggle Use Inline View When Space Is Limited"),precondition:Ft.has("isInDiffEditor")})}run(t,...n){const r=t.get(ar),o=!r.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");r.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",o)}}const Gie=_t(88,"Diff Editor");class Zko extends Op{constructor(){super({id:"diffEditor.switchSide",title:_t(89,"Switch Side"),icon:zt.arrowSwap,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,r){const o=QI(t);if(o instanceof Ey){if(r&&r.dryRun)return{destinationSelection:o.mapToOtherSide().destinationSelection};o.switchSide()}}}class qko extends Op{constructor(){super({id:"diffEditor.exitCompareMove",title:_t(90,"Exit Compare Move"),icon:zt.close,precondition:$e.comparingMovedCode,f1:!1,category:Gie,keybinding:{weight:1e4,primary:9}})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.exitCompareMove()}}class Kko extends Op{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:_t(91,"Collapse All Unchanged Regions"),icon:zt.fold,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.collapseAllUnchangedRegions()}}class Jko extends Op{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:_t(92,"Show All Unchanged Regions"),icon:zt.unfold,precondition:Ft.has("isInDiffEditor"),f1:!0,category:Gie})}runEditorCommand(t,n,...r){const o=QI(t);o instanceof Ey&&o.showAllUnchangedRegions()}}class wje extends zu{constructor(){super({id:"diffEditor.revert",title:_t(93,"Revert"),f1:!0,category:Gie,precondition:Ft.has("isInDiffEditor")})}run(t,n){return n?this.runViaToolbarContext(t,n):this.runViaCursorOrSelection(t)}runViaCursorOrSelection(t){const n=QI(t);n instanceof Ey&&n.revertFocusedRangeMappings()}runViaToolbarContext(t,n){const r=e2o(t,n.originalUri,n.modifiedUri);r instanceof Ey&&r.revertRangeMappings(n.mapping.innerChanges??[])}}const SDn=_t(94,"Accessible Diff Viewer"),Hve=class Hve extends zu{constructor(){super({id:Hve.id,title:_t(95,"Go to Next Difference"),category:SDn,precondition:Ft.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(t){const n=QI(t);n==null||n.accessibleDiffViewerNext()}};Hve.id="editor.action.accessibleDiffViewer.next";let IJ=Hve;const $ve=class $ve extends zu{constructor(){super({id:$ve.id,title:_t(96,"Go to Previous Difference"),category:SDn,precondition:Ft.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(t){const n=QI(t);n==null||n.accessibleDiffViewerPrev()}};$ve.id="editor.action.accessibleDiffViewer.prev";let N1e=$ve;function e2o(e,t,n){return e.get(yo).listDiffEditors().find(s=>{var d,u;const a=s.getModifiedEditor(),l=s.getOriginalEditor();return a&&((d=a.getModel())==null?void 0:d.uri.toString())===n.toString()&&l&&((u=l.getModel())==null?void 0:u.uri.toString())===t.toString()})||null}function QI(e){const n=e.get(yo).listDiffEditors(),r=Nd();if(r){for(const o of n)if(o.getContainerDomNode().contains(r))return o}return null}ys(Yko);ys(CDn);ys(_Dn);Iu.appendMenuItem(Wn.EditorTitle,{command:{id:new _Dn().desc.id,title:U(119,"Use Inline View When Space Is Limited"),toggled:Ft.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:Ft.has("isInDiffEditor")},order:11,group:"1_diff",when:Ft.and($e.diffEditorRenderSideBySideInlineBreakpointReached,Ft.has("isInDiffEditor"))});Iu.appendMenuItem(Wn.EditorTitle,{command:{id:new CDn().desc.id,title:U(120,"Show Moved Code Blocks"),icon:zt.move,toggled:$z.create("config.diffEditor.experimental.showMoves",!0),precondition:Ft.has("isInDiffEditor")},order:10,group:"1_diff",when:Ft.has("isInDiffEditor")});ys(wje);for(const e of[{icon:zt.arrowRight,key:$e.diffEditorInlineMode.toNegated()},{icon:zt.discard,key:$e.diffEditorInlineMode}])Iu.appendMenuItem(Wn.DiffEditorHunkToolbar,{command:{id:new wje().desc.id,title:U(121,"Revert Block"),icon:e.icon},when:Ft.and($e.diffEditorModifiedWritable,e.key),order:5,group:"primary"}),Iu.appendMenuItem(Wn.DiffEditorSelectionToolbar,{command:{id:new wje().desc.id,title:U(122,"Revert Selection"),icon:e.icon},when:Ft.and($e.diffEditorModifiedWritable,e.key),order:5,group:"primary"});ys(Zko);ys(qko);ys(Kko);ys(Jko);Iu.appendMenuItem(Wn.EditorTitle,{command:{id:IJ.id,title:U(123,"Open Accessible Diff Viewer"),precondition:Ft.has("isInDiffEditor")},order:10,group:"2_diff",when:Ft.and($e.accessibleDiffViewerVisible.negate(),Ft.has("isInDiffEditor"))});uo.registerCommandAlias("editor.action.diffReview.next",IJ.id);ys(IJ);uo.registerCommandAlias("editor.action.diffReview.prev",N1e.id);ys(N1e);var t2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},n2o=function(e,t){return function(n,r){t(n,r,e)}},Oje;const m3e=new yn("selectionAnchorSet",!1);var MD;let B6=(MD=class{static get(t){return t.getContribution(Oje.ID)}constructor(t,n){this.editor=t,this.selectionAnchorSetContextKey=m3e.bindTo(n),this.modelChangeListener=t.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const t=this.editor.getPosition();this.editor.changeDecorations(n=>{this.decorationId&&n.removeDecoration(this.decorationId),this.decorationId=n.addDecoration(Qn.fromPositions(t,t),{description:"selection-anchor",stickiness:1,hoverMessage:new bf().appendText(U(798,"Selection Anchor")),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),um(U(799,"Anchor set at {0}:{1}",t.lineNumber,t.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const t=this.editor.getModel().getDecorationRange(this.decorationId);t&&this.editor.setPosition(t.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const t=this.editor.getModel().getDecorationRange(this.decorationId);if(t){const n=this.editor.getPosition();this.editor.setSelection(Qn.fromPositions(t.getStartPosition(),n)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const t=this.decorationId;this.editor.changeDecorations(n=>{n.removeDecoration(t),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}},Oje=MD,MD.ID="editor.contrib.selectionAnchorController",MD);B6=Oje=t2o([n2o(1,Qi)],B6);class i2o extends Bn{constructor(){super({id:"editor.action.setSelectionAnchor",label:_t(800,"Set Selection Anchor"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2080),weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.setSelectionAnchor()}}class r2o extends Bn{constructor(){super({id:"editor.action.goToSelectionAnchor",label:_t(801,"Go to Selection Anchor"),precondition:m3e})}async run(t,n){var r;(r=B6.get(n))==null||r.goToSelectionAnchor()}}class o2o extends Bn{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:_t(802,"Select from Anchor to Cursor"),precondition:m3e,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2089),weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.selectFromAnchorToCursor()}}class s2o extends Bn{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:_t(803,"Cancel Selection Anchor"),precondition:m3e,kbOpts:{kbExpr:$e.editorTextFocus,primary:9,weight:100}})}async run(t,n){var r;(r=B6.get(n))==null||r.cancelSelectionAnchor()}}mo(B6.ID,B6,4);un(i2o);un(r2o);un(o2o);un(s2o);const a2o=Ve("editorOverviewRuler.bracketMatchForeground","#A0A0A0",U(804,"Overview ruler marker color for matching brackets."));class l2o extends Bn{constructor(){super({id:"editor.action.jumpToBracket",label:_t(806,"Go to Bracket"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:3165,weight:100}})}run(t,n){var r;(r=pR.get(n))==null||r.jumpToBracket()}}class c2o extends Bn{constructor(){super({id:"editor.action.selectToBracket",label:_t(807,"Select to Bracket"),precondition:void 0,metadata:{description:_t(808,"Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(t,n,r){var s;let o=!0;r&&r.selectBrackets===!1&&(o=!1),(s=pR.get(n))==null||s.selectToBracket(o)}}class d2o extends Bn{constructor(){super({id:"editor.action.removeBrackets",label:_t(809,"Remove Brackets"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2561,weight:100},canTriggerInlineEdits:!0})}run(t,n){var r;(r=pR.get(n))==null||r.removeBrackets(this.id)}}class u2o{constructor(t,n,r){this.position=t,this.brackets=n,this.options=r}}const p5=class p5 extends ft{static get(t){return t.getContribution(p5.ID)}constructor(t){super(),this._editor=t,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new Es(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(80),this._updateBracketsSoon.schedule(),this._register(t.onDidChangeCursorPosition(n=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModelContent(n=>{this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModel(n=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeModelLanguageConfiguration(n=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(t.onDidChangeConfiguration(n=>{n.hasChanged(80)&&(this._matchBrackets=this._editor.getOption(80),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(t.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(t.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const t=this._editor.getModel(),n=this._editor.getSelections().map(r=>{const o=r.getStartPosition(),s=t.bracketPairs.matchBracket(o);let a=null;if(s)s[0].containsPosition(o)&&!s[1].containsPosition(o)?a=s[1].getStartPosition():s[1].containsPosition(o)&&(a=s[0].getStartPosition());else{const l=t.bracketPairs.findEnclosingBrackets(o);if(l)a=l[1].getStartPosition();else{const d=t.bracketPairs.findNextBracket(o);d&&d.range&&(a=d.range.getStartPosition())}}return a?new Qn(a.lineNumber,a.column,a.lineNumber,a.column):new Qn(o.lineNumber,o.column,o.lineNumber,o.column)});this._editor.setSelections(n),this._editor.revealRange(n[0])}selectToBracket(t){if(!this._editor.hasModel())return;const n=this._editor.getModel(),r=[];this._editor.getSelections().forEach(o=>{const s=o.getStartPosition();let a=n.bracketPairs.matchBracket(s);if(!a&&(a=n.bracketPairs.findEnclosingBrackets(s),!a)){const u=n.bracketPairs.findNextBracket(s);u&&u.range&&(a=n.bracketPairs.matchBracket(u.range.getStartPosition()))}let l=null,d=null;if(a){a.sort(Ee.compareRangesUsingStarts);const[u,h]=a;if(l=t?u.getStartPosition():u.getEndPosition(),d=t?h.getEndPosition():h.getStartPosition(),h.containsPosition(s)){const g=l;l=d,d=g}}l&&d&&r.push(new Qn(l.lineNumber,l.column,d.lineNumber,d.column))}),r.length>0&&(this._editor.setSelections(r),this._editor.revealRange(r[0]))}removeBrackets(t){if(!this._editor.hasModel())return;const n=this._editor.getModel();this._editor.getSelections().forEach(r=>{const o=r.getPosition();let s=n.bracketPairs.matchBracket(o);s||(s=n.bracketPairs.findEnclosingBrackets(o)),s&&(this._editor.pushUndoStop(),this._editor.executeEdits(t,[{range:s[0],text:""},{range:s[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const t=[];let n=0;for(const r of this._lastBracketsData){const o=r.brackets;o&&(t[n++]={range:o[0],options:r.options},t[n++]={range:o[1],options:r.options})}this._decorations.set(t)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const t=this._editor.getSelections();if(t.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const n=this._editor.getModel(),r=n.getVersionId();let o=[];this._lastVersionId===r&&(o=this._lastBracketsData);const s=[];let a=0;for(let g=0,m=t.length;g1&&s.sort(it.compare);const l=[];let d=0,u=0;const h=o.length;for(let g=0,m=s.length;g0&&(n.pushUndoStop(),n.executeCommands(this.id,o),n.pushUndoStop())}}un(m2o);const k2o=Cr("productService");function Mtt(e,t){return{id:t,asString:async()=>e,asFile:()=>{},value:typeof e=="string"?e:void 0}}function v2o(e,t,n,r){const o={id:SI(),name:e,uri:t,data:n};return{id:r,asString:async()=>"",asFile:()=>o,value:void 0}}class xDn{constructor(){this._entries=new Map}get size(){let t=0;for(const n of this._entries)t++;return t}has(t){return this._entries.has(this.toKey(t))}matches(t){const n=[...this._entries.keys()];return to.some(this,([r,o])=>o.asFile())&&n.push("files"),EDn(U1e(t),n)}get(t){var n;return(n=this._entries.get(this.toKey(t)))==null?void 0:n[0]}append(t,n){const r=this._entries.get(t);r?r.push(n):this._entries.set(this.toKey(t),[n])}replace(t,n){this._entries.set(this.toKey(t),[n])}delete(t){this._entries.delete(this.toKey(t))}*[Symbol.iterator](){for(const[t,n]of this._entries)for(const r of n)yield[t,r]}toKey(t){return U1e(t)}}function U1e(e){return e.toLowerCase()}function MOt(e,t){return EDn(U1e(e),t.map(U1e))}function EDn(e,t){if(e==="*/*")return t.length>0;if(t.includes(e))return!0;const n=e.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!n)return!1;const[r,o,s]=n;return s==="*"?t.some(a=>a.startsWith(o+"/")):!1}const k3e=Object.freeze({create:e=>M8(e.map(t=>t.toString())).join(`\r `),split:e=>e.split(`\r `),parse:e=>k3e.split(e).filter(t=>!t.startsWith("#"))}),$w=class $w{constructor(t){this.value=t}equals(t){return this.value===t.value}contains(t){return this.equals(t)||this.value===""||t.value.startsWith(this.value+$w.sep)}intersects(t){return this.contains(t)||t.contains(this)}append(...t){return new $w((this.value?[this.value,...t]:t).join($w.sep))}};$w.sep=".",$w.None=new $w("@@none@@"),$w.Empty=new $w("");let El=$w;const A2o={ctrlCmd:!1,alt:!1};var MJ;(function(e){e[e.Blur=1]="Blur",e[e.Gesture=2]="Gesture",e[e.Other=3]="Other"})(MJ||(MJ={}));var Qb;(function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.SECOND=2]="SECOND",e[e.LAST=3]="LAST"})(Qb||(Qb={}));var Sa;(function(e){e[e.First=1]="First",e[e.Second=2]="Second",e[e.Last=3]="Last",e[e.Next=4]="Next",e[e.Previous=5]="Previous",e[e.NextPage=6]="NextPage",e[e.PreviousPage=7]="PreviousPage",e[e.NextSeparator=8]="NextSeparator",e[e.PreviousSeparator=9]="PreviousSeparator"})(Sa||(Sa={}));var j1e;(function(e){e[e.Title=1]="Title",e[e.Inline=2]="Inline",e[e.Input=3]="Input"})(j1e||(j1e={}));const Rf=Cr("quickInputService"),POt={EDITORS:"CodeEditors",FILES:"CodeFiles"};class p2o{}const b2o={DragAndDropContribution:"workbench.contributions.dragAndDrop"};Ql.add(b2o.DragAndDropContribution,new p2o);const Cq=class Cq{constructor(){}static getInstance(){return Cq.INSTANCE}hasData(t){return t&&t===this.proto}getData(t){if(this.hasData(t))return this.data}};Cq.INSTANCE=new Cq;let yje=Cq;function TDn(e){var t,n,r,o;if(v3&&typeof((n=(t=globalThis.vscode)==null?void 0:t.webUtils)==null?void 0:n.getPathForFile)=="function")return(o=(r=globalThis.vscode)==null?void 0:r.webUtils)==null?void 0:o.getPathForFile(e)}function QDn(e){const t=new xDn;for(const n of e.items){const r=n.type;if(n.kind==="string"){const o=new Promise(s=>n.getAsString(s));t.append(r,Mtt(o))}else if(n.kind==="file"){const o=n.getAsFile();o&&t.append(r,w2o(o))}}return t}function w2o(e){const t=TDn(e),n=t?vi.parse(t):void 0;return v2o(e.name,n,async()=>new Uint8Array(await e.arrayBuffer()))}const O2o=Object.freeze([POt.EDITORS,POt.FILES,mR.RESOURCES,mR.INTERNAL_URI_LIST]);function DDn(e,t=!1){const n=QDn(e),r=n.get(mR.INTERNAL_URI_LIST);if(r)n.replace(ac.uriList,r);else if(t||!n.has(ac.uriList)){const o=[];for(const s of e.items){const a=s.getAsFile();if(a){const l=TDn(a);try{l?o.push(vi.file(l).toString()):o.push(vi.parse(a.name,!0).toString())}catch{}}}o.length&&n.replace(ac.uriList,Mtt(k3e.create(o)))}for(const o of O2o)n.delete(o);return n}const Yie=Cr("IWorkspaceEditService");class Ptt{constructor(t){this.metadata=t}static convert(t){return t.edits.map(n=>{if(N9.is(n))return N9.lift(n);if(VU.is(n))return VU.lift(n);throw new Error("Unsupported edit")})}}class N9 extends Ptt{static is(t){return t instanceof N9?!0:Pd(t)&&vi.isUri(t.resource)&&Pd(t.textEdit)}static lift(t){return t instanceof N9?t:new N9(t.resource,t.textEdit,t.versionId,t.metadata)}constructor(t,n,r=void 0,o){super(o),this.resource=t,this.textEdit=n,this.versionId=r}}class VU extends Ptt{static is(t){return t instanceof VU?!0:Pd(t)&&(!!t.newResource||!!t.oldResource)}static lift(t){return t instanceof VU?t:new VU(t.oldResource,t.newResource,t.options,t.metadata)}constructor(t,n,r={},o){super(o),this.oldResource=t,this.newResource=n,this.options=r}}const Ftt=Cr("IEditorCancelService"),BDn=new yn("cancellableOperation",!1,U(939,"Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));zr(Ftt,class{constructor(){this._tokens=new WeakMap}add(e,t){let n=this._tokens.get(e);n||(n=e.invokeWithinContext(o=>{const s=BDn.bindTo(o.get(Qi)),a=new bg;return{key:s,tokens:a}}),this._tokens.set(e,n));let r;return n.key.set(!0),r=n.tokens.push(t),()=>{r&&(r(),n.key.set(!n.tokens.isEmpty()),r=void 0)}}cancel(e){const t=this._tokens.get(e);if(!t)return;const n=t.tokens.pop();n&&(n.cancel(),t.key.set(!t.tokens.isEmpty()))}},1);class y2o extends ja{constructor(t,n){super(n),this.editor=t,this._unregister=t.invokeWithinContext(r=>r.get(Ftt).add(t,this))}dispose(){this._unregister(),super.dispose()}}On(new class extends $d{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:BDn})}runEditorCommand(e,t){e.get(Ftt).cancel(t)}});let RDn=class Cje{constructor(t,n){if(this.flags=n,this.flags&1){const r=t.getModel();this.modelVersionId=r?oR("{0}#{1}",r.uri.toString(),r.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=t.getPosition():this.position=null,this.flags&2?this.selection=t.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=t.getScrollLeft(),this.scrollTop=t.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(t){if(!(t instanceof Cje))return!1;const n=t;return!(this.modelVersionId!==n.modelVersionId||this.scrollLeft!==n.scrollLeft||this.scrollTop!==n.scrollTop||!this.position&&n.position||this.position&&!n.position||this.position&&n.position&&!this.position.equals(n.position)||!this.selection&&n.selection||this.selection&&!n.selection||this.selection&&n.selection&&!this.selection.equalsRange(n.selection))}validate(t){return this._equals(new Cje(t,this.flags))}};class z8 extends y2o{constructor(t,n,r,o){super(t,o),this._listener=new xt,n&4&&this._listener.add(t.onDidChangeCursorPosition(s=>{(!r||!Ee.containsPosition(r,s.position))&&this.cancel()})),n&2&&this._listener.add(t.onDidChangeCursorSelection(s=>{(!r||!Ee.containsRange(r,s.selection))&&this.cancel()})),n&8&&this._listener.add(t.onDidScrollChange(s=>this.cancel())),n&1&&(this._listener.add(t.onDidChangeModel(s=>this.cancel())),this._listener.add(t.onDidChangeModelContent(s=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}class Ntt extends ja{constructor(t,n){super(n),this._listener=t.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}var C2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_2o=function(e,t){return function(n,r){t(n,r,e)}};const S2o=Gi.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:Z6n,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}}),Xve=class Xve extends ft{constructor(t,n,r,o,s){super(),this.typeId=t,this.editor=n,this.range=r,this.delegate=s,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(o),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(t){this.domNode=tn(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=t;const n=tn("span.icon");this.domNode.append(n),n.classList.add(...fi.asClassNameArray(zt.loading),"codicon-modifier-spin");const r=()=>{const o=this.editor.getOption(75);this.domNode.style.height=`${o}px`,this.domNode.style.width=`${Math.ceil(.8*o)}px`};r(),this._register(this.editor.onDidChangeConfiguration(o=>{(o.hasChanged(61)||o.hasChanged(75))&&r()})),this._register(wt(this.domNode,rn.CLICK,o=>{this.delegate.cancel()}))}getId(){return Xve.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}};Xve.baseId="editor.widget.inlineProgressWidget";let _je=Xve,W1e=class extends ft{constructor(t,n,r){super(),this.id=t,this._editor=n,this._instantiationService=r,this._showDelay=500,this._showPromise=this._register(new ts),this._currentWidget=this._register(new ts),this._operationIdPool=0,this._currentDecorations=n.createDecorationsCollection()}dispose(){super.dispose(),this._currentDecorations.clear()}async showWhile(t,n,r,o,s){const a=this._operationIdPool++;this._currentOperation=a,this.clear(),this._showPromise.value=B8(()=>{const l=Ee.fromPositions(t);this._currentDecorations.set([{range:l,options:S2o}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(_je,this.id,this._editor,l,n,o))},s??this._showDelay);try{return await r}finally{this._currentOperation===a&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};W1e=C2o([_2o(2,Yn)],W1e);const OL=Cr("openerService");function L2o(e,t){return e.with({fragment:`${t.startLineNumber},${t.startColumn}${t.endLineNumber?`-${t.endLineNumber}${t.endColumn?`,${t.endColumn}`:""}`:""}`})}function x2o(e){let t;const n=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(e.fragment);return n&&(t={startLineNumber:parseInt(n[1]),startColumn:n[2]?parseInt(n[2]):1,endLineNumber:n[4]?parseInt(n[4]):void 0,endColumn:n[4]?n[5]?parseInt(n[5]):1:void 0},e=e.with({fragment:""})),{selection:t,uri:e}}var E2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},T2o=function(e,t){return function(n,r){t(n,r,e)}};const Cp=Cr("markdownRendererService");let Sje=class{constructor(t){this._openerService=t}render(t,n,r){const o={...n};o.actionHandler||(o.actionHandler=(a,l)=>IDn(this._openerService,a,l.isTrusted)),o.codeBlockRenderer||(o.codeBlockRenderer=(a,l)=>{var d;return((d=this._defaultCodeBlockRenderer)==null?void 0:d.renderCodeBlock(a,l,o??{}))??Promise.resolve(document.createElement("span"))});const s=Vie(t,o,r);return s.element.classList.add("rendered-markdown"),s}setDefaultCodeBlockRenderer(t){this._defaultCodeBlockRenderer=t}};Sje=E2o([T2o(0,OL)],Sje);async function IDn(e,t,n,r){try{return await e.open(t,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:Q2o(n),skipValidation:r})}catch(o){return zi(o),!1}}function Q2o(e){return e===!0?!0:e&&Array.isArray(e.enabledCommands)?e.enabledCommands:!1}zr(Cp,Sje,1);var D2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},FOt=function(e,t){return function(n,r){t(n,r,e)}},fhe,G9;let D0=(G9=class{static get(t){return t.getContribution(fhe.ID)}constructor(t,n,r){this._openerService=r,this._messageWidget=new ts,this._messageListeners=new xt,this._mouseOverMessage=!1,this._editor=t,this._visible=fhe.MESSAGE_VISIBLE.bindTo(n)}dispose(){this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(t,n){if(um(i8(t)?t.value:t),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),i8(t)){const o=this._messageListeners.add(Vie(t,{actionHandler:(s,a)=>{this.closeMessage(),IDn(this._openerService,s,a.isTrusted)}}));this._messageWidget.value=new oxe(this._editor,n,o.element)}else this._messageWidget.value=new oxe(this._editor,n,t);this._messageListeners.add(an.debounce(this._editor.onDidBlurEditorText,(o,s)=>s,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&gu(Nd(),this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(wt(this._messageWidget.value.getDomNode(),rn.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(wt(this._messageWidget.value.getDomNode(),rn.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let r;this._messageListeners.add(this._editor.onMouseMove(o=>{o.target.position&&(r?r.containsPosition(o.target.position)||this.closeMessage():r=new Ee(n.lineNumber-3,1,o.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(oxe.fadeOut(this._messageWidget.value))}},fhe=G9,G9.ID="editor.contrib.messageController",G9.MESSAGE_VISIBLE=new yn("messageVisible",!1,U(1287,"Whether the editor is currently showing an inline message")),G9);D0=fhe=D2o([FOt(1,Qi),FOt(2,OL)],D0);const B2o=$d.bindToContribution(D0.get);On(new B2o({id:"leaveEditorMessage",precondition:D0.MESSAGE_VISIBLE,handler:e=>e.closeMessage(),kbOpts:{weight:130,primary:9}}));let oxe=class{static fadeOut(t){const n=()=>{t.dispose(),clearTimeout(r),t.getDomNode().removeEventListener("animationend",n)},r=setTimeout(n,110);return t.getDomNode().addEventListener("animationend",n),t.getDomNode().classList.add("fadeOut"),{dispose:n}}constructor(t,{lineNumber:n,column:r},o){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=t,this._editor.revealLinesInCenterIfOutsideViewport(n,n,0),this._position={lineNumber:n,column:r},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const s=document.createElement("div");s.classList.add("anchor","top"),this._domNode.appendChild(s);const a=document.createElement("div");typeof o=="string"?(a.classList.add("message"),a.textContent=o):(o.classList.add("message"),a.appendChild(o)),this._domNode.appendChild(a);const l=document.createElement("div");l.classList.add("anchor","below"),this._domNode.appendChild(l),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(t){this._domNode.classList.toggle("below",t===2)}};mo(D0.ID,D0,4);class R2o{constructor(){this._value="",this._pos=0}reset(t){return this._value=t,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos=0;n--,this._valueLen--){const r=this._value.charCodeAt(n);if(!(r===47||this._splitOnBackslash&&r===92))break}return this.next()}hasNext(){return this._to!1,n=()=>!1){return new zU(new P2o(t,n))}static forStrings(){return new zU(new R2o)}static forConfigKeys(){return new zU(new I2o)}constructor(t){this._iter=t}clear(){this._root=void 0}set(t,n){const r=this._iter.reset(t);let o;this._root||(this._root=new Nle,this._root.segment=r.value());const s=[];for(o=this._root;;){const l=r.cmp(o.segment);if(l>0)o.left||(o.left=new Nle,o.left.segment=r.value()),s.push([-1,o]),o=o.left;else if(l<0)o.right||(o.right=new Nle,o.right.segment=r.value()),s.push([1,o]),o=o.right;else if(r.hasNext())r.next(),o.mid||(o.mid=new Nle,o.mid.segment=r.value()),s.push([0,o]),o=o.mid;else break}const a=U_.unwrap(o.value);o.value=U_.wrap(n),o.key=t;for(let l=s.length-1;l>=0;l--){const d=s[l][1];d.updateHeight();const u=d.balanceFactor();if(u<-1||u>1){const h=s[l][0],g=s[l+1][0];if(h===1&&g===1)s[l][1]=d.rotateLeft();else if(h===-1&&g===-1)s[l][1]=d.rotateRight();else if(h===1&&g===-1)d.right=s[l+1][1]=s[l+1][1].rotateRight(),s[l][1]=d.rotateLeft();else if(h===-1&&g===1)d.left=s[l+1][1]=s[l+1][1].rotateLeft(),s[l][1]=d.rotateRight();else throw new Error;if(l>0)switch(s[l-1][0]){case-1:s[l-1][1].left=s[l][1];break;case 1:s[l-1][1].right=s[l][1];break;case 0:s[l-1][1].mid=s[l][1];break}else this._root=s[0][1]}}return a}get(t){var n;return U_.unwrap((n=this._getNode(t))==null?void 0:n.value)}_getNode(t){const n=this._iter.reset(t);let r=this._root;for(;r;){const o=n.cmp(r.segment);if(o>0)r=r.left;else if(o<0)r=r.right;else if(n.hasNext())n.next(),r=r.mid;else break}return r}has(t){const n=this._getNode(t);return!((n==null?void 0:n.value)===void 0&&(n==null?void 0:n.mid)===void 0)}delete(t){return this._delete(t,!1)}deleteSuperstr(t){return this._delete(t,!0)}_delete(t,n){const r=this._iter.reset(t),o=[];let s=this._root;for(;s;){const a=r.cmp(s.segment);if(a>0)o.push([-1,s]),s=s.left;else if(a<0)o.push([1,s]),s=s.right;else if(r.hasNext())r.next(),o.push([0,s]),s=s.mid;else break}if(s){if(n?(s.left=void 0,s.mid=void 0,s.right=void 0,s.height=1):(s.key=void 0,s.value=void 0),!s.mid&&!s.value)if(s.left&&s.right){const a=[[1,s]],l=this._min(s.right,a);if(l.key){s.key=l.key,s.value=l.value,s.segment=l.segment;const d=l.right;if(a.length>1){const[h,g]=a[a.length-1];switch(h){case-1:g.left=d;break;case 0:PK(!1);case 1:PK(!1)}}else s.right=d;const u=this._balanceByStack(a);if(o.length>0){const[h,g]=o[o.length-1];switch(h){case-1:g.left=u;break;case 0:g.mid=u;break;case 1:g.right=u;break}}else this._root=u}}else{const a=s.left??s.right;if(o.length>0){const[l,d]=o[o.length-1];switch(l){case-1:d.left=a;break;case 0:d.mid=a;break;case 1:d.right=a;break}}else this._root=a}this._root=this._balanceByStack(o)??this._root}}_min(t,n){for(;t.left;)n.push([-1,t]),t=t.left;return t}_balanceByStack(t){for(let n=t.length-1;n>=0;n--){const r=t[n][1];r.updateHeight();const o=r.balanceFactor();if(o>1?(r.right.balanceFactor()>=0||(r.right=r.right.rotateRight()),t[n][1]=r.rotateLeft()):o<-1&&(r.left.balanceFactor()<=0||(r.left=r.left.rotateLeft()),t[n][1]=r.rotateRight()),n>0)switch(t[n-1][0]){case-1:t[n-1][1].left=t[n][1];break;case 1:t[n-1][1].right=t[n][1];break;case 0:t[n-1][1].mid=t[n][1];break}else return t[0][1]}}findSubstr(t){const n=this._iter.reset(t);let r=this._root,o;for(;r;){const s=n.cmp(r.segment);if(s>0)r=r.left;else if(s<0)r=r.right;else if(n.hasNext())n.next(),o=U_.unwrap(r.value)||o,r=r.mid;else break}return r&&U_.unwrap(r.value)||o}findSuperstr(t){return this._findSuperstrOrElement(t,!1)}_findSuperstrOrElement(t,n){const r=this._iter.reset(t);let o=this._root;for(;o;){const s=r.cmp(o.segment);if(s>0)o=o.left;else if(s<0)o=o.right;else if(r.hasNext())r.next(),o=o.mid;else return o.mid?this._entries(o.mid):n?U_.unwrap(o.value):void 0}}forEach(t){for(const[n,r]of this)t(r,n)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(t){const n=[];return this._dfsEntries(t,n),n[Symbol.iterator]()}_dfsEntries(t,n){t&&(t.left&&this._dfsEntries(t.left,n),t.value!==void 0&&n.push([t.key,U_.unwrap(t.value)]),t.mid&&this._dfsEntries(t.mid,n),t.right&&this._dfsEntries(t.right,n))}}const H8=Cr("contextService");function Lje(e){const t=e;return typeof(t==null?void 0:t.id)=="string"&&vi.isUri(t.uri)}function F2o(e){const t=e;return typeof(t==null?void 0:t.id)=="string"&&!Lje(e)&&!j2o(e)}const N2o={id:"empty-window"};function U2o(e,t){if(typeof e=="string"||typeof e>"u")return typeof e=="string"?{id:JS(e)}:N2o;const n=e;return n.configuration?{id:n.id,configPath:n.configuration}:n.folders.length===1?{id:n.id,uri:n.folders[0].uri}:{id:n.id}}function j2o(e){const t=e;return typeof(t==null?void 0:t.id)=="string"&&vi.isUri(t.configPath)}let W2o=class{constructor(t,n){this.raw=n,this.uri=t.uri,this.index=t.index,this.name=t.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}};const xje="code-workspace";U(2050,"Code Workspace");const MDn="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function V2o(e){return e.id===MDn}var Utt=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},PJ=function(e,t){return function(n,r){t(n,r,e)}};class jtt{constructor(t){this.copyMimeTypes=[],this.kind=t,this.providedDropEditKinds=[this.kind],this.providedPasteEditKinds=[this.kind]}async provideDocumentPasteEdits(t,n,r,o,s){const a=await this.getEdit(r,s);if(a)return{edits:[{insertText:a.insertText,title:a.title,kind:a.kind,handledMimeType:a.handledMimeType,yieldTo:a.yieldTo}],dispose(){}}}async provideDocumentDropEdits(t,n,r,o){const s=await this.getEdit(r,o);if(s)return{edits:[{insertText:s.insertText,title:s.title,kind:s.kind,handledMimeType:s.handledMimeType,yieldTo:s.yieldTo}],dispose(){}}}}const Gve=class Gve extends jtt{constructor(){super(El.Empty.append("text","plain")),this.id=Gve.id,this.dropMimeTypes=[ac.text],this.pasteMimeTypes=[ac.text]}async getEdit(t,n){const r=t.get(ac.text);if(!r||t.has(ac.uriList))return;const o=await r.asString();return{handledMimeType:ac.text,title:U(926,"Insert Plain Text"),insertText:o,kind:this.kind}}};Gve.id="text";let bR=Gve;class PDn extends jtt{constructor(){super(El.Empty.append("uri","path","absolute")),this.dropMimeTypes=[ac.uriList],this.pasteMimeTypes=[ac.uriList]}async getEdit(t,n){const r=await FDn(t);if(!r.length||n.isCancellationRequested)return;let o=0;const s=r.map(({uri:l,originalText:d})=>l.scheme===Ci.file?l.fsPath:(o++,d)).join(" ");let a;return o>0?a=r.length>1?U(927,"Insert Uris"):U(928,"Insert Uri"):a=r.length>1?U(929,"Insert Paths"):U(930,"Insert Path"),{handledMimeType:ac.uriList,insertText:s,title:a,kind:this.kind}}}let V1e=class extends jtt{constructor(t){super(El.Empty.append("uri","path","relative")),this._workspaceContextService=t,this.dropMimeTypes=[ac.uriList],this.pasteMimeTypes=[ac.uriList]}async getEdit(t,n){const r=await FDn(t);if(!r.length||n.isCancellationRequested)return;const o=P3(r.map(({uri:s})=>{const a=this._workspaceContextService.getWorkspaceFolder(s);return a?Ino(a.uri,s):void 0}));if(o.length)return{handledMimeType:ac.uriList,insertText:o.join(" "),title:r.length>1?U(931,"Insert Relative Paths"):U(932,"Insert Relative Path"),kind:this.kind}}};V1e=Utt([PJ(0,H8)],V1e);class z2o{constructor(){this.kind=new El("html"),this.providedPasteEditKinds=[this.kind],this.copyMimeTypes=[],this.pasteMimeTypes=["text/html"],this._yieldTo=[{mimeType:ac.text}]}async provideDocumentPasteEdits(t,n,r,o,s){var d;if(o.triggerKind!==hJ.PasteAs&&!((d=o.only)!=null&&d.contains(this.kind)))return;const a=r.get("text/html"),l=await(a==null?void 0:a.asString());if(!(!l||s.isCancellationRequested))return{dispose(){},edits:[{insertText:l,yieldTo:this._yieldTo,title:U(933,"Insert HTML"),kind:this.kind}]}}}async function FDn(e){const t=e.get(ac.uriList);if(!t)return[];const n=await t.asString(),r=[];for(const o of k3e.parse(n))try{r.push({uri:vi.parse(o),originalText:o})}catch{}return r}const vQ={scheme:"*",hasAccessToAllModels:!0};let Eje=class extends ft{constructor(t,n){super(),this._register(t.documentDropEditProvider.register(vQ,new bR)),this._register(t.documentDropEditProvider.register(vQ,new PDn)),this._register(t.documentDropEditProvider.register(vQ,new V1e(n)))}};Eje=Utt([PJ(0,Nn),PJ(1,H8)],Eje);let Tje=class extends ft{constructor(t,n){super(),this._register(t.documentPasteEditProvider.register(vQ,new bR)),this._register(t.documentPasteEditProvider.register(vQ,new PDn)),this._register(t.documentPasteEditProvider.register(vQ,new V1e(n))),this._register(t.documentPasteEditProvider.register(vQ,new z2o))}};Tje=Utt([PJ(0,Nn),PJ(1,H8)],Tje);const a4=class a4{constructor(){this.value="",this.pos=0}static isDigitCharacter(t){return t>=48&&t<=57}static isVariableCharacter(t){return t===95||t>=97&&t<=122||t>=65&&t<=90}text(t){this.value=t,this.pos=0}tokenText(t){return this.value.substr(t.pos,t.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const t=this.pos;let n=0,r=this.value.charCodeAt(t),o;if(o=a4._table[r],typeof o=="number")return this.pos+=1,{type:o,pos:t,len:1};if(a4.isDigitCharacter(r)){o=8;do n+=1,r=this.value.charCodeAt(t+n);while(a4.isDigitCharacter(r));return this.pos+=n,{type:o,pos:t,len:n}}if(a4.isVariableCharacter(r)){o=9;do r=this.value.charCodeAt(t+ ++n);while(a4.isVariableCharacter(r)||a4.isDigitCharacter(r));return this.pos+=n,{type:o,pos:t,len:n}}o=10;do n+=1,r=this.value.charCodeAt(t+n);while(!isNaN(r)&&typeof a4._table[r]>"u"&&!a4.isDigitCharacter(r)&&!a4.isVariableCharacter(r));return this.pos+=n,{type:o,pos:t,len:n}}};a4._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};let Qje=a4;class aH{constructor(){this._children=[]}appendChild(t){return t instanceof f0&&this._children[this._children.length-1]instanceof f0?this._children[this._children.length-1].value+=t.value:(t.parent=this,this._children.push(t)),this}replace(t,n){const{parent:r}=t,o=r.children.indexOf(t),s=r.children.slice(0);s.splice(o,1,...n),r._children=s,function a(l,d){for(const u of l)u.parent=d,a(u.children,u)}(n,r)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let t=this;for(;;){if(!t)return;if(t instanceof Zie)return t;t=t.parent}}toString(){return this.children.reduce((t,n)=>t+n.toString(),"")}len(){return 0}}let f0=class NDn extends aH{constructor(t){super(),this.value=t}toString(){return this.value}len(){return this.value.length}clone(){return new NDn(this.value)}};class UDn extends aH{}class Sv extends UDn{static compareByIndex(t,n){return t.index===n.index?0:t.isFinalTabstop?1:n.isFinalTabstop||t.indexn.index?1:0}constructor(t){super(),this.index=t}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof lH?this._children[0]:void 0}clone(){const t=new Sv(this.index);return this.transform&&(t.transform=this.transform.clone()),t._children=this.children.map(n=>n.clone()),t}}class lH extends aH{constructor(){super(...arguments),this.options=[]}appendChild(t){return t instanceof f0&&(t.parent=this,this.options.push(t)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const t=new lH;return this.options.forEach(t.appendChild,t),t}}let H2o=class jDn extends aH{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(t){const n=this;let r=!1,o=t.replace(this.regexp,function(){return r=!0,n._replace(Array.prototype.slice.call(arguments,0,-2))});return!r&&this._children.some(s=>s instanceof Db&&!!s.elseValue)&&(o=this._replace([])),o}_replace(t){let n="";for(const r of this._children)if(r instanceof Db){let o=t[r.index]||"";o=r.resolve(o),n+=o}else n+=r.toString();return n}toString(){return""}clone(){const t=new jDn;return t.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),t._children=this.children.map(n=>n.clone()),t}};class Db extends aH{constructor(t,n,r,o){super(),this.index=t,this.shorthandName=n,this.ifValue=r,this.elseValue=o}resolve(t){return this.shorthandName==="upcase"?t?t.toLocaleUpperCase():"":this.shorthandName==="downcase"?t?t.toLocaleLowerCase():"":this.shorthandName==="capitalize"?t?t[0].toLocaleUpperCase()+t.substr(1):"":this.shorthandName==="pascalcase"?t?this._toPascalCase(t):"":this.shorthandName==="camelcase"?t?this._toCamelCase(t):"":t&&typeof this.ifValue=="string"?this.ifValue:!t&&typeof this.elseValue=="string"?this.elseValue:t||""}_toPascalCase(t){const n=t.match(/[a-z0-9]+/gi);return n?n.map(r=>r.charAt(0).toUpperCase()+r.substr(1)).join(""):t}_toCamelCase(t){const n=t.match(/[a-z0-9]+/gi);return n?n.map((r,o)=>o===0?r.charAt(0).toLowerCase()+r.substr(1):r.charAt(0).toUpperCase()+r.substr(1)).join(""):t}clone(){return new Db(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class FJ extends UDn{constructor(t){super(),this.name=t}resolve(t){let n=t.resolve(this);return this.transform&&(n=this.transform.resolve(n||"")),n!==void 0?(this._children=[new f0(n)],!0):!1}clone(){const t=new FJ(this.name);return this.transform&&(t.transform=this.transform.clone()),t._children=this.children.map(n=>n.clone()),t}}function NOt(e,t){const n=[...e];for(;n.length>0;){const r=n.shift();if(!t(r))break;n.unshift(...r.children)}}class Zie extends aH{get placeholderInfo(){if(!this._placeholders){const t=[];let n;this.walk(function(r){return r instanceof Sv&&(t.push(r),n=!n||n.indexo===t?(r=!0,!1):(n+=o.len(),!0)),r?n:-1}fullLen(t){let n=0;return NOt([t],r=>(n+=r.len(),!0)),n}enclosingPlaceholders(t){const n=[];let{parent:r}=t;for(;r;)r instanceof Sv&&n.push(r),r=r.parent;return n}resolveVariables(t){return this.walk(n=>(n instanceof FJ&&n.resolve(t)&&(this._placeholders=void 0),!0)),this}appendChild(t){return this._placeholders=void 0,super.appendChild(t)}replace(t,n){return this._placeholders=void 0,super.replace(t,n)}clone(){const t=new Zie;return this._children=this.children.map(n=>n.clone()),t}walk(t){NOt(this.children,t)}}class wR{constructor(){this._scanner=new Qje,this._token={type:14,pos:0,len:0}}static escape(t){return t.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(t){return/\${?CLIPBOARD/.test(t)}parse(t,n,r){const o=new Zie;return this.parseFragment(t,o),this.ensureFinalTabstop(o,r??!1,n??!1),o}parseFragment(t,n){const r=n.children.length;for(this._scanner.text(t),this._token=this._scanner.next();this._parse(n););const o=new Map,s=[];n.walk(d=>(d instanceof Sv&&(d.isFinalTabstop?o.set(0,void 0):!o.has(d.index)&&d.children.length>0?o.set(d.index,d.children):s.push(d)),!0));const a=(d,u)=>{const h=o.get(d.index);if(!h)return;const g=new Sv(d.index);g.transform=d.transform;for(const m of h){const v=m.clone();g.appendChild(v),v instanceof Sv&&o.has(v.index)&&!u.has(v.index)&&(u.add(v.index),a(v,u),u.delete(v.index))}n.replace(d,[g])},l=new Set;for(const d of s)a(d,l);return n.children.slice(r)}ensureFinalTabstop(t,n,r){(n||r&&t.placeholders.length>0)&&(t.placeholders.find(s=>s.index===0)||t.appendChild(new Sv(0)))}_accept(t,n){if(t===void 0||this._token.type===t){const r=n?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),r}return!1}_backTo(t){return this._scanner.pos=t.pos+t.len,this._token=t,!1}_until(t){const n=this._token;for(;this._token.type!==t;){if(this._token.type===14)return!1;if(this._token.type===5){const o=this._scanner.next();if(o.type!==0&&o.type!==4&&o.type!==5)return!1}this._token=this._scanner.next()}const r=this._scanner.value.substring(n.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),r}_parse(t){return this._parseEscaped(t)||this._parseTabstopOrVariableName(t)||this._parseComplexPlaceholder(t)||this._parseComplexVariable(t)||this._parseAnything(t)}_parseEscaped(t){let n;return(n=this._accept(5,!0))?(n=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||n,t.appendChild(new f0(n)),!0):!1}_parseTabstopOrVariableName(t){let n;const r=this._token;return this._accept(0)&&(n=this._accept(9,!0)||this._accept(8,!0))?(t.appendChild(/^\d+$/.test(n)?new Sv(Number(n)):new FJ(n)),!0):this._backTo(r)}_parseComplexPlaceholder(t){let n;const r=this._token;if(!(this._accept(0)&&this._accept(3)&&(n=this._accept(8,!0))))return this._backTo(r);const s=new Sv(Number(n));if(this._accept(1))for(;;){if(this._accept(4))return t.appendChild(s),!0;if(!this._parse(s))return t.appendChild(new f0("${"+n+":")),s.children.forEach(t.appendChild,t),!0}else if(s.index>0&&this._accept(7)){const a=new lH;for(;;){if(this._parseChoiceElement(a)){if(this._accept(2))continue;if(this._accept(7)&&(s.appendChild(a),this._accept(4)))return t.appendChild(s),!0}return this._backTo(r),!1}}else return this._accept(6)?this._parseTransform(s)?(t.appendChild(s),!0):(this._backTo(r),!1):this._accept(4)?(t.appendChild(s),!0):this._backTo(r)}_parseChoiceElement(t){const n=this._token,r=[];for(;!(this._token.type===2||this._token.type===7);){let o;if((o=this._accept(5,!0))?o=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||o:o=this._accept(void 0,!0),!o)return this._backTo(n),!1;r.push(o)}return r.length===0?(this._backTo(n),!1):(t.appendChild(new f0(r.join(""))),!0)}_parseComplexVariable(t){let n;const r=this._token;if(!(this._accept(0)&&this._accept(3)&&(n=this._accept(9,!0))))return this._backTo(r);const s=new FJ(n);if(this._accept(1))for(;;){if(this._accept(4))return t.appendChild(s),!0;if(!this._parse(s))return t.appendChild(new f0("${"+n+":")),s.children.forEach(t.appendChild,t),!0}else return this._accept(6)?this._parseTransform(s)?(t.appendChild(s),!0):(this._backTo(r),!1):this._accept(4)?(t.appendChild(s),!0):this._backTo(r)}_parseTransform(t){const n=new H2o;let r="",o="";for(;!this._accept(6);){let s;if(s=this._accept(5,!0)){s=this._accept(6,!0)||s,r+=s;continue}if(this._token.type!==14){r+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let s;if(s=this._accept(5,!0)){s=this._accept(5,!0)||this._accept(6,!0)||s,n.appendChild(new f0(s));continue}if(!(this._parseFormatString(n)||this._parseAnything(n)))return!1}for(;!this._accept(4);){if(this._token.type!==14){o+=this._accept(void 0,!0);continue}return!1}try{n.regexp=new RegExp(r,o)}catch{return!1}return t.transform=n,!0}_parseFormatString(t){const n=this._token;if(!this._accept(0))return!1;let r=!1;this._accept(3)&&(r=!0);const o=this._accept(8,!0);if(o)if(r){if(this._accept(4))return t.appendChild(new Db(Number(o))),!0;if(!this._accept(1))return this._backTo(n),!1}else return t.appendChild(new Db(Number(o))),!0;else return this._backTo(n),!1;if(this._accept(6)){const s=this._accept(9,!0);return!s||!this._accept(4)?(this._backTo(n),!1):(t.appendChild(new Db(Number(o),s)),!0)}else if(this._accept(11)){const s=this._until(4);if(s)return t.appendChild(new Db(Number(o),void 0,s,void 0)),!0}else if(this._accept(12)){const s=this._until(4);if(s)return t.appendChild(new Db(Number(o),void 0,void 0,s)),!0}else if(this._accept(13)){const s=this._until(1);if(s){const a=this._until(4);if(a)return t.appendChild(new Db(Number(o),void 0,s,a)),!0}}else{const s=this._until(4);if(s)return t.appendChild(new Db(Number(o),void 0,void 0,s)),!0}return this._backTo(n),!1}_parseAnything(t){return this._token.type!==14?(t.appendChild(new f0(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}function WDn(e,t,n){var r,o;return(typeof n.insertText=="string"?n.insertText==="":n.insertText.snippet==="")?{edits:((r=n.additionalEdit)==null?void 0:r.edits)??[]}:{edits:[...t.map(s=>new N9(e,{range:s,text:typeof n.insertText=="string"?wR.escape(n.insertText)+"$0":n.insertText.snippet,insertAsSnippet:!0})),...((o=n.additionalEdit)==null?void 0:o.edits)??[]]}}function VDn(e){function t(a,l){return"mimeType"in a?a.mimeType===l.handledMimeType:!!l.kind&&a.kind.contains(l.kind)}const n=new Map;for(const a of e)for(const l of a.yieldTo??[])for(const d of e)if(d!==a&&t(l,d)){let u=n.get(a);u||(u=[],n.set(a,u)),u.push(d)}if(!n.size)return Array.from(e);const r=new Set,o=[];function s(a){if(!a.length)return[];const l=a[0];if(o.includes(l))return console.warn("Yield to cycle detected",l),a;if(r.has(l))return s(a.slice(1));let d=[];const u=n.get(l);return u&&(o.push(l),d=s(u),o.pop()),r.add(l),[...d,l,...s(a.slice(1))]}return s(Array.from(e))}Dt.white.toString(),Dt.white.toString();const $2o=Object.freeze({allowedTags:{override:["b","i","u","code","span"]},allowedAttributes:{override:["class"]}});let z1e=class extends ft{get onDidClick(){return this._onDidClick.event}constructor(t,n){super(),this._label="",this._onDidClick=this._register(new at),this._onDidEscape=this._register(new at),this.options=n,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!n.secondary);const r=n.secondary?n.buttonSecondaryBackground:n.buttonBackground,o=n.secondary?n.buttonSecondaryForeground:n.buttonForeground;this._element.style.color=o||"",this._element.style.backgroundColor=r||"",n.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),typeof n.title=="string"&&this.setTitle(n.title),typeof n.ariaLabel=="string"&&this._element.setAttribute("aria-label",n.ariaLabel),t.appendChild(this._element),this.enabled=!n.disabled,this._register(Bf.addTarget(this._element)),[rn.CLICK,ma.Tap].forEach(s=>{this._register(wt(this._element,s,a=>{if(!this.enabled){Qo.stop(a);return}this._onDidClick.fire(a)}))}),this._register(wt(this._element,rn.KEY_DOWN,s=>{const a=new Us(s);let l=!1;this.enabled&&(a.equals(3)||a.equals(10))?(this._onDidClick.fire(s),l=!0):a.equals(9)&&(this._onDidEscape.fire(s),this._element.blur(),l=!0),l&&Qo.stop(a,!0)})),this._register(wt(this._element,rn.MOUSE_OVER,s=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register(wt(this._element,rn.MOUSE_OUT,s=>{this.updateBackground(!1)})),this.focusTracker=this._register(uA(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(t){const n=[];for(let r of P9(t))if(typeof r=="string"){if(r=r.trim(),r==="")continue;const o=document.createElement("span");o.textContent=r,n.push(o)}else n.push(r);return n}updateBackground(t){let n;this.options.secondary?n=t?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:n=t?this.options.buttonHoverBackground:this.options.buttonBackground,n&&(this._element.style.backgroundColor=n)}get element(){return this._element}set label(t){var o;if(this._label===t||i8(this._label)&&i8(t)&&Kgo(this._label,t))return;this._element.classList.add("monaco-text-button");const n=this.options.supportShortLabel?this._labelElement:this._element;if(i8(t)){const s=Vie(t,void 0,document.createElement("span"));s.dispose();const a=(o=s.element.querySelector("p"))==null?void 0:o.innerHTML;a?zQn(n,a,$2o):mu(n)}else this.options.supportIcons?mu(n,...this.getContentElements(t)):n.textContent=t;let r="";typeof this.options.title=="string"?r=this.options.title:this.options.title&&(r=A1o(t)),this.setTitle(r),this._setAriaLabel(),this._label=t}get label(){return this._label}_setAriaLabel(){typeof this.options.ariaLabel=="string"?this._element.setAttribute("aria-label",this.options.ariaLabel):typeof this.options.title=="string"&&this._element.setAttribute("aria-label",this.options.title)}set icon(t){this._setAriaLabel();const n=Array.from(this._element.classList).filter(r=>r.startsWith("codicon-"));this._element.classList.remove(...n),this._element.classList.add(...fi.asClassNameArray(t))}set enabled(t){t?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}setTitle(t){!this._hover&&t!==""?this._hover=this._register(yp().setupManagedHover(this.options.hoverDelegate??eC("element"),this._element,t)):this._hover&&this._hover.update(t)}};function sxe(e,t){return t&&(e.stack||e.stacktrace)?U(29,"{0}: {1}",jOt(e),UOt(e.stack)||UOt(e.stacktrace)):jOt(e)}function UOt(e){return Array.isArray(e)?e.join(` `):e}function jOt(e){return e.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${e.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof e.code=="string"&&typeof e.errno=="number"&&typeof e.syscall=="string"?U(30,"A system error occurred ({0})",e.message):e.message||U(31,"An unknown error occurred. Please consult the log for more details.")}function H1e(e=null,t=!1){if(!e)return U(32,"An unknown error occurred. Please consult the log for more details.");if(Array.isArray(e)){const n=P3(e),r=H1e(n[0],t);return n.length>1?U(33,"{0} ({1} errors in total)",r,n.length):r}if(fu(e))return e;if(e.detail){const n=e.detail;if(n.error)return sxe(n.error,t);if(n.exception)return sxe(n.exception,t)}return e.stack?sxe(e,t):e.message?e.message:U(34,"An unknown error occurred. Please consult the log for more details.")}const Ule=tn,X2o={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class cH extends ft{constructor(t,n,r){super(),this.os=n,this.keyElements=new Set,this.options=r||Object.create(null);const o=this.options.keybindingLabelForeground;this.domNode=Xt(t,Ule(".monaco-keybinding")),o&&(this.domNode.style.color=o),this.hover=this._register(yp().setupManagedHover(eC("mouse"),this.domNode,"")),this.didEverRender=!1,t.appendChild(this.domNode)}set(t,n){this.didEverRender&&this.keybinding===t&&cH.areSame(this.matches,n)||(this.keybinding=t,this.matches=n,this.render())}render(){if(this.clear(),this.keybinding){const t=this.keybinding.getChords();t[0]&&this.renderChord(this.domNode,t[0],this.matches?this.matches.firstPart:null);for(let r=1;r=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},ghe=function(e,t){return function(n,r){t(n,r,e)}};const HDn="acceptSelectedCodeAction",$Dn="previewSelectedCodeAction";class G2o{get templateId(){return"header"}renderTemplate(t){t.classList.add("group-header");const n=document.createElement("span");return t.append(n),{container:t,text:n}}renderElement(t,n,r){var o;r.text.textContent=((o=t.group)==null?void 0:o.title)??t.label??""}disposeTemplate(t){}}class Y2o{get templateId(){return"separator"}renderTemplate(t){t.classList.add("separator");const n=document.createElement("span");return t.append(n),{container:t,text:n}}renderElement(t,n,r){r.text.textContent=t.label??""}disposeTemplate(t){}}let Dje=class{get templateId(){return"action"}constructor(t,n){this._supportsPreview=t,this._keybindingService=n}renderTemplate(t){t.classList.add(this.templateId);const n=document.createElement("div");n.className="icon",t.append(n);const r=document.createElement("span");r.className="title",t.append(r);const o=document.createElement("span");o.className="description",t.append(o);const s=new cH(t,b0);return{container:t,icon:n,text:r,description:o,keybinding:s}}renderElement(t,n,r){var a,l,d;if((a=t.group)!=null&&a.icon?(r.icon.className=fi.asClassName(t.group.icon),t.group.icon.color&&(r.icon.style.color=en(t.group.icon.color.id))):(r.icon.className=fi.asClassName(zt.lightBulb),r.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!t.item||!t.label)return;Yto(!t.hideIcon,r.icon),r.text.textContent=$1e(t.label),t.keybinding?(r.description.textContent=t.keybinding.getLabel(),r.description.style.display="inline",r.description.style.letterSpacing="0.5px"):t.description?(r.description.textContent=$1e(t.description),r.description.style.display="inline"):(r.description.textContent="",r.description.style.display="none");const o=(l=this._keybindingService.lookupKeybinding(HDn))==null?void 0:l.getLabel(),s=(d=this._keybindingService.lookupKeybinding($Dn))==null?void 0:d.getLabel();r.container.classList.toggle("option-disabled",t.disabled),t.tooltip?r.container.title=t.tooltip:t.disabled?r.container.title=t.label:o&&s?this._supportsPreview&&t.canPreview?r.container.title=U(1653,"{0} to Apply, {1} to Preview",o,s):r.container.title=U(1654,"{0} to Apply",o):r.container.title=""}disposeTemplate(t){t.keybinding.dispose()}};Dje=zDn([ghe(1,Do)],Dje);class Z2o extends UIEvent{constructor(){super("acceptSelectedAction")}}class WOt extends UIEvent{constructor(){super("previewSelectedAction")}}function q2o(e){if(e.kind==="action")return e.label}let Bje=class extends ft{constructor(t,n,r,o,s,a,l,d){super(),this._delegate=o,this._contextViewService=a,this._keybindingService=l,this._layoutService=d,this._actionLineHeight=28,this._headerLineHeight=28,this._separatorLineHeight=8,this.cts=this._register(new ja),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const u={getHeight:h=>{switch(h.kind){case"header":return this._headerLineHeight;case"separator":return this._separatorLineHeight;default:return this._actionLineHeight}},getTemplateId:h=>h.kind};this._list=this._register(new _2(t,this.domNode,u,[new Dje(n,this._keybindingService),new G2o,new Y2o],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:q2o},accessibilityProvider:{getAriaLabel:h=>{if(h.kind==="action"){let g=h.label?$1e(h==null?void 0:h.label):"";return h.description&&(g=g+", "+$1e(h.description)),h.disabled&&(g=U(1655,"{0}, Disabled Reason: {1}",g,h.disabled)),g}return null},getWidgetAriaLabel:()=>U(1656,"Action Widget"),getRole:h=>{switch(h.kind){case"action":return"option";case"separator":return"separator";default:return"separator"}},getWidgetRole:()=>"listbox",...s}})),this._list.style(sH),this._register(this._list.onMouseClick(h=>this.onListClick(h))),this._register(this._list.onMouseOver(h=>this.onListHover(h))),this._register(this._list.onDidChangeFocus(()=>this.onFocus())),this._register(this._list.onDidChangeSelection(h=>this.onListSelection(h))),this._allMenuItems=r,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(t){return!t.disabled&&t.kind==="action"}hide(t){this._delegate.onHide(t),this.cts.cancel(),this._contextViewService.hideContextView()}layout(t){const n=this._allMenuItems.filter(h=>h.kind==="header").length,r=this._allMenuItems.filter(h=>h.kind==="separator").length,a=this._allMenuItems.length*this._actionLineHeight+n*this._headerLineHeight-n*this._actionLineHeight+r*this._separatorLineHeight-r*this._actionLineHeight;this._list.layout(a);let l=t;if(this._allMenuItems.length>=50)l=380;else{const h=this._allMenuItems.map((g,m)=>{const v=this.domNode.ownerDocument.getElementById(this._list.getElementID(m));if(v){v.style.width="auto";const f=v.getBoundingClientRect().width;return v.style.width="",f}return 0});l=Math.max(...h,t)}const u=Math.min(a,this._layoutService.getContainer(ii(this.domNode)).clientHeight*.7);return this._list.layout(u,l),this.domNode.style.height=`${u}px`,this._list.domFocus(),l}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(t){const n=this._list.getFocus();if(n.length===0)return;const r=n[0],o=this._list.element(r);if(!this.focusCondition(o))return;const s=t?new WOt:new Z2o;this._list.setSelection([r],s)}onListSelection(t){if(!t.elements.length)return;const n=t.elements[0];n.item&&this.focusCondition(n)?this._delegate.onSelect(n.item,t.browserEvent instanceof WOt):this._list.setSelection([])}onFocus(){var o,s;const t=this._list.getFocus();if(t.length===0)return;const n=t[0],r=this._list.element(n);(s=(o=this._delegate).onFocus)==null||s.call(o,r.item)}async onListHover(t){const n=t.element;if(n&&n.item&&this.focusCondition(n)){if(this._delegate.onHover&&!n.disabled&&n.kind==="action"){const r=await this._delegate.onHover(n.item,this.cts.token);n.canPreview=r?r.canPreview:void 0}t.index&&this._list.splice(t.index,1,[n])}this._list.setFocus(typeof t.index=="number"?[t.index]:[])}onListClick(t){t.element&&this.focusCondition(t.element)&&this._list.setFocus([])}};Bje=zDn([ghe(5,wL),ghe(6,Do),ghe(7,tC)],Bje);function $1e(e){return e.replace(/\r\n|\r|\n/g," ")}var K2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},axe=function(e,t){return function(n,r){t(n,r,e)}};Ve("actionBar.toggledBackground",eH,U(1657,"Background color for toggled action items in action bar."));const OR={Visible:new yn("codeActionMenuVisible",!1,U(1658,"Whether the action widget list is visible"))},uE=Cr("actionWidgetService");let yR=class extends ft{get isVisible(){return OR.Visible.getValue(this._contextKeyService)||!1}constructor(t,n,r){super(),this._contextViewService=t,this._contextKeyService=n,this._instantiationService=r,this._list=this._register(new ts)}show(t,n,r,o,s,a,l,d){const u=OR.Visible.bindTo(this._contextKeyService),h=this._instantiationService.createInstance(Bje,t,n,r,o,d);this._contextViewService.showContextView({getAnchor:()=>s,render:g=>(u.set(!0),this._renderWidget(g,h,l??[])),onHide:g=>{u.reset(),this._onWidgetClosed(g)}},a,!1)}acceptSelected(t){var n;(n=this._list.value)==null||n.acceptSelected(t)}focusPrevious(){var t,n;(n=(t=this._list)==null?void 0:t.value)==null||n.focusPrevious()}focusNext(){var t,n;(n=(t=this._list)==null?void 0:t.value)==null||n.focusNext()}hide(t){var n;(n=this._list.value)==null||n.hide(t),this._list.clear()}_renderWidget(t,n,r){var v;const o=document.createElement("div");if(o.classList.add("action-widget"),t.appendChild(o),this._list.value=n,this._list.value)o.appendChild(this._list.value.domNode);else throw new Error("List has no value");const s=new xt,a=document.createElement("div"),l=t.appendChild(a);l.classList.add("context-view-block"),s.add(wt(l,rn.MOUSE_DOWN,f=>f.stopPropagation()));const d=document.createElement("div"),u=t.appendChild(d);u.classList.add("context-view-pointerBlock"),s.add(wt(u,rn.POINTER_MOVE,()=>u.remove())),s.add(wt(u,rn.MOUSE_DOWN,()=>u.remove()));let h=0;if(r.length){const f=this._createActionBar(".action-widget-action-bar",r);f&&(o.appendChild(f.getContainer().parentElement),s.add(f),h=f.getContainer().offsetWidth)}const g=(v=this._list.value)==null?void 0:v.layout(h);o.style.width=`${g}px`;const m=s.add(uA(t));return s.add(m.onDidBlur(()=>this.hide(!0))),s}_createActionBar(t,n){if(!n.length)return;const r=tn(t),o=new g1(r);return o.push(n,{icon:!1,label:!0}),o}_onWidgetClosed(t){var n;(n=this._list.value)==null||n.hide(t)}};yR=K2o([axe(0,wL),axe(1,Qi),axe(2,Yn)],yR);zr(uE,yR,1);const qie=1100;ys(class extends zu{constructor(){super({id:"hideCodeActionWidget",title:_t(1659,"Hide action widget"),precondition:OR.Visible,keybinding:{weight:qie,primary:9,secondary:[1033]}})}run(e){e.get(uE).hide(!0)}});ys(class extends zu{constructor(){super({id:"selectPrevCodeAction",title:_t(1660,"Select previous action"),precondition:OR.Visible,keybinding:{weight:qie,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(e){const t=e.get(uE);t instanceof yR&&t.focusPrevious()}});ys(class extends zu{constructor(){super({id:"selectNextCodeAction",title:_t(1661,"Select next action"),precondition:OR.Visible,keybinding:{weight:qie,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(e){const t=e.get(uE);t instanceof yR&&t.focusNext()}});ys(class extends zu{constructor(){super({id:HDn,title:_t(1662,"Accept selected action"),precondition:OR.Visible,keybinding:{weight:qie,primary:3,secondary:[2137]}})}run(e){const t=e.get(uE);t instanceof yR&&t.acceptSelected()}});ys(class extends zu{constructor(){super({id:$Dn,title:_t(1663,"Preview selected action"),precondition:OR.Visible,keybinding:{weight:qie,primary:2051}})}run(e){const t=e.get(uE);t instanceof yR&&t.acceptSelected(!0)}});var XDn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},HU=function(e,t){return function(n,r){t(n,r,e)}},Rje,PD;let Ije=(PD=class extends ft{constructor(t,n,r,o,s,a,l,d,u,h,g){super(),this.typeId=t,this.editor=n,this.showCommand=o,this.range=s,this.edits=a,this.onSelectNewEdit=l,this.additionalActions=d,this._keybindingService=h,this._actionWidgetService=g,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=r.bindTo(u),this.visibleContext.set(!0),this._register(Hn(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register(Hn(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(m=>{this.dispose()})),this._register(an.runAndSubscribe(h.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var n;const t=(n=this._keybindingService.lookupKeybinding(this.showCommand.id))==null?void 0:n.getLabel();this.button.element.title=this.showCommand.label+(t?` (${t})`:"")}create(){this.domNode=tn(".post-edit-widget"),this.button=this._register(new z1e(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(wt(this.domNode,rn.CLICK,()=>this.showSelector()))}getId(){return Rje.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){const t=Kl(this.button.element),n={x:t.left+t.width,y:t.top+t.height};this._actionWidgetService.show("postEditWidget",!1,this.edits.allEdits.map((r,o)=>({kind:"action",item:r,label:r.title,disabled:!1,canPreview:!1,group:{title:"",icon:fi.fromId(o===this.edits.activeEditIndex?zt.check.id:zt.blank.id)}})),{onHide:()=>{this.editor.focus()},onSelect:r=>{this._actionWidgetService.hide(!1);const o=this.edits.allEdits.findIndex(s=>s===r);if(o!==this.edits.activeEditIndex)return this.onSelectNewEdit(o)}},n,this.editor.getDomNode()??void 0,this.additionalActions)}},Rje=PD,PD.baseId="editor.widget.postEditWidget",PD);Ije=Rje=XDn([HU(8,Qi),HU(9,Do),HU(10,uE)],Ije);let X1e=class extends ft{constructor(t,n,r,o,s,a,l,d){super(),this._id=t,this._editor=n,this._visibleContext=r,this._showCommand=o,this._getAdditionalActions=s,this._instantiationService=a,this._bulkEditService=l,this._notificationService=d,this._currentWidget=this._register(new ts),this._register(an.any(n.onDidChangeModel,n.onDidChangeModelContent)(()=>this.clear()))}async applyEditAndShowIfNeeded(t,n,r,o,s){if(!t.length||!this._editor.hasModel())return;const a=this._editor.getModel(),l=n.allEdits.at(n.activeEditIndex);if(!l)return;const d=async p=>{const b=this._editor.getModel();b&&(await b.undo(),this.applyEditAndShowIfNeeded(t,{activeEditIndex:p,allEdits:n.allEdits},r,o,s))},u=(p,b)=>{C2(p)||(this._notificationService.error(b),r&&this.show(t[0],n,d))},h=new z8(this._editor,3,void 0,s);let g;try{g=await reo(o(l,h.token),h.token)}catch(p){return u(p,U(937,`Error resolving edit '{0}': {1}`,l.title,H1e(p)))}finally{h.dispose()}if(s.isCancellationRequested)return;const m=WDn(a.uri,t,g),v=t[0],f=a.deltaDecorations([],[{range:v,options:{description:"paste-line-suffix",stickiness:0}}]);this._editor.focus();let k,A;try{k=await this._bulkEditService.apply(m,{editor:this._editor,token:s}),A=a.getDecorationRange(f[0])}catch(p){return u(p,U(938,`Error applying edit '{0}': -{1}`,l.title,H1e(p)))}finally{a.deltaDecorations(f,[])}s.isCancellationRequested||r&&k.isApplied&&n.allEdits.length>1&&this.show(A??v,n,d)}show(t,n,r){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(Ije,this._id,this._editor,this._visibleContext,this._showCommand,t,n,r,this._getAdditionalActions()))}clear(){this._currentWidget.clear()}tryShowSelector(){var t;(t=this._currentWidget.value)==null||t.showSelector()}};X1e=XDn([HU(5,Yn),HU(6,Yie),HU(7,ic)],X1e);var J2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},GC=function(e,t){return function(n,r){t(n,r,e)}},n4;const GDn="editor.changePasteType",evo="editor.pasteAs.preferences",Wtt=new yn("pasteWidgetVisible",!1,U(917,"Whether the paste widget is showing")),lxe="application/vnd.code.copymetadata";var FD;let $8=(FD=class extends ft{static get(t){return t.getContribution(n4.ID)}constructor(t,n,r,o,s,a,l,d,u,h){super(),this._logService=r,this._bulkEditService=o,this._clipboardService=s,this._commandService=a,this._configService=l,this._languageFeaturesService=d,this._quickInputService=u,this._progressService=h,this._editor=t;const g=t.getContainerDomNode();this._register(wt(g,"copy",m=>this.handleCopy(m))),this._register(wt(g,"cut",m=>this.handleCopy(m))),this._register(wt(g,"paste",m=>this.handlePaste(m),!0)),this._pasteProgressManager=this._register(new W1e("pasteIntoEditor",t,n)),this._postPasteWidgetManager=this._register(n.createInstance(X1e,"pasteIntoEditor",t,Wtt,{id:GDn,label:U(918,"Show paste options...")},()=>n4._configureDefaultAction?[n4._configureDefaultAction]:[]))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}async pasteAs(t){this._logService.trace("CopyPasteController.pasteAs"),this._editor.focus();try{this._logService.trace("Before calling editor.action.clipboardPasteAction"),this._pasteAsActionContext={preferred:t},await this._commandService.executeCommand("editor.action.clipboardPasteAction")}finally{this._pasteAsActionContext=void 0}}clearWidgets(){this._postPasteWidgetManager.clear()}isPasteAsEnabled(){return this._editor.getOption(97).enabled}async finishedPaste(){await this._currentPasteOperation}handleCopy(t){var A,p,b,w;let n=null;if(t.clipboardData){const[O,y]=hD.getTextData(t.clipboardData),C=y||ay.INSTANCE.get(O);n=(C==null?void 0:C.id)||null,this._logService.trace("CopyPasteController#handleCopy for id : ",n," with text.length : ",O.length)}else this._logService.trace("CopyPasteController#handleCopy");if(!this._editor.hasTextFocus()||((p=(A=this._clipboardService).clearInternalState)==null||p.call(A),!t.clipboardData||!this.isPasteAsEnabled()))return;const r=this._editor.getModel(),o=this._editor.getSelections();if(!r||!(o!=null&&o.length))return;const s=this._editor.getOption(45);let a=o;const l=o.length===1&&o[0].isEmpty();if(l){if(!s)return;a=[new Ee(a[0].startLineNumber,1,a[0].startLineNumber,1+r.getLineLength(a[0].startLineNumber))]}const d=(b=this._editor._getViewModel())==null?void 0:b.getPlainTextToCopy(o,s,mh),h={multicursorText:Array.isArray(d)?d:null,pasteOnNewLine:l,mode:null},g=this._languageFeaturesService.documentPasteEditProvider.ordered(r).filter(O=>!!O.prepareDocumentPaste);if(!g.length){this.setCopyMetadata(t.clipboardData,{defaultPastePayload:h});return}const m=QDn(t.clipboardData),v=g.flatMap(O=>O.copyMimeTypes??[]),f=n??SI();this.setCopyMetadata(t.clipboardData,{id:f,providerCopyMimeTypes:v,defaultPastePayload:h});const k=g.map(O=>({providerMimeTypes:O.copyMimeTypes,operation:Fd(y=>O.prepareDocumentPaste(r,a,m,y).catch(C=>{console.error(C)}))}));(w=n4._currentCopyOperation)==null||w.operations.forEach(O=>O.operation.cancel()),n4._currentCopyOperation={handle:f,operations:k}}async handlePaste(t){var u,h,g;if(t.clipboardData){const[m,v]=hD.getTextData(t.clipboardData),f=v||ay.INSTANCE.get(m);this._logService.trace("CopyPasteController#handlePaste for id : ",f==null?void 0:f.id)}else this._logService.trace("CopyPasteController#handlePaste");if(!t.clipboardData||!this._editor.hasTextFocus())return;(u=D0.get(this._editor))==null||u.closeMessage(),(h=this._currentPasteOperation)==null||h.cancel(),this._currentPasteOperation=void 0;const n=this._editor.getModel(),r=this._editor.getSelections();if(!(r!=null&&r.length)||!n||this._editor.getOption(104)||!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const o=this.fetchCopyMetadata(t);this._logService.trace("CopyPasteController#handlePaste with metadata : ",o==null?void 0:o.id," and text.length : ",t.clipboardData.getData("text/plain").length);const s=DDn(t.clipboardData);s.delete(lxe);const a=Array.from(t.clipboardData.files).map(m=>m.type),l=[...t.clipboardData.types,...a,...(o==null?void 0:o.providerCopyMimeTypes)??[],ac.uriList],d=this._languageFeaturesService.documentPasteEditProvider.ordered(n).filter(m=>{var f,k;const v=(f=this._pasteAsActionContext)==null?void 0:f.preferred;return v&&!this.providerMatchesPreference(m,v)?!1:(k=m.pasteMimeTypes)==null?void 0:k.some(A=>MOt(A,l))});if(!d.length){(g=this._pasteAsActionContext)!=null&&g.preferred&&(this.showPasteAsNoEditMessage(r,this._pasteAsActionContext.preferred),t.preventDefault(),t.stopImmediatePropagation());return}t.preventDefault(),t.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferred,d,r,s,o):this.doPasteInline(d,r,s,o,t)}showPasteAsNoEditMessage(t,n){var o;const r="only"in n?n.only.value:"preferences"in n?n.preferences.length?n.preferences.map(s=>s.value).join(", "):U(919,"empty"):n.providerId;(o=D0.get(this._editor))==null||o.showMessage(U(920,"No paste edits for '{0}' found",r),t[0].getStartPosition())}doPasteInline(t,n,r,o,s){this._logService.trace("CopyPasteController#doPasteInline");const a=this._editor;if(!a.hasModel())return;const l=new z8(a,3,void 0),d=Fd(async u=>{const h=this._editor;if(!h.hasModel())return;const g=h.getModel(),m=new xt,v=m.add(new ja(u));m.add(l.token.onCancellationRequested(()=>v.cancel()));const f=v.token;try{if(await this.mergeInDataFromCopy(t,r,o,f),f.isCancellationRequested)return;const k=t.filter(b=>this.isSupportedPasteProvider(b,r));if(!k.length||k.length===1&&k[0]instanceof bR)return this.applyDefaultPasteHandler(r,o,f,s);const A={triggerKind:hJ.Automatic},p=await this.getPasteEdits(k,r,g,n,A,f);if(m.add(p),f.isCancellationRequested)return;if(p.edits.length===1&&p.edits[0].provider instanceof bR)return this.applyDefaultPasteHandler(r,o,f,s);if(p.edits.length){const b=h.getOption(97).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(n,{activeEditIndex:this.getInitialActiveEditIndex(g,p.edits),allEdits:p.edits},b,async(w,O)=>{if(!w.provider.resolveDocumentPasteEdit)return w;const y=w.provider.resolveDocumentPasteEdit(w,O),C=new pI,_=await this._pasteProgressManager.showWhile(n[0].getEndPosition(),U(921,"Resolving paste edit for '{0}'. Click to cancel",w.title),YW(Promise.race([C.p,y]),O),{cancel:()=>C.cancel()},0);return _&&(w.insertText=_.insertText,w.additionalEdit=_.additionalEdit),w},f)}await this.applyDefaultPasteHandler(r,o,f,s)}finally{m.dispose(),this._currentPasteOperation===d&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(n[0].getEndPosition(),U(922,"Running paste handlers. Click to cancel and do basic paste"),d,{cancel:async()=>{d.cancel(),!l.token.isCancellationRequested&&await this.applyDefaultPasteHandler(r,o,l.token,s)}}).finally(()=>{l.dispose()}),this._currentPasteOperation=d}showPasteAsPick(t,n,r,o,s){this._logService.trace("CopyPasteController#showPasteAsPick");const a=Fd(async l=>{var m;const d=this._editor;if(!d.hasModel())return;const u=d.getModel(),h=new xt,g=h.add(new z8(d,3,void 0,l));try{if(await this.mergeInDataFromCopy(n,o,s,g.token),g.token.isCancellationRequested)return;let v=n.filter(b=>this.isSupportedPasteProvider(b,o,t));t&&(v=v.filter(b=>this.providerMatchesPreference(b,t)));const f={triggerKind:hJ.PasteAs,only:t&&"only"in t?t.only:void 0};let k=h.add(await this.getPasteEdits(v,o,u,r,f,g.token));if(g.token.isCancellationRequested)return;if(t&&(k={edits:k.edits.filter(b=>"only"in t?t.only.contains(b.kind):"preferences"in t?t.preferences.some(w=>w.contains(b.kind)):t.providerId===b.provider.id),dispose:k.dispose}),!k.edits.length){t&&this.showPasteAsNoEditMessage(r,t);return}let A;if(t)A=k.edits.at(0);else{const b={id:"editor.pasteAs.default",label:U(923,"Configure default paste action"),edit:void 0},w=await this._quickInputService.pick([...k.edits.map(O=>{var y;return{label:O.title,description:(y=O.kind)==null?void 0:y.value,edit:O}}),...n4._configureDefaultAction?[{type:"separator"},{label:n4._configureDefaultAction.label,edit:void 0}]:[]],{placeHolder:U(924,"Select Paste Action")});if(w===b){(m=n4._configureDefaultAction)==null||m.run();return}A=w==null?void 0:w.edit}if(!A)return;const p=WDn(u.uri,r,A);await this._bulkEditService.apply(p,{editor:this._editor})}finally{h.dispose(),this._currentPasteOperation===a&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:U(925,"Running paste handlers")},()=>a)}setCopyMetadata(t,n){this._logService.trace("CopyPasteController#setCopyMetadata new id : ",n.id),t.setData(lxe,JSON.stringify(n))}fetchCopyMetadata(t){if(this._logService.trace("CopyPasteController#fetchCopyMetadata"),!t.clipboardData)return;const n=t.clipboardData.getData(lxe);if(n)try{return JSON.parse(n)}catch{return}const[r,o]=hD.getTextData(t.clipboardData);if(o)return{defaultPastePayload:{mode:o.mode,multicursorText:o.multicursorText??null,pasteOnNewLine:!!o.isFromEmptySelection}}}async mergeInDataFromCopy(t,n,r,o){var s;if(this._logService.trace("CopyPasteController#mergeInDataFromCopy with metadata : ",r==null?void 0:r.id),r!=null&&r.id&&((s=n4._currentCopyOperation)==null?void 0:s.handle)===r.id){const a=n4._currentCopyOperation.operations.filter(d=>t.some(u=>u.pasteMimeTypes.some(h=>MOt(h,d.providerMimeTypes)))).map(d=>d.operation),l=await Promise.all(a);if(o.isCancellationRequested)return;for(const d of l.reverse())if(d)for(const[u,h]of d)n.replace(u,h)}if(!n.has(ac.uriList)){const a=await this._clipboardService.readResources();if(o.isCancellationRequested)return;a.length&&n.append(ac.uriList,Mtt(k3e.create(a)))}}async getPasteEdits(t,n,r,o,s,a){const l=new xt,d=await YW(Promise.all(t.map(async h=>{var g,m;try{const v=await((g=h.provideDocumentPasteEdits)==null?void 0:g.call(h,r,o,n,s,a));return v&&l.add(v),(m=v==null?void 0:v.edits)==null?void 0:m.map(f=>({...f,provider:h}))}catch(v){C2(v)||console.error(v);return}})),a),u=P3(d??[]).flat().filter(h=>!s.only||s.only.contains(h.kind));return{edits:VDn(u),dispose:()=>l.dispose()}}async applyDefaultPasteHandler(t,n,r,o){const s=t.get(ac.text)??t.get("text"),a=await(s==null?void 0:s.asString())??"";if(r.isCancellationRequested)return;const l={clipboardEvent:o,text:a,pasteOnNewLine:(n==null?void 0:n.defaultPastePayload.pasteOnNewLine)??!1,multicursorText:(n==null?void 0:n.defaultPastePayload.multicursorText)??null,mode:null};this._logService.trace("CopyPasteController#applyDefaultPasteHandler for id : ",n==null?void 0:n.id),this._editor.trigger("keyboard","paste",l)}isSupportedPasteProvider(t,n,r){var o;return(o=t.pasteMimeTypes)!=null&&o.some(s=>n.matches(s))?!r||this.providerMatchesPreference(t,r):!1}providerMatchesPreference(t,n){return"only"in n?t.providedPasteEditKinds.some(r=>n.only.contains(r)):"preferences"in n?n.preferences.some(r=>n.preferences.some(o=>o.contains(r))):t.id===n.providerId}getInitialActiveEditIndex(t,n){const r=this._configService.getValue(evo,{resource:t.uri});for(const o of Array.isArray(r)?r:[]){const s=new El(o),a=n.findIndex(l=>s.contains(l.kind));if(a>=0)return a}return 0}},n4=FD,FD.ID="editor.contrib.copyPasteActionController",FD);$8=n4=J2o([GC(1,Yn),GC(2,va),GC(3,Yie),GC(4,U0),GC(5,ba),GC(6,ar),GC(7,Nn),GC(8,Rf),GC(9,cQn)],$8);const CR="9_cutcopypaste",tvo=v3||document.queryCommandSupported("cut"),YDn=v3||document.queryCommandSupported("copy"),nvo=typeof navigator.clipboard>"u"||k1?document.queryCommandSupported("paste"):!0;function Vtt(e){return e.register(),e}const ivo=tvo?Vtt(new Xz({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:v3?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(813,"Cu&&t"),order:1},{menuId:Wn.EditorContext,group:CR,title:U(814,"Cut"),when:$e.writable,order:1},{menuId:Wn.CommandPalette,group:"",title:U(815,"Cut"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(816,"Cut"),when:$e.writable,order:1}]})):void 0,rvo=YDn?Vtt(new Xz({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:v3?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(817,"&&Copy"),order:2},{menuId:Wn.EditorContext,group:CR,title:U(818,"Copy"),order:2},{menuId:Wn.CommandPalette,group:"",title:U(819,"Copy"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(820,"Copy"),order:2}]})):void 0;Iu.appendMenuItem(Wn.MenubarEditMenu,{submenu:Wn.MenubarCopy,title:_t(825,"Copy As"),group:"2_ccp",order:3});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextCopy,title:_t(826,"Copy As"),group:CR,order:3});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextShare,title:_t(827,"Share"),group:"11_share",order:-1,when:Ft.and(Ft.notEquals("resourceScheme","output"),$e.editorTextFocus)});Iu.appendMenuItem(Wn.ExplorerContext,{submenu:Wn.ExplorerContextShare,title:_t(828,"Share"),group:"11_share",order:-1});const cxe=nvo?Vtt(new Xz({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:v3?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(821,"&&Paste"),order:4},{menuId:Wn.EditorContext,group:CR,title:U(822,"Paste"),when:$e.writable,order:4},{menuId:Wn.CommandPalette,group:"",title:U(823,"Paste"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(824,"Paste"),when:$e.writable,order:4}]})):void 0;class ovo extends Bn{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:_t(829,"Copy with Syntax Highlighting"),precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,weight:100}})}run(t,n){const r=t.get(va);r.trace("ExecCommandCopyWithSyntaxHighlightingAction#run"),!(!n.hasModel()||!n.getOption(45)&&n.getSelection().isEmpty())&&(HNe.forceCopyWithSyntaxHighlighting=!0,n.focus(),r.trace("ExecCommandCopyWithSyntaxHighlightingAction (before execCommand copy)"),n.getContainerDomNode().ownerDocument.execCommand("copy"),r.trace("ExecCommandCopyWithSyntaxHighlightingAction (after execCommand copy)"),HNe.forceCopyWithSyntaxHighlighting=!1)}}function ZDn(e,t){e&&(e.addImplementation(1e4,"code-editor",(n,r)=>{const o=n.get(va);o.trace("registerExecCommandImpl (addImplementation code-editor for : ",t,")");const s=n.get(yo).getFocusedCodeEditor();if(s&&s.hasTextFocus()){const a=s.getOption(45),l=s.getSelection();return l&&l.isEmpty()&&!a||(s.getOption(170)&&t==="cut"?(VOt(s),o.trace("registerExecCommandImpl (before execCommand copy)"),s.getContainerDomNode().ownerDocument.execCommand("copy"),s.trigger(void 0,"cut",void 0),o.trace("registerExecCommandImpl (after execCommand copy)")):(VOt(s),o.trace("registerExecCommandImpl (before execCommand "+t+")"),s.getContainerDomNode().ownerDocument.execCommand(t),o.trace("registerExecCommandImpl (after execCommand "+t+")"))),!0}return!1}),e.addImplementation(0,"generic-dom",(n,r)=>{const o=n.get(va);return o.trace("registerExecCommandImpl (addImplementation generic-dom for : ",t,")"),o.trace("registerExecCommandImpl (before execCommand "+t+")"),Eie().execCommand(t),o.trace("registerExecCommandImpl (after execCommand "+t+")"),!0}))}function VOt(e){if(e.getOption(170)){const n=zet.get(e.getId());n&&n.onWillCopy()}}ZDn(ivo,"cut");ZDn(rvo,"copy");cxe&&(cxe.addImplementation(1e4,"code-editor",(e,t)=>{const n=e.get(va);n.trace("registerExecCommandImpl (addImplementation code-editor for : paste)");const r=e.get(yo),o=e.get(U0),s=e.get(Nf),a=e.get(k2o),l=r.getFocusedCodeEditor();if(l&&l.hasModel()&&l.hasTextFocus()){if(l.getOption(170)){const g=zet.get(l.getId());g&&g.onWillPaste()}const u=vu.create(!0);n.trace("registerExecCommandImpl (before triggerPaste)");const h=o.triggerPaste(vs().vscodeWindowId);return h?(n.trace("registerExecCommandImpl (triggerPaste defined)"),h.then(async()=>{var g;if(n.trace("registerExecCommandImpl (after triggerPaste)"),a.quality!=="stable"){const m=u.elapsed();s.publicLog2("editorAsyncPaste",{duration:m})}return((g=$8.get(l))==null?void 0:g.finishedPaste())??Promise.resolve()})):(n.trace("registerExecCommandImpl (triggerPaste undefined)"),qy?(n.trace("registerExecCommandImpl (Paste handling on web)"),(async()=>{const g=await o.readText();if(g!==""){const m=ay.INSTANCE.get(g);let v=!1,f=null,k=null;m&&(v=l.getOption(45)&&!!m.isFromEmptySelection,f=typeof m.multicursorText<"u"?m.multicursorText:null,k=m.mode),n.trace("registerExecCommandImpl (clipboardText.length : ",g.length," id : ",m==null?void 0:m.id,")"),l.trigger("keyboard","paste",{text:g,pasteOnNewLine:v,multicursorText:f,mode:k})}})()):!0)}return!1}),cxe.addImplementation(0,"generic-dom",(e,t)=>(e.get(va).trace("registerExecCommandImpl (addImplementation generic-dom for : paste)"),e.get(U0).triggerPaste(vs().vscodeWindowId)??!1)));YDn&&un(ovo);const v3e=Object.freeze({id:"editor",order:5,type:"object",title:U(147,"Editor"),scope:6}),G1e={...v3e,properties:{"editor.tabSize":{type:"number",default:jh.tabSize,minimum:1,maximum:100,markdownDescription:U(148,"The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:U(149,'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:jh.insertSpaces,markdownDescription:U(150,"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:jh.detectIndentation,markdownDescription:U(151,"Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:jh.trimAutoWhitespace,description:U(152,"Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:jh.largeFileOptimizations,description:U(153,"Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[U(154,"Turn off Word Based Suggestions."),U(155,"Only suggest words from the active document."),U(156,"Suggest words from all open documents of the same language."),U(157,"Suggest words from all open documents.")],description:U(158,"Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[U(159,"Semantic highlighting enabled for all color themes."),U(160,"Semantic highlighting disabled for all color themes."),U(161,"Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:U(162,"Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:U(163,"Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:U(164,"Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!0,description:U(165,"Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:U(166,"Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:U(167,"Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.experimental.treeSitterTelemetry":{type:"boolean",default:!1,markdownDescription:U(168,"Controls whether tree sitter parsing should be turned on and telemetry collected. Setting `#editor.experimental.preferTreeSitter#` for specific languages will take precedence."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.css":{type:"boolean",default:!1,markdownDescription:U(169,"Controls whether tree sitter parsing should be turned on for css. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for css."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.typescript":{type:"boolean",default:!1,markdownDescription:U(170,"Controls whether tree sitter parsing should be turned on for typescript. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for typescript."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.ini":{type:"boolean",default:!1,markdownDescription:U(171,"Controls whether tree sitter parsing should be turned on for ini. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for ini."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.regex":{type:"boolean",default:!1,markdownDescription:U(172,"Controls whether tree sitter parsing should be turned on for regex. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for regex."),tags:["experimental"],experiment:{mode:"auto"}},"editor.language.brackets":{type:["array","null"],default:null,description:U(173,"Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:U(174,"The opening bracket character or string sequence.")},{type:"string",description:U(175,"The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:U(176,"Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:U(177,"The opening bracket character or string sequence.")},{type:"string",description:U(178,"The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:Oh.maxComputationTime,description:U(179,"Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:Oh.maxFileSize,description:U(180,"Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:Oh.renderSideBySide,description:U(181,"Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:Oh.renderSideBySideInlineBreakpoint,description:U(182,"If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:Oh.useInlineViewWhenSpaceIsLimited,description:U(183,"If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:Oh.renderMarginRevertIcon,description:U(184,"When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.renderGutterMenu":{type:"boolean",default:Oh.renderGutterMenu,description:U(185,"When enabled, the diff editor shows a special gutter for revert and stage actions.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:Oh.ignoreTrimWhitespace,description:U(186,"When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:Oh.renderIndicators,description:U(187,"Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:Oh.diffCodeLens,description:U(188,"Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:Oh.diffWordWrap,markdownEnumDescriptions:[U(189,"Lines will never wrap."),U(190,"Lines will wrap at the viewport width."),U(191,"Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:Oh.diffAlgorithm,markdownEnumDescriptions:[U(192,"Uses the legacy diffing algorithm."),U(193,"Uses the advanced diffing algorithm.")]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:Oh.hideUnchangedRegions.enabled,markdownDescription:U(194,"Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:Oh.hideUnchangedRegions.revealLineCount,markdownDescription:U(195,"Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:Oh.hideUnchangedRegions.minimumLineCount,markdownDescription:U(196,"Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:Oh.hideUnchangedRegions.contextLineCount,markdownDescription:U(197,"Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:Oh.experimental.showMoves,markdownDescription:U(198,"Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:Oh.experimental.showEmptyDecorations,description:U(199,"Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")},"diffEditor.experimental.useTrueInlineView":{type:"boolean",default:Oh.experimental.useTrueInlineView,description:U(200,"If enabled and the editor uses the inline view, word changes are rendered inline.")}}};function svo(e){return typeof e.type<"u"||typeof e.anyOf<"u"}for(const e of fN){const t=e.schema;if(typeof t<"u")if(svo(t))G1e.properties[`editor.${e.name}`]=t;else for(const n in t)Object.hasOwnProperty.call(t,n)&&(G1e.properties[n]=t[n])}let jle=null;function qDn(){return jle===null&&(jle=Object.create(null),Object.keys(G1e.properties).forEach(e=>{jle[e]=!0})),jle}function avo(e){return qDn()[`editor.${e}`]||!1}function lvo(e){return qDn()[`diffEditor.${e}`]||!1}const cvo=Ql.as(F3.Configuration);cvo.registerConfiguration(G1e);const Ma=new class{constructor(){this.QuickFix=new El("quickfix"),this.Refactor=new El("refactor"),this.RefactorExtract=this.Refactor.append("extract"),this.RefactorInline=this.Refactor.append("inline"),this.RefactorMove=this.Refactor.append("move"),this.RefactorRewrite=this.Refactor.append("rewrite"),this.Notebook=new El("notebook"),this.Source=new El("source"),this.SourceOrganizeImports=this.Source.append("organizeImports"),this.SourceFixAll=this.Source.append("fixAll"),this.SurroundWith=this.Refactor.append("surround")}};var j0;(function(e){e.Refactor="refactor",e.RefactorPreview="refactor preview",e.Lightbulb="lightbulb",e.Default="other (default)",e.SourceAction="source action",e.QuickFix="quick fix action",e.FixAll="fix all",e.OrganizeImports="organize imports",e.AutoFix="auto fix",e.QuickFixHover="quick fix hover window",e.OnSave="save participants",e.ProblemsView="problems view"})(j0||(j0={}));function dvo(e,t){return!(e.include&&!e.include.intersects(t)||e.excludes&&e.excludes.some(n=>KDn(t,n,e.include))||!e.includeSourceActions&&Ma.Source.contains(t))}function uvo(e,t){const n=t.kind?new El(t.kind):void 0;return!(e.include&&(!n||!e.include.contains(n))||e.excludes&&n&&e.excludes.some(r=>KDn(n,r,e.include))||!e.includeSourceActions&&n&&Ma.Source.contains(n)||e.onlyIncludePreferredActions&&!t.isPreferred)}function KDn(e,t,n){return!(!t.contains(e)||n&&t.contains(n))}class _O{static fromUser(t,n){return!t||typeof t!="object"?new _O(n.kind,n.apply,!1):new _O(_O.getKindFromUser(t,n.kind),_O.getApplyFromUser(t,n.apply),_O.getPreferredUser(t))}static getApplyFromUser(t,n){switch(typeof t.apply=="string"?t.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return n}}static getKindFromUser(t,n){return typeof t.kind=="string"?new El(t.kind):n}static getPreferredUser(t){return typeof t.preferred=="boolean"?t.preferred:!1}constructor(t,n,r){this.kind=t,this.apply=n,this.preferred=r}}class hvo{constructor(t,n,r){this.action=t,this.provider=n,this.highlightRange=r}async resolve(t){var n;if((n=this.provider)!=null&&n.resolveCodeAction&&!this.action.edit){let r;try{r=await this.provider.resolveCodeAction(this.action,t)}catch(o){Nc(o)}r&&(this.action.edit=r.edit)}return this}}const JDn="editor.action.codeAction",ztt="editor.action.quickFix",eBn="editor.action.autoFix",tBn="editor.action.refactor",nBn="editor.action.sourceAction",Mje="editor.action.organizeImports",Pje="editor.action.fixAll",fvo=1e3;class TZ extends ft{static codeActionsPreferredComparator(t,n){return t.isPreferred&&!n.isPreferred?-1:!t.isPreferred&&n.isPreferred?1:0}static codeActionsComparator({action:t},{action:n}){return t.isAI&&!n.isAI?1:!t.isAI&&n.isAI?-1:yg(t.diagnostics)?yg(n.diagnostics)?TZ.codeActionsPreferredComparator(t,n):-1:yg(n.diagnostics)?1:TZ.codeActionsPreferredComparator(t,n)}constructor(t,n,r){super(),this.documentation=n,this._register(r),this.allActions=[...t].sort(TZ.codeActionsComparator),this.validActions=this.allActions.filter(({action:o})=>!o.disabled)}get hasAutoFix(){return this.validActions.some(({action:t})=>!!t.kind&&Ma.QuickFix.contains(new El(t.kind))&&!!t.isPreferred)}get hasAIFix(){return this.validActions.some(({action:t})=>!!t.isAI)}get allAIFixes(){return this.validActions.every(({action:t})=>!!t.isAI)}}const zOt={actions:[],documentation:void 0};async function ON(e,t,n,r,o,s){var k;const a=r.filter||{},l={...a,excludes:[...a.excludes||[],Ma.Notebook]},d={only:(k=a.include)==null?void 0:k.value,trigger:r.type},u=new Ntt(t,s),h=r.type===2,g=gvo(e,t,h?l:a),m=new xt,v=g.map(async A=>{const p=setTimeout(()=>o.report(A),1250);try{const b=await A.provideCodeActions(t,n,d,u.token);if(u.token.isCancellationRequested)return b==null||b.dispose(),zOt;b&&m.add(b);const w=((b==null?void 0:b.actions)||[]).filter(y=>y&&uvo(a,y)),O=kvo(A,w,a.include);return{actions:w.map(y=>new hvo(y,A)),documentation:O}}catch(b){if(C2(b))throw b;return Nc(b),zOt}finally{clearTimeout(p)}}),f=e.onDidChange(()=>{const A=e.all(t);Na(A,g)||u.cancel()});try{const A=await Promise.all(v),p=A.map(O=>O.actions).flat(),b=[...P3(A.map(O=>O.documentation)),...mvo(e,t,r,p)],w=new TZ(p,b,m);return m.add(w),w}catch(A){throw m.dispose(),A}finally{f.dispose(),u.dispose()}}function gvo(e,t,n){return e.all(t).filter(r=>r.providedCodeActionKinds?r.providedCodeActionKinds.some(o=>dvo(n,new El(o))):!0)}function*mvo(e,t,n,r){var o,s,a;if(t&&r.length)for(const l of e.all(t))l._getAdditionalMenuItems&&(yield*(a=l._getAdditionalMenuItems)==null?void 0:a.call(l,{trigger:n.type,only:(s=(o=n.filter)==null?void 0:o.include)==null?void 0:s.value},r.map(d=>d.action)))}function kvo(e,t,n){if(!e.documentation)return;const r=e.documentation.map(o=>({kind:new El(o.kind),command:o.command}));if(n){let o;for(const s of r)s.kind.contains(n)&&(o?o.kind.contains(s.kind)&&(o=s):o=s);if(o)return o==null?void 0:o.command}for(const o of t)if(o.kind){for(const s of r)if(s.kind.contains(new El(o.kind)))return s.command}}var p9;(function(e){e.OnSave="onSave",e.FromProblemsView="fromProblemsView",e.FromCodeActions="fromCodeActions",e.FromAILightbulb="fromAILightbulb",e.FromProblemsHover="fromProblemsHover"})(p9||(p9={}));async function vvo(e,t,n,r,o=Er.None){var h,g;const s=e.get(Yie),a=e.get(ba),l=e.get(Nf),d=e.get(ic),u=e.get(pL);if(l.publicLog2("codeAction.applyCodeAction",{codeActionTitle:t.action.title,codeActionKind:t.action.kind,codeActionIsPreferred:!!t.action.isPreferred,reason:n}),u.playSignal(nm.codeActionTriggered),await t.resolve(o),!o.isCancellationRequested&&!((h=t.action.edit)!=null&&h.edits.length&&!(await s.apply(t.action.edit,{editor:r==null?void 0:r.editor,label:t.action.title,quotableLabel:t.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:n!==p9.OnSave,showPreview:r==null?void 0:r.preview,reason:Af.codeAction({kind:t.action.kind,providerId:r3e.fromExtensionId((g=t.provider)==null?void 0:g.extensionId)})})).isApplied)){if(t.action.command)try{await a.executeCommand(t.action.command.id,...t.action.command.arguments||[])}catch(m){const v=Avo(m);d.error(typeof v=="string"?v:U(830,"An unknown error occurred while applying the code action"))}setTimeout(()=>u.playSignal(nm.codeActionApplied),fvo)}}function Avo(e){return typeof e=="string"?e:e instanceof Error&&typeof e.message=="string"?e.message:void 0}co.registerCommand("_executeCodeActionProvider",async function(e,t,n,r,o){if(!(t instanceof vi))throw Gv();const{codeActionProvider:s}=e.get(Nn),a=e.get(ml).getModel(t);if(!a)throw Gv();const l=Qn.isISelection(n)?Qn.liftSelection(n):Ee.isIRange(n)?a.validateRange(n):void 0;if(!l)throw Gv();const d=typeof r=="string"?new El(r):void 0,u=await ON(s,a,l,{type:1,triggerAction:j0.Default,filter:{includeSourceActions:!0,include:d}},qb.None,Er.None),h=[],g=Math.min(u.validActions.length,typeof o=="number"?o:0);for(let m=0;mm.action)}finally{setTimeout(()=>u.dispose(),100)}});var xl;(function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"})(xl||(xl={}));(function(e){function t(d,u){return u-d}e.compare=t;const n=Object.create(null);n[e.Error]=U(1732,"Error"),n[e.Warning]=U(1733,"Warning"),n[e.Info]=U(1734,"Info");function r(d){return n[d]||""}e.toString=r;const o=Object.create(null);o[e.Error]=U(1735,"Errors"),o[e.Warning]=U(1736,"Warnings"),o[e.Info]=U(1737,"Infos");function s(d){return o[d]||""}e.toStringPlural=s;function a(d){switch(d){case Sl.Error:return e.Error;case Sl.Warning:return e.Warning;case Sl.Info:return e.Info;case Sl.Ignore:return e.Hint}}e.fromSeverity=a;function l(d){switch(d){case e.Error:return Sl.Error;case e.Warning:return Sl.Warning;case e.Info:return Sl.Info;case e.Hint:return Sl.Ignore}}e.toSeverity=l})(xl||(xl={}));var Y1e;(function(e){const t="";function n(o){return r(o,!0)}e.makeKey=n;function r(o,s){const a=[t];return o.source?a.push(o.source.replace("¦","\\¦")):a.push(t),o.code?typeof o.code=="string"?a.push(o.code.replace("¦","\\¦")):a.push(o.code.value.replace("¦","\\¦")):a.push(t),o.severity!==void 0&&o.severity!==null?a.push(xl.toString(o.severity)):a.push(t),o.message&&s?a.push(o.message.replace("¦","\\¦")):a.push(t),o.startLineNumber!==void 0&&o.startLineNumber!==null?a.push(o.startLineNumber.toString()):a.push(t),o.startColumn!==void 0&&o.startColumn!==null?a.push(o.startColumn.toString()):a.push(t),o.endLineNumber!==void 0&&o.endLineNumber!==null?a.push(o.endLineNumber.toString()):a.push(t),o.endColumn!==void 0&&o.endColumn!==null?a.push(o.endColumn.toString()):a.push(t),a.push(t),a.join("¦")}e.makeKeyOptionalMessage=r})(Y1e||(Y1e={}));const nC=Cr("markerService");var pvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},bvo=function(e,t){return function(n,r){t(n,r,e)}},Fje,ND;let Nje=(ND=class{constructor(t){this.keybindingService=t}getResolver(){const t=new zh(()=>this.keybindingService.getKeybindings().filter(n=>Fje.codeActionCommands.indexOf(n.command)>=0).filter(n=>n.resolvedKeybinding).map(n=>{let r=n.commandArgs;return n.command===Mje?r={kind:Ma.SourceOrganizeImports.value}:n.command===Pje&&(r={kind:Ma.SourceFixAll.value}),{resolvedKeybinding:n.resolvedKeybinding,..._O.fromUser(r,{kind:El.None,apply:"never"})}}));return n=>{if(n.kind){const r=this.bestKeybindingForCodeAction(n,t.value);return r==null?void 0:r.resolvedKeybinding}}}bestKeybindingForCodeAction(t,n){if(!t.kind)return;const r=new El(t.kind);return n.filter(o=>o.kind.contains(r)).filter(o=>o.preferred?t.isPreferred:!0).reduceRight((o,s)=>o?o.kind.contains(s.kind)?s:o:s,void 0)}},Fje=ND,ND.codeActionCommands=[tBn,JDn,nBn,Mje,Pje],ND);Nje=Fje=pvo([bvo(0,Do)],Nje);Ve("symbolIcon.arrayForeground",Pr,U(1495,"The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.booleanForeground",Pr,U(1496,"The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1497,"The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.colorForeground",Pr,U(1498,"The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.constantForeground",Pr,U(1499,"The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1500,"The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1501,"The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1502,"The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1503,"The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1504,"The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.fileForeground",Pr,U(1505,"The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.folderForeground",Pr,U(1506,"The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1507,"The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1508,"The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.keyForeground",Pr,U(1509,"The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.keywordForeground",Pr,U(1510,"The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1511,"The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.moduleForeground",Pr,U(1512,"The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.namespaceForeground",Pr,U(1513,"The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.nullForeground",Pr,U(1514,"The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.numberForeground",Pr,U(1515,"The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.objectForeground",Pr,U(1516,"The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.operatorForeground",Pr,U(1517,"The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.packageForeground",Pr,U(1518,"The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.propertyForeground",Pr,U(1519,"The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.referenceForeground",Pr,U(1520,"The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.snippetForeground",Pr,U(1521,"The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.stringForeground",Pr,U(1522,"The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.structForeground",Pr,U(1523,"The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.textForeground",Pr,U(1524,"The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.typeParameterForeground",Pr,U(1525,"The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.unitForeground",Pr,U(1526,"The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1527,"The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const iBn=Object.freeze({kind:El.Empty,title:U(866,"More Actions...")}),wvo=Object.freeze([{kind:Ma.QuickFix,title:U(867,"Quick Fix")},{kind:Ma.RefactorExtract,title:U(868,"Extract"),icon:zt.wrench},{kind:Ma.RefactorInline,title:U(869,"Inline"),icon:zt.wrench},{kind:Ma.RefactorRewrite,title:U(870,"Rewrite"),icon:zt.wrench},{kind:Ma.RefactorMove,title:U(871,"Move"),icon:zt.wrench},{kind:Ma.SurroundWith,title:U(872,"Surround With"),icon:zt.surroundWith},{kind:Ma.Source,title:U(873,"Source Action"),icon:zt.symbolFile},iBn]);function Ovo(e,t,n){if(!t)return e.map(s=>{var a;return{kind:"action",item:s,group:iBn,disabled:!!s.action.disabled,label:s.action.disabled||s.action.title,canPreview:!!((a=s.action.edit)!=null&&a.edits.length)}});const r=wvo.map(s=>({group:s,actions:[]}));for(const s of e){const a=s.action.kind?new El(s.action.kind):El.None;for(const l of r)if(l.group.kind.contains(a)){l.actions.push(s);break}}const o=[];for(const s of r)if(s.actions.length){o.push({kind:"header",group:s.group});for(const a of s.actions){const l=s.group;o.push({kind:"action",item:a,group:a.action.isAI?{title:l.title,kind:l.kind,icon:zt.sparkle}:l,label:a.action.title,disabled:!!a.action.disabled,keybinding:n(a.action)})}}return o}const rBn=new yn("supportedCodeAction",""),HOt="_typescript.applyFixAllCodeAction";class yvo extends ft{constructor(t,n,r,o=250){super(),this._editor=t,this._markerService=n,this._signalChange=r,this._delay=o,this._autoTriggerTimer=this._register(new I0),this._register(this._markerService.onMarkerChanged(s=>this._onMarkerChanges(s))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(t){const n=this._getRangeOfSelectionUnlessWhitespaceEnclosed(t);this._signalChange(n?{trigger:t,selection:n}:void 0)}_onMarkerChanges(t){const n=this._editor.getModel();n&&t.some(r=>C6(r,n.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:j0.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(t){if(!this._editor.hasModel())return;const n=this._editor.getSelection();if(t.type===1)return n;const r=this._editor.getOption(73).enabled;if(r!==O4.Off){{if(r===O4.On)return n;if(r===O4.OnCode){if(!n.isEmpty())return n;const s=this._editor.getModel(),{lineNumber:a,column:l}=n.getPosition(),d=s.getLineContent(a);if(d.length===0)return;if(l===1){if(/\s/.test(d[0]))return}else if(l===s.getLineMaxColumn(a)){if(/\s/.test(d[d.length-1]))return}else if(/\s/.test(d[l-2])&&/\s/.test(d[l-1]))return}}return n}}}var TT;(function(e){e.Empty={type:0};class t{constructor(r,o,s){this.trigger=r,this.position=o,this._cancellablePromise=s,this.type=1,this.actions=s.catch(a=>{if(C2(a))return Uje;throw a})}cancel(){this._cancellablePromise.cancel()}}e.Triggered=t})(TT||(TT={}));const Uje=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class Cvo extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._registry=n,this._markerService=r,this._progressService=s,this._configurationService=a,this._codeActionOracle=this._register(new ts),this._state=TT.Empty,this._onDidChangeState=this._register(new at),this.onDidChangeState=this._onDidChangeState.event,this.codeActionsDisposable=this._register(new ts),this._disposed=!1,this._supportedCodeActions=rBn.bindTo(o),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._register(this._editor.onDidChangeConfiguration(l=>{l.hasChanged(73)&&this._update()})),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(TT.Empty,!0))}_settingEnabledNearbyQuickfixes(){var n;const t=(n=this._editor)==null?void 0:n.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:t==null?void 0:t.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(TT.Empty);const t=this._editor.getModel();if(t&&this._registry.has(t)&&!this._editor.getOption(104)){const n=this._registry.all(t).flatMap(r=>r.providedCodeActionKinds??[]);this._supportedCodeActions.set(n.join(" ")),this._codeActionOracle.value=new yvo(this._editor,this._markerService,r=>{var d;if(!r){this.setState(TT.Empty);return}const o=r.selection.getStartPosition(),s=Fd(async u=>{var g,m,v,f,k,A,p,b,w,O;if(this._settingEnabledNearbyQuickfixes()&&r.trigger.type===1&&(r.trigger.triggerAction===j0.QuickFix||(m=(g=r.trigger.filter)==null?void 0:g.include)!=null&&m.contains(Ma.QuickFix))){const y=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);this.codeActionsDisposable.value=y;const C=[...y.allActions];if(u.isCancellationRequested)return y.dispose(),Uje;const _=(v=y.validActions)==null?void 0:v.some(L=>L.action.kind&&Ma.QuickFix.contains(new El(L.action.kind))&&!L.action.isAI),S=this._markerService.read({resource:t.uri});if(_){for(const L of y.validActions)(k=(f=L.action.command)==null?void 0:f.arguments)!=null&&k.some(E=>typeof E=="string"&&E.includes(HOt))&&(L.action.diagnostics=[...S.filter(E=>E.relatedInformation)]);return{validActions:y.validActions,allActions:C,documentation:y.documentation,hasAutoFix:y.hasAutoFix,hasAIFix:y.hasAIFix,allAIFixes:y.allAIFixes,dispose:()=>{this.codeActionsDisposable.value=y}}}else if(!_&&S.length>0){const L=r.selection.getPosition();let E=L,T=Number.MAX_VALUE;const D=[...y.validActions];for(const Q of S){const M=Q.endColumn,B=Q.endLineNumber,R=Q.startLineNumber;if(B===L.lineNumber||R===L.lineNumber){E=new it(B,M);const I={type:r.trigger.type,triggerAction:r.trigger.triggerAction,filter:{include:(A=r.trigger.filter)!=null&&A.include?(p=r.trigger.filter)==null?void 0:p.include:Ma.QuickFix},autoApply:r.trigger.autoApply,context:{notAvailableMessage:((b=r.trigger.context)==null?void 0:b.notAvailableMessage)||"",position:E}},F=new Qn(E.lineNumber,E.column,E.lineNumber,E.column),j=await ON(this._registry,t,F,I,qb.None,u);if(u.isCancellationRequested)return j.dispose(),Uje;if(j.validActions.length!==0){for(const W of j.validActions)(O=(w=W.action.command)==null?void 0:w.arguments)!=null&&O.some(H=>typeof H=="string"&&H.includes(HOt))&&(W.action.diagnostics=[...S.filter(H=>H.relatedInformation)]);y.allActions.length===0&&C.push(...j.allActions),Math.abs(L.column-M)B.findIndex(R=>R.action.title===Q.action.title)===M);return P.sort((Q,M)=>Q.action.isPreferred&&!M.action.isPreferred?-1:!Q.action.isPreferred&&M.action.isPreferred||Q.action.isAI&&!M.action.isAI?1:!Q.action.isAI&&M.action.isAI?-1:0),{validActions:P,allActions:C,documentation:y.documentation,hasAutoFix:y.hasAutoFix,hasAIFix:y.hasAIFix,allAIFixes:y.allAIFixes,dispose:()=>{this.codeActionsDisposable.value=y}}}}if(r.trigger.type===1){const y=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);return this.codeActionsDisposable.value=y,y}const h=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);return this.codeActionsDisposable.value=h,h});r.trigger.type===1&&((d=this._progressService)==null||d.showWhile(s,250));const a=new TT.Triggered(r.trigger,o,s);let l=!1;this._state.type===1&&(l=this._state.trigger.type===1&&a.type===1&&a.trigger.type===2&&this._state.position!==a.position),l?setTimeout(()=>{this.setState(a)},500):this.setState(a)},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:j0.Default})}else this._supportedCodeActions.reset()}trigger(t){var n;(n=this._codeActionOracle.value)==null||n.trigger(t),this.codeActionsDisposable.dispose()}setState(t,n){t!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=t,!n&&!this._disposed&&this._onDidChangeState.fire(t))}}var _vo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Svo=function(e,t){return function(n,r){t(n,r,e)}},TF;const $Ot=Da("gutter-lightbulb",zt.lightBulb,U(874,"Icon which spawns code actions menu from the gutter when there is no space in the editor.")),XOt=Da("gutter-lightbulb-auto-fix",zt.lightbulbAutofix,U(875,"Icon which spawns code actions menu from the gutter when there is no space in the editor and a quick fix is available.")),GOt=Da("gutter-lightbulb-sparkle",zt.lightbulbSparkle,U(876,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix is available.")),YOt=Da("gutter-lightbulb-aifix-auto-fix",zt.lightbulbSparkleAutofix,U(877,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available.")),ZOt=Da("gutter-lightbulb-sparkle-filled",zt.sparkleFilled,U(878,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available."));var db;(function(e){e.Hidden={type:0};class t{constructor(r,o,s,a){this.actions=r,this.trigger=o,this.editorPosition=s,this.widgetPosition=a,this.type=1}}e.Showing=t})(db||(db={}));var VS;let NJ=(VS=class extends ft{constructor(t,n){super(),this._editor=t,this._keybindingService=n,this._onClick=this._register(new at),this.onClick=this._onClick.event,this._state=db.Hidden,this._gutterState=db.Hidden,this._iconClasses=[],this.lightbulbClasses=["codicon-"+$Ot.id,"codicon-"+YOt.id,"codicon-"+XOt.id,"codicon-"+GOt.id,"codicon-"+ZOt.id],this.gutterDecoration=TF.GUTTER_DECORATION,this._domNode=tn("div.lightBulbWidget"),this._domNode.role="listbox",this._register(Bf.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(r=>{const o=this._editor.getModel();(this.state.type!==1||!o||this.state.editorPosition.lineNumber>=o.getLineCount())&&this.hide(),(this.gutterState.type!==1||!o||this.gutterState.editorPosition.lineNumber>=o.getLineCount())&&this.gutterHide()})),this._register(Pto(this._domNode,r=>{if(this.state.type!==1)return;this._editor.focus(),r.preventDefault();const{top:o,height:s}=Kl(this._domNode),a=this._editor.getOption(75);let l=Math.floor(a/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber{(r.buttons&1)===1&&this.hide()})),this._register(an.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var r,o;this._preferredKbLabel=((r=this._keybindingService.lookupKeybinding(eBn))==null?void 0:r.getLabel())??void 0,this._quickFixKbLabel=((o=this._keybindingService.lookupKeybinding(ztt))==null?void 0:o.getLabel())??void 0,this._updateLightBulbTitleAndIcon()})),this._register(this._editor.onMouseDown(async r=>{if(!r.target.element||!this.lightbulbClasses.some(d=>r.target.element&&r.target.element.classList.contains(d))||this.gutterState.type!==1)return;this._editor.focus();const{top:o,height:s}=Kl(r.target.element),a=this._editor.getOption(75);let l=Math.floor(a/3);this.gutterState.widgetPosition.position!==null&&this.gutterState.widgetPosition.position.lineNumber22,f=y=>y>2&&this._editor.getTopForLineNumber(y)===this._editor.getTopForLineNumber(y-1),k=this._editor.getLineDecorations(l);let A=!1;if(k)for(const y of k){const C=y.options.glyphMarginClassName;if(C&&!this.lightbulbClasses.some(_=>C.includes(_))){A=!0;break}}let p=l,b=1;if(!v){const y=C=>{const _=a.getLineContent(C);return/^\s*$|^\s+/.test(_)||_.length<=b};if(l>1&&!f(l-1)){const C=a.getLineCount(),_=l===C,S=l>1&&y(l-1),L=!_&&y(l+1),E=y(l),T=!L&&!S;if(!L&&!S&&!A)return this.gutterState=new db.Showing(t,n,r,{position:{lineNumber:p,column:b},preference:TF._posPref}),this.renderGutterLightbub(),this.hide();S||_||S&&!E?p-=1:(L||T&&E)&&(p+=1)}else if(l===1&&(l===a.getLineCount()||!y(l+1)&&!y(l)))if(this.gutterState=new db.Showing(t,n,r,{position:{lineNumber:p,column:b},preference:TF._posPref}),A)this.gutterHide();else return this.renderGutterLightbub(),this.hide();else if(l{this._gutterDecorationID=n.addDecoration(new Ee(t,0,t,0),this.gutterDecoration)})}_removeGutterDecoration(t){this._editor.changeDecorations(n=>{n.removeDecoration(t),this._gutterDecorationID=void 0})}_updateGutterDecoration(t,n){this._editor.changeDecorations(r=>{r.changeDecoration(t,new Ee(n,0,n,0)),r.changeDecorationOptions(t,this.gutterDecoration)})}_updateLightbulbTitle(t,n){this.state.type===1&&(n?this.title=U(879,"Run: {0}",this.state.actions.validActions[0].action.title):t&&this._preferredKbLabel?this.title=U(880,"Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel):!t&&this._quickFixKbLabel?this.title=U(881,"Show Code Actions ({0})",this._quickFixKbLabel):t||(this.title=U(882,"Show Code Actions")))}set title(t){this._domNode.title=t}},TF=VS,VS.GUTTER_DECORATION=Gi.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:fi.asClassName(zt.lightBulb),glyphMargin:{position:p3.Left},stickiness:1}),VS.ID="editor.contrib.lightbulbWidget",VS._posPref=[0],VS);NJ=TF=_vo([Svo(1,Do)],NJ);var Lvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},vw=function(e,t){return function(n,r){t(n,r,e)}},QF;const xvo="quickfix-edit-highlight";var Y9;let _R=(Y9=class extends ft{static get(t){return t.getContribution(QF.ID)}constructor(t,n,r,o,s,a,l,d,u,h,g){super(),this._commandService=l,this._configurationService=d,this._actionWidgetService=u,this._instantiationService=h,this._progressService=g,this._activeCodeActions=this._register(new ts),this._showDisabled=!1,this._disposed=!1,this._editor=t,this._model=this._register(new Cvo(this._editor,s.codeActionProvider,n,r,a,d)),this._register(this._model.onDidChangeState(m=>this.update(m))),this._lightBulbWidget=new zh(()=>{const m=this._editor.getContribution(NJ.ID);return m&&this._register(m.onClick(v=>this.showCodeActionsFromLightbulb(v.actions,v))),m}),this._resolver=o.createInstance(Nje),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(t,n){if(t.allAIFixes&&t.validActions.length===1){const r=t.validActions[0],o=r.action.command;o&&o.id==="inlineChat.start"&&o.arguments&&o.arguments.length>=1&&o.arguments[0]&&(o.arguments[0]={...o.arguments[0],autoSend:!1}),await this.applyCodeAction(r,!1,!1,p9.FromAILightbulb);return}await this.showCodeActionList(t,n,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(t,n,r){return this.showCodeActionList(n,r,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(t,n,r,o){var a;if(!this._editor.hasModel())return;(a=D0.get(this._editor))==null||a.closeMessage();const s=this._editor.getPosition();this._trigger({type:1,triggerAction:n,filter:r,autoApply:o,context:{notAvailableMessage:t,position:s}})}_trigger(t){return this._model.trigger(t)}async applyCodeAction(t,n,r,o){const s=this._progressService.show(!0,500);try{await this._instantiationService.invokeFunction(vvo,t,o,{preview:r,editor:this._editor})}finally{n&&this._trigger({type:2,triggerAction:j0.QuickFix,filter:{}}),s.done()}}hideLightBulbWidget(){var t,n;(t=this._lightBulbWidget.rawValue)==null||t.hide(),(n=this._lightBulbWidget.rawValue)==null||n.gutterHide()}async update(t){var o,s,a,l,d;if(t.type!==1){this.hideLightBulbWidget();return}let n;try{n=await t.actions}catch(u){zi(u);return}if(this._disposed)return;const r=this._editor.getSelection();if((r==null?void 0:r.startLineNumber)===t.position.lineNumber)if((o=this._lightBulbWidget.value)==null||o.update(n,t.trigger,t.position),t.trigger.type===1){if((s=t.trigger.filter)!=null&&s.include){const h=this.tryGetValidActionToApply(t.trigger,n);if(h){try{this.hideLightBulbWidget(),await this.applyCodeAction(h,!1,!1,p9.FromCodeActions)}finally{n.dispose()}return}if(t.trigger.context){const g=this.getInvalidActionThatWouldHaveBeenApplied(t.trigger,n);if(g&&g.action.disabled){(a=D0.get(this._editor))==null||a.showMessage(g.action.disabled,t.trigger.context.position),n.dispose();return}}}const u=!!((l=t.trigger.filter)!=null&&l.include);if(t.trigger.context&&(!n.allActions.length||!u&&!n.validActions.length)){(d=D0.get(this._editor))==null||d.showMessage(t.trigger.context.notAvailableMessage,t.trigger.context.position),this._activeCodeActions.value=n,n.dispose();return}this._activeCodeActions.value=n,this.showCodeActionList(n,this.toCoords(t.position),{includeDisabledActions:u,fromLightbulb:!1})}else this._actionWidgetService.isVisible?n.dispose():this._activeCodeActions.value=n}getInvalidActionThatWouldHaveBeenApplied(t,n){if(n.allActions.length&&(t.autoApply==="first"&&n.validActions.length===0||t.autoApply==="ifSingle"&&n.allActions.length===1))return n.allActions.find(({action:r})=>r.disabled)}tryGetValidActionToApply(t,n){if(n.validActions.length&&(t.autoApply==="first"&&n.validActions.length>0||t.autoApply==="ifSingle"&&n.validActions.length===1))return n.validActions[0]}async showCodeActionList(t,n,r){const o=this._editor.createDecorationsCollection(),s=this._editor.getDomNode();if(!s)return;const a=r.includeDisabledActions&&(this._showDisabled||t.validActions.length===0)?t.allActions:t.validActions;if(!a.length)return;const l=it.isIPosition(n)?this.toCoords(n):n,d={onSelect:async(u,h)=>{this.applyCodeAction(u,!0,!!h,r.fromLightbulb?p9.FromAILightbulb:p9.FromCodeActions),this._actionWidgetService.hide(!1),o.clear()},onHide:u=>{var h;(h=this._editor)==null||h.focus(),o.clear()},onHover:async(u,h)=>{var v;if(h.isCancellationRequested)return;let g=!1;const m=u.action.kind;if(m){const f=new El(m);g=[Ma.RefactorExtract,Ma.RefactorInline,Ma.RefactorRewrite,Ma.RefactorMove,Ma.Source].some(A=>A.contains(f))}return{canPreview:g||!!((v=u.action.edit)!=null&&v.edits.length)}},onFocus:u=>{var h,g;if(u&&u.action){const m=u.action.ranges,v=u.action.diagnostics;if(o.clear(),m&&m.length>0){const f=v&&(v==null?void 0:v.length)>1?v.map(k=>({range:k,options:QF.DECORATION})):m.map(k=>({range:k,options:QF.DECORATION}));o.set(f)}else if(v&&v.length>0){const f=v.map(A=>({range:A,options:QF.DECORATION}));o.set(f);const k=v[0];if(k.startLineNumber&&k.startColumn){const A=(g=(h=this._editor.getModel())==null?void 0:h.getWordAtPosition({lineNumber:k.startLineNumber,column:k.startColumn}))==null?void 0:g.word;A3(U(863,"Context: {0} at line {1} and column {2}.",A,k.startLineNumber,k.startColumn))}}}else o.clear()}};this._actionWidgetService.show("codeActionWidget",!0,Ovo(a,this._shouldShowHeaders(),this._resolver.getResolver()),d,l,s,this._getActionBarActions(t,n,r))}toCoords(t){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(t,1),this._editor.render();const n=this._editor.getScrolledVisiblePosition(t),r=Kl(this._editor.getDomNode()),o=r.left+n.left,s=r.top+n.top+n.height;return{x:o,y:s}}_shouldShowHeaders(){var n;const t=(n=this._editor)==null?void 0:n.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:t==null?void 0:t.uri})}_getActionBarActions(t,n,r){if(r.fromLightbulb)return[];const o=t.documentation.map(s=>({id:s.id,label:s.title,tooltip:s.tooltip??"",class:void 0,enabled:!0,run:()=>this._commandService.executeCommand(s.id,...s.arguments??[])}));return r.includeDisabledActions&&t.validActions.length>0&&t.allActions.length!==t.validActions.length&&o.push(this._showDisabled?{id:"hideMoreActions",label:U(864,"Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(t,n,r))}:{id:"showMoreActions",label:U(865,"Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(t,n,r))}),o}},QF=Y9,Y9.ID="editor.contrib.codeActionController",Y9.DECORATION=Gi.register({description:"quickfix-highlight",className:xvo}),Y9);_R=QF=Lvo([vw(1,nC),vw(2,Qi),vw(3,Yn),vw(4,Nn),vw(5,V8),vw(6,ba),vw(7,ar),vw(8,uE),vw(9,Yn),vw(10,V8)],_R);yA((e,t)=>{((o,s)=>{s&&t.addRule(`.monaco-editor ${o} { background-color: ${s}; }`)})(".quickfix-edit-highlight",e.getColor(QS));const r=e.getColor(u9);r&&t.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${l3(e.type)?"dotted":"solid"} ${r}; box-sizing: border-box; }`)});function Kie(e){return Ft.regex(rBn.keys()[0],new RegExp("(\\s|^)"+M0(e.value)+"\\b"))}const Htt={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:U(831,"Kind of the code action to run.")},apply:{type:"string",description:U(832,"Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[U(833,"Always apply the first returned code action."),U(834,"Apply the first returned code action if it is the only one."),U(835,"Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:U(836,"Controls if only preferred code actions should be returned.")}}};function DI(e,t,n,r,o=j0.Default){if(e.hasModel()){const s=_R.get(e);s==null||s.manualTriggerAtCurrentPosition(t,o,n,r)}}class Evo extends Bn{constructor(){super({id:ztt,label:_t(853,"Quick Fix..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),kbOpts:{kbExpr:$e.textInputFocus,primary:2137,weight:100}})}run(t,n){return DI(n,U(837,"No code actions available"),void 0,void 0,j0.QuickFix)}}class Tvo extends $d{constructor(){super({id:JDn,precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:Htt}]}})}runEditorCommand(t,n,r){const o=_O.fromUser(r,{kind:El.Empty,apply:"ifSingle"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(838,"No preferred code actions for '{0}' available",r.kind):U(839,"No code actions for '{0}' available",r.kind):o.preferred?U(840,"No preferred code actions available"):U(841,"No code actions available"),{include:o.kind,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply)}}class Qvo extends Bn{constructor(){super({id:tBn,label:_t(854,"Refactor..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),kbOpts:{kbExpr:$e.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:Ft.and($e.writable,Kie(Ma.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:Htt}]}})}run(t,n,r){const o=_O.fromUser(r,{kind:Ma.Refactor,apply:"never"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(842,"No preferred refactorings for '{0}' available",r.kind):U(843,"No refactorings for '{0}' available",r.kind):o.preferred?U(844,"No preferred refactorings available"):U(845,"No refactorings available"),{include:Ma.Refactor.contains(o.kind)?o.kind:El.None,onlyIncludePreferredActions:o.preferred},o.apply,j0.Refactor)}}class Dvo extends Bn{constructor(){super({id:nBn,label:_t(855,"Source Action..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:Ft.and($e.writable,Kie(Ma.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:Htt}]}})}run(t,n,r){const o=_O.fromUser(r,{kind:Ma.Source,apply:"never"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(846,"No preferred source actions for '{0}' available",r.kind):U(847,"No source actions for '{0}' available",r.kind):o.preferred?U(848,"No preferred source actions available"):U(849,"No source actions available"),{include:Ma.Source.contains(o.kind)?o.kind:El.None,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply,j0.SourceAction)}}class Bvo extends Bn{constructor(){super({id:Mje,label:_t(856,"Organize Imports"),precondition:Ft.and($e.writable,Kie(Ma.SourceOrganizeImports)),kbOpts:{kbExpr:$e.textInputFocus,primary:1581,weight:100},metadata:{description:_t(857,"Organize imports in the current file. Also called 'Optimize Imports' by some tools")}})}run(t,n){return DI(n,U(850,"No organize imports action available"),{include:Ma.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",j0.OrganizeImports)}}class Rvo extends Bn{constructor(){super({id:Pje,label:_t(858,"Fix All"),precondition:Ft.and($e.writable,Kie(Ma.SourceFixAll))})}run(t,n){return DI(n,U(851,"No fix all action available"),{include:Ma.SourceFixAll,includeSourceActions:!0},"ifSingle",j0.FixAll)}}class Ivo extends Bn{constructor(){super({id:eBn,label:_t(859,"Auto Fix..."),precondition:Ft.and($e.writable,Kie(Ma.QuickFix)),kbOpts:{kbExpr:$e.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(t,n){return DI(n,U(852,"No auto fixes available"),{include:Ma.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",j0.AutoFix)}}mo(_R.ID,_R,3);mo(NJ.ID,NJ,4);un(Evo);un(Qvo);un(Dvo);un(Bvo);un(Ivo);un(Rvo);On(new Tvo);Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:6,description:U(860,"Enable/disable showing group headers in the Code Action menu."),default:!0}}});Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:6,description:U(861,"Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActions.triggerOnFocusChange":{type:"boolean",scope:6,markdownDescription:U(862,"Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.","`#editor.codeActionsOnSave#`","`#files.autoSave#`","`afterDelay`","`always`"),default:!1}}});const Yve=class Yve{constructor(){this.lenses=[]}dispose(){var t;(t=this._store)==null||t.dispose()}get isDisposed(){var t;return((t=this._store)==null?void 0:t.isDisposed)??!1}add(t,n){AI(t)&&(this._store??(this._store=new xt),this._store.add(t));for(const r of t.lenses)this.lenses.push({symbol:r,provider:n})}};Yve.Empty=new Yve;let kV=Yve;async function oBn(e,t,n){const r=e.ordered(t),o=new Map,s=new kV,a=r.map(async(l,d)=>{o.set(l,d);try{const u=await Promise.resolve(l.provideCodeLenses(t,n));u&&s.add(u,l)}catch(u){Nc(u)}});return await Promise.all(a),n.isCancellationRequested?(s.dispose(),kV.Empty):(s.lenses=s.lenses.sort((l,d)=>l.symbol.range.startLineNumberd.symbol.range.startLineNumber?1:o.get(l.provider)o.get(d.provider)?1:l.symbol.range.startColumnd.symbol.range.startColumn?1:0),s)}co.registerCommand("_executeCodeLensProvider",function(e,...t){let[n,r]=t;Oo(vi.isUri(n)),Oo(typeof r=="number"||!r);const{codeLensProvider:o}=e.get(Nn),s=e.get(ml).getModel(n);if(!s)throw Gv();const a=[],l=new xt;return oBn(o,s,Er.None).then(d=>{l.add(d);const u=[];for(const h of d.lenses)r==null||h.symbol.command?a.push(h.symbol):r-- >0&&h.provider.resolveCodeLens&&u.push(Promise.resolve(h.provider.resolveCodeLens(s,h.symbol,Er.None)).then(g=>a.push(g||h.symbol)));return Promise.all(u)}).then(()=>a).finally(()=>{setTimeout(()=>l.dispose(),100)})});var Mvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Pvo=function(e,t){return function(n,r){t(n,r,e)}};const sBn=Cr("ICodeLensCache");class qOt{constructor(t,n){this.lineCount=t,this.data=n}}let jje=class{constructor(t){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new wp(20,.75);const n="codelens/cache";RG(Ls,()=>t.remove(n,1));const r="codelens/cache2",o=t.get(r,1,"{}");this._deserialize(o);const s=an.filter(t.onWillSaveState,a=>a.reason===F9.SHUTDOWN);an.once(s)(a=>{t.store(r,this._serialize(),1,1)})}put(t,n){const r=n.lenses.map(a=>{var l;return{range:a.symbol.range,command:a.symbol.command&&{id:"",title:(l=a.symbol.command)==null?void 0:l.title}}}),o=new kV;o.add({lenses:r},this._fakeProvider);const s=new qOt(t.getLineCount(),o);this._cache.set(t.uri.toString(),s)}get(t){const n=this._cache.get(t.uri.toString());return n&&n.lineCount===t.getLineCount()?n.data:void 0}delete(t){this._cache.delete(t.uri.toString())}_serialize(){const t=Object.create(null);for(const[n,r]of this._cache){const o=new Set;for(const s of r.data.lenses)o.add(s.symbol.range.startLineNumber);t[n]={lineCount:r.lineCount,lines:[...o.values()]}}return JSON.stringify(t)}_deserialize(t){try{const n=JSON.parse(t);for(const r in n){const o=n[r],s=[];for(const l of o.lines)s.push({range:new Ee(l,1,l,11)});const a=new kV;a.add({lenses:s},this._fakeProvider),this._cache.set(r,new qOt(o.lineCount,a))}}catch{}}};jje=Mvo([Pvo(0,Bg)],jje);zr(sBn,jje,1);class Fvo{constructor(t,n,r){this.afterColumn=1073741824,this.afterLineNumber=t,this.heightInPx=n,this._onHeight=r,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(t){this._lastHeight===void 0?this._lastHeight=t:this._lastHeight!==t&&(this._lastHeight=t,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}const Sq=class Sq{constructor(t,n){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=t,this._id=`codelens.widget-${Sq._idPool++}`,this.updatePosition(n),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(t,n){this._commands.clear();const r=[];let o=!1;for(let s=0;s{u.symbol.command&&d.push(u.symbol),r.addDecoration({range:u.symbol.range,options:KOt},g=>this._decorationIds[h]=g),l?l=Ee.plusRange(l,u.symbol.range):l=Ee.lift(u.symbol.range)}),this._viewZone=new Fvo(l.startLineNumber-1,s,a),this._viewZoneId=o.addZone(this._viewZone),d.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(d,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new Wje(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(t,n){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],n==null||n.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((t,n)=>{const r=this._editor.getModel().getDecorationRange(t),o=this._data[n].symbol;return!!(r&&Ee.isEmpty(o.range)===r.isEmpty())})}updateCodeLensSymbols(t,n){this._decorationIds.forEach(n.removeDecoration,n),this._decorationIds=[],this._data=t,this._data.forEach((r,o)=>{n.addDecoration({range:r.symbol.range,options:KOt},s=>this._decorationIds[o]=s)})}updateHeight(t,n){this._viewZone.heightInPx=t,n.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(t){if(!this._viewZone.isVisible())return null;for(let n=0;n=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},eyt=function(e,t){return function(n,r){t(n,r,e)}};const CA=Cr("ILanguageFeatureDebounceService");var Z1e;(function(e){const t=new WeakMap;let n=0;function r(o){let s=t.get(o);return s===void 0&&(s=++n,t.set(o,s)),s}e.of=r})(Z1e||(Z1e={}));class Uvo{constructor(t){this._default=t}get(t){return this._default}update(t,n){return this._default}default(){return this._default}}class jvo{constructor(t,n,r,o,s,a){this._logService=t,this._name=n,this._registry=r,this._default=o,this._min=s,this._max=a,this._cache=new wp(50,.7)}_key(t){return t.id+this._registry.all(t).reduce((n,r)=>vbe(Z1e.of(r),n),0)}get(t){const n=this._key(t),r=this._cache.get(n);return r?Zg(r.value,this._min,this._max):this.default()}update(t,n){const r=this._key(t);let o=this._cache.get(r);o||(o=new N1o(6),this._cache.set(r,o));const s=Zg(o.update(n),this._min,this._max);return kbe(t.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${t.uri.toString()} is ${s}ms`),s}_overall(){const t=new YQn;for(const[,n]of this._cache)t.update(n.value);return t.value}default(){const t=this._overall()|0||this._default;return Zg(t,this._min,this._max)}}let Vje=class{constructor(t,n){this._logService=t,this._data=new Map,this._isDev=n.isExtensionDevelopment||!n.isBuilt}for(t,n,r){const o=(r==null?void 0:r.min)??50,s=(r==null?void 0:r.max)??o**2,a=(r==null?void 0:r.key)??void 0,l=`${Z1e.of(t)},${o}${a?","+a:""}`;let d=this._data.get(l);return d||(this._isDev?(this._logService.debug(`[DEBOUNCE: ${n}] is disabled in developed mode`),d=new Uvo(o*1.5)):d=new jvo(this._logService,n,t,this._overallAverage()|0||o*1.5,o,s),this._data.set(l,d)),d}_overallAverage(){const t=new YQn;for(const n of this._data.values())t.update(n.default());return t.value}};Vje=Nvo([eyt(0,va),eyt(1,$tt)],Vje);zr(CA,Vje,1);var Wvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_X=function(e,t){return function(n,r){t(n,r,e)}},Vj;let UJ=(Vj=class{constructor(t,n,r,o,s,a){this._editor=t,this._languageFeaturesService=n,this._commandService=o,this._notificationService=s,this._codeLensCache=a,this._disposables=new xt,this._localToDispose=new xt,this._lenses=[],this._oldCodeLensModels=new xt,this._provideCodeLensDebounce=r.for(n.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=r.for(n.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new Es(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{(l.hasChanged(59)||l.hasChanged(25)||l.hasChanged(24))&&this._updateLensStyle(),l.hasChanged(23)&&this._onModelChange()})),this._disposables.add(n.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var t;this._localDispose(),this._localToDispose.dispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(t=this._currentCodeLensModel)==null||t.dispose()}_getLayoutInfo(){const t=Math.max(1.3,this._editor.getOption(75)/this._editor.getOption(61));let n=this._editor.getOption(25);return(!n||n<5)&&(n=this._editor.getOption(61)*.9|0),{fontSize:n,codeLensHeight:n*t|0}}_updateLensStyle(){const{codeLensHeight:t,fontSize:n}=this._getLayoutInfo(),r=this._editor.getOption(24),o=this._editor.getOption(59),{style:s}=this._editor.getContainerDomNode();s.setProperty("--vscode-editorCodeLens-lineHeight",`${t}px`),s.setProperty("--vscode-editorCodeLens-fontSize",`${n}px`),s.setProperty("--vscode-editorCodeLens-fontFeatureSettings",o.fontFeatureSettings),r&&(s.setProperty("--vscode-editorCodeLens-fontFamily",r),s.setProperty("--vscode-editorCodeLens-fontFamilyDefault",f1.fontFamily)),this._editor.changeViewZones(a=>{for(const l of this._lenses)l.updateHeight(t,a)})}_localDispose(){var t,n,r;(t=this._getCodeLensModelPromise)==null||t.cancel(),this._getCodeLensModelPromise=void 0,(n=this._resolveCodeLensesPromise)==null||n.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(r=this._currentCodeLensModel)==null||r.dispose()}_onModelChange(){this._localDispose();const t=this._editor.getModel();if(!t||!this._editor.getOption(23)||t.isTooLargeForTokenization())return;const n=this._codeLensCache.get(t);if(n&&this._renderCodeLensSymbols(n),!this._languageFeaturesService.codeLensProvider.has(t)){n&&B8(()=>{const o=this._codeLensCache.get(t);n===o&&(this._codeLensCache.delete(t),this._onModelChange())},30*1e3,this._localToDispose);return}for(const o of this._languageFeaturesService.codeLensProvider.all(t))if(typeof o.onDidChange=="function"){const s=o.onDidChange(()=>r.schedule());this._localToDispose.add(s)}const r=new Es(()=>{var s;const o=Date.now();(s=this._getCodeLensModelPromise)==null||s.cancel(),this._getCodeLensModelPromise=Fd(a=>oBn(this._languageFeaturesService.codeLensProvider,t,a)),this._getCodeLensModelPromise.then(a=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=a,this._codeLensCache.put(t,a);const l=this._provideCodeLensDebounce.update(t,Date.now()-o);r.delay=l,this._renderCodeLensSymbols(a),this._resolveCodeLensesInViewportSoon()},zi)},this._provideCodeLensDebounce.get(t));this._localToDispose.add(r),this._localToDispose.add(Hn(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var o;this._editor.changeDecorations(s=>{this._editor.changeViewZones(a=>{const l=[];let d=-1;this._lenses.forEach(h=>{!h.isValid()||d===h.getLineNumber()?l.push(h):(h.update(a),d=h.getLineNumber())});const u=new dxe;l.forEach(h=>{h.dispose(u,a),this._lenses.splice(this._lenses.indexOf(h),1)}),u.commit(s)})}),r.schedule(),this._resolveCodeLensesScheduler.cancel(),(o=this._resolveCodeLensesPromise)==null||o.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorText(()=>{r.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{r.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(o=>{o.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(Hn(()=>{if(this._editor.getModel()){const o=O3.capture(this._editor);this._editor.changeDecorations(s=>{this._editor.changeViewZones(a=>{this._disposeAllLenses(s,a)})}),o.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(o=>{if(o.target.type!==9)return;let s=o.target.element;if((s==null?void 0:s.tagName)==="SPAN"&&(s=s.parentElement),(s==null?void 0:s.tagName)==="A")for(const a of this._lenses){const l=a.getCommand(s);if(l){this._commandService.executeCommand(l.id,...l.arguments||[]).catch(d=>this._notificationService.error(d));break}}})),r.schedule()}_disposeAllLenses(t,n){const r=new dxe;for(const o of this._lenses)o.dispose(r,n);t&&r.commit(t),this._lenses.length=0}_renderCodeLensSymbols(t){if(!this._editor.hasModel())return;const n=this._editor.getModel().getLineCount(),r=[];let o;for(const l of t.lenses){const d=l.symbol.range.startLineNumber;d<1||d>n||(o&&o[o.length-1].symbol.range.startLineNumber===d?o.push(l):(o=[l],r.push(o)))}if(!r.length&&!this._lenses.length)return;const s=O3.capture(this._editor),a=this._getLayoutInfo();this._editor.changeDecorations(l=>{this._editor.changeViewZones(d=>{const u=new dxe;let h=0,g=0;for(;gthis._resolveCodeLensesInViewportSoon())),h++,g++)}for(;hthis._resolveCodeLensesInViewportSoon())),g++;u.commit(l)})}),s.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var a;(a=this._resolveCodeLensesPromise)==null||a.cancel(),this._resolveCodeLensesPromise=void 0;const t=this._editor.getModel();if(!t)return;const n=[],r=[];if(this._lenses.forEach(l=>{const d=l.computeIfNecessary(t);d&&(n.push(d),r.push(l))}),n.length===0){this._oldCodeLensModels.clear();return}const o=Date.now(),s=Fd(l=>{const d=n.map((u,h)=>{const g=new Array(u.length),m=u.map((v,f)=>!v.symbol.command&&typeof v.provider.resolveCodeLens=="function"?Promise.resolve(v.provider.resolveCodeLens(t,v.symbol,l)).then(k=>{g[f]=k},Nc):(g[f]=v.symbol,Promise.resolve(void 0)));return Promise.all(m).then(()=>{!l.isCancellationRequested&&!r[h].isDisposed()&&r[h].updateCommands(g)})});return Promise.all(d)});this._resolveCodeLensesPromise=s,this._resolveCodeLensesPromise.then(()=>{const l=this._resolveCodeLensesDebounce.update(t,Date.now()-o);this._resolveCodeLensesScheduler.delay=l,this._currentCodeLensModel&&this._codeLensCache.put(t,this._currentCodeLensModel),this._oldCodeLensModels.clear(),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},l=>{zi(l),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var t;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,(t=this._currentCodeLensModel)!=null&&t.isDisposed?void 0:this._currentCodeLensModel}},Vj.ID="css.editor.codeLens",Vj);UJ=Wvo([_X(1,Nn),_X(2,CA),_X(3,ba),_X(4,ic),_X(5,sBn)],UJ);mo(UJ.ID,UJ,1);un(class extends Bn{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:$e.hasCodeLensProvider,label:_t(884,"Show CodeLens Commands for Current Line")})}async run(t,n){if(!n.hasModel())return;const r=t.get(Rf),o=t.get(ba),s=t.get(ic),a=n.getSelection().positionLineNumber,l=n.getContribution(UJ.ID);if(!l)return;const d=await l.getModel();if(!d)return;const u=[];for(const m of d.lenses)m.symbol.command&&m.symbol.range.startLineNumber===a&&u.push({label:m.symbol.command.title,command:m.symbol.command});if(u.length===0)return;const h=await r.pick(u,{canPickMany:!1,placeHolder:U(883,"Select a command")});if(!h)return;let g=h.command;if(d.isDisposed){const m=await l.getModel(),v=m==null?void 0:m.lenses.find(f=>{var k;return f.symbol.range.startLineNumber===a&&((k=f.symbol.command)==null?void 0:k.title)===g.title});if(!v||!v.symbol.command)return;g=v.symbol.command}try{await o.executeCommand(g.id,...g.arguments||[])}catch(m){s.error(m)}}});const aBn=[];function dH(e){aBn.push(e)}function Vvo(){return aBn.slice(0)}class uxe{constructor(t,n,r,o){this.priority=t,this.range=n,this.initialMousePosX=r,this.initialMousePosY=o,this.type=1}equals(t){return t.type===1&&this.range.equalsRange(t.range)}canAdoptVisibleHover(t,n){return t.type===1&&n.lineNumber===this.range.startLineNumber}}class jG{constructor(t,n,r,o,s,a){this.priority=t,this.owner=n,this.range=r,this.initialMousePosX=o,this.initialMousePosY=s,this.supportsMarkerHover=a,this.type=2}equals(t){return t.type===2&&this.owner===t.owner}canAdoptVisibleHover(t,n){return t.type===2&&this.owner===t.owner}}class SR{constructor(t,n){this.renderedHoverParts=t,this.disposables=n}dispose(){var t;for(const n of this.renderedHoverParts)n.dispose();(t=this.disposables)==null||t.dispose()}}const BI=new class{constructor(){this._participants=[]}register(t){this._participants.push(t)}getAll(){return this._participants}};var lBn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zje=function(e,t){return function(n,r){t(n,r,e)}};let jJ=class{constructor(t){this._editorWorkerService=t}async provideDocumentColors(t,n){return this._editorWorkerService.computeDefaultDocumentColors(t.uri)}provideColorPresentations(t,n,r){const o=n.range,s=n.color,a=s.alpha,l=new Dt(new It(Math.round(255*s.red),Math.round(255*s.green),Math.round(255*s.blue),a)),d=a?Dt.Format.CSS.formatRGBA(l):Dt.Format.CSS.formatRGB(l),u=a?Dt.Format.CSS.formatHSLA(l):Dt.Format.CSS.formatHSL(l),h=a?Dt.Format.CSS.formatHexA(l):Dt.Format.CSS.formatHex(l),g=[];return g.push({label:d,textEdit:{range:o,text:d}}),g.push({label:u,textEdit:{range:o,text:u}}),g.push({label:h,textEdit:{range:o,text:h}}),g}};jJ=lBn([zje(0,S1)],jJ);let Hje=class extends ft{constructor(t,n){super(),this._register(t.colorProvider.register("*",new jJ(n)))}};Hje=lBn([zje(0,Nn),zje(1,S1)],Hje);async function cBn(e,t,n,r="auto"){return Xtt(new zvo,e,t,n,r)}function dBn(e,t,n,r){return Promise.resolve(n.provideColorPresentations(e,t,r))}class zvo{constructor(){}async compute(t,n,r,o){const s=await t.provideDocumentColors(n,r);if(Array.isArray(s))for(const a of s)o.push({colorInfo:a,provider:t});return Array.isArray(s)}}class Hvo{constructor(){}async compute(t,n,r,o){const s=await t.provideDocumentColors(n,r);if(Array.isArray(s))for(const a of s)o.push({range:a.range,color:[a.color.red,a.color.green,a.color.blue,a.color.alpha]});return Array.isArray(s)}}class $vo{constructor(t){this.colorInfo=t}async compute(t,n,r,o){const s=await t.provideColorPresentations(n,this.colorInfo,Er.None);return Array.isArray(s)&&o.push(...s),Array.isArray(s)}}async function Xtt(e,t,n,r,o){let s=!1,a;const l=[],d=t.ordered(n);for(let u=d.length-1;u>=0;u--){const h=d[u];if(o!=="always"&&h instanceof jJ)a=h;else try{await e.compute(h,n,r,l)&&(s=!0)}catch(g){Nc(g)}}return s?l:a&&o!=="never"?(await e.compute(a,n,r,l),l):[]}function uBn(e,t){const{colorProvider:n}=e.get(Nn),r=e.get(ml).getModel(t);if(!r)throw Gv();const o=e.get(ar).getValue("editor.defaultColorDecorators",{resource:t});return{model:r,colorProviderRegistry:n,defaultColorDecoratorsEnablement:o}}var Xvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},hxe=function(e,t){return function(n,r){t(n,r,e)}},$je;const hBn=Object.create({});var Z9;let vV=(Z9=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._configurationService=n,this._languageFeaturesService=r,this._localToDispose=this._register(new xt),this._decorationsIds=[],this._colorDatas=new Map,this._decoratorLimitReporter=this._register(new Gvo),this._colorDecorationClassRefs=this._register(new xt),this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=this._register(new Yme(this._editor)),this._debounceInformation=o.for(r.colorProvider,"Document Colors",{min:$je.RECOMPUTE_TIME}),this._register(t.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(t.onDidChangeModelLanguage(()=>this.updateColors())),this._register(r.colorProvider.onDidChange(()=>this.updateColors())),this._register(t.onDidChangeConfiguration(s=>{const a=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._defaultColorDecoratorsEnablement=this._editor.getOption(167);const l=a!==this._isColorDecoratorsEnabled||s.hasChanged(27),d=s.hasChanged(167);(l||d)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._defaultColorDecoratorsEnablement=this._editor.getOption(167),this.updateColors()}isEnabled(){const t=this._editor.getModel();if(!t)return!1;const n=t.getLanguageId(),r=this._configurationService.getValue(n);if(r&&typeof r=="object"){const o=r.colorDecorators;if(o&&o.enable!==void 0&&!o.enable)return o.enable}return this._editor.getOption(26)}static get(t){return t.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const t=this._editor.getModel();!t||!this._languageFeaturesService.colorProvider.has(t)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new I0,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(t)))})),this.beginCompute())}async beginCompute(){this._computePromise=Fd(async t=>{const n=this._editor.getModel();if(!n)return[];const r=new vu(!1),o=await cBn(this._languageFeaturesService.colorProvider,n,t,this._defaultColorDecoratorsEnablement);return this._debounceInformation.update(n,r.elapsed()),o});try{const t=await this._computePromise;this.updateDecorations(t),this.updateColorDecorators(t),this._computePromise=null}catch(t){zi(t)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(t){const n=t.map(r=>({range:{startLineNumber:r.colorInfo.range.startLineNumber,startColumn:r.colorInfo.range.startColumn,endLineNumber:r.colorInfo.range.endLineNumber,endColumn:r.colorInfo.range.endColumn},options:Gi.EMPTY}));this._editor.changeDecorations(r=>{this._decorationsIds=r.deltaDecorations(this._decorationsIds,n),this._colorDatas=new Map,this._decorationsIds.forEach((o,s)=>this._colorDatas.set(o,t[s]))})}updateColorDecorators(t){this._colorDecorationClassRefs.clear();const n=[],r=this._editor.getOption(27);for(let s=0;sthis._colorDatas.has(o.id));return r.length===0?null:this._colorDatas.get(r[0].id)}isColorDecoration(t){return this._colorDecoratorIds.has(t)}},$je=Z9,Z9.ID="editor.contrib.colorDetector",Z9.RECOMPUTE_TIME=1e3,Z9);vV=$je=Xvo([hxe(1,ar),hxe(2,Nn),hxe(3,CA)],vV);class Gvo extends ft{constructor(){super(...arguments),this._onDidChange=this._register(new at),this._computed=0,this._limited=!1}update(t,n){(t!==this._computed||n!==this._limited)&&(this._computed=t,this._limited=n,this._onDidChange.fire())}}const fBn="editor.action.showHover",Yvo="editor.action.showDefinitionPreviewHover",Zvo="editor.action.hideHover",qvo="editor.action.scrollUpHover",Kvo="editor.action.scrollDownHover",Jvo="editor.action.scrollLeftHover",eAo="editor.action.scrollRightHover",tAo="editor.action.pageUpHover",nAo="editor.action.pageDownHover",iAo="editor.action.goToTopHover",rAo="editor.action.goToBottomHover",A3e="editor.action.increaseHoverVerbosityLevel",oAo=U(1102,"Increase Hover Verbosity Level"),p3e="editor.action.decreaseHoverVerbosityLevel",sAo=U(1103,"Decrease Hover Verbosity Level"),WJ="editor.action.inlineSuggest.commit",gBn="editor.action.inlineSuggest.showPrevious",mBn="editor.action.inlineSuggest.showNext",aAo="editor.action.inlineSuggest.jump",kBn="editor.action.inlineSuggest.hide",Xje="editor.action.inlineSuggest.toggleShowCollapsed";var Gtt=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},x4=function(e,t){return function(n,r){t(n,r,e)}},mhe;let Gje=class extends ft{constructor(t,n,r){super(),this.editor=t,this.model=n,this.instantiationService=r,this.alwaysShowToolbar=Ko(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(71).showToolbar==="always"),this.sessionPosition=void 0,this.position=Rt(this,o=>{var d,u;const s=(d=this.model.read(o))==null?void 0:d.primaryGhostText.read(o);if(!this.alwaysShowToolbar.read(o)||!s||s.parts.length===0)return this.sessionPosition=void 0,null;const a=s.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==s.lineNumber&&(this.sessionPosition=void 0);const l=new it(s.lineNumber,Math.min(a,((u=this.sessionPosition)==null?void 0:u.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=l,l}),this._register(Ef((o,s)=>{const a=this.model.read(o);if(!a||!this.alwaysShowToolbar.read(o))return;const l=Rt(u=>{const h=u.store.add(this.instantiationService.createInstance(AV.hot.read(u),this.editor,!0,this.position,a.selectedInlineCompletionIndex,a.inlineCompletionsCount,a.activeCommands,a.warning,()=>{}));return t.addContentWidget(h),u.store.add(Hn(()=>t.removeContentWidget(h))),u.store.add(Oi(g=>{this.position.read(g)&&a.lastTriggerKind.read(g)!==Zm.Explicit&&a.triggerExplicitly()})),h}),d=vL(this,(u,h)=>!!this.position.read(u)||!!h);s.add(Oi(u=>{d.read(u)&&l.read(u)}))}))}};Gje=Gtt([x4(2,Yn)],Gje);const lAo=Da("inline-suggestion-hints-next",zt.chevronRight,U(1207,"Icon for show next parameter hint.")),cAo=Da("inline-suggestion-hints-previous",zt.chevronLeft,U(1208,"Icon for show previous parameter hint."));var IO;let AV=(IO=class extends ft{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(t,n,r){const o=new n2(t,n,r,!0,()=>this._commandService.executeCommand(t)),s=this.keybindingService.lookupKeybinding(t,this._contextKeyService);let a=n;return s&&(a=U(1209,"{0} ({1})",n,s.getLabel())),o.tooltip=a,o}constructor(t,n,r,o,s,a,l,d,u,h,g,m,v){super(),this.editor=t,this.withBorder=n,this._position=r,this._currentSuggestionIdx=o,this._suggestionCount=s,this._extraCommands=a,this._warning=l,this._relayout=d,this._commandService=u,this.keybindingService=g,this._contextKeyService=m,this._menuService=v,this.id=`InlineSuggestionHintsContentWidget${mhe.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._warningMessageContentNode=Rt(f=>{const k=this._warning.read(f);return k?typeof k.message=="string"?k.message:f.store.add(Vie(k.message)).element:void 0}),this._warningMessageNode=cr.div({class:"warningMessage",style:{maxWidth:400,margin:4,marginBottom:4,display:Rt(f=>this._warning.read(f)?"block":"none")}},[this._warningMessageContentNode]).keepUpdated(this._store),this.nodes=wo("div.inlineSuggestionsHints",{className:this.withBorder?"monaco-hover monaco-hover-content":""},[this._warningMessageNode.element,wo("div@toolBar")]),this.previousAction=this._register(this.createCommandAction(gBn,U(1210,"Previous"),fi.asClassName(cAo))),this.availableSuggestionCountAction=this._register(new n2("inlineSuggestionHints.availableSuggestionCount","",void 0,!1)),this.nextAction=this._register(this.createCommandAction(mBn,U(1211,"Next"),fi.asClassName(lAo))),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(Wn.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new Es(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new Es(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this._register(Oi(f=>{this._warningMessageContentNode.read(f),this._warningMessageNode.readEffect(f),this._relayout()})),this.toolBar=this._register(h.createInstance(Yje,this.nodes.toolBar,Wn.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:f=>f.startsWith("primary")},actionViewItemProvider:(f,k)=>{if(f instanceof i2)return h.createInstance(uAo,f,void 0);if(f===this.availableSuggestionCountAction){const A=new dAo(void 0,f,{label:!0,icon:!1});return A.setClass("availableSuggestionCount"),A}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(f=>{mhe._dropDownVisible=f})),this._register(Oi(f=>{this._position.read(f),this.editor.layoutContentWidget(this)})),this._register(Oi(f=>{const k=this._suggestionCount.read(f),A=this._currentSuggestionIdx.read(f);k!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${A+1}/${k}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),k!==void 0&&k>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register(Oi(f=>{const A=this._extraCommands.read(f).map(p=>({class:void 0,id:p.command.id,enabled:!0,tooltip:p.command.tooltip||"",label:p.command.title,run:b=>this._commandService.executeCommand(p.command.id)}));for(const[p,b]of this.inlineCompletionsActionsMenus.getActions())for(const w of b)w instanceof i2&&A.push(w);A.length>0&&A.unshift(new pd),this.toolBar.setAdditionalSecondaryActions(A)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},mhe=IO,IO.hot=l3e(IO),IO._dropDownVisible=!1,IO.id=0,IO);AV=mhe=Gtt([x4(8,ba),x4(9,Yn),x4(10,Do),x4(11,Qi),x4(12,wA)],AV);class dAo extends gV{constructor(){super(...arguments),this._className=void 0}setClass(t){this._className=t}render(t){super.render(t),this._className&&t.classList.add(this._className)}updateTooltip(){}}class uAo extends D6{updateLabel(){const t=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService,!0);if(!t)return super.updateLabel();if(this.label){const n=wo("div.keybinding").root;this._register(new cH(n,b0,{disableTitle:!0,...X2o})).set(t),this.label.textContent=this._action.label,this.label.appendChild(n),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}}let Yje=class extends M1e{constructor(t,n,r,o,s,a,l,d,u){super(t,{resetMenu:n,...r},o,s,a,l,d,u),this.menuId=n,this.options2=r,this.menuService=o,this.contextKeyService=s,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this.additionalPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var r,o,s,a,l,d,u;const{primary:t,secondary:n}=kDn(this.menu.getActions((r=this.options2)==null?void 0:r.menuOptions),(s=(o=this.options2)==null?void 0:o.toolbarOptions)==null?void 0:s.primaryGroup,(l=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:l.shouldInlineSubmenu,(u=(d=this.options2)==null?void 0:d.toolbarOptions)==null?void 0:u.useSeparatorsInPrimaryActions);n.push(...this.additionalActions),t.unshift(...this.prependedPrimaryActions),t.push(...this.additionalPrimaryActions),this.setActions(t,n)}setPrependedPrimaryActions(t){Na(this.prependedPrimaryActions,t,(n,r)=>n===r)||(this.prependedPrimaryActions=t,this.updateToolbar())}setAdditionalSecondaryActions(t){Na(this.additionalActions,t,(n,r)=>n===r)||(this.additionalActions=t,this.updateToolbar())}};Yje=Gtt([x4(3,wA),x4(4,Qi),x4(5,S2),x4(6,Do),x4(7,ba),x4(8,Nf)],Yje);function b3e(e,t,n){const r=Kl(e);return!(tr.left+r.width||nr.top+r.height)}class hAo{constructor(t,n,r,o){this.value=t,this.isComplete=n,this.hasLoadingMessage=r,this.options=o}}class vBn extends ft{constructor(t,n){super(),this._editor=t,this._computer=n,this._onResult=this._register(new at),this.onResult=this._onResult.event,this._asyncComputationScheduler=this._register(new fxe(r=>this._triggerAsyncComputation(r),0)),this._syncComputationScheduler=this._register(new fxe(r=>this._triggerSyncComputation(r),0)),this._loadingMessageScheduler=this._register(new fxe(r=>this._triggerLoadingMessage(r),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._options=void 0,super.dispose()}get _hoverTime(){return this._editor.getOption(69).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(t,n){this._options=n,this._state=t,this._fireResult(n)}_triggerAsyncComputation(t){this._setState(2,t),this._syncComputationScheduler.schedule(t,this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=deo(n=>this._computer.computeAsync(t,n)),(async()=>{try{for await(const n of this._asyncIterable)n&&(this._result.push(n),this._fireResult(t));this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0,t)}catch(n){zi(n)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(t){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync(t))),this._setState(this._asyncIterableDone?0:3,t)}_triggerLoadingMessage(t){this._state===3&&this._setState(4,t)}_fireResult(t){if(this._state===1||this._state===2)return;const n=this._state===0,r=this._state===4;this._onResult.fire(new hAo(this._result.slice(0),n,r,t))}start(t,n){if(t===0)this._state===0&&(this._setState(1,n),this._asyncComputationScheduler.schedule(n,this._firstWaitTime),this._loadingMessageScheduler.schedule(n,this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(n),this._syncComputationScheduler.cancel(),this._triggerSyncComputation(n);break;case 2:this._syncComputationScheduler.cancel(),this._triggerSyncComputation(n);break}}cancel(){this._asyncComputationScheduler.cancel(),this._syncComputationScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._options=void 0,this._state=0}get options(){return this._options}}class fxe extends ft{constructor(t,n){super(),this._scheduler=this._register(new Es(()=>t(this._options),n))}schedule(t,n){this._options=t,this._scheduler.schedule(n)}cancel(){this._scheduler.cancel()}}class Ytt{get onDidWillResize(){return this._onDidWillResize.event}get onDidResize(){return this._onDidResize.event}constructor(){this._onDidWillResize=new at,this._onDidResize=new at,this._sashListener=new xt,this._size=new cs(0,0),this._minSize=new cs(0,0),this._maxSize=new cs(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new kf(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new kf(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new kf(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:T1e.North}),this._southSash=new kf(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:T1e.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let t,n=0,r=0;this._sashListener.add(an.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{t===void 0&&(this._onDidWillResize.fire(),t=this._size,n=0,r=0)})),this._sashListener.add(an.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{t!==void 0&&(t=void 0,n=0,r=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(o=>{t&&(r=o.currentX-o.startX,this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(o=>{t&&(r=-(o.currentX-o.startX),this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(o=>{t&&(n=-(o.currentY-o.startY),this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(o=>{t&&(n=o.currentY-o.startY,this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(an.any(this._eastSash.onDidReset,this._westSash.onDidReset)(o=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(an.any(this._northSash.onDidReset,this._southSash.onDidReset)(o=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(t,n,r,o){this._northSash.state=t?3:0,this._eastSash.state=n?3:0,this._southSash.state=r?3:0,this._westSash.state=o?3:0}layout(t=this.size.height,n=this.size.width){const{height:r,width:o}=this._minSize,{height:s,width:a}=this._maxSize;t=Math.max(r,Math.min(s,t)),n=Math.max(o,Math.min(a,n));const l=new cs(n,t);cs.equals(l,this._size)||(this.domNode.style.height=t+"px",this.domNode.style.width=n+"px",this._size=l,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(t){this._maxSize=t}get maxSize(){return this._maxSize}set minSize(t){this._minSize=t}get minSize(){return this._minSize}set preferredSize(t){this._preferredSize=t}get preferredSize(){return this._preferredSize}}const fAo=30,gAo=24;class mAo extends ft{constructor(t,n=new cs(10,10)){super(),this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new Ytt),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=cs.lift(n),this._resizableNode.layout(n.height,n.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(r=>{this._resize(new cs(r.dimension.width,r.dimension.height)),r.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var t;return(t=this._contentPosition)!=null&&t.position?it.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(t){const n=this._editor.getDomNode(),r=this._editor.getScrolledVisiblePosition(t);return!n||!r?void 0:Kl(n).top+r.top-fAo}_availableVerticalSpaceBelow(t){const n=this._editor.getDomNode(),r=this._editor.getScrolledVisiblePosition(t);if(!n||!r)return;const o=Kl(n),s=O6(n.ownerDocument.body),a=o.top+r.top+r.height;return s.height-a-gAo}_findPositionPreference(t,n){const r=Math.min(this._availableVerticalSpaceBelow(n)??1/0,t),o=Math.min(this._availableVerticalSpaceAbove(n)??1/0,t),s=Math.min(Math.max(o,r),t),a=Math.min(t,s);let l;return this._editor.getOption(69).above?l=a<=o?1:2:l=a<=r?2:1,l===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),l}_resize(t){this._resizableNode.layout(t.height,t.width)}}const Wle=tn;let Ztt=class extends ft{constructor(t){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.classList.toggle("fade-in",!!t),this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new Mie(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}};class w3e extends ft{static render(t,n,r){return new w3e(t,n,r)}constructor(t,n,r){super(),this.actionLabel=n.label,this.actionKeybindingLabel=r,this.actionContainer=Xt(t,Wle("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=Xt(this.actionContainer,Wle("a.action")),this.action.setAttribute("role","button"),n.iconClass&&Xt(this.action,Wle("span.icon")).classList.add(...n.iconClass.split(" ")),this.actionRenderedLabel=r?`${n.label} (${r})`:n.label;const o=Xt(this.action,Wle("span"));o.textContent=this.actionRenderedLabel,this._store.add(new pBn(this.actionContainer,n.run)),this._store.add(new bBn(this.actionContainer,n.run,[3,10])),this.setEnabled(!0)}setEnabled(t){t?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function ABn(e,t){return e&&t?U(7,"Inspect this in the accessible view with {0}.",t):e?U(8,"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}class pBn extends ft{constructor(t,n){super(),this._register(wt(t,rn.CLICK,r=>{r.stopPropagation(),r.preventDefault(),n(t)}))}}class bBn extends ft{constructor(t,n,r){super(),this._register(wt(t,rn.KEY_DOWN,o=>{const s=new Us(o);r.some(a=>s.equals(a))&&(o.stopPropagation(),o.preventDefault(),n(t))}))}}var kAo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Vle=function(e,t){return function(n,r){t(n,r,e)}},i4;const tyt=30;var q9;let Zje=(q9=class extends mAo{get isVisibleFromKeyboard(){var t;return((t=this._renderedHover)==null?void 0:t.source)===2}get isVisible(){return this._hoverVisibleKey.get()??!1}get isFocused(){return this._hoverFocusedKey.get()??!1}constructor(t,n,r,o,s){const a=t.getOption(75)+8,l=150,d=new cs(l,a);super(t,d),this._configurationService=r,this._accessibilityService=o,this._keybindingService=s,this._hover=this._register(new Ztt(!0)),this._onDidResize=this._register(new at),this.onDidResize=this._onDidResize.event,this._onDidScroll=this._register(new at),this.onDidScroll=this._onDidScroll.event,this._onContentsChanged=this._register(new at),this.onContentsChanged=this._onContentsChanged.event,this._minimumSize=d,this._hoverVisibleKey=$e.hoverVisible.bindTo(n),this._hoverFocusedKey=$e.hoverFocused.bindTo(n),Xt(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._resizableNode.domNode.className="monaco-resizable-hover",this._register(this._editor.onDidLayoutChange(()=>{this.isVisible&&this._updateMaxDimensions()})),this._register(this._editor.onDidChangeConfiguration(h=>{h.hasChanged(59)&&this._updateFont()}));const u=this._register(uA(this._resizableNode.domNode));this._register(u.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(u.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._register(this._hover.scrollbar.onScroll(h=>{this._onDidScroll.fire(h)})),this._setRenderedHover(void 0),this._editor.addContentWidget(this)}dispose(){var t;super.dispose(),(t=this._renderedHover)==null||t.dispose(),this._editor.removeContentWidget(this)}getId(){return i4.ID}static _applyDimensions(t,n,r){const o=typeof n=="number"?`${n}px`:n,s=typeof r=="number"?`${r}px`:r;t.style.width=o,t.style.height=s}_setContentsDomNodeDimensions(t,n){const r=this._hover.contentsDomNode;return i4._applyDimensions(r,t,n)}_setContainerDomNodeDimensions(t,n){const r=this._hover.containerDomNode;return i4._applyDimensions(r,t,n)}_setScrollableElementDimensions(t,n){const r=this._hover.scrollbar.getDomNode();return i4._applyDimensions(r,t,n)}_setHoverWidgetDimensions(t,n){this._setContainerDomNodeDimensions(t,n),this._setScrollableElementDimensions(t,n),this._setContentsDomNodeDimensions(t,n),this._layoutContentWidget()}static _applyMaxDimensions(t,n,r){const o=typeof n=="number"?`${n}px`:n,s=typeof r=="number"?`${r}px`:r;t.style.maxWidth=o,t.style.maxHeight=s}_setHoverWidgetMaxDimensions(t,n){i4._applyMaxDimensions(this._hover.contentsDomNode,t,n),i4._applyMaxDimensions(this._hover.scrollbar.getDomNode(),t,n),i4._applyMaxDimensions(this._hover.containerDomNode,t,n),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof t=="number"?`${t}px`:t),this._layoutContentWidget()}_setAdjustedHoverWidgetDimensions(t){this._setHoverWidgetMaxDimensions("none","none"),this._setHoverWidgetDimensions(t.width,t.height)}_updateResizableNodeMaxDimensions(){const t=this._findMaximumRenderingWidth()??1/0,n=this._findMaximumRenderingHeight()??1/0;this._resizableNode.maxSize=new cs(t,n),this._setHoverWidgetMaxDimensions(t,n)}_resize(t){i4._lastDimensions=new cs(t.width,t.height),this._setAdjustedHoverWidgetDimensions(t),this._resizableNode.layout(t.height,t.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),this._onDidResize.fire()}_findAvailableSpaceVertically(){var n;const t=(n=this._renderedHover)==null?void 0:n.showAtPosition;if(t)return this._positionPreference===1?this._availableVerticalSpaceAbove(t):this._availableVerticalSpaceBelow(t)}_findMaximumRenderingHeight(){const t=this._findAvailableSpaceVertically();if(!t)return;let r=this._hover.contentsDomNode.children.length-1;return Array.from(this._hover.contentsDomNode.children).forEach(o=>{r+=o.clientHeight}),Math.min(t,r)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const t=Array.from(this._hover.contentsDomNode.children).some(n=>n.scrollWidth>n.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),t}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const t=this._isHoverTextOverflowing(),n=typeof this._contentWidth>"u"?0:this._contentWidth;return t||this._hover.containerDomNode.clientWidththis._renderedHover.closestMouseDistance+4?!1:(this._renderedHover.closestMouseDistance=Math.min(this._renderedHover.closestMouseDistance,o),!0)}_setRenderedHover(t){var n;(n=this._renderedHover)==null||n.dispose(),this._renderedHover=t,this._hoverVisibleKey.set(!!t),this._hover.containerDomNode.classList.toggle("hidden",!t)}_updateFont(){const{fontSize:t,lineHeight:n}=this._editor.getOption(59),r=this._hover.contentsDomNode;r.style.fontSize=`${t}px`,r.style.lineHeight=`${n/t}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(s=>this._editor.applyFontInfo(s))}_updateContent(t){const n=this._hover.contentsDomNode;n.style.paddingBottom="",n.textContent="",n.appendChild(t)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const t=Math.max(this._editor.getLayoutInfo().height/4,250,i4._lastDimensions.height),n=Math.max(this._editor.getLayoutInfo().width*.66,750,i4._lastDimensions.width);this._resizableNode.maxSize=new cs(n,t),this._setHoverWidgetMaxDimensions(n,t)}_render(t){this._setRenderedHover(t),this._updateFont(),this._updateContent(t.domNode),this.handleContentsChanged(),this._editor.render()}getPosition(){return this._renderedHover?{position:this._renderedHover.showAtPosition,secondaryPosition:this._renderedHover.showAtSecondaryPosition,positionAffinity:this._renderedHover.shouldAppearBeforeContent?3:void 0,preference:[this._positionPreference??1]}:null}show(t){var a;if(!this._editor||!this._editor.hasModel())return;this._render(t);const n=ES(this._hover.containerDomNode),r=t.showAtPosition;this._positionPreference=this._findPositionPreference(n,r)??1,this.handleContentsChanged(),t.shouldFocus&&this._hover.containerDomNode.focus(),this._onDidResize.fire();const s=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&ABn(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),((a=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:a.getAriaLabel())??"");s&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+s)}hide(){if(!this._renderedHover)return;const t=this._renderedHover.shouldFocus||this._hoverFocusedKey.get();this._setRenderedHover(void 0),this._resizableNode.maxSize=new cs(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),t&&this._editor.focus()}_removeConstraintsRenderNormally(){const t=this._editor.getLayoutInfo();this._resizableNode.layout(t.height,t.width),this._setHoverWidgetDimensions("auto","auto"),this._updateMaxDimensions()}setMinimumDimensions(t){this._minimumSize=new cs(Math.max(this._minimumSize.width,t.width),Math.max(this._minimumSize.height,t.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const t=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new cs(t,this._minimumSize.height)}handleContentsChanged(){var o;this._removeConstraintsRenderNormally();const t=this._hover.contentsDomNode;let n=ES(t),r=s0(t)+2;if(this._resizableNode.layout(n,r),this._setHoverWidgetDimensions(r,n),n=ES(t),r=s0(t),this._contentWidth=r,this._updateMinimumWidth(),this._resizableNode.layout(n,r),(o=this._renderedHover)!=null&&o.showAtPosition){const s=ES(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(s,this._renderedHover.showAtPosition)}this._layoutContentWidget(),this._onContentsChanged.fire()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._editor.getOption(59);this._hover.scrollbar.setScrollPosition({scrollTop:t-n.lineHeight})}scrollDown(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._editor.getOption(59);this._hover.scrollbar.setScrollPosition({scrollTop:t+n.lineHeight})}scrollLeft(){const t=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:t-tyt})}scrollRight(){const t=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:t+tyt})}pageUp(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:t-n})}pageDown(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:t+n})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}},i4=q9,q9.ID="editor.contrib.resizableContentHoverWidget",q9._lastDimensions=new cs(0,0),q9);Zje=i4=kAo([Vle(1,Qi),Vle(2,ar),Vle(3,vh),Vle(4,Do)],Zje);function nyt(e,t,n,r,o,s){const a=n+o/2,l=r+s/2,d=Math.max(Math.abs(e-a)-o/2,0),u=Math.max(Math.abs(t-l)-s/2,0);return Math.sqrt(d*d+u*u)}class q1e{constructor(t,n){this._editor=t,this._participants=n}static _getLineDecorations(t,n){if(n.type!==1&&!n.supportsMarkerHover)return[];const r=t.getModel(),o=n.range.startLineNumber;if(o>r.getLineCount())return[];const s=r.getLineMaxColumn(o);return t.getLineDecorations(o).filter(a=>{if(a.options.isWholeLine)return!0;const l=a.range.startLineNumber===o?a.range.startColumn:1,d=a.range.endLineNumber===o?a.range.endColumn:s;if(a.options.showIfCollapsed){if(l>n.range.startColumn+1||n.range.endColumn-1>d)return!1}else if(l>n.range.startColumn||n.range.endColumn>d)return!1;return!0})}computeAsync(t,n){const r=t.anchor;if(!this._editor.hasModel()||!r)return Yv.EMPTY;const o=q1e._getLineDecorations(this._editor,r);return Yv.merge(this._participants.map(s=>s.computeAsync?s.computeAsync(r,o,t.source,n):Yv.EMPTY))}computeSync(t){if(!this._editor.hasModel())return[];const n=t.anchor,r=q1e._getLineDecorations(this._editor,n);let o=[];for(const s of this._participants)o=o.concat(s.computeSync(n,r,t.source));return P3(o)}}class wBn{constructor(t,n,r){this.hoverParts=t,this.isComplete=n,this.options=r}filter(t){const n=this.hoverParts.filter(r=>r.isValidForHoverAnchor(t));return n.length===this.hoverParts.length?this:new vAo(this,n,this.isComplete,this.options)}}class vAo extends wBn{constructor(t,n,r,o){super(n,r,o),this.original=t}filter(t){return this.original.filter(t)}}var AAo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},iyt=function(e,t){return function(n,r){t(n,r,e)}};const ryt=tn;let K1e=class extends ft{get hasContent(){return this._hasContent}constructor(t,n){super(),this._keybindingService=t,this._hoverService=n,this.actions=[],this._hasContent=!1,this.hoverElement=ryt("div.hover-row.status-bar"),this.hoverElement.tabIndex=0,this.actionsElement=Xt(this.hoverElement,ryt("div.actions"))}addAction(t){const n=this._keybindingService.lookupKeybinding(t.commandId),r=n?n.getLabel():null;this._hasContent=!0;const o=this._register(w3e.render(this.actionsElement,t,r));return this._register(this._hoverService.setupManagedHover(eC("element"),o.actionContainer,o.actionRenderedLabel)),this.actions.push(o),o}append(t){const n=Xt(this.actionsElement,t);return this._hasContent=!0,n}};K1e=AAo([iyt(0,Do),iyt(1,pm)],K1e);const OBn={inputActiveOptionBorder:"#007ACC00",inputActiveOptionForeground:"#FFFFFF",inputActiveOptionBackground:"#0E639C50"};class yL extends Y0{get onChange(){return this._onChange.event}get onKeyDown(){return this._onKeyDown.event}constructor(t){super(),this._onChange=this._register(new at),this._onKeyDown=this._register(new at),this._opts=t,this._title=this._opts.title,this._checked=this._opts.isChecked;const n=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,n.push(...fi.asClassNameArray(this._icon))),this._opts.actionClassName&&n.push(...this._opts.actionClassName.split(" ")),this._checked&&n.push("checked"),this.domNode=document.createElement("div"),this._register(yp().setupDelayedHover(this.domNode,()=>({content:this._title,style:1}),this._opts.hoverLifecycleOptions)),this.domNode.classList.add(...n),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.setTitle(this._opts.title),this.applyStyles(),this.onclick(this.domNode,r=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),r.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,r=>{if(this.enabled){if(r.keyCode===10||r.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),r.preventDefault(),r.stopPropagation();return}this._onKeyDown.fire(r)}})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(t){this._checked=t,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}setIcon(t){this._icon&&this.domNode.classList.remove(...fi.asClassNameArray(this._icon)),this._icon=t,this._icon&&this.domNode.classList.add(...fi.asClassNameArray(this._icon))}width(){return 22}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1)),this.domNode.classList.remove("disabled")}disable(){this.domNode.setAttribute("aria-disabled",String(!0)),this.domNode.classList.add("disabled")}setTitle(t){this._title=t,this.domNode.setAttribute("aria-label",t)}set visible(t){this.domNode.style.display=t?"":"none"}get visible(){return this.domNode.style.display!=="none"}}const kat=class kat extends Y0{constructor(t,n,r){super(),this.checkbox=t,this.domNode=n,this.styles=r,this._onChange=this._register(new at),this.onChange=this._onChange.event,this.applyStyles()}get enabled(){return this.checkbox.enabled}enable(){this.checkbox.enable(),this.applyStyles(!0)}disable(){this.checkbox.disable(),this.applyStyles(!1)}setTitle(t){this.checkbox.setTitle(t)}applyStyles(t=this.enabled){this.domNode.style.color=(t?this.styles.checkboxForeground:this.styles.checkboxDisabledForeground)||"",this.domNode.style.backgroundColor=(t?this.styles.checkboxBackground:this.styles.checkboxDisabledBackground)||"",this.domNode.style.borderColor=(t?this.styles.checkboxBorder:this.styles.checkboxDisabledBackground)||"";const n=this.styles.size||18;this.domNode.style.width=this.domNode.style.height=this.domNode.style.fontSize=`${n}px`,this.domNode.style.fontSize=`${n-2}px`}};kat.CLASS_NAME="monaco-checkbox";let VJ=kat,yBn=class extends VJ{constructor(t,n,r){const o=new yL({title:t,isChecked:n,icon:zt.check,actionClassName:VJ.CLASS_NAME,hoverLifecycleOptions:r.hoverLifecycleOptions,...OBn});super(o,o.domNode,r),this._register(o),this._register(this.checkbox.onChange(s=>{this.applyStyles(),this._onChange.fire(s)}))}get checked(){return this.checkbox.checked}set checked(t){this.checkbox.checked=t,this.applyStyles()}applyStyles(t){this.checkbox.checked?this.checkbox.setIcon(zt.check):this.checkbox.setIcon(void 0),super.applyStyles(t)}};class CBn extends VJ{constructor(t,n,r){let o;switch(n){case!0:o=zt.check;break;case"mixed":o=zt.dash;break;case!1:o=void 0;break}const s=new yL({title:t,isChecked:n===!0,icon:o,actionClassName:yBn.CLASS_NAME,hoverLifecycleOptions:r.hoverLifecycleOptions,...OBn});super(s,s.domNode,r),this._state=n,this._register(s),this._register(this.checkbox.onChange(a=>{this._state=this.checkbox.checked,this.applyStyles(),this._onChange.fire(a)}))}get checked(){return this._state}set checked(t){this._state!==t&&(this._state=t,this.checkbox.checked=t===!0,this.applyStyles())}applyStyles(t){switch(this._state){case!0:this.checkbox.setIcon(zt.check);break;case"mixed":this.checkbox.setIcon(zt.dash);break;case!1:this.checkbox.setIcon(void 0);break}super.applyStyles(t)}}const eg=class eg{constructor(t){this._editor=t,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const t=this._findScopeDecorationIds.map(n=>this._editor.getModel().getDecorationRange(n)).filter(n=>!!n);if(t.length)return t}return null}getStartPosition(){return this._startPosition}setStartPosition(t){this._startPosition=t,this.setCurrentFindMatch(null)}_getDecorationIndex(t){const n=this._decorations.indexOf(t);return n>=0?n+1:1}getDecorationRangeAt(t){const n=t{if(this._highlightedDecorationId!==null&&(o.changeDecorationOptions(this._highlightedDecorationId,eg._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),n!==null&&(this._highlightedDecorationId=n,o.changeDecorationOptions(this._highlightedDecorationId,eg._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(o.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),n!==null){let s=this._editor.getModel().getDecorationRange(n);if(s.startLineNumber!==s.endLineNumber&&s.endColumn===1){const a=s.endLineNumber-1,l=this._editor.getModel().getLineMaxColumn(a);s=new Ee(s.startLineNumber,s.startColumn,a,l)}this._rangeHighlightDecorationId=o.addDecoration(s,eg._RANGE_HIGHLIGHT_DECORATION)}}),r}set(t,n){this._editor.changeDecorations(r=>{let o=eg._FIND_MATCH_DECORATION;const s=[];if(t.length>1e3){o=eg._FIND_MATCH_NO_OVERVIEW_DECORATION;const l=this._editor.getModel().getLineCount(),u=this._editor.getLayoutInfo().height/l,h=Math.max(2,Math.ceil(3/u));let g=t[0].range.startLineNumber,m=t[0].range.endLineNumber;for(let v=1,f=t.length;v=k.startLineNumber?k.endLineNumber>m&&(m=k.endLineNumber):(s.push({range:new Ee(g,1,m,1),options:eg._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),g=k.startLineNumber,m=k.endLineNumber)}s.push({range:new Ee(g,1,m,1),options:eg._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const a=new Array(t.length);for(let l=0,d=t.length;lr.removeDecoration(l)),this._findScopeDecorationIds=[]),n!=null&&n.length&&(this._findScopeDecorationIds=n.map(l=>r.addDecoration(l,eg._FIND_SCOPE_DECORATION)))})}matchBeforePosition(t){if(this._decorations.length===0)return null;for(let n=this._decorations.length-1;n>=0;n--){const r=this._decorations[n],o=this._editor.getModel().getDecorationRange(r);if(!(!o||o.endLineNumber>t.lineNumber)){if(o.endLineNumbert.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(t){if(this._decorations.length===0)return null;for(let n=0,r=this._decorations.length;nt.lineNumber)return s;if(!(s.startColumn0){const r=[];for(let a=0;aEe.compareRangesUsingStarts(a.range,l.range));const o=[];let s=r[0];for(let a=1;a0?t[0].toUpperCase()+t.substr(1):e[0][0].toUpperCase()!==e[0][0]&&t.length>0?t[0].toLowerCase()+t.substr(1):t}else return t}function oyt(e,t,n){return e[0].indexOf(n)!==-1&&t.indexOf(n)!==-1&&e[0].split(n).length===t.split(n).length}function syt(e,t,n){const r=t.split(n),o=e[0].split(n);let s="";return r.forEach((a,l)=>{s+=_Bn([o[l]],a)+n}),s.slice(0,-1)}class ayt{constructor(t){this.staticValue=t,this.kind=0}}class bAo{constructor(t){this.pieces=t,this.kind=1}}class pV{static fromStaticValue(t){return new pV([pD.staticValue(t)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(t){!t||t.length===0?this._state=new ayt(""):t.length===1&&t[0].staticValue!==null?this._state=new ayt(t[0].staticValue):this._state=new bAo(t)}buildReplaceString(t,n){if(this._state.kind===0)return n?_Bn(t,this._state.staticValue):this._state.staticValue;let r="";for(let o=0,s=this._state.pieces.length;o0){const d=[],u=a.caseOps.length;let h=0;for(let g=0,m=l.length;g=u){d.push(l.slice(g));break}switch(a.caseOps[h]){case"U":d.push(l[g].toUpperCase());break;case"u":d.push(l[g].toUpperCase()),h++;break;case"L":d.push(l[g].toLowerCase());break;case"l":d.push(l[g].toLowerCase()),h++;break;default:d.push(l[g])}}l=d.join("")}r+=l}return r}static _substitute(t,n){if(n===null)return"";if(t===0)return n[0];let r="";for(;t>0;){if(t=o)break;const a=e.charCodeAt(r);switch(a){case 92:n.emitUnchanged(r-1),n.emitStatic("\\",r+1);break;case 110:n.emitUnchanged(r-1),n.emitStatic(` +{1}`,l.title,H1e(p)))}finally{a.deltaDecorations(f,[])}s.isCancellationRequested||r&&k.isApplied&&n.allEdits.length>1&&this.show(A??v,n,d)}show(t,n,r){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(Ije,this._id,this._editor,this._visibleContext,this._showCommand,t,n,r,this._getAdditionalActions()))}clear(){this._currentWidget.clear()}tryShowSelector(){var t;(t=this._currentWidget.value)==null||t.showSelector()}};X1e=XDn([HU(5,Yn),HU(6,Yie),HU(7,ic)],X1e);var J2o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},GC=function(e,t){return function(n,r){t(n,r,e)}},n4;const GDn="editor.changePasteType",evo="editor.pasteAs.preferences",Wtt=new yn("pasteWidgetVisible",!1,U(917,"Whether the paste widget is showing")),lxe="application/vnd.code.copymetadata";var FD;let $8=(FD=class extends ft{static get(t){return t.getContribution(n4.ID)}constructor(t,n,r,o,s,a,l,d,u,h){super(),this._logService=r,this._bulkEditService=o,this._clipboardService=s,this._commandService=a,this._configService=l,this._languageFeaturesService=d,this._quickInputService=u,this._progressService=h,this._editor=t;const g=t.getContainerDomNode();this._register(wt(g,"copy",m=>this.handleCopy(m))),this._register(wt(g,"cut",m=>this.handleCopy(m))),this._register(wt(g,"paste",m=>this.handlePaste(m),!0)),this._pasteProgressManager=this._register(new W1e("pasteIntoEditor",t,n)),this._postPasteWidgetManager=this._register(n.createInstance(X1e,"pasteIntoEditor",t,Wtt,{id:GDn,label:U(918,"Show paste options...")},()=>n4._configureDefaultAction?[n4._configureDefaultAction]:[]))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}async pasteAs(t){this._logService.trace("CopyPasteController.pasteAs"),this._editor.focus();try{this._logService.trace("Before calling editor.action.clipboardPasteAction"),this._pasteAsActionContext={preferred:t},await this._commandService.executeCommand("editor.action.clipboardPasteAction")}finally{this._pasteAsActionContext=void 0}}clearWidgets(){this._postPasteWidgetManager.clear()}isPasteAsEnabled(){return this._editor.getOption(97).enabled}async finishedPaste(){await this._currentPasteOperation}handleCopy(t){var A,p,b,w;let n=null;if(t.clipboardData){const[O,y]=hD.getTextData(t.clipboardData),C=y||ay.INSTANCE.get(O);n=(C==null?void 0:C.id)||null,this._logService.trace("CopyPasteController#handleCopy for id : ",n," with text.length : ",O.length)}else this._logService.trace("CopyPasteController#handleCopy");if(!this._editor.hasTextFocus()||((p=(A=this._clipboardService).clearInternalState)==null||p.call(A),!t.clipboardData||!this.isPasteAsEnabled()))return;const r=this._editor.getModel(),o=this._editor.getSelections();if(!r||!(o!=null&&o.length))return;const s=this._editor.getOption(45);let a=o;const l=o.length===1&&o[0].isEmpty();if(l){if(!s)return;a=[new Ee(a[0].startLineNumber,1,a[0].startLineNumber,1+r.getLineLength(a[0].startLineNumber))]}const d=(b=this._editor._getViewModel())==null?void 0:b.getPlainTextToCopy(o,s,mh),h={multicursorText:Array.isArray(d)?d:null,pasteOnNewLine:l,mode:null},g=this._languageFeaturesService.documentPasteEditProvider.ordered(r).filter(O=>!!O.prepareDocumentPaste);if(!g.length){this.setCopyMetadata(t.clipboardData,{defaultPastePayload:h});return}const m=QDn(t.clipboardData),v=g.flatMap(O=>O.copyMimeTypes??[]),f=n??SI();this.setCopyMetadata(t.clipboardData,{id:f,providerCopyMimeTypes:v,defaultPastePayload:h});const k=g.map(O=>({providerMimeTypes:O.copyMimeTypes,operation:Fd(y=>O.prepareDocumentPaste(r,a,m,y).catch(C=>{console.error(C)}))}));(w=n4._currentCopyOperation)==null||w.operations.forEach(O=>O.operation.cancel()),n4._currentCopyOperation={handle:f,operations:k}}async handlePaste(t){var u,h,g;if(t.clipboardData){const[m,v]=hD.getTextData(t.clipboardData),f=v||ay.INSTANCE.get(m);this._logService.trace("CopyPasteController#handlePaste for id : ",f==null?void 0:f.id)}else this._logService.trace("CopyPasteController#handlePaste");if(!t.clipboardData||!this._editor.hasTextFocus())return;(u=D0.get(this._editor))==null||u.closeMessage(),(h=this._currentPasteOperation)==null||h.cancel(),this._currentPasteOperation=void 0;const n=this._editor.getModel(),r=this._editor.getSelections();if(!(r!=null&&r.length)||!n||this._editor.getOption(104)||!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const o=this.fetchCopyMetadata(t);this._logService.trace("CopyPasteController#handlePaste with metadata : ",o==null?void 0:o.id," and text.length : ",t.clipboardData.getData("text/plain").length);const s=DDn(t.clipboardData);s.delete(lxe);const a=Array.from(t.clipboardData.files).map(m=>m.type),l=[...t.clipboardData.types,...a,...(o==null?void 0:o.providerCopyMimeTypes)??[],ac.uriList],d=this._languageFeaturesService.documentPasteEditProvider.ordered(n).filter(m=>{var f,k;const v=(f=this._pasteAsActionContext)==null?void 0:f.preferred;return v&&!this.providerMatchesPreference(m,v)?!1:(k=m.pasteMimeTypes)==null?void 0:k.some(A=>MOt(A,l))});if(!d.length){(g=this._pasteAsActionContext)!=null&&g.preferred&&(this.showPasteAsNoEditMessage(r,this._pasteAsActionContext.preferred),t.preventDefault(),t.stopImmediatePropagation());return}t.preventDefault(),t.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferred,d,r,s,o):this.doPasteInline(d,r,s,o,t)}showPasteAsNoEditMessage(t,n){var o;const r="only"in n?n.only.value:"preferences"in n?n.preferences.length?n.preferences.map(s=>s.value).join(", "):U(919,"empty"):n.providerId;(o=D0.get(this._editor))==null||o.showMessage(U(920,"No paste edits for '{0}' found",r),t[0].getStartPosition())}doPasteInline(t,n,r,o,s){this._logService.trace("CopyPasteController#doPasteInline");const a=this._editor;if(!a.hasModel())return;const l=new z8(a,3,void 0),d=Fd(async u=>{const h=this._editor;if(!h.hasModel())return;const g=h.getModel(),m=new xt,v=m.add(new ja(u));m.add(l.token.onCancellationRequested(()=>v.cancel()));const f=v.token;try{if(await this.mergeInDataFromCopy(t,r,o,f),f.isCancellationRequested)return;const k=t.filter(b=>this.isSupportedPasteProvider(b,r));if(!k.length||k.length===1&&k[0]instanceof bR)return this.applyDefaultPasteHandler(r,o,f,s);const A={triggerKind:hJ.Automatic},p=await this.getPasteEdits(k,r,g,n,A,f);if(m.add(p),f.isCancellationRequested)return;if(p.edits.length===1&&p.edits[0].provider instanceof bR)return this.applyDefaultPasteHandler(r,o,f,s);if(p.edits.length){const b=h.getOption(97).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(n,{activeEditIndex:this.getInitialActiveEditIndex(g,p.edits),allEdits:p.edits},b,async(w,O)=>{if(!w.provider.resolveDocumentPasteEdit)return w;const y=w.provider.resolveDocumentPasteEdit(w,O),C=new pI,_=await this._pasteProgressManager.showWhile(n[0].getEndPosition(),U(921,"Resolving paste edit for '{0}'. Click to cancel",w.title),YW(Promise.race([C.p,y]),O),{cancel:()=>C.cancel()},0);return _&&(w.insertText=_.insertText,w.additionalEdit=_.additionalEdit),w},f)}await this.applyDefaultPasteHandler(r,o,f,s)}finally{m.dispose(),this._currentPasteOperation===d&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(n[0].getEndPosition(),U(922,"Running paste handlers. Click to cancel and do basic paste"),d,{cancel:async()=>{d.cancel(),!l.token.isCancellationRequested&&await this.applyDefaultPasteHandler(r,o,l.token,s)}}).finally(()=>{l.dispose()}),this._currentPasteOperation=d}showPasteAsPick(t,n,r,o,s){this._logService.trace("CopyPasteController#showPasteAsPick");const a=Fd(async l=>{var m;const d=this._editor;if(!d.hasModel())return;const u=d.getModel(),h=new xt,g=h.add(new z8(d,3,void 0,l));try{if(await this.mergeInDataFromCopy(n,o,s,g.token),g.token.isCancellationRequested)return;let v=n.filter(b=>this.isSupportedPasteProvider(b,o,t));t&&(v=v.filter(b=>this.providerMatchesPreference(b,t)));const f={triggerKind:hJ.PasteAs,only:t&&"only"in t?t.only:void 0};let k=h.add(await this.getPasteEdits(v,o,u,r,f,g.token));if(g.token.isCancellationRequested)return;if(t&&(k={edits:k.edits.filter(b=>"only"in t?t.only.contains(b.kind):"preferences"in t?t.preferences.some(w=>w.contains(b.kind)):t.providerId===b.provider.id),dispose:k.dispose}),!k.edits.length){t&&this.showPasteAsNoEditMessage(r,t);return}let A;if(t)A=k.edits.at(0);else{const b={id:"editor.pasteAs.default",label:U(923,"Configure default paste action"),edit:void 0},w=await this._quickInputService.pick([...k.edits.map(O=>{var y;return{label:O.title,description:(y=O.kind)==null?void 0:y.value,edit:O}}),...n4._configureDefaultAction?[{type:"separator"},{label:n4._configureDefaultAction.label,edit:void 0}]:[]],{placeHolder:U(924,"Select Paste Action")});if(w===b){(m=n4._configureDefaultAction)==null||m.run();return}A=w==null?void 0:w.edit}if(!A)return;const p=WDn(u.uri,r,A);await this._bulkEditService.apply(p,{editor:this._editor})}finally{h.dispose(),this._currentPasteOperation===a&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:U(925,"Running paste handlers")},()=>a)}setCopyMetadata(t,n){this._logService.trace("CopyPasteController#setCopyMetadata new id : ",n.id),t.setData(lxe,JSON.stringify(n))}fetchCopyMetadata(t){if(this._logService.trace("CopyPasteController#fetchCopyMetadata"),!t.clipboardData)return;const n=t.clipboardData.getData(lxe);if(n)try{return JSON.parse(n)}catch{return}const[r,o]=hD.getTextData(t.clipboardData);if(o)return{defaultPastePayload:{mode:o.mode,multicursorText:o.multicursorText??null,pasteOnNewLine:!!o.isFromEmptySelection}}}async mergeInDataFromCopy(t,n,r,o){var s;if(this._logService.trace("CopyPasteController#mergeInDataFromCopy with metadata : ",r==null?void 0:r.id),r!=null&&r.id&&((s=n4._currentCopyOperation)==null?void 0:s.handle)===r.id){const a=n4._currentCopyOperation.operations.filter(d=>t.some(u=>u.pasteMimeTypes.some(h=>MOt(h,d.providerMimeTypes)))).map(d=>d.operation),l=await Promise.all(a);if(o.isCancellationRequested)return;for(const d of l.reverse())if(d)for(const[u,h]of d)n.replace(u,h)}if(!n.has(ac.uriList)){const a=await this._clipboardService.readResources();if(o.isCancellationRequested)return;a.length&&n.append(ac.uriList,Mtt(k3e.create(a)))}}async getPasteEdits(t,n,r,o,s,a){const l=new xt,d=await YW(Promise.all(t.map(async h=>{var g,m;try{const v=await((g=h.provideDocumentPasteEdits)==null?void 0:g.call(h,r,o,n,s,a));return v&&l.add(v),(m=v==null?void 0:v.edits)==null?void 0:m.map(f=>({...f,provider:h}))}catch(v){C2(v)||console.error(v);return}})),a),u=P3(d??[]).flat().filter(h=>!s.only||s.only.contains(h.kind));return{edits:VDn(u),dispose:()=>l.dispose()}}async applyDefaultPasteHandler(t,n,r,o){const s=t.get(ac.text)??t.get("text"),a=await(s==null?void 0:s.asString())??"";if(r.isCancellationRequested)return;const l={clipboardEvent:o,text:a,pasteOnNewLine:(n==null?void 0:n.defaultPastePayload.pasteOnNewLine)??!1,multicursorText:(n==null?void 0:n.defaultPastePayload.multicursorText)??null,mode:null};this._logService.trace("CopyPasteController#applyDefaultPasteHandler for id : ",n==null?void 0:n.id),this._editor.trigger("keyboard","paste",l)}isSupportedPasteProvider(t,n,r){var o;return(o=t.pasteMimeTypes)!=null&&o.some(s=>n.matches(s))?!r||this.providerMatchesPreference(t,r):!1}providerMatchesPreference(t,n){return"only"in n?t.providedPasteEditKinds.some(r=>n.only.contains(r)):"preferences"in n?n.preferences.some(r=>n.preferences.some(o=>o.contains(r))):t.id===n.providerId}getInitialActiveEditIndex(t,n){const r=this._configService.getValue(evo,{resource:t.uri});for(const o of Array.isArray(r)?r:[]){const s=new El(o),a=n.findIndex(l=>s.contains(l.kind));if(a>=0)return a}return 0}},n4=FD,FD.ID="editor.contrib.copyPasteActionController",FD);$8=n4=J2o([GC(1,Yn),GC(2,va),GC(3,Yie),GC(4,U0),GC(5,ba),GC(6,ar),GC(7,Nn),GC(8,Rf),GC(9,cQn)],$8);const CR="9_cutcopypaste",tvo=v3||document.queryCommandSupported("cut"),YDn=v3||document.queryCommandSupported("copy"),nvo=typeof navigator.clipboard>"u"||k1?document.queryCommandSupported("paste"):!0;function Vtt(e){return e.register(),e}const ivo=tvo?Vtt(new Xz({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:v3?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(813,"Cu&&t"),order:1},{menuId:Wn.EditorContext,group:CR,title:U(814,"Cut"),when:$e.writable,order:1},{menuId:Wn.CommandPalette,group:"",title:U(815,"Cut"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(816,"Cut"),when:$e.writable,order:1}]})):void 0,rvo=YDn?Vtt(new Xz({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:v3?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(817,"&&Copy"),order:2},{menuId:Wn.EditorContext,group:CR,title:U(818,"Copy"),order:2},{menuId:Wn.CommandPalette,group:"",title:U(819,"Copy"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(820,"Copy"),order:2}]})):void 0;Iu.appendMenuItem(Wn.MenubarEditMenu,{submenu:Wn.MenubarCopy,title:_t(825,"Copy As"),group:"2_ccp",order:3});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextCopy,title:_t(826,"Copy As"),group:CR,order:3});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextShare,title:_t(827,"Share"),group:"11_share",order:-1,when:Ft.and(Ft.notEquals("resourceScheme","output"),$e.editorTextFocus)});Iu.appendMenuItem(Wn.ExplorerContext,{submenu:Wn.ExplorerContextShare,title:_t(828,"Share"),group:"11_share",order:-1});const cxe=nvo?Vtt(new Xz({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:v3?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:Wn.MenubarEditMenu,group:"2_ccp",title:U(821,"&&Paste"),order:4},{menuId:Wn.EditorContext,group:CR,title:U(822,"Paste"),when:$e.writable,order:4},{menuId:Wn.CommandPalette,group:"",title:U(823,"Paste"),order:1},{menuId:Wn.SimpleEditorContext,group:CR,title:U(824,"Paste"),when:$e.writable,order:4}]})):void 0;class ovo extends Bn{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:_t(829,"Copy with Syntax Highlighting"),precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,weight:100}})}run(t,n){const r=t.get(va);r.trace("ExecCommandCopyWithSyntaxHighlightingAction#run"),!(!n.hasModel()||!n.getOption(45)&&n.getSelection().isEmpty())&&(HNe.forceCopyWithSyntaxHighlighting=!0,n.focus(),r.trace("ExecCommandCopyWithSyntaxHighlightingAction (before execCommand copy)"),n.getContainerDomNode().ownerDocument.execCommand("copy"),r.trace("ExecCommandCopyWithSyntaxHighlightingAction (after execCommand copy)"),HNe.forceCopyWithSyntaxHighlighting=!1)}}function ZDn(e,t){e&&(e.addImplementation(1e4,"code-editor",(n,r)=>{const o=n.get(va);o.trace("registerExecCommandImpl (addImplementation code-editor for : ",t,")");const s=n.get(yo).getFocusedCodeEditor();if(s&&s.hasTextFocus()){const a=s.getOption(45),l=s.getSelection();return l&&l.isEmpty()&&!a||(s.getOption(170)&&t==="cut"?(VOt(s),o.trace("registerExecCommandImpl (before execCommand copy)"),s.getContainerDomNode().ownerDocument.execCommand("copy"),s.trigger(void 0,"cut",void 0),o.trace("registerExecCommandImpl (after execCommand copy)")):(VOt(s),o.trace("registerExecCommandImpl (before execCommand "+t+")"),s.getContainerDomNode().ownerDocument.execCommand(t),o.trace("registerExecCommandImpl (after execCommand "+t+")"))),!0}return!1}),e.addImplementation(0,"generic-dom",(n,r)=>{const o=n.get(va);return o.trace("registerExecCommandImpl (addImplementation generic-dom for : ",t,")"),o.trace("registerExecCommandImpl (before execCommand "+t+")"),Eie().execCommand(t),o.trace("registerExecCommandImpl (after execCommand "+t+")"),!0}))}function VOt(e){if(e.getOption(170)){const n=zet.get(e.getId());n&&n.onWillCopy()}}ZDn(ivo,"cut");ZDn(rvo,"copy");cxe&&(cxe.addImplementation(1e4,"code-editor",(e,t)=>{const n=e.get(va);n.trace("registerExecCommandImpl (addImplementation code-editor for : paste)");const r=e.get(yo),o=e.get(U0),s=e.get(Nf),a=e.get(k2o),l=r.getFocusedCodeEditor();if(l&&l.hasModel()&&l.hasTextFocus()){if(l.getOption(170)){const g=zet.get(l.getId());g&&g.onWillPaste()}const u=vu.create(!0);n.trace("registerExecCommandImpl (before triggerPaste)");const h=o.triggerPaste(vs().vscodeWindowId);return h?(n.trace("registerExecCommandImpl (triggerPaste defined)"),h.then(async()=>{var g;if(n.trace("registerExecCommandImpl (after triggerPaste)"),a.quality!=="stable"){const m=u.elapsed();s.publicLog2("editorAsyncPaste",{duration:m})}return((g=$8.get(l))==null?void 0:g.finishedPaste())??Promise.resolve()})):(n.trace("registerExecCommandImpl (triggerPaste undefined)"),qy?(n.trace("registerExecCommandImpl (Paste handling on web)"),(async()=>{const g=await o.readText();if(g!==""){const m=ay.INSTANCE.get(g);let v=!1,f=null,k=null;m&&(v=l.getOption(45)&&!!m.isFromEmptySelection,f=typeof m.multicursorText<"u"?m.multicursorText:null,k=m.mode),n.trace("registerExecCommandImpl (clipboardText.length : ",g.length," id : ",m==null?void 0:m.id,")"),l.trigger("keyboard","paste",{text:g,pasteOnNewLine:v,multicursorText:f,mode:k})}})()):!0)}return!1}),cxe.addImplementation(0,"generic-dom",(e,t)=>(e.get(va).trace("registerExecCommandImpl (addImplementation generic-dom for : paste)"),e.get(U0).triggerPaste(vs().vscodeWindowId)??!1)));YDn&&un(ovo);const v3e=Object.freeze({id:"editor",order:5,type:"object",title:U(147,"Editor"),scope:6}),G1e={...v3e,properties:{"editor.tabSize":{type:"number",default:jh.tabSize,minimum:1,maximum:100,markdownDescription:U(148,"The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:U(149,'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:jh.insertSpaces,markdownDescription:U(150,"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:jh.detectIndentation,markdownDescription:U(151,"Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:jh.trimAutoWhitespace,description:U(152,"Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:jh.largeFileOptimizations,description:U(153,"Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[U(154,"Turn off Word Based Suggestions."),U(155,"Only suggest words from the active document."),U(156,"Suggest words from all open documents of the same language."),U(157,"Suggest words from all open documents.")],description:U(158,"Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[U(159,"Semantic highlighting enabled for all color themes."),U(160,"Semantic highlighting disabled for all color themes."),U(161,"Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:U(162,"Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:U(163,"Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:U(164,"Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!0,description:U(165,"Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:U(166,"Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:U(167,"Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.experimental.treeSitterTelemetry":{type:"boolean",default:!1,markdownDescription:U(168,"Controls whether tree sitter parsing should be turned on and telemetry collected. Setting `#editor.experimental.preferTreeSitter#` for specific languages will take precedence."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.css":{type:"boolean",default:!1,markdownDescription:U(169,"Controls whether tree sitter parsing should be turned on for css. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for css."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.typescript":{type:"boolean",default:!1,markdownDescription:U(170,"Controls whether tree sitter parsing should be turned on for typescript. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for typescript."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.ini":{type:"boolean",default:!1,markdownDescription:U(171,"Controls whether tree sitter parsing should be turned on for ini. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for ini."),tags:["experimental"],experiment:{mode:"auto"}},"editor.experimental.preferTreeSitter.regex":{type:"boolean",default:!1,markdownDescription:U(172,"Controls whether tree sitter parsing should be turned on for regex. This will take precedence over `#editor.experimental.treeSitterTelemetry#` for regex."),tags:["experimental"],experiment:{mode:"auto"}},"editor.language.brackets":{type:["array","null"],default:null,description:U(173,"Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:U(174,"The opening bracket character or string sequence.")},{type:"string",description:U(175,"The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:U(176,"Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:U(177,"The opening bracket character or string sequence.")},{type:"string",description:U(178,"The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:Oh.maxComputationTime,description:U(179,"Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:Oh.maxFileSize,description:U(180,"Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:Oh.renderSideBySide,description:U(181,"Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:Oh.renderSideBySideInlineBreakpoint,description:U(182,"If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:Oh.useInlineViewWhenSpaceIsLimited,description:U(183,"If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:Oh.renderMarginRevertIcon,description:U(184,"When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.renderGutterMenu":{type:"boolean",default:Oh.renderGutterMenu,description:U(185,"When enabled, the diff editor shows a special gutter for revert and stage actions.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:Oh.ignoreTrimWhitespace,description:U(186,"When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:Oh.renderIndicators,description:U(187,"Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:Oh.diffCodeLens,description:U(188,"Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:Oh.diffWordWrap,markdownEnumDescriptions:[U(189,"Lines will never wrap."),U(190,"Lines will wrap at the viewport width."),U(191,"Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:Oh.diffAlgorithm,markdownEnumDescriptions:[U(192,"Uses the legacy diffing algorithm."),U(193,"Uses the advanced diffing algorithm.")]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:Oh.hideUnchangedRegions.enabled,markdownDescription:U(194,"Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:Oh.hideUnchangedRegions.revealLineCount,markdownDescription:U(195,"Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:Oh.hideUnchangedRegions.minimumLineCount,markdownDescription:U(196,"Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:Oh.hideUnchangedRegions.contextLineCount,markdownDescription:U(197,"Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:Oh.experimental.showMoves,markdownDescription:U(198,"Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:Oh.experimental.showEmptyDecorations,description:U(199,"Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")},"diffEditor.experimental.useTrueInlineView":{type:"boolean",default:Oh.experimental.useTrueInlineView,description:U(200,"If enabled and the editor uses the inline view, word changes are rendered inline.")}}};function svo(e){return typeof e.type<"u"||typeof e.anyOf<"u"}for(const e of fN){const t=e.schema;if(typeof t<"u")if(svo(t))G1e.properties[`editor.${e.name}`]=t;else for(const n in t)Object.hasOwnProperty.call(t,n)&&(G1e.properties[n]=t[n])}let jle=null;function qDn(){return jle===null&&(jle=Object.create(null),Object.keys(G1e.properties).forEach(e=>{jle[e]=!0})),jle}function avo(e){return qDn()[`editor.${e}`]||!1}function lvo(e){return qDn()[`diffEditor.${e}`]||!1}const cvo=Ql.as(F3.Configuration);cvo.registerConfiguration(G1e);const Ma=new class{constructor(){this.QuickFix=new El("quickfix"),this.Refactor=new El("refactor"),this.RefactorExtract=this.Refactor.append("extract"),this.RefactorInline=this.Refactor.append("inline"),this.RefactorMove=this.Refactor.append("move"),this.RefactorRewrite=this.Refactor.append("rewrite"),this.Notebook=new El("notebook"),this.Source=new El("source"),this.SourceOrganizeImports=this.Source.append("organizeImports"),this.SourceFixAll=this.Source.append("fixAll"),this.SurroundWith=this.Refactor.append("surround")}};var j0;(function(e){e.Refactor="refactor",e.RefactorPreview="refactor preview",e.Lightbulb="lightbulb",e.Default="other (default)",e.SourceAction="source action",e.QuickFix="quick fix action",e.FixAll="fix all",e.OrganizeImports="organize imports",e.AutoFix="auto fix",e.QuickFixHover="quick fix hover window",e.OnSave="save participants",e.ProblemsView="problems view"})(j0||(j0={}));function dvo(e,t){return!(e.include&&!e.include.intersects(t)||e.excludes&&e.excludes.some(n=>KDn(t,n,e.include))||!e.includeSourceActions&&Ma.Source.contains(t))}function uvo(e,t){const n=t.kind?new El(t.kind):void 0;return!(e.include&&(!n||!e.include.contains(n))||e.excludes&&n&&e.excludes.some(r=>KDn(n,r,e.include))||!e.includeSourceActions&&n&&Ma.Source.contains(n)||e.onlyIncludePreferredActions&&!t.isPreferred)}function KDn(e,t,n){return!(!t.contains(e)||n&&t.contains(n))}class _O{static fromUser(t,n){return!t||typeof t!="object"?new _O(n.kind,n.apply,!1):new _O(_O.getKindFromUser(t,n.kind),_O.getApplyFromUser(t,n.apply),_O.getPreferredUser(t))}static getApplyFromUser(t,n){switch(typeof t.apply=="string"?t.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return n}}static getKindFromUser(t,n){return typeof t.kind=="string"?new El(t.kind):n}static getPreferredUser(t){return typeof t.preferred=="boolean"?t.preferred:!1}constructor(t,n,r){this.kind=t,this.apply=n,this.preferred=r}}class hvo{constructor(t,n,r){this.action=t,this.provider=n,this.highlightRange=r}async resolve(t){var n;if((n=this.provider)!=null&&n.resolveCodeAction&&!this.action.edit){let r;try{r=await this.provider.resolveCodeAction(this.action,t)}catch(o){Nc(o)}r&&(this.action.edit=r.edit)}return this}}const JDn="editor.action.codeAction",ztt="editor.action.quickFix",eBn="editor.action.autoFix",tBn="editor.action.refactor",nBn="editor.action.sourceAction",Mje="editor.action.organizeImports",Pje="editor.action.fixAll",fvo=1e3;class TZ extends ft{static codeActionsPreferredComparator(t,n){return t.isPreferred&&!n.isPreferred?-1:!t.isPreferred&&n.isPreferred?1:0}static codeActionsComparator({action:t},{action:n}){return t.isAI&&!n.isAI?1:!t.isAI&&n.isAI?-1:yg(t.diagnostics)?yg(n.diagnostics)?TZ.codeActionsPreferredComparator(t,n):-1:yg(n.diagnostics)?1:TZ.codeActionsPreferredComparator(t,n)}constructor(t,n,r){super(),this.documentation=n,this._register(r),this.allActions=[...t].sort(TZ.codeActionsComparator),this.validActions=this.allActions.filter(({action:o})=>!o.disabled)}get hasAutoFix(){return this.validActions.some(({action:t})=>!!t.kind&&Ma.QuickFix.contains(new El(t.kind))&&!!t.isPreferred)}get hasAIFix(){return this.validActions.some(({action:t})=>!!t.isAI)}get allAIFixes(){return this.validActions.every(({action:t})=>!!t.isAI)}}const zOt={actions:[],documentation:void 0};async function ON(e,t,n,r,o,s){var k;const a=r.filter||{},l={...a,excludes:[...a.excludes||[],Ma.Notebook]},d={only:(k=a.include)==null?void 0:k.value,trigger:r.type},u=new Ntt(t,s),h=r.type===2,g=gvo(e,t,h?l:a),m=new xt,v=g.map(async A=>{const p=setTimeout(()=>o.report(A),1250);try{const b=await A.provideCodeActions(t,n,d,u.token);if(u.token.isCancellationRequested)return b==null||b.dispose(),zOt;b&&m.add(b);const w=((b==null?void 0:b.actions)||[]).filter(y=>y&&uvo(a,y)),O=kvo(A,w,a.include);return{actions:w.map(y=>new hvo(y,A)),documentation:O}}catch(b){if(C2(b))throw b;return Nc(b),zOt}finally{clearTimeout(p)}}),f=e.onDidChange(()=>{const A=e.all(t);Na(A,g)||u.cancel()});try{const A=await Promise.all(v),p=A.map(O=>O.actions).flat(),b=[...P3(A.map(O=>O.documentation)),...mvo(e,t,r,p)],w=new TZ(p,b,m);return m.add(w),w}catch(A){throw m.dispose(),A}finally{f.dispose(),u.dispose()}}function gvo(e,t,n){return e.all(t).filter(r=>r.providedCodeActionKinds?r.providedCodeActionKinds.some(o=>dvo(n,new El(o))):!0)}function*mvo(e,t,n,r){var o,s,a;if(t&&r.length)for(const l of e.all(t))l._getAdditionalMenuItems&&(yield*(a=l._getAdditionalMenuItems)==null?void 0:a.call(l,{trigger:n.type,only:(s=(o=n.filter)==null?void 0:o.include)==null?void 0:s.value},r.map(d=>d.action)))}function kvo(e,t,n){if(!e.documentation)return;const r=e.documentation.map(o=>({kind:new El(o.kind),command:o.command}));if(n){let o;for(const s of r)s.kind.contains(n)&&(o?o.kind.contains(s.kind)&&(o=s):o=s);if(o)return o==null?void 0:o.command}for(const o of t)if(o.kind){for(const s of r)if(s.kind.contains(new El(o.kind)))return s.command}}var p9;(function(e){e.OnSave="onSave",e.FromProblemsView="fromProblemsView",e.FromCodeActions="fromCodeActions",e.FromAILightbulb="fromAILightbulb",e.FromProblemsHover="fromProblemsHover"})(p9||(p9={}));async function vvo(e,t,n,r,o=Er.None){var h,g;const s=e.get(Yie),a=e.get(ba),l=e.get(Nf),d=e.get(ic),u=e.get(pL);if(l.publicLog2("codeAction.applyCodeAction",{codeActionTitle:t.action.title,codeActionKind:t.action.kind,codeActionIsPreferred:!!t.action.isPreferred,reason:n}),u.playSignal(nm.codeActionTriggered),await t.resolve(o),!o.isCancellationRequested&&!((h=t.action.edit)!=null&&h.edits.length&&!(await s.apply(t.action.edit,{editor:r==null?void 0:r.editor,label:t.action.title,quotableLabel:t.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:n!==p9.OnSave,showPreview:r==null?void 0:r.preview,reason:Af.codeAction({kind:t.action.kind,providerId:r3e.fromExtensionId((g=t.provider)==null?void 0:g.extensionId)})})).isApplied)){if(t.action.command)try{await a.executeCommand(t.action.command.id,...t.action.command.arguments||[])}catch(m){const v=Avo(m);d.error(typeof v=="string"?v:U(830,"An unknown error occurred while applying the code action"))}setTimeout(()=>u.playSignal(nm.codeActionApplied),fvo)}}function Avo(e){return typeof e=="string"?e:e instanceof Error&&typeof e.message=="string"?e.message:void 0}uo.registerCommand("_executeCodeActionProvider",async function(e,t,n,r,o){if(!(t instanceof vi))throw Gv();const{codeActionProvider:s}=e.get(Nn),a=e.get(ml).getModel(t);if(!a)throw Gv();const l=Qn.isISelection(n)?Qn.liftSelection(n):Ee.isIRange(n)?a.validateRange(n):void 0;if(!l)throw Gv();const d=typeof r=="string"?new El(r):void 0,u=await ON(s,a,l,{type:1,triggerAction:j0.Default,filter:{includeSourceActions:!0,include:d}},qb.None,Er.None),h=[],g=Math.min(u.validActions.length,typeof o=="number"?o:0);for(let m=0;mm.action)}finally{setTimeout(()=>u.dispose(),100)}});var xl;(function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"})(xl||(xl={}));(function(e){function t(d,u){return u-d}e.compare=t;const n=Object.create(null);n[e.Error]=U(1732,"Error"),n[e.Warning]=U(1733,"Warning"),n[e.Info]=U(1734,"Info");function r(d){return n[d]||""}e.toString=r;const o=Object.create(null);o[e.Error]=U(1735,"Errors"),o[e.Warning]=U(1736,"Warnings"),o[e.Info]=U(1737,"Infos");function s(d){return o[d]||""}e.toStringPlural=s;function a(d){switch(d){case Sl.Error:return e.Error;case Sl.Warning:return e.Warning;case Sl.Info:return e.Info;case Sl.Ignore:return e.Hint}}e.fromSeverity=a;function l(d){switch(d){case e.Error:return Sl.Error;case e.Warning:return Sl.Warning;case e.Info:return Sl.Info;case e.Hint:return Sl.Ignore}}e.toSeverity=l})(xl||(xl={}));var Y1e;(function(e){const t="";function n(o){return r(o,!0)}e.makeKey=n;function r(o,s){const a=[t];return o.source?a.push(o.source.replace("¦","\\¦")):a.push(t),o.code?typeof o.code=="string"?a.push(o.code.replace("¦","\\¦")):a.push(o.code.value.replace("¦","\\¦")):a.push(t),o.severity!==void 0&&o.severity!==null?a.push(xl.toString(o.severity)):a.push(t),o.message&&s?a.push(o.message.replace("¦","\\¦")):a.push(t),o.startLineNumber!==void 0&&o.startLineNumber!==null?a.push(o.startLineNumber.toString()):a.push(t),o.startColumn!==void 0&&o.startColumn!==null?a.push(o.startColumn.toString()):a.push(t),o.endLineNumber!==void 0&&o.endLineNumber!==null?a.push(o.endLineNumber.toString()):a.push(t),o.endColumn!==void 0&&o.endColumn!==null?a.push(o.endColumn.toString()):a.push(t),a.push(t),a.join("¦")}e.makeKeyOptionalMessage=r})(Y1e||(Y1e={}));const nC=Cr("markerService");var pvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},bvo=function(e,t){return function(n,r){t(n,r,e)}},Fje,ND;let Nje=(ND=class{constructor(t){this.keybindingService=t}getResolver(){const t=new zh(()=>this.keybindingService.getKeybindings().filter(n=>Fje.codeActionCommands.indexOf(n.command)>=0).filter(n=>n.resolvedKeybinding).map(n=>{let r=n.commandArgs;return n.command===Mje?r={kind:Ma.SourceOrganizeImports.value}:n.command===Pje&&(r={kind:Ma.SourceFixAll.value}),{resolvedKeybinding:n.resolvedKeybinding,..._O.fromUser(r,{kind:El.None,apply:"never"})}}));return n=>{if(n.kind){const r=this.bestKeybindingForCodeAction(n,t.value);return r==null?void 0:r.resolvedKeybinding}}}bestKeybindingForCodeAction(t,n){if(!t.kind)return;const r=new El(t.kind);return n.filter(o=>o.kind.contains(r)).filter(o=>o.preferred?t.isPreferred:!0).reduceRight((o,s)=>o?o.kind.contains(s.kind)?s:o:s,void 0)}},Fje=ND,ND.codeActionCommands=[tBn,JDn,nBn,Mje,Pje],ND);Nje=Fje=pvo([bvo(0,Do)],Nje);Ve("symbolIcon.arrayForeground",Pr,U(1495,"The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.booleanForeground",Pr,U(1496,"The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1497,"The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.colorForeground",Pr,U(1498,"The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.constantForeground",Pr,U(1499,"The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1500,"The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1501,"The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1502,"The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U(1503,"The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1504,"The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.fileForeground",Pr,U(1505,"The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.folderForeground",Pr,U(1506,"The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1507,"The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1508,"The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.keyForeground",Pr,U(1509,"The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.keywordForeground",Pr,U(1510,"The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U(1511,"The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.moduleForeground",Pr,U(1512,"The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.namespaceForeground",Pr,U(1513,"The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.nullForeground",Pr,U(1514,"The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.numberForeground",Pr,U(1515,"The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.objectForeground",Pr,U(1516,"The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.operatorForeground",Pr,U(1517,"The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.packageForeground",Pr,U(1518,"The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.propertyForeground",Pr,U(1519,"The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.referenceForeground",Pr,U(1520,"The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.snippetForeground",Pr,U(1521,"The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.stringForeground",Pr,U(1522,"The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.structForeground",Pr,U(1523,"The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.textForeground",Pr,U(1524,"The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.typeParameterForeground",Pr,U(1525,"The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.unitForeground",Pr,U(1526,"The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));Ve("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U(1527,"The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const iBn=Object.freeze({kind:El.Empty,title:U(866,"More Actions...")}),wvo=Object.freeze([{kind:Ma.QuickFix,title:U(867,"Quick Fix")},{kind:Ma.RefactorExtract,title:U(868,"Extract"),icon:zt.wrench},{kind:Ma.RefactorInline,title:U(869,"Inline"),icon:zt.wrench},{kind:Ma.RefactorRewrite,title:U(870,"Rewrite"),icon:zt.wrench},{kind:Ma.RefactorMove,title:U(871,"Move"),icon:zt.wrench},{kind:Ma.SurroundWith,title:U(872,"Surround With"),icon:zt.surroundWith},{kind:Ma.Source,title:U(873,"Source Action"),icon:zt.symbolFile},iBn]);function Ovo(e,t,n){if(!t)return e.map(s=>{var a;return{kind:"action",item:s,group:iBn,disabled:!!s.action.disabled,label:s.action.disabled||s.action.title,canPreview:!!((a=s.action.edit)!=null&&a.edits.length)}});const r=wvo.map(s=>({group:s,actions:[]}));for(const s of e){const a=s.action.kind?new El(s.action.kind):El.None;for(const l of r)if(l.group.kind.contains(a)){l.actions.push(s);break}}const o=[];for(const s of r)if(s.actions.length){o.push({kind:"header",group:s.group});for(const a of s.actions){const l=s.group;o.push({kind:"action",item:a,group:a.action.isAI?{title:l.title,kind:l.kind,icon:zt.sparkle}:l,label:a.action.title,disabled:!!a.action.disabled,keybinding:n(a.action)})}}return o}const rBn=new yn("supportedCodeAction",""),HOt="_typescript.applyFixAllCodeAction";class yvo extends ft{constructor(t,n,r,o=250){super(),this._editor=t,this._markerService=n,this._signalChange=r,this._delay=o,this._autoTriggerTimer=this._register(new I0),this._register(this._markerService.onMarkerChanged(s=>this._onMarkerChanges(s))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(t){const n=this._getRangeOfSelectionUnlessWhitespaceEnclosed(t);this._signalChange(n?{trigger:t,selection:n}:void 0)}_onMarkerChanges(t){const n=this._editor.getModel();n&&t.some(r=>C6(r,n.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:j0.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(t){if(!this._editor.hasModel())return;const n=this._editor.getSelection();if(t.type===1)return n;const r=this._editor.getOption(73).enabled;if(r!==O4.Off){{if(r===O4.On)return n;if(r===O4.OnCode){if(!n.isEmpty())return n;const s=this._editor.getModel(),{lineNumber:a,column:l}=n.getPosition(),d=s.getLineContent(a);if(d.length===0)return;if(l===1){if(/\s/.test(d[0]))return}else if(l===s.getLineMaxColumn(a)){if(/\s/.test(d[d.length-1]))return}else if(/\s/.test(d[l-2])&&/\s/.test(d[l-1]))return}}return n}}}var TT;(function(e){e.Empty={type:0};class t{constructor(r,o,s){this.trigger=r,this.position=o,this._cancellablePromise=s,this.type=1,this.actions=s.catch(a=>{if(C2(a))return Uje;throw a})}cancel(){this._cancellablePromise.cancel()}}e.Triggered=t})(TT||(TT={}));const Uje=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class Cvo extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._registry=n,this._markerService=r,this._progressService=s,this._configurationService=a,this._codeActionOracle=this._register(new ts),this._state=TT.Empty,this._onDidChangeState=this._register(new at),this.onDidChangeState=this._onDidChangeState.event,this.codeActionsDisposable=this._register(new ts),this._disposed=!1,this._supportedCodeActions=rBn.bindTo(o),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._register(this._editor.onDidChangeConfiguration(l=>{l.hasChanged(73)&&this._update()})),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(TT.Empty,!0))}_settingEnabledNearbyQuickfixes(){var n;const t=(n=this._editor)==null?void 0:n.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:t==null?void 0:t.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(TT.Empty);const t=this._editor.getModel();if(t&&this._registry.has(t)&&!this._editor.getOption(104)){const n=this._registry.all(t).flatMap(r=>r.providedCodeActionKinds??[]);this._supportedCodeActions.set(n.join(" ")),this._codeActionOracle.value=new yvo(this._editor,this._markerService,r=>{var d;if(!r){this.setState(TT.Empty);return}const o=r.selection.getStartPosition(),s=Fd(async u=>{var g,m,v,f,k,A,p,b,w,O;if(this._settingEnabledNearbyQuickfixes()&&r.trigger.type===1&&(r.trigger.triggerAction===j0.QuickFix||(m=(g=r.trigger.filter)==null?void 0:g.include)!=null&&m.contains(Ma.QuickFix))){const y=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);this.codeActionsDisposable.value=y;const C=[...y.allActions];if(u.isCancellationRequested)return y.dispose(),Uje;const _=(v=y.validActions)==null?void 0:v.some(L=>L.action.kind&&Ma.QuickFix.contains(new El(L.action.kind))&&!L.action.isAI),S=this._markerService.read({resource:t.uri});if(_){for(const L of y.validActions)(k=(f=L.action.command)==null?void 0:f.arguments)!=null&&k.some(E=>typeof E=="string"&&E.includes(HOt))&&(L.action.diagnostics=[...S.filter(E=>E.relatedInformation)]);return{validActions:y.validActions,allActions:C,documentation:y.documentation,hasAutoFix:y.hasAutoFix,hasAIFix:y.hasAIFix,allAIFixes:y.allAIFixes,dispose:()=>{this.codeActionsDisposable.value=y}}}else if(!_&&S.length>0){const L=r.selection.getPosition();let E=L,T=Number.MAX_VALUE;const D=[...y.validActions];for(const Q of S){const M=Q.endColumn,B=Q.endLineNumber,R=Q.startLineNumber;if(B===L.lineNumber||R===L.lineNumber){E=new it(B,M);const I={type:r.trigger.type,triggerAction:r.trigger.triggerAction,filter:{include:(A=r.trigger.filter)!=null&&A.include?(p=r.trigger.filter)==null?void 0:p.include:Ma.QuickFix},autoApply:r.trigger.autoApply,context:{notAvailableMessage:((b=r.trigger.context)==null?void 0:b.notAvailableMessage)||"",position:E}},F=new Qn(E.lineNumber,E.column,E.lineNumber,E.column),j=await ON(this._registry,t,F,I,qb.None,u);if(u.isCancellationRequested)return j.dispose(),Uje;if(j.validActions.length!==0){for(const W of j.validActions)(O=(w=W.action.command)==null?void 0:w.arguments)!=null&&O.some(H=>typeof H=="string"&&H.includes(HOt))&&(W.action.diagnostics=[...S.filter(H=>H.relatedInformation)]);y.allActions.length===0&&C.push(...j.allActions),Math.abs(L.column-M)B.findIndex(R=>R.action.title===Q.action.title)===M);return P.sort((Q,M)=>Q.action.isPreferred&&!M.action.isPreferred?-1:!Q.action.isPreferred&&M.action.isPreferred||Q.action.isAI&&!M.action.isAI?1:!Q.action.isAI&&M.action.isAI?-1:0),{validActions:P,allActions:C,documentation:y.documentation,hasAutoFix:y.hasAutoFix,hasAIFix:y.hasAIFix,allAIFixes:y.allAIFixes,dispose:()=>{this.codeActionsDisposable.value=y}}}}if(r.trigger.type===1){const y=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);return this.codeActionsDisposable.value=y,y}const h=await ON(this._registry,t,r.selection,r.trigger,qb.None,u);return this.codeActionsDisposable.value=h,h});r.trigger.type===1&&((d=this._progressService)==null||d.showWhile(s,250));const a=new TT.Triggered(r.trigger,o,s);let l=!1;this._state.type===1&&(l=this._state.trigger.type===1&&a.type===1&&a.trigger.type===2&&this._state.position!==a.position),l?setTimeout(()=>{this.setState(a)},500):this.setState(a)},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:j0.Default})}else this._supportedCodeActions.reset()}trigger(t){var n;(n=this._codeActionOracle.value)==null||n.trigger(t),this.codeActionsDisposable.dispose()}setState(t,n){t!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=t,!n&&!this._disposed&&this._onDidChangeState.fire(t))}}var _vo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Svo=function(e,t){return function(n,r){t(n,r,e)}},TF;const $Ot=Da("gutter-lightbulb",zt.lightBulb,U(874,"Icon which spawns code actions menu from the gutter when there is no space in the editor.")),XOt=Da("gutter-lightbulb-auto-fix",zt.lightbulbAutofix,U(875,"Icon which spawns code actions menu from the gutter when there is no space in the editor and a quick fix is available.")),GOt=Da("gutter-lightbulb-sparkle",zt.lightbulbSparkle,U(876,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix is available.")),YOt=Da("gutter-lightbulb-aifix-auto-fix",zt.lightbulbSparkleAutofix,U(877,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available.")),ZOt=Da("gutter-lightbulb-sparkle-filled",zt.sparkleFilled,U(878,"Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available."));var db;(function(e){e.Hidden={type:0};class t{constructor(r,o,s,a){this.actions=r,this.trigger=o,this.editorPosition=s,this.widgetPosition=a,this.type=1}}e.Showing=t})(db||(db={}));var VS;let NJ=(VS=class extends ft{constructor(t,n){super(),this._editor=t,this._keybindingService=n,this._onClick=this._register(new at),this.onClick=this._onClick.event,this._state=db.Hidden,this._gutterState=db.Hidden,this._iconClasses=[],this.lightbulbClasses=["codicon-"+$Ot.id,"codicon-"+YOt.id,"codicon-"+XOt.id,"codicon-"+GOt.id,"codicon-"+ZOt.id],this.gutterDecoration=TF.GUTTER_DECORATION,this._domNode=tn("div.lightBulbWidget"),this._domNode.role="listbox",this._register(Bf.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(r=>{const o=this._editor.getModel();(this.state.type!==1||!o||this.state.editorPosition.lineNumber>=o.getLineCount())&&this.hide(),(this.gutterState.type!==1||!o||this.gutterState.editorPosition.lineNumber>=o.getLineCount())&&this.gutterHide()})),this._register(Pto(this._domNode,r=>{if(this.state.type!==1)return;this._editor.focus(),r.preventDefault();const{top:o,height:s}=Kl(this._domNode),a=this._editor.getOption(75);let l=Math.floor(a/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber{(r.buttons&1)===1&&this.hide()})),this._register(an.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var r,o;this._preferredKbLabel=((r=this._keybindingService.lookupKeybinding(eBn))==null?void 0:r.getLabel())??void 0,this._quickFixKbLabel=((o=this._keybindingService.lookupKeybinding(ztt))==null?void 0:o.getLabel())??void 0,this._updateLightBulbTitleAndIcon()})),this._register(this._editor.onMouseDown(async r=>{if(!r.target.element||!this.lightbulbClasses.some(d=>r.target.element&&r.target.element.classList.contains(d))||this.gutterState.type!==1)return;this._editor.focus();const{top:o,height:s}=Kl(r.target.element),a=this._editor.getOption(75);let l=Math.floor(a/3);this.gutterState.widgetPosition.position!==null&&this.gutterState.widgetPosition.position.lineNumber22,f=y=>y>2&&this._editor.getTopForLineNumber(y)===this._editor.getTopForLineNumber(y-1),k=this._editor.getLineDecorations(l);let A=!1;if(k)for(const y of k){const C=y.options.glyphMarginClassName;if(C&&!this.lightbulbClasses.some(_=>C.includes(_))){A=!0;break}}let p=l,b=1;if(!v){const y=C=>{const _=a.getLineContent(C);return/^\s*$|^\s+/.test(_)||_.length<=b};if(l>1&&!f(l-1)){const C=a.getLineCount(),_=l===C,S=l>1&&y(l-1),L=!_&&y(l+1),E=y(l),T=!L&&!S;if(!L&&!S&&!A)return this.gutterState=new db.Showing(t,n,r,{position:{lineNumber:p,column:b},preference:TF._posPref}),this.renderGutterLightbub(),this.hide();S||_||S&&!E?p-=1:(L||T&&E)&&(p+=1)}else if(l===1&&(l===a.getLineCount()||!y(l+1)&&!y(l)))if(this.gutterState=new db.Showing(t,n,r,{position:{lineNumber:p,column:b},preference:TF._posPref}),A)this.gutterHide();else return this.renderGutterLightbub(),this.hide();else if(l{this._gutterDecorationID=n.addDecoration(new Ee(t,0,t,0),this.gutterDecoration)})}_removeGutterDecoration(t){this._editor.changeDecorations(n=>{n.removeDecoration(t),this._gutterDecorationID=void 0})}_updateGutterDecoration(t,n){this._editor.changeDecorations(r=>{r.changeDecoration(t,new Ee(n,0,n,0)),r.changeDecorationOptions(t,this.gutterDecoration)})}_updateLightbulbTitle(t,n){this.state.type===1&&(n?this.title=U(879,"Run: {0}",this.state.actions.validActions[0].action.title):t&&this._preferredKbLabel?this.title=U(880,"Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel):!t&&this._quickFixKbLabel?this.title=U(881,"Show Code Actions ({0})",this._quickFixKbLabel):t||(this.title=U(882,"Show Code Actions")))}set title(t){this._domNode.title=t}},TF=VS,VS.GUTTER_DECORATION=Gi.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:fi.asClassName(zt.lightBulb),glyphMargin:{position:p3.Left},stickiness:1}),VS.ID="editor.contrib.lightbulbWidget",VS._posPref=[0],VS);NJ=TF=_vo([Svo(1,Do)],NJ);var Lvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},vw=function(e,t){return function(n,r){t(n,r,e)}},QF;const xvo="quickfix-edit-highlight";var Y9;let _R=(Y9=class extends ft{static get(t){return t.getContribution(QF.ID)}constructor(t,n,r,o,s,a,l,d,u,h,g){super(),this._commandService=l,this._configurationService=d,this._actionWidgetService=u,this._instantiationService=h,this._progressService=g,this._activeCodeActions=this._register(new ts),this._showDisabled=!1,this._disposed=!1,this._editor=t,this._model=this._register(new Cvo(this._editor,s.codeActionProvider,n,r,a,d)),this._register(this._model.onDidChangeState(m=>this.update(m))),this._lightBulbWidget=new zh(()=>{const m=this._editor.getContribution(NJ.ID);return m&&this._register(m.onClick(v=>this.showCodeActionsFromLightbulb(v.actions,v))),m}),this._resolver=o.createInstance(Nje),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(t,n){if(t.allAIFixes&&t.validActions.length===1){const r=t.validActions[0],o=r.action.command;o&&o.id==="inlineChat.start"&&o.arguments&&o.arguments.length>=1&&o.arguments[0]&&(o.arguments[0]={...o.arguments[0],autoSend:!1}),await this.applyCodeAction(r,!1,!1,p9.FromAILightbulb);return}await this.showCodeActionList(t,n,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(t,n,r){return this.showCodeActionList(n,r,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(t,n,r,o){var a;if(!this._editor.hasModel())return;(a=D0.get(this._editor))==null||a.closeMessage();const s=this._editor.getPosition();this._trigger({type:1,triggerAction:n,filter:r,autoApply:o,context:{notAvailableMessage:t,position:s}})}_trigger(t){return this._model.trigger(t)}async applyCodeAction(t,n,r,o){const s=this._progressService.show(!0,500);try{await this._instantiationService.invokeFunction(vvo,t,o,{preview:r,editor:this._editor})}finally{n&&this._trigger({type:2,triggerAction:j0.QuickFix,filter:{}}),s.done()}}hideLightBulbWidget(){var t,n;(t=this._lightBulbWidget.rawValue)==null||t.hide(),(n=this._lightBulbWidget.rawValue)==null||n.gutterHide()}async update(t){var o,s,a,l,d;if(t.type!==1){this.hideLightBulbWidget();return}let n;try{n=await t.actions}catch(u){zi(u);return}if(this._disposed)return;const r=this._editor.getSelection();if((r==null?void 0:r.startLineNumber)===t.position.lineNumber)if((o=this._lightBulbWidget.value)==null||o.update(n,t.trigger,t.position),t.trigger.type===1){if((s=t.trigger.filter)!=null&&s.include){const h=this.tryGetValidActionToApply(t.trigger,n);if(h){try{this.hideLightBulbWidget(),await this.applyCodeAction(h,!1,!1,p9.FromCodeActions)}finally{n.dispose()}return}if(t.trigger.context){const g=this.getInvalidActionThatWouldHaveBeenApplied(t.trigger,n);if(g&&g.action.disabled){(a=D0.get(this._editor))==null||a.showMessage(g.action.disabled,t.trigger.context.position),n.dispose();return}}}const u=!!((l=t.trigger.filter)!=null&&l.include);if(t.trigger.context&&(!n.allActions.length||!u&&!n.validActions.length)){(d=D0.get(this._editor))==null||d.showMessage(t.trigger.context.notAvailableMessage,t.trigger.context.position),this._activeCodeActions.value=n,n.dispose();return}this._activeCodeActions.value=n,this.showCodeActionList(n,this.toCoords(t.position),{includeDisabledActions:u,fromLightbulb:!1})}else this._actionWidgetService.isVisible?n.dispose():this._activeCodeActions.value=n}getInvalidActionThatWouldHaveBeenApplied(t,n){if(n.allActions.length&&(t.autoApply==="first"&&n.validActions.length===0||t.autoApply==="ifSingle"&&n.allActions.length===1))return n.allActions.find(({action:r})=>r.disabled)}tryGetValidActionToApply(t,n){if(n.validActions.length&&(t.autoApply==="first"&&n.validActions.length>0||t.autoApply==="ifSingle"&&n.validActions.length===1))return n.validActions[0]}async showCodeActionList(t,n,r){const o=this._editor.createDecorationsCollection(),s=this._editor.getDomNode();if(!s)return;const a=r.includeDisabledActions&&(this._showDisabled||t.validActions.length===0)?t.allActions:t.validActions;if(!a.length)return;const l=it.isIPosition(n)?this.toCoords(n):n,d={onSelect:async(u,h)=>{this.applyCodeAction(u,!0,!!h,r.fromLightbulb?p9.FromAILightbulb:p9.FromCodeActions),this._actionWidgetService.hide(!1),o.clear()},onHide:u=>{var h;(h=this._editor)==null||h.focus(),o.clear()},onHover:async(u,h)=>{var v;if(h.isCancellationRequested)return;let g=!1;const m=u.action.kind;if(m){const f=new El(m);g=[Ma.RefactorExtract,Ma.RefactorInline,Ma.RefactorRewrite,Ma.RefactorMove,Ma.Source].some(A=>A.contains(f))}return{canPreview:g||!!((v=u.action.edit)!=null&&v.edits.length)}},onFocus:u=>{var h,g;if(u&&u.action){const m=u.action.ranges,v=u.action.diagnostics;if(o.clear(),m&&m.length>0){const f=v&&(v==null?void 0:v.length)>1?v.map(k=>({range:k,options:QF.DECORATION})):m.map(k=>({range:k,options:QF.DECORATION}));o.set(f)}else if(v&&v.length>0){const f=v.map(A=>({range:A,options:QF.DECORATION}));o.set(f);const k=v[0];if(k.startLineNumber&&k.startColumn){const A=(g=(h=this._editor.getModel())==null?void 0:h.getWordAtPosition({lineNumber:k.startLineNumber,column:k.startColumn}))==null?void 0:g.word;A3(U(863,"Context: {0} at line {1} and column {2}.",A,k.startLineNumber,k.startColumn))}}}else o.clear()}};this._actionWidgetService.show("codeActionWidget",!0,Ovo(a,this._shouldShowHeaders(),this._resolver.getResolver()),d,l,s,this._getActionBarActions(t,n,r))}toCoords(t){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(t,1),this._editor.render();const n=this._editor.getScrolledVisiblePosition(t),r=Kl(this._editor.getDomNode()),o=r.left+n.left,s=r.top+n.top+n.height;return{x:o,y:s}}_shouldShowHeaders(){var n;const t=(n=this._editor)==null?void 0:n.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:t==null?void 0:t.uri})}_getActionBarActions(t,n,r){if(r.fromLightbulb)return[];const o=t.documentation.map(s=>({id:s.id,label:s.title,tooltip:s.tooltip??"",class:void 0,enabled:!0,run:()=>this._commandService.executeCommand(s.id,...s.arguments??[])}));return r.includeDisabledActions&&t.validActions.length>0&&t.allActions.length!==t.validActions.length&&o.push(this._showDisabled?{id:"hideMoreActions",label:U(864,"Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(t,n,r))}:{id:"showMoreActions",label:U(865,"Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(t,n,r))}),o}},QF=Y9,Y9.ID="editor.contrib.codeActionController",Y9.DECORATION=Gi.register({description:"quickfix-highlight",className:xvo}),Y9);_R=QF=Lvo([vw(1,nC),vw(2,Qi),vw(3,Yn),vw(4,Nn),vw(5,V8),vw(6,ba),vw(7,ar),vw(8,uE),vw(9,Yn),vw(10,V8)],_R);yA((e,t)=>{((o,s)=>{s&&t.addRule(`.monaco-editor ${o} { background-color: ${s}; }`)})(".quickfix-edit-highlight",e.getColor(QS));const r=e.getColor(u9);r&&t.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${l3(e.type)?"dotted":"solid"} ${r}; box-sizing: border-box; }`)});function Kie(e){return Ft.regex(rBn.keys()[0],new RegExp("(\\s|^)"+M0(e.value)+"\\b"))}const Htt={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:U(831,"Kind of the code action to run.")},apply:{type:"string",description:U(832,"Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[U(833,"Always apply the first returned code action."),U(834,"Apply the first returned code action if it is the only one."),U(835,"Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:U(836,"Controls if only preferred code actions should be returned.")}}};function DI(e,t,n,r,o=j0.Default){if(e.hasModel()){const s=_R.get(e);s==null||s.manualTriggerAtCurrentPosition(t,o,n,r)}}class Evo extends Bn{constructor(){super({id:ztt,label:_t(853,"Quick Fix..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),kbOpts:{kbExpr:$e.textInputFocus,primary:2137,weight:100}})}run(t,n){return DI(n,U(837,"No code actions available"),void 0,void 0,j0.QuickFix)}}class Tvo extends $d{constructor(){super({id:JDn,precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:Htt}]}})}runEditorCommand(t,n,r){const o=_O.fromUser(r,{kind:El.Empty,apply:"ifSingle"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(838,"No preferred code actions for '{0}' available",r.kind):U(839,"No code actions for '{0}' available",r.kind):o.preferred?U(840,"No preferred code actions available"):U(841,"No code actions available"),{include:o.kind,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply)}}class Qvo extends Bn{constructor(){super({id:tBn,label:_t(854,"Refactor..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),kbOpts:{kbExpr:$e.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:Ft.and($e.writable,Kie(Ma.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:Htt}]}})}run(t,n,r){const o=_O.fromUser(r,{kind:Ma.Refactor,apply:"never"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(842,"No preferred refactorings for '{0}' available",r.kind):U(843,"No refactorings for '{0}' available",r.kind):o.preferred?U(844,"No preferred refactorings available"):U(845,"No refactorings available"),{include:Ma.Refactor.contains(o.kind)?o.kind:El.None,onlyIncludePreferredActions:o.preferred},o.apply,j0.Refactor)}}class Dvo extends Bn{constructor(){super({id:nBn,label:_t(855,"Source Action..."),precondition:Ft.and($e.writable,$e.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:Ft.and($e.writable,Kie(Ma.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:Htt}]}})}run(t,n,r){const o=_O.fromUser(r,{kind:Ma.Source,apply:"never"});return DI(n,typeof(r==null?void 0:r.kind)=="string"?o.preferred?U(846,"No preferred source actions for '{0}' available",r.kind):U(847,"No source actions for '{0}' available",r.kind):o.preferred?U(848,"No preferred source actions available"):U(849,"No source actions available"),{include:Ma.Source.contains(o.kind)?o.kind:El.None,includeSourceActions:!0,onlyIncludePreferredActions:o.preferred},o.apply,j0.SourceAction)}}class Bvo extends Bn{constructor(){super({id:Mje,label:_t(856,"Organize Imports"),precondition:Ft.and($e.writable,Kie(Ma.SourceOrganizeImports)),kbOpts:{kbExpr:$e.textInputFocus,primary:1581,weight:100},metadata:{description:_t(857,"Organize imports in the current file. Also called 'Optimize Imports' by some tools")}})}run(t,n){return DI(n,U(850,"No organize imports action available"),{include:Ma.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",j0.OrganizeImports)}}class Rvo extends Bn{constructor(){super({id:Pje,label:_t(858,"Fix All"),precondition:Ft.and($e.writable,Kie(Ma.SourceFixAll))})}run(t,n){return DI(n,U(851,"No fix all action available"),{include:Ma.SourceFixAll,includeSourceActions:!0},"ifSingle",j0.FixAll)}}class Ivo extends Bn{constructor(){super({id:eBn,label:_t(859,"Auto Fix..."),precondition:Ft.and($e.writable,Kie(Ma.QuickFix)),kbOpts:{kbExpr:$e.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(t,n){return DI(n,U(852,"No auto fixes available"),{include:Ma.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",j0.AutoFix)}}mo(_R.ID,_R,3);mo(NJ.ID,NJ,4);un(Evo);un(Qvo);un(Dvo);un(Bvo);un(Ivo);un(Rvo);On(new Tvo);Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:6,description:U(860,"Enable/disable showing group headers in the Code Action menu."),default:!0}}});Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:6,description:U(861,"Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});Ql.as(F3.Configuration).registerConfiguration({...v3e,properties:{"editor.codeActions.triggerOnFocusChange":{type:"boolean",scope:6,markdownDescription:U(862,"Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.","`#editor.codeActionsOnSave#`","`#files.autoSave#`","`afterDelay`","`always`"),default:!1}}});const Yve=class Yve{constructor(){this.lenses=[]}dispose(){var t;(t=this._store)==null||t.dispose()}get isDisposed(){var t;return((t=this._store)==null?void 0:t.isDisposed)??!1}add(t,n){AI(t)&&(this._store??(this._store=new xt),this._store.add(t));for(const r of t.lenses)this.lenses.push({symbol:r,provider:n})}};Yve.Empty=new Yve;let kV=Yve;async function oBn(e,t,n){const r=e.ordered(t),o=new Map,s=new kV,a=r.map(async(l,d)=>{o.set(l,d);try{const u=await Promise.resolve(l.provideCodeLenses(t,n));u&&s.add(u,l)}catch(u){Nc(u)}});return await Promise.all(a),n.isCancellationRequested?(s.dispose(),kV.Empty):(s.lenses=s.lenses.sort((l,d)=>l.symbol.range.startLineNumberd.symbol.range.startLineNumber?1:o.get(l.provider)o.get(d.provider)?1:l.symbol.range.startColumnd.symbol.range.startColumn?1:0),s)}uo.registerCommand("_executeCodeLensProvider",function(e,...t){let[n,r]=t;Oo(vi.isUri(n)),Oo(typeof r=="number"||!r);const{codeLensProvider:o}=e.get(Nn),s=e.get(ml).getModel(n);if(!s)throw Gv();const a=[],l=new xt;return oBn(o,s,Er.None).then(d=>{l.add(d);const u=[];for(const h of d.lenses)r==null||h.symbol.command?a.push(h.symbol):r-- >0&&h.provider.resolveCodeLens&&u.push(Promise.resolve(h.provider.resolveCodeLens(s,h.symbol,Er.None)).then(g=>a.push(g||h.symbol)));return Promise.all(u)}).then(()=>a).finally(()=>{setTimeout(()=>l.dispose(),100)})});var Mvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Pvo=function(e,t){return function(n,r){t(n,r,e)}};const sBn=Cr("ICodeLensCache");class qOt{constructor(t,n){this.lineCount=t,this.data=n}}let jje=class{constructor(t){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new wp(20,.75);const n="codelens/cache";RG(Ls,()=>t.remove(n,1));const r="codelens/cache2",o=t.get(r,1,"{}");this._deserialize(o);const s=an.filter(t.onWillSaveState,a=>a.reason===F9.SHUTDOWN);an.once(s)(a=>{t.store(r,this._serialize(),1,1)})}put(t,n){const r=n.lenses.map(a=>{var l;return{range:a.symbol.range,command:a.symbol.command&&{id:"",title:(l=a.symbol.command)==null?void 0:l.title}}}),o=new kV;o.add({lenses:r},this._fakeProvider);const s=new qOt(t.getLineCount(),o);this._cache.set(t.uri.toString(),s)}get(t){const n=this._cache.get(t.uri.toString());return n&&n.lineCount===t.getLineCount()?n.data:void 0}delete(t){this._cache.delete(t.uri.toString())}_serialize(){const t=Object.create(null);for(const[n,r]of this._cache){const o=new Set;for(const s of r.data.lenses)o.add(s.symbol.range.startLineNumber);t[n]={lineCount:r.lineCount,lines:[...o.values()]}}return JSON.stringify(t)}_deserialize(t){try{const n=JSON.parse(t);for(const r in n){const o=n[r],s=[];for(const l of o.lines)s.push({range:new Ee(l,1,l,11)});const a=new kV;a.add({lenses:s},this._fakeProvider),this._cache.set(r,new qOt(o.lineCount,a))}}catch{}}};jje=Mvo([Pvo(0,Bg)],jje);zr(sBn,jje,1);class Fvo{constructor(t,n,r){this.afterColumn=1073741824,this.afterLineNumber=t,this.heightInPx=n,this._onHeight=r,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(t){this._lastHeight===void 0?this._lastHeight=t:this._lastHeight!==t&&(this._lastHeight=t,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}const Sq=class Sq{constructor(t,n){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=t,this._id=`codelens.widget-${Sq._idPool++}`,this.updatePosition(n),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(t,n){this._commands.clear();const r=[];let o=!1;for(let s=0;s{u.symbol.command&&d.push(u.symbol),r.addDecoration({range:u.symbol.range,options:KOt},g=>this._decorationIds[h]=g),l?l=Ee.plusRange(l,u.symbol.range):l=Ee.lift(u.symbol.range)}),this._viewZone=new Fvo(l.startLineNumber-1,s,a),this._viewZoneId=o.addZone(this._viewZone),d.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(d,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new Wje(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(t,n){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],n==null||n.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((t,n)=>{const r=this._editor.getModel().getDecorationRange(t),o=this._data[n].symbol;return!!(r&&Ee.isEmpty(o.range)===r.isEmpty())})}updateCodeLensSymbols(t,n){this._decorationIds.forEach(n.removeDecoration,n),this._decorationIds=[],this._data=t,this._data.forEach((r,o)=>{n.addDecoration({range:r.symbol.range,options:KOt},s=>this._decorationIds[o]=s)})}updateHeight(t,n){this._viewZone.heightInPx=t,n.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(t){if(!this._viewZone.isVisible())return null;for(let n=0;n=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},eyt=function(e,t){return function(n,r){t(n,r,e)}};const CA=Cr("ILanguageFeatureDebounceService");var Z1e;(function(e){const t=new WeakMap;let n=0;function r(o){let s=t.get(o);return s===void 0&&(s=++n,t.set(o,s)),s}e.of=r})(Z1e||(Z1e={}));class Uvo{constructor(t){this._default=t}get(t){return this._default}update(t,n){return this._default}default(){return this._default}}class jvo{constructor(t,n,r,o,s,a){this._logService=t,this._name=n,this._registry=r,this._default=o,this._min=s,this._max=a,this._cache=new wp(50,.7)}_key(t){return t.id+this._registry.all(t).reduce((n,r)=>vbe(Z1e.of(r),n),0)}get(t){const n=this._key(t),r=this._cache.get(n);return r?Zg(r.value,this._min,this._max):this.default()}update(t,n){const r=this._key(t);let o=this._cache.get(r);o||(o=new N1o(6),this._cache.set(r,o));const s=Zg(o.update(n),this._min,this._max);return kbe(t.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${t.uri.toString()} is ${s}ms`),s}_overall(){const t=new YQn;for(const[,n]of this._cache)t.update(n.value);return t.value}default(){const t=this._overall()|0||this._default;return Zg(t,this._min,this._max)}}let Vje=class{constructor(t,n){this._logService=t,this._data=new Map,this._isDev=n.isExtensionDevelopment||!n.isBuilt}for(t,n,r){const o=(r==null?void 0:r.min)??50,s=(r==null?void 0:r.max)??o**2,a=(r==null?void 0:r.key)??void 0,l=`${Z1e.of(t)},${o}${a?","+a:""}`;let d=this._data.get(l);return d||(this._isDev?(this._logService.debug(`[DEBOUNCE: ${n}] is disabled in developed mode`),d=new Uvo(o*1.5)):d=new jvo(this._logService,n,t,this._overallAverage()|0||o*1.5,o,s),this._data.set(l,d)),d}_overallAverage(){const t=new YQn;for(const n of this._data.values())t.update(n.default());return t.value}};Vje=Nvo([eyt(0,va),eyt(1,$tt)],Vje);zr(CA,Vje,1);var Wvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_X=function(e,t){return function(n,r){t(n,r,e)}},Vj;let UJ=(Vj=class{constructor(t,n,r,o,s,a){this._editor=t,this._languageFeaturesService=n,this._commandService=o,this._notificationService=s,this._codeLensCache=a,this._disposables=new xt,this._localToDispose=new xt,this._lenses=[],this._oldCodeLensModels=new xt,this._provideCodeLensDebounce=r.for(n.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=r.for(n.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new Es(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{(l.hasChanged(59)||l.hasChanged(25)||l.hasChanged(24))&&this._updateLensStyle(),l.hasChanged(23)&&this._onModelChange()})),this._disposables.add(n.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var t;this._localDispose(),this._localToDispose.dispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(t=this._currentCodeLensModel)==null||t.dispose()}_getLayoutInfo(){const t=Math.max(1.3,this._editor.getOption(75)/this._editor.getOption(61));let n=this._editor.getOption(25);return(!n||n<5)&&(n=this._editor.getOption(61)*.9|0),{fontSize:n,codeLensHeight:n*t|0}}_updateLensStyle(){const{codeLensHeight:t,fontSize:n}=this._getLayoutInfo(),r=this._editor.getOption(24),o=this._editor.getOption(59),{style:s}=this._editor.getContainerDomNode();s.setProperty("--vscode-editorCodeLens-lineHeight",`${t}px`),s.setProperty("--vscode-editorCodeLens-fontSize",`${n}px`),s.setProperty("--vscode-editorCodeLens-fontFeatureSettings",o.fontFeatureSettings),r&&(s.setProperty("--vscode-editorCodeLens-fontFamily",r),s.setProperty("--vscode-editorCodeLens-fontFamilyDefault",f1.fontFamily)),this._editor.changeViewZones(a=>{for(const l of this._lenses)l.updateHeight(t,a)})}_localDispose(){var t,n,r;(t=this._getCodeLensModelPromise)==null||t.cancel(),this._getCodeLensModelPromise=void 0,(n=this._resolveCodeLensesPromise)==null||n.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(r=this._currentCodeLensModel)==null||r.dispose()}_onModelChange(){this._localDispose();const t=this._editor.getModel();if(!t||!this._editor.getOption(23)||t.isTooLargeForTokenization())return;const n=this._codeLensCache.get(t);if(n&&this._renderCodeLensSymbols(n),!this._languageFeaturesService.codeLensProvider.has(t)){n&&B8(()=>{const o=this._codeLensCache.get(t);n===o&&(this._codeLensCache.delete(t),this._onModelChange())},30*1e3,this._localToDispose);return}for(const o of this._languageFeaturesService.codeLensProvider.all(t))if(typeof o.onDidChange=="function"){const s=o.onDidChange(()=>r.schedule());this._localToDispose.add(s)}const r=new Es(()=>{var s;const o=Date.now();(s=this._getCodeLensModelPromise)==null||s.cancel(),this._getCodeLensModelPromise=Fd(a=>oBn(this._languageFeaturesService.codeLensProvider,t,a)),this._getCodeLensModelPromise.then(a=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=a,this._codeLensCache.put(t,a);const l=this._provideCodeLensDebounce.update(t,Date.now()-o);r.delay=l,this._renderCodeLensSymbols(a),this._resolveCodeLensesInViewportSoon()},zi)},this._provideCodeLensDebounce.get(t));this._localToDispose.add(r),this._localToDispose.add(Hn(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var o;this._editor.changeDecorations(s=>{this._editor.changeViewZones(a=>{const l=[];let d=-1;this._lenses.forEach(h=>{!h.isValid()||d===h.getLineNumber()?l.push(h):(h.update(a),d=h.getLineNumber())});const u=new dxe;l.forEach(h=>{h.dispose(u,a),this._lenses.splice(this._lenses.indexOf(h),1)}),u.commit(s)})}),r.schedule(),this._resolveCodeLensesScheduler.cancel(),(o=this._resolveCodeLensesPromise)==null||o.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorText(()=>{r.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{r.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(o=>{o.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(Hn(()=>{if(this._editor.getModel()){const o=O3.capture(this._editor);this._editor.changeDecorations(s=>{this._editor.changeViewZones(a=>{this._disposeAllLenses(s,a)})}),o.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(o=>{if(o.target.type!==9)return;let s=o.target.element;if((s==null?void 0:s.tagName)==="SPAN"&&(s=s.parentElement),(s==null?void 0:s.tagName)==="A")for(const a of this._lenses){const l=a.getCommand(s);if(l){this._commandService.executeCommand(l.id,...l.arguments||[]).catch(d=>this._notificationService.error(d));break}}})),r.schedule()}_disposeAllLenses(t,n){const r=new dxe;for(const o of this._lenses)o.dispose(r,n);t&&r.commit(t),this._lenses.length=0}_renderCodeLensSymbols(t){if(!this._editor.hasModel())return;const n=this._editor.getModel().getLineCount(),r=[];let o;for(const l of t.lenses){const d=l.symbol.range.startLineNumber;d<1||d>n||(o&&o[o.length-1].symbol.range.startLineNumber===d?o.push(l):(o=[l],r.push(o)))}if(!r.length&&!this._lenses.length)return;const s=O3.capture(this._editor),a=this._getLayoutInfo();this._editor.changeDecorations(l=>{this._editor.changeViewZones(d=>{const u=new dxe;let h=0,g=0;for(;gthis._resolveCodeLensesInViewportSoon())),h++,g++)}for(;hthis._resolveCodeLensesInViewportSoon())),g++;u.commit(l)})}),s.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var a;(a=this._resolveCodeLensesPromise)==null||a.cancel(),this._resolveCodeLensesPromise=void 0;const t=this._editor.getModel();if(!t)return;const n=[],r=[];if(this._lenses.forEach(l=>{const d=l.computeIfNecessary(t);d&&(n.push(d),r.push(l))}),n.length===0){this._oldCodeLensModels.clear();return}const o=Date.now(),s=Fd(l=>{const d=n.map((u,h)=>{const g=new Array(u.length),m=u.map((v,f)=>!v.symbol.command&&typeof v.provider.resolveCodeLens=="function"?Promise.resolve(v.provider.resolveCodeLens(t,v.symbol,l)).then(k=>{g[f]=k},Nc):(g[f]=v.symbol,Promise.resolve(void 0)));return Promise.all(m).then(()=>{!l.isCancellationRequested&&!r[h].isDisposed()&&r[h].updateCommands(g)})});return Promise.all(d)});this._resolveCodeLensesPromise=s,this._resolveCodeLensesPromise.then(()=>{const l=this._resolveCodeLensesDebounce.update(t,Date.now()-o);this._resolveCodeLensesScheduler.delay=l,this._currentCodeLensModel&&this._codeLensCache.put(t,this._currentCodeLensModel),this._oldCodeLensModels.clear(),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},l=>{zi(l),s===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var t;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,(t=this._currentCodeLensModel)!=null&&t.isDisposed?void 0:this._currentCodeLensModel}},Vj.ID="css.editor.codeLens",Vj);UJ=Wvo([_X(1,Nn),_X(2,CA),_X(3,ba),_X(4,ic),_X(5,sBn)],UJ);mo(UJ.ID,UJ,1);un(class extends Bn{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:$e.hasCodeLensProvider,label:_t(884,"Show CodeLens Commands for Current Line")})}async run(t,n){if(!n.hasModel())return;const r=t.get(Rf),o=t.get(ba),s=t.get(ic),a=n.getSelection().positionLineNumber,l=n.getContribution(UJ.ID);if(!l)return;const d=await l.getModel();if(!d)return;const u=[];for(const m of d.lenses)m.symbol.command&&m.symbol.range.startLineNumber===a&&u.push({label:m.symbol.command.title,command:m.symbol.command});if(u.length===0)return;const h=await r.pick(u,{canPickMany:!1,placeHolder:U(883,"Select a command")});if(!h)return;let g=h.command;if(d.isDisposed){const m=await l.getModel(),v=m==null?void 0:m.lenses.find(f=>{var k;return f.symbol.range.startLineNumber===a&&((k=f.symbol.command)==null?void 0:k.title)===g.title});if(!v||!v.symbol.command)return;g=v.symbol.command}try{await o.executeCommand(g.id,...g.arguments||[])}catch(m){s.error(m)}}});const aBn=[];function dH(e){aBn.push(e)}function Vvo(){return aBn.slice(0)}class uxe{constructor(t,n,r,o){this.priority=t,this.range=n,this.initialMousePosX=r,this.initialMousePosY=o,this.type=1}equals(t){return t.type===1&&this.range.equalsRange(t.range)}canAdoptVisibleHover(t,n){return t.type===1&&n.lineNumber===this.range.startLineNumber}}class jG{constructor(t,n,r,o,s,a){this.priority=t,this.owner=n,this.range=r,this.initialMousePosX=o,this.initialMousePosY=s,this.supportsMarkerHover=a,this.type=2}equals(t){return t.type===2&&this.owner===t.owner}canAdoptVisibleHover(t,n){return t.type===2&&this.owner===t.owner}}class SR{constructor(t,n){this.renderedHoverParts=t,this.disposables=n}dispose(){var t;for(const n of this.renderedHoverParts)n.dispose();(t=this.disposables)==null||t.dispose()}}const BI=new class{constructor(){this._participants=[]}register(t){this._participants.push(t)}getAll(){return this._participants}};var lBn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zje=function(e,t){return function(n,r){t(n,r,e)}};let jJ=class{constructor(t){this._editorWorkerService=t}async provideDocumentColors(t,n){return this._editorWorkerService.computeDefaultDocumentColors(t.uri)}provideColorPresentations(t,n,r){const o=n.range,s=n.color,a=s.alpha,l=new Dt(new It(Math.round(255*s.red),Math.round(255*s.green),Math.round(255*s.blue),a)),d=a?Dt.Format.CSS.formatRGBA(l):Dt.Format.CSS.formatRGB(l),u=a?Dt.Format.CSS.formatHSLA(l):Dt.Format.CSS.formatHSL(l),h=a?Dt.Format.CSS.formatHexA(l):Dt.Format.CSS.formatHex(l),g=[];return g.push({label:d,textEdit:{range:o,text:d}}),g.push({label:u,textEdit:{range:o,text:u}}),g.push({label:h,textEdit:{range:o,text:h}}),g}};jJ=lBn([zje(0,S1)],jJ);let Hje=class extends ft{constructor(t,n){super(),this._register(t.colorProvider.register("*",new jJ(n)))}};Hje=lBn([zje(0,Nn),zje(1,S1)],Hje);async function cBn(e,t,n,r="auto"){return Xtt(new zvo,e,t,n,r)}function dBn(e,t,n,r){return Promise.resolve(n.provideColorPresentations(e,t,r))}class zvo{constructor(){}async compute(t,n,r,o){const s=await t.provideDocumentColors(n,r);if(Array.isArray(s))for(const a of s)o.push({colorInfo:a,provider:t});return Array.isArray(s)}}class Hvo{constructor(){}async compute(t,n,r,o){const s=await t.provideDocumentColors(n,r);if(Array.isArray(s))for(const a of s)o.push({range:a.range,color:[a.color.red,a.color.green,a.color.blue,a.color.alpha]});return Array.isArray(s)}}class $vo{constructor(t){this.colorInfo=t}async compute(t,n,r,o){const s=await t.provideColorPresentations(n,this.colorInfo,Er.None);return Array.isArray(s)&&o.push(...s),Array.isArray(s)}}async function Xtt(e,t,n,r,o){let s=!1,a;const l=[],d=t.ordered(n);for(let u=d.length-1;u>=0;u--){const h=d[u];if(o!=="always"&&h instanceof jJ)a=h;else try{await e.compute(h,n,r,l)&&(s=!0)}catch(g){Nc(g)}}return s?l:a&&o!=="never"?(await e.compute(a,n,r,l),l):[]}function uBn(e,t){const{colorProvider:n}=e.get(Nn),r=e.get(ml).getModel(t);if(!r)throw Gv();const o=e.get(ar).getValue("editor.defaultColorDecorators",{resource:t});return{model:r,colorProviderRegistry:n,defaultColorDecoratorsEnablement:o}}var Xvo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},hxe=function(e,t){return function(n,r){t(n,r,e)}},$je;const hBn=Object.create({});var Z9;let vV=(Z9=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._configurationService=n,this._languageFeaturesService=r,this._localToDispose=this._register(new xt),this._decorationsIds=[],this._colorDatas=new Map,this._decoratorLimitReporter=this._register(new Gvo),this._colorDecorationClassRefs=this._register(new xt),this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=this._register(new Yme(this._editor)),this._debounceInformation=o.for(r.colorProvider,"Document Colors",{min:$je.RECOMPUTE_TIME}),this._register(t.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(t.onDidChangeModelLanguage(()=>this.updateColors())),this._register(r.colorProvider.onDidChange(()=>this.updateColors())),this._register(t.onDidChangeConfiguration(s=>{const a=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._defaultColorDecoratorsEnablement=this._editor.getOption(167);const l=a!==this._isColorDecoratorsEnabled||s.hasChanged(27),d=s.hasChanged(167);(l||d)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._defaultColorDecoratorsEnablement=this._editor.getOption(167),this.updateColors()}isEnabled(){const t=this._editor.getModel();if(!t)return!1;const n=t.getLanguageId(),r=this._configurationService.getValue(n);if(r&&typeof r=="object"){const o=r.colorDecorators;if(o&&o.enable!==void 0&&!o.enable)return o.enable}return this._editor.getOption(26)}static get(t){return t.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const t=this._editor.getModel();!t||!this._languageFeaturesService.colorProvider.has(t)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new I0,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(t)))})),this.beginCompute())}async beginCompute(){this._computePromise=Fd(async t=>{const n=this._editor.getModel();if(!n)return[];const r=new vu(!1),o=await cBn(this._languageFeaturesService.colorProvider,n,t,this._defaultColorDecoratorsEnablement);return this._debounceInformation.update(n,r.elapsed()),o});try{const t=await this._computePromise;this.updateDecorations(t),this.updateColorDecorators(t),this._computePromise=null}catch(t){zi(t)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(t){const n=t.map(r=>({range:{startLineNumber:r.colorInfo.range.startLineNumber,startColumn:r.colorInfo.range.startColumn,endLineNumber:r.colorInfo.range.endLineNumber,endColumn:r.colorInfo.range.endColumn},options:Gi.EMPTY}));this._editor.changeDecorations(r=>{this._decorationsIds=r.deltaDecorations(this._decorationsIds,n),this._colorDatas=new Map,this._decorationsIds.forEach((o,s)=>this._colorDatas.set(o,t[s]))})}updateColorDecorators(t){this._colorDecorationClassRefs.clear();const n=[],r=this._editor.getOption(27);for(let s=0;sthis._colorDatas.has(o.id));return r.length===0?null:this._colorDatas.get(r[0].id)}isColorDecoration(t){return this._colorDecoratorIds.has(t)}},$je=Z9,Z9.ID="editor.contrib.colorDetector",Z9.RECOMPUTE_TIME=1e3,Z9);vV=$je=Xvo([hxe(1,ar),hxe(2,Nn),hxe(3,CA)],vV);class Gvo extends ft{constructor(){super(...arguments),this._onDidChange=this._register(new at),this._computed=0,this._limited=!1}update(t,n){(t!==this._computed||n!==this._limited)&&(this._computed=t,this._limited=n,this._onDidChange.fire())}}const fBn="editor.action.showHover",Yvo="editor.action.showDefinitionPreviewHover",Zvo="editor.action.hideHover",qvo="editor.action.scrollUpHover",Kvo="editor.action.scrollDownHover",Jvo="editor.action.scrollLeftHover",eAo="editor.action.scrollRightHover",tAo="editor.action.pageUpHover",nAo="editor.action.pageDownHover",iAo="editor.action.goToTopHover",rAo="editor.action.goToBottomHover",A3e="editor.action.increaseHoverVerbosityLevel",oAo=U(1102,"Increase Hover Verbosity Level"),p3e="editor.action.decreaseHoverVerbosityLevel",sAo=U(1103,"Decrease Hover Verbosity Level"),WJ="editor.action.inlineSuggest.commit",gBn="editor.action.inlineSuggest.showPrevious",mBn="editor.action.inlineSuggest.showNext",aAo="editor.action.inlineSuggest.jump",kBn="editor.action.inlineSuggest.hide",Xje="editor.action.inlineSuggest.toggleShowCollapsed";var Gtt=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},x4=function(e,t){return function(n,r){t(n,r,e)}},mhe;let Gje=class extends ft{constructor(t,n,r){super(),this.editor=t,this.model=n,this.instantiationService=r,this.alwaysShowToolbar=Ko(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(71).showToolbar==="always"),this.sessionPosition=void 0,this.position=Rt(this,o=>{var d,u;const s=(d=this.model.read(o))==null?void 0:d.primaryGhostText.read(o);if(!this.alwaysShowToolbar.read(o)||!s||s.parts.length===0)return this.sessionPosition=void 0,null;const a=s.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==s.lineNumber&&(this.sessionPosition=void 0);const l=new it(s.lineNumber,Math.min(a,((u=this.sessionPosition)==null?void 0:u.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=l,l}),this._register(Ef((o,s)=>{const a=this.model.read(o);if(!a||!this.alwaysShowToolbar.read(o))return;const l=Rt(u=>{const h=u.store.add(this.instantiationService.createInstance(AV.hot.read(u),this.editor,!0,this.position,a.selectedInlineCompletionIndex,a.inlineCompletionsCount,a.activeCommands,a.warning,()=>{}));return t.addContentWidget(h),u.store.add(Hn(()=>t.removeContentWidget(h))),u.store.add(Oi(g=>{this.position.read(g)&&a.lastTriggerKind.read(g)!==Zm.Explicit&&a.triggerExplicitly()})),h}),d=vL(this,(u,h)=>!!this.position.read(u)||!!h);s.add(Oi(u=>{d.read(u)&&l.read(u)}))}))}};Gje=Gtt([x4(2,Yn)],Gje);const lAo=Da("inline-suggestion-hints-next",zt.chevronRight,U(1207,"Icon for show next parameter hint.")),cAo=Da("inline-suggestion-hints-previous",zt.chevronLeft,U(1208,"Icon for show previous parameter hint."));var IO;let AV=(IO=class extends ft{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(t,n,r){const o=new n2(t,n,r,!0,()=>this._commandService.executeCommand(t)),s=this.keybindingService.lookupKeybinding(t,this._contextKeyService);let a=n;return s&&(a=U(1209,"{0} ({1})",n,s.getLabel())),o.tooltip=a,o}constructor(t,n,r,o,s,a,l,d,u,h,g,m,v){super(),this.editor=t,this.withBorder=n,this._position=r,this._currentSuggestionIdx=o,this._suggestionCount=s,this._extraCommands=a,this._warning=l,this._relayout=d,this._commandService=u,this.keybindingService=g,this._contextKeyService=m,this._menuService=v,this.id=`InlineSuggestionHintsContentWidget${mhe.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._warningMessageContentNode=Rt(f=>{const k=this._warning.read(f);return k?typeof k.message=="string"?k.message:f.store.add(Vie(k.message)).element:void 0}),this._warningMessageNode=cr.div({class:"warningMessage",style:{maxWidth:400,margin:4,marginBottom:4,display:Rt(f=>this._warning.read(f)?"block":"none")}},[this._warningMessageContentNode]).keepUpdated(this._store),this.nodes=wo("div.inlineSuggestionsHints",{className:this.withBorder?"monaco-hover monaco-hover-content":""},[this._warningMessageNode.element,wo("div@toolBar")]),this.previousAction=this._register(this.createCommandAction(gBn,U(1210,"Previous"),fi.asClassName(cAo))),this.availableSuggestionCountAction=this._register(new n2("inlineSuggestionHints.availableSuggestionCount","",void 0,!1)),this.nextAction=this._register(this.createCommandAction(mBn,U(1211,"Next"),fi.asClassName(lAo))),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(Wn.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new Es(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new Es(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this._register(Oi(f=>{this._warningMessageContentNode.read(f),this._warningMessageNode.readEffect(f),this._relayout()})),this.toolBar=this._register(h.createInstance(Yje,this.nodes.toolBar,Wn.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:f=>f.startsWith("primary")},actionViewItemProvider:(f,k)=>{if(f instanceof i2)return h.createInstance(uAo,f,void 0);if(f===this.availableSuggestionCountAction){const A=new dAo(void 0,f,{label:!0,icon:!1});return A.setClass("availableSuggestionCount"),A}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(f=>{mhe._dropDownVisible=f})),this._register(Oi(f=>{this._position.read(f),this.editor.layoutContentWidget(this)})),this._register(Oi(f=>{const k=this._suggestionCount.read(f),A=this._currentSuggestionIdx.read(f);k!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${A+1}/${k}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),k!==void 0&&k>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register(Oi(f=>{const A=this._extraCommands.read(f).map(p=>({class:void 0,id:p.command.id,enabled:!0,tooltip:p.command.tooltip||"",label:p.command.title,run:b=>this._commandService.executeCommand(p.command.id)}));for(const[p,b]of this.inlineCompletionsActionsMenus.getActions())for(const w of b)w instanceof i2&&A.push(w);A.length>0&&A.unshift(new pd),this.toolBar.setAdditionalSecondaryActions(A)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},mhe=IO,IO.hot=l3e(IO),IO._dropDownVisible=!1,IO.id=0,IO);AV=mhe=Gtt([x4(8,ba),x4(9,Yn),x4(10,Do),x4(11,Qi),x4(12,wA)],AV);class dAo extends gV{constructor(){super(...arguments),this._className=void 0}setClass(t){this._className=t}render(t){super.render(t),this._className&&t.classList.add(this._className)}updateTooltip(){}}class uAo extends D6{updateLabel(){const t=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService,!0);if(!t)return super.updateLabel();if(this.label){const n=wo("div.keybinding").root;this._register(new cH(n,b0,{disableTitle:!0,...X2o})).set(t),this.label.textContent=this._action.label,this.label.appendChild(n),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}}let Yje=class extends M1e{constructor(t,n,r,o,s,a,l,d,u){super(t,{resetMenu:n,...r},o,s,a,l,d,u),this.menuId=n,this.options2=r,this.menuService=o,this.contextKeyService=s,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this.additionalPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var r,o,s,a,l,d,u;const{primary:t,secondary:n}=kDn(this.menu.getActions((r=this.options2)==null?void 0:r.menuOptions),(s=(o=this.options2)==null?void 0:o.toolbarOptions)==null?void 0:s.primaryGroup,(l=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:l.shouldInlineSubmenu,(u=(d=this.options2)==null?void 0:d.toolbarOptions)==null?void 0:u.useSeparatorsInPrimaryActions);n.push(...this.additionalActions),t.unshift(...this.prependedPrimaryActions),t.push(...this.additionalPrimaryActions),this.setActions(t,n)}setPrependedPrimaryActions(t){Na(this.prependedPrimaryActions,t,(n,r)=>n===r)||(this.prependedPrimaryActions=t,this.updateToolbar())}setAdditionalSecondaryActions(t){Na(this.additionalActions,t,(n,r)=>n===r)||(this.additionalActions=t,this.updateToolbar())}};Yje=Gtt([x4(3,wA),x4(4,Qi),x4(5,S2),x4(6,Do),x4(7,ba),x4(8,Nf)],Yje);function b3e(e,t,n){const r=Kl(e);return!(tr.left+r.width||nr.top+r.height)}class hAo{constructor(t,n,r,o){this.value=t,this.isComplete=n,this.hasLoadingMessage=r,this.options=o}}class vBn extends ft{constructor(t,n){super(),this._editor=t,this._computer=n,this._onResult=this._register(new at),this.onResult=this._onResult.event,this._asyncComputationScheduler=this._register(new fxe(r=>this._triggerAsyncComputation(r),0)),this._syncComputationScheduler=this._register(new fxe(r=>this._triggerSyncComputation(r),0)),this._loadingMessageScheduler=this._register(new fxe(r=>this._triggerLoadingMessage(r),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._options=void 0,super.dispose()}get _hoverTime(){return this._editor.getOption(69).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(t,n){this._options=n,this._state=t,this._fireResult(n)}_triggerAsyncComputation(t){this._setState(2,t),this._syncComputationScheduler.schedule(t,this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=deo(n=>this._computer.computeAsync(t,n)),(async()=>{try{for await(const n of this._asyncIterable)n&&(this._result.push(n),this._fireResult(t));this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0,t)}catch(n){zi(n)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(t){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync(t))),this._setState(this._asyncIterableDone?0:3,t)}_triggerLoadingMessage(t){this._state===3&&this._setState(4,t)}_fireResult(t){if(this._state===1||this._state===2)return;const n=this._state===0,r=this._state===4;this._onResult.fire(new hAo(this._result.slice(0),n,r,t))}start(t,n){if(t===0)this._state===0&&(this._setState(1,n),this._asyncComputationScheduler.schedule(n,this._firstWaitTime),this._loadingMessageScheduler.schedule(n,this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(n),this._syncComputationScheduler.cancel(),this._triggerSyncComputation(n);break;case 2:this._syncComputationScheduler.cancel(),this._triggerSyncComputation(n);break}}cancel(){this._asyncComputationScheduler.cancel(),this._syncComputationScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._options=void 0,this._state=0}get options(){return this._options}}class fxe extends ft{constructor(t,n){super(),this._scheduler=this._register(new Es(()=>t(this._options),n))}schedule(t,n){this._options=t,this._scheduler.schedule(n)}cancel(){this._scheduler.cancel()}}class Ytt{get onDidWillResize(){return this._onDidWillResize.event}get onDidResize(){return this._onDidResize.event}constructor(){this._onDidWillResize=new at,this._onDidResize=new at,this._sashListener=new xt,this._size=new cs(0,0),this._minSize=new cs(0,0),this._maxSize=new cs(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new kf(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new kf(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new kf(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:T1e.North}),this._southSash=new kf(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:T1e.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let t,n=0,r=0;this._sashListener.add(an.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{t===void 0&&(this._onDidWillResize.fire(),t=this._size,n=0,r=0)})),this._sashListener.add(an.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{t!==void 0&&(t=void 0,n=0,r=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(o=>{t&&(r=o.currentX-o.startX,this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(o=>{t&&(r=-(o.currentX-o.startX),this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(o=>{t&&(n=-(o.currentY-o.startY),this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(o=>{t&&(n=o.currentY-o.startY,this.layout(t.height+n,t.width+r),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(an.any(this._eastSash.onDidReset,this._westSash.onDidReset)(o=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(an.any(this._northSash.onDidReset,this._southSash.onDidReset)(o=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(t,n,r,o){this._northSash.state=t?3:0,this._eastSash.state=n?3:0,this._southSash.state=r?3:0,this._westSash.state=o?3:0}layout(t=this.size.height,n=this.size.width){const{height:r,width:o}=this._minSize,{height:s,width:a}=this._maxSize;t=Math.max(r,Math.min(s,t)),n=Math.max(o,Math.min(a,n));const l=new cs(n,t);cs.equals(l,this._size)||(this.domNode.style.height=t+"px",this.domNode.style.width=n+"px",this._size=l,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(t){this._maxSize=t}get maxSize(){return this._maxSize}set minSize(t){this._minSize=t}get minSize(){return this._minSize}set preferredSize(t){this._preferredSize=t}get preferredSize(){return this._preferredSize}}const fAo=30,gAo=24;class mAo extends ft{constructor(t,n=new cs(10,10)){super(),this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new Ytt),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=cs.lift(n),this._resizableNode.layout(n.height,n.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(r=>{this._resize(new cs(r.dimension.width,r.dimension.height)),r.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var t;return(t=this._contentPosition)!=null&&t.position?it.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(t){const n=this._editor.getDomNode(),r=this._editor.getScrolledVisiblePosition(t);return!n||!r?void 0:Kl(n).top+r.top-fAo}_availableVerticalSpaceBelow(t){const n=this._editor.getDomNode(),r=this._editor.getScrolledVisiblePosition(t);if(!n||!r)return;const o=Kl(n),s=O6(n.ownerDocument.body),a=o.top+r.top+r.height;return s.height-a-gAo}_findPositionPreference(t,n){const r=Math.min(this._availableVerticalSpaceBelow(n)??1/0,t),o=Math.min(this._availableVerticalSpaceAbove(n)??1/0,t),s=Math.min(Math.max(o,r),t),a=Math.min(t,s);let l;return this._editor.getOption(69).above?l=a<=o?1:2:l=a<=r?2:1,l===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),l}_resize(t){this._resizableNode.layout(t.height,t.width)}}const Wle=tn;let Ztt=class extends ft{constructor(t){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.classList.toggle("fade-in",!!t),this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new Mie(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}};class w3e extends ft{static render(t,n,r){return new w3e(t,n,r)}constructor(t,n,r){super(),this.actionLabel=n.label,this.actionKeybindingLabel=r,this.actionContainer=Xt(t,Wle("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=Xt(this.actionContainer,Wle("a.action")),this.action.setAttribute("role","button"),n.iconClass&&Xt(this.action,Wle("span.icon")).classList.add(...n.iconClass.split(" ")),this.actionRenderedLabel=r?`${n.label} (${r})`:n.label;const o=Xt(this.action,Wle("span"));o.textContent=this.actionRenderedLabel,this._store.add(new pBn(this.actionContainer,n.run)),this._store.add(new bBn(this.actionContainer,n.run,[3,10])),this.setEnabled(!0)}setEnabled(t){t?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function ABn(e,t){return e&&t?U(7,"Inspect this in the accessible view with {0}.",t):e?U(8,"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}class pBn extends ft{constructor(t,n){super(),this._register(wt(t,rn.CLICK,r=>{r.stopPropagation(),r.preventDefault(),n(t)}))}}class bBn extends ft{constructor(t,n,r){super(),this._register(wt(t,rn.KEY_DOWN,o=>{const s=new Us(o);r.some(a=>s.equals(a))&&(o.stopPropagation(),o.preventDefault(),n(t))}))}}var kAo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Vle=function(e,t){return function(n,r){t(n,r,e)}},i4;const tyt=30;var q9;let Zje=(q9=class extends mAo{get isVisibleFromKeyboard(){var t;return((t=this._renderedHover)==null?void 0:t.source)===2}get isVisible(){return this._hoverVisibleKey.get()??!1}get isFocused(){return this._hoverFocusedKey.get()??!1}constructor(t,n,r,o,s){const a=t.getOption(75)+8,l=150,d=new cs(l,a);super(t,d),this._configurationService=r,this._accessibilityService=o,this._keybindingService=s,this._hover=this._register(new Ztt(!0)),this._onDidResize=this._register(new at),this.onDidResize=this._onDidResize.event,this._onDidScroll=this._register(new at),this.onDidScroll=this._onDidScroll.event,this._onContentsChanged=this._register(new at),this.onContentsChanged=this._onContentsChanged.event,this._minimumSize=d,this._hoverVisibleKey=$e.hoverVisible.bindTo(n),this._hoverFocusedKey=$e.hoverFocused.bindTo(n),Xt(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._resizableNode.domNode.className="monaco-resizable-hover",this._register(this._editor.onDidLayoutChange(()=>{this.isVisible&&this._updateMaxDimensions()})),this._register(this._editor.onDidChangeConfiguration(h=>{h.hasChanged(59)&&this._updateFont()}));const u=this._register(uA(this._resizableNode.domNode));this._register(u.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(u.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._register(this._hover.scrollbar.onScroll(h=>{this._onDidScroll.fire(h)})),this._setRenderedHover(void 0),this._editor.addContentWidget(this)}dispose(){var t;super.dispose(),(t=this._renderedHover)==null||t.dispose(),this._editor.removeContentWidget(this)}getId(){return i4.ID}static _applyDimensions(t,n,r){const o=typeof n=="number"?`${n}px`:n,s=typeof r=="number"?`${r}px`:r;t.style.width=o,t.style.height=s}_setContentsDomNodeDimensions(t,n){const r=this._hover.contentsDomNode;return i4._applyDimensions(r,t,n)}_setContainerDomNodeDimensions(t,n){const r=this._hover.containerDomNode;return i4._applyDimensions(r,t,n)}_setScrollableElementDimensions(t,n){const r=this._hover.scrollbar.getDomNode();return i4._applyDimensions(r,t,n)}_setHoverWidgetDimensions(t,n){this._setContainerDomNodeDimensions(t,n),this._setScrollableElementDimensions(t,n),this._setContentsDomNodeDimensions(t,n),this._layoutContentWidget()}static _applyMaxDimensions(t,n,r){const o=typeof n=="number"?`${n}px`:n,s=typeof r=="number"?`${r}px`:r;t.style.maxWidth=o,t.style.maxHeight=s}_setHoverWidgetMaxDimensions(t,n){i4._applyMaxDimensions(this._hover.contentsDomNode,t,n),i4._applyMaxDimensions(this._hover.scrollbar.getDomNode(),t,n),i4._applyMaxDimensions(this._hover.containerDomNode,t,n),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof t=="number"?`${t}px`:t),this._layoutContentWidget()}_setAdjustedHoverWidgetDimensions(t){this._setHoverWidgetMaxDimensions("none","none"),this._setHoverWidgetDimensions(t.width,t.height)}_updateResizableNodeMaxDimensions(){const t=this._findMaximumRenderingWidth()??1/0,n=this._findMaximumRenderingHeight()??1/0;this._resizableNode.maxSize=new cs(t,n),this._setHoverWidgetMaxDimensions(t,n)}_resize(t){i4._lastDimensions=new cs(t.width,t.height),this._setAdjustedHoverWidgetDimensions(t),this._resizableNode.layout(t.height,t.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),this._onDidResize.fire()}_findAvailableSpaceVertically(){var n;const t=(n=this._renderedHover)==null?void 0:n.showAtPosition;if(t)return this._positionPreference===1?this._availableVerticalSpaceAbove(t):this._availableVerticalSpaceBelow(t)}_findMaximumRenderingHeight(){const t=this._findAvailableSpaceVertically();if(!t)return;let r=this._hover.contentsDomNode.children.length-1;return Array.from(this._hover.contentsDomNode.children).forEach(o=>{r+=o.clientHeight}),Math.min(t,r)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const t=Array.from(this._hover.contentsDomNode.children).some(n=>n.scrollWidth>n.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),t}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const t=this._isHoverTextOverflowing(),n=typeof this._contentWidth>"u"?0:this._contentWidth;return t||this._hover.containerDomNode.clientWidththis._renderedHover.closestMouseDistance+4?!1:(this._renderedHover.closestMouseDistance=Math.min(this._renderedHover.closestMouseDistance,o),!0)}_setRenderedHover(t){var n;(n=this._renderedHover)==null||n.dispose(),this._renderedHover=t,this._hoverVisibleKey.set(!!t),this._hover.containerDomNode.classList.toggle("hidden",!t)}_updateFont(){const{fontSize:t,lineHeight:n}=this._editor.getOption(59),r=this._hover.contentsDomNode;r.style.fontSize=`${t}px`,r.style.lineHeight=`${n/t}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(s=>this._editor.applyFontInfo(s))}_updateContent(t){const n=this._hover.contentsDomNode;n.style.paddingBottom="",n.textContent="",n.appendChild(t)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const t=Math.max(this._editor.getLayoutInfo().height/4,250,i4._lastDimensions.height),n=Math.max(this._editor.getLayoutInfo().width*.66,750,i4._lastDimensions.width);this._resizableNode.maxSize=new cs(n,t),this._setHoverWidgetMaxDimensions(n,t)}_render(t){this._setRenderedHover(t),this._updateFont(),this._updateContent(t.domNode),this.handleContentsChanged(),this._editor.render()}getPosition(){return this._renderedHover?{position:this._renderedHover.showAtPosition,secondaryPosition:this._renderedHover.showAtSecondaryPosition,positionAffinity:this._renderedHover.shouldAppearBeforeContent?3:void 0,preference:[this._positionPreference??1]}:null}show(t){var a;if(!this._editor||!this._editor.hasModel())return;this._render(t);const n=ES(this._hover.containerDomNode),r=t.showAtPosition;this._positionPreference=this._findPositionPreference(n,r)??1,this.handleContentsChanged(),t.shouldFocus&&this._hover.containerDomNode.focus(),this._onDidResize.fire();const s=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&ABn(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),((a=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:a.getAriaLabel())??"");s&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+s)}hide(){if(!this._renderedHover)return;const t=this._renderedHover.shouldFocus||this._hoverFocusedKey.get();this._setRenderedHover(void 0),this._resizableNode.maxSize=new cs(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),t&&this._editor.focus()}_removeConstraintsRenderNormally(){const t=this._editor.getLayoutInfo();this._resizableNode.layout(t.height,t.width),this._setHoverWidgetDimensions("auto","auto"),this._updateMaxDimensions()}setMinimumDimensions(t){this._minimumSize=new cs(Math.max(this._minimumSize.width,t.width),Math.max(this._minimumSize.height,t.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const t=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new cs(t,this._minimumSize.height)}handleContentsChanged(){var o;this._removeConstraintsRenderNormally();const t=this._hover.contentsDomNode;let n=ES(t),r=s0(t)+2;if(this._resizableNode.layout(n,r),this._setHoverWidgetDimensions(r,n),n=ES(t),r=s0(t),this._contentWidth=r,this._updateMinimumWidth(),this._resizableNode.layout(n,r),(o=this._renderedHover)!=null&&o.showAtPosition){const s=ES(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(s,this._renderedHover.showAtPosition)}this._layoutContentWidget(),this._onContentsChanged.fire()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._editor.getOption(59);this._hover.scrollbar.setScrollPosition({scrollTop:t-n.lineHeight})}scrollDown(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._editor.getOption(59);this._hover.scrollbar.setScrollPosition({scrollTop:t+n.lineHeight})}scrollLeft(){const t=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:t-tyt})}scrollRight(){const t=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:t+tyt})}pageUp(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:t-n})}pageDown(){const t=this._hover.scrollbar.getScrollPosition().scrollTop,n=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:t+n})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}},i4=q9,q9.ID="editor.contrib.resizableContentHoverWidget",q9._lastDimensions=new cs(0,0),q9);Zje=i4=kAo([Vle(1,Qi),Vle(2,ar),Vle(3,vh),Vle(4,Do)],Zje);function nyt(e,t,n,r,o,s){const a=n+o/2,l=r+s/2,d=Math.max(Math.abs(e-a)-o/2,0),u=Math.max(Math.abs(t-l)-s/2,0);return Math.sqrt(d*d+u*u)}class q1e{constructor(t,n){this._editor=t,this._participants=n}static _getLineDecorations(t,n){if(n.type!==1&&!n.supportsMarkerHover)return[];const r=t.getModel(),o=n.range.startLineNumber;if(o>r.getLineCount())return[];const s=r.getLineMaxColumn(o);return t.getLineDecorations(o).filter(a=>{if(a.options.isWholeLine)return!0;const l=a.range.startLineNumber===o?a.range.startColumn:1,d=a.range.endLineNumber===o?a.range.endColumn:s;if(a.options.showIfCollapsed){if(l>n.range.startColumn+1||n.range.endColumn-1>d)return!1}else if(l>n.range.startColumn||n.range.endColumn>d)return!1;return!0})}computeAsync(t,n){const r=t.anchor;if(!this._editor.hasModel()||!r)return Yv.EMPTY;const o=q1e._getLineDecorations(this._editor,r);return Yv.merge(this._participants.map(s=>s.computeAsync?s.computeAsync(r,o,t.source,n):Yv.EMPTY))}computeSync(t){if(!this._editor.hasModel())return[];const n=t.anchor,r=q1e._getLineDecorations(this._editor,n);let o=[];for(const s of this._participants)o=o.concat(s.computeSync(n,r,t.source));return P3(o)}}class wBn{constructor(t,n,r){this.hoverParts=t,this.isComplete=n,this.options=r}filter(t){const n=this.hoverParts.filter(r=>r.isValidForHoverAnchor(t));return n.length===this.hoverParts.length?this:new vAo(this,n,this.isComplete,this.options)}}class vAo extends wBn{constructor(t,n,r,o){super(n,r,o),this.original=t}filter(t){return this.original.filter(t)}}var AAo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},iyt=function(e,t){return function(n,r){t(n,r,e)}};const ryt=tn;let K1e=class extends ft{get hasContent(){return this._hasContent}constructor(t,n){super(),this._keybindingService=t,this._hoverService=n,this.actions=[],this._hasContent=!1,this.hoverElement=ryt("div.hover-row.status-bar"),this.hoverElement.tabIndex=0,this.actionsElement=Xt(this.hoverElement,ryt("div.actions"))}addAction(t){const n=this._keybindingService.lookupKeybinding(t.commandId),r=n?n.getLabel():null;this._hasContent=!0;const o=this._register(w3e.render(this.actionsElement,t,r));return this._register(this._hoverService.setupManagedHover(eC("element"),o.actionContainer,o.actionRenderedLabel)),this.actions.push(o),o}append(t){const n=Xt(this.actionsElement,t);return this._hasContent=!0,n}};K1e=AAo([iyt(0,Do),iyt(1,pm)],K1e);const OBn={inputActiveOptionBorder:"#007ACC00",inputActiveOptionForeground:"#FFFFFF",inputActiveOptionBackground:"#0E639C50"};class yL extends Y0{get onChange(){return this._onChange.event}get onKeyDown(){return this._onKeyDown.event}constructor(t){super(),this._onChange=this._register(new at),this._onKeyDown=this._register(new at),this._opts=t,this._title=this._opts.title,this._checked=this._opts.isChecked;const n=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,n.push(...fi.asClassNameArray(this._icon))),this._opts.actionClassName&&n.push(...this._opts.actionClassName.split(" ")),this._checked&&n.push("checked"),this.domNode=document.createElement("div"),this._register(yp().setupDelayedHover(this.domNode,()=>({content:this._title,style:1}),this._opts.hoverLifecycleOptions)),this.domNode.classList.add(...n),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.setTitle(this._opts.title),this.applyStyles(),this.onclick(this.domNode,r=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),r.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,r=>{if(this.enabled){if(r.keyCode===10||r.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),r.preventDefault(),r.stopPropagation();return}this._onKeyDown.fire(r)}})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(t){this._checked=t,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}setIcon(t){this._icon&&this.domNode.classList.remove(...fi.asClassNameArray(this._icon)),this._icon=t,this._icon&&this.domNode.classList.add(...fi.asClassNameArray(this._icon))}width(){return 22}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1)),this.domNode.classList.remove("disabled")}disable(){this.domNode.setAttribute("aria-disabled",String(!0)),this.domNode.classList.add("disabled")}setTitle(t){this._title=t,this.domNode.setAttribute("aria-label",t)}set visible(t){this.domNode.style.display=t?"":"none"}get visible(){return this.domNode.style.display!=="none"}}const kat=class kat extends Y0{constructor(t,n,r){super(),this.checkbox=t,this.domNode=n,this.styles=r,this._onChange=this._register(new at),this.onChange=this._onChange.event,this.applyStyles()}get enabled(){return this.checkbox.enabled}enable(){this.checkbox.enable(),this.applyStyles(!0)}disable(){this.checkbox.disable(),this.applyStyles(!1)}setTitle(t){this.checkbox.setTitle(t)}applyStyles(t=this.enabled){this.domNode.style.color=(t?this.styles.checkboxForeground:this.styles.checkboxDisabledForeground)||"",this.domNode.style.backgroundColor=(t?this.styles.checkboxBackground:this.styles.checkboxDisabledBackground)||"",this.domNode.style.borderColor=(t?this.styles.checkboxBorder:this.styles.checkboxDisabledBackground)||"";const n=this.styles.size||18;this.domNode.style.width=this.domNode.style.height=this.domNode.style.fontSize=`${n}px`,this.domNode.style.fontSize=`${n-2}px`}};kat.CLASS_NAME="monaco-checkbox";let VJ=kat,yBn=class extends VJ{constructor(t,n,r){const o=new yL({title:t,isChecked:n,icon:zt.check,actionClassName:VJ.CLASS_NAME,hoverLifecycleOptions:r.hoverLifecycleOptions,...OBn});super(o,o.domNode,r),this._register(o),this._register(this.checkbox.onChange(s=>{this.applyStyles(),this._onChange.fire(s)}))}get checked(){return this.checkbox.checked}set checked(t){this.checkbox.checked=t,this.applyStyles()}applyStyles(t){this.checkbox.checked?this.checkbox.setIcon(zt.check):this.checkbox.setIcon(void 0),super.applyStyles(t)}};class CBn extends VJ{constructor(t,n,r){let o;switch(n){case!0:o=zt.check;break;case"mixed":o=zt.dash;break;case!1:o=void 0;break}const s=new yL({title:t,isChecked:n===!0,icon:o,actionClassName:yBn.CLASS_NAME,hoverLifecycleOptions:r.hoverLifecycleOptions,...OBn});super(s,s.domNode,r),this._state=n,this._register(s),this._register(this.checkbox.onChange(a=>{this._state=this.checkbox.checked,this.applyStyles(),this._onChange.fire(a)}))}get checked(){return this._state}set checked(t){this._state!==t&&(this._state=t,this.checkbox.checked=t===!0,this.applyStyles())}applyStyles(t){switch(this._state){case!0:this.checkbox.setIcon(zt.check);break;case"mixed":this.checkbox.setIcon(zt.dash);break;case!1:this.checkbox.setIcon(void 0);break}super.applyStyles(t)}}const eg=class eg{constructor(t){this._editor=t,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const t=this._findScopeDecorationIds.map(n=>this._editor.getModel().getDecorationRange(n)).filter(n=>!!n);if(t.length)return t}return null}getStartPosition(){return this._startPosition}setStartPosition(t){this._startPosition=t,this.setCurrentFindMatch(null)}_getDecorationIndex(t){const n=this._decorations.indexOf(t);return n>=0?n+1:1}getDecorationRangeAt(t){const n=t{if(this._highlightedDecorationId!==null&&(o.changeDecorationOptions(this._highlightedDecorationId,eg._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),n!==null&&(this._highlightedDecorationId=n,o.changeDecorationOptions(this._highlightedDecorationId,eg._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(o.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),n!==null){let s=this._editor.getModel().getDecorationRange(n);if(s.startLineNumber!==s.endLineNumber&&s.endColumn===1){const a=s.endLineNumber-1,l=this._editor.getModel().getLineMaxColumn(a);s=new Ee(s.startLineNumber,s.startColumn,a,l)}this._rangeHighlightDecorationId=o.addDecoration(s,eg._RANGE_HIGHLIGHT_DECORATION)}}),r}set(t,n){this._editor.changeDecorations(r=>{let o=eg._FIND_MATCH_DECORATION;const s=[];if(t.length>1e3){o=eg._FIND_MATCH_NO_OVERVIEW_DECORATION;const l=this._editor.getModel().getLineCount(),u=this._editor.getLayoutInfo().height/l,h=Math.max(2,Math.ceil(3/u));let g=t[0].range.startLineNumber,m=t[0].range.endLineNumber;for(let v=1,f=t.length;v=k.startLineNumber?k.endLineNumber>m&&(m=k.endLineNumber):(s.push({range:new Ee(g,1,m,1),options:eg._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),g=k.startLineNumber,m=k.endLineNumber)}s.push({range:new Ee(g,1,m,1),options:eg._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const a=new Array(t.length);for(let l=0,d=t.length;lr.removeDecoration(l)),this._findScopeDecorationIds=[]),n!=null&&n.length&&(this._findScopeDecorationIds=n.map(l=>r.addDecoration(l,eg._FIND_SCOPE_DECORATION)))})}matchBeforePosition(t){if(this._decorations.length===0)return null;for(let n=this._decorations.length-1;n>=0;n--){const r=this._decorations[n],o=this._editor.getModel().getDecorationRange(r);if(!(!o||o.endLineNumber>t.lineNumber)){if(o.endLineNumbert.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(t){if(this._decorations.length===0)return null;for(let n=0,r=this._decorations.length;nt.lineNumber)return s;if(!(s.startColumn0){const r=[];for(let a=0;aEe.compareRangesUsingStarts(a.range,l.range));const o=[];let s=r[0];for(let a=1;a0?t[0].toUpperCase()+t.substr(1):e[0][0].toUpperCase()!==e[0][0]&&t.length>0?t[0].toLowerCase()+t.substr(1):t}else return t}function oyt(e,t,n){return e[0].indexOf(n)!==-1&&t.indexOf(n)!==-1&&e[0].split(n).length===t.split(n).length}function syt(e,t,n){const r=t.split(n),o=e[0].split(n);let s="";return r.forEach((a,l)=>{s+=_Bn([o[l]],a)+n}),s.slice(0,-1)}class ayt{constructor(t){this.staticValue=t,this.kind=0}}class bAo{constructor(t){this.pieces=t,this.kind=1}}class pV{static fromStaticValue(t){return new pV([pD.staticValue(t)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(t){!t||t.length===0?this._state=new ayt(""):t.length===1&&t[0].staticValue!==null?this._state=new ayt(t[0].staticValue):this._state=new bAo(t)}buildReplaceString(t,n){if(this._state.kind===0)return n?_Bn(t,this._state.staticValue):this._state.staticValue;let r="";for(let o=0,s=this._state.pieces.length;o0){const d=[],u=a.caseOps.length;let h=0;for(let g=0,m=l.length;g=u){d.push(l.slice(g));break}switch(a.caseOps[h]){case"U":d.push(l[g].toUpperCase());break;case"u":d.push(l[g].toUpperCase()),h++;break;case"L":d.push(l[g].toLowerCase());break;case"l":d.push(l[g].toLowerCase()),h++;break;default:d.push(l[g])}}l=d.join("")}r+=l}return r}static _substitute(t,n){if(n===null)return"";if(t===0)return n[0];let r="";for(;t>0;){if(t=o)break;const a=e.charCodeAt(r);switch(a){case 92:n.emitUnchanged(r-1),n.emitStatic("\\",r+1);break;case 110:n.emitUnchanged(r-1),n.emitStatic(` `,r+1);break;case 116:n.emitUnchanged(r-1),n.emitStatic(" ",r+1);break;case 117:case 85:case 108:case 76:n.emitUnchanged(r-1),n.emitStatic("",r+1),t.push(String.fromCharCode(a));break}continue}if(s===36){if(r++,r>=o)break;const a=e.charCodeAt(r);if(a===36){n.emitUnchanged(r-1),n.emitStatic("$",r+1);continue}if(a===48||a===38){n.emitUnchanged(r-1),n.emitMatchIndex(0,r+1,t),t.length=0;continue}if(49<=a&&a<=57){let l=a-48;if(r+1{if(this._editor.hasModel())return this.research(!1)},100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(r=>{(r.reason===3||r.reason===5||r.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(r=>{this._ignoreModelContentChanged||(r.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(r=>this._onStateChanged(r))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,us(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(t){this._isDisposed||this._editor.hasModel()&&(t.searchString||t.isReplaceRevealed||t.isRegex||t.wholeWord||t.matchCase||t.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{t.searchScope?this.research(t.moveCursor,this._state.searchScope):this.research(t.moveCursor)},yAo)):t.searchScope?this.research(t.moveCursor,this._state.searchScope):this.research(t.moveCursor))}static _getSearchRange(t,n){return n||t.getFullModelRange()}research(t,n){let r=null;typeof n<"u"?n!==null&&(Array.isArray(n)?r=n:r=[n]):r=this._decorations.getFindScopes(),r!==null&&(r=r.map(l=>{if(l.startLineNumber!==l.endLineNumber){let d=l.endLineNumber;return l.endColumn===1&&(d=d-1),new Ee(l.startLineNumber,1,d,this._editor.getModel().getLineMaxColumn(d))}return l}));const o=this._findMatches(r,!1,b9);this._decorations.set(o,r);const s=this._editor.getSelection();let a=this._decorations.getCurrentMatchesPosition(s);if(a===0&&o.length>0){const l=dJ(o.map(d=>d.range),d=>Ee.compareRangesUsingStarts(d,s)>=0);a=l>0?l-1+1:a}this._state.changeMatchInfo(a,this._decorations.getCount(),void 0),t&&this._editor.getOption(50).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const t=this._decorations.getFindScope();return t&&this._editor.revealRangeInCenterIfOutsideViewport(t,0),!0}return!1}_setCurrentFindMatch(t){const n=this._decorations.setCurrentFindMatch(t);this._state.changeMatchInfo(n,this._decorations.getCount(),t),this._editor.setSelection(t),this._editor.revealRangeInCenterIfOutsideViewport(t,0)}_prevSearchPosition(t){const n=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:r,column:o}=t;const s=this._editor.getModel();return n||o===1?(r===1?r=s.getLineCount():r--,o=s.getLineMaxColumn(r)):o--,new it(r,o)}_moveToPrevMatch(t,n=!1){if(!this._state.canNavigateBack()){const h=this._decorations.matchAfterPosition(t);h&&this._setCurrentFindMatch(h);return}if(this._decorations.getCount()=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:r,column:o}=t;const s=this._editor.getModel();return n||o===s.getLineMaxColumn(r)?(r===s.getLineCount()?r=1:r++,o=1):o++,new it(r,o)}_moveToNextMatch(t){if(!this._state.canNavigateForward()){const r=this._decorations.matchBeforePosition(t);r&&this._setCurrentFindMatch(r);return}if(this._decorations.getCount()QZ._getSearchRange(this._editor.getModel(),s));return this._editor.getModel().findMatches(this._state.searchString,o,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(148):null,n,r)}replaceAll(){if(!this._hasMatches())return;const t=this._decorations.getFindScopes();t===null&&this._state.matchesCount>=b9?this._largeReplaceAll():this._regularReplaceAll(t),this.research(!1)}_largeReplaceAll(){const n=new X7(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(148):null).parseSearchRequest();if(!n)return;let r=n.regex;if(!r.multiline){let g="mu";r.ignoreCase&&(g+="i"),r.global&&(g+="g"),r=new RegExp(r.source,g)}const o=this._editor.getModel(),s=o.getValue(1),a=o.getFullModelRange(),l=this._getReplacePattern();let d;const u=this._state.preserveCase;l.hasReplacementPatterns||u?d=s.replace(r,function(){return l.buildReplaceString(arguments,u)}):d=s.replace(r,l.buildReplaceString(null,u));const h=new net(a,d,this._editor.getSelection());this._executeEditorCommand("replaceAll",h)}_regularReplaceAll(t){const n=this._getReplacePattern(),r=this._findMatches(t,n.hasReplacementPatterns||this._state.preserveCase,1073741824),o=[];for(let a=0,l=r.length;aa.range),o);this._executeEditorCommand("replaceAll",s)}selectAllMatches(){if(!this._hasMatches())return;const t=this._decorations.getFindScopes();let r=this._findMatches(t,!1,1073741824).map(s=>new Qn(s.range.startLineNumber,s.range.startColumn,s.range.endLineNumber,s.range.endColumn));const o=this._editor.getSelection();for(let s=0,a=r.length;s=this.source.length}next(){const t=this.peek();return this.advance(),t}peek(){return this.source[this.index]}advance(){this.index++}}function EBn(e,t,n,r){let o;if(t.type===2)o=document.createTextNode(t.content||"");else if(t.type===3)o=document.createElement("b");else if(t.type===4)o=document.createElement("i");else if(t.type===7&&r)o=document.createElement("code");else if(t.type===5&&n){const s=document.createElement("a");n.disposables.add(wc(s,"click",a=>{n.callback(String(t.index),a)})),o=s}else t.type===8?o=document.createElement("br"):t.type===1&&(o=e);o&&e!==o&&e.appendChild(o),o&&Array.isArray(t.children)&&t.children.forEach(s=>{EBn(o,s,n,r)})}function TAo(e,t){const n={type:1,children:[]};let r=0,o=n;const s=[],a=new EAo(e);for(;!a.eos();){let l=a.next();const d=l==="\\"&&Kje(a.peek())!==0;if(d&&(l=a.next()),!d&&QAo(l)&&l===a.peek()){a.advance(),o.type===2&&(o=s.pop());const u=Kje(l);if(o.type===u||o.type===5&&u===6)o=s.pop();else{const h={type:u,children:[]};u===5&&(h.index=r,r++),o.children.push(h),s.push(o),o=h}}else if(l===` `)o.type===2&&(o=s.pop()),o.children.push({type:8});else if(o.type!==2){const u={type:2,content:l};o.children.push(u),s.push(o),o=u}else o.content+=l}return o.type===2&&(o=s.pop()),n}function QAo(e,t){return Kje(e)!==0}function Kje(e,t){switch(e){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return 0;default:return 0}}class DAo{constructor(t,n=0,r=t.length,o=n-1){this.items=t,this.start=n,this.end=r,this.index=o}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class BAo{constructor(t=new Set,n=10){this._history=t,this._limit=n,this._onChange(),this._history.onDidChange&&(this._disposable=this._history.onDidChange(()=>this._onChange()))}getHistory(){return this._elements}add(t){this._history.delete(t),this._history.add(t),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(t){return this._history.has(t)}_onChange(){this._reduceToLimit();const t=this._elements;this._navigator=new DAo(t,0,t.length,t.length)}_reduceToLimit(){const t=this._elements;if(t.length>this._limit){const n=t.slice(t.length-this._limit);this._history.replace?this._history.replace(n):this._history=new Set(n)}}_currentPosition(){const t=this._navigator.current();return t?this._elements.indexOf(t):-1}get _elements(){const t=[];return this._history.forEach(n=>t.push(n)),t}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=void 0)}}const SP=tn;let RAo=class extends Y0{get onDidChange(){return this._onDidChange.event}get onDidHeightChange(){return this._onDidHeightChange.event}constructor(t,n,r){super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this.hover=this._register(new ts),this._onDidChange=this._register(new at),this._onDidHeightChange=this._register(new at),this.contextViewProvider=n,this.options=r,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=this.options.tooltip??(this.placeholder||""),this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=Xt(t,SP(".monaco-inputbox.idle"));const o=this.options.flexibleHeight?"textarea":"input",s=Xt(this.element,SP(".ibwrapper"));if(this.input=Xt(s,SP(o+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,()=>this.element.classList.add("synthetic-focus")),this.onblur(this.input,()=>this.element.classList.remove("synthetic-focus")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=Xt(s,SP("div.mirror")),this.mirror.innerText=" ",this.scrollableElement=new $7n(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),Xt(t,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(d=>this.input.scrollTop=d.scrollTop));const a=this._register(new ks(t.ownerDocument,"selectionchange")),l=an.filter(a.event,()=>{const d=t.ownerDocument.getSelection();return(d==null?void 0:d.anchorNode)===s});this._register(l(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new g1(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(t){this.placeholder=t,this.input.setAttribute("placeholder",t)}setTooltip(t){this.tooltip=t,this.hover.value||(this.hover.value=this._register(yp().setupDelayedHoverAtMouse(this.input,()=>({content:this.tooltip,appearance:{compact:!0}}))))}get inputElement(){return this.input}get value(){return this.input.value}set value(t){this.input.value!==t&&(this.input.value=t,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:ES(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return wbe(this.input)}select(t=null){this.input.select(),t&&(this.input.setSelectionRange(t.start,t.end),t.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}getSelection(){const t=this.input.selectionStart;if(t===null)return null;const n=this.input.selectionEnd??t;return{start:t,end:n}}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(t){this.input.style.width=`calc(100% - ${t}px)`,this.mirror&&(this.mirror.style.paddingRight=t+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const t=this.cachedContentHeight,n=this.cachedHeight,r=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:t,height:n}),this.scrollableElement.setScrollPosition({scrollTop:r})}showMessage(t,n){if(this.state==="open"&&Q0(this.message,t))return;this.message=t,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(t.type));const r=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${n8(r.border,"transparent")}`,this.message.content&&(this.hasFocus()||n)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let t=null;return this.validation&&(t=this.validation(this.value),t?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(t)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),t==null?void 0:t.type}stylesForType(t){const n=this.options.inputBoxStyles;switch(t){case 1:return{border:n.inputValidationInfoBorder,background:n.inputValidationInfoBackground,foreground:n.inputValidationInfoForeground};case 2:return{border:n.inputValidationWarningBorder,background:n.inputValidationWarningBackground,foreground:n.inputValidationWarningForeground};default:return{border:n.inputValidationErrorBorder,background:n.inputValidationErrorBackground,foreground:n.inputValidationErrorForeground}}}classForType(t){switch(t){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let t;const n=()=>t.style.width=s0(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:o=>{if(!this.message)return null;t=Xt(o,SP(".monaco-inputbox-container")),n();const s=SP("span.monaco-inputbox-message");this.message.formatContent?xAo(this.message.content,void 0,s):LAo(this.message.content,void 0,s),s.classList.add(this.classForType(this.message.type));const a=this.stylesForType(this.message.type);return s.style.backgroundColor=a.background??"",s.style.color=a.foreground??"",s.style.border=a.border?`1px solid ${a.border}`:"",Xt(t,s),null},onHide:()=>{this.state="closed"},layout:n});let r;this.message.type===3?r=U(9,"Error: {0}",this.message.content):this.message.type===2?r=U(10,"Warning: {0}",this.message.content):r=U(11,"Info: {0}",this.message.content),um(r),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const t=this.value,r=t.charCodeAt(t.length-1)===10?" ":"";(t+r).replace(/\u000c/g,"")?this.mirror.textContent=t+r:this.mirror.innerText=" ",this.layout()}applyStyles(){const t=this.options.inputBoxStyles,n=t.inputBackground??"",r=t.inputForeground??"",o=t.inputBorder??"";this.element.style.backgroundColor=n,this.element.style.color=r,this.input.style.backgroundColor="inherit",this.input.style.color=r,this.element.style.border=`1px solid ${n8(o,"transparent")}`}layout(){if(!this.mirror)return;const t=this.cachedContentHeight;this.cachedContentHeight=ES(this.mirror),t!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(t){const n=this.inputElement,r=n.selectionStart,o=n.selectionEnd,s=n.value;r!==null&&o!==null&&(this.value=s.substr(0,r)+t+s.substr(o),n.setSelectionRange(r+1,r+1),this.layout())}dispose(){var t;this._hideMessage(),this.message=null,(t=this.actionbar)==null||t.dispose(),super.dispose()}};class TBn extends RAo{constructor(t,n,r){const o=U(12," or {0} for history","⇅"),s=U(13," ({0} for history)","⇅");super(t,n,r),this._onDidFocus=this._register(new at),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new at),this.onDidBlur=this._onDidBlur.event,this.history=this._register(new BAo(r.history,100));const a=()=>{if(r.showHistoryHint&&r.showHistoryHint()&&!this.placeholder.endsWith(o)&&!this.placeholder.endsWith(s)&&this.history.getHistory().length){const l=this.placeholder.endsWith(")")?o:s,d=this.placeholder+l;r.showPlaceholderOnFocus&&!wbe(this.input)?this.placeholder=d:this.setPlaceHolder(d)}};this.observer=new MutationObserver((l,d)=>{l.forEach(u=>{u.target.textContent||a()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>a()),this.onblur(this.input,()=>{const l=d=>{if(this.placeholder.endsWith(d)){const u=this.placeholder.slice(0,this.placeholder.length-d.length);return r.showPlaceholderOnFocus?this.placeholder=u:this.setPlaceHolder(u),!0}else return!1};l(s)||l(o)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(t){this.value&&(t||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let t=this.getNextValue();t&&(t=t===this.value?this.getNextValue():t),this.value=t??"",A3(this.value?this.value:U(14,"Cleared Input"))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let t=this.getPreviousValue();t&&(t=t===this.value?this.getPreviousValue():t),t&&(this.value=t,A3(this.value))}setPlaceHolder(t){super.setPlaceHolder(t),this.setTooltip(t)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let t=this.history.current();return t||(t=this.history.last(),this.history.next()),t}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}const IAo=U(1,"input");class QBn extends Y0{get onDidOptionChange(){return this._onDidOptionChange.event}get onKeyDown(){return this._onKeyDown.event}get onMouseDown(){return this._onMouseDown.event}get onCaseSensitiveKeyDown(){return this._onCaseSensitiveKeyDown.event}get onRegexKeyDown(){return this._onRegexKeyDown.event}constructor(t,n,r){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new ts),this.additionalToggles=[],this._onDidOptionChange=this._register(new at),this._onKeyDown=this._register(new at),this._onMouseDown=this._register(new at),this._onInput=this._register(new at),this._onKeyUp=this._register(new at),this._onCaseSensitiveKeyDown=this._register(new at),this._onRegexKeyDown=this._register(new at),this._lastHighlightFindOptions=0,this.placeholder=r.placeholder||"",this.validation=r.validation,this.label=r.label||IAo,this.showCommonFindToggles=!!r.showCommonFindToggles;const o=r.appendCaseSensitiveLabel||"",s=r.appendWholeWordsLabel||"",a=r.appendRegexLabel||"",l=!!r.flexibleHeight,d=!!r.flexibleWidth,u=r.flexibleMaxHeight;if(this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new TBn(this.domNode,n,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},showHistoryHint:r.showHistoryHint,flexibleHeight:l,flexibleWidth:d,flexibleMaxHeight:u,inputBoxStyles:r.inputBoxStyles,history:r.history})),this.showCommonFindToggles){const h=(r==null?void 0:r.hoverLifecycleOptions)||{groupId:"find-input"};this.regex=this._register(new xBn({appendTitle:a,isChecked:!1,hoverLifecycleOptions:h,...r.toggleStyles})),this._register(this.regex.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(m=>{this._onRegexKeyDown.fire(m)})),this.wholeWords=this._register(new LBn({appendTitle:s,isChecked:!1,hoverLifecycleOptions:h,...r.toggleStyles})),this._register(this.wholeWords.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new SBn({appendTitle:o,isChecked:!1,hoverLifecycleOptions:h,...r.toggleStyles})),this._register(this.caseSensitive.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(m=>{this._onCaseSensitiveKeyDown.fire(m)}));const g=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,m=>{if(m.equals(15)||m.equals(17)||m.equals(9)){const v=g.indexOf(this.domNode.ownerDocument.activeElement);if(v>=0){let f=-1;m.equals(17)?f=(v+1)%g.length:m.equals(15)&&(v===0?f=g.length-1:f=v-1),m.equals(9)?(g[v].blur(),this.inputBox.focus()):f>=0&&g[f].focus(),Qo.stop(m,!0)}}})}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(r==null?void 0:r.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),t==null||t.appendChild(this.domNode),this._register(wt(this.inputBox.inputElement,"compositionstart",h=>{this.imeSessionInProgress=!0})),this._register(wt(this.inputBox.inputElement,"compositionend",h=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,h=>this._onKeyDown.fire(h)),this.onkeyup(this.inputBox.inputElement,h=>this._onKeyUp.fire(h)),this.oninput(this.inputBox.inputElement,h=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,h=>this._onMouseDown.fire(h))}get onDidChange(){return this.inputBox.onDidChange}layout(t){this.inputBox.layout(),this.updateInputBoxPadding(t.collapsedFindWidget)}enable(){var t,n,r;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(t=this.regex)==null||t.enable(),(n=this.wholeWords)==null||n.enable(),(r=this.caseSensitive)==null||r.enable();for(const o of this.additionalToggles)o.enable()}disable(){var t,n,r;this.domNode.classList.add("disabled"),this.inputBox.disable(),(t=this.regex)==null||t.disable(),(n=this.wholeWords)==null||n.disable(),(r=this.caseSensitive)==null||r.disable();for(const o of this.additionalToggles)o.disable()}setFocusInputOnOptionClick(t){this.fixFocusOnOptionClickEnabled=t}setEnabled(t){t?this.enable():this.disable()}setAdditionalToggles(t){for(const n of this.additionalToggles)n.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new xt;for(const n of t??[])this.additionalTogglesDisposables.value.add(n),this.controls.appendChild(n.domNode),this.additionalTogglesDisposables.value.add(n.onChange(r=>{this._onDidOptionChange.fire(r),!r&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(n);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(t=!1){var n,r,o;t?this.inputBox.paddingRight=0:this.inputBox.paddingRight=(((n=this.caseSensitive)==null?void 0:n.width())??0)+(((r=this.wholeWords)==null?void 0:r.width())??0)+(((o=this.regex)==null?void 0:o.width())??0)+this.additionalToggles.reduce((s,a)=>s+a.width(),0)}getValue(){return this.inputBox.value}setValue(t){this.inputBox.value!==t&&(this.inputBox.value=t)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var t;return((t=this.caseSensitive)==null?void 0:t.checked)??!1}setCaseSensitive(t){this.caseSensitive&&(this.caseSensitive.checked=t)}getWholeWords(){var t;return((t=this.wholeWords)==null?void 0:t.checked)??!1}setWholeWords(t){this.wholeWords&&(this.wholeWords.checked=t)}getRegex(){var t;return((t=this.regex)==null?void 0:t.checked)??!1}setRegex(t){this.regex&&(this.regex.checked=t,this.validate())}focusOnCaseSensitive(){var t;(t=this.caseSensitive)==null||t.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(t){this.inputBox.showMessage(t)}clearMessage(){this.inputBox.hideMessage()}}const MAo=U(5,"input"),PAo=U(6,"Preserve Case");class FAo extends yL{constructor(t){super({icon:zt.preserveCase,title:PAo+t.appendTitle,isChecked:t.isChecked,hoverLifecycleOptions:t.hoverLifecycleOptions,inputActiveOptionBorder:t.inputActiveOptionBorder,inputActiveOptionForeground:t.inputActiveOptionForeground,inputActiveOptionBackground:t.inputActiveOptionBackground})}}class NAo extends Y0{get onDidOptionChange(){return this._onDidOptionChange.event}get onKeyDown(){return this._onKeyDown.event}get onPreserveCaseKeyDown(){return this._onPreserveCaseKeyDown.event}constructor(t,n,r,o){super(),this._showOptionButtons=r,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new at),this._onKeyDown=this._register(new at),this._onMouseDown=this._register(new at),this._onInput=this._register(new at),this._onKeyUp=this._register(new at),this._onPreserveCaseKeyDown=this._register(new at),this.contextViewProvider=n,this.placeholder=o.placeholder||"",this.validation=o.validation,this.label=o.label||MAo;const s=o.appendPreserveCaseLabel||"",a=o.history||new Set([]),l=!!o.flexibleHeight,d=!!o.flexibleWidth,u=o.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new TBn(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:a,showHistoryHint:o.showHistoryHint,flexibleHeight:l,flexibleWidth:d,flexibleMaxHeight:u,inputBoxStyles:o.inputBoxStyles})),this.preserveCase=this._register(new FAo({appendTitle:s,isChecked:!1,hoverLifecycleOptions:o.hoverLifecycleOptions,...o.toggleStyles})),this._register(this.preserveCase.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(m=>{this._onPreserveCaseKeyDown.fire(m)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const h=[this.preserveCase.domNode];this.onkeydown(this.domNode,m=>{if(m.equals(15)||m.equals(17)||m.equals(9)){const v=h.indexOf(this.domNode.ownerDocument.activeElement);if(v>=0){let f=-1;m.equals(17)?f=(v+1)%h.length:m.equals(15)&&(v===0?f=h.length-1:f=v-1),m.equals(9)?(h[v].blur(),this.inputBox.focus()):f>=0&&h[f].focus(),Qo.stop(m,!0)}}});const g=document.createElement("div");g.className="controls",g.style.display=this._showOptionButtons?"block":"none",g.appendChild(this.preserveCase.domNode),this.domNode.appendChild(g),t==null||t.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,m=>this._onKeyDown.fire(m)),this.onkeyup(this.inputBox.inputElement,m=>this._onKeyUp.fire(m)),this.oninput(this.inputBox.inputElement,m=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,m=>this._onMouseDown.fire(m))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(t){t?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(t){this.preserveCase.checked=t}focusOnPreserve(){this.preserveCase.focus()}validate(){var t;(t=this.inputBox)==null||t.validate()}set width(t){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=t+"px"}dispose(){super.dispose()}}var DBn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},BBn=function(e,t){return function(n,r){t(n,r,e)}};const Ktt=new yn("suggestWidgetVisible",!1,U(1698,"Whether suggestion are visible")),Jtt="historyNavigationWidgetFocus",RBn="historyNavigationForwardsEnabled",IBn="historyNavigationBackwardsEnabled";let s8;const Yle=[];function MBn(e,t){if(Yle.includes(t))throw new Error("Cannot register the same widget multiple times");Yle.push(t);const n=new xt,r=new yn(Jtt,!1).bindTo(e),o=new yn(RBn,!0).bindTo(e),s=new yn(IBn,!0).bindTo(e),a=()=>{r.set(!0),s8=t},l=()=>{r.set(!1),s8===t&&(s8=void 0)};return wbe(t.element)&&a(),n.add(t.onDidFocus(()=>a())),n.add(t.onDidBlur(()=>l())),n.add(Hn(()=>{Yle.splice(Yle.indexOf(t),1),l()})),{historyNavigationForwardsEnablement:o,historyNavigationBackwardsEnablement:s,dispose(){n.dispose()}}}let Jje=class extends QBn{constructor(t,n,r,o){super(t,n,r);const s=this._register(o.createScoped(this.inputBox.element));this._register(MBn(s,this.inputBox))}};Jje=DBn([BBn(3,Qi)],Jje);let eWe=class extends NAo{constructor(t,n,r,o,s=!1){super(t,n,s,r);const a=this._register(o.createScoped(this.inputBox.element));this._register(MBn(a,this.inputBox))}};eWe=DBn([BBn(3,Qi)],eWe);Nu.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:Ft.and(Ft.has(Jtt),Ft.equals(IBn,!0),Ft.not("isComposing"),Ktt.isEqualTo(!1)),primary:16,secondary:[528],handler:e=>{s8==null||s8.showPreviousValue()}});Nu.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:Ft.and(Ft.has(Jtt),Ft.equals(RBn,!0),Ft.not("isComposing"),Ktt.isEqualTo(!1)),primary:18,secondary:[530],handler:e=>{s8==null||s8.showNextValue()}});function lyt(e){var t,n;return((t=e.lookupKeybinding("history.showPrevious"))==null?void 0:t.getElectronAccelerator())==="Up"&&((n=e.lookupKeybinding("history.showNext"))==null?void 0:n.getElectronAccelerator())==="Down"}const cyt=Da("find-collapsed",zt.chevronRight,U(956,"Icon to indicate that the editor find widget is collapsed.")),dyt=Da("find-expanded",zt.chevronDown,U(957,"Icon to indicate that the editor find widget is expanded.")),UAo=Da("find-selection",zt.selection,U(958,"Icon for 'Find in Selection' in the editor find widget.")),jAo=Da("find-replace",zt.replace,U(959,"Icon for 'Replace' in the editor find widget.")),WAo=Da("find-replace-all",zt.replaceAll,U(960,"Icon for 'Replace All' in the editor find widget.")),VAo=Da("find-previous-match",zt.arrowUp,U(961,"Icon for 'Find Previous' in the editor find widget.")),zAo=Da("find-next-match",zt.arrowDown,U(962,"Icon for 'Find Next' in the editor find widget.")),HAo=U(963,"Find / Replace"),$Ao=U(964,"Find"),XAo=U(965,"Find"),GAo=U(966,"Previous Match"),YAo=U(967,"Next Match"),ZAo=U(968,"Find in Selection"),qAo=U(969,"Close"),KAo=U(970,"Replace"),JAo=U(971,"Replace"),e4o=U(972,"Replace"),t4o=U(973,"Replace All"),n4o=U(974,"Toggle Replace"),i4o=U(975,"Only the first {0} results are highlighted, but all find operations work on the entire text.",b9),r4o=U(976,"{0} of {1}"),uyt=U(977,"No results"),Aw=419,o4o=275,s4o=o4o-54;let SX=69;const a4o=33,hyt=Tr?256:2048;class gxe{constructor(t){this.afterLineNumber=t,this.heightInPx=a4o,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function fyt(e,t,n){const r=!!t.match(/\n/);if(n&&r&&n.selectionStart>0){e.stopPropagation();return}}function gyt(e,t,n){const r=!!t.match(/\n/);if(n&&r&&n.selectionEndthis._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(h=>this._onStateChanged(h))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(h=>{if(h.hasChanged(104)&&(this._codeEditor.getOption(104)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),h.hasChanged(165)&&this._tryUpdateWidgetWidth(),h.hasChanged(2)&&this.updateAccessibilitySupport(),h.hasChanged(50)){const g=this._codeEditor.getOption(50).loop;this._state.change({loop:g},!1);const m=this._codeEditor.getOption(50).addExtraSpaceOnTop;m&&!this._viewZone&&(this._viewZone=new gxe(0),this._showViewZone()),!m&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(async()=>{if(this._isVisible){const h=await this._controller.getGlobalBufferTerm();h&&h!==this._state.searchString&&(this._state.change({searchString:h},!1),this._findInput.select())}})),this._findInputFocused=O3e.bindTo(a),this._findFocusTracker=this._register(uA(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=qtt.bindTo(a),this._replaceFocusTracker=this._register(uA(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(50).addExtraSpaceOnTop&&(this._viewZone=new gxe(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(h=>{if(h.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return Zve.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(t){if(t.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(t.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),t.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),t.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(104)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=s0(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(t.isRevealed||t.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),t.isRegex&&this._findInput.setRegex(this._state.isRegex),t.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),t.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),t.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),t.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),t.searchString||t.matchesCount||t.matchesPosition){const n=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",n),this._updateMatchesCount(),this._updateButtons()}(t.searchString||t.currentMatch)&&this._layoutViewZone(),t.updateHistory&&this._delayedUpdateHistory(),t.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,zi)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){var n;this._matchesCount.style.minWidth=SX+"px",this._state.matchesCount>=b9?this._matchesCount.title=i4o:this._matchesCount.title="",(n=this._matchesCount.firstChild)==null||n.remove();let t;if(this._state.matchesCount>0){let r=String(this._state.matchesCount);this._state.matchesCount>=b9&&(r+="+");let o=String(this._state.matchesPosition);o==="0"&&(o="?"),t=oR(r4o,o,r)}else t=uyt;this._matchesCount.appendChild(document.createTextNode(t)),um(this._getAriaLabel(t,this._state.currentMatch,this._state.searchString)),SX=Math.max(SX,this._matchesCount.clientWidth)}_getAriaLabel(t,n,r){if(t===uyt)return r===""?U(978,"{0} found",t):U(979,"{0} found for '{1}'",t,r);if(n){const o=U(980,"{0} found for '{1}', at {2}",t,r,n.startLineNumber+":"+n.startColumn),s=this._codeEditor.getModel();return s&&n.startLineNumber<=s.getLineCount()&&n.startLineNumber>=1?`${s.getLineContent(n.startLineNumber)}, ${o}`:o}return U(981,"{0} found for '{1}'",t,r)}_updateToggleSelectionFindButton(){const t=this._codeEditor.getSelection(),n=t?t.startLineNumber!==t.endLineNumber||t.startColumn!==t.endColumn:!1,r=this._toggleSelectionFind.checked;this._isVisible&&(r||n)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const t=this._state.searchString.length>0,n=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&t&&n&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&t&&n&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&t),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&t),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const r=!this._codeEditor.getOption(104);this._toggleReplaceBtn.setEnabled(this._isVisible&&r)}_reveal(){if(this._revealTimeouts.forEach(t=>{clearTimeout(t)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const t=this._codeEditor.getSelection();switch(this._codeEditor.getOption(50).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const r=!!t&&t.startLineNumber!==t.endLineNumber;this._toggleSelectionFind.checked=r;break}}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let n=!0;if(this._codeEditor.getOption(50).seedSearchStringFromSelection&&t){const r=this._codeEditor.getDomNode();if(r){const o=Kl(r),s=this._codeEditor.getScrolledVisiblePosition(t.getStartPosition()),a=o.left+(s?s.left:0),l=s?s.top:0;if(this._viewZone&&lt.startLineNumber&&(n=!1);const d=bEn(this._domNode).left;a>d&&(n=!1);const u=this._codeEditor.getScrolledVisiblePosition(t.getEndPosition());o.left+(u?u.left:0)>d&&(n=!1)}}}this._showViewZone(n)}}_hide(t){this._revealTimeouts.forEach(n=>{clearTimeout(n)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),t&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(t){if(!this._codeEditor.getOption(50).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const r=this._viewZone;this._viewZoneId!==void 0||!r||this._codeEditor.changeViewZones(o=>{r.heightInPx=this._getHeight(),this._viewZoneId=o.addZone(r),this._codeEditor.setScrollTop(t||this._codeEditor.getScrollTop()+r.heightInPx)})}_showViewZone(t=!0){if(!this._isVisible||!this._codeEditor.getOption(50).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new gxe(0));const r=this._viewZone;this._codeEditor.changeViewZones(o=>{if(this._viewZoneId!==void 0){const s=this._getHeight();if(s===r.heightInPx)return;const a=s-r.heightInPx;r.heightInPx=s,o.layoutZone(this._viewZoneId),t&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+a);return}else{let s=this._getHeight();if(s-=this._codeEditor.getOption(96).top,s<=0)return;r.heightInPx=s,this._viewZoneId=o.addZone(r),t&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+s)}})}_removeViewZone(){this._codeEditor.changeViewZones(t=>{this._viewZoneId!==void 0&&(t.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!this._domNode.isConnected)return;const t=this._codeEditor.getLayoutInfo();if(t.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const r=t.width,o=t.minimap.minimapWidth;let s=!1,a=!1,l=!1;if(this._resized&&s0(this._domNode)>Aw){this._domNode.style.maxWidth=`${r-28-o-15}px`,this._replaceInput.width=s0(this._findInput.domNode);return}if(Aw+28+o>=r&&(a=!0),Aw+28+o-SX>=r&&(l=!0),Aw+28+o-SX>=r+50&&(s=!0),this._domNode.classList.toggle("collapsed-find-widget",s),this._domNode.classList.toggle("narrow-find-widget",l),this._domNode.classList.toggle("reduced-find-widget",a),!l&&!s&&(this._domNode.style.maxWidth=`${r-28-o-15}px`),this._findInput.layout({collapsedFindWidget:s,narrowFindWidget:l,reducedFindWidget:a}),this._resized){const d=this._findInput.inputBox.element.clientWidth;d>0&&(this._replaceInput.width=d)}else this._isReplaceVisible&&(this._replaceInput.width=s0(this._findInput.domNode))}_getHeight(){let t=0;return t+=4,t+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(t+=4,t+=this._replaceInput.inputBox.height+2),t+=4,t}_tryUpdateHeight(){const t=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===t?!1:(this._cachedHeight=t,this._domNode.style.height=`${t}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const t=this._codeEditor.getSelections();t.map(n=>{n.endColumn===1&&n.endLineNumber>n.startLineNumber&&(n=n.setEndPosition(n.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(n.endLineNumber-1)));const r=this._state.currentMatch;return n.startLineNumber!==n.endLineNumber&&!Ee.equalsRange(n,r)?n:null}).filter(n=>!!n),t.length&&this._state.change({searchScope:t},!0)}}_onFindInputMouseDown(t){t.middleButton&&t.stopPropagation()}_onFindInputKeyDown(t){if(t.equals(hyt|3))if(this._keybindingService.dispatchEvent(t,t.target)){t.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(` `),t.preventDefault();return}if(t.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),t.preventDefault();return}if(t.equals(2066)){this._codeEditor.focus(),t.preventDefault();return}if(t.equals(16))return fyt(t,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(t.equals(18))return gyt(t,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(t){if(t.equals(hyt|3))if(this._keybindingService.dispatchEvent(t,t.target)){t.preventDefault();return}else{this._replaceInput.inputBox.insertAtCursor(` @@ -2312,7 +2312,7 @@ ${Y4(t)} `),this.list.style(t)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}},UD.InstanceCount=0,UD);var Ik;(function(e){e[e.Expanded=0]="Expanded",e[e.Collapsed=1]="Collapsed",e[e.PreserveOrExpanded=2]="PreserveOrExpanded",e[e.PreserveOrCollapsed=3]="PreserveOrCollapsed"})(Ik||(Ik={}));var pQ;(function(e){e[e.Unknown=0]="Unknown",e[e.Twistie=1]="Twistie",e[e.Element=2]="Element",e[e.Filter=3]="Filter"})(pQ||(pQ={}));class Vk extends Error{constructor(t,n){super(`TreeError [${t}] ${n}`)}}class rnt{constructor(t){this.fn=t,this._map=new WeakMap}map(t){let n=this._map.get(t);return n||(n=this.fn(t),this._map.set(t,n)),n}}class jx{constructor(t,n,r,o){this.originalStart=t,this.originalLength=n,this.modifiedStart=r,this.modifiedLength=o}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}class byt{constructor(t){this.source=t}getElements(){const t=this.source,n=new Int32Array(t.length);for(let r=0,o=t.length;r0||this.m_modifiedCount>0)&&this.m_changes.push(new jx(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(t,n){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),this.m_originalCount++}AddModifiedElement(t,n){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,n),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 SO{constructor(t,n,r=null){this.ContinueProcessingPredicate=r,this._originalSequence=t,this._modifiedSequence=n;const[o,s,a]=SO._getElements(t),[l,d,u]=SO._getElements(n);this._hasStrings=a&&u,this._originalStringElements=o,this._originalElementsOrHash=s,this._modifiedStringElements=l,this._modifiedElementsOrHash=d,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(t){return t.length>0&&typeof t[0]=="string"}static _getElements(t){const n=t.getElements();if(SO._isStringArray(n)){const r=new Int32Array(n.length);for(let o=0,s=n.length;o=t&&o>=r&&this.ElementsAreEqual(n,o);)n--,o--;if(t>n||r>o){let g;return r<=o?(xP.Assert(t===n+1,"originalStart should only be one more than originalEnd"),g=[new jx(t,0,r,o-r+1)]):t<=n?(xP.Assert(r===o+1,"modifiedStart should only be one more than modifiedEnd"),g=[new jx(t,n-t+1,r,0)]):(xP.Assert(t===n+1,"originalStart should only be one more than originalEnd"),xP.Assert(r===o+1,"modifiedStart should only be one more than modifiedEnd"),g=[]),g}const a=[0],l=[0],d=this.ComputeRecursionPoint(t,n,r,o,a,l,s),u=a[0],h=l[0];if(d!==null)return d;if(!s[0]){const g=this.ComputeDiffRecursive(t,u,r,h,s);let m=[];return s[0]?m=[new jx(u+1,n-(u+1)+1,h+1,o-(h+1)+1)]:m=this.ComputeDiffRecursive(u+1,n,h+1,o,s),this.ConcatenateChanges(g,m)}return[new jx(t,n-t+1,r,o-r+1)]}WALKTRACE(t,n,r,o,s,a,l,d,u,h,g,m,v,f,k,A,p,b){let w=null,O=null,y=new wyt,C=n,_=r,S=v[0]-A[0]-o,L=-1073741824,E=this.m_forwardHistory.length-1;do{const T=S+t;T===C||T<_&&u[T-1]=0&&(u=this.m_forwardHistory[E],t=u[0],C=1,_=u.length-1)}while(--E>=-1);if(w=y.getReverseChanges(),b[0]){let T=v[0]+1,D=A[0]+1;if(w!==null&&w.length>0){const P=w[w.length-1];T=Math.max(T,P.getOriginalEnd()),D=Math.max(D,P.getModifiedEnd())}O=[new jx(T,m-T+1,D,k-D+1)]}else{y=new wyt,C=a,_=l,S=v[0]-A[0]-d,L=1073741824,E=p?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const T=S+s;T===C||T<_&&h[T-1]>=h[T+1]?(g=h[T+1]-1,f=g-S-d,g>L&&y.MarkNextChange(),L=g+1,y.AddOriginalElement(g+1,f+1),S=T+1-s):(g=h[T-1],f=g-S-d,g>L&&y.MarkNextChange(),L=g,y.AddModifiedElement(g+1,f+1),S=T-1-s),E>=0&&(h=this.m_reverseHistory[E],s=h[0],C=1,_=h.length-1)}while(--E>=-1);O=y.getChanges()}return this.ConcatenateChanges(w,O)}ComputeRecursionPoint(t,n,r,o,s,a,l){let d=0,u=0,h=0,g=0,m=0,v=0;t--,r--,s[0]=0,a[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const f=n-t+(o-r),k=f+1,A=new Int32Array(k),p=new Int32Array(k),b=o-r,w=n-t,O=t-r,y=n-o,_=(w-b)%2===0;A[b]=t,p[w]=n,l[0]=!1;for(let S=1;S<=f/2+1;S++){let L=0,E=0;h=this.ClipDiagonalBound(b-S,S,b,k),g=this.ClipDiagonalBound(b+S,S,b,k);for(let D=h;D<=g;D+=2){D===h||DL+E&&(L=d,E=u),!_&&Math.abs(D-w)<=S-1&&d>=p[D])return s[0]=d,a[0]=u,P<=p[D]&&S<=1448?this.WALKTRACE(b,h,g,O,w,m,v,y,A,p,d,n,s,u,o,a,_,l):null}const T=(L-t+(E-r)-S)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(L,T))return l[0]=!0,s[0]=L,a[0]=E,T>0&&S<=1448?this.WALKTRACE(b,h,g,O,w,m,v,y,A,p,d,n,s,u,o,a,_,l):(t++,r++,[new jx(t,n-t+1,r,o-r+1)]);m=this.ClipDiagonalBound(w-S,S,w,k),v=this.ClipDiagonalBound(w+S,S,w,k);for(let D=m;D<=v;D+=2){D===m||D=p[D+1]?d=p[D+1]-1:d=p[D-1],u=d-(D-w)-y;const P=d;for(;d>t&&u>r&&this.ElementsAreEqual(d,u);)d--,u--;if(p[D]=d,_&&Math.abs(D-b)<=S&&d<=A[D])return s[0]=d,a[0]=u,P>=A[D]&&S<=1448?this.WALKTRACE(b,h,g,O,w,m,v,y,A,p,d,n,s,u,o,a,_,l):null}if(S<=1447){let D=new Int32Array(g-h+2);D[0]=b-h+1,EP.Copy2(A,h,D,1,g-h+1),this.m_forwardHistory.push(D),D=new Int32Array(v-m+2),D[0]=w-m+1,EP.Copy2(p,m,D,1,v-m+1),this.m_reverseHistory.push(D)}}return this.WALKTRACE(b,h,g,O,w,m,v,y,A,p,d,n,s,u,o,a,_,l)}PrettifyChanges(t){for(let n=0;n0,l=r.modifiedLength>0;for(;r.originalStart+r.originalLength=0;n--){const r=t[n];let o=0,s=0;if(n>0){const g=t[n-1];o=g.originalStart+g.originalLength,s=g.modifiedStart+g.modifiedLength}const a=r.originalLength>0,l=r.modifiedLength>0;let d=0,u=this._boundaryScore(r.originalStart,r.originalLength,r.modifiedStart,r.modifiedLength);for(let g=1;;g++){const m=r.originalStart-g,v=r.modifiedStart-g;if(mu&&(u=k,d=g)}r.originalStart-=d,r.modifiedStart-=d;const h=[null];if(n>0&&this.ChangesOverlap(t[n-1],t[n],h)){t[n-1]=h[0],t.splice(n,1),n++;continue}}if(this._hasStrings)for(let n=1,r=t.length;n0&&v>d&&(d=v,u=g,h=m)}return d>0?[u,h]:null}_contiguousSequenceScore(t,n,r){let o=0;for(let s=0;s=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[t])}_OriginalRegionIsBoundary(t,n){if(this._OriginalIsBoundary(t)||this._OriginalIsBoundary(t-1))return!0;if(n>0){const r=t+n;if(this._OriginalIsBoundary(r-1)||this._OriginalIsBoundary(r))return!0}return!1}_ModifiedIsBoundary(t){return t<=0||t>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[t])}_ModifiedRegionIsBoundary(t,n){if(this._ModifiedIsBoundary(t)||this._ModifiedIsBoundary(t-1))return!0;if(n>0){const r=t+n;if(this._ModifiedIsBoundary(r-1)||this._ModifiedIsBoundary(r))return!0}return!1}_boundaryScore(t,n,r,o){const s=this._OriginalRegionIsBoundary(t,n)?1:0,a=this._ModifiedRegionIsBoundary(r,o)?1:0;return s+a}ConcatenateChanges(t,n){const r=[];if(t.length===0||n.length===0)return n.length>0?n:t;if(this.ChangesOverlap(t[t.length-1],n[0],r)){const o=new Array(t.length+n.length-1);return EP.Copy(t,0,o,0,t.length-1),o[t.length-1]=r[0],EP.Copy(n,1,o,t.length,n.length-1),o}else{const o=new Array(t.length+n.length);return EP.Copy(t,0,o,0,t.length),EP.Copy(n,0,o,t.length,n.length),o}}ChangesOverlap(t,n,r){if(xP.Assert(t.originalStart<=n.originalStart,"Left change is not less than or equal to right change"),xP.Assert(t.modifiedStart<=n.modifiedStart,"Left change is not less than or equal to right change"),t.originalStart+t.originalLength>=n.originalStart||t.modifiedStart+t.modifiedLength>=n.modifiedStart){const o=t.originalStart;let s=t.originalLength;const a=t.modifiedStart;let l=t.modifiedLength;return t.originalStart+t.originalLength>=n.originalStart&&(s=n.originalStart+n.originalLength-t.originalStart),t.modifiedStart+t.modifiedLength>=n.modifiedStart&&(l=n.modifiedStart+n.modifiedLength-t.modifiedStart),r[0]=new jx(o,s,a,l),!0}else return r[0]=null,!1}ClipDiagonalBound(t,n,r,o){if(t>=0&&t"u"?!1:r.collapseByDefault,this.allowNonCollapsibleParents=r.allowNonCollapsibleParents??!1,this.filter=r.filter,this.autoExpandSingleChildren=typeof r.autoExpandSingleChildren>"u"?!1:r.autoExpandSingleChildren,this.root={parent:void 0,element:n,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(t,n,r=to.empty(),o={}){if(t.length===0)throw new Vk(this.user,"Invalid tree location");o.diffIdentityProvider?this.spliceSmart(o.diffIdentityProvider,t,n,r,o):this.spliceSimple(t,n,r,o)}spliceSmart(t,n,r,o=to.empty(),s,a=s.diffDepth??0){const{parentNode:l}=this.getParentNodeWithListIndex(n);if(!l.lastDiffIds)return this.spliceSimple(n,r,o,s);const d=[...o],u=n[n.length-1],h=new SO({getElements:()=>l.lastDiffIds},{getElements:()=>[...l.children.slice(0,u),...d,...l.children.slice(u+r)].map(k=>t.getId(k.element).toString())}).ComputeDiff(!1);if(h.quitEarly)return l.lastDiffIds=void 0,this.spliceSimple(n,r,d,s);const g=n.slice(0,-1),m=(k,A,p)=>{if(a>0)for(let b=0;bp.originalStart-A.originalStart))m(v,f,v-(k.originalStart+k.originalLength)),v=k.originalStart,f=k.modifiedStart-u,this.spliceSimple([...g,v],k.originalLength,to.slice(d,f,f+k.modifiedLength),s);m(v,f,v)}spliceSimple(t,n,r=to.empty(),{onDidCreateNode:o,onDidDeleteNode:s,diffIdentityProvider:a}){const{parentNode:l,listIndex:d,revealed:u,visible:h}=this.getParentNodeWithListIndex(t),g=[],m=to.map(r,y=>this.createTreeNode(y,l,l.visible?1:0,u,g,o)),v=t[t.length-1];let f=0;for(let y=v;y>=0&&ya.getId(y.element).toString())):l.lastDiffIds=l.children.map(y=>a.getId(y.element).toString()):l.lastDiffIds=void 0;let w=0;for(const y of b)y.visible&&w++;if(w!==0)for(let y=v+k.length;y0&&s){const y=C=>{s(C),C.children.forEach(y)};b.forEach(y)}if(u&&h){const y=b.reduce((C,_)=>C+(_.visible?_.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(l,p-y),this._onDidSpliceRenderedNodes.fire({start:d,deleteCount:y,elements:g})}this._onDidSpliceModel.fire({insertedNodes:k,deletedNodes:b});let O=l;for(;O;){if(O.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}O=O.parent}}rerender(t){if(t.length===0)throw new Vk(this.user,"Invalid tree location");const{node:n,listIndex:r,revealed:o}=this.getTreeNodeWithListIndex(t);n.visible&&o&&this._onDidSpliceRenderedNodes.fire({start:r,deleteCount:1,elements:[n]})}has(t){return this.hasTreeNode(t)}getListIndex(t){const{listIndex:n,visible:r,revealed:o}=this.getTreeNodeWithListIndex(t);return r&&o?n:-1}getListRenderCount(t){return this.getTreeNode(t).renderNodeCount}isCollapsible(t){return this.getTreeNode(t).collapsible}setCollapsible(t,n){const r=this.getTreeNode(t);typeof n>"u"&&(n=!r.collapsible);const o={collapsible:n};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,o))}isCollapsed(t){return this.getTreeNode(t).collapsed}setCollapsed(t,n,r){const o=this.getTreeNode(t);typeof n>"u"&&(n=!o.collapsed);const s={collapsed:n,recursive:r||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,s))}_setCollapseState(t,n){const{node:r,listIndex:o,revealed:s}=this.getTreeNodeWithListIndex(t),a=this._setListNodeCollapseState(r,o,s,n);if(r!==this.root&&this.autoExpandSingleChildren&&a&&!kxe(n)&&r.collapsible&&!r.collapsed&&!n.recursive){let l=-1;for(let d=0;d-1){l=-1;break}else l=d;l>-1&&this._setCollapseState([...t,l],n)}return a}_setListNodeCollapseState(t,n,r,o){const s=this._setNodeCollapseState(t,o,!1);if(!r||!t.visible||!s)return s;const a=t.renderNodeCount,l=this.updateNodeAfterCollapseChange(t),d=a-(n===-1?0:1);return this._onDidSpliceRenderedNodes.fire({start:n+1,deleteCount:d,elements:l.slice(1)}),s}_setNodeCollapseState(t,n,r){let o;if(t===this.root?o=!1:(kxe(n)?(o=t.collapsible!==n.collapsible,t.collapsible=n.collapsible):t.collapsible?(o=t.collapsed!==n.collapsed,t.collapsed=n.collapsed):o=!1,o&&this._onDidChangeCollapseState.fire({node:t,deep:r})),!kxe(n)&&n.recursive)for(const s of t.children)o=this._setNodeCollapseState(s,n,!0)||o;return o}expandTo(t){this.eventBufferer.bufferEvents(()=>{let n=this.getTreeNode(t);for(;n.parent;)n=n.parent,t=t.slice(0,t.length-1),n.collapsed&&this._setCollapseState(t,{collapsed:!1,recursive:!1})})}refilter(){const t=this.root.renderNodeCount,n=this.updateNodeAfterFilterChange(this.root);this._onDidSpliceRenderedNodes.fire({start:0,deleteCount:t,elements:n}),this.refilterDelayer.cancel()}createTreeNode(t,n,r,o,s,a){const l={parent:n,element:t.element,children:[],depth:n.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof t.collapsible=="boolean"?t.collapsible:typeof t.collapsed<"u",collapsed:typeof t.collapsed>"u"?this.collapseByDefault:t.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},d=this._filterNode(l,r);l.visibility=d,o&&s.push(l);const u=t.children||to.empty(),h=o&&d!==0&&!l.collapsed;let g=0,m=1;for(const v of u){const f=this.createTreeNode(v,l,d,h,s,a);l.children.push(f),m+=f.renderNodeCount,f.visible&&(f.visibleChildIndex=g++)}return this.allowNonCollapsibleParents||(l.collapsible=l.collapsible||l.children.length>0),l.visibleChildrenCount=g,l.visible=d===2?g>0:d===1,l.visible?l.collapsed||(l.renderNodeCount=m):(l.renderNodeCount=0,o&&s.pop()),a==null||a(l),l}updateNodeAfterCollapseChange(t){const n=t.renderNodeCount,r=[];return this._updateNodeAfterCollapseChange(t,r),this._updateAncestorsRenderNodeCount(t.parent,r.length-n),r}_updateNodeAfterCollapseChange(t,n){if(t.visible===!1)return 0;if(n.push(t),t.renderNodeCount=1,!t.collapsed)for(const r of t.children)t.renderNodeCount+=this._updateNodeAfterCollapseChange(r,n);return this._onDidChangeRenderNodeCount.fire(t),t.renderNodeCount}updateNodeAfterFilterChange(t){const n=t.renderNodeCount,r=[];return this._updateNodeAfterFilterChange(t,t.visible?1:0,r),this._updateAncestorsRenderNodeCount(t.parent,r.length-n),r}_updateNodeAfterFilterChange(t,n,r,o=!0){let s;if(t!==this.root){if(s=this._filterNode(t,n),s===0)return t.visible=!1,t.renderNodeCount=0,!1;o&&r.push(t)}const a=r.length;t.renderNodeCount=t===this.root?0:1;let l=!1;if(!t.collapsed||s!==0){let d=0;for(const u of t.children)l=this._updateNodeAfterFilterChange(u,s,r,o&&!t.collapsed)||l,u.visible&&(u.visibleChildIndex=d++);t.visibleChildrenCount=d}else t.visibleChildrenCount=0;return t!==this.root&&(t.visible=s===2?l:s===1,t.visibility=s),t.visible?t.collapsed||(t.renderNodeCount+=r.length-a):(t.renderNodeCount=0,o&&r.pop()),this._onDidChangeRenderNodeCount.fire(t),t.visible}_updateAncestorsRenderNodeCount(t,n){if(n!==0)for(;t;)t.renderNodeCount+=n,this._onDidChangeRenderNodeCount.fire(t),t=t.parent}_filterNode(t,n){const r=this.filter?this.filter.filter(t.element,n):1;return typeof r=="boolean"?(t.filterData=void 0,r?1:0):Jie(r)?(t.filterData=r.data,LR(r.visibility)):(t.filterData=void 0,LR(r))}hasTreeNode(t,n=this.root){if(!t||t.length===0)return!0;const[r,...o]=t;return r<0||r>n.children.length?!1:this.hasTreeNode(o,n.children[r])}getTreeNode(t,n=this.root){if(!t||t.length===0)return n;const[r,...o]=t;if(r<0||r>n.children.length)throw new Vk(this.user,"Invalid tree location");return this.getTreeNode(o,n.children[r])}getTreeNodeWithListIndex(t){if(t.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:n,listIndex:r,revealed:o,visible:s}=this.getParentNodeWithListIndex(t),a=t[t.length-1];if(a<0||a>n.children.length)throw new Vk(this.user,"Invalid tree location");const l=n.children[a];return{node:l,listIndex:r,revealed:o,visible:s&&l.visible}}getParentNodeWithListIndex(t,n=this.root,r=0,o=!0,s=!0){const[a,...l]=t;if(a<0||a>n.children.length)throw new Vk(this.user,"Invalid tree location");for(let d=0;dn.element)),this.data=t}}function vxe(e){return e instanceof zie?new tpo(e):e}class npo{constructor(t,n){this.modelProvider=t,this.dnd=n,this.autoExpandDisposable=ft.None,this.disposables=new xt}getDragURI(t){return this.dnd.getDragURI(t.element)}getDragLabel(t,n){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(t.map(r=>r.element),n)}onDragStart(t,n){var r,o;(o=(r=this.dnd).onDragStart)==null||o.call(r,vxe(t),n)}onDragOver(t,n,r,o,s,a=!0){const l=this.dnd.onDragOver(vxe(t),n&&n.element,r,o,s),d=this.autoExpandNode!==n;if(d&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=n),typeof n>"u")return l;if(d&&typeof l!="boolean"&&l.autoExpand&&(this.autoExpandDisposable=B8(()=>{const v=this.modelProvider(),f=v.getNodeLocation(n);v.isCollapsed(f)&&v.setCollapsed(f,!1),this.autoExpandNode=void 0},500,this.disposables)),typeof l=="boolean"||!l.accept||typeof l.bubble>"u"||l.feedback){if(!a){const v=typeof l=="boolean"?l:l.accept,f=typeof l=="boolean"?void 0:l.effect;return{accept:v,effect:f,feedback:[r]}}return l}if(l.bubble===1){const v=this.modelProvider(),f=v.getNodeLocation(n),k=v.getParentNodeLocation(f),A=v.getNode(k),p=k&&v.getListIndex(k);return this.onDragOver(t,A,p,o,s,!1)}const u=this.modelProvider(),h=u.getNodeLocation(n),g=u.getListIndex(h),m=u.getListRenderCount(h);return{...l,feedback:Xg(g,g+m)}}drop(t,n,r,o,s){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(vxe(t),n&&n.element,r,o,s)}onDragEnd(t){var n,r;(r=(n=this.dnd).onDragEnd)==null||r.call(n,t)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}function ipo(e,t,n){return n&&{...n,identityProvider:n.identityProvider&&{getId(r){return n.identityProvider.getId(r.element)}},dnd:n.dnd&&t.add(new npo(e,n.dnd)),multipleSelectionController:n.multipleSelectionController&&{isSelectionSingleChangeEvent(r){return n.multipleSelectionController.isSelectionSingleChangeEvent({...r,element:r.element})},isSelectionRangeChangeEvent(r){return n.multipleSelectionController.isSelectionRangeChangeEvent({...r,element:r.element})}},accessibilityProvider:n.accessibilityProvider&&{...n.accessibilityProvider,getSetSize(r){const o=e(),s=o.getNodeLocation(r),a=o.getParentNodeLocation(s);return o.getNode(a).visibleChildrenCount},getPosInSet(r){return r.visibleChildIndex+1},isChecked:n.accessibilityProvider&&n.accessibilityProvider.isChecked?r=>n.accessibilityProvider.isChecked(r.element):void 0,getRole:n.accessibilityProvider&&n.accessibilityProvider.getRole?r=>n.accessibilityProvider.getRole(r.element):()=>"treeitem",getAriaLabel(r){return n.accessibilityProvider.getAriaLabel(r.element)},getWidgetAriaLabel(){return n.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:n.accessibilityProvider&&n.accessibilityProvider.getWidgetRole?()=>n.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:n.accessibilityProvider&&n.accessibilityProvider.getAriaLevel?r=>n.accessibilityProvider.getAriaLevel(r.element):r=>r.depth,getActiveDescendantId:n.accessibilityProvider.getActiveDescendantId&&(r=>n.accessibilityProvider.getActiveDescendantId(r.element))},keyboardNavigationLabelProvider:n.keyboardNavigationLabelProvider&&{...n.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(r){return n.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(r.element)}}}}class ont{constructor(t){this.delegate=t}getHeight(t){return this.delegate.getHeight(t.element)}getTemplateId(t){return this.delegate.getTemplateId(t.element)}hasDynamicHeight(t){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(t.element)}setDynamicHeight(t,n){var r,o;(o=(r=this.delegate).setDynamicHeight)==null||o.call(r,t.element,n)}}var xR;(function(e){e.None="none",e.OnHover="onHover",e.Always="always"})(xR||(xR={}));class rpo{get elements(){return this._elements}constructor(t,n=[]){this._elements=n,this.disposables=new xt,this.onDidChange=an.forEach(t,r=>this._elements=r,this.disposables)}dispose(){this.disposables.dispose()}}const iU=class iU{constructor(t,n,r,o,s,a={}){var l;this.renderer=t,this.model=n,this.activeNodes=o,this.renderedIndentGuides=s,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=iU.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=ft.None,this.disposables=new xt,this.templateId=t.templateId,this.updateOptions(a),an.map(r,d=>d.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(l=t.onDidChangeTwistieState)==null||l.call(t,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(t={}){if(typeof t.indent<"u"){const n=Zg(t.indent,0,40);if(n!==this.indent){this.indent=n;for(const[r,o]of this.renderedNodes)o.indentSize=iU.DefaultIndent+(r.depth-1)*this.indent,this.renderTreeElement(r,o)}}if(typeof t.renderIndentGuides<"u"){const n=t.renderIndentGuides!==xR.None;if(n!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=n;for(const[r,o]of this.renderedNodes)this._renderIndentGuides(r,o);if(this.indentGuidesDisposable.dispose(),n){const r=new xt;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,r),this.indentGuidesDisposable=r,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof t.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=t.hideTwistiesOfChildlessElements)}renderTemplate(t){const n=Xt(t,tn(".monaco-tl-row")),r=Xt(n,tn(".monaco-tl-indent")),o=Xt(n,tn(".monaco-tl-twistie")),s=Xt(n,tn(".monaco-tl-contents")),a=this.renderer.renderTemplate(s);return{container:t,indent:r,twistie:o,indentGuidesDisposable:ft.None,indentSize:0,templateData:a}}renderElement(t,n,r,o){r.indentSize=iU.DefaultIndent+(t.depth-1)*this.indent,this.renderedNodes.set(t,r),this.renderedElements.set(t.element,t),this.renderTreeElement(t,r),this.renderer.renderElement(t,n,r.templateData,{...o,indent:r.indentSize})}disposeElement(t,n,r,o){var s,a;r.indentGuidesDisposable.dispose(),(a=(s=this.renderer).disposeElement)==null||a.call(s,t,n,r.templateData,{...o,indent:r.indentSize}),typeof(o==null?void 0:o.height)=="number"&&(this.renderedNodes.delete(t),this.renderedElements.delete(t.element))}disposeTemplate(t){this.renderer.disposeTemplate(t.templateData)}onDidChangeTwistieState(t){const n=this.renderedElements.get(t);n&&this.onDidChangeNodeTwistieState(n)}onDidChangeNodeTwistieState(t){const n=this.renderedNodes.get(t);n&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(t,n))}renderTreeElement(t,n){n.twistie.style.paddingLeft=`${n.indentSize}px`,n.indent.style.width=`${n.indentSize+this.indent-16}px`,t.collapsible?n.container.setAttribute("aria-expanded",String(!t.collapsed)):n.container.removeAttribute("aria-expanded"),n.twistie.classList.remove(...fi.asClassNameArray(zt.treeItemExpanded));let r=!1;this.renderer.renderTwistie&&(r=this.renderer.renderTwistie(t.element,n.twistie)),t.collapsible&&(!this.hideTwistiesOfChildlessElements||t.visibleChildrenCount>0)?(r||n.twistie.classList.add(...fi.asClassNameArray(zt.treeItemExpanded)),n.twistie.classList.add("collapsible"),n.twistie.classList.toggle("collapsed",t.collapsed)):n.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(t,n)}_renderIndentGuides(t,n){if(uh(n.indent),n.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const r=new xt;for(;;){const o=this.model.getNodeLocation(t),s=this.model.getParentNodeLocation(o);if(!s)break;const a=this.model.getNode(s),l=tn(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(a)&&l.classList.add("active"),n.indent.childElementCount===0?n.indent.appendChild(l):n.indent.insertBefore(l,n.indent.firstElementChild),this.renderedIndentGuides.add(a,l),r.add(Hn(()=>this.renderedIndentGuides.delete(a,l))),t=a}n.indentGuidesDisposable=r}_onDidChangeActiveNodes(t){if(!this.shouldRenderIndentGuides)return;const n=new Set;t.forEach(r=>{const o=this.model.getNodeLocation(r);try{const s=this.model.getParentNodeLocation(o);r.collapsible&&r.children.length>0&&!r.collapsed?n.add(r):s&&n.add(this.model.getNode(s))}catch{}}),this.activeIndentNodes.forEach(r=>{n.has(r)||this.renderedIndentGuides.forEach(r,o=>o.classList.remove("active"))}),n.forEach(r=>{this.activeIndentNodes.has(r)||this.renderedIndentGuides.forEach(r,o=>o.classList.add("active"))}),this.activeIndentNodes=n}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),us(this.disposables)}};iU.DefaultIndent=8;let oWe=iU;function opo(e,t){const n=t.toLowerCase().indexOf(e);let r;if(n>-1){r=[Number.MAX_SAFE_INTEGER,0];for(let o=e.length;o>0;o--)r.push(n+o-1)}return r}class eRn{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}set findMatchType(t){this._findMatchType=t}get findMatchType(){return this._findMatchType}set findMode(t){this._findMode=t}get findMode(){return this._findMode}constructor(t,n,r){this._keyboardNavigationLabelProvider=t,this._filter=n,this._defaultFindVisibility=r,this._totalCount=0,this._matchCount=0,this._findMatchType=Hb.Fuzzy,this._findMode=zk.Highlight,this._pattern="",this._lowercasePattern="",this.disposables=new xt}filter(t,n){let r=1;if(this._filter){const a=this._filter.filter(t,n);if(typeof a=="boolean"?r=a?1:0:Jie(a)?r=LR(a.visibility):r=a,r===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:q4.Default,visibility:r};const o=this._keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t),s=Array.isArray(o)?o:[o];for(const a of s){const l=a&&a.toString();if(typeof l>"u")return{data:q4.Default,visibility:r};let d;if(this._findMatchType===Hb.Contiguous?d=opo(this._lowercasePattern,l.toLowerCase()):d=kR(this._pattern,this._lowercasePattern,0,l,l.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0}),d)return this._matchCount++,s.length===1?{data:d,visibility:r}:{data:{label:l,score:d},visibility:r}}return this._findMode===zk.Filter?typeof this._defaultFindVisibility=="number"?this._defaultFindVisibility:this._defaultFindVisibility?this._defaultFindVisibility(t):2:{data:q4.Default,visibility:r}}reset(){this._totalCount=0,this._matchCount=0}dispose(){us(this.disposables)}}class spo{constructor(t){this.stateMap=new Map(t.map(n=>[n.id,{...n}]))}get(t){const n=this.stateMap.get(t);if(n===void 0)throw new Error(`No state found for toggle id ${t}`);return n.isChecked}set(t,n){const r=this.stateMap.get(t);if(r===void 0)throw new Error(`No state found for toggle id ${t}`);return r.isChecked===n?!1:(r.isChecked=n,!0)}}var zk;(function(e){e[e.Highlight=0]="Highlight",e[e.Filter=1]="Filter"})(zk||(zk={}));var Hb;(function(e){e[e.Fuzzy=0]="Fuzzy",e[e.Contiguous=1]="Contiguous"})(Hb||(Hb={}));var a5;(function(e){e.Mode="mode",e.MatchType="matchType"})(a5||(a5={}));class apo{get pattern(){return this._pattern}get placeholder(){return this._placeholder}set placeholder(t){var n;this._placeholder=t,(n=this.widget)==null||n.setPlaceHolder(t)}constructor(t,n,r,o={}){this.tree=t,this.filter=n,this.contextViewProvider=r,this.options=o,this._pattern="",this._onDidChangePattern=new at,this._onDidChangeOpenState=new at,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new xt,this.disposables=new xt,this.toggles=new spo(o.toggles??[]),this._placeholder=o.placeholder??U(20,"Type to search")}isOpened(){return!!this.widget}updateToggleState(t,n){var r;this.toggles.set(t,n),(r=this.widget)==null||r.setToggleState(t,n)}renderMessage(t,n){var r,o,s;t?this.tree.options.showNotFoundMessage??!0?(r=this.widget)==null||r.showMessage({type:2,content:n??U(21,"No results found.")}):(o=this.widget)==null||o.showMessage({type:2}):(s=this.widget)==null||s.clearMessage()}alertResults(t){um(t?U(23,"{0} results",t):U(22,"No results"))}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}}let tRn=class extends apo{get mode(){return this.toggles.get(a5.Mode)?zk.Filter:zk.Highlight}set mode(t){if(t===this.mode)return;const n=t===zk.Filter;this.updateToggleState(a5.Mode,n),this.placeholder=n?U(24,"Type to filter"):U(25,"Type to search"),this.filter.findMode=t,this.tree.refilter(),this.render(),this._onDidChangeMode.fire(t)}get matchType(){return this.toggles.get(a5.MatchType)?Hb.Fuzzy:Hb.Contiguous}set matchType(t){t!==this.matchType&&(this.updateToggleState(a5.MatchType,t===Hb.Fuzzy),this.filter.findMatchType=t,this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(t))}constructor(t,n,r,o={}){const s=o.defaultFindMode??zk.Highlight,a=o.defaultFindMatchType??Hb.Fuzzy,l=[{id:a5.Mode,icon:zt.listFilter,title:U(26,"Filter"),isChecked:s===zk.Filter},{id:a5.MatchType,icon:zt.searchFuzzy,title:U(27,"Fuzzy Match"),isChecked:a===Hb.Fuzzy}];n.findMatchType=a,n.findMode=s,super(t,n,r,{...o,toggles:l}),this.filter=n,this._onDidChangeMode=new at,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new at,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this.disposables.add(this.tree.onDidChangeModel(()=>{this.isOpened()&&(this.pattern.length!==0&&this.tree.refilter(),this.render())})),this.disposables.add(this.tree.onWillRefilter(()=>this.filter.reset()))}updateOptions(t={}){t.defaultFindMode!==void 0&&(this.mode=t.defaultFindMode),t.defaultFindMatchType!==void 0&&(this.matchType=t.defaultFindMatchType)}shouldAllowFocus(t){return!this.isOpened()||!this.pattern||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!q4.isDefault(t.filterData)}render(){const n=this.filter.matchCount===0&&this.filter.totalCount>0&&this.pattern.length>0;this.renderMessage(n),this.pattern.length&&this.alertResults(this.filter.matchCount)}};function lpo(e,t){return e.position===t.position&&nRn(e,t)}function nRn(e,t){return e.node.element===t.node.element&&e.startIndex===t.startIndex&&e.height===t.height&&e.endIndex===t.endIndex}class cpo{constructor(t=[]){this.stickyNodes=t}get count(){return this.stickyNodes.length}equal(t){return Na(this.stickyNodes,t.stickyNodes,lpo)}contains(t){return this.stickyNodes.some(n=>n.node.element===t.element)}lastNodePartiallyVisible(){if(this.count===0)return!1;const t=this.stickyNodes[this.count-1];if(this.count===1)return t.position!==0;const n=this.stickyNodes[this.count-2];return n.position+n.height!==t.position}animationStateChanged(t){if(!Na(this.stickyNodes,t.stickyNodes,nRn)||this.count===0)return!1;const n=this.stickyNodes[this.count-1],r=t.stickyNodes[t.count-1];return n.position!==r.position}}class dpo{constrainStickyScrollNodes(t,n,r){for(let o=0;or||o>=n)return t.slice(0,o)}return t}}let Oyt=class extends ft{constructor(t,n,r,o,s,a={}){super(),this.tree=t,this.model=n,this.view=r,this.treeDelegate=s,this.maxWidgetViewRatio=.4;const l=this.validateStickySettings(a);this.stickyScrollMaxItemCount=l.stickyScrollMaxItemCount,this.stickyScrollDelegate=a.stickyScrollDelegate??new dpo,this.paddingTop=a.paddingTop??0,this._widget=this._register(new upo(r.getScrollableElement(),r,t,o,s,a.accessibilityProvider)),this.onDidChangeHasFocus=this._widget.onDidChangeHasFocus,this.onContextMenu=this._widget.onContextMenu,this._register(r.onDidScroll(()=>this.update())),this._register(r.onDidChangeContentHeight(()=>this.update())),this._register(t.onDidChangeCollapseState(()=>this.update())),this._register(n.onDidSpliceRenderedNodes(d=>{const u=this._widget.state;if(!u)return;if(d.deleteCount>0&&u.stickyNodes.some(m=>!this.model.has(this.model.getNodeLocation(m.node)))){this.update();return}u.stickyNodes.some(m=>{const v=this.model.getListIndex(this.model.getNodeLocation(m.node));return v>=d.start&&v=this.view.length))return this.view.element(n)}update(){const t=this.getNodeAtHeight(this.paddingTop);if(!t||this.tree.scrollTop<=this.paddingTop){this._widget.setState(void 0);return}const n=this.findStickyState(t);this._widget.setState(n)}findStickyState(t){const n=[];let r=t,o=0,s=this.getNextStickyNode(r,void 0,o);for(;s&&(n.push(s),o+=s.height,!(n.length<=this.stickyScrollMaxItemCount&&(r=this.getNextVisibleNode(s),!r)));)s=this.getNextStickyNode(r,s.node,o);const a=this.constrainStickyNodes(n);return a.length?new cpo(a):void 0}getNextVisibleNode(t){return this.getNodeAtHeight(t.position+t.height)}getNextStickyNode(t,n,r){const o=this.getAncestorUnderPrevious(t,n);if(o&&!(o===t&&(!this.nodeIsUncollapsedParent(t)||this.nodeTopAlignsWithStickyNodesBottom(t,r))))return this.createStickyScrollNode(o,r)}nodeTopAlignsWithStickyNodesBottom(t,n){const r=this.getNodeIndex(t),o=this.view.getElementTop(r),s=n;return this.view.scrollTop===o-s}createStickyScrollNode(t,n){const r=this.treeDelegate.getHeight(t),{startIndex:o,endIndex:s}=this.getNodeRange(t),a=this.calculateStickyNodePosition(s,n,r);return{node:t,position:a,height:r,startIndex:o,endIndex:s}}getAncestorUnderPrevious(t,n=void 0){let r=t,o=this.getParentNode(r);for(;o;){if(o===n)return r;r=o,o=this.getParentNode(r)}if(n===void 0)return r}calculateStickyNodePosition(t,n,r){let o=this.view.getRelativeTop(t);if(o===null&&this.view.firstVisibleIndex===t&&t+1d&&n<=d?d-r:n}constrainStickyNodes(t){if(t.length===0)return[];const n=this.view.renderHeight*this.maxWidgetViewRatio,r=t[t.length-1];if(t.length<=this.stickyScrollMaxItemCount&&r.position+r.height<=n)return t;const o=this.stickyScrollDelegate.constrainStickyScrollNodes(t,this.stickyScrollMaxItemCount,n);if(!o.length)return[];const s=o[o.length-1];if(o.length>this.stickyScrollMaxItemCount||s.position+s.height>n)throw new Error("stickyScrollDelegate violates constraints");return o}getParentNode(t){const n=this.model.getNodeLocation(t),r=this.model.getParentNodeLocation(n);return r?this.model.getNode(r):void 0}nodeIsUncollapsedParent(t){const n=this.model.getNodeLocation(t);return this.model.getListRenderCount(n)>1}getNodeIndex(t){const n=this.model.getNodeLocation(t);return this.model.getListIndex(n)}getNodeRange(t){const n=this.model.getNodeLocation(t),r=this.model.getListIndex(n);if(r<0)throw new Error("Node not found in tree");const o=this.model.getListRenderCount(n),s=r+o-1;return{startIndex:r,endIndex:s}}nodePositionTopBelowWidget(t){const n=[];let r=this.getParentNode(t);for(;r;)n.push(r),r=this.getParentNode(r);let o=0;for(let s=0;s0,r=!!t&&t.count>0;if(!n&&!r||n&&r&&this._previousState.equal(t))return;if(n!==r&&this.setVisible(r),!r){this._previousState=void 0,this._previousElements=[],this._previousStateDisposables.clear();return}const o=t.stickyNodes[t.count-1];this._previousState&&t.animationStateChanged(this._previousState)?this._previousElements[this._previousState.count-1].style.top=`${o.position}px`:this.renderState(t),this._previousState=t,this._rootDomNode.style.height=`${o.position+o.height}px`}renderState(t){this._previousStateDisposables.clear();const n=Array(t.count);for(let r=t.count-1;r>=0;r--){const o=t.stickyNodes[r],{element:s,disposable:a}=this.createElement(o,r,t.count);n[r]=s,this._rootDomNode.appendChild(s),this._previousStateDisposables.add(a)}this.stickyScrollFocus.updateElements(n,t),this._previousElements=n}rerender(){this._previousState&&this.renderState(this._previousState)}createElement(t,n,r){const o=t.startIndex,s=document.createElement("div");s.style.top=`${t.position}px`,this.tree.options.setRowHeight!==!1&&(s.style.height=`${t.height}px`),this.tree.options.setRowLineHeight!==!1&&(s.style.lineHeight=`${t.height}px`),s.classList.add("monaco-tree-sticky-row"),s.classList.add("monaco-list-row"),s.setAttribute("data-index",`${o}`),s.setAttribute("data-parity",o%2===0?"even":"odd"),s.setAttribute("id",this.view.getElementID(o));const a=this.setAccessibilityAttributes(s,t.node.element,n,r),l=this.treeDelegate.getTemplateId(t.node),d=this.treeRenderers.find(m=>m.templateId===l);if(!d)throw new Error(`No renderer found for template id ${l}`);let u=t.node;u===this.tree.getNode(this.tree.getNodeLocation(t.node))&&(u=new Proxy(t.node,{}));const h=d.renderTemplate(s);d.renderElement(u,t.startIndex,h,{height:t.height});const g=Hn(()=>{a.dispose(),d.disposeElement(u,t.startIndex,h,{height:t.height}),d.disposeTemplate(h),s.remove()});return{element:s,disposable:g}}setAccessibilityAttributes(t,n,r,o){if(!this.accessibilityProvider)return ft.None;this.accessibilityProvider.getSetSize&&t.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(n,r,o))),this.accessibilityProvider.getPosInSet&&t.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(n,r))),this.accessibilityProvider.getRole&&t.setAttribute("role",this.accessibilityProvider.getRole(n)??"treeitem");const s=this.accessibilityProvider.getAriaLabel(n),a=s&&typeof s!="string"?s:ca(s),l=Oi(u=>{const h=u.readObservable(a);h?t.setAttribute("aria-label",h):t.removeAttribute("aria-label")});typeof s=="string"||s&&t.setAttribute("aria-label",s.get());const d=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(n);return typeof d=="number"&&t.setAttribute("aria-level",`${d}`),t.setAttribute("aria-selected",String(!1)),l}setVisible(t){this._rootDomNode.classList.toggle("empty",!t),t||this.stickyScrollFocus.updateElements([],void 0)}domFocus(){this.stickyScrollFocus.domFocus()}focusedLast(){return this.stickyScrollFocus.focusedLast()}dispose(){this.stickyScrollFocus.dispose(),this._previousStateDisposables.dispose(),this._rootDomNode.remove()}};class hpo extends ft{get domHasFocus(){return this._domHasFocus}set domHasFocus(t){t!==this._domHasFocus&&(this._onDidChangeHasFocus.fire(t),this._domHasFocus=t)}constructor(t,n){super(),this.container=t,this.view=n,this.focusedIndex=-1,this.elements=[],this._onDidChangeHasFocus=new at,this.onDidChangeHasFocus=this._onDidChangeHasFocus.event,this._onContextMenu=new at,this.onContextMenu=this._onContextMenu.event,this._domHasFocus=!1,this._register(wt(this.container,"focus",()=>this.onFocus())),this._register(wt(this.container,"blur",()=>this.onBlur())),this._register(this.view.onDidFocus(()=>this.toggleStickyScrollFocused(!1))),this._register(this.view.onKeyDown(r=>this.onKeyDown(r))),this._register(this.view.onMouseDown(r=>this.onMouseDown(r))),this._register(this.view.onContextMenu(r=>this.handleContextMenu(r)))}handleContextMenu(t){const n=t.browserEvent.target;if(!TJ(n)&&!xZ(n)){this.focusedLast()&&this.view.domFocus();return}if(!eS(t.browserEvent)){if(!this.state)throw new Error("Context menu should not be triggered when state is undefined");const a=this.state.stickyNodes.findIndex(l=>{var d;return l.node.element===((d=t.element)==null?void 0:d.element)});if(a===-1)throw new Error("Context menu should not be triggered when element is not in sticky scroll widget");this.container.focus(),this.setFocus(a);return}if(!this.state||this.focusedIndex<0)throw new Error("Context menu key should not be triggered when focus is not in sticky scroll widget");const o=this.state.stickyNodes[this.focusedIndex].node.element,s=this.elements[this.focusedIndex];this._onContextMenu.fire({element:o,anchor:s,browserEvent:t.browserEvent,isStickyScroll:!0})}onKeyDown(t){if(this.domHasFocus&&this.state){if(t.key==="ArrowUp")this.setFocusedElement(Math.max(0,this.focusedIndex-1)),t.preventDefault(),t.stopPropagation();else if(t.key==="ArrowDown"||t.key==="ArrowRight"){if(this.focusedIndex>=this.state.count-1){const n=this.state.stickyNodes[this.state.count-1].startIndex+1;this.view.domFocus(),this.view.setFocus([n]),this.scrollNodeUnderWidget(n,this.state)}else this.setFocusedElement(this.focusedIndex+1);t.preventDefault(),t.stopPropagation()}}}onMouseDown(t){const n=t.browserEvent.target;!TJ(n)&&!xZ(n)||(t.browserEvent.preventDefault(),t.browserEvent.stopPropagation())}updateElements(t,n){if(n&&n.count===0)throw new Error("Sticky scroll state must be undefined when there are no sticky nodes");if(n&&n.count!==t.length)throw new Error("Sticky scroll focus received illigel state");const r=this.focusedIndex;if(this.removeFocus(),this.elements=t,this.state=n,n){const o=Zg(r,0,n.count-1);this.setFocus(o)}else this.domHasFocus&&this.view.domFocus();this.container.tabIndex=n?0:-1}setFocusedElement(t){const n=this.state;if(!n)throw new Error("Cannot set focus when state is undefined");if(this.setFocus(t),!(t1?n.stickyNodes[n.count-2]:void 0,s=this.view.getElementTop(t),a=o?o.position+o.height+r.height:r.height;this.view.scrollTop=s-a}domFocus(){if(!this.state)throw new Error("Cannot focus when state is undefined");this.container.focus()}focusedLast(){return this.state?this.view.getHTMLElement().classList.contains("sticky-scroll-focused"):!1}removeFocus(){this.focusedIndex!==-1&&(this.toggleElementFocus(this.elements[this.focusedIndex],!1),this.focusedIndex=-1)}setFocus(t){if(0>t)throw new Error("addFocus() can not remove focus");if(!this.state&&t>=0)throw new Error("Cannot set focus index when state is undefined");if(this.state&&t>=this.state.count)throw new Error("Cannot set focus index to an index that does not exist");const n=this.focusedIndex;n>=0&&this.toggleElementFocus(this.elements[n],!1),t>=0&&this.toggleElementFocus(this.elements[t],!0),this.focusedIndex=t}toggleElementFocus(t,n){this.toggleElementActiveFocus(t,n&&this.domHasFocus),this.toggleElementPassiveFocus(t,n)}toggleCurrentElementActiveFocus(t){this.focusedIndex!==-1&&this.toggleElementActiveFocus(this.elements[this.focusedIndex],t)}toggleElementActiveFocus(t,n){t.classList.toggle("focused",n)}toggleElementPassiveFocus(t,n){t.classList.toggle("passive-focused",n)}toggleStickyScrollFocused(t){this.view.getHTMLElement().classList.toggle("sticky-scroll-focused",t)}onFocus(){if(!this.state||this.elements.length===0)throw new Error("Cannot focus when state is undefined or elements are empty");this.domHasFocus=!0,this.toggleStickyScrollFocused(!0),this.toggleCurrentElementActiveFocus(!0),this.focusedIndex===-1&&this.setFocus(0)}onBlur(){this.domHasFocus=!1,this.toggleCurrentElementActiveFocus(!1)}dispose(){this.toggleStickyScrollFocused(!1),this._onDidChangeHasFocus.fire(!1),super.dispose()}}function Jle(e){let t=pQ.Unknown;return tLe(e.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?t=pQ.Twistie:tLe(e.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?t=pQ.Element:tLe(e.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(t=pQ.Filter),{browserEvent:e.browserEvent,element:e.element?e.element.element:null,target:t}}function fpo(e){const t=TJ(e.browserEvent.target);return{element:e.element?e.element.element:null,browserEvent:e.browserEvent,anchor:e.anchor,isStickyScroll:t}}function khe(e,t){t(e),e.children.forEach(n=>khe(n,t))}class Axe{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(t,n){this.getFirstViewElementWithTrait=t,this.identityProvider=n,this.nodes=[],this._onDidChange=new at,this.onDidChange=this._onDidChange.event}set(t,n){const r=n;!(r!=null&&r.__forceEvent)&&Na(this.nodes,t)||this._set(t,!1,n)}_set(t,n,r){if(this.nodes=[...t],this.elements=void 0,this._nodeSet=void 0,!n){const o=this;this._onDidChange.fire({get elements(){return o.get()},browserEvent:r})}}get(){return this.elements||(this.elements=this.nodes.map(t=>t.element)),[...this.elements]}getNodes(){return this.nodes}has(t){return this.nodeSet.has(t)}onDidModelSplice({insertedNodes:t,deletedNodes:n}){if(!this.identityProvider){const d=this.createNodeSet(),u=h=>d.delete(h);n.forEach(h=>khe(h,u)),this.set([...d.values()]);return}const r=new Set,o=d=>r.add(this.identityProvider.getId(d.element).toString());n.forEach(d=>khe(d,o));const s=new Map,a=d=>s.set(this.identityProvider.getId(d.element).toString(),d);t.forEach(d=>khe(d,a));const l=[];for(const d of this.nodes){const u=this.identityProvider.getId(d.element).toString();if(!r.has(u))l.push(d);else{const g=s.get(u);g&&g.visible&&l.push(g)}}if(this.nodes.length>0&&l.length===0){const d=this.getFirstViewElementWithTrait();d&&l.push(d)}this._set(l,!0)}createNodeSet(){const t=new Set;for(const n of this.nodes)t.add(n);return t}}class gpo extends eDn{constructor(t,n,r){super(t),this.tree=n,this.stickyScrollProvider=r}onViewPointer(t){if(ZQn(t.browserEvent.target)||s3(t.browserEvent.target)||NG(t.browserEvent.target)||t.browserEvent.isHandledByList)return;const n=t.element;if(!n)return super.onViewPointer(t);if(this.isSelectionRangeChangeEvent(t)||this.isSelectionSingleChangeEvent(t))return super.onViewPointer(t);const r=t.browserEvent.target,o=r.classList.contains("monaco-tl-twistie")||r.classList.contains("monaco-icon-label")&&r.classList.contains("folder-icon")&&t.browserEvent.offsetX<16,s=xZ(t.browserEvent.target);let a=!1;if(s?a=!0:typeof this.tree.expandOnlyOnTwistieClick=="function"?a=this.tree.expandOnlyOnTwistieClick(n.element):a=!!this.tree.expandOnlyOnTwistieClick,s)this.handleStickyScrollMouseEvent(t,n);else{if(a&&!o&&t.browserEvent.detail!==2)return super.onViewPointer(t);if(!this.tree.expandOnDoubleClick&&t.browserEvent.detail===2)return super.onViewPointer(t)}if(n.collapsible&&(!s||o)){const l=this.tree.getNodeLocation(n),d=t.browserEvent.altKey;if(this.tree.setFocus([l]),this.tree.toggleCollapsed(l,d),o){t.browserEvent.isHandledByList=!0;return}}s||super.onViewPointer(t)}handleStickyScrollMouseEvent(t,n){if(q1o(t.browserEvent.target)||K1o(t.browserEvent.target))return;const r=this.stickyScrollProvider();if(!r)throw new Error("Sticky scroll controller not found");const o=this.list.indexOf(n),s=this.list.getElementTop(o),a=r.nodePositionTopBelowWidget(n);this.tree.scrollTop=s-a,this.list.domFocus(),this.list.setFocus([o]),this.list.setSelection([o])}onDoubleClick(t){t.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||t.browserEvent.isHandledByList||super.onDoubleClick(t)}onMouseDown(t){const n=t.browserEvent.target;if(!TJ(n)&&!xZ(n)){super.onMouseDown(t);return}}onContextMenu(t){const n=t.browserEvent.target;if(!TJ(n)&&!xZ(n)){super.onContextMenu(t);return}}}class mpo extends _2{constructor(t,n,r,o,s,a,l,d){super(t,n,r,o,d),this.focusTrait=s,this.selectionTrait=a,this.anchorTrait=l}createMouseController(t){return new gpo(this,t.tree,t.stickyScrollProvider)}splice(t,n,r=[]){if(super.splice(t,n,r),r.length===0)return;const o=[],s=[];let a;r.forEach((l,d)=>{this.focusTrait.has(l)&&o.push(t+d),this.selectionTrait.has(l)&&s.push(t+d),this.anchorTrait.has(l)&&(a=t+d)}),o.length>0&&super.setFocus(M8([...super.getFocus(),...o])),s.length>0&&super.setSelection(M8([...super.getSelection(),...s])),typeof a=="number"&&super.setAnchor(a)}setFocus(t,n,r=!1){super.setFocus(t,n),r||this.focusTrait.set(t.map(o=>this.element(o)),n)}setSelection(t,n,r=!1){super.setSelection(t,n),r||this.selectionTrait.set(t.map(o=>this.element(o)),n)}setAnchor(t,n=!1){super.setAnchor(t),n||(typeof t>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(t)]))}}class iRn{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return an.filter(an.map(this.view.onMouseDblClick,Jle),t=>t.target!==pQ.Filter)}get onMouseOver(){return an.map(this.view.onMouseOver,Jle)}get onMouseOut(){return an.map(this.view.onMouseOut,Jle)}get onContextMenu(){var t;return an.any(an.filter(an.map(this.view.onContextMenu,fpo),n=>!n.isStickyScroll),((t=this.stickyScrollController)==null?void 0:t.onContextMenu)??an.None)}get onPointer(){return an.map(this.view.onPointer,Jle)}get onKeyDown(){return this.view.onKeyDown}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return an.any(this.onDidChangeModelRelay.event,this.onDidSwapModel.event)}get onDidChangeCollapseState(){return this.onDidChangeCollapseStateRelay.event}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(t,n,r,o,s={}){this._user=t,this._options=s,this.eventBufferer=new Cie,this.onDidChangeFindOpenState=an.None,this.onDidChangeStickyScrollFocused=an.None,this.disposables=new xt,this.onDidSwapModel=this.disposables.add(new at),this.onDidChangeModelRelay=this.disposables.add(new oX),this.onDidSpliceModelRelay=this.disposables.add(new oX),this.onDidChangeCollapseStateRelay=this.disposables.add(new oX),this.onDidChangeRenderNodeCountRelay=this.disposables.add(new oX),this.onDidChangeActiveNodesRelay=this.disposables.add(new oX),this._onWillRefilter=new at,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new at,this.modelDisposables=new xt,s.keyboardNavigationLabelProvider&&(s.findWidgetEnabled??!0)&&(this.findFilter=new eRn(s.keyboardNavigationLabelProvider,s.filter,s.defaultFindVisibility),s={...s,filter:this.findFilter},this.disposables.add(this.findFilter)),this.model=this.createModel(t,s),this.treeDelegate=new ont(r);const a=this.disposables.add(new rpo(this.onDidChangeActiveNodesRelay.event)),l=new BEn;this.renderers=o.map(d=>new oWe(d,this.model,this.onDidChangeCollapseStateRelay.event,a,l,s));for(const d of this.renderers)this.disposables.add(d);if(this.focus=new Axe(()=>this.view.getFocusedElements()[0],s.identityProvider),this.selection=new Axe(()=>this.view.getSelectedElements()[0],s.identityProvider),this.anchor=new Axe(()=>this.view.getAnchorElement(),s.identityProvider),this.view=new mpo(t,n,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...ipo(()=>this.model,this.disposables,s),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.setupModel(this.model),s.keyboardSupport!==!1){const d=an.chain(this.view.onKeyDown,u=>u.filter(h=>!s3(h.target)).map(h=>new Us(h)));an.chain(d,u=>u.filter(h=>h.keyCode===15))(this.onLeftArrow,this,this.disposables),an.chain(d,u=>u.filter(h=>h.keyCode===17))(this.onRightArrow,this,this.disposables),an.chain(d,u=>u.filter(h=>h.keyCode===10))(this.onSpace,this,this.disposables)}if((s.findWidgetEnabled??!0)&&s.keyboardNavigationLabelProvider&&s.contextViewProvider){const d={styles:s.findWidgetStyles,defaultFindMode:s.defaultFindMode,defaultFindMatchType:s.defaultFindMatchType,showNotFoundMessage:s.showNotFoundMessage};this.findController=this.disposables.add(new tRn(this,this.findFilter,s.contextViewProvider,d)),this.focusNavigationFilter=u=>this.findController.shouldAllowFocus(u),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=an.None,this.onDidChangeFindMatchType=an.None;s.enableStickyScroll&&(this.stickyScrollController=new Oyt(this,this.model,this.view,this.renderers,this.treeDelegate,s),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus),this.styleElement=mA(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===xR.Always)}updateOptions(t={}){var n;this._options={...this._options,...t};for(const r of this.renderers)r.updateOptions(t);this.view.updateOptions(this._options),(n=this.findController)==null||n.updateOptions(t),this.updateStickyScroll(t),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===xR.Always)}get options(){return this._options}updateStickyScroll(t){var n;!this.stickyScrollController&&this._options.enableStickyScroll?(this.stickyScrollController=new Oyt(this,this.model,this.view,this.renderers,this.treeDelegate,this._options),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.onDidChangeStickyScrollFocused=an.None,this.stickyScrollController.dispose(),this.stickyScrollController=void 0),(n=this.stickyScrollController)==null||n.updateOptions(t)}getHTMLElement(){return this.view.getHTMLElement()}get onDidChangeContentHeight(){return this.view.onDidChangeContentHeight}get scrollTop(){return this.view.scrollTop}set scrollTop(t){this.view.scrollTop=t}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get ariaLabel(){return this.view.ariaLabel}set ariaLabel(t){this.view.ariaLabel=t}domFocus(){var t;(t=this.stickyScrollController)!=null&&t.focusedLast()?this.stickyScrollController.domFocus():this.view.domFocus()}layout(t,n){this.view.layout(t,n)}style(t){const n=`.${this.view.domId}`,r=[];t.treeIndentGuidesStroke&&(r.push(`.monaco-list${n}:hover .monaco-tl-indent > .indent-guide, .monaco-list${n}.always .monaco-tl-indent > .indent-guide { opacity: 1; border-color: ${t.treeInactiveIndentGuidesStroke}; }`),r.push(`.monaco-list${n} .monaco-tl-indent > .indent-guide.active { opacity: 1; border-color: ${t.treeIndentGuidesStroke}; }`));const o=t.treeStickyScrollBackground??t.listBackground;o&&(r.push(`.monaco-list${n} .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ${o}; }`),r.push(`.monaco-list${n} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ${o}; }`)),t.treeStickyScrollBorder&&r.push(`.monaco-list${n} .monaco-scrollable-element .monaco-tree-sticky-container { border-bottom: 1px solid ${t.treeStickyScrollBorder}; }`),t.treeStickyScrollShadow&&r.push(`.monaco-list${n} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow { box-shadow: ${t.treeStickyScrollShadow} 0 6px 6px -6px inset; height: 3px; }`),t.listFocusForeground&&(r.push(`.monaco-list${n}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { color: ${t.listFocusForeground}; }`),r.push(`.monaco-list${n}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { color: inherit; }`));const s=n8(t.listFocusAndSelectionOutline,n8(t.listSelectionOutline,t.listFocusOutline??""));s&&(r.push(`.monaco-list${n}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused.selected { outline: 1px solid ${s}; outline-offset: -1px;}`),r.push(`.monaco-list${n}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused.selected { outline: inherit;}`)),t.listFocusOutline&&(r.push(`.monaco-list${n}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { outline: 1px solid ${t.listFocusOutline}; outline-offset: -1px; }`),r.push(`.monaco-list${n}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { outline: inherit; }`),r.push(`.context-menu-visible .monaco-list${n}.last-focused.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.passive-focused { outline: 1px solid ${t.listFocusOutline}; outline-offset: -1px; }`),r.push(`.context-menu-visible .monaco-list${n}.last-focused.sticky-scroll-focused .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`),r.push(`.context-menu-visible .monaco-list${n}.last-focused:not(.sticky-scroll-focused) .monaco-tree-sticky-container .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`)),this.styleElement.textContent=r.join(` `),this.view.style(t)}getParentElement(t){const n=this.model.getParentNodeLocation(t);return this.model.getNode(n).element}getFirstElementChild(t){return this.model.getFirstElementChild(t)}getNode(t){return this.model.getNode(t)}getNodeLocation(t){return this.model.getNodeLocation(t)}collapse(t,n=!1){return this.model.setCollapsed(t,!0,n)}expand(t,n=!1){return this.model.setCollapsed(t,!1,n)}toggleCollapsed(t,n=!1){return this.model.setCollapsed(t,void 0,n)}isCollapsible(t){return this.model.isCollapsible(t)}setCollapsible(t,n){return this.model.setCollapsible(t,n)}isCollapsed(t){return this.model.isCollapsed(t)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(t,n){this.eventBufferer.bufferEvents(()=>{const r=t.map(s=>this.model.getNode(s));this.selection.set(r,n);const o=t.map(s=>this.model.getListIndex(s)).filter(s=>s>-1);this.view.setSelection(o,n,!0)})}getSelection(){return this.selection.get()}setFocus(t,n){this.eventBufferer.bufferEvents(()=>{const r=t.map(s=>this.model.getNode(s));this.focus.set(r,n);const o=t.map(s=>this.model.getListIndex(s)).filter(s=>s>-1);this.view.setFocus(o,n,!0)})}focusNext(t=1,n=!1,r,o=eS(r)&&r.altKey?void 0:this.focusNavigationFilter){this.view.focusNext(t,n,r,o)}focusPrevious(t=1,n=!1,r,o=eS(r)&&r.altKey?void 0:this.focusNavigationFilter){this.view.focusPrevious(t,n,r,o)}focusNextPage(t,n=eS(t)&&t.altKey?void 0:this.focusNavigationFilter){return this.view.focusNextPage(t,n)}focusPreviousPage(t,n=eS(t)&&t.altKey?void 0:this.focusNavigationFilter){return this.view.focusPreviousPage(t,n,()=>{var r;return((r=this.stickyScrollController)==null?void 0:r.height)??0})}focusLast(t,n=eS(t)&&t.altKey?void 0:this.focusNavigationFilter){this.view.focusLast(t,n)}focusFirst(t,n=eS(t)&&t.altKey?void 0:this.focusNavigationFilter){this.view.focusFirst(t,n)}getFocus(){return this.focus.get()}reveal(t,n){this.model.expandTo(t);const r=this.model.getListIndex(t);if(r!==-1)if(!this.stickyScrollController)this.view.reveal(r,n);else{const o=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(t));this.view.reveal(r,n,o)}}onLeftArrow(t){t.preventDefault(),t.stopPropagation();const n=this.view.getFocusedElements();if(n.length===0)return;const r=n[0],o=this.model.getNodeLocation(r);if(!this.model.setCollapsed(o,!0)){const a=this.model.getParentNodeLocation(o);if(!a)return;const l=this.model.getListIndex(a);this.view.reveal(l),this.view.setFocus([l])}}onRightArrow(t){t.preventDefault(),t.stopPropagation();const n=this.view.getFocusedElements();if(n.length===0)return;const r=n[0],o=this.model.getNodeLocation(r);if(!this.model.setCollapsed(o,!1)){if(!r.children.some(d=>d.visible))return;const[a]=this.view.getFocus(),l=a+1;this.view.reveal(l),this.view.setFocus([l])}}onSpace(t){t.preventDefault(),t.stopPropagation();const n=this.view.getFocusedElements();if(n.length===0)return;const r=n[0],o=this.model.getNodeLocation(r),s=t.browserEvent.altKey;this.model.setCollapsed(o,void 0,s)}setupModel(t){this.modelDisposables.clear(),this.modelDisposables.add(t.onDidSpliceRenderedNodes(({start:s,deleteCount:a,elements:l})=>this.view.splice(s,a,l)));const n=an.forEach(t.onDidSpliceModel,s=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice(s),this.selection.onDidModelSplice(s)})},this.modelDisposables);n(()=>null,null,this.modelDisposables);const r=this.modelDisposables.add(new at),o=this.modelDisposables.add(new dA(0));this.modelDisposables.add(an.any(n,this.focus.onDidChange,this.selection.onDidChange)(()=>{o.trigger(()=>{const s=new Set;for(const a of this.focus.getNodes())s.add(a);for(const a of this.selection.getNodes())s.add(a);r.fire([...s.values()])})})),this.onDidChangeActiveNodesRelay.input=r.event,this.onDidChangeModelRelay.input=an.signal(t.onDidSpliceModel),this.onDidChangeCollapseStateRelay.input=t.onDidChangeCollapseState,this.onDidChangeRenderNodeCountRelay.input=t.onDidChangeRenderNodeCount,this.onDidSpliceModelRelay.input=t.onDidSpliceModel}dispose(){var t;us(this.disposables),(t=this.stickyScrollController)==null||t.dispose(),this.view.dispose(),this.modelDisposables.dispose()}}class snt{constructor(t,n={}){this.user=t,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new epo(t,null,n),this.onDidSpliceModel=this.model.onDidSpliceModel,this.onDidSpliceRenderedNodes=this.model.onDidSpliceRenderedNodes,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,n.sorter&&(this.sorter={compare(r,o){return n.sorter.compare(r.element,o.element)}}),this.identityProvider=n.identityProvider}setChildren(t,n=to.empty(),r={}){const o=this.getElementLocation(t);this._setChildren(o,this.preserveCollapseState(n),r)}_setChildren(t,n=to.empty(),r){const o=new Set,s=new Set,a=d=>{var h;if(d.element===null)return;const u=d;if(o.add(u.element),this.nodes.set(u.element,u),this.identityProvider){const g=this.identityProvider.getId(u.element).toString();s.add(g),this.nodesByIdentity.set(g,u)}(h=r.onDidCreateNode)==null||h.call(r,u)},l=d=>{var h;if(d.element===null)return;const u=d;if(o.has(u.element)||this.nodes.delete(u.element),this.identityProvider){const g=this.identityProvider.getId(u.element).toString();s.has(g)||this.nodesByIdentity.delete(g)}(h=r.onDidDeleteNode)==null||h.call(r,u)};this.model.splice([...t,0],Number.MAX_VALUE,n,{...r,onDidCreateNode:a,onDidDeleteNode:l})}preserveCollapseState(t=to.empty()){return this.sorter&&(t=[...t].sort(this.sorter.compare.bind(this.sorter))),to.map(t,n=>{let r=this.nodes.get(n.element);if(!r&&this.identityProvider){const a=this.identityProvider.getId(n.element).toString();r=this.nodesByIdentity.get(a)}if(!r){let a;return typeof n.collapsed>"u"?a=void 0:n.collapsed===Ik.Collapsed||n.collapsed===Ik.PreserveOrCollapsed?a=!0:n.collapsed===Ik.Expanded||n.collapsed===Ik.PreserveOrExpanded?a=!1:a=!!n.collapsed,{...n,children:this.preserveCollapseState(n.children),collapsed:a}}const o=typeof n.collapsible=="boolean"?n.collapsible:r.collapsible;let s;return typeof n.collapsed>"u"||n.collapsed===Ik.PreserveOrCollapsed||n.collapsed===Ik.PreserveOrExpanded?s=r.collapsed:n.collapsed===Ik.Collapsed?s=!0:n.collapsed===Ik.Expanded?s=!1:s=!!n.collapsed,{...n,collapsible:o,collapsed:s,children:this.preserveCollapseState(n.children)}})}rerender(t){const n=this.getElementLocation(t);this.model.rerender(n)}resort(t=null,n=!0){if(!this.sorter)return;const r=this.getElementLocation(t),o=this.model.getNode(r);this._setChildren(r,this.resortChildren(o,n),{})}resortChildren(t,n,r=!0){let o=[...t.children];return(n||r)&&(o=o.sort(this.sorter.compare.bind(this.sorter))),to.map(o,s=>({element:s.element,collapsible:s.collapsible,collapsed:s.collapsed,children:this.resortChildren(s,n,!1)}))}getFirstElementChild(t=null){const n=this.getElementLocation(t);return this.model.getFirstElementChild(n)}has(t){return this.nodes.has(t)}getListIndex(t){const n=this.getElementLocation(t);return this.model.getListIndex(n)}getListRenderCount(t){const n=this.getElementLocation(t);return this.model.getListRenderCount(n)}isCollapsible(t){const n=this.getElementLocation(t);return this.model.isCollapsible(n)}setCollapsible(t,n){const r=this.getElementLocation(t);return this.model.setCollapsible(r,n)}isCollapsed(t){const n=this.getElementLocation(t);return this.model.isCollapsed(n)}setCollapsed(t,n,r){const o=this.getElementLocation(t);return this.model.setCollapsed(o,n,r)}expandTo(t){const n=this.getElementLocation(t);this.model.expandTo(n)}refilter(){this.model.refilter()}getNode(t=null){if(t===null)return this.model.getNode(this.model.rootRef);const n=this.nodes.get(t);if(!n)throw new Vk(this.user,`Tree element not found: ${t}`);return n}getNodeLocation(t){return t.element}getParentNodeLocation(t){if(t===null)throw new Vk(this.user,"Invalid getParentNodeLocation call");const n=this.nodes.get(t);if(!n)throw new Vk(this.user,`Tree element not found: ${t}`);const r=this.model.getNodeLocation(n),o=this.model.getParentNodeLocation(r);return this.model.getNode(o).element}getElementLocation(t){if(t===null)return[];const n=this.nodes.get(t);if(!n)throw new Vk(this.user,`Tree element not found: ${t}`);return this.model.getNodeLocation(n)}}function vhe(e){const t=[e.element],n=e.incompressible||!1;return{element:{elements:t,incompressible:n},children:to.map(to.from(e.children),vhe),collapsible:e.collapsible,collapsed:e.collapsed}}function Ahe(e){const t=[e.element],n=e.incompressible||!1;let r,o;for(;[o,r]=to.consume(to.from(e.children),2),!(o.length!==1||o[0].incompressible);)e=o[0],t.push(e.element);return{element:{elements:t,incompressible:n},children:to.map(to.concat(o,r),Ahe),collapsible:e.collapsible,collapsed:e.collapsed}}function sWe(e,t=0){let n;return tsWe(r,0)),t===0&&e.element.incompressible?{element:e.element.elements[t],children:n,incompressible:!0,collapsible:e.collapsible,collapsed:e.collapsed}:{element:e.element.elements[t],children:n,collapsible:e.collapsible,collapsed:e.collapsed}}function yyt(e){return sWe(e,0)}function rRn(e,t,n){return e.element===t?{...e,children:n}:{...e,children:to.map(to.from(e.children),r=>rRn(r,t,n))}}const kpo=e=>({getId(t){return t.elements.map(n=>e.getId(n).toString()).join("\0")}});class vpo{get onDidSpliceRenderedNodes(){return this.model.onDidSpliceRenderedNodes}get onDidSpliceModel(){return this.model.onDidSpliceModel}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(t,n={}){this.user=t,this.rootRef=null,this.nodes=new Map,this.model=new snt(t,n),this.enabled=typeof n.compressionEnabled>"u"?!0:n.compressionEnabled,this.identityProvider=n.identityProvider}setChildren(t,n=to.empty(),r){const o=r.diffIdentityProvider&&kpo(r.diffIdentityProvider);if(t===null){const f=to.map(n,this.enabled?Ahe:vhe);this._setChildren(null,f,{diffIdentityProvider:o,diffDepth:1/0});return}const s=this.nodes.get(t);if(!s)throw new Vk(this.user,"Unknown compressed tree node");const a=this.model.getNode(s),l=this.model.getParentNodeLocation(s),d=this.model.getNode(l),u=yyt(a),h=rRn(u,t,n),g=(this.enabled?Ahe:vhe)(h),m=r.diffIdentityProvider?(f,k)=>r.diffIdentityProvider.getId(f)===r.diffIdentityProvider.getId(k):void 0;if(Na(g.element.elements,a.element.elements,m)){this._setChildren(s,g.children||to.empty(),{diffIdentityProvider:o,diffDepth:1});return}const v=d.children.map(f=>f===a?g:f);this._setChildren(d.element,v,{diffIdentityProvider:o,diffDepth:a.depth-d.depth})}isCompressionEnabled(){return this.enabled}setCompressionEnabled(t){if(t===this.enabled)return;this.enabled=t;const r=this.model.getNode().children,o=to.map(r,yyt),s=to.map(o,t?Ahe:vhe);this._setChildren(null,s,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(t,n,r){const o=new Set,s=l=>{for(const d of l.element.elements)o.add(d),this.nodes.set(d,l.element)},a=l=>{for(const d of l.element.elements)o.has(d)||this.nodes.delete(d)};this.model.setChildren(t,n,{...r,onDidCreateNode:s,onDidDeleteNode:a})}has(t){return this.nodes.has(t)}getListIndex(t){const n=this.getCompressedNode(t);return this.model.getListIndex(n)}getListRenderCount(t){const n=this.getCompressedNode(t);return this.model.getListRenderCount(n)}getNode(t){if(typeof t>"u")return this.model.getNode();const n=this.getCompressedNode(t);return this.model.getNode(n)}getNodeLocation(t){const n=this.model.getNodeLocation(t);return n===null?null:n.elements[n.elements.length-1]}getParentNodeLocation(t){const n=this.getCompressedNode(t),r=this.model.getParentNodeLocation(n);return r===null?null:r.elements[r.elements.length-1]}getFirstElementChild(t){const n=this.getCompressedNode(t);return this.model.getFirstElementChild(n)}isCollapsible(t){const n=this.getCompressedNode(t);return this.model.isCollapsible(n)}setCollapsible(t,n){const r=this.getCompressedNode(t);return this.model.setCollapsible(r,n)}isCollapsed(t){const n=this.getCompressedNode(t);return this.model.isCollapsed(n)}setCollapsed(t,n,r){const o=this.getCompressedNode(t);return this.model.setCollapsed(o,n,r)}expandTo(t){const n=this.getCompressedNode(t);this.model.expandTo(n)}rerender(t){const n=this.getCompressedNode(t);this.model.rerender(n)}refilter(){this.model.refilter()}resort(t=null,n=!0){const r=this.getCompressedNode(t);this.model.resort(r,n)}getCompressedNode(t){if(t===null)return null;const n=this.nodes.get(t);if(!n)throw new Vk(this.user,`Tree element not found: ${t}`);return n}}const Apo=e=>e[e.length-1];class ant{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(t=>new ant(this.unwrapper,t))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(t,n){this.unwrapper=t,this.node=n}}function ppo(e,t){return{...t,identityProvider:t.identityProvider&&{getId(n){return t.identityProvider.getId(e(n))}},sorter:t.sorter&&{compare(n,r){return t.sorter.compare(n.elements[0],r.elements[0])}},filter:t.filter&&{filter(n,r){const o=n.elements;for(let s=0;s({insertedNodes:t.map(r=>this.nodeMapper.map(r)),deletedNodes:n.map(r=>this.nodeMapper.map(r))}))}get onDidSpliceRenderedNodes(){return an.map(this.model.onDidSpliceRenderedNodes,({start:t,deleteCount:n,elements:r})=>({start:t,deleteCount:n,elements:r.map(o=>this.nodeMapper.map(o))}))}get onDidChangeCollapseState(){return an.map(this.model.onDidChangeCollapseState,({node:t,deep:n})=>({node:this.nodeMapper.map(t),deep:n}))}get onDidChangeRenderNodeCount(){return an.map(this.model.onDidChangeRenderNodeCount,t=>this.nodeMapper.map(t))}constructor(t,n={}){this.rootRef=null,this.elementMapper=n.elementMapper||Apo;const r=o=>this.elementMapper(o.elements);this.nodeMapper=new rnt(o=>new ant(r,o)),this.model=new vpo(t,ppo(r,n))}setChildren(t,n=to.empty(),r={}){this.model.setChildren(t,n,r)}isCompressionEnabled(){return this.model.isCompressionEnabled()}setCompressionEnabled(t){this.model.setCompressionEnabled(t)}has(t){return this.model.has(t)}getListIndex(t){return this.model.getListIndex(t)}getListRenderCount(t){return this.model.getListRenderCount(t)}getNode(t){return this.nodeMapper.map(this.model.getNode(t))}getNodeLocation(t){return t.element}getParentNodeLocation(t){return this.model.getParentNodeLocation(t)}getFirstElementChild(t){const n=this.model.getFirstElementChild(t);return n===null||typeof n>"u"?n:this.elementMapper(n.elements)}isCollapsible(t){return this.model.isCollapsible(t)}setCollapsible(t,n){return this.model.setCollapsible(t,n)}isCollapsed(t){return this.model.isCollapsed(t)}setCollapsed(t,n,r){return this.model.setCollapsed(t,n,r)}expandTo(t){return this.model.expandTo(t)}rerender(t){return this.model.rerender(t)}refilter(){return this.model.refilter()}resort(t=null,n=!0){return this.model.resort(t,n)}getCompressedTreeNode(t=null){return this.model.getNode(t)}}var wpo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s};class lnt extends iRn{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(t,n,r,o,s={}){super(t,n,r,o,s),this.user=t}setChildren(t,n=to.empty(),r){this.model.setChildren(t,n,r)}rerender(t){if(t===void 0){this.view.rerender();return}this.model.rerender(t)}resort(t,n=!0){this.model.resort(t,n)}hasElement(t){return this.model.has(t)}createModel(t,n){return new snt(t,n)}}class oRn{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(t,n,r){this._compressedTreeNodeProvider=t,this.stickyScrollDelegate=n,this.renderer=r,this.templateId=r.templateId,r.onDidChangeTwistieState&&(this.onDidChangeTwistieState=r.onDidChangeTwistieState)}renderTemplate(t){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(t)}}renderElement(t,n,r,o){let s=this.stickyScrollDelegate.getCompressedNode(t);s||(s=this.compressedTreeNodeProvider.getCompressedTreeNode(t.element)),s.element.elements.length===1?(r.compressedTreeNode=void 0,this.renderer.renderElement(t,n,r.data,o)):(r.compressedTreeNode=s,this.renderer.renderCompressedElements(s,n,r.data,o))}disposeElement(t,n,r,o){var s,a,l,d;r.compressedTreeNode?(a=(s=this.renderer).disposeCompressedElements)==null||a.call(s,r.compressedTreeNode,n,r.data,o):(d=(l=this.renderer).disposeElement)==null||d.call(l,t,n,r.data,o)}disposeTemplate(t){this.renderer.disposeTemplate(t.data)}renderTwistie(t,n){var r,o;return((o=(r=this.renderer).renderTwistie)==null?void 0:o.call(r,t,n))??!1}}wpo([mc],oRn.prototype,"compressedTreeNodeProvider",null);class Opo{constructor(t){this.modelProvider=t,this.compressedStickyNodes=new Map}getCompressedNode(t){return this.compressedStickyNodes.get(t)}constrainStickyScrollNodes(t,n,r){if(this.compressedStickyNodes.clear(),t.length===0)return[];for(let o=0;or||o>=n-1&&nthis,l=new Opo(()=>this.model),d=o.map(u=>new oRn(a,l,u));super(t,n,r,d,{...ypo(a,s),stickyScrollDelegate:l})}setChildren(t,n=to.empty(),r){this.model.setChildren(t,n,r)}createModel(t,n){return new bpo(t,n)}updateOptions(t={}){super.updateOptions(t),typeof t.compressionEnabled<"u"&&this.model.setCompressionEnabled(t.compressionEnabled)}getCompressedTreeNode(t=null){return this.model.getCompressedTreeNode(t)}}function pxe(e){return{...e,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function aWe(e,t){return t.parent?t.parent===e?!0:aWe(e,t.parent):!1}function Cpo(e,t){return e===t||aWe(e,t)||aWe(t,e)}class cnt{get element(){return this.node.element.element}get children(){return this.node.children.map(t=>new cnt(t))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(t){this.node=t}}class _po{constructor(t,n,r){this.renderer=t,this.nodeMapper=n,this.onDidChangeTwistieState=r,this.renderedNodes=new Map,this.templateId=t.templateId}renderTemplate(t){return{templateData:this.renderer.renderTemplate(t)}}renderElement(t,n,r,o){this.renderer.renderElement(this.nodeMapper.map(t),n,r.templateData,o)}renderTwistie(t,n){return t.slow?(n.classList.add(...fi.asClassNameArray(zt.treeItemLoading)),!0):(n.classList.remove(...fi.asClassNameArray(zt.treeItemLoading)),!1)}disposeElement(t,n,r,o){var s,a;(a=(s=this.renderer).disposeElement)==null||a.call(s,this.nodeMapper.map(t),n,r.templateData,o)}disposeTemplate(t){this.renderer.disposeTemplate(t.templateData)}dispose(){this.renderedNodes.clear()}}function Cyt(e){return{browserEvent:e.browserEvent,elements:e.elements.map(t=>t.element)}}function _yt(e){return{browserEvent:e.browserEvent,element:e.element&&e.element.element,target:e.target}}class Spo extends zie{constructor(t){super(t.elements.map(n=>n.element)),this.data=t}}function bxe(e){return e instanceof zie?new Spo(e):e}class Lpo{constructor(t){this.dnd=t}getDragURI(t){return this.dnd.getDragURI(t.element)}getDragLabel(t,n){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(t.map(r=>r.element),n)}onDragStart(t,n){var r,o;(o=(r=this.dnd).onDragStart)==null||o.call(r,bxe(t),n)}onDragOver(t,n,r,o,s,a=!0){return this.dnd.onDragOver(bxe(t),n&&n.element,r,o,s)}drop(t,n,r,o,s){this.dnd.drop(bxe(t),n&&n.element,r,o,s)}onDragEnd(t){var n,r;(r=(n=this.dnd).onDragEnd)==null||r.call(n,t)}dispose(){this.dnd.dispose()}}class xpo extends eRn{constructor(t,n,r){super(n,r),this.findProvider=t,this.isFindSessionActive=!1}filter(t,n){const r=super.filter(t,n);if(!this.isFindSessionActive||this.findMode===zk.Highlight||!this.findProvider.isVisible)return r;const o=Jie(r)?r.visibility:r;return LR(o)===0?0:this.findProvider.isVisible(t)?r:0}}class Epo extends tRn{constructor(t,n,r,o,s){super(t,r,o,s),this.findProvider=n,this.filter=r,this.activeSession=!1,this.asyncWorkInProgress=!1,this.disposables.add(Hn(async()=>{var a,l;this.activeSession&&await((l=(a=this.findProvider).endSession)==null?void 0:l.call(a))}))}render(){if(this.asyncWorkInProgress||!this.activeFindMetadata)return;const t=this.activeFindMetadata.matchCount===0&&this.pattern.length>0;this.renderMessage(t),this.pattern.length&&this.alertResults(this.activeFindMetadata.matchCount)}shouldAllowFocus(t){return this.shouldFocusWhenNavigating(t)}shouldFocusWhenNavigating(t){var r;if(!this.activeSession||!this.activeFindMetadata)return!0;const n=(r=t.element)==null?void 0:r.element;return n&&this.activeFindMetadata.isMatch(n)?!0:!q4.isDefault(t.filterData)}}function aRn(e){return e&&{...e,collapseByDefault:!0,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(t.element)}},dnd:e.dnd&&new Lpo(e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent(t){return e.multipleSelectionController.isSelectionSingleChangeEvent({...t,element:t.element})},isSelectionRangeChangeEvent(t){return e.multipleSelectionController.isSelectionRangeChangeEvent({...t,element:t.element})}},accessibilityProvider:e.accessibilityProvider&&{...e.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",isChecked:e.accessibilityProvider.isChecked?t=>{var n;return!!((n=e.accessibilityProvider)!=null&&n.isChecked(t.element))}:void 0,getAriaLabel(t){return e.accessibilityProvider.getAriaLabel(t.element)},getWidgetAriaLabel(){return e.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider.getAriaLevel&&(t=>e.accessibilityProvider.getAriaLevel(t.element)),getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))},filter:e.filter&&{filter(t,n){return e.filter.filter(t.element,n)}},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(t){return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}},sorter:void 0,expandOnlyOnTwistieClick:typeof e.expandOnlyOnTwistieClick>"u"?void 0:typeof e.expandOnlyOnTwistieClick!="function"?e.expandOnlyOnTwistieClick:t=>e.expandOnlyOnTwistieClick(t.element),defaultFindVisibility:t=>t.hasChildren&&t.stale?1:typeof e.defaultFindVisibility=="number"?e.defaultFindVisibility:typeof e.defaultFindVisibility>"u"?2:e.defaultFindVisibility(t.element),stickyScrollDelegate:e.stickyScrollDelegate}}function lWe(e,t){t(e),e.children.forEach(n=>lWe(n,t))}class lRn{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return an.map(this.tree.onDidChangeFocus,Cyt)}get onDidChangeSelection(){return an.map(this.tree.onDidChangeSelection,Cyt)}get onMouseDblClick(){return an.map(this.tree.onMouseDblClick,_yt)}get onPointer(){return an.map(this.tree.onPointer,_yt)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeStickyScrollFocused(){return this.tree.onDidChangeStickyScrollFocused}get onDidDispose(){return this.tree.onDidDispose}constructor(t,n,r,o,s,a={}){this.user=t,this.dataSource=s,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new at,this._onDidChangeNodeSlowState=new at,this.nodeMapper=new rnt(u=>new cnt(u)),this.disposables=new xt,this.identityProvider=a.identityProvider,this.autoExpandSingleChildren=typeof a.autoExpandSingleChildren>"u"?!1:a.autoExpandSingleChildren,this.sorter=a.sorter,this.getDefaultCollapseState=u=>a.collapseByDefault?a.collapseByDefault(u)?Ik.PreserveOrCollapsed:Ik.PreserveOrExpanded:void 0;let l=!1,d;if(a.findProvider&&(a.findWidgetEnabled??!0)&&a.keyboardNavigationLabelProvider&&a.contextViewProvider&&(l=!0,d=new xpo(a.findProvider,a.keyboardNavigationLabelProvider,a.filter)),this.tree=this.createTree(t,n,r,o,{...a,findWidgetEnabled:!l,filter:d??a.filter}),this.root=pxe({element:void 0,parent:null,hasChildren:!0,defaultCollapseState:void 0}),this.identityProvider&&(this.root={...this.root,id:null}),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables),l){const u={styles:a.findWidgetStyles,showNotFoundMessage:a.showNotFoundMessage,defaultFindMatchType:a.defaultFindMatchType,defaultFindMode:a.defaultFindMode};this.findController=this.disposables.add(new Epo(this.tree,a.findProvider,d,this.tree.options.contextViewProvider,u)),this.focusNavigationFilter=h=>this.findController.shouldFocusWhenNavigating(h),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindOpenState=this.tree.onDidChangeFindOpenState,this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.onDidChangeFindMatchType=this.tree.onDidChangeFindMatchType}createTree(t,n,r,o,s){const a=new ont(r),l=o.map(u=>new _po(u,this.nodeMapper,this._onDidChangeNodeSlowState.event)),d=aRn(s)||{};return new lnt(t,n,a,l,d)}updateOptions(t={}){this.findController&&(t.defaultFindMode!==void 0&&(this.findController.mode=t.defaultFindMode),t.defaultFindMatchType!==void 0&&(this.findController.matchType=t.defaultFindMatchType)),this.tree.updateOptions(t)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(t){this.tree.scrollTop=t}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(t,n){this.tree.layout(t,n)}style(t){this.tree.style(t)}getInput(){return this.root.element}async setInput(t,n){this.cancelAllRefreshPromises(),this.root.element=t;const r=n&&{viewState:n,focus:[],selection:[]};await this._updateChildren(t,!0,!1,r),r&&(this.tree.setFocus(r.focus),this.tree.setSelection(r.selection)),n&&typeof n.scrollTop=="number"&&(this.scrollTop=n.scrollTop)}cancelAllRefreshPromises(t=!1){this.refreshPromises.forEach(n=>n.cancel()),this.refreshPromises.clear(),t&&(this.subTreeRefreshPromises.forEach(n=>n.cancel()),this.subTreeRefreshPromises.clear())}async _updateChildren(t=this.root.element,n=!0,r=!1,o,s){if(typeof this.root.element>"u")throw new Vk(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await an.toPromise(this._onDidRender.event));const a=this.getDataNode(t);if(await this.refreshAndRenderNode(a,n,o,s),r)try{this.tree.rerender(a)}catch{}}rerender(t){if(t===void 0||t===this.root.element){this.tree.rerender();return}const n=this.getDataNode(t);this.tree.rerender(n)}getNode(t=this.root.element){const n=this.getDataNode(t),r=this.tree.getNode(n===this.root?null:n);return this.nodeMapper.map(r)}collapse(t,n=!1){const r=this.getDataNode(t);return this.tree.collapse(r===this.root?null:r,n)}async expand(t,n=!1){if(typeof this.root.element>"u")throw new Vk(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await an.toPromise(this._onDidRender.event));const r=this.getDataNode(t);if(this.tree.hasElement(r)&&!this.tree.isCollapsible(r)||(r.refreshPromise&&(await r.refreshPromise,await an.toPromise(this._onDidRender.event)),r!==this.root&&!r.refreshPromise&&!this.tree.isCollapsed(r)))return!1;const o=this.tree.expand(r===this.root?null:r,n);return r.refreshPromise&&(await r.refreshPromise,await an.toPromise(this._onDidRender.event)),o}setSelection(t,n){const r=t.map(o=>this.getDataNode(o));this.tree.setSelection(r,n)}getSelection(){return this.tree.getSelection().map(n=>n.element)}setFocus(t,n){const r=t.map(o=>this.getDataNode(o));this.tree.setFocus(r,n)}getFocus(){return this.tree.getFocus().map(n=>n.element)}reveal(t,n){this.tree.reveal(this.getDataNode(t),n)}getParentElement(t){const n=this.tree.getParentElement(this.getDataNode(t));return n&&n.element}getFirstElementChild(t=this.root.element){const n=this.getDataNode(t),r=this.tree.getFirstElementChild(n===this.root?null:n);return r&&r.element}getDataNode(t){var r;const n=this.nodes.get(t===this.root.element?null:t);if(!n){const o=(r=this.identityProvider)==null?void 0:r.getId(t).toString();throw new Vk(this.user,`Data tree node not found${o?`: ${o}`:""}`)}return n}async refreshAndRenderNode(t,n,r,o){this.disposables.isDisposed||(await this.refreshNode(t,n,r),!this.disposables.isDisposed&&this.render(t,r,o))}async refreshNode(t,n,r){let o;if(this.subTreeRefreshPromises.forEach((s,a)=>{!o&&Cpo(a,t)&&(o=s.then(()=>this.refreshNode(t,n,r)))}),o)return o;if(t!==this.root&&this.tree.getNode(t).collapsed){t.hasChildren=!!this.dataSource.hasChildren(t.element),t.stale=!0,this.setChildren(t,[],n,r);return}return this.doRefreshSubTree(t,n,r)}async doRefreshSubTree(t,n,r){const o=Fd(async()=>{const s=await this.doRefreshNode(t,n,r);t.stale=!1,await UK.settled(s.map(a=>this.doRefreshSubTree(a,n,r)))});return t.refreshPromise=o,this.subTreeRefreshPromises.set(t,o),o.finally(()=>{t.refreshPromise=void 0,this.subTreeRefreshPromises.delete(t)}),o}async doRefreshNode(t,n,r){t.hasChildren=!!this.dataSource.hasChildren(t.element);let o;if(!t.hasChildren)o=Promise.resolve(to.empty());else{const s=this.doGetChildren(t);if(VFe(s))o=Promise.resolve(s);else{const a=Cy(800);a.then(()=>{t.slow=!0,this._onDidChangeNodeSlowState.fire(t)},l=>null),o=s.finally(()=>a.cancel())}}try{const s=await o;return this.setChildren(t,s,n,r)}catch(s){if(t!==this.root&&this.tree.hasElement(t)&&this.tree.collapse(t),C2(s))return[];throw s}finally{t.slow&&(t.slow=!1,this._onDidChangeNodeSlowState.fire(t))}}doGetChildren(t){let n=this.refreshPromises.get(t);if(n)return n;const r=this.dataSource.getChildren(t.element);return VFe(r)?this.processChildren(r):(n=Fd(async()=>this.processChildren(await r)),this.refreshPromises.set(t,n),n.finally(()=>{this.refreshPromises.delete(t)}))}_onDidChangeCollapseState({node:t,deep:n}){t.element!==null&&!t.collapsed&&t.element.stale&&(n?this.collapse(t.element.element):this.refreshAndRenderNode(t.element,!1).catch(zi))}setChildren(t,n,r,o){const s=[...n];if(t.children.length===0&&s.length===0)return[];const a=new Map,l=new Map;for(const h of t.children)a.set(h.element,h),this.identityProvider&&l.set(h.id,{node:h,collapsed:this.tree.hasElement(h)&&this.tree.isCollapsed(h)});const d=[],u=s.map(h=>{const g=!!this.dataSource.hasChildren(h);if(!this.identityProvider){const k=pxe({element:h,parent:t,hasChildren:g,defaultCollapseState:this.getDefaultCollapseState(h)});return g&&k.defaultCollapseState===Ik.PreserveOrExpanded&&d.push(k),k}const m=this.identityProvider.getId(h).toString(),v=l.get(m);if(v){const k=v.node;return a.delete(k.element),this.nodes.delete(k.element),this.nodes.set(h,k),k.element=h,k.hasChildren=g,r?v.collapsed?(k.children.forEach(A=>lWe(A,p=>this.nodes.delete(p.element))),k.children.splice(0,k.children.length),k.stale=!0):d.push(k):g&&!v.collapsed&&d.push(k),k}const f=pxe({element:h,parent:t,id:m,hasChildren:g,defaultCollapseState:this.getDefaultCollapseState(h)});return o&&o.viewState.focus&&o.viewState.focus.indexOf(m)>-1&&o.focus.push(f),o&&o.viewState.selection&&o.viewState.selection.indexOf(m)>-1&&o.selection.push(f),(o&&o.viewState.expanded&&o.viewState.expanded.indexOf(m)>-1||g&&f.defaultCollapseState===Ik.PreserveOrExpanded)&&d.push(f),f});for(const h of a.values())lWe(h,g=>this.nodes.delete(g.element));for(const h of u)this.nodes.set(h.element,h);return Cme(t.children,0,t.children.length,u),t!==this.root&&this.autoExpandSingleChildren&&u.length===1&&d.length===0&&(u[0].forceExpanded=!0,d.push(u[0])),d}render(t,n,r){const o=t.children.map(a=>this.asTreeElement(a,n)),s=r&&{...r,diffIdentityProvider:r.diffIdentityProvider&&{getId(a){return r.diffIdentityProvider.getId(a.element)}}};this.tree.setChildren(t===this.root?null:t,o,s),t!==this.root&&this.tree.setCollapsible(t,t.hasChildren),this._onDidRender.fire()}asTreeElement(t,n){if(t.stale)return{element:t,collapsible:t.hasChildren,collapsed:!0};let r;return n&&n.viewState.expanded&&t.id&&n.viewState.expanded.indexOf(t.id)>-1?r=!1:t.forceExpanded?(r=!1,t.forceExpanded=!1):r=t.defaultCollapseState,{element:t,children:t.hasChildren?to.map(t.children,o=>this.asTreeElement(o,n)):[],collapsible:t.hasChildren,collapsed:r}}processChildren(t){return this.sorter&&(t=[...t].sort(this.sorter.compare.bind(this.sorter))),t}dispose(){this.disposables.dispose(),this.tree.dispose()}}class dnt{get element(){return{elements:this.node.element.elements.map(t=>t.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(t=>new dnt(t))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(t){this.node=t}}class Tpo{constructor(t,n,r,o){this.renderer=t,this.nodeMapper=n,this.compressibleNodeMapperProvider=r,this.onDidChangeTwistieState=o,this.renderedNodes=new Map,this.disposables=[],this.templateId=t.templateId}renderTemplate(t){return{templateData:this.renderer.renderTemplate(t)}}renderElement(t,n,r,o){this.renderer.renderElement(this.nodeMapper.map(t),n,r.templateData,o)}renderCompressedElements(t,n,r,o){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(t),n,r.templateData,o)}renderTwistie(t,n){return t.slow?(n.classList.add(...fi.asClassNameArray(zt.treeItemLoading)),!0):(n.classList.remove(...fi.asClassNameArray(zt.treeItemLoading)),!1)}disposeElement(t,n,r,o){var s,a;(a=(s=this.renderer).disposeElement)==null||a.call(s,this.nodeMapper.map(t),n,r.templateData,o)}disposeCompressedElements(t,n,r,o){var s,a;(a=(s=this.renderer).disposeCompressedElements)==null||a.call(s,this.compressibleNodeMapperProvider().map(t),n,r.templateData,o)}disposeTemplate(t){this.renderer.disposeTemplate(t.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=us(this.disposables)}}function Qpo(e){const t=e&&aRn(e);return t&&{...t,keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&{...t.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel(n){return e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(n.map(r=>r.element))}},stickyScrollDelegate:t.stickyScrollDelegate}}class Dpo extends lRn{constructor(t,n,r,o,s,a,l={}){super(t,n,r,s,a,l),this.compressionDelegate=o,this.compressibleNodeMapper=new rnt(d=>new dnt(d)),this.filter=l.filter}createTree(t,n,r,o,s){const a=new ont(r),l=o.map(u=>new Tpo(u,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),d=Qpo(s)||{};return new sRn(t,n,a,l,d)}asTreeElement(t,n){return{incompressible:this.compressionDelegate.isIncompressible(t.element),...super.asTreeElement(t,n)}}render(t,n,r){if(!this.identityProvider)return super.render(t,n);const o=v=>this.identityProvider.getId(v).toString(),s=v=>{const f=new Set;for(const k of v){const A=this.tree.getCompressedTreeNode(k===this.root?null:k);if(A.element)for(const p of A.element.elements)f.add(o(p.element))}return f},a=s(this.tree.getSelection()),l=s(this.tree.getFocus());super.render(t,n,r);const d=this.getSelection();let u=!1;const h=this.getFocus();let g=!1;const m=v=>{const f=v.element;if(f)for(let k=0;k{const r=this.filter.filter(n,1),o=Bpo(r);if(o===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return o===1})),super.processChildren(t)}}function Bpo(e){return typeof e=="boolean"?e?1:0:Jie(e)?LR(e.visibility):LR(e)}class Rpo extends iRn{constructor(t,n,r,o,s,a={}){super(t,n,r,o,a),this.user=t,this.dataSource=s,this.identityProvider=a.identityProvider}createModel(t,n){return new snt(t,n)}}new yn("isMac",Tr,U(1684,"Whether the operating system is macOS"));new yn("isLinux",v1,U(1685,"Whether the operating system is Linux"));const C3e=new yn("isWindows",mh,U(1686,"Whether the operating system is Windows")),cRn=new yn("isWeb",qy,U(1687,"Whether the platform is a web browser"));new yn("isMacNative",Tr&&!qy,U(1688,"Whether the operating system is macOS on a non-browser platform"));new yn("isIOS",cA,U(1689,"Whether the operating system is iOS"));new yn("isMobile",Q6n,U(1690,"Whether the platform is a mobile web browser"));new yn("isDevelopment",!1,!0);new yn("productQualityType","",U(1691,"Quality type of VS Code"));const dRn="inputFocus",unt=new yn(dRn,!1,U(1692,"Whether keyboard focus is inside an input box"));var _L=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Ta=function(e,t){return function(n,r){t(n,r,e)}};const _A=Cr("listService");class Ipo{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new xt,this.lists=[],this._lastFocusedWidget=void 0}setLastFocusedList(t){var n,r;t!==this._lastFocusedWidget&&((n=this._lastFocusedWidget)==null||n.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=t,(r=this._lastFocusedWidget)==null||r.getHTMLElement().classList.add("last-focused"))}register(t,n){if(this.lists.some(o=>o.widget===t))throw new Error("Cannot register the same widget multiple times");const r={widget:t,extraContextKeys:n};return this.lists.push(r),wbe(t.getHTMLElement())&&this.setLastFocusedList(t),G4(t.onDidFocus(()=>this.setLastFocusedList(t)),Hn(()=>this.lists.splice(this.lists.indexOf(r),1)),t.onDidDispose(()=>{this.lists=this.lists.filter(o=>o!==r),this._lastFocusedWidget===t&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}const $J=new yn("listScrollAtBoundary","none");Ft.or($J.isEqualTo("top"),$J.isEqualTo("both"));Ft.or($J.isEqualTo("bottom"),$J.isEqualTo("both"));const uRn=new yn("listFocus",!0),hRn=new yn("treestickyScrollFocused",!1),_3e=new yn("listSupportsMultiselect",!0),fRn=Ft.and(uRn,Ft.not(dRn),hRn.negate()),hnt=new yn("listHasSelectionOrFocus",!1),fnt=new yn("listDoubleSelection",!1),gnt=new yn("listMultiSelection",!1),S3e=new yn("listSelectionNavigation",!1),Mpo=new yn("listSupportsFind",!0),mnt=new yn("treeElementCanCollapse",!1),Ppo=new yn("treeElementHasParent",!1),knt=new yn("treeElementCanExpand",!1),Fpo=new yn("treeElementHasChild",!1),Npo=new yn("treeFindOpen",!1),gRn="listTypeNavigationMode",mRn="listAutomaticKeyboardNavigation";function L3e(e,t){const n=e.createScoped(t.getHTMLElement());return uRn.bindTo(n),n}function x3e(e,t){const n=$J.bindTo(e),r=()=>{const o=t.scrollTop===0,s=t.scrollHeight-t.renderHeight-t.scrollTop<1;o&&s?n.set("both"):o?n.set("top"):s?n.set("bottom"):n.set("none")};return r(),t.onDidScroll(r)}const RI="workbench.list.multiSelectModifier",phe="workbench.list.openMode",qv="workbench.list.horizontalScrolling",vnt="workbench.list.defaultFindMode",Ant="workbench.list.typeNavigationMode",s0e="workbench.list.keyboardNavigation",_3="workbench.list.scrollByPage",pnt="workbench.list.defaultFindMatchType",XJ="workbench.tree.indent",a0e="workbench.tree.renderIndentGuides",S3="workbench.list.smoothScrolling",Ty="workbench.list.mouseWheelScrollSensitivity",Qy="workbench.list.fastScrollSensitivity",l0e="workbench.tree.expandMode",c0e="workbench.tree.enableStickyScroll",d0e="workbench.tree.stickyScrollMaxItemCount";function Dy(e){return e.getValue(RI)==="alt"}class Upo extends ft{constructor(t){super(),this.configurationService=t,this.useAltAsMultipleSelectionModifier=Dy(t),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(t=>{t.affectsConfiguration(RI)&&(this.useAltAsMultipleSelectionModifier=Dy(this.configurationService))}))}isSelectionSingleChangeEvent(t){return this.useAltAsMultipleSelectionModifier?t.browserEvent.altKey:KQn(t)}isSelectionRangeChangeEvent(t){return JQn(t)}}function E3e(e,t){const n=e.get(ar),r=e.get(Do),o=new xt;return[{...t,keyboardNavigationDelegate:{mightProducePrintableCharacter(a){return r.mightProducePrintableCharacter(a)}},smoothScrolling:!!n.getValue(S3),mouseWheelScrollSensitivity:n.getValue(Ty),fastScrollSensitivity:n.getValue(Qy),multipleSelectionController:t.multipleSelectionController??o.add(new Upo(n)),keyboardNavigationEventFilter:Vpo(r),scrollByPage:!!n.getValue(_3)},o]}let Syt=class extends _2{constructor(t,n,r,o,s,a,l,d,u){const h=typeof s.horizontalScrolling<"u"?s.horizontalScrolling:!!d.getValue(qv),[g,m]=u.invokeFunction(E3e,s);super(t,n,r,o,{keyboardSupport:!1,...g,horizontalScrolling:h}),this.disposables.add(m),this.contextKeyService=L3e(a,this),this.disposables.add(x3e(this.contextKeyService,this)),this.listSupportsMultiSelect=_3e.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(s.multipleSelectionSupport!==!1),S3e.bindTo(this.contextKeyService).set(!!s.selectionNavigation),this.listHasSelectionOrFocus=hnt.bindTo(this.contextKeyService),this.listDoubleSelection=fnt.bindTo(this.contextKeyService),this.listMultiSelection=gnt.bindTo(this.contextKeyService),this.horizontalScrolling=s.horizontalScrolling,this._useAltAsMultipleSelectionModifier=Dy(d),this.disposables.add(this.contextKeyService),this.disposables.add(l.register(this)),this.updateStyles(s.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const f=this.getSelection(),k=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(f.length>0||k.length>0),this.listMultiSelection.set(f.length>1),this.listDoubleSelection.set(f.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const f=this.getSelection(),k=this.getFocus();this.listHasSelectionOrFocus.set(f.length>0||k.length>0)})),this.disposables.add(d.onDidChangeConfiguration(f=>{f.affectsConfiguration(RI)&&(this._useAltAsMultipleSelectionModifier=Dy(d));let k={};if(f.affectsConfiguration(qv)&&this.horizontalScrolling===void 0){const A=!!d.getValue(qv);k={...k,horizontalScrolling:A}}if(f.affectsConfiguration(_3)){const A=!!d.getValue(_3);k={...k,scrollByPage:A}}if(f.affectsConfiguration(S3)){const A=!!d.getValue(S3);k={...k,smoothScrolling:A}}if(f.affectsConfiguration(Ty)){const A=d.getValue(Ty);k={...k,mouseWheelScrollSensitivity:A}}if(f.affectsConfiguration(Qy)){const A=d.getValue(Qy);k={...k,fastScrollSensitivity:A}}Object.keys(k).length>0&&this.updateOptions(k)})),this.navigator=new kRn(this,{configurationService:d,...s}),this.disposables.add(this.navigator)}updateOptions(t){super.updateOptions(t),t.overrideStyles!==void 0&&this.updateStyles(t.overrideStyles),t.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!t.multipleSelectionSupport)}updateStyles(t){this.style(t?TI(t):sH)}};Syt=_L([Ta(5,Qi),Ta(6,_A),Ta(7,ar),Ta(8,Yn)],Syt);let Lyt=class extends $4o{constructor(t,n,r,o,s,a,l,d,u){const h=typeof s.horizontalScrolling<"u"?s.horizontalScrolling:!!d.getValue(qv),[g,m]=u.invokeFunction(E3e,s);super(t,n,r,o,{keyboardSupport:!1,...g,horizontalScrolling:h}),this.disposables=new xt,this.disposables.add(m),this.contextKeyService=L3e(a,this),this.disposables.add(x3e(this.contextKeyService,this.widget)),this.horizontalScrolling=s.horizontalScrolling,this.listSupportsMultiSelect=_3e.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(s.multipleSelectionSupport!==!1),S3e.bindTo(this.contextKeyService).set(!!s.selectionNavigation),this._useAltAsMultipleSelectionModifier=Dy(d),this.disposables.add(this.contextKeyService),this.disposables.add(l.register(this)),this.updateStyles(s.overrideStyles),this.disposables.add(d.onDidChangeConfiguration(f=>{f.affectsConfiguration(RI)&&(this._useAltAsMultipleSelectionModifier=Dy(d));let k={};if(f.affectsConfiguration(qv)&&this.horizontalScrolling===void 0){const A=!!d.getValue(qv);k={...k,horizontalScrolling:A}}if(f.affectsConfiguration(_3)){const A=!!d.getValue(_3);k={...k,scrollByPage:A}}if(f.affectsConfiguration(S3)){const A=!!d.getValue(S3);k={...k,smoothScrolling:A}}if(f.affectsConfiguration(Ty)){const A=d.getValue(Ty);k={...k,mouseWheelScrollSensitivity:A}}if(f.affectsConfiguration(Qy)){const A=d.getValue(Qy);k={...k,fastScrollSensitivity:A}}Object.keys(k).length>0&&this.updateOptions(k)})),this.navigator=new kRn(this,{configurationService:d,...s}),this.disposables.add(this.navigator)}updateOptions(t){super.updateOptions(t),t.overrideStyles!==void 0&&this.updateStyles(t.overrideStyles),t.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!t.multipleSelectionSupport)}updateStyles(t){this.style(t?TI(t):sH)}dispose(){this.disposables.dispose(),super.dispose()}};Lyt=_L([Ta(5,Qi),Ta(6,_A),Ta(7,ar),Ta(8,Yn)],Lyt);let xyt=class extends K4o{constructor(t,n,r,o,s,a,l,d,u,h){const g=typeof a.horizontalScrolling<"u"?a.horizontalScrolling:!!u.getValue(qv),[m,v]=h.invokeFunction(E3e,a);super(t,n,r,o,s,{keyboardSupport:!1,...m,horizontalScrolling:g}),this.disposables.add(v),this.contextKeyService=L3e(l,this),this.disposables.add(x3e(this.contextKeyService,this)),this.listSupportsMultiSelect=_3e.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(a.multipleSelectionSupport!==!1),S3e.bindTo(this.contextKeyService).set(!!a.selectionNavigation),this.listHasSelectionOrFocus=hnt.bindTo(this.contextKeyService),this.listDoubleSelection=fnt.bindTo(this.contextKeyService),this.listMultiSelection=gnt.bindTo(this.contextKeyService),this.horizontalScrolling=a.horizontalScrolling,this._useAltAsMultipleSelectionModifier=Dy(u),this.disposables.add(this.contextKeyService),this.disposables.add(d.register(this)),this.updateStyles(a.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const k=this.getSelection(),A=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(k.length>0||A.length>0),this.listMultiSelection.set(k.length>1),this.listDoubleSelection.set(k.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const k=this.getSelection(),A=this.getFocus();this.listHasSelectionOrFocus.set(k.length>0||A.length>0)})),this.disposables.add(u.onDidChangeConfiguration(k=>{k.affectsConfiguration(RI)&&(this._useAltAsMultipleSelectionModifier=Dy(u));let A={};if(k.affectsConfiguration(qv)&&this.horizontalScrolling===void 0){const p=!!u.getValue(qv);A={...A,horizontalScrolling:p}}if(k.affectsConfiguration(_3)){const p=!!u.getValue(_3);A={...A,scrollByPage:p}}if(k.affectsConfiguration(S3)){const p=!!u.getValue(S3);A={...A,smoothScrolling:p}}if(k.affectsConfiguration(Ty)){const p=u.getValue(Ty);A={...A,mouseWheelScrollSensitivity:p}}if(k.affectsConfiguration(Qy)){const p=u.getValue(Qy);A={...A,fastScrollSensitivity:p}}Object.keys(A).length>0&&this.updateOptions(A)})),this.navigator=new jpo(this,{configurationService:u,...a}),this.disposables.add(this.navigator)}updateOptions(t){super.updateOptions(t),t.overrideStyles!==void 0&&this.updateStyles(t.overrideStyles),t.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!t.multipleSelectionSupport)}updateStyles(t){this.style(t?TI(t):sH)}dispose(){this.disposables.dispose(),super.dispose()}};xyt=_L([Ta(6,Qi),Ta(7,_A),Ta(8,ar),Ta(9,Yn)],xyt);class bnt extends ft{constructor(t,n){super(),this.widget=t,this._onDidOpen=this._register(new at),this.onDidOpen=this._onDidOpen.event,this._register(an.filter(this.widget.onDidChangeSelection,r=>eS(r.browserEvent))(r=>this.onSelectionFromKeyboard(r))),this._register(this.widget.onPointer(r=>this.onPointer(r.element,r.browserEvent))),this._register(this.widget.onMouseDblClick(r=>this.onMouseDblClick(r.element,r.browserEvent))),typeof(n==null?void 0:n.openOnSingleClick)!="boolean"&&(n!=null&&n.configurationService)?(this.openOnSingleClick=(n==null?void 0:n.configurationService.getValue(phe))!=="doubleClick",this._register(n==null?void 0:n.configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration(phe)&&(this.openOnSingleClick=(n==null?void 0:n.configurationService.getValue(phe))!=="doubleClick")}))):this.openOnSingleClick=(n==null?void 0:n.openOnSingleClick)??!0}onSelectionFromKeyboard(t){if(t.elements.length!==1)return;const n=t.browserEvent,r=typeof n.preserveFocus=="boolean"?n.preserveFocus:!0,o=typeof n.pinned=="boolean"?n.pinned:!r;this._open(this.getSelectedElement(),r,o,!1,t.browserEvent)}onPointer(t,n){if(!this.openOnSingleClick||n.detail===2)return;const o=n.button===1,s=!0,a=o,l=n.ctrlKey||n.metaKey||n.altKey;this._open(t,s,a,l,n)}onMouseDblClick(t,n){if(!n)return;const r=n.target;if(r.classList.contains("monaco-tl-twistie")||r.classList.contains("monaco-icon-label")&&r.classList.contains("folder-icon")&&n.offsetX<16)return;const s=!1,a=!0,l=n.ctrlKey||n.metaKey||n.altKey;this._open(t,s,a,l,n)}_open(t,n,r,o,s){t&&this._onDidOpen.fire({editorOptions:{preserveFocus:n,pinned:r,revealIfVisible:!0},sideBySide:o,element:t,browserEvent:s})}}class kRn extends bnt{constructor(t,n){super(t,n),this.widget=t}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class jpo extends bnt{constructor(t,n){super(t,n)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Wpo extends bnt{constructor(t,n){super(t,n)}getSelectedElement(){return this.widget.getSelection()[0]??void 0}}function Vpo(e){let t=!1;return n=>{if(n.toKeyCodeChord().isModifierKey())return!1;if(t)return t=!1,!1;const r=e.softDispatch(n,n.target);return r.kind===1?(t=!0,!1):(t=!1,r.kind===0)}}let u0e=class extends lnt{get onDidOpen(){return this.internals.onDidOpen}constructor(t,n,r,o,s,a,l,d,u){const{options:h,getTypeNavigationMode:g,disposable:m}=a.invokeFunction(ere,s);super(t,n,r,o,h),this.disposables.add(m),this.internals=new ER(this,s,g,s.overrideStyles,l,d,u),this.disposables.add(this.internals)}updateOptions(t){super.updateOptions(t),this.internals.updateOptions(t)}};u0e=_L([Ta(5,Yn),Ta(6,Qi),Ta(7,_A),Ta(8,ar)],u0e);let Eyt=class extends sRn{constructor(t,n,r,o,s,a,l,d,u){const{options:h,getTypeNavigationMode:g,disposable:m}=a.invokeFunction(ere,s);super(t,n,r,o,h),this.disposables.add(m),this.internals=new ER(this,s,g,s.overrideStyles,l,d,u),this.disposables.add(this.internals)}updateOptions(t={}){super.updateOptions(t),t.overrideStyles&&this.internals.updateStyleOverrides(t.overrideStyles),this.internals.updateOptions(t)}};Eyt=_L([Ta(5,Yn),Ta(6,Qi),Ta(7,_A),Ta(8,ar)],Eyt);let Tyt=class extends Rpo{constructor(t,n,r,o,s,a,l,d,u,h){const{options:g,getTypeNavigationMode:m,disposable:v}=l.invokeFunction(ere,a);super(t,n,r,o,s,g),this.disposables.add(v),this.internals=new ER(this,a,m,a.overrideStyles,d,u,h),this.disposables.add(this.internals)}updateOptions(t={}){super.updateOptions(t),t.overrideStyles!==void 0&&this.internals.updateStyleOverrides(t.overrideStyles),this.internals.updateOptions(t)}};Tyt=_L([Ta(6,Yn),Ta(7,Qi),Ta(8,_A),Ta(9,ar)],Tyt);let cWe=class extends lRn{get onDidOpen(){return this.internals.onDidOpen}constructor(t,n,r,o,s,a,l,d,u,h){const{options:g,getTypeNavigationMode:m,disposable:v}=l.invokeFunction(ere,a);super(t,n,r,o,s,g),this.disposables.add(v),this.internals=new ER(this,a,m,a.overrideStyles,d,u,h),this.disposables.add(this.internals)}updateOptions(t={}){super.updateOptions(t),t.overrideStyles&&this.internals.updateStyleOverrides(t.overrideStyles),this.internals.updateOptions(t)}};cWe=_L([Ta(6,Yn),Ta(7,Qi),Ta(8,_A),Ta(9,ar)],cWe);let Qyt=class extends Dpo{constructor(t,n,r,o,s,a,l,d,u,h,g){const{options:m,getTypeNavigationMode:v,disposable:f}=d.invokeFunction(ere,l);super(t,n,r,o,s,a,m),this.disposables.add(f),this.internals=new ER(this,l,v,l.overrideStyles,u,h,g),this.disposables.add(this.internals)}updateOptions(t){super.updateOptions(t),this.internals.updateOptions(t)}};Qyt=_L([Ta(7,Yn),Ta(8,Qi),Ta(9,_A),Ta(10,ar)],Qyt);function vRn(e){const t=e.getValue(vnt);if(t==="highlight")return zk.Highlight;if(t==="filter")return zk.Filter;const n=e.getValue(s0e);if(n==="simple"||n==="highlight")return zk.Highlight;if(n==="filter")return zk.Filter}function ARn(e){const t=e.getValue(pnt);if(t==="fuzzy")return Hb.Fuzzy;if(t==="contiguous")return Hb.Contiguous}function ere(e,t){const n=e.get(ar),r=e.get(wL),o=e.get(Qi),s=e.get(Yn),a=()=>{const m=o.getContextKeyValue(gRn);if(m==="automatic")return CO.Automatic;if(m==="trigger"||o.getContextKeyValue(mRn)===!1)return CO.Trigger;const f=n.getValue(Ant);if(f==="automatic")return CO.Automatic;if(f==="trigger")return CO.Trigger},l=t.horizontalScrolling!==void 0?t.horizontalScrolling:!!n.getValue(qv),[d,u]=s.invokeFunction(E3e,t),h=t.paddingBottom,g=t.renderIndentGuides!==void 0?t.renderIndentGuides:n.getValue(a0e);return{getTypeNavigationMode:a,disposable:u,options:{keyboardSupport:!1,...d,indent:typeof n.getValue(XJ)=="number"?n.getValue(XJ):void 0,renderIndentGuides:g,smoothScrolling:!!n.getValue(S3),defaultFindMode:t.defaultFindMode??vRn(n),defaultFindMatchType:t.defaultFindMatchType??ARn(n),horizontalScrolling:l,scrollByPage:!!n.getValue(_3),paddingBottom:h,hideTwistiesOfChildlessElements:t.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:t.expandOnlyOnTwistieClick??n.getValue(l0e)==="doubleClick",contextViewProvider:r,findWidgetStyles:Eko,enableStickyScroll:!!n.getValue(c0e),stickyScrollMaxItemCount:Number(n.getValue(d0e))}}}let ER=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(t,n,r,o,s,a,l){this.tree=t,this.disposables=[],this.contextKeyService=L3e(s,t),this.disposables.push(x3e(this.contextKeyService,t)),this.listSupportsMultiSelect=_3e.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(n.multipleSelectionSupport!==!1),S3e.bindTo(this.contextKeyService).set(!!n.selectionNavigation),this.listSupportFindWidget=Mpo.bindTo(this.contextKeyService),this.listSupportFindWidget.set(n.findWidgetEnabled??!0),this.hasSelectionOrFocus=hnt.bindTo(this.contextKeyService),this.hasDoubleSelection=fnt.bindTo(this.contextKeyService),this.hasMultiSelection=gnt.bindTo(this.contextKeyService),this.treeElementCanCollapse=mnt.bindTo(this.contextKeyService),this.treeElementHasParent=Ppo.bindTo(this.contextKeyService),this.treeElementCanExpand=knt.bindTo(this.contextKeyService),this.treeElementHasChild=Fpo.bindTo(this.contextKeyService),this.treeFindOpen=Npo.bindTo(this.contextKeyService),this.treeStickyScrollFocused=hRn.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=Dy(l),this.updateStyleOverrides(o);const u=()=>{const g=t.getFocus()[0];if(!g)return;const m=t.getNode(g);this.treeElementCanCollapse.set(m.collapsible&&!m.collapsed),this.treeElementHasParent.set(!!t.getParentElement(g)),this.treeElementCanExpand.set(m.collapsible&&m.collapsed),this.treeElementHasChild.set(!!t.getFirstElementChild(g))},h=new Set;h.add(gRn),h.add(mRn),this.disposables.push(this.contextKeyService,a.register(t),t.onDidChangeSelection(()=>{const g=t.getSelection(),m=t.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(g.length>0||m.length>0),this.hasMultiSelection.set(g.length>1),this.hasDoubleSelection.set(g.length===2)})}),t.onDidChangeFocus(()=>{const g=t.getSelection(),m=t.getFocus();this.hasSelectionOrFocus.set(g.length>0||m.length>0),u()}),t.onDidChangeCollapseState(u),t.onDidChangeModel(u),t.onDidChangeFindOpenState(g=>this.treeFindOpen.set(g)),t.onDidChangeStickyScrollFocused(g=>this.treeStickyScrollFocused.set(g)),l.onDidChangeConfiguration(g=>{let m={};if(g.affectsConfiguration(RI)&&(this._useAltAsMultipleSelectionModifier=Dy(l)),g.affectsConfiguration(XJ)){const v=l.getValue(XJ);m={...m,indent:v}}if(g.affectsConfiguration(a0e)&&n.renderIndentGuides===void 0){const v=l.getValue(a0e);m={...m,renderIndentGuides:v}}if(g.affectsConfiguration(S3)){const v=!!l.getValue(S3);m={...m,smoothScrolling:v}}if(g.affectsConfiguration(vnt)||g.affectsConfiguration(s0e)){const v=vRn(l);m={...m,defaultFindMode:v}}if(g.affectsConfiguration(Ant)||g.affectsConfiguration(s0e)){const v=r();m={...m,typeNavigationMode:v}}if(g.affectsConfiguration(pnt)){const v=ARn(l);m={...m,defaultFindMatchType:v}}if(g.affectsConfiguration(qv)&&n.horizontalScrolling===void 0){const v=!!l.getValue(qv);m={...m,horizontalScrolling:v}}if(g.affectsConfiguration(_3)){const v=!!l.getValue(_3);m={...m,scrollByPage:v}}if(g.affectsConfiguration(l0e)&&n.expandOnlyOnTwistieClick===void 0&&(m={...m,expandOnlyOnTwistieClick:l.getValue(l0e)==="doubleClick"}),g.affectsConfiguration(c0e)){const v=l.getValue(c0e);m={...m,enableStickyScroll:v}}if(g.affectsConfiguration(d0e)){const v=Math.max(1,l.getValue(d0e));m={...m,stickyScrollMaxItemCount:v}}if(g.affectsConfiguration(Ty)){const v=l.getValue(Ty);m={...m,mouseWheelScrollSensitivity:v}}if(g.affectsConfiguration(Qy)){const v=l.getValue(Qy);m={...m,fastScrollSensitivity:v}}Object.keys(m).length>0&&t.updateOptions(m)}),this.contextKeyService.onDidChangeContext(g=>{g.affectsSome(h)&&t.updateOptions({typeNavigationMode:r()})})),this.navigator=new Wpo(t,{configurationService:l,...n}),this.disposables.push(this.navigator)}updateOptions(t){t.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!t.multipleSelectionSupport)}updateStyleOverrides(t){this.tree.style(t?TI(t):sH)}dispose(){this.disposables=us(this.disposables)}};ER=_L([Ta(4,Qi),Ta(5,_A),Ta(6,ar)],ER);const zpo=Ql.as(F3.Configuration);zpo.registerConfiguration({id:"workbench",order:7,title:U(1705,"Workbench"),type:"object",properties:{[RI]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[U(1706,"Maps to `Control` on Windows and Linux and to `Command` on macOS."),U(1707,"Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:U(1708,"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[phe]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:U(1709,"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[qv]:{type:"boolean",default:!1,description:U(1710,"Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[_3]:{type:"boolean",default:!1,description:U(1711,"Controls whether clicks in the scrollbar scroll page by page.")},[XJ]:{type:"number",default:8,minimum:4,maximum:40,description:U(1712,"Controls tree indentation in pixels.")},[a0e]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:U(1713,"Controls whether the tree should render indent guides.")},[S3]:{type:"boolean",default:!1,description:U(1714,"Controls whether lists and trees have smooth scrolling.")},[Ty]:{type:"number",default:1,markdownDescription:U(1715,"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")},[Qy]:{type:"number",default:5,markdownDescription:U(1716,"Scrolling speed multiplier when pressing `Alt`.")},[vnt]:{type:"string",enum:["highlight","filter"],enumDescriptions:[U(1717,"Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),U(1718,"Filter elements when searching.")],default:"highlight",description:U(1719,"Controls the default find mode for lists and trees in the workbench.")},[s0e]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[U(1720,"Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),U(1721,"Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),U(1722,"Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:U(1723,"Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),deprecated:!0,deprecationMessage:U(1724,"Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")},[pnt]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[U(1725,"Use fuzzy matching when searching."),U(1726,"Use contiguous matching when searching.")],default:"fuzzy",description:U(1727,"Controls the type of matching used when searching lists and trees in the workbench.")},[l0e]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:U(1728,"Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[c0e]:{type:"boolean",default:!0,description:U(1729,"Controls whether sticky scrolling is enabled in trees.")},[d0e]:{type:"number",minimum:1,default:7,markdownDescription:U(1730,"Controls the number of sticky elements displayed in the tree when {0} is enabled.","`#workbench.tree.enableStickyScroll#`")},[Ant]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:U(1731,"Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run.")}}});class G8{constructor(t,n,r,o){this.isProviderFirst=t,this.parent=n,this.link=r,this._rangeCallback=o,this.id=NUe.nextId()}get uri(){return this.link.uri}get range(){return this._range??this.link.targetSelectionRange??this.link.range}set range(t){this._range=t,this._rangeCallback(this)}get ariaMessage(){var n;const t=(n=this.parent.getPreview(this))==null?void 0:n.preview(this.range);return t?U(1088,"{0} in {1} on line {2} at column {3}",t.value,hA(this.uri),this.range.startLineNumber,this.range.startColumn):U(1087,"in {0} on line {1} at column {2}",hA(this.uri),this.range.startLineNumber,this.range.startColumn)}}class Hpo{constructor(t){this._modelReference=t}dispose(){this._modelReference.dispose()}preview(t,n=8){const r=this._modelReference.object.textEditorModel;if(!r)return;const{startLineNumber:o,startColumn:s,endLineNumber:a,endColumn:l}=t,d=r.getWordUntilPosition({lineNumber:o,column:s-n}),u=new Ee(o,d.startColumn,o,s),h=new Ee(a,l,a,1073741824),g=r.getValueInRange(u).replace(/^\s+/,""),m=r.getValueInRange(t),v=r.getValueInRange(h).replace(/\s+$/,"");return{value:g+m+v,highlight:{start:g.length,end:g.length+m.length}}}}class bV{constructor(t,n){this.parent=t,this.uri=n,this.children=[],this._previews=new _c}dispose(){us(this._previews.values()),this._previews.clear()}getPreview(t){return this._previews.get(t.uri)}get ariaMessage(){const t=this.children.length;return t===1?U(1089,"1 symbol in {0}, full path {1}",hA(this.uri),this.uri.fsPath):U(1090,"{0} symbols in {1}, full path {2}",t,hA(this.uri),this.uri.fsPath)}async resolve(t){if(this._previews.size!==0)return this;for(const n of this.children)if(!this._previews.has(n.uri))try{const r=await t.createModelReference(n.uri);this._previews.set(n.uri,new Hpo(r))}catch(r){zi(r)}return this}}class B0{constructor(t,n){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new at,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=t,this._title=n;const[r]=t;t.sort(B0._compareReferences);let o;for(const s of t)if((!o||!Wa.isEqual(o.uri,s.uri,!0))&&(o=new bV(this,s.uri),this.groups.push(o)),o.children.length===0||B0._compareReferences(s,o.children[o.children.length-1])!==0){const a=new G8(r===s,o,s,l=>this._onDidChangeReferenceRange.fire(l));this.references.push(a),o.children.push(a)}}dispose(){us(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new B0(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?U(1091,"No results found"):this.references.length===1?U(1092,"Found 1 symbol in {0}",this.references[0].uri.fsPath):this.groups.length===1?U(1093,"Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):U(1094,"Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(t,n){const{parent:r}=t;let o=r.children.indexOf(t);const s=r.children.length,a=r.parent.groups.length;return a===1||n&&o+10?(n?o=(o+1)%s:o=(o+s-1)%s,r.children[o]):(o=r.parent.groups.indexOf(r),n?(o=(o+1)%a,r.parent.groups[o].children[0]):(o=(o+a-1)%a,r.parent.groups[o].children[r.parent.groups[o].children.length-1]))}nearestReference(t,n){const r=this.references.map((o,s)=>({idx:s,prefixLen:dp(o.uri.toString(),t.toString()),offsetDist:Math.abs(o.range.startLineNumber-n.lineNumber)*100+Math.abs(o.range.startColumn-n.column)})).sort((o,s)=>o.prefixLen>s.prefixLen?-1:o.prefixLens.offsetDist?1:0)[0];if(r)return this.references[r.idx]}referenceAt(t,n){for(const r of this.references)if(r.uri.toString()===t.toString()&&Ee.containsPosition(r.range,n))return r}firstReference(){for(const t of this.references)if(t.isProviderFirst)return t;return this.references[0]}static _compareReferences(t,n){return Wa.compare(t.uri,n.uri)||Ee.compareRangesUsingStarts(t.range,n.range)}}class dWe extends ft{constructor(t,n,r){super(),this.options=n,this.styles=r,this.count=0,this.hover=this._register(new ts),this.element=Xt(t,tn(".monaco-count-badge")),this._register(Hn(()=>t.removeChild(this.element))),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0),this.updateHover()}setCount(t){this.count=t,this.render()}setTitleFormat(t){this.titleFormat=t,this.updateHover(),this.render()}updateHover(){this.titleFormat!==""&&!this.hover.value?this.hover.value=yp().setupDelayedHoverAtMouse(this.element,()=>({content:oR(this.titleFormat,this.count),appearance:{compact:!0}})):this.titleFormat===""&&this.hover.value&&(this.hover.value=void 0)}render(){this.element.textContent=oR(this.countFormat,this.count),this.element.style.backgroundColor=this.styles.badgeBackground??"",this.element.style.color=this.styles.badgeForeground??"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}class U9 extends ft{constructor(t,n){super(),this.options=n,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.domNode=Xt(t,tn("span.monaco-highlighted-label"))}get element(){return this.domNode}set(t,n=[],r="",o,s){t||(t=""),o&&(t=U9.escapeNewLines(t,n)),!(this.didEverRender&&this.text===t&&this.title===r&&Q0(this.highlights,n))&&(this.text=t,this.title=r,this.highlights=n,this.render(s))}render(t){var o;const n=[];let r=0;for(const s of this.highlights){if(s.end===s.start)continue;if(r{o=s===`\r `?-1:0,a+=r;for(const l of n)l.end<=a||(l.start>=a&&(l.start+=o),l.end>=a&&(l.end+=o));return r+=o,"⏎"})}}class xX{constructor(t){this._element=t}get element(){return this._element}set textContent(t){this.disposed||t===this._textContent||(this._textContent=t,this._element.textContent=t)}set classNames(t){this.disposed||Q0(t,this._classNames)||(this._classNames=t,this._element.classList.value="",this._element.classList.add(...t))}set empty(t){this.disposed||t===this._empty||(this._empty=t,this._element.style.marginLeft=t?"0":"")}dispose(){this.disposed=!0}}class GJ extends ft{constructor(t,n){super(),this.customHovers=new Map,this.creationOptions=n,this.domNode=this._register(new xX(Xt(t,tn(".monaco-icon-label")))),this.labelContainer=Xt(this.domNode.element,tn(".monaco-icon-label-container")),this.nameContainer=Xt(this.labelContainer,tn("span.monaco-icon-name-container")),n!=null&&n.supportHighlights||n!=null&&n.supportIcons?this.nameNode=this._register(new Gpo(this.nameContainer,!!n.supportIcons)):this.nameNode=new $po(this.nameContainer),this.hoverDelegate=(n==null?void 0:n.hoverDelegate)??eC("mouse")}get element(){return this.domNode.element}setLabel(t,n,r){var d;const o=["monaco-icon-label"],s=["monaco-icon-label-container"];let a="";r&&(r.extraClasses&&o.push(...r.extraClasses),r.bold&&o.push("bold"),r.italic&&o.push("italic"),r.strikethrough&&o.push("strikethrough"),r.disabledCommand&&s.push("disabled"),r.title&&(typeof r.title=="string"?a+=r.title:a+=t));const l=this.domNode.element.querySelector(".monaco-icon-label-iconpath");if(r!=null&&r.iconPath){let u;if(!l||!ec(l)?(u=tn(".monaco-icon-label-iconpath"),this.domNode.element.prepend(u)):u=l,fi.isThemeIcon(r.iconPath)){const h=fi.asClassName(r.iconPath);u.className=`monaco-icon-label-iconpath ${h}`,u.style.backgroundImage=""}else u.style.backgroundImage=xy(r==null?void 0:r.iconPath);u.style.backgroundRepeat="no-repeat",u.style.backgroundPosition="center",u.style.backgroundSize="contain"}else l&&l.remove();if(this.domNode.classNames=o,this.domNode.element.setAttribute("aria-label",a),this.labelContainer.classList.value="",this.labelContainer.classList.add(...s),this.setupHover(r!=null&&r.descriptionTitle?this.labelContainer:this.element,r==null?void 0:r.title),this.nameNode.setLabel(t,r),n||this.descriptionNode){const u=this.getOrCreateDescriptionNode();if(u instanceof U9){const h=(r==null?void 0:r.supportIcons)??((d=this.creationOptions)==null?void 0:d.supportIcons);u.set(n||"",r?r.descriptionMatches:void 0,void 0,r==null?void 0:r.labelEscapeNewLines,h),this.setupHover(u.element,r==null?void 0:r.descriptionTitle)}else u.textContent=n&&(r!=null&&r.labelEscapeNewLines)?U9.escapeNewLines(n,[]):n||"",this.setupHover(u.element,(r==null?void 0:r.descriptionTitle)||""),u.empty=!n}if(r!=null&&r.suffix||this.suffixNode){const u=this.getOrCreateSuffixNode();u.textContent=(r==null?void 0:r.suffix)??""}}setupHover(t,n){var a;const r=this.customHovers.get(t);if(r&&(r.dispose(),this.customHovers.delete(t)),!n){t.removeAttribute("title");return}let o=t;if((a=this.creationOptions)!=null&&a.hoverTargetOverride){if(!gu(t,this.creationOptions.hoverTargetOverride))throw new Error("hoverTargetOverrride must be an ancestor of the htmlElement");o=this.creationOptions.hoverTargetOverride}const s=yp().setupManagedHover(this.hoverDelegate,o,n);s&&this.customHovers.set(t,s)}dispose(){super.dispose();for(const t of this.customHovers.values())t.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const t=this._register(new xX(Xto(this.nameContainer,tn("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new xX(Xt(t.element,tn("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var t;if(!this.descriptionNode){const n=this._register(new xX(Xt(this.labelContainer,tn("span.monaco-icon-description-container"))));(t=this.creationOptions)!=null&&t.supportDescriptionHighlights?this.descriptionNode=this._register(new U9(Xt(n.element,tn("span.label-description")))):this.descriptionNode=this._register(new xX(Xt(n.element,tn("span.label-description"))))}return this.descriptionNode}}class $po{constructor(t){this.container=t,this.label=void 0,this.singleLabel=void 0}setLabel(t,n){if(!(this.label===t&&Q0(this.options,n)))if(this.label=t,this.options=n,typeof t=="string")this.singleLabel||(this.container.textContent="",this.container.classList.remove("multiple"),this.singleLabel=Xt(this.container,tn("a.label-name",{id:n==null?void 0:n.domId}))),this.singleLabel.textContent=t;else{this.container.textContent="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let r=0;r{const s={start:r,end:r+o.length},a=n.map(l=>mf.intersect(s,l)).filter(l=>!mf.isEmpty(l)).map(({start:l,end:d})=>({start:l-r,end:d-r}));return r=s.end+t.length,a})}class Gpo extends ft{constructor(t,n){super(),this.container=t,this.supportIcons=n,this.label=void 0,this.singleLabel=void 0}setLabel(t,n){if(this.label===t&&Q0(this.options,n))return;this.label=t,this.options=n;const r=(n==null?void 0:n.supportIcons)??this.supportIcons;if(typeof t=="string")this.singleLabel||(this.container.textContent="",this.container.classList.remove("multiple"),this.singleLabel=this._register(new U9(Xt(this.container,tn("a.label-name",{id:n==null?void 0:n.domId}))))),this.singleLabel.set(t,n==null?void 0:n.matches,void 0,n==null?void 0:n.labelEscapeNewLines,r);else{this.container.textContent="",this.container.classList.add("multiple"),this.singleLabel=void 0;const o=(n==null?void 0:n.separator)||"/",s=Xpo(t,o,n==null?void 0:n.matches);for(let a=0;a=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Q3e=function(e,t){return function(n,r){t(n,r,e)}},uWe;let hWe=class{constructor(t){this._resolverService=t}hasChildren(t){return t instanceof B0||t instanceof bV}getChildren(t){if(t instanceof B0)return t.groups;if(t instanceof bV)return t.resolve(this._resolverService).then(n=>n.children);throw new Error("bad tree")}};hWe=T3e([Q3e(0,Dg)],hWe);class Ypo{getHeight(){return 23}getTemplateId(t){return t instanceof bV?h0e.id:f0e.id}}let fWe=class{constructor(t){this._keybindingService=t}getKeyboardNavigationLabel(t){var n;if(t instanceof G8){const r=(n=t.parent.getPreview(t))==null?void 0:n.preview(t.range);if(r)return r.value}return hA(t.uri)}};fWe=T3e([Q3e(0,Do)],fWe);class Zpo{getId(t){return t instanceof G8?t.id:t.uri}}let gWe=class extends ft{constructor(t,n){super(),this._labelService=n;const r=document.createElement("div");r.classList.add("reference-file"),this.file=this._register(new GJ(r,{supportHighlights:!0})),this.badge=this._register(new dWe(Xt(r,tn(".count")),{},gDn)),t.appendChild(r)}set(t,n){const r=Dbe(t.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(t.uri),this._labelService.getUriLabel(r,{relative:!0}),{title:this._labelService.getUriLabel(t.uri),matches:n});const o=t.children.length;this.badge.setCount(o),o>1?this.badge.setTitleFormat(U(1081,"{0} references",o)):this.badge.setTitleFormat(U(1082,"{0} reference",o))}};gWe=T3e([Q3e(1,TR)],gWe);var jD;let h0e=(jD=class{constructor(t){this._instantiationService=t,this.templateId=uWe.id}renderTemplate(t){return this._instantiationService.createInstance(gWe,t)}renderElement(t,n,r){r.set(t.element,Uie(t.filterData))}disposeTemplate(t){t.dispose()}},uWe=jD,jD.id="FileReferencesRenderer",jD);h0e=uWe=T3e([Q3e(0,Yn)],h0e);class qpo extends ft{constructor(t){super(),this.label=this._register(new U9(t))}set(t,n){var o;const r=(o=t.parent.getPreview(t))==null?void 0:o.preview(t.range);if(!r||!r.value)this.label.set(`${hA(t.uri)}:${t.range.startLineNumber+1}:${t.range.startColumn+1}`);else{const{value:s,highlight:a}=r;n&&!q4.isDefault(n)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(s,Uie(n))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(s,[a]))}}}const Jve=class Jve{constructor(){this.templateId=Jve.id}renderTemplate(t){return new qpo(t)}renderElement(t,n,r){r.set(t.element,t.filterData)}disposeTemplate(t){t.dispose()}};Jve.id="OneReferenceRenderer";let f0e=Jve;class Kpo{getWidgetAriaLabel(){return U(1083,"References")}getAriaLabel(t){return t.ariaMessage}}var pRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},K7=function(e,t){return function(n,r){t(n,r,e)}};const eAe=class eAe{constructor(t,n){this._editor=t,this._model=n,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new xt,this._callOnModelChange=new xt,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const t=this._editor.getModel();if(t){for(const n of this._model.references)if(n.uri.toString()===t.uri.toString()){this._addDecorations(n.parent);return}}}_addDecorations(t){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const n=[],r=[];for(let o=0,s=t.children.length;o{const s=o.deltaDecorations([],n);for(let a=0;athis.labelService.getUriBasenameLabel(r.uri)).join(", ")}onDragStart(t,n){if(!n.dataTransfer)return;const o=t.elements.map(s=>this.getDragURI(s)).filter(Boolean);o.length&&(n.dataTransfer.setData(mR.RESOURCES,JSON.stringify(o)),n.dataTransfer.setData(mR.TEXT,o.join(` -`)))}onDragOver(){return!1}drop(){}dispose(){this.disposables.dispose()}};kWe=pRn([K7(0,TR)],kWe);let vWe=class extends i0e{constructor(t,n,r,o,s,a,l,d,u){super(t,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},a),this._defaultTreeKeyboardSupport=n,this.layoutData=r,this._textModelResolverService=s,this._instantiationService=a,this._peekViewService=l,this._uriLabel=d,this._keybindingService=u,this._disposeOnNewModel=new xt,this._callOnDispose=new xt,this._onDidSelectReference=new at,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new cs(0,0),this._isClosing=!1,this._applyTheme(o.getColorTheme()),this._callOnDispose.add(o.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(t,this),this.create()}get isClosing(){return this._isClosing}dispose(){this._isClosing=!0,this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),us(this._preview),us(this._previewNotAvailableMessage),us(this._tree),us(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(t){const n=t.getColor(j4o)||Dt.transparent;this.style({arrowColor:n,frameColor:n,headerBackgroundColor:t.getColor(U4o)||Dt.transparent,primaryHeadingColor:t.getColor(ZBn),secondaryHeadingColor:t.getColor(qBn)})}show(t){super.show(t,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(t){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"title"})}_fillBody(t){this.setCssClass("reference-zone-widget"),this._messageContainer=Xt(t,tn("div.messages")),tm(this._messageContainer),this._splitView=new JBn(t,{orientation:1}),this._previewContainer=Xt(t,tn("div.preview.inline"));const n={scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}};this._preview=this._instantiationService.createInstance(X8,this._previewContainer,n,{},this.editor),tm(this._previewContainer),this._previewNotAvailableMessage=this._instantiationService.createInstance(fR,U(1084,"no preview available"),o2,fR.DEFAULT_CREATION_OPTIONS,null),this._treeContainer=Xt(t,tn("div.ref-tree.inline"));const r={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new Kpo,keyboardNavigationLabelProvider:this._instantiationService.createInstance(fWe),identityProvider:new Zpo,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:W4o},dnd:this._instantiationService.createInstance(kWe)};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(wc(this._treeContainer,"keydown",s=>{s.equals(9)&&(this._keybindingService.dispatchEvent(s,s.target),s.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(ebo,"ReferencesWidget",this._treeContainer,new Ypo,[this._instantiationService.createInstance(h0e),this._instantiationService.createInstance(f0e)],this._instantiationService.createInstance(hWe),r),this._splitView.addView({onDidChange:an.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:s=>{this._preview.layout({height:this._dim.height,width:s})}},r0e.Distribute),this._splitView.addView({onDidChange:an.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:s=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${s}px`,this._tree.layout(this._dim.height,s)}},r0e.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const o=(s,a)=>{s instanceof G8&&(a==="show"&&this._revealReference(s,!1),this._onDidSelectReference.fire({element:s,kind:a,source:"tree"}))};this._disposables.add(this._tree.onDidOpen(s=>{s.sideBySide?o(s.element,"side"):s.editorOptions.pinned?o(s.element,"goto"):o(s.element,"show")})),tm(this._treeContainer)}_onWidth(t){this._dim&&this._doLayoutBody(this._dim.height,t)}_doLayoutBody(t,n){super._doLayoutBody(t,n),this._dim=new cs(n,t),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(n),this._splitView.resizeView(0,n*this.layoutData.ratio)}setSelection(t){return this._revealReference(t,!0).then(()=>{this._model&&(this._tree.setSelection([t]),this._tree.setFocus([t]))})}setModel(t){return this._disposeOnNewModel.clear(),this._model=t,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=U(1085,"No results"),k0(this._messageContainer),Promise.resolve(void 0)):(tm(this._messageContainer),this._decorationsManager=new mWe(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(t=>this._tree.rerender(t))),this._disposeOnNewModel.add(this._preview.onMouseDown(t=>{const{event:n,target:r}=t;if(n.detail!==2)return;const o=this._getFocusedReference();o&&this._onDidSelectReference.fire({element:{uri:o.uri,range:r.range},kind:n.ctrlKey||n.metaKey||n.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),k0(this._treeContainer),k0(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[t]=this._tree.getFocus();if(t instanceof G8)return t;if(t instanceof bV&&t.children.length>0)return t.children[0]}async revealReference(t){await this._revealReference(t,!1),this._onDidSelectReference.fire({element:t,kind:"goto",source:"tree"})}async _revealReference(t,n){if(this._revealedReference===t)return;this._revealedReference=t,t.uri.scheme!==Ci.inMemory?this.setTitle(Dno(t.uri),this._uriLabel.getUriLabel(Dbe(t.uri))):this.setTitle(U(1086,"References"));const r=this._textModelResolverService.createModelReference(t.uri);this._tree.getInput()===t.parent?this._tree.reveal(t):(n&&this._tree.reveal(t.parent),await this._tree.expand(t.parent),this._tree.reveal(t));const o=await r;if(!this._model){o.dispose();return}us(this._previewModelReference);const s=o.object;if(s){const a=this._preview.getModel()===s.textEditorModel?0:1,l=Ee.lift(t.range).collapseToStart();this._previewModelReference=o,this._preview.setModel(s.textEditorModel),this._preview.setSelection(l),this._preview.revealRangeInCenter(l,a)}else this._preview.setModel(this._previewNotAvailableMessage),o.dispose()}};vWe=pRn([K7(3,Dl),K7(4,Dg),K7(5,Yn),K7(6,YBn),K7(7,TR),K7(8,Do)],vWe);var tbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},TP=function(e,t){return function(n,r){t(n,r,e)}},bhe;const II=new yn("referenceSearchVisible",!1,U(1078,"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));var WD;let QR=(WD=class{static get(t){return t.getContribution(bhe.ID)}constructor(t,n,r,o,s,a,l,d){this._defaultTreeKeyboardSupport=t,this._editor=n,this._editorService=o,this._notificationService=s,this._instantiationService=a,this._storageService=l,this._configurationService=d,this._disposables=new xt,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=II.bindTo(r)}dispose(){var t,n;this._referenceSearchVisible.reset(),this._disposables.dispose(),(t=this._widget)==null||t.dispose(),(n=this._model)==null||n.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(t,n,r){let o;if(this._widget&&(o=this._widget.position),this.closeWidget(),o&&t.containsPosition(o))return;this._peekMode=r,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const s="peekViewLayout",a=Jpo.fromJSON(this._storageService.get(s,0,"{}"));this._widget=this._instantiationService.createInstance(vWe,this._editor,this._defaultTreeKeyboardSupport,a),this._widget.setTitle(U(1079,"Loading...")),this._widget.show(t),this._disposables.add(this._widget.onDidClose(()=>{n.cancel(),this._widget?(this._storageService.store(s,JSON.stringify(this._widget.layoutData),0,1),this._widget.isClosing||this.closeWidget(),this._widget=void 0):this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(d=>{const{element:u,kind:h}=d;if(u)switch(h){case"open":(d.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(u,!1,!1);break;case"side":this.openReference(u,!0,!1);break;case"goto":r?this._gotoReference(u,!0):this.openReference(u,!1,!0);break}}));const l=++this._requestIdPool;n.then(d=>{var u;if(l!==this._requestIdPool||!this._widget){d.dispose();return}return(u=this._model)==null||u.dispose(),this._model=d,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(U(1080,"{0} ({1})",this._model.title,this._model.references.length));const h=this._editor.getModel().uri,g=new it(t.startLineNumber,t.startColumn),m=this._model.nearestReference(h,g);if(m)return this._widget.setSelection(m).then(()=>{this._widget&&this._editor.getOption(99)==="editor"&&this._widget.focusOnPreviewEditor()})}})},d=>{this._notificationService.error(d)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(t){if(!this._editor.hasModel()||!this._model||!this._widget)return;const n=this._widget.position;if(!n)return;const r=this._model.nearestReference(this._editor.getModel().uri,n);if(!r)return;const o=this._model.nextOrPreviousReference(r,t),s=this._editor.hasTextFocus(),a=this._widget.isPreviewEditorFocused();await this._widget.setSelection(o),await this._gotoReference(o,!1),s?this._editor.focus():this._widget&&a&&this._widget.focusOnPreviewEditor()}async revealReference(t){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(t)}closeWidget(t=!0){var n,r;(n=this._widget)==null||n.dispose(),(r=this._model)==null||r.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,t&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(t,n){var o;(o=this._widget)==null||o.hide(),this._ignoreModelChangeEvent=!0;const r=Ee.lift(t.range).collapseToStart();return this._editorService.openCodeEditor({resource:t.uri,options:{selection:r,selectionSource:"code.jump",pinned:n}},this._editor).then(s=>{if(this._ignoreModelChangeEvent=!1,!s||!this._widget){this.closeWidget();return}if(this._editor===s)this._widget.show(r),this._widget.focusOnReferenceTree();else{const a=bhe.get(s),l=this._model.clone();this.closeWidget(),s.focus(),a==null||a.toggleWidget(r,Fd(d=>Promise.resolve(l)),this._peekMode??!1)}},s=>{this._ignoreModelChangeEvent=!1,zi(s)})}openReference(t,n,r){n||this.closeWidget();const{uri:o,range:s}=t;this._editorService.openCodeEditor({resource:o,options:{selection:s,selectionSource:"code.jump",pinned:r}},this._editor,n)}},bhe=WD,WD.ID="editor.contrib.referencesController",WD);QR=bhe=tbo([TP(2,Qi),TP(3,yo),TP(4,ic),TP(5,Yn),TP(6,Bg),TP(7,ar)],QR);function MI(e,t){const n=$Bn(e);if(!n)return;const r=QR.get(n);r&&t(r)}Nu.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:Uc(2089,60),when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.changeFocusBetweenPreviewAndReferences()})}});Nu.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.goToNextOrPreviousReference(!0)})}});Nu.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.goToNextOrPreviousReference(!1)})}});co.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference");co.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference");co.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch");co.registerCommand("closeReferenceSearch",e=>MI(e,t=>t.closeWidget()));Nu.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:Ft.and(b1.inPeekEditor,Ft.not("config.editor.stablePeek"))});Nu.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:Ft.and(II,Ft.not("config.editor.stablePeek"),Ft.or($e.editorTextFocus,unt.negate()))});Nu.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:Ft.and(II,fRn,mnt.negate(),knt.negate()),handler(e){var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.revealReference(n[0]))}});Nu.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:Ft.and(II,fRn,mnt.negate(),knt.negate()),handler(e){var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.openReference(n[0],!0,!0))}});co.registerCommand("openReference",e=>{var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.openReference(n[0],!1,!0))});var bRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},WG=function(e,t){return function(n,r){t(n,r,e)}};const wnt=new yn("hasSymbols",!1,U(1095,"Whether there are symbol locations that can be navigated via keyboard-only.")),D3e=Cr("ISymbolNavigationService");let AWe=class{constructor(t,n,r,o){this._editorService=n,this._notificationService=r,this._keybindingService=o,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=wnt.bindTo(t)}reset(){var t,n;this._ctxHasSymbols.reset(),(t=this._currentState)==null||t.dispose(),(n=this._currentMessage)==null||n.close(),this._currentModel=void 0,this._currentIdx=-1}put(t){const n=t.parent.parent;if(n.references.length<=1){this.reset();return}this._currentModel=n,this._currentIdx=n.references.indexOf(t),this._ctxHasSymbols.set(!0),this._showMessage();const r=new pWe(this._editorService),o=r.onDidChange(s=>{if(this._ignoreEditorChange)return;const a=this._editorService.getActiveCodeEditor();if(!a)return;const l=a.getModel(),d=a.getPosition();if(!l||!d)return;let u=!1,h=!1;for(const g of n.references)if(C6(g.uri,l.uri))u=!0,h=h||Ee.containsPosition(g.range,d);else if(u)break;(!u||!h)&&this.reset()});this._currentState=G4(r,o)}revealNext(t){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const n=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:n.uri,options:{selection:Ee.collapseToStart(n.range),selectionRevealType:3}},t).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var r;(r=this._currentMessage)==null||r.close();const t=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),n=t?U(1096,"Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,t.getLabel()):U(1097,"Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(n)}};AWe=bRn([WG(0,Qi),WG(1,yo),WG(2,ic),WG(3,Do)],AWe);zr(D3e,AWe,1);On(new class extends $d{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:wnt,kbOpts:{weight:100,primary:70}})}runEditorCommand(e,t){return e.get(D3e).revealNext(t)}});Nu.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:wnt,primary:9,handler(e){e.get(D3e).reset()}});let pWe=class{constructor(t){this._listener=new Map,this._disposables=new xt,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._disposables.add(t.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(t.onCodeEditorAdd(this._onDidAddEditor,this)),t.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),us(this._listener.values())}_onDidAddEditor(t){this._listener.set(t,G4(t.onDidChangeCursorPosition(n=>this._onDidChange.fire({editor:t})),t.onDidChangeModelContent(n=>this._onDidChange.fire({editor:t}))))}_onDidRemoveEditor(t){var n;(n=this._listener.get(t))==null||n.dispose(),this._listener.delete(t)}};pWe=bRn([WG(0,yo)],pWe);function bWe(e,t){return t.uri.scheme===e.uri.scheme?!0:!nNe(t.uri,Ci.walkThroughSnippet,Ci.vscodeChatCodeBlock,Ci.vscodeChatCodeCompareBlock)}async function tre(e,t,n,r,o){const a=n.ordered(e,r).map(d=>Promise.resolve(o(d,e,t)).then(void 0,u=>{Nc(u)})),l=await Promise.all(a);return P3(l.flat()).filter(d=>bWe(e,d))}function nre(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideDefinition(a,l,o))}function Ont(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideDeclaration(a,l,o))}function ynt(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideImplementation(a,l,o))}function Cnt(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideTypeDefinition(a,l,o))}function ire(e,t,n,r,o,s){return tre(t,n,e,o,async(a,l,d)=>{var g,m;const u=(g=await a.provideReferences(l,d,{includeDeclaration:!0},s))==null?void 0:g.filter(v=>bWe(l,v));if(!r||!u||u.length!==2)return u;const h=(m=await a.provideReferences(l,d,{includeDeclaration:!1},s))==null?void 0:m.filter(v=>bWe(l,v));return h&&h.length===1?h:u})}async function iC(e){const t=await e(),n=new B0(t,""),r=n.references.map(o=>o.link);return n.dispose(),r}_1("_executeDefinitionProvider",(e,t,n)=>{const r=e.get(Nn),o=nre(r.definitionProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeDefinitionProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=nre(r.definitionProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeTypeDefinitionProvider",(e,t,n)=>{const r=e.get(Nn),o=Cnt(r.typeDefinitionProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeTypeDefinitionProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=Cnt(r.typeDefinitionProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeDeclarationProvider",(e,t,n)=>{const r=e.get(Nn),o=Ont(r.declarationProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeDeclarationProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=Ont(r.declarationProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeReferenceProvider",(e,t,n)=>{const r=e.get(Nn),o=ire(r.referenceProvider,t,n,!1,!1,Er.None);return iC(()=>o)});_1("_executeReferenceProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=ire(r.referenceProvider,t,n,!1,!0,Er.None);return iC(()=>o)});_1("_executeImplementationProvider",(e,t,n)=>{const r=e.get(Nn),o=ynt(r.implementationProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeImplementationProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=ynt(r.implementationProvider,t,n,!0,Er.None);return iC(()=>o)});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextPeek,title:U(1038,"Peek"),group:"navigation",order:100});class wV{static is(t){return!t||typeof t!="object"?!1:!!(t instanceof wV||it.isIPosition(t.position)&&t.model)}constructor(t,n){this.model=t,this.position=n}}const l4=class l4 extends Op{static all(){return l4._allSymbolNavigationCommands.values()}static _patchConfig(t){const n={...t,f1:!0};if(n.menu)for(const r of to.wrap(n.menu))(r.id===Wn.EditorContext||r.id===Wn.EditorContextPeek)&&(r.when=Ft.and(t.precondition,r.when));return n}constructor(t,n){super(l4._patchConfig(n)),this.configuration=t,l4._allSymbolNavigationCommands.set(n.id,this)}runEditorCommand(t,n,r,o){if(!n.hasModel())return Promise.resolve(void 0);const s=t.get(ic),a=t.get(yo),l=t.get(V8),d=t.get(D3e),u=t.get(Nn),h=t.get(Yn),g=n.getModel(),m=n.getPosition(),v=wV.is(r)?r:new wV(g,m),f=new z8(n,5),k=YW(this._getLocationModel(u,v.model,v.position,f.token),f.token).then(async A=>{var w;if(!A||f.token.isCancellationRequested)return;um(A.ariaMessage);let p;if(A.referenceAt(g.uri,m)){const O=this._getAlternativeCommand(n);O!==void 0&&!l4._activeAlternativeCommands.has(O)&&l4._allSymbolNavigationCommands.has(O)&&(p=l4._allSymbolNavigationCommands.get(O))}const b=A.references.length;if(b===0){if(!this.configuration.muteMessage){const O=g.getWordAtPosition(m);(w=D0.get(n))==null||w.showMessage(this._getNoResultFoundMessage(O),m)}}else if(b===1&&p)l4._activeAlternativeCommands.add(this.desc.id),h.invokeFunction(O=>p.runEditorCommand(O,n,r,o).finally(()=>{l4._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(a,d,n,A,o)},A=>{s.error(A)}).finally(()=>{f.dispose()});return l.showWhile(k,250),k}async _onResult(t,n,r,o,s){const a=this._getGoToPreference(r);if(!(r instanceof X8)&&(this.configuration.openInPeek||a==="peek"&&o.references.length>1))this._openInPeek(r,o,s);else{const l=o.firstReference(),d=o.references.length>1&&a==="gotoAndPeek",u=await this._openReference(r,t,l,this.configuration.openToSide,!d);d&&u?this._openInPeek(u,o,s):o.dispose(),a==="goto"&&n.put(l)}}async _openReference(t,n,r,o,s){let a;if(Dco(r)&&(a=r.targetSelectionRange),a||(a=r.range),!a)return;const l=await n.openCodeEditor({resource:r.uri,options:{selection:Ee.collapseToStart(a),selectionRevealType:3,selectionSource:"code.jump"}},t,o);if(l){if(s){const d=l.getModel(),u=l.createDecorationsCollection([{range:a,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{l.getModel()===d&&u.clear()},350)}return l}}_openInPeek(t,n,r){const o=QR.get(t);o&&t.hasModel()?o.toggleWidget(r??t.getSelection(),Fd(s=>Promise.resolve(n)),this.configuration.openInPeek):n.dispose()}};l4._allSymbolNavigationCommands=new Map,l4._activeAlternativeCommands=new Set;let Y8=l4;class rre extends Y8{async _getLocationModel(t,n,r,o){return new B0(await nre(t.definitionProvider,n,r,!1,o),U(1039,"Definitions"))}_getNoResultFoundMessage(t){return t&&t.word?U(1040,"No definition found for '{0}'",t.word):U(1041,"No definition found")}_getAlternativeCommand(t){return t.getOption(67).alternativeDefinitionCommand}_getGoToPreference(t){return t.getOption(67).multipleDefinitions}}var K9;ys((K9=class extends rre{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:K9.id,title:{..._t(1065,"Go to Definition"),mnemonicTitle:U(1042,"Go to &&Definition")},precondition:$e.hasDefinitionProvider,keybinding:[{when:$e.editorTextFocus,primary:70,weight:100},{when:Ft.and($e.editorTextFocus,cRn),primary:2118,weight:100}],menu:[{id:Wn.EditorContext,group:"navigation",order:1.1},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),co.registerCommandAlias("editor.action.goToDeclaration",K9.id)}},K9.id="editor.action.revealDefinition",K9));var J9;ys((J9=class extends rre{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:J9.id,title:_t(1066,"Open Definition to the Side"),precondition:Ft.and($e.hasDefinitionProvider,$e.isInEmbeddedEditor.toNegated()),keybinding:[{when:$e.editorTextFocus,primary:Uc(2089,70),weight:100},{when:Ft.and($e.editorTextFocus,cRn),primary:Uc(2089,2118),weight:100}]}),co.registerCommandAlias("editor.action.openDeclarationToTheSide",J9.id)}},J9.id="editor.action.revealDefinitionAside",J9));var e6;ys((e6=class extends rre{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:e6.id,title:_t(1067,"Peek Definition"),precondition:Ft.and($e.hasDefinitionProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:Wn.EditorContextPeek,group:"peek",order:2}}),co.registerCommandAlias("editor.action.previewDeclaration",e6.id)}},e6.id="editor.action.peekDefinition",e6));class wRn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await Ont(t.declarationProvider,n,r,!1,o),U(1043,"Declarations"))}_getNoResultFoundMessage(t){return t&&t.word?U(1044,"No declaration found for '{0}'",t.word):U(1045,"No declaration found")}_getAlternativeCommand(t){return t.getOption(67).alternativeDeclarationCommand}_getGoToPreference(t){return t.getOption(67).multipleDeclarations}}var VD;ys((VD=class extends wRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:VD.id,title:{..._t(1068,"Go to Declaration"),mnemonicTitle:U(1046,"Go to &&Declaration")},precondition:Ft.and($e.hasDeclarationProvider,$e.isInEmbeddedEditor.toNegated()),menu:[{id:Wn.EditorContext,group:"navigation",order:1.3},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(t){return t&&t.word?U(1047,"No declaration found for '{0}'",t.word):U(1048,"No declaration found")}},VD.id="editor.action.revealDeclaration",VD));ys(class extends wRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:_t(1069,"Peek Declaration"),precondition:Ft.and($e.hasDeclarationProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:3}})}});class ORn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await Cnt(t.typeDefinitionProvider,n,r,!1,o),U(1049,"Type Definitions"))}_getNoResultFoundMessage(t){return t&&t.word?U(1050,"No type definition found for '{0}'",t.word):U(1051,"No type definition found")}_getAlternativeCommand(t){return t.getOption(67).alternativeTypeDefinitionCommand}_getGoToPreference(t){return t.getOption(67).multipleTypeDefinitions}}var zD;ys((zD=class extends ORn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:zD.ID,title:{..._t(1070,"Go to Type Definition"),mnemonicTitle:U(1052,"Go to &&Type Definition")},precondition:$e.hasTypeDefinitionProvider,keybinding:{when:$e.editorTextFocus,primary:0,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.4},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},zD.ID="editor.action.goToTypeDefinition",zD));var HD;ys((HD=class extends ORn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:HD.ID,title:_t(1071,"Peek Type Definition"),precondition:Ft.and($e.hasTypeDefinitionProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:4}})}},HD.ID="editor.action.peekTypeDefinition",HD));class yRn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await ynt(t.implementationProvider,n,r,!1,o),U(1053,"Implementations"))}_getNoResultFoundMessage(t){return t&&t.word?U(1054,"No implementation found for '{0}'",t.word):U(1055,"No implementation found")}_getAlternativeCommand(t){return t.getOption(67).alternativeImplementationCommand}_getGoToPreference(t){return t.getOption(67).multipleImplementations}}var $D;ys(($D=class extends yRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:$D.ID,title:{..._t(1072,"Go to Implementations"),mnemonicTitle:U(1056,"Go to &&Implementations")},precondition:$e.hasImplementationProvider,keybinding:{when:$e.editorTextFocus,primary:2118,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.45},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},$D.ID="editor.action.goToImplementation",$D));var XD;ys((XD=class extends yRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:XD.ID,title:_t(1073,"Peek Implementations"),precondition:Ft.and($e.hasImplementationProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:3142,weight:100},menu:{id:Wn.EditorContextPeek,group:"peek",order:5}})}},XD.ID="editor.action.peekImplementation",XD));class CRn extends Y8{_getNoResultFoundMessage(t){return t?U(1057,"No references found for '{0}'",t.word):U(1058,"No references found")}_getAlternativeCommand(t){return t.getOption(67).alternativeReferenceCommand}_getGoToPreference(t){return t.getOption(67).multipleReferences}}ys(class extends CRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{..._t(1074,"Go to References"),mnemonicTitle:U(1059,"Go to &&References")},precondition:Ft.and($e.hasReferenceProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:1094,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.45},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(t,n,r,o){return new B0(await ire(t.referenceProvider,n,r,!0,!1,o),U(1060,"References"))}});ys(class extends CRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:_t(1075,"Peek References"),precondition:Ft.and($e.hasReferenceProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(t,n,r,o){return new B0(await ire(t.referenceProvider,n,r,!1,!1,o),U(1061,"References"))}});class nbo extends Y8{constructor(t,n,r){super(t,{id:"editor.action.goToLocation",title:_t(1076,"Go to Any Symbol"),precondition:Ft.and(b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated())}),this._references=n,this._gotoMultipleBehaviour=r}async _getLocationModel(t,n,r,o){return new B0(this._references,U(1062,"Locations"))}_getNoResultFoundMessage(t){return t&&U(1063,"No results for '{0}'",t.word)||""}_getGoToPreference(t){return this._gotoMultipleBehaviour??t.getOption(67).multipleReferences}_getAlternativeCommand(){}}co.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:vi},{name:"position",description:"The position at which to start",constraint:it.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(e,t,n,r,o,s,a)=>{Oo(vi.isUri(t)),Oo(it.isIPosition(n)),Oo(Array.isArray(r)),Oo(typeof o>"u"||typeof o=="string"),Oo(typeof a>"u"||typeof a=="boolean");const l=e.get(yo),d=await l.openCodeEditor({resource:t},l.getFocusedCodeEditor());if(C3(d))return d.setPosition(n),d.revealPositionInCenterIfOutsideViewport(n,0),d.invokeWithinContext(u=>{const h=new class extends nbo{_getNoResultFoundMessage(g){return s||super._getNoResultFoundMessage(g)}}({muteMessage:!s,openInPeek:!!a,openToSide:!1},r,o);u.get(Yn).invokeFunction(h.run.bind(h),d)})}});co.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:vi},{name:"position",description:"The position at which to start",constraint:it.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"}]},handler:async(e,t,n,r,o)=>{e.get(ba).executeCommand("editor.action.goToLocations",t,n,r,o,void 0,!0)}});co.registerCommand({id:"editor.action.findReferences",handler:(e,t,n)=>{Oo(vi.isUri(t)),Oo(it.isIPosition(n));const r=e.get(Nn),o=e.get(yo);return o.openCodeEditor({resource:t},o.getFocusedCodeEditor()).then(s=>{if(!C3(s)||!s.hasModel())return;const a=QR.get(s);if(!a)return;const l=Fd(u=>ire(r.referenceProvider,s.getModel(),it.lift(n),!1,!1,u).then(h=>new B0(h,U(1064,"References")))),d=new Ee(n.lineNumber,n.column,n.lineNumber,n.column);return Promise.resolve(a.toggleWidget(d,l,!1))})}});co.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");async function ibo(e,t,n,r){const o=e.get(Dg),s=e.get(S2),a=e.get(ba),l=e.get(Yn),d=e.get(ic);if(await r.item.resolve(Er.None),!r.part.location)return;const u=r.part.location,h=[],g=new Set(Iu.getMenuItems(Wn.EditorContext).map(v=>LU(v)?v.command.id:SI()));for(const v of Y8.all())g.has(v.desc.id)&&h.push(new n2(v.desc.id,i2.label(v.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const f=await o.createModelReference(u.uri);try{const k=new wV(f.object.textEditorModel,Ee.getStartPosition(u.range)),A=r.item.anchor.range;await l.invokeFunction(v.runEditorCommand.bind(v),t,k,A)}finally{f.dispose()}}));if(r.part.command){const{command:v}=r.part;h.push(new pd),h.push(new n2(v.id,v.title,void 0,!0,async()=>{try{await a.executeCommand(v.id,...v.arguments??[])}catch(f){d.notify({severity:iH.Error,source:r.item.provider.displayName,message:f})}}))}const m=t.getOption(144);s.showContextMenu({domForShadowRoot:m?t.getDomNode()??void 0:void 0,getAnchor:()=>{const v=Kl(n);return{x:v.left,y:v.top+v.height+8}},getActions:()=>h,onHide:()=>{t.focus()},autoSelectFirstItem:!0})}async function _Rn(e,t,n,r){const s=await e.get(Dg).createModelReference(r.uri);await n.invokeWithinContext(async a=>{const l=t.hasSideBySideModifier,d=a.get(Qi),u=b1.inPeekEditor.getValue(d),h=!l&&n.getOption(101)&&!u;return new rre({openToSide:l,openInPeek:h,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(a,new wV(s.object.textEditorModel,Ee.getStartPosition(r.range)),Ee.lift(r.range))}),s.dispose()}var rbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},QP=function(e,t){return function(n,r){t(n,r,e)}},DF;class g0e{constructor(){this._entries=new wp(50)}get(t){const n=g0e._key(t);return this._entries.get(n)}set(t,n){const r=g0e._key(t);this._entries.set(r,n)}static _key(t){return`${t.uri.toString()}/${t.getVersionId()}`}}const SRn=Cr("IInlayHintsCache");zr(SRn,g0e,1);class wWe{constructor(t,n){this.item=t,this.index=n}get part(){const t=this.item.hint.label;return typeof t=="string"?{label:t}:t[this.index]}}class obo{constructor(t,n){this.part=t,this.hasTriggerModifier=n}}class sbo{constructor(){this._store=new ts,this._tokenSource=new ja}dispose(){this._store.dispose(),this._tokenSource.dispose(!0)}reset(){return this._tokenSource.dispose(!0),this._tokenSource=new ja,this._store.value=new xt,{store:this._store.value,token:this._tokenSource.token}}}var zS;let YJ=(zS=class{static get(t){return t.getContribution(DF.ID)??void 0}constructor(t,n,r,o,s,a,l){this._editor=t,this._languageFeaturesService=n,this._inlayHintsCache=o,this._commandService=s,this._notificationService=a,this._instaService=l,this._disposables=new xt,this._sessionDisposables=new xt,this._decorationsMetadata=new Map,this._activeRenderMode=0,this._ruleFactory=this._disposables.add(new Yme(this._editor)),this._debounceInfo=r.for(n.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(n.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(t.onDidChangeModel(()=>this._update())),this._disposables.add(t.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(t.onDidChangeConfiguration(d=>{d.hasChanged(159)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const t=this._editor.getOption(159);if(t.enabled==="off")return;const n=this._editor.getModel();if(!n||!this._languageFeaturesService.inlayHintsProvider.has(n))return;if(t.enabled==="on")this._activeRenderMode=0;else{let u,h;t.enabled==="onUnlessPressed"?(u=0,h=1):(u=1,h=0),this._activeRenderMode=u,this._sessionDisposables.add(TS.getInstance().event(g=>{if(!this._editor.hasModel())return;const m=g.altKey&&g.ctrlKey&&!(g.shiftKey||g.metaKey)?h:u;if(m!==this._activeRenderMode){this._activeRenderMode=m;const v=this._editor.getModel(),f=this._copyInlayHintsWithCurrentAnchor(v);this._updateHintsDecorators([v.getFullModelRange()],f),l.schedule(0)}}))}const r=this._inlayHintsCache.get(n);r&&this._updateHintsDecorators([n.getFullModelRange()],r),this._sessionDisposables.add(Hn(()=>{n.isDisposed()||this._cacheHintsForFastRestore(n)}));let o;const s=new Set;this._sessionDisposables.add(n.onWillDispose(()=>o==null?void 0:o.cancel()));const a=this._sessionDisposables.add(new sbo),l=new Es(async()=>{const u=Date.now(),{store:h,token:g}=a.reset();try{const m=await t0e.create(this._languageFeaturesService.inlayHintsProvider,n,this._getHintsRanges(),g);if(l.delay=this._debounceInfo.update(n,Date.now()-u),g.isCancellationRequested){m.dispose();return}for(const v of m.provider)typeof v.onDidChangeInlayHints=="function"&&!s.has(v)&&(s.add(v),h.add(v.onDidChangeInlayHints(()=>{l.isScheduled()||l.schedule()})));h.add(m),this._updateHintsDecorators(m.ranges,m.items),this._cacheHintsForFastRestore(n)}catch(m){zi(m)}},this._debounceInfo.get(n));this._sessionDisposables.add(l),l.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(u=>{(u.scrollTopChanged||!l.isScheduled())&&l.schedule()}));const d=this._sessionDisposables.add(new ts);this._sessionDisposables.add(this._editor.onDidChangeModelContent(u=>{const h=Math.max(l.delay,800);this._cursorInfo={position:this._editor.getPosition(),notEarlierThan:Date.now()+h},d.value=B8(()=>l.schedule(0),h),l.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(159)&&l.schedule()})),this._sessionDisposables.add(this._installDblClickGesture(()=>l.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const t=new xt,n=t.add(new y3e(this._editor)),r=new xt;return t.add(r),t.add(n.onMouseMoveOrRelevantKeyDown(o=>{const[s]=o,a=this._getInlayHintLabelPart(s),l=this._editor.getModel();if(!a||!l){r.clear();return}const d=new ja;r.add(Hn(()=>d.dispose(!0))),a.item.resolve(d.token),this._activeInlayHintPart=a.part.command||a.part.location?new obo(a,s.hasTriggerModifier):void 0;const u=l.validatePosition(a.item.hint.position).lineNumber,h=new Ee(u,1,u,l.getLineMaxColumn(u)),g=this._getInlineHintsForRange(h);this._updateHintsDecorators([h],g),r.add(Hn(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([h],g)}))})),t.add(n.onCancel(()=>r.clear())),t.add(n.onExecute(async o=>{const s=this._getInlayHintLabelPart(o);if(s){const a=s.part;a.location?this._instaService.invokeFunction(_Rn,o,this._editor,a.location):JNe.is(a.command)&&await this._invokeCommand(a.command,s.item)}})),t}_getInlineHintsForRange(t){const n=new Set;for(const r of this._decorationsMetadata.values())t.containsRange(r.item.anchor.range)&&n.add(r.item);return Array.from(n)}_installDblClickGesture(t){return this._editor.onMouseUp(async n=>{if(n.event.detail!==2)return;const r=this._getInlayHintLabelPart(n);if(r&&(n.event.preventDefault(),await r.item.resolve(Er.None),yg(r.item.hint.textEdits))){const o=r.item.hint.textEdits.map(s=>$l.replace(Ee.lift(s.range),s.text));this._editor.executeEdits("inlayHint.default",o),t()}})}_installContextMenu(){return this._editor.onContextMenu(async t=>{if(!ec(t.event.target))return;const n=this._getInlayHintLabelPart(t);n&&await this._instaService.invokeFunction(ibo,this._editor,t.event.target,n)})}_getInlayHintLabelPart(t){var r;if(t.target.type!==6)return;const n=(r=t.target.detail.injectedText)==null?void 0:r.options;if(n instanceof T6&&(n==null?void 0:n.attachedData)instanceof wWe)return n.attachedData}async _invokeCommand(t,n){try{await this._commandService.executeCommand(t.id,...t.arguments??[])}catch(r){this._notificationService.notify({severity:iH.Error,source:n.provider.displayName,message:r})}}_cacheHintsForFastRestore(t){const n=this._copyInlayHintsWithCurrentAnchor(t);this._inlayHintsCache.set(t,n)}_copyInlayHintsWithCurrentAnchor(t){const n=new Map;for(const[r,o]of this._decorationsMetadata){if(n.has(o.item))continue;const s=t.getDecorationRange(r);if(s){const a=new zBn(s,o.item.anchor.direction),l=o.item.with({anchor:a});n.set(o.item,l)}}return Array.from(n.values())}_getHintsRanges(){const n=this._editor.getModel(),r=this._editor.getVisibleRangesPlusViewportAboveBelow(),o=[];for(const s of r.sort(Ee.compareRangesUsingStarts)){const a=n.validateRange(new Ee(s.startLineNumber-30,s.startColumn,s.endLineNumber+30,s.endColumn));o.length===0||!Ee.areIntersectingOrTouching(o[o.length-1],a)?o.push(a):o[o.length-1]=Ee.plusRange(o[o.length-1],a)}return o}_updateHintsDecorators(t,n){var A,p;const r=new Map;if(this._cursorInfo&&this._cursorInfo.notEarlierThan>Date.now()&&t.some(b=>b.containsPosition(this._cursorInfo.position))){const{position:b}=this._cursorInfo;this._cursorInfo=void 0;const w=new Map;for(const _ of this._editor.getLineDecorations(b.lineNumber)??[]){const S=this._decorationsMetadata.get(_.id);if(_.range.startColumn>b.column)continue;const L=S==null?void 0:S.decoration.options[S.item.anchor.direction];if(L&&L.attachedData!==DF._whitespaceData){const E=w.get(S.item)??0;w.set(S.item,E+L.content.length)}}const O=n.filter(_=>_.anchor.range.startLineNumber===b.lineNumber&&_.anchor.range.endColumn<=b.column),y=Array.from(w.values());let C;for(;;){const _=O.shift(),S=y.shift();if(!S&&!_)break;if(_)r.set(_,S??0),C=_;else if(C&&S){let L=r.get(C);L+=S,L+=y.reduce((E,T)=>E+T,0),y.length=0;break}}}const o=[],s=(b,w,O,y,C)=>{const _={content:O,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:w.className,cursorStops:y,attachedData:C};o.push({item:b,classNameRef:w,decoration:{range:b.anchor.range,options:{description:"InlayHint",showIfCollapsed:b.anchor.range.isEmpty(),collapseOnReplaceEdit:!b.anchor.range.isEmpty(),stickiness:0,[b.anchor.direction]:this._activeRenderMode===0?_:void 0}}})},a=(b,w)=>{const O=this._ruleFactory.createClassNameRef({width:`${l/3|0}px`,display:"inline-block"});s(b,O," ",w?Bv.Right:Bv.None,DF._whitespaceData)},{fontSize:l,fontFamily:d,padding:u,isUniform:h}=this._getLayoutInfo(),g=this._editor.getOption(159).maximumLength,m="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(m,d);let v={line:0,totalLen:0};for(let b=0;bg)continue;w.hint.paddingLeft&&a(w,!1);const O=typeof w.hint.label=="string"?[{label:w.hint.label}]:w.hint.label,y=r.get(w);let C=0;for(let _=0;_0&&(D=D.slice(0,-Q)+"…",P=!0),C+=D.length,y!==void 0){const M=C-y;M>=0&&(C-=M,D=D.slice(0,-(1+M))+"…",P=!0)}if(u&&(L&&(E||P)?(T.padding=`1px ${Math.max(1,l/4)|0}px`,T.borderRadius=`${l/4|0}px`):L?(T.padding=`1px 0 1px ${Math.max(1,l/4)|0}px`,T.borderRadius=`${l/4|0}px 0 0 ${l/4|0}px`):E||P?(T.padding=`1px ${Math.max(1,l/4)|0}px 1px 0`,T.borderRadius=`0 ${l/4|0}px ${l/4|0}px 0`):T.padding="1px 0 1px 0"),s(w,this._ruleFactory.createClassNameRef(T),abo(D),E&&!w.hint.paddingRight?Bv.Right:Bv.None,new wWe(w,_)),P)break}if(y!==void 0&&CDF._MAX_DECORATORS)break}const f=[];for(const[b,w]of this._decorationsMetadata){const O=(p=this._editor.getModel())==null?void 0:p.getDecorationRange(b);O&&t.some(y=>y.containsRange(O))&&(f.push(b),w.classNameRef.dispose(),this._decorationsMetadata.delete(b))}const k=O3.capture(this._editor);this._editor.changeDecorations(b=>{const w=b.deltaDecorations(f,o.map(O=>O.decoration));for(let O=0;Or)&&(s=r);const a=t.fontFamily||o;return{fontSize:s,fontFamily:a,padding:n,isUniform:!n&&a===o&&s===r}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const t of this._decorationsMetadata.values())t.classNameRef.dispose();this._decorationsMetadata.clear()}},DF=zS,zS.ID="editor.contrib.InlayHints",zS._MAX_DECORATORS=1500,zS._whitespaceData={},zS);YJ=DF=rbo([QP(1,Nn),QP(2,CA),QP(3,SRn),QP(4,ba),QP(5,ic),QP(6,Yn)],YJ);function abo(e){return e.replace(/[ \t]/g," ")}co.registerCommand("_executeInlayHintProvider",async(e,...t)=>{const[n,r]=t;Oo(vi.isUri(n)),Oo(Ee.isIRange(r));const{inlayHintsProvider:o}=e.get(Nn),s=await e.get(Dg).createModelReference(n);try{const a=await t0e.create(o,s.object.textEditorModel,[Ee.lift(r)],Er.None),l=a.items.map(d=>d.hint);return setTimeout(()=>a.dispose(),0),l}finally{s.dispose()}});var lbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},b7=function(e,t){return function(n,r){t(n,r,e)}};class Dyt extends jG{constructor(t,n,r,o){super(10,n,t.item.anchor.range,r,o,!0),this.part=t}}let m0e=class extends zJ{constructor(t,n,r,o,s,a,l,d){super(t,n,s,l,r,o,d),this._resolverService=a,this.hoverOrdinal=6}suggestHoverAnchor(t){var o;if(!YJ.get(this._editor)||t.target.type!==6)return null;const r=(o=t.target.detail.injectedText)==null?void 0:o.options;return r instanceof T6&&r.attachedData instanceof wWe?new Dyt(r.attachedData,this,t.event.posx,t.event.posy):null}computeSync(){return[]}computeAsync(t,n,r,o){return t instanceof Dyt?new Yv(async s=>{const{part:a}=t;if(await a.item.resolve(o),o.isCancellationRequested)return;let l;typeof a.item.hint.tooltip=="string"?l=new bf().appendText(a.item.hint.tooltip):a.item.hint.tooltip&&(l=a.item.hint.tooltip),l&&s.emitOne(new I4(this,t.range,[l],!1,0)),yg(a.item.hint.textEdits)&&s.emitOne(new I4(this,t.range,[new bf().appendText(U(1164,"Double-click to insert"))],!1,10001));let d;if(typeof a.part.tooltip=="string"?d=new bf().appendText(a.part.tooltip):a.part.tooltip&&(d=a.part.tooltip),d&&s.emitOne(new I4(this,t.range,[d],!1,1)),a.part.location||a.part.command){let h;const m=this._editor.getOption(86)==="altKey"?Tr?U(1165,"cmd + click"):U(1166,"ctrl + click"):Tr?U(1167,"option + click"):U(1168,"alt + click");a.part.location&&a.part.command?h=new bf().appendText(U(1169,"Go to Definition ({0}), right click for more",m)):a.part.location?h=new bf().appendText(U(1170,"Go to Definition ({0})",m)):a.part.command&&(h=new bf(`[${U(1171,"Execute Command")}](${Q4o(a.part.command)} "${a.part.command.title}") (${m})`,{isTrusted:!0})),h&&s.emitOne(new I4(this,t.range,[h],!1,1e4))}const u=this._resolveInlayHintLabelPartHover(a,o);for await(const h of u)s.emitOne(h)}):Yv.EMPTY}async*_resolveInlayHintLabelPartHover(t,n){if(!t.part.location)return;const{uri:r,range:o}=t.part.location,s=await this._resolverService.createModelReference(r);try{const a=s.object.textEditorModel;if(!this._languageFeaturesService.hoverProvider.has(a))return;for await(const l of ent(this._languageFeaturesService.hoverProvider,a,new it(o.startLineNumber,o.startColumn),n))fV(l.hover.contents)||(yield new I4(this,t.item.anchor.range,l.hover.contents,!1,2+l.ordinal))}finally{s.dispose()}}};m0e=lbo([b7(1,Cp),b7(2,Do),b7(3,pm),b7(4,ar),b7(5,Dg),b7(6,Nn),b7(7,ba)],m0e);var LRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},k0e=function(e,t){return function(n,r){t(n,r,e)}};class Byt{constructor(t,n,r){this.marker=t,this.index=n,this.total=r}}let OWe=class{constructor(t,n,r){this._markerService=n,this._configService=r,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._dispoables=new xt,this._markers=[],this._nextIdx=-1,vi.isUri(t)?this._resourceFilter=l=>l.toString()===t.toString():t&&(this._resourceFilter=t);const o=this._configService.getValue("problems.sortOrder"),s=(l,d)=>{let u=jK(l.resource.toString(),d.resource.toString());return u===0&&(o==="position"?u=Ee.compareRangesUsingStarts(l,d)||xl.compare(l.severity,d.severity):u=xl.compare(l.severity,d.severity)||Ee.compareRangesUsingStarts(l,d)),u},a=()=>{let l=this._markerService.read({resource:vi.isUri(t)?t:void 0,severities:xl.Error|xl.Warning|xl.Info});return typeof t=="function"&&(l=l.filter(d=>this._resourceFilter(d.resource))),l.sort(s),Na(l,this._markers,(d,u)=>d.resource.toString()===u.resource.toString()&&d.startLineNumber===u.startLineNumber&&d.startColumn===u.startColumn&&d.endLineNumber===u.endLineNumber&&d.endColumn===u.endColumn&&d.severity===u.severity&&d.message===u.message)?!1:(this._markers=l,!0)};a(),this._dispoables.add(n.onMarkerChanged(l=>{(!this._resourceFilter||l.some(d=>this._resourceFilter(d)))&&a()&&(this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(t){return!this._resourceFilter&&!t?!0:!this._resourceFilter||!t?!1:this._resourceFilter(t)}get selected(){const t=this._markers[this._nextIdx];return t&&new Byt(t,this._nextIdx+1,this._markers.length)}_initIdx(t,n,r){let o=this._markers.findIndex(s=>C6(s.resource,t.uri));if(o<0)o=UJe(this._markers.length,s=>jK(this._markers[s].resource.toString(),t.uri.toString())),o<0&&(o=~o),r?this._nextIdx=o:this._nextIdx=(this._markers.length+o-1)%this._markers.length;else{let s=!1,a=!1;for(let l=o;lo.resource.toString()===t.toString());if(!(r<0)){for(;r=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DP=function(e,t){return function(n,r){t(n,r,e)}},_We;class dbo{constructor(t,n,r,o,s){this._openerService=o,this._labelService=s,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new xt,this._editor=n;const a=document.createElement("div");a.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),a.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),a.appendChild(this._relatedBlock),this._disposables.add(wc(this._relatedBlock,"click",l=>{l.preventDefault();const d=this._relatedDiagnostics.get(l.target);d&&r(d)})),this._scrollable=new $7n(a,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),t.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(l=>{a.style.left=`-${l.scrollLeft}px`,a.style.top=`-${l.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){us(this._disposables)}update(t){const{source:n,message:r,relatedInformation:o,code:s}=t;let a=((n==null?void 0:n.length)||0)+2;s&&(typeof s=="string"?a+=s.length:a+=s.value.length);const l=P0(r);this._lines=l.length,this._longestLineLength=0;for(const m of l)this._longestLineLength=Math.max(m.length+a,this._longestLineLength);uh(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(t)),this._editor.applyFontInfo(this._messageBlock);let d=this._messageBlock;for(const m of l)d=document.createElement("div"),d.innerText=m,m===""&&(d.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(d);if(n||s){const m=document.createElement("span");if(m.classList.add("details"),d.appendChild(m),n){const v=document.createElement("span");v.innerText=n,v.classList.add("source"),m.appendChild(v)}if(s)if(typeof s=="string"){const v=document.createElement("span");v.innerText=`(${s})`,v.classList.add("code"),m.appendChild(v)}else{this._codeLink=tn("a.code-link"),this._codeLink.setAttribute("href",`${s.target.toString()}`),this._codeLink.onclick=f=>{this._openerService.open(s.target,{allowCommands:!0}),f.preventDefault(),f.stopPropagation()};const v=Xt(this._codeLink,tn("span"));v.innerText=s.value,m.appendChild(this._codeLink)}}if(uh(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),yg(o)){const m=this._relatedBlock.appendChild(document.createElement("div"));m.style.paddingTop=`${Math.floor(this._editor.getOption(75)*.66)}px`,this._lines+=1;for(const v of o){const f=document.createElement("div"),k=document.createElement("a");k.classList.add("filename"),k.innerText=`${this._labelService.getUriBasenameLabel(v.resource)}(${v.startLineNumber}, ${v.startColumn}): `,k.title=this._labelService.getUriLabel(v.resource),this._relatedDiagnostics.set(k,v);const A=document.createElement("span");A.innerText=v.message,f.appendChild(k),f.appendChild(A),this._lines+=1,m.appendChild(f)}}const u=this._editor.getOption(59),h=Math.ceil(u.typicalFullwidthCharacterWidth*this._longestLineLength*.75),g=u.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:h,scrollHeight:g})}layout(t,n){this._scrollable.getDomNode().style.height=`${t}px`,this._scrollable.getDomNode().style.width=`${n}px`,this._scrollable.setScrollDimensions({width:n,height:t})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(t){let n="";switch(t.severity){case xl.Error:n=U(1024,"Error");break;case xl.Warning:n=U(1025,"Warning");break;case xl.Info:n=U(1026,"Info");break;case xl.Hint:n=U(1027,"Hint");break}let r=U(1028,"{0} at {1}. ",n,t.startLineNumber+":"+t.startColumn);const o=this._editor.getModel();return o&&t.startLineNumber<=o.getLineCount()&&t.startLineNumber>=1&&(r=`${o.getLineContent(t.startLineNumber)}, ${r}`),r}}var GD;let ZJ=(GD=class extends i0e{constructor(t,n,r,o,s,a,l){super(t,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},s),this._themeService=n,this._openerService=r,this._menuService=o,this._contextKeyService=a,this._labelService=l,this._callOnDispose=new xt,this._onDidSelectRelatedInformation=new at,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=xl.Warning,this._backgroundColor=Dt.white,this._applyTheme(n.getColorTheme()),this._callOnDispose.add(n.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(t){this._backgroundColor=t.getColor(gbo);let n=SWe,r=ubo;this._severity===xl.Warning?(n=whe,r=hbo):this._severity===xl.Info&&(n=LWe,r=fbo);const o=t.getColor(n),s=t.getColor(r);this.style({arrowColor:o,frameColor:o,headerBackgroundColor:s,primaryHeadingColor:t.getColor(ZBn),secondaryHeadingColor:t.getColor(qBn)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(t){super._fillHead(t),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(o=>this.editor.focus()));const n=this._menuService.getMenuActions(_We.TitleMenu,this._contextKeyService),r=Pko(n);this._actionbarWidget.push(r,{label:!1,icon:!0,index:0})}_fillTitleIcon(t){this._icon=Xt(t,tn(""))}_fillBody(t){this._parentContainer=t,t.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),t.appendChild(this._container),this._message=new dbo(this._container,this.editor,n=>this._onDidSelectRelatedInformation.fire(n),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(t,n,r){this._container.classList.remove("stale"),this._message.update(t),this._severity=t.severity,this._applyTheme(this._themeService.getColorTheme());const o=Ee.lift(t),s=this.editor.getPosition(),a=s&&o.containsPosition(s)?s:o.getStartPosition();super.show(a,this.computeRequiredHeight());const l=this.editor.getModel();if(l){const d=r>1?U(1029,"{0} of {1} problems",n,r):U(1030,"{0} of {1} problem",n,r);this.setTitle(hA(l.uri),d)}this._icon.className=`codicon ${CWe.className(xl.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(a,0),this.editor.focus()}updateMarker(t){this._container.classList.remove("stale"),this._message.update(t)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(t,n){super._doLayoutBody(t,n),this._heightInPixel=t,this._message.layout(t,n),this._container.style.height=`${t}px`}_onWidth(t){this._message.layout(this._heightInPixel,t)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}},_We=GD,GD.TitleMenu=new Wn("gotoErrorTitleMenu"),GD);ZJ=_We=cbo([DP(1,Dl),DP(2,OL),DP(3,wA),DP(4,Yn),DP(5,Qi),DP(6,TR)],ZJ);const Ryt=nJ($be,Noo),Iyt=nJ(N8,iJ),Myt=nJ(Sy,rJ),SWe=Ve("editorMarkerNavigationError.background",{dark:Ryt,light:Ryt,hcDark:ro,hcLight:ro},U(1031,"Editor marker navigation widget error color.")),ubo=Ve("editorMarkerNavigationError.headerBackground",{dark:Zi(SWe,.1),light:Zi(SWe,.1),hcDark:null,hcLight:null},U(1032,"Editor marker navigation widget error heading background.")),whe=Ve("editorMarkerNavigationWarning.background",{dark:Iyt,light:Iyt,hcDark:ro,hcLight:ro},U(1033,"Editor marker navigation widget warning color.")),hbo=Ve("editorMarkerNavigationWarning.headerBackground",{dark:Zi(whe,.1),light:Zi(whe,.1),hcDark:"#0C141F",hcLight:Zi(whe,.2)},U(1034,"Editor marker navigation widget warning heading background.")),LWe=Ve("editorMarkerNavigationInfo.background",{dark:Myt,light:Myt,hcDark:ro,hcLight:ro},U(1035,"Editor marker navigation widget info color.")),fbo=Ve("editorMarkerNavigationInfo.headerBackground",{dark:Zi(LWe,.1),light:Zi(LWe,.1),hcDark:null,hcLight:null},U(1036,"Editor marker navigation widget info heading background.")),gbo=Ve("editorMarkerNavigation.background",Oc,U(1037,"Editor marker navigation widget background."));var mbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},ece=function(e,t){return function(n,r){t(n,r,e)}},VG,YD;let DR=(YD=class{static get(t){return t.getContribution(VG.ID)}constructor(t,n,r,o,s){this._markerNavigationService=n,this._contextKeyService=r,this._editorService=o,this._instantiationService=s,this._sessionDispoables=new xt,this._editor=t,this._widgetVisible=ERn.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(t){if(this._model&&this._model.matches(t))return this._model;let n=!1;return this._model&&(n=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(t),n&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(ZJ,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(r=>{var o,s,a;(!((o=this._model)!=null&&o.selected)||!Ee.containsPosition((s=this._model)==null?void 0:s.selected.marker,r.position))&&((a=this._model)==null||a.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const r=this._model.find(this._editor.getModel().uri,this._widget.position);r?this._widget.updateMarker(r.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(r=>{this._editorService.openCodeEditor({resource:r.resource,options:{pinned:!0,revealIfOpened:!0,selection:Ee.lift(r).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(t=!0){this._cleanUp(),t&&this._editor.focus()}showAtMarker(t){if(!this._editor.hasModel())return;const n=this._editor.getModel(),r=this._getOrCreateModel(n.uri);r.resetIndex(),r.move(!0,n,new it(t.startLineNumber,t.startColumn)),r.selected&&this._widget.showAtMarker(r.selected.marker,r.selected.index,r.selected.total)}async navigate(t,n){var s,a;if(!this._editor.hasModel())return;const r=this._editor.getModel(),o=this._getOrCreateModel(n?void 0:r.uri);if(o.move(t,r,this._editor.getPosition()),!!o.selected)if(o.selected.marker.resource.toString()!==r.uri.toString()){this._cleanUp();const l=await this._editorService.openCodeEditor({resource:o.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:o.selected.marker}},this._editor);l&&((s=VG.get(l))==null||s.close(),(a=VG.get(l))==null||a.navigate(t,n))}else this._widget.showAtMarker(o.selected.marker,o.selected.index,o.selected.total)}},VG=YD,YD.ID="editor.contrib.markerController",YD);DR=VG=mbo([ece(1,xRn),ece(2,Qi),ece(3,yo),ece(4,Yn)],DR);class B3e extends Bn{constructor(t,n,r){super(r),this._next=t,this._multiFile=n}async run(t,n){var r;n.hasModel()&&await((r=DR.get(n))==null?void 0:r.navigate(this._next,this._multiFile))}}const XT=class XT extends B3e{constructor(){super(!0,!1,{id:XT.ID,label:XT.LABEL,precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:578,weight:100},menuOpts:{menuId:ZJ.TitleMenu,title:XT.LABEL.value,icon:Da("marker-navigation-next",zt.arrowDown,U(1016,"Icon for goto next marker.")),group:"navigation",order:1}})}};XT.ID="editor.action.marker.next",XT.LABEL=_t(1020,"Go to Next Problem (Error, Warning, Info)");let v0e=XT;const GT=class GT extends B3e{constructor(){super(!1,!1,{id:GT.ID,label:GT.LABEL,precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:1602,weight:100},menuOpts:{menuId:ZJ.TitleMenu,title:GT.LABEL.value,icon:Da("marker-navigation-previous",zt.arrowUp,U(1017,"Icon for goto previous marker.")),group:"navigation",order:2}})}};GT.ID="editor.action.marker.prev",GT.LABEL=_t(1021,"Go to Previous Problem (Error, Warning, Info)");let xWe=GT;class kbo extends B3e{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:_t(1022,"Go to Next Problem in Files (Error, Warning, Info)"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:66,weight:100},menuOpts:{menuId:Wn.MenubarGoMenu,title:U(1018,"Next &&Problem"),group:"6_problem_nav",order:1}})}}class vbo extends B3e{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:_t(1023,"Go to Previous Problem in Files (Error, Warning, Info)"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:1090,weight:100},menuOpts:{menuId:Wn.MenubarGoMenu,title:U(1019,"Previous &&Problem"),group:"6_problem_nav",order:2}})}}mo(DR.ID,DR,4);un(v0e);un(xWe);un(kbo);un(vbo);const ERn=new yn("markersNavigationVisible",!1),Abo=$d.bindToContribution(DR.get);On(new Abo({id:"closeMarkersNavigation",precondition:ERn,handler:e=>e.close(),kbOpts:{weight:150,kbExpr:$e.focus,primary:9,secondary:[1033]}}));var pbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},wxe=function(e,t){return function(n,r){t(n,r,e)}};const $A=tn;class TRn{constructor(t,n,r){this.owner=t,this.range=n,this.marker=r}isValidForHoverAnchor(t){return t.type===1&&this.range.startColumn<=t.range.startColumn&&this.range.endColumn>=t.range.endColumn}}const Pyt={type:1,filter:{include:Ma.QuickFix},triggerAction:j0.QuickFixHover};let EWe=class{constructor(t,n,r,o){this._editor=t,this._markerDecorationsService=n,this._openerService=r,this._languageFeaturesService=o,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(t,n){if(!this._editor.hasModel()||t.type!==1&&!t.supportsMarkerHover)return[];const r=this._editor.getModel(),o=t.range;if(!r.isValidRange(t.range))return[];const s=o.startLineNumber,a=r.getLineMaxColumn(s),l=[];for(const d of n){const u=d.range.startLineNumber===s?d.range.startColumn:1,h=d.range.endLineNumber===s?d.range.endColumn:a,g=this._markerDecorationsService.getMarker(r.uri,d);if(!g)continue;const m=new Ee(t.range.startLineNumber,u,t.range.startLineNumber,h);l.push(new TRn(this,m,g))}return l}renderHoverParts(t,n){if(!n.length)return new SR([]);const r=[];n.forEach(a=>{const l=this._renderMarkerHover(a);t.fragment.appendChild(l.hoverElement),r.push(l)});const o=n.length===1?n[0]:n.sort((a,l)=>xl.compare(a.marker.severity,l.marker.severity))[0],s=this._renderMarkerStatusbar(t,o);return new SR(r,s)}getAccessibleContent(t){return t.marker.message}_renderMarkerHover(t){const n=new xt,r=$A("div.hover-row"),o=Xt(r,$A("div.marker.hover-contents")),{source:s,message:a,code:l,relatedInformation:d}=t.marker;this._editor.applyFontInfo(o);const u=Xt(o,$A("span"));if(u.style.whiteSpace="pre-wrap",u.innerText=a,s||l)if(l&&typeof l!="string"){const g=$A("span");if(s){const k=Xt(g,$A("span"));k.innerText=s}const m=Xt(g,$A("a.code-link"));m.setAttribute("href",l.target.toString(!0)),n.add(wt(m,"click",k=>{this._openerService.open(l.target,{allowCommands:!0}),k.preventDefault(),k.stopPropagation()}));const v=Xt(m,$A("span"));v.innerText=l.value;const f=Xt(o,g);f.style.opacity="0.6",f.style.paddingLeft="6px"}else{const g=Xt(o,$A("span"));g.style.opacity="0.6",g.style.paddingLeft="6px",g.innerText=s&&l?`${s}(${l})`:s||`(${l})`}if(yg(d))for(const{message:g,resource:m,startLineNumber:v,startColumn:f}of d){const k=Xt(o,$A("div"));k.style.marginTop="8px";const A=Xt(k,$A("a"));A.innerText=`${hA(m)}(${v}, ${f}): `,A.style.cursor="pointer",n.add(wt(A,"click",b=>{if(b.stopPropagation(),b.preventDefault(),this._openerService){const w={selection:{startLineNumber:v,startColumn:f}};this._openerService.open(m,{fromUserGesture:!0,editorOptions:w}).catch(zi)}}));const p=Xt(k,$A("span"));p.innerText=g,this._editor.applyFontInfo(p)}return{hoverPart:t,hoverElement:r,dispose:()=>n.dispose()}}_renderMarkerStatusbar(t,n){const r=new xt;if(n.marker.severity===xl.Error||n.marker.severity===xl.Warning||n.marker.severity===xl.Info){const o=DR.get(this._editor);o&&t.statusBar.addAction({label:U(1139,"View Problem"),commandId:v0e.ID,run:()=>{t.hide(),o.showAtMarker(n.marker),this._editor.focus()}})}if(!this._editor.getOption(104)){const o=t.statusBar.append($A("div"));this.recentMarkerCodeActionsInfo&&(Y1e.makeKey(this.recentMarkerCodeActionsInfo.marker)===Y1e.makeKey(n.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(o.textContent=U(1140,"No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const s=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?ft.None:B8(()=>o.textContent=U(1141,"Checking for quick fixes..."),200,r);o.textContent||(o.textContent=" ");const a=this.getCodeActions(n.marker);r.add(Hn(()=>a.cancel())),a.then(l=>{var h;if(s.dispose(),this.recentMarkerCodeActionsInfo={marker:n.marker,hasCodeActions:l.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){l.dispose(),o.textContent=U(1142,"No quick fixes available");return}o.style.display="none";let d=!1;r.add(Hn(()=>{d||l.dispose()})),t.statusBar.addAction({label:U(1143,"Quick Fix..."),commandId:ztt,run:g=>{d=!0;const m=_R.get(this._editor),v=Kl(g);t.hide(),m==null||m.showCodeActions(Pyt,l,{x:v.left,y:v.top,width:v.width,height:v.height})}});const u=l.validActions.find(g=>g.action.isAI);u&&t.statusBar.addAction({label:u.action.title,commandId:((h=u.action.command)==null?void 0:h.id)??"",iconClass:fi.asClassName(zt.sparkle),run:()=>{const g=_R.get(this._editor);g==null||g.applyCodeAction(u,!1,!1,p9.FromProblemsHover)}}),t.onContentsChanged()},zi)}return r}getCodeActions(t){return Fd(n=>ON(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new Ee(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn),Pyt,qb.None,n))}};EWe=pbo([wxe(1,ket),wxe(2,OL),wxe(3,Nn)],EWe);var QRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},$U=function(e,t){return function(n,r){t(n,r,e)}},TWe,QWe;let DWe=TWe=class extends ft{constructor(t,n,r,o,s,a,l){super();const d=n.hoverParts;this._renderedHoverParts=this._register(new BWe(t,r,d,o,s,a,l));const u=n.options,h=u.anchor,{showAtPosition:g,showAtSecondaryPosition:m}=TWe.computeHoverPositions(t,h.range,d);this.shouldAppearBeforeContent=d.some(v=>v.isBeforeContent),this.showAtPosition=g,this.showAtSecondaryPosition=m,this.initialMousePosX=h.initialMousePosX,this.initialMousePosY=h.initialMousePosY,this.shouldFocus=u.shouldFocus,this.source=u.source}get domNode(){return this._renderedHoverParts.domNode}get domNodeHasChildren(){return this._renderedHoverParts.domNodeHasChildren}get focusedHoverPartIndex(){return this._renderedHoverParts.focusedHoverPartIndex}get hoverPartsCount(){return this._renderedHoverParts.hoverPartsCount}focusHoverPartWithIndex(t){this._renderedHoverParts.focusHoverPartWithIndex(t)}async updateHoverVerbosityLevel(t,n,r){this._renderedHoverParts.updateHoverVerbosityLevel(t,n,r)}isColorPickerVisible(){return this._renderedHoverParts.isColorPickerVisible()}static computeHoverPositions(t,n,r){let o=1;if(t.hasModel()){const h=t._getViewModel(),g=h.coordinatesConverter,m=g.convertModelRangeToViewRange(n),v=h.getLineMinColumn(m.startLineNumber),f=new it(m.startLineNumber,v);o=g.convertViewPositionToModelPosition(f).column}const s=n.startLineNumber;let a=n.startColumn,l;for(const h of r){const g=h.range,m=g.startLineNumber===s,v=g.endLineNumber===s;if(m&&v){const k=g.startColumn,A=Math.min(a,k);a=Math.max(A,o)}h.forceShowAtRange&&(l=g)}let d,u;if(l){const h=l.getStartPosition();d=h,u=h}else d=n.getStartPosition(),u=new it(s,a);return{showAtPosition:d,showAtSecondaryPosition:u}}};DWe=TWe=QRn([$U(4,Do),$U(5,pm),$U(6,U0)],DWe);class bbo{constructor(t,n){this._statusBar=n,t.appendChild(this._statusBar.hoverElement)}get hoverElement(){return this._statusBar.hoverElement}get actions(){return this._statusBar.actions}dispose(){this._statusBar.dispose()}}var ZD;let BWe=(ZD=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._hoverService=a,this._clipboardService=l,this._renderedParts=[],this._focusedHoverPartIndex=-1,this._context=o,this._fragment=document.createDocumentFragment(),this._register(this._renderParts(n,r,o,s,this._hoverService)),this._register(this._registerListenersOnRenderedParts()),this._register(this._createEditorDecorations(t,r)),this._updateMarkdownAndColorParticipantInfo(n)}_createEditorDecorations(t,n){if(n.length===0)return ft.None;let r=n[0].range;for(const s of n){const a=s.range;r=Ee.plusRange(r,a)}const o=t.createDecorationsCollection();return o.set([{range:r,options:QWe._DECORATION_OPTIONS}]),Hn(()=>{o.clear()})}_renderParts(t,n,r,o,s){const a=new K1e(o,s),l={fragment:this._fragment,statusBar:a,...r},d=new xt;d.add(a);for(const h of t){const g=this._renderHoverPartsForParticipant(n,h,l);d.add(g);for(const m of g.renderedHoverParts)this._renderedParts.push({type:"hoverPart",participant:h,hoverPart:m.hoverPart,hoverElement:m.hoverElement})}const u=this._renderStatusBar(this._fragment,a);return u&&(d.add(u),this._renderedParts.push({type:"statusBar",hoverElement:u.hoverElement,actions:u.actions})),d}_renderHoverPartsForParticipant(t,n,r){const o=t.filter(a=>a.owner===n);return o.length>0?n.renderHoverParts(r,o):new SR([])}_renderStatusBar(t,n){if(n.hasContent)return new bbo(t,n)}_registerListenersOnRenderedParts(){const t=new xt;return this._renderedParts.forEach((n,r)=>{const o=n.hoverElement;o.tabIndex=0,t.add(wt(o,rn.FOCUS_IN,s=>{s.stopPropagation(),this._focusedHoverPartIndex=r})),t.add(wt(o,rn.FOCUS_OUT,s=>{s.stopPropagation(),this._focusedHoverPartIndex=-1})),n.type==="hoverPart"&&n.hoverPart instanceof TRn&&t.add(new nWe(o,()=>n.participant.getAccessibleContent(n.hoverPart),this._clipboardService,this._hoverService))}),t}_updateMarkdownAndColorParticipantInfo(t){const n=t.find(r=>r instanceof zJ&&!(r instanceof m0e));n&&(this._markdownHoverParticipant=n),this._colorHoverParticipant=t.find(r=>r instanceof e0e)}focusHoverPartWithIndex(t){t<0||t>=this._renderedParts.length||this._renderedParts[t].hoverElement.focus()}async updateHoverVerbosityLevel(t,n,r){if(!this._markdownHoverParticipant)return;let o;n>=0?o={start:n,endExclusive:n+1}:o=this._findRangeOfMarkdownHoverParts(this._markdownHoverParticipant);for(let s=o.start;s=0?this.focusHoverPartWithIndex(n):this._context.focus()),this._context.onContentsChanged()}isColorPickerVisible(){var t;return((t=this._colorHoverParticipant)==null?void 0:t.isColorPickerVisible())??!1}_normalizedIndexToMarkdownHoverIndexRange(t,n){const r=this._renderedParts[n];if(!r||r.type!=="hoverPart"||!(r.participant===t))return;const s=this._renderedParts.findIndex(a=>a.type==="hoverPart"&&a.participant===t);if(s===-1)throw new ui;return n-s}_findRangeOfMarkdownHoverParts(t){const n=this._renderedParts.slice(),r=n.findIndex(a=>a.type==="hoverPart"&&a.participant===t),o=n.reverse().findIndex(a=>a.type==="hoverPart"&&a.participant===t),s=o>=0?n.length-o:o;return{start:r,endExclusive:s+1}}get domNode(){return this._fragment}get domNodeHasChildren(){return this._fragment.hasChildNodes()}get focusedHoverPartIndex(){return this._focusedHoverPartIndex}get hoverPartsCount(){return this._renderedParts.length}},QWe=ZD,ZD._DECORATION_OPTIONS=Gi.register({description:"content-hover-highlight",className:"hoverHighlight"}),ZD);BWe=QWe=QRn([$U(4,Do),$U(5,pm),$U(6,U0)],BWe);var wbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},tce=function(e,t){return function(n,r){t(n,r,e)}};let RWe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._instantiationService=n,this._keybindingService=r,this._hoverService=o,this._clipboardService=s,this._currentResult=null,this._renderedContentHover=this._register(new ts),this._onContentsChanged=this._register(new at),this.onContentsChanged=this._onContentsChanged.event,this._contentHoverWidget=this._register(this._instantiationService.createInstance(Zje,this._editor)),this._participants=this._initializeHoverParticipants(),this._hoverOperation=this._register(new vBn(this._editor,new q1e(this._editor,this._participants))),this._registerListeners()}_initializeHoverParticipants(){const t=[];for(const n of BI.getAll()){const r=this._instantiationService.createInstance(n,this._editor);t.push(r)}return t.sort((n,r)=>n.hoverOrdinal-r.hoverOrdinal),this._register(this._contentHoverWidget.onDidResize(()=>{this._participants.forEach(n=>{var r;return(r=n.handleResize)==null?void 0:r.call(n)})})),this._register(this._contentHoverWidget.onDidScroll(n=>{this._participants.forEach(r=>{var o;return(o=r.handleScroll)==null?void 0:o.call(r,n)})})),this._register(this._contentHoverWidget.onContentsChanged(()=>{this._participants.forEach(n=>{var r;return(r=n.handleContentsChanged)==null?void 0:r.call(n)})})),t}_registerListeners(){this._register(this._hoverOperation.onResult(n=>{const r=n.hasLoadingMessage?this._addLoadingMessage(n):n.value;this._withResult(new wBn(r,n.isComplete,n.options))}));const t=this._contentHoverWidget.getDomNode();this._register(wc(t,"keydown",n=>{n.equals(9)&&this.hide()})),this._register(wc(t,"mouseleave",n=>{this._onMouseLeave(n)})),this._register(Hl.onDidChange(()=>{this._contentHoverWidget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)})),this._register(this._contentHoverWidget.onContentsChanged(()=>{this._onContentsChanged.fire()}))}_startShowingOrUpdateHover(t,n,r,o,s){if(!(this._contentHoverWidget.position&&this._currentResult))return t?(this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):!1;const l=this._editor.getOption(69).sticky,d=s&&this._contentHoverWidget.isMouseGettingCloser(s.event.posx,s.event.posy);return l&&d?(t&&this._startHoverOperationIfNecessary(t,n,r,o,!0),!0):t?this._currentResult&&this._currentResult.options.anchor.equals(t)?!0:this._currentResult&&t.canAdoptVisibleHover(this._currentResult.options.anchor,this._contentHoverWidget.position)?(this._currentResult&&this._setCurrentResult(this._currentResult.filter(t)),this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(t,n,r,o,s){if(this._hoverOperation.options&&this._hoverOperation.options.anchor.equals(t))return;this._hoverOperation.cancel();const l={anchor:t,source:r,shouldFocus:o,insistOnKeepingHoverVisible:s};this._hoverOperation.start(n,l)}_setCurrentResult(t){let n=t;if(this._currentResult===n)return;n&&n.hoverParts.length===0&&(n=null),this._currentResult=n,this._currentResult?this._showHover(this._currentResult):this._hideHover()}_addLoadingMessage(t){for(const n of this._participants){if(!n.createLoadingMessage)continue;const r=n.createLoadingMessage(t.options.anchor);if(r)return t.value.slice(0).concat([r])}return t.value}_withResult(t){if(this._contentHoverWidget.position&&this._currentResult&&this._currentResult.isComplete||this._setCurrentResult(t),!t.isComplete)return;const o=t.hoverParts.length===0,s=t.options.insistOnKeepingHoverVisible;o&&s||this._setCurrentResult(t)}_showHover(t){const n=this._getHoverContext();this._renderedContentHover.value=new DWe(this._editor,t,this._participants,n,this._keybindingService,this._hoverService,this._clipboardService),this._renderedContentHover.value.domNodeHasChildren?this._contentHoverWidget.show(this._renderedContentHover.value):this._renderedContentHover.clear()}_hideHover(){this._contentHoverWidget.hide(),this._participants.forEach(t=>{var n;return(n=t.handleHide)==null?void 0:n.call(t)})}_getHoverContext(){return{hide:()=>{this.hide()},onContentsChanged:()=>{this._contentHoverWidget.handleContentsChanged()},setMinimumDimensions:s=>{this._contentHoverWidget.setMinimumDimensions(s)},focus:()=>this.focus()}}showsOrWillShow(t){if(this._contentHoverWidget.isResizing)return!0;const r=this._findHoverAnchorCandidates(t);if(!(r.length>0))return this._startShowingOrUpdateHover(null,0,0,!1,t);const s=r[0];return this._startShowingOrUpdateHover(s,0,0,!1,t)}_findHoverAnchorCandidates(t){const n=[];for(const o of this._participants){if(!o.suggestHoverAnchor)continue;const s=o.suggestHoverAnchor(t);s&&n.push(s)}const r=t.target;switch(r.type){case 6:{n.push(new uxe(0,r.range,t.event.posx,t.event.posy));break}case 7:{const o=this._editor.getOption(59).typicalHalfwidthCharacterWidth/2;if(!(!r.detail.isAfterLines&&typeof r.detail.horizontalDistanceToText=="number"&&r.detail.horizontalDistanceToTexts.priority-o.priority),n}_onMouseLeave(t){const n=this._editor.getDomNode();(!n||!b3e(n,t.x,t.y))&&this.hide()}startShowingAtRange(t,n,r,o){this._startShowingOrUpdateHover(new uxe(0,t,void 0,void 0),n,r,o,null)}async updateHoverVerbosityLevel(t,n,r){var o;(o=this._renderedContentHover.value)==null||o.updateHoverVerbosityLevel(t,n,r)}focusedHoverPartIndex(){var t;return((t=this._renderedContentHover.value)==null?void 0:t.focusedHoverPartIndex)??-1}containsNode(t){return t?this._contentHoverWidget.getDomNode().contains(t):!1}focus(){var n;if(((n=this._renderedContentHover.value)==null?void 0:n.hoverPartsCount)===1){this.focusHoverPartWithIndex(0);return}this._contentHoverWidget.focus()}focusHoverPartWithIndex(t){var n;(n=this._renderedContentHover.value)==null||n.focusHoverPartWithIndex(t)}scrollUp(){this._contentHoverWidget.scrollUp()}scrollDown(){this._contentHoverWidget.scrollDown()}scrollLeft(){this._contentHoverWidget.scrollLeft()}scrollRight(){this._contentHoverWidget.scrollRight()}pageUp(){this._contentHoverWidget.pageUp()}pageDown(){this._contentHoverWidget.pageDown()}goToTop(){this._contentHoverWidget.goToTop()}goToBottom(){this._contentHoverWidget.goToBottom()}hide(){this._hoverOperation.cancel(),this._setCurrentResult(null)}getDomNode(){return this._contentHoverWidget.getDomNode()}get isColorPickerVisible(){var t;return((t=this._renderedContentHover.value)==null?void 0:t.isColorPickerVisible())??!1}get isVisibleFromKeyboard(){return this._contentHoverWidget.isVisibleFromKeyboard}get isVisible(){return this._contentHoverWidget.isVisible}get isFocused(){return this._contentHoverWidget.isFocused}get isResizing(){return this._contentHoverWidget.isResizing}get widget(){return this._contentHoverWidget}};RWe=wbo([tce(1,Yn),tce(2,Do),tce(3,pm),tce(4,U0)],RWe);function DRn(e){var n;const t=e.target;return!!t&&t.type===6&&((n=t.detail.injectedText)==null?void 0:n.options.attachedData)===hBn}var Obo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Oxe=function(e,t){return function(n,r){t(n,r,e)}},IWe,qD;let If=(qD=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._instantiationService=r,this._keybindingService=o,this._onHoverContentsChanged=this._register(new at),this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new xt,this._isMouseDown=!1,this._ignoreMouseEvents=!1,this._reactToEditorMouseMoveRunner=this._register(new Es(()=>{this._mouseMoveEvent&&this._reactToEditorMouseMove(this._mouseMoveEvent)},0)),this._register(n.onDidShowContextMenu(()=>{this.hideContentHover(),this._ignoreMouseEvents=!0})),this._register(n.onDidHideContextMenu(()=>{this._ignoreMouseEvents=!1})),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(69)&&(this._unhookListeners(),this._hookListeners())}))}static get(t){return t.getContribution(IWe.ID)}_hookListeners(){const t=this._editor.getOption(69);this._hoverSettings={enabled:t.enabled,sticky:t.sticky,hidingDelay:t.hidingDelay},t.enabled||this._cancelSchedulerAndHide(),this._listenersStore.add(this._editor.onMouseDown(n=>this._onEditorMouseDown(n))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n))),this._listenersStore.add(this._editor.onMouseLeave(n=>this._onEditorMouseLeave(n))),this._listenersStore.add(this._editor.onDidChangeModel(()=>this._cancelSchedulerAndHide())),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(n=>this._onEditorScrollChanged(n)))}_unhookListeners(){this._listenersStore.clear()}_cancelSchedulerAndHide(){this._cancelScheduler(),this.hideContentHover()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(t){this._ignoreMouseEvents||(t.scrollTopChanged||t.scrollLeftChanged)&&this.hideContentHover()}_onEditorMouseDown(t){this._ignoreMouseEvents||(this._isMouseDown=!0,this._shouldKeepHoverWidgetVisible(t))||this.hideContentHover()}_shouldKeepHoverWidgetVisible(t){return this._isMouseOnContentHoverWidget(t)||this._isContentWidgetResizing()||DRn(t)}_isMouseOnContentHoverWidget(t){return this._contentWidget?b3e(this._contentWidget.getDomNode(),t.event.posx,t.event.posy):!1}_onEditorMouseUp(){this._ignoreMouseEvents||(this._isMouseDown=!1)}_onEditorMouseLeave(t){this._ignoreMouseEvents||this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._shouldKeepHoverWidgetVisible(t))||this.hideContentHover()}_shouldKeepCurrentHover(t){const n=this._contentWidget;if(!n)return!1;const r=this._hoverSettings.sticky,o=(h,g)=>{const m=this._isMouseOnContentHoverWidget(h);return g&&m},s=h=>{const g=n.isColorPickerVisible,m=this._isMouseOnContentHoverWidget(h),v=g&&m,f=g&&this._isMouseDown;return v||f},a=(h,g)=>{var v;const m=h.event.browserEvent.view;return m?g&&n.containsNode(m.document.activeElement)&&!((v=m.getSelection())!=null&&v.isCollapsed):!1},l=n.isFocused,d=n.isResizing,u=this._hoverSettings.sticky&&n.isVisibleFromKeyboard;return this.shouldKeepOpenOnEditorMouseMoveOrLeave||l||d||u||o(t,r)||s(t)||a(t,r)}_onEditorMouseMove(t){if(this._ignoreMouseEvents)return;if(this._mouseMoveEvent=t,this._shouldKeepCurrentHover(t)){this._reactToEditorMouseMoveRunner.cancel();return}if(this._shouldRescheduleHoverComputation()){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);return}this._reactToEditorMouseMove(t)}_shouldRescheduleHoverComputation(){var r;const t=this._hoverSettings.hidingDelay;return(((r=this._contentWidget)==null?void 0:r.isVisible)??!1)&&this._hoverSettings.sticky&&t>0}_reactToEditorMouseMove(t){this._hoverSettings.enabled&&this._getOrCreateContentWidget().showsOrWillShow(t)||this.hideContentHover()}_onKeyDown(t){if(this._ignoreMouseEvents||!this._contentWidget)return;const n=this._isPotentialKeyboardShortcut(t),r=this._isModifierKeyPressed(t);n||r||this._contentWidget.isFocused&&t.keyCode===2||this.hideContentHover()}_isPotentialKeyboardShortcut(t){if(!this._editor.hasModel()||!this._contentWidget)return!1;const n=this._keybindingService.softDispatch(t,this._editor.getDomNode()),r=n.kind===1,o=n.kind===2&&(n.commandId===fBn||n.commandId===A3e||n.commandId===p3e)&&this._contentWidget.isVisible;return r||o}_isModifierKeyPressed(t){return t.keyCode===5||t.keyCode===6||t.keyCode===57||t.keyCode===4}hideContentHover(){var t;AV.dropDownVisible||(t=this._contentWidget)==null||t.hide()}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(RWe,this._editor),this._listenersStore.add(this._contentWidget.onContentsChanged(()=>this._onHoverContentsChanged.fire()))),this._contentWidget}showContentHover(t,n,r,o){this._getOrCreateContentWidget().startShowingAtRange(t,n,r,o)}_isContentWidgetResizing(){var t;return((t=this._contentWidget)==null?void 0:t.widget.isResizing)||!1}focusedHoverPartIndex(){return this._getOrCreateContentWidget().focusedHoverPartIndex()}updateHoverVerbosityLevel(t,n,r){this._getOrCreateContentWidget().updateHoverVerbosityLevel(t,n,r)}focus(){var t;(t=this._contentWidget)==null||t.focus()}scrollUp(){var t;(t=this._contentWidget)==null||t.scrollUp()}scrollDown(){var t;(t=this._contentWidget)==null||t.scrollDown()}scrollLeft(){var t;(t=this._contentWidget)==null||t.scrollLeft()}scrollRight(){var t;(t=this._contentWidget)==null||t.scrollRight()}pageUp(){var t;(t=this._contentWidget)==null||t.pageUp()}pageDown(){var t;(t=this._contentWidget)==null||t.pageDown()}goToTop(){var t;(t=this._contentWidget)==null||t.goToTop()}goToBottom(){var t;(t=this._contentWidget)==null||t.goToBottom()}get isColorPickerVisible(){var t;return(t=this._contentWidget)==null?void 0:t.isColorPickerVisible}get isHoverVisible(){var t;return(t=this._contentWidget)==null?void 0:t.isVisible}dispose(){var t;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(t=this._contentWidget)==null||t.dispose()}},IWe=qD,qD.ID="editor.contrib.contentHover",qD);If=IWe=Obo([Oxe(1,S2),Oxe(2,Yn),Oxe(3,Do)],If);const vat=class vat extends ft{constructor(t){super(),this._editor=t,this._register(t.onMouseDown(n=>this.onMouseDown(n)))}dispose(){super.dispose()}onMouseDown(t){const n=this._editor.getOption(168);if(n!=="click"&&n!=="clickAndHover"||!DRn(t))return;const r=this._editor.getContribution(If.ID);if(!r||r.isColorPickerVisible)return;const o=t.target.range;if(!o)return;const s=new Ee(o.startLineNumber,o.startColumn+1,o.endLineNumber,o.endColumn+1);r.showContentHover(s,1,1,!1)}};vat.ID="editor.contrib.colorContribution";let A0e=vat;var ybo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Cbo=function(e,t){return function(n,r){t(n,r,e)}};class _nt{constructor(t,n,r,o){this.owner=t,this.range=n,this.model=r,this.provider=o}static fromBaseColor(t,n){return new _nt(t,n.range,n.model,n.provider)}}class _bo extends ft{constructor(t,n,r,o){super();const s=t.getModel(),a=r.model;this.color=r.model.color,this.colorPicker=this._register(new jBn(n.fragment,a,t.getOption(163),o,"standalone")),this._register(a.onColorFlushed(l=>{this.color=l})),this._register(a.onDidChangeColor(l=>{HJ(s,a,l,r.range,r)})),this._register(t.onDidChangeModelContent(l=>{n.hide(),t.focus()})),HJ(s,a,this.color,r.range,r)}}let MWe=class{constructor(t,n){this._editor=t,this._themeService=n}async createColorHover(t,n,r){if(!this._editor.hasModel()||!vV.get(this._editor))return null;const s=await cBn(r,this._editor.getModel(),Er.None);let a=null,l=null;for(const m of s){const v=m.colorInfo;Ee.containsRange(v.range,t.range)&&(a=v,l=m.provider)}const d=a??t,u=l??n,h=!!a;return{colorHover:_nt.fromBaseColor(this,await WBn(this._editor.getModel(),d,u)),foundInEditor:h}}async updateEditorModel(t){if(!this._editor.hasModel())return;const n=t.model;let r=new Ee(t.range.startLineNumber,t.range.startColumn,t.range.endLineNumber,t.range.endColumn);this._color&&(await HJ(this._editor.getModel(),n,this._color,r,t),r=VBn(this._editor,r,n))}renderHoverParts(t,n){if(!(n.length===0||!this._editor.hasModel()))return this._setMinimumDimensions(t),this._renderedParts=new _bo(this._editor,t,n[0],this._themeService),this._renderedParts}_setMinimumDimensions(t){const n=this._editor.getOption(75)+8;t.setMinimumDimensions(new cs(302,n))}get _color(){var t;return(t=this._renderedParts)==null?void 0:t.color}};MWe=ybo([Cbo(1,Dl)],MWe);var Sbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},EX=function(e,t){return function(n,r){t(n,r,e)}},PWe;class Lbo{constructor(t,n){this.value=t,this.foundInEditor=n}}const Fyt=8,xbo=22;var KD;let FWe=(KD=class extends ft{constructor(t,n,r,o,s,a,l,d){var m;super(),this._editor=t,this._standaloneColorPickerVisible=n,this._standaloneColorPickerFocused=r,this._keybindingService=s,this._languageFeaturesService=a,this._editorWorkerService=l,this._hoverService=d,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new at),this.onResult=this._onResult.event,this._renderedHoverParts=this._register(new ts),this._renderedStatusBar=this._register(new ts),this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=o.createInstance(MWe,this._editor),this._position=(m=this._editor._getViewModel())==null?void 0:m.getPrimaryCursorState().modelState.position;const u=this._editor.getSelection(),h=u?{startLineNumber:u.startLineNumber,startColumn:u.startColumn,endLineNumber:u.endLineNumber,endColumn:u.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},g=this._register(uA(this._body));this._register(g.onDidBlur(v=>{this.hide()})),this._register(g.onDidFocus(v=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(v=>{var k;const f=(k=v.target.element)==null?void 0:k.classList;f&&f.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(v=>{this._render(v.value,v.foundInEditor)})),this._start(h),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return PWe.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const t=this._editor.getOption(69).above;return{position:this._position,secondaryPosition:this._position,preference:t?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(t){const n=await this._computeAsync(t);n&&this._onResult.fire(new Lbo(n.result,n.foundInEditor))}async _computeAsync(t){if(!this._editor.hasModel())return null;const n={range:t,color:{red:0,green:0,blue:0,alpha:1}},r=await this._standaloneColorPickerParticipant.createColorHover(n,new jJ(this._editorWorkerService),this._languageFeaturesService.colorProvider);return r?{result:r.colorHover,foundInEditor:r.foundInEditor}:null}_render(t,n){const r=document.createDocumentFragment();this._renderedStatusBar.value=this._register(new K1e(this._keybindingService,this._hoverService));const o={fragment:r,statusBar:this._renderedStatusBar.value,onContentsChanged:()=>{},setMinimumDimensions:()=>{},hide:()=>this.hide(),focus:()=>this.focus()};if(this._colorHover=t,this._renderedHoverParts.value=this._standaloneColorPickerParticipant.renderHoverParts(o,[t]),!this._renderedHoverParts.value){this._renderedStatusBar.clear(),this._renderedHoverParts.clear();return}const s=this._renderedHoverParts.value.colorPicker;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(r),s.layout();const a=s.body,l=a.saturationBox.domNode.clientWidth,d=a.domNode.clientWidth-l-xbo-Fyt,u=s.body.enterButton;u==null||u.onClicked(()=>{this.updateEditor(),this.hide()});const h=s.header,g=h.pickedColorNode;g.style.width=l+Fyt+"px";const m=h.originalColorNode;m.style.width=d+"px";const v=s.header.closeButton;v==null||v.onClicked(()=>{this.hide()}),n&&(u&&(u.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(t.range)),this._editor.layoutContentWidget(this)}},PWe=KD,KD.ID="editor.contrib.standaloneColorPickerWidget",KD);FWe=PWe=Sbo([EX(3,Yn),EX(4,Do),EX(5,Nn),EX(6,S1),EX(7,pm)],FWe);var Ebo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Nyt=function(e,t){return function(n,r){t(n,r,e)}},NWe,JD;let BR=(JD=class extends ft{constructor(t,n,r){super(),this._editor=t,this._instantiationService=r,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=$e.standaloneColorPickerVisible.bindTo(n),this._standaloneColorPickerFocused=$e.standaloneColorPickerFocused.bindTo(n)}showOrFocus(){var t;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(t=this._standaloneColorPickerWidget)==null||t.focus():this._standaloneColorPickerWidget=this._instantiationService.createInstance(FWe,this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused))}hide(){var t;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(t=this._standaloneColorPickerWidget)==null||t.hide(),this._editor.focus()}insertColor(){var t;(t=this._standaloneColorPickerWidget)==null||t.updateEditor(),this.hide()}static get(t){return t.getContribution(NWe.ID)}},NWe=JD,JD.ID="editor.contrib.standaloneColorPickerController",JD);BR=NWe=Ebo([Nyt(1,Qi),Nyt(2,Yn)],BR);class Tbo extends Op{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{..._t(889,"Show or Focus Standalone Color Picker"),mnemonicTitle:U(888,"&&Show or Focus Standalone Color Picker")},precondition:void 0,menu:[{id:Wn.CommandPalette}],metadata:{description:_t(890,"Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.")}})}runEditorCommand(t,n){var r;(r=BR.get(n))==null||r.showOrFocus()}}class Qbo extends Bn{constructor(){super({id:"editor.action.hideColorPicker",label:_t(891,"Hide the Color Picker"),precondition:$e.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100},metadata:{description:_t(892,"Hide the standalone color picker.")}})}run(t,n){var r;(r=BR.get(n))==null||r.hide()}}class Dbo extends Bn{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:_t(893,"Insert Color with Standalone Color Picker"),precondition:$e.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100},metadata:{description:_t(894,"Insert hex/rgb/hsl colors with the focused standalone color picker.")}})}run(t,n){var r;(r=BR.get(n))==null||r.insertColor()}}un(Qbo);un(Dbo);ys(Tbo);mo(A0e.ID,A0e,2);mo(BR.ID,BR,1);mo(vV.ID,vV,1);dH(Hje);BI.register(e0e);co.registerCommand("_executeDocumentColorProvider",function(e,...t){const[n]=t;if(!(n instanceof vi))throw Gv();const{model:r,colorProviderRegistry:o,defaultColorDecoratorsEnablement:s}=uBn(e,n);return Xtt(new Hvo,o,r,Er.None,s)});co.registerCommand("_executeColorPresentationProvider",function(e,...t){const[n,r]=t;if(!r)return;const{uri:o,range:s}=r;if(!(o instanceof vi)||!Array.isArray(n)||n.length!==4||!Ee.isIRange(s))throw Gv();const{model:a,colorProviderRegistry:l,defaultColorDecoratorsEnablement:d}=uBn(e,o),[u,h,g,m]=n;return Xtt(new $vo({range:s,color:{red:u,green:h,blue:g,alpha:m}}),l,a,Er.None,d)});class w9{constructor(t,n,r){this.languageConfigurationService=r,this._selection=t,this._insertSpace=n,this._usedEndToken=null}static _haystackHasNeedleAtOffset(t,n,r){if(r<0)return!1;const o=n.length,s=t.length;if(r+o>s)return!1;for(let a=0;a=65&&l<=90&&l+32===d)&&!(d>=65&&d<=90&&d+32===l))return!1}return!0}_createOperationsForBlockComment(t,n,r,o,s,a){const l=t.startLineNumber,d=t.startColumn,u=t.endLineNumber,h=t.endColumn,g=s.getLineContent(l),m=s.getLineContent(u);let v=g.lastIndexOf(n,d-1+n.length),f=m.indexOf(r,h-1-r.length);if(v!==-1&&f!==-1)if(l===u)g.substring(v+n.length,f).indexOf(r)>=0&&(v=-1,f=-1);else{const A=g.substring(v+n.length),p=m.substring(0,f);(A.indexOf(r)>=0||p.indexOf(r)>=0)&&(v=-1,f=-1)}let k;v!==-1&&f!==-1?(o&&v+n.length0&&m.charCodeAt(f-1)===32&&(r=" "+r,f-=1),k=w9._createRemoveBlockCommentOperations(new Ee(l,v+n.length+1,u,f+1),n,r)):(k=w9._createAddBlockCommentOperations(t,n,r,this._insertSpace),this._usedEndToken=k.length===1?r:null);for(const A of k)a.addTrackedEditOperation(A.range,A.text)}static _createRemoveBlockCommentOperations(t,n,r){const o=[];return Ee.isEmpty(t)?o.push($l.delete(new Ee(t.startLineNumber,t.startColumn-n.length,t.endLineNumber,t.endColumn+r.length))):(o.push($l.delete(new Ee(t.startLineNumber,t.startColumn-n.length,t.startLineNumber,t.startColumn))),o.push($l.delete(new Ee(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn+r.length)))),o}static _createAddBlockCommentOperations(t,n,r,o){const s=[];return Ee.isEmpty(t)?s.push($l.replace(new Ee(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn),n+" "+r)):(s.push($l.insert(new it(t.startLineNumber,t.startColumn),n+(o?" ":""))),s.push($l.insert(new it(t.endLineNumber,t.endColumn),(o?" ":"")+r))),s}getEditOperations(t,n){const r=this._selection.startLineNumber,o=this._selection.startColumn;t.tokenization.tokenizeIfCheap(r);const s=t.getLanguageIdAtPosition(r,o),a=this.languageConfigurationService.getLanguageConfiguration(s).comments;!a||!a.blockCommentStartToken||!a.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,a.blockCommentStartToken,a.blockCommentEndToken,this._insertSpace,t,n)}computeCursorState(t,n){const r=n.getInverseEditOperations();if(r.length===2){const o=r[0],s=r[1];return new Qn(o.range.endLineNumber,o.range.endColumn,s.range.startLineNumber,s.range.startColumn)}else{const o=r[0].range,s=this._usedEndToken?-this._usedEndToken.length-1:0;return new Qn(o.endLineNumber,o.endColumn+s,o.endLineNumber,o.endColumn+s)}}}class W_{constructor(t,n,r,o,s,a,l){this.languageConfigurationService=t,this._selection=n,this._indentSize=r,this._type=o,this._insertSpace=s,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=a,this._ignoreFirstLine=l||!1}static _gatherPreflightCommentStrings(t,n,r,o){t.tokenization.tokenizeIfCheap(n);const s=t.getLanguageIdAtPosition(n,1),a=o.getLanguageConfiguration(s).comments,l=a?a.lineCommentToken:null;if(!l)return null;const d=[];for(let u=0,h=r-n+1;u{s.equals(9)&&(this._keybindingService.dispatchEvent(s,s.target),s.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(ebo,"ReferencesWidget",this._treeContainer,new Ypo,[this._instantiationService.createInstance(h0e),this._instantiationService.createInstance(f0e)],this._instantiationService.createInstance(hWe),r),this._splitView.addView({onDidChange:an.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:s=>{this._preview.layout({height:this._dim.height,width:s})}},r0e.Distribute),this._splitView.addView({onDidChange:an.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:s=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${s}px`,this._tree.layout(this._dim.height,s)}},r0e.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const o=(s,a)=>{s instanceof G8&&(a==="show"&&this._revealReference(s,!1),this._onDidSelectReference.fire({element:s,kind:a,source:"tree"}))};this._disposables.add(this._tree.onDidOpen(s=>{s.sideBySide?o(s.element,"side"):s.editorOptions.pinned?o(s.element,"goto"):o(s.element,"show")})),tm(this._treeContainer)}_onWidth(t){this._dim&&this._doLayoutBody(this._dim.height,t)}_doLayoutBody(t,n){super._doLayoutBody(t,n),this._dim=new cs(n,t),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(n),this._splitView.resizeView(0,n*this.layoutData.ratio)}setSelection(t){return this._revealReference(t,!0).then(()=>{this._model&&(this._tree.setSelection([t]),this._tree.setFocus([t]))})}setModel(t){return this._disposeOnNewModel.clear(),this._model=t,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=U(1085,"No results"),k0(this._messageContainer),Promise.resolve(void 0)):(tm(this._messageContainer),this._decorationsManager=new mWe(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(t=>this._tree.rerender(t))),this._disposeOnNewModel.add(this._preview.onMouseDown(t=>{const{event:n,target:r}=t;if(n.detail!==2)return;const o=this._getFocusedReference();o&&this._onDidSelectReference.fire({element:{uri:o.uri,range:r.range},kind:n.ctrlKey||n.metaKey||n.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),k0(this._treeContainer),k0(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[t]=this._tree.getFocus();if(t instanceof G8)return t;if(t instanceof bV&&t.children.length>0)return t.children[0]}async revealReference(t){await this._revealReference(t,!1),this._onDidSelectReference.fire({element:t,kind:"goto",source:"tree"})}async _revealReference(t,n){if(this._revealedReference===t)return;this._revealedReference=t,t.uri.scheme!==Ci.inMemory?this.setTitle(Dno(t.uri),this._uriLabel.getUriLabel(Dbe(t.uri))):this.setTitle(U(1086,"References"));const r=this._textModelResolverService.createModelReference(t.uri);this._tree.getInput()===t.parent?this._tree.reveal(t):(n&&this._tree.reveal(t.parent),await this._tree.expand(t.parent),this._tree.reveal(t));const o=await r;if(!this._model){o.dispose();return}us(this._previewModelReference);const s=o.object;if(s){const a=this._preview.getModel()===s.textEditorModel?0:1,l=Ee.lift(t.range).collapseToStart();this._previewModelReference=o,this._preview.setModel(s.textEditorModel),this._preview.setSelection(l),this._preview.revealRangeInCenter(l,a)}else this._preview.setModel(this._previewNotAvailableMessage),o.dispose()}};vWe=pRn([K7(3,Dl),K7(4,Dg),K7(5,Yn),K7(6,YBn),K7(7,TR),K7(8,Do)],vWe);var tbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},TP=function(e,t){return function(n,r){t(n,r,e)}},bhe;const II=new yn("referenceSearchVisible",!1,U(1078,"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));var WD;let QR=(WD=class{static get(t){return t.getContribution(bhe.ID)}constructor(t,n,r,o,s,a,l,d){this._defaultTreeKeyboardSupport=t,this._editor=n,this._editorService=o,this._notificationService=s,this._instantiationService=a,this._storageService=l,this._configurationService=d,this._disposables=new xt,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=II.bindTo(r)}dispose(){var t,n;this._referenceSearchVisible.reset(),this._disposables.dispose(),(t=this._widget)==null||t.dispose(),(n=this._model)==null||n.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(t,n,r){let o;if(this._widget&&(o=this._widget.position),this.closeWidget(),o&&t.containsPosition(o))return;this._peekMode=r,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const s="peekViewLayout",a=Jpo.fromJSON(this._storageService.get(s,0,"{}"));this._widget=this._instantiationService.createInstance(vWe,this._editor,this._defaultTreeKeyboardSupport,a),this._widget.setTitle(U(1079,"Loading...")),this._widget.show(t),this._disposables.add(this._widget.onDidClose(()=>{n.cancel(),this._widget?(this._storageService.store(s,JSON.stringify(this._widget.layoutData),0,1),this._widget.isClosing||this.closeWidget(),this._widget=void 0):this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(d=>{const{element:u,kind:h}=d;if(u)switch(h){case"open":(d.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(u,!1,!1);break;case"side":this.openReference(u,!0,!1);break;case"goto":r?this._gotoReference(u,!0):this.openReference(u,!1,!0);break}}));const l=++this._requestIdPool;n.then(d=>{var u;if(l!==this._requestIdPool||!this._widget){d.dispose();return}return(u=this._model)==null||u.dispose(),this._model=d,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(U(1080,"{0} ({1})",this._model.title,this._model.references.length));const h=this._editor.getModel().uri,g=new it(t.startLineNumber,t.startColumn),m=this._model.nearestReference(h,g);if(m)return this._widget.setSelection(m).then(()=>{this._widget&&this._editor.getOption(99)==="editor"&&this._widget.focusOnPreviewEditor()})}})},d=>{this._notificationService.error(d)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(t){if(!this._editor.hasModel()||!this._model||!this._widget)return;const n=this._widget.position;if(!n)return;const r=this._model.nearestReference(this._editor.getModel().uri,n);if(!r)return;const o=this._model.nextOrPreviousReference(r,t),s=this._editor.hasTextFocus(),a=this._widget.isPreviewEditorFocused();await this._widget.setSelection(o),await this._gotoReference(o,!1),s?this._editor.focus():this._widget&&a&&this._widget.focusOnPreviewEditor()}async revealReference(t){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(t)}closeWidget(t=!0){var n,r;(n=this._widget)==null||n.dispose(),(r=this._model)==null||r.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,t&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(t,n){var o;(o=this._widget)==null||o.hide(),this._ignoreModelChangeEvent=!0;const r=Ee.lift(t.range).collapseToStart();return this._editorService.openCodeEditor({resource:t.uri,options:{selection:r,selectionSource:"code.jump",pinned:n}},this._editor).then(s=>{if(this._ignoreModelChangeEvent=!1,!s||!this._widget){this.closeWidget();return}if(this._editor===s)this._widget.show(r),this._widget.focusOnReferenceTree();else{const a=bhe.get(s),l=this._model.clone();this.closeWidget(),s.focus(),a==null||a.toggleWidget(r,Fd(d=>Promise.resolve(l)),this._peekMode??!1)}},s=>{this._ignoreModelChangeEvent=!1,zi(s)})}openReference(t,n,r){n||this.closeWidget();const{uri:o,range:s}=t;this._editorService.openCodeEditor({resource:o,options:{selection:s,selectionSource:"code.jump",pinned:r}},this._editor,n)}},bhe=WD,WD.ID="editor.contrib.referencesController",WD);QR=bhe=tbo([TP(2,Qi),TP(3,yo),TP(4,ic),TP(5,Yn),TP(6,Bg),TP(7,ar)],QR);function MI(e,t){const n=$Bn(e);if(!n)return;const r=QR.get(n);r&&t(r)}Nu.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:Uc(2089,60),when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.changeFocusBetweenPreviewAndReferences()})}});Nu.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.goToNextOrPreviousReference(!0)})}});Nu.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:Ft.or(II,b1.inPeekEditor),handler(e){MI(e,t=>{t.goToNextOrPreviousReference(!1)})}});uo.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference");uo.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference");uo.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch");uo.registerCommand("closeReferenceSearch",e=>MI(e,t=>t.closeWidget()));Nu.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:Ft.and(b1.inPeekEditor,Ft.not("config.editor.stablePeek"))});Nu.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:Ft.and(II,Ft.not("config.editor.stablePeek"),Ft.or($e.editorTextFocus,unt.negate()))});Nu.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:Ft.and(II,fRn,mnt.negate(),knt.negate()),handler(e){var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.revealReference(n[0]))}});Nu.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:Ft.and(II,fRn,mnt.negate(),knt.negate()),handler(e){var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.openReference(n[0],!0,!0))}});uo.registerCommand("openReference",e=>{var r;const n=(r=e.get(_A).lastFocusedList)==null?void 0:r.getFocus();Array.isArray(n)&&n[0]instanceof G8&&MI(e,o=>o.openReference(n[0],!1,!0))});var bRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},WG=function(e,t){return function(n,r){t(n,r,e)}};const wnt=new yn("hasSymbols",!1,U(1095,"Whether there are symbol locations that can be navigated via keyboard-only.")),D3e=Cr("ISymbolNavigationService");let AWe=class{constructor(t,n,r,o){this._editorService=n,this._notificationService=r,this._keybindingService=o,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=wnt.bindTo(t)}reset(){var t,n;this._ctxHasSymbols.reset(),(t=this._currentState)==null||t.dispose(),(n=this._currentMessage)==null||n.close(),this._currentModel=void 0,this._currentIdx=-1}put(t){const n=t.parent.parent;if(n.references.length<=1){this.reset();return}this._currentModel=n,this._currentIdx=n.references.indexOf(t),this._ctxHasSymbols.set(!0),this._showMessage();const r=new pWe(this._editorService),o=r.onDidChange(s=>{if(this._ignoreEditorChange)return;const a=this._editorService.getActiveCodeEditor();if(!a)return;const l=a.getModel(),d=a.getPosition();if(!l||!d)return;let u=!1,h=!1;for(const g of n.references)if(C6(g.uri,l.uri))u=!0,h=h||Ee.containsPosition(g.range,d);else if(u)break;(!u||!h)&&this.reset()});this._currentState=G4(r,o)}revealNext(t){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const n=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:n.uri,options:{selection:Ee.collapseToStart(n.range),selectionRevealType:3}},t).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var r;(r=this._currentMessage)==null||r.close();const t=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),n=t?U(1096,"Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,t.getLabel()):U(1097,"Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(n)}};AWe=bRn([WG(0,Qi),WG(1,yo),WG(2,ic),WG(3,Do)],AWe);zr(D3e,AWe,1);On(new class extends $d{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:wnt,kbOpts:{weight:100,primary:70}})}runEditorCommand(e,t){return e.get(D3e).revealNext(t)}});Nu.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:wnt,primary:9,handler(e){e.get(D3e).reset()}});let pWe=class{constructor(t){this._listener=new Map,this._disposables=new xt,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._disposables.add(t.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(t.onCodeEditorAdd(this._onDidAddEditor,this)),t.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),us(this._listener.values())}_onDidAddEditor(t){this._listener.set(t,G4(t.onDidChangeCursorPosition(n=>this._onDidChange.fire({editor:t})),t.onDidChangeModelContent(n=>this._onDidChange.fire({editor:t}))))}_onDidRemoveEditor(t){var n;(n=this._listener.get(t))==null||n.dispose(),this._listener.delete(t)}};pWe=bRn([WG(0,yo)],pWe);function bWe(e,t){return t.uri.scheme===e.uri.scheme?!0:!nNe(t.uri,Ci.walkThroughSnippet,Ci.vscodeChatCodeBlock,Ci.vscodeChatCodeCompareBlock)}async function tre(e,t,n,r,o){const a=n.ordered(e,r).map(d=>Promise.resolve(o(d,e,t)).then(void 0,u=>{Nc(u)})),l=await Promise.all(a);return P3(l.flat()).filter(d=>bWe(e,d))}function nre(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideDefinition(a,l,o))}function Ont(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideDeclaration(a,l,o))}function ynt(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideImplementation(a,l,o))}function Cnt(e,t,n,r,o){return tre(t,n,e,r,(s,a,l)=>s.provideTypeDefinition(a,l,o))}function ire(e,t,n,r,o,s){return tre(t,n,e,o,async(a,l,d)=>{var g,m;const u=(g=await a.provideReferences(l,d,{includeDeclaration:!0},s))==null?void 0:g.filter(v=>bWe(l,v));if(!r||!u||u.length!==2)return u;const h=(m=await a.provideReferences(l,d,{includeDeclaration:!1},s))==null?void 0:m.filter(v=>bWe(l,v));return h&&h.length===1?h:u})}async function iC(e){const t=await e(),n=new B0(t,""),r=n.references.map(o=>o.link);return n.dispose(),r}_1("_executeDefinitionProvider",(e,t,n)=>{const r=e.get(Nn),o=nre(r.definitionProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeDefinitionProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=nre(r.definitionProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeTypeDefinitionProvider",(e,t,n)=>{const r=e.get(Nn),o=Cnt(r.typeDefinitionProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeTypeDefinitionProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=Cnt(r.typeDefinitionProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeDeclarationProvider",(e,t,n)=>{const r=e.get(Nn),o=Ont(r.declarationProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeDeclarationProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=Ont(r.declarationProvider,t,n,!0,Er.None);return iC(()=>o)});_1("_executeReferenceProvider",(e,t,n)=>{const r=e.get(Nn),o=ire(r.referenceProvider,t,n,!1,!1,Er.None);return iC(()=>o)});_1("_executeReferenceProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=ire(r.referenceProvider,t,n,!1,!0,Er.None);return iC(()=>o)});_1("_executeImplementationProvider",(e,t,n)=>{const r=e.get(Nn),o=ynt(r.implementationProvider,t,n,!1,Er.None);return iC(()=>o)});_1("_executeImplementationProvider_recursive",(e,t,n)=>{const r=e.get(Nn),o=ynt(r.implementationProvider,t,n,!0,Er.None);return iC(()=>o)});Iu.appendMenuItem(Wn.EditorContext,{submenu:Wn.EditorContextPeek,title:U(1038,"Peek"),group:"navigation",order:100});class wV{static is(t){return!t||typeof t!="object"?!1:!!(t instanceof wV||it.isIPosition(t.position)&&t.model)}constructor(t,n){this.model=t,this.position=n}}const l4=class l4 extends Op{static all(){return l4._allSymbolNavigationCommands.values()}static _patchConfig(t){const n={...t,f1:!0};if(n.menu)for(const r of to.wrap(n.menu))(r.id===Wn.EditorContext||r.id===Wn.EditorContextPeek)&&(r.when=Ft.and(t.precondition,r.when));return n}constructor(t,n){super(l4._patchConfig(n)),this.configuration=t,l4._allSymbolNavigationCommands.set(n.id,this)}runEditorCommand(t,n,r,o){if(!n.hasModel())return Promise.resolve(void 0);const s=t.get(ic),a=t.get(yo),l=t.get(V8),d=t.get(D3e),u=t.get(Nn),h=t.get(Yn),g=n.getModel(),m=n.getPosition(),v=wV.is(r)?r:new wV(g,m),f=new z8(n,5),k=YW(this._getLocationModel(u,v.model,v.position,f.token),f.token).then(async A=>{var w;if(!A||f.token.isCancellationRequested)return;um(A.ariaMessage);let p;if(A.referenceAt(g.uri,m)){const O=this._getAlternativeCommand(n);O!==void 0&&!l4._activeAlternativeCommands.has(O)&&l4._allSymbolNavigationCommands.has(O)&&(p=l4._allSymbolNavigationCommands.get(O))}const b=A.references.length;if(b===0){if(!this.configuration.muteMessage){const O=g.getWordAtPosition(m);(w=D0.get(n))==null||w.showMessage(this._getNoResultFoundMessage(O),m)}}else if(b===1&&p)l4._activeAlternativeCommands.add(this.desc.id),h.invokeFunction(O=>p.runEditorCommand(O,n,r,o).finally(()=>{l4._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(a,d,n,A,o)},A=>{s.error(A)}).finally(()=>{f.dispose()});return l.showWhile(k,250),k}async _onResult(t,n,r,o,s){const a=this._getGoToPreference(r);if(!(r instanceof X8)&&(this.configuration.openInPeek||a==="peek"&&o.references.length>1))this._openInPeek(r,o,s);else{const l=o.firstReference(),d=o.references.length>1&&a==="gotoAndPeek",u=await this._openReference(r,t,l,this.configuration.openToSide,!d);d&&u?this._openInPeek(u,o,s):o.dispose(),a==="goto"&&n.put(l)}}async _openReference(t,n,r,o,s){let a;if(Dco(r)&&(a=r.targetSelectionRange),a||(a=r.range),!a)return;const l=await n.openCodeEditor({resource:r.uri,options:{selection:Ee.collapseToStart(a),selectionRevealType:3,selectionSource:"code.jump"}},t,o);if(l){if(s){const d=l.getModel(),u=l.createDecorationsCollection([{range:a,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{l.getModel()===d&&u.clear()},350)}return l}}_openInPeek(t,n,r){const o=QR.get(t);o&&t.hasModel()?o.toggleWidget(r??t.getSelection(),Fd(s=>Promise.resolve(n)),this.configuration.openInPeek):n.dispose()}};l4._allSymbolNavigationCommands=new Map,l4._activeAlternativeCommands=new Set;let Y8=l4;class rre extends Y8{async _getLocationModel(t,n,r,o){return new B0(await nre(t.definitionProvider,n,r,!1,o),U(1039,"Definitions"))}_getNoResultFoundMessage(t){return t&&t.word?U(1040,"No definition found for '{0}'",t.word):U(1041,"No definition found")}_getAlternativeCommand(t){return t.getOption(67).alternativeDefinitionCommand}_getGoToPreference(t){return t.getOption(67).multipleDefinitions}}var K9;ys((K9=class extends rre{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:K9.id,title:{..._t(1065,"Go to Definition"),mnemonicTitle:U(1042,"Go to &&Definition")},precondition:$e.hasDefinitionProvider,keybinding:[{when:$e.editorTextFocus,primary:70,weight:100},{when:Ft.and($e.editorTextFocus,cRn),primary:2118,weight:100}],menu:[{id:Wn.EditorContext,group:"navigation",order:1.1},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),uo.registerCommandAlias("editor.action.goToDeclaration",K9.id)}},K9.id="editor.action.revealDefinition",K9));var J9;ys((J9=class extends rre{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:J9.id,title:_t(1066,"Open Definition to the Side"),precondition:Ft.and($e.hasDefinitionProvider,$e.isInEmbeddedEditor.toNegated()),keybinding:[{when:$e.editorTextFocus,primary:Uc(2089,70),weight:100},{when:Ft.and($e.editorTextFocus,cRn),primary:Uc(2089,2118),weight:100}]}),uo.registerCommandAlias("editor.action.openDeclarationToTheSide",J9.id)}},J9.id="editor.action.revealDefinitionAside",J9));var e6;ys((e6=class extends rre{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:e6.id,title:_t(1067,"Peek Definition"),precondition:Ft.and($e.hasDefinitionProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:Wn.EditorContextPeek,group:"peek",order:2}}),uo.registerCommandAlias("editor.action.previewDeclaration",e6.id)}},e6.id="editor.action.peekDefinition",e6));class wRn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await Ont(t.declarationProvider,n,r,!1,o),U(1043,"Declarations"))}_getNoResultFoundMessage(t){return t&&t.word?U(1044,"No declaration found for '{0}'",t.word):U(1045,"No declaration found")}_getAlternativeCommand(t){return t.getOption(67).alternativeDeclarationCommand}_getGoToPreference(t){return t.getOption(67).multipleDeclarations}}var VD;ys((VD=class extends wRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:VD.id,title:{..._t(1068,"Go to Declaration"),mnemonicTitle:U(1046,"Go to &&Declaration")},precondition:Ft.and($e.hasDeclarationProvider,$e.isInEmbeddedEditor.toNegated()),menu:[{id:Wn.EditorContext,group:"navigation",order:1.3},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(t){return t&&t.word?U(1047,"No declaration found for '{0}'",t.word):U(1048,"No declaration found")}},VD.id="editor.action.revealDeclaration",VD));ys(class extends wRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:_t(1069,"Peek Declaration"),precondition:Ft.and($e.hasDeclarationProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:3}})}});class ORn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await Cnt(t.typeDefinitionProvider,n,r,!1,o),U(1049,"Type Definitions"))}_getNoResultFoundMessage(t){return t&&t.word?U(1050,"No type definition found for '{0}'",t.word):U(1051,"No type definition found")}_getAlternativeCommand(t){return t.getOption(67).alternativeTypeDefinitionCommand}_getGoToPreference(t){return t.getOption(67).multipleTypeDefinitions}}var zD;ys((zD=class extends ORn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:zD.ID,title:{..._t(1070,"Go to Type Definition"),mnemonicTitle:U(1052,"Go to &&Type Definition")},precondition:$e.hasTypeDefinitionProvider,keybinding:{when:$e.editorTextFocus,primary:0,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.4},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},zD.ID="editor.action.goToTypeDefinition",zD));var HD;ys((HD=class extends ORn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:HD.ID,title:_t(1071,"Peek Type Definition"),precondition:Ft.and($e.hasTypeDefinitionProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:4}})}},HD.ID="editor.action.peekTypeDefinition",HD));class yRn extends Y8{async _getLocationModel(t,n,r,o){return new B0(await ynt(t.implementationProvider,n,r,!1,o),U(1053,"Implementations"))}_getNoResultFoundMessage(t){return t&&t.word?U(1054,"No implementation found for '{0}'",t.word):U(1055,"No implementation found")}_getAlternativeCommand(t){return t.getOption(67).alternativeImplementationCommand}_getGoToPreference(t){return t.getOption(67).multipleImplementations}}var $D;ys(($D=class extends yRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:$D.ID,title:{..._t(1072,"Go to Implementations"),mnemonicTitle:U(1056,"Go to &&Implementations")},precondition:$e.hasImplementationProvider,keybinding:{when:$e.editorTextFocus,primary:2118,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.45},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},$D.ID="editor.action.goToImplementation",$D));var XD;ys((XD=class extends yRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:XD.ID,title:_t(1073,"Peek Implementations"),precondition:Ft.and($e.hasImplementationProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:3142,weight:100},menu:{id:Wn.EditorContextPeek,group:"peek",order:5}})}},XD.ID="editor.action.peekImplementation",XD));class CRn extends Y8{_getNoResultFoundMessage(t){return t?U(1057,"No references found for '{0}'",t.word):U(1058,"No references found")}_getAlternativeCommand(t){return t.getOption(67).alternativeReferenceCommand}_getGoToPreference(t){return t.getOption(67).multipleReferences}}ys(class extends CRn{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{..._t(1074,"Go to References"),mnemonicTitle:U(1059,"Go to &&References")},precondition:Ft.and($e.hasReferenceProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),keybinding:{when:$e.editorTextFocus,primary:1094,weight:100},menu:[{id:Wn.EditorContext,group:"navigation",order:1.45},{id:Wn.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(t,n,r,o){return new B0(await ire(t.referenceProvider,n,r,!0,!1,o),U(1060,"References"))}});ys(class extends CRn{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:_t(1075,"Peek References"),precondition:Ft.and($e.hasReferenceProvider,b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated()),menu:{id:Wn.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(t,n,r,o){return new B0(await ire(t.referenceProvider,n,r,!1,!1,o),U(1061,"References"))}});class nbo extends Y8{constructor(t,n,r){super(t,{id:"editor.action.goToLocation",title:_t(1076,"Go to Any Symbol"),precondition:Ft.and(b1.notInPeekEditor,$e.isInEmbeddedEditor.toNegated())}),this._references=n,this._gotoMultipleBehaviour=r}async _getLocationModel(t,n,r,o){return new B0(this._references,U(1062,"Locations"))}_getNoResultFoundMessage(t){return t&&U(1063,"No results for '{0}'",t.word)||""}_getGoToPreference(t){return this._gotoMultipleBehaviour??t.getOption(67).multipleReferences}_getAlternativeCommand(){}}uo.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:vi},{name:"position",description:"The position at which to start",constraint:it.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(e,t,n,r,o,s,a)=>{Oo(vi.isUri(t)),Oo(it.isIPosition(n)),Oo(Array.isArray(r)),Oo(typeof o>"u"||typeof o=="string"),Oo(typeof a>"u"||typeof a=="boolean");const l=e.get(yo),d=await l.openCodeEditor({resource:t},l.getFocusedCodeEditor());if(C3(d))return d.setPosition(n),d.revealPositionInCenterIfOutsideViewport(n,0),d.invokeWithinContext(u=>{const h=new class extends nbo{_getNoResultFoundMessage(g){return s||super._getNoResultFoundMessage(g)}}({muteMessage:!s,openInPeek:!!a,openToSide:!1},r,o);u.get(Yn).invokeFunction(h.run.bind(h),d)})}});uo.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:vi},{name:"position",description:"The position at which to start",constraint:it.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"}]},handler:async(e,t,n,r,o)=>{e.get(ba).executeCommand("editor.action.goToLocations",t,n,r,o,void 0,!0)}});uo.registerCommand({id:"editor.action.findReferences",handler:(e,t,n)=>{Oo(vi.isUri(t)),Oo(it.isIPosition(n));const r=e.get(Nn),o=e.get(yo);return o.openCodeEditor({resource:t},o.getFocusedCodeEditor()).then(s=>{if(!C3(s)||!s.hasModel())return;const a=QR.get(s);if(!a)return;const l=Fd(u=>ire(r.referenceProvider,s.getModel(),it.lift(n),!1,!1,u).then(h=>new B0(h,U(1064,"References")))),d=new Ee(n.lineNumber,n.column,n.lineNumber,n.column);return Promise.resolve(a.toggleWidget(d,l,!1))})}});uo.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");async function ibo(e,t,n,r){const o=e.get(Dg),s=e.get(S2),a=e.get(ba),l=e.get(Yn),d=e.get(ic);if(await r.item.resolve(Er.None),!r.part.location)return;const u=r.part.location,h=[],g=new Set(Iu.getMenuItems(Wn.EditorContext).map(v=>LU(v)?v.command.id:SI()));for(const v of Y8.all())g.has(v.desc.id)&&h.push(new n2(v.desc.id,i2.label(v.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const f=await o.createModelReference(u.uri);try{const k=new wV(f.object.textEditorModel,Ee.getStartPosition(u.range)),A=r.item.anchor.range;await l.invokeFunction(v.runEditorCommand.bind(v),t,k,A)}finally{f.dispose()}}));if(r.part.command){const{command:v}=r.part;h.push(new pd),h.push(new n2(v.id,v.title,void 0,!0,async()=>{try{await a.executeCommand(v.id,...v.arguments??[])}catch(f){d.notify({severity:iH.Error,source:r.item.provider.displayName,message:f})}}))}const m=t.getOption(144);s.showContextMenu({domForShadowRoot:m?t.getDomNode()??void 0:void 0,getAnchor:()=>{const v=Kl(n);return{x:v.left,y:v.top+v.height+8}},getActions:()=>h,onHide:()=>{t.focus()},autoSelectFirstItem:!0})}async function _Rn(e,t,n,r){const s=await e.get(Dg).createModelReference(r.uri);await n.invokeWithinContext(async a=>{const l=t.hasSideBySideModifier,d=a.get(Qi),u=b1.inPeekEditor.getValue(d),h=!l&&n.getOption(101)&&!u;return new rre({openToSide:l,openInPeek:h,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(a,new wV(s.object.textEditorModel,Ee.getStartPosition(r.range)),Ee.lift(r.range))}),s.dispose()}var rbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},QP=function(e,t){return function(n,r){t(n,r,e)}},DF;class g0e{constructor(){this._entries=new wp(50)}get(t){const n=g0e._key(t);return this._entries.get(n)}set(t,n){const r=g0e._key(t);this._entries.set(r,n)}static _key(t){return`${t.uri.toString()}/${t.getVersionId()}`}}const SRn=Cr("IInlayHintsCache");zr(SRn,g0e,1);class wWe{constructor(t,n){this.item=t,this.index=n}get part(){const t=this.item.hint.label;return typeof t=="string"?{label:t}:t[this.index]}}class obo{constructor(t,n){this.part=t,this.hasTriggerModifier=n}}class sbo{constructor(){this._store=new ts,this._tokenSource=new ja}dispose(){this._store.dispose(),this._tokenSource.dispose(!0)}reset(){return this._tokenSource.dispose(!0),this._tokenSource=new ja,this._store.value=new xt,{store:this._store.value,token:this._tokenSource.token}}}var zS;let YJ=(zS=class{static get(t){return t.getContribution(DF.ID)??void 0}constructor(t,n,r,o,s,a,l){this._editor=t,this._languageFeaturesService=n,this._inlayHintsCache=o,this._commandService=s,this._notificationService=a,this._instaService=l,this._disposables=new xt,this._sessionDisposables=new xt,this._decorationsMetadata=new Map,this._activeRenderMode=0,this._ruleFactory=this._disposables.add(new Yme(this._editor)),this._debounceInfo=r.for(n.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(n.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(t.onDidChangeModel(()=>this._update())),this._disposables.add(t.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(t.onDidChangeConfiguration(d=>{d.hasChanged(159)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const t=this._editor.getOption(159);if(t.enabled==="off")return;const n=this._editor.getModel();if(!n||!this._languageFeaturesService.inlayHintsProvider.has(n))return;if(t.enabled==="on")this._activeRenderMode=0;else{let u,h;t.enabled==="onUnlessPressed"?(u=0,h=1):(u=1,h=0),this._activeRenderMode=u,this._sessionDisposables.add(TS.getInstance().event(g=>{if(!this._editor.hasModel())return;const m=g.altKey&&g.ctrlKey&&!(g.shiftKey||g.metaKey)?h:u;if(m!==this._activeRenderMode){this._activeRenderMode=m;const v=this._editor.getModel(),f=this._copyInlayHintsWithCurrentAnchor(v);this._updateHintsDecorators([v.getFullModelRange()],f),l.schedule(0)}}))}const r=this._inlayHintsCache.get(n);r&&this._updateHintsDecorators([n.getFullModelRange()],r),this._sessionDisposables.add(Hn(()=>{n.isDisposed()||this._cacheHintsForFastRestore(n)}));let o;const s=new Set;this._sessionDisposables.add(n.onWillDispose(()=>o==null?void 0:o.cancel()));const a=this._sessionDisposables.add(new sbo),l=new Es(async()=>{const u=Date.now(),{store:h,token:g}=a.reset();try{const m=await t0e.create(this._languageFeaturesService.inlayHintsProvider,n,this._getHintsRanges(),g);if(l.delay=this._debounceInfo.update(n,Date.now()-u),g.isCancellationRequested){m.dispose();return}for(const v of m.provider)typeof v.onDidChangeInlayHints=="function"&&!s.has(v)&&(s.add(v),h.add(v.onDidChangeInlayHints(()=>{l.isScheduled()||l.schedule()})));h.add(m),this._updateHintsDecorators(m.ranges,m.items),this._cacheHintsForFastRestore(n)}catch(m){zi(m)}},this._debounceInfo.get(n));this._sessionDisposables.add(l),l.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(u=>{(u.scrollTopChanged||!l.isScheduled())&&l.schedule()}));const d=this._sessionDisposables.add(new ts);this._sessionDisposables.add(this._editor.onDidChangeModelContent(u=>{const h=Math.max(l.delay,800);this._cursorInfo={position:this._editor.getPosition(),notEarlierThan:Date.now()+h},d.value=B8(()=>l.schedule(0),h),l.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(159)&&l.schedule()})),this._sessionDisposables.add(this._installDblClickGesture(()=>l.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const t=new xt,n=t.add(new y3e(this._editor)),r=new xt;return t.add(r),t.add(n.onMouseMoveOrRelevantKeyDown(o=>{const[s]=o,a=this._getInlayHintLabelPart(s),l=this._editor.getModel();if(!a||!l){r.clear();return}const d=new ja;r.add(Hn(()=>d.dispose(!0))),a.item.resolve(d.token),this._activeInlayHintPart=a.part.command||a.part.location?new obo(a,s.hasTriggerModifier):void 0;const u=l.validatePosition(a.item.hint.position).lineNumber,h=new Ee(u,1,u,l.getLineMaxColumn(u)),g=this._getInlineHintsForRange(h);this._updateHintsDecorators([h],g),r.add(Hn(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([h],g)}))})),t.add(n.onCancel(()=>r.clear())),t.add(n.onExecute(async o=>{const s=this._getInlayHintLabelPart(o);if(s){const a=s.part;a.location?this._instaService.invokeFunction(_Rn,o,this._editor,a.location):JNe.is(a.command)&&await this._invokeCommand(a.command,s.item)}})),t}_getInlineHintsForRange(t){const n=new Set;for(const r of this._decorationsMetadata.values())t.containsRange(r.item.anchor.range)&&n.add(r.item);return Array.from(n)}_installDblClickGesture(t){return this._editor.onMouseUp(async n=>{if(n.event.detail!==2)return;const r=this._getInlayHintLabelPart(n);if(r&&(n.event.preventDefault(),await r.item.resolve(Er.None),yg(r.item.hint.textEdits))){const o=r.item.hint.textEdits.map(s=>$l.replace(Ee.lift(s.range),s.text));this._editor.executeEdits("inlayHint.default",o),t()}})}_installContextMenu(){return this._editor.onContextMenu(async t=>{if(!ec(t.event.target))return;const n=this._getInlayHintLabelPart(t);n&&await this._instaService.invokeFunction(ibo,this._editor,t.event.target,n)})}_getInlayHintLabelPart(t){var r;if(t.target.type!==6)return;const n=(r=t.target.detail.injectedText)==null?void 0:r.options;if(n instanceof T6&&(n==null?void 0:n.attachedData)instanceof wWe)return n.attachedData}async _invokeCommand(t,n){try{await this._commandService.executeCommand(t.id,...t.arguments??[])}catch(r){this._notificationService.notify({severity:iH.Error,source:n.provider.displayName,message:r})}}_cacheHintsForFastRestore(t){const n=this._copyInlayHintsWithCurrentAnchor(t);this._inlayHintsCache.set(t,n)}_copyInlayHintsWithCurrentAnchor(t){const n=new Map;for(const[r,o]of this._decorationsMetadata){if(n.has(o.item))continue;const s=t.getDecorationRange(r);if(s){const a=new zBn(s,o.item.anchor.direction),l=o.item.with({anchor:a});n.set(o.item,l)}}return Array.from(n.values())}_getHintsRanges(){const n=this._editor.getModel(),r=this._editor.getVisibleRangesPlusViewportAboveBelow(),o=[];for(const s of r.sort(Ee.compareRangesUsingStarts)){const a=n.validateRange(new Ee(s.startLineNumber-30,s.startColumn,s.endLineNumber+30,s.endColumn));o.length===0||!Ee.areIntersectingOrTouching(o[o.length-1],a)?o.push(a):o[o.length-1]=Ee.plusRange(o[o.length-1],a)}return o}_updateHintsDecorators(t,n){var A,p;const r=new Map;if(this._cursorInfo&&this._cursorInfo.notEarlierThan>Date.now()&&t.some(b=>b.containsPosition(this._cursorInfo.position))){const{position:b}=this._cursorInfo;this._cursorInfo=void 0;const w=new Map;for(const _ of this._editor.getLineDecorations(b.lineNumber)??[]){const S=this._decorationsMetadata.get(_.id);if(_.range.startColumn>b.column)continue;const L=S==null?void 0:S.decoration.options[S.item.anchor.direction];if(L&&L.attachedData!==DF._whitespaceData){const E=w.get(S.item)??0;w.set(S.item,E+L.content.length)}}const O=n.filter(_=>_.anchor.range.startLineNumber===b.lineNumber&&_.anchor.range.endColumn<=b.column),y=Array.from(w.values());let C;for(;;){const _=O.shift(),S=y.shift();if(!S&&!_)break;if(_)r.set(_,S??0),C=_;else if(C&&S){let L=r.get(C);L+=S,L+=y.reduce((E,T)=>E+T,0),y.length=0;break}}}const o=[],s=(b,w,O,y,C)=>{const _={content:O,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:w.className,cursorStops:y,attachedData:C};o.push({item:b,classNameRef:w,decoration:{range:b.anchor.range,options:{description:"InlayHint",showIfCollapsed:b.anchor.range.isEmpty(),collapseOnReplaceEdit:!b.anchor.range.isEmpty(),stickiness:0,[b.anchor.direction]:this._activeRenderMode===0?_:void 0}}})},a=(b,w)=>{const O=this._ruleFactory.createClassNameRef({width:`${l/3|0}px`,display:"inline-block"});s(b,O," ",w?Bv.Right:Bv.None,DF._whitespaceData)},{fontSize:l,fontFamily:d,padding:u,isUniform:h}=this._getLayoutInfo(),g=this._editor.getOption(159).maximumLength,m="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(m,d);let v={line:0,totalLen:0};for(let b=0;bg)continue;w.hint.paddingLeft&&a(w,!1);const O=typeof w.hint.label=="string"?[{label:w.hint.label}]:w.hint.label,y=r.get(w);let C=0;for(let _=0;_0&&(D=D.slice(0,-Q)+"…",P=!0),C+=D.length,y!==void 0){const M=C-y;M>=0&&(C-=M,D=D.slice(0,-(1+M))+"…",P=!0)}if(u&&(L&&(E||P)?(T.padding=`1px ${Math.max(1,l/4)|0}px`,T.borderRadius=`${l/4|0}px`):L?(T.padding=`1px 0 1px ${Math.max(1,l/4)|0}px`,T.borderRadius=`${l/4|0}px 0 0 ${l/4|0}px`):E||P?(T.padding=`1px ${Math.max(1,l/4)|0}px 1px 0`,T.borderRadius=`0 ${l/4|0}px ${l/4|0}px 0`):T.padding="1px 0 1px 0"),s(w,this._ruleFactory.createClassNameRef(T),abo(D),E&&!w.hint.paddingRight?Bv.Right:Bv.None,new wWe(w,_)),P)break}if(y!==void 0&&CDF._MAX_DECORATORS)break}const f=[];for(const[b,w]of this._decorationsMetadata){const O=(p=this._editor.getModel())==null?void 0:p.getDecorationRange(b);O&&t.some(y=>y.containsRange(O))&&(f.push(b),w.classNameRef.dispose(),this._decorationsMetadata.delete(b))}const k=O3.capture(this._editor);this._editor.changeDecorations(b=>{const w=b.deltaDecorations(f,o.map(O=>O.decoration));for(let O=0;Or)&&(s=r);const a=t.fontFamily||o;return{fontSize:s,fontFamily:a,padding:n,isUniform:!n&&a===o&&s===r}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const t of this._decorationsMetadata.values())t.classNameRef.dispose();this._decorationsMetadata.clear()}},DF=zS,zS.ID="editor.contrib.InlayHints",zS._MAX_DECORATORS=1500,zS._whitespaceData={},zS);YJ=DF=rbo([QP(1,Nn),QP(2,CA),QP(3,SRn),QP(4,ba),QP(5,ic),QP(6,Yn)],YJ);function abo(e){return e.replace(/[ \t]/g," ")}uo.registerCommand("_executeInlayHintProvider",async(e,...t)=>{const[n,r]=t;Oo(vi.isUri(n)),Oo(Ee.isIRange(r));const{inlayHintsProvider:o}=e.get(Nn),s=await e.get(Dg).createModelReference(n);try{const a=await t0e.create(o,s.object.textEditorModel,[Ee.lift(r)],Er.None),l=a.items.map(d=>d.hint);return setTimeout(()=>a.dispose(),0),l}finally{s.dispose()}});var lbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},b7=function(e,t){return function(n,r){t(n,r,e)}};class Dyt extends jG{constructor(t,n,r,o){super(10,n,t.item.anchor.range,r,o,!0),this.part=t}}let m0e=class extends zJ{constructor(t,n,r,o,s,a,l,d){super(t,n,s,l,r,o,d),this._resolverService=a,this.hoverOrdinal=6}suggestHoverAnchor(t){var o;if(!YJ.get(this._editor)||t.target.type!==6)return null;const r=(o=t.target.detail.injectedText)==null?void 0:o.options;return r instanceof T6&&r.attachedData instanceof wWe?new Dyt(r.attachedData,this,t.event.posx,t.event.posy):null}computeSync(){return[]}computeAsync(t,n,r,o){return t instanceof Dyt?new Yv(async s=>{const{part:a}=t;if(await a.item.resolve(o),o.isCancellationRequested)return;let l;typeof a.item.hint.tooltip=="string"?l=new bf().appendText(a.item.hint.tooltip):a.item.hint.tooltip&&(l=a.item.hint.tooltip),l&&s.emitOne(new I4(this,t.range,[l],!1,0)),yg(a.item.hint.textEdits)&&s.emitOne(new I4(this,t.range,[new bf().appendText(U(1164,"Double-click to insert"))],!1,10001));let d;if(typeof a.part.tooltip=="string"?d=new bf().appendText(a.part.tooltip):a.part.tooltip&&(d=a.part.tooltip),d&&s.emitOne(new I4(this,t.range,[d],!1,1)),a.part.location||a.part.command){let h;const m=this._editor.getOption(86)==="altKey"?Tr?U(1165,"cmd + click"):U(1166,"ctrl + click"):Tr?U(1167,"option + click"):U(1168,"alt + click");a.part.location&&a.part.command?h=new bf().appendText(U(1169,"Go to Definition ({0}), right click for more",m)):a.part.location?h=new bf().appendText(U(1170,"Go to Definition ({0})",m)):a.part.command&&(h=new bf(`[${U(1171,"Execute Command")}](${Q4o(a.part.command)} "${a.part.command.title}") (${m})`,{isTrusted:!0})),h&&s.emitOne(new I4(this,t.range,[h],!1,1e4))}const u=this._resolveInlayHintLabelPartHover(a,o);for await(const h of u)s.emitOne(h)}):Yv.EMPTY}async*_resolveInlayHintLabelPartHover(t,n){if(!t.part.location)return;const{uri:r,range:o}=t.part.location,s=await this._resolverService.createModelReference(r);try{const a=s.object.textEditorModel;if(!this._languageFeaturesService.hoverProvider.has(a))return;for await(const l of ent(this._languageFeaturesService.hoverProvider,a,new it(o.startLineNumber,o.startColumn),n))fV(l.hover.contents)||(yield new I4(this,t.item.anchor.range,l.hover.contents,!1,2+l.ordinal))}finally{s.dispose()}}};m0e=lbo([b7(1,Cp),b7(2,Do),b7(3,pm),b7(4,ar),b7(5,Dg),b7(6,Nn),b7(7,ba)],m0e);var LRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},k0e=function(e,t){return function(n,r){t(n,r,e)}};class Byt{constructor(t,n,r){this.marker=t,this.index=n,this.total=r}}let OWe=class{constructor(t,n,r){this._markerService=n,this._configService=r,this._onDidChange=new at,this.onDidChange=this._onDidChange.event,this._dispoables=new xt,this._markers=[],this._nextIdx=-1,vi.isUri(t)?this._resourceFilter=l=>l.toString()===t.toString():t&&(this._resourceFilter=t);const o=this._configService.getValue("problems.sortOrder"),s=(l,d)=>{let u=jK(l.resource.toString(),d.resource.toString());return u===0&&(o==="position"?u=Ee.compareRangesUsingStarts(l,d)||xl.compare(l.severity,d.severity):u=xl.compare(l.severity,d.severity)||Ee.compareRangesUsingStarts(l,d)),u},a=()=>{let l=this._markerService.read({resource:vi.isUri(t)?t:void 0,severities:xl.Error|xl.Warning|xl.Info});return typeof t=="function"&&(l=l.filter(d=>this._resourceFilter(d.resource))),l.sort(s),Na(l,this._markers,(d,u)=>d.resource.toString()===u.resource.toString()&&d.startLineNumber===u.startLineNumber&&d.startColumn===u.startColumn&&d.endLineNumber===u.endLineNumber&&d.endColumn===u.endColumn&&d.severity===u.severity&&d.message===u.message)?!1:(this._markers=l,!0)};a(),this._dispoables.add(n.onMarkerChanged(l=>{(!this._resourceFilter||l.some(d=>this._resourceFilter(d)))&&a()&&(this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(t){return!this._resourceFilter&&!t?!0:!this._resourceFilter||!t?!1:this._resourceFilter(t)}get selected(){const t=this._markers[this._nextIdx];return t&&new Byt(t,this._nextIdx+1,this._markers.length)}_initIdx(t,n,r){let o=this._markers.findIndex(s=>C6(s.resource,t.uri));if(o<0)o=UJe(this._markers.length,s=>jK(this._markers[s].resource.toString(),t.uri.toString())),o<0&&(o=~o),r?this._nextIdx=o:this._nextIdx=(this._markers.length+o-1)%this._markers.length;else{let s=!1,a=!1;for(let l=o;lo.resource.toString()===t.toString());if(!(r<0)){for(;r=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DP=function(e,t){return function(n,r){t(n,r,e)}},_We;class dbo{constructor(t,n,r,o,s){this._openerService=o,this._labelService=s,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new xt,this._editor=n;const a=document.createElement("div");a.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),a.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),a.appendChild(this._relatedBlock),this._disposables.add(wc(this._relatedBlock,"click",l=>{l.preventDefault();const d=this._relatedDiagnostics.get(l.target);d&&r(d)})),this._scrollable=new $7n(a,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),t.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(l=>{a.style.left=`-${l.scrollLeft}px`,a.style.top=`-${l.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){us(this._disposables)}update(t){const{source:n,message:r,relatedInformation:o,code:s}=t;let a=((n==null?void 0:n.length)||0)+2;s&&(typeof s=="string"?a+=s.length:a+=s.value.length);const l=P0(r);this._lines=l.length,this._longestLineLength=0;for(const m of l)this._longestLineLength=Math.max(m.length+a,this._longestLineLength);uh(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(t)),this._editor.applyFontInfo(this._messageBlock);let d=this._messageBlock;for(const m of l)d=document.createElement("div"),d.innerText=m,m===""&&(d.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(d);if(n||s){const m=document.createElement("span");if(m.classList.add("details"),d.appendChild(m),n){const v=document.createElement("span");v.innerText=n,v.classList.add("source"),m.appendChild(v)}if(s)if(typeof s=="string"){const v=document.createElement("span");v.innerText=`(${s})`,v.classList.add("code"),m.appendChild(v)}else{this._codeLink=tn("a.code-link"),this._codeLink.setAttribute("href",`${s.target.toString()}`),this._codeLink.onclick=f=>{this._openerService.open(s.target,{allowCommands:!0}),f.preventDefault(),f.stopPropagation()};const v=Xt(this._codeLink,tn("span"));v.innerText=s.value,m.appendChild(this._codeLink)}}if(uh(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),yg(o)){const m=this._relatedBlock.appendChild(document.createElement("div"));m.style.paddingTop=`${Math.floor(this._editor.getOption(75)*.66)}px`,this._lines+=1;for(const v of o){const f=document.createElement("div"),k=document.createElement("a");k.classList.add("filename"),k.innerText=`${this._labelService.getUriBasenameLabel(v.resource)}(${v.startLineNumber}, ${v.startColumn}): `,k.title=this._labelService.getUriLabel(v.resource),this._relatedDiagnostics.set(k,v);const A=document.createElement("span");A.innerText=v.message,f.appendChild(k),f.appendChild(A),this._lines+=1,m.appendChild(f)}}const u=this._editor.getOption(59),h=Math.ceil(u.typicalFullwidthCharacterWidth*this._longestLineLength*.75),g=u.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:h,scrollHeight:g})}layout(t,n){this._scrollable.getDomNode().style.height=`${t}px`,this._scrollable.getDomNode().style.width=`${n}px`,this._scrollable.setScrollDimensions({width:n,height:t})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(t){let n="";switch(t.severity){case xl.Error:n=U(1024,"Error");break;case xl.Warning:n=U(1025,"Warning");break;case xl.Info:n=U(1026,"Info");break;case xl.Hint:n=U(1027,"Hint");break}let r=U(1028,"{0} at {1}. ",n,t.startLineNumber+":"+t.startColumn);const o=this._editor.getModel();return o&&t.startLineNumber<=o.getLineCount()&&t.startLineNumber>=1&&(r=`${o.getLineContent(t.startLineNumber)}, ${r}`),r}}var GD;let ZJ=(GD=class extends i0e{constructor(t,n,r,o,s,a,l){super(t,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},s),this._themeService=n,this._openerService=r,this._menuService=o,this._contextKeyService=a,this._labelService=l,this._callOnDispose=new xt,this._onDidSelectRelatedInformation=new at,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=xl.Warning,this._backgroundColor=Dt.white,this._applyTheme(n.getColorTheme()),this._callOnDispose.add(n.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(t){this._backgroundColor=t.getColor(gbo);let n=SWe,r=ubo;this._severity===xl.Warning?(n=whe,r=hbo):this._severity===xl.Info&&(n=LWe,r=fbo);const o=t.getColor(n),s=t.getColor(r);this.style({arrowColor:o,frameColor:o,headerBackgroundColor:s,primaryHeadingColor:t.getColor(ZBn),secondaryHeadingColor:t.getColor(qBn)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(t){super._fillHead(t),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(o=>this.editor.focus()));const n=this._menuService.getMenuActions(_We.TitleMenu,this._contextKeyService),r=Pko(n);this._actionbarWidget.push(r,{label:!1,icon:!0,index:0})}_fillTitleIcon(t){this._icon=Xt(t,tn(""))}_fillBody(t){this._parentContainer=t,t.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),t.appendChild(this._container),this._message=new dbo(this._container,this.editor,n=>this._onDidSelectRelatedInformation.fire(n),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(t,n,r){this._container.classList.remove("stale"),this._message.update(t),this._severity=t.severity,this._applyTheme(this._themeService.getColorTheme());const o=Ee.lift(t),s=this.editor.getPosition(),a=s&&o.containsPosition(s)?s:o.getStartPosition();super.show(a,this.computeRequiredHeight());const l=this.editor.getModel();if(l){const d=r>1?U(1029,"{0} of {1} problems",n,r):U(1030,"{0} of {1} problem",n,r);this.setTitle(hA(l.uri),d)}this._icon.className=`codicon ${CWe.className(xl.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(a,0),this.editor.focus()}updateMarker(t){this._container.classList.remove("stale"),this._message.update(t)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(t,n){super._doLayoutBody(t,n),this._heightInPixel=t,this._message.layout(t,n),this._container.style.height=`${t}px`}_onWidth(t){this._message.layout(this._heightInPixel,t)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}},_We=GD,GD.TitleMenu=new Wn("gotoErrorTitleMenu"),GD);ZJ=_We=cbo([DP(1,Dl),DP(2,OL),DP(3,wA),DP(4,Yn),DP(5,Qi),DP(6,TR)],ZJ);const Ryt=nJ($be,Noo),Iyt=nJ(N8,iJ),Myt=nJ(Sy,rJ),SWe=Ve("editorMarkerNavigationError.background",{dark:Ryt,light:Ryt,hcDark:ro,hcLight:ro},U(1031,"Editor marker navigation widget error color.")),ubo=Ve("editorMarkerNavigationError.headerBackground",{dark:Zi(SWe,.1),light:Zi(SWe,.1),hcDark:null,hcLight:null},U(1032,"Editor marker navigation widget error heading background.")),whe=Ve("editorMarkerNavigationWarning.background",{dark:Iyt,light:Iyt,hcDark:ro,hcLight:ro},U(1033,"Editor marker navigation widget warning color.")),hbo=Ve("editorMarkerNavigationWarning.headerBackground",{dark:Zi(whe,.1),light:Zi(whe,.1),hcDark:"#0C141F",hcLight:Zi(whe,.2)},U(1034,"Editor marker navigation widget warning heading background.")),LWe=Ve("editorMarkerNavigationInfo.background",{dark:Myt,light:Myt,hcDark:ro,hcLight:ro},U(1035,"Editor marker navigation widget info color.")),fbo=Ve("editorMarkerNavigationInfo.headerBackground",{dark:Zi(LWe,.1),light:Zi(LWe,.1),hcDark:null,hcLight:null},U(1036,"Editor marker navigation widget info heading background.")),gbo=Ve("editorMarkerNavigation.background",Oc,U(1037,"Editor marker navigation widget background."));var mbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},ece=function(e,t){return function(n,r){t(n,r,e)}},VG,YD;let DR=(YD=class{static get(t){return t.getContribution(VG.ID)}constructor(t,n,r,o,s){this._markerNavigationService=n,this._contextKeyService=r,this._editorService=o,this._instantiationService=s,this._sessionDispoables=new xt,this._editor=t,this._widgetVisible=ERn.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(t){if(this._model&&this._model.matches(t))return this._model;let n=!1;return this._model&&(n=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(t),n&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(ZJ,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(r=>{var o,s,a;(!((o=this._model)!=null&&o.selected)||!Ee.containsPosition((s=this._model)==null?void 0:s.selected.marker,r.position))&&((a=this._model)==null||a.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const r=this._model.find(this._editor.getModel().uri,this._widget.position);r?this._widget.updateMarker(r.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(r=>{this._editorService.openCodeEditor({resource:r.resource,options:{pinned:!0,revealIfOpened:!0,selection:Ee.lift(r).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(t=!0){this._cleanUp(),t&&this._editor.focus()}showAtMarker(t){if(!this._editor.hasModel())return;const n=this._editor.getModel(),r=this._getOrCreateModel(n.uri);r.resetIndex(),r.move(!0,n,new it(t.startLineNumber,t.startColumn)),r.selected&&this._widget.showAtMarker(r.selected.marker,r.selected.index,r.selected.total)}async navigate(t,n){var s,a;if(!this._editor.hasModel())return;const r=this._editor.getModel(),o=this._getOrCreateModel(n?void 0:r.uri);if(o.move(t,r,this._editor.getPosition()),!!o.selected)if(o.selected.marker.resource.toString()!==r.uri.toString()){this._cleanUp();const l=await this._editorService.openCodeEditor({resource:o.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:o.selected.marker}},this._editor);l&&((s=VG.get(l))==null||s.close(),(a=VG.get(l))==null||a.navigate(t,n))}else this._widget.showAtMarker(o.selected.marker,o.selected.index,o.selected.total)}},VG=YD,YD.ID="editor.contrib.markerController",YD);DR=VG=mbo([ece(1,xRn),ece(2,Qi),ece(3,yo),ece(4,Yn)],DR);class B3e extends Bn{constructor(t,n,r){super(r),this._next=t,this._multiFile=n}async run(t,n){var r;n.hasModel()&&await((r=DR.get(n))==null?void 0:r.navigate(this._next,this._multiFile))}}const XT=class XT extends B3e{constructor(){super(!0,!1,{id:XT.ID,label:XT.LABEL,precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:578,weight:100},menuOpts:{menuId:ZJ.TitleMenu,title:XT.LABEL.value,icon:Da("marker-navigation-next",zt.arrowDown,U(1016,"Icon for goto next marker.")),group:"navigation",order:1}})}};XT.ID="editor.action.marker.next",XT.LABEL=_t(1020,"Go to Next Problem (Error, Warning, Info)");let v0e=XT;const GT=class GT extends B3e{constructor(){super(!1,!1,{id:GT.ID,label:GT.LABEL,precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:1602,weight:100},menuOpts:{menuId:ZJ.TitleMenu,title:GT.LABEL.value,icon:Da("marker-navigation-previous",zt.arrowUp,U(1017,"Icon for goto previous marker.")),group:"navigation",order:2}})}};GT.ID="editor.action.marker.prev",GT.LABEL=_t(1021,"Go to Previous Problem (Error, Warning, Info)");let xWe=GT;class kbo extends B3e{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:_t(1022,"Go to Next Problem in Files (Error, Warning, Info)"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:66,weight:100},menuOpts:{menuId:Wn.MenubarGoMenu,title:U(1018,"Next &&Problem"),group:"6_problem_nav",order:1}})}}class vbo extends B3e{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:_t(1023,"Go to Previous Problem in Files (Error, Warning, Info)"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:1090,weight:100},menuOpts:{menuId:Wn.MenubarGoMenu,title:U(1019,"Previous &&Problem"),group:"6_problem_nav",order:2}})}}mo(DR.ID,DR,4);un(v0e);un(xWe);un(kbo);un(vbo);const ERn=new yn("markersNavigationVisible",!1),Abo=$d.bindToContribution(DR.get);On(new Abo({id:"closeMarkersNavigation",precondition:ERn,handler:e=>e.close(),kbOpts:{weight:150,kbExpr:$e.focus,primary:9,secondary:[1033]}}));var pbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},wxe=function(e,t){return function(n,r){t(n,r,e)}};const $A=tn;class TRn{constructor(t,n,r){this.owner=t,this.range=n,this.marker=r}isValidForHoverAnchor(t){return t.type===1&&this.range.startColumn<=t.range.startColumn&&this.range.endColumn>=t.range.endColumn}}const Pyt={type:1,filter:{include:Ma.QuickFix},triggerAction:j0.QuickFixHover};let EWe=class{constructor(t,n,r,o){this._editor=t,this._markerDecorationsService=n,this._openerService=r,this._languageFeaturesService=o,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(t,n){if(!this._editor.hasModel()||t.type!==1&&!t.supportsMarkerHover)return[];const r=this._editor.getModel(),o=t.range;if(!r.isValidRange(t.range))return[];const s=o.startLineNumber,a=r.getLineMaxColumn(s),l=[];for(const d of n){const u=d.range.startLineNumber===s?d.range.startColumn:1,h=d.range.endLineNumber===s?d.range.endColumn:a,g=this._markerDecorationsService.getMarker(r.uri,d);if(!g)continue;const m=new Ee(t.range.startLineNumber,u,t.range.startLineNumber,h);l.push(new TRn(this,m,g))}return l}renderHoverParts(t,n){if(!n.length)return new SR([]);const r=[];n.forEach(a=>{const l=this._renderMarkerHover(a);t.fragment.appendChild(l.hoverElement),r.push(l)});const o=n.length===1?n[0]:n.sort((a,l)=>xl.compare(a.marker.severity,l.marker.severity))[0],s=this._renderMarkerStatusbar(t,o);return new SR(r,s)}getAccessibleContent(t){return t.marker.message}_renderMarkerHover(t){const n=new xt,r=$A("div.hover-row"),o=Xt(r,$A("div.marker.hover-contents")),{source:s,message:a,code:l,relatedInformation:d}=t.marker;this._editor.applyFontInfo(o);const u=Xt(o,$A("span"));if(u.style.whiteSpace="pre-wrap",u.innerText=a,s||l)if(l&&typeof l!="string"){const g=$A("span");if(s){const k=Xt(g,$A("span"));k.innerText=s}const m=Xt(g,$A("a.code-link"));m.setAttribute("href",l.target.toString(!0)),n.add(wt(m,"click",k=>{this._openerService.open(l.target,{allowCommands:!0}),k.preventDefault(),k.stopPropagation()}));const v=Xt(m,$A("span"));v.innerText=l.value;const f=Xt(o,g);f.style.opacity="0.6",f.style.paddingLeft="6px"}else{const g=Xt(o,$A("span"));g.style.opacity="0.6",g.style.paddingLeft="6px",g.innerText=s&&l?`${s}(${l})`:s||`(${l})`}if(yg(d))for(const{message:g,resource:m,startLineNumber:v,startColumn:f}of d){const k=Xt(o,$A("div"));k.style.marginTop="8px";const A=Xt(k,$A("a"));A.innerText=`${hA(m)}(${v}, ${f}): `,A.style.cursor="pointer",n.add(wt(A,"click",b=>{if(b.stopPropagation(),b.preventDefault(),this._openerService){const w={selection:{startLineNumber:v,startColumn:f}};this._openerService.open(m,{fromUserGesture:!0,editorOptions:w}).catch(zi)}}));const p=Xt(k,$A("span"));p.innerText=g,this._editor.applyFontInfo(p)}return{hoverPart:t,hoverElement:r,dispose:()=>n.dispose()}}_renderMarkerStatusbar(t,n){const r=new xt;if(n.marker.severity===xl.Error||n.marker.severity===xl.Warning||n.marker.severity===xl.Info){const o=DR.get(this._editor);o&&t.statusBar.addAction({label:U(1139,"View Problem"),commandId:v0e.ID,run:()=>{t.hide(),o.showAtMarker(n.marker),this._editor.focus()}})}if(!this._editor.getOption(104)){const o=t.statusBar.append($A("div"));this.recentMarkerCodeActionsInfo&&(Y1e.makeKey(this.recentMarkerCodeActionsInfo.marker)===Y1e.makeKey(n.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(o.textContent=U(1140,"No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const s=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?ft.None:B8(()=>o.textContent=U(1141,"Checking for quick fixes..."),200,r);o.textContent||(o.textContent=" ");const a=this.getCodeActions(n.marker);r.add(Hn(()=>a.cancel())),a.then(l=>{var h;if(s.dispose(),this.recentMarkerCodeActionsInfo={marker:n.marker,hasCodeActions:l.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){l.dispose(),o.textContent=U(1142,"No quick fixes available");return}o.style.display="none";let d=!1;r.add(Hn(()=>{d||l.dispose()})),t.statusBar.addAction({label:U(1143,"Quick Fix..."),commandId:ztt,run:g=>{d=!0;const m=_R.get(this._editor),v=Kl(g);t.hide(),m==null||m.showCodeActions(Pyt,l,{x:v.left,y:v.top,width:v.width,height:v.height})}});const u=l.validActions.find(g=>g.action.isAI);u&&t.statusBar.addAction({label:u.action.title,commandId:((h=u.action.command)==null?void 0:h.id)??"",iconClass:fi.asClassName(zt.sparkle),run:()=>{const g=_R.get(this._editor);g==null||g.applyCodeAction(u,!1,!1,p9.FromProblemsHover)}}),t.onContentsChanged()},zi)}return r}getCodeActions(t){return Fd(n=>ON(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new Ee(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn),Pyt,qb.None,n))}};EWe=pbo([wxe(1,ket),wxe(2,OL),wxe(3,Nn)],EWe);var QRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},$U=function(e,t){return function(n,r){t(n,r,e)}},TWe,QWe;let DWe=TWe=class extends ft{constructor(t,n,r,o,s,a,l){super();const d=n.hoverParts;this._renderedHoverParts=this._register(new BWe(t,r,d,o,s,a,l));const u=n.options,h=u.anchor,{showAtPosition:g,showAtSecondaryPosition:m}=TWe.computeHoverPositions(t,h.range,d);this.shouldAppearBeforeContent=d.some(v=>v.isBeforeContent),this.showAtPosition=g,this.showAtSecondaryPosition=m,this.initialMousePosX=h.initialMousePosX,this.initialMousePosY=h.initialMousePosY,this.shouldFocus=u.shouldFocus,this.source=u.source}get domNode(){return this._renderedHoverParts.domNode}get domNodeHasChildren(){return this._renderedHoverParts.domNodeHasChildren}get focusedHoverPartIndex(){return this._renderedHoverParts.focusedHoverPartIndex}get hoverPartsCount(){return this._renderedHoverParts.hoverPartsCount}focusHoverPartWithIndex(t){this._renderedHoverParts.focusHoverPartWithIndex(t)}async updateHoverVerbosityLevel(t,n,r){this._renderedHoverParts.updateHoverVerbosityLevel(t,n,r)}isColorPickerVisible(){return this._renderedHoverParts.isColorPickerVisible()}static computeHoverPositions(t,n,r){let o=1;if(t.hasModel()){const h=t._getViewModel(),g=h.coordinatesConverter,m=g.convertModelRangeToViewRange(n),v=h.getLineMinColumn(m.startLineNumber),f=new it(m.startLineNumber,v);o=g.convertViewPositionToModelPosition(f).column}const s=n.startLineNumber;let a=n.startColumn,l;for(const h of r){const g=h.range,m=g.startLineNumber===s,v=g.endLineNumber===s;if(m&&v){const k=g.startColumn,A=Math.min(a,k);a=Math.max(A,o)}h.forceShowAtRange&&(l=g)}let d,u;if(l){const h=l.getStartPosition();d=h,u=h}else d=n.getStartPosition(),u=new it(s,a);return{showAtPosition:d,showAtSecondaryPosition:u}}};DWe=TWe=QRn([$U(4,Do),$U(5,pm),$U(6,U0)],DWe);class bbo{constructor(t,n){this._statusBar=n,t.appendChild(this._statusBar.hoverElement)}get hoverElement(){return this._statusBar.hoverElement}get actions(){return this._statusBar.actions}dispose(){this._statusBar.dispose()}}var ZD;let BWe=(ZD=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._hoverService=a,this._clipboardService=l,this._renderedParts=[],this._focusedHoverPartIndex=-1,this._context=o,this._fragment=document.createDocumentFragment(),this._register(this._renderParts(n,r,o,s,this._hoverService)),this._register(this._registerListenersOnRenderedParts()),this._register(this._createEditorDecorations(t,r)),this._updateMarkdownAndColorParticipantInfo(n)}_createEditorDecorations(t,n){if(n.length===0)return ft.None;let r=n[0].range;for(const s of n){const a=s.range;r=Ee.plusRange(r,a)}const o=t.createDecorationsCollection();return o.set([{range:r,options:QWe._DECORATION_OPTIONS}]),Hn(()=>{o.clear()})}_renderParts(t,n,r,o,s){const a=new K1e(o,s),l={fragment:this._fragment,statusBar:a,...r},d=new xt;d.add(a);for(const h of t){const g=this._renderHoverPartsForParticipant(n,h,l);d.add(g);for(const m of g.renderedHoverParts)this._renderedParts.push({type:"hoverPart",participant:h,hoverPart:m.hoverPart,hoverElement:m.hoverElement})}const u=this._renderStatusBar(this._fragment,a);return u&&(d.add(u),this._renderedParts.push({type:"statusBar",hoverElement:u.hoverElement,actions:u.actions})),d}_renderHoverPartsForParticipant(t,n,r){const o=t.filter(a=>a.owner===n);return o.length>0?n.renderHoverParts(r,o):new SR([])}_renderStatusBar(t,n){if(n.hasContent)return new bbo(t,n)}_registerListenersOnRenderedParts(){const t=new xt;return this._renderedParts.forEach((n,r)=>{const o=n.hoverElement;o.tabIndex=0,t.add(wt(o,rn.FOCUS_IN,s=>{s.stopPropagation(),this._focusedHoverPartIndex=r})),t.add(wt(o,rn.FOCUS_OUT,s=>{s.stopPropagation(),this._focusedHoverPartIndex=-1})),n.type==="hoverPart"&&n.hoverPart instanceof TRn&&t.add(new nWe(o,()=>n.participant.getAccessibleContent(n.hoverPart),this._clipboardService,this._hoverService))}),t}_updateMarkdownAndColorParticipantInfo(t){const n=t.find(r=>r instanceof zJ&&!(r instanceof m0e));n&&(this._markdownHoverParticipant=n),this._colorHoverParticipant=t.find(r=>r instanceof e0e)}focusHoverPartWithIndex(t){t<0||t>=this._renderedParts.length||this._renderedParts[t].hoverElement.focus()}async updateHoverVerbosityLevel(t,n,r){if(!this._markdownHoverParticipant)return;let o;n>=0?o={start:n,endExclusive:n+1}:o=this._findRangeOfMarkdownHoverParts(this._markdownHoverParticipant);for(let s=o.start;s=0?this.focusHoverPartWithIndex(n):this._context.focus()),this._context.onContentsChanged()}isColorPickerVisible(){var t;return((t=this._colorHoverParticipant)==null?void 0:t.isColorPickerVisible())??!1}_normalizedIndexToMarkdownHoverIndexRange(t,n){const r=this._renderedParts[n];if(!r||r.type!=="hoverPart"||!(r.participant===t))return;const s=this._renderedParts.findIndex(a=>a.type==="hoverPart"&&a.participant===t);if(s===-1)throw new ui;return n-s}_findRangeOfMarkdownHoverParts(t){const n=this._renderedParts.slice(),r=n.findIndex(a=>a.type==="hoverPart"&&a.participant===t),o=n.reverse().findIndex(a=>a.type==="hoverPart"&&a.participant===t),s=o>=0?n.length-o:o;return{start:r,endExclusive:s+1}}get domNode(){return this._fragment}get domNodeHasChildren(){return this._fragment.hasChildNodes()}get focusedHoverPartIndex(){return this._focusedHoverPartIndex}get hoverPartsCount(){return this._renderedParts.length}},QWe=ZD,ZD._DECORATION_OPTIONS=Gi.register({description:"content-hover-highlight",className:"hoverHighlight"}),ZD);BWe=QWe=QRn([$U(4,Do),$U(5,pm),$U(6,U0)],BWe);var wbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},tce=function(e,t){return function(n,r){t(n,r,e)}};let RWe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._instantiationService=n,this._keybindingService=r,this._hoverService=o,this._clipboardService=s,this._currentResult=null,this._renderedContentHover=this._register(new ts),this._onContentsChanged=this._register(new at),this.onContentsChanged=this._onContentsChanged.event,this._contentHoverWidget=this._register(this._instantiationService.createInstance(Zje,this._editor)),this._participants=this._initializeHoverParticipants(),this._hoverOperation=this._register(new vBn(this._editor,new q1e(this._editor,this._participants))),this._registerListeners()}_initializeHoverParticipants(){const t=[];for(const n of BI.getAll()){const r=this._instantiationService.createInstance(n,this._editor);t.push(r)}return t.sort((n,r)=>n.hoverOrdinal-r.hoverOrdinal),this._register(this._contentHoverWidget.onDidResize(()=>{this._participants.forEach(n=>{var r;return(r=n.handleResize)==null?void 0:r.call(n)})})),this._register(this._contentHoverWidget.onDidScroll(n=>{this._participants.forEach(r=>{var o;return(o=r.handleScroll)==null?void 0:o.call(r,n)})})),this._register(this._contentHoverWidget.onContentsChanged(()=>{this._participants.forEach(n=>{var r;return(r=n.handleContentsChanged)==null?void 0:r.call(n)})})),t}_registerListeners(){this._register(this._hoverOperation.onResult(n=>{const r=n.hasLoadingMessage?this._addLoadingMessage(n):n.value;this._withResult(new wBn(r,n.isComplete,n.options))}));const t=this._contentHoverWidget.getDomNode();this._register(wc(t,"keydown",n=>{n.equals(9)&&this.hide()})),this._register(wc(t,"mouseleave",n=>{this._onMouseLeave(n)})),this._register(Hl.onDidChange(()=>{this._contentHoverWidget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)})),this._register(this._contentHoverWidget.onContentsChanged(()=>{this._onContentsChanged.fire()}))}_startShowingOrUpdateHover(t,n,r,o,s){if(!(this._contentHoverWidget.position&&this._currentResult))return t?(this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):!1;const l=this._editor.getOption(69).sticky,d=s&&this._contentHoverWidget.isMouseGettingCloser(s.event.posx,s.event.posy);return l&&d?(t&&this._startHoverOperationIfNecessary(t,n,r,o,!0),!0):t?this._currentResult&&this._currentResult.options.anchor.equals(t)?!0:this._currentResult&&t.canAdoptVisibleHover(this._currentResult.options.anchor,this._contentHoverWidget.position)?(this._currentResult&&this._setCurrentResult(this._currentResult.filter(t)),this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(t,n,r,o,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(t,n,r,o,s){if(this._hoverOperation.options&&this._hoverOperation.options.anchor.equals(t))return;this._hoverOperation.cancel();const l={anchor:t,source:r,shouldFocus:o,insistOnKeepingHoverVisible:s};this._hoverOperation.start(n,l)}_setCurrentResult(t){let n=t;if(this._currentResult===n)return;n&&n.hoverParts.length===0&&(n=null),this._currentResult=n,this._currentResult?this._showHover(this._currentResult):this._hideHover()}_addLoadingMessage(t){for(const n of this._participants){if(!n.createLoadingMessage)continue;const r=n.createLoadingMessage(t.options.anchor);if(r)return t.value.slice(0).concat([r])}return t.value}_withResult(t){if(this._contentHoverWidget.position&&this._currentResult&&this._currentResult.isComplete||this._setCurrentResult(t),!t.isComplete)return;const o=t.hoverParts.length===0,s=t.options.insistOnKeepingHoverVisible;o&&s||this._setCurrentResult(t)}_showHover(t){const n=this._getHoverContext();this._renderedContentHover.value=new DWe(this._editor,t,this._participants,n,this._keybindingService,this._hoverService,this._clipboardService),this._renderedContentHover.value.domNodeHasChildren?this._contentHoverWidget.show(this._renderedContentHover.value):this._renderedContentHover.clear()}_hideHover(){this._contentHoverWidget.hide(),this._participants.forEach(t=>{var n;return(n=t.handleHide)==null?void 0:n.call(t)})}_getHoverContext(){return{hide:()=>{this.hide()},onContentsChanged:()=>{this._contentHoverWidget.handleContentsChanged()},setMinimumDimensions:s=>{this._contentHoverWidget.setMinimumDimensions(s)},focus:()=>this.focus()}}showsOrWillShow(t){if(this._contentHoverWidget.isResizing)return!0;const r=this._findHoverAnchorCandidates(t);if(!(r.length>0))return this._startShowingOrUpdateHover(null,0,0,!1,t);const s=r[0];return this._startShowingOrUpdateHover(s,0,0,!1,t)}_findHoverAnchorCandidates(t){const n=[];for(const o of this._participants){if(!o.suggestHoverAnchor)continue;const s=o.suggestHoverAnchor(t);s&&n.push(s)}const r=t.target;switch(r.type){case 6:{n.push(new uxe(0,r.range,t.event.posx,t.event.posy));break}case 7:{const o=this._editor.getOption(59).typicalHalfwidthCharacterWidth/2;if(!(!r.detail.isAfterLines&&typeof r.detail.horizontalDistanceToText=="number"&&r.detail.horizontalDistanceToTexts.priority-o.priority),n}_onMouseLeave(t){const n=this._editor.getDomNode();(!n||!b3e(n,t.x,t.y))&&this.hide()}startShowingAtRange(t,n,r,o){this._startShowingOrUpdateHover(new uxe(0,t,void 0,void 0),n,r,o,null)}async updateHoverVerbosityLevel(t,n,r){var o;(o=this._renderedContentHover.value)==null||o.updateHoverVerbosityLevel(t,n,r)}focusedHoverPartIndex(){var t;return((t=this._renderedContentHover.value)==null?void 0:t.focusedHoverPartIndex)??-1}containsNode(t){return t?this._contentHoverWidget.getDomNode().contains(t):!1}focus(){var n;if(((n=this._renderedContentHover.value)==null?void 0:n.hoverPartsCount)===1){this.focusHoverPartWithIndex(0);return}this._contentHoverWidget.focus()}focusHoverPartWithIndex(t){var n;(n=this._renderedContentHover.value)==null||n.focusHoverPartWithIndex(t)}scrollUp(){this._contentHoverWidget.scrollUp()}scrollDown(){this._contentHoverWidget.scrollDown()}scrollLeft(){this._contentHoverWidget.scrollLeft()}scrollRight(){this._contentHoverWidget.scrollRight()}pageUp(){this._contentHoverWidget.pageUp()}pageDown(){this._contentHoverWidget.pageDown()}goToTop(){this._contentHoverWidget.goToTop()}goToBottom(){this._contentHoverWidget.goToBottom()}hide(){this._hoverOperation.cancel(),this._setCurrentResult(null)}getDomNode(){return this._contentHoverWidget.getDomNode()}get isColorPickerVisible(){var t;return((t=this._renderedContentHover.value)==null?void 0:t.isColorPickerVisible())??!1}get isVisibleFromKeyboard(){return this._contentHoverWidget.isVisibleFromKeyboard}get isVisible(){return this._contentHoverWidget.isVisible}get isFocused(){return this._contentHoverWidget.isFocused}get isResizing(){return this._contentHoverWidget.isResizing}get widget(){return this._contentHoverWidget}};RWe=wbo([tce(1,Yn),tce(2,Do),tce(3,pm),tce(4,U0)],RWe);function DRn(e){var n;const t=e.target;return!!t&&t.type===6&&((n=t.detail.injectedText)==null?void 0:n.options.attachedData)===hBn}var Obo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Oxe=function(e,t){return function(n,r){t(n,r,e)}},IWe,qD;let If=(qD=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._instantiationService=r,this._keybindingService=o,this._onHoverContentsChanged=this._register(new at),this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new xt,this._isMouseDown=!1,this._ignoreMouseEvents=!1,this._reactToEditorMouseMoveRunner=this._register(new Es(()=>{this._mouseMoveEvent&&this._reactToEditorMouseMove(this._mouseMoveEvent)},0)),this._register(n.onDidShowContextMenu(()=>{this.hideContentHover(),this._ignoreMouseEvents=!0})),this._register(n.onDidHideContextMenu(()=>{this._ignoreMouseEvents=!1})),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(69)&&(this._unhookListeners(),this._hookListeners())}))}static get(t){return t.getContribution(IWe.ID)}_hookListeners(){const t=this._editor.getOption(69);this._hoverSettings={enabled:t.enabled,sticky:t.sticky,hidingDelay:t.hidingDelay},t.enabled||this._cancelSchedulerAndHide(),this._listenersStore.add(this._editor.onMouseDown(n=>this._onEditorMouseDown(n))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n))),this._listenersStore.add(this._editor.onMouseLeave(n=>this._onEditorMouseLeave(n))),this._listenersStore.add(this._editor.onDidChangeModel(()=>this._cancelSchedulerAndHide())),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(n=>this._onEditorScrollChanged(n)))}_unhookListeners(){this._listenersStore.clear()}_cancelSchedulerAndHide(){this._cancelScheduler(),this.hideContentHover()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(t){this._ignoreMouseEvents||(t.scrollTopChanged||t.scrollLeftChanged)&&this.hideContentHover()}_onEditorMouseDown(t){this._ignoreMouseEvents||(this._isMouseDown=!0,this._shouldKeepHoverWidgetVisible(t))||this.hideContentHover()}_shouldKeepHoverWidgetVisible(t){return this._isMouseOnContentHoverWidget(t)||this._isContentWidgetResizing()||DRn(t)}_isMouseOnContentHoverWidget(t){return this._contentWidget?b3e(this._contentWidget.getDomNode(),t.event.posx,t.event.posy):!1}_onEditorMouseUp(){this._ignoreMouseEvents||(this._isMouseDown=!1)}_onEditorMouseLeave(t){this._ignoreMouseEvents||this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._shouldKeepHoverWidgetVisible(t))||this.hideContentHover()}_shouldKeepCurrentHover(t){const n=this._contentWidget;if(!n)return!1;const r=this._hoverSettings.sticky,o=(h,g)=>{const m=this._isMouseOnContentHoverWidget(h);return g&&m},s=h=>{const g=n.isColorPickerVisible,m=this._isMouseOnContentHoverWidget(h),v=g&&m,f=g&&this._isMouseDown;return v||f},a=(h,g)=>{var v;const m=h.event.browserEvent.view;return m?g&&n.containsNode(m.document.activeElement)&&!((v=m.getSelection())!=null&&v.isCollapsed):!1},l=n.isFocused,d=n.isResizing,u=this._hoverSettings.sticky&&n.isVisibleFromKeyboard;return this.shouldKeepOpenOnEditorMouseMoveOrLeave||l||d||u||o(t,r)||s(t)||a(t,r)}_onEditorMouseMove(t){if(this._ignoreMouseEvents)return;if(this._mouseMoveEvent=t,this._shouldKeepCurrentHover(t)){this._reactToEditorMouseMoveRunner.cancel();return}if(this._shouldRescheduleHoverComputation()){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);return}this._reactToEditorMouseMove(t)}_shouldRescheduleHoverComputation(){var r;const t=this._hoverSettings.hidingDelay;return(((r=this._contentWidget)==null?void 0:r.isVisible)??!1)&&this._hoverSettings.sticky&&t>0}_reactToEditorMouseMove(t){this._hoverSettings.enabled&&this._getOrCreateContentWidget().showsOrWillShow(t)||this.hideContentHover()}_onKeyDown(t){if(this._ignoreMouseEvents||!this._contentWidget)return;const n=this._isPotentialKeyboardShortcut(t),r=this._isModifierKeyPressed(t);n||r||this._contentWidget.isFocused&&t.keyCode===2||this.hideContentHover()}_isPotentialKeyboardShortcut(t){if(!this._editor.hasModel()||!this._contentWidget)return!1;const n=this._keybindingService.softDispatch(t,this._editor.getDomNode()),r=n.kind===1,o=n.kind===2&&(n.commandId===fBn||n.commandId===A3e||n.commandId===p3e)&&this._contentWidget.isVisible;return r||o}_isModifierKeyPressed(t){return t.keyCode===5||t.keyCode===6||t.keyCode===57||t.keyCode===4}hideContentHover(){var t;AV.dropDownVisible||(t=this._contentWidget)==null||t.hide()}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(RWe,this._editor),this._listenersStore.add(this._contentWidget.onContentsChanged(()=>this._onHoverContentsChanged.fire()))),this._contentWidget}showContentHover(t,n,r,o){this._getOrCreateContentWidget().startShowingAtRange(t,n,r,o)}_isContentWidgetResizing(){var t;return((t=this._contentWidget)==null?void 0:t.widget.isResizing)||!1}focusedHoverPartIndex(){return this._getOrCreateContentWidget().focusedHoverPartIndex()}updateHoverVerbosityLevel(t,n,r){this._getOrCreateContentWidget().updateHoverVerbosityLevel(t,n,r)}focus(){var t;(t=this._contentWidget)==null||t.focus()}scrollUp(){var t;(t=this._contentWidget)==null||t.scrollUp()}scrollDown(){var t;(t=this._contentWidget)==null||t.scrollDown()}scrollLeft(){var t;(t=this._contentWidget)==null||t.scrollLeft()}scrollRight(){var t;(t=this._contentWidget)==null||t.scrollRight()}pageUp(){var t;(t=this._contentWidget)==null||t.pageUp()}pageDown(){var t;(t=this._contentWidget)==null||t.pageDown()}goToTop(){var t;(t=this._contentWidget)==null||t.goToTop()}goToBottom(){var t;(t=this._contentWidget)==null||t.goToBottom()}get isColorPickerVisible(){var t;return(t=this._contentWidget)==null?void 0:t.isColorPickerVisible}get isHoverVisible(){var t;return(t=this._contentWidget)==null?void 0:t.isVisible}dispose(){var t;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(t=this._contentWidget)==null||t.dispose()}},IWe=qD,qD.ID="editor.contrib.contentHover",qD);If=IWe=Obo([Oxe(1,S2),Oxe(2,Yn),Oxe(3,Do)],If);const vat=class vat extends ft{constructor(t){super(),this._editor=t,this._register(t.onMouseDown(n=>this.onMouseDown(n)))}dispose(){super.dispose()}onMouseDown(t){const n=this._editor.getOption(168);if(n!=="click"&&n!=="clickAndHover"||!DRn(t))return;const r=this._editor.getContribution(If.ID);if(!r||r.isColorPickerVisible)return;const o=t.target.range;if(!o)return;const s=new Ee(o.startLineNumber,o.startColumn+1,o.endLineNumber,o.endColumn+1);r.showContentHover(s,1,1,!1)}};vat.ID="editor.contrib.colorContribution";let A0e=vat;var ybo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Cbo=function(e,t){return function(n,r){t(n,r,e)}};class _nt{constructor(t,n,r,o){this.owner=t,this.range=n,this.model=r,this.provider=o}static fromBaseColor(t,n){return new _nt(t,n.range,n.model,n.provider)}}class _bo extends ft{constructor(t,n,r,o){super();const s=t.getModel(),a=r.model;this.color=r.model.color,this.colorPicker=this._register(new jBn(n.fragment,a,t.getOption(163),o,"standalone")),this._register(a.onColorFlushed(l=>{this.color=l})),this._register(a.onDidChangeColor(l=>{HJ(s,a,l,r.range,r)})),this._register(t.onDidChangeModelContent(l=>{n.hide(),t.focus()})),HJ(s,a,this.color,r.range,r)}}let MWe=class{constructor(t,n){this._editor=t,this._themeService=n}async createColorHover(t,n,r){if(!this._editor.hasModel()||!vV.get(this._editor))return null;const s=await cBn(r,this._editor.getModel(),Er.None);let a=null,l=null;for(const m of s){const v=m.colorInfo;Ee.containsRange(v.range,t.range)&&(a=v,l=m.provider)}const d=a??t,u=l??n,h=!!a;return{colorHover:_nt.fromBaseColor(this,await WBn(this._editor.getModel(),d,u)),foundInEditor:h}}async updateEditorModel(t){if(!this._editor.hasModel())return;const n=t.model;let r=new Ee(t.range.startLineNumber,t.range.startColumn,t.range.endLineNumber,t.range.endColumn);this._color&&(await HJ(this._editor.getModel(),n,this._color,r,t),r=VBn(this._editor,r,n))}renderHoverParts(t,n){if(!(n.length===0||!this._editor.hasModel()))return this._setMinimumDimensions(t),this._renderedParts=new _bo(this._editor,t,n[0],this._themeService),this._renderedParts}_setMinimumDimensions(t){const n=this._editor.getOption(75)+8;t.setMinimumDimensions(new cs(302,n))}get _color(){var t;return(t=this._renderedParts)==null?void 0:t.color}};MWe=ybo([Cbo(1,Dl)],MWe);var Sbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},EX=function(e,t){return function(n,r){t(n,r,e)}},PWe;class Lbo{constructor(t,n){this.value=t,this.foundInEditor=n}}const Fyt=8,xbo=22;var KD;let FWe=(KD=class extends ft{constructor(t,n,r,o,s,a,l,d){var m;super(),this._editor=t,this._standaloneColorPickerVisible=n,this._standaloneColorPickerFocused=r,this._keybindingService=s,this._languageFeaturesService=a,this._editorWorkerService=l,this._hoverService=d,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new at),this.onResult=this._onResult.event,this._renderedHoverParts=this._register(new ts),this._renderedStatusBar=this._register(new ts),this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=o.createInstance(MWe,this._editor),this._position=(m=this._editor._getViewModel())==null?void 0:m.getPrimaryCursorState().modelState.position;const u=this._editor.getSelection(),h=u?{startLineNumber:u.startLineNumber,startColumn:u.startColumn,endLineNumber:u.endLineNumber,endColumn:u.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},g=this._register(uA(this._body));this._register(g.onDidBlur(v=>{this.hide()})),this._register(g.onDidFocus(v=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(v=>{var k;const f=(k=v.target.element)==null?void 0:k.classList;f&&f.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(v=>{this._render(v.value,v.foundInEditor)})),this._start(h),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return PWe.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const t=this._editor.getOption(69).above;return{position:this._position,secondaryPosition:this._position,preference:t?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(t){const n=await this._computeAsync(t);n&&this._onResult.fire(new Lbo(n.result,n.foundInEditor))}async _computeAsync(t){if(!this._editor.hasModel())return null;const n={range:t,color:{red:0,green:0,blue:0,alpha:1}},r=await this._standaloneColorPickerParticipant.createColorHover(n,new jJ(this._editorWorkerService),this._languageFeaturesService.colorProvider);return r?{result:r.colorHover,foundInEditor:r.foundInEditor}:null}_render(t,n){const r=document.createDocumentFragment();this._renderedStatusBar.value=this._register(new K1e(this._keybindingService,this._hoverService));const o={fragment:r,statusBar:this._renderedStatusBar.value,onContentsChanged:()=>{},setMinimumDimensions:()=>{},hide:()=>this.hide(),focus:()=>this.focus()};if(this._colorHover=t,this._renderedHoverParts.value=this._standaloneColorPickerParticipant.renderHoverParts(o,[t]),!this._renderedHoverParts.value){this._renderedStatusBar.clear(),this._renderedHoverParts.clear();return}const s=this._renderedHoverParts.value.colorPicker;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(r),s.layout();const a=s.body,l=a.saturationBox.domNode.clientWidth,d=a.domNode.clientWidth-l-xbo-Fyt,u=s.body.enterButton;u==null||u.onClicked(()=>{this.updateEditor(),this.hide()});const h=s.header,g=h.pickedColorNode;g.style.width=l+Fyt+"px";const m=h.originalColorNode;m.style.width=d+"px";const v=s.header.closeButton;v==null||v.onClicked(()=>{this.hide()}),n&&(u&&(u.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(t.range)),this._editor.layoutContentWidget(this)}},PWe=KD,KD.ID="editor.contrib.standaloneColorPickerWidget",KD);FWe=PWe=Sbo([EX(3,Yn),EX(4,Do),EX(5,Nn),EX(6,S1),EX(7,pm)],FWe);var Ebo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Nyt=function(e,t){return function(n,r){t(n,r,e)}},NWe,JD;let BR=(JD=class extends ft{constructor(t,n,r){super(),this._editor=t,this._instantiationService=r,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=$e.standaloneColorPickerVisible.bindTo(n),this._standaloneColorPickerFocused=$e.standaloneColorPickerFocused.bindTo(n)}showOrFocus(){var t;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(t=this._standaloneColorPickerWidget)==null||t.focus():this._standaloneColorPickerWidget=this._instantiationService.createInstance(FWe,this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused))}hide(){var t;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(t=this._standaloneColorPickerWidget)==null||t.hide(),this._editor.focus()}insertColor(){var t;(t=this._standaloneColorPickerWidget)==null||t.updateEditor(),this.hide()}static get(t){return t.getContribution(NWe.ID)}},NWe=JD,JD.ID="editor.contrib.standaloneColorPickerController",JD);BR=NWe=Ebo([Nyt(1,Qi),Nyt(2,Yn)],BR);class Tbo extends Op{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{..._t(889,"Show or Focus Standalone Color Picker"),mnemonicTitle:U(888,"&&Show or Focus Standalone Color Picker")},precondition:void 0,menu:[{id:Wn.CommandPalette}],metadata:{description:_t(890,"Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.")}})}runEditorCommand(t,n){var r;(r=BR.get(n))==null||r.showOrFocus()}}class Qbo extends Bn{constructor(){super({id:"editor.action.hideColorPicker",label:_t(891,"Hide the Color Picker"),precondition:$e.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100},metadata:{description:_t(892,"Hide the standalone color picker.")}})}run(t,n){var r;(r=BR.get(n))==null||r.hide()}}class Dbo extends Bn{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:_t(893,"Insert Color with Standalone Color Picker"),precondition:$e.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100},metadata:{description:_t(894,"Insert hex/rgb/hsl colors with the focused standalone color picker.")}})}run(t,n){var r;(r=BR.get(n))==null||r.insertColor()}}un(Qbo);un(Dbo);ys(Tbo);mo(A0e.ID,A0e,2);mo(BR.ID,BR,1);mo(vV.ID,vV,1);dH(Hje);BI.register(e0e);uo.registerCommand("_executeDocumentColorProvider",function(e,...t){const[n]=t;if(!(n instanceof vi))throw Gv();const{model:r,colorProviderRegistry:o,defaultColorDecoratorsEnablement:s}=uBn(e,n);return Xtt(new Hvo,o,r,Er.None,s)});uo.registerCommand("_executeColorPresentationProvider",function(e,...t){const[n,r]=t;if(!r)return;const{uri:o,range:s}=r;if(!(o instanceof vi)||!Array.isArray(n)||n.length!==4||!Ee.isIRange(s))throw Gv();const{model:a,colorProviderRegistry:l,defaultColorDecoratorsEnablement:d}=uBn(e,o),[u,h,g,m]=n;return Xtt(new $vo({range:s,color:{red:u,green:h,blue:g,alpha:m}}),l,a,Er.None,d)});class w9{constructor(t,n,r){this.languageConfigurationService=r,this._selection=t,this._insertSpace=n,this._usedEndToken=null}static _haystackHasNeedleAtOffset(t,n,r){if(r<0)return!1;const o=n.length,s=t.length;if(r+o>s)return!1;for(let a=0;a=65&&l<=90&&l+32===d)&&!(d>=65&&d<=90&&d+32===l))return!1}return!0}_createOperationsForBlockComment(t,n,r,o,s,a){const l=t.startLineNumber,d=t.startColumn,u=t.endLineNumber,h=t.endColumn,g=s.getLineContent(l),m=s.getLineContent(u);let v=g.lastIndexOf(n,d-1+n.length),f=m.indexOf(r,h-1-r.length);if(v!==-1&&f!==-1)if(l===u)g.substring(v+n.length,f).indexOf(r)>=0&&(v=-1,f=-1);else{const A=g.substring(v+n.length),p=m.substring(0,f);(A.indexOf(r)>=0||p.indexOf(r)>=0)&&(v=-1,f=-1)}let k;v!==-1&&f!==-1?(o&&v+n.length0&&m.charCodeAt(f-1)===32&&(r=" "+r,f-=1),k=w9._createRemoveBlockCommentOperations(new Ee(l,v+n.length+1,u,f+1),n,r)):(k=w9._createAddBlockCommentOperations(t,n,r,this._insertSpace),this._usedEndToken=k.length===1?r:null);for(const A of k)a.addTrackedEditOperation(A.range,A.text)}static _createRemoveBlockCommentOperations(t,n,r){const o=[];return Ee.isEmpty(t)?o.push($l.delete(new Ee(t.startLineNumber,t.startColumn-n.length,t.endLineNumber,t.endColumn+r.length))):(o.push($l.delete(new Ee(t.startLineNumber,t.startColumn-n.length,t.startLineNumber,t.startColumn))),o.push($l.delete(new Ee(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn+r.length)))),o}static _createAddBlockCommentOperations(t,n,r,o){const s=[];return Ee.isEmpty(t)?s.push($l.replace(new Ee(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn),n+" "+r)):(s.push($l.insert(new it(t.startLineNumber,t.startColumn),n+(o?" ":""))),s.push($l.insert(new it(t.endLineNumber,t.endColumn),(o?" ":"")+r))),s}getEditOperations(t,n){const r=this._selection.startLineNumber,o=this._selection.startColumn;t.tokenization.tokenizeIfCheap(r);const s=t.getLanguageIdAtPosition(r,o),a=this.languageConfigurationService.getLanguageConfiguration(s).comments;!a||!a.blockCommentStartToken||!a.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,a.blockCommentStartToken,a.blockCommentEndToken,this._insertSpace,t,n)}computeCursorState(t,n){const r=n.getInverseEditOperations();if(r.length===2){const o=r[0],s=r[1];return new Qn(o.range.endLineNumber,o.range.endColumn,s.range.startLineNumber,s.range.startColumn)}else{const o=r[0].range,s=this._usedEndToken?-this._usedEndToken.length-1:0;return new Qn(o.endLineNumber,o.endColumn+s,o.endLineNumber,o.endColumn+s)}}}class W_{constructor(t,n,r,o,s,a,l){this.languageConfigurationService=t,this._selection=n,this._indentSize=r,this._type=o,this._insertSpace=s,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=a,this._ignoreFirstLine=l||!1}static _gatherPreflightCommentStrings(t,n,r,o){t.tokenization.tokenizeIfCheap(n);const s=t.getLanguageIdAtPosition(n,1),a=o.getLanguageConfiguration(s).comments,l=a?a.lineCommentToken:null;if(!l)return null;const d=[];for(let u=0,h=r-n+1;us?n[d].commentStrOffset=a-1:n[d].commentStrOffset=a}}}class Snt extends Bn{constructor(t,n){super(n),this._type=t}run(t,n){const r=t.get(kl);if(!n.hasModel())return;const o=n.getModel(),s=[],a=o.getOptions(),l=n.getOption(29),d=n.getSelections().map((h,g)=>({selection:h,index:g,ignoreFirstLine:!1}));d.sort((h,g)=>Ee.compareRangesUsingStarts(h.selection,g.selection));let u=d[0];for(let h=1;h=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},w7=function(e,t){return function(n,r){t(n,r,e)}},UWe,eB;let qJ=(eB=class{static get(t){return t.getContribution(UWe.ID)}constructor(t,n,r,o,s,a,l,d){this._contextMenuService=n,this._contextViewService=r,this._contextKeyService=o,this._keybindingService=s,this._menuService=a,this._configurationService=l,this._workspaceContextService=d,this._toDispose=new xt,this._contextMenuIsBeingShownCount=0,this._editor=t,this._toDispose.add(this._editor.onContextMenu(u=>this._onContextMenu(u))),this._toDispose.add(this._editor.onMouseWheel(u=>{if(this._contextMenuIsBeingShownCount>0){const h=this._contextViewService.getContextViewElement(),g=u.srcElement;g.shadowRoot&&y6(h)===g.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(u=>{this._editor.getOption(30)&&u.keyCode===58&&(u.preventDefault(),u.stopPropagation(),this.showContextMenu())}))}_onContextMenu(t){if(!this._editor.hasModel())return;if(!this._editor.getOption(30)){this._editor.focus(),t.target.position&&!this._editor.getSelection().containsPosition(t.target.position)&&this._editor.setPosition(t.target.position);return}if(t.target.type===12||t.target.type===6&&t.target.detail.injectedText)return;if(t.event.preventDefault(),t.event.stopPropagation(),t.target.type===11)return this._showScrollbarContextMenu(t.event);if(t.target.type!==6&&t.target.type!==7&&t.target.type!==1)return;if(this._editor.focus(),t.target.position){let r=!1;for(const o of this._editor.getSelections())if(o.containsPosition(t.target.position)){r=!0;break}r||this._editor.setPosition(t.target.position)}let n=null;t.target.type!==1&&(n=t.event),this.showContextMenu(n)}showContextMenu(t){if(!this._editor.getOption(30)||!this._editor.hasModel())return;const n=this._getMenuActions(this._editor.getModel(),this._editor.contextMenuId);n.length>0&&this._doShowContextMenu(n,t)}_getMenuActions(t,n){const r=[],o=this._menuService.getMenuActions(n,this._contextKeyService,{arg:t.uri});for(const s of o){const[,a]=s;let l=0;for(const d of a)if(d instanceof uD){const u=this._getMenuActions(t,d.item.submenu);u.length>0&&(r.push(new JW(d.id,d.label,u)),l++)}else r.push(d),l++;l&&r.push(new pd)}return r.length&&r.pop(),r}_doShowContextMenu(t,n=null){if(!this._editor.hasModel())return;let r=n;if(!r){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const s=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),a=Kl(this._editor.getDomNode()),l=a.left+s.left,d=a.top+s.top+s.height;r={x:l,y:d}}const o=this._editor.getOption(144)&&!cA;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:o?this._editor.getOverflowWidgetsDomNode()??this._editor.getDomNode():void 0,getAnchor:()=>r,getActions:()=>t,getActionViewItem:s=>{const a=this._keybindingFor(s);if(a)return new gV(s,s,{label:!0,keybinding:a.getLabel(),isMenu:!0});const l=s;return typeof l.getActionViewItem=="function"?l.getActionViewItem():new gV(s,s,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:s=>this._keybindingFor(s),onHide:s=>{this._contextMenuIsBeingShownCount--}})}_showScrollbarContextMenu(t){if(!this._editor.hasModel()||V2o(this._workspaceContextService.getWorkspace()))return;const n=this._editor.getOption(81);let r=0;const o=u=>({id:`menu-action-${++r}`,label:u.label,tooltip:"",class:void 0,enabled:typeof u.enabled>"u"?!0:u.enabled,checked:u.checked,run:u.run}),s=(u,h)=>new JW(`menu-action-${++r}`,u,h,void 0),a=(u,h,g,m,v)=>{if(!h)return o({label:u,enabled:h,run:()=>{}});const f=A=>()=>{this._configurationService.updateValue(g,A)},k=[];for(const A of v)k.push(o({label:A.label,checked:m===A.value,run:f(A.value)}));return s(u,k)},l=[];l.push(o({label:U(901,"Minimap"),checked:n.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!n.enabled)}})),l.push(new pd),l.push(o({label:U(902,"Render Characters"),enabled:n.enabled,checked:n.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!n.renderCharacters)}})),l.push(a(U(903,"Vertical size"),n.enabled,"editor.minimap.size",n.size,[{label:U(904,"Proportional"),value:"proportional"},{label:U(905,"Fill"),value:"fill"},{label:U(906,"Fit"),value:"fit"}])),l.push(a(U(907,"Slider"),n.enabled,"editor.minimap.showSlider",n.showSlider,[{label:U(908,"Mouse Over"),value:"mouseover"},{label:U(909,"Always"),value:"always"}]));const d=this._editor.getOption(144)&&!cA;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:d?this._editor.getDomNode():void 0,getAnchor:()=>t,getActions:()=>l,onHide:u=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(t){return this._keybindingService.lookupKeybinding(t.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}},UWe=eB,eB.ID="editor.contrib.contextmenu",eB);qJ=UWe=Pbo([w7(1,S2),w7(2,wL),w7(3,Qi),w7(4,Do),w7(5,wA),w7(6,ar),w7(7,H8)],qJ);class Fbo extends Bn{constructor(){super({id:"editor.action.showContextMenu",label:_t(910,"Show Editor Context Menu"),precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:1092,weight:100}})}run(t,n){var r;(r=qJ.get(n))==null||r.showContextMenu()}}mo(qJ.ID,qJ,2);un(Fbo);class yxe{constructor(t){this.selections=t}equals(t){const n=this.selections.length,r=t.selections.length;if(n!==r)return!1;for(let o=0;o{this._undoStack=[],this._redoStack=[]})),this._register(t.onDidChangeModelContent(n=>{this._undoStack=[],this._redoStack=[]})),this._register(t.onDidChangeCursorSelection(n=>{if(this._isCursorUndoRedo||!n.oldSelections||n.oldModelVersionId!==n.modelVersionId)return;const r=new yxe(n.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(r)||(this._undoStack.push(new Cxe(r,t.getScrollTop(),t.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new Cxe(new yxe(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new Cxe(new yxe(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(t){this._isCursorUndoRedo=!0,this._editor.setSelections(t.cursorState.selections),this._editor.setScrollPosition({scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),this._isCursorUndoRedo=!1}};tAe.ID="editor.contrib.cursorUndoRedoController";let OV=tAe;class Nbo extends Bn{constructor(){super({id:"cursorUndo",label:_t(911,"Cursor Undo"),precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:2099,weight:100}})}run(t,n,r){var o;(o=OV.get(n))==null||o.cursorUndo()}}class Ubo extends Bn{constructor(){super({id:"cursorRedo",label:_t(912,"Cursor Redo"),precondition:void 0})}run(t,n,r){var o;(o=OV.get(n))==null||o.cursorRedo()}}mo(OV.ID,OV,0);un(Nbo);un(Ubo);class jbo{constructor(t,n,r){this.selection=t,this.targetPosition=n,this.copy=r,this.targetSelection=null}getEditOperations(t,n){const r=t.getValueInRange(this.selection);if(this.copy||n.addEditOperation(this.selection,null),n.addEditOperation(new Ee(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),r),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new Qn(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new Qn(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumberthis._onEditorMouseDown(n))),this._register(this._editor.onMouseUp(n=>this._onEditorMouseUp(n))),this._register(this._editor.onMouseDrag(n=>this._onEditorMouseDrag(n))),this._register(this._editor.onMouseDrop(n=>this._onEditorMouseDrop(n))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(n=>this.onEditorKeyDown(n))),this._register(this._editor.onKeyUp(n=>this.onEditorKeyUp(n))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(t){!this._editor.getOption(42)||this._editor.getOption(28)||(BP(t)&&(this._modifierPressed=!0),this._mouseDown&&BP(t)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(t){!this._editor.getOption(42)||this._editor.getOption(28)||(BP(t)&&(this._modifierPressed=!1),this._mouseDown&&t.keyCode===b5.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(t){this._mouseDown=!0}_onEditorMouseUp(t){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(t){const n=t.target;if(this._dragSelection===null){const o=(this._editor.getSelections()||[]).filter(s=>n.position&&s.containsPosition(n.position));if(o.length===1)this._dragSelection=o[0];else return}BP(t.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),n.position&&(this._dragSelection.containsPosition(n.position)?this._removeDecoration():this.showAt(n.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(t){if(t.target&&(this._hitContent(t.target)||this._hitMargin(t.target))&&t.target.position){const n=new it(t.target.position.lineNumber,t.target.position.column);if(this._dragSelection===null){let r=null;if(t.event.shiftKey){const o=this._editor.getSelection();if(o){const{selectionStartLineNumber:s,selectionStartColumn:a}=o;r=[new Qn(s,a,n.lineNumber,n.column)]}}else r=(this._editor.getSelections()||[]).map(o=>o.containsPosition(n)?new Qn(n.lineNumber,n.column,n.lineNumber,n.column):o);this._editor.setSelections(r||[],"mouse",3)}else(!this._dragSelection.containsPosition(n)||(BP(t.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(n)||this._dragSelection.getStartPosition().equals(n)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(b5.ID,new jbo(this._dragSelection,n,BP(t.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(t){this._dndDecorationIds.set([{range:new Ee(t.lineNumber,t.column,t.lineNumber,t.column),options:b5._DECORATION_OPTIONS}]),this._editor.revealPosition(t,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(t){return t.type===6||t.type===7}_hitMargin(t){return t.type===2||t.type===3||t.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}};b5.ID="editor.contrib.dragAndDrop",b5.TRIGGER_KEY_VALUE=Tr?6:5,b5._DECORATION_OPTIONS=Gi.register({description:"dnd-target",className:"dnd-target"});let p0e=b5;mo(p0e.ID,p0e,2);const Wbo="editor.action.pasteAs";mo($8.ID,$8,0);dH(Tje);On(new class extends $d{constructor(){super({id:GDn,precondition:Wtt,kbOpts:{weight:100,primary:2137}})}runEditorCommand(e,t){var n;return(n=$8.get(t))==null?void 0:n.changePasteType()}});On(new class extends $d{constructor(){super({id:"editor.hidePasteWidget",precondition:Wtt,kbOpts:{weight:100,primary:9}})}runEditorCommand(e,t){var n;(n=$8.get(t))==null||n.clearWidgets()}});var tB;un((tB=class extends Bn{constructor(){super({id:Wbo,label:_t(915,"Paste As..."),precondition:$e.writable,metadata:{description:"Paste as",args:[{name:"args",schema:tB.argsSchema}]},canTriggerInlineEdits:!0})}run(t,n,r){var s;let o;return r&&("kind"in r?o={only:new El(r.kind)}:"preferences"in r&&(o={preferences:r.preferences.map(a=>new El(a))})),(s=$8.get(n))==null?void 0:s.pasteAs(o)}},tB.argsSchema={oneOf:[{type:"object",required:["kind"],properties:{kind:{type:"string",description:U(913,`The kind of the paste edit to try pasting with. If there are multiple edits for this kind, the editor will show a picker. If there are no edits of this kind, the editor will show an error message.`)}}},{type:"object",required:["preferences"],properties:{preferences:{type:"array",description:U(914,`List of preferred paste edit kind to try applying. The first edit matching the preferences will be applied.`),items:{type:"string"}}}}]},tB));un(class extends Bn{constructor(){super({id:"editor.action.pasteAsText",label:_t(916,"Paste as Text"),precondition:$e.writable,canTriggerInlineEdits:!0})}run(e,t){var n;return(n=$8.get(t))==null?void 0:n.pasteAs({providerId:bR.id})}});class Vbo{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(t){if(t&&this._dragOperations.has(t)){const n=this._dragOperations.get(t);return this._dragOperations.delete(t),n}}}class Uyt{constructor(t){this.identifier=t}}const BRn=Cr("treeViewsDndService");zr(BRn,Vbo,1);var zbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},nce=function(e,t){return function(n,r){t(n,r,e)}},b_;const Hbo="editor.dropIntoEditor.preferences",RRn="editor.changeDropType",Lnt=new yn("dropWidgetVisible",!1,U(934,"Whether the drop widget is showing"));var nB;let yV=(nB=class extends ft{static get(t){return t.getContribution(b_.ID)}constructor(t,n,r,o,s){super(),this._configService=r,this._languageFeaturesService=o,this._treeViewsDragAndDropService=s,this.treeItemsTransfer=yje.getInstance(),this._dropProgressManager=this._register(n.createInstance(W1e,"dropIntoEditor",t)),this._postDropWidgetManager=this._register(n.createInstance(X1e,"dropIntoEditor",t,Lnt,{id:RRn,label:U(935,"Show drop options...")},()=>b_._configureDefaultAction?[b_._configureDefaultAction]:[])),this._register(t.onDropIntoEditor(a=>this.onDropIntoEditor(t,a.position,a.event)))}clearWidgets(){this._postDropWidgetManager.clear()}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(t,n,r){var s;if(!r.dataTransfer||!t.hasModel())return;(s=b_._currentDropOperation)==null||s.cancel(),t.focus(),t.setPosition(n);const o=Fd(async a=>{const l=new xt,d=l.add(new z8(t,1,void 0,a));try{const u=await this.extractDataTransferData(r);if(u.size===0||d.token.isCancellationRequested)return;const h=t.getModel();if(!h)return;const g=this._languageFeaturesService.documentDropEditProvider.ordered(h).filter(v=>v.dropMimeTypes?v.dropMimeTypes.some(f=>u.matches(f)):!0),m=l.add(await this.getDropEdits(g,h,n,u,d.token));if(d.token.isCancellationRequested)return;if(m.edits.length){const v=this.getInitialActiveEditIndex(h,m.edits),f=t.getOption(43).showDropSelector==="afterDrop";await this._postDropWidgetManager.applyEditAndShowIfNeeded([Ee.fromPositions(n)],{activeEditIndex:v,allEdits:m.edits},f,async k=>k,a)}}finally{l.dispose(),b_._currentDropOperation===o&&(b_._currentDropOperation=void 0)}});this._dropProgressManager.showWhile(n,U(936,"Running drop handlers. Click to cancel"),o,{cancel:()=>o.cancel()}),b_._currentDropOperation=o}async getDropEdits(t,n,r,o,s){const a=new xt,l=await YW(Promise.all(t.map(async u=>{try{const h=await u.provideDocumentDropEdits(n,r,o,s);return h&&a.add(h),h==null?void 0:h.edits.map(g=>({...g,providerId:u.id}))}catch(h){C2(h)||console.error(h),console.error(h)}})),s),d=P3(l??[]).flat();return{edits:VDn(d),dispose:()=>a.dispose()}}getInitialActiveEditIndex(t,n){const r=this._configService.getValue(Hbo,{resource:t.uri});for(const o of Array.isArray(r)?r:[]){const s=new El(o),a=n.findIndex(l=>l.kind&&s.contains(l.kind));if(a>=0)return a}return 0}async extractDataTransferData(t){if(!t.dataTransfer)return new xDn;const n=DDn(t.dataTransfer);if(this.treeItemsTransfer.hasData(Uyt.prototype)){const r=this.treeItemsTransfer.getData(Uyt.prototype);if(Array.isArray(r))for(const o of r){const s=await this._treeViewsDragAndDropService.removeDragOperationTransfer(o.identifier);if(s)for(const[a,l]of s)n.replace(a,l)}}return n}},b_=nB,nB.ID="editor.contrib.dropIntoEditorController",nB);yV=b_=zbo([nce(1,Yn),nce(2,ar),nce(3,Nn),nce(4,BRn)],yV);mo(yV.ID,yV,2);dH(Eje);On(new class extends $d{constructor(){super({id:RRn,precondition:Lnt,kbOpts:{weight:100,primary:2137}})}runEditorCommand(e,t,n){var r;(r=yV.get(t))==null||r.changeDropType()}});On(new class extends $d{constructor(){super({id:"editor.hideDropWidget",precondition:Lnt,kbOpts:{weight:100,primary:9}})}runEditorCommand(e,t,n){var r;(r=yV.get(t))==null||r.clearWidgets()}});const nAe=class nAe extends Y0{constructor(t,n,r){super(),this._hideSoon=this._register(new Es(()=>this._hide(),2e3)),this._isVisible=!1,this._editor=t,this._state=n,this._keybindingService=r,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const o={inputActiveOptionBorder:en(Die),inputActiveOptionForeground:en(Bie),inputActiveOptionBackground:en(eH)},s={groupId:"find-options-widget"};this.caseSensitive=this._register(new SBn({appendTitle:this._keybindingLabelFor(ga.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase,hoverLifecycleOptions:s,...o})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new LBn({appendTitle:this._keybindingLabelFor(ga.ToggleWholeWordCommand),isChecked:this._state.wholeWord,hoverLifecycleOptions:s,...o})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new xBn({appendTitle:this._keybindingLabelFor(ga.ToggleRegexCommand),isChecked:this._state.isRegex,hoverLifecycleOptions:s,...o})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(a=>{let l=!1;a.isRegex&&(this.regex.checked=this._state.isRegex,l=!0),a.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,l=!0),a.matchCase&&(this.caseSensitive.checked=this._state.matchCase,l=!0),!this._state.isRevealed&&l&&this._revealTemporarily()})),this._register(wt(this._domNode,rn.MOUSE_LEAVE,a=>this._onMouseLeave())),this._register(wt(this._domNode,"mouseover",a=>this._onMouseOver()))}_keybindingLabelFor(t){const n=this._keybindingService.lookupKeybinding(t);return n?` (${n.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return nAe.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}};nAe.ID="editor.contrib.findOptionsWidget";let jWe=nAe;function ice(e,t){return e===1?!0:e===2?!1:t}class $bo extends ft{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return ice(this._isRegexOverride,this._isRegex)}get wholeWord(){return ice(this._wholeWordOverride,this._wholeWord)}get matchCase(){return ice(this._matchCaseOverride,this._matchCase)}get preserveCase(){return ice(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new at),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(t,n,r){const o={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let s=!1;n===0&&(t=0),t>n&&(t=n),this._matchesPosition!==t&&(this._matchesPosition=t,o.matchesPosition=!0,s=!0),this._matchesCount!==n&&(this._matchesCount=n,o.matchesCount=!0,s=!0),typeof r<"u"&&(Ee.equalsRange(this._currentMatch,r)||(this._currentMatch=r,o.currentMatch=!0,s=!0)),s&&this._onFindReplaceStateChange.fire(o)}change(t,n,r=!0){var h;const o={moveCursor:n,updateHistory:r,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let s=!1;const a=this.isRegex,l=this.wholeWord,d=this.matchCase,u=this.preserveCase;typeof t.searchString<"u"&&this._searchString!==t.searchString&&(this._searchString=t.searchString,o.searchString=!0,s=!0),typeof t.replaceString<"u"&&this._replaceString!==t.replaceString&&(this._replaceString=t.replaceString,o.replaceString=!0,s=!0),typeof t.isRevealed<"u"&&this._isRevealed!==t.isRevealed&&(this._isRevealed=t.isRevealed,o.isRevealed=!0,s=!0),typeof t.isReplaceRevealed<"u"&&this._isReplaceRevealed!==t.isReplaceRevealed&&(this._isReplaceRevealed=t.isReplaceRevealed,o.isReplaceRevealed=!0,s=!0),typeof t.isRegex<"u"&&(this._isRegex=t.isRegex),typeof t.wholeWord<"u"&&(this._wholeWord=t.wholeWord),typeof t.matchCase<"u"&&(this._matchCase=t.matchCase),typeof t.preserveCase<"u"&&(this._preserveCase=t.preserveCase),typeof t.searchScope<"u"&&((h=t.searchScope)!=null&&h.every(g=>{var m;return(m=this._searchScope)==null?void 0:m.some(v=>!Ee.equalsRange(v,g))})||(this._searchScope=t.searchScope,o.searchScope=!0,s=!0)),typeof t.loop<"u"&&this._loop!==t.loop&&(this._loop=t.loop,o.loop=!0,s=!0),typeof t.isSearching<"u"&&this._isSearching!==t.isSearching&&(this._isSearching=t.isSearching,o.isSearching=!0,s=!0),typeof t.filters<"u"&&(this._filters?this._filters.update(t.filters):this._filters=t.filters,o.filters=!0,s=!0),this._isRegexOverride=typeof t.isRegexOverride<"u"?t.isRegexOverride:0,this._wholeWordOverride=typeof t.wholeWordOverride<"u"?t.wholeWordOverride:0,this._matchCaseOverride=typeof t.matchCaseOverride<"u"?t.matchCaseOverride:0,this._preserveCaseOverride=typeof t.preserveCaseOverride<"u"?t.preserveCaseOverride:0,a!==this.isRegex&&(s=!0,o.isRegex=!0),l!==this.wholeWord&&(s=!0,o.wholeWord=!0),d!==this.matchCase&&(s=!0,o.matchCase=!0),u!==this.preserveCase&&(s=!0,o.preserveCase=!0),s&&this._onFindReplaceStateChange.fire(o)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition=b9}}var Xbo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Gbo=function(e,t){return function(n,r){t(n,r,e)}},Wx,t6;let WWe=(t6=class{static getOrCreate(t){return Wx._instance||(Wx._instance=new Wx(t)),Wx._instance}constructor(t){this.storageService=t,this.inMemoryValues=new Set,this._onDidChangeEmitter=new at,this.onDidChange=this._onDidChangeEmitter.event,this.load()}delete(t){const n=this.inMemoryValues.delete(t);return this.save(),n}add(t){return this.inMemoryValues.add(t),this.save(),this}has(t){return this.inMemoryValues.has(t)}forEach(t,n){return this.load(),this.inMemoryValues.forEach(t)}replace(t){this.inMemoryValues=new Set(t),this.save()}load(){let t;const n=this.storageService.get(Wx.FIND_HISTORY_KEY,1);if(n)try{t=JSON.parse(n)}catch{}this.inMemoryValues=new Set(t||[])}save(){const t=[];return this.inMemoryValues.forEach(n=>t.push(n)),new Promise(n=>{this.storageService.store(Wx.FIND_HISTORY_KEY,JSON.stringify(t),1,0),this._onDidChangeEmitter.fire(t),n()})}},Wx=t6,t6.FIND_HISTORY_KEY="workbench.find.history",t6._instance=null,t6);WWe=Wx=Xbo([Gbo(0,Bg)],WWe);var Ybo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Zbo=function(e,t){return function(n,r){t(n,r,e)}},Vx,n6;let VWe=(n6=class{static getOrCreate(t){return Vx._instance||(Vx._instance=new Vx(t)),Vx._instance}constructor(t){this.storageService=t,this.inMemoryValues=new Set,this._onDidChangeEmitter=new at,this.onDidChange=this._onDidChangeEmitter.event,this.load()}delete(t){const n=this.inMemoryValues.delete(t);return this.save(),n}add(t){return this.inMemoryValues.add(t),this.save(),this}has(t){return this.inMemoryValues.has(t)}forEach(t,n){return this.load(),this.inMemoryValues.forEach(t)}replace(t){this.inMemoryValues=new Set(t),this.save()}load(){let t;const n=this.storageService.get(Vx.FIND_HISTORY_KEY,1);if(n)try{t=JSON.parse(n)}catch{}this.inMemoryValues=new Set(t||[])}save(){const t=[];return this.inMemoryValues.forEach(n=>t.push(n)),new Promise(n=>{this.storageService.store(Vx.FIND_HISTORY_KEY,JSON.stringify(t),1,0),this._onDidChangeEmitter.fire(t),n()})}},Vx=n6,n6.FIND_HISTORY_KEY="workbench.replace.history",n6._instance=null,n6);VWe=Vx=Ybo([Zbo(0,Bg)],VWe);var IRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},y4=function(e,t){return function(n,r){t(n,r,e)}},zWe;const qbo=524288;function HWe(e,t="single",n=!1){if(!e.hasModel())return null;const r=e.getSelection();if(t==="single"&&r.startLineNumber===r.endLineNumber||t==="multiple"){if(r.isEmpty()){const o=e.getConfiguredWordAtPosition(r.getStartPosition());if(o&&n===!1)return o.word}else if(e.getModel().getValueLengthInRange(r)this._onStateChanged(l))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const l=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),l&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(50).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(t){this.saveQueryState(t),t.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),t.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(t){t.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),t.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),t.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),t.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!O3e.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){let t=this._editor.getSelections();t=t.map(n=>(n.endColumn===1&&n.endLineNumber>n.startLineNumber&&(n=n.setEndPosition(n.endLineNumber-1,this._editor.getModel().getLineMaxColumn(n.endLineNumber-1))),n.isEmpty()?null:n)).filter(n=>!!n),t.length&&this._state.change({searchScope:t},!0)}}setSearchString(t){this._state.isRegex&&(t=M0(t)),this._state.change({searchString:t},!1)}highlightFindOptions(t=!1){}async _start(t,n){if(this.disposeModel(),!this._editor.hasModel())return;const r={...n,isRevealed:!0};if(t.seedSearchStringFromSelection==="single"){const o=HWe(this._editor,t.seedSearchStringFromSelection,t.seedSearchStringFromNonEmptySelection);o&&(this._state.isRegex?r.searchString=M0(o):r.searchString=o)}else if(t.seedSearchStringFromSelection==="multiple"&&!t.updateSearchScope){const o=HWe(this._editor,t.seedSearchStringFromSelection);o&&(r.searchString=o)}if(!r.searchString&&t.seedSearchStringFromGlobalClipboard){const o=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;o&&(r.searchString=o)}if(t.forceRevealReplace||r.isReplaceRevealed?r.isReplaceRevealed=!0:this._findWidgetVisible.get()||(r.isReplaceRevealed=!1),t.updateSearchScope){const o=this._editor.getSelections();o.some(s=>!s.isEmpty())&&(r.searchScope=o)}r.loop=t.loop,this._state.change(r,!1),this._model||(this._model=new QZ(this._editor,this._state))}start(t,n){return this._start(t,n)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(t){return this._model?(this._model.moveToMatch(t),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){var t;return this._model?(t=this._editor.getModel())!=null&&t.isTooLargeForHeapOperation()?(this._notificationService.warn(U(940,"The file is too large to perform a replace all operation.")),!1):(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}async getGlobalBufferTerm(){return this._editor.getOption(50).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(t){this._editor.getOption(50).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(t)}},zWe=iB,iB.ID="editor.contrib.findController",iB);w1=zWe=IRn([y4(1,Qi),y4(2,Bg),y4(3,U0),y4(4,ic),y4(5,pm)],w1);let $We=class extends w1{constructor(t,n,r,o,s,a,l,d){super(t,r,a,l,s,d),this._contextViewService=n,this._keybindingService=o,this._widget=null,this._findOptionsWidget=null,this._findWidgetSearchHistory=WWe.getOrCreate(a),this._replaceWidgetHistory=VWe.getOrCreate(a)}async _start(t,n){this._widget||this._createFindWidget();const r=this._editor.getSelection();let o=!1;switch(this._editor.getOption(50).autoFindInSelection){case"always":o=!0;break;case"never":o=!1;break;case"multiline":{o=!!r&&r.startLineNumber!==r.endLineNumber;break}}t.updateSearchScope=t.updateSearchScope||o,await super._start(t,n),this._widget&&(t.shouldFocus===2?this._widget.focusReplaceInput():t.shouldFocus===1&&this._widget.focusFindInput())}highlightFindOptions(t=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!t?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new tWe(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._hoverService,this._findWidgetSearchHistory,this._replaceWidgetHistory)),this._findOptionsWidget=this._register(new jWe(this._editor,this._state,this._keybindingService))}saveViewState(){var t;return(t=this._widget)==null?void 0:t.getViewState()}restoreViewState(t){var n;(n=this._widget)==null||n.setViewState(t)}};$We=IRn([y4(1,wL),y4(2,Qi),y4(3,Do),y4(4,ic),y4(5,Bg),y4(6,U0),y4(7,pm)],$We);const Kbo=Ibe(new Rbe({id:ga.StartFindAction,label:_t(947,"Find"),precondition:Ft.or($e.focus,Ft.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:Wn.MenubarEditMenu,group:"3_find",title:U(941,"&&Find"),order:1}}));Kbo.addImplementation(0,(e,t,n)=>{const r=w1.get(t);return r?r.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getOption(50).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(50).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:t.getOption(50).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(50).loop}):!1});const Jbo={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},isRegex:{type:"boolean"},matchWholeWord:{type:"boolean"},isCaseSensitive:{type:"boolean"},preserveCase:{type:"boolean"},findInSelection:{type:"boolean"}}}}]};class e3o extends Bn{constructor(){super({id:ga.StartFindWithArgs,label:_t(948,"Find with Arguments"),precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:Jbo})}async run(t,n,r){const o=w1.get(n);if(o){const s=r?{searchString:r.searchString,replaceString:r.replaceString,isReplaceRevealed:r.replaceString!==void 0,isRegex:r.isRegex,wholeWord:r.matchWholeWord,matchCase:r.isCaseSensitive,preserveCase:r.preserveCase}:{};await o.start({forceRevealReplace:!1,seedSearchStringFromSelection:o.getState().searchString.length===0&&n.getOption(50).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:n.getOption(50).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:(r==null?void 0:r.findInSelection)||!1,loop:n.getOption(50).loop},s),o.setGlobalBufferTerm(o.getState().searchString)}}}class t3o extends Bn{constructor(){super({id:ga.StartFindWithSelection,label:_t(949,"Find with Selection"),precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(t,n){const r=w1.get(n);r&&(await r.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:n.getOption(50).loop}),r.setGlobalBufferTerm(r.getState().searchString))}}async function MRn(e,t){const n=w1.get(e);if(!n)return;const r=()=>(t?n.moveToNextMatch():n.moveToPrevMatch())?(n.editor.pushUndoStop(),!0):!1;r()||(await n.start({forceRevealReplace:!1,seedSearchStringFromSelection:n.getState().searchString.length===0&&e.getOption(50).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(50).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(50).loop}),r())}const n3o=Ibe(new Rbe({id:ga.NextMatchFindAction,label:_t(950,"Find Next"),precondition:void 0,kbOpts:[{kbExpr:$e.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:Ft.and($e.focus,O3e),primary:3,weight:100}]}));n3o.addImplementation(0,async(e,t,n)=>MRn(t,!0));const i3o=Ibe(new Rbe({id:ga.PreviousMatchFindAction,label:_t(951,"Find Previous"),precondition:void 0,kbOpts:[{kbExpr:$e.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:Ft.and($e.focus,O3e),primary:1027,weight:100}]}));i3o.addImplementation(0,async(e,t,n)=>MRn(t,!1));class r3o extends Bn{constructor(){super({id:ga.GoToMatchFindAction,label:_t(952,"Go to Match..."),precondition:CL}),this._highlightDecorations=[]}run(t,n,r){const o=w1.get(n);if(!o)return;const s=o.getState().matchesCount;if(s<1){t.get(ic).notify({severity:iH.Warning,message:U(942,"No matches. Try searching for something else.")});return}const a=t.get(Rf),l=new xt,d=l.add(a.createInputBox());d.placeholder=U(943,"Type a number to go to a specific match (between 1 and {0})",s);const u=g=>{const m=parseInt(g);if(isNaN(m))return;const v=o.getState().matchesCount;if(m>0&&m<=v)return m-1;if(m<0&&m>=-v)return v+m},h=g=>{const m=u(g);if(typeof m=="number"){d.validationMessage=void 0,o.goToMatch(m);const v=o.getState().currentMatch;v&&this.addDecorations(n,v)}else d.validationMessage=U(944,"Please type a number between 1 and {0}",o.getState().matchesCount),this.clearDecorations(n)};l.add(d.onDidChangeValue(g=>{h(g)})),l.add(d.onDidAccept(()=>{const g=u(d.value);typeof g=="number"?(o.goToMatch(g),d.hide()):d.validationMessage=U(945,"Please type a number between 1 and {0}",o.getState().matchesCount)})),l.add(d.onDidHide(()=>{this.clearDecorations(n),l.dispose()})),d.show()}clearDecorations(t){t.changeDecorations(n=>{this._highlightDecorations=n.deltaDecorations(this._highlightDecorations,[])})}addDecorations(t,n){t.changeDecorations(r=>{this._highlightDecorations=r.deltaDecorations(this._highlightDecorations,[{range:n,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:n,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:zl(oTn),position:r2.Full}}}])})}}class PRn extends Bn{async run(t,n){const r=w1.get(n);if(!r)return;const o=HWe(n,"single",!1);o&&r.setSearchString(o),this._run(r)||(await r.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:n.getOption(50).loop}),this._run(r))}}class o3o extends PRn{constructor(){super({id:ga.NextSelectionMatchFindAction,label:_t(953,"Find Next Selection"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:2109,weight:100}})}_run(t){return t.moveToNextMatch()}}class s3o extends PRn{constructor(){super({id:ga.PreviousSelectionMatchFindAction,label:_t(954,"Find Previous Selection"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:3133,weight:100}})}_run(t){return t.moveToPrevMatch()}}const a3o=Ibe(new Rbe({id:ga.StartFindReplaceAction,label:_t(955,"Replace"),precondition:Ft.or($e.focus,Ft.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:Wn.MenubarEditMenu,group:"3_find",title:U(946,"&&Replace"),order:2}}));a3o.addImplementation(0,(e,t,n)=>{if(!t.hasModel()||t.getOption(104))return!1;const r=w1.get(t);if(!r)return!1;const o=t.getSelection(),s=r.isFindInputFocused(),a=!o.isEmpty()&&o.startLineNumber===o.endLineNumber&&t.getOption(50).seedSearchStringFromSelection!=="never"&&!s,l=s||a?2:1;return r.start({forceRevealReplace:!0,seedSearchStringFromSelection:a?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(50).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:t.getOption(50).seedSearchStringFromSelection!=="never",shouldFocus:l,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(50).loop})});mo(w1.ID,$We,0);un(e3o);un(t3o);un(r3o);un(o3o);un(s3o);const N3=$d.bindToContribution(w1.get);On(new N3({id:ga.CloseFindWidgetCommand,precondition:CL,handler:e=>e.closeFindWidget(),kbOpts:{weight:105,kbExpr:Ft.and($e.focus,Ft.not("isComposing")),primary:9,secondary:[1033]}}));On(new N3({id:ga.ToggleCaseSensitiveCommand,precondition:void 0,handler:e=>e.toggleCaseSensitive(),kbOpts:{weight:105,kbExpr:$e.focus,primary:zle.primary,mac:zle.mac,win:zle.win,linux:zle.linux}}));On(new N3({id:ga.ToggleWholeWordCommand,precondition:void 0,handler:e=>e.toggleWholeWords(),kbOpts:{weight:105,kbExpr:$e.focus,primary:Hle.primary,mac:Hle.mac,win:Hle.win,linux:Hle.linux}}));On(new N3({id:ga.ToggleRegexCommand,precondition:void 0,handler:e=>e.toggleRegex(),kbOpts:{weight:105,kbExpr:$e.focus,primary:$le.primary,mac:$le.mac,win:$le.win,linux:$le.linux}}));On(new N3({id:ga.ToggleSearchScopeCommand,precondition:void 0,handler:e=>e.toggleSearchScope(),kbOpts:{weight:105,kbExpr:$e.focus,primary:Xle.primary,mac:Xle.mac,win:Xle.win,linux:Xle.linux}}));On(new N3({id:ga.TogglePreserveCaseCommand,precondition:void 0,handler:e=>e.togglePreserveCase(),kbOpts:{weight:105,kbExpr:$e.focus,primary:Gle.primary,mac:Gle.mac,win:Gle.win,linux:Gle.linux}}));On(new N3({id:ga.ReplaceOneAction,precondition:CL,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:$e.focus,primary:3094}}));On(new N3({id:ga.ReplaceOneAction,precondition:CL,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:Ft.and($e.focus,qtt),primary:3}}));On(new N3({id:ga.ReplaceAllAction,precondition:CL,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:$e.focus,primary:2563}}));On(new N3({id:ga.ReplaceAllAction,precondition:CL,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:Ft.and($e.focus,qtt),primary:void 0,mac:{primary:2051}}}));On(new N3({id:ga.SelectAllMatchesAction,precondition:CL,handler:e=>e.selectAllMatches(),kbOpts:{weight:105,kbExpr:$e.focus,primary:515}}));const l3o={0:" ",1:"u",2:"r"},jyt=65535,Bb=16777215,Wyt=4278190080;class _xe{constructor(t){const n=Math.ceil(t/32);this._states=new Uint32Array(n)}get(t){const n=t/32|0,r=t%32;return(this._states[n]&1<jyt)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=t,this._endIndexes=n,this._collapseStates=new _xe(t.length),this._userDefinedStates=new _xe(t.length),this._recoveredStates=new _xe(t.length),this._types=r,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const t=[],n=(r,o)=>{const s=t[t.length-1];return this.getStartLineNumber(s)<=r&&this.getEndLineNumber(s)>=o};for(let r=0,o=this._startIndexes.length;rBb||a>Bb)throw new Error("startLineNumber or endLineNumber must not exceed "+Bb);for(;t.length>0&&!n(s,a);)t.pop();const l=t.length>0?t[t.length-1]:-1;t.push(r),this._startIndexes[r]=s+((l&255)<<24),this._endIndexes[r]=a+((l&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(t){return this._startIndexes[t]&Bb}getEndLineNumber(t){return this._endIndexes[t]&Bb}getType(t){return this._types?this._types[t]:void 0}hasTypes(){return!!this._types}isCollapsed(t){return this._collapseStates.get(t)}setCollapsed(t,n){this._collapseStates.set(t,n)}isUserDefined(t){return this._userDefinedStates.get(t)}setUserDefined(t,n){return this._userDefinedStates.set(t,n)}isRecovered(t){return this._recoveredStates.get(t)}setRecovered(t,n){return this._recoveredStates.set(t,n)}getSource(t){return this.isUserDefined(t)?1:this.isRecovered(t)?2:0}setSource(t,n){n===1?(this.setUserDefined(t,!0),this.setRecovered(t,!1)):n===2?(this.setUserDefined(t,!1),this.setRecovered(t,!0)):(this.setUserDefined(t,!1),this.setRecovered(t,!1))}setCollapsedAllOfType(t,n){let r=!1;if(this._types)for(let o=0;o>>24)+((this._endIndexes[t]&Wyt)>>>16);return n===jyt?-1:n}contains(t,n){return this.getStartLineNumber(t)<=n&&this.getEndLineNumber(t)>=n}findIndex(t){let n=0,r=this._startIndexes.length;if(r===0)return-1;for(;n=0){if(this.getEndLineNumber(n)>=t)return n;for(n=this.getParentIndex(n);n!==-1;){if(this.contains(n,t))return n;n=this.getParentIndex(n)}}return-1}toString(){const t=[];for(let n=0;nArray.isArray(A)?b=>bb=g.startLineNumber))h&&h.startLineNumber===g.startLineNumber?(g.source===1?A=g:(A=h,A.isCollapsed=g.isCollapsed&&(h.endLineNumber===g.endLineNumber||!(o!=null&&o.startsInside(h.startLineNumber+1,h.endLineNumber+1))),A.source=0),h=a(++d)):(A=g,g.isCollapsed&&g.source===0&&(A.source=2)),g=l(++u);else{let p=u,b=g;for(;;){if(!b||b.startLineNumber>h.endLineNumber){A=h;break}if(b.source===1&&b.endLineNumber>h.endLineNumber)break;b=l(++p)}h=a(++d)}if(A){for(;v&&v.endLineNumberA.startLineNumber&&A.startLineNumber>f&&A.endLineNumber<=r&&(!v||v.endLineNumber>=A.endLineNumber)&&(k.push(A),f=A.startLineNumber,v&&m.push(v),v=A)}}return k}}class c3o{constructor(t,n){this.ranges=t,this.index=n}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(t){return t.startLineNumber<=this.startLineNumber&&t.endLineNumber>=this.endLineNumber}containsLine(t){return this.startLineNumber<=t&&t<=this.endLineNumber}}class d3o{get regions(){return this._regions}get textModel(){return this._textModel}constructor(t,n){this._updateEventEmitter=new at,this.onDidChange=this._updateEventEmitter.event,this._textModel=t,this._decorationProvider=n,this._regions=new Nk(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(t){if(!t.length)return;t=t.sort((r,o)=>r.regionIndex-o.regionIndex);const n={};this._decorationProvider.changeDecorations(r=>{let o=0,s=-1,a=-1;const l=d=>{for(;oa&&(a=u),o++}};for(const d of t){const u=d.regionIndex,h=this._editorDecorationIds[u];if(h&&!n[h]){n[h]=!0,l(u);const g=!this._regions.isCollapsed(u);this._regions.setCollapsed(u,g),s=Math.max(s,this._regions.getEndLineNumber(u))}}l(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:t})}removeManualRanges(t){const n=new Array,r=o=>{for(const s of t)if(!(s.startLineNumber>o.endLineNumber||o.startLineNumber>s.endLineNumber))return!0;return!1};for(let o=0;or&&(r=l)}this._decorationProvider.changeDecorations(o=>this._editorDecorationIds=o.deltaDecorations(this._editorDecorationIds,n)),this._regions=t,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(t){const n=[];for(let r=0,o=this._regions.length;r=a.endLineNumber||a.startLineNumber<1||a.endLineNumber>r)continue;const l=this._getLinesChecksum(a.startLineNumber+1,a.endLineNumber);n.push({startLineNumber:a.startLineNumber,endLineNumber:a.endLineNumber,isCollapsed:a.isCollapsed,source:a.source,checksum:l})}return n.length>0?n:void 0}applyMemento(t){if(!Array.isArray(t))return;const n=[],r=this._textModel.getLineCount();for(const s of t){if(s.startLineNumber>=s.endLineNumber||s.startLineNumber<1||s.endLineNumber>r)continue;const a=this._getLinesChecksum(s.startLineNumber+1,s.endLineNumber);(!s.checksum||a===s.checksum)&&n.push({startLineNumber:s.startLineNumber,endLineNumber:s.endLineNumber,type:void 0,isCollapsed:s.isCollapsed??!0,source:s.source??0})}const o=Nk.sanitizeAndMerge(this._regions,n,r);this.updatePost(Nk.fromFoldRanges(o))}_getLinesChecksum(t,n){return Lie(this._textModel.getLineContent(t)+this._textModel.getLineContent(n))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(t,n){const r=[];if(this._regions){let o=this._regions.findRange(t),s=1;for(;o>=0;){const a=this._regions.toRegion(o);(!n||n(a,s))&&r.push(a),s++,o=a.parentIndex}}return r}getRegionAtLine(t){if(this._regions){const n=this._regions.findRange(t);if(n>=0)return this._regions.toRegion(n)}return null}getRegionsInside(t,n){const r=[],o=t?t.regionIndex+1:0,s=t?t.endLineNumber:Number.MAX_VALUE;if(n&&n.length===2){const a=[];for(let l=o,d=this._regions.length;l0&&!u.containedBy(a[a.length-1]);)a.pop();a.push(u),n(u,a.length)&&r.push(u)}else break}}else for(let a=o,l=this._regions.length;a1){const l=e.getRegionsInside(s,(d,u)=>d.isCollapsed!==a&&u0)for(const s of r){const a=e.getRegionAtLine(s);if(a&&(a.isCollapsed!==t&&o.push(a),n>1)){const l=e.getRegionsInside(a,(d,u)=>d.isCollapsed!==t&&ua.isCollapsed!==t&&ll.isCollapsed!==t&&d<=n);o.push(...a)}e.toggleCollapseState(o)}function u3o(e,t,n){const r=[];for(const o of n){const s=e.getAllRegionsAtLine(o,a=>a.isCollapsed!==t);s.length>0&&r.push(s[0])}e.toggleCollapseState(r)}function h3o(e,t,n,r){const o=(a,l)=>l===t&&a.isCollapsed!==n&&!r.some(d=>a.containsLine(d)),s=e.getRegionsInside(null,o);e.toggleCollapseState(s)}function NRn(e,t,n){const r=[];for(const a of n){const l=e.getAllRegionsAtLine(a,void 0);l.length>0&&r.push(l[0])}const o=a=>r.every(l=>!l.containedBy(a)&&!a.containedBy(l))&&a.isCollapsed!==t,s=e.getRegionsInside(null,o);e.toggleCollapseState(s)}function Ent(e,t,n){const r=e.textModel,o=e.regions,s=[];for(let a=o.length-1;a>=0;a--)if(n!==o.isCollapsed(a)){const l=o.getStartLineNumber(a);t.test(r.getLineContent(l))&&s.push(o.toRegion(a))}e.toggleCollapseState(s)}function Tnt(e,t,n){const r=e.regions,o=[];for(let s=r.length-1;s>=0;s--)n!==r.isCollapsed(s)&&t===r.getType(s)&&o.push(r.toRegion(s));e.toggleCollapseState(o)}function f3o(e,t){let n=null;const r=t.getRegionAtLine(e);if(r!==null&&(n=r.startLineNumber,e===n)){const o=r.parentIndex;o!==-1?n=t.regions.getStartLineNumber(o):n=null}return n}function g3o(e,t){let n=t.getRegionAtLine(e);if(n!==null&&n.startLineNumber===e){if(e!==n.startLineNumber)return n.startLineNumber;{const r=n.parentIndex;let o=0;for(r!==-1&&(o=t.regions.getStartLineNumber(n.parentIndex));n!==null;)if(n.regionIndex>0){if(n=t.regions.toRegion(n.regionIndex-1),n.startLineNumber<=o)return null;if(n.parentIndex===r)return n.startLineNumber}else return null}}else if(t.regions.length>0)for(n=t.regions.toRegion(t.regions.length-1);n!==null;){if(n.startLineNumber0?n=t.regions.toRegion(n.regionIndex-1):n=null}return null}function m3o(e,t){let n=t.getRegionAtLine(e);if(n!==null&&n.startLineNumber===e){const r=n.parentIndex;let o=0;if(r!==-1)o=t.regions.getEndLineNumber(n.parentIndex);else{if(t.regions.length===0)return null;o=t.regions.getEndLineNumber(t.regions.length-1)}for(;n!==null;)if(n.regionIndex=o)return null;if(n.parentIndex===r)return n.startLineNumber}else return null}else if(t.regions.length>0)for(n=t.regions.toRegion(0);n!==null;){if(n.startLineNumber>e)return n.startLineNumber;n.regionIndexthis.updateHiddenRanges()),this._hiddenRanges=[],t.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(t){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=t.changes.some(n=>n.range.endLineNumber!==n.range.startLineNumber||x6(n.text)[0]!==0))}updateHiddenRanges(){let t=!1;const n=[];let r=0,o=0,s=Number.MAX_VALUE,a=-1;const l=this._foldingModel.regions;for(;r0}isHidden(t){return Vyt(this._hiddenRanges,t)!==null}adjustSelections(t){let n=!1;const r=this._foldingModel.textModel;let o=null;const s=a=>((!o||!v3o(a,o))&&(o=Vyt(this._hiddenRanges,a)),o?o.startLineNumber-1:null);for(let a=0,l=t.length;a0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function v3o(e,t){return e>=t.startLineNumber&&e<=t.endLineNumber}function Vyt(e,t){const n=dJ(e,r=>t=0&&e[n].endLineNumber>=t?e[n]:null}const A3o=5e3,p3o="indent";class Qnt{constructor(t,n,r){this.editorModel=t,this.languageConfigurationService=n,this.foldingRangesLimit=r,this.id=p3o}dispose(){}compute(t){const n=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,r=n&&!!n.offSide,o=n&&n.markers;return Promise.resolve(O3o(this.editorModel,r,o,this.foldingRangesLimit))}}let b3o=class{constructor(t){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=t}insertFirst(t,n,r){if(t>Bb||n>Bb)return;const o=this._length;this._startIndexes[o]=t,this._endIndexes[o]=n,this._length++,r<1e3&&(this._indentOccurrences[r]=(this._indentOccurrences[r]||0)+1)}toIndentRanges(t){const n=this._foldingRangesLimit.limit;if(this._length<=n){this._foldingRangesLimit.update(this._length,!1);const r=new Uint32Array(this._length),o=new Uint32Array(this._length);for(let s=this._length-1,a=0;s>=0;s--,a++)r[a]=this._startIndexes[s],o[a]=this._endIndexes[s];return new Nk(r,o)}else{this._foldingRangesLimit.update(this._length,n);let r=0,o=this._indentOccurrences.length;for(let d=0;dn){o=d;break}r+=u}}const s=t.getOptions().tabSize,a=new Uint32Array(n),l=new Uint32Array(n);for(let d=this._length-1,u=0;d>=0;d--){const h=this._startIndexes[d],g=t.getLineContent(h),m=n3e(g,s);(m{}};function O3o(e,t,n,r=w3o){const o=e.getOptions().tabSize,s=new b3o(r);let a;n&&(a=new RegExp(`(${n.start.source})|(?:${n.end.source})`));const l=[],d=e.getLineCount()+1;l.push({indent:-1,endAbove:d,line:d});for(let u=e.getLineCount();u>0;u--){const h=e.getLineContent(u),g=n3e(h,o);let m=l[l.length-1];if(g===-1){t&&(m.endAbove=u);continue}let v;if(a&&(v=h.match(a)))if(v[1]){let f=l.length-1;for(;f>0&&l[f].indent!==-2;)f--;if(f>0){l.length=f+1,m=l[f],s.insertFirst(u,m.line,g),m.line=u,m.indent=g,m.endAbove=u;continue}}else{l.push({indent:-2,endAbove:u,line:u});continue}if(m.indent>g){do l.pop(),m=l[l.length-1];while(m.indent>g);const f=m.endAbove-1;f-u>=1&&s.insertFirst(u,f,g)}m.indent===g?m.endAbove=u:l.push({indent:g,endAbove:u,line:u})}return s.toIndentRanges(e)}const y3o=Ve("editor.foldBackground",{light:Zi(d9,.3),dark:Zi(d9,.3),hcDark:null,hcLight:null},U(1002,"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0);Ve("editor.foldPlaceholderForeground",{light:"#808080",dark:"#808080",hcDark:null,hcLight:null},U(1003,"Color of the collapsed text after the first line of a folded range."));Ve("editorGutter.foldingControlForeground",$me,U(1004,"Color of the folding control in the editor gutter."));const b0e=Da("folding-expanded",zt.chevronDown,U(1005,"Icon for expanded ranges in the editor glyph margin.")),w0e=Da("folding-collapsed",zt.chevronRight,U(1006,"Icon for collapsed ranges in the editor glyph margin.")),zyt=Da("folding-manual-collapsed",w0e,U(1007,"Icon for manually collapsed ranges in the editor glyph margin.")),Hyt=Da("folding-manual-expanded",b0e,U(1008,"Icon for manually expanded ranges in the editor glyph margin.")),Sxe={color:zl(y3o),position:1},RP=U(1009,"Click to expand the range."),rce=U(1010,"Click to collapse the range."),Gc=class Gc{constructor(t){this.editor=t,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(t,n,r){return n?Gc.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?t?this.showFoldingHighlights?Gc.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:Gc.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:Gc.NO_CONTROLS_EXPANDED_RANGE_DECORATION:t?r?this.showFoldingHighlights?Gc.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:Gc.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?Gc.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:Gc.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?r?Gc.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:Gc.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:r?Gc.MANUALLY_EXPANDED_VISUAL_DECORATION:Gc.EXPANDED_VISUAL_DECORATION}changeDecorations(t){return this.editor.changeDecorations(t)}removeDecorations(t){this.editor.removeDecorations(t)}};Gc.COLLAPSED_VISUAL_DECORATION=Gi.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:RP,firstLineDecorationClassName:fi.asClassName(w0e)}),Gc.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Gi.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:Sxe,isWholeLine:!0,linesDecorationsTooltip:RP,firstLineDecorationClassName:fi.asClassName(w0e)}),Gc.MANUALLY_COLLAPSED_VISUAL_DECORATION=Gi.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:RP,firstLineDecorationClassName:fi.asClassName(zyt)}),Gc.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Gi.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:Sxe,isWholeLine:!0,linesDecorationsTooltip:RP,firstLineDecorationClassName:fi.asClassName(zyt)}),Gc.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=Gi.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:RP}),Gc.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=Gi.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:Sxe,isWholeLine:!0,linesDecorationsTooltip:RP}),Gc.EXPANDED_VISUAL_DECORATION=Gi.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+fi.asClassName(b0e),linesDecorationsTooltip:rce}),Gc.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Gi.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:fi.asClassName(b0e),linesDecorationsTooltip:rce}),Gc.MANUALLY_EXPANDED_VISUAL_DECORATION=Gi.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+fi.asClassName(Hyt),linesDecorationsTooltip:rce}),Gc.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Gi.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:fi.asClassName(Hyt),linesDecorationsTooltip:rce}),Gc.NO_CONTROLS_EXPANDED_RANGE_DECORATION=Gi.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),Gc.HIDDEN_RANGE_DECORATION=Gi.register({description:"folding-hidden-range-decoration",stickiness:1});let XWe=Gc;const C3o={},_3o="syntax";class Dnt{constructor(t,n,r,o,s){this.editorModel=t,this.providers=n,this.handleFoldingRangesChange=r,this.foldingRangesLimit=o,this.fallbackRangeProvider=s,this.id=_3o,this.disposables=new xt,s&&this.disposables.add(s);for(const a of n)typeof a.onDidChange=="function"&&this.disposables.add(a.onDidChange(r))}compute(t){return S3o(this.providers,this.editorModel,t).then(n=>{var r;return this.editorModel.isDisposed()?null:n?x3o(n,this.foldingRangesLimit):((r=this.fallbackRangeProvider)==null?void 0:r.compute(t))??null})}dispose(){this.disposables.dispose()}}function S3o(e,t,n){let r=null;const o=e.map((s,a)=>Promise.resolve(s.provideFoldingRanges(t,C3o,n)).then(l=>{if(!n.isCancellationRequested&&Array.isArray(l)){Array.isArray(r)||(r=[]);const d=t.getLineCount();for(const u of l)u.start>0&&u.end>u.start&&u.end<=d&&r.push({start:u.start,end:u.end,rank:a,kind:u.kind})}},Nc));return Promise.all(o).then(s=>r)}class L3o{constructor(t){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=t}add(t,n,r,o){if(t>Bb||n>Bb)return;const s=this._length;this._startIndexes[s]=t,this._endIndexes[s]=n,this._nestingLevels[s]=o,this._types[s]=r,this._length++,o<30&&(this._nestingLevelCounts[o]=(this._nestingLevelCounts[o]||0)+1)}toIndentRanges(){const t=this._foldingRangesLimit.limit;if(this._length<=t){this._foldingRangesLimit.update(this._length,!1);const n=new Uint32Array(this._length),r=new Uint32Array(this._length);for(let o=0;ot){r=l;break}n+=d}}const o=new Uint32Array(t),s=new Uint32Array(t),a=[];for(let l=0,d=0;l{let d=a.start-l.start;return d===0&&(d=a.rank-l.rank),d}),r=new L3o(t);let o;const s=[];for(const a of n)if(!o)o=a,r.add(a.start,a.end,a.kind&&a.kind.value,s.length);else if(a.start>o.start)if(a.end<=o.end)s.push(o),o=a,r.add(a.start,a.end,a.kind&&a.kind.value,s.length);else{if(a.start>o.end){do o=s.pop();while(o&&a.start>o.end);o&&s.push(o),o=a}r.add(a.start,a.end,a.kind&&a.kind.value,s.length)}return r.toIndentRanges()}var E3o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},TX=function(e,t){return function(n,r){t(n,r,e)}},J7;const Ah=new yn("foldingEnabled",!1);var rB;let R6=(rB=class extends ft{static get(t){return t.getContribution(J7.ID)}static getFoldingRangeProviders(t,n){var o;const r=t.foldingRangeProvider.ordered(n);return((o=J7._foldingRangeSelector)==null?void 0:o.call(J7,r,n))??r}constructor(t,n,r,o,s,a){super(),this.contextKeyService=n,this.languageConfigurationService=r,this.languageFeaturesService=a,this.localToDispose=this._register(new xt),this.editor=t,this._foldingLimitReporter=this._register(new URn(t));const l=this.editor.getOptions();this._isEnabled=l.get(52),this._useFoldingProviders=l.get(53)!=="indentation",this._unfoldOnClickAfterEndOfLine=l.get(57),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=l.get(55),this.updateDebounceInfo=s.for(a.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new XWe(t),this.foldingDecorationProvider.showFoldingControls=l.get(126),this.foldingDecorationProvider.showFoldingHighlights=l.get(54),this.foldingEnabled=Ah.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(d=>{if(d.hasChanged(52)&&(this._isEnabled=this.editor.getOptions().get(52),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),d.hasChanged(56)&&this.onModelChanged(),d.hasChanged(126)||d.hasChanged(54)){const u=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=u.get(126),this.foldingDecorationProvider.showFoldingHighlights=u.get(54),this.triggerFoldingModelChanged()}d.hasChanged(53)&&(this._useFoldingProviders=this.editor.getOptions().get(53)!=="indentation",this.onFoldingStrategyChanged()),d.hasChanged(57)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(57)),d.hasChanged(55)&&(this._foldingImportsByDefault=this.editor.getOptions().get(55))})),this.onModelChanged()}saveViewState(){const t=this.editor.getModel();if(!t||!this._isEnabled||t.isTooLargeForTokenization())return{};if(this.foldingModel){const n=this.foldingModel.getMemento(),r=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:n,lineCount:t.getLineCount(),provider:r,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(t){const n=this.editor.getModel();if(!(!n||!this._isEnabled||n.isTooLargeForTokenization()||!this.hiddenRangeModel)&&t&&(this._currentModelHasFoldedImports=!!t.foldedImports,t.collapsedRegions&&t.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(t.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const t=this.editor.getModel();!this._isEnabled||!t||t.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new d3o(t,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new k3o(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(n=>this.onHiddenRangesChanges(n))),this.updateScheduler=new dA(this.updateDebounceInfo.get(t)),this.localToDispose.add(this.updateScheduler),this.cursorChangedScheduler=new Es(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(n=>this.onDidChangeModelContent(n))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(n=>this.onEditorMouseDown(n))),this.localToDispose.add(this.editor.onMouseUp(n=>this.onEditorMouseUp(n))),this.localToDispose.add({dispose:()=>{var n,r;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(n=this.updateScheduler)==null||n.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(r=this.rangeProvider)==null||r.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var t;(t=this.rangeProvider)==null||t.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(t){if(this.rangeProvider)return this.rangeProvider;const n=new Qnt(t,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=n,this._useFoldingProviders&&this.foldingModel){const r=J7.getFoldingRangeProviders(this.languageFeaturesService,t);r.length>0&&(this.rangeProvider=new Dnt(t,r,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,n))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(t){var n;(n=this.hiddenRangeModel)==null||n.notifyChangeModelContent(t),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const t=this.foldingModel;if(!t)return null;const n=new vu,r=this.getRangeProvider(t.textModel),o=this.foldingRegionPromise=Fd(s=>r.compute(s));return o.then(s=>{if(s&&o===this.foldingRegionPromise){let a;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const u=s.setCollapsedAllOfType(LI.Imports.value,!0);u&&(a=O3.capture(this.editor),this._currentModelHasFoldedImports=u)}const l=this.editor.getSelections();t.update(s,T3o(l)),a==null||a.restore(this.editor);const d=this.updateDebounceInfo.update(t.textModel,n.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=d)}return t})}).then(void 0,t=>(zi(t),null)))}onHiddenRangesChanges(t){if(this.hiddenRangeModel&&t.length&&!this._restoringViewState){const n=this.editor.getSelections();n&&this.hiddenRangeModel.adjustSelections(n)&&this.editor.setSelections(n)}this.editor.setHiddenAreas(t,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const t=this.getFoldingModel();t&&t.then(n=>{if(n){const r=this.editor.getSelections();if(r&&r.length>0){const o=[];for(const s of r){const a=s.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(a)&&o.push(...n.getAllRegionsAtLine(a,l=>l.isCollapsed&&a>l.startLineNumber))}o.length&&(n.toggleCollapseState(o),this.reveal(r[0].getPosition()))}}}).then(void 0,zi)}onEditorMouseDown(t){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!t.target||!t.target.range||!t.event.leftButton&&!t.event.middleButton)return;const n=t.target.range;let r=!1;switch(t.target.type){case 4:{const o=t.target.detail,s=t.target.element.offsetLeft;if(o.offsetX-s<4)return;r=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!t.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const o=this.editor.getModel();if(o&&n.startColumn===o.getLineMaxColumn(n.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:n.startLineNumber,iconClicked:r}}onEditorMouseUp(t){const n=this.foldingModel;if(!n||!this.mouseDownInfo||!t.target)return;const r=this.mouseDownInfo.lineNumber,o=this.mouseDownInfo.iconClicked,s=t.target.range;if(!s||s.startLineNumber!==r)return;if(o){if(t.target.type!==4)return}else{const l=this.editor.getModel();if(!l||s.startColumn!==l.getLineMaxColumn(r))return}const a=n.getRegionAtLine(r);if(a&&a.startLineNumber===r){const l=a.isCollapsed;if(o||l){const d=t.event.altKey;let u=[];if(d){const h=m=>!m.containedBy(a)&&!a.containedBy(m),g=n.getRegionsInside(null,h);for(const m of g)m.isCollapsed&&u.push(m);u.length===0&&(u=g)}else{const h=t.event.middleButton||t.event.shiftKey;if(h)for(const g of n.getRegionsInside(a))g.isCollapsed===l&&u.push(g);(l||!h||u.length===0)&&u.push(a)}n.toggleCollapseState(u),this.reveal({lineNumber:r,column:1})}}}reveal(t){this.editor.revealPositionInCenterIfOutsideViewport(t,0)}},J7=rB,rB.ID="editor.contrib.folding",rB);R6=J7=E3o([TX(1,Qi),TX(2,kl),TX(3,ic),TX(4,CA),TX(5,Nn)],R6);class URn extends ft{constructor(t){super(),this.editor=t,this._onDidChange=this._register(new at),this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(56)}update(t,n){(t!==this._computed||n!==this._limited)&&(this._computed=t,this._limited=n,this._onDidChange.fire())}}class af extends Bn{runEditorCommand(t,n,r){const o=t.get(kl),s=R6.get(n);if(!s)return;const a=s.getFoldingModel();if(a)return this.reportTelemetry(t,n),a.then(l=>{if(l){this.invoke(s,l,n,r,o);const d=n.getSelection();d&&s.reveal(d.getStartPosition())}})}getSelectedLines(t){const n=t.getSelections();return n?n.map(r=>r.startLineNumber):[]}getLineNumbers(t,n){return t&&t.selectionLines?t.selectionLines.map(r=>r+1):this.getSelectedLines(n)}run(t,n){}}function T3o(e){return!e||e.length===0?{startsInside:()=>!1}:{startsInside(t,n){for(const r of e){const o=r.startLineNumber;if(o>=t&&o<=n)return!0}return!1}}}function jRn(e){if(!Sf(e)){if(!Pd(e))return!1;const t=e;if(!Sf(t.levels)&&!Q8(t.levels)||!Sf(t.direction)&&!fu(t.direction)||!Sf(t.selectionLines)&&(!Array.isArray(t.selectionLines)||!t.selectionLines.every(Q8)))return!1}return!0}class Q3o extends af{constructor(){super({id:"editor.unfold",label:_t(982,"Unfold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},metadata:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:`Property-value pairs that can be passed through this argument: @@ -2324,7 +2324,7 @@ The first edit matching the preferences will be applied.`),items:{type:"string"} * 'direction': If 'up', folds given number of levels up otherwise folds down. * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used. If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead. - `,constraint:jRn,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(t,n,r,o){const s=this.getLineNumbers(o,r),a=o&&o.levels,l=o&&o.direction;typeof a!="number"&&typeof l!="string"?u3o(n,!0,s):l==="up"?FRn(n,!0,a||1,s):uH(n,!0,a||1,s)}}class R3o extends af{constructor(){super({id:"editor.toggleFold",label:_t(985,"Toggle Fold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2090),weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);xnt(n,1,o)}}class I3o extends af{constructor(){super({id:"editor.foldRecursively",label:_t(986,"Fold Recursively"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2140),weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);uH(n,!0,Number.MAX_VALUE,o)}}class M3o extends af{constructor(){super({id:"editor.toggleFoldRecursively",label:_t(987,"Toggle Fold Recursively"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,3114),weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);xnt(n,Number.MAX_VALUE,o)}}class P3o extends af{constructor(){super({id:"editor.foldAllBlockComments",label:_t(988,"Fold All Block Comments"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2138),weight:100}})}invoke(t,n,r,o,s){if(n.regions.hasTypes())Tnt(n,LI.Comment.value,!0);else{const a=r.getModel();if(!a)return;const l=s.getLanguageConfiguration(a.getLanguageId()).comments;if(l&&l.blockCommentStartToken){const d=new RegExp("^\\s*"+M0(l.blockCommentStartToken));Ent(n,d,!0)}}}}class F3o extends af{constructor(){super({id:"editor.foldAllMarkerRegions",label:_t(989,"Fold All Regions"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2077),weight:100}})}invoke(t,n,r,o,s){if(n.regions.hasTypes())Tnt(n,LI.Region.value,!0);else{const a=r.getModel();if(!a)return;const l=s.getLanguageConfiguration(a.getLanguageId()).foldingRules;if(l&&l.markers&&l.markers.start){const d=new RegExp(l.markers.start);Ent(n,d,!0)}}}}class N3o extends af{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:_t(990,"Unfold All Regions"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2078),weight:100}})}invoke(t,n,r,o,s){if(n.regions.hasTypes())Tnt(n,LI.Region.value,!1);else{const a=r.getModel();if(!a)return;const l=s.getLanguageConfiguration(a.getLanguageId()).foldingRules;if(l&&l.markers&&l.markers.start){const d=new RegExp(l.markers.start);Ent(n,d,!1)}}}}class U3o extends af{constructor(){super({id:"editor.foldAllExcept",label:_t(991,"Fold All Except Selected"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2136),weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);NRn(n,!0,o)}}class j3o extends af{constructor(){super({id:"editor.unfoldAllExcept",label:_t(992,"Unfold All Except Selected"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2134),weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);NRn(n,!1,o)}}class W3o extends af{constructor(){super({id:"editor.foldAll",label:_t(993,"Fold All"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2069),weight:100}})}invoke(t,n,r){uH(n,!0)}}class V3o extends af{constructor(){super({id:"editor.unfoldAll",label:_t(994,"Unfold All"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2088),weight:100}})}invoke(t,n,r){uH(n,!1)}}const rU=class rU extends af{getFoldingLevel(){return parseInt(this.id.substr(rU.ID_PREFIX.length))}invoke(t,n,r){h3o(n,this.getFoldingLevel(),!0,this.getSelectedLines(r))}};rU.ID_PREFIX="editor.foldLevel",rU.ID=t=>rU.ID_PREFIX+t;let O0e=rU;class z3o extends af{constructor(){super({id:"editor.gotoParentFold",label:_t(995,"Go to Parent Fold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=f3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class H3o extends af{constructor(){super({id:"editor.gotoPreviousFold",label:_t(996,"Go to Previous Folding Range"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=g3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class $3o extends af{constructor(){super({id:"editor.gotoNextFold",label:_t(997,"Go to Next Folding Range"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=m3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class X3o extends af{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:_t(998,"Create Folding Range from Selection"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2135),weight:100}})}invoke(t,n,r){var a;const o=[],s=r.getSelections();if(s){for(const l of s){let d=l.endLineNumber;l.endColumn===1&&--d,d>l.startLineNumber&&(o.push({startLineNumber:l.startLineNumber,endLineNumber:d,type:void 0,isCollapsed:!0,source:1}),r.setSelection({startLineNumber:l.startLineNumber,startColumn:1,endLineNumber:l.startLineNumber,endColumn:1}))}if(o.length>0){o.sort((d,u)=>d.startLineNumber-u.startLineNumber);const l=Nk.sanitizeAndMerge(n.regions,o,(a=r.getModel())==null?void 0:a.getLineCount());n.updatePost(Nk.fromFoldRanges(l))}}}}class G3o extends af{constructor(){super({id:"editor.removeManualFoldingRanges",label:_t(999,"Remove Manual Folding Ranges"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2137),weight:100}})}invoke(t,n,r){const o=r.getSelections();if(o){const s=[];for(const a of o){const{startLineNumber:l,endLineNumber:d}=a;s.push(d>=l?{startLineNumber:l,endLineNumber:d}:{endLineNumber:d,startLineNumber:l})}n.removeManualRanges(s),t.triggerFoldingModelChanged()}}}class Y3o extends af{constructor(){super({id:"editor.toggleImportFold",label:_t(1e3,"Toggle Import Fold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}async invoke(t,n){const r=[],o=n.regions;for(let s=o.length-1;s>=0;s--)o.getType(s)===LI.Imports.value&&r.push(o.toRegion(s));n.toggleCollapseState(r),t.triggerFoldingModelChanged()}}mo(R6.ID,R6,0);un(Q3o);un(D3o);un(B3o);un(I3o);un(M3o);un(W3o);un(V3o);un(P3o);un(F3o);un(N3o);un(U3o);un(j3o);un(R3o);un(z3o);un(H3o);un($3o);un(X3o);un(G3o);un(Y3o);for(let e=1;e<=7;e++)Wno(new O0e({id:O0e.ID(e),label:_t(1001,"Fold Level {0}",e),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2048|21+e),weight:100}}));co.registerCommand("_executeFoldingRangeProvider",async function(e,...t){const[n]=t;if(!(n instanceof vi))throw Gv();const r=e.get(Nn),o=e.get(ml).getModel(n);if(!o)throw Gv();const s=e.get(ar);if(!s.getValue("editor.folding",{resource:n}))return[];const a=e.get(kl),l=s.getValue("editor.foldingStrategy",{resource:n}),d={get limit(){return s.getValue("editor.foldingMaximumRegions",{resource:n})},update:(v,f)=>{}},u=new Qnt(o,a,d);let h=u;if(l!=="indentation"){const v=R6.getFoldingRangeProviders(r,o);v.length&&(h=new Dnt(o,v,()=>{},d,u))}const g=await h.compute(Er.None),m=[];try{if(g)for(let v=0;v$l.replace(Ee.lift(a.range),a.text))):t.executeEdits("formatEditsCommand",s.map(a=>$l.replaceMove(Ee.lift(a.range),a.text))),r&&t.pushUndoStop(),o.restoreRelativeVerticalPositionOfCursor(t)}}class $yt{constructor(t){this.value=t,this._lower=t.toLowerCase()}static toKey(t){return typeof t=="string"?t.toLowerCase():t._lower}}class J3o{constructor(t){if(this._set=new Set,t)for(const n of t)this.add(n)}add(t){this._set.add($yt.toKey(t))}has(t){return this._set.has($yt.toKey(t))}}function WRn(e,t,n){const r=[],o=new J3o,s=e.ordered(n);for(const l of s)r.push(l),l.extensionId&&o.add(l.extensionId);const a=t.ordered(n);for(const l of a){if(l.extensionId){if(o.has(l.extensionId))continue;o.add(l.extensionId)}r.push({displayName:l.displayName,extensionId:l.extensionId,provideDocumentFormattingEdits(d,u,h){return l.provideDocumentRangeFormattingEdits(d,d.getFullModelRange(),u,h)}})}return r}const Lq=class Lq{static setFormatterSelector(t){return{dispose:Lq._selectors.unshift(t)}}static async select(t,n,r,o){if(t.length===0)return;const s=to.first(Lq._selectors);if(s)return await s(t,n,r,o)}};Lq._selectors=new bg;let KJ=Lq;async function VRn(e,t,n,r,o,s,a){const l=e.get(Yn),{documentRangeFormattingEditProvider:d}=e.get(Nn),u=C3(t)?t.getModel():t,h=d.ordered(u),g=await KJ.select(h,u,r,2);g&&(o.report(g),await l.invokeFunction(ewo,g,t,n,s,a))}async function ewo(e,t,n,r,o,s){var p,b;const a=e.get(S1),l=e.get(va),d=e.get(pL);let u,h;C3(n)?(u=n.getModel(),h=new z8(n,5,void 0,o)):(u=n,h=new Ntt(n,o));const g=[];let m=0;for(const w of WJe(r).sort(Ee.compareRangesUsingStarts))m>0&&Ee.areIntersectingOrTouching(g[m-1],w)?g[m-1]=Ee.fromPositions(g[m-1].getStartPosition(),w.getEndPosition()):m=g.push(w);const v=async w=>{var y,C;l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(y=t.extensionId)==null?void 0:y.value,w);const O=await t.provideDocumentRangeFormattingEdits(u,w,u.getFormattingOptions(),h.token)||[];return l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(C=t.extensionId)==null?void 0:C.value,O),O},f=(w,O)=>{if(!w.length||!O.length)return!1;const y=w.reduce((C,_)=>Ee.plusRange(C,_.range),w[0].range);if(!O.some(C=>Ee.intersectRanges(y,C.range)))return!1;for(const C of w)for(const _ of O)if(Ee.intersectRanges(C.range,_.range))return!0;return!1},k=[],A=[];try{if(typeof t.provideDocumentRangesFormattingEdits=="function"){l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(p=t.extensionId)==null?void 0:p.value,g);const w=await t.provideDocumentRangesFormattingEdits(u,g,u.getFormattingOptions(),h.token)||[];l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(b=t.extensionId)==null?void 0:b.value,w),A.push(w)}else{for(const w of g){if(h.token.isCancellationRequested)return!0;A.push(await v(w))}for(let w=0;w({text:y.text,range:Ee.lift(y.range),forceMoveMarkers:!0})),y=>{for(const{range:C}of y)if(Ee.areIntersectingOrTouching(C,O))return[new Qn(C.startLineNumber,C.startColumn,C.endLineNumber,C.endColumn)];return null})}return d.playSignal(nm.format,{userGesture:s}),!0}async function two(e,t,n,r,o,s){const a=e.get(Yn),l=e.get(Nn),d=C3(t)?t.getModel():t,u=WRn(l.documentFormattingEditProvider,l.documentRangeFormattingEditProvider,d),h=await KJ.select(u,d,n,1);h&&(r.report(h),await a.invokeFunction(nwo,h,t,n,o,s))}async function nwo(e,t,n,r,o,s){const a=e.get(S1),l=e.get(pL);let d,u;C3(n)?(d=n.getModel(),u=new z8(n,5,void 0,o)):(d=n,u=new Ntt(n,o));let h;try{const g=await t.provideDocumentFormattingEdits(d,d.getFormattingOptions(),u.token);if(h=await a.computeMoreMinimalEdits(d.uri,g),u.token.isCancellationRequested)return!0}finally{u.dispose()}if(!h||h.length===0)return!1;if(C3(n))CV.execute(n,h,r!==2),r!==2&&n.revealPositionInCenterIfOutsideViewport(n.getPosition(),1);else{const[{range:g}]=h,m=new Qn(g.startLineNumber,g.startColumn,g.endLineNumber,g.endColumn);d.pushEditOperations([m],h.map(v=>({text:v.text,range:Ee.lift(v.range),forceMoveMarkers:!0})),v=>{for(const{range:f}of v)if(Ee.areIntersectingOrTouching(f,m))return[new Qn(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn)];return null})}return l.playSignal(nm.format,{userGesture:s}),!0}async function iwo(e,t,n,r,o,s){const a=t.documentRangeFormattingEditProvider.ordered(n);for(const l of a){const d=await Promise.resolve(l.provideDocumentRangeFormattingEdits(n,r,o,s)).catch(Nc);if(yg(d))return await e.computeMoreMinimalEdits(n.uri,d)}}async function rwo(e,t,n,r,o){const s=WRn(t.documentFormattingEditProvider,t.documentRangeFormattingEditProvider,n);for(const a of s){const l=await Promise.resolve(a.provideDocumentFormattingEdits(n,r,o)).catch(Nc);if(yg(l))return await e.computeMoreMinimalEdits(n.uri,l)}}function zRn(e,t,n,r,o,s,a){const l=t.onTypeFormattingEditProvider.ordered(n);return l.length===0||l[0].autoFormatTriggerCharacters.indexOf(o)<0?Promise.resolve(void 0):Promise.resolve(l[0].provideOnTypeFormattingEdits(n,r,o,s,a)).catch(Nc).then(d=>e.computeMoreMinimalEdits(n.uri,d))}co.registerCommand("_executeFormatRangeProvider",async function(e,...t){const[n,r,o]=t;Oo(vi.isUri(n)),Oo(Ee.isIRange(r));const s=e.get(Dg),a=e.get(S1),l=e.get(Nn),d=await s.createModelReference(n);try{return iwo(a,l,d.object.textEditorModel,Ee.lift(r),o,Er.None)}finally{d.dispose()}});co.registerCommand("_executeFormatDocumentProvider",async function(e,...t){const[n,r]=t;Oo(vi.isUri(n));const o=e.get(Dg),s=e.get(S1),a=e.get(Nn),l=await o.createModelReference(n);try{return rwo(s,a,l.object.textEditorModel,r,Er.None)}finally{l.dispose()}});co.registerCommand("_executeFormatOnTypeProvider",async function(e,...t){const[n,r,o,s]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string");const a=e.get(Dg),l=e.get(S1),d=e.get(Nn),u=await a.createModelReference(n);try{return zRn(l,d,u.object.textEditorModel,it.lift(r),o,s,Er.None)}finally{u.dispose()}});var HRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DZ=function(e,t){return function(n,r){t(n,r,e)}},Hj;let y0e=(Hj=class{constructor(t,n,r,o){this._editor=t,this._languageFeaturesService=n,this._workerService=r,this._accessibilitySignalService=o,this._disposables=new xt,this._sessionDisposables=new xt,this._disposables.add(n.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(t.onDidChangeModel(()=>this._update())),this._disposables.add(t.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(t.onDidChangeConfiguration(s=>{s.hasChanged(65)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(65)||!this._editor.hasModel())return;const t=this._editor.getModel(),[n]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(t);if(!n||!n.autoFormatTriggerCharacters)return;const r=new Bme;for(const o of n.autoFormatTriggerCharacters)r.add(o.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(o=>{const s=o.charCodeAt(o.length-1);r.has(s)&&this._trigger(String.fromCharCode(s))}))}_trigger(t){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const n=this._editor.getModel(),r=this._editor.getPosition(),o=new ja,s=this._editor.onDidChangeModelContent(a=>{if(a.isFlush){o.cancel(),s.dispose();return}for(let l=0,d=a.changes.length;l{o.token.isCancellationRequested||yg(a)&&(this._accessibilitySignalService.playSignal(nm.format,{userGesture:!1}),CV.execute(this._editor,a,!0))}).finally(()=>{s.dispose()})}},Hj.ID="editor.contrib.autoFormat",Hj);y0e=HRn([DZ(1,Nn),DZ(2,S1),DZ(3,pL)],y0e);var $j;let C0e=($j=class{constructor(t,n,r){this.editor=t,this._languageFeaturesService=n,this._instantiationService=r,this._callOnDispose=new xt,this._callOnModel=new xt,this._callOnDispose.add(t.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(t.onDidChangeModel(()=>this._update())),this._callOnDispose.add(t.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(n.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(64)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:t})=>this._trigger(t)))}_trigger(t){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(VRn,this.editor,t,2,qb.None,Er.None,!1).catch(zi))}},$j.ID="editor.contrib.formatOnPaste",$j);C0e=HRn([DZ(1,Nn),DZ(2,Yn)],C0e);class owo extends Bn{constructor(){super({id:"editor.action.formatDocument",label:_t(1014,"Format Document"),precondition:Ft.and($e.notInCompositeEditor,$e.writable,$e.hasDocumentFormattingProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(t,n){if(n.hasModel()){const r=t.get(Yn);await t.get(V8).showWhile(r.invokeFunction(two,n,1,qb.None,Er.None,!0),250)}}}class swo extends Bn{constructor(){super({id:"editor.action.formatSelection",label:_t(1015,"Format Selection"),precondition:Ft.and($e.writable,$e.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2084),weight:100},contextMenuOpts:{when:$e.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(t,n){if(!n.hasModel())return;const r=t.get(Yn),o=n.getModel(),s=n.getSelections().map(l=>l.isEmpty()?new Ee(l.startLineNumber,1,l.startLineNumber,o.getLineMaxColumn(l.startLineNumber)):l);await t.get(V8).showWhile(r.invokeFunction(VRn,n,s,1,qb.None,Er.None,!0),250)}}mo(y0e.ID,y0e,2);mo(C0e.ID,C0e,2);un(owo);un(swo);co.registerCommand("editor.action.format",async e=>{const t=e.get(yo).getFocusedCodeEditor();if(!t||!t.hasModel())return;const n=e.get(ba);t.getSelection().isEmpty()?await n.executeCommand("editor.action.formatDocument"):await n.executeCommand("editor.action.formatSelection")});var awo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Lxe=function(e,t){return function(n,r){t(n,r,e)}};class yN{remove(){var t;(t=this.parent)==null||t.children.delete(this.id)}static findId(t,n){let r;typeof t=="string"?r=`${n.id}/${t}`:(r=`${n.id}/${t.name}`,n.children.get(r)!==void 0&&(r=`${n.id}/${t.name}_${t.range.startLineNumber}_${t.range.startColumn}`));let o=r;for(let s=0;n.children.get(o)!==void 0;s++)o=`${r}_${s}`;return o}static empty(t){return t.children.size===0}}class GWe extends yN{constructor(t,n,r){super(),this.id=t,this.parent=n,this.symbol=r,this.children=new Map}}class $Rn extends yN{constructor(t,n,r,o){super(),this.id=t,this.parent=n,this.label=r,this.order=o,this.children=new Map}}class rS extends yN{static create(t,n,r){const o=new ja(r),s=new rS(n.uri),a=t.ordered(n),l=a.map((u,h)=>{const g=yN.findId(`provider_${h}`,s),m=new $Rn(g,s,u.displayName??"Unknown Outline Provider",h);return Promise.resolve(u.provideDocumentSymbols(n,o.token)).then(v=>{for(const f of v||[])rS._makeOutlineElement(f,m);return m},v=>(Nc(v),m)).then(v=>{yN.empty(v)?v.remove():s._groups.set(g,v)})}),d=t.onDidChange(()=>{const u=t.ordered(n);Na(u,a)||o.cancel()});return Promise.all(l).then(()=>o.token.isCancellationRequested&&!r.isCancellationRequested?rS.create(t,n,r):s._compact()).finally(()=>{o.dispose(),d.dispose(),o.dispose()})}static _makeOutlineElement(t,n){const r=yN.findId(t,n),o=new GWe(r,n,t);if(t.children)for(const s of t.children)rS._makeOutlineElement(s,o);n.children.set(o.id,o)}constructor(t){super(),this.uri=t,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let t=0;for(const[n,r]of this._groups)r.children.size===0?this._groups.delete(n):t+=1;if(t!==1)this.children=this._groups;else{const n=to.first(this._groups.values());for(const[,r]of n.children)r.parent=this,this.children.set(r.id,r)}return this}getTopLevelSymbols(){const t=[];for(const n of this.children.values())n instanceof GWe?t.push(n.symbol):t.push(...to.map(n.children.values(),r=>r.symbol));return t.sort((n,r)=>Ee.compareRangesUsingStarts(n.range,r.range))}asListOfDocumentSymbols(){const t=this.getTopLevelSymbols(),n=[];return rS._flattenDocumentSymbols(n,t,""),n.sort((r,o)=>it.compare(Ee.getStartPosition(r.range),Ee.getStartPosition(o.range))||it.compare(Ee.getEndPosition(o.range),Ee.getEndPosition(r.range)))}static _flattenDocumentSymbols(t,n,r){for(const o of n)t.push({kind:o.kind,tags:o.tags,name:o.name,detail:o.detail,containerName:o.containerName||r,range:o.range,selectionRange:o.selectionRange,children:void 0}),o.children&&rS._flattenDocumentSymbols(t,o.children,o.name)}}const ore=Cr("IOutlineModelService");let YWe=class{constructor(t,n,r){this._languageFeaturesService=t,this._disposables=new xt,this._cache=new wp(15,.7),this._debounceInformation=n.for(t.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(r.onModelRemoved(o=>{this._cache.delete(o.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(t,n){const r=this._languageFeaturesService.documentSymbolProvider,o=r.ordered(t);let s=this._cache.get(t.id);if(!s||s.versionId!==t.getVersionId()||!Na(s.provider,o)){const l=new ja;s={versionId:t.getVersionId(),provider:o,promiseCnt:0,source:l,promise:rS.create(r,t,l.token),model:void 0},this._cache.set(t.id,s);const d=Date.now();s.promise.then(u=>{s.model=u,this._debounceInformation.update(t,Date.now()-d)}).catch(u=>{this._cache.delete(t.id)})}if(s.model)return s.model;s.promiseCnt+=1;const a=n.onCancellationRequested(()=>{--s.promiseCnt===0&&(s.source.cancel(),this._cache.delete(t.id))});try{return await s.promise}finally{a.dispose()}}};YWe=awo([Lxe(0,Nn),Lxe(1,CA),Lxe(2,ml)],YWe);zr(ore,YWe,1);co.registerCommand("_executeDocumentSymbolProvider",async function(e,...t){const[n]=t;Oo(vi.isUri(n));const r=e.get(ore),s=await e.get(Dg).createModelReference(n);try{return(await r.getOrCreate(s.object.textEditorModel,Er.None)).getTopLevelSymbols()}finally{s.dispose()}});const R3e=new class{constructor(){this._implementations=[]}register(t){return this._implementations.push(t),{dispose:()=>{const n=this._implementations.indexOf(t);n!==-1&&this._implementations.splice(n,1)}}}getImplementations(){return this._implementations}};var lwo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},cwo=function(e,t){return function(n,r){t(n,r,e)}};function dwo(e){return e instanceof XRn?e._instance:e}let XRn=class{constructor(t){this.instantiationService=t}init(...t){}};function uwo(e){return e.get()}let Xyt=class extends XRn{constructor(t,n){super(n),this.init(t)}};Xyt=lwo([cwo(1,Yn)],Xyt);class sre{validateOrThrow(t){const n=this.validate(t);if(n.error)throw new Error(n.error.message);return n.content}}class I3e extends sre{constructor(t){super(),this.type=t}validate(t){return typeof t!==this.type?{content:void 0,error:{message:`Expected ${this.type}, but got ${typeof t}`}}:{content:t,error:void 0}}getJSONSchema(){return{type:this.type}}}const hwo=new I3e("string");function fwo(){return hwo}new I3e("number");const gwo=new I3e("boolean");function Gyt(){return gwo}new I3e("object");class GRn extends sre{validate(t){return t!==void 0?{content:void 0,error:{message:`Expected undefined, but got ${typeof t}`}}:{content:void 0,error:void 0}}getJSONSchema(){return{}}}function mwo(){return new GRn}class ZWe{constructor(t){this.validator=t}}function xxe(e){return new ZWe(e)}class kwo extends sre{constructor(t){super(),this.properties=t}validate(t){if(typeof t!="object"||t===null)return{content:void 0,error:{message:"Expected object"}};const n={};for(const r in this.properties){const o=this.properties[r],s=t[r],a=o instanceof ZWe,l=a?o.validator:o;if(a&&s===void 0)continue;const{content:d,error:u}=l.validate(s);if(u)return{content:void 0,error:{message:`Error in property '${r}': ${u.message}`}};n[r]=d}return{content:n,error:void 0}}getJSONSchema(){const t=[],n={};for(const[o,s]of Object.entries(this.properties)){const a=s instanceof ZWe,l=a?s.validator:s;n[o]=l.getJSONSchema(),a||t.push(o)}return{type:"object",properties:n,...t.length>0?{required:t}:{}}}}function vwo(e){return new kwo(e)}class Awo extends sre{constructor(t){super(),this.validators=t}validate(t){let n;for(const r of this.validators){const{content:o,error:s}=r.validate(t);if(!s)return{content:o,error:void 0};n=s}return{content:void 0,error:n}}getJSONSchema(){return{oneOf:ato(this.validators,t=>{if(!(t instanceof GRn))return t.getJSONSchema()})}}}function pwo(...e){return new Awo(e)}class bwo extends sre{constructor(t,n){super(),this._ref=t,this._validator=n}validate(t){return this._validator.validate(t)}getJSONSchema(){return{$ref:this._ref}}}function wwo(e,t){return new bwo(e,t)}const _r={Visible:Ktt,HasFocusedSuggestion:new yn("suggestWidgetHasFocusedSuggestion",!1,U(1455,"Whether any suggestion is focused")),DetailsVisible:new yn("suggestWidgetDetailsVisible",!1,U(1456,"Whether suggestion details are visible")),MultipleSuggestions:new yn("suggestWidgetMultipleSuggestions",!1,U(1457,"Whether there are multiple suggestions to pick from")),MakesTextEdit:new yn("suggestionMakesTextEdit",!0,U(1458,"Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new yn("acceptSuggestionOnEnter",!0,U(1459,"Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new yn("suggestionHasInsertAndReplaceRange",!1,U(1460,"Whether the current suggestion has insert and replace behaviour")),InsertMode:new yn("suggestionInsertMode",void 0,{type:"string",description:U(1461,"Whether the default behaviour is to insert or replace")}),CanResolve:new yn("suggestionCanResolve",!1,U(1462,"Whether the current suggestion supports to resolve further details"))},j9=new Wn("suggestWidgetStatusBar");let Owo=class{constructor(t,n,r,o){var s;this.position=t,this.completion=n,this.container=r,this.provider=o,this.isInvalid=!1,this.score=q4.Default,this.distance=0,this.textLabel=typeof n.label=="string"?n.label:(s=n.label)==null?void 0:s.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=n.sortText&&n.sortText.toLowerCase(),this.filterTextLow=n.filterText&&n.filterText.toLowerCase(),this.extensionId=n.extensionId,Ee.isIRange(n.range)?(this.editStart=new it(n.range.startLineNumber,n.range.startColumn),this.editInsertEnd=new it(n.range.endLineNumber,n.range.endColumn),this.editReplaceEnd=new it(n.range.endLineNumber,n.range.endColumn),this.isInvalid=this.isInvalid||Ee.spansMultipleLines(n.range)||n.range.startLineNumber!==t.lineNumber):(this.editStart=new it(n.range.insert.startLineNumber,n.range.insert.startColumn),this.editInsertEnd=new it(n.range.insert.endLineNumber,n.range.insert.endColumn),this.editReplaceEnd=new it(n.range.replace.endLineNumber,n.range.replace.endColumn),this.isInvalid=this.isInvalid||Ee.spansMultipleLines(n.range.insert)||Ee.spansMultipleLines(n.range.replace)||n.range.insert.startLineNumber!==t.lineNumber||n.range.replace.startLineNumber!==t.lineNumber||n.range.insert.startColumn!==n.range.replace.startColumn),typeof o.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(t){if(!this._resolveCache){const n=t.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),r=new vu(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,t)).then(o=>{Object.assign(this.completion,o),this._resolveDuration=r.elapsed()},o=>{C2(o)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{n.dispose()})}return this._resolveCache}};const iAe=class iAe{constructor(t=2,n=new Set,r=new Set,o=new Map,s=!0){this.snippetSortOrder=t,this.kindFilter=n,this.providerFilter=r,this.providerItemsToReuse=o,this.showDeprecated=s}};iAe.default=new iAe;let JJ=iAe;class ywo{constructor(t,n,r,o){this.items=t,this.needsClipboard=n,this.durations=r,this.disposable=o}}async function Bnt(e,t,n,r=JJ.default,o={triggerKind:0},s=Er.None){const a=new vu;n=n.clone();const l=t.getWordAtPosition(n),d=l?new Ee(n.lineNumber,l.startColumn,n.lineNumber,l.endColumn):Ee.fromPositions(n),u={replace:d,insert:d.setEndPosition(n.lineNumber,n.column)},h=[],g=new xt,m=[];let v=!1;const f=(A,p,b)=>{var O;let w=!1;if(!p)return w;for(const y of p.suggestions)if(!r.kindFilter.has(y.kind)){if(!r.showDeprecated&&((O=y==null?void 0:y.tags)!=null&&O.includes(1)))continue;y.range||(y.range=u),y.sortText||(y.sortText=typeof y.label=="string"?y.label:y.label.label),!v&&y.insertTextRules&&y.insertTextRules&4&&(v=wR.guessNeedsClipboard(y.insertText)),h.push(new Owo(n,y,p,A)),w=!0}return AI(p)&&g.add(p),m.push({providerName:A._debugDisplayName??"unknown_provider",elapsedProvider:p.duration??-1,elapsedOverall:b.elapsed()}),w},k=(async()=>{})();for(const A of e.orderedGroups(t)){let p=!1;if(await Promise.all(A.map(async b=>{if(r.providerItemsToReuse.has(b)){const w=r.providerItemsToReuse.get(b);w.forEach(O=>h.push(O)),p=p||w.length>0;return}if(!(r.providerFilter.size>0&&!r.providerFilter.has(b)))try{const w=new vu,O=await b.provideCompletionItems(t,n,o,s);p=f(b,O,w)||p}catch(w){Nc(w)}})),p||s.isCancellationRequested)break}return await k,s.isCancellationRequested?(g.dispose(),Promise.reject(new lA)):new ywo(h.sort(Swo(r.snippetSortOrder)),v,{entries:m,elapsed:a.elapsed()},g)}function Rnt(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 Cwo(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===28)return-1;if(t.completion.kind===28)return 1}return Rnt(e,t)}function _wo(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===28)return 1;if(t.completion.kind===28)return-1}return Rnt(e,t)}const M3e=new Map;M3e.set(0,Cwo);M3e.set(2,_wo);M3e.set(1,Rnt);function Swo(e){return M3e.get(e)}co.registerCommand("_executeCompletionItemProvider",async(e,...t)=>{const[n,r,o,s]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string"||!o),Oo(typeof s=="number"||!s);const{completionProvider:a}=e.get(Nn),l=await e.get(Dg).createModelReference(n);try{const d={incomplete:!1,suggestions:[]},u=[],h=l.object.textEditorModel.validatePosition(r),g=await Bnt(a,l.object.textEditorModel,h,void 0,{triggerCharacter:o??void 0,triggerKind:o?1:0});for(const m of g.items)u.length<(s??0)&&u.push(m.resolve(Er.None)),d.incomplete=d.incomplete||m.container.incomplete,d.suggestions.push(m.completion);try{return await Promise.all(u),d}finally{setTimeout(()=>g.disposable.dispose(),100)}}finally{l.dispose()}});function Lwo(e,t){var n;(n=e.getContribution("editor.contrib.suggestController"))==null||n.triggerSuggest(new Set().add(t),void 0,!0)}class CN{static isAllOff(t){return t.other==="off"&&t.comments==="off"&&t.strings==="off"}static isAllOn(t){return t.other==="on"&&t.comments==="on"&&t.strings==="on"}static valueFor(t,n){switch(n){case 1:return t.comments;case 2:return t.strings;default:return t.other}}}const Sk=class Sk{};Sk.inlineSuggestionVisible=new yn("inlineSuggestionVisible",!1,U(1192,"Whether an inline suggestion is visible")),Sk.inlineSuggestionHasIndentation=new yn("inlineSuggestionHasIndentation",!1,U(1193,"Whether the inline suggestion starts with whitespace")),Sk.inlineSuggestionHasIndentationLessThanTabSize=new yn("inlineSuggestionHasIndentationLessThanTabSize",!0,U(1194,"Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab")),Sk.suppressSuggestions=new yn("inlineSuggestionSuppressSuggestions",void 0,U(1195,"Whether suggestions should be suppressed for the current suggestion")),Sk.cursorBeforeGhostText=new yn("cursorBeforeGhostText",!1,U(1196,"Whether the cursor is at ghost text")),Sk.cursorInIndentation=new yn("cursorInIndentation",!1,U(1197,"Whether the cursor is in indentation")),Sk.hasSelection=new yn("editor.hasSelection",!1,U(1198,"Whether the editor has a selection")),Sk.cursorAtInlineEdit=new yn("cursorAtInlineEdit",!1,U(1199,"Whether the cursor is at an inline edit")),Sk.inlineEditVisible=new yn("inlineEditIsVisible",!1,U(1200,"Whether an inline edit is visible")),Sk.tabShouldJumpToInlineEdit=new yn("tabShouldJumpToInlineEdit",!1,U(1201,"Whether tab should jump to an inline edit.")),Sk.tabShouldAcceptInlineEdit=new yn("tabShouldAcceptInlineEdit",!1,U(1202,"Whether tab should accept the inline edit.")),Sk.inInlineEditsPreviewEditor=new yn("inInlineEditsPreviewEditor",!0,U(1203,"Whether the current code editor is showing an inline edits preview"));let Ns=Sk;class xwo{constructor(t,n,r){this._selection=t,this._cursors=n,this._selectionId=null,this._trimInRegexesAndStrings=r}getEditOperations(t,n){const r=Ewo(t,this._cursors,this._trimInRegexesAndStrings);for(let o=0,s=r.length;ol.lineNumber===d.lineNumber?l.column-d.column:l.lineNumber-d.lineNumber);for(let l=t.length-2;l>=0;l--)t[l].lineNumber===t[l+1].lineNumber&&t.splice(l,1);const r=[];let o=0,s=0;const a=t.length;for(let l=1,d=e.getLineCount();l<=d;l++){const u=e.getLineContent(l),h=u.length+1;let g=0;if(srU.ID_PREFIX+t;let O0e=rU;class z3o extends af{constructor(){super({id:"editor.gotoParentFold",label:_t(995,"Go to Parent Fold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=f3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class H3o extends af{constructor(){super({id:"editor.gotoPreviousFold",label:_t(996,"Go to Previous Folding Range"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=g3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class $3o extends af{constructor(){super({id:"editor.gotoNextFold",label:_t(997,"Go to Next Folding Range"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}invoke(t,n,r){const o=this.getSelectedLines(r);if(o.length>0){const s=m3o(o[0],n);s!==null&&r.setSelection({startLineNumber:s,startColumn:1,endLineNumber:s,endColumn:1})}}}class X3o extends af{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:_t(998,"Create Folding Range from Selection"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2135),weight:100}})}invoke(t,n,r){var a;const o=[],s=r.getSelections();if(s){for(const l of s){let d=l.endLineNumber;l.endColumn===1&&--d,d>l.startLineNumber&&(o.push({startLineNumber:l.startLineNumber,endLineNumber:d,type:void 0,isCollapsed:!0,source:1}),r.setSelection({startLineNumber:l.startLineNumber,startColumn:1,endLineNumber:l.startLineNumber,endColumn:1}))}if(o.length>0){o.sort((d,u)=>d.startLineNumber-u.startLineNumber);const l=Nk.sanitizeAndMerge(n.regions,o,(a=r.getModel())==null?void 0:a.getLineCount());n.updatePost(Nk.fromFoldRanges(l))}}}}class G3o extends af{constructor(){super({id:"editor.removeManualFoldingRanges",label:_t(999,"Remove Manual Folding Ranges"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2137),weight:100}})}invoke(t,n,r){const o=r.getSelections();if(o){const s=[];for(const a of o){const{startLineNumber:l,endLineNumber:d}=a;s.push(d>=l?{startLineNumber:l,endLineNumber:d}:{endLineNumber:d,startLineNumber:l})}n.removeManualRanges(s),t.triggerFoldingModelChanged()}}}class Y3o extends af{constructor(){super({id:"editor.toggleImportFold",label:_t(1e3,"Toggle Import Fold"),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,weight:100}})}async invoke(t,n){const r=[],o=n.regions;for(let s=o.length-1;s>=0;s--)o.getType(s)===LI.Imports.value&&r.push(o.toRegion(s));n.toggleCollapseState(r),t.triggerFoldingModelChanged()}}mo(R6.ID,R6,0);un(Q3o);un(D3o);un(B3o);un(I3o);un(M3o);un(W3o);un(V3o);un(P3o);un(F3o);un(N3o);un(U3o);un(j3o);un(R3o);un(z3o);un(H3o);un($3o);un(X3o);un(G3o);un(Y3o);for(let e=1;e<=7;e++)Wno(new O0e({id:O0e.ID(e),label:_t(1001,"Fold Level {0}",e),precondition:Ah,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2048|21+e),weight:100}}));uo.registerCommand("_executeFoldingRangeProvider",async function(e,...t){const[n]=t;if(!(n instanceof vi))throw Gv();const r=e.get(Nn),o=e.get(ml).getModel(n);if(!o)throw Gv();const s=e.get(ar);if(!s.getValue("editor.folding",{resource:n}))return[];const a=e.get(kl),l=s.getValue("editor.foldingStrategy",{resource:n}),d={get limit(){return s.getValue("editor.foldingMaximumRegions",{resource:n})},update:(v,f)=>{}},u=new Qnt(o,a,d);let h=u;if(l!=="indentation"){const v=R6.getFoldingRangeProviders(r,o);v.length&&(h=new Dnt(o,v,()=>{},d,u))}const g=await h.compute(Er.None),m=[];try{if(g)for(let v=0;v$l.replace(Ee.lift(a.range),a.text))):t.executeEdits("formatEditsCommand",s.map(a=>$l.replaceMove(Ee.lift(a.range),a.text))),r&&t.pushUndoStop(),o.restoreRelativeVerticalPositionOfCursor(t)}}class $yt{constructor(t){this.value=t,this._lower=t.toLowerCase()}static toKey(t){return typeof t=="string"?t.toLowerCase():t._lower}}class J3o{constructor(t){if(this._set=new Set,t)for(const n of t)this.add(n)}add(t){this._set.add($yt.toKey(t))}has(t){return this._set.has($yt.toKey(t))}}function WRn(e,t,n){const r=[],o=new J3o,s=e.ordered(n);for(const l of s)r.push(l),l.extensionId&&o.add(l.extensionId);const a=t.ordered(n);for(const l of a){if(l.extensionId){if(o.has(l.extensionId))continue;o.add(l.extensionId)}r.push({displayName:l.displayName,extensionId:l.extensionId,provideDocumentFormattingEdits(d,u,h){return l.provideDocumentRangeFormattingEdits(d,d.getFullModelRange(),u,h)}})}return r}const Lq=class Lq{static setFormatterSelector(t){return{dispose:Lq._selectors.unshift(t)}}static async select(t,n,r,o){if(t.length===0)return;const s=to.first(Lq._selectors);if(s)return await s(t,n,r,o)}};Lq._selectors=new bg;let KJ=Lq;async function VRn(e,t,n,r,o,s,a){const l=e.get(Yn),{documentRangeFormattingEditProvider:d}=e.get(Nn),u=C3(t)?t.getModel():t,h=d.ordered(u),g=await KJ.select(h,u,r,2);g&&(o.report(g),await l.invokeFunction(ewo,g,t,n,s,a))}async function ewo(e,t,n,r,o,s){var p,b;const a=e.get(S1),l=e.get(va),d=e.get(pL);let u,h;C3(n)?(u=n.getModel(),h=new z8(n,5,void 0,o)):(u=n,h=new Ntt(n,o));const g=[];let m=0;for(const w of WJe(r).sort(Ee.compareRangesUsingStarts))m>0&&Ee.areIntersectingOrTouching(g[m-1],w)?g[m-1]=Ee.fromPositions(g[m-1].getStartPosition(),w.getEndPosition()):m=g.push(w);const v=async w=>{var y,C;l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(y=t.extensionId)==null?void 0:y.value,w);const O=await t.provideDocumentRangeFormattingEdits(u,w,u.getFormattingOptions(),h.token)||[];return l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(C=t.extensionId)==null?void 0:C.value,O),O},f=(w,O)=>{if(!w.length||!O.length)return!1;const y=w.reduce((C,_)=>Ee.plusRange(C,_.range),w[0].range);if(!O.some(C=>Ee.intersectRanges(y,C.range)))return!1;for(const C of w)for(const _ of O)if(Ee.intersectRanges(C.range,_.range))return!0;return!1},k=[],A=[];try{if(typeof t.provideDocumentRangesFormattingEdits=="function"){l.trace("[format][provideDocumentRangeFormattingEdits] (request)",(p=t.extensionId)==null?void 0:p.value,g);const w=await t.provideDocumentRangesFormattingEdits(u,g,u.getFormattingOptions(),h.token)||[];l.trace("[format][provideDocumentRangeFormattingEdits] (response)",(b=t.extensionId)==null?void 0:b.value,w),A.push(w)}else{for(const w of g){if(h.token.isCancellationRequested)return!0;A.push(await v(w))}for(let w=0;w({text:y.text,range:Ee.lift(y.range),forceMoveMarkers:!0})),y=>{for(const{range:C}of y)if(Ee.areIntersectingOrTouching(C,O))return[new Qn(C.startLineNumber,C.startColumn,C.endLineNumber,C.endColumn)];return null})}return d.playSignal(nm.format,{userGesture:s}),!0}async function two(e,t,n,r,o,s){const a=e.get(Yn),l=e.get(Nn),d=C3(t)?t.getModel():t,u=WRn(l.documentFormattingEditProvider,l.documentRangeFormattingEditProvider,d),h=await KJ.select(u,d,n,1);h&&(r.report(h),await a.invokeFunction(nwo,h,t,n,o,s))}async function nwo(e,t,n,r,o,s){const a=e.get(S1),l=e.get(pL);let d,u;C3(n)?(d=n.getModel(),u=new z8(n,5,void 0,o)):(d=n,u=new Ntt(n,o));let h;try{const g=await t.provideDocumentFormattingEdits(d,d.getFormattingOptions(),u.token);if(h=await a.computeMoreMinimalEdits(d.uri,g),u.token.isCancellationRequested)return!0}finally{u.dispose()}if(!h||h.length===0)return!1;if(C3(n))CV.execute(n,h,r!==2),r!==2&&n.revealPositionInCenterIfOutsideViewport(n.getPosition(),1);else{const[{range:g}]=h,m=new Qn(g.startLineNumber,g.startColumn,g.endLineNumber,g.endColumn);d.pushEditOperations([m],h.map(v=>({text:v.text,range:Ee.lift(v.range),forceMoveMarkers:!0})),v=>{for(const{range:f}of v)if(Ee.areIntersectingOrTouching(f,m))return[new Qn(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn)];return null})}return l.playSignal(nm.format,{userGesture:s}),!0}async function iwo(e,t,n,r,o,s){const a=t.documentRangeFormattingEditProvider.ordered(n);for(const l of a){const d=await Promise.resolve(l.provideDocumentRangeFormattingEdits(n,r,o,s)).catch(Nc);if(yg(d))return await e.computeMoreMinimalEdits(n.uri,d)}}async function rwo(e,t,n,r,o){const s=WRn(t.documentFormattingEditProvider,t.documentRangeFormattingEditProvider,n);for(const a of s){const l=await Promise.resolve(a.provideDocumentFormattingEdits(n,r,o)).catch(Nc);if(yg(l))return await e.computeMoreMinimalEdits(n.uri,l)}}function zRn(e,t,n,r,o,s,a){const l=t.onTypeFormattingEditProvider.ordered(n);return l.length===0||l[0].autoFormatTriggerCharacters.indexOf(o)<0?Promise.resolve(void 0):Promise.resolve(l[0].provideOnTypeFormattingEdits(n,r,o,s,a)).catch(Nc).then(d=>e.computeMoreMinimalEdits(n.uri,d))}uo.registerCommand("_executeFormatRangeProvider",async function(e,...t){const[n,r,o]=t;Oo(vi.isUri(n)),Oo(Ee.isIRange(r));const s=e.get(Dg),a=e.get(S1),l=e.get(Nn),d=await s.createModelReference(n);try{return iwo(a,l,d.object.textEditorModel,Ee.lift(r),o,Er.None)}finally{d.dispose()}});uo.registerCommand("_executeFormatDocumentProvider",async function(e,...t){const[n,r]=t;Oo(vi.isUri(n));const o=e.get(Dg),s=e.get(S1),a=e.get(Nn),l=await o.createModelReference(n);try{return rwo(s,a,l.object.textEditorModel,r,Er.None)}finally{l.dispose()}});uo.registerCommand("_executeFormatOnTypeProvider",async function(e,...t){const[n,r,o,s]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string");const a=e.get(Dg),l=e.get(S1),d=e.get(Nn),u=await a.createModelReference(n);try{return zRn(l,d,u.object.textEditorModel,it.lift(r),o,s,Er.None)}finally{u.dispose()}});var HRn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DZ=function(e,t){return function(n,r){t(n,r,e)}},Hj;let y0e=(Hj=class{constructor(t,n,r,o){this._editor=t,this._languageFeaturesService=n,this._workerService=r,this._accessibilitySignalService=o,this._disposables=new xt,this._sessionDisposables=new xt,this._disposables.add(n.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(t.onDidChangeModel(()=>this._update())),this._disposables.add(t.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(t.onDidChangeConfiguration(s=>{s.hasChanged(65)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(65)||!this._editor.hasModel())return;const t=this._editor.getModel(),[n]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(t);if(!n||!n.autoFormatTriggerCharacters)return;const r=new Bme;for(const o of n.autoFormatTriggerCharacters)r.add(o.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(o=>{const s=o.charCodeAt(o.length-1);r.has(s)&&this._trigger(String.fromCharCode(s))}))}_trigger(t){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const n=this._editor.getModel(),r=this._editor.getPosition(),o=new ja,s=this._editor.onDidChangeModelContent(a=>{if(a.isFlush){o.cancel(),s.dispose();return}for(let l=0,d=a.changes.length;l{o.token.isCancellationRequested||yg(a)&&(this._accessibilitySignalService.playSignal(nm.format,{userGesture:!1}),CV.execute(this._editor,a,!0))}).finally(()=>{s.dispose()})}},Hj.ID="editor.contrib.autoFormat",Hj);y0e=HRn([DZ(1,Nn),DZ(2,S1),DZ(3,pL)],y0e);var $j;let C0e=($j=class{constructor(t,n,r){this.editor=t,this._languageFeaturesService=n,this._instantiationService=r,this._callOnDispose=new xt,this._callOnModel=new xt,this._callOnDispose.add(t.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(t.onDidChangeModel(()=>this._update())),this._callOnDispose.add(t.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(n.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(64)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:t})=>this._trigger(t)))}_trigger(t){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(VRn,this.editor,t,2,qb.None,Er.None,!1).catch(zi))}},$j.ID="editor.contrib.formatOnPaste",$j);C0e=HRn([DZ(1,Nn),DZ(2,Yn)],C0e);class owo extends Bn{constructor(){super({id:"editor.action.formatDocument",label:_t(1014,"Format Document"),precondition:Ft.and($e.notInCompositeEditor,$e.writable,$e.hasDocumentFormattingProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(t,n){if(n.hasModel()){const r=t.get(Yn);await t.get(V8).showWhile(r.invokeFunction(two,n,1,qb.None,Er.None,!0),250)}}}class swo extends Bn{constructor(){super({id:"editor.action.formatSelection",label:_t(1015,"Format Selection"),precondition:Ft.and($e.writable,$e.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2084),weight:100},contextMenuOpts:{when:$e.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(t,n){if(!n.hasModel())return;const r=t.get(Yn),o=n.getModel(),s=n.getSelections().map(l=>l.isEmpty()?new Ee(l.startLineNumber,1,l.startLineNumber,o.getLineMaxColumn(l.startLineNumber)):l);await t.get(V8).showWhile(r.invokeFunction(VRn,n,s,1,qb.None,Er.None,!0),250)}}mo(y0e.ID,y0e,2);mo(C0e.ID,C0e,2);un(owo);un(swo);uo.registerCommand("editor.action.format",async e=>{const t=e.get(yo).getFocusedCodeEditor();if(!t||!t.hasModel())return;const n=e.get(ba);t.getSelection().isEmpty()?await n.executeCommand("editor.action.formatDocument"):await n.executeCommand("editor.action.formatSelection")});var awo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Lxe=function(e,t){return function(n,r){t(n,r,e)}};class yN{remove(){var t;(t=this.parent)==null||t.children.delete(this.id)}static findId(t,n){let r;typeof t=="string"?r=`${n.id}/${t}`:(r=`${n.id}/${t.name}`,n.children.get(r)!==void 0&&(r=`${n.id}/${t.name}_${t.range.startLineNumber}_${t.range.startColumn}`));let o=r;for(let s=0;n.children.get(o)!==void 0;s++)o=`${r}_${s}`;return o}static empty(t){return t.children.size===0}}class GWe extends yN{constructor(t,n,r){super(),this.id=t,this.parent=n,this.symbol=r,this.children=new Map}}class $Rn extends yN{constructor(t,n,r,o){super(),this.id=t,this.parent=n,this.label=r,this.order=o,this.children=new Map}}class rS extends yN{static create(t,n,r){const o=new ja(r),s=new rS(n.uri),a=t.ordered(n),l=a.map((u,h)=>{const g=yN.findId(`provider_${h}`,s),m=new $Rn(g,s,u.displayName??"Unknown Outline Provider",h);return Promise.resolve(u.provideDocumentSymbols(n,o.token)).then(v=>{for(const f of v||[])rS._makeOutlineElement(f,m);return m},v=>(Nc(v),m)).then(v=>{yN.empty(v)?v.remove():s._groups.set(g,v)})}),d=t.onDidChange(()=>{const u=t.ordered(n);Na(u,a)||o.cancel()});return Promise.all(l).then(()=>o.token.isCancellationRequested&&!r.isCancellationRequested?rS.create(t,n,r):s._compact()).finally(()=>{o.dispose(),d.dispose(),o.dispose()})}static _makeOutlineElement(t,n){const r=yN.findId(t,n),o=new GWe(r,n,t);if(t.children)for(const s of t.children)rS._makeOutlineElement(s,o);n.children.set(o.id,o)}constructor(t){super(),this.uri=t,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let t=0;for(const[n,r]of this._groups)r.children.size===0?this._groups.delete(n):t+=1;if(t!==1)this.children=this._groups;else{const n=to.first(this._groups.values());for(const[,r]of n.children)r.parent=this,this.children.set(r.id,r)}return this}getTopLevelSymbols(){const t=[];for(const n of this.children.values())n instanceof GWe?t.push(n.symbol):t.push(...to.map(n.children.values(),r=>r.symbol));return t.sort((n,r)=>Ee.compareRangesUsingStarts(n.range,r.range))}asListOfDocumentSymbols(){const t=this.getTopLevelSymbols(),n=[];return rS._flattenDocumentSymbols(n,t,""),n.sort((r,o)=>it.compare(Ee.getStartPosition(r.range),Ee.getStartPosition(o.range))||it.compare(Ee.getEndPosition(o.range),Ee.getEndPosition(r.range)))}static _flattenDocumentSymbols(t,n,r){for(const o of n)t.push({kind:o.kind,tags:o.tags,name:o.name,detail:o.detail,containerName:o.containerName||r,range:o.range,selectionRange:o.selectionRange,children:void 0}),o.children&&rS._flattenDocumentSymbols(t,o.children,o.name)}}const ore=Cr("IOutlineModelService");let YWe=class{constructor(t,n,r){this._languageFeaturesService=t,this._disposables=new xt,this._cache=new wp(15,.7),this._debounceInformation=n.for(t.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(r.onModelRemoved(o=>{this._cache.delete(o.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(t,n){const r=this._languageFeaturesService.documentSymbolProvider,o=r.ordered(t);let s=this._cache.get(t.id);if(!s||s.versionId!==t.getVersionId()||!Na(s.provider,o)){const l=new ja;s={versionId:t.getVersionId(),provider:o,promiseCnt:0,source:l,promise:rS.create(r,t,l.token),model:void 0},this._cache.set(t.id,s);const d=Date.now();s.promise.then(u=>{s.model=u,this._debounceInformation.update(t,Date.now()-d)}).catch(u=>{this._cache.delete(t.id)})}if(s.model)return s.model;s.promiseCnt+=1;const a=n.onCancellationRequested(()=>{--s.promiseCnt===0&&(s.source.cancel(),this._cache.delete(t.id))});try{return await s.promise}finally{a.dispose()}}};YWe=awo([Lxe(0,Nn),Lxe(1,CA),Lxe(2,ml)],YWe);zr(ore,YWe,1);uo.registerCommand("_executeDocumentSymbolProvider",async function(e,...t){const[n]=t;Oo(vi.isUri(n));const r=e.get(ore),s=await e.get(Dg).createModelReference(n);try{return(await r.getOrCreate(s.object.textEditorModel,Er.None)).getTopLevelSymbols()}finally{s.dispose()}});const R3e=new class{constructor(){this._implementations=[]}register(t){return this._implementations.push(t),{dispose:()=>{const n=this._implementations.indexOf(t);n!==-1&&this._implementations.splice(n,1)}}}getImplementations(){return this._implementations}};var lwo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},cwo=function(e,t){return function(n,r){t(n,r,e)}};function dwo(e){return e instanceof XRn?e._instance:e}let XRn=class{constructor(t){this.instantiationService=t}init(...t){}};function uwo(e){return e.get()}let Xyt=class extends XRn{constructor(t,n){super(n),this.init(t)}};Xyt=lwo([cwo(1,Yn)],Xyt);class sre{validateOrThrow(t){const n=this.validate(t);if(n.error)throw new Error(n.error.message);return n.content}}class I3e extends sre{constructor(t){super(),this.type=t}validate(t){return typeof t!==this.type?{content:void 0,error:{message:`Expected ${this.type}, but got ${typeof t}`}}:{content:t,error:void 0}}getJSONSchema(){return{type:this.type}}}const hwo=new I3e("string");function fwo(){return hwo}new I3e("number");const gwo=new I3e("boolean");function Gyt(){return gwo}new I3e("object");class GRn extends sre{validate(t){return t!==void 0?{content:void 0,error:{message:`Expected undefined, but got ${typeof t}`}}:{content:void 0,error:void 0}}getJSONSchema(){return{}}}function mwo(){return new GRn}class ZWe{constructor(t){this.validator=t}}function xxe(e){return new ZWe(e)}class kwo extends sre{constructor(t){super(),this.properties=t}validate(t){if(typeof t!="object"||t===null)return{content:void 0,error:{message:"Expected object"}};const n={};for(const r in this.properties){const o=this.properties[r],s=t[r],a=o instanceof ZWe,l=a?o.validator:o;if(a&&s===void 0)continue;const{content:d,error:u}=l.validate(s);if(u)return{content:void 0,error:{message:`Error in property '${r}': ${u.message}`}};n[r]=d}return{content:n,error:void 0}}getJSONSchema(){const t=[],n={};for(const[o,s]of Object.entries(this.properties)){const a=s instanceof ZWe,l=a?s.validator:s;n[o]=l.getJSONSchema(),a||t.push(o)}return{type:"object",properties:n,...t.length>0?{required:t}:{}}}}function vwo(e){return new kwo(e)}class Awo extends sre{constructor(t){super(),this.validators=t}validate(t){let n;for(const r of this.validators){const{content:o,error:s}=r.validate(t);if(!s)return{content:o,error:void 0};n=s}return{content:void 0,error:n}}getJSONSchema(){return{oneOf:ato(this.validators,t=>{if(!(t instanceof GRn))return t.getJSONSchema()})}}}function pwo(...e){return new Awo(e)}class bwo extends sre{constructor(t,n){super(),this._ref=t,this._validator=n}validate(t){return this._validator.validate(t)}getJSONSchema(){return{$ref:this._ref}}}function wwo(e,t){return new bwo(e,t)}const _r={Visible:Ktt,HasFocusedSuggestion:new yn("suggestWidgetHasFocusedSuggestion",!1,U(1455,"Whether any suggestion is focused")),DetailsVisible:new yn("suggestWidgetDetailsVisible",!1,U(1456,"Whether suggestion details are visible")),MultipleSuggestions:new yn("suggestWidgetMultipleSuggestions",!1,U(1457,"Whether there are multiple suggestions to pick from")),MakesTextEdit:new yn("suggestionMakesTextEdit",!0,U(1458,"Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new yn("acceptSuggestionOnEnter",!0,U(1459,"Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new yn("suggestionHasInsertAndReplaceRange",!1,U(1460,"Whether the current suggestion has insert and replace behaviour")),InsertMode:new yn("suggestionInsertMode",void 0,{type:"string",description:U(1461,"Whether the default behaviour is to insert or replace")}),CanResolve:new yn("suggestionCanResolve",!1,U(1462,"Whether the current suggestion supports to resolve further details"))},j9=new Wn("suggestWidgetStatusBar");let Owo=class{constructor(t,n,r,o){var s;this.position=t,this.completion=n,this.container=r,this.provider=o,this.isInvalid=!1,this.score=q4.Default,this.distance=0,this.textLabel=typeof n.label=="string"?n.label:(s=n.label)==null?void 0:s.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=n.sortText&&n.sortText.toLowerCase(),this.filterTextLow=n.filterText&&n.filterText.toLowerCase(),this.extensionId=n.extensionId,Ee.isIRange(n.range)?(this.editStart=new it(n.range.startLineNumber,n.range.startColumn),this.editInsertEnd=new it(n.range.endLineNumber,n.range.endColumn),this.editReplaceEnd=new it(n.range.endLineNumber,n.range.endColumn),this.isInvalid=this.isInvalid||Ee.spansMultipleLines(n.range)||n.range.startLineNumber!==t.lineNumber):(this.editStart=new it(n.range.insert.startLineNumber,n.range.insert.startColumn),this.editInsertEnd=new it(n.range.insert.endLineNumber,n.range.insert.endColumn),this.editReplaceEnd=new it(n.range.replace.endLineNumber,n.range.replace.endColumn),this.isInvalid=this.isInvalid||Ee.spansMultipleLines(n.range.insert)||Ee.spansMultipleLines(n.range.replace)||n.range.insert.startLineNumber!==t.lineNumber||n.range.replace.startLineNumber!==t.lineNumber||n.range.insert.startColumn!==n.range.replace.startColumn),typeof o.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(t){if(!this._resolveCache){const n=t.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),r=new vu(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,t)).then(o=>{Object.assign(this.completion,o),this._resolveDuration=r.elapsed()},o=>{C2(o)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{n.dispose()})}return this._resolveCache}};const iAe=class iAe{constructor(t=2,n=new Set,r=new Set,o=new Map,s=!0){this.snippetSortOrder=t,this.kindFilter=n,this.providerFilter=r,this.providerItemsToReuse=o,this.showDeprecated=s}};iAe.default=new iAe;let JJ=iAe;class ywo{constructor(t,n,r,o){this.items=t,this.needsClipboard=n,this.durations=r,this.disposable=o}}async function Bnt(e,t,n,r=JJ.default,o={triggerKind:0},s=Er.None){const a=new vu;n=n.clone();const l=t.getWordAtPosition(n),d=l?new Ee(n.lineNumber,l.startColumn,n.lineNumber,l.endColumn):Ee.fromPositions(n),u={replace:d,insert:d.setEndPosition(n.lineNumber,n.column)},h=[],g=new xt,m=[];let v=!1;const f=(A,p,b)=>{var O;let w=!1;if(!p)return w;for(const y of p.suggestions)if(!r.kindFilter.has(y.kind)){if(!r.showDeprecated&&((O=y==null?void 0:y.tags)!=null&&O.includes(1)))continue;y.range||(y.range=u),y.sortText||(y.sortText=typeof y.label=="string"?y.label:y.label.label),!v&&y.insertTextRules&&y.insertTextRules&4&&(v=wR.guessNeedsClipboard(y.insertText)),h.push(new Owo(n,y,p,A)),w=!0}return AI(p)&&g.add(p),m.push({providerName:A._debugDisplayName??"unknown_provider",elapsedProvider:p.duration??-1,elapsedOverall:b.elapsed()}),w},k=(async()=>{})();for(const A of e.orderedGroups(t)){let p=!1;if(await Promise.all(A.map(async b=>{if(r.providerItemsToReuse.has(b)){const w=r.providerItemsToReuse.get(b);w.forEach(O=>h.push(O)),p=p||w.length>0;return}if(!(r.providerFilter.size>0&&!r.providerFilter.has(b)))try{const w=new vu,O=await b.provideCompletionItems(t,n,o,s);p=f(b,O,w)||p}catch(w){Nc(w)}})),p||s.isCancellationRequested)break}return await k,s.isCancellationRequested?(g.dispose(),Promise.reject(new lA)):new ywo(h.sort(Swo(r.snippetSortOrder)),v,{entries:m,elapsed:a.elapsed()},g)}function Rnt(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 Cwo(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===28)return-1;if(t.completion.kind===28)return 1}return Rnt(e,t)}function _wo(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===28)return 1;if(t.completion.kind===28)return-1}return Rnt(e,t)}const M3e=new Map;M3e.set(0,Cwo);M3e.set(2,_wo);M3e.set(1,Rnt);function Swo(e){return M3e.get(e)}uo.registerCommand("_executeCompletionItemProvider",async(e,...t)=>{const[n,r,o,s]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string"||!o),Oo(typeof s=="number"||!s);const{completionProvider:a}=e.get(Nn),l=await e.get(Dg).createModelReference(n);try{const d={incomplete:!1,suggestions:[]},u=[],h=l.object.textEditorModel.validatePosition(r),g=await Bnt(a,l.object.textEditorModel,h,void 0,{triggerCharacter:o??void 0,triggerKind:o?1:0});for(const m of g.items)u.length<(s??0)&&u.push(m.resolve(Er.None)),d.incomplete=d.incomplete||m.container.incomplete,d.suggestions.push(m.completion);try{return await Promise.all(u),d}finally{setTimeout(()=>g.disposable.dispose(),100)}}finally{l.dispose()}});function Lwo(e,t){var n;(n=e.getContribution("editor.contrib.suggestController"))==null||n.triggerSuggest(new Set().add(t),void 0,!0)}class CN{static isAllOff(t){return t.other==="off"&&t.comments==="off"&&t.strings==="off"}static isAllOn(t){return t.other==="on"&&t.comments==="on"&&t.strings==="on"}static valueFor(t,n){switch(n){case 1:return t.comments;case 2:return t.strings;default:return t.other}}}const Sk=class Sk{};Sk.inlineSuggestionVisible=new yn("inlineSuggestionVisible",!1,U(1192,"Whether an inline suggestion is visible")),Sk.inlineSuggestionHasIndentation=new yn("inlineSuggestionHasIndentation",!1,U(1193,"Whether the inline suggestion starts with whitespace")),Sk.inlineSuggestionHasIndentationLessThanTabSize=new yn("inlineSuggestionHasIndentationLessThanTabSize",!0,U(1194,"Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab")),Sk.suppressSuggestions=new yn("inlineSuggestionSuppressSuggestions",void 0,U(1195,"Whether suggestions should be suppressed for the current suggestion")),Sk.cursorBeforeGhostText=new yn("cursorBeforeGhostText",!1,U(1196,"Whether the cursor is at ghost text")),Sk.cursorInIndentation=new yn("cursorInIndentation",!1,U(1197,"Whether the cursor is in indentation")),Sk.hasSelection=new yn("editor.hasSelection",!1,U(1198,"Whether the editor has a selection")),Sk.cursorAtInlineEdit=new yn("cursorAtInlineEdit",!1,U(1199,"Whether the cursor is at an inline edit")),Sk.inlineEditVisible=new yn("inlineEditIsVisible",!1,U(1200,"Whether an inline edit is visible")),Sk.tabShouldJumpToInlineEdit=new yn("tabShouldJumpToInlineEdit",!1,U(1201,"Whether tab should jump to an inline edit.")),Sk.tabShouldAcceptInlineEdit=new yn("tabShouldAcceptInlineEdit",!1,U(1202,"Whether tab should accept the inline edit.")),Sk.inInlineEditsPreviewEditor=new yn("inInlineEditsPreviewEditor",!0,U(1203,"Whether the current code editor is showing an inline edits preview"));let Ns=Sk;class xwo{constructor(t,n,r){this._selection=t,this._cursors=n,this._selectionId=null,this._trimInRegexesAndStrings=r}getEditOperations(t,n){const r=Ewo(t,this._cursors,this._trimInRegexesAndStrings);for(let o=0,s=r.length;ol.lineNumber===d.lineNumber?l.column-d.column:l.lineNumber-d.lineNumber);for(let l=t.length-2;l>=0;l--)t[l].lineNumber===t[l+1].lineNumber&&t.splice(l,1);const r=[];let o=0,s=0;const a=t.length;for(let l=1,d=e.getLineCount();l<=d;l++){const u=e.getLineContent(l),h=u.length+1;let g=0;if(s1e5?`${r.substr(0,1e5)}…`:r;this._type.textContent=a,this._type.title=a,k0(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(a))}else uh(this._type),this._type.title="",tm(this._type),this.domNode.classList.add("no-type");if(uh(this._docs),typeof o=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=o;else if(o){this._docs.classList.add("markdown-docs"),uh(this._docs);const a=this._markdownRendererService.render(o,{context:this._editor,asyncRenderCallback:()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}});this._docs.appendChild(a.element),this._renderDisposeable.add(a)}this.domNode.classList.toggle("detail-and-doc",!!r&&!!o),this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=a=>{a.preventDefault(),a.stopPropagation()},this._close.onclick=a=>{a.preventDefault(),a.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get isEmpty(){return this.domNode.classList.contains("no-docs")}get size(){return this._size}layout(t,n){const r=new cs(t,n);cs.equals(r,this._size)||(this._size=r,Nto(this.domNode,t,n)),this._scrollbar.scanDomNode()}scrollDown(t=8){this._body.scrollTop+=t}scrollUp(t=8){this._body.scrollTop-=t}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}focus(){this.domNode.focus()}};pVe=Dyo([BCt(1,Dl),BCt(2,Cp)],pVe);class Byo{constructor(t,n){this.widget=t,this._editor=n,this.allowEditorOverflow=!0,this._disposables=new xt,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new Ytt,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(t.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let r,o,s=0,a=0;this._disposables.add(this._resizable.onDidWillResize(()=>{r=this._topLeft,o=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(l=>{if(r&&o){this.widget.layout(l.dimension.width,l.dimension.height);let d=!1;l.west&&(a=o.width-l.dimension.width,d=!0),l.north&&(s=o.height-l.dimension.height,d=!0),d&&this._applyTopLeft({top:r.top+s,left:r.left+a})}l.done&&(r=void 0,o=void 0,s=0,a=0,this._userSize=l.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{this._anchorBox&&this._placeAtAnchor(this._anchorBox,this._userSize??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 this._topLeft?{preference:this._topLeft}:null}show(){this._added||(this._editor.addOverlayWidget(this),this._added=!0)}hide(t=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),t&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(t,n){const r=t.getBoundingClientRect();this._anchorBox=r,this._preferAlignAtTop=n,this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,n)}_placeAtAnchor(t,n,r){const o=O6(this.getDomNode().ownerDocument.body),s=this.widget.getLayoutInfo(),a=new cs(220,2*s.lineHeight),l=t.top,d=function(){const y=o.width-(t.left+t.width+s.borderWidth+s.horizontalPadding),C=-s.borderWidth+t.left+t.width,_=new cs(y,o.height-t.top-s.borderHeight-s.verticalPadding),S=_.with(void 0,t.top+t.height-s.borderHeight-s.verticalPadding);return{top:l,left:C,fit:y-n.width,maxSizeTop:_,maxSizeBottom:S,minSize:a.with(Math.min(y,a.width))}}(),u=function(){const y=t.left-s.borderWidth-s.horizontalPadding,C=Math.max(s.horizontalPadding,t.left-n.width-s.borderWidth),_=new cs(y,o.height-t.top-s.borderHeight-s.verticalPadding),S=_.with(void 0,t.top+t.height-s.borderHeight-s.verticalPadding);return{top:l,left:C,fit:y-n.width,maxSizeTop:_,maxSizeBottom:S,minSize:a.with(Math.min(y,a.width))}}(),h=function(){const y=t.left,C=-s.borderWidth+t.top+t.height,_=new cs(t.width-s.borderHeight,o.height-t.top-t.height-s.verticalPadding);return{top:C,left:y,fit:_.height-n.height,maxSizeBottom:_,maxSizeTop:_,minSize:a.with(_.width)}}(),g=[d,u,h],m=g.find(y=>y.fit>=0)??g.sort((y,C)=>C.fit-y.fit)[0],v=t.top+t.height-s.borderHeight;let f,k=n.height;const A=Math.max(m.maxSizeTop.height,m.maxSizeBottom.height);k>A&&(k=A);let p;r?k<=m.maxSizeTop.height?(f=!0,p=m.maxSizeTop):(f=!1,p=m.maxSizeBottom):k<=m.maxSizeBottom.height?(f=!1,p=m.maxSizeBottom):(f=!0,p=m.maxSizeTop);let{top:b,left:w}=m;!f&&k>t.height&&(b=v-k);const O=this._editor.getDomNode();if(O){const y=O.getBoundingClientRect();b-=y.top,w-=y.left}this._applyTopLeft({left:w,top:b}),this._resizable.enableSashes(!f,m===d,f,m!==d),this._resizable.minSize=m.minSize,this._resizable.maxSize=p,this._resizable.layout(k,Math.min(p.width,n.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(t){this._topLeft=t,this._editor.layoutOverlayWidget(this)}}const RCt=Cr("fileService");var XO;(function(e){e[e.FILE=0]="FILE",e[e.FOLDER=1]="FOLDER",e[e.ROOT_FOLDER=2]="ROOT_FOLDER"})(XO||(XO={}));const Ryo=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function sce(e,t,n,r,o){if(fi.isThemeIcon(o))return[`codicon-${o.id}`,"predefined-file-icon"];if(vi.isUri(o))return[];const s=r===XO.ROOT_FOLDER?["rootfolder-icon"]:r===XO.FOLDER?["folder-icon"]:["file-icon"];if(n){let a;if(n.scheme===Ci.data)a=_6.parseMetaData(n).get(_6.META_DATA_LABEL);else{const l=n.path.match(Ryo);l?(a=ace(l[2].toLowerCase()),l[1]&&s.push(`${ace(l[1].toLowerCase())}-name-dir-icon`)):a=ace(n.authority.toLowerCase())}if(r===XO.ROOT_FOLDER)s.push(`${a}-root-name-folder-icon`);else if(r===XO.FOLDER)s.push(`${a}-name-folder-icon`);else{if(a){if(s.push(`${a}-name-file-icon`),s.push("name-file-icon"),a.length<=255){const d=a.split(".");for(let u=1;u=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Qxe=function(e,t){return function(n,r){t(n,r,e)}};const Pyo=Da("suggest-more-info",zt.chevronRight,U(1492,"Icon for more information in the suggest widget."));var jb;const Fyo=new(jb=class{extract(t,n){if(t.textLabel.match(jb._regexStrict))return n[0]=t.textLabel,!0;if(t.completion.detail&&t.completion.detail.match(jb._regexStrict))return n[0]=t.completion.detail,!0;if(t.completion.documentation){const r=typeof t.completion.documentation=="string"?t.completion.documentation:t.completion.documentation.value,o=jb._regexRelaxed.exec(r);if(o&&(o.index===0||o.index+o[0].length===r.length))return n[0]=o[0],!0}return!1}},jb._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*\))/,jb._regexStrict=new RegExp(`^${jb._regexRelaxed.source}$`,"i"),jb);let bVe=class{constructor(t,n,r,o){this._editor=t,this._modelService=n,this._languageService=r,this._themeService=o,this._onDidToggleDetails=new at,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(t){const n=new xt,r=t;r.classList.add("show-file-icons");const o=Xt(t,tn(".icon")),s=Xt(o,tn("span.colorspan")),a=Xt(t,tn(".contents")),l=Xt(a,tn(".main")),d=Xt(l,tn(".icon-label.codicon")),u=Xt(l,tn("span.left")),h=Xt(l,tn("span.right")),g=new GJ(u,{supportHighlights:!0,supportIcons:!0});n.add(g);const m=Xt(u,tn("span.signature-label")),v=Xt(u,tn("span.qualifier-label")),f=Xt(h,tn("span.details-label")),k=Xt(h,tn("span.readMore"+fi.asCSSSelector(Pyo)));return k.title=U(1493,"Read More"),{root:r,left:u,right:h,icon:o,colorspan:s,iconLabel:g,iconContainer:d,parametersLabel:m,qualifierLabel:v,detailsLabel:f,readMore:k,disposables:n,configureFont:()=>{const p=this._editor.getOptions(),b=p.get(59),w=b.getMassagedFontFamily(),O=b.fontFeatureSettings,y=b.fontVariationSettings,C=p.get(135)||b.fontSize,_=p.get(136)||b.lineHeight,S=b.fontWeight,L=b.letterSpacing,E=`${C}px`,T=`${_}px`,D=`${L}px`;r.style.fontSize=E,r.style.fontWeight=S,r.style.letterSpacing=D,l.style.fontFamily=w,l.style.fontFeatureSettings=O,l.style.fontVariationSettings=y,l.style.lineHeight=T,o.style.height=T,o.style.width=T,k.style.height=T,k.style.width=T}}}renderElement(t,n,r){r.configureFont();const{completion:o}=t;r.colorspan.style.backgroundColor="";const s={labelEscapeNewLines:!0,matches:Uie(t.score)},a=[];if(o.kind===19&&Fyo.extract(t,a))r.icon.className="icon customcolor",r.iconContainer.className="icon hide",r.colorspan.style.backgroundColor=a[0];else if(o.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){r.icon.className="icon hide",r.iconContainer.className="icon hide";const l=sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:t.textLabel}),XO.FILE),d=sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:o.detail}),XO.FILE);s.extraClasses=l.length>d.length?l:d}else o.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(r.icon.className="icon hide",r.iconContainer.className="icon hide",s.extraClasses=[sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:t.textLabel}),XO.FOLDER),sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:o.detail}),XO.FOLDER)].flat()):(r.icon.className="icon hide",r.iconContainer.className="",r.iconContainer.classList.add("suggest-icon",...fi.asClassNameArray(dV.toIcon(o.kind))));o.tags&&o.tags.indexOf(1)>=0&&(s.extraClasses=(s.extraClasses||[]).concat(["deprecated"]),s.matches=[]),r.iconLabel.setLabel(t.textLabel,void 0,s),typeof o.label=="string"?(r.parametersLabel.textContent="",r.detailsLabel.textContent=Dxe(o.detail||""),r.root.classList.add("string-label")):(r.parametersLabel.textContent=Dxe(o.label.detail||""),r.detailsLabel.textContent=Dxe(o.label.description||""),r.root.classList.remove("string-label")),this._editor.getOption(134).showInlineDetails?k0(r.detailsLabel):tm(r.detailsLabel),Fnt(t)?(r.right.classList.add("can-expand-details"),k0(r.readMore),r.readMore.onmousedown=l=>{l.stopPropagation(),l.preventDefault()},r.readMore.onclick=l=>{l.stopPropagation(),l.preventDefault(),this._onDidToggleDetails.fire()}):(r.right.classList.remove("can-expand-details"),tm(r.readMore),r.readMore.onmousedown=null,r.readMore.onclick=null)}disposeTemplate(t){t.disposables.dispose()}};bVe=Myo([Qxe(1,ml),Qxe(2,nc),Qxe(3,Dl)],bVe);function Dxe(e){return e.replace(/\r\n|\r|\n/g,"")}var Nyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},lce=function(e,t){return function(n,r){t(n,r,e)}},RF;Ve("editorSuggestWidget.background",Gk,U(1473,"Background color of the suggest widget."));Ve("editorSuggestWidget.border",pet,U(1474,"Border color of the suggest widget."));const Uyo=Ve("editorSuggestWidget.foreground",Ky,U(1475,"Foreground color of the suggest widget."));Ve("editorSuggestWidget.selectedForeground",sJ,U(1476,"Foreground color of the selected entry in the suggest widget."));Ve("editorSuggestWidget.selectedIconForeground",Qet,U(1477,"Icon foreground color of the selected entry in the suggest widget."));const jyo=Ve("editorSuggestWidget.selectedBackground",aJ,U(1478,"Background color of the selected entry in the suggest widget."));Ve("editorSuggestWidget.highlightForeground",gN,U(1479,"Color of the match highlights in the suggest widget."));Ve("editorSuggestWidget.focusHighlightForeground",Zso,U(1480,"Color of the match highlights in the suggest widget when an item is focused."));Ve("editorSuggestWidgetStatus.foreground",Zi(Uyo,.5),U(1481,"Foreground color of the suggest widget status."));class Wyo{constructor(t,n){this._service=t,this._key=`suggestWidget.size/${n.getEditorType()}/${n instanceof X8}`}restore(){const t=this._service.get(this._key,0)??"";try{const n=JSON.parse(t);if(cs.is(n))return cs.lift(n)}catch{}}store(t){this._service.store(this._key,JSON.stringify(t),0,1)}reset(){this._service.remove(this._key,0)}}var r6;let wVe=(r6=class{constructor(t,n,r,o,s){this.editor=t,this._storageService=n,this._state=0,this._isAuto=!1,this._pendingLayout=new ts,this._pendingShowDetails=new ts,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new I0,this._disposables=new xt,this._onDidSelect=new rR,this._onDidFocus=new rR,this._onDidHide=new at,this._onDidShow=new at,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new at,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new Ytt,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new Vyo(this,t),this._persistedSize=new Wyo(n,t);class a{constructor(v,f,k=!1,A=!1){this.persistedSize=v,this.currentSize=f,this.persistHeight=k,this.persistWidth=A}}let l;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),l=new a(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(m=>{var v,f;if(this._resize(m.dimension.width,m.dimension.height),l&&(l.persistHeight=l.persistHeight||!!m.north||!!m.south,l.persistWidth=l.persistWidth||!!m.east||!!m.west),!!m.done){if(l){const{itemHeight:k,defaultSize:A}=this.getLayoutInfo(),p=Math.round(k/2);let{width:b,height:w}=this.element.size;(!l.persistHeight||Math.abs(l.currentSize.height-w)<=p)&&(w=((v=l.persistedSize)==null?void 0:v.height)??A.height),(!l.persistWidth||Math.abs(l.currentSize.width-b)<=p)&&(b=((f=l.persistedSize)==null?void 0:f.width)??A.width),this._persistedSize.store(new cs(b,w))}this._contentWidget.unlockPreference(),l=void 0}})),this._messageElement=Xt(this.element.domNode,tn(".message")),this._listElement=Xt(this.element.domNode,tn(".tree"));const d=this._disposables.add(s.createInstance(pVe,this.editor));d.onDidClose(()=>this.toggleDetails(),this,this._disposables),this._details=new Byo(d,this.editor);const u=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(134).showIcons);u();const h=s.createInstance(bVe,this.editor);this._disposables.add(h),this._disposables.add(h.onDidToggleDetails(()=>this.toggleDetails())),this._list=new _2("SuggestWidget",this._listElement,{getHeight:m=>this.getLayoutInfo().itemHeight,getTemplateId:m=>"suggestion"},[h],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>mh?"listitem":"option",getWidgetAriaLabel:()=>U(1484,"Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:m=>{let v=m.textLabel;const f=dV.toLabel(m.completion.kind);if(typeof m.completion.label!="string"){const{detail:b,description:w}=m.completion.label;b&&w?v=U(1485,"{0} {1}, {2}, {3}",v,b,w,f):b?v=U(1486,"{0} {1}, {2}",v,b,f):w&&(v=U(1487,"{0}, {1}, {2}",v,w,f))}else v=U(1488,"{0}, {1}",v,f);if(!m.isResolved||!this._isDetailsVisible())return v;const{documentation:k,detail:A}=m.completion,p=oR("{0}{1}",A||"",k?typeof k=="string"?k:k.value:"");return U(1489,"{0}, docs: {1}",v,p)}}}),this._list.style(TI({listInactiveFocusBackground:jyo,listInactiveFocusOutline:Va})),this._status=s.createInstance(AVe,this.element.domNode,j9);const g=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(134).showStatusBar);g(),this._disposables.add(this._list.onMouseDown(m=>this._onListMouseDownOrTap(m))),this._disposables.add(this._list.onTap(m=>this._onListMouseDownOrTap(m))),this._disposables.add(this._list.onDidChangeSelection(m=>this._onListSelection(m))),this._disposables.add(this._list.onDidChangeFocus(m=>this._onListFocus(m))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(m=>{m.hasChanged(134)&&(g(),u()),this._completionModel&&(m.hasChanged(59)||m.hasChanged(135)||m.hasChanged(136))&&this._list.splice(0,this._list.length,this._completionModel.items)})),this._ctxSuggestWidgetVisible=_r.Visible.bindTo(r),this._ctxSuggestWidgetDetailsVisible=_r.DetailsVisible.bindTo(r),this._ctxSuggestWidgetMultipleSuggestions=_r.MultipleSuggestions.bindTo(r),this._ctxSuggestWidgetHasFocusedSuggestion=_r.HasFocusedSuggestion.bindTo(r),this._disposables.add(wc(this._details.widget.domNode,"keydown",m=>{this._onDetailsKeydown.fire(m)})),this._disposables.add(this.editor.onMouseDown(m=>this._onEditorMouseDown(m)))}dispose(){var t;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(t=this._loadingTimeout)==null||t.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(t){this._details.widget.domNode.contains(t.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(t.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(t){typeof t.element>"u"||typeof t.index>"u"||(t.browserEvent.preventDefault(),t.browserEvent.stopPropagation(),this._select(t.element,t.index))}_onListSelection(t){t.elements.length&&this._select(t.elements[0],t.indexes[0])}_select(t,n){const r=this._completionModel;r&&(this._onDidSelect.fire({item:t,index:n,model:r}),this.editor.focus())}_onListFocus(t){var o;if(this._ignoreFocusEvents)return;if(this._state===5&&this._setState(3),!t.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const n=t.elements[0],r=t.indexes[0];n!==this._focusedItem&&((o=this._currentSuggestionDetails)==null||o.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=n,this._list.reveal(r),this._currentSuggestionDetails=Fd(async s=>{const a=B8(()=>{this._isDetailsVisible()&&this._showDetails(!0,!1)},250),l=s.onCancellationRequested(()=>a.dispose());try{return await n.resolve(s)}finally{a.dispose(),l.dispose()}}),this._currentSuggestionDetails.then(()=>{r>=this._list.length||n!==this._list.element(r)||(this._ignoreFocusEvents=!0,this._list.splice(r,1,[n]),this._list.setFocus([r]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this._showDetails(!1,!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:this._list.getElementID(r)}))}).catch(zi)),this._onDidFocus.fire({item:n,index:r,model:this._completionModel})}_setState(t){if(this._state!==t)switch(this._state=t,this.element.domNode.classList.toggle("frozen",t===4),this.element.domNode.classList.remove("message"),t){case 0:tm(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=RF.LOADING_MESSAGE,tm(this._listElement,this._status.element),k0(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,A3(RF.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=RF.NO_SUGGESTIONS_MESSAGE,tm(this._listElement,this._status.element),k0(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,A3(RF.NO_SUGGESTIONS_MESSAGE);break;case 3:tm(this._messageElement),k0(this._listElement,this._status.element),this._show();break;case 4:tm(this._messageElement),k0(this._listElement,this._status.element),this._show();break;case 5:tm(this._messageElement),k0(this._listElement,this._status.element),this._details.show(),this._show(),this._details.widget.focus();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(t,n){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!t,this._isAuto||(this._loadingTimeout=B8(()=>this._setState(1),n)))}showSuggestions(t,n,r,o,s){var d,u;if(this._contentWidget.setPosition(this.editor.getPosition()),(d=this._loadingTimeout)==null||d.dispose(),(u=this._currentSuggestionDetails)==null||u.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==t&&(this._completionModel=t),r&&this._state!==2&&this._state!==0){this._setState(4);return}const a=this._completionModel.items.length,l=a===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(a>1),l){this._setState(o?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(r?4:3),this._list.reveal(n,0,n===0?0:this.getLayoutInfo().itemHeight*.33),this._list.setFocus(s?[]:[n])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=Lme(ii(this.element.domNode),()=>{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(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._list.setFocus(this._list.getFocus()),this._setState(3)):this._state===3&&(this._setState(5),this._isDetailsVisible()?this._details.widget.focus():this.toggleDetails(!0))}toggleDetails(t=!1){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):(Fnt(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this._showDetails(!1,t))}_showDetails(t,n){this._pendingShowDetails.value=Lme(ii(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show();let r=!1;t?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._details.widget.isEmpty?this._details.hide():(this._positionDetails(),this.element.domNode.classList.add("shows-details"),n&&(this._details.widget.focus(),r=!0)),r||this.editor.focus()})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this._showDetails(!1,!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var r;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(r=this._loadingTimeout)==null||r.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const t=this._persistedSize.restore(),n=Math.ceil(this.getLayoutInfo().itemHeight*4.3);t&&t.heightd&&(s=d);const u=this._completionModel?this._completionModel.stats.pLabelLen*r.typicalHalfwidthCharacterWidth:s,h=r.statusBarHeight+this._list.contentHeight+r.borderHeight,g=r.itemHeight+r.statusBarHeight,m=Kl(this.editor.getDomNode()),v=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),f=m.top+v.top+v.height,k=Math.min(n.height-f-r.verticalPadding,h),A=m.top+v.top-r.verticalPadding,p=Math.min(A,h);let b=Math.min(Math.max(p,k)+r.borderHeight,h);o===((a=this._cappedHeight)==null?void 0:a.capped)&&(o=this._cappedHeight.wanted),ob&&(o=b),o>k&&p>k||this._forceRenderingAbove&&A>150?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),b=p):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),b=k),this.element.preferredSize=new cs(u,r.defaultSize.height),this.element.maxSize=new cs(d,b),this.element.minSize=new cs(220,g),this._cappedHeight=o===h?{wanted:((l=this._cappedHeight)==null?void 0:l.wanted)??t.height,capped:o}:void 0}this._resize(s,o)}_resize(t,n){const{width:r,height:o}=this.element.maxSize;t=Math.min(r,t),n=Math.min(o,n);const{statusBarHeight:s}=this.getLayoutInfo();this._list.layout(n-s,t),this._listElement.style.height=`${n-s}px`,this.element.layout(n,t),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var t;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((t=this._contentWidget.getPosition())==null?void 0:t.preference[0])===2)}getLayoutInfo(){const t=this.editor.getOption(59),n=Zg(this.editor.getOption(136)||t.lineHeight,8,1e3),r=!this.editor.getOption(134).showStatusBar||this._state===2||this._state===1?0:n,o=this._details.widget.getLayoutInfo().borderWidth,s=2*o;return{itemHeight:n,statusBarHeight:r,borderWidth:o,borderHeight:s,typicalHalfwidthCharacterWidth:t.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new cs(430,r+12*n)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(t){this._storageService.store("expandSuggestionDocs",t,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}},RF=r6,r6.LOADING_MESSAGE=U(1482,"Loading..."),r6.NO_SUGGESTIONS_MESSAGE=U(1483,"No suggestions."),r6);wVe=RF=Nyo([lce(1,Bg),lce(2,Qi),lce(3,Dl),lce(4,Yn)],wVe);class Vyo{constructor(t,n){this._widget=t,this._editor=n,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?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:t,width:n}=this._widget.element.size,{borderWidth:r,horizontalPadding:o}=this._widget.getLayoutInfo();return new cs(n+2*r+o,t+2*r)}afterRender(t){this._widget._afterRender(t)}setPreference(t){this._preferenceLocked||(this._preference=t)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(t){this._position=t}}var zyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},MP=function(e,t){return function(n,r){t(n,r,e)}},OVe;class Hyo{constructor(t,n){if(this._model=t,this._position=n,this._decorationOptions=Gi.register({description:"suggest-line-suffix",stickiness:1}),t.getLineMaxColumn(n.lineNumber)!==n.column){const o=t.getOffsetAt(n),s=t.getPositionAt(o+1);t.changeDecorations(a=>{this._marker&&a.removeDecoration(this._marker),this._marker=a.addDecoration(Ee.fromPositions(n,s),this._decorationOptions)})}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations(t=>{t.removeDecoration(this._marker),this._marker=void 0})}delta(t){if(this._model.isDisposed()||this._position.lineNumber!==t.lineNumber)return 0;if(this._marker){const n=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(n.getStartPosition())-this._model.getOffsetAt(t)}else return this._model.getLineMaxColumn(t.lineNumber)-t.column}}var lB;let Kb=(lB=class{static get(t){return t.getContribution(OVe.ID)}get onWillInsertSuggestItem(){return this._onWillInsertSuggestItem.event}constructor(t,n,r,o,s,a,l){this._memoryService=n,this._commandService=r,this._contextKeyService=o,this._instantiationService=s,this._logService=a,this._telemetryService=l,this._lineSuffix=new ts,this._toDispose=new xt,this._selectors=new $yo(g=>g.priority),this._onWillInsertSuggestItem=new at,this._wantsForceRenderingAbove=!1,this.editor=t,this.model=s.createInstance(V0e,this.editor),this._selectors.register({priority:0,select:(g,m,v)=>this._memoryService.select(g,m,v)});const d=_r.InsertMode.bindTo(o);d.set(t.getOption(134).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>d.set(t.getOption(134).insertMode))),this.widget=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>{const g=this._instantiationService.createInstance(wVe,this.editor);this._toDispose.add(g),this._toDispose.add(g.onDidSelect(A=>this._insertSuggestion(A,0),this));const m=new Lyo(this.editor,g,this.model,A=>this._insertSuggestion(A,2));this._toDispose.add(m);const v=_r.MakesTextEdit.bindTo(this._contextKeyService),f=_r.HasInsertAndReplaceRange.bindTo(this._contextKeyService),k=_r.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add(Hn(()=>{v.reset(),f.reset(),k.reset()})),this._toDispose.add(g.onDidFocus(({item:A})=>{const p=this.editor.getPosition(),b=A.editStart.column,w=p.column;let O=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!A.completion.additionalTextEdits&&!(A.completion.insertTextRules&4)&&w-b===A.completion.insertText.length&&(O=this.editor.getModel().getValueInRange({startLineNumber:p.lineNumber,startColumn:b,endLineNumber:p.lineNumber,endColumn:w})!==A.completion.insertText),v.set(O),f.set(!it.equals(A.editInsertEnd,A.editReplaceEnd)),k.set(!!A.provider.resolveCompletionItem||!!A.completion.documentation||A.completion.detail!==A.completion.label)})),this._toDispose.add(g.onDetailsKeyDown(A=>{if(A.toKeyCodeChord().equals(new D8(!0,!1,!1,!1,33))||Tr&&A.toKeyCodeChord().equals(new D8(!1,!1,!1,!0,33))){A.stopPropagation();return}A.toKeyCodeChord().isModifierKey()||this.editor.focus()})),this._wantsForceRenderingAbove&&g.forceRenderingAbove(),g})),this._overtypingCapturer=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>this._toDispose.add(new vVe(this.editor,this.model)))),this._alternatives=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>this._toDispose.add(new _V(this.editor,this._contextKeyService)))),this._toDispose.add(s.createInstance(U0e,t)),this._toDispose.add(this.model.onDidTrigger(g=>{this.widget.value.showTriggered(g.auto,g.shy?250:50),this._lineSuffix.value=new Hyo(this.editor.getModel(),g.position)})),this._toDispose.add(this.model.onDidSuggest(g=>{if(g.triggerOptions.shy)return;let m=-1;for(const f of this._selectors.itemsOrderedByPriorityDesc)if(m=f.select(this.editor.getModel(),this.editor.getPosition(),g.completionModel.items),m!==-1)break;if(m===-1&&(m=0),this.model.state===0)return;let v=!1;if(g.triggerOptions.auto){const f=this.editor.getOption(134);f.selectionMode==="never"||f.selectionMode==="always"?v=f.selectionMode==="never":f.selectionMode==="whenTriggerCharacter"?v=g.triggerOptions.triggerKind!==1:f.selectionMode==="whenQuickSuggestion"&&(v=g.triggerOptions.triggerKind===1&&!g.triggerOptions.refilter)}this.widget.value.showSuggestions(g.completionModel,m,g.isFrozen,g.triggerOptions.auto,v)})),this._toDispose.add(this.model.onDidCancel(g=>{g.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{this.model.cancel(),this.model.clear()}));const u=_r.AcceptSuggestionsOnEnter.bindTo(o),h=()=>{const g=this.editor.getOption(1);u.set(g==="on"||g==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>h())),h()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(t,n){var f;if(!t||!t.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const r=xg.get(this.editor);if(!r)return;this._onWillInsertSuggestItem.fire({item:t.item});const o=this.editor.getModel(),s=o.getAlternativeVersionId(),{item:a}=t,l=[],d=new ja;n&1||this.editor.pushUndoStop();const u=this.getOverwriteInfo(a,!!(n&8));this._memoryService.memorize(o,this.editor.getPosition(),a);const h=a.isResolved;let g=-1,m=-1;if(Array.isArray(a.completion.additionalTextEdits)){this.model.cancel();const k=O3.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",a.completion.additionalTextEdits.map(A=>{let p=Ee.lift(A.range);if(p.startLineNumber===a.position.lineNumber&&p.startColumn>a.position.column){const b=this.editor.getPosition().column-a.position.column,w=b,O=Ee.spansMultipleLines(p)?0:b;p=new Ee(p.startLineNumber,p.startColumn+w,p.endLineNumber,p.endColumn+O)}return $l.replaceMove(p,A.text)})),k.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!h){const k=new vu;let A;const p=o.onDidChangeContent(y=>{if(y.isFlush){d.cancel(),p.dispose();return}for(const C of y.changes){const _=Ee.getEndPosition(C.range);(!A||it.isBefore(_,A))&&(A=_)}}),b=n;n|=2;let w=!1;const O=this.editor.onWillType(()=>{O.dispose(),w=!0,b&2||this.editor.pushUndoStop()});l.push(a.resolve(d.token).then(()=>{if(!a.completion.additionalTextEdits||d.token.isCancellationRequested)return;if(A&&a.completion.additionalTextEdits.some(C=>it.isBefore(A,Ee.getStartPosition(C.range))))return!1;w&&this.editor.pushUndoStop();const y=O3.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",a.completion.additionalTextEdits.map(C=>$l.replaceMove(Ee.lift(C.range),C.text))),y.restoreRelativeVerticalPositionOfCursor(this.editor),(w||!(b&2))&&this.editor.pushUndoStop(),!0}).then(y=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",k.elapsed(),y),m=y===!0?1:y===!1?0:-2}).finally(()=>{p.dispose(),O.dispose()}))}let{insertText:v}=a.completion;if(a.completion.insertTextRules&4||(v=wR.escape(v)),this.model.cancel(),r.insert(v,{overwriteBefore:u.overwriteBefore,overwriteAfter:u.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(a.completion.insertTextRules&1),clipboardText:t.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value,reason:Af.suggest({providerId:r3e.fromExtensionId((f=a.extensionId)==null?void 0:f.value)})}),n&2||this.editor.pushUndoStop(),a.completion.command)if(a.completion.command.id===z0e.id)this.model.trigger({auto:!0,retrigger:!0});else{const k=new vu;l.push(this._commandService.executeCommand(a.completion.command.id,...a.completion.command.arguments?[...a.completion.command.arguments]:[]).catch(A=>{a.completion.extensionId?Nc(A):zi(A)}).finally(()=>{g=k.elapsed()}))}n&4&&this._alternatives.value.set(t,k=>{for(d.cancel();o.canUndo();){s!==o.getAlternativeVersionId()&&o.undo(),this._insertSuggestion(k,3|(n&8?8:0));break}}),this._alertCompletionItem(a),Promise.all(l).finally(()=>{this._reportSuggestionAcceptedTelemetry(a,o,h,g,m,t.index,t.model.items),this.model.clear(),d.dispose()})}_reportSuggestionAcceptedTelemetry(t,n,r,o,s,a,l){var m;if(Math.random()>1e-4)return;const d=new Map;for(let v=0;v1?u[0]:-1;this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:((m=t.extensionId)==null?void 0:m.value)??"unknown",providerId:t.provider._debugDisplayName??"unknown",kind:t.completion.kind,basenameHash:Lie(hA(n.uri)).toString(16),languageId:n.getLanguageId(),fileExtension:Bno(n.uri),resolveInfo:t.provider.resolveCompletionItem?r?1:0:-1,resolveDuration:t.resolveDuration,commandDuration:o,additionalEditsAsync:s,index:a,firstIndex:g})}getOverwriteInfo(t,n){Oo(this.editor.hasModel());let r=this.editor.getOption(134).insertMode==="replace";n&&(r=!r);const o=t.position.column-t.editStart.column,s=(r?t.editReplaceEnd.column:t.editInsertEnd.column)-t.position.column,a=this.editor.getPosition().column-t.position.column,l=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:o+a,overwriteAfter:s+l}}_alertCompletionItem(t){if(yg(t.completion.additionalTextEdits)){const n=U(1463,"Accepting '{0}' made {1} additional edits",t.textLabel,t.completion.additionalTextEdits.length);um(n)}}triggerSuggest(t,n,r){this.editor.hasModel()&&(this.model.trigger({auto:n??!1,completionOptions:{providerFilter:t,kindFilter:r?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(t){if(!this.editor.hasModel())return;const n=this.editor.getPosition(),r=()=>{n.equals(this.editor.getPosition())&&this._commandService.executeCommand(t.fallback)},o=s=>{if(s.completion.insertTextRules&4||s.completion.additionalTextEdits)return!0;const a=this.editor.getPosition(),l=s.editStart.column,d=a.column;return d-l!==s.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:a.lineNumber,startColumn:l,endLineNumber:a.lineNumber,endColumn:d})!==s.completion.insertText};an.once(this.model.onDidTrigger)(s=>{const a=[];an.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{us(a),r()},void 0,a),this.model.onDidSuggest(({completionModel:l})=>{if(us(a),l.items.length===0){r();return}const d=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),l.items),u=l.items[d];if(!o(u)){r();return}this.editor.pushUndoStop(),this._insertSuggestion({index:d,item:u,model:l},7)},void 0,a)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(n,0),this.editor.focus()}acceptSelectedSuggestion(t,n){const r=this.widget.value.getFocusedItem();let o=0;t&&(o|=4),n&&(o|=8),this._insertSuggestion(r,o)}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.isInitialized?this.widget.value.forceRenderingAbove():this._wantsForceRenderingAbove=!0}stopForceRenderingAbove(){this.widget.isInitialized?this.widget.value.stopForceRenderingAbove():this._wantsForceRenderingAbove=!1}registerSelector(t){return this._selectors.register(t)}},OVe=lB,lB.ID="editor.contrib.suggestController",lB);Kb=OVe=zyo([MP(1,N3e),MP(2,ba),MP(3,Qi),MP(4,Yn),MP(5,va),MP(6,Nf)],Kb);class $yo{constructor(t){this.prioritySelector=t,this._items=new Array}register(t){if(this._items.indexOf(t)!==-1)throw new Error("Value is already registered");return this._items.push(t),this._items.sort((n,r)=>this.prioritySelector(r)-this.prioritySelector(n)),{dispose:()=>{const n=this._items.indexOf(t);n>=0&&this._items.splice(n,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}const fAe=class fAe extends Bn{constructor(){super({id:fAe.id,label:_t(1471,"Trigger Suggest"),precondition:Ft.and($e.writable,$e.hasCompletionItemProvider,_r.Visible.toNegated()),kbOpts:{kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(t,n,r){const o=Kb.get(n);if(!o)return;let s;r&&typeof r=="object"&&r.auto===!0&&(s=!0),o.triggerSuggest(void 0,s,void 0)}};fAe.id="editor.action.triggerSuggest";let z0e=fAe;mo(Kb.ID,Kb,2);un(z0e);const m2=190,bm=$d.bindToContribution(Kb.get);On(new bm({id:"acceptSelectedSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion),handler(e){e.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:Ft.and(_r.Visible,$e.textInputFocus),weight:m2},{primary:3,kbExpr:Ft.and(_r.Visible,$e.textInputFocus,_r.AcceptSuggestionsOnEnter,_r.MakesTextEdit),weight:m2}],menuOpts:[{menuId:j9,title:U(1464,"Insert"),group:"left",order:1,when:_r.HasInsertAndReplaceRange.toNegated()},{menuId:j9,title:U(1465,"Insert"),group:"left",order:1,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("insert"))},{menuId:j9,title:U(1466,"Replace"),group:"left",order:1,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("replace"))}]}));On(new bm({id:"acceptAlternativeSelectedSuggestion",precondition:Ft.and(_r.Visible,$e.textInputFocus,_r.HasFocusedSuggestion),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:1027,secondary:[1026]},handler(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:j9,group:"left",order:2,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("insert")),title:U(1467,"Replace")},{menuId:j9,group:"left",order:2,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("replace")),title:U(1468,"Insert")}]}));co.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion");On(new bm({id:"hideSuggestWidget",precondition:_r.Visible,handler:e=>e.cancelSuggestWidget(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:9,secondary:[1033]}}));On(new bm({id:"selectNextSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectNextSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}}));On(new bm({id:"selectNextPageSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectNextPageSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:12,secondary:[2060]}}));On(new bm({id:"selectLastSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectLastSuggestion()}));On(new bm({id:"selectPrevSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}}));On(new bm({id:"selectPrevPageSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevPageSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:11,secondary:[2059]}}));On(new bm({id:"selectFirstSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectFirstSuggestion()}));On(new bm({id:"focusSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion.negate()),handler:e=>e.focusSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}}));On(new bm({id:"focusAndAcceptSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion.negate()),handler:e=>{e.focusSuggestion(),e.acceptSelectedSuggestion(!0,!1)}}));On(new bm({id:"toggleSuggestionDetails",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion),handler:e=>e.toggleSuggestionDetails(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:j9,group:"right",order:1,when:Ft.and(_r.DetailsVisible,_r.CanResolve),title:U(1469,"Show Less")},{menuId:j9,group:"right",order:1,when:Ft.and(_r.DetailsVisible.toNegated(),_r.CanResolve),title:U(1470,"Show More")}]}));On(new bm({id:"toggleExplainMode",precondition:_r.Visible,handler:e=>e.toggleExplainMode(),kbOpts:{weight:100,primary:2138}}));On(new bm({id:"toggleSuggestionFocus",precondition:_r.Visible,handler:e=>e.toggleSuggestionFocus(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2570,mac:{primary:778}}}));On(new bm({id:"insertBestCompletion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),U0e.AtEnd,_r.Visible.toNegated(),_V.OtherSuggestions.toNegated(),xg.InSnippetMode.toNegated()),handler:(e,t)=>{e.triggerSuggestAndAcceptBest(Pd(t)?{fallback:"tab",...t}:{fallback:"tab"})},kbOpts:{weight:m2,primary:2}}));On(new bm({id:"insertNextSuggestion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),_V.OtherSuggestions,_r.Visible.toNegated(),xg.InSnippetMode.toNegated()),handler:e=>e.acceptNextSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2}}));On(new bm({id:"insertPrevSuggestion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),_V.OtherSuggestions,_r.Visible.toNegated(),xg.InSnippetMode.toNegated()),handler:e=>e.acceptPrevSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:1026}}));un(class extends Bn{constructor(){super({id:"editor.action.resetSuggestSize",label:_t(1472,"Reset Suggest Widget Size"),precondition:void 0})}run(e,t){var n;(n=Kb.get(t))==null||n.resetWidgetSize()}});class Xyo extends ft{get selectedItem(){return this._currentSuggestItemInfo}constructor(t,n,r){super(),this.editor=t,this.suggestControllerPreselector=n,this.onWillAccept=r,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._onDidSelectedItemChange=this._register(new at),this.onDidSelectedItemChange=this._onDidSelectedItemChange.event,this._register(t.onKeyDown(s=>{s.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(t.onKeyUp(s=>{s.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const o=Kb.get(this.editor);if(o){this._register(o.registerSelector({priority:100,select:(l,d,u)=>{const h=this.editor.getModel();if(!h)return-1;const g=this.suggestControllerPreselector(),m=g?IS(g,h):void 0;if(!m)return-1;const v=it.lift(d),f=u.map((A,p)=>{const b=FZ.fromSuggestion(o,h,v,A,this.isShiftKeyPressed),w=IS(b.getSingleTextEdit(),h),O=nIn(m,w);return{index:p,valid:O,prefixLength:w.text.length,suggestItem:A}}).filter(A=>A&&A.valid&&A.prefixLength>0),k=Met(f,qh(A=>A.prefixLength,T0));return k?k.index:-1}}));let s=!1;const a=()=>{s||(s=!0,this._register(o.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(o.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(o.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(an.once(o.model.onDidTrigger)(l=>{a()})),this._register(o.onWillInsertSuggestItem(l=>{const d=this.editor.getPosition(),u=this.editor.getModel();if(!d||!u)return;const h=FZ.fromSuggestion(o,u,d,l.item,this.isShiftKeyPressed);this.onWillAccept(h)}))}this.update(this._isActive)}update(t){const n=this.getSuggestItemInfo();(this._isActive!==t||!Gyo(this._currentSuggestItemInfo,n))&&(this._isActive=t,this._currentSuggestItemInfo=n,this._onDidSelectedItemChange.fire())}getSuggestItemInfo(){const t=Kb.get(this.editor);if(!t||!this.isSuggestWidgetVisible)return;const n=t.widget.value.getFocusedItem(),r=this.editor.getPosition(),o=this.editor.getModel();if(!(!n||!r||!o))return FZ.fromSuggestion(t,o,r,n.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const t=Kb.get(this.editor);t==null||t.stopForceRenderingAbove()}forceRenderingAbove(){const t=Kb.get(this.editor);t==null||t.forceRenderingAbove()}}class FZ{static fromSuggestion(t,n,r,o,s){let{insertText:a}=o.completion,l=!1;if(o.completion.insertTextRules&4){const u=new wR().parse(a);u.children.length<100&&R0e.adjustWhitespace(n,r,!0,u),a=u.toString(),l=!0}const d=t.getOverwriteInfo(o,s);return new FZ(Ee.fromPositions(r.delta(0,-d.overwriteBefore),r.delta(0,Math.max(d.overwriteAfter,0))),a,o.completion.kind,l,o.container.incomplete??!1)}constructor(t,n,r,o,s){this.range=t,this.insertText=n,this.completionItemKind=r,this.isSnippetText=o,this.listIncomplete=s}equals(t){return this.range.equalsRange(t.range)&&this.insertText===t.insertText&&this.completionItemKind===t.completionItemKind&&this.isSnippetText===t.isSnippetText}toSelectedSuggestionInfo(){return new ATn(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}getSingleTextEdit(){return new Mc(this.range,this.insertText)}}function Gyo(e,t){return e===t?!0:!e||!t?!1:e.equals(t)}class Yyo extends ft{constructor(t,n,r){super(),this._editorObs=t,this._handleSuggestAccepted=n,this._suggestControllerPreselector=r,this._suggestWidgetAdaptor=this._register(new Xyo(this._editorObs.editor,()=>(this._editorObs.forceUpdate(),this._suggestControllerPreselector()),o=>this._editorObs.forceUpdate(s=>{this._handleSuggestAccepted(o)}))),this.selectedItem=Ko(this,o=>this._suggestWidgetAdaptor.onDidSelectedItemChange(()=>{this._editorObs.forceUpdate(s=>o(void 0))}),()=>this._suggestWidgetAdaptor.selectedItem)}stopForceRenderingAbove(){this._suggestWidgetAdaptor.stopForceRenderingAbove()}forceRenderingAbove(){this._suggestWidgetAdaptor.forceRenderingAbove()}}class Zyo{constructor(t,n){this.lineNumber=t,this.columnRange=n}}class ICt{constructor(t,n){if(this.startColumn=t,this.endColumnExclusive=n,t>n)throw new ui(`startColumn ${t} cannot be after endColumnExclusive ${n}`)}toRange(t){return new Ee(t,this.startColumn,t,this.endColumnExclusive)}equals(t){return this.startColumn===t.startColumn&&this.endColumnExclusive===t.endColumnExclusive}toZeroBasedOffsetRange(){return new Xn(this.startColumn-1,this.endColumnExclusive-1)}}class bQ{static fromLineTokens(t){const n=[];for(let r=0;r({text:r.text,metadata:r.metadata})),t)}map(t){const n=[];let r=0;for(const o of this._tokenInfo){const s=new Xn(r,r+o.text.length);n.push(t(s,o)),r+=o.text.length}return n}slice(t){const n=[];let r=0;for(const o of this._tokenInfo){const s=r,a=s+o.text.length;if(a>t.start){if(s>=t.endExclusive)break;const l=Math.max(0,t.start-s),d=Math.max(0,a-t.endExclusive);n.push(new MCt(o.text.slice(l,o.text.length-d),o.metadata))}r+=o.text.length}return bQ.create(n)}append(t){const n=this._tokenInfo.concat(t._tokenInfo);return bQ.create(n)}}class MCt{constructor(t,n){this.text=t,this.metadata=n}}var qyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Kyo=function(e,t){return function(n,r){t(n,r,e)}};const uIn="ghost-text";var cB;let ree=(cB=class extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._model=n,this._options=r,this._shouldKeepCursorStable=o,this._isClickable=s,this._languageService=a,this._isDisposed=Ti(this,!1),this._editorObs=hl(this._editor),this._warningState=Rt(l=>{const d=this._model.ghostText.read(l);if(!d)return;const u=this._model.warning.read(l);if(u)return{lineNumber:d.lineNumber,position:new it(d.lineNumber,d.parts[0].column),icon:u.icon}}),this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._useSyntaxHighlighting=this._options.map(l=>l.syntaxHighlightingEnabled),this._extraClassNames=Rt(this,l=>{const d=[...this._options.read(l).extraClasses??[]];return this._useSyntaxHighlighting.read(l)&&d.push("syntax-highlighted"),this._warningState.read(l)&&d.push("warning"),d.map(h=>` ${h}`).join("")}),this.uiState=Rt(this,l=>{var T,D;if(this._isDisposed.read(l))return;const d=this._editorObs.model.read(l);if(d!==this._model.targetTextModel.read(l))return;const u=this._model.ghostText.read(l);if(!u)return;const h=u instanceof eVe?u.columnRange:void 0,g=this._useSyntaxHighlighting.read(l),m=this._extraClassNames.read(l),{inlineTexts:v,additionalLines:f,hiddenRange:k,additionalLinesOriginalSuffix:A}=Jyo(u,d,uIn+m),p=d.getLineContent(u.lineNumber),b=new W8(v.map(P=>ch.insert(P.column-1,P.text))),w=g?d.tokenization.tokenizeLinesAt(u.lineNumber,[b.apply(p),...f.map(P=>P.content)]):void 0,O=b.getNewRanges(),y=v.map((P,Q)=>{var M;return{...P,tokens:(M=w==null?void 0:w[0])==null?void 0:M.getTokensInRange(O[Q])}}),C=f.map((P,Q)=>{let M=(w==null?void 0:w[Q+1])??uc.createEmpty(P.content,this._languageService.languageIdCodec);if(Q===f.length-1&&A){const R=bQ.fromLineTokens(d.tokenization.getLineTokens(A.lineNumber)).slice(A.columnRange.toZeroBasedOffsetRange());M=bQ.fromLineTokens(M).append(R).toLineTokens(M.languageIdCodec)}return{content:M,decorations:P.decorations}}),_=(T=this._editor.getSelection())==null?void 0:T.getStartPosition().column,S=y.filter(P=>P.text!==""),L=S.length!==0,E={cursorColumnDistance:(L?S[0].column:1)-_,cursorLineDistance:L?0:f.findIndex(P=>P.content!=="")+1,lineCountOriginal:L?1:0,lineCountModified:f.length+(L?1:0),characterCountOriginal:0,characterCountModified:Sme(S.map(P=>P.text.length))+Sme(C.map(P=>P.content.getTextLength())),disjointReplacements:S.length+(f.length>0?1:0),sameShapeReplacements:S.length>1&&C.length===0?S.every(P=>P.text===S[0].text):void 0};return(D=this._model.handleInlineCompletionShown.read(l))==null||D(E),{replacedRange:h,inlineTexts:y,additionalLines:C,hiddenRange:k,lineNumber:u.lineNumber,additionalReservedLineCount:this._model.minReservedLineCount.read(l),targetTextModel:d,syntaxHighlightingEnabled:g}}),this.decorations=Rt(this,l=>{const d=this.uiState.read(l);if(!d)return[];const u=[],h=this._extraClassNames.read(l);d.replacedRange&&u.push({range:d.replacedRange.toRange(d.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace"+h,description:"GhostTextReplacement"}}),d.hiddenRange&&u.push({range:d.hiddenRange.toRange(d.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const g of d.inlineTexts)u.push({range:Ee.fromPositions(new it(d.lineNumber,g.column)),options:{description:"ghost-text-decoration",after:{content:g.text,tokens:g.tokens,inlineClassName:(g.preview?"ghost-text-decoration-preview":"ghost-text-decoration")+(this._isClickable?" clickable":"")+h+g.lineDecorations.map(m=>" "+m.className).join(" "),cursorStops:Bv.Left,attachedData:new Bxe(this)},showIfCollapsed:!0}});return u}),this._additionalLinesWidget=this._register(new eCo(this._editor,Rt(l=>{const d=this.uiState.read(l);return d?{lineNumber:d.lineNumber,additionalLines:d.additionalLines,minReservedLineCount:d.additionalReservedLineCount,targetTextModel:d.targetTextModel}:void 0}),this._shouldKeepCursorStable,this._isClickable)),this._isInlineTextHovered=this._editorObs.isTargetHovered(l=>{var d;return l.target.type===6&&((d=l.target.detail.injectedText)==null?void 0:d.options.attachedData)instanceof Bxe&&l.target.detail.injectedText.options.attachedData.owner===this},this._store),this.isHovered=Rt(this,l=>this._isDisposed.read(l)?!1:this._isInlineTextHovered.read(l)||this._additionalLinesWidget.isHovered.read(l)),this.height=Rt(this,l=>this._editorObs.getOption(75).read(l)+(this._additionalLinesWidget.viewZoneHeight.read(l)??0)),this._register(Hn(()=>{this._isDisposed.set(!0,void 0)})),this._register(this._editorObs.setDecorations(this.decorations)),this._isClickable&&(this._register(this._additionalLinesWidget.onDidClick(l=>this._onDidClick.fire(l))),this._register(this._editor.onMouseUp(l=>{var u;if(l.target.type!==6)return;const d=(u=l.target.detail.injectedText)==null?void 0:u.options.attachedData;d instanceof Bxe&&d.owner===this&&this._onDidClick.fire(l.event)}))),this._register(Ef((l,d)=>{}))}static getWarningWidgetContext(t){const n=t.ghostTextViewWarningWidgetData;if(n)return n;if(t.parentElement)return this.getWarningWidgetContext(t.parentElement)}ownsViewZone(t){return this._additionalLinesWidget.viewZoneId===t}},cB.hot=l3e(cB),cB);ree=qyo([Kyo(5,nc)],ree);class Bxe{constructor(t){this.owner=t}}function Jyo(e,t,n){const r=[],o=[];function s(g,m){if(o.length>0){const v=o[o.length-1];m&&v.decorations.push(new wg(v.content.length+1,v.content.length+1+g[0].line.length,m,0)),v.content+=g[0].line,g=g.slice(1)}for(const v of g)o.push({content:v.line,decorations:m?[new wg(1,v.line.length+1,m,0),...v.lineDecorations]:[...v.lineDecorations]})}const a=t.getLineContent(e.lineNumber);let l,d=0;for(const g of e.parts){let m=g.lines;l===void 0?(r.push({column:g.column,text:m[0].line,preview:g.preview,lineDecorations:m[0].lineDecorations}),m=m.slice(1)):s([{line:a.substring(d,g.column-1),lineDecorations:[]}],void 0),m.length>0&&(s(m,n),l===void 0&&g.column<=a.length&&(l=g.column)),d=g.column-1}let u;l!==void 0&&(u=new Zyo(e.lineNumber,new ICt(d+1,a.length+1)));const h=l!==void 0?new ICt(l,a.length+1):void 0;return{inlineTexts:r,additionalLines:o,hiddenRange:h,additionalLinesOriginalSuffix:u}}class eCo extends ft{get viewZoneId(){var t;return(t=this._viewZoneInfo)==null?void 0:t.viewZoneId}get viewZoneHeight(){return this._viewZoneHeight}constructor(t,n,r,o){super(),this._editor=t,this._lines=n,this._shouldKeepCursorStable=r,this._isClickable=o,this._viewZoneHeight=Ti("viewZoneHeight",void 0),this.editorOptionsChanged=A0("editorOptionChanged",an.filter(this._editor.onDidChangeConfiguration,s=>s.hasChanged(40)||s.hasChanged(133)||s.hasChanged(113)||s.hasChanged(108)||s.hasChanged(60)||s.hasChanged(59)||s.hasChanged(75))),this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._viewZoneListener=this._register(new ts),this.isHovered=hl(this._editor).isTargetHovered(s=>PCt(s.target.element),this._store),this.hasBeenAccepted=!1,this._editor instanceof gR&&this._shouldKeepCursorStable&&this._register(this._editor.onBeforeExecuteEdit(s=>this.hasBeenAccepted=s.source==="inlineSuggestion.accept")),this._register(Oi(s=>{const a=this._lines.read(s);this.editorOptionsChanged.read(s),a?(this.hasBeenAccepted=!1,this.updateLines(a.lineNumber,a.additionalLines,a.minReservedLineCount)):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this._viewZoneListener.clear(),this._editor.changeViewZones(t=>{this.removeActiveViewZone(t)})}updateLines(t,n,r){const o=this._editor.getModel();if(!o)return;const{tabSize:s}=o.getOptions();this._editor.changeViewZones(a=>{const l=new xt;this.removeActiveViewZone(a);const d=Math.max(n.length,r);if(d>0){const u=document.createElement("div");tCo(u,s,n,this._editor.getOptions(),this._isClickable),this._isClickable&&(l.add(wt(u,"mousedown",h=>{h.preventDefault()})),l.add(wt(u,"click",h=>{PCt(h.target)&&this._onDidClick.fire(new Xh(ii(h),h))}))),this.addViewZone(a,t,d,u)}this._viewZoneListener.value=l})}addViewZone(t,n,r,o){const s=t.addZone({afterLineNumber:n,heightInLines:r,domNode:o,afterColumnAffinity:1,onComputedHeight:a=>{this._viewZoneHeight.set(a,void 0)}});this.keepCursorStable(n,r),this._viewZoneInfo={viewZoneId:s,heightInLines:r,lineNumber:n}}removeActiveViewZone(t){this._viewZoneInfo&&(t.removeZone(this._viewZoneInfo.viewZoneId),this.hasBeenAccepted||this.keepCursorStable(this._viewZoneInfo.lineNumber,-this._viewZoneInfo.heightInLines),this._viewZoneInfo=void 0,this._viewZoneHeight.set(void 0,void 0))}keepCursorStable(t,n){var o,s;if(!this._shouldKeepCursorStable)return;const r=(s=(o=this._editor.getSelection())==null?void 0:o.getStartPosition())==null?void 0:s.lineNumber;r!==void 0&&t`);for(let A=0,p=n.length;A');const O=w.getLineContent(),y=Sie(O),C=ZW(O);tH(new AL(h.isMonospace&&!s,h.canUseHalfwidthRightwardsArrow,O,!1,y,C,0,w,b.decorations,t,0,h.spaceWidth,h.middotWidth,h.wsmiddotWidth,a,l,d,u!==F8.OFF,null,null,0),v),v.appendString("")}v.appendString(""),Fu(e,h);const f=v.build(),k=FCt?FCt.createHTML(f):f;e.innerHTML=k}const FCt=Jy("editorGhostText",{createHTML:e=>e}),gAe=class gAe{constructor(t){this.replacements=t,PK(wie(t,(n,r)=>n.lineRange.endLineNumberExclusive<=r.lineRange.startLineNumber))}toString(){return this.replacements.map(t=>t.toString()).join(",")}getNewLineRanges(){const t=[];let n=0;for(const r of this.replacements)t.push(Ei.ofLength(r.lineRange.startLineNumber+n,r.newLines.length)),n+=r.newLines.length-r.lineRange.length;return t}};gAe.empty=new gAe([]);let yVe=gAe;class H0e{static fromSingleTextEdit(t,n){const r=P0(t.text);let o=t.range.startLineNumber;const s=n.getValueOfRange(Ee.fromPositions(new it(t.range.startLineNumber,1),t.range.getStartPosition()));r[0]=s+r[0];let a=t.range.endLineNumber+1;const l=n.getTransformer().getLineLength(t.range.endLineNumber)+1,d=n.getValueOfRange(Ee.fromPositions(t.range.getEndPosition(),new it(t.range.endLineNumber,l)));r[r.length-1]=r[r.length-1]+d;const u=t.range.startColumn===n.getTransformer().getLineLength(t.range.startLineNumber)+1,h=t.range.endColumn===1;return u&&r[0].length===s.length&&(o++,r.shift()),r.length>0&&o${JSON.stringify(this.newLines)}`}toLineEdit(){return new yVe([this])}}class hIn{get lineEdit(){return this.edit.replacements.length===0?new H0e(new Ei(1,1),[]):H0e.fromSingleTextEdit(this.edit.toReplacement(this.originalText),this.originalText)}get originalLineRange(){return this.lineEdit.lineRange}get modifiedLineRange(){return this.lineEdit.toLineEdit().getNewLineRanges()[0]}get displayRange(){return this.originalText.lineRange.intersect(this.originalLineRange.join(Ei.ofLength(this.originalLineRange.startLineNumber,this.lineEdit.newLines.length)))}constructor(t,n,r,o,s,a){this.originalText=t,this.edit=n,this.cursorPosition=r,this.multiCursorPositions=o,this.commands=s,this.inlineCompletion=a}}class fIn{constructor(t,n,r){this._model=t,this.inlineEdit=n,this.tabAction=r,this.action=this.inlineEdit.inlineCompletion.action,this.displayName=this.inlineEdit.inlineCompletion.source.provider.displayName??U(1219,"Inline Edit"),this.extensionCommands=this.inlineEdit.inlineCompletion.source.inlineSuggestions.commands??[],this.isInDiffEditor=this._model.isInDiffEditor,this.displayLocation=this.inlineEdit.inlineCompletion.hint,this.showCollapsed=this._model.showCollapsed}accept(){this._model.accept()}jump(){this._model.jump()}handleInlineEditShown(t,n){this._model.handleInlineSuggestionShown(this.inlineEdit.inlineCompletion,t,n)}}class nCo{constructor(t){this._model=t,this.onDidAccept=this._model.onDidAccept,this.inAcceptFlow=this._model.inAcceptFlow}}class iCo{constructor(t,n,r,o){this.lineRange=r;const s=hl(t),a=Rt(this,l=>s.isFocused.read(l)&&o.showInlineEditMenu?wf.Accept:wf.Inactive);this.model=new fIn(n,new hIn(new g9(""),new V4([o.getSingleTextEdit()]),n.primaryPosition.get(),n.allPositions.get(),o.source.inlineSuggestions.commands??[],o),a)}}class Vs{static fromPoints(t,n){return new Vs(t.x,t.y,n.x,n.y)}static fromPointSize(t,n){return new Vs(t.x,t.y,t.x+n.x,t.y+n.y)}static fromLeftTopRightBottom(t,n,r,o){return new Vs(t,n,r,o)}static fromLeftTopWidthHeight(t,n,r,o){return new Vs(t,n,t+r,n+o)}static fromRanges(t,n){return new Vs(t.start,n.start,t.endExclusive,n.endExclusive)}static hull(t){let n=Number.MAX_SAFE_INTEGER,r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MIN_SAFE_INTEGER;for(const a of t)n=Math.min(n,a.left),r=Math.min(r,a.top),o=Math.max(o,a.right),s=Math.max(s,a.bottom);return new Vs(n,r,o,s)}get width(){return this.right-this.left}get height(){return this.bottom-this.top}constructor(t,n,r,o){if(this.left=t,this.top=n,this.right=r,this.bottom=o,t>r)throw new ui("Invalid arguments: Horizontally offset by "+(t-r));if(n>o)throw new ui("Invalid arguments: Vertically offset by "+(n-o))}withMargin(t,n,r,o){let s,a,l,d;return n===void 0&&r===void 0&&o===void 0?s=a=l=d=t:r===void 0&&o===void 0?(s=a=n,l=d=t):(s=o,a=n,l=t,d=r),new Vs(this.left-s,this.top-l,this.right+a,this.bottom+d)}intersectVertical(t){const n=Math.max(this.top,t.start),r=Math.min(this.bottom,t.endExclusive);return new Vs(this.left,n,this.right,Math.max(n,r))}intersectHorizontal(t){const n=Math.max(this.left,t.start),r=Math.min(this.right,t.endExclusive);return new Vs(n,this.top,Math.max(n,r),this.bottom)}toString(){return`Rect{(${this.left},${this.top}), (${this.right},${this.bottom})}`}intersect(t){const n=Math.max(this.left,t.left),r=Math.min(this.right,t.right),o=Math.max(this.top,t.top),s=Math.min(this.bottom,t.bottom);if(!(n>r||o>s))return new Vs(n,o,r,s)}containsRect(t){return this.left<=t.left&&this.top<=t.top&&this.right>=t.right&&this.bottom>=t.bottom}containsPoint(t){return this.left<=t.x&&this.top<=t.y&&this.right>=t.x&&this.bottom>=t.y}moveToBeContainedIn(t){const n=this.width,r=this.height;let o=this.left,s=this.top;return ot.right&&(o=t.right-n),st.bottom&&(s=t.bottom-r),new Vs(o,s,o+n,s+r)}withWidth(t){return new Vs(this.left,this.top,this.left+t,this.bottom)}withHeight(t){return new Vs(this.left,this.top,this.right,this.top+t)}withTop(t){return new Vs(this.left,t,this.right,this.bottom)}withLeft(t){return new Vs(t,this.top,this.right,this.bottom)}translateX(t){return new Vs(this.left+t,this.top,this.right+t,this.bottom)}translateY(t){return new Vs(this.left,this.top+t,this.right,this.bottom+t)}getLeftBottom(){return new cu(this.left,this.bottom)}getRightBottom(){return new cu(this.right,this.bottom)}getRightTop(){return new cu(this.right,this.top)}toStyles(){return{position:"absolute",left:`${this.left}px`,top:`${this.top}px`,width:`${this.width}px`,height:`${this.height}px`}}}class NZ{constructor(t,n,r,o=null){this.startLineNumbers=t,this.endLineNumbers=n,this.lastLineRelativePosition=r,this.showEndForLine=o}equals(t){return!!t&&this.lastLineRelativePosition===t.lastLineRelativePosition&&this.showEndForLine===t.showEndForLine&&Na(this.startLineNumbers,t.startLineNumbers)&&Na(this.endLineNumbers,t.endLineNumbers)}static get Empty(){return new NZ([],[],0)}}const NCt=Jy("stickyScrollViewLayer",{createHTML:e=>e}),Rxe="data-sticky-line-index",UCt="data-sticky-is-line",rCo="data-sticky-is-line-number",jCt="data-sticky-is-folding-icon";class oCo extends ft{get height(){return this._height}constructor(t){super(),this._foldingIconStore=this._register(new xt),this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._height=-1,this._onDidChangeStickyScrollHeight=this._register(new at),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._editor=t,this._lineHeight=t.getOption(75),this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",t instanceof X8),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable),this._setHeight(0);const n=()=>{this._linesDomNode.style.left=this._editor.getOption(131).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(131)&&n(),r.hasChanged(75)&&(this._lineHeight=this._editor.getOption(75))})),this._register(this._editor.onDidScrollChange(r=>{r.scrollLeftChanged&&n(),r.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{n(),this._updateWidgetWidth()})),n(),this._register(this._editor.onDidLayoutChange(r=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(t){return this._renderedStickyLines.find(n=>n.lineNumber===t)}getCurrentLines(){return this._lineNumbers}setState(t,n,r){const o=!this._state&&!t,s=this._state&&this._state.equals(t);if(r===void 0&&(o||s))return;const a=this._findRenderingData(t),l=this._lineNumbers;this._lineNumbers=a.lineNumbers,this._lastLineRelativePosition=a.lastLineRelativePosition;const d=this._findIndexToRebuildFrom(l,this._lineNumbers,r);this._renderRootNode(this._lineNumbers,this._lastLineRelativePosition,n,d),this._state=t}_findRenderingData(t){if(!t)return{lineNumbers:[],lastLineRelativePosition:0};const n=[...t.startLineNumbers];t.showEndForLine!==null&&(n[t.showEndForLine]=t.endLineNumbers[t.showEndForLine]);let r=0;for(let o=0;o!t.includes(s));return o===-1?0:o}_updateWidgetWidth(){const t=this._editor.getLayoutInfo(),n=t.contentLeft;this._lineNumbersDomNode.style.width=`${n}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-t.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${t.width-t.verticalScrollbarWidth}px`}_useFoldingOpacityTransition(t){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${t?.5:0}s`)}_setFoldingIconsVisibility(t){for(const n of this._renderedStickyLines){const r=n.foldingIcon;r&&r.setVisible(t?!0:r.isCollapsed)}}async _renderRootNode(t,n,r,o){const s=this._editor._getViewModel();if(!s){this._clearWidget();return}if(t.length===0){this._clearWidget();return}const a=[],l=t[t.length-1];let d=0;for(let h=0;hh.scrollWidth))+u.verticalScrollbarWidth,this._renderedStickyLines=a,this._setHeight(d+n),this._editor.layoutOverlayWidget(this)}_clearWidget(){for(let t=0;t{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(wt(this._lineNumbersDomNode,rn.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(t,n,r,o,s,a,l){const d=t.coordinatesConverter.convertModelPositionToViewPosition(new it(r,1)).lineNumber,u=t.getViewLineRenderingData(d),h=this._editor.getOption(76),g=this._editor.getOption(117).verticalScrollbarSize;let m;try{m=wg.filter(u.inlineDecorations,d,u.minColumn,u.maxColumn)}catch{m=[]}const v=this._editor.getLineHeightForPosition(new it(r,1)),f=t.getTextDirection(r),k=new AL(!0,!0,u.content,u.continuesWithWrappedLine,u.isBasicASCII,u.containsRTL,0,u.tokens,m,u.tabSize,u.startVisibleColumn,1,1,1,500,"none",!0,!0,null,f,g),A=new sE(2e3),p=tH(k,A);let b;NCt?b=NCt.createHTML(A.build()):b=A.build();const w=document.createElement("span");w.setAttribute(Rxe,String(n)),w.setAttribute(UCt,""),w.setAttribute("role","listitem"),w.tabIndex=0,w.className="sticky-line-content",w.classList.add(`stickyLine${r}`),w.style.lineHeight=`${v}px`,w.innerHTML=b;const O=document.createElement("span");O.setAttribute(Rxe,String(n)),O.setAttribute(rCo,""),O.className="sticky-line-number",O.style.lineHeight=`${v}px`;const y=l.contentLeft;O.style.width=`${y}px`;const C=document.createElement("span");h.renderType===1||h.renderType===3&&r%10===0?C.innerText=r.toString():h.renderType===2&&(C.innerText=Math.abs(r-this._editor.getPosition().lineNumber).toString()),C.className="sticky-line-number-inner",C.style.width=`${l.lineNumbersWidth}px`,C.style.paddingLeft=`${l.lineNumbersLeft}px`,O.appendChild(C);const _=this._renderFoldingIconForLine(a,r);_&&(O.appendChild(_.domNode),_.domNode.style.left=`${l.lineNumbersWidth+l.lineNumbersLeft}px`,_.domNode.style.lineHeight=`${v}px`),this._editor.applyFontInfo(w),this._editor.applyFontInfo(O),O.style.lineHeight=`${v}px`,w.style.lineHeight=`${v}px`,O.style.height=`${v}px`,w.style.height=`${v}px`;const S=new sCo(n,r,w,O,_,p.characterMapping,w.scrollWidth,v);return this._updatePosition(S,o,s)}_updatePosition(t,n,r){var a;const o=t.lineDomNode,s=t.lineNumberDomNode;if(r){const l="0";o.style.zIndex=l,s.style.zIndex=l;const d=`${n+this._lastLineRelativePosition+((a=t.foldingIcon)!=null&&a.isCollapsed?1:0)}px`;o.style.top=d,s.style.top=d}else{const l="1";o.style.zIndex=l,s.style.zIndex=l,o.style.top=`${n}px`,s.style.top=`${n}px`}return t}_renderFoldingIconForLine(t,n){const r=this._editor.getOption(126);if(!t||r==="never")return;const o=t.regions,s=o.findRange(n),a=o.getStartLineNumber(s);if(!(n===a))return;const d=o.isCollapsed(s),u=new aCo(d,a,o.getEndLineNumber(s),this._lineHeight);return u.setVisible(this._isOnGlyphMargin?!0:d||r==="always"),u.domNode.setAttribute(jCt,""),u}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(t){0<=t&&t0)return null;const n=this._getRenderedStickyLineFromChildDomNode(t);if(!n)return null;const r=rV(n.characterMapping,t,0);return new it(n.lineNumber,r)}getLineNumberFromChildDomNode(t){var n;return((n=this._getRenderedStickyLineFromChildDomNode(t))==null?void 0:n.lineNumber)??null}_getRenderedStickyLineFromChildDomNode(t){const n=this.getLineIndexFromChildDomNode(t);return n===null||n<0||n>=this._renderedStickyLines.length?null:this._renderedStickyLines[n]}getLineIndexFromChildDomNode(t){const n=this._getAttributeValue(t,Rxe);return n?parseInt(n,10):null}isInStickyLine(t){return this._getAttributeValue(t,UCt)!==void 0}isInFoldingIconDomNode(t){return this._getAttributeValue(t,jCt)!==void 0}_getAttributeValue(t,n){for(;t&&t!==this._rootDomNode;){const r=t.getAttribute(n);if(r!==null)return r;t=t.parentElement}}}class sCo{constructor(t,n,r,o,s,a,l,d){this.index=t,this.lineNumber=n,this.lineDomNode=r,this.lineNumberDomNode=o,this.foldingIcon=s,this.characterMapping=a,this.scrollWidth=l,this.height=d}}class aCo{constructor(t,n,r,o){this.isCollapsed=t,this.foldingStartLine=n,this.foldingEndLine=r,this.dimension=o,this.domNode=document.createElement("div"),this.domNode.style.width="26px",this.domNode.style.height=`${o}px`,this.domNode.style.lineHeight=`${o}px`,this.domNode.className=fi.asClassName(t?w0e:b0e)}setVisible(t){this.domNode.style.cursor=t?"pointer":"default",this.domNode.style.opacity=t?"1":"0"}}class UZ{constructor(t,n){this.startLineNumber=t,this.endLineNumber=n}}class $0e{constructor(t,n,r){this.range=t,this.children=n,this.parent=r}}class gIn{constructor(t,n,r,o){this.uri=t,this.version=n,this.element=r,this.outlineProviderId=o}}var U3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},oee=function(e,t){return function(n,r){t(n,r,e)}},jZ;(function(e){e.OUTLINE_MODEL="outlineModel",e.FOLDING_PROVIDER_MODEL="foldingProviderModel",e.INDENTATION_MODEL="indentationModel"})(jZ||(jZ={}));var O9;(function(e){e[e.VALID=0]="VALID",e[e.INVALID=1]="INVALID",e[e.CANCELED=2]="CANCELED"})(O9||(O9={}));let CVe=class extends ft{constructor(t,n,r,o){switch(super(),this._editor=t,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new dA(300)),this._updateOperation=this._register(new xt),this._editor.getOption(131).defaultModel){case jZ.OUTLINE_MODEL:this._modelProviders.push(new _Ve(this._editor,o));case jZ.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new LVe(this._editor,n,o));case jZ.INDENTATION_MODEL:this._modelProviders.push(new SVe(this._editor,r));break}}dispose(){this._modelProviders.forEach(t=>t.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(t){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const n of this._modelProviders){const{statusPromise:r,modelPromise:o}=n.computeStickyModel(t);this._modelPromise=o;const s=await r;if(this._modelPromise!==o)return null;switch(s){case O9.CANCELED:return this._updateOperation.clear(),null;case O9.VALID:return n.stickyModel}}return null}).catch(n=>(zi(n),null))}};CVe=U3e([oee(2,Yn),oee(3,Nn)],CVe);class mIn extends ft{constructor(t){super(),this._editor=t,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,O9.INVALID}computeStickyModel(t){if(t.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const n=Fd(r=>this.createModelFromProvider(r));return{statusPromise:n.then(r=>this.isModelValid(r)?t.isCancellationRequested?O9.CANCELED:(this._stickyModel=this.createStickyModel(t,r),O9.VALID):this._invalid()).then(void 0,r=>(zi(r),O9.CANCELED)),modelPromise:n}}isModelValid(t){return!0}isProviderValid(){return!0}}let _Ve=class extends mIn{constructor(t,n){super(t),this._languageFeaturesService=n}createModelFromProvider(t){return rS.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),t)}createStickyModel(t,n){var a;const{stickyOutlineElement:r,providerID:o}=this._stickyModelFromOutlineModel(n,(a=this._stickyModel)==null?void 0:a.outlineProviderId),s=this._editor.getModel();return new gIn(s.uri,s.getVersionId(),r,o)}isModelValid(t){return t&&t.children.size>0}_stickyModelFromOutlineModel(t,n){let r;if(to.first(t.children.values())instanceof $Rn){const l=to.find(t.children.values(),d=>d.id===n);if(l)r=l.children;else{let d="",u=-1,h;for(const[g,m]of t.children.entries()){const v=this._findSumOfRangesOfGroup(m);v>u&&(h=m,u=v,d=m.id)}n=d,r=h.children}}else r=t.children;const o=[],s=Array.from(r.values()).sort((l,d)=>{const u=new UZ(l.symbol.range.startLineNumber,l.symbol.range.endLineNumber),h=new UZ(d.symbol.range.startLineNumber,d.symbol.range.endLineNumber);return this._comparator(u,h)});for(const l of s)o.push(this._stickyModelFromOutlineElement(l,l.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new $0e(void 0,o,void 0),providerID:n}}_stickyModelFromOutlineElement(t,n){const r=[];for(const s of t.children.values())if(s.symbol.selectionRange.startLineNumber!==s.symbol.range.endLineNumber)if(s.symbol.selectionRange.startLineNumber!==n)r.push(this._stickyModelFromOutlineElement(s,s.symbol.selectionRange.startLineNumber));else for(const a of s.children.values())r.push(this._stickyModelFromOutlineElement(a,s.symbol.selectionRange.startLineNumber));r.sort((s,a)=>this._comparator(s.range,a.range));const o=new UZ(t.symbol.selectionRange.startLineNumber,t.symbol.range.endLineNumber);return new $0e(o,r,void 0)}_comparator(t,n){return t.startLineNumber!==n.startLineNumber?t.startLineNumber-n.startLineNumber:n.endLineNumber-t.endLineNumber}_findSumOfRangesOfGroup(t){let n=0;for(const r of t.children.values())n+=this._findSumOfRangesOfGroup(r);return t instanceof GWe?n+t.symbol.range.endLineNumber-t.symbol.selectionRange.startLineNumber:n}};_Ve=U3e([oee(1,Nn)],_Ve);class kIn extends mIn{constructor(t){super(t),this._foldingLimitReporter=this._register(new URn(t))}createStickyModel(t,n){const r=this._fromFoldingRegions(n),o=this._editor.getModel();return new gIn(o.uri,o.getVersionId(),r,void 0)}isModelValid(t){return t!==null}_fromFoldingRegions(t){const n=t.length,r=[],o=new $0e(void 0,[],void 0);for(let s=0;s{this._updateProvider(t,n)})),this._updateProvider(t,n)}_updateProvider(t,n){const r=R6.getFoldingRangeProviders(this._languageFeaturesService,t.getModel());r.length!==0&&(this.provider.value=new Dnt(t.getModel(),r,n,this._foldingLimitReporter,void 0))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(t){var n;return((n=this.provider.value)==null?void 0:n.compute(t))??null}};LVe=U3e([oee(2,Nn)],LVe);var lCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},WCt=function(e,t){return function(n,r){t(n,r,e)}};class cCo{constructor(t,n,r,o){this.startLineNumber=t,this.endLineNumber=n,this.top=r,this.height=o}}let xVe=class extends ft{constructor(t,n,r){super(),this._languageFeaturesService=n,this._languageConfigurationService=r,this._onDidChangeStickyScroll=this._register(new at),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=t,this._sessionStore=this._register(new xt),this._updateSoon=this._register(new Es(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(131)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(131).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),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._sessionStore.add(Hn(()=>{var n;(n=this._stickyModelProvider)==null||n.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var t;return(t=this._model)==null?void 0:t.version}updateStickyModelProvider(){var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null,this._editor.hasModel()&&(this._stickyModelProvider=new CVe(this._editor,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var t;(t=this._cts)==null||t.dispose(!0),this._cts=new ja,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(t){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const n=await this._stickyModelProvider.update(t);t.isCancellationRequested||(this._model=n)}getCandidateStickyLinesIntersecting(t){var r;if(!((r=this._model)!=null&&r.element))return[];const n=[];return this.getCandidateStickyLinesIntersectingFromStickyModel(t,this._model.element,n,0,0,-1),this.filterHiddenRanges(n)}getCandidateStickyLinesIntersectingFromStickyModel(t,n,r,o,s,a){const l=this._editor.getModel();if(!l||n.children.length===0)return;let d=a;const u=[];for(let m=0;mm-v)),g=this.updateIndex(yme(u,t.endLineNumber,(m,v)=>m-v));for(let m=h;m<=g;m++){const v=n.children[m];if(!v||!v.range)continue;const{startLineNumber:f,endLineNumber:k}=v.range;if(k>f+1&&t.startLineNumber<=k+1&&f-1<=t.endLineNumber&&f!==d&&l.isValidRange(new Ee(f,1,k,1))){d=f;const A=this._editor.getLineHeightForPosition(new it(f,1));r.push(new cCo(f,k-1,s,A)),this.getCandidateStickyLinesIntersectingFromStickyModel(t,v,r,o+1,s+A,f)}}}filterHiddenRanges(t){var r;const n=(r=this._editor._getViewModel())==null?void 0:r.getHiddenAreas();return n?t.filter(o=>!n.some(s=>o.startLineNumber>=s.startLineNumber&&o.endLineNumber<=s.endLineNumber+1)):t}updateIndex(t){return t===-1?0:t<0?-t-2:t}};xVe=lCo([WCt(1,Nn),WCt(2,kl)],xVe);var dCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},PP=function(e,t){return function(n,r){t(n,r,e)}},EVe,dB;let fp=(dB=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._editor=t,this._contextMenuService=n,this._languageFeaturesService=r,this._instaService=o,this._contextKeyService=l,this._sessionStore=new xt,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._endLineNumbers=[],this._mouseTarget=null,this._onDidChangeStickyScrollHeight=this._register(new at),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._stickyScrollWidget=new oCo(this._editor),this._stickyLineCandidateProvider=new xVe(this._editor,r,s),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=NZ.Empty;const d=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeLineHeight(h=>{h.changes.forEach(g=>{const m=g.lineNumber;this._widgetState.startLineNumbers.includes(m)&&this._renderStickyScroll(m)})})),this._register(this._editor.onDidChangeFont(h=>{h.changes.forEach(g=>{const m=g.lineNumber;this._widgetState.startLineNumbers.includes(m)&&this._renderStickyScroll(m)})})),this._register(this._editor.onDidChangeConfiguration(h=>{this._readConfigurationChange(h)})),this._register(wt(d,rn.CONTEXT_MENU,async h=>{this._onContextMenu(ii(d),h)})),this._stickyScrollFocusedContextKey=$e.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=$e.stickyScrollVisible.bindTo(this._contextKeyService);const u=this._register(uA(d));this._register(u.onDidBlur(h=>{this._positionRevealed===!1&&d.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(u.onDidFocus(h=>{this.focus()})),this._registerMouseListeners(),this._register(wt(d,rn.MOUSE_DOWN,h=>{this._onMouseDown=!0})),this._register(this._stickyScrollWidget.onDidChangeStickyScrollHeight(h=>{this._onDidChangeStickyScrollHeight.fire(h)})),this._onDidResize(),this._readConfiguration()}get stickyScrollWidgetHeight(){return this._stickyScrollWidget.height}static get(t){return t.getContribution(EVe.ID)}_disposeFocusStickyScrollStore(){var t;this._stickyScrollFocusedContextKey.set(!1),(t=this._focusDisposableStore)==null||t.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}isFocused(){return this._focused}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new xt,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(t){this._focusedStickyElementIndex=t?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const t=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:t[this._focusedStickyElementIndex],column:1})}_revealPosition(t){this._reveaInEditor(t,()=>this._editor.revealPosition(t))}_revealLineInCenterIfOutsideViewport(t){this._reveaInEditor(t,()=>this._editor.revealLineInCenterIfOutsideViewport(t.lineNumber,0))}_reveaInEditor(t,n){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,n(),this._editor.setSelection(Ee.fromPositions(t)),this._editor.focus()}_registerMouseListeners(){const t=this._register(new xt),n=this._register(new y3e(this._editor,{extractLineNumberFromMouseEvent:s=>{const a=this._stickyScrollWidget.getEditorPositionFromNode(s.target.element);return a?a.lineNumber:0}})),r=s=>{if(!this._editor.hasModel()||s.target.type!==12||s.target.detail!==this._stickyScrollWidget.getId())return null;const a=s.target.element;if(!a||a.innerText!==a.innerHTML)return null;const l=this._stickyScrollWidget.getEditorPositionFromNode(a);return l?{range:new Ee(l.lineNumber,l.column,l.lineNumber,l.column+a.innerText.length),textElement:a}:null},o=this._stickyScrollWidget.getDomNode();this._register(wc(o,rn.CLICK,s=>{if(s.ctrlKey||s.altKey||s.metaKey||!s.leftButton)return;if(s.shiftKey){const u=this._stickyScrollWidget.getLineIndexFromChildDomNode(s.target);if(u===null)return;const h=new it(this._endLineNumbers[u],1);this._revealLineInCenterIfOutsideViewport(h);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(s.target)){const u=this._stickyScrollWidget.getLineNumberFromChildDomNode(s.target);this._toggleFoldingRegionForLine(u);return}if(!this._stickyScrollWidget.isInStickyLine(s.target))return;let d=this._stickyScrollWidget.getEditorPositionFromNode(s.target);if(!d){const u=this._stickyScrollWidget.getLineNumberFromChildDomNode(s.target);if(u===null)return;d=new it(u,1)}this._revealPosition(d)})),this._register(wt(Ls,rn.MOUSE_MOVE,s=>{this._mouseTarget=s.target,this._onMouseMoveOrKeyDown(s)})),this._register(wt(Ls,rn.KEY_DOWN,s=>{this._onMouseMoveOrKeyDown(s)})),this._register(wt(Ls,rn.KEY_UP,()=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(n.onMouseMoveOrRelevantKeyDown(([s,a])=>{const l=r(s);if(!l||!s.hasTriggerModifier||!this._editor.hasModel()){t.clear();return}const{range:d,textElement:u}=l;if(!d.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=d,t.clear();else if(u.style.textDecoration==="underline")return;const h=new ja;t.add(Hn(()=>h.dispose(!0)));let g;nre(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new it(d.startLineNumber,d.startColumn+1),!1,h.token).then(m=>{if(!h.token.isCancellationRequested)if(m.length!==0){this._candidateDefinitionsLength=m.length;const v=u;g!==v?(t.clear(),g=v,g.style.textDecoration="underline",t.add(Hn(()=>{g.style.textDecoration="none"}))):g||(g=v,g.style.textDecoration="underline",t.add(Hn(()=>{g.style.textDecoration="none"})))}else t.clear()})})),this._register(n.onCancel(()=>{t.clear()})),this._register(n.onExecute(async s=>{if(s.target.type!==12||s.target.detail!==this._stickyScrollWidget.getId())return;const a=this._stickyScrollWidget.getEditorPositionFromNode(s.target.element);a&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:a.lineNumber,column:1})),this._instaService.invokeFunction(_Rn,s,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(t,n){const r=new Xh(t,n);this._contextMenuService.showContextMenu({menuId:Wn.StickyScrollContext,getAnchor:()=>r})}_onMouseMoveOrKeyDown(t){if(!t.shiftKey||!this._mouseTarget||!ec(this._mouseTarget))return;const n=this._stickyScrollWidget.getLineIndexFromChildDomNode(this._mouseTarget);n===null||this._showEndForLine===n||(this._showEndForLine=n,this._renderStickyScroll())}_toggleFoldingRegionForLine(t){if(!this._foldingModel||t===null)return;const n=this._stickyScrollWidget.getRenderedStickyLine(t),r=n==null?void 0:n.foldingIcon;if(!r)return;xnt(this._foldingModel,1,[t]),r.isCollapsed=!r.isCollapsed;const o=(r.isCollapsed?this._editor.getTopForLineNumber(r.foldingEndLine):this._editor.getTopForLineNumber(r.foldingStartLine))-this._editor.getOption(75)*n.index+1;this._editor.setScrollTop(o),this._renderStickyScroll(t)}_readConfiguration(){const t=this._editor.getOption(131);if(t.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._resetState(),this._sessionStore.clear(),this._enabled=!1;return}else t.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(r=>{r.scrollTopChanged&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(r=>this._onTokensChange(r))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=void 0,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(76).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(t){(t.hasChanged(131)||t.hasChanged(81)||t.hasChanged(75)||t.hasChanged(126)||t.hasChanged(76))&&this._readConfiguration(),(t.hasChanged(76)||t.hasChanged(52)||t.hasChanged(126))&&this._renderStickyScroll(0)}_needsUpdate(t){const n=this._stickyScrollWidget.getCurrentLines();for(const r of n)for(const o of t.ranges)if(r>=o.fromLineNumber&&r<=o.toLineNumber)return!0;return!1}_onTokensChange(t){this._needsUpdate(t)&&this._renderStickyScroll(0)}_onDidResize(){const n=this._editor.getLayoutInfo().height/this._editor.getOption(75);this._maxStickyLines=Math.round(n*.25),this._renderStickyScroll(0)}async _renderStickyScroll(t){const n=this._editor.getModel();if(!n||n.isTooLargeForTokenization()){this._resetState();return}const r=this._updateAndGetMinRebuildFromLine(t),o=this._stickyLineCandidateProvider.getVersionId();if(o===void 0||o===n.getVersionId())if(!this._focused)await this._updateState(r);else if(this._focusedStickyElementIndex===-1)await this._updateState(r),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const a=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(r),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(a)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(t){if(t!==void 0){const n=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(t,n)}return this._minRebuildFromLine}async _updateState(t){var r;this._minRebuildFromLine=void 0,this._foldingModel=await((r=R6.get(this._editor))==null?void 0:r.getFoldingModel())??void 0,this._widgetState=this.findScrollWidgetState();const n=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(n),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,t)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=NZ.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const t=Math.min(this._maxStickyLines,this._editor.getOption(131).maxLineCount),n=this._editor.getScrollTop();let r=0;const o=[],s=[],a=this._editor.getVisibleRanges();if(a.length!==0){const l=new UZ(a[0].startLineNumber,a[a.length-1].endLineNumber),d=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(l);for(const u of d){const h=u.startLineNumber,g=u.endLineNumber,m=u.top,v=m+u.height,f=this._editor.getTopForLineNumber(h)-n,k=this._editor.getBottomForLineNumber(g)-n;if(m>f&&m<=k&&(o.push(h),s.push(g+1),v>k&&(r=k-v)),o.length===t)break}}return this._endLineNumbers=s,new NZ(o,s,r,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},EVe=dB,dB.ID="store.contrib.stickyScrollController",dB);fp=EVe=dCo([PP(1,S2),PP(2,Nn),PP(3,Yn),PP(4,kl),PP(5,CA),PP(6,Qi)],fp);const WZ=Ve("inlineEdit.originalBackground",Zi(h9,.2),U(1220,"Background color for the original text in inline edits."),!0),vIn=Ve("inlineEdit.modifiedBackground",Zi(cQ,.3),U(1221,"Background color for the modified text in inline edits."),!0);Ve("inlineEdit.originalChangedLineBackground",Zi(h9,.8),U(1222,"Background color for the changed lines in the original text of inline edits."),!0);const uCo=Ve("inlineEdit.originalChangedTextBackground",Zi(h9,.8),U(1223,"Overlay color for the changed text in the original text of inline edits."),!0),hCo=Ve("inlineEdit.modifiedChangedLineBackground",{light:Zi(gle,.7),dark:Zi(gle,.7),hcDark:gle,hcLight:gle},U(1224,"Background color for the changed lines in the modified text of inline edits."),!0),fCo=Ve("inlineEdit.modifiedChangedTextBackground",Zi(cQ,.7),U(1225,"Overlay color for the changed text in the modified text of inline edits."),!0),gCo=Ve("inlineEdit.gutterIndicator.primaryForeground",Ybe,U(1226,"Foreground color for the primary inline edit gutter indicator.")),_N=Ve("inlineEdit.gutterIndicator.primaryBorder",dQ,U(1227,"Border color for the primary inline edit gutter indicator.")),AIn=Ve("inlineEdit.gutterIndicator.primaryBackground",{light:Zi(_N,.5),dark:Zi(_N,.4),hcDark:Zi(_N,.4),hcLight:Zi(_N,.5)},U(1228,"Background color for the primary inline edit gutter indicator.")),mCo=Ve("inlineEdit.gutterIndicator.secondaryForeground",Q7n,U(1229,"Foreground color for the secondary inline edit gutter indicator.")),pIn=Ve("inlineEdit.gutterIndicator.secondaryBorder",Gme,U(1230,"Border color for the secondary inline edit gutter indicator.")),bIn=Ve("inlineEdit.gutterIndicator.secondaryBackground",pIn,U(1231,"Background color for the secondary inline edit gutter indicator.")),kCo=Ve("inlineEdit.gutterIndicator.successfulForeground",Ybe,U(1232,"Foreground color for the successful inline edit gutter indicator.")),wIn=Ve("inlineEdit.gutterIndicator.successfulBorder",dQ,U(1233,"Border color for the successful inline edit gutter indicator.")),OIn=Ve("inlineEdit.gutterIndicator.successfulBackground",wIn,U(1234,"Background color for the successful inline edit gutter indicator.")),vCo=Ve("inlineEdit.gutterIndicator.background",{hcDark:Zi("tab.inactiveBackground",.5),hcLight:Zi("tab.inactiveBackground",.5),dark:Zi("tab.inactiveBackground",.5),light:"#5f5f5f18"},U(1235,"Background color for the inline edit gutter indicator.")),$G=Ve("inlineEdit.originalBorder",{light:h9,dark:h9,hcDark:h9,hcLight:h9},U(1236,"Border color for the original text in inline edits.")),XG=Ve("inlineEdit.modifiedBorder",{light:l1(cQ,.6),dark:cQ,hcDark:cQ,hcLight:cQ},U(1237,"Border color for the modified text in inline edits.")),ACo=Ve("inlineEdit.tabWillAcceptModifiedBorder",{light:l1(XG,0),dark:l1(XG,0),hcDark:l1(XG,0),hcLight:l1(XG,0)},U(1238,"Modified border color for the inline edits widget when tab will accept it.")),pCo=Ve("inlineEdit.tabWillAcceptOriginalBorder",{light:l1($G,0),dark:l1($G,0),hcDark:l1($G,0),hcLight:l1($G,0)},U(1239,"Original border color for the inline edits widget over the original text when tab will accept it."));function see(e){return e.map(t=>t===wf.Accept?ACo:XG)}function j3e(e){return e.map(t=>t===wf.Accept?pCo:$G)}function gv(e,t){let n;typeof e=="string"?n=Ixe(e,t):n=e.map((o,s)=>Ixe(o,t).read(s));const r=Ixe(Oc,t);return n.map((o,s)=>o.makeOpaque(r.read(s)))}function Ixe(e,t){return gEn({owner:{observeColor:e},equalsFn:(n,r)=>n.equals(r),debugName:()=>`observeColor(${e})`},t.onDidColorThemeChange,()=>{const n=t.getColorTheme().getColor(e);if(!n)throw new ui(`Missing color: ${e}`);return n})}function y9(e,t,n){e.layoutInfo.read(n),e.value.read(n);const r=e.model.read(n);if(!r)return 0;let o=0;e.scrollTop.read(n);for(let a=t.startLineNumber;ar.getLineContent(a));return o<5&&s.some(a=>a.length>0)&&r.uri.scheme!=="file"&&console.error("unexpected width"),o}function bCo(e,t,n){return e.layoutInfo.read(n),e.value.read(n),e.model.read(n)?(e.scrollTop.read(n),e.editor.getOffsetForColumn(t.lineNumber,t.column)):0}function Nnt(e,t,n,r,o=void 0){const s=r.getModel();if(!s)return{prefixTrim:0,prefixLeftOffset:0};const a=e.map(m=>m.isSingleLine()?m.startColumn-1:0),l=t.mapToLineArray(m=>EUe(s.getLineContent(m))),d=n.filter(m=>m!=="").map(m=>EUe(m)),u=Math.min(...a,...l,...d);let h;if(s.getLineIndentColumn(t.startLineNumber)>=u+1)hl(r).scrollTop.read(o),h=r.getOffsetForColumn(t.startLineNumber,u+1);else if(n.length>0)h=Unt(n[0].slice(0,u),r,s);else return{prefixTrim:0,prefixLeftOffset:0};return{prefixTrim:u,prefixLeftOffset:h}}function Unt(e,t,n){const r=t.getOption(59).typicalHalfwidthCharacterWidth,o=n.getOptions().tabSize*r,s=e.split(" ").length-1;return(e.length-s)*r+s*o}function jnt(e){const t=e.layoutInfoContentLeft,n=Rt({name:"editor.validOverlay.width"},o=>{const s=e.layoutInfoMinimap.read(o).minimapLeft!==0,a=e.layoutInfoWidth.read(o)-t.read(o);if(s){const l=e.layoutInfoMinimap.read(o).minimapWidth+e.layoutInfoVerticalScrollbarWidth.read(o);return a-l}return a}),r=Rt({name:"editor.validOverlay.height"},o=>e.layoutInfoHeight.read(o)+e.contentHeight.read(o));return Rt({name:"editor.validOverlay"},o=>Vs.fromLeftTopWidthHeight(t.read(o),0,n.read(o),r.read(o)))}function wCo(e,t){const n=[];for(const r of e){const o=t.mapRange(r.modifiedRange);n.push(new im(r.originalRange,o))}return n}function Mxe(...e){return e.filter(t=>typeof t=="string").join(" ")}function OCo(e,t){return new Ee(t.lineNumber,t.column+e.start,t.lineNumber,t.column+e.endExclusive)}function yCo(e,t){let n=0;e:for(let r=0,o=e.length;ryCo(r[a-1],n)),T0);return t.forEach(a=>{const l=CCo(r[a-1],s,n);o.push(new Mc(OCo(new Xn(0,l),new it(a,1)),""))}),new V4(o)}class TVe{constructor(){this._data=""}moveTo(t){return this._data+=`M ${t.x} ${t.y} `,this}lineTo(t){return this._data+=`L ${t.x} ${t.y} `,this}build(){return this._data}}function By(e){const t=vL(void 0,(n,r)=>e.read(n)||r);return Vh({debugName:()=>`${e.debugName}.mapOutFalsy`},n=>{if(t.read(n),!!e.read(n))return t})}function Pv(e,t=Hd.ofCaller()){return{left:Rt({name:"editor.validOverlay.left"},n=>e(n).left,t),top:Rt({name:"editor.validOverlay.top"},n=>e(n).top,t),width:Rt({name:"editor.validOverlay.width"},n=>e(n).right-e(n).left,t),height:Rt({name:"editor.validOverlay.height"},n=>e(n).bottom-e(n).top,t)}}var SCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Pxe=function(e,t){return function(n,r){t(n,r,e)}};let QVe=class{constructor(t,n,r,o,s,a){this._model=t,this._close=n,this._editorObs=r,this._contextKeyService=o,this._keybindingService=s,this._commandService=a,this._inlineEditsShowCollapsed=this._editorObs.getOption(71).map(l=>l.edits.showCollapsed)}toDisposableLiveElement(){return this._createHoverContent().toDisposableLiveElement()}_createHoverContent(){const t=Ti("active",void 0),n=m=>({title:m.title,icon:m.icon,keybinding:typeof m.commandId=="string"?this._getKeybinding(m.commandArgs?void 0:m.commandId):Rt(this,v=>typeof m.commandId=="string"?void 0:this._getKeybinding(m.commandArgs?void 0:m.commandId.read(v)).read(v)),isActive:t.map(v=>v===m.id),onHoverChange:v=>t.set(v?m.id:void 0,void 0),onAction:()=>(this._close(!0),this._commandService.executeCommand(typeof m.commandId=="string"?m.commandId:m.commandId.get(),...m.commandArgs??[]))}),r=xCo(this._model.displayName),o=C7(n({id:"gotoAndAccept",title:`${U(1212,"Go To")} / ${U(1213,"Accept")}`,icon:zt.check,commandId:WJ})),s=C7(n({id:"reject",title:U(1214,"Reject"),icon:zt.close,commandId:kBn})),a=this._model.extensionCommands.map((m,v)=>C7(n({id:m.command.id+"_"+v,title:m.command.title,icon:m.icon??zt.symbolEvent,commandId:m.command.id,commandArgs:m.command.arguments}))),l=this._inlineEditsShowCollapsed.map(m=>C7(n(m?{id:"showExpanded",title:U(1215,"Show Expanded"),icon:zt.expandAll,commandId:Xje}:{id:"showCollapsed",title:U(1216,"Show Collapsed"),icon:zt.collapseAll,commandId:Xje}))),d=C7(n({id:"snooze",title:U(1217,"Snooze"),icon:zt.bellSlash,commandId:"editor.action.inlineSuggest.snooze"})),u=C7(n({id:"settings",title:U(1218,"Settings"),icon:zt.gear,commandId:"workbench.action.openSettings",commandArgs:["@tag:nextEditSuggestions"]})),h=this._model.action?[this._model.action]:[],g=h.length>0?ECo(h.map(m=>({id:m.id,label:m.title+"...",enabled:!0,run:()=>this._commandService.executeCommand(m.id,...m.arguments??[]),class:void 0,tooltip:m.tooltip??m.title})),{hoverDelegate:jko}):void 0;return LCo([r,o,s,l,a.length?VCt():void 0,d,u,...a,g?VCt():void 0,g])}_getKeybinding(t){return t?Ko(this._contextKeyService.onDidChangeContext,()=>this._keybindingService.lookupKeybinding(t)):ca(void 0)}};QVe=SCo([Pxe(3,Qi),Pxe(4,Do),Pxe(5,ba)],QVe);function LCo(e){return cr.div({class:"content",style:{margin:4,minWidth:180}},e)}function xCo(e){return cr.div({class:"header",style:{color:en(O7n),fontSize:"13px",fontWeight:"600",padding:"0 4px",lineHeight:28}},[e])}function C7(e){return Rt({name:"inlineEdits.option"},t=>{var n;return cr.div({class:["monaco-menu-option",(n=e.isActive)==null?void 0:n.map(r=>r&&"active")],onmouseenter:()=>{var r;return(r=e.onHoverChange)==null?void 0:r.call(e,!0)},onmouseleave:()=>{var r;return(r=e.onHoverChange)==null?void 0:r.call(e,!1)},onclick:e.onAction,onkeydown:r=>{var o;r.key==="Enter"&&((o=e.onAction)==null||o.call(e))},tabIndex:0,style:{borderRadius:3}},[cr.elem("span",{style:{fontSize:16,display:"flex"}},[fi.isThemeIcon(e.icon)?y3(e.icon):e.icon.map(r=>y3(r))]),cr.elem("span",{},[e.title]),cr.div({style:{marginLeft:"auto"},ref:r=>{const o=t.store.add(new cH(r,b0,{disableTitle:!0,...fDn,keybindingLabelShadow:void 0,keybindingLabelForeground:en(O7n),keybindingLabelBackground:"transparent",keybindingLabelBorder:"transparent",keybindingLabelBottomBorder:void 0}));t.store.add(Oi(s=>{o.set(e.keybinding.read(s))}))}})])})}function ECo(e,t){return Rt({name:"inlineEdits.actionBar"},n=>cr.div({class:["action-widget-action-bar"],style:{padding:"3px 24px"}},[cr.div({ref:r=>{n.store.add(new g1(r,t)).push(e,{icon:!1,label:!0})}})]))}function VCt(){return cr.div({id:"inline-edit-gutter-indicator-menu-separator",class:"menu-separator",style:{color:en(rao),padding:"2px 0"}},cr.div({style:{borderBottom:`1px solid ${en(wet)}`}}))}var TCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},cce=function(e,t){return function(n,r){t(n,r,e)}};let DVe=class extends ft{get model(){const t=this._model.get();if(!t)throw new ui("Inline Edit Model not available");return t}constructor(t,n,r,o,s,a,l,d,u,h){super(),this._editorObs=t,this._originalRange=n,this._verticalOffset=r,this._model=o,this._isHoveringOverInlineEdit=s,this._focusIsInMenu=a,this._hoverService=l,this._instantiationService=d,this._accessibilityService=u,this._tabAction=Rt(this,g=>{const m=this._model.read(g);return m?m.tabAction.read(g):wf.Inactive}),this._hoverVisible=Ti(this,!1),this.isHoverVisible=this._hoverVisible,this._isHoveredOverIcon=Ti(this,!1),this._isHoveredOverIconDebounced=wbt(this._isHoveredOverIcon,100),this.isHoveredOverIcon=this._isHoveredOverIconDebounced,this._isHoveredOverInlineEditDebounced=wbt(this._isHoveringOverInlineEdit,100),this._gutterIndicatorStyles=this._tabAction.map(this,(g,m)=>{switch(g){case wf.Inactive:return{background:gv(bIn,h).read(m).toString(),foreground:gv(mCo,h).read(m).toString(),border:gv(pIn,h).read(m).toString()};case wf.Jump:return{background:gv(AIn,h).read(m).toString(),foreground:gv(gCo,h).read(m).toString(),border:gv(_N,h).read(m).toString()};case wf.Accept:return{background:gv(OIn,h).read(m).toString(),foreground:gv(kCo,h).read(m).toString(),border:gv(wIn,h).read(m).toString()};default:bie()}}),this._originalRangeObs=By(this._originalRange),this._state=Rt(this,g=>{const m=this._originalRangeObs.read(g);if(m)return{range:m,lineOffsetRange:this._editorObs.observeLineOffsetRange(m,g.store)}}),this._stickyScrollController=fp.get(this._editorObs.editor),this._stickyScrollHeight=this._stickyScrollController?Ko(this._stickyScrollController.onDidChangeStickyScrollHeight,()=>this._stickyScrollController.stickyScrollWidgetHeight):ca(0),this._lineNumberToRender=Rt(this,g=>{var f;if(this._verticalOffset.read(g)!==0)return"";const m=(f=this._originalRange.read(g))==null?void 0:f.startLineNumber,v=this._editorObs.getOption(76).read(g);if(m===void 0||v.renderType===0)return"";if(v.renderType===3){const k=this._editorObs.cursorPosition.read(g);return m%10===0||k&&k.lineNumber===m?m.toString():""}if(v.renderType===2){const k=this._editorObs.cursorPosition.read(g);if(!k)return"";const A=Math.abs(m-k.lineNumber);return A===0?m.toString():A.toString()}return v.renderType===4?v.renderFn?v.renderFn(m):"":m.toString()}),this._availableWidthForIcon=Rt(this,g=>{const m=this._editorObs.editor.getModel(),v=this._editorObs.editor,f=this._editorObs.layoutInfo.read(g),k=f.decorationsLeft+f.decorationsWidth-f.glyphMarginLeft;if(!m||k<=0)return()=>0;if(f.lineNumbersLeft===0)return()=>k;const A=this._editorObs.getOption(76).read(g);if(A.renderType===2||A.renderType===0)return()=>k;const p=v.getOption(59).typicalHalfwidthCharacterWidth,b=f.lineNumbersLeft+f.lineNumbersWidth,O=(m.getLineCount()+1).toString().length,y=[];for(let C=1;C<=O;C++){const _=10**(C-1),S=v.getTopForLineNumber(_),L=C*p,E=Math.min(k,Math.max(0,b-L-f.glyphMarginLeft));y.push({firstLineNumberWithDigitCount:_,topOfLineNumber:S,usableWidthLeftOfLineNumber:E})}return C=>{for(let _=y.length-1;_>=0;_--)if(C>=y[_].topOfLineNumber)return y[_].usableWidthLeftOfLineNumber;throw new ui("Could not find avilable width for icon")}}),this._layout=Rt(this,g=>{const m=this._state.read(g);if(!m)return;const v=this._editorObs.layoutInfo.read(g),f=this._editorObs.observeLineHeightForLine(m.range.map(H=>H.startLineNumber)).read(g),k=2,A=v.decorationsLeft+v.decorationsWidth-v.glyphMarginLeft-2*k,p=v.height-2*k,b=Vs.fromLeftTopWidthHeight(k,k,A,p),w=b.withTop(this._stickyScrollHeight.read(g)),O=b.withTop(w.top+k),y=m.lineOffsetRange.read(g),C=Vs.fromRanges(Xn.fromTo(O.left,O.right),y),_=f,S=this._verticalOffset.read(g),L=C.withHeight(_).translateY(S),E=w.containsRect(L),T=this._tabAction.map(H=>H===wf.Accept?zt.keyboardTab:zt.arrowRight),D=Rt(this,H=>{if(this._isHoveredOverIconDebounced.read(H)||this._isHoveredOverInlineEditDebounced.read(H))return zt.check;if(this._tabAction.read(H)===wf.Accept)return zt.keyboardTab;const $=this._editorObs.cursorLineNumber.read(H)??0,G=m.range.read(H).startLineNumber;return $<=G?zt.keyboardTabAbove:zt.keyboardTabBelow}),P=22,Q=16,M=H=>{const $=this._availableWidthForIcon.read(void 0)(H.bottom+this._editorObs.editor.getScrollTop())-k;return Math.max(Math.min($,P),Q)};if(E){const H=L;let $;v.lineNumbersWidth===0?$=Math.min(Math.max(v.lineNumbersLeft-b.left,0),H.width-P):$=Math.max(v.lineNumbersLeft+v.lineNumbersWidth-b.left,0);const G=H.withWidth($),q=Math.max(Math.min(v.decorationsWidth,P),Q),re=H.withWidth(q).translateX($);return{gutterEditArea:C,icon:D,iconDirection:"right",iconRect:re,pillRect:H,lineNumberRect:G}}const B=b.intersect(C);if(B&&B.height>=_){const H=L.moveToBeContainedIn(O).moveToBeContainedIn(B),$=H.withWidth(M(H));return{gutterEditArea:C,icon:D,iconDirection:"right",iconRect:$,pillRect:$}}const I=L.moveToBeContainedIn(b),F=I.withWidth(M(I)),j=F,W=F.top!!g),this._indicator=cr.div({class:"inline-edits-view-gutter-indicator",onclick:()=>{const g=this._layout.get(),m=(g==null?void 0:g.icon.get())===zt.check;this._editorObs.editor.focus(),m?this.model.accept():this.model.jump()},tabIndex:0,style:{position:"absolute",overflow:"visible"}},By(this._layout).map(g=>g?[cr.div({style:{position:"absolute",background:en(vCo),borderRadius:"4px",...Pv(m=>g.read(m).gutterEditArea)}}),cr.div({class:"icon",ref:this._iconRef,onmouseenter:()=>{this._showHover()},style:{cursor:"pointer",zIndex:"20",position:"absolute",backgroundColor:this._gutterIndicatorStyles.map(m=>m.background),"--vscodeIconForeground":this._gutterIndicatorStyles.map(m=>m.foreground),border:this._gutterIndicatorStyles.map(m=>`1px solid ${m.border}`),boxSizing:"border-box",borderRadius:"4px",display:"flex",justifyContent:"flex-end",transition:"background-color 0.2s ease-in-out, width 0.2s ease-in-out",...Pv(m=>g.read(m).pillRect)}},[cr.div({className:"line-number",style:{lineHeight:g.map(m=>m.lineNumberRect?m.lineNumberRect.height:0),display:g.map(m=>m.lineNumberRect?"flex":"none"),alignItems:"center",justifyContent:"flex-end",width:g.map(m=>m.lineNumberRect?m.lineNumberRect.width:0),height:"100%",color:this._gutterIndicatorStyles.map(m=>m.foreground)}},this._lineNumberToRender),cr.div({style:{rotate:g.map(m=>`${QCo(m.iconDirection)}deg`),transition:"rotate 0.2s ease-in-out",display:"flex",alignItems:"center",justifyContent:"center",height:"100%",marginRight:g.map(m=>{var v;return m.pillRect.width-m.iconRect.width-(((v=m.lineNumberRect)==null?void 0:v.width)??0)}),width:g.map(m=>m.iconRect.width)}},[g.map((m,v)=>y3(m.icon.read(v)))])])]:[])).keepUpdated(this._store),this._register(this._editorObs.createOverlayWidget({domNode:this._indicator.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:ca(0)})),this._register(this._editorObs.editor.onMouseMove(g=>{if(this._state.get()===void 0)return;const f=this._iconRef.element.getBoundingClientRect(),k=Vs.fromLeftTopWidthHeight(f.left,f.top,f.width,f.height),A=new cu(g.event.posx,g.event.posy);this._isHoveredOverIcon.set(k.containsPoint(A),void 0)})),this._register(this._editorObs.editor.onDidScrollChange(()=>{this._isHoveredOverIcon.set(!1,void 0)})),this._register(c3(this._isHoveredOverInlineEditDebounced,g=>{g&&this.triggerAnimation()})),this._register(Oi(g=>{this._indicator.readEffect(g),this._indicator.element&&this._editorObs.editor.applyFontInfo(this._indicator.element)}))}triggerAnimation(){return this._accessibilityService.isMotionReduced()?new Animation(null,null).finished:this._iconRef.element.animate([{outline:`2px solid ${this._gutterIndicatorStyles.map(n=>n.border).get()}`,outlineOffset:"-1px",offset:0},{outline:"2px solid transparent",outlineOffset:"10px",offset:1}],{duration:500}).finished}_showHover(){if(this._hoverVisible.get())return;const t=new xt,n=t.add(this._instantiationService.createInstance(QVe,this.model,s=>{s&&this._editorObs.editor.focus(),o==null||o.dispose()},this._editorObs).toDisposableLiveElement()),r=t.add(uA(n.element));t.add(r.onDidBlur(()=>this._focusIsInMenu.set(!1,void 0))),t.add(r.onDidFocus(()=>this._focusIsInMenu.set(!0,void 0))),t.add(Hn(()=>this._focusIsInMenu.set(!1,void 0)));const o=this._hoverService.showInstantHover({target:this._iconRef.element,content:n.element});o?(this._hoverVisible.set(!0,void 0),t.add(this._editorObs.editor.onDidScrollChange(()=>o.dispose())),t.add(o.onDispose(()=>{this._hoverVisible.set(!1,void 0),t.dispose()}))):t.dispose()}};DVe=TCo([cce(6,pm),cce(7,Yn),cce(8,vh),cce(9,Dl)],DVe);function QCo(e){switch(e){case"top":return 90;case"bottom":return-90;case"right":return 0}}var DCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zCt=function(e,t){return function(n,r){t(n,r,e)}},Ck;(function(e){e.FirstTime="firstTime",e.SecondTime="secondTime",e.Active="active"})(Ck||(Ck={}));let BVe=class extends ft{constructor(t,n,r,o,s,a){super(),this._host=t,this._model=n,this._indicator=r,this._collapsedView=o,this._storageService=s,this._configurationService=a,this._disposables=this._register(new ts),this._setupDone=Ti({name:"setupDone"},!1),this._activeCompletionId=Rt(l=>{const d=this._model.read(l);if(!d||!this._setupDone.read(l))return;const u=this._indicator.read(l);if(!(!u||!u.isVisible.read(l)))return d.inlineEdit.inlineCompletion.identity.id}),this._register(this._initializeDebugSetting()),this._disposables.value=this.setupNewUserExperience(),this._setupDone.set(!0,void 0)}setupNewUserExperience(){if(this.getNewUserType()===Ck.Active)return;const t=new xt;let n=!1,r=!1,o=0,s=0;return t.add(Sdo(this._activeCompletionId,async(a,l,d,u)=>{var g,m;if(a===void 0)return;let h=this.getNewUserType();switch(h){case Ck.FirstTime:{(o++>=5||n)&&(h=Ck.SecondTime,this.setNewUserType(h));break}case Ck.SecondTime:{s++>=3&&r&&(h=Ck.Active,this.setNewUserType(h));break}}switch(h){case Ck.FirstTime:{for(let v=0;v<3&&!u.isCancellationRequested;v++)await((g=this._indicator.get())==null?void 0:g.triggerAnimation()),await Cy(500);break}case Ck.SecondTime:{(m=this._indicator.get())==null||m.triggerAnimation();break}}})),t.add(Oi(a=>{this._collapsedView.isVisible.read(a)&&this.getNewUserType()!==Ck.Active&&this._collapsedView.triggerAnimation()})),t.add(Ef((a,l)=>{const d=this._indicator.read(a);d&&l.add(c3(d.isHoveredOverIcon,async u=>{u&&(n=!0)}))})),t.add(Ef((a,l)=>{const d=this._host.read(a);d&&l.add(d.onDidAccept(()=>{r=!0}))})),t}getNewUserType(){return this._storageService.get("inlineEditsGutterIndicatorUserKind",-1,Ck.FirstTime)}setNewUserType(t){switch(t){case Ck.FirstTime:throw new ui("UserKind should not be set to first time");case Ck.SecondTime:break;case Ck.Active:this._disposables.clear();break}this._storageService.store("inlineEditsGutterIndicatorUserKind",t,-1,0)}_initializeDebugSetting(){const t="editor.inlineSuggest.edits.resetNewUserExperience";return this._configurationService.getValue(t)&&this._storageService.remove("inlineEditsGutterIndicatorUserKind",-1),this._configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration(t)&&this._configurationService.getValue(t)&&(this._storageService.remove("inlineEditsGutterIndicatorUserKind",-1),this._disposables.value=this.setupNewUserExperience())})}};BVe=DCo([zCt(4,Bg),zCt(5,ar)],BVe);var BCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RCo=function(e,t){return function(n,r){t(n,r,e)}};let RVe=class extends ft{constructor(t,n,r){super(),this._editor=t,this._edit=n,this._accessibilityService=r,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._iconRef=cr.ref(),this.isHovered=ca(!1),this._editorObs=hl(this._editor);const s=this._edit.map(u=>(u==null?void 0:u.edit.replacements[0])??null).map(u=>u?IS(u,this._editor.getModel()).range.getStartPosition():null),a=this._editorObs.observePosition(s,this._store),l=Rt(u=>{const h=a.read(u);if(!h)return null;const g=this._editorObs.layoutInfoContentLeft.read(u),m=this._editorObs.scrollLeft.read(u);return new cu(g+h.x-m,h.y)}),d=cr.div({class:"inline-edits-collapsed-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:"block"}},[[this.getCollapsedIndicator(l)]]).keepUpdated(this._store).element;this._register(this._editorObs.createOverlayWidget({domNode:d,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:ca(0)})),this.isVisible=this._edit.map((u,h)=>!!u&&l.read(h)!==null)}triggerAnimation(){return this._accessibilityService.isMotionReduced()?new Animation(null,null).finished:this._iconRef.element.animate([{offset:0,transform:"translateY(-3px)"},{offset:.2,transform:"translateY(1px)"},{offset:.36,transform:"translateY(-1px)"},{offset:.52,transform:"translateY(1px)"},{offset:.68,transform:"translateY(-1px)"},{offset:.84,transform:"translateY(1px)"},{offset:1,transform:"translateY(0px)"}],{duration:2e3}).finished}getCollapsedIndicator(t){const n=this._editorObs.layoutInfoContentLeft,r=t.map((s,a)=>s?s.deltaX(-n.read(a)):null),o=this.createIconPath(r);return cr.svg({class:"collapsedView",ref:this._iconRef,style:{position:"absolute",...Pv(s=>jnt(this._editorObs).read(s)),overflow:"hidden",pointerEvents:"none"}},[cr.svgElem("path",{class:"collapsedViewPath",d:o,fill:en(_N)})])}createIconPath(t){return t.map(s=>{if(!s)return new TVe().build();const a=s.deltaX(-6/2).deltaY(-1),l=a.deltaX(6),d=a.deltaY(1),u=l.deltaY(1),h=d.deltaX(6/2).deltaY(3);return new TVe().moveTo(a).lineTo(l).lineTo(u).lineTo(h).lineTo(d).lineTo(a).build()})}};RVe=BCo([RCo(2,vh)],RVe);var ICo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},HCt=function(e,t){return function(n,r){t(n,r,e)}};const dce=14,Fxe=0,ZC=4,uce=4,$Ct=2;let IVe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._languageService=s,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._isHovered=Ti(this,!1),this.isHovered=this._isHovered,this._viewRef=cr.ref(),this._editorObs=hl(this._editor);const a=r.map((h,g)=>{let m;switch(h){case wf.Inactive:m=bIn;break;case wf.Jump:m=AIn;break;case wf.Accept:m=OIn;break}return{border:gv(m,o).read(g).toString(),background:en(Oc)}}),l=n.map(h=>h?this.getState(h):void 0),d=l.map(h=>h?this.getRendering(h,a):void 0);this.minEditorScrollHeight=Rt(this,h=>{const g=l.read(h);return g?g.rect.read(h).bottom+this._editor.getScrollTop():0});const u=cr.div({class:"inline-edits-custom-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:"block"}},[d]).keepUpdated(this._store);this._register(this._editorObs.createOverlayWidget({domNode:u.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:vL(this,(h,g)=>{const m=l.read(h);if(!m)return g??0;const v=m.rect.map(f=>f.right).read(h)+this._editorObs.layoutInfoVerticalScrollbarWidth.read(h)+ZC-this._editorObs.layoutInfoContentLeft.read(h);return Math.max(g??0,v)}).recomputeInitiallyAndOnChange(this._store)})),this._register(Oi(h=>{if(!d.read(h)){this._isHovered.set(!1,void 0);return}this._isHovered.set(u.isHovered.read(h),void 0)}))}fitsInsideViewport(t,n,r){const o=this._editorObs.layoutInfoWidth.read(r),s=this._editorObs.layoutInfoContentLeft.read(r),a=this._editor.getLayoutInfo().verticalScrollbarWidth,l=this._editorObs.layoutInfoMinimap.read(r).minimapLeft!==0?this._editorObs.layoutInfoMinimap.read(r).minimapWidth:0,d=y9(this._editorObs,t,void 0),u=Unt(n,this._editor,this._editor.getModel()),h=ZC+dce;return d+u+h{var b;const d=t.range.startLineNumber,u=t.range.endLineNumber,h=t.range.startColumn,g=t.range.endColumn,m=((b=this._editor.getModel())==null?void 0:b.getLineCount())??0,v=y9(this._editorObs,new Ei(d,d+1),l),f=d+1<=m?y9(this._editorObs,new Ei(d+1,d+2),l):void 0,k=d-1>=1?y9(this._editorObs,new Ei(d-1,d),l):void 0,A=this._editor.getOffsetForColumn(d,h),p=this._editor.getOffsetForColumn(u,g);return{lineWidth:v,lineWidthBelow:f,lineWidthAbove:k,startContentLeftOffset:A,endContentLeftOffset:p}}),r=t.range.startLineNumber,o=t.range.endLineNumber,s=this.fitsInsideViewport(new Ei(r,o+1),t.content,void 0);return{rect:Rt(this,l=>{const d=this._editorObs.getOption(59).read(l).typicalHalfwidthCharacterWidth,{lineWidth:u,lineWidthBelow:h,lineWidthAbove:g,startContentLeftOffset:m,endContentLeftOffset:v}=n.read(l),f=this._editorObs.layoutInfoContentLeft.read(l),k=this._editorObs.observeLineHeightForLine(r).recomputeInitiallyAndOnChange(l.store).read(l),A=this._editorObs.scrollTop.read(l),p=this._editorObs.scrollLeft.read(l);let b;r===o&&v+5*d>=u&&s?b="end":h!==void 0&&h+dce-uce-ZCu.withMargin(0,ZC));return cr.div({class:"collapsedView",ref:this._viewRef,style:{position:"absolute",...Pv(u=>l.read(u)),overflow:"hidden",boxSizing:"border-box",cursor:"pointer",border:n.map(u=>`1px solid ${u.border}`),borderRadius:"4px",backgroundColor:n.map(u=>u.background),display:"flex",alignItems:"center",justifyContent:"center",whiteSpace:"nowrap"},onmousedown:u=>{u.preventDefault()},onclick:u=>{this._onDidClick.fire(new Xh(ii(u),u))}},[r])}};IVe=ICo([HCt(3,Dl),HCt(4,nc)],IVe);const MCo=0,PCo=0,Nxe=1,FCo=1,NCo=3,Uxe=4;class UCo extends ft{constructor(t,n,r,o){super(),this._editor=t,this._edit=n,this._uiState=r,this._tabAction=o,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._display=Rt(this,l=>this._uiState.read(l)?"block":"none"),this._editorMaxContentWidthInRange=Rt(this,l=>{const d=this._originalDisplayRange.read(l);return d?(this._editorObs.versionId.read(l),vL(this,(u,h)=>{const g=y9(this._editorObs,d,u);return Math.max(g,h??0)})):ca(0)}).map((l,d)=>l.read(d)),this._maxPrefixTrim=Rt(this,l=>{const d=this._uiState.read(l);return d?Nnt(d.deletions,d.originalRange,[],this._editor):{prefixTrim:0,prefixLeftOffset:0}}),this._editorLayoutInfo=Rt(this,l=>{const d=this._edit.read(l);if(!d||!this._uiState.read(l))return null;const h=this._editorObs.layoutInfo.read(l),g=this._editorObs.scrollLeft.read(l),m=this._editorObs.getOption(59).map(w=>w.typicalHalfwidthCharacterWidth).read(l),v=h.contentLeft+Math.max(this._editorMaxContentWidthInRange.read(l),m)-g,f=d.originalLineRange,k=this._originalVerticalStartPosition.read(l)??this._editor.getTopForLineNumber(f.startLineNumber)-this._editorObs.scrollTop.read(l),A=this._originalVerticalEndPosition.read(l)??this._editor.getTopForLineNumber(f.endLineNumberExclusive)-this._editorObs.scrollTop.read(l),p=h.contentLeft+this._maxPrefixTrim.read(l).prefixLeftOffset-g;return v<=p?null:{codeRect:Vs.fromLeftTopRightBottom(p,k,v,A).withMargin(PCo,MCo),contentLeft:h.contentLeft}}).recomputeInitiallyAndOnChange(this._store),this._originalOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,l=>{const d=By(this._editorLayoutInfo).read(l);if(!d)return;const u=d.map(v=>Vs.fromLeftTopRightBottom(v.contentLeft-Uxe-Nxe,v.codeRect.top,v.contentLeft,v.codeRect.bottom)),h=Rt(this,v=>{const f=d.read(v).codeRect,k=u.read(v);return f.intersectHorizontal(new Xn(k.left,Number.MAX_SAFE_INTEGER))}),g=this._uiState.map(v=>v!=null&&v.inDiffEditor?NCo:FCo).read(l),m=h.map(v=>v.withMargin(g,g));return[cr.div({class:"originalSeparatorDeletion",style:{...m.read(l).toStyles(),borderRadius:`${Uxe}px`,border:`${Nxe+g}px solid ${en(Oc)}`,boxSizing:"border-box"}}),cr.div({class:"originalOverlayDeletion",style:{...h.read(l).toStyles(),borderRadius:`${Uxe}px`,border:j3e(this._tabAction).map(v=>`${Nxe}px solid ${en(v)}`),boxSizing:"border-box",backgroundColor:en(WZ)}}),cr.div({class:"originalOverlayHiderDeletion",style:{...u.read(l).toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._nonOverflowView=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[[this._originalOverlay]]).keepUpdated(this._store),this.isHovered=ca(!1),this._editorObs=hl(this._editor);const s=Rt(this,l=>{const d=this._edit.read(l);return d?new it(d.originalLineRange.startLineNumber,1):null}),a=Rt(this,l=>{const d=this._edit.read(l);return d?new it(d.originalLineRange.endLineNumberExclusive,1):null});this._originalDisplayRange=this._uiState.map(l=>l==null?void 0:l.originalRange),this._originalVerticalStartPosition=this._editorObs.observePosition(s,this._store).map(l=>l==null?void 0:l.y),this._originalVerticalEndPosition=this._editorObs.observePosition(a,this._store).map(l=>l==null?void 0:l.y),this._register(this._editorObs.createOverlayWidget({domNode:this._nonOverflowView.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,l=>{const d=this._editorLayoutInfo.read(l);return d===null?0:d.codeRect.width})}))}}var jCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},XCt=function(e,t){return function(n,r){t(n,r,e)}};const DX=1,WCo=1,VCo=3,jxe=4;let MVe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._input=n,this._tabAction=r,this._languageService=s,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._state=Rt(this,a=>{const l=this._input.read(a);if(!l)return;const d=this._editor.getModel(),u=d.getEOL();if(l.startColumn===1&&l.lineNumber>1&&d.getLineLength(l.lineNumber)!==0&&l.text.endsWith(u)&&!l.text.startsWith(u)){const h=d.getLineLength(l.lineNumber-1)+1;return{lineNumber:l.lineNumber-1,column:h,text:u+l.text.slice(0,-u.length)}}return{lineNumber:l.lineNumber,column:l.startColumn,text:l.text}}),this._trimVertically=Rt(this,a=>{const l=this._state.read(a),d=l==null?void 0:l.text;if(!d||d.trim()==="")return{topOffset:0,bottomOffset:0,linesTop:0,linesBottom:0};const u=this._editor.getLineHeightForPosition(new it(l.lineNumber,1)),h=this._editor.getModel().getEOL();let g=0,m=0,v=0;for(;vv&&d.endsWith(h,f);f-=h.length)m+=1;return{topOffset:g*u,bottomOffset:m*u,linesTop:g,linesBottom:m}}),this._maxPrefixTrim=Rt(this,a=>{const l=this._state.read(a);if(!l)return{prefixLeftOffset:0,prefixTrim:0};const d=this._editor.getModel(),u=d.getEOL(),h=this._trimVertically.read(a),g=l.text.split(u),m=g.slice(h.linesTop,g.length-h.linesBottom);h.linesTop===0&&(m[0]=d.getLineContent(l.lineNumber)+m[0]);const v=new Ei(l.lineNumber,l.lineNumber+(h.linesTop>0?0:1));return Nnt([],v,m,this._editor)}),this._ghostText=Rt(a=>{const l=this._state.read(a),d=this._maxPrefixTrim.read(a);if(!l)return;const h=this._editor.getModel().getEOL(),m=l.text.split(h).map((v,f)=>new AD(new Ee(f+1,f===0?1:d.prefixTrim+1,f+1,v.length+1),"modified-background",0));return new nee(l.lineNumber,[new M0e(l.column,l.text,!1,m)])}),this._display=Rt(this,a=>this._state.read(a)?"block":"none"),this._editorMaxContentWidthInRange=Rt(this,a=>{const l=this._state.read(a);if(!l)return 0;this._editorObs.versionId.read(a);const d=this._editor.getModel(),u=d.getEOL(),h=l.text.startsWith(u)?"":d.getValueInRange(new Ee(l.lineNumber,1,l.lineNumber,l.column)),g=d.getValueInRange(new Ee(l.lineNumber,l.column,l.lineNumber,d.getLineLength(l.lineNumber)+1)),v=(h+l.text+g).split(u),f=o8.fromEditor(this._editor).withSetWidth(!1).withScrollBeyondLastColumn(0),k=v.map(A=>{var w;const p=(w=d.tokenization.tokenizeLinesAt(l.lineNumber,[A]))==null?void 0:w[0];let b;return p?b=e8.fromLineTokens(p).toLineTokens(A,this._languageService.languageIdCodec):b=uc.createEmpty(A,this._languageService.languageIdCodec),$ie(new Xie([b]),f,[],tn("div"),!0).minWidthInPx});return Math.max(...k)}),this.startLineOffset=this._trimVertically.map(a=>a.topOffset),this.originalLines=this._state.map(a=>a?new Ei(a.lineNumber,Math.min(a.lineNumber+2,this._editor.getModel().getLineCount()+1)):void 0),this._overlayLayout=Rt(this,a=>{this._ghostText.read(a);const l=this._state.read(a);if(!l)return null;this._editorObs.observePosition(Ti(this,new it(l.lineNumber,l.column)),a.store).read(a);const d=this._editorObs.layoutInfo.read(a),u=this._editorObs.scrollLeft.read(a),h=this._editorObs.layoutInfoVerticalScrollbarWidth.read(a),g=d.contentLeft+this._editorMaxContentWidthInRange.read(a)-u,m=this._maxPrefixTrim.read(a).prefixLeftOffset??0,v=d.contentLeft+m-u;if(g<=v)return null;const{topOffset:f,bottomOffset:k}=this._trimVertically.read(a),A=this._editorObs.scrollTop.read(a),p=this._ghostTextView.height.read(a)-f-k,b=this._editor.getTopForLineNumber(l.lineNumber)-A+f,w=b+p,O=new Vs(v,b,g,w);return{overlay:O,startsAtContentLeft:m===0,contentLeft:d.contentLeft,minContentWidthRequired:m+O.width+h}}).recomputeInitiallyAndOnChange(this._store),this._modifiedOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,a=>{const l=By(this._overlayLayout).read(a);if(!l)return;const d=l.map(m=>Vs.fromLeftTopRightBottom(m.contentLeft-jxe-DX,m.overlay.top,m.contentLeft,m.overlay.bottom)).read(a),u=this._input.map(m=>m!=null&&m.inDiffEditor?VCo:WCo).read(a),h=l.map(m=>m.overlay.withMargin(0,DX,0,m.startsAtContentLeft?0:DX).intersectHorizontal(new Xn(d.left,Number.MAX_SAFE_INTEGER))),g=h.map(m=>m.withMargin(u,u));return[cr.div({class:"originalUnderlayInsertion",style:{...g.read(a).toStyles(),borderRadius:jxe,border:`${DX+u}px solid ${en(Oc)}`,boxSizing:"border-box"}}),cr.div({class:"originalOverlayInsertion",style:{...h.read(a).toStyles(),borderRadius:jxe,border:see(this._tabAction).map(m=>`${DX}px solid ${en(m)}`),boxSizing:"border-box",backgroundColor:en(vIn)}}),cr.div({class:"originalOverlayHiderInsertion",style:{...d.toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._view=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[[this._modifiedOverlay]]).keepUpdated(this._store),this._editorObs=hl(this._editor),this._ghostTextView=this._register(o.createInstance(ree,this._editor,{ghostText:this._ghostText,minReservedLineCount:ca(0),targetTextModel:this._editorObs.model.map(a=>a??void 0),warning:ca(void 0),handleInlineCompletionShown:ca(()=>{})},Ti(this,{syntaxHighlightingEnabled:!0,extraClasses:["inline-edit"]}),!0,!0)),this.isHovered=this._ghostTextView.isHovered,this._register(this._ghostTextView.onDidClick(a=>{this._onDidClick.fire(a)})),this._register(this._editorObs.createOverlayWidget({domNode:this._view.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,a=>{const l=this._overlayLayout.read(a);return l===null?0:l.minContentWidthRequired})}))}};MVe=jCo([XCt(3,Yn),XCt(4,nc)],MVe);var zCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},GCt=function(e,t){return function(n,r){t(n,r,e)}};let PVe=class extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._edit=n,this._isInDiffEditor=r,this._tabAction=o,this._languageService=s,this._themeService=a,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._maxPrefixTrim=this._edit.map((l,d)=>l?Nnt(l.replacements.flatMap(u=>[u.originalRange,u.modifiedRange]),l.originalRange,l.modifiedLines,this._editor.editor,d):void 0),this._modifiedLineElements=Rt(this,l=>{var A;const d=[];let u=0;const h=this._maxPrefixTrim.read(l),g=this._edit.read(l);if(!g||!h)return;const m=h.prefixTrim,v=HCo(g.replacements.map(p=>p.modifiedRange)).map(p=>new Ee(p.startLineNumber,p.startColumn-m,p.endLineNumber,p.endColumn-m)),f=this._editor.model.get(),k=g.modifiedRange.startLineNumber;for(let p=0;pE.startLineNumber===w)){const E=Math.min(L.endColumn,O.length+1);_.push(new AD(new Ee(1,L.startColumn,1,E),"inlineCompletions-modified-bubble",0))}const S=$ie(new Xie([C]),o8.fromEditor(this._editor.editor).withSetWidth(!1).withScrollBeyondLastColumn(0),_,b,!0);this._editor.getOption(59).read(l),u=Math.max(u,S.minWidthInPx),d.push(b)}return{lines:d,requiredWidth:u}}),this._layout=Rt(this,l=>{const d=this._modifiedLineElements.read(l),u=this._maxPrefixTrim.read(l),h=this._edit.read(l);if(!d||!u||!h)return;const{prefixLeftOffset:g}=u,{requiredWidth:m}=d,v=this._editor.observeLineHeightsForLineRange(h.originalRange).read(l),f=(()=>{const B=v.slice(0,h.modifiedRange.length);for(;B.lengththis._editor.editor.getOffsetForColumn(B,O.getLineMaxColumn(B))-g),C=Math.max(...y,m),_=h.originalRange.startLineNumber,S=h.originalRange.endLineNumberExclusive-1,L=this._editor.editor.getTopForLineNumber(_)-b,E=this._editor.editor.getBottomForLineNumber(S)-b,T=Vs.fromLeftTopWidthHeight(w+g,L,C,E-L),D=Vs.fromLeftTopWidthHeight(T.left,T.bottom,T.width,f.reduce((B,R)=>B+R,0)),P=Vs.hull([T,D]),Q=P.intersectVertical(new Xn(T.bottom,Number.MAX_SAFE_INTEGER)),M=new Vs(Q.left,Q.top,Q.right,Q.bottom);return{originalLinesOverlay:T,modifiedLinesOverlay:D,background:P,lowerBackground:Q,lowerText:M,modifiedLineHeights:f,minContentWidthRequired:g+C+A}}),this._viewZoneInfo=Rt(l=>{if(!this._editor.getOption(71).map(v=>v.edits.allowCodeShifting==="always").read(l))return;const u=this._layout.read(l),h=this._edit.read(l);if(!u||!h)return;const g=u.lowerBackground.height,m=h.originalRange.endLineNumberExclusive;return{height:g,lineNumber:m}}),this.minEditorScrollHeight=Rt(this,l=>{const d=By(this._layout).read(l);return!d||this._viewZoneInfo.read(l)!==void 0?0:d.read(l).lowerText.bottom+this._editor.editor.getScrollTop()}),this._div=cr.div({class:"line-replacement"},[Rt(this,l=>{const d=By(this._layout).read(l),u=this._modifiedLineElements.read(l);if(!d||!u)return[];const h=d.read(l),g=this._editor.layoutInfoContentLeft.read(l),m=this._isInDiffEditor.read(l)?3:1;u.lines.forEach((k,A)=>{k.style.width=`${h.lowerText.width}px`,k.style.height=`${h.modifiedLineHeights[A]}px`,k.style.position="relative"});const v=see(this._tabAction).read(l),f=j3e(this._tabAction).read(l);return[cr.div({style:{position:"absolute",...Pv(k=>jnt(this._editor).read(k)),overflow:"hidden",pointerEvents:"none"}},[cr.div({class:"borderAroundLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).background.translateX(-g).withMargin(m)),borderRadius:"4px",border:`${m+1}px solid ${en(Oc)}`,boxSizing:"border-box",pointerEvents:"none"}}),cr.div({class:"originalOverlayLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).background.translateX(-g)),borderRadius:"4px",border:gv(f,this._themeService).map(k=>`1px solid ${k.toString()}`),pointerEvents:"none",boxSizing:"border-box",background:en(WZ)}}),cr.div({class:"modifiedOverlayLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).lowerBackground.translateX(-g)),borderRadius:"0 0 4px 4px",background:en(Oc),boxShadow:`${en(zbe)} 0 6px 6px -6px`,border:`1px solid ${en(v)}`,boxSizing:"border-box",overflow:"hidden",cursor:"pointer",pointerEvents:"auto"},onmousedown:k=>{k.preventDefault()},onclick:k=>this._onDidClick.fire(new Xh(ii(k),k))},[cr.div({style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",background:en(hCo)}})]),cr.div({class:"modifiedLinesLineReplacement",style:{position:"absolute",boxSizing:"border-box",...Pv(k=>d.read(k).lowerText.translateX(-g)),fontFamily:this._editor.getOption(58),fontSize:this._editor.getOption(61),fontWeight:this._editor.getOption(62),pointerEvents:"none",whiteSpace:"nowrap",borderRadius:"0 0 4px 4px",overflow:"hidden"}},[...u.lines])])]})]).keepUpdated(this._store),this.isHovered=this._editor.isTargetHovered(l=>this._isMouseOverWidget(l),this._store),this._previousViewZoneInfo=void 0,this._register(Hn(()=>this._editor.editor.changeViewZones(l=>this.removePreviousViewZone(l)))),this._register(Oto(this._viewZoneInfo,({lastValue:l,newValue:d})=>{l===d||(l==null?void 0:l.height)===(d==null?void 0:d.height)&&(l==null?void 0:l.lineNumber)===(d==null?void 0:d.lineNumber)||this._editor.editor.changeViewZones(u=>{this.removePreviousViewZone(u),d&&this.addViewZone(d,u)})})),this._register(this._editor.createOverlayWidget({domNode:this._div.element,minContentWidthInPx:Rt(this,l=>{var d;return((d=this._layout.read(l))==null?void 0:d.minContentWidthRequired)??0}),position:ca({preference:{top:0,left:0}}),allowEditorOverflow:!1}))}_isMouseOverWidget(t){const n=this._layout.get();return!n||!(t.event instanceof U8)?!1:n.lowerBackground.containsPoint(new cu(t.event.relativePos.x,t.event.relativePos.y))}removePreviousViewZone(t){if(!this._previousViewZoneInfo)return;t.removeZone(this._previousViewZoneInfo.id);const n=this._editor.cursorLineNumber.get();n!==null&&n>=this._previousViewZoneInfo.lineNumber&&this._editor.editor.setScrollTop(this._editor.scrollTop.get()-this._previousViewZoneInfo.height),this._previousViewZoneInfo=void 0}addViewZone(t,n){const r=n.addZone({afterLineNumber:t.lineNumber-1,heightInPx:t.height,domNode:tn("div")});this._previousViewZoneInfo={height:t.height,lineNumber:t.lineNumber,id:r};const o=this._editor.cursorLineNumber.get();o!==null&&o>=t.lineNumber&&this._editor.editor.setScrollTop(this._editor.scrollTop.get()+t.height)}};PVe=zCo([GCt(4,nc),GCt(5,Dl)],PVe);function HCo(e){const t=[];for(;e.length;){let n=e.shift();n.startLineNumber!==n.endLineNumber&&(e.push(new Ee(n.startLineNumber+1,1,n.endLineNumber,n.endColumn)),n=new Ee(n.startLineNumber,n.startColumn,n.startLineNumber,Number.MAX_SAFE_INTEGER)),t.push(n)}return t}var $Co=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},YCt=function(e,t){return function(n,r){t(n,r,e)}};const FP=0,BX=0,Gp=1,XCo=1,GCo=3,qC=4,Wxe=20,ZCt=12;let X0e=class extends ft{static fitsInsideViewport(t,n,r,o){const s=hl(t),a=s.layoutInfoWidth.read(o),l=s.layoutInfoContentLeft.read(o),d=t.getLayoutInfo().verticalScrollbarWidth,u=s.layoutInfoMinimap.read(o).minimapLeft!==0?s.layoutInfoMinimap.read(o).minimapWidth:0,h=y9(s,r.displayRange,void 0),g=r.lineEdit.newLines.reduce((f,k)=>Math.max(f,Unt(k,t,n)),0),m=Wxe,v=ZCt+2*Gp;return h+g+m+vthis._uiState.read(u)?"block":"none"),this.previewRef=cr.ref();const d=this._uiState.map(u=>u!=null&&u.isInDiffEditor?GCo:XCo);this._editorContainer=cr.div({class:["editorContainer"],style:{position:"absolute",overflow:"hidden",cursor:"pointer"},onmousedown:u=>{u.preventDefault()},onclick:u=>{this._onDidClick.fire(new Xh(ii(u),u))}},[cr.div({class:"preview",style:{pointerEvents:"none"},ref:this.previewRef})]).keepUpdated(this._store),this.isHovered=this._editorContainer.didMouseMoveDuringHover,this.previewEditor=this._register(this._instantiationService.createInstance(X8,this.previewRef.element,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},rulers:[],padding:{top:0,bottom:0},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,revealHorizontalRightPadding:0,bracketPairColorization:{enabled:!0,independentColorPoolPerBracketType:!1},scrollBeyondLastLine:!1,scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1},readOnly:!0,wordWrap:"off",wordWrapOverride1:"off",wordWrapOverride2:"off"},{contextKeyValues:{[Ns.inInlineEditsPreviewEditor.key]:!0},contributions:[]},this._editor)),this._previewEditorObs=hl(this.previewEditor),this._activeViewZones=[],this._updatePreviewEditor=Rt(this,u=>{this._editorContainer.readEffect(u),this._previewEditorObs.model.read(u),this._display.read(u),this._nonOverflowView&&(this._nonOverflowView.element.style.display=this._display.read(u));const h=this._uiState.read(u),g=this._edit.read(u);if(!h||!g)return;const m=g.originalLineRange,v=[];m.startLineNumber>1&&v.push(new Ee(1,1,m.startLineNumber-1,1)),m.startLineNumber+h.newTextLineCount{f.forEach(p=>A.removeZone(p)),k>0&&this._activeViewZones.push(A.addZone({afterLineNumber:m.startLineNumber+h.newTextLineCount-1,heightInLines:k,showInHiddenAreas:!0,domNode:tn("div.diagonal-fill.inline-edits-view-zone")}))})}),this._previewEditorWidth=Rt(this,u=>{const h=this._edit.read(u);return h?(this._updatePreviewEditor.read(u),y9(this._previewEditorObs,h.modifiedLineRange,u)):0}),this._cursorPosIfTouchesEdit=Rt(this,u=>{const h=this._editorObs.cursorPosition.read(u),g=this._edit.read(u);if(!(!g||!h))return g.modifiedLineRange.contains(h.lineNumber)?h:void 0}),this._originalStartPosition=Rt(this,u=>{const h=this._edit.read(u);return h?new it(h.originalLineRange.startLineNumber,1):null}),this._originalEndPosition=Rt(this,u=>{const h=this._edit.read(u);return h?new it(h.originalLineRange.endLineNumberExclusive,1):null}),this._originalVerticalStartPosition=this._editorObs.observePosition(this._originalStartPosition,this._store).map(u=>u==null?void 0:u.y),this._originalVerticalEndPosition=this._editorObs.observePosition(this._originalEndPosition,this._store).map(u=>u==null?void 0:u.y),this._originalDisplayRange=this._edit.map(u=>u==null?void 0:u.displayRange),this._editorMaxContentWidthInRange=Rt(this,u=>{const h=this._originalDisplayRange.read(u);return h?(this._editorObs.versionId.read(u),vL(this,(g,m)=>{const v=y9(this._editorObs,h,g);return Math.max(v,m??0)})):ca(0)}).map((u,h)=>u.read(h)),this._previewEditorLayoutInfo=Rt(this,u=>{const h=this._edit.read(u);if(!h||!this._uiState.read(u))return null;const m=h.originalLineRange,v=this._editorObs.scrollLeft.read(u),f=this._editorMaxContentWidthInRange.read(u),k=this._editorObs.layoutInfo.read(u),A=this._previewEditorWidth.read(u),p=k.contentWidth-k.verticalScrollbarWidth,b=this._editor.getContainerDomNode().getBoundingClientRect(),w=k.contentLeft+k.contentWidth+b.left,O=ii(this._editor.getContainerDomNode()).innerWidth-w,y=ii(this._editor.getContainerDomNode()).innerWidth-b.right,C=Math.min(k.contentWidth*.3,A,100),_=0,S=_+O,L=this._cursorPosIfTouchesEdit.read(u),E=Math.max(p+v-_-Math.max(0,C-S),Math.min(L?bCo(this._editorObs,L,u)+50:0,p+v)),T=Math.min(f+Wxe,E),D=f+Wxe+A+70,P=E-T;let Q,M;T>v?(Q=0,M=k.contentLeft+T-v):(Q=v-T,M=k.contentLeft);const B=this._originalVerticalStartPosition.read(u)??this._editor.getTopForLineNumber(m.startLineNumber)-this._editorObs.scrollTop.read(u),R=this._originalVerticalEndPosition.read(u)??this._editor.getBottomForLineNumber(m.endLineNumberExclusive-1)-this._editorObs.scrollTop.read(u),I=k.contentLeft-v;let F=Vs.fromLeftTopRightBottom(I,B,M,R);const j=F.height===0;j||(F=F.withMargin(BX,FP));const H=this._previewEditorObs.observeLineHeightsForLineRange(h.modifiedLineRange).read(u).reduce((se,le)=>se+le,0),$=R-B,G=Math.max($,H),q=P===0,re=0,J=Math.min(A+ZCt,y+k.width-k.contentLeft-re);let oe=Vs.fromLeftTopWidthHeight(F.right+re,B,J,G);return j?oe=oe.withMargin(BX,FP).translateY(BX):oe=oe.withMargin(BX,FP).translateX(FP+Gp),{codeRect:F,editRect:oe,codeScrollLeft:v,contentLeft:k.contentLeft,isInsertion:j,maxContentWidth:D,shouldShowShadow:q,desiredPreviewEditorScrollLeft:Q,previewEditorWidth:J}}),this._stickyScrollController=fp.get(this._editorObs.editor),this._stickyScrollHeight=this._stickyScrollController?Ko(this._stickyScrollController.onDidChangeStickyScrollHeight,()=>this._stickyScrollController.stickyScrollWidgetHeight):ca(0),this._shouldOverflow=Rt(this,u=>!1),this._originalBackgroundColor=Ko(this,this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme().getColor(WZ)??Dt.transparent),this._backgroundSvg=cr.svg({transform:"translate(-0.5 -0.5)",style:{overflow:"visible",pointerEvents:"none",position:"absolute"}},[cr.svgElem("path",{class:"rightOfModifiedBackgroundCoverUp",d:Rt(this,u=>{const h=this._previewEditorLayoutInfo.read(u);if(!(!h||this._originalBackgroundColor.read(u).isTransparent()))return new TVe().moveTo(h.codeRect.getRightTop()).lineTo(h.codeRect.getRightTop().deltaX(1e3)).lineTo(h.codeRect.getRightBottom().deltaX(1e3)).lineTo(h.codeRect.getRightBottom()).build()}),style:{fill:A7n(Oc,"transparent")}})]).keepUpdated(this._store),this._originalOverlay=cr.div({style:{pointerEvents:"none",display:this._previewEditorLayoutInfo.map(u=>u!=null&&u.isInsertion?"none":"block")}},Rt(this,u=>{const h=By(this._previewEditorLayoutInfo).read(u);if(!h)return;const g=d.read(u),m=j3e(this._tabAction).map(C=>`${Gp}px solid ${en(C)}`),v=`${Gp+g}px solid ${en(Oc)}`,f=h.read(u).codeScrollLeft!==0,k=h.map(C=>C.codeRect.bottomVs.fromLeftTopRightBottom(C.contentLeft-qC-Gp,C.codeRect.top,C.contentLeft,C.codeRect.bottom+A)).read(u),b=new Xn(p.left,Number.MAX_SAFE_INTEGER),w=h.map(C=>C.codeRect.intersectHorizontal(b)),O=w.map(C=>C.withMargin(g,0,g,g).intersectHorizontal(b)),y=w.map(C=>Vs.fromLeftTopWidthHeight(C.right-A+Gp,C.bottom-Gp,A,A).intersectHorizontal(b));return[cr.div({class:"originalSeparatorSideBySide",style:{...O.read(u).toStyles(),boxSizing:"border-box",borderRadius:`${qC}px 0 0 ${qC}px`,borderTop:v,borderBottom:v,borderLeft:f?"none":v}}),cr.div({class:"originalOverlaySideBySide",style:{...w.read(u).toStyles(),boxSizing:"border-box",borderRadius:`${qC}px 0 0 ${qC}px`,borderTop:m,borderBottom:m,borderLeft:f?"none":m,backgroundColor:en(WZ)}}),cr.div({class:"originalCornerCutoutSideBySide",style:{pointerEvents:"none",display:k.map(C=>C?"block":"none"),...y.read(u).toStyles()}},[cr.div({class:"originalCornerCutoutBackground",style:{position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%",backgroundColor:gv(WZ,this._themeService).map(C=>C.toString())}}),cr.div({class:"originalCornerCutoutBorder",style:{position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%",boxSizing:"border-box",borderTop:m,borderRight:m,borderRadius:"0 100% 0 0",backgroundColor:en(Oc)}})]),cr.div({class:"originalOverlaySideBySideHider",style:{...p.toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._modifiedOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,u=>{const h=By(this._previewEditorLayoutInfo).read(u);if(!h)return;const g=h.map(w=>w.codeRect.bottom`0 ${qC}px ${qC}px ${w?qC:0}px`),f=gv(see(this._tabAction),this._themeService).map(w=>`1px solid ${w.toString()}`),k=`${Gp+m}px solid ${en(Oc)}`,A=h.map(w=>w.editRect.withMargin(0,Gp)),p=A.map(w=>w.withMargin(m,m,m,0)),b=Rt(this,w=>{const O=A.read(w),y=h.read(w);return!y.isInsertion||y.contentLeft>=O.left?Vs.fromLeftTopWidthHeight(O.left,O.top,0,0):new Vs(y.contentLeft,O.top,O.left,O.top+Gp*2)});return[cr.div({class:"modifiedInsertionSideBySide",style:{...b.read(u).toStyles(),backgroundColor:see(this._tabAction).map(w=>en(w))}}),cr.div({class:"modifiedSeparatorSideBySide",style:{...p.read(u).toStyles(),borderRadius:v,borderTop:k,borderBottom:k,borderRight:k,boxSizing:"border-box"}}),cr.div({class:"modifiedOverlaySideBySide",style:{...A.read(u).toStyles(),borderRadius:v,border:f,boxSizing:"border-box",backgroundColor:en(vIn)}})]})).keepUpdated(this._store),this._nonOverflowView=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[this._backgroundSvg,Rt(this,u=>this._shouldOverflow.read(u)?[]:[this._editorContainer,this._originalOverlay,this._modifiedOverlay])]).keepUpdated(this._store),this._register(this._editorObs.createOverlayWidget({domNode:this._nonOverflowView.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,u=>{var g;const h=(g=this._previewEditorLayoutInfo.read(u))==null?void 0:g.maxContentWidth;return h===void 0?0:h})})),this.previewEditor.setModel(this._previewTextModel),this._register(Oi(u=>{const h=this._previewEditorLayoutInfo.read(u);if(!h)return;const g=h.editRect.withMargin(-BX,-FP);this.previewEditor.layout({height:g.height,width:h.previewEditorWidth+15}),this._editorContainer.element.style.top=`${g.top}px`,this._editorContainer.element.style.left=`${g.left}px`,this._editorContainer.element.style.width=`${h.previewEditorWidth+FP}px`})),this._register(Oi(u=>{const h=this._previewEditorLayoutInfo.read(u);h&&this._previewEditorObs.editor.setScrollLeft(h.desiredPreviewEditorScrollLeft)})),this._updatePreviewEditor.recomputeInitiallyAndOnChange(this._store)}};X0e=$Co([YCt(5,Yn),YCt(6,Dl)],X0e);var YCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},ZCo=function(e,t){return function(n,r){t(n,r,e)}};const KC=1;var Xj;let SN=(Xj=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._edit=n,this._tabAction=r,this._languageService=o,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._start=this._editor.observePosition(ca(this._edit.range.getStartPosition()),this._store),this._end=this._editor.observePosition(ca(this._edit.range.getEndPosition()),this._store),this._line=document.createElement("div"),this._hoverableElement=Ti(this,null),this.isHovered=this._hoverableElement.map((a,l)=>(a==null?void 0:a.didMouseMoveDuringHover.read(l))??!1),this._renderTextEffect=Rt(this,a=>{var f;const l=this._editor.model.get(),d=l.getLineContent(this._edit.range.startLineNumber),u=ch.replace(new Xn(this._edit.range.startColumn-1,this._edit.range.endColumn-1),this._edit.text),h=u.replace(d),g=(f=l.tokenization.tokenizeLinesAt(this._edit.range.startLineNumber,[h]))==null?void 0:f[0];let m;g?m=e8.fromLineTokens(g).slice(u.getRangeAfterReplace()).toLineTokens(this._edit.text,this._languageService.languageIdCodec):m=uc.createEmpty(this._edit.text,this._languageService.languageIdCodec);const v=$ie(new Xie([m]),o8.fromEditor(this._editor.editor).withSetWidth(!1).withScrollBeyondLastColumn(0),[],this._line,!0);this._line.style.width=`${v.minWidthInPx}px`});const s=this._editor.observeLineHeightForPosition(this._edit.range.getStartPosition());this._layout=Rt(this,a=>{this._renderTextEffect.read(a);const l=this._start.read(a),d=this._end.read(a);if(!l||!d||l.x>d.x||l.y>d.y)return;const u=s.read(a),h=this._editor.scrollLeft.read(a),g=this._editor.getOption(59).read(a).typicalHalfwidthCharacterWidth,m=3*g,v=4,f=new cu(m,v),k=Vs.fromPoints(l,d).withHeight(u).translateX(-h),A=Vs.fromPointSize(k.getLeftBottom().add(f),new cu(this._edit.text.length*g,k.height)),p=A.withLeft(k.left);return{originalLine:k,modifiedLine:A,lowerBackground:p,lineHeight:u}}),this.minEditorScrollHeight=Rt(this,a=>{const l=By(this._layout).read(a);return l?l.read(a).modifiedLine.bottom+KC+this._editor.editor.getScrollTop():0}),this._root=cr.div({class:"word-replacement"},[Rt(this,a=>{const l=By(this._layout).read(a);if(!l)return[];const d=j3e(this._tabAction).map(h=>en(h)).read(a),u=see(this._tabAction).map(h=>en(h)).read(a);return[cr.div({style:{position:"absolute",...Pv(h=>jnt(this._editor).read(h)),overflow:"hidden",pointerEvents:"none"}},[cr.div({style:{position:"absolute",...Pv(h=>l.read(h).lowerBackground.withMargin(KC,2*KC,KC,0)),background:en(Oc),cursor:"pointer",pointerEvents:"auto"},onmousedown:h=>{h.preventDefault()},onmouseup:h=>this._onDidClick.fire(new Xh(ii(h),h)),obsRef:h=>{this._hoverableElement.set(h,void 0)}}),cr.div({style:{position:"absolute",...Pv(h=>l.read(h).modifiedLine.withMargin(KC,2*KC)),fontFamily:this._editor.getOption(58),fontSize:this._editor.getOption(61),fontWeight:this._editor.getOption(62),pointerEvents:"none",boxSizing:"border-box",borderRadius:"4px",border:`${KC}px solid ${u}`,background:en(fCo),display:"flex",justifyContent:"center",alignItems:"center",outline:`2px solid ${en(Oc)}`}},[this._line]),cr.div({style:{position:"absolute",...Pv(h=>l.read(h).originalLine.withMargin(KC)),boxSizing:"border-box",borderRadius:"4px",border:`${KC}px solid ${d}`,background:en(uCo),pointerEvents:"none"}},[]),cr.svg({width:11,height:14,viewBox:"0 0 11 14",fill:"none",style:{position:"absolute",left:l.map(h=>h.modifiedLine.left-16),top:l.map(h=>h.modifiedLine.top+Math.round((h.lineHeight-14-5)/2))}},[cr.svgElem("path",{d:"M1 0C1 2.98966 1 5.92087 1 8.49952C1 9.60409 1.89543 10.5 3 10.5H10.5",stroke:en(c3t)}),cr.svgElem("path",{d:"M6 7.5L9.99999 10.49998L6 13.5",stroke:en(c3t)})])])]})]).keepUpdated(this._store),this._register(this._editor.createOverlayWidget({domNode:this._root.element,minContentWidthInPx:ca(0),position:ca({preference:{top:0,left:0}}),allowEditorOverflow:!1}))}},Xj.MAX_LENGTH=100,Xj);SN=YCo([ZCo(3,nc)],SN);class qCo extends ft{constructor(t,n,r){super(),this._originalEditor=t,this._state=n,this._modifiedTextModel=r,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this.isHovered=hl(this._originalEditor).isTargetHovered(s=>{var a;return s.target.type===6&&((a=s.target.detail.injectedText)==null?void 0:a.options.attachedData)instanceof Vxe&&s.target.detail.injectedText.options.attachedData.owner===this},this._store),this._tokenizationFinished=e_o(this._modifiedTextModel),this._decorations=Rt(this,s=>{var C,_;const a=this._state.read(s);if(!a)return;const l=a.modifiedText,d=a.mode==="insertionInline",u=a.diff.length===1&&((C=a.diff[0].innerChanges)==null?void 0:C.length)===1,h=!0,g=[],m=[],v=Gi.register({className:"inlineCompletions-line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),f=Gi.register({className:"inlineCompletions-line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),k=Gi.register({className:"inlineCompletions-char-delete",description:"char-delete",isWholeLine:!1,zIndex:1}),A=Gi.register({className:"inlineCompletions-char-insert",description:"char-insert",isWholeLine:!0}),p=Gi.register({className:"inlineCompletions-char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),b=Gi.register({className:"inlineCompletions-char-insert diff-range-empty",description:"char-insert diff-range-empty"}),w=Gi.register({className:"inlineCompletions-original-lines",description:"inlineCompletions-original-lines",isWholeLine:!1,shouldFillLineOnLineBreak:!0}),O=a.mode!=="sideBySide"&&a.mode!=="deletion"&&a.mode!=="insertionInline"&&a.mode!=="lineReplacement",y=a.mode==="lineReplacement";for(const S of a.diff)if(O&&(S.original.isEmpty||g.push({range:S.original.toInclusiveRange(),options:f}),S.modified.isEmpty||m.push({range:S.modified.toInclusiveRange(),options:v})),S.modified.isEmpty||S.original.isEmpty)S.original.isEmpty||g.push({range:S.original.toInclusiveRange(),options:k}),S.modified.isEmpty||m.push({range:S.modified.toInclusiveRange(),options:A});else{const L=d&&KCo(S);for(const E of S.innerChanges||[]){if(S.original.contains(E.originalRange.startLineNumber)&&!(y&&E.originalRange.isEmpty())){const T=(_=this._originalEditor.getModel())==null?void 0:_.getValueInRange(E.originalRange,1);g.push({range:E.originalRange,options:{description:"char-delete",shouldFillLineOnLineBreak:!1,className:Mxe("inlineCompletions-char-delete",E.originalRange.isSingleLine()&&a.mode==="insertionInline"&&"single-line-inline",E.originalRange.isEmpty()&&"empty",(E.originalRange.isEmpty()&&u||a.mode==="deletion"&&T===` +`,o=new bf().appendCodeblock("empty",a),r=`Provider: ${t.provider._debugDisplayName}`}if(!n&&!Fnt(t)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),r){const a=r.length>1e5?`${r.substr(0,1e5)}…`:r;this._type.textContent=a,this._type.title=a,k0(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(a))}else uh(this._type),this._type.title="",tm(this._type),this.domNode.classList.add("no-type");if(uh(this._docs),typeof o=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=o;else if(o){this._docs.classList.add("markdown-docs"),uh(this._docs);const a=this._markdownRendererService.render(o,{context:this._editor,asyncRenderCallback:()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}});this._docs.appendChild(a.element),this._renderDisposeable.add(a)}this.domNode.classList.toggle("detail-and-doc",!!r&&!!o),this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=a=>{a.preventDefault(),a.stopPropagation()},this._close.onclick=a=>{a.preventDefault(),a.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get isEmpty(){return this.domNode.classList.contains("no-docs")}get size(){return this._size}layout(t,n){const r=new cs(t,n);cs.equals(r,this._size)||(this._size=r,Nto(this.domNode,t,n)),this._scrollbar.scanDomNode()}scrollDown(t=8){this._body.scrollTop+=t}scrollUp(t=8){this._body.scrollTop-=t}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}focus(){this.domNode.focus()}};pVe=Dyo([BCt(1,Dl),BCt(2,Cp)],pVe);class Byo{constructor(t,n){this.widget=t,this._editor=n,this.allowEditorOverflow=!0,this._disposables=new xt,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new Ytt,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(t.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let r,o,s=0,a=0;this._disposables.add(this._resizable.onDidWillResize(()=>{r=this._topLeft,o=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(l=>{if(r&&o){this.widget.layout(l.dimension.width,l.dimension.height);let d=!1;l.west&&(a=o.width-l.dimension.width,d=!0),l.north&&(s=o.height-l.dimension.height,d=!0),d&&this._applyTopLeft({top:r.top+s,left:r.left+a})}l.done&&(r=void 0,o=void 0,s=0,a=0,this._userSize=l.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{this._anchorBox&&this._placeAtAnchor(this._anchorBox,this._userSize??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 this._topLeft?{preference:this._topLeft}:null}show(){this._added||(this._editor.addOverlayWidget(this),this._added=!0)}hide(t=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),t&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(t,n){const r=t.getBoundingClientRect();this._anchorBox=r,this._preferAlignAtTop=n,this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,n)}_placeAtAnchor(t,n,r){const o=O6(this.getDomNode().ownerDocument.body),s=this.widget.getLayoutInfo(),a=new cs(220,2*s.lineHeight),l=t.top,d=function(){const y=o.width-(t.left+t.width+s.borderWidth+s.horizontalPadding),C=-s.borderWidth+t.left+t.width,_=new cs(y,o.height-t.top-s.borderHeight-s.verticalPadding),S=_.with(void 0,t.top+t.height-s.borderHeight-s.verticalPadding);return{top:l,left:C,fit:y-n.width,maxSizeTop:_,maxSizeBottom:S,minSize:a.with(Math.min(y,a.width))}}(),u=function(){const y=t.left-s.borderWidth-s.horizontalPadding,C=Math.max(s.horizontalPadding,t.left-n.width-s.borderWidth),_=new cs(y,o.height-t.top-s.borderHeight-s.verticalPadding),S=_.with(void 0,t.top+t.height-s.borderHeight-s.verticalPadding);return{top:l,left:C,fit:y-n.width,maxSizeTop:_,maxSizeBottom:S,minSize:a.with(Math.min(y,a.width))}}(),h=function(){const y=t.left,C=-s.borderWidth+t.top+t.height,_=new cs(t.width-s.borderHeight,o.height-t.top-t.height-s.verticalPadding);return{top:C,left:y,fit:_.height-n.height,maxSizeBottom:_,maxSizeTop:_,minSize:a.with(_.width)}}(),g=[d,u,h],m=g.find(y=>y.fit>=0)??g.sort((y,C)=>C.fit-y.fit)[0],v=t.top+t.height-s.borderHeight;let f,k=n.height;const A=Math.max(m.maxSizeTop.height,m.maxSizeBottom.height);k>A&&(k=A);let p;r?k<=m.maxSizeTop.height?(f=!0,p=m.maxSizeTop):(f=!1,p=m.maxSizeBottom):k<=m.maxSizeBottom.height?(f=!1,p=m.maxSizeBottom):(f=!0,p=m.maxSizeTop);let{top:b,left:w}=m;!f&&k>t.height&&(b=v-k);const O=this._editor.getDomNode();if(O){const y=O.getBoundingClientRect();b-=y.top,w-=y.left}this._applyTopLeft({left:w,top:b}),this._resizable.enableSashes(!f,m===d,f,m!==d),this._resizable.minSize=m.minSize,this._resizable.maxSize=p,this._resizable.layout(k,Math.min(p.width,n.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(t){this._topLeft=t,this._editor.layoutOverlayWidget(this)}}const RCt=Cr("fileService");var XO;(function(e){e[e.FILE=0]="FILE",e[e.FOLDER=1]="FOLDER",e[e.ROOT_FOLDER=2]="ROOT_FOLDER"})(XO||(XO={}));const Ryo=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function sce(e,t,n,r,o){if(fi.isThemeIcon(o))return[`codicon-${o.id}`,"predefined-file-icon"];if(vi.isUri(o))return[];const s=r===XO.ROOT_FOLDER?["rootfolder-icon"]:r===XO.FOLDER?["folder-icon"]:["file-icon"];if(n){let a;if(n.scheme===Ci.data)a=_6.parseMetaData(n).get(_6.META_DATA_LABEL);else{const l=n.path.match(Ryo);l?(a=ace(l[2].toLowerCase()),l[1]&&s.push(`${ace(l[1].toLowerCase())}-name-dir-icon`)):a=ace(n.authority.toLowerCase())}if(r===XO.ROOT_FOLDER)s.push(`${a}-root-name-folder-icon`);else if(r===XO.FOLDER)s.push(`${a}-name-folder-icon`);else{if(a){if(s.push(`${a}-name-file-icon`),s.push("name-file-icon"),a.length<=255){const d=a.split(".");for(let u=1;u=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Qxe=function(e,t){return function(n,r){t(n,r,e)}};const Pyo=Da("suggest-more-info",zt.chevronRight,U(1492,"Icon for more information in the suggest widget."));var jb;const Fyo=new(jb=class{extract(t,n){if(t.textLabel.match(jb._regexStrict))return n[0]=t.textLabel,!0;if(t.completion.detail&&t.completion.detail.match(jb._regexStrict))return n[0]=t.completion.detail,!0;if(t.completion.documentation){const r=typeof t.completion.documentation=="string"?t.completion.documentation:t.completion.documentation.value,o=jb._regexRelaxed.exec(r);if(o&&(o.index===0||o.index+o[0].length===r.length))return n[0]=o[0],!0}return!1}},jb._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*\))/,jb._regexStrict=new RegExp(`^${jb._regexRelaxed.source}$`,"i"),jb);let bVe=class{constructor(t,n,r,o){this._editor=t,this._modelService=n,this._languageService=r,this._themeService=o,this._onDidToggleDetails=new at,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(t){const n=new xt,r=t;r.classList.add("show-file-icons");const o=Xt(t,tn(".icon")),s=Xt(o,tn("span.colorspan")),a=Xt(t,tn(".contents")),l=Xt(a,tn(".main")),d=Xt(l,tn(".icon-label.codicon")),u=Xt(l,tn("span.left")),h=Xt(l,tn("span.right")),g=new GJ(u,{supportHighlights:!0,supportIcons:!0});n.add(g);const m=Xt(u,tn("span.signature-label")),v=Xt(u,tn("span.qualifier-label")),f=Xt(h,tn("span.details-label")),k=Xt(h,tn("span.readMore"+fi.asCSSSelector(Pyo)));return k.title=U(1493,"Read More"),{root:r,left:u,right:h,icon:o,colorspan:s,iconLabel:g,iconContainer:d,parametersLabel:m,qualifierLabel:v,detailsLabel:f,readMore:k,disposables:n,configureFont:()=>{const p=this._editor.getOptions(),b=p.get(59),w=b.getMassagedFontFamily(),O=b.fontFeatureSettings,y=b.fontVariationSettings,C=p.get(135)||b.fontSize,_=p.get(136)||b.lineHeight,S=b.fontWeight,L=b.letterSpacing,E=`${C}px`,T=`${_}px`,D=`${L}px`;r.style.fontSize=E,r.style.fontWeight=S,r.style.letterSpacing=D,l.style.fontFamily=w,l.style.fontFeatureSettings=O,l.style.fontVariationSettings=y,l.style.lineHeight=T,o.style.height=T,o.style.width=T,k.style.height=T,k.style.width=T}}}renderElement(t,n,r){r.configureFont();const{completion:o}=t;r.colorspan.style.backgroundColor="";const s={labelEscapeNewLines:!0,matches:Uie(t.score)},a=[];if(o.kind===19&&Fyo.extract(t,a))r.icon.className="icon customcolor",r.iconContainer.className="icon hide",r.colorspan.style.backgroundColor=a[0];else if(o.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){r.icon.className="icon hide",r.iconContainer.className="icon hide";const l=sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:t.textLabel}),XO.FILE),d=sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:o.detail}),XO.FILE);s.extraClasses=l.length>d.length?l:d}else o.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(r.icon.className="icon hide",r.iconContainer.className="icon hide",s.extraClasses=[sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:t.textLabel}),XO.FOLDER),sce(this._modelService,this._languageService,vi.from({scheme:"fake",path:o.detail}),XO.FOLDER)].flat()):(r.icon.className="icon hide",r.iconContainer.className="",r.iconContainer.classList.add("suggest-icon",...fi.asClassNameArray(dV.toIcon(o.kind))));o.tags&&o.tags.indexOf(1)>=0&&(s.extraClasses=(s.extraClasses||[]).concat(["deprecated"]),s.matches=[]),r.iconLabel.setLabel(t.textLabel,void 0,s),typeof o.label=="string"?(r.parametersLabel.textContent="",r.detailsLabel.textContent=Dxe(o.detail||""),r.root.classList.add("string-label")):(r.parametersLabel.textContent=Dxe(o.label.detail||""),r.detailsLabel.textContent=Dxe(o.label.description||""),r.root.classList.remove("string-label")),this._editor.getOption(134).showInlineDetails?k0(r.detailsLabel):tm(r.detailsLabel),Fnt(t)?(r.right.classList.add("can-expand-details"),k0(r.readMore),r.readMore.onmousedown=l=>{l.stopPropagation(),l.preventDefault()},r.readMore.onclick=l=>{l.stopPropagation(),l.preventDefault(),this._onDidToggleDetails.fire()}):(r.right.classList.remove("can-expand-details"),tm(r.readMore),r.readMore.onmousedown=null,r.readMore.onclick=null)}disposeTemplate(t){t.disposables.dispose()}};bVe=Myo([Qxe(1,ml),Qxe(2,nc),Qxe(3,Dl)],bVe);function Dxe(e){return e.replace(/\r\n|\r|\n/g,"")}var Nyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},lce=function(e,t){return function(n,r){t(n,r,e)}},RF;Ve("editorSuggestWidget.background",Gk,U(1473,"Background color of the suggest widget."));Ve("editorSuggestWidget.border",pet,U(1474,"Border color of the suggest widget."));const Uyo=Ve("editorSuggestWidget.foreground",Ky,U(1475,"Foreground color of the suggest widget."));Ve("editorSuggestWidget.selectedForeground",sJ,U(1476,"Foreground color of the selected entry in the suggest widget."));Ve("editorSuggestWidget.selectedIconForeground",Qet,U(1477,"Icon foreground color of the selected entry in the suggest widget."));const jyo=Ve("editorSuggestWidget.selectedBackground",aJ,U(1478,"Background color of the selected entry in the suggest widget."));Ve("editorSuggestWidget.highlightForeground",gN,U(1479,"Color of the match highlights in the suggest widget."));Ve("editorSuggestWidget.focusHighlightForeground",Zso,U(1480,"Color of the match highlights in the suggest widget when an item is focused."));Ve("editorSuggestWidgetStatus.foreground",Zi(Uyo,.5),U(1481,"Foreground color of the suggest widget status."));class Wyo{constructor(t,n){this._service=t,this._key=`suggestWidget.size/${n.getEditorType()}/${n instanceof X8}`}restore(){const t=this._service.get(this._key,0)??"";try{const n=JSON.parse(t);if(cs.is(n))return cs.lift(n)}catch{}}store(t){this._service.store(this._key,JSON.stringify(t),0,1)}reset(){this._service.remove(this._key,0)}}var r6;let wVe=(r6=class{constructor(t,n,r,o,s){this.editor=t,this._storageService=n,this._state=0,this._isAuto=!1,this._pendingLayout=new ts,this._pendingShowDetails=new ts,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new I0,this._disposables=new xt,this._onDidSelect=new rR,this._onDidFocus=new rR,this._onDidHide=new at,this._onDidShow=new at,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new at,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new Ytt,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new Vyo(this,t),this._persistedSize=new Wyo(n,t);class a{constructor(v,f,k=!1,A=!1){this.persistedSize=v,this.currentSize=f,this.persistHeight=k,this.persistWidth=A}}let l;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),l=new a(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(m=>{var v,f;if(this._resize(m.dimension.width,m.dimension.height),l&&(l.persistHeight=l.persistHeight||!!m.north||!!m.south,l.persistWidth=l.persistWidth||!!m.east||!!m.west),!!m.done){if(l){const{itemHeight:k,defaultSize:A}=this.getLayoutInfo(),p=Math.round(k/2);let{width:b,height:w}=this.element.size;(!l.persistHeight||Math.abs(l.currentSize.height-w)<=p)&&(w=((v=l.persistedSize)==null?void 0:v.height)??A.height),(!l.persistWidth||Math.abs(l.currentSize.width-b)<=p)&&(b=((f=l.persistedSize)==null?void 0:f.width)??A.width),this._persistedSize.store(new cs(b,w))}this._contentWidget.unlockPreference(),l=void 0}})),this._messageElement=Xt(this.element.domNode,tn(".message")),this._listElement=Xt(this.element.domNode,tn(".tree"));const d=this._disposables.add(s.createInstance(pVe,this.editor));d.onDidClose(()=>this.toggleDetails(),this,this._disposables),this._details=new Byo(d,this.editor);const u=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(134).showIcons);u();const h=s.createInstance(bVe,this.editor);this._disposables.add(h),this._disposables.add(h.onDidToggleDetails(()=>this.toggleDetails())),this._list=new _2("SuggestWidget",this._listElement,{getHeight:m=>this.getLayoutInfo().itemHeight,getTemplateId:m=>"suggestion"},[h],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>mh?"listitem":"option",getWidgetAriaLabel:()=>U(1484,"Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:m=>{let v=m.textLabel;const f=dV.toLabel(m.completion.kind);if(typeof m.completion.label!="string"){const{detail:b,description:w}=m.completion.label;b&&w?v=U(1485,"{0} {1}, {2}, {3}",v,b,w,f):b?v=U(1486,"{0} {1}, {2}",v,b,f):w&&(v=U(1487,"{0}, {1}, {2}",v,w,f))}else v=U(1488,"{0}, {1}",v,f);if(!m.isResolved||!this._isDetailsVisible())return v;const{documentation:k,detail:A}=m.completion,p=oR("{0}{1}",A||"",k?typeof k=="string"?k:k.value:"");return U(1489,"{0}, docs: {1}",v,p)}}}),this._list.style(TI({listInactiveFocusBackground:jyo,listInactiveFocusOutline:Va})),this._status=s.createInstance(AVe,this.element.domNode,j9);const g=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(134).showStatusBar);g(),this._disposables.add(this._list.onMouseDown(m=>this._onListMouseDownOrTap(m))),this._disposables.add(this._list.onTap(m=>this._onListMouseDownOrTap(m))),this._disposables.add(this._list.onDidChangeSelection(m=>this._onListSelection(m))),this._disposables.add(this._list.onDidChangeFocus(m=>this._onListFocus(m))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(m=>{m.hasChanged(134)&&(g(),u()),this._completionModel&&(m.hasChanged(59)||m.hasChanged(135)||m.hasChanged(136))&&this._list.splice(0,this._list.length,this._completionModel.items)})),this._ctxSuggestWidgetVisible=_r.Visible.bindTo(r),this._ctxSuggestWidgetDetailsVisible=_r.DetailsVisible.bindTo(r),this._ctxSuggestWidgetMultipleSuggestions=_r.MultipleSuggestions.bindTo(r),this._ctxSuggestWidgetHasFocusedSuggestion=_r.HasFocusedSuggestion.bindTo(r),this._disposables.add(wc(this._details.widget.domNode,"keydown",m=>{this._onDetailsKeydown.fire(m)})),this._disposables.add(this.editor.onMouseDown(m=>this._onEditorMouseDown(m)))}dispose(){var t;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(t=this._loadingTimeout)==null||t.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(t){this._details.widget.domNode.contains(t.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(t.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(t){typeof t.element>"u"||typeof t.index>"u"||(t.browserEvent.preventDefault(),t.browserEvent.stopPropagation(),this._select(t.element,t.index))}_onListSelection(t){t.elements.length&&this._select(t.elements[0],t.indexes[0])}_select(t,n){const r=this._completionModel;r&&(this._onDidSelect.fire({item:t,index:n,model:r}),this.editor.focus())}_onListFocus(t){var o;if(this._ignoreFocusEvents)return;if(this._state===5&&this._setState(3),!t.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const n=t.elements[0],r=t.indexes[0];n!==this._focusedItem&&((o=this._currentSuggestionDetails)==null||o.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=n,this._list.reveal(r),this._currentSuggestionDetails=Fd(async s=>{const a=B8(()=>{this._isDetailsVisible()&&this._showDetails(!0,!1)},250),l=s.onCancellationRequested(()=>a.dispose());try{return await n.resolve(s)}finally{a.dispose(),l.dispose()}}),this._currentSuggestionDetails.then(()=>{r>=this._list.length||n!==this._list.element(r)||(this._ignoreFocusEvents=!0,this._list.splice(r,1,[n]),this._list.setFocus([r]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this._showDetails(!1,!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:this._list.getElementID(r)}))}).catch(zi)),this._onDidFocus.fire({item:n,index:r,model:this._completionModel})}_setState(t){if(this._state!==t)switch(this._state=t,this.element.domNode.classList.toggle("frozen",t===4),this.element.domNode.classList.remove("message"),t){case 0:tm(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=RF.LOADING_MESSAGE,tm(this._listElement,this._status.element),k0(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,A3(RF.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=RF.NO_SUGGESTIONS_MESSAGE,tm(this._listElement,this._status.element),k0(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,A3(RF.NO_SUGGESTIONS_MESSAGE);break;case 3:tm(this._messageElement),k0(this._listElement,this._status.element),this._show();break;case 4:tm(this._messageElement),k0(this._listElement,this._status.element),this._show();break;case 5:tm(this._messageElement),k0(this._listElement,this._status.element),this._details.show(),this._show(),this._details.widget.focus();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(t,n){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!t,this._isAuto||(this._loadingTimeout=B8(()=>this._setState(1),n)))}showSuggestions(t,n,r,o,s){var d,u;if(this._contentWidget.setPosition(this.editor.getPosition()),(d=this._loadingTimeout)==null||d.dispose(),(u=this._currentSuggestionDetails)==null||u.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==t&&(this._completionModel=t),r&&this._state!==2&&this._state!==0){this._setState(4);return}const a=this._completionModel.items.length,l=a===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(a>1),l){this._setState(o?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(r?4:3),this._list.reveal(n,0,n===0?0:this.getLayoutInfo().itemHeight*.33),this._list.setFocus(s?[]:[n])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=Lme(ii(this.element.domNode),()=>{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(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._list.setFocus(this._list.getFocus()),this._setState(3)):this._state===3&&(this._setState(5),this._isDetailsVisible()?this._details.widget.focus():this.toggleDetails(!0))}toggleDetails(t=!1){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):(Fnt(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this._showDetails(!1,t))}_showDetails(t,n){this._pendingShowDetails.value=Lme(ii(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show();let r=!1;t?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._details.widget.isEmpty?this._details.hide():(this._positionDetails(),this.element.domNode.classList.add("shows-details"),n&&(this._details.widget.focus(),r=!0)),r||this.editor.focus()})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this._showDetails(!1,!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var r;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(r=this._loadingTimeout)==null||r.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const t=this._persistedSize.restore(),n=Math.ceil(this.getLayoutInfo().itemHeight*4.3);t&&t.heightd&&(s=d);const u=this._completionModel?this._completionModel.stats.pLabelLen*r.typicalHalfwidthCharacterWidth:s,h=r.statusBarHeight+this._list.contentHeight+r.borderHeight,g=r.itemHeight+r.statusBarHeight,m=Kl(this.editor.getDomNode()),v=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),f=m.top+v.top+v.height,k=Math.min(n.height-f-r.verticalPadding,h),A=m.top+v.top-r.verticalPadding,p=Math.min(A,h);let b=Math.min(Math.max(p,k)+r.borderHeight,h);o===((a=this._cappedHeight)==null?void 0:a.capped)&&(o=this._cappedHeight.wanted),ob&&(o=b),o>k&&p>k||this._forceRenderingAbove&&A>150?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),b=p):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),b=k),this.element.preferredSize=new cs(u,r.defaultSize.height),this.element.maxSize=new cs(d,b),this.element.minSize=new cs(220,g),this._cappedHeight=o===h?{wanted:((l=this._cappedHeight)==null?void 0:l.wanted)??t.height,capped:o}:void 0}this._resize(s,o)}_resize(t,n){const{width:r,height:o}=this.element.maxSize;t=Math.min(r,t),n=Math.min(o,n);const{statusBarHeight:s}=this.getLayoutInfo();this._list.layout(n-s,t),this._listElement.style.height=`${n-s}px`,this.element.layout(n,t),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var t;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((t=this._contentWidget.getPosition())==null?void 0:t.preference[0])===2)}getLayoutInfo(){const t=this.editor.getOption(59),n=Zg(this.editor.getOption(136)||t.lineHeight,8,1e3),r=!this.editor.getOption(134).showStatusBar||this._state===2||this._state===1?0:n,o=this._details.widget.getLayoutInfo().borderWidth,s=2*o;return{itemHeight:n,statusBarHeight:r,borderWidth:o,borderHeight:s,typicalHalfwidthCharacterWidth:t.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new cs(430,r+12*n)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(t){this._storageService.store("expandSuggestionDocs",t,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}},RF=r6,r6.LOADING_MESSAGE=U(1482,"Loading..."),r6.NO_SUGGESTIONS_MESSAGE=U(1483,"No suggestions."),r6);wVe=RF=Nyo([lce(1,Bg),lce(2,Qi),lce(3,Dl),lce(4,Yn)],wVe);class Vyo{constructor(t,n){this._widget=t,this._editor=n,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?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:t,width:n}=this._widget.element.size,{borderWidth:r,horizontalPadding:o}=this._widget.getLayoutInfo();return new cs(n+2*r+o,t+2*r)}afterRender(t){this._widget._afterRender(t)}setPreference(t){this._preferenceLocked||(this._preference=t)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(t){this._position=t}}var zyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},MP=function(e,t){return function(n,r){t(n,r,e)}},OVe;class Hyo{constructor(t,n){if(this._model=t,this._position=n,this._decorationOptions=Gi.register({description:"suggest-line-suffix",stickiness:1}),t.getLineMaxColumn(n.lineNumber)!==n.column){const o=t.getOffsetAt(n),s=t.getPositionAt(o+1);t.changeDecorations(a=>{this._marker&&a.removeDecoration(this._marker),this._marker=a.addDecoration(Ee.fromPositions(n,s),this._decorationOptions)})}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations(t=>{t.removeDecoration(this._marker),this._marker=void 0})}delta(t){if(this._model.isDisposed()||this._position.lineNumber!==t.lineNumber)return 0;if(this._marker){const n=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(n.getStartPosition())-this._model.getOffsetAt(t)}else return this._model.getLineMaxColumn(t.lineNumber)-t.column}}var lB;let Kb=(lB=class{static get(t){return t.getContribution(OVe.ID)}get onWillInsertSuggestItem(){return this._onWillInsertSuggestItem.event}constructor(t,n,r,o,s,a,l){this._memoryService=n,this._commandService=r,this._contextKeyService=o,this._instantiationService=s,this._logService=a,this._telemetryService=l,this._lineSuffix=new ts,this._toDispose=new xt,this._selectors=new $yo(g=>g.priority),this._onWillInsertSuggestItem=new at,this._wantsForceRenderingAbove=!1,this.editor=t,this.model=s.createInstance(V0e,this.editor),this._selectors.register({priority:0,select:(g,m,v)=>this._memoryService.select(g,m,v)});const d=_r.InsertMode.bindTo(o);d.set(t.getOption(134).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>d.set(t.getOption(134).insertMode))),this.widget=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>{const g=this._instantiationService.createInstance(wVe,this.editor);this._toDispose.add(g),this._toDispose.add(g.onDidSelect(A=>this._insertSuggestion(A,0),this));const m=new Lyo(this.editor,g,this.model,A=>this._insertSuggestion(A,2));this._toDispose.add(m);const v=_r.MakesTextEdit.bindTo(this._contextKeyService),f=_r.HasInsertAndReplaceRange.bindTo(this._contextKeyService),k=_r.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add(Hn(()=>{v.reset(),f.reset(),k.reset()})),this._toDispose.add(g.onDidFocus(({item:A})=>{const p=this.editor.getPosition(),b=A.editStart.column,w=p.column;let O=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!A.completion.additionalTextEdits&&!(A.completion.insertTextRules&4)&&w-b===A.completion.insertText.length&&(O=this.editor.getModel().getValueInRange({startLineNumber:p.lineNumber,startColumn:b,endLineNumber:p.lineNumber,endColumn:w})!==A.completion.insertText),v.set(O),f.set(!it.equals(A.editInsertEnd,A.editReplaceEnd)),k.set(!!A.provider.resolveCompletionItem||!!A.completion.documentation||A.completion.detail!==A.completion.label)})),this._toDispose.add(g.onDetailsKeyDown(A=>{if(A.toKeyCodeChord().equals(new D8(!0,!1,!1,!1,33))||Tr&&A.toKeyCodeChord().equals(new D8(!1,!1,!1,!0,33))){A.stopPropagation();return}A.toKeyCodeChord().isModifierKey()||this.editor.focus()})),this._wantsForceRenderingAbove&&g.forceRenderingAbove(),g})),this._overtypingCapturer=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>this._toDispose.add(new vVe(this.editor,this.model)))),this._alternatives=this._toDispose.add(new K8e(ii(t.getDomNode()),()=>this._toDispose.add(new _V(this.editor,this._contextKeyService)))),this._toDispose.add(s.createInstance(U0e,t)),this._toDispose.add(this.model.onDidTrigger(g=>{this.widget.value.showTriggered(g.auto,g.shy?250:50),this._lineSuffix.value=new Hyo(this.editor.getModel(),g.position)})),this._toDispose.add(this.model.onDidSuggest(g=>{if(g.triggerOptions.shy)return;let m=-1;for(const f of this._selectors.itemsOrderedByPriorityDesc)if(m=f.select(this.editor.getModel(),this.editor.getPosition(),g.completionModel.items),m!==-1)break;if(m===-1&&(m=0),this.model.state===0)return;let v=!1;if(g.triggerOptions.auto){const f=this.editor.getOption(134);f.selectionMode==="never"||f.selectionMode==="always"?v=f.selectionMode==="never":f.selectionMode==="whenTriggerCharacter"?v=g.triggerOptions.triggerKind!==1:f.selectionMode==="whenQuickSuggestion"&&(v=g.triggerOptions.triggerKind===1&&!g.triggerOptions.refilter)}this.widget.value.showSuggestions(g.completionModel,m,g.isFrozen,g.triggerOptions.auto,v)})),this._toDispose.add(this.model.onDidCancel(g=>{g.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{this.model.cancel(),this.model.clear()}));const u=_r.AcceptSuggestionsOnEnter.bindTo(o),h=()=>{const g=this.editor.getOption(1);u.set(g==="on"||g==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>h())),h()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(t,n){var f;if(!t||!t.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const r=xg.get(this.editor);if(!r)return;this._onWillInsertSuggestItem.fire({item:t.item});const o=this.editor.getModel(),s=o.getAlternativeVersionId(),{item:a}=t,l=[],d=new ja;n&1||this.editor.pushUndoStop();const u=this.getOverwriteInfo(a,!!(n&8));this._memoryService.memorize(o,this.editor.getPosition(),a);const h=a.isResolved;let g=-1,m=-1;if(Array.isArray(a.completion.additionalTextEdits)){this.model.cancel();const k=O3.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",a.completion.additionalTextEdits.map(A=>{let p=Ee.lift(A.range);if(p.startLineNumber===a.position.lineNumber&&p.startColumn>a.position.column){const b=this.editor.getPosition().column-a.position.column,w=b,O=Ee.spansMultipleLines(p)?0:b;p=new Ee(p.startLineNumber,p.startColumn+w,p.endLineNumber,p.endColumn+O)}return $l.replaceMove(p,A.text)})),k.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!h){const k=new vu;let A;const p=o.onDidChangeContent(y=>{if(y.isFlush){d.cancel(),p.dispose();return}for(const C of y.changes){const _=Ee.getEndPosition(C.range);(!A||it.isBefore(_,A))&&(A=_)}}),b=n;n|=2;let w=!1;const O=this.editor.onWillType(()=>{O.dispose(),w=!0,b&2||this.editor.pushUndoStop()});l.push(a.resolve(d.token).then(()=>{if(!a.completion.additionalTextEdits||d.token.isCancellationRequested)return;if(A&&a.completion.additionalTextEdits.some(C=>it.isBefore(A,Ee.getStartPosition(C.range))))return!1;w&&this.editor.pushUndoStop();const y=O3.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",a.completion.additionalTextEdits.map(C=>$l.replaceMove(Ee.lift(C.range),C.text))),y.restoreRelativeVerticalPositionOfCursor(this.editor),(w||!(b&2))&&this.editor.pushUndoStop(),!0}).then(y=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",k.elapsed(),y),m=y===!0?1:y===!1?0:-2}).finally(()=>{p.dispose(),O.dispose()}))}let{insertText:v}=a.completion;if(a.completion.insertTextRules&4||(v=wR.escape(v)),this.model.cancel(),r.insert(v,{overwriteBefore:u.overwriteBefore,overwriteAfter:u.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(a.completion.insertTextRules&1),clipboardText:t.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value,reason:Af.suggest({providerId:r3e.fromExtensionId((f=a.extensionId)==null?void 0:f.value)})}),n&2||this.editor.pushUndoStop(),a.completion.command)if(a.completion.command.id===z0e.id)this.model.trigger({auto:!0,retrigger:!0});else{const k=new vu;l.push(this._commandService.executeCommand(a.completion.command.id,...a.completion.command.arguments?[...a.completion.command.arguments]:[]).catch(A=>{a.completion.extensionId?Nc(A):zi(A)}).finally(()=>{g=k.elapsed()}))}n&4&&this._alternatives.value.set(t,k=>{for(d.cancel();o.canUndo();){s!==o.getAlternativeVersionId()&&o.undo(),this._insertSuggestion(k,3|(n&8?8:0));break}}),this._alertCompletionItem(a),Promise.all(l).finally(()=>{this._reportSuggestionAcceptedTelemetry(a,o,h,g,m,t.index,t.model.items),this.model.clear(),d.dispose()})}_reportSuggestionAcceptedTelemetry(t,n,r,o,s,a,l){var m;if(Math.random()>1e-4)return;const d=new Map;for(let v=0;v1?u[0]:-1;this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:((m=t.extensionId)==null?void 0:m.value)??"unknown",providerId:t.provider._debugDisplayName??"unknown",kind:t.completion.kind,basenameHash:Lie(hA(n.uri)).toString(16),languageId:n.getLanguageId(),fileExtension:Bno(n.uri),resolveInfo:t.provider.resolveCompletionItem?r?1:0:-1,resolveDuration:t.resolveDuration,commandDuration:o,additionalEditsAsync:s,index:a,firstIndex:g})}getOverwriteInfo(t,n){Oo(this.editor.hasModel());let r=this.editor.getOption(134).insertMode==="replace";n&&(r=!r);const o=t.position.column-t.editStart.column,s=(r?t.editReplaceEnd.column:t.editInsertEnd.column)-t.position.column,a=this.editor.getPosition().column-t.position.column,l=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:o+a,overwriteAfter:s+l}}_alertCompletionItem(t){if(yg(t.completion.additionalTextEdits)){const n=U(1463,"Accepting '{0}' made {1} additional edits",t.textLabel,t.completion.additionalTextEdits.length);um(n)}}triggerSuggest(t,n,r){this.editor.hasModel()&&(this.model.trigger({auto:n??!1,completionOptions:{providerFilter:t,kindFilter:r?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(t){if(!this.editor.hasModel())return;const n=this.editor.getPosition(),r=()=>{n.equals(this.editor.getPosition())&&this._commandService.executeCommand(t.fallback)},o=s=>{if(s.completion.insertTextRules&4||s.completion.additionalTextEdits)return!0;const a=this.editor.getPosition(),l=s.editStart.column,d=a.column;return d-l!==s.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:a.lineNumber,startColumn:l,endLineNumber:a.lineNumber,endColumn:d})!==s.completion.insertText};an.once(this.model.onDidTrigger)(s=>{const a=[];an.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{us(a),r()},void 0,a),this.model.onDidSuggest(({completionModel:l})=>{if(us(a),l.items.length===0){r();return}const d=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),l.items),u=l.items[d];if(!o(u)){r();return}this.editor.pushUndoStop(),this._insertSuggestion({index:d,item:u,model:l},7)},void 0,a)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(n,0),this.editor.focus()}acceptSelectedSuggestion(t,n){const r=this.widget.value.getFocusedItem();let o=0;t&&(o|=4),n&&(o|=8),this._insertSuggestion(r,o)}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.isInitialized?this.widget.value.forceRenderingAbove():this._wantsForceRenderingAbove=!0}stopForceRenderingAbove(){this.widget.isInitialized?this.widget.value.stopForceRenderingAbove():this._wantsForceRenderingAbove=!1}registerSelector(t){return this._selectors.register(t)}},OVe=lB,lB.ID="editor.contrib.suggestController",lB);Kb=OVe=zyo([MP(1,N3e),MP(2,ba),MP(3,Qi),MP(4,Yn),MP(5,va),MP(6,Nf)],Kb);class $yo{constructor(t){this.prioritySelector=t,this._items=new Array}register(t){if(this._items.indexOf(t)!==-1)throw new Error("Value is already registered");return this._items.push(t),this._items.sort((n,r)=>this.prioritySelector(r)-this.prioritySelector(n)),{dispose:()=>{const n=this._items.indexOf(t);n>=0&&this._items.splice(n,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}const fAe=class fAe extends Bn{constructor(){super({id:fAe.id,label:_t(1471,"Trigger Suggest"),precondition:Ft.and($e.writable,$e.hasCompletionItemProvider,_r.Visible.toNegated()),kbOpts:{kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(t,n,r){const o=Kb.get(n);if(!o)return;let s;r&&typeof r=="object"&&r.auto===!0&&(s=!0),o.triggerSuggest(void 0,s,void 0)}};fAe.id="editor.action.triggerSuggest";let z0e=fAe;mo(Kb.ID,Kb,2);un(z0e);const m2=190,bm=$d.bindToContribution(Kb.get);On(new bm({id:"acceptSelectedSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion),handler(e){e.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:Ft.and(_r.Visible,$e.textInputFocus),weight:m2},{primary:3,kbExpr:Ft.and(_r.Visible,$e.textInputFocus,_r.AcceptSuggestionsOnEnter,_r.MakesTextEdit),weight:m2}],menuOpts:[{menuId:j9,title:U(1464,"Insert"),group:"left",order:1,when:_r.HasInsertAndReplaceRange.toNegated()},{menuId:j9,title:U(1465,"Insert"),group:"left",order:1,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("insert"))},{menuId:j9,title:U(1466,"Replace"),group:"left",order:1,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("replace"))}]}));On(new bm({id:"acceptAlternativeSelectedSuggestion",precondition:Ft.and(_r.Visible,$e.textInputFocus,_r.HasFocusedSuggestion),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:1027,secondary:[1026]},handler(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:j9,group:"left",order:2,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("insert")),title:U(1467,"Replace")},{menuId:j9,group:"left",order:2,when:Ft.and(_r.HasInsertAndReplaceRange,_r.InsertMode.isEqualTo("replace")),title:U(1468,"Insert")}]}));uo.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion");On(new bm({id:"hideSuggestWidget",precondition:_r.Visible,handler:e=>e.cancelSuggestWidget(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:9,secondary:[1033]}}));On(new bm({id:"selectNextSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectNextSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}}));On(new bm({id:"selectNextPageSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectNextPageSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:12,secondary:[2060]}}));On(new bm({id:"selectLastSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectLastSuggestion()}));On(new bm({id:"selectPrevSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}}));On(new bm({id:"selectPrevPageSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevPageSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:11,secondary:[2059]}}));On(new bm({id:"selectFirstSuggestion",precondition:Ft.and(_r.Visible,Ft.or(_r.MultipleSuggestions,_r.HasFocusedSuggestion.negate())),handler:e=>e.selectFirstSuggestion()}));On(new bm({id:"focusSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion.negate()),handler:e=>e.focusSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}}));On(new bm({id:"focusAndAcceptSuggestion",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion.negate()),handler:e=>{e.focusSuggestion(),e.acceptSelectedSuggestion(!0,!1)}}));On(new bm({id:"toggleSuggestionDetails",precondition:Ft.and(_r.Visible,_r.HasFocusedSuggestion),handler:e=>e.toggleSuggestionDetails(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:j9,group:"right",order:1,when:Ft.and(_r.DetailsVisible,_r.CanResolve),title:U(1469,"Show Less")},{menuId:j9,group:"right",order:1,when:Ft.and(_r.DetailsVisible.toNegated(),_r.CanResolve),title:U(1470,"Show More")}]}));On(new bm({id:"toggleExplainMode",precondition:_r.Visible,handler:e=>e.toggleExplainMode(),kbOpts:{weight:100,primary:2138}}));On(new bm({id:"toggleSuggestionFocus",precondition:_r.Visible,handler:e=>e.toggleSuggestionFocus(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2570,mac:{primary:778}}}));On(new bm({id:"insertBestCompletion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),U0e.AtEnd,_r.Visible.toNegated(),_V.OtherSuggestions.toNegated(),xg.InSnippetMode.toNegated()),handler:(e,t)=>{e.triggerSuggestAndAcceptBest(Pd(t)?{fallback:"tab",...t}:{fallback:"tab"})},kbOpts:{weight:m2,primary:2}}));On(new bm({id:"insertNextSuggestion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),_V.OtherSuggestions,_r.Visible.toNegated(),xg.InSnippetMode.toNegated()),handler:e=>e.acceptNextSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:2}}));On(new bm({id:"insertPrevSuggestion",precondition:Ft.and($e.textInputFocus,Ft.equals("config.editor.tabCompletion","on"),_V.OtherSuggestions,_r.Visible.toNegated(),xg.InSnippetMode.toNegated()),handler:e=>e.acceptPrevSuggestion(),kbOpts:{weight:m2,kbExpr:$e.textInputFocus,primary:1026}}));un(class extends Bn{constructor(){super({id:"editor.action.resetSuggestSize",label:_t(1472,"Reset Suggest Widget Size"),precondition:void 0})}run(e,t){var n;(n=Kb.get(t))==null||n.resetWidgetSize()}});class Xyo extends ft{get selectedItem(){return this._currentSuggestItemInfo}constructor(t,n,r){super(),this.editor=t,this.suggestControllerPreselector=n,this.onWillAccept=r,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._onDidSelectedItemChange=this._register(new at),this.onDidSelectedItemChange=this._onDidSelectedItemChange.event,this._register(t.onKeyDown(s=>{s.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(t.onKeyUp(s=>{s.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const o=Kb.get(this.editor);if(o){this._register(o.registerSelector({priority:100,select:(l,d,u)=>{const h=this.editor.getModel();if(!h)return-1;const g=this.suggestControllerPreselector(),m=g?IS(g,h):void 0;if(!m)return-1;const v=it.lift(d),f=u.map((A,p)=>{const b=FZ.fromSuggestion(o,h,v,A,this.isShiftKeyPressed),w=IS(b.getSingleTextEdit(),h),O=nIn(m,w);return{index:p,valid:O,prefixLength:w.text.length,suggestItem:A}}).filter(A=>A&&A.valid&&A.prefixLength>0),k=Met(f,qh(A=>A.prefixLength,T0));return k?k.index:-1}}));let s=!1;const a=()=>{s||(s=!0,this._register(o.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(o.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(o.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(an.once(o.model.onDidTrigger)(l=>{a()})),this._register(o.onWillInsertSuggestItem(l=>{const d=this.editor.getPosition(),u=this.editor.getModel();if(!d||!u)return;const h=FZ.fromSuggestion(o,u,d,l.item,this.isShiftKeyPressed);this.onWillAccept(h)}))}this.update(this._isActive)}update(t){const n=this.getSuggestItemInfo();(this._isActive!==t||!Gyo(this._currentSuggestItemInfo,n))&&(this._isActive=t,this._currentSuggestItemInfo=n,this._onDidSelectedItemChange.fire())}getSuggestItemInfo(){const t=Kb.get(this.editor);if(!t||!this.isSuggestWidgetVisible)return;const n=t.widget.value.getFocusedItem(),r=this.editor.getPosition(),o=this.editor.getModel();if(!(!n||!r||!o))return FZ.fromSuggestion(t,o,r,n.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const t=Kb.get(this.editor);t==null||t.stopForceRenderingAbove()}forceRenderingAbove(){const t=Kb.get(this.editor);t==null||t.forceRenderingAbove()}}class FZ{static fromSuggestion(t,n,r,o,s){let{insertText:a}=o.completion,l=!1;if(o.completion.insertTextRules&4){const u=new wR().parse(a);u.children.length<100&&R0e.adjustWhitespace(n,r,!0,u),a=u.toString(),l=!0}const d=t.getOverwriteInfo(o,s);return new FZ(Ee.fromPositions(r.delta(0,-d.overwriteBefore),r.delta(0,Math.max(d.overwriteAfter,0))),a,o.completion.kind,l,o.container.incomplete??!1)}constructor(t,n,r,o,s){this.range=t,this.insertText=n,this.completionItemKind=r,this.isSnippetText=o,this.listIncomplete=s}equals(t){return this.range.equalsRange(t.range)&&this.insertText===t.insertText&&this.completionItemKind===t.completionItemKind&&this.isSnippetText===t.isSnippetText}toSelectedSuggestionInfo(){return new ATn(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}getSingleTextEdit(){return new Mc(this.range,this.insertText)}}function Gyo(e,t){return e===t?!0:!e||!t?!1:e.equals(t)}class Yyo extends ft{constructor(t,n,r){super(),this._editorObs=t,this._handleSuggestAccepted=n,this._suggestControllerPreselector=r,this._suggestWidgetAdaptor=this._register(new Xyo(this._editorObs.editor,()=>(this._editorObs.forceUpdate(),this._suggestControllerPreselector()),o=>this._editorObs.forceUpdate(s=>{this._handleSuggestAccepted(o)}))),this.selectedItem=Ko(this,o=>this._suggestWidgetAdaptor.onDidSelectedItemChange(()=>{this._editorObs.forceUpdate(s=>o(void 0))}),()=>this._suggestWidgetAdaptor.selectedItem)}stopForceRenderingAbove(){this._suggestWidgetAdaptor.stopForceRenderingAbove()}forceRenderingAbove(){this._suggestWidgetAdaptor.forceRenderingAbove()}}class Zyo{constructor(t,n){this.lineNumber=t,this.columnRange=n}}class ICt{constructor(t,n){if(this.startColumn=t,this.endColumnExclusive=n,t>n)throw new ui(`startColumn ${t} cannot be after endColumnExclusive ${n}`)}toRange(t){return new Ee(t,this.startColumn,t,this.endColumnExclusive)}equals(t){return this.startColumn===t.startColumn&&this.endColumnExclusive===t.endColumnExclusive}toZeroBasedOffsetRange(){return new Xn(this.startColumn-1,this.endColumnExclusive-1)}}class bQ{static fromLineTokens(t){const n=[];for(let r=0;r({text:r.text,metadata:r.metadata})),t)}map(t){const n=[];let r=0;for(const o of this._tokenInfo){const s=new Xn(r,r+o.text.length);n.push(t(s,o)),r+=o.text.length}return n}slice(t){const n=[];let r=0;for(const o of this._tokenInfo){const s=r,a=s+o.text.length;if(a>t.start){if(s>=t.endExclusive)break;const l=Math.max(0,t.start-s),d=Math.max(0,a-t.endExclusive);n.push(new MCt(o.text.slice(l,o.text.length-d),o.metadata))}r+=o.text.length}return bQ.create(n)}append(t){const n=this._tokenInfo.concat(t._tokenInfo);return bQ.create(n)}}class MCt{constructor(t,n){this.text=t,this.metadata=n}}var qyo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Kyo=function(e,t){return function(n,r){t(n,r,e)}};const uIn="ghost-text";var cB;let ree=(cB=class extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._model=n,this._options=r,this._shouldKeepCursorStable=o,this._isClickable=s,this._languageService=a,this._isDisposed=Ti(this,!1),this._editorObs=hl(this._editor),this._warningState=Rt(l=>{const d=this._model.ghostText.read(l);if(!d)return;const u=this._model.warning.read(l);if(u)return{lineNumber:d.lineNumber,position:new it(d.lineNumber,d.parts[0].column),icon:u.icon}}),this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._useSyntaxHighlighting=this._options.map(l=>l.syntaxHighlightingEnabled),this._extraClassNames=Rt(this,l=>{const d=[...this._options.read(l).extraClasses??[]];return this._useSyntaxHighlighting.read(l)&&d.push("syntax-highlighted"),this._warningState.read(l)&&d.push("warning"),d.map(h=>` ${h}`).join("")}),this.uiState=Rt(this,l=>{var T,D;if(this._isDisposed.read(l))return;const d=this._editorObs.model.read(l);if(d!==this._model.targetTextModel.read(l))return;const u=this._model.ghostText.read(l);if(!u)return;const h=u instanceof eVe?u.columnRange:void 0,g=this._useSyntaxHighlighting.read(l),m=this._extraClassNames.read(l),{inlineTexts:v,additionalLines:f,hiddenRange:k,additionalLinesOriginalSuffix:A}=Jyo(u,d,uIn+m),p=d.getLineContent(u.lineNumber),b=new W8(v.map(P=>ch.insert(P.column-1,P.text))),w=g?d.tokenization.tokenizeLinesAt(u.lineNumber,[b.apply(p),...f.map(P=>P.content)]):void 0,O=b.getNewRanges(),y=v.map((P,Q)=>{var M;return{...P,tokens:(M=w==null?void 0:w[0])==null?void 0:M.getTokensInRange(O[Q])}}),C=f.map((P,Q)=>{let M=(w==null?void 0:w[Q+1])??uc.createEmpty(P.content,this._languageService.languageIdCodec);if(Q===f.length-1&&A){const R=bQ.fromLineTokens(d.tokenization.getLineTokens(A.lineNumber)).slice(A.columnRange.toZeroBasedOffsetRange());M=bQ.fromLineTokens(M).append(R).toLineTokens(M.languageIdCodec)}return{content:M,decorations:P.decorations}}),_=(T=this._editor.getSelection())==null?void 0:T.getStartPosition().column,S=y.filter(P=>P.text!==""),L=S.length!==0,E={cursorColumnDistance:(L?S[0].column:1)-_,cursorLineDistance:L?0:f.findIndex(P=>P.content!=="")+1,lineCountOriginal:L?1:0,lineCountModified:f.length+(L?1:0),characterCountOriginal:0,characterCountModified:Sme(S.map(P=>P.text.length))+Sme(C.map(P=>P.content.getTextLength())),disjointReplacements:S.length+(f.length>0?1:0),sameShapeReplacements:S.length>1&&C.length===0?S.every(P=>P.text===S[0].text):void 0};return(D=this._model.handleInlineCompletionShown.read(l))==null||D(E),{replacedRange:h,inlineTexts:y,additionalLines:C,hiddenRange:k,lineNumber:u.lineNumber,additionalReservedLineCount:this._model.minReservedLineCount.read(l),targetTextModel:d,syntaxHighlightingEnabled:g}}),this.decorations=Rt(this,l=>{const d=this.uiState.read(l);if(!d)return[];const u=[],h=this._extraClassNames.read(l);d.replacedRange&&u.push({range:d.replacedRange.toRange(d.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace"+h,description:"GhostTextReplacement"}}),d.hiddenRange&&u.push({range:d.hiddenRange.toRange(d.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const g of d.inlineTexts)u.push({range:Ee.fromPositions(new it(d.lineNumber,g.column)),options:{description:"ghost-text-decoration",after:{content:g.text,tokens:g.tokens,inlineClassName:(g.preview?"ghost-text-decoration-preview":"ghost-text-decoration")+(this._isClickable?" clickable":"")+h+g.lineDecorations.map(m=>" "+m.className).join(" "),cursorStops:Bv.Left,attachedData:new Bxe(this)},showIfCollapsed:!0}});return u}),this._additionalLinesWidget=this._register(new eCo(this._editor,Rt(l=>{const d=this.uiState.read(l);return d?{lineNumber:d.lineNumber,additionalLines:d.additionalLines,minReservedLineCount:d.additionalReservedLineCount,targetTextModel:d.targetTextModel}:void 0}),this._shouldKeepCursorStable,this._isClickable)),this._isInlineTextHovered=this._editorObs.isTargetHovered(l=>{var d;return l.target.type===6&&((d=l.target.detail.injectedText)==null?void 0:d.options.attachedData)instanceof Bxe&&l.target.detail.injectedText.options.attachedData.owner===this},this._store),this.isHovered=Rt(this,l=>this._isDisposed.read(l)?!1:this._isInlineTextHovered.read(l)||this._additionalLinesWidget.isHovered.read(l)),this.height=Rt(this,l=>this._editorObs.getOption(75).read(l)+(this._additionalLinesWidget.viewZoneHeight.read(l)??0)),this._register(Hn(()=>{this._isDisposed.set(!0,void 0)})),this._register(this._editorObs.setDecorations(this.decorations)),this._isClickable&&(this._register(this._additionalLinesWidget.onDidClick(l=>this._onDidClick.fire(l))),this._register(this._editor.onMouseUp(l=>{var u;if(l.target.type!==6)return;const d=(u=l.target.detail.injectedText)==null?void 0:u.options.attachedData;d instanceof Bxe&&d.owner===this&&this._onDidClick.fire(l.event)}))),this._register(Ef((l,d)=>{}))}static getWarningWidgetContext(t){const n=t.ghostTextViewWarningWidgetData;if(n)return n;if(t.parentElement)return this.getWarningWidgetContext(t.parentElement)}ownsViewZone(t){return this._additionalLinesWidget.viewZoneId===t}},cB.hot=l3e(cB),cB);ree=qyo([Kyo(5,nc)],ree);class Bxe{constructor(t){this.owner=t}}function Jyo(e,t,n){const r=[],o=[];function s(g,m){if(o.length>0){const v=o[o.length-1];m&&v.decorations.push(new wg(v.content.length+1,v.content.length+1+g[0].line.length,m,0)),v.content+=g[0].line,g=g.slice(1)}for(const v of g)o.push({content:v.line,decorations:m?[new wg(1,v.line.length+1,m,0),...v.lineDecorations]:[...v.lineDecorations]})}const a=t.getLineContent(e.lineNumber);let l,d=0;for(const g of e.parts){let m=g.lines;l===void 0?(r.push({column:g.column,text:m[0].line,preview:g.preview,lineDecorations:m[0].lineDecorations}),m=m.slice(1)):s([{line:a.substring(d,g.column-1),lineDecorations:[]}],void 0),m.length>0&&(s(m,n),l===void 0&&g.column<=a.length&&(l=g.column)),d=g.column-1}let u;l!==void 0&&(u=new Zyo(e.lineNumber,new ICt(d+1,a.length+1)));const h=l!==void 0?new ICt(l,a.length+1):void 0;return{inlineTexts:r,additionalLines:o,hiddenRange:h,additionalLinesOriginalSuffix:u}}class eCo extends ft{get viewZoneId(){var t;return(t=this._viewZoneInfo)==null?void 0:t.viewZoneId}get viewZoneHeight(){return this._viewZoneHeight}constructor(t,n,r,o){super(),this._editor=t,this._lines=n,this._shouldKeepCursorStable=r,this._isClickable=o,this._viewZoneHeight=Ti("viewZoneHeight",void 0),this.editorOptionsChanged=A0("editorOptionChanged",an.filter(this._editor.onDidChangeConfiguration,s=>s.hasChanged(40)||s.hasChanged(133)||s.hasChanged(113)||s.hasChanged(108)||s.hasChanged(60)||s.hasChanged(59)||s.hasChanged(75))),this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._viewZoneListener=this._register(new ts),this.isHovered=hl(this._editor).isTargetHovered(s=>PCt(s.target.element),this._store),this.hasBeenAccepted=!1,this._editor instanceof gR&&this._shouldKeepCursorStable&&this._register(this._editor.onBeforeExecuteEdit(s=>this.hasBeenAccepted=s.source==="inlineSuggestion.accept")),this._register(Oi(s=>{const a=this._lines.read(s);this.editorOptionsChanged.read(s),a?(this.hasBeenAccepted=!1,this.updateLines(a.lineNumber,a.additionalLines,a.minReservedLineCount)):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this._viewZoneListener.clear(),this._editor.changeViewZones(t=>{this.removeActiveViewZone(t)})}updateLines(t,n,r){const o=this._editor.getModel();if(!o)return;const{tabSize:s}=o.getOptions();this._editor.changeViewZones(a=>{const l=new xt;this.removeActiveViewZone(a);const d=Math.max(n.length,r);if(d>0){const u=document.createElement("div");tCo(u,s,n,this._editor.getOptions(),this._isClickable),this._isClickable&&(l.add(wt(u,"mousedown",h=>{h.preventDefault()})),l.add(wt(u,"click",h=>{PCt(h.target)&&this._onDidClick.fire(new Xh(ii(h),h))}))),this.addViewZone(a,t,d,u)}this._viewZoneListener.value=l})}addViewZone(t,n,r,o){const s=t.addZone({afterLineNumber:n,heightInLines:r,domNode:o,afterColumnAffinity:1,onComputedHeight:a=>{this._viewZoneHeight.set(a,void 0)}});this.keepCursorStable(n,r),this._viewZoneInfo={viewZoneId:s,heightInLines:r,lineNumber:n}}removeActiveViewZone(t){this._viewZoneInfo&&(t.removeZone(this._viewZoneInfo.viewZoneId),this.hasBeenAccepted||this.keepCursorStable(this._viewZoneInfo.lineNumber,-this._viewZoneInfo.heightInLines),this._viewZoneInfo=void 0,this._viewZoneHeight.set(void 0,void 0))}keepCursorStable(t,n){var o,s;if(!this._shouldKeepCursorStable)return;const r=(s=(o=this._editor.getSelection())==null?void 0:o.getStartPosition())==null?void 0:s.lineNumber;r!==void 0&&t`);for(let A=0,p=n.length;A');const O=w.getLineContent(),y=Sie(O),C=ZW(O);tH(new AL(h.isMonospace&&!s,h.canUseHalfwidthRightwardsArrow,O,!1,y,C,0,w,b.decorations,t,0,h.spaceWidth,h.middotWidth,h.wsmiddotWidth,a,l,d,u!==F8.OFF,null,null,0),v),v.appendString("")}v.appendString(""),Fu(e,h);const f=v.build(),k=FCt?FCt.createHTML(f):f;e.innerHTML=k}const FCt=Jy("editorGhostText",{createHTML:e=>e}),gAe=class gAe{constructor(t){this.replacements=t,PK(wie(t,(n,r)=>n.lineRange.endLineNumberExclusive<=r.lineRange.startLineNumber))}toString(){return this.replacements.map(t=>t.toString()).join(",")}getNewLineRanges(){const t=[];let n=0;for(const r of this.replacements)t.push(Ei.ofLength(r.lineRange.startLineNumber+n,r.newLines.length)),n+=r.newLines.length-r.lineRange.length;return t}};gAe.empty=new gAe([]);let yVe=gAe;class H0e{static fromSingleTextEdit(t,n){const r=P0(t.text);let o=t.range.startLineNumber;const s=n.getValueOfRange(Ee.fromPositions(new it(t.range.startLineNumber,1),t.range.getStartPosition()));r[0]=s+r[0];let a=t.range.endLineNumber+1;const l=n.getTransformer().getLineLength(t.range.endLineNumber)+1,d=n.getValueOfRange(Ee.fromPositions(t.range.getEndPosition(),new it(t.range.endLineNumber,l)));r[r.length-1]=r[r.length-1]+d;const u=t.range.startColumn===n.getTransformer().getLineLength(t.range.startLineNumber)+1,h=t.range.endColumn===1;return u&&r[0].length===s.length&&(o++,r.shift()),r.length>0&&o${JSON.stringify(this.newLines)}`}toLineEdit(){return new yVe([this])}}class hIn{get lineEdit(){return this.edit.replacements.length===0?new H0e(new Ei(1,1),[]):H0e.fromSingleTextEdit(this.edit.toReplacement(this.originalText),this.originalText)}get originalLineRange(){return this.lineEdit.lineRange}get modifiedLineRange(){return this.lineEdit.toLineEdit().getNewLineRanges()[0]}get displayRange(){return this.originalText.lineRange.intersect(this.originalLineRange.join(Ei.ofLength(this.originalLineRange.startLineNumber,this.lineEdit.newLines.length)))}constructor(t,n,r,o,s,a){this.originalText=t,this.edit=n,this.cursorPosition=r,this.multiCursorPositions=o,this.commands=s,this.inlineCompletion=a}}class fIn{constructor(t,n,r){this._model=t,this.inlineEdit=n,this.tabAction=r,this.action=this.inlineEdit.inlineCompletion.action,this.displayName=this.inlineEdit.inlineCompletion.source.provider.displayName??U(1219,"Inline Edit"),this.extensionCommands=this.inlineEdit.inlineCompletion.source.inlineSuggestions.commands??[],this.isInDiffEditor=this._model.isInDiffEditor,this.displayLocation=this.inlineEdit.inlineCompletion.hint,this.showCollapsed=this._model.showCollapsed}accept(){this._model.accept()}jump(){this._model.jump()}handleInlineEditShown(t,n){this._model.handleInlineSuggestionShown(this.inlineEdit.inlineCompletion,t,n)}}class nCo{constructor(t){this._model=t,this.onDidAccept=this._model.onDidAccept,this.inAcceptFlow=this._model.inAcceptFlow}}class iCo{constructor(t,n,r,o){this.lineRange=r;const s=hl(t),a=Rt(this,l=>s.isFocused.read(l)&&o.showInlineEditMenu?wf.Accept:wf.Inactive);this.model=new fIn(n,new hIn(new g9(""),new V4([o.getSingleTextEdit()]),n.primaryPosition.get(),n.allPositions.get(),o.source.inlineSuggestions.commands??[],o),a)}}class Vs{static fromPoints(t,n){return new Vs(t.x,t.y,n.x,n.y)}static fromPointSize(t,n){return new Vs(t.x,t.y,t.x+n.x,t.y+n.y)}static fromLeftTopRightBottom(t,n,r,o){return new Vs(t,n,r,o)}static fromLeftTopWidthHeight(t,n,r,o){return new Vs(t,n,t+r,n+o)}static fromRanges(t,n){return new Vs(t.start,n.start,t.endExclusive,n.endExclusive)}static hull(t){let n=Number.MAX_SAFE_INTEGER,r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MIN_SAFE_INTEGER;for(const a of t)n=Math.min(n,a.left),r=Math.min(r,a.top),o=Math.max(o,a.right),s=Math.max(s,a.bottom);return new Vs(n,r,o,s)}get width(){return this.right-this.left}get height(){return this.bottom-this.top}constructor(t,n,r,o){if(this.left=t,this.top=n,this.right=r,this.bottom=o,t>r)throw new ui("Invalid arguments: Horizontally offset by "+(t-r));if(n>o)throw new ui("Invalid arguments: Vertically offset by "+(n-o))}withMargin(t,n,r,o){let s,a,l,d;return n===void 0&&r===void 0&&o===void 0?s=a=l=d=t:r===void 0&&o===void 0?(s=a=n,l=d=t):(s=o,a=n,l=t,d=r),new Vs(this.left-s,this.top-l,this.right+a,this.bottom+d)}intersectVertical(t){const n=Math.max(this.top,t.start),r=Math.min(this.bottom,t.endExclusive);return new Vs(this.left,n,this.right,Math.max(n,r))}intersectHorizontal(t){const n=Math.max(this.left,t.start),r=Math.min(this.right,t.endExclusive);return new Vs(n,this.top,Math.max(n,r),this.bottom)}toString(){return`Rect{(${this.left},${this.top}), (${this.right},${this.bottom})}`}intersect(t){const n=Math.max(this.left,t.left),r=Math.min(this.right,t.right),o=Math.max(this.top,t.top),s=Math.min(this.bottom,t.bottom);if(!(n>r||o>s))return new Vs(n,o,r,s)}containsRect(t){return this.left<=t.left&&this.top<=t.top&&this.right>=t.right&&this.bottom>=t.bottom}containsPoint(t){return this.left<=t.x&&this.top<=t.y&&this.right>=t.x&&this.bottom>=t.y}moveToBeContainedIn(t){const n=this.width,r=this.height;let o=this.left,s=this.top;return ot.right&&(o=t.right-n),st.bottom&&(s=t.bottom-r),new Vs(o,s,o+n,s+r)}withWidth(t){return new Vs(this.left,this.top,this.left+t,this.bottom)}withHeight(t){return new Vs(this.left,this.top,this.right,this.top+t)}withTop(t){return new Vs(this.left,t,this.right,this.bottom)}withLeft(t){return new Vs(t,this.top,this.right,this.bottom)}translateX(t){return new Vs(this.left+t,this.top,this.right+t,this.bottom)}translateY(t){return new Vs(this.left,this.top+t,this.right,this.bottom+t)}getLeftBottom(){return new cu(this.left,this.bottom)}getRightBottom(){return new cu(this.right,this.bottom)}getRightTop(){return new cu(this.right,this.top)}toStyles(){return{position:"absolute",left:`${this.left}px`,top:`${this.top}px`,width:`${this.width}px`,height:`${this.height}px`}}}class NZ{constructor(t,n,r,o=null){this.startLineNumbers=t,this.endLineNumbers=n,this.lastLineRelativePosition=r,this.showEndForLine=o}equals(t){return!!t&&this.lastLineRelativePosition===t.lastLineRelativePosition&&this.showEndForLine===t.showEndForLine&&Na(this.startLineNumbers,t.startLineNumbers)&&Na(this.endLineNumbers,t.endLineNumbers)}static get Empty(){return new NZ([],[],0)}}const NCt=Jy("stickyScrollViewLayer",{createHTML:e=>e}),Rxe="data-sticky-line-index",UCt="data-sticky-is-line",rCo="data-sticky-is-line-number",jCt="data-sticky-is-folding-icon";class oCo extends ft{get height(){return this._height}constructor(t){super(),this._foldingIconStore=this._register(new xt),this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._height=-1,this._onDidChangeStickyScrollHeight=this._register(new at),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._editor=t,this._lineHeight=t.getOption(75),this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",t instanceof X8),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable),this._setHeight(0);const n=()=>{this._linesDomNode.style.left=this._editor.getOption(131).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(131)&&n(),r.hasChanged(75)&&(this._lineHeight=this._editor.getOption(75))})),this._register(this._editor.onDidScrollChange(r=>{r.scrollLeftChanged&&n(),r.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{n(),this._updateWidgetWidth()})),n(),this._register(this._editor.onDidLayoutChange(r=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(t){return this._renderedStickyLines.find(n=>n.lineNumber===t)}getCurrentLines(){return this._lineNumbers}setState(t,n,r){const o=!this._state&&!t,s=this._state&&this._state.equals(t);if(r===void 0&&(o||s))return;const a=this._findRenderingData(t),l=this._lineNumbers;this._lineNumbers=a.lineNumbers,this._lastLineRelativePosition=a.lastLineRelativePosition;const d=this._findIndexToRebuildFrom(l,this._lineNumbers,r);this._renderRootNode(this._lineNumbers,this._lastLineRelativePosition,n,d),this._state=t}_findRenderingData(t){if(!t)return{lineNumbers:[],lastLineRelativePosition:0};const n=[...t.startLineNumbers];t.showEndForLine!==null&&(n[t.showEndForLine]=t.endLineNumbers[t.showEndForLine]);let r=0;for(let o=0;o!t.includes(s));return o===-1?0:o}_updateWidgetWidth(){const t=this._editor.getLayoutInfo(),n=t.contentLeft;this._lineNumbersDomNode.style.width=`${n}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-t.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${t.width-t.verticalScrollbarWidth}px`}_useFoldingOpacityTransition(t){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${t?.5:0}s`)}_setFoldingIconsVisibility(t){for(const n of this._renderedStickyLines){const r=n.foldingIcon;r&&r.setVisible(t?!0:r.isCollapsed)}}async _renderRootNode(t,n,r,o){const s=this._editor._getViewModel();if(!s){this._clearWidget();return}if(t.length===0){this._clearWidget();return}const a=[],l=t[t.length-1];let d=0;for(let h=0;hh.scrollWidth))+u.verticalScrollbarWidth,this._renderedStickyLines=a,this._setHeight(d+n),this._editor.layoutOverlayWidget(this)}_clearWidget(){for(let t=0;t{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(wt(this._lineNumbersDomNode,rn.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(t,n,r,o,s,a,l){const d=t.coordinatesConverter.convertModelPositionToViewPosition(new it(r,1)).lineNumber,u=t.getViewLineRenderingData(d),h=this._editor.getOption(76),g=this._editor.getOption(117).verticalScrollbarSize;let m;try{m=wg.filter(u.inlineDecorations,d,u.minColumn,u.maxColumn)}catch{m=[]}const v=this._editor.getLineHeightForPosition(new it(r,1)),f=t.getTextDirection(r),k=new AL(!0,!0,u.content,u.continuesWithWrappedLine,u.isBasicASCII,u.containsRTL,0,u.tokens,m,u.tabSize,u.startVisibleColumn,1,1,1,500,"none",!0,!0,null,f,g),A=new sE(2e3),p=tH(k,A);let b;NCt?b=NCt.createHTML(A.build()):b=A.build();const w=document.createElement("span");w.setAttribute(Rxe,String(n)),w.setAttribute(UCt,""),w.setAttribute("role","listitem"),w.tabIndex=0,w.className="sticky-line-content",w.classList.add(`stickyLine${r}`),w.style.lineHeight=`${v}px`,w.innerHTML=b;const O=document.createElement("span");O.setAttribute(Rxe,String(n)),O.setAttribute(rCo,""),O.className="sticky-line-number",O.style.lineHeight=`${v}px`;const y=l.contentLeft;O.style.width=`${y}px`;const C=document.createElement("span");h.renderType===1||h.renderType===3&&r%10===0?C.innerText=r.toString():h.renderType===2&&(C.innerText=Math.abs(r-this._editor.getPosition().lineNumber).toString()),C.className="sticky-line-number-inner",C.style.width=`${l.lineNumbersWidth}px`,C.style.paddingLeft=`${l.lineNumbersLeft}px`,O.appendChild(C);const _=this._renderFoldingIconForLine(a,r);_&&(O.appendChild(_.domNode),_.domNode.style.left=`${l.lineNumbersWidth+l.lineNumbersLeft}px`,_.domNode.style.lineHeight=`${v}px`),this._editor.applyFontInfo(w),this._editor.applyFontInfo(O),O.style.lineHeight=`${v}px`,w.style.lineHeight=`${v}px`,O.style.height=`${v}px`,w.style.height=`${v}px`;const S=new sCo(n,r,w,O,_,p.characterMapping,w.scrollWidth,v);return this._updatePosition(S,o,s)}_updatePosition(t,n,r){var a;const o=t.lineDomNode,s=t.lineNumberDomNode;if(r){const l="0";o.style.zIndex=l,s.style.zIndex=l;const d=`${n+this._lastLineRelativePosition+((a=t.foldingIcon)!=null&&a.isCollapsed?1:0)}px`;o.style.top=d,s.style.top=d}else{const l="1";o.style.zIndex=l,s.style.zIndex=l,o.style.top=`${n}px`,s.style.top=`${n}px`}return t}_renderFoldingIconForLine(t,n){const r=this._editor.getOption(126);if(!t||r==="never")return;const o=t.regions,s=o.findRange(n),a=o.getStartLineNumber(s);if(!(n===a))return;const d=o.isCollapsed(s),u=new aCo(d,a,o.getEndLineNumber(s),this._lineHeight);return u.setVisible(this._isOnGlyphMargin?!0:d||r==="always"),u.domNode.setAttribute(jCt,""),u}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(t){0<=t&&t0)return null;const n=this._getRenderedStickyLineFromChildDomNode(t);if(!n)return null;const r=rV(n.characterMapping,t,0);return new it(n.lineNumber,r)}getLineNumberFromChildDomNode(t){var n;return((n=this._getRenderedStickyLineFromChildDomNode(t))==null?void 0:n.lineNumber)??null}_getRenderedStickyLineFromChildDomNode(t){const n=this.getLineIndexFromChildDomNode(t);return n===null||n<0||n>=this._renderedStickyLines.length?null:this._renderedStickyLines[n]}getLineIndexFromChildDomNode(t){const n=this._getAttributeValue(t,Rxe);return n?parseInt(n,10):null}isInStickyLine(t){return this._getAttributeValue(t,UCt)!==void 0}isInFoldingIconDomNode(t){return this._getAttributeValue(t,jCt)!==void 0}_getAttributeValue(t,n){for(;t&&t!==this._rootDomNode;){const r=t.getAttribute(n);if(r!==null)return r;t=t.parentElement}}}class sCo{constructor(t,n,r,o,s,a,l,d){this.index=t,this.lineNumber=n,this.lineDomNode=r,this.lineNumberDomNode=o,this.foldingIcon=s,this.characterMapping=a,this.scrollWidth=l,this.height=d}}class aCo{constructor(t,n,r,o){this.isCollapsed=t,this.foldingStartLine=n,this.foldingEndLine=r,this.dimension=o,this.domNode=document.createElement("div"),this.domNode.style.width="26px",this.domNode.style.height=`${o}px`,this.domNode.style.lineHeight=`${o}px`,this.domNode.className=fi.asClassName(t?w0e:b0e)}setVisible(t){this.domNode.style.cursor=t?"pointer":"default",this.domNode.style.opacity=t?"1":"0"}}class UZ{constructor(t,n){this.startLineNumber=t,this.endLineNumber=n}}class $0e{constructor(t,n,r){this.range=t,this.children=n,this.parent=r}}class gIn{constructor(t,n,r,o){this.uri=t,this.version=n,this.element=r,this.outlineProviderId=o}}var U3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},oee=function(e,t){return function(n,r){t(n,r,e)}},jZ;(function(e){e.OUTLINE_MODEL="outlineModel",e.FOLDING_PROVIDER_MODEL="foldingProviderModel",e.INDENTATION_MODEL="indentationModel"})(jZ||(jZ={}));var O9;(function(e){e[e.VALID=0]="VALID",e[e.INVALID=1]="INVALID",e[e.CANCELED=2]="CANCELED"})(O9||(O9={}));let CVe=class extends ft{constructor(t,n,r,o){switch(super(),this._editor=t,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new dA(300)),this._updateOperation=this._register(new xt),this._editor.getOption(131).defaultModel){case jZ.OUTLINE_MODEL:this._modelProviders.push(new _Ve(this._editor,o));case jZ.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new LVe(this._editor,n,o));case jZ.INDENTATION_MODEL:this._modelProviders.push(new SVe(this._editor,r));break}}dispose(){this._modelProviders.forEach(t=>t.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(t){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const n of this._modelProviders){const{statusPromise:r,modelPromise:o}=n.computeStickyModel(t);this._modelPromise=o;const s=await r;if(this._modelPromise!==o)return null;switch(s){case O9.CANCELED:return this._updateOperation.clear(),null;case O9.VALID:return n.stickyModel}}return null}).catch(n=>(zi(n),null))}};CVe=U3e([oee(2,Yn),oee(3,Nn)],CVe);class mIn extends ft{constructor(t){super(),this._editor=t,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,O9.INVALID}computeStickyModel(t){if(t.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const n=Fd(r=>this.createModelFromProvider(r));return{statusPromise:n.then(r=>this.isModelValid(r)?t.isCancellationRequested?O9.CANCELED:(this._stickyModel=this.createStickyModel(t,r),O9.VALID):this._invalid()).then(void 0,r=>(zi(r),O9.CANCELED)),modelPromise:n}}isModelValid(t){return!0}isProviderValid(){return!0}}let _Ve=class extends mIn{constructor(t,n){super(t),this._languageFeaturesService=n}createModelFromProvider(t){return rS.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),t)}createStickyModel(t,n){var a;const{stickyOutlineElement:r,providerID:o}=this._stickyModelFromOutlineModel(n,(a=this._stickyModel)==null?void 0:a.outlineProviderId),s=this._editor.getModel();return new gIn(s.uri,s.getVersionId(),r,o)}isModelValid(t){return t&&t.children.size>0}_stickyModelFromOutlineModel(t,n){let r;if(to.first(t.children.values())instanceof $Rn){const l=to.find(t.children.values(),d=>d.id===n);if(l)r=l.children;else{let d="",u=-1,h;for(const[g,m]of t.children.entries()){const v=this._findSumOfRangesOfGroup(m);v>u&&(h=m,u=v,d=m.id)}n=d,r=h.children}}else r=t.children;const o=[],s=Array.from(r.values()).sort((l,d)=>{const u=new UZ(l.symbol.range.startLineNumber,l.symbol.range.endLineNumber),h=new UZ(d.symbol.range.startLineNumber,d.symbol.range.endLineNumber);return this._comparator(u,h)});for(const l of s)o.push(this._stickyModelFromOutlineElement(l,l.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new $0e(void 0,o,void 0),providerID:n}}_stickyModelFromOutlineElement(t,n){const r=[];for(const s of t.children.values())if(s.symbol.selectionRange.startLineNumber!==s.symbol.range.endLineNumber)if(s.symbol.selectionRange.startLineNumber!==n)r.push(this._stickyModelFromOutlineElement(s,s.symbol.selectionRange.startLineNumber));else for(const a of s.children.values())r.push(this._stickyModelFromOutlineElement(a,s.symbol.selectionRange.startLineNumber));r.sort((s,a)=>this._comparator(s.range,a.range));const o=new UZ(t.symbol.selectionRange.startLineNumber,t.symbol.range.endLineNumber);return new $0e(o,r,void 0)}_comparator(t,n){return t.startLineNumber!==n.startLineNumber?t.startLineNumber-n.startLineNumber:n.endLineNumber-t.endLineNumber}_findSumOfRangesOfGroup(t){let n=0;for(const r of t.children.values())n+=this._findSumOfRangesOfGroup(r);return t instanceof GWe?n+t.symbol.range.endLineNumber-t.symbol.selectionRange.startLineNumber:n}};_Ve=U3e([oee(1,Nn)],_Ve);class kIn extends mIn{constructor(t){super(t),this._foldingLimitReporter=this._register(new URn(t))}createStickyModel(t,n){const r=this._fromFoldingRegions(n),o=this._editor.getModel();return new gIn(o.uri,o.getVersionId(),r,void 0)}isModelValid(t){return t!==null}_fromFoldingRegions(t){const n=t.length,r=[],o=new $0e(void 0,[],void 0);for(let s=0;s{this._updateProvider(t,n)})),this._updateProvider(t,n)}_updateProvider(t,n){const r=R6.getFoldingRangeProviders(this._languageFeaturesService,t.getModel());r.length!==0&&(this.provider.value=new Dnt(t.getModel(),r,n,this._foldingLimitReporter,void 0))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(t){var n;return((n=this.provider.value)==null?void 0:n.compute(t))??null}};LVe=U3e([oee(2,Nn)],LVe);var lCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},WCt=function(e,t){return function(n,r){t(n,r,e)}};class cCo{constructor(t,n,r,o){this.startLineNumber=t,this.endLineNumber=n,this.top=r,this.height=o}}let xVe=class extends ft{constructor(t,n,r){super(),this._languageFeaturesService=n,this._languageConfigurationService=r,this._onDidChangeStickyScroll=this._register(new at),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=t,this._sessionStore=this._register(new xt),this._updateSoon=this._register(new Es(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(131)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(131).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),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._sessionStore.add(Hn(()=>{var n;(n=this._stickyModelProvider)==null||n.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var t;return(t=this._model)==null?void 0:t.version}updateStickyModelProvider(){var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null,this._editor.hasModel()&&(this._stickyModelProvider=new CVe(this._editor,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var t;(t=this._cts)==null||t.dispose(!0),this._cts=new ja,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(t){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const n=await this._stickyModelProvider.update(t);t.isCancellationRequested||(this._model=n)}getCandidateStickyLinesIntersecting(t){var r;if(!((r=this._model)!=null&&r.element))return[];const n=[];return this.getCandidateStickyLinesIntersectingFromStickyModel(t,this._model.element,n,0,0,-1),this.filterHiddenRanges(n)}getCandidateStickyLinesIntersectingFromStickyModel(t,n,r,o,s,a){const l=this._editor.getModel();if(!l||n.children.length===0)return;let d=a;const u=[];for(let m=0;mm-v)),g=this.updateIndex(yme(u,t.endLineNumber,(m,v)=>m-v));for(let m=h;m<=g;m++){const v=n.children[m];if(!v||!v.range)continue;const{startLineNumber:f,endLineNumber:k}=v.range;if(k>f+1&&t.startLineNumber<=k+1&&f-1<=t.endLineNumber&&f!==d&&l.isValidRange(new Ee(f,1,k,1))){d=f;const A=this._editor.getLineHeightForPosition(new it(f,1));r.push(new cCo(f,k-1,s,A)),this.getCandidateStickyLinesIntersectingFromStickyModel(t,v,r,o+1,s+A,f)}}}filterHiddenRanges(t){var r;const n=(r=this._editor._getViewModel())==null?void 0:r.getHiddenAreas();return n?t.filter(o=>!n.some(s=>o.startLineNumber>=s.startLineNumber&&o.endLineNumber<=s.endLineNumber+1)):t}updateIndex(t){return t===-1?0:t<0?-t-2:t}};xVe=lCo([WCt(1,Nn),WCt(2,kl)],xVe);var dCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},PP=function(e,t){return function(n,r){t(n,r,e)}},EVe,dB;let fp=(dB=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._editor=t,this._contextMenuService=n,this._languageFeaturesService=r,this._instaService=o,this._contextKeyService=l,this._sessionStore=new xt,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._endLineNumbers=[],this._mouseTarget=null,this._onDidChangeStickyScrollHeight=this._register(new at),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._stickyScrollWidget=new oCo(this._editor),this._stickyLineCandidateProvider=new xVe(this._editor,r,s),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=NZ.Empty;const d=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeLineHeight(h=>{h.changes.forEach(g=>{const m=g.lineNumber;this._widgetState.startLineNumbers.includes(m)&&this._renderStickyScroll(m)})})),this._register(this._editor.onDidChangeFont(h=>{h.changes.forEach(g=>{const m=g.lineNumber;this._widgetState.startLineNumbers.includes(m)&&this._renderStickyScroll(m)})})),this._register(this._editor.onDidChangeConfiguration(h=>{this._readConfigurationChange(h)})),this._register(wt(d,rn.CONTEXT_MENU,async h=>{this._onContextMenu(ii(d),h)})),this._stickyScrollFocusedContextKey=$e.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=$e.stickyScrollVisible.bindTo(this._contextKeyService);const u=this._register(uA(d));this._register(u.onDidBlur(h=>{this._positionRevealed===!1&&d.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(u.onDidFocus(h=>{this.focus()})),this._registerMouseListeners(),this._register(wt(d,rn.MOUSE_DOWN,h=>{this._onMouseDown=!0})),this._register(this._stickyScrollWidget.onDidChangeStickyScrollHeight(h=>{this._onDidChangeStickyScrollHeight.fire(h)})),this._onDidResize(),this._readConfiguration()}get stickyScrollWidgetHeight(){return this._stickyScrollWidget.height}static get(t){return t.getContribution(EVe.ID)}_disposeFocusStickyScrollStore(){var t;this._stickyScrollFocusedContextKey.set(!1),(t=this._focusDisposableStore)==null||t.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}isFocused(){return this._focused}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new xt,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(t){this._focusedStickyElementIndex=t?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const t=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:t[this._focusedStickyElementIndex],column:1})}_revealPosition(t){this._reveaInEditor(t,()=>this._editor.revealPosition(t))}_revealLineInCenterIfOutsideViewport(t){this._reveaInEditor(t,()=>this._editor.revealLineInCenterIfOutsideViewport(t.lineNumber,0))}_reveaInEditor(t,n){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,n(),this._editor.setSelection(Ee.fromPositions(t)),this._editor.focus()}_registerMouseListeners(){const t=this._register(new xt),n=this._register(new y3e(this._editor,{extractLineNumberFromMouseEvent:s=>{const a=this._stickyScrollWidget.getEditorPositionFromNode(s.target.element);return a?a.lineNumber:0}})),r=s=>{if(!this._editor.hasModel()||s.target.type!==12||s.target.detail!==this._stickyScrollWidget.getId())return null;const a=s.target.element;if(!a||a.innerText!==a.innerHTML)return null;const l=this._stickyScrollWidget.getEditorPositionFromNode(a);return l?{range:new Ee(l.lineNumber,l.column,l.lineNumber,l.column+a.innerText.length),textElement:a}:null},o=this._stickyScrollWidget.getDomNode();this._register(wc(o,rn.CLICK,s=>{if(s.ctrlKey||s.altKey||s.metaKey||!s.leftButton)return;if(s.shiftKey){const u=this._stickyScrollWidget.getLineIndexFromChildDomNode(s.target);if(u===null)return;const h=new it(this._endLineNumbers[u],1);this._revealLineInCenterIfOutsideViewport(h);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(s.target)){const u=this._stickyScrollWidget.getLineNumberFromChildDomNode(s.target);this._toggleFoldingRegionForLine(u);return}if(!this._stickyScrollWidget.isInStickyLine(s.target))return;let d=this._stickyScrollWidget.getEditorPositionFromNode(s.target);if(!d){const u=this._stickyScrollWidget.getLineNumberFromChildDomNode(s.target);if(u===null)return;d=new it(u,1)}this._revealPosition(d)})),this._register(wt(Ls,rn.MOUSE_MOVE,s=>{this._mouseTarget=s.target,this._onMouseMoveOrKeyDown(s)})),this._register(wt(Ls,rn.KEY_DOWN,s=>{this._onMouseMoveOrKeyDown(s)})),this._register(wt(Ls,rn.KEY_UP,()=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(n.onMouseMoveOrRelevantKeyDown(([s,a])=>{const l=r(s);if(!l||!s.hasTriggerModifier||!this._editor.hasModel()){t.clear();return}const{range:d,textElement:u}=l;if(!d.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=d,t.clear();else if(u.style.textDecoration==="underline")return;const h=new ja;t.add(Hn(()=>h.dispose(!0)));let g;nre(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new it(d.startLineNumber,d.startColumn+1),!1,h.token).then(m=>{if(!h.token.isCancellationRequested)if(m.length!==0){this._candidateDefinitionsLength=m.length;const v=u;g!==v?(t.clear(),g=v,g.style.textDecoration="underline",t.add(Hn(()=>{g.style.textDecoration="none"}))):g||(g=v,g.style.textDecoration="underline",t.add(Hn(()=>{g.style.textDecoration="none"})))}else t.clear()})})),this._register(n.onCancel(()=>{t.clear()})),this._register(n.onExecute(async s=>{if(s.target.type!==12||s.target.detail!==this._stickyScrollWidget.getId())return;const a=this._stickyScrollWidget.getEditorPositionFromNode(s.target.element);a&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:a.lineNumber,column:1})),this._instaService.invokeFunction(_Rn,s,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(t,n){const r=new Xh(t,n);this._contextMenuService.showContextMenu({menuId:Wn.StickyScrollContext,getAnchor:()=>r})}_onMouseMoveOrKeyDown(t){if(!t.shiftKey||!this._mouseTarget||!ec(this._mouseTarget))return;const n=this._stickyScrollWidget.getLineIndexFromChildDomNode(this._mouseTarget);n===null||this._showEndForLine===n||(this._showEndForLine=n,this._renderStickyScroll())}_toggleFoldingRegionForLine(t){if(!this._foldingModel||t===null)return;const n=this._stickyScrollWidget.getRenderedStickyLine(t),r=n==null?void 0:n.foldingIcon;if(!r)return;xnt(this._foldingModel,1,[t]),r.isCollapsed=!r.isCollapsed;const o=(r.isCollapsed?this._editor.getTopForLineNumber(r.foldingEndLine):this._editor.getTopForLineNumber(r.foldingStartLine))-this._editor.getOption(75)*n.index+1;this._editor.setScrollTop(o),this._renderStickyScroll(t)}_readConfiguration(){const t=this._editor.getOption(131);if(t.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._resetState(),this._sessionStore.clear(),this._enabled=!1;return}else t.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(r=>{r.scrollTopChanged&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(r=>this._onTokensChange(r))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=void 0,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(76).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(t){(t.hasChanged(131)||t.hasChanged(81)||t.hasChanged(75)||t.hasChanged(126)||t.hasChanged(76))&&this._readConfiguration(),(t.hasChanged(76)||t.hasChanged(52)||t.hasChanged(126))&&this._renderStickyScroll(0)}_needsUpdate(t){const n=this._stickyScrollWidget.getCurrentLines();for(const r of n)for(const o of t.ranges)if(r>=o.fromLineNumber&&r<=o.toLineNumber)return!0;return!1}_onTokensChange(t){this._needsUpdate(t)&&this._renderStickyScroll(0)}_onDidResize(){const n=this._editor.getLayoutInfo().height/this._editor.getOption(75);this._maxStickyLines=Math.round(n*.25),this._renderStickyScroll(0)}async _renderStickyScroll(t){const n=this._editor.getModel();if(!n||n.isTooLargeForTokenization()){this._resetState();return}const r=this._updateAndGetMinRebuildFromLine(t),o=this._stickyLineCandidateProvider.getVersionId();if(o===void 0||o===n.getVersionId())if(!this._focused)await this._updateState(r);else if(this._focusedStickyElementIndex===-1)await this._updateState(r),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const a=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(r),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(a)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(t){if(t!==void 0){const n=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(t,n)}return this._minRebuildFromLine}async _updateState(t){var r;this._minRebuildFromLine=void 0,this._foldingModel=await((r=R6.get(this._editor))==null?void 0:r.getFoldingModel())??void 0,this._widgetState=this.findScrollWidgetState();const n=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(n),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,t)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=NZ.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const t=Math.min(this._maxStickyLines,this._editor.getOption(131).maxLineCount),n=this._editor.getScrollTop();let r=0;const o=[],s=[],a=this._editor.getVisibleRanges();if(a.length!==0){const l=new UZ(a[0].startLineNumber,a[a.length-1].endLineNumber),d=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(l);for(const u of d){const h=u.startLineNumber,g=u.endLineNumber,m=u.top,v=m+u.height,f=this._editor.getTopForLineNumber(h)-n,k=this._editor.getBottomForLineNumber(g)-n;if(m>f&&m<=k&&(o.push(h),s.push(g+1),v>k&&(r=k-v)),o.length===t)break}}return this._endLineNumbers=s,new NZ(o,s,r,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},EVe=dB,dB.ID="store.contrib.stickyScrollController",dB);fp=EVe=dCo([PP(1,S2),PP(2,Nn),PP(3,Yn),PP(4,kl),PP(5,CA),PP(6,Qi)],fp);const WZ=Ve("inlineEdit.originalBackground",Zi(h9,.2),U(1220,"Background color for the original text in inline edits."),!0),vIn=Ve("inlineEdit.modifiedBackground",Zi(cQ,.3),U(1221,"Background color for the modified text in inline edits."),!0);Ve("inlineEdit.originalChangedLineBackground",Zi(h9,.8),U(1222,"Background color for the changed lines in the original text of inline edits."),!0);const uCo=Ve("inlineEdit.originalChangedTextBackground",Zi(h9,.8),U(1223,"Overlay color for the changed text in the original text of inline edits."),!0),hCo=Ve("inlineEdit.modifiedChangedLineBackground",{light:Zi(gle,.7),dark:Zi(gle,.7),hcDark:gle,hcLight:gle},U(1224,"Background color for the changed lines in the modified text of inline edits."),!0),fCo=Ve("inlineEdit.modifiedChangedTextBackground",Zi(cQ,.7),U(1225,"Overlay color for the changed text in the modified text of inline edits."),!0),gCo=Ve("inlineEdit.gutterIndicator.primaryForeground",Ybe,U(1226,"Foreground color for the primary inline edit gutter indicator.")),_N=Ve("inlineEdit.gutterIndicator.primaryBorder",dQ,U(1227,"Border color for the primary inline edit gutter indicator.")),AIn=Ve("inlineEdit.gutterIndicator.primaryBackground",{light:Zi(_N,.5),dark:Zi(_N,.4),hcDark:Zi(_N,.4),hcLight:Zi(_N,.5)},U(1228,"Background color for the primary inline edit gutter indicator.")),mCo=Ve("inlineEdit.gutterIndicator.secondaryForeground",Q7n,U(1229,"Foreground color for the secondary inline edit gutter indicator.")),pIn=Ve("inlineEdit.gutterIndicator.secondaryBorder",Gme,U(1230,"Border color for the secondary inline edit gutter indicator.")),bIn=Ve("inlineEdit.gutterIndicator.secondaryBackground",pIn,U(1231,"Background color for the secondary inline edit gutter indicator.")),kCo=Ve("inlineEdit.gutterIndicator.successfulForeground",Ybe,U(1232,"Foreground color for the successful inline edit gutter indicator.")),wIn=Ve("inlineEdit.gutterIndicator.successfulBorder",dQ,U(1233,"Border color for the successful inline edit gutter indicator.")),OIn=Ve("inlineEdit.gutterIndicator.successfulBackground",wIn,U(1234,"Background color for the successful inline edit gutter indicator.")),vCo=Ve("inlineEdit.gutterIndicator.background",{hcDark:Zi("tab.inactiveBackground",.5),hcLight:Zi("tab.inactiveBackground",.5),dark:Zi("tab.inactiveBackground",.5),light:"#5f5f5f18"},U(1235,"Background color for the inline edit gutter indicator.")),$G=Ve("inlineEdit.originalBorder",{light:h9,dark:h9,hcDark:h9,hcLight:h9},U(1236,"Border color for the original text in inline edits.")),XG=Ve("inlineEdit.modifiedBorder",{light:l1(cQ,.6),dark:cQ,hcDark:cQ,hcLight:cQ},U(1237,"Border color for the modified text in inline edits.")),ACo=Ve("inlineEdit.tabWillAcceptModifiedBorder",{light:l1(XG,0),dark:l1(XG,0),hcDark:l1(XG,0),hcLight:l1(XG,0)},U(1238,"Modified border color for the inline edits widget when tab will accept it.")),pCo=Ve("inlineEdit.tabWillAcceptOriginalBorder",{light:l1($G,0),dark:l1($G,0),hcDark:l1($G,0),hcLight:l1($G,0)},U(1239,"Original border color for the inline edits widget over the original text when tab will accept it."));function see(e){return e.map(t=>t===wf.Accept?ACo:XG)}function j3e(e){return e.map(t=>t===wf.Accept?pCo:$G)}function gv(e,t){let n;typeof e=="string"?n=Ixe(e,t):n=e.map((o,s)=>Ixe(o,t).read(s));const r=Ixe(Oc,t);return n.map((o,s)=>o.makeOpaque(r.read(s)))}function Ixe(e,t){return gEn({owner:{observeColor:e},equalsFn:(n,r)=>n.equals(r),debugName:()=>`observeColor(${e})`},t.onDidColorThemeChange,()=>{const n=t.getColorTheme().getColor(e);if(!n)throw new ui(`Missing color: ${e}`);return n})}function y9(e,t,n){e.layoutInfo.read(n),e.value.read(n);const r=e.model.read(n);if(!r)return 0;let o=0;e.scrollTop.read(n);for(let a=t.startLineNumber;ar.getLineContent(a));return o<5&&s.some(a=>a.length>0)&&r.uri.scheme!=="file"&&console.error("unexpected width"),o}function bCo(e,t,n){return e.layoutInfo.read(n),e.value.read(n),e.model.read(n)?(e.scrollTop.read(n),e.editor.getOffsetForColumn(t.lineNumber,t.column)):0}function Nnt(e,t,n,r,o=void 0){const s=r.getModel();if(!s)return{prefixTrim:0,prefixLeftOffset:0};const a=e.map(m=>m.isSingleLine()?m.startColumn-1:0),l=t.mapToLineArray(m=>EUe(s.getLineContent(m))),d=n.filter(m=>m!=="").map(m=>EUe(m)),u=Math.min(...a,...l,...d);let h;if(s.getLineIndentColumn(t.startLineNumber)>=u+1)hl(r).scrollTop.read(o),h=r.getOffsetForColumn(t.startLineNumber,u+1);else if(n.length>0)h=Unt(n[0].slice(0,u),r,s);else return{prefixTrim:0,prefixLeftOffset:0};return{prefixTrim:u,prefixLeftOffset:h}}function Unt(e,t,n){const r=t.getOption(59).typicalHalfwidthCharacterWidth,o=n.getOptions().tabSize*r,s=e.split(" ").length-1;return(e.length-s)*r+s*o}function jnt(e){const t=e.layoutInfoContentLeft,n=Rt({name:"editor.validOverlay.width"},o=>{const s=e.layoutInfoMinimap.read(o).minimapLeft!==0,a=e.layoutInfoWidth.read(o)-t.read(o);if(s){const l=e.layoutInfoMinimap.read(o).minimapWidth+e.layoutInfoVerticalScrollbarWidth.read(o);return a-l}return a}),r=Rt({name:"editor.validOverlay.height"},o=>e.layoutInfoHeight.read(o)+e.contentHeight.read(o));return Rt({name:"editor.validOverlay"},o=>Vs.fromLeftTopWidthHeight(t.read(o),0,n.read(o),r.read(o)))}function wCo(e,t){const n=[];for(const r of e){const o=t.mapRange(r.modifiedRange);n.push(new im(r.originalRange,o))}return n}function Mxe(...e){return e.filter(t=>typeof t=="string").join(" ")}function OCo(e,t){return new Ee(t.lineNumber,t.column+e.start,t.lineNumber,t.column+e.endExclusive)}function yCo(e,t){let n=0;e:for(let r=0,o=e.length;ryCo(r[a-1],n)),T0);return t.forEach(a=>{const l=CCo(r[a-1],s,n);o.push(new Mc(OCo(new Xn(0,l),new it(a,1)),""))}),new V4(o)}class TVe{constructor(){this._data=""}moveTo(t){return this._data+=`M ${t.x} ${t.y} `,this}lineTo(t){return this._data+=`L ${t.x} ${t.y} `,this}build(){return this._data}}function By(e){const t=vL(void 0,(n,r)=>e.read(n)||r);return Vh({debugName:()=>`${e.debugName}.mapOutFalsy`},n=>{if(t.read(n),!!e.read(n))return t})}function Pv(e,t=Hd.ofCaller()){return{left:Rt({name:"editor.validOverlay.left"},n=>e(n).left,t),top:Rt({name:"editor.validOverlay.top"},n=>e(n).top,t),width:Rt({name:"editor.validOverlay.width"},n=>e(n).right-e(n).left,t),height:Rt({name:"editor.validOverlay.height"},n=>e(n).bottom-e(n).top,t)}}var SCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Pxe=function(e,t){return function(n,r){t(n,r,e)}};let QVe=class{constructor(t,n,r,o,s,a){this._model=t,this._close=n,this._editorObs=r,this._contextKeyService=o,this._keybindingService=s,this._commandService=a,this._inlineEditsShowCollapsed=this._editorObs.getOption(71).map(l=>l.edits.showCollapsed)}toDisposableLiveElement(){return this._createHoverContent().toDisposableLiveElement()}_createHoverContent(){const t=Ti("active",void 0),n=m=>({title:m.title,icon:m.icon,keybinding:typeof m.commandId=="string"?this._getKeybinding(m.commandArgs?void 0:m.commandId):Rt(this,v=>typeof m.commandId=="string"?void 0:this._getKeybinding(m.commandArgs?void 0:m.commandId.read(v)).read(v)),isActive:t.map(v=>v===m.id),onHoverChange:v=>t.set(v?m.id:void 0,void 0),onAction:()=>(this._close(!0),this._commandService.executeCommand(typeof m.commandId=="string"?m.commandId:m.commandId.get(),...m.commandArgs??[]))}),r=xCo(this._model.displayName),o=C7(n({id:"gotoAndAccept",title:`${U(1212,"Go To")} / ${U(1213,"Accept")}`,icon:zt.check,commandId:WJ})),s=C7(n({id:"reject",title:U(1214,"Reject"),icon:zt.close,commandId:kBn})),a=this._model.extensionCommands.map((m,v)=>C7(n({id:m.command.id+"_"+v,title:m.command.title,icon:m.icon??zt.symbolEvent,commandId:m.command.id,commandArgs:m.command.arguments}))),l=this._inlineEditsShowCollapsed.map(m=>C7(n(m?{id:"showExpanded",title:U(1215,"Show Expanded"),icon:zt.expandAll,commandId:Xje}:{id:"showCollapsed",title:U(1216,"Show Collapsed"),icon:zt.collapseAll,commandId:Xje}))),d=C7(n({id:"snooze",title:U(1217,"Snooze"),icon:zt.bellSlash,commandId:"editor.action.inlineSuggest.snooze"})),u=C7(n({id:"settings",title:U(1218,"Settings"),icon:zt.gear,commandId:"workbench.action.openSettings",commandArgs:["@tag:nextEditSuggestions"]})),h=this._model.action?[this._model.action]:[],g=h.length>0?ECo(h.map(m=>({id:m.id,label:m.title+"...",enabled:!0,run:()=>this._commandService.executeCommand(m.id,...m.arguments??[]),class:void 0,tooltip:m.tooltip??m.title})),{hoverDelegate:jko}):void 0;return LCo([r,o,s,l,a.length?VCt():void 0,d,u,...a,g?VCt():void 0,g])}_getKeybinding(t){return t?Ko(this._contextKeyService.onDidChangeContext,()=>this._keybindingService.lookupKeybinding(t)):ca(void 0)}};QVe=SCo([Pxe(3,Qi),Pxe(4,Do),Pxe(5,ba)],QVe);function LCo(e){return cr.div({class:"content",style:{margin:4,minWidth:180}},e)}function xCo(e){return cr.div({class:"header",style:{color:en(O7n),fontSize:"13px",fontWeight:"600",padding:"0 4px",lineHeight:28}},[e])}function C7(e){return Rt({name:"inlineEdits.option"},t=>{var n;return cr.div({class:["monaco-menu-option",(n=e.isActive)==null?void 0:n.map(r=>r&&"active")],onmouseenter:()=>{var r;return(r=e.onHoverChange)==null?void 0:r.call(e,!0)},onmouseleave:()=>{var r;return(r=e.onHoverChange)==null?void 0:r.call(e,!1)},onclick:e.onAction,onkeydown:r=>{var o;r.key==="Enter"&&((o=e.onAction)==null||o.call(e))},tabIndex:0,style:{borderRadius:3}},[cr.elem("span",{style:{fontSize:16,display:"flex"}},[fi.isThemeIcon(e.icon)?y3(e.icon):e.icon.map(r=>y3(r))]),cr.elem("span",{},[e.title]),cr.div({style:{marginLeft:"auto"},ref:r=>{const o=t.store.add(new cH(r,b0,{disableTitle:!0,...fDn,keybindingLabelShadow:void 0,keybindingLabelForeground:en(O7n),keybindingLabelBackground:"transparent",keybindingLabelBorder:"transparent",keybindingLabelBottomBorder:void 0}));t.store.add(Oi(s=>{o.set(e.keybinding.read(s))}))}})])})}function ECo(e,t){return Rt({name:"inlineEdits.actionBar"},n=>cr.div({class:["action-widget-action-bar"],style:{padding:"3px 24px"}},[cr.div({ref:r=>{n.store.add(new g1(r,t)).push(e,{icon:!1,label:!0})}})]))}function VCt(){return cr.div({id:"inline-edit-gutter-indicator-menu-separator",class:"menu-separator",style:{color:en(rao),padding:"2px 0"}},cr.div({style:{borderBottom:`1px solid ${en(wet)}`}}))}var TCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},cce=function(e,t){return function(n,r){t(n,r,e)}};let DVe=class extends ft{get model(){const t=this._model.get();if(!t)throw new ui("Inline Edit Model not available");return t}constructor(t,n,r,o,s,a,l,d,u,h){super(),this._editorObs=t,this._originalRange=n,this._verticalOffset=r,this._model=o,this._isHoveringOverInlineEdit=s,this._focusIsInMenu=a,this._hoverService=l,this._instantiationService=d,this._accessibilityService=u,this._tabAction=Rt(this,g=>{const m=this._model.read(g);return m?m.tabAction.read(g):wf.Inactive}),this._hoverVisible=Ti(this,!1),this.isHoverVisible=this._hoverVisible,this._isHoveredOverIcon=Ti(this,!1),this._isHoveredOverIconDebounced=wbt(this._isHoveredOverIcon,100),this.isHoveredOverIcon=this._isHoveredOverIconDebounced,this._isHoveredOverInlineEditDebounced=wbt(this._isHoveringOverInlineEdit,100),this._gutterIndicatorStyles=this._tabAction.map(this,(g,m)=>{switch(g){case wf.Inactive:return{background:gv(bIn,h).read(m).toString(),foreground:gv(mCo,h).read(m).toString(),border:gv(pIn,h).read(m).toString()};case wf.Jump:return{background:gv(AIn,h).read(m).toString(),foreground:gv(gCo,h).read(m).toString(),border:gv(_N,h).read(m).toString()};case wf.Accept:return{background:gv(OIn,h).read(m).toString(),foreground:gv(kCo,h).read(m).toString(),border:gv(wIn,h).read(m).toString()};default:bie()}}),this._originalRangeObs=By(this._originalRange),this._state=Rt(this,g=>{const m=this._originalRangeObs.read(g);if(m)return{range:m,lineOffsetRange:this._editorObs.observeLineOffsetRange(m,g.store)}}),this._stickyScrollController=fp.get(this._editorObs.editor),this._stickyScrollHeight=this._stickyScrollController?Ko(this._stickyScrollController.onDidChangeStickyScrollHeight,()=>this._stickyScrollController.stickyScrollWidgetHeight):ca(0),this._lineNumberToRender=Rt(this,g=>{var f;if(this._verticalOffset.read(g)!==0)return"";const m=(f=this._originalRange.read(g))==null?void 0:f.startLineNumber,v=this._editorObs.getOption(76).read(g);if(m===void 0||v.renderType===0)return"";if(v.renderType===3){const k=this._editorObs.cursorPosition.read(g);return m%10===0||k&&k.lineNumber===m?m.toString():""}if(v.renderType===2){const k=this._editorObs.cursorPosition.read(g);if(!k)return"";const A=Math.abs(m-k.lineNumber);return A===0?m.toString():A.toString()}return v.renderType===4?v.renderFn?v.renderFn(m):"":m.toString()}),this._availableWidthForIcon=Rt(this,g=>{const m=this._editorObs.editor.getModel(),v=this._editorObs.editor,f=this._editorObs.layoutInfo.read(g),k=f.decorationsLeft+f.decorationsWidth-f.glyphMarginLeft;if(!m||k<=0)return()=>0;if(f.lineNumbersLeft===0)return()=>k;const A=this._editorObs.getOption(76).read(g);if(A.renderType===2||A.renderType===0)return()=>k;const p=v.getOption(59).typicalHalfwidthCharacterWidth,b=f.lineNumbersLeft+f.lineNumbersWidth,O=(m.getLineCount()+1).toString().length,y=[];for(let C=1;C<=O;C++){const _=10**(C-1),S=v.getTopForLineNumber(_),L=C*p,E=Math.min(k,Math.max(0,b-L-f.glyphMarginLeft));y.push({firstLineNumberWithDigitCount:_,topOfLineNumber:S,usableWidthLeftOfLineNumber:E})}return C=>{for(let _=y.length-1;_>=0;_--)if(C>=y[_].topOfLineNumber)return y[_].usableWidthLeftOfLineNumber;throw new ui("Could not find avilable width for icon")}}),this._layout=Rt(this,g=>{const m=this._state.read(g);if(!m)return;const v=this._editorObs.layoutInfo.read(g),f=this._editorObs.observeLineHeightForLine(m.range.map(H=>H.startLineNumber)).read(g),k=2,A=v.decorationsLeft+v.decorationsWidth-v.glyphMarginLeft-2*k,p=v.height-2*k,b=Vs.fromLeftTopWidthHeight(k,k,A,p),w=b.withTop(this._stickyScrollHeight.read(g)),O=b.withTop(w.top+k),y=m.lineOffsetRange.read(g),C=Vs.fromRanges(Xn.fromTo(O.left,O.right),y),_=f,S=this._verticalOffset.read(g),L=C.withHeight(_).translateY(S),E=w.containsRect(L),T=this._tabAction.map(H=>H===wf.Accept?zt.keyboardTab:zt.arrowRight),D=Rt(this,H=>{if(this._isHoveredOverIconDebounced.read(H)||this._isHoveredOverInlineEditDebounced.read(H))return zt.check;if(this._tabAction.read(H)===wf.Accept)return zt.keyboardTab;const $=this._editorObs.cursorLineNumber.read(H)??0,G=m.range.read(H).startLineNumber;return $<=G?zt.keyboardTabAbove:zt.keyboardTabBelow}),P=22,Q=16,M=H=>{const $=this._availableWidthForIcon.read(void 0)(H.bottom+this._editorObs.editor.getScrollTop())-k;return Math.max(Math.min($,P),Q)};if(E){const H=L;let $;v.lineNumbersWidth===0?$=Math.min(Math.max(v.lineNumbersLeft-b.left,0),H.width-P):$=Math.max(v.lineNumbersLeft+v.lineNumbersWidth-b.left,0);const G=H.withWidth($),q=Math.max(Math.min(v.decorationsWidth,P),Q),re=H.withWidth(q).translateX($);return{gutterEditArea:C,icon:D,iconDirection:"right",iconRect:re,pillRect:H,lineNumberRect:G}}const B=b.intersect(C);if(B&&B.height>=_){const H=L.moveToBeContainedIn(O).moveToBeContainedIn(B),$=H.withWidth(M(H));return{gutterEditArea:C,icon:D,iconDirection:"right",iconRect:$,pillRect:$}}const I=L.moveToBeContainedIn(b),F=I.withWidth(M(I)),j=F,W=F.top!!g),this._indicator=cr.div({class:"inline-edits-view-gutter-indicator",onclick:()=>{const g=this._layout.get(),m=(g==null?void 0:g.icon.get())===zt.check;this._editorObs.editor.focus(),m?this.model.accept():this.model.jump()},tabIndex:0,style:{position:"absolute",overflow:"visible"}},By(this._layout).map(g=>g?[cr.div({style:{position:"absolute",background:en(vCo),borderRadius:"4px",...Pv(m=>g.read(m).gutterEditArea)}}),cr.div({class:"icon",ref:this._iconRef,onmouseenter:()=>{this._showHover()},style:{cursor:"pointer",zIndex:"20",position:"absolute",backgroundColor:this._gutterIndicatorStyles.map(m=>m.background),"--vscodeIconForeground":this._gutterIndicatorStyles.map(m=>m.foreground),border:this._gutterIndicatorStyles.map(m=>`1px solid ${m.border}`),boxSizing:"border-box",borderRadius:"4px",display:"flex",justifyContent:"flex-end",transition:"background-color 0.2s ease-in-out, width 0.2s ease-in-out",...Pv(m=>g.read(m).pillRect)}},[cr.div({className:"line-number",style:{lineHeight:g.map(m=>m.lineNumberRect?m.lineNumberRect.height:0),display:g.map(m=>m.lineNumberRect?"flex":"none"),alignItems:"center",justifyContent:"flex-end",width:g.map(m=>m.lineNumberRect?m.lineNumberRect.width:0),height:"100%",color:this._gutterIndicatorStyles.map(m=>m.foreground)}},this._lineNumberToRender),cr.div({style:{rotate:g.map(m=>`${QCo(m.iconDirection)}deg`),transition:"rotate 0.2s ease-in-out",display:"flex",alignItems:"center",justifyContent:"center",height:"100%",marginRight:g.map(m=>{var v;return m.pillRect.width-m.iconRect.width-(((v=m.lineNumberRect)==null?void 0:v.width)??0)}),width:g.map(m=>m.iconRect.width)}},[g.map((m,v)=>y3(m.icon.read(v)))])])]:[])).keepUpdated(this._store),this._register(this._editorObs.createOverlayWidget({domNode:this._indicator.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:ca(0)})),this._register(this._editorObs.editor.onMouseMove(g=>{if(this._state.get()===void 0)return;const f=this._iconRef.element.getBoundingClientRect(),k=Vs.fromLeftTopWidthHeight(f.left,f.top,f.width,f.height),A=new cu(g.event.posx,g.event.posy);this._isHoveredOverIcon.set(k.containsPoint(A),void 0)})),this._register(this._editorObs.editor.onDidScrollChange(()=>{this._isHoveredOverIcon.set(!1,void 0)})),this._register(c3(this._isHoveredOverInlineEditDebounced,g=>{g&&this.triggerAnimation()})),this._register(Oi(g=>{this._indicator.readEffect(g),this._indicator.element&&this._editorObs.editor.applyFontInfo(this._indicator.element)}))}triggerAnimation(){return this._accessibilityService.isMotionReduced()?new Animation(null,null).finished:this._iconRef.element.animate([{outline:`2px solid ${this._gutterIndicatorStyles.map(n=>n.border).get()}`,outlineOffset:"-1px",offset:0},{outline:"2px solid transparent",outlineOffset:"10px",offset:1}],{duration:500}).finished}_showHover(){if(this._hoverVisible.get())return;const t=new xt,n=t.add(this._instantiationService.createInstance(QVe,this.model,s=>{s&&this._editorObs.editor.focus(),o==null||o.dispose()},this._editorObs).toDisposableLiveElement()),r=t.add(uA(n.element));t.add(r.onDidBlur(()=>this._focusIsInMenu.set(!1,void 0))),t.add(r.onDidFocus(()=>this._focusIsInMenu.set(!0,void 0))),t.add(Hn(()=>this._focusIsInMenu.set(!1,void 0)));const o=this._hoverService.showInstantHover({target:this._iconRef.element,content:n.element});o?(this._hoverVisible.set(!0,void 0),t.add(this._editorObs.editor.onDidScrollChange(()=>o.dispose())),t.add(o.onDispose(()=>{this._hoverVisible.set(!1,void 0),t.dispose()}))):t.dispose()}};DVe=TCo([cce(6,pm),cce(7,Yn),cce(8,vh),cce(9,Dl)],DVe);function QCo(e){switch(e){case"top":return 90;case"bottom":return-90;case"right":return 0}}var DCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zCt=function(e,t){return function(n,r){t(n,r,e)}},Ck;(function(e){e.FirstTime="firstTime",e.SecondTime="secondTime",e.Active="active"})(Ck||(Ck={}));let BVe=class extends ft{constructor(t,n,r,o,s,a){super(),this._host=t,this._model=n,this._indicator=r,this._collapsedView=o,this._storageService=s,this._configurationService=a,this._disposables=this._register(new ts),this._setupDone=Ti({name:"setupDone"},!1),this._activeCompletionId=Rt(l=>{const d=this._model.read(l);if(!d||!this._setupDone.read(l))return;const u=this._indicator.read(l);if(!(!u||!u.isVisible.read(l)))return d.inlineEdit.inlineCompletion.identity.id}),this._register(this._initializeDebugSetting()),this._disposables.value=this.setupNewUserExperience(),this._setupDone.set(!0,void 0)}setupNewUserExperience(){if(this.getNewUserType()===Ck.Active)return;const t=new xt;let n=!1,r=!1,o=0,s=0;return t.add(Sdo(this._activeCompletionId,async(a,l,d,u)=>{var g,m;if(a===void 0)return;let h=this.getNewUserType();switch(h){case Ck.FirstTime:{(o++>=5||n)&&(h=Ck.SecondTime,this.setNewUserType(h));break}case Ck.SecondTime:{s++>=3&&r&&(h=Ck.Active,this.setNewUserType(h));break}}switch(h){case Ck.FirstTime:{for(let v=0;v<3&&!u.isCancellationRequested;v++)await((g=this._indicator.get())==null?void 0:g.triggerAnimation()),await Cy(500);break}case Ck.SecondTime:{(m=this._indicator.get())==null||m.triggerAnimation();break}}})),t.add(Oi(a=>{this._collapsedView.isVisible.read(a)&&this.getNewUserType()!==Ck.Active&&this._collapsedView.triggerAnimation()})),t.add(Ef((a,l)=>{const d=this._indicator.read(a);d&&l.add(c3(d.isHoveredOverIcon,async u=>{u&&(n=!0)}))})),t.add(Ef((a,l)=>{const d=this._host.read(a);d&&l.add(d.onDidAccept(()=>{r=!0}))})),t}getNewUserType(){return this._storageService.get("inlineEditsGutterIndicatorUserKind",-1,Ck.FirstTime)}setNewUserType(t){switch(t){case Ck.FirstTime:throw new ui("UserKind should not be set to first time");case Ck.SecondTime:break;case Ck.Active:this._disposables.clear();break}this._storageService.store("inlineEditsGutterIndicatorUserKind",t,-1,0)}_initializeDebugSetting(){const t="editor.inlineSuggest.edits.resetNewUserExperience";return this._configurationService.getValue(t)&&this._storageService.remove("inlineEditsGutterIndicatorUserKind",-1),this._configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration(t)&&this._configurationService.getValue(t)&&(this._storageService.remove("inlineEditsGutterIndicatorUserKind",-1),this._disposables.value=this.setupNewUserExperience())})}};BVe=DCo([zCt(4,Bg),zCt(5,ar)],BVe);var BCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RCo=function(e,t){return function(n,r){t(n,r,e)}};let RVe=class extends ft{constructor(t,n,r){super(),this._editor=t,this._edit=n,this._accessibilityService=r,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._iconRef=cr.ref(),this.isHovered=ca(!1),this._editorObs=hl(this._editor);const s=this._edit.map(u=>(u==null?void 0:u.edit.replacements[0])??null).map(u=>u?IS(u,this._editor.getModel()).range.getStartPosition():null),a=this._editorObs.observePosition(s,this._store),l=Rt(u=>{const h=a.read(u);if(!h)return null;const g=this._editorObs.layoutInfoContentLeft.read(u),m=this._editorObs.scrollLeft.read(u);return new cu(g+h.x-m,h.y)}),d=cr.div({class:"inline-edits-collapsed-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:"block"}},[[this.getCollapsedIndicator(l)]]).keepUpdated(this._store).element;this._register(this._editorObs.createOverlayWidget({domNode:d,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:ca(0)})),this.isVisible=this._edit.map((u,h)=>!!u&&l.read(h)!==null)}triggerAnimation(){return this._accessibilityService.isMotionReduced()?new Animation(null,null).finished:this._iconRef.element.animate([{offset:0,transform:"translateY(-3px)"},{offset:.2,transform:"translateY(1px)"},{offset:.36,transform:"translateY(-1px)"},{offset:.52,transform:"translateY(1px)"},{offset:.68,transform:"translateY(-1px)"},{offset:.84,transform:"translateY(1px)"},{offset:1,transform:"translateY(0px)"}],{duration:2e3}).finished}getCollapsedIndicator(t){const n=this._editorObs.layoutInfoContentLeft,r=t.map((s,a)=>s?s.deltaX(-n.read(a)):null),o=this.createIconPath(r);return cr.svg({class:"collapsedView",ref:this._iconRef,style:{position:"absolute",...Pv(s=>jnt(this._editorObs).read(s)),overflow:"hidden",pointerEvents:"none"}},[cr.svgElem("path",{class:"collapsedViewPath",d:o,fill:en(_N)})])}createIconPath(t){return t.map(s=>{if(!s)return new TVe().build();const a=s.deltaX(-6/2).deltaY(-1),l=a.deltaX(6),d=a.deltaY(1),u=l.deltaY(1),h=d.deltaX(6/2).deltaY(3);return new TVe().moveTo(a).lineTo(l).lineTo(u).lineTo(h).lineTo(d).lineTo(a).build()})}};RVe=BCo([RCo(2,vh)],RVe);var ICo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},HCt=function(e,t){return function(n,r){t(n,r,e)}};const dce=14,Fxe=0,ZC=4,uce=4,$Ct=2;let IVe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._languageService=s,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._isHovered=Ti(this,!1),this.isHovered=this._isHovered,this._viewRef=cr.ref(),this._editorObs=hl(this._editor);const a=r.map((h,g)=>{let m;switch(h){case wf.Inactive:m=bIn;break;case wf.Jump:m=AIn;break;case wf.Accept:m=OIn;break}return{border:gv(m,o).read(g).toString(),background:en(Oc)}}),l=n.map(h=>h?this.getState(h):void 0),d=l.map(h=>h?this.getRendering(h,a):void 0);this.minEditorScrollHeight=Rt(this,h=>{const g=l.read(h);return g?g.rect.read(h).bottom+this._editor.getScrollTop():0});const u=cr.div({class:"inline-edits-custom-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:"block"}},[d]).keepUpdated(this._store);this._register(this._editorObs.createOverlayWidget({domNode:u.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:vL(this,(h,g)=>{const m=l.read(h);if(!m)return g??0;const v=m.rect.map(f=>f.right).read(h)+this._editorObs.layoutInfoVerticalScrollbarWidth.read(h)+ZC-this._editorObs.layoutInfoContentLeft.read(h);return Math.max(g??0,v)}).recomputeInitiallyAndOnChange(this._store)})),this._register(Oi(h=>{if(!d.read(h)){this._isHovered.set(!1,void 0);return}this._isHovered.set(u.isHovered.read(h),void 0)}))}fitsInsideViewport(t,n,r){const o=this._editorObs.layoutInfoWidth.read(r),s=this._editorObs.layoutInfoContentLeft.read(r),a=this._editor.getLayoutInfo().verticalScrollbarWidth,l=this._editorObs.layoutInfoMinimap.read(r).minimapLeft!==0?this._editorObs.layoutInfoMinimap.read(r).minimapWidth:0,d=y9(this._editorObs,t,void 0),u=Unt(n,this._editor,this._editor.getModel()),h=ZC+dce;return d+u+h{var b;const d=t.range.startLineNumber,u=t.range.endLineNumber,h=t.range.startColumn,g=t.range.endColumn,m=((b=this._editor.getModel())==null?void 0:b.getLineCount())??0,v=y9(this._editorObs,new Ei(d,d+1),l),f=d+1<=m?y9(this._editorObs,new Ei(d+1,d+2),l):void 0,k=d-1>=1?y9(this._editorObs,new Ei(d-1,d),l):void 0,A=this._editor.getOffsetForColumn(d,h),p=this._editor.getOffsetForColumn(u,g);return{lineWidth:v,lineWidthBelow:f,lineWidthAbove:k,startContentLeftOffset:A,endContentLeftOffset:p}}),r=t.range.startLineNumber,o=t.range.endLineNumber,s=this.fitsInsideViewport(new Ei(r,o+1),t.content,void 0);return{rect:Rt(this,l=>{const d=this._editorObs.getOption(59).read(l).typicalHalfwidthCharacterWidth,{lineWidth:u,lineWidthBelow:h,lineWidthAbove:g,startContentLeftOffset:m,endContentLeftOffset:v}=n.read(l),f=this._editorObs.layoutInfoContentLeft.read(l),k=this._editorObs.observeLineHeightForLine(r).recomputeInitiallyAndOnChange(l.store).read(l),A=this._editorObs.scrollTop.read(l),p=this._editorObs.scrollLeft.read(l);let b;r===o&&v+5*d>=u&&s?b="end":h!==void 0&&h+dce-uce-ZCu.withMargin(0,ZC));return cr.div({class:"collapsedView",ref:this._viewRef,style:{position:"absolute",...Pv(u=>l.read(u)),overflow:"hidden",boxSizing:"border-box",cursor:"pointer",border:n.map(u=>`1px solid ${u.border}`),borderRadius:"4px",backgroundColor:n.map(u=>u.background),display:"flex",alignItems:"center",justifyContent:"center",whiteSpace:"nowrap"},onmousedown:u=>{u.preventDefault()},onclick:u=>{this._onDidClick.fire(new Xh(ii(u),u))}},[r])}};IVe=ICo([HCt(3,Dl),HCt(4,nc)],IVe);const MCo=0,PCo=0,Nxe=1,FCo=1,NCo=3,Uxe=4;class UCo extends ft{constructor(t,n,r,o){super(),this._editor=t,this._edit=n,this._uiState=r,this._tabAction=o,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._display=Rt(this,l=>this._uiState.read(l)?"block":"none"),this._editorMaxContentWidthInRange=Rt(this,l=>{const d=this._originalDisplayRange.read(l);return d?(this._editorObs.versionId.read(l),vL(this,(u,h)=>{const g=y9(this._editorObs,d,u);return Math.max(g,h??0)})):ca(0)}).map((l,d)=>l.read(d)),this._maxPrefixTrim=Rt(this,l=>{const d=this._uiState.read(l);return d?Nnt(d.deletions,d.originalRange,[],this._editor):{prefixTrim:0,prefixLeftOffset:0}}),this._editorLayoutInfo=Rt(this,l=>{const d=this._edit.read(l);if(!d||!this._uiState.read(l))return null;const h=this._editorObs.layoutInfo.read(l),g=this._editorObs.scrollLeft.read(l),m=this._editorObs.getOption(59).map(w=>w.typicalHalfwidthCharacterWidth).read(l),v=h.contentLeft+Math.max(this._editorMaxContentWidthInRange.read(l),m)-g,f=d.originalLineRange,k=this._originalVerticalStartPosition.read(l)??this._editor.getTopForLineNumber(f.startLineNumber)-this._editorObs.scrollTop.read(l),A=this._originalVerticalEndPosition.read(l)??this._editor.getTopForLineNumber(f.endLineNumberExclusive)-this._editorObs.scrollTop.read(l),p=h.contentLeft+this._maxPrefixTrim.read(l).prefixLeftOffset-g;return v<=p?null:{codeRect:Vs.fromLeftTopRightBottom(p,k,v,A).withMargin(PCo,MCo),contentLeft:h.contentLeft}}).recomputeInitiallyAndOnChange(this._store),this._originalOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,l=>{const d=By(this._editorLayoutInfo).read(l);if(!d)return;const u=d.map(v=>Vs.fromLeftTopRightBottom(v.contentLeft-Uxe-Nxe,v.codeRect.top,v.contentLeft,v.codeRect.bottom)),h=Rt(this,v=>{const f=d.read(v).codeRect,k=u.read(v);return f.intersectHorizontal(new Xn(k.left,Number.MAX_SAFE_INTEGER))}),g=this._uiState.map(v=>v!=null&&v.inDiffEditor?NCo:FCo).read(l),m=h.map(v=>v.withMargin(g,g));return[cr.div({class:"originalSeparatorDeletion",style:{...m.read(l).toStyles(),borderRadius:`${Uxe}px`,border:`${Nxe+g}px solid ${en(Oc)}`,boxSizing:"border-box"}}),cr.div({class:"originalOverlayDeletion",style:{...h.read(l).toStyles(),borderRadius:`${Uxe}px`,border:j3e(this._tabAction).map(v=>`${Nxe}px solid ${en(v)}`),boxSizing:"border-box",backgroundColor:en(WZ)}}),cr.div({class:"originalOverlayHiderDeletion",style:{...u.read(l).toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._nonOverflowView=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[[this._originalOverlay]]).keepUpdated(this._store),this.isHovered=ca(!1),this._editorObs=hl(this._editor);const s=Rt(this,l=>{const d=this._edit.read(l);return d?new it(d.originalLineRange.startLineNumber,1):null}),a=Rt(this,l=>{const d=this._edit.read(l);return d?new it(d.originalLineRange.endLineNumberExclusive,1):null});this._originalDisplayRange=this._uiState.map(l=>l==null?void 0:l.originalRange),this._originalVerticalStartPosition=this._editorObs.observePosition(s,this._store).map(l=>l==null?void 0:l.y),this._originalVerticalEndPosition=this._editorObs.observePosition(a,this._store).map(l=>l==null?void 0:l.y),this._register(this._editorObs.createOverlayWidget({domNode:this._nonOverflowView.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,l=>{const d=this._editorLayoutInfo.read(l);return d===null?0:d.codeRect.width})}))}}var jCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},XCt=function(e,t){return function(n,r){t(n,r,e)}};const DX=1,WCo=1,VCo=3,jxe=4;let MVe=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._input=n,this._tabAction=r,this._languageService=s,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._state=Rt(this,a=>{const l=this._input.read(a);if(!l)return;const d=this._editor.getModel(),u=d.getEOL();if(l.startColumn===1&&l.lineNumber>1&&d.getLineLength(l.lineNumber)!==0&&l.text.endsWith(u)&&!l.text.startsWith(u)){const h=d.getLineLength(l.lineNumber-1)+1;return{lineNumber:l.lineNumber-1,column:h,text:u+l.text.slice(0,-u.length)}}return{lineNumber:l.lineNumber,column:l.startColumn,text:l.text}}),this._trimVertically=Rt(this,a=>{const l=this._state.read(a),d=l==null?void 0:l.text;if(!d||d.trim()==="")return{topOffset:0,bottomOffset:0,linesTop:0,linesBottom:0};const u=this._editor.getLineHeightForPosition(new it(l.lineNumber,1)),h=this._editor.getModel().getEOL();let g=0,m=0,v=0;for(;vv&&d.endsWith(h,f);f-=h.length)m+=1;return{topOffset:g*u,bottomOffset:m*u,linesTop:g,linesBottom:m}}),this._maxPrefixTrim=Rt(this,a=>{const l=this._state.read(a);if(!l)return{prefixLeftOffset:0,prefixTrim:0};const d=this._editor.getModel(),u=d.getEOL(),h=this._trimVertically.read(a),g=l.text.split(u),m=g.slice(h.linesTop,g.length-h.linesBottom);h.linesTop===0&&(m[0]=d.getLineContent(l.lineNumber)+m[0]);const v=new Ei(l.lineNumber,l.lineNumber+(h.linesTop>0?0:1));return Nnt([],v,m,this._editor)}),this._ghostText=Rt(a=>{const l=this._state.read(a),d=this._maxPrefixTrim.read(a);if(!l)return;const h=this._editor.getModel().getEOL(),m=l.text.split(h).map((v,f)=>new AD(new Ee(f+1,f===0?1:d.prefixTrim+1,f+1,v.length+1),"modified-background",0));return new nee(l.lineNumber,[new M0e(l.column,l.text,!1,m)])}),this._display=Rt(this,a=>this._state.read(a)?"block":"none"),this._editorMaxContentWidthInRange=Rt(this,a=>{const l=this._state.read(a);if(!l)return 0;this._editorObs.versionId.read(a);const d=this._editor.getModel(),u=d.getEOL(),h=l.text.startsWith(u)?"":d.getValueInRange(new Ee(l.lineNumber,1,l.lineNumber,l.column)),g=d.getValueInRange(new Ee(l.lineNumber,l.column,l.lineNumber,d.getLineLength(l.lineNumber)+1)),v=(h+l.text+g).split(u),f=o8.fromEditor(this._editor).withSetWidth(!1).withScrollBeyondLastColumn(0),k=v.map(A=>{var w;const p=(w=d.tokenization.tokenizeLinesAt(l.lineNumber,[A]))==null?void 0:w[0];let b;return p?b=e8.fromLineTokens(p).toLineTokens(A,this._languageService.languageIdCodec):b=uc.createEmpty(A,this._languageService.languageIdCodec),$ie(new Xie([b]),f,[],tn("div"),!0).minWidthInPx});return Math.max(...k)}),this.startLineOffset=this._trimVertically.map(a=>a.topOffset),this.originalLines=this._state.map(a=>a?new Ei(a.lineNumber,Math.min(a.lineNumber+2,this._editor.getModel().getLineCount()+1)):void 0),this._overlayLayout=Rt(this,a=>{this._ghostText.read(a);const l=this._state.read(a);if(!l)return null;this._editorObs.observePosition(Ti(this,new it(l.lineNumber,l.column)),a.store).read(a);const d=this._editorObs.layoutInfo.read(a),u=this._editorObs.scrollLeft.read(a),h=this._editorObs.layoutInfoVerticalScrollbarWidth.read(a),g=d.contentLeft+this._editorMaxContentWidthInRange.read(a)-u,m=this._maxPrefixTrim.read(a).prefixLeftOffset??0,v=d.contentLeft+m-u;if(g<=v)return null;const{topOffset:f,bottomOffset:k}=this._trimVertically.read(a),A=this._editorObs.scrollTop.read(a),p=this._ghostTextView.height.read(a)-f-k,b=this._editor.getTopForLineNumber(l.lineNumber)-A+f,w=b+p,O=new Vs(v,b,g,w);return{overlay:O,startsAtContentLeft:m===0,contentLeft:d.contentLeft,minContentWidthRequired:m+O.width+h}}).recomputeInitiallyAndOnChange(this._store),this._modifiedOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,a=>{const l=By(this._overlayLayout).read(a);if(!l)return;const d=l.map(m=>Vs.fromLeftTopRightBottom(m.contentLeft-jxe-DX,m.overlay.top,m.contentLeft,m.overlay.bottom)).read(a),u=this._input.map(m=>m!=null&&m.inDiffEditor?VCo:WCo).read(a),h=l.map(m=>m.overlay.withMargin(0,DX,0,m.startsAtContentLeft?0:DX).intersectHorizontal(new Xn(d.left,Number.MAX_SAFE_INTEGER))),g=h.map(m=>m.withMargin(u,u));return[cr.div({class:"originalUnderlayInsertion",style:{...g.read(a).toStyles(),borderRadius:jxe,border:`${DX+u}px solid ${en(Oc)}`,boxSizing:"border-box"}}),cr.div({class:"originalOverlayInsertion",style:{...h.read(a).toStyles(),borderRadius:jxe,border:see(this._tabAction).map(m=>`${DX}px solid ${en(m)}`),boxSizing:"border-box",backgroundColor:en(vIn)}}),cr.div({class:"originalOverlayHiderInsertion",style:{...d.toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._view=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[[this._modifiedOverlay]]).keepUpdated(this._store),this._editorObs=hl(this._editor),this._ghostTextView=this._register(o.createInstance(ree,this._editor,{ghostText:this._ghostText,minReservedLineCount:ca(0),targetTextModel:this._editorObs.model.map(a=>a??void 0),warning:ca(void 0),handleInlineCompletionShown:ca(()=>{})},Ti(this,{syntaxHighlightingEnabled:!0,extraClasses:["inline-edit"]}),!0,!0)),this.isHovered=this._ghostTextView.isHovered,this._register(this._ghostTextView.onDidClick(a=>{this._onDidClick.fire(a)})),this._register(this._editorObs.createOverlayWidget({domNode:this._view.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,a=>{const l=this._overlayLayout.read(a);return l===null?0:l.minContentWidthRequired})}))}};MVe=jCo([XCt(3,Yn),XCt(4,nc)],MVe);var zCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},GCt=function(e,t){return function(n,r){t(n,r,e)}};let PVe=class extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._edit=n,this._isInDiffEditor=r,this._tabAction=o,this._languageService=s,this._themeService=a,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._maxPrefixTrim=this._edit.map((l,d)=>l?Nnt(l.replacements.flatMap(u=>[u.originalRange,u.modifiedRange]),l.originalRange,l.modifiedLines,this._editor.editor,d):void 0),this._modifiedLineElements=Rt(this,l=>{var A;const d=[];let u=0;const h=this._maxPrefixTrim.read(l),g=this._edit.read(l);if(!g||!h)return;const m=h.prefixTrim,v=HCo(g.replacements.map(p=>p.modifiedRange)).map(p=>new Ee(p.startLineNumber,p.startColumn-m,p.endLineNumber,p.endColumn-m)),f=this._editor.model.get(),k=g.modifiedRange.startLineNumber;for(let p=0;pE.startLineNumber===w)){const E=Math.min(L.endColumn,O.length+1);_.push(new AD(new Ee(1,L.startColumn,1,E),"inlineCompletions-modified-bubble",0))}const S=$ie(new Xie([C]),o8.fromEditor(this._editor.editor).withSetWidth(!1).withScrollBeyondLastColumn(0),_,b,!0);this._editor.getOption(59).read(l),u=Math.max(u,S.minWidthInPx),d.push(b)}return{lines:d,requiredWidth:u}}),this._layout=Rt(this,l=>{const d=this._modifiedLineElements.read(l),u=this._maxPrefixTrim.read(l),h=this._edit.read(l);if(!d||!u||!h)return;const{prefixLeftOffset:g}=u,{requiredWidth:m}=d,v=this._editor.observeLineHeightsForLineRange(h.originalRange).read(l),f=(()=>{const B=v.slice(0,h.modifiedRange.length);for(;B.lengththis._editor.editor.getOffsetForColumn(B,O.getLineMaxColumn(B))-g),C=Math.max(...y,m),_=h.originalRange.startLineNumber,S=h.originalRange.endLineNumberExclusive-1,L=this._editor.editor.getTopForLineNumber(_)-b,E=this._editor.editor.getBottomForLineNumber(S)-b,T=Vs.fromLeftTopWidthHeight(w+g,L,C,E-L),D=Vs.fromLeftTopWidthHeight(T.left,T.bottom,T.width,f.reduce((B,R)=>B+R,0)),P=Vs.hull([T,D]),Q=P.intersectVertical(new Xn(T.bottom,Number.MAX_SAFE_INTEGER)),M=new Vs(Q.left,Q.top,Q.right,Q.bottom);return{originalLinesOverlay:T,modifiedLinesOverlay:D,background:P,lowerBackground:Q,lowerText:M,modifiedLineHeights:f,minContentWidthRequired:g+C+A}}),this._viewZoneInfo=Rt(l=>{if(!this._editor.getOption(71).map(v=>v.edits.allowCodeShifting==="always").read(l))return;const u=this._layout.read(l),h=this._edit.read(l);if(!u||!h)return;const g=u.lowerBackground.height,m=h.originalRange.endLineNumberExclusive;return{height:g,lineNumber:m}}),this.minEditorScrollHeight=Rt(this,l=>{const d=By(this._layout).read(l);return!d||this._viewZoneInfo.read(l)!==void 0?0:d.read(l).lowerText.bottom+this._editor.editor.getScrollTop()}),this._div=cr.div({class:"line-replacement"},[Rt(this,l=>{const d=By(this._layout).read(l),u=this._modifiedLineElements.read(l);if(!d||!u)return[];const h=d.read(l),g=this._editor.layoutInfoContentLeft.read(l),m=this._isInDiffEditor.read(l)?3:1;u.lines.forEach((k,A)=>{k.style.width=`${h.lowerText.width}px`,k.style.height=`${h.modifiedLineHeights[A]}px`,k.style.position="relative"});const v=see(this._tabAction).read(l),f=j3e(this._tabAction).read(l);return[cr.div({style:{position:"absolute",...Pv(k=>jnt(this._editor).read(k)),overflow:"hidden",pointerEvents:"none"}},[cr.div({class:"borderAroundLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).background.translateX(-g).withMargin(m)),borderRadius:"4px",border:`${m+1}px solid ${en(Oc)}`,boxSizing:"border-box",pointerEvents:"none"}}),cr.div({class:"originalOverlayLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).background.translateX(-g)),borderRadius:"4px",border:gv(f,this._themeService).map(k=>`1px solid ${k.toString()}`),pointerEvents:"none",boxSizing:"border-box",background:en(WZ)}}),cr.div({class:"modifiedOverlayLineReplacement",style:{position:"absolute",...Pv(k=>d.read(k).lowerBackground.translateX(-g)),borderRadius:"0 0 4px 4px",background:en(Oc),boxShadow:`${en(zbe)} 0 6px 6px -6px`,border:`1px solid ${en(v)}`,boxSizing:"border-box",overflow:"hidden",cursor:"pointer",pointerEvents:"auto"},onmousedown:k=>{k.preventDefault()},onclick:k=>this._onDidClick.fire(new Xh(ii(k),k))},[cr.div({style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",background:en(hCo)}})]),cr.div({class:"modifiedLinesLineReplacement",style:{position:"absolute",boxSizing:"border-box",...Pv(k=>d.read(k).lowerText.translateX(-g)),fontFamily:this._editor.getOption(58),fontSize:this._editor.getOption(61),fontWeight:this._editor.getOption(62),pointerEvents:"none",whiteSpace:"nowrap",borderRadius:"0 0 4px 4px",overflow:"hidden"}},[...u.lines])])]})]).keepUpdated(this._store),this.isHovered=this._editor.isTargetHovered(l=>this._isMouseOverWidget(l),this._store),this._previousViewZoneInfo=void 0,this._register(Hn(()=>this._editor.editor.changeViewZones(l=>this.removePreviousViewZone(l)))),this._register(Oto(this._viewZoneInfo,({lastValue:l,newValue:d})=>{l===d||(l==null?void 0:l.height)===(d==null?void 0:d.height)&&(l==null?void 0:l.lineNumber)===(d==null?void 0:d.lineNumber)||this._editor.editor.changeViewZones(u=>{this.removePreviousViewZone(u),d&&this.addViewZone(d,u)})})),this._register(this._editor.createOverlayWidget({domNode:this._div.element,minContentWidthInPx:Rt(this,l=>{var d;return((d=this._layout.read(l))==null?void 0:d.minContentWidthRequired)??0}),position:ca({preference:{top:0,left:0}}),allowEditorOverflow:!1}))}_isMouseOverWidget(t){const n=this._layout.get();return!n||!(t.event instanceof U8)?!1:n.lowerBackground.containsPoint(new cu(t.event.relativePos.x,t.event.relativePos.y))}removePreviousViewZone(t){if(!this._previousViewZoneInfo)return;t.removeZone(this._previousViewZoneInfo.id);const n=this._editor.cursorLineNumber.get();n!==null&&n>=this._previousViewZoneInfo.lineNumber&&this._editor.editor.setScrollTop(this._editor.scrollTop.get()-this._previousViewZoneInfo.height),this._previousViewZoneInfo=void 0}addViewZone(t,n){const r=n.addZone({afterLineNumber:t.lineNumber-1,heightInPx:t.height,domNode:tn("div")});this._previousViewZoneInfo={height:t.height,lineNumber:t.lineNumber,id:r};const o=this._editor.cursorLineNumber.get();o!==null&&o>=t.lineNumber&&this._editor.editor.setScrollTop(this._editor.scrollTop.get()+t.height)}};PVe=zCo([GCt(4,nc),GCt(5,Dl)],PVe);function HCo(e){const t=[];for(;e.length;){let n=e.shift();n.startLineNumber!==n.endLineNumber&&(e.push(new Ee(n.startLineNumber+1,1,n.endLineNumber,n.endColumn)),n=new Ee(n.startLineNumber,n.startColumn,n.startLineNumber,Number.MAX_SAFE_INTEGER)),t.push(n)}return t}var $Co=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},YCt=function(e,t){return function(n,r){t(n,r,e)}};const FP=0,BX=0,Gp=1,XCo=1,GCo=3,qC=4,Wxe=20,ZCt=12;let X0e=class extends ft{static fitsInsideViewport(t,n,r,o){const s=hl(t),a=s.layoutInfoWidth.read(o),l=s.layoutInfoContentLeft.read(o),d=t.getLayoutInfo().verticalScrollbarWidth,u=s.layoutInfoMinimap.read(o).minimapLeft!==0?s.layoutInfoMinimap.read(o).minimapWidth:0,h=y9(s,r.displayRange,void 0),g=r.lineEdit.newLines.reduce((f,k)=>Math.max(f,Unt(k,t,n)),0),m=Wxe,v=ZCt+2*Gp;return h+g+m+vthis._uiState.read(u)?"block":"none"),this.previewRef=cr.ref();const d=this._uiState.map(u=>u!=null&&u.isInDiffEditor?GCo:XCo);this._editorContainer=cr.div({class:["editorContainer"],style:{position:"absolute",overflow:"hidden",cursor:"pointer"},onmousedown:u=>{u.preventDefault()},onclick:u=>{this._onDidClick.fire(new Xh(ii(u),u))}},[cr.div({class:"preview",style:{pointerEvents:"none"},ref:this.previewRef})]).keepUpdated(this._store),this.isHovered=this._editorContainer.didMouseMoveDuringHover,this.previewEditor=this._register(this._instantiationService.createInstance(X8,this.previewRef.element,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},rulers:[],padding:{top:0,bottom:0},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,revealHorizontalRightPadding:0,bracketPairColorization:{enabled:!0,independentColorPoolPerBracketType:!1},scrollBeyondLastLine:!1,scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1},readOnly:!0,wordWrap:"off",wordWrapOverride1:"off",wordWrapOverride2:"off"},{contextKeyValues:{[Ns.inInlineEditsPreviewEditor.key]:!0},contributions:[]},this._editor)),this._previewEditorObs=hl(this.previewEditor),this._activeViewZones=[],this._updatePreviewEditor=Rt(this,u=>{this._editorContainer.readEffect(u),this._previewEditorObs.model.read(u),this._display.read(u),this._nonOverflowView&&(this._nonOverflowView.element.style.display=this._display.read(u));const h=this._uiState.read(u),g=this._edit.read(u);if(!h||!g)return;const m=g.originalLineRange,v=[];m.startLineNumber>1&&v.push(new Ee(1,1,m.startLineNumber-1,1)),m.startLineNumber+h.newTextLineCount{f.forEach(p=>A.removeZone(p)),k>0&&this._activeViewZones.push(A.addZone({afterLineNumber:m.startLineNumber+h.newTextLineCount-1,heightInLines:k,showInHiddenAreas:!0,domNode:tn("div.diagonal-fill.inline-edits-view-zone")}))})}),this._previewEditorWidth=Rt(this,u=>{const h=this._edit.read(u);return h?(this._updatePreviewEditor.read(u),y9(this._previewEditorObs,h.modifiedLineRange,u)):0}),this._cursorPosIfTouchesEdit=Rt(this,u=>{const h=this._editorObs.cursorPosition.read(u),g=this._edit.read(u);if(!(!g||!h))return g.modifiedLineRange.contains(h.lineNumber)?h:void 0}),this._originalStartPosition=Rt(this,u=>{const h=this._edit.read(u);return h?new it(h.originalLineRange.startLineNumber,1):null}),this._originalEndPosition=Rt(this,u=>{const h=this._edit.read(u);return h?new it(h.originalLineRange.endLineNumberExclusive,1):null}),this._originalVerticalStartPosition=this._editorObs.observePosition(this._originalStartPosition,this._store).map(u=>u==null?void 0:u.y),this._originalVerticalEndPosition=this._editorObs.observePosition(this._originalEndPosition,this._store).map(u=>u==null?void 0:u.y),this._originalDisplayRange=this._edit.map(u=>u==null?void 0:u.displayRange),this._editorMaxContentWidthInRange=Rt(this,u=>{const h=this._originalDisplayRange.read(u);return h?(this._editorObs.versionId.read(u),vL(this,(g,m)=>{const v=y9(this._editorObs,h,g);return Math.max(v,m??0)})):ca(0)}).map((u,h)=>u.read(h)),this._previewEditorLayoutInfo=Rt(this,u=>{const h=this._edit.read(u);if(!h||!this._uiState.read(u))return null;const m=h.originalLineRange,v=this._editorObs.scrollLeft.read(u),f=this._editorMaxContentWidthInRange.read(u),k=this._editorObs.layoutInfo.read(u),A=this._previewEditorWidth.read(u),p=k.contentWidth-k.verticalScrollbarWidth,b=this._editor.getContainerDomNode().getBoundingClientRect(),w=k.contentLeft+k.contentWidth+b.left,O=ii(this._editor.getContainerDomNode()).innerWidth-w,y=ii(this._editor.getContainerDomNode()).innerWidth-b.right,C=Math.min(k.contentWidth*.3,A,100),_=0,S=_+O,L=this._cursorPosIfTouchesEdit.read(u),E=Math.max(p+v-_-Math.max(0,C-S),Math.min(L?bCo(this._editorObs,L,u)+50:0,p+v)),T=Math.min(f+Wxe,E),D=f+Wxe+A+70,P=E-T;let Q,M;T>v?(Q=0,M=k.contentLeft+T-v):(Q=v-T,M=k.contentLeft);const B=this._originalVerticalStartPosition.read(u)??this._editor.getTopForLineNumber(m.startLineNumber)-this._editorObs.scrollTop.read(u),R=this._originalVerticalEndPosition.read(u)??this._editor.getBottomForLineNumber(m.endLineNumberExclusive-1)-this._editorObs.scrollTop.read(u),I=k.contentLeft-v;let F=Vs.fromLeftTopRightBottom(I,B,M,R);const j=F.height===0;j||(F=F.withMargin(BX,FP));const H=this._previewEditorObs.observeLineHeightsForLineRange(h.modifiedLineRange).read(u).reduce((se,le)=>se+le,0),$=R-B,G=Math.max($,H),q=P===0,re=0,J=Math.min(A+ZCt,y+k.width-k.contentLeft-re);let oe=Vs.fromLeftTopWidthHeight(F.right+re,B,J,G);return j?oe=oe.withMargin(BX,FP).translateY(BX):oe=oe.withMargin(BX,FP).translateX(FP+Gp),{codeRect:F,editRect:oe,codeScrollLeft:v,contentLeft:k.contentLeft,isInsertion:j,maxContentWidth:D,shouldShowShadow:q,desiredPreviewEditorScrollLeft:Q,previewEditorWidth:J}}),this._stickyScrollController=fp.get(this._editorObs.editor),this._stickyScrollHeight=this._stickyScrollController?Ko(this._stickyScrollController.onDidChangeStickyScrollHeight,()=>this._stickyScrollController.stickyScrollWidgetHeight):ca(0),this._shouldOverflow=Rt(this,u=>!1),this._originalBackgroundColor=Ko(this,this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme().getColor(WZ)??Dt.transparent),this._backgroundSvg=cr.svg({transform:"translate(-0.5 -0.5)",style:{overflow:"visible",pointerEvents:"none",position:"absolute"}},[cr.svgElem("path",{class:"rightOfModifiedBackgroundCoverUp",d:Rt(this,u=>{const h=this._previewEditorLayoutInfo.read(u);if(!(!h||this._originalBackgroundColor.read(u).isTransparent()))return new TVe().moveTo(h.codeRect.getRightTop()).lineTo(h.codeRect.getRightTop().deltaX(1e3)).lineTo(h.codeRect.getRightBottom().deltaX(1e3)).lineTo(h.codeRect.getRightBottom()).build()}),style:{fill:A7n(Oc,"transparent")}})]).keepUpdated(this._store),this._originalOverlay=cr.div({style:{pointerEvents:"none",display:this._previewEditorLayoutInfo.map(u=>u!=null&&u.isInsertion?"none":"block")}},Rt(this,u=>{const h=By(this._previewEditorLayoutInfo).read(u);if(!h)return;const g=d.read(u),m=j3e(this._tabAction).map(C=>`${Gp}px solid ${en(C)}`),v=`${Gp+g}px solid ${en(Oc)}`,f=h.read(u).codeScrollLeft!==0,k=h.map(C=>C.codeRect.bottomVs.fromLeftTopRightBottom(C.contentLeft-qC-Gp,C.codeRect.top,C.contentLeft,C.codeRect.bottom+A)).read(u),b=new Xn(p.left,Number.MAX_SAFE_INTEGER),w=h.map(C=>C.codeRect.intersectHorizontal(b)),O=w.map(C=>C.withMargin(g,0,g,g).intersectHorizontal(b)),y=w.map(C=>Vs.fromLeftTopWidthHeight(C.right-A+Gp,C.bottom-Gp,A,A).intersectHorizontal(b));return[cr.div({class:"originalSeparatorSideBySide",style:{...O.read(u).toStyles(),boxSizing:"border-box",borderRadius:`${qC}px 0 0 ${qC}px`,borderTop:v,borderBottom:v,borderLeft:f?"none":v}}),cr.div({class:"originalOverlaySideBySide",style:{...w.read(u).toStyles(),boxSizing:"border-box",borderRadius:`${qC}px 0 0 ${qC}px`,borderTop:m,borderBottom:m,borderLeft:f?"none":m,backgroundColor:en(WZ)}}),cr.div({class:"originalCornerCutoutSideBySide",style:{pointerEvents:"none",display:k.map(C=>C?"block":"none"),...y.read(u).toStyles()}},[cr.div({class:"originalCornerCutoutBackground",style:{position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%",backgroundColor:gv(WZ,this._themeService).map(C=>C.toString())}}),cr.div({class:"originalCornerCutoutBorder",style:{position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%",boxSizing:"border-box",borderTop:m,borderRight:m,borderRadius:"0 100% 0 0",backgroundColor:en(Oc)}})]),cr.div({class:"originalOverlaySideBySideHider",style:{...p.toStyles(),backgroundColor:en(Oc)}})]})).keepUpdated(this._store),this._modifiedOverlay=cr.div({style:{pointerEvents:"none"}},Rt(this,u=>{const h=By(this._previewEditorLayoutInfo).read(u);if(!h)return;const g=h.map(w=>w.codeRect.bottom`0 ${qC}px ${qC}px ${w?qC:0}px`),f=gv(see(this._tabAction),this._themeService).map(w=>`1px solid ${w.toString()}`),k=`${Gp+m}px solid ${en(Oc)}`,A=h.map(w=>w.editRect.withMargin(0,Gp)),p=A.map(w=>w.withMargin(m,m,m,0)),b=Rt(this,w=>{const O=A.read(w),y=h.read(w);return!y.isInsertion||y.contentLeft>=O.left?Vs.fromLeftTopWidthHeight(O.left,O.top,0,0):new Vs(y.contentLeft,O.top,O.left,O.top+Gp*2)});return[cr.div({class:"modifiedInsertionSideBySide",style:{...b.read(u).toStyles(),backgroundColor:see(this._tabAction).map(w=>en(w))}}),cr.div({class:"modifiedSeparatorSideBySide",style:{...p.read(u).toStyles(),borderRadius:v,borderTop:k,borderBottom:k,borderRight:k,boxSizing:"border-box"}}),cr.div({class:"modifiedOverlaySideBySide",style:{...A.read(u).toStyles(),borderRadius:v,border:f,boxSizing:"border-box",backgroundColor:en(vIn)}})]})).keepUpdated(this._store),this._nonOverflowView=cr.div({class:"inline-edits-view",style:{position:"absolute",overflow:"visible",top:"0px",left:"0px",display:this._display}},[this._backgroundSvg,Rt(this,u=>this._shouldOverflow.read(u)?[]:[this._editorContainer,this._originalOverlay,this._modifiedOverlay])]).keepUpdated(this._store),this._register(this._editorObs.createOverlayWidget({domNode:this._nonOverflowView.element,position:ca(null),allowEditorOverflow:!1,minContentWidthInPx:Rt(this,u=>{var g;const h=(g=this._previewEditorLayoutInfo.read(u))==null?void 0:g.maxContentWidth;return h===void 0?0:h})})),this.previewEditor.setModel(this._previewTextModel),this._register(Oi(u=>{const h=this._previewEditorLayoutInfo.read(u);if(!h)return;const g=h.editRect.withMargin(-BX,-FP);this.previewEditor.layout({height:g.height,width:h.previewEditorWidth+15}),this._editorContainer.element.style.top=`${g.top}px`,this._editorContainer.element.style.left=`${g.left}px`,this._editorContainer.element.style.width=`${h.previewEditorWidth+FP}px`})),this._register(Oi(u=>{const h=this._previewEditorLayoutInfo.read(u);h&&this._previewEditorObs.editor.setScrollLeft(h.desiredPreviewEditorScrollLeft)})),this._updatePreviewEditor.recomputeInitiallyAndOnChange(this._store)}};X0e=$Co([YCt(5,Yn),YCt(6,Dl)],X0e);var YCo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},ZCo=function(e,t){return function(n,r){t(n,r,e)}};const KC=1;var Xj;let SN=(Xj=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._edit=n,this._tabAction=r,this._languageService=o,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this._start=this._editor.observePosition(ca(this._edit.range.getStartPosition()),this._store),this._end=this._editor.observePosition(ca(this._edit.range.getEndPosition()),this._store),this._line=document.createElement("div"),this._hoverableElement=Ti(this,null),this.isHovered=this._hoverableElement.map((a,l)=>(a==null?void 0:a.didMouseMoveDuringHover.read(l))??!1),this._renderTextEffect=Rt(this,a=>{var f;const l=this._editor.model.get(),d=l.getLineContent(this._edit.range.startLineNumber),u=ch.replace(new Xn(this._edit.range.startColumn-1,this._edit.range.endColumn-1),this._edit.text),h=u.replace(d),g=(f=l.tokenization.tokenizeLinesAt(this._edit.range.startLineNumber,[h]))==null?void 0:f[0];let m;g?m=e8.fromLineTokens(g).slice(u.getRangeAfterReplace()).toLineTokens(this._edit.text,this._languageService.languageIdCodec):m=uc.createEmpty(this._edit.text,this._languageService.languageIdCodec);const v=$ie(new Xie([m]),o8.fromEditor(this._editor.editor).withSetWidth(!1).withScrollBeyondLastColumn(0),[],this._line,!0);this._line.style.width=`${v.minWidthInPx}px`});const s=this._editor.observeLineHeightForPosition(this._edit.range.getStartPosition());this._layout=Rt(this,a=>{this._renderTextEffect.read(a);const l=this._start.read(a),d=this._end.read(a);if(!l||!d||l.x>d.x||l.y>d.y)return;const u=s.read(a),h=this._editor.scrollLeft.read(a),g=this._editor.getOption(59).read(a).typicalHalfwidthCharacterWidth,m=3*g,v=4,f=new cu(m,v),k=Vs.fromPoints(l,d).withHeight(u).translateX(-h),A=Vs.fromPointSize(k.getLeftBottom().add(f),new cu(this._edit.text.length*g,k.height)),p=A.withLeft(k.left);return{originalLine:k,modifiedLine:A,lowerBackground:p,lineHeight:u}}),this.minEditorScrollHeight=Rt(this,a=>{const l=By(this._layout).read(a);return l?l.read(a).modifiedLine.bottom+KC+this._editor.editor.getScrollTop():0}),this._root=cr.div({class:"word-replacement"},[Rt(this,a=>{const l=By(this._layout).read(a);if(!l)return[];const d=j3e(this._tabAction).map(h=>en(h)).read(a),u=see(this._tabAction).map(h=>en(h)).read(a);return[cr.div({style:{position:"absolute",...Pv(h=>jnt(this._editor).read(h)),overflow:"hidden",pointerEvents:"none"}},[cr.div({style:{position:"absolute",...Pv(h=>l.read(h).lowerBackground.withMargin(KC,2*KC,KC,0)),background:en(Oc),cursor:"pointer",pointerEvents:"auto"},onmousedown:h=>{h.preventDefault()},onmouseup:h=>this._onDidClick.fire(new Xh(ii(h),h)),obsRef:h=>{this._hoverableElement.set(h,void 0)}}),cr.div({style:{position:"absolute",...Pv(h=>l.read(h).modifiedLine.withMargin(KC,2*KC)),fontFamily:this._editor.getOption(58),fontSize:this._editor.getOption(61),fontWeight:this._editor.getOption(62),pointerEvents:"none",boxSizing:"border-box",borderRadius:"4px",border:`${KC}px solid ${u}`,background:en(fCo),display:"flex",justifyContent:"center",alignItems:"center",outline:`2px solid ${en(Oc)}`}},[this._line]),cr.div({style:{position:"absolute",...Pv(h=>l.read(h).originalLine.withMargin(KC)),boxSizing:"border-box",borderRadius:"4px",border:`${KC}px solid ${d}`,background:en(uCo),pointerEvents:"none"}},[]),cr.svg({width:11,height:14,viewBox:"0 0 11 14",fill:"none",style:{position:"absolute",left:l.map(h=>h.modifiedLine.left-16),top:l.map(h=>h.modifiedLine.top+Math.round((h.lineHeight-14-5)/2))}},[cr.svgElem("path",{d:"M1 0C1 2.98966 1 5.92087 1 8.49952C1 9.60409 1.89543 10.5 3 10.5H10.5",stroke:en(c3t)}),cr.svgElem("path",{d:"M6 7.5L9.99999 10.49998L6 13.5",stroke:en(c3t)})])])]})]).keepUpdated(this._store),this._register(this._editor.createOverlayWidget({domNode:this._root.element,minContentWidthInPx:ca(0),position:ca({preference:{top:0,left:0}}),allowEditorOverflow:!1}))}},Xj.MAX_LENGTH=100,Xj);SN=YCo([ZCo(3,nc)],SN);class qCo extends ft{constructor(t,n,r){super(),this._originalEditor=t,this._state=n,this._modifiedTextModel=r,this._onDidClick=this._register(new at),this.onDidClick=this._onDidClick.event,this.isHovered=hl(this._originalEditor).isTargetHovered(s=>{var a;return s.target.type===6&&((a=s.target.detail.injectedText)==null?void 0:a.options.attachedData)instanceof Vxe&&s.target.detail.injectedText.options.attachedData.owner===this},this._store),this._tokenizationFinished=e_o(this._modifiedTextModel),this._decorations=Rt(this,s=>{var C,_;const a=this._state.read(s);if(!a)return;const l=a.modifiedText,d=a.mode==="insertionInline",u=a.diff.length===1&&((C=a.diff[0].innerChanges)==null?void 0:C.length)===1,h=!0,g=[],m=[],v=Gi.register({className:"inlineCompletions-line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),f=Gi.register({className:"inlineCompletions-line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),k=Gi.register({className:"inlineCompletions-char-delete",description:"char-delete",isWholeLine:!1,zIndex:1}),A=Gi.register({className:"inlineCompletions-char-insert",description:"char-insert",isWholeLine:!0}),p=Gi.register({className:"inlineCompletions-char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),b=Gi.register({className:"inlineCompletions-char-insert diff-range-empty",description:"char-insert diff-range-empty"}),w=Gi.register({className:"inlineCompletions-original-lines",description:"inlineCompletions-original-lines",isWholeLine:!1,shouldFillLineOnLineBreak:!0}),O=a.mode!=="sideBySide"&&a.mode!=="deletion"&&a.mode!=="insertionInline"&&a.mode!=="lineReplacement",y=a.mode==="lineReplacement";for(const S of a.diff)if(O&&(S.original.isEmpty||g.push({range:S.original.toInclusiveRange(),options:f}),S.modified.isEmpty||m.push({range:S.modified.toInclusiveRange(),options:v})),S.modified.isEmpty||S.original.isEmpty)S.original.isEmpty||g.push({range:S.original.toInclusiveRange(),options:k}),S.modified.isEmpty||m.push({range:S.modified.toInclusiveRange(),options:A});else{const L=d&&KCo(S);for(const E of S.innerChanges||[]){if(S.original.contains(E.originalRange.startLineNumber)&&!(y&&E.originalRange.isEmpty())){const T=(_=this._originalEditor.getModel())==null?void 0:_.getValueInRange(E.originalRange,1);g.push({range:E.originalRange,options:{description:"char-delete",shouldFillLineOnLineBreak:!1,className:Mxe("inlineCompletions-char-delete",E.originalRange.isSingleLine()&&a.mode==="insertionInline"&&"single-line-inline",E.originalRange.isEmpty()&&"empty",(E.originalRange.isEmpty()&&u||a.mode==="deletion"&&T===` `)&&h&&!L&&"diff-range-empty"),inlineClassName:L?Mxe("strike-through","inlineCompletions"):null,zIndex:1}})}if(S.modified.contains(E.modifiedRange.startLineNumber)&&m.push({range:E.modifiedRange,options:E.modifiedRange.isEmpty()&&h&&!L&&u?b:p}),L){const T=l.getValueOfRange(E.modifiedRange),D=T.length>3?[{text:T.slice(0,1),extraClasses:["start"],offsetRange:new Xn(E.modifiedRange.startColumn-1,E.modifiedRange.startColumn)},{text:T.slice(1,-1),extraClasses:[],offsetRange:new Xn(E.modifiedRange.startColumn,E.modifiedRange.endColumn-2)},{text:T.slice(-1),extraClasses:["end"],offsetRange:new Xn(E.modifiedRange.endColumn-2,E.modifiedRange.endColumn-1)}]:[{text:T,extraClasses:["start","end"],offsetRange:new Xn(E.modifiedRange.startColumn-1,E.modifiedRange.endColumn)}];this._tokenizationFinished.read(s);const P=this._modifiedTextModel.tokenization.getLineTokens(E.modifiedRange.startLineNumber);for(const{text:Q,extraClasses:M,offsetRange:B}of D)g.push({range:Ee.fromPositions(E.originalRange.getEndPosition()),options:{description:"inserted-text",before:{tokens:P.getTokensInRange(B),content:Q,inlineClassName:Mxe("inlineCompletions-char-insert",E.modifiedRange.isSingleLine()&&a.mode==="insertionInline"&&"single-line-inline",...M),cursorStops:Bv.None,attachedData:new Vxe(this)},zIndex:2,showIfCollapsed:!0}})}}}if(a.isInDiffEditor)for(const S of a.diff)S.original.isEmpty||g.push({range:S.original.toExclusiveRange(),options:w});return{originalDecorations:g,modifiedDecorations:m}}),this._register(hl(this._originalEditor).setDecorations(this._decorations.map(s=>(s==null?void 0:s.originalDecorations)??[])));const o=this._state.map(s=>s==null?void 0:s.modifiedCodeEditor);this._register(Ef((s,a)=>{const l=o.read(s);l&&a.add(hl(l).setDecorations(this._decorations.map(d=>(d==null?void 0:d.modifiedDecorations)??[])))})),this._register(this._originalEditor.onMouseUp(s=>{var l;if(s.target.type!==6)return;const a=(l=s.target.detail.injectedText)==null?void 0:l.options.attachedData;a instanceof Vxe&&a.owner===this&&this._onDidClick.fire(s.event)}))}}class Vxe{constructor(t){this.owner=t}}function KCo(e){return e.innerChanges?e.innerChanges.every(t=>E1e(t.modifiedRange)&&E1e(t.originalRange)):!1}let JCo=0;function e_o(e){return Ko(e.onDidChangeTokens,()=>JCo++)}var t_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},n_o=function(e,t){return function(n,r){t(n,r,e)}};let FVe=class extends ft{constructor(t,n,r,o,s,a){super(),this._editor=t,this._host=n,this._model=r,this._ghostTextIndicator=o,this._focusIsInMenu=s,this._instantiationService=a,this._editorObs=hl(this._editor),this._tabAction=Rt(h=>{var g;return((g=this._model.read(h))==null?void 0:g.tabAction.read(h))??wf.Inactive}),this._constructorDone=Ti(this,!1),this._uiState=Rt(this,h=>{var b,w;const g=this._model.read(h);if(!g||!this._constructorDone.read(h))return;const m=g.inlineEdit;let v=im.fromEdit(m.edit),f=m.edit.apply(m.originalText),k=L1e(v,m.originalText,new g9(f)),A=this.determineRenderState(g,h,k,new g9(f));if(!A){zi(new Error(`unable to determine view: tried to render ${(b=this._previousView)==null?void 0:b.view}`));return}if(A.kind===Yo.SideBySide){const O=_Co(f,m.modifiedLineRange,d.getOptions().tabSize);f=O.applyToString(f),v=wCo(v,O),k=L1e(v,m.originalText,new g9(f))}return this._previewTextModel.setLanguage(this._editor.getModel().getLanguageId()),this._previewTextModel.getValue()!==f&&this._previewTextModel.setValue(f),g.showCollapsed.read(h)&&!((w=this._indicator.read(h))!=null&&w.isHoverVisible.read(h))&&(A={kind:Yo.Collapsed,viewData:A.viewData}),g.handleInlineEditShown(A.kind,A.viewData),{state:A,diff:k,edit:m,newText:f,newTextLineCount:m.modifiedLineRange.length,isInDiffEditor:g.isInDiffEditor}}),this._previewTextModel=this._register(this._instantiationService.createInstance(fR,"",this._editor.getModel().getLanguageId(),{...fR.DEFAULT_CREATION_OPTIONS,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}},null)),this._indicatorCyclicDependencyCircuitBreaker=Ti(this,!1),this._indicator=Rt(this,h=>{if(!this._indicatorCyclicDependencyCircuitBreaker.read(h))return;const g=Vh({owner:this,equalsFn:oQ(zJe())},v=>{var A,p,b;const f=this._ghostTextIndicator.read(v);if(f)return f.lineRange;const k=this._uiState.read(v);if(k){if(((A=k.state)==null?void 0:A.kind)==="custom"){const w=(p=k.state.displayLocation)==null?void 0:p.range;if(!w)throw new ui("custom view should have a range");return new Ei(w.startLineNumber,w.endLineNumber)}return((b=k.state)==null?void 0:b.kind)==="insertionMultiLine"?this._insertion.originalLines.read(v):k.edit.displayRange}}),m=Rt(this,v=>{const f=this._model.read(v);if(f)return f;const k=this._ghostTextIndicator.read(v);return k?k.model:f});return h.store.add(this._instantiationService.createInstance(DVe,this._editorObs,g,this._gutterIndicatorOffset,m,this._inlineEditsIsHovered,this._focusIsInMenu))}),this._inlineEditsIsHovered=Rt(this,h=>this._sideBySide.isHovered.read(h)||this._wordReplacementViews.read(h).some(g=>g.isHovered.read(h))||this._deletion.isHovered.read(h)||this._inlineDiffView.isHovered.read(h)||this._lineReplacementView.isHovered.read(h)||this._insertion.isHovered.read(h)||this._customView.isHovered.read(h)),this._gutterIndicatorOffset=Rt(this,h=>{var m,v;if(((v=(m=this._uiState.read(h))==null?void 0:m.state)==null?void 0:v.kind)==="insertionMultiLine")return this._insertion.startLineOffset.read(h);const g=this._ghostTextIndicator.read(h);return g?o_o(g,this._editor):0}),this._sideBySide=this._register(this._instantiationService.createInstance(X0e,this._editor,this._model.map(h=>h==null?void 0:h.inlineEdit),this._previewTextModel,this._uiState.map(h=>{var g;return h&&((g=h.state)==null?void 0:g.kind)===Yo.SideBySide?{newTextLineCount:h.newTextLineCount,isInDiffEditor:h.isInDiffEditor}:void 0}),this._tabAction)),this._deletion=this._register(this._instantiationService.createInstance(UCo,this._editor,this._model.map(h=>h==null?void 0:h.inlineEdit),this._uiState.map(h=>{var g;return h&&((g=h.state)==null?void 0:g.kind)===Yo.Deletion?{originalRange:h.state.originalRange,deletions:h.state.deletions,inDiffEditor:h.isInDiffEditor}:void 0}),this._tabAction)),this._insertion=this._register(this._instantiationService.createInstance(MVe,this._editor,this._uiState.map(h=>{var g;return h&&((g=h.state)==null?void 0:g.kind)===Yo.InsertionMultiLine?{lineNumber:h.state.lineNumber,startColumn:h.state.column,text:h.state.text,inDiffEditor:h.isInDiffEditor}:void 0}),this._tabAction)),this._inlineDiffViewState=Rt(this,h=>{const g=this._uiState.read(h);if(!(!g||!g.state)&&!(g.state.kind==="wordReplacements"||g.state.kind==="insertionMultiLine"||g.state.kind==="collapsed"||g.state.kind==="custom"))return{modifiedText:new g9(g.newText),diff:g.diff,mode:g.state.kind,modifiedCodeEditor:this._sideBySide.previewEditor,isInDiffEditor:g.isInDiffEditor}}),this._inlineCollapsedView=this._register(this._instantiationService.createInstance(RVe,this._editor,this._model.map((h,g)=>{var m,v;return((v=(m=this._uiState.read(g))==null?void 0:m.state)==null?void 0:v.kind)==="collapsed"?h==null?void 0:h.inlineEdit:void 0}))),this._customView=this._register(this._instantiationService.createInstance(IVe,this._editor,this._model.map((h,g)=>{var m,v;return((v=(m=this._uiState.read(g))==null?void 0:m.state)==null?void 0:v.kind)==="custom"?h==null?void 0:h.displayLocation:void 0}),this._tabAction)),this._inlineDiffView=this._register(new qCo(this._editor,this._inlineDiffViewState,this._previewTextModel)),this._wordReplacementViews=XJe(this,this._uiState.map(h=>{var g;return((g=h==null?void 0:h.state)==null?void 0:g.kind)==="wordReplacements"?h.state.replacements:[]}),(h,g)=>g.add(this._instantiationService.createInstance(SN,this._editorObs,h,this._tabAction))),this._lineReplacementView=this._register(this._instantiationService.createInstance(PVe,this._editorObs,this._uiState.map(h=>{var g;return((g=h==null?void 0:h.state)==null?void 0:g.kind)===Yo.LineReplacement?{originalRange:h.state.originalRange,modifiedRange:h.state.modifiedRange,modifiedLines:h.state.modifiedLines,replacements:h.state.replacements}:void 0}),this._uiState.map(h=>(h==null?void 0:h.isInDiffEditor)??!1),this._tabAction)),this._useCodeShifting=this._editorObs.getOption(71).map(h=>h.edits.allowCodeShifting),this._renderSideBySide=this._editorObs.getOption(71).map(h=>h.edits.renderSideBySide),this._register(Ef((h,g)=>{const m=this._model.read(h);m&&g.add(an.any(this._sideBySide.onDidClick,this._deletion.onDidClick,this._lineReplacementView.onDidClick,this._insertion.onDidClick,...this._wordReplacementViews.read(h).map(v=>v.onDidClick),this._inlineDiffView.onDidClick,this._customView.onDidClick)(v=>{this._viewHasBeenShownLongerThan(350)&&(v.preventDefault(),m.accept())}))})),this._indicator.recomputeInitiallyAndOnChange(this._store),this._wordReplacementViews.recomputeInitiallyAndOnChange(this._store),this._indicatorCyclicDependencyCircuitBreaker.set(!0,void 0),this._register(this._instantiationService.createInstance(BVe,this._host,this._model,this._indicator,this._inlineCollapsedView));const l=Rt(this,h=>Math.max(...this._wordReplacementViews.read(h).map(g=>g.minEditorScrollHeight.read(h)),this._lineReplacementView.minEditorScrollHeight.read(h),this._customView.minEditorScrollHeight.read(h))).recomputeInitiallyAndOnChange(this._store),d=this._editor.getModel();let u;this._register(Oi(h=>{const g=l.read(h);this._editor.changeViewZones(m=>{const v=this._editor.getScrollHeight(),f=g-v+1;f!==0&&u&&(m.removeZone(u),u=void 0),!(f<=0)&&(u=m.addZone({afterLineNumber:d.getLineCount(),heightInPx:f,domNode:tn("div.minScrollHeightViewZone")}))})})),this._constructorDone.set(!0,void 0)}getCacheId(t){return t.inlineEdit.inlineCompletion.identity.id}determineView(t,n,r,o){var m,v,f,k,A;const s=t.inlineEdit,a=((m=this._previousView)==null?void 0:m.id)===this.getCacheId(t)&&!((v=t.displayLocation)!=null&&v.jumpToEdit),l=((f=this._previousView)==null?void 0:f.editorWidth)!==this._editorObs.layoutInfoWidth.read(n)&&(((k=this._previousView)==null?void 0:k.view)===Yo.SideBySide||((A=this._previousView)==null?void 0:A.view)===Yo.LineReplacement);if(a&&!l)return this._previousView.view;if(t.inlineEdit.inlineCompletion instanceof GU&&t.inlineEdit.inlineCompletion.uri||t.displayLocation&&!t.inlineEdit.inlineCompletion.identity.jumpedTo.read(n))return Yo.Custom;const d=s.originalLineRange.length,u=s.modifiedLineRange.length,h=r.flatMap(p=>p.innerChanges??[]),g=h.length===1;if(!t.isInDiffEditor){if(g&&this._useCodeShifting.read(n)!=="never"&&yIn(r))return i_o(r,s.cursorPosition)?Yo.InsertionInline:Yo.LineReplacement;if(KCt(h,s,o))return Yo.Deletion;if(qCt(r)&&this._useCodeShifting.read(n)==="always")return Yo.InsertionMultiLine;if(h.every(b=>Ud.ofRange(b.originalRange).columnCounto.getValueOfRange(O.modifiedRange)),w=h.map(O=>t.inlineEdit.originalText.getValueOfRange(O.originalRange));if(!b.some(O=>O.includes(" "))&&!w.some(O=>O.includes(" "))&&(!h.some(O=>O.originalRange.isEmpty())||!JCt(h.map(O=>new Mc(O.originalRange,"")),s.originalText).some(O=>O.range.isEmpty()&&Ud.ofRange(O.range).columnCount0&&u>0)return d===1&&u===1&&!t.isInDiffEditor?Yo.LineReplacement:this._renderSideBySide.read(n)!=="never"&&X0e.fitsInsideViewport(this._editor,this._previewTextModel,s,n)?Yo.SideBySide:Yo.LineReplacement;if(t.isInDiffEditor){if(KCt(h,s,o))return Yo.Deletion;if(qCt(r)&&this._useCodeShifting.read(n)==="always")return Yo.InsertionMultiLine}return Yo.SideBySide}determineRenderState(t,n,r,o){const s=t.inlineEdit;let a=this.determineView(t,n,r,o);if(this._willRenderAboveCursor(n,s,a))switch(a){case Yo.LineReplacement:case Yo.WordReplacements:a=Yo.SideBySide;break}this._previousView={id:this.getCacheId(t),view:a,editorWidth:this._editor.getLayoutInfo().width,timestamp:Date.now()};const l=r.flatMap(f=>f.innerChanges??[]),d=this._editor.getModel(),u=l.map(f=>({originalRange:f.originalRange,modifiedRange:f.modifiedRange,original:d.getValueInRange(f.originalRange),modified:o.getValueOfRange(f.modifiedRange)})),h=s.cursorPosition,g=u.length===0?!1:u[0].modified.startsWith(d.getEOL()),m={cursorColumnDistance:s.edit.replacements.length===0?0:s.edit.replacements[0].range.getStartPosition().column-h.column,cursorLineDistance:s.lineEdit.lineRange.startLineNumber-h.lineNumber+(g&&s.lineEdit.lineRange.startLineNumber>=h.lineNumber?1:0),lineCountOriginal:s.lineEdit.lineRange.length,lineCountModified:s.lineEdit.newLines.length,characterCountOriginal:u.reduce((f,k)=>f+k.original.length,0),characterCountModified:u.reduce((f,k)=>f+k.modified.length,0),disjointReplacements:u.length,sameShapeReplacements:u.every(f=>f.original===u[0].original&&f.modified===u[0].modified)};switch(a){case Yo.InsertionInline:return{kind:Yo.InsertionInline,viewData:m};case Yo.SideBySide:return{kind:Yo.SideBySide,viewData:m};case Yo.Collapsed:return{kind:Yo.Collapsed,viewData:m};case Yo.Custom:return{kind:Yo.Custom,displayLocation:t.displayLocation,viewData:m}}if(a===Yo.Deletion)return{kind:Yo.Deletion,originalRange:s.originalLineRange,deletions:l.map(f=>f.originalRange),viewData:m};if(a===Yo.InsertionMultiLine){const f=l[0];return{kind:Yo.InsertionMultiLine,lineNumber:f.originalRange.startLineNumber,column:f.originalRange.startColumn,text:o.getValueOfRange(f.modifiedRange),viewData:m}}const v=u.map(f=>new Mc(f.originalRange,f.modified));if(v.length!==0){if(a===Yo.WordReplacements){let f=r_o(v,s.originalText);return f.some(k=>k.range.isEmpty())&&(f=JCt(v,s.originalText)),{kind:Yo.WordReplacements,replacements:f,viewData:m}}if(a===Yo.LineReplacement)return{kind:Yo.LineReplacement,originalRange:s.originalLineRange,modifiedRange:s.modifiedLineRange,modifiedLines:s.modifiedLineRange.mapToLineArray(f=>o.getLineAt(f)),replacements:l.map(f=>({originalRange:f.originalRange,modifiedRange:f.modifiedRange})),viewData:m}}}_willRenderAboveCursor(t,n,r){if(this._useCodeShifting.read(t)==="always")return!1;for(const s of n.multiCursorPositions)if(r===Yo.WordReplacements&&s.lineNumber===n.originalLineRange.startLineNumber+1||r===Yo.LineReplacement&&s.lineNumber>=n.originalLineRange.endLineNumberExclusive&&s.lineNumber=t}};FVe=t_o([n_o(5,Yn)],FVe);function yIn(e){return e.every(n=>n.innerChanges.every(r=>t(r)));function t(n){return!(!n.originalRange.isEmpty()||!(n.modifiedRange.startLineNumber===n.modifiedRange.endLineNumber))}}function i_o(e,t){if(!t||!yIn(e))return!1;const n=t;return e.every(o=>o.innerChanges.every(s=>r(s)));function r(o){const s=o.originalRange.getStartPosition();return!!(n.isBeforeOrEqual(s)||s.lineNumberr.innerChanges??[]);if(t.length!==1)return!1;const n=t[0];return!(!n.originalRange.isEmpty()||n.modifiedRange.startLineNumber===n.modifiedRange.endLineNumber)}function KCt(e,t,n){return e.map(o=>({original:t.originalText.getValueOfRange(o.originalRange),modified:n.getValueOfRange(o.modifiedRange)})).every(({original:o,modified:s})=>s.trim()===""&&o.length>0&&(o.length>s.length||o.trim()!==""))}function r_o(e,t){return CIn(e,t,n=>/^[a-zA-Z]$/.test(n))}function JCt(e,t){return CIn(e,t,n=>!/^\s$/.test(n))}function CIn(e,t,n){const r=[];e.sort((s,a)=>Ee.compareRangesUsingStarts(s.range,a.range));for(const s of e){let a=s.range.startColumn-1,l=s.range.endColumn-2,d="",u="";const h=t.getLineAt(s.range.startLineNumber),g=t.getLineAt(s.range.endLineNumber);if(o(h[a]))for(;o(h[a-1]);)d=h[a-1]+d,a--;if(o(g[l])||l0&&Ee.areIntersectingOrTouching(r[r.length-1].range,m.range)&&(m=Mc.joinReplacements([r.pop(),m],t)),r.push(m)}function o(s){return s===void 0?!1:n(s)}return r}function o_o(e,t){const n=e.model.inlineEdit.edit.replacements;if(n.length!==1)return 0;const r=t.getModel();if(!r)return 0;const o=r.getEOL(),s=n[0];if(s.range.isEmpty()&&s.text.startsWith(o)){const a=t.getLineHeightForPosition(s.range.getStartPosition());return s_o(s.text,o)*a}return 0}function s_o(e,t){if(!t.length)return 0;let n=0,r=0;for(;e.startsWith(t,r);)n++,r+=t.length;return n}var a_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},l_o=function(e,t){return function(n,r){t(n,r,e)}},uB;let NVe=(uB=class extends ft{constructor(t,n,r,o,s){super(),this._editor=t,this._edit=n,this._model=r,this._focusIsInMenu=o,this._inlineEdit=Rt(this,a=>{var f;const l=this._model.read(a);if(!l)return;const d=this._edit.read(a);if(!d)return;const u=this._editor.getModel();if(!u)return;const h=(f=l.inlineEditState.read(void 0))==null?void 0:f.inlineCompletion.updatedEdit;if(!h)return;const g=h.replacements.map(k=>{const A=Ee.fromPositions(u.getPositionAt(k.replaceRange.start),u.getPositionAt(k.replaceRange.endExclusive));return new Mc(A,k.newText)}),m=new V4(g),v=new AR(u);return new hIn(v,m,l.primaryPosition.read(void 0),l.allPositions.read(void 0),d.commands,d.inlineCompletion)}),this._inlineEditModel=Rt(this,a=>{const l=this._model.read(a);if(!l)return;const d=this._inlineEdit.read(a);if(!d)return;const u=Rt(this,h=>{if(this._editorObs.isFocused.read(h)){if(l.tabShouldJumpToInlineEdit.read(h))return wf.Jump;if(l.tabShouldAcceptInlineEdit.read(h))return wf.Accept}return wf.Inactive});return new fIn(l,d,u)}),this._inlineEditHost=Rt(this,a=>{const l=this._model.read(a);if(l)return new nCo(l)}),this._ghostTextIndicator=Rt(this,a=>{const l=this._model.read(a);if(!l)return;const d=l.inlineCompletionState.read(a);if(!d)return;const u=d.inlineCompletion;if(!u||!u.showInlineEditMenu)return;const h=Ei.ofLength(d.primaryGhostText.lineNumber,1);return new iCo(this._editor,l,h,u)}),this._editorObs=hl(this._editor),this._register(s.createInstance(FVe,this._editor,this._inlineEditHost,this._inlineEditModel,this._ghostTextIndicator,this._focusIsInMenu))}},uB.hot=l3e(uB),uB);NVe=a_o([l_o(4,Yn)],NVe);var c_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},d_o=function(e,t){return function(n,r){t(n,r,e)}};let UVe=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._model=n,this._focusIsInMenu=r,this._instantiationService=o,this._ghostTexts=Rt(this,s=>{const a=this._model.read(s);return(a==null?void 0:a.ghostTexts.read(s))??[]}),this._stablizedGhostTexts=hOo(this._ghostTexts,this._store),this._editorObs=hl(this._editor),this._ghostTextWidgets=XJe(this,this._stablizedGhostTexts,(s,a)=>vv(l=>this._instantiationService.createInstance(ree.hot.read(l),this._editor,{ghostText:s,warning:this._model.map((d,u)=>{var g;const h=(g=d==null?void 0:d.warning)==null?void 0:g.read(u);return h?{icon:h.icon}:void 0}),minReservedLineCount:ca(0),targetTextModel:this._model.map(d=>d==null?void 0:d.textModel),handleInlineCompletionShown:this._model.map((d,u)=>{var g;const h=(g=d==null?void 0:d.inlineCompletionState.read(u))==null?void 0:g.inlineCompletion;return h?m=>d.handleInlineSuggestionShown(h,Yo.GhostText,m):()=>{}})},this._editorObs.getOption(71).map(d=>({syntaxHighlightingEnabled:d.syntaxHighlightingEnabled})),!1,!1)).recomputeInitiallyAndOnChange(a)).recomputeInitiallyAndOnChange(this._store),this._inlineEdit=Rt(this,s=>{var a,l;return(l=(a=this._model.read(s))==null?void 0:a.inlineEditState.read(s))==null?void 0:l.inlineEdit}),this._everHadInlineEdit=vL(this,(s,a)=>{var l,d,u;return a||!!this._inlineEdit.read(s)||!!((u=(d=(l=this._model.read(s))==null?void 0:l.inlineCompletionState.read(s))==null?void 0:d.inlineCompletion)!=null&&u.showInlineEditMenu)}),this._inlineEditWidget=vv(s=>{if(this._everHadInlineEdit.read(s))return this._instantiationService.createInstance(NVe.hot.read(s),this._editor,this._inlineEdit,this._model,this._focusIsInMenu)}).recomputeInitiallyAndOnChange(this._store),this._fontFamily=this._editorObs.getOption(71).map(s=>s.fontFamily),this._register(Too(Rt(s=>` .monaco-editor .ghost-text-decoration, .monaco-editor .ghost-text-decoration-preview, @@ -2361,13 +2361,13 @@ ${d} // `;return await r.writeText(u),{reproCase:u}}}var b_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},hce=function(e,t){return function(n,r){t(n,r,e)}};class w_o{constructor(t,n,r){this.owner=t,this.range=n,this.controller=r}isValidForHoverAnchor(t){return t.type===1&&this.range.startColumn<=t.range.startColumn&&this.range.endColumn>=t.range.endColumn}}let HVe=class{constructor(t,n,r,o,s){this._editor=t,this.accessibilityService=n,this._instantiationService=r,this._telemetryService=o,this._markdownRendererService=s,this.hoverOrdinal=4}suggestHoverAnchor(t){const n=W0.get(this._editor);if(!n)return null;const r=t.target;if(r.type===8){const o=r.detail;if(n.shouldShowHoverAtViewZone(o.viewZoneId))return new jG(1e3,this,Ee.fromPositions(this._editor.getModel().validatePosition(o.positionBefore||o.position)),t.event.posx,t.event.posy,!1)}if(r.type===7&&n.shouldShowHoverAt(r.range))return new jG(1e3,this,r.range,t.event.posx,t.event.posy,!1);if(r.type===6&&r.detail.mightBeForeignElement&&n.shouldShowHoverAt(r.range))return new jG(1e3,this,r.range,t.event.posx,t.event.posy,!1);if(r.type===9&&r.element){const o=ree.getWarningWidgetContext(r.element);if(o&&n.shouldShowHoverAt(o.range))return new jG(1e3,this,o.range,t.event.posx,t.event.posy,!1)}return null}computeSync(t,n){if(this._editor.getOption(71).showToolbar!=="onHover")return[];const r=W0.get(this._editor);return r&&r.shouldShowHoverAt(t.range)?[new w_o(this,t.range,r)]:[]}renderHoverParts(t,n){const r=new xt,o=n[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(12)&&r.add(this.renderScreenReaderText(t,o));const s=o.controller.model.get(),a=document.createElement("div");t.fragment.appendChild(a),r.add(Ef((d,u)=>{const h=u.add(this._instantiationService.createInstance(AV.hot.read(d),this._editor,!1,ca(null),s.selectedInlineCompletionIndex,s.inlineCompletionsCount,s.activeCommands,s.warning,()=>{t.onContentsChanged()}));a.replaceChildren(h.getDomNode())})),s.triggerExplicitly();const l={hoverPart:o,hoverElement:a,dispose(){r.dispose()}};return new SR([l])}getAccessibleContent(t){return U(1205,"There are inline completions here")}renderScreenReaderText(t,n){const r=new xt,o=tn,s=o("div.hover-row.markdown-hover"),a=Xt(s,o("div.hover-contents",{"aria-live":"assertive"})),l=d=>{const u=U(1206,"Suggestion:"),h=r.add(this._markdownRendererService.render(new bf().appendText(u).appendCodeblock("text",d),{context:this._editor,asyncRenderCallback:()=>{a.className="hover-contents code-hover-contents",t.onContentsChanged()}}));a.replaceChildren(h.element)};return r.add(Oi(d=>{var h;const u=(h=n.controller.model.read(d))==null?void 0:h.primaryGhostText.read(d);if(u){const g=this._editor.getModel().getLineContent(u.lineNumber);l(u.renderForScreenReader(g))}else mu(a)})),t.fragment.appendChild(s),r}};HVe=b_o([hce(1,vh),hce(2,Yn),hce(3,Nf),hce(4,Cp)],HVe);class O_o{}mo(W0.ID,uwo(W0.hot),3);un(g_o);un(jVe);un(WVe);un(m_o);un(k_o);un(v_o);un(VVe);un(G0e);un(A_o);ys(zVe);un(p_o);ys(dVe);ys(uVe);BI.register(HVe);R3e.register(new O_o);var y_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zxe=function(e,t){return function(n,r){t(n,r,e)}},GG,o6;let aee=(o6=class{constructor(t,n,r,o){this.textModelResolverService=n,this.languageService=r,this.languageFeaturesService=o,this.toUnhook=new xt,this.toUnhookForKeyboard=new xt,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=t,this.linkDecorations=this.editor.createDecorationsCollection();const s=new y3e(t);this.toUnhook.add(s),this.toUnhook.add(s.onMouseMoveOrRelevantKeyDown(([a,l])=>{this.startFindDefinitionFromMouse(a,l??void 0)})),this.toUnhook.add(s.onExecute(a=>{this.isEnabled(a)&&this.gotoDefinition(a.target.position,a.hasSideBySideModifier).catch(l=>{zi(l)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(s.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(t){return t.getContribution(GG.ID)}async startFindDefinitionFromCursor(t){await this.startFindDefinition(t),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(n=>{n&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))}startFindDefinitionFromMouse(t,n){if(t.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(t,n)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const r=t.target.position;this.startFindDefinition(r)}async startFindDefinition(t){var a;this.toUnhookForKeyboard.clear();const n=t?(a=this.editor.getModel())==null?void 0:a.getWordAtPosition(t):null;if(!n){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===n.startColumn&&this.currentWordAtPosition.endColumn===n.endColumn&&this.currentWordAtPosition.word===n.word)return;this.currentWordAtPosition=n;const r=new RDn(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=Fd(l=>this.findDefinition(t,l));let o;try{o=await this.previousPromise}catch(l){zi(l);return}if(!o||!o.length||!r.validate(this.editor)){this.removeLinkDecorations();return}const s=o[0].originSelectionRange?Ee.lift(o[0].originSelectionRange):new Ee(t.lineNumber,n.startColumn,t.lineNumber,n.endColumn);if(o.length>1){let l=s;for(const{originSelectionRange:d}of o)d&&(l=Ee.plusRange(l,d));this.addDecoration(l,new bf().appendText(U(1077,"Click to show {0} definitions.",o.length)))}else{const l=o[0];return l.uri?this.textModelResolverService.createModelReference(l.uri).then(d=>{if(!d.object||!d.object.textEditorModel){d.dispose();return}const{object:{textEditorModel:u}}=d,{startLineNumber:h}=l.range;if(h<1||h>u.getLineCount()){d.dispose();return}const g=this.getPreviewValue(u,h,l),m=this.languageService.guessLanguageIdByFilepathOrFirstLine(u.uri);this.addDecoration(s,g?new bf().appendCodeblock(m||"",g):void 0),d.dispose()}):void 0}}getPreviewValue(t,n,r){let o=r.range;return o.endLineNumber-o.startLineNumber>=GG.MAX_SOURCE_PREVIEW_LINES&&(o=this.getPreviewRangeBasedOnIndentation(t,n)),o=t.validateRange(o),this.stripIndentationFromPreviewRange(t,n,o)}stripIndentationFromPreviewRange(t,n,r){let s=t.getLineFirstNonWhitespaceColumn(n);for(let l=n+1;l{const o=!n&&this.editor.getOption(101)&&!this.isInPeekEditor(r);return new rre({openToSide:n,openInPeek:o,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(r)})}isInPeekEditor(t){const n=t.get(Qi);return b1.inPeekEditor.getValue(n)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}},GG=o6,o6.ID="editor.contrib.gotodefinitionatposition",o6.MAX_SOURCE_PREVIEW_LINES=8,o6);aee=GG=y_o([zxe(1,Dg),zxe(2,nc),zxe(3,Nn)],aee);mo(aee.ID,aee,2);class C_o extends Bn{constructor(){super({id:"editor.action.debugEditorGpuRenderer",label:_t(1101,"Developer: Debug Editor GPU Renderer"),precondition:Ft.true()})}async run(t,n){const r=t.get(Yn),s=await t.get(Rf).pick([{label:U(1098,"Log Texture Atlas Stats"),id:"logTextureAtlasStats"},{label:U(1099,"Save Texture Atlas"),id:"saveTextureAtlas"},{label:U(1100,"Draw Glyph"),id:"drawGlyph"}],{canPickMany:!1});if(s)switch(s.id){case"logTextureAtlasStats":r.invokeFunction(a=>{const l=a.get(va),d=mg.atlas;if(!mg.atlas){l.error("No texture atlas found");return}const u=d.getStats();l.info(["Texture atlas stats",...u].join(` -`))});break;case"saveTextureAtlas":r.invokeFunction(async a=>{const l=a.get(H8),d=a.get(RCt),u=l.getWorkspace().folders;if(u.length>0){const h=mg.atlas,g=[];for(const[m,v]of h.pages.entries())g.push(d.writeFile(vi.joinPath(u[0].uri,`textureAtlasPage${m}_actual.png`),B9.wrap(new Uint8Array(await(await v.source.convertToBlob()).arrayBuffer()))),d.writeFile(vi.joinPath(u[0].uri,`textureAtlasPage${m}_usage.png`),B9.wrap(new Uint8Array(await(await v.getUsagePreview()).arrayBuffer()))));await Promise.all(g)}});break;case"drawGlyph":r.invokeFunction(async a=>{var E,T,D;const l=a.get(ar),d=a.get(RCt),u=a.get(Rf),g=a.get(H8).getWorkspace().folders;if(g.length===0)return;const m=mg.atlas,v=l.getValue("editor.fontFamily"),f=l.getValue("editor.fontSize"),k=new vJ(f,v,vs().devicePixelRatio,mg.decorationStyleCache);let A=await u.input({prompt:"Enter a character to draw (prefix with 0x for code point))"});if(!A)return;const p=(T=(E=A.match(/0x(?[0-9a-f]+)/i))==null?void 0:E.groups)==null?void 0:T.codePoint;p!==void 0&&(A=String.fromCodePoint(parseInt(p,16)));const b=0,O=m.getGlyph(k,A,b,0,0);if(!O)return;const y=(D=m.pages[O.pageIndex].source.getContext("2d"))==null?void 0:D.getImageData(O.x,O.y,O.w,O.h);if(!y)return;const C=new OffscreenCanvas(y.width,y.height);uR(C.getContext("2d")).putImageData(y,0,0);const S=await C.convertToBlob({type:"image/png"}),L=vi.joinPath(g[0].uri,`glyph_${A}_${b}_${f}px_${v.replaceAll(/[,\\\/\.'\s]/g,"_")}.png`);await d.writeFile(L,B9.wrap(new Uint8Array(await S.arrayBuffer())))});break}}}un(C_o);var ub;(function(e){e.NoAutoFocus="noAutoFocus",e.FocusIfVisible="focusIfVisible",e.AutoFocusImmediately="autoFocusImmediately"})(ub||(ub={}));class __o extends Bn{constructor(){super({id:fBn,label:_t(1107,"Show or Focus Hover"),metadata:{description:_t(1108,"Show or focus the editor hover which shows documentation, references, and other content for a symbol at the current cursor position."),args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[ub.NoAutoFocus,ub.FocusIfVisible,ub.AutoFocusImmediately],enumDescriptions:[U(1104,"The hover will not automatically take focus."),U(1105,"The hover will take focus only if it is already visible."),U(1106,"The hover will automatically take focus when it appears.")],default:ub.FocusIfVisible}}}}]},precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2087),weight:100}})}run(t,n,r){if(!n.hasModel())return;const o=If.get(n);if(!o)return;const s=r==null?void 0:r.focus;let a=ub.FocusIfVisible;Object.values(ub).includes(s)?a=s:typeof s=="boolean"&&s&&(a=ub.AutoFocusImmediately);const l=u=>{const h=n.getPosition(),g=new Ee(h.lineNumber,h.column,h.lineNumber,h.column);o.showContentHover(g,1,2,u)},d=n.getOption(2)===2;o.isHoverVisible?a!==ub.NoAutoFocus?o.focus():l(d):l(d||a===ub.AutoFocusImmediately)}}class S_o extends Bn{constructor(){super({id:Yvo,label:_t(1109,"Show Definition Preview Hover"),precondition:void 0,metadata:{description:_t(1110,"Show the definition preview hover in the editor.")}})}run(t,n){const r=If.get(n);if(!r)return;const o=n.getPosition();if(!o)return;const s=new Ee(o.lineNumber,o.column,o.lineNumber,o.column),a=aee.get(n);if(!a)return;a.startFindDefinitionFromCursor(o).then(()=>{r.showContentHover(s,1,2,!0)})}}class L_o extends Bn{constructor(){super({id:Zvo,label:_t(1111,"Hide Hover"),alias:"Hide Content Hover",precondition:void 0})}run(t,n){var r;(r=If.get(n))==null||r.hideContentHover()}}class x_o extends Bn{constructor(){super({id:qvo,label:_t(1112,"Scroll Up Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:16,weight:100},metadata:{description:_t(1113,"Scroll up the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollUp()}}class E_o extends Bn{constructor(){super({id:Kvo,label:_t(1114,"Scroll Down Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:18,weight:100},metadata:{description:_t(1115,"Scroll down the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollDown()}}class T_o extends Bn{constructor(){super({id:Jvo,label:_t(1116,"Scroll Left Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:15,weight:100},metadata:{description:_t(1117,"Scroll left the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollLeft()}}class Q_o extends Bn{constructor(){super({id:eAo,label:_t(1118,"Scroll Right Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:17,weight:100},metadata:{description:_t(1119,"Scroll right the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollRight()}}class D_o extends Bn{constructor(){super({id:tAo,label:_t(1120,"Page Up Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:11,secondary:[528],weight:100},metadata:{description:_t(1121,"Page up the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.pageUp()}}class B_o extends Bn{constructor(){super({id:nAo,label:_t(1122,"Page Down Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:12,secondary:[530],weight:100},metadata:{description:_t(1123,"Page down the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.pageDown()}}class R_o extends Bn{constructor(){super({id:iAo,label:_t(1124,"Go To Top Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:14,secondary:[2064],weight:100},metadata:{description:_t(1125,"Go to the top of the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.goToTop()}}class I_o extends Bn{constructor(){super({id:rAo,label:_t(1126,"Go To Bottom Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:13,secondary:[2066],weight:100},metadata:{description:_t(1127,"Go to the bottom of the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.goToBottom()}}class M_o extends Bn{constructor(){super({id:A3e,label:oAo,alias:"Increase Hover Verbosity Level",precondition:$e.hoverVisible})}run(t,n,r){const o=If.get(n);if(!o)return;const s=(r==null?void 0:r.index)!==void 0?r.index:o.focusedHoverPartIndex();o.updateHoverVerbosityLevel(d0.Increase,s,r==null?void 0:r.focus)}}class P_o extends Bn{constructor(){super({id:p3e,label:sAo,alias:"Decrease Hover Verbosity Level",precondition:$e.hoverVisible})}run(t,n,r){var a;const o=If.get(n);if(!o)return;const s=(r==null?void 0:r.index)!==void 0?r.index:o.focusedHoverPartIndex();(a=If.get(n))==null||a.updateHoverVerbosityLevel(d0.Decrease,s,r==null?void 0:r.focus)}}class F_o{constructor(t){this._editor=t}computeSync(t){var a;const n=l=>({value:l}),r=this._editor.getLineDecorations(t.lineNumber),o=[],s=t.laneOrLine==="lineNo";if(!r)return o;for(const l of r){const d=((a=l.options.glyphMargin)==null?void 0:a.position)??p3.Center;if(!s&&d!==t.laneOrLine)continue;const u=s?l.options.lineNumberHoverMessage:l.options.glyphMarginHoverMessage;!u||fV(u)||o.push(...WJe(u).map(n))}return o}}var N_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},U_o=function(e,t){return function(n,r){t(n,r,e)}},$Ve;const t_t=tn;var hB;let XVe=(hB=class extends ft{constructor(t,n){super(),this._markdownRendererService=n,this.allowEditorOverflow=!0,this._renderDisposeables=this._register(new xt),this._editor=t,this._isVisible=!1,this._messages=[],this._hover=this._register(new Ztt(!0)),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._hoverOperation=this._register(new vBn(this._editor,new F_o(this._editor))),this._register(this._hoverOperation.onResult(r=>this._withResult(r))),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(59)&&this._updateFont()})),this._register(wc(this._hover.containerDomNode,"mouseleave",r=>{this._onMouseLeave(r)})),this._editor.addOverlayWidget(this)}dispose(){this._hoverComputerOptions=void 0,this._editor.removeOverlayWidget(this),super.dispose()}getId(){return $Ve.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(n=>this._editor.applyFontInfo(n))}_onModelDecorationsChanged(){this._isVisible&&this._hoverComputerOptions&&(this._hoverOperation.cancel(),this._hoverOperation.start(0,this._hoverComputerOptions))}showsOrWillShow(t){const n=t.target;return n.type===2&&n.detail.glyphMarginLane?(this._startShowingAt(n.position.lineNumber,n.detail.glyphMarginLane),!0):n.type===3?(this._startShowingAt(n.position.lineNumber,"lineNo"),!0):!1}_startShowingAt(t,n){this._hoverComputerOptions&&this._hoverComputerOptions.lineNumber===t&&this._hoverComputerOptions.laneOrLine===n||(this._hoverOperation.cancel(),this.hide(),this._hoverComputerOptions={lineNumber:t,laneOrLine:n},this._hoverOperation.start(0,this._hoverComputerOptions))}hide(){this._hoverComputerOptions=void 0,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(t){this._messages=t.value,this._messages.length>0?this._renderMessages(t.options.lineNumber,t.options.laneOrLine,this._messages):this.hide()}_renderMessages(t,n,r){this._renderDisposeables.clear();const o=document.createDocumentFragment();for(const s of r){const a=t_t("div.hover-row.markdown-hover"),l=Xt(a,t_t("div.hover-contents")),d=this._renderDisposeables.add(this._markdownRendererService.render(s.value,{context:this._editor}));l.appendChild(d.element),o.appendChild(a)}this._updateContents(o),this._showAt(t,n)}_updateContents(t){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(t),this._updateFont()}_showAt(t,n){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const r=this._editor.getLayoutInfo(),o=this._editor.getTopForLineNumber(t),s=this._editor.getScrollTop(),a=this._editor.getOption(75),l=this._hover.containerDomNode.clientHeight,d=o-s-(l-a)/2,u=r.glyphMarginLeft+r.glyphMarginWidth+(n==="lineNo"?r.lineNumbersWidth:0),g=r.height-l,m=Math.max(0,Math.min(Math.round(d),g));if(this._editor.getOption(51)){const f=this._editor.getDomNode();if(f){const k=Kl(f);this._hover.containerDomNode.style.position="fixed",this._hover.containerDomNode.style.left=`${k.left+u}px`,this._hover.containerDomNode.style.top=`${k.top+m}px`}}else this._hover.containerDomNode.style.position="absolute",this._hover.containerDomNode.style.left=`${u}px`,this._hover.containerDomNode.style.top=`${m}px`;this._hover.containerDomNode.style.zIndex="11"}_onMouseLeave(t){const n=this._editor.getDomNode();(!n||!b3e(n,t.x,t.y))&&this.hide()}},$Ve=hB,hB.ID="editor.contrib.modesGlyphHoverWidget",hB);XVe=$Ve=N_o([U_o(1,Cp)],XVe);var j_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},W_o=function(e,t){return function(n,r){t(n,r,e)}},Gj;let Y0e=(Gj=class extends ft{constructor(t,n){super(),this._editor=t,this._instantiationService=n,this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new xt,this._hoverState={mouseDown:!1},this._reactToEditorMouseMoveRunner=this._register(new Es(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(69)&&(this._unhookListeners(),this._hookListeners())}))}_hookListeners(){const t=this._editor.getOption(69);this._hoverSettings={enabled:t.enabled,sticky:t.sticky,hidingDelay:t.hidingDelay},t.enabled?(this._listenersStore.add(this._editor.onMouseDown(n=>this._onEditorMouseDown(n))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n)))):(this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n)))),this._listenersStore.add(this._editor.onMouseLeave(n=>this._onEditorMouseLeave(n))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this.hideGlyphHover()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(n=>this._onEditorScrollChanged(n)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(t){(t.scrollTopChanged||t.scrollLeftChanged)&&this.hideGlyphHover()}_onEditorMouseDown(t){this._hoverState.mouseDown=!0,!this._isMouseOnGlyphHoverWidget(t)&&this.hideGlyphHover()}_isMouseOnGlyphHoverWidget(t){var r;const n=(r=this._glyphWidget)==null?void 0:r.getDomNode();return n?b3e(n,t.event.posx,t.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(t){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._isMouseOnGlyphHoverWidget(t))||this.hideGlyphHover()}_shouldNotRecomputeCurrentHoverWidget(t){const n=this._hoverSettings.sticky,r=this._isMouseOnGlyphHoverWidget(t);return n&&r}_onEditorMouseMove(t){if(this.shouldKeepOpenOnEditorMouseMoveOrLeave)return;if(this._mouseMoveEvent=t,this._shouldNotRecomputeCurrentHoverWidget(t)){this._reactToEditorMouseMoveRunner.cancel();return}this._reactToEditorMouseMove(t)}_reactToEditorMouseMove(t){!t||this._tryShowHoverWidget(t)||this.hideGlyphHover()}_tryShowHoverWidget(t){return this._getOrCreateGlyphWidget().showsOrWillShow(t)}_onKeyDown(t){this._editor.hasModel()&&(t.keyCode===5||t.keyCode===6||t.keyCode===57||t.keyCode===4||this.hideGlyphHover())}hideGlyphHover(){var t;(t=this._glyphWidget)==null||t.hide()}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=this._instantiationService.createInstance(XVe,this._editor)),this._glyphWidget}dispose(){var t;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(t=this._glyphWidget)==null||t.dispose()}},Gj.ID="editor.contrib.marginHover",Gj);Y0e=j_o([W_o(1,Yn)],Y0e);class V_o{}class z_o{}class H_o{}mo(If.ID,If,2);mo(Y0e.ID,Y0e,2);un(__o);un(S_o);un(L_o);un(x_o);un(E_o);un(T_o);un(Q_o);un(D_o);un(B_o);un(R_o);un(I_o);un(M_o);un(P_o);BI.register(zJ);BI.register(EWe);yA((e,t)=>{const n=e.getColor(wet);n&&(t.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${n.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${n.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${n.transparent(.5)}; }`))});R3e.register(new V_o);R3e.register(new z_o);R3e.register(new H_o);function _In(e,t,n,r){if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return[];const o=t.getLanguageConfiguration(e.getLanguageId()).indentRulesSupport;if(!o)return[];const s=new det(e,o,t);for(r=Math.min(r,e.getLineCount());n<=r&&s.shouldIgnore(n);)n++;if(n>r-1)return[];const{tabSize:a,indentSize:l,insertSpaces:d}=e.getOptions(),u=(k,A)=>(A=A||1,gA.shiftIndent(k,k.length+A,a,l,d)),h=(k,A)=>(A=A||1,gA.unshiftIndent(k,k.length+A,a,l,d)),g=[],m=e.getLineContent(n);let v=Ys(m),f=v;s.shouldIncrease(n)?(f=u(f),v=u(v)):s.shouldIndentNextLine(n)&&(f=u(f)),n++;for(let k=n;k<=r;k++){if($_o(e,k))continue;const A=e.getLineContent(k),p=Ys(A),b=f;s.shouldDecrease(k,b)&&(f=h(f),v=h(v)),p!==f&&g.push($l.replaceMove(new Qn(k,1,k,p.length+1),tet(f,l,d))),!s.shouldIgnore(k)&&(s.shouldIncrease(k,b)?(v=u(v),f=v):s.shouldIndentNextLine(k,b)?f=u(f):f=v)}return g}function $_o(e,t){return e.tokenization.isCheapToTokenize(t)?e.tokenization.getLineTokens(t).getStandardTokenType(0)===2:!1}var X_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},G_o=function(e,t){return function(n,r){t(n,r,e)}};const bAe=class bAe extends Bn{constructor(){super({id:bAe.ID,label:_t(1148,"Convert Indentation to Spaces"),precondition:$e.writable,metadata:{description:_t(1149,"Convert the tab indentation to spaces.")}})}run(t,n){const r=n.getModel();if(!r)return;const o=r.getOptions(),s=n.getSelection();if(!s)return;const a=new J_o(s,o.tabSize);n.pushUndoStop(),n.executeCommands(this.id,[a]),n.pushUndoStop(),r.updateOptions({insertSpaces:!0})}};bAe.ID="editor.action.indentationToSpaces";let GVe=bAe;const wAe=class wAe extends Bn{constructor(){super({id:wAe.ID,label:_t(1150,"Convert Indentation to Tabs"),precondition:$e.writable,metadata:{description:_t(1151,"Convert the spaces indentation to tabs.")}})}run(t,n){const r=n.getModel();if(!r)return;const o=r.getOptions(),s=n.getSelection();if(!s)return;const a=new eSo(s,o.tabSize);n.pushUndoStop(),n.executeCommands(this.id,[a]),n.pushUndoStop(),r.updateOptions({insertSpaces:!1})}};wAe.ID="editor.action.indentationToTabs";let YVe=wAe;class Wnt extends Bn{constructor(t,n,r){super(r),this.insertSpaces=t,this.displaySizeOnly=n}run(t,n){const r=t.get(Rf),o=t.get(ml),s=n.getModel();if(!s)return;const a=o.getCreationOptions(s.getLanguageId(),s.uri,s.isForSimpleWidget),l=s.getOptions(),d=[1,2,3,4,5,6,7,8].map(h=>({id:h.toString(),label:h.toString(),description:h===a.tabSize&&h===l.tabSize?U(1144,"Configured Tab Size"):h===a.tabSize?U(1145,"Default Tab Size"):h===l.tabSize?U(1146,"Current Tab Size"):void 0})),u=Math.min(s.getOptions().tabSize-1,7);setTimeout(()=>{r.pick(d,{placeHolder:U(1147,"Select Tab Size for Current File"),activeItem:d[u]}).then(h=>{if(h&&s&&!s.isDisposed()){const g=parseInt(h.label,10);this.displaySizeOnly?s.updateOptions({tabSize:g}):s.updateOptions({tabSize:g,indentSize:g,insertSpaces:this.insertSpaces})}})},50)}}const OAe=class OAe extends Wnt{constructor(){super(!1,!1,{id:OAe.ID,label:_t(1152,"Indent Using Tabs"),precondition:void 0,metadata:{description:_t(1153,"Use indentation with tabs.")}})}};OAe.ID="editor.action.indentUsingTabs";let ZVe=OAe;const yAe=class yAe extends Wnt{constructor(){super(!0,!1,{id:yAe.ID,label:_t(1154,"Indent Using Spaces"),precondition:void 0,metadata:{description:_t(1155,"Use indentation with spaces.")}})}};yAe.ID="editor.action.indentUsingSpaces";let qVe=yAe;const CAe=class CAe extends Wnt{constructor(){super(!0,!0,{id:CAe.ID,label:_t(1156,"Change Tab Display Size"),precondition:void 0,metadata:{description:_t(1157,"Change the space size equivalent of the tab.")}})}};CAe.ID="editor.action.changeTabDisplaySize";let KVe=CAe;const _Ae=class _Ae extends Bn{constructor(){super({id:_Ae.ID,label:_t(1158,"Detect Indentation from Content"),precondition:void 0,metadata:{description:_t(1159,"Detect the indentation from content.")}})}run(t,n){const r=t.get(ml),o=n.getModel();if(!o)return;const s=r.getCreationOptions(o.getLanguageId(),o.uri,o.isForSimpleWidget);o.detectIndentation(s.insertSpaces,s.tabSize)}};_Ae.ID="editor.action.detectIndentation";let JVe=_Ae;class Y_o extends Bn{constructor(){super({id:"editor.action.reindentlines",label:_t(1160,"Reindent Lines"),precondition:$e.writable,metadata:{description:_t(1161,"Reindent the lines of the editor.")},canTriggerInlineEdits:!0})}run(t,n){const r=t.get(kl),o=n.getModel();if(!o)return;const s=_In(o,r,1,o.getLineCount());s.length>0&&(n.pushUndoStop(),n.executeEdits(this.id,s),n.pushUndoStop())}}class Z_o extends Bn{constructor(){super({id:"editor.action.reindentselectedlines",label:_t(1162,"Reindent Selected Lines"),precondition:$e.writable,metadata:{description:_t(1163,"Reindent the selected lines of the editor.")},canTriggerInlineEdits:!0})}run(t,n){const r=t.get(kl),o=n.getModel();if(!o)return;const s=n.getSelections();if(s===null)return;const a=[];for(const l of s){let d=l.startLineNumber,u=l.endLineNumber;if(d!==u&&l.endColumn===1&&u--,d===1){if(d===u)continue}else d--;const h=_In(o,r,d,u);a.push(...h)}a.length>0&&(n.pushUndoStop(),n.executeEdits(this.id,a),n.pushUndoStop())}}class q_o{constructor(t,n){this._initialSelection=n,this._edits=[],this._selectionId=null;for(const r of t)r.range&&typeof r.text=="string"&&this._edits.push(r)}getEditOperations(t,n){for(const o of this._edits)n.addEditOperation(Ee.lift(o.range),o.text);let r=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(r=!0,this._selectionId=n.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(r=!0,this._selectionId=n.trackSelection(this._initialSelection,!1))),r||(this._selectionId=n.trackSelection(this._initialSelection))}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}var Yj;let Z0e=(Yj=class{constructor(t,n){this.editor=t,this._languageConfigurationService=n,this.callOnDispose=new xt,this.callOnModel=new xt,this.callOnDispose.add(t.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(t.onDidChangeModel(()=>this.update())),this.callOnDispose.add(t.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(!this.editor.getOption(17)||this.editor.getOption(16)<4)&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:t})=>{this.trigger(t)}))}trigger(t){const n=this.editor.getSelections();if(n===null||n.length>1)return;const r=this.editor.getModel();if(!r||this.rangeContainsOnlyWhitespaceCharacters(r,t)||!this.editor.getOption(18)&&K_o(r,t)||!r.tokenization.isCheapToTokenize(t.getStartPosition().lineNumber))return;const s=this.editor.getOption(16),{tabSize:a,indentSize:l,insertSpaces:d}=r.getOptions(),u=[],h={shiftIndent:f=>gA.shiftIndent(f,f.length+1,a,l,d),unshiftIndent:f=>gA.unshiftIndent(f,f.length+1,a,l,d)};let g=t.startLineNumber,m=r.getLineContent(g);if(!/\S/.test(m.substring(0,t.startColumn-1))){const f=dZ(s,r,r.getLanguageId(),g,h,this._languageConfigurationService);if(f!==null){const k=Ys(m),A=r0(f,a),p=r0(k,a);if(A!==p){const b=BZ(A,a,d);u.push({range:new Ee(g,1,g,k.length+1),text:b}),m=b+m.substring(k.length)}else{const b=l7n(r,g,this._languageConfigurationService);if(b===0||b===8)return}}}const v=g;for(;gr.tokenization.getLineTokens(A),getLanguageId:()=>r.getLanguageId(),getLanguageIdAtPosition:(A,p)=>r.getLanguageIdAtPosition(A,p)},getLineContent:A=>A===v?m:r.getLineContent(A)},r.getLanguageId(),g+1,h,this._languageConfigurationService);if(k!==null){const A=r0(k,a),p=r0(Ys(r.getLineContent(g+1)),a);if(A!==p){const b=A-p;for(let w=g+1;w<=t.endLineNumber;w++){const O=r.getLineContent(w),y=Ys(O),_=r0(y,a)+b,S=BZ(_,a,d);S!==y&&u.push({range:new Ee(w,1,w,y.length+1),text:S})}}}}if(u.length>0){this.editor.pushUndoStop();const f=new q_o(u,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",f),this.editor.pushUndoStop()}}rangeContainsOnlyWhitespaceCharacters(t,n){const r=s=>s.trim().length===0;let o=!0;if(n.startLineNumber===n.endLineNumber){const a=t.getLineContent(n.startLineNumber).substring(n.startColumn-1,n.endColumn-1);o=r(a)}else for(let s=n.startLineNumber;s<=n.endLineNumber;s++){const a=t.getLineContent(s);if(s===n.startLineNumber){const l=a.substring(n.startColumn-1);o=r(l)}else if(s===n.endLineNumber){const l=a.substring(0,n.endColumn-1);o=r(l)}else o=t.getLineFirstNonWhitespaceColumn(s)===0;if(!o)break}return o}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}},Yj.ID="editor.contrib.autoIndentOnPaste",Yj);Z0e=X_o([G_o(1,kl)],Z0e);function K_o(e,t){const n=r=>Wio(e,r)===2;return n(t.getStartPosition())||n(t.getEndPosition())}function SIn(e,t,n,r){if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return;let o="";for(let a=0;a=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},iSo=function(e,t){return function(n,r){t(n,r,e)}},Che,s6;let SV=(s6=class{static get(t){return t.getContribution(Che.ID)}constructor(t,n){this.editor=t,this.editorWorkerService=n,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(t,n){var d;(d=this.currentRequest)==null||d.cancel();const r=this.editor.getSelection(),o=this.editor.getModel();if(!o||!r)return;let s=r;if(s.startLineNumber!==s.endLineNumber)return;const a=new RDn(this.editor,5),l=o.uri;return this.editorWorkerService.canNavigateValueSet(l)?(this.currentRequest=Fd(u=>this.editorWorkerService.navigateValueSet(l,s,n)),this.currentRequest.then(u=>{var f;if(!u||!u.range||!u.value||!a.validate(this.editor))return;const h=Ee.lift(u.range);let g=u.range;const m=u.value.length-(s.endColumn-s.startColumn);g={startLineNumber:g.startLineNumber,startColumn:g.startColumn,endLineNumber:g.endLineNumber,endColumn:g.startColumn+u.value.length},m>1&&(s=new Qn(s.startLineNumber,s.startColumn,s.endLineNumber,s.endColumn+m-1));const v=new tSo(h,s,u.value);this.editor.pushUndoStop(),this.editor.executeCommand(t,v),this.editor.pushUndoStop(),this.decorations.set([{range:g,options:Che.DECORATION}]),(f=this.decorationRemover)==null||f.cancel(),this.decorationRemover=Cy(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(zi)}).catch(zi)):Promise.resolve(void 0)}},Che=s6,s6.ID="editor.contrib.inPlaceReplaceController",s6.DECORATION=Gi.register({description:"in-place-replace",className:"valueSetReplacement"}),s6);SV=Che=nSo([iSo(1,S1)],SV);class rSo extends Bn{constructor(){super({id:"editor.action.inPlaceReplace.up",label:_t(1240,"Replace with Previous Value"),precondition:$e.writable,kbOpts:{kbExpr:$e.editorTextFocus,primary:3159,weight:100}})}run(t,n){const r=SV.get(n);return r?r.run(this.id,!1):Promise.resolve(void 0)}}class oSo extends Bn{constructor(){super({id:"editor.action.inPlaceReplace.down",label:_t(1241,"Replace with Next Value"),precondition:$e.writable,kbOpts:{kbExpr:$e.editorTextFocus,primary:3161,weight:100}})}run(t,n){const r=SV.get(n);return r?r.run(this.id,!0):Promise.resolve(void 0)}}mo(SV.ID,SV,4);un(rSo);un(oSo);class sSo{constructor(t){this._selection=t,this._selectionId=null}getEditOperations(t,n){const r=aSo(t);r&&n.addEditOperation(r.range,r.text),this._selectionId=n.trackSelection(this._selection)}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}function aSo(e){const t=e.getLineCount(),n=e.getLineContent(t),r=Z4(n)===-1;if(!(!t||r))return $l.insert(new it(t,e.getLineMaxColumn(t)),e.getEOL())}const SAe=class SAe extends Bn{constructor(){super({id:SAe.ID,label:_t(1242,"Insert Final New Line"),precondition:$e.writable})}run(t,n,r){const o=n.getSelection();if(o===null)return;const s=new sSo(o);n.pushUndoStop(),n.executeCommands(this.id,[s]),n.pushUndoStop()}};SAe.ID="editor.action.insertFinalNewLine";let eze=SAe;un(eze);class lSo extends Bn{constructor(){super({id:"expandLineSelection",label:_t(1243,"Expand Line Selection"),precondition:void 0,kbOpts:{weight:0,kbExpr:$e.textInputFocus,primary:2090}})}run(t,n,r){if(r=r||{},!n.hasModel())return;const o=n._getViewModel();o.model.pushStackElement(),o.setCursorStates(r.source,3,th.expandLineSelection(o,o.getCursorStates())),o.revealAllCursors(r.source,!0)}}un(lSo);var cSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},fce=function(e,t){return function(n,r){t(n,r,e)}},_he;const LIn=new yn("LinkedEditingInputVisible",!1),dSo="linked-editing-decoration";var a6;let LV=(a6=class extends ft{static get(t){return t.getContribution(_he.ID)}constructor(t,n,r,o,s){super(),this.languageConfigurationService=o,this._syncRangesToken=0,this._localToDispose=this._register(new xt),this._editor=t,this._providers=r.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=LIn.bindTo(n),this._debounceInformation=s.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new xt),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequestCts=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(a=>{(a.hasChanged(78)||a.hasChanged(106))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(t){const n=this._editor.getModel(),r=n!==null&&(this._editor.getOption(78)||this._editor.getOption(106))&&this._providers.has(n);if(r===this._enabled&&!t||(this._enabled=r,this.clearRanges(),this._localToDispose.clear(),!r||n===null))return;this._localToDispose.add(an.runAndSubscribe(n.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition()}));const o=new dA(this._debounceInformation.get(n)),s=()=>{this._rangeUpdateTriggerPromise=o.trigger(()=>this.updateRanges(),this._debounceDuration??this._debounceInformation.get(n))},a=new dA(0),l=d=>{this._rangeSyncTriggerPromise=a.trigger(()=>this._syncRanges(d))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{s()})),this._localToDispose.add(this._editor.onDidChangeModelContent(d=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const u=this._currentDecorations.getRange(0);if(u&&d.changes.every(h=>u.intersectRanges(h.range))){l(this._syncRangesToken);return}}s()})),this._localToDispose.add({dispose:()=>{o.dispose(),a.dispose()}}),this.updateRanges()}_syncRanges(t){if(!this._editor.hasModel()||t!==this._syncRangesToken||this._currentDecorations.length===0)return;const n=this._editor.getModel(),r=this._currentDecorations.getRange(0);if(!r||r.startLineNumber!==r.endLineNumber)return this.clearRanges();const o=n.getValueInRange(r);if(this._currentWordPattern){const a=o.match(this._currentWordPattern);if((a?a[0].length:0)!==o.length)return this.clearRanges()}const s=[];for(let a=1,l=this._currentDecorations.length;a1){this.clearRanges();return}const r=this._editor.getModel(),o=r.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===o){if(n.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const l=this._currentDecorations.getRange(0);if(l&&l.containsPosition(n))return}}if(!((a=this._currentRequestPosition)!=null&&a.equals(n))){const l=this._currentDecorations.getRange(0);l!=null&&l.containsPosition(n)||this.clearRanges()}this._currentRequestPosition=n,this._currentRequestModelVersion=o;const s=this._currentRequestCts=new ja;try{const l=new vu(!1),d=await xIn(this._providers,r,n,s.token);if(this._debounceInformation.update(r,l.elapsed()),s!==this._currentRequestCts||(this._currentRequestCts=null,o!==r.getVersionId()))return;let u=[];d!=null&&d.ranges&&(u=d.ranges),this._currentWordPattern=(d==null?void 0:d.wordPattern)||this._languageWordPattern;let h=!1;for(let m=0,v=u.length;m({range:m,options:_he.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(g),this._syncRangesToken++}catch(l){C2(l)||zi(l),(this._currentRequestCts===s||!this._currentRequestCts)&&this.clearRanges()}}},_he=a6,a6.ID="editor.contrib.linkedEditing",a6.DECORATION=Gi.register({description:"linked-editing",stickiness:0,className:dSo}),a6);LV=_he=cSo([fce(1,Qi),fce(2,Nn),fce(3,kl),fce(4,CA)],LV);class uSo extends Bn{constructor(){super({id:"editor.action.linkedEditing",label:_t(1276,"Start Linked Editing"),precondition:Ft.and($e.writable,$e.hasRenameProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:3132,weight:100}})}runCommand(t,n){const r=t.get(yo),[o,s]=Array.isArray(n)&&n||[void 0,void 0];return vi.isUri(o)&&it.isIPosition(s)?r.openCodeEditor({resource:o},r.getActiveCodeEditor()).then(a=>{a&&(a.setPosition(s),a.invokeWithinContext(l=>(this.reportTelemetry(l,a),this.run(l,a))))},zi):super.runCommand(t,n)}run(t,n){const r=LV.get(n);return r?Promise.resolve(r.updateRanges(!0)):Promise.resolve()}}const hSo=$d.bindToContribution(LV.get);On(new hSo({id:"cancelLinkedEditingInput",precondition:LIn,handler:e=>e.clearRanges(),kbOpts:{kbExpr:$e.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));function xIn(e,t,n,r){const o=e.ordered(t);return EJe(o.map(s=>async()=>{try{return await s.provideLinkedEditingRanges(t,n,r)}catch(a){Nc(a);return}}),s=>!!s&&yg(s==null?void 0:s.ranges))}Ve("editor.linkedEditingBackground",{dark:Dt.fromHex("#f00").transparent(.3),light:Dt.fromHex("#f00").transparent(.3),hcDark:Dt.fromHex("#f00").transparent(.3),hcLight:Dt.white},U(1275,"Background color when the editor auto renames on type."));_1("_executeLinkedEditingProvider",(e,t,n)=>{const{linkedEditingRangeProvider:r}=e.get(Nn);return xIn(r,t,n,Er.None)});mo(LV.ID,LV,1);un(uSo);let fSo=class{constructor(t,n){this._link=t,this._provider=n}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(t){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,t)).then(n=>(this._link=n||this._link,this._link.url?this.resolve(t):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}};const xq=class xq{constructor(t){this._disposables=new xt;let n=[];for(const[r,o]of t){const s=r.links.map(a=>new fSo(a,o));n=xq._union(n,s),AI(r)&&(this._disposables??(this._disposables=new xt),this._disposables.add(r))}this.links=n}dispose(){var t;(t=this._disposables)==null||t.dispose(),this.links.length=0}static _union(t,n){const r=[];let o,s,a,l;for(o=0,a=0,s=t.length,l=n.length;o{try{const d=await a.provideLinks(t,n);d&&(r[l]=[d,a])}catch(d){Nc(d)}});await Promise.all(o);let s=new q0e(P3(r));return n.isCancellationRequested&&(s.dispose(),s=q0e.Empty),s}co.registerCommand("_executeLinkProvider",async(e,...t)=>{let[n,r]=t;Oo(n instanceof vi),typeof r!="number"&&(r=0);const{linkProvider:o}=e.get(Nn),s=e.get(ml).getModel(n);if(!s)return[];const a=await EIn(o,s,Er.None);if(!a)return[];for(let d=0;d=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gce=function(e,t){return function(n,r){t(n,r,e)}},tze,fB;let lee=(fB=class extends ft{static get(t){return t.getContribution(tze.ID)}constructor(t,n,r,o,s){super(),this.editor=t,this.openerService=n,this.notificationService=r,this.languageFeaturesService=o,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=s.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new Es(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const a=this._register(new y3e(t));this._register(a.onMouseMoveOrRelevantKeyDown(([l,d])=>{this._onEditorMouseMove(l,d)})),this._register(a.onExecute(l=>{this.onEditorMouseUp(l)})),this._register(a.onCancel(l=>{this.cleanUpActiveLinkDecoration()})),this._register(t.onDidChangeConfiguration(l=>{l.hasChanged(79)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(t.onDidChangeModelContent(l=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(t.onDidChangeModel(l=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(t.onDidChangeModelLanguage(l=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(l=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(79))return;const t=this.editor.getModel();if(!t.isTooLargeForSyncing()&&this.providers.has(t)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=Fd(n=>EIn(this.providers,t,n));try{const n=new vu(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(t,n.elapsed()),t.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(n){zi(n)}finally{this.computePromise=null}}}updateDecorations(t){const n=this.editor.getOption(86)==="altKey",r=[],o=Object.keys(this.currentOccurrences);for(const a of o){const l=this.currentOccurrences[a];r.push(l.decorationId)}const s=[];if(t)for(const a of t)s.push(YU.decoration(a,n));this.editor.changeDecorations(a=>{const l=a.deltaDecorations(r,s);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let d=0,u=l.length;d{o.activate(s,r),this.activeLinkDecorationId=o.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const t=this.editor.getOption(86)==="altKey";if(this.activeLinkDecorationId){const n=this.currentOccurrences[this.activeLinkDecorationId];n&&this.editor.changeDecorations(r=>{n.deactivate(r,t)}),this.activeLinkDecorationId=null}}onEditorMouseUp(t){if(!this.isEnabled(t))return;const n=this.getLinkOccurrence(t.target.position);n&&this.openLinkOccurrence(n,t.hasSideBySideModifier,!0)}openLinkOccurrence(t,n,r=!1){if(!this.openerService)return;const{link:o}=t;o.resolve(Er.None).then(s=>{if(typeof s=="string"&&this.editor.hasModel()){const a=this.editor.getModel().uri;if(a.scheme===Ci.file&&s.startsWith(`${Ci.file}:`)){const l=vi.parse(s);if(l.scheme===Ci.file){const d=Ew(l);let u=null;d.startsWith("/./")||d.startsWith("\\.\\")?u=`.${d.substr(1)}`:(d.startsWith("//./")||d.startsWith("\\\\.\\"))&&(u=`.${d.substr(2)}`),u&&(s=MEn(a,u))}}}return this.openerService.open(s,{openToSide:n,fromUserGesture:r,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},s=>{const a=s instanceof Error?s.message:s;a==="invalid"?this.notificationService.warn(U(1277,"Failed to open this link because it is not well-formed: {0}",o.url.toString())):a==="missing"?this.notificationService.warn(U(1278,"Failed to open this link because its target is missing.")):zi(s)})}getLinkOccurrence(t){if(!this.editor.hasModel()||!t)return null;const n=this.editor.getModel().getDecorationsInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:t.lineNumber,endColumn:t.column},0,!0);for(const r of n){const o=this.currentOccurrences[r.id];if(o)return o}return null}isEnabled(t,n){return!!(t.target.type===6&&(t.hasTriggerModifier||n&&n.keyCodeIsTriggerKey||t.isMiddleClick&&t.mouseMiddleClickAction==="openLink"))}stop(){var t;this.computeLinks.cancel(),this.activeLinksList&&((t=this.activeLinksList)==null||t.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}},tze=fB,fB.ID="editor.linkDetector",fB);lee=tze=gSo([gce(1,OL),gce(2,ic),gce(3,Nn),gce(4,CA)],lee);const n_t={general:Gi.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:Gi.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class YU{static decoration(t,n){return{range:t.range,options:YU._getOptions(t,n,!1)}}static _getOptions(t,n,r){const o={...r?n_t.active:n_t.general};return o.hoverMessage=mSo(t,n),o}constructor(t,n){this.link=t,this.decorationId=n}activate(t,n){t.changeDecorationOptions(this.decorationId,YU._getOptions(this.link,n,!0))}deactivate(t,n){t.changeDecorationOptions(this.decorationId,YU._getOptions(this.link,n,!1))}}function mSo(e,t){const n=e.url&&/^command:/i.test(e.url.toString()),r=e.tooltip?e.tooltip:n?U(1279,"Execute command"):U(1280,"Follow link"),o=t?Tr?U(1281,"cmd + click"):U(1282,"ctrl + click"):Tr?U(1283,"option + click"):U(1284,"alt + click");if(e.url){let s="";if(/^command:/i.test(e.url.toString())){const l=e.url.toString().match(/^command:([^?#]+)/);if(l){const d=l[1];s=U(1285,"Execute command {0}",d)}}return new bf("",!0).appendLink(e.url.toString(!0).replace(/ /g,"%20"),r,s).appendMarkdown(` (${o})`)}else return new bf().appendText(`${r} (${o})`)}class kSo extends Bn{constructor(){super({id:"editor.action.openLink",label:_t(1286,"Open Link"),precondition:void 0})}run(t,n){const r=lee.get(n);if(!r||!n.hasModel())return;const o=n.getSelections();for(const s of o){const a=r.getLinkOccurrence(s.getEndPosition());a&&r.openLinkOccurrence(a,!1)}}}mo(lee.ID,lee,1);un(kSo);const pat=class pat extends ft{constructor(t){super(),this._editor=t,this._register(this._editor.onMouseDown(n=>{const r=this._editor.getOption(133);r>=0&&n.target.type===6&&n.target.position.column>=r&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}};pat.ID="editor.contrib.longLinesHelper";let K0e=pat;mo(K0e.ID,K0e,2);const bat=class bat extends ft{constructor(t){super(),this._editor=t;const n=hl(this._editor),r=n.getOption(171);this._register(Oi(o=>{if(!r.read(o))return;const s=n.domNode.read(o);if(!s)return;const a=o.store.add(YJe("scrollingSession",void 0));o.store.add(this._editor.onMouseDown(d=>{if(a.read(void 0)){a.set(void 0,void 0);return}if(!d.event.middleButton)return;d.event.stopPropagation(),d.event.preventDefault();const h=new xt,g=new cu(d.event.posx,d.event.posy),v=vSo(ii(s),g,h).map(A=>A.subtract(g).withThreshold(5)),f=s.getBoundingClientRect(),k=new cu(g.x-f.left,g.y-f.top);a.set({mouseDeltaAfterThreshold:v,initialMousePosInEditor:k,didScroll:!1,dispose:()=>h.dispose()},void 0),h.add(this._editor.onMouseUp(A=>{const p=a.read(void 0);p&&p.didScroll&&a.set(void 0,void 0)})),h.add(this._editor.onKeyDown(A=>{a.set(void 0,void 0)}))})),o.store.add(Oi(d=>{const u=a.read(d);if(!u)return;let h=Date.now();d.store.add(Oi(m=>{I0e.instance.invalidateOnNextAnimationFrame(m);const v=Date.now(),f=v-h;h=v;const k=u.mouseDeltaAfterThreshold.read(void 0),A=f/32,p=k.scale(A),b=new cu(this._editor.getScrollLeft(),this._editor.getScrollTop());this._editor.setScrollPosition(ASo(b.add(p))),p.isZero()||(u.didScroll=!0)}));const g=Rt(m=>{const v=u.mouseDeltaAfterThreshold.read(m);let f="";return f+=v.y<0?"n":v.y>0?"s":"",f+=v.x<0?"w":v.x>0?"e":"",f});d.store.add(Oi(m=>{s.setAttribute("data-scroll-direction",g.read(m))}))}));const l=o.store.add(cr.div({class:["scroll-editor-on-middle-click-dot",a.map(d=>d?"":"hidden")],style:{left:a.map(d=>d?d.initialMousePosInEditor.x:0),top:a.map(d=>d?d.initialMousePosInEditor.y:0)}}).toDisposableLiveElement());o.store.add(bN(s,l.element)),o.store.add(Oi(d=>{const u=a.read(d);s.classList.toggle("scroll-editor-on-middle-click-editor",!!u)}))}))}};bat.ID="editor.contrib.middleScroll";let J0e=bat;function vSo(e,t,n){const r=Ti("pos",t);return n.add(wt(e,"mousemove",o=>{r.set(new cu(o.pageX,o.pageY),void 0)})),r}function ASo(e){return{scrollLeft:e.x,scrollTop:e.y}}mo(J0e.ID,J0e,2);const pSo=Ve("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},U(1563,"Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);Ve("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},U(1564,"Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0);Ve("editor.wordHighlightTextBackground",pSo,U(1565,"Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const bSo=Ve("editor.wordHighlightBorder",{light:null,dark:null,hcDark:Va,hcLight:Va},U(1566,"Border color of a symbol during read-access, like reading a variable."));Ve("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:Va,hcLight:Va},U(1567,"Border color of a symbol during write-access, like writing to a variable."));Ve("editor.wordHighlightTextBorder",bSo,U(1568,"Border color of a textual occurrence for a symbol."));const wSo=Ve("editorOverviewRuler.wordHighlightForeground","#A0A0A0CC",U(1569,"Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),OSo=Ve("editorOverviewRuler.wordHighlightStrongForeground","#C0A0C0CC",U(1570,"Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),ySo=Ve("editorOverviewRuler.wordHighlightTextForeground",x7n,U(1571,"Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),CSo=Gi.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:zl(OSo),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),_So=Gi.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:zl(ySo),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),SSo=Gi.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:zl(x7n),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),LSo=Gi.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),xSo=Gi.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:zl(wSo),position:r2.Center},minimap:{color:zl(Xbe),position:1}});function ESo(e){return e===uV.Write?CSo:e===uV.Text?_So:xSo}function TSo(e){return e?LSo:SSo}yA((e,t)=>{const n=e.getColor(bet);n&&t.addRule(`.monaco-editor .selectionHighlight { background-color: ${n.transparent(.5)}; }`)});var QSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DSo=function(e,t){return function(n,r){t(n,r,e)}},nze;function hE(e,t){const n=t.filter(r=>!e.find(o=>o.equals(r)));if(n.length>=1){const r=n.map(s=>`line ${s.viewState.position.lineNumber} column ${s.viewState.position.column}`).join(", "),o=n.length===1?U(1288,"Cursor added: {0}",r):U(1289,"Cursors added: {0}",r);A3(o)}}class BSo extends Bn{constructor(){super({id:"editor.action.insertCursorAbove",label:_t(1298,"Add Cursor Above"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1290,"&&Add Cursor Above"),order:2}})}run(t,n,r){if(!n.hasModel())return;let o=!0;r&&r.logicalLine===!1&&(o=!1);const s=n._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const a=s.getCursorStates();s.setCursorStates(r.source,3,th.addCursorUp(s,a,o)),s.revealTopMostCursor(r.source),hE(a,s.getCursorStates())}}class RSo extends Bn{constructor(){super({id:"editor.action.insertCursorBelow",label:_t(1299,"Add Cursor Below"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1291,"A&&dd Cursor Below"),order:3}})}run(t,n,r){if(!n.hasModel())return;let o=!0;r&&r.logicalLine===!1&&(o=!1);const s=n._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const a=s.getCursorStates();s.setCursorStates(r.source,3,th.addCursorDown(s,a,o)),s.revealBottomMostCursor(r.source),hE(a,s.getCursorStates())}}class ISo extends Bn{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:_t(1300,"Add Cursors to Line Ends"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1292,"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(t,n,r){if(!t.isEmpty()){for(let o=t.startLineNumber;o1&&r.push(new Qn(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn))}}run(t,n){if(!n.hasModel())return;const r=n.getModel(),o=n.getSelections(),s=n._getViewModel(),a=s.getCursorStates(),l=[];o.forEach(d=>this.getCursorsForSelection(d,r,l)),l.length>0&&n.setSelections(l),hE(a,s.getCursorStates())}}class MSo extends Bn{constructor(){super({id:"editor.action.addCursorsToBottom",label:_t(1301,"Add Cursors to Bottom"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getSelections(),o=n.getModel().getLineCount(),s=[];for(let d=r[0].startLineNumber;d<=o;d++)s.push(new Qn(d,r[0].startColumn,d,r[0].endColumn));const a=n._getViewModel(),l=a.getCursorStates();s.length>0&&n.setSelections(s),hE(l,a.getCursorStates())}}class PSo extends Bn{constructor(){super({id:"editor.action.addCursorsToTop",label:_t(1302,"Add Cursors to Top"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getSelections(),o=[];for(let l=r[0].startLineNumber;l>=1;l--)o.push(new Qn(l,r[0].startColumn,l,r[0].endColumn));const s=n._getViewModel(),a=s.getCursorStates();o.length>0&&n.setSelections(o),hE(a,s.getCursorStates())}}class mce{constructor(t,n,r){this.selections=t,this.revealRange=n,this.revealScrollType=r}}class cee{static create(t,n){if(!t.hasModel())return null;const r=n.getState();if(!t.hasTextFocus()&&r.isRevealed&&r.searchString.length>0)return new cee(t,n,!1,r.searchString,r.wholeWord,r.matchCase,null);let o=!1,s,a;const l=t.getSelections();l.length===1&&l[0].isEmpty()?(o=!0,s=!0,a=!0):(s=r.wholeWord,a=r.matchCase);const d=t.getSelection();let u,h=null;if(d.isEmpty()){const g=t.getConfiguredWordAtPosition(d.getStartPosition());if(!g)return null;u=g.word,h=new Qn(d.startLineNumber,g.startColumn,d.startLineNumber,g.endColumn)}else u=t.getModel().getValueInRange(d).replace(/\r\n/g,` -`);return new cee(t,n,o,u,s,a,h)}constructor(t,n,r,o,s,a,l){this._editor=t,this.findController=n,this.isDisconnectedFromFindController=r,this.searchText=o,this.wholeWord=s,this.matchCase=a,this.currentMatch=l}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const t=this._getNextMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.concat(t),t,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const t=this._getNextMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.slice(0,n.length-1).concat(t),t,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const o=this.currentMatch;return this.currentMatch=null,o}this.findController.highlightFindOptions();const t=this._editor.getSelections(),n=t[t.length-1],r=this._editor.getModel().findNextMatch(this.searchText,n.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1);return r?new Qn(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const t=this._getPreviousMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.concat(t),t,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const t=this._getPreviousMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.slice(0,n.length-1).concat(t),t,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const o=this.currentMatch;return this.currentMatch=null,o}this.findController.highlightFindOptions();const t=this._editor.getSelections(),n=t[t.length-1],r=this._editor.getModel().findPreviousMatch(this.searchText,n.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1);return r?new Qn(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn):null}selectAll(t){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const n=this._editor.getModel();return t?n.findMatches(this.searchText,t,!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1,1073741824):n.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1,1073741824)}}const LAe=class LAe extends ft{static get(t){return t.getContribution(LAe.ID)}constructor(t){super(),this._sessionDispose=this._register(new xt),this._editor=t,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(t){if(!this._session){const n=cee.create(this._editor,t);if(!n)return;this._session=n;const r={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(r.wholeWordOverride=1,r.matchCaseOverride=1,r.isRegexOverride=2),t.getState().change(r,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(o=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(t.getState().onFindReplaceStateChange(o=>{(o.matchCase||o.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const t={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(t,!1)}this._session=null}_setSelections(t){this._ignoreSelectionChange=!0,this._editor.setSelections(t),this._ignoreSelectionChange=!1}_expandEmptyToWord(t,n){if(!n.isEmpty())return n;const r=this._editor.getConfiguredWordAtPosition(n.getStartPosition());return r?new Qn(n.startLineNumber,r.startColumn,n.startLineNumber,r.endColumn):n}_applySessionResult(t){t&&(this._setSelections(t.selections),t.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(t.revealRange,t.revealScrollType))}getSession(t){return this._session}addSelectionToNextFindMatch(t){if(this._editor.hasModel()){if(!this._session){const n=this._editor.getSelections();if(n.length>1){const o=t.getState().matchCase;if(!TIn(this._editor.getModel(),n,o)){const a=this._editor.getModel(),l=[];for(let d=0,u=n.length;d0&&r.isRegex){const o=this._editor.getModel();r.searchScope?n=o.findMatches(r.searchString,r.searchScope,r.isRegex,r.matchCase,r.wholeWord?this._editor.getOption(148):null,!1,1073741824):n=o.findMatches(r.searchString,!0,r.isRegex,r.matchCase,r.wholeWord?this._editor.getOption(148):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(t),!this._session)return;n=this._session.selectAll(r.searchScope)}if(n.length>0){const o=this._editor.getSelection();for(let s=0,a=n.length;snew Qn(s.range.startLineNumber,s.range.startColumn,s.range.endLineNumber,s.range.endColumn)))}}};LAe.ID="editor.contrib.multiCursorController";let xV=LAe;class hH extends Bn{run(t,n){const r=xV.get(n);if(!r)return;const o=n._getViewModel();if(o){const s=o.getCursorStates(),a=w1.get(n);if(a)this._run(r,a);else{const l=t.get(Yn).createInstance(w1,n);this._run(r,l),l.dispose()}hE(s,o.getCursorStates())}}}class FSo extends hH{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:_t(1303,"Add Selection to Next Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:2082,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1293,"Add &&Next Occurrence"),order:5}})}_run(t,n){t.addSelectionToNextFindMatch(n)}}class NSo extends hH{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:_t(1304,"Add Selection to Previous Find Match"),precondition:void 0,menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1294,"Add P&&revious Occurrence"),order:6}})}_run(t,n){t.addSelectionToPreviousFindMatch(n)}}class USo extends hH{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:_t(1305,"Move Last Selection to Next Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:Uc(2089,2082),weight:100}})}_run(t,n){t.moveSelectionToNextFindMatch(n)}}class jSo extends hH{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:_t(1306,"Move Last Selection to Previous Find Match"),precondition:void 0})}_run(t,n){t.moveSelectionToPreviousFindMatch(n)}}class WSo extends hH{constructor(){super({id:"editor.action.selectHighlights",label:_t(1307,"Select All Occurrences of Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:3114,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1295,"Select All &&Occurrences"),order:7}})}_run(t,n){t.selectAll(n)}}class VSo extends hH{constructor(){super({id:"editor.action.changeAll",label:_t(1308,"Change All Occurrences"),precondition:Ft.and($e.writable,$e.editorTextFocus),kbOpts:{kbExpr:$e.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(t,n){t.selectAll(n)}}class zSo{constructor(t,n,r,o,s){this._model=t,this._searchText=n,this._matchCase=r,this._wordSeparators=o,this._cachedFindMatches=null,this._modelVersionId=this._model.getVersionId(),s&&this._model===s._model&&this._searchText===s._searchText&&this._matchCase===s._matchCase&&this._wordSeparators===s._wordSeparators&&this._modelVersionId===s._modelVersionId&&(this._cachedFindMatches=s._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(t=>t.range),this._cachedFindMatches.sort(Ee.compareRangesUsingStarts)),this._cachedFindMatches}}var gB;let eke=(gB=class extends ft{constructor(t,n){super(),this._languageFeaturesService=n,this.editor=t,this._isEnabled=t.getOption(122),this._isEnabledMultiline=t.getOption(124),this._maxLength=t.getOption(123),this._decorations=t.createDecorationsCollection(),this.updateSoon=this._register(new Es(()=>this._update(),300)),this.state=null,this._register(t.onDidChangeConfiguration(o=>{this._isEnabled=t.getOption(122),this._isEnabledMultiline=t.getOption(124),this._maxLength=t.getOption(123)})),this._register(t.onDidChangeCursorSelection(o=>{this._isEnabled&&(o.selection.isEmpty()?o.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(t.onDidChangeModel(o=>{this._setState(null)})),this._register(t.onDidChangeModelContent(o=>{this._isEnabled&&this.updateSoon.schedule()}));const r=w1.get(t);r&&this._register(r.getState().onFindReplaceStateChange(o=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(nze._createState(this.state,this._isEnabled,this._isEnabledMultiline,this._maxLength,this.editor))}static _createState(t,n,r,o,s){if(!n||!s.hasModel())return null;if(!r){const g=s.getSelection();if(g.startLineNumber!==g.endLineNumber)return null}const a=xV.get(s);if(!a)return null;const l=w1.get(s);if(!l)return null;let d=a.getSession(l);if(!d){const g=s.getSelections();if(g.length>1){const v=l.getState().matchCase;if(!TIn(s.getModel(),g,v))return null}d=cee.create(s,l)}if(!d||d.currentMatch||/^[ \t]+$/.test(d.searchText)||o>0&&d.searchText.length>o)return null;const u=l.getState(),h=u.matchCase;if(u.isRevealed){let g=u.searchString;h||(g=g.toLowerCase());let m=d.searchText;if(h||(m=m.toLowerCase()),g===m&&d.matchCase===u.matchCase&&d.wholeWord===u.wholeWord&&!u.isRegex)return null}return new zSo(s.getModel(),d.searchText,d.matchCase,d.wholeWord?s.getOption(148):null,t)}_setState(t){if(this.state=t,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const n=this.editor.getModel();if(n.isTooLargeForTokenization())return;const r=this.state.findMatches(),o=this.editor.getSelections();o.sort(Ee.compareRangesUsingStarts);const s=[];for(let u=0,h=0,g=r.length,m=o.length;u=m)s.push(v),u++;else{const f=Ee.compareRangesUsingStarts(v,o[h]);f<0?((o[h].isEmpty()||!Ee.areIntersecting(v,o[h]))&&s.push(v),u++):(f>0||u++,h++)}}const a=this.editor.getOption(90)!=="off",l=this._languageFeaturesService.documentHighlightProvider.has(n)&&a,d=s.map(u=>({range:u,options:TSo(l)}));this._decorations.set(d)}dispose(){this._setState(null),super.dispose()}},nze=gB,gB.ID="editor.contrib.selectionHighlighter",gB);eke=nze=QSo([DSo(1,Nn)],eke);function TIn(e,t,n){const r=i_t(e,t[0],!n);for(let o=1,s=t.length;o{const[n,r,o]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string"||!o);const s=e.get(Nn),a=await e.get(Dg).createModelReference(n);try{const l=await QIn(s.signatureHelpProvider,a.object.textEditorModel,it.lift(r),{triggerKind:ly.Invoke,isRetrigger:!1,triggerCharacter:o},Er.None);return l?(setTimeout(()=>l.dispose(),0),l.value):void 0}finally{a.dispose()}});var l5;(function(e){e.Default={type:0};class t{constructor(o,s){this.request=o,this.previouslyActiveHints=s,this.type=2}}e.Pending=t;class n{constructor(o){this.hints=o,this.type=1}}e.Active=n})(l5||(l5={}));const xAe=class xAe extends ft{constructor(t,n,r=xAe.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new at),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=l5.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new ts),this.triggerChars=new Bme,this.retriggerChars=new Bme,this.triggerId=0,this.editor=t,this.providers=n,this.throttledDelayer=new dA(r),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(o=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(o=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(o=>this.onCursorChange(o))),this._register(this.editor.onDidChangeModelContent(o=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(o=>this.onDidType(o))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(t){this._state.type===2&&this._state.request.cancel(),this._state=t}cancel(t=!1){this.state=l5.Default,this.throttledDelayer.cancel(),t||this._onChangedHints.fire(void 0)}trigger(t,n){const r=this.editor.getModel();if(!r||!this.providers.has(r))return;const o=++this.triggerId;this._pendingTriggers.push(t),this.throttledDelayer.trigger(()=>this.doTrigger(o),n).catch(zi)}next(){if(this.state.type!==1)return;const t=this.state.hints.signatures.length,n=this.state.hints.activeSignature,r=n%t===t-1,o=this.editor.getOption(98).cycle;if((t<2||r)&&!o){this.cancel();return}this.updateActiveSignature(r&&o?0:n+1)}previous(){if(this.state.type!==1)return;const t=this.state.hints.signatures.length,n=this.state.hints.activeSignature,r=n===0,o=this.editor.getOption(98).cycle;if((t<2||r)&&!o){this.cancel();return}this.updateActiveSignature(r&&o?t-1:n-1)}updateActiveSignature(t){this.state.type===1&&(this.state=new l5.Active({...this.state.hints,activeSignature:t}),this._onChangedHints.fire(this.state.hints))}async doTrigger(t){const n=this.state.type===1||this.state.type===2,r=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const o=this._pendingTriggers.reduce(XSo);this._pendingTriggers=[];const s={triggerKind:o.triggerKind,triggerCharacter:o.triggerCharacter,isRetrigger:n,activeSignatureHelp:r};if(!this.editor.hasModel())return!1;const a=this.editor.getModel(),l=this.editor.getPosition();this.state=new l5.Pending(Fd(d=>QIn(this.providers,a,l,s,d)),r);try{const d=await this.state.request;return t!==this.triggerId?(d==null||d.dispose(),!1):!d||!d.value.signatures||d.value.signatures.length===0?(d==null||d.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new l5.Active(d.value),this._lastSignatureHelpResult.value=d,this._onChangedHints.fire(this.state.hints),!0)}catch(d){return t===this.triggerId&&(this.state=l5.Default),zi(d),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const t=this.editor.getModel();if(t)for(const n of this.providers.ordered(t)){for(const r of n.signatureHelpTriggerCharacters||[])if(r.length){const o=r.charCodeAt(0);this.triggerChars.add(o),this.retriggerChars.add(o)}for(const r of n.signatureHelpRetriggerCharacters||[])r.length&&this.retriggerChars.add(r.charCodeAt(0))}}onDidType(t){if(!this.triggerOnType)return;const n=t.length-1,r=t.charCodeAt(n);(this.triggerChars.has(r)||this.isTriggered&&this.retriggerChars.has(r))&&this.trigger({triggerKind:ly.TriggerCharacter,triggerCharacter:t.charAt(n)})}onCursorChange(t){t.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:ly.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:ly.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(98).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}};xAe.DEFAULT_DELAY=120;let ize=xAe;function XSo(e,t){switch(t.triggerKind){case ly.Invoke:return t;case ly.ContentChange:return e;case ly.TriggerCharacter:default:return t}}var GSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},r_t=function(e,t){return function(n,r){t(n,r,e)}},rze;const fk=tn,YSo=Da("parameter-hints-next",zt.chevronDown,U(1312,"Icon for show next parameter hint.")),ZSo=Da("parameter-hints-previous",zt.chevronUp,U(1313,"Icon for show previous parameter hint."));var mB;let oze=(mB=class extends ft{constructor(t,n,r,o){super(),this.editor=t,this.model=n,this.markdownRendererService=o,this.renderDisposeables=this._register(new xt),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.keyVisible=RR.Visible.bindTo(r),this.keyMultipleSignatures=RR.MultipleSignatures.bindTo(r)}createParameterHintDOMNodes(){const t=fk(".editor-widget.parameter-hints-widget"),n=Xt(t,fk(".phwrapper"));n.tabIndex=-1;const r=Xt(n,fk(".controls")),o=Xt(r,fk(".button"+fi.asCSSSelector(ZSo))),s=Xt(r,fk(".overloads")),a=Xt(r,fk(".button"+fi.asCSSSelector(YSo)));this._register(wt(o,"click",m=>{Qo.stop(m),this.previous()})),this._register(wt(a,"click",m=>{Qo.stop(m),this.next()}));const l=fk(".body"),d=new Mie(l,{alwaysConsumeMouseWheel:!0});this._register(d),n.appendChild(d.getDomNode());const u=Xt(l,fk(".signature")),h=Xt(l,fk(".docs"));t.style.userSelect="text",this.domNodes={element:t,signature:u,overloads:s,docs:h,scrollbar:d},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(m=>{this.visible&&this.editor.layoutContentWidget(this)}));const g=()=>{if(!this.domNodes)return;const m=this.editor.getOption(59),v=this.domNodes.element;v.style.fontSize=`${m.fontSize}px`,v.style.lineHeight=`${m.lineHeight/m.fontSize}`,v.style.setProperty("--vscode-parameterHintsWidget-editorFontFamily",m.fontFamily),v.style.setProperty("--vscode-parameterHintsWidget-editorFontFamilyDefault",f1.fontFamily)};g(),this._register(an.chain(this.editor.onDidChangeConfiguration.bind(this.editor),m=>m.filter(v=>v.hasChanged(59)))(g)),this._register(this.editor.onDidLayoutChange(m=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var t;(t=this.domNodes)==null||t.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var t;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(t=this.domNodes)==null||t.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(t){if(this.renderDisposeables.clear(),!this.domNodes)return;const n=t.signatures.length>1;this.domNodes.element.classList.toggle("multiple",n),this.keyMultipleSignatures.set(n),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const r=t.signatures[t.activeSignature];if(!r)return;const o=Xt(this.domNodes.signature,fk(".code")),s=r.parameters.length>0,a=r.activeParameter??t.activeParameter;if(s)this.renderParameters(o,r,a);else{const u=Xt(o,fk("span"));u.textContent=r.label}const l=r.parameters[a];if(l!=null&&l.documentation){const u=fk("span.documentation");if(typeof l.documentation=="string")u.textContent=l.documentation;else{const h=this.renderMarkdownDocs(l.documentation);u.appendChild(h.element)}Xt(this.domNodes.docs,fk("p",{},u))}if(r.documentation!==void 0)if(typeof r.documentation=="string")Xt(this.domNodes.docs,fk("p",{},r.documentation));else{const u=this.renderMarkdownDocs(r.documentation);Xt(this.domNodes.docs,u.element)}const d=this.hasDocs(r,l);if(this.domNodes.signature.classList.toggle("has-docs",d),this.domNodes.docs.classList.toggle("empty",!d),this.domNodes.overloads.textContent=String(t.activeSignature+1).padStart(t.signatures.length.toString().length,"0")+"/"+t.signatures.length,l){let u="";const h=r.parameters[a];Array.isArray(h.label)?u=r.label.substring(h.label[0],h.label[1]):u=h.label,h.documentation&&(u+=typeof h.documentation=="string"?`, ${h.documentation}`:`, ${h.documentation.value}`),r.documentation&&(u+=typeof r.documentation=="string"?`, ${r.documentation}`:`, ${r.documentation.value}`),this.announcedLabel!==u&&(um(U(1314,"{0}, hint",u)),this.announcedLabel=u)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(t){const n=this.renderDisposeables.add(this.markdownRendererService.render(t,{context:this.editor,asyncRenderCallback:()=>{var r;(r=this.domNodes)==null||r.scrollbar.scanDomNode()}}));return n.element.classList.add("markdown-docs"),n}hasDocs(t,n){return!!(n&&typeof n.documentation=="string"&&a9(n.documentation).length>0||n&&typeof n.documentation=="object"&&a9(n.documentation).value.length>0||t.documentation&&typeof t.documentation=="string"&&a9(t.documentation).length>0||t.documentation&&typeof t.documentation=="object"&&a9(t.documentation.value).length>0)}renderParameters(t,n,r){const[o,s]=this.getParameterLabelOffsets(n,r),a=document.createElement("span");a.textContent=n.label.substring(0,o);const l=document.createElement("span");l.textContent=n.label.substring(o,s),l.className="parameter active";const d=document.createElement("span");d.textContent=n.label.substring(s),Xt(t,a,l,d)}getParameterLabelOffsets(t,n){const r=t.parameters[n];if(r){if(Array.isArray(r.label))return r.label;if(r.label.length){const o=new RegExp(`(\\W|^)${M0(r.label)}(?=\\W|$)`,"g");o.test(t.label);const s=o.lastIndex-r.label.length;return s>=0?[s,o.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return rze.ID}updateMaxHeight(){if(!this.domNodes)return;const n=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=n;const r=this.domNodes.element.getElementsByClassName("phwrapper");r.length&&(r[0].style.maxHeight=n)}},rze=mB,mB.ID="editor.widget.parameterHintsWidget",mB);oze=rze=GSo([r_t(2,Qi),r_t(3,Cp)],oze);Ve("editorHoverWidget.highlightForeground",gN,U(1315,"Foreground color of the active item in the parameter hint."));var qSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},o_t=function(e,t){return function(n,r){t(n,r,e)}},sze,kB;let EV=(kB=class extends ft{static get(t){return t.getContribution(sze.ID)}constructor(t,n,r){super(),this.editor=t,this.model=this._register(new ize(t,r.signatureHelpProvider)),this._register(this.model.onChangedHints(o=>{var s;o?(this.widget.value.show(),this.widget.value.render(o)):(s=this.widget.rawValue)==null||s.hide()})),this.widget=new zh(()=>this._register(n.createInstance(oze,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var t;(t=this.widget.rawValue)==null||t.previous()}next(){var t;(t=this.widget.rawValue)==null||t.next()}trigger(t){this.model.trigger(t,0)}},sze=kB,kB.ID="editor.controller.parameterHints",kB);EV=sze=qSo([o_t(1,Yn),o_t(2,Nn)],EV);class KSo extends Bn{constructor(){super({id:"editor.action.triggerParameterHints",label:_t(1311,"Trigger Parameter Hints"),precondition:$e.hasSignatureHelpProvider,kbOpts:{kbExpr:$e.editorTextFocus,primary:3082,weight:100}})}run(t,n){const r=EV.get(n);r==null||r.trigger({triggerKind:ly.Invoke})}}mo(EV.ID,EV,2);un(KSo);const Vnt=175,znt=$d.bindToContribution(EV.get);On(new znt({id:"closeParameterHints",precondition:RR.Visible,handler:e=>e.cancel(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:9,secondary:[1033]}}));On(new znt({id:"showPrevParameterHint",precondition:Ft.and(RR.Visible,RR.MultipleSignatures),handler:e=>e.previous(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}}));On(new znt({id:"showNextParameterHint",precondition:Ft.and(RR.Visible,RR.MultipleSignatures),handler:e=>e.next(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));const wat=class wat extends ft{constructor(t){super(),this._editor=t,this._editorObs=hl(this._editor),this._placeholderText=this._editorObs.getOption(100),this._state=Vh({owner:this,equalsFn:lNe},n=>{const r=this._placeholderText.read(n);if(r&&this._editorObs.valueIsEmpty.read(n))return{placeholder:r}}),this._shouldViewBeAlive=JSo(this,n=>{var r;return((r=this._state.read(n))==null?void 0:r.placeholder)!==void 0}),this._view=Rt(n=>{if(!this._shouldViewBeAlive.read(n))return;const r=wo("div.editorPlaceholder");n.store.add(Oi(o=>{const s=this._state.read(o),a=(s==null?void 0:s.placeholder)!==void 0;r.root.style.display=a?"block":"none",r.root.innerText=(s==null?void 0:s.placeholder)??""})),n.store.add(Oi(o=>{const s=this._editorObs.layoutInfo.read(o);r.root.style.left=`${s.contentLeft}px`,r.root.style.width=s.contentWidth-s.verticalScrollbarWidth+"px",r.root.style.top=`${this._editor.getTopForLineNumber(0)}px`})),n.store.add(Oi(o=>{r.root.style.fontFamily=this._editorObs.getOption(58).read(o),r.root.style.fontSize=this._editorObs.getOption(61).read(o)+"px",r.root.style.lineHeight=this._editorObs.getOption(75).read(o)+"px"})),n.store.add(this._editorObs.createOverlayWidget({allowEditorOverflow:!1,minContentWidthInPx:ca(0),position:ca(null),domNode:r.root}))}),this._view.recomputeInitiallyAndOnChange(this._store)}};wat.ID="editor.contrib.placeholderText";let tke=wat;function JSo(e,t){return vL(e,(n,r)=>r===!0?!0:t(n))}var e8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},t8o=function(e,t){return function(n,r){t(n,r,e)}};class n8o{constructor(t){this.instantiationService=t}init(...t){}}function i8o(e){return e()}let s_t=class extends n8o{constructor(t,n){super(n),this.init(t)}};s_t=e8o([t8o(1,Yn)],s_t);mo(tke.ID,i8o(()=>tke),0);Ve("editor.placeholder.foreground",Hlo,U(1334,"Foreground color of the placeholder text in the editor."));const W3e=Cr("textResourceConfigurationService"),DIn=Cr("textResourcePropertiesService");var r8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},kce=function(e,t){return function(n,r){t(n,r,e)}};const fH=new yn("renameInputVisible",!1,U(1391,"Whether the rename input widget is visible"));new yn("renameInputFocused",!1,U(1392,"Whether the rename input widget is focused"));let aze=class{constructor(t,n,r,o,s,a){this._editor=t,this._acceptKeybindings=n,this._themeService=r,this._keybindingService=o,this._logService=a,this.allowEditorOverflow=!0,this._disposables=new xt,this._visibleContextKey=fH.bindTo(s),this._isEditingRenameCandidate=!1,this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,this._candidates=new Set,this._beforeFirstInputFieldEditSW=new vu,this._inputWithButton=new o8o,this._disposables.add(this._inputWithButton),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{l.hasChanged(59)&&this._updateFont()})),this._disposables.add(r.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputWithButton.domNode),this._renameCandidateListView=this._disposables.add(new Hnt(this._domNode,{fontInfo:this._editor.getOption(59),onFocusChange:t=>{this._inputWithButton.input.value=t,this._isEditingRenameCandidate=!1},onSelectionChange:()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)}})),this._disposables.add(this._inputWithButton.onDidInputChange(()=>{var t,n,r;((t=this._renameCandidateListView)==null?void 0:t.focusedCandidate)!==void 0&&(this._isEditingRenameCandidate=!0),this._timeBeforeFirstInputFieldEdit??(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),((n=this._renameCandidateProvidersCts)==null?void 0:n.token.isCancellationRequested)===!1&&this._renameCandidateProvidersCts.cancel(),(r=this._renameCandidateListView)==null||r.clearFocus()})),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(t){if(!this._domNode)return;const n=t.getColor(Jz),r=t.getColor(Cet);this._domNode.style.backgroundColor=String(t.getColor(Gk)??""),this._domNode.style.boxShadow=n?` 0 0 8px 2px ${n}`:"",this._domNode.style.border=r?`1px solid ${r}`:"",this._domNode.style.color=String(t.getColor(E7n)??"");const o=t.getColor(T7n);this._inputWithButton.domNode.style.backgroundColor=String(t.getColor(jNe)??""),this._inputWithButton.input.style.backgroundColor=String(t.getColor(jNe)??""),this._inputWithButton.domNode.style.borderWidth=o?"1px":"0px",this._inputWithButton.domNode.style.borderStyle=o?"solid":"none",this._inputWithButton.domNode.style.borderColor=(o==null?void 0:o.toString())??"none"}_updateFont(){if(this._domNode===void 0)return;Oo(this._label!==void 0,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._inputWithButton.input);const t=this._editor.getOption(59);this._label.style.fontSize=`${this._computeLabelFontSize(t.fontSize)}px`}_computeLabelFontSize(t){return t*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const t=O6(this.getDomNode().ownerDocument.body),n=Kl(this._editor.getDomNode()),r=this._getTopForPosition();this._nPxAvailableAbove=r+n.top,this._nPxAvailableBelow=t.height-this._nPxAvailableAbove;const o=this._editor.getOption(75),{totalHeight:s}=dee.getLayoutInfo({lineHeight:o}),a=this._nPxAvailableBelow>s*6?[2,1]:[1,2];return{position:this._position,preference:a}}beforeRender(){var r,o;const[t,n]=this._acceptKeybindings;return this._label.innerText=U(1393,"{0} to Rename, {1} to Preview",(r=this._keybindingService.lookupKeybinding(t))==null?void 0:r.getLabel(),(o=this._keybindingService.lookupKeybinding(n))==null?void 0:o.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(t){if(t===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;Oo(this._renameCandidateListView),Oo(this._nPxAvailableAbove!==void 0),Oo(this._nPxAvailableBelow!==void 0);const n=ES(this._inputWithButton.domNode),r=ES(this._label);let o;t===2?o=this._nPxAvailableBelow:o=this._nPxAvailableAbove,this._renameCandidateListView.layout({height:o-r-n,width:s0(this._inputWithButton.domNode)})}acceptInput(t){var n;this._trace("invoking acceptInput"),(n=this._currentAcceptInput)==null||n.call(this,t)}cancelInput(t,n){var r;(r=this._currentCancelInput)==null||r.call(this,t)}focusNextRenameSuggestion(){var t;(t=this._renameCandidateListView)!=null&&t.focusNext()||(this._inputWithButton.input.value=this._currentName)}focusPreviousRenameSuggestion(){var t;(t=this._renameCandidateListView)!=null&&t.focusPrevious()||(this._inputWithButton.input.value=this._currentName)}getInput(t,n,r,o,s){const{start:a,end:l}=this._getSelection(t,n);this._renameCts=s;const d=new xt;this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,o===void 0?this._inputWithButton.button.style.display="none":(this._inputWithButton.button.style.display="flex",this._requestRenameCandidatesOnce=o,this._requestRenameCandidates(n,!1),d.add(wt(this._inputWithButton.button,"click",()=>this._requestRenameCandidates(n,!0))),d.add(wt(this._inputWithButton.button,rn.KEY_DOWN,h=>{const g=new Us(h);(g.equals(3)||g.equals(10))&&(g.stopPropagation(),g.preventDefault(),this._requestRenameCandidates(n,!0))}))),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",r),this._position=new it(t.startLineNumber,t.startColumn),this._currentName=n,this._inputWithButton.input.value=n,this._inputWithButton.input.setAttribute("selectionStart",a.toString()),this._inputWithButton.input.setAttribute("selectionEnd",l.toString()),this._inputWithButton.input.size=Math.max((t.endColumn-t.startColumn)*1.1,20),this._beforeFirstInputFieldEditSW.reset(),d.add(Hn(()=>{this._renameCts=void 0,s.dispose(!0)})),d.add(Hn(()=>{this._renameCandidateProvidersCts!==void 0&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})),d.add(Hn(()=>this._candidates.clear()));const u=new pI;return u.p.finally(()=>{d.dispose(),this._hide()}),this._currentCancelInput=h=>{var g;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(g=this._renameCandidateListView)==null||g.clearCandidates(),u.complete(h),!0},this._currentAcceptInput=h=>{this._trace("invoking _currentAcceptInput"),Oo(this._renameCandidateListView!==void 0);const g=this._renameCandidateListView.nCandidates;let m,v;const f=this._renameCandidateListView.focusedCandidate;if(f!==void 0?(this._trace("using new name from renameSuggestion"),m=f,v={k:"renameSuggestion"}):(this._trace("using new name from inputField"),m=this._inputWithButton.input.value,v=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),m===n||m.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),u.complete({newName:m,wantsPreview:r&&h,stats:{source:v,nRenameSuggestions:g,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit,nRenameSuggestionsInvocations:this._nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:this._hadAutomaticRenameSuggestionsInvocation}})},d.add(s.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),d.add(this._editor.onDidBlurEditorWidget(()=>{var h;return this.cancelInput(!((h=this._domNode)!=null&&h.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show(),u.p}_requestRenameCandidates(t,n){if(this._requestRenameCandidatesOnce!==void 0&&(this._renameCandidateProvidersCts!==void 0&&this._renameCandidateProvidersCts.dispose(!0),Oo(this._renameCts),this._inputWithButton.buttonState!=="stop")){this._renameCandidateProvidersCts=new ja;const r=n?fJ.Invoke:fJ.Automatic,o=this._requestRenameCandidatesOnce(r,this._renameCandidateProvidersCts.token);if(o.length===0){this._inputWithButton.setSparkleButton();return}n||(this._hadAutomaticRenameSuggestionsInvocation=!0),this._nRenameSuggestionsInvocations+=1,this._inputWithButton.setStopButton(),this._updateRenameCandidates(o,t,this._renameCts.token)}}_getSelection(t,n){Oo(this._editor.hasModel());const r=this._editor.getSelection();let o=0,s=n.length;return!Ee.isEmpty(r)&&!Ee.spansMultipleLines(r)&&Ee.containsRange(t,r)&&(o=Math.max(0,r.startColumn-t.startColumn),s=Math.min(t.endColumn,r.endColumn)-t.startColumn),{start:o,end:s}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._inputWithButton.input.focus(),this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute("selectionStart")),parseInt(this._inputWithButton.input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(t,n,r){const o=(...u)=>this._trace("_updateRenameCandidates",...u);o("start");const s=await YW(Promise.allSettled(t),r);if(this._inputWithButton.setSparkleButton(),s===void 0){o("returning early - received updateRenameCandidates results - undefined");return}const a=s.flatMap(u=>u.status==="fulfilled"&&Ru(u.value)?u.value:[]);o(`received updateRenameCandidates results - total (unfiltered) ${a.length} candidates.`);const l=M8(a,u=>u.newSymbolName);o(`distinct candidates - ${l.length} candidates.`);const d=l.filter(({newSymbolName:u})=>u.trim().length>0&&u!==this._inputWithButton.input.value&&u!==n&&!this._candidates.has(u));if(o(`valid distinct candidates - ${a.length} candidates.`),d.forEach(u=>this._candidates.add(u.newSymbolName)),d.length<1){o("returning early - no valid distinct candidates");return}o("setting candidates"),this._renameCandidateListView.setCandidates(d),o("asking editor to re-layout"),this._editor.layoutContentWidget(this)}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const t=this._editor.getVisibleRanges();let n;return t.length>0?n=t[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),n=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(n)}_trace(...t){this._logService.trace("RenameWidget",...t)}};aze=r8o([kce(2,Dl),kce(3,Do),kce(4,Qi),kce(5,va)],aze);class Hnt{constructor(t,n){this._disposables=new xt,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=n.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=n.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.className="rename-box rename-candidate-list-container",t.appendChild(this._listContainer),this._listWidget=Hnt._createListWidget(this._listContainer,this._candidateViewHeight,n.fontInfo),this._disposables.add(this._listWidget.onDidChangeFocus(r=>{r.elements.length===1&&n.onFocusChange(r.elements[0].newSymbolName)},this._disposables)),this._disposables.add(this._listWidget.onDidChangeSelection(r=>{r.elements.length===1&&n.onSelectionChange()},this._disposables)),this._disposables.add(this._listWidget.onDidBlur(r=>{this._listWidget.setFocus([])})),this._listWidget.style(TI({listInactiveFocusForeground:sJ,listInactiveFocusBackground:aJ}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height:t,width:n}){this._availableHeight=t,this._minimumWidth=n}setCandidates(t){this._listWidget.splice(0,0,t);const n=this._pickListHeight(this._listWidget.length),r=this._pickListWidth(t);this._listWidget.layout(n,r),this._listContainer.style.height=`${n}px`,this._listContainer.style.width=`${r}px`,A3(U(1394,"Received {0} rename suggestions",t.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(this._listWidget.length===0)return;const t=this._listWidget.getSelectedElements()[0];if(t!==void 0)return t.newSymbolName;const n=this._listWidget.getFocusedElements()[0];if(n!==void 0)return n.newSymbolName}focusNext(){if(this._listWidget.length===0)return!1;const t=this._listWidget.getFocus();if(t.length===0)return this._listWidget.focusFirst(),this._listWidget.reveal(0),!0;if(t[0]===this._listWidget.length-1)return this._listWidget.setFocus([]),this._listWidget.reveal(0),!1;{this._listWidget.focusNext();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}}focusPrevious(){if(this._listWidget.length===0)return!1;const t=this._listWidget.getFocus();if(t.length===0){this._listWidget.focusLast();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}else{if(t[0]===0)return this._listWidget.setFocus([]),!1;{this._listWidget.focusPrevious();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}}}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight:t}=dee.getLayoutInfo({lineHeight:this._lineHeight});return t}_pickListHeight(t){const n=this._candidateViewHeight*t;return Math.min(n,this._availableHeight,this._candidateViewHeight*7)}_pickListWidth(t){const n=Math.ceil(Math.max(...t.map(o=>o.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,25+n+10)}static _createListWidget(t,n,r){const o=new class{getTemplateId(a){return"candidate"}getHeight(a){return n}},s=new class{constructor(){this.templateId="candidate"}renderTemplate(a){return new dee(a,r)}renderElement(a,l,d){d.populate(a)}disposeTemplate(a){a.dispose()}};return new _2("NewSymbolNameCandidates",t,o,[s],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}}class o8o{constructor(){this._buttonHoverContent="",this._onDidInputChange=new at,this.onDidInputChange=this._onDidInputChange.event,this._disposables=new xt}get domNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="rename-input-with-button",this._domNode.style.display="flex",this._domNode.style.flexDirection="row",this._domNode.style.alignItems="center",this._inputNode=document.createElement("input"),this._inputNode.className="rename-input",this._inputNode.type="text",this._inputNode.style.border="none",this._inputNode.setAttribute("aria-label",U(1395,"Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._inputNode),this._buttonNode=document.createElement("div"),this._buttonNode.className="rename-suggestions-button",this._buttonNode.setAttribute("tabindex","0"),this._buttonGenHoverText=U(1396,"Generate New Name Suggestions"),this._buttonCancelHoverText=U(1397,"Cancel"),this._buttonHoverContent=this._buttonGenHoverText,this._disposables.add(yp().setupDelayedHover(this._buttonNode,()=>({content:this._buttonHoverContent,style:1}))),this._domNode.appendChild(this._buttonNode),this._disposables.add(wt(this.input,rn.INPUT,()=>this._onDidInputChange.fire())),this._disposables.add(wt(this.input,rn.KEY_DOWN,t=>{const n=new Us(t);(n.keyCode===15||n.keyCode===17)&&this._onDidInputChange.fire()})),this._disposables.add(wt(this.input,rn.CLICK,()=>this._onDidInputChange.fire())),this._disposables.add(wt(this.input,rn.FOCUS,()=>{this.domNode.style.outlineWidth="1px",this.domNode.style.outlineStyle="solid",this.domNode.style.outlineOffset="-1px",this.domNode.style.outlineColor="var(--vscode-focusBorder)"})),this._disposables.add(wt(this.input,rn.BLUR,()=>{this.domNode.style.outline="none"}))),this._domNode}get input(){return Oo(this._inputNode),this._inputNode}get button(){return Oo(this._buttonNode),this._buttonNode}get buttonState(){return this._buttonState}setSparkleButton(){this._buttonState="sparkle",this._sparkleIcon??(this._sparkleIcon=y3(zt.sparkle)),uh(this.button),this.button.appendChild(this._sparkleIcon),this.button.setAttribute("aria-label","Generating new name suggestions"),this._buttonHoverContent=this._buttonGenHoverText,this.input.focus()}setStopButton(){this._buttonState="stop",this._stopIcon??(this._stopIcon=y3(zt.stopCircle)),uh(this.button),this.button.appendChild(this._stopIcon),this.button.setAttribute("aria-label","Cancel generating new name suggestions"),this._buttonHoverContent=this._buttonCancelHoverText,this.input.focus()}dispose(){this._disposables.dispose()}}const Eq=class Eq{constructor(t,n){this._domNode=document.createElement("div"),this._domNode.className="rename-box rename-candidate",this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height=`${n.lineHeight}px`,this._domNode.style.padding=`${Eq._PADDING}px`;const r=document.createElement("div");r.style.display="flex",r.style.alignItems="center",r.style.width=r.style.height=`${n.lineHeight*.8}px`,this._domNode.appendChild(r),this._icon=y3(zt.sparkle),this._icon.style.display="none",r.appendChild(this._icon),this._label=document.createElement("div"),Fu(this._label,n),this._domNode.appendChild(this._label),t.appendChild(this._domNode)}populate(t){this._updateIcon(t),this._updateLabel(t)}_updateIcon(t){var r;const n=!!((r=t.tags)!=null&&r.includes(KNe.AIGenerated));this._icon.style.display=n?"inherit":"none"}_updateLabel(t){this._label.innerText=t.newSymbolName}static getLayoutInfo({lineHeight:t}){return{totalHeight:t+Eq._PADDING*2}}dispose(){}};Eq._PADDING=2;let dee=Eq;var s8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_7=function(e,t){return function(n,r){t(n,r,e)}},lze;class $nt{constructor(t,n,r){this.model=t,this.position=n,this._providerRenameIdx=0,this._providers=r.ordered(t)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(t){const n=[];for(this._providerRenameIdx=0;this._providerRenameIdx0?n.join(` +`))});break;case"saveTextureAtlas":r.invokeFunction(async a=>{const l=a.get(H8),d=a.get(RCt),u=l.getWorkspace().folders;if(u.length>0){const h=mg.atlas,g=[];for(const[m,v]of h.pages.entries())g.push(d.writeFile(vi.joinPath(u[0].uri,`textureAtlasPage${m}_actual.png`),B9.wrap(new Uint8Array(await(await v.source.convertToBlob()).arrayBuffer()))),d.writeFile(vi.joinPath(u[0].uri,`textureAtlasPage${m}_usage.png`),B9.wrap(new Uint8Array(await(await v.getUsagePreview()).arrayBuffer()))));await Promise.all(g)}});break;case"drawGlyph":r.invokeFunction(async a=>{var E,T,D;const l=a.get(ar),d=a.get(RCt),u=a.get(Rf),g=a.get(H8).getWorkspace().folders;if(g.length===0)return;const m=mg.atlas,v=l.getValue("editor.fontFamily"),f=l.getValue("editor.fontSize"),k=new vJ(f,v,vs().devicePixelRatio,mg.decorationStyleCache);let A=await u.input({prompt:"Enter a character to draw (prefix with 0x for code point))"});if(!A)return;const p=(T=(E=A.match(/0x(?[0-9a-f]+)/i))==null?void 0:E.groups)==null?void 0:T.codePoint;p!==void 0&&(A=String.fromCodePoint(parseInt(p,16)));const b=0,O=m.getGlyph(k,A,b,0,0);if(!O)return;const y=(D=m.pages[O.pageIndex].source.getContext("2d"))==null?void 0:D.getImageData(O.x,O.y,O.w,O.h);if(!y)return;const C=new OffscreenCanvas(y.width,y.height);uR(C.getContext("2d")).putImageData(y,0,0);const S=await C.convertToBlob({type:"image/png"}),L=vi.joinPath(g[0].uri,`glyph_${A}_${b}_${f}px_${v.replaceAll(/[,\\\/\.'\s]/g,"_")}.png`);await d.writeFile(L,B9.wrap(new Uint8Array(await S.arrayBuffer())))});break}}}un(C_o);var ub;(function(e){e.NoAutoFocus="noAutoFocus",e.FocusIfVisible="focusIfVisible",e.AutoFocusImmediately="autoFocusImmediately"})(ub||(ub={}));class __o extends Bn{constructor(){super({id:fBn,label:_t(1107,"Show or Focus Hover"),metadata:{description:_t(1108,"Show or focus the editor hover which shows documentation, references, and other content for a symbol at the current cursor position."),args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[ub.NoAutoFocus,ub.FocusIfVisible,ub.AutoFocusImmediately],enumDescriptions:[U(1104,"The hover will not automatically take focus."),U(1105,"The hover will take focus only if it is already visible."),U(1106,"The hover will automatically take focus when it appears.")],default:ub.FocusIfVisible}}}}]},precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:Uc(2089,2087),weight:100}})}run(t,n,r){if(!n.hasModel())return;const o=If.get(n);if(!o)return;const s=r==null?void 0:r.focus;let a=ub.FocusIfVisible;Object.values(ub).includes(s)?a=s:typeof s=="boolean"&&s&&(a=ub.AutoFocusImmediately);const l=u=>{const h=n.getPosition(),g=new Ee(h.lineNumber,h.column,h.lineNumber,h.column);o.showContentHover(g,1,2,u)},d=n.getOption(2)===2;o.isHoverVisible?a!==ub.NoAutoFocus?o.focus():l(d):l(d||a===ub.AutoFocusImmediately)}}class S_o extends Bn{constructor(){super({id:Yvo,label:_t(1109,"Show Definition Preview Hover"),precondition:void 0,metadata:{description:_t(1110,"Show the definition preview hover in the editor.")}})}run(t,n){const r=If.get(n);if(!r)return;const o=n.getPosition();if(!o)return;const s=new Ee(o.lineNumber,o.column,o.lineNumber,o.column),a=aee.get(n);if(!a)return;a.startFindDefinitionFromCursor(o).then(()=>{r.showContentHover(s,1,2,!0)})}}class L_o extends Bn{constructor(){super({id:Zvo,label:_t(1111,"Hide Hover"),alias:"Hide Content Hover",precondition:void 0})}run(t,n){var r;(r=If.get(n))==null||r.hideContentHover()}}class x_o extends Bn{constructor(){super({id:qvo,label:_t(1112,"Scroll Up Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:16,weight:100},metadata:{description:_t(1113,"Scroll up the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollUp()}}class E_o extends Bn{constructor(){super({id:Kvo,label:_t(1114,"Scroll Down Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:18,weight:100},metadata:{description:_t(1115,"Scroll down the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollDown()}}class T_o extends Bn{constructor(){super({id:Jvo,label:_t(1116,"Scroll Left Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:15,weight:100},metadata:{description:_t(1117,"Scroll left the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollLeft()}}class Q_o extends Bn{constructor(){super({id:eAo,label:_t(1118,"Scroll Right Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:17,weight:100},metadata:{description:_t(1119,"Scroll right the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.scrollRight()}}class D_o extends Bn{constructor(){super({id:tAo,label:_t(1120,"Page Up Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:11,secondary:[528],weight:100},metadata:{description:_t(1121,"Page up the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.pageUp()}}class B_o extends Bn{constructor(){super({id:nAo,label:_t(1122,"Page Down Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:12,secondary:[530],weight:100},metadata:{description:_t(1123,"Page down the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.pageDown()}}class R_o extends Bn{constructor(){super({id:iAo,label:_t(1124,"Go To Top Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:14,secondary:[2064],weight:100},metadata:{description:_t(1125,"Go to the top of the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.goToTop()}}class I_o extends Bn{constructor(){super({id:rAo,label:_t(1126,"Go To Bottom Hover"),precondition:$e.hoverFocused,kbOpts:{kbExpr:$e.hoverFocused,primary:13,secondary:[2066],weight:100},metadata:{description:_t(1127,"Go to the bottom of the editor hover.")}})}run(t,n){const r=If.get(n);r&&r.goToBottom()}}class M_o extends Bn{constructor(){super({id:A3e,label:oAo,alias:"Increase Hover Verbosity Level",precondition:$e.hoverVisible})}run(t,n,r){const o=If.get(n);if(!o)return;const s=(r==null?void 0:r.index)!==void 0?r.index:o.focusedHoverPartIndex();o.updateHoverVerbosityLevel(d0.Increase,s,r==null?void 0:r.focus)}}class P_o extends Bn{constructor(){super({id:p3e,label:sAo,alias:"Decrease Hover Verbosity Level",precondition:$e.hoverVisible})}run(t,n,r){var a;const o=If.get(n);if(!o)return;const s=(r==null?void 0:r.index)!==void 0?r.index:o.focusedHoverPartIndex();(a=If.get(n))==null||a.updateHoverVerbosityLevel(d0.Decrease,s,r==null?void 0:r.focus)}}class F_o{constructor(t){this._editor=t}computeSync(t){var a;const n=l=>({value:l}),r=this._editor.getLineDecorations(t.lineNumber),o=[],s=t.laneOrLine==="lineNo";if(!r)return o;for(const l of r){const d=((a=l.options.glyphMargin)==null?void 0:a.position)??p3.Center;if(!s&&d!==t.laneOrLine)continue;const u=s?l.options.lineNumberHoverMessage:l.options.glyphMarginHoverMessage;!u||fV(u)||o.push(...WJe(u).map(n))}return o}}var N_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},U_o=function(e,t){return function(n,r){t(n,r,e)}},$Ve;const t_t=tn;var hB;let XVe=(hB=class extends ft{constructor(t,n){super(),this._markdownRendererService=n,this.allowEditorOverflow=!0,this._renderDisposeables=this._register(new xt),this._editor=t,this._isVisible=!1,this._messages=[],this._hover=this._register(new Ztt(!0)),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._hoverOperation=this._register(new vBn(this._editor,new F_o(this._editor))),this._register(this._hoverOperation.onResult(r=>this._withResult(r))),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(59)&&this._updateFont()})),this._register(wc(this._hover.containerDomNode,"mouseleave",r=>{this._onMouseLeave(r)})),this._editor.addOverlayWidget(this)}dispose(){this._hoverComputerOptions=void 0,this._editor.removeOverlayWidget(this),super.dispose()}getId(){return $Ve.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(n=>this._editor.applyFontInfo(n))}_onModelDecorationsChanged(){this._isVisible&&this._hoverComputerOptions&&(this._hoverOperation.cancel(),this._hoverOperation.start(0,this._hoverComputerOptions))}showsOrWillShow(t){const n=t.target;return n.type===2&&n.detail.glyphMarginLane?(this._startShowingAt(n.position.lineNumber,n.detail.glyphMarginLane),!0):n.type===3?(this._startShowingAt(n.position.lineNumber,"lineNo"),!0):!1}_startShowingAt(t,n){this._hoverComputerOptions&&this._hoverComputerOptions.lineNumber===t&&this._hoverComputerOptions.laneOrLine===n||(this._hoverOperation.cancel(),this.hide(),this._hoverComputerOptions={lineNumber:t,laneOrLine:n},this._hoverOperation.start(0,this._hoverComputerOptions))}hide(){this._hoverComputerOptions=void 0,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(t){this._messages=t.value,this._messages.length>0?this._renderMessages(t.options.lineNumber,t.options.laneOrLine,this._messages):this.hide()}_renderMessages(t,n,r){this._renderDisposeables.clear();const o=document.createDocumentFragment();for(const s of r){const a=t_t("div.hover-row.markdown-hover"),l=Xt(a,t_t("div.hover-contents")),d=this._renderDisposeables.add(this._markdownRendererService.render(s.value,{context:this._editor}));l.appendChild(d.element),o.appendChild(a)}this._updateContents(o),this._showAt(t,n)}_updateContents(t){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(t),this._updateFont()}_showAt(t,n){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const r=this._editor.getLayoutInfo(),o=this._editor.getTopForLineNumber(t),s=this._editor.getScrollTop(),a=this._editor.getOption(75),l=this._hover.containerDomNode.clientHeight,d=o-s-(l-a)/2,u=r.glyphMarginLeft+r.glyphMarginWidth+(n==="lineNo"?r.lineNumbersWidth:0),g=r.height-l,m=Math.max(0,Math.min(Math.round(d),g));if(this._editor.getOption(51)){const f=this._editor.getDomNode();if(f){const k=Kl(f);this._hover.containerDomNode.style.position="fixed",this._hover.containerDomNode.style.left=`${k.left+u}px`,this._hover.containerDomNode.style.top=`${k.top+m}px`}}else this._hover.containerDomNode.style.position="absolute",this._hover.containerDomNode.style.left=`${u}px`,this._hover.containerDomNode.style.top=`${m}px`;this._hover.containerDomNode.style.zIndex="11"}_onMouseLeave(t){const n=this._editor.getDomNode();(!n||!b3e(n,t.x,t.y))&&this.hide()}},$Ve=hB,hB.ID="editor.contrib.modesGlyphHoverWidget",hB);XVe=$Ve=N_o([U_o(1,Cp)],XVe);var j_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},W_o=function(e,t){return function(n,r){t(n,r,e)}},Gj;let Y0e=(Gj=class extends ft{constructor(t,n){super(),this._editor=t,this._instantiationService=n,this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new xt,this._hoverState={mouseDown:!1},this._reactToEditorMouseMoveRunner=this._register(new Es(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(69)&&(this._unhookListeners(),this._hookListeners())}))}_hookListeners(){const t=this._editor.getOption(69);this._hoverSettings={enabled:t.enabled,sticky:t.sticky,hidingDelay:t.hidingDelay},t.enabled?(this._listenersStore.add(this._editor.onMouseDown(n=>this._onEditorMouseDown(n))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n)))):(this._listenersStore.add(this._editor.onMouseMove(n=>this._onEditorMouseMove(n))),this._listenersStore.add(this._editor.onKeyDown(n=>this._onKeyDown(n)))),this._listenersStore.add(this._editor.onMouseLeave(n=>this._onEditorMouseLeave(n))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this.hideGlyphHover()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(n=>this._onEditorScrollChanged(n)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(t){(t.scrollTopChanged||t.scrollLeftChanged)&&this.hideGlyphHover()}_onEditorMouseDown(t){this._hoverState.mouseDown=!0,!this._isMouseOnGlyphHoverWidget(t)&&this.hideGlyphHover()}_isMouseOnGlyphHoverWidget(t){var r;const n=(r=this._glyphWidget)==null?void 0:r.getDomNode();return n?b3e(n,t.event.posx,t.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(t){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._isMouseOnGlyphHoverWidget(t))||this.hideGlyphHover()}_shouldNotRecomputeCurrentHoverWidget(t){const n=this._hoverSettings.sticky,r=this._isMouseOnGlyphHoverWidget(t);return n&&r}_onEditorMouseMove(t){if(this.shouldKeepOpenOnEditorMouseMoveOrLeave)return;if(this._mouseMoveEvent=t,this._shouldNotRecomputeCurrentHoverWidget(t)){this._reactToEditorMouseMoveRunner.cancel();return}this._reactToEditorMouseMove(t)}_reactToEditorMouseMove(t){!t||this._tryShowHoverWidget(t)||this.hideGlyphHover()}_tryShowHoverWidget(t){return this._getOrCreateGlyphWidget().showsOrWillShow(t)}_onKeyDown(t){this._editor.hasModel()&&(t.keyCode===5||t.keyCode===6||t.keyCode===57||t.keyCode===4||this.hideGlyphHover())}hideGlyphHover(){var t;(t=this._glyphWidget)==null||t.hide()}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=this._instantiationService.createInstance(XVe,this._editor)),this._glyphWidget}dispose(){var t;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(t=this._glyphWidget)==null||t.dispose()}},Gj.ID="editor.contrib.marginHover",Gj);Y0e=j_o([W_o(1,Yn)],Y0e);class V_o{}class z_o{}class H_o{}mo(If.ID,If,2);mo(Y0e.ID,Y0e,2);un(__o);un(S_o);un(L_o);un(x_o);un(E_o);un(T_o);un(Q_o);un(D_o);un(B_o);un(R_o);un(I_o);un(M_o);un(P_o);BI.register(zJ);BI.register(EWe);yA((e,t)=>{const n=e.getColor(wet);n&&(t.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${n.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${n.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${n.transparent(.5)}; }`))});R3e.register(new V_o);R3e.register(new z_o);R3e.register(new H_o);function _In(e,t,n,r){if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return[];const o=t.getLanguageConfiguration(e.getLanguageId()).indentRulesSupport;if(!o)return[];const s=new det(e,o,t);for(r=Math.min(r,e.getLineCount());n<=r&&s.shouldIgnore(n);)n++;if(n>r-1)return[];const{tabSize:a,indentSize:l,insertSpaces:d}=e.getOptions(),u=(k,A)=>(A=A||1,gA.shiftIndent(k,k.length+A,a,l,d)),h=(k,A)=>(A=A||1,gA.unshiftIndent(k,k.length+A,a,l,d)),g=[],m=e.getLineContent(n);let v=Ys(m),f=v;s.shouldIncrease(n)?(f=u(f),v=u(v)):s.shouldIndentNextLine(n)&&(f=u(f)),n++;for(let k=n;k<=r;k++){if($_o(e,k))continue;const A=e.getLineContent(k),p=Ys(A),b=f;s.shouldDecrease(k,b)&&(f=h(f),v=h(v)),p!==f&&g.push($l.replaceMove(new Qn(k,1,k,p.length+1),tet(f,l,d))),!s.shouldIgnore(k)&&(s.shouldIncrease(k,b)?(v=u(v),f=v):s.shouldIndentNextLine(k,b)?f=u(f):f=v)}return g}function $_o(e,t){return e.tokenization.isCheapToTokenize(t)?e.tokenization.getLineTokens(t).getStandardTokenType(0)===2:!1}var X_o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},G_o=function(e,t){return function(n,r){t(n,r,e)}};const bAe=class bAe extends Bn{constructor(){super({id:bAe.ID,label:_t(1148,"Convert Indentation to Spaces"),precondition:$e.writable,metadata:{description:_t(1149,"Convert the tab indentation to spaces.")}})}run(t,n){const r=n.getModel();if(!r)return;const o=r.getOptions(),s=n.getSelection();if(!s)return;const a=new J_o(s,o.tabSize);n.pushUndoStop(),n.executeCommands(this.id,[a]),n.pushUndoStop(),r.updateOptions({insertSpaces:!0})}};bAe.ID="editor.action.indentationToSpaces";let GVe=bAe;const wAe=class wAe extends Bn{constructor(){super({id:wAe.ID,label:_t(1150,"Convert Indentation to Tabs"),precondition:$e.writable,metadata:{description:_t(1151,"Convert the spaces indentation to tabs.")}})}run(t,n){const r=n.getModel();if(!r)return;const o=r.getOptions(),s=n.getSelection();if(!s)return;const a=new eSo(s,o.tabSize);n.pushUndoStop(),n.executeCommands(this.id,[a]),n.pushUndoStop(),r.updateOptions({insertSpaces:!1})}};wAe.ID="editor.action.indentationToTabs";let YVe=wAe;class Wnt extends Bn{constructor(t,n,r){super(r),this.insertSpaces=t,this.displaySizeOnly=n}run(t,n){const r=t.get(Rf),o=t.get(ml),s=n.getModel();if(!s)return;const a=o.getCreationOptions(s.getLanguageId(),s.uri,s.isForSimpleWidget),l=s.getOptions(),d=[1,2,3,4,5,6,7,8].map(h=>({id:h.toString(),label:h.toString(),description:h===a.tabSize&&h===l.tabSize?U(1144,"Configured Tab Size"):h===a.tabSize?U(1145,"Default Tab Size"):h===l.tabSize?U(1146,"Current Tab Size"):void 0})),u=Math.min(s.getOptions().tabSize-1,7);setTimeout(()=>{r.pick(d,{placeHolder:U(1147,"Select Tab Size for Current File"),activeItem:d[u]}).then(h=>{if(h&&s&&!s.isDisposed()){const g=parseInt(h.label,10);this.displaySizeOnly?s.updateOptions({tabSize:g}):s.updateOptions({tabSize:g,indentSize:g,insertSpaces:this.insertSpaces})}})},50)}}const OAe=class OAe extends Wnt{constructor(){super(!1,!1,{id:OAe.ID,label:_t(1152,"Indent Using Tabs"),precondition:void 0,metadata:{description:_t(1153,"Use indentation with tabs.")}})}};OAe.ID="editor.action.indentUsingTabs";let ZVe=OAe;const yAe=class yAe extends Wnt{constructor(){super(!0,!1,{id:yAe.ID,label:_t(1154,"Indent Using Spaces"),precondition:void 0,metadata:{description:_t(1155,"Use indentation with spaces.")}})}};yAe.ID="editor.action.indentUsingSpaces";let qVe=yAe;const CAe=class CAe extends Wnt{constructor(){super(!0,!0,{id:CAe.ID,label:_t(1156,"Change Tab Display Size"),precondition:void 0,metadata:{description:_t(1157,"Change the space size equivalent of the tab.")}})}};CAe.ID="editor.action.changeTabDisplaySize";let KVe=CAe;const _Ae=class _Ae extends Bn{constructor(){super({id:_Ae.ID,label:_t(1158,"Detect Indentation from Content"),precondition:void 0,metadata:{description:_t(1159,"Detect the indentation from content.")}})}run(t,n){const r=t.get(ml),o=n.getModel();if(!o)return;const s=r.getCreationOptions(o.getLanguageId(),o.uri,o.isForSimpleWidget);o.detectIndentation(s.insertSpaces,s.tabSize)}};_Ae.ID="editor.action.detectIndentation";let JVe=_Ae;class Y_o extends Bn{constructor(){super({id:"editor.action.reindentlines",label:_t(1160,"Reindent Lines"),precondition:$e.writable,metadata:{description:_t(1161,"Reindent the lines of the editor.")},canTriggerInlineEdits:!0})}run(t,n){const r=t.get(kl),o=n.getModel();if(!o)return;const s=_In(o,r,1,o.getLineCount());s.length>0&&(n.pushUndoStop(),n.executeEdits(this.id,s),n.pushUndoStop())}}class Z_o extends Bn{constructor(){super({id:"editor.action.reindentselectedlines",label:_t(1162,"Reindent Selected Lines"),precondition:$e.writable,metadata:{description:_t(1163,"Reindent the selected lines of the editor.")},canTriggerInlineEdits:!0})}run(t,n){const r=t.get(kl),o=n.getModel();if(!o)return;const s=n.getSelections();if(s===null)return;const a=[];for(const l of s){let d=l.startLineNumber,u=l.endLineNumber;if(d!==u&&l.endColumn===1&&u--,d===1){if(d===u)continue}else d--;const h=_In(o,r,d,u);a.push(...h)}a.length>0&&(n.pushUndoStop(),n.executeEdits(this.id,a),n.pushUndoStop())}}class q_o{constructor(t,n){this._initialSelection=n,this._edits=[],this._selectionId=null;for(const r of t)r.range&&typeof r.text=="string"&&this._edits.push(r)}getEditOperations(t,n){for(const o of this._edits)n.addEditOperation(Ee.lift(o.range),o.text);let r=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(r=!0,this._selectionId=n.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(r=!0,this._selectionId=n.trackSelection(this._initialSelection,!1))),r||(this._selectionId=n.trackSelection(this._initialSelection))}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}var Yj;let Z0e=(Yj=class{constructor(t,n){this.editor=t,this._languageConfigurationService=n,this.callOnDispose=new xt,this.callOnModel=new xt,this.callOnDispose.add(t.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(t.onDidChangeModel(()=>this.update())),this.callOnDispose.add(t.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(!this.editor.getOption(17)||this.editor.getOption(16)<4)&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:t})=>{this.trigger(t)}))}trigger(t){const n=this.editor.getSelections();if(n===null||n.length>1)return;const r=this.editor.getModel();if(!r||this.rangeContainsOnlyWhitespaceCharacters(r,t)||!this.editor.getOption(18)&&K_o(r,t)||!r.tokenization.isCheapToTokenize(t.getStartPosition().lineNumber))return;const s=this.editor.getOption(16),{tabSize:a,indentSize:l,insertSpaces:d}=r.getOptions(),u=[],h={shiftIndent:f=>gA.shiftIndent(f,f.length+1,a,l,d),unshiftIndent:f=>gA.unshiftIndent(f,f.length+1,a,l,d)};let g=t.startLineNumber,m=r.getLineContent(g);if(!/\S/.test(m.substring(0,t.startColumn-1))){const f=dZ(s,r,r.getLanguageId(),g,h,this._languageConfigurationService);if(f!==null){const k=Ys(m),A=r0(f,a),p=r0(k,a);if(A!==p){const b=BZ(A,a,d);u.push({range:new Ee(g,1,g,k.length+1),text:b}),m=b+m.substring(k.length)}else{const b=l7n(r,g,this._languageConfigurationService);if(b===0||b===8)return}}}const v=g;for(;gr.tokenization.getLineTokens(A),getLanguageId:()=>r.getLanguageId(),getLanguageIdAtPosition:(A,p)=>r.getLanguageIdAtPosition(A,p)},getLineContent:A=>A===v?m:r.getLineContent(A)},r.getLanguageId(),g+1,h,this._languageConfigurationService);if(k!==null){const A=r0(k,a),p=r0(Ys(r.getLineContent(g+1)),a);if(A!==p){const b=A-p;for(let w=g+1;w<=t.endLineNumber;w++){const O=r.getLineContent(w),y=Ys(O),_=r0(y,a)+b,S=BZ(_,a,d);S!==y&&u.push({range:new Ee(w,1,w,y.length+1),text:S})}}}}if(u.length>0){this.editor.pushUndoStop();const f=new q_o(u,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",f),this.editor.pushUndoStop()}}rangeContainsOnlyWhitespaceCharacters(t,n){const r=s=>s.trim().length===0;let o=!0;if(n.startLineNumber===n.endLineNumber){const a=t.getLineContent(n.startLineNumber).substring(n.startColumn-1,n.endColumn-1);o=r(a)}else for(let s=n.startLineNumber;s<=n.endLineNumber;s++){const a=t.getLineContent(s);if(s===n.startLineNumber){const l=a.substring(n.startColumn-1);o=r(l)}else if(s===n.endLineNumber){const l=a.substring(0,n.endColumn-1);o=r(l)}else o=t.getLineFirstNonWhitespaceColumn(s)===0;if(!o)break}return o}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}},Yj.ID="editor.contrib.autoIndentOnPaste",Yj);Z0e=X_o([G_o(1,kl)],Z0e);function K_o(e,t){const n=r=>Wio(e,r)===2;return n(t.getStartPosition())||n(t.getEndPosition())}function SIn(e,t,n,r){if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return;let o="";for(let a=0;a=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},iSo=function(e,t){return function(n,r){t(n,r,e)}},Che,s6;let SV=(s6=class{static get(t){return t.getContribution(Che.ID)}constructor(t,n){this.editor=t,this.editorWorkerService=n,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(t,n){var d;(d=this.currentRequest)==null||d.cancel();const r=this.editor.getSelection(),o=this.editor.getModel();if(!o||!r)return;let s=r;if(s.startLineNumber!==s.endLineNumber)return;const a=new RDn(this.editor,5),l=o.uri;return this.editorWorkerService.canNavigateValueSet(l)?(this.currentRequest=Fd(u=>this.editorWorkerService.navigateValueSet(l,s,n)),this.currentRequest.then(u=>{var f;if(!u||!u.range||!u.value||!a.validate(this.editor))return;const h=Ee.lift(u.range);let g=u.range;const m=u.value.length-(s.endColumn-s.startColumn);g={startLineNumber:g.startLineNumber,startColumn:g.startColumn,endLineNumber:g.endLineNumber,endColumn:g.startColumn+u.value.length},m>1&&(s=new Qn(s.startLineNumber,s.startColumn,s.endLineNumber,s.endColumn+m-1));const v=new tSo(h,s,u.value);this.editor.pushUndoStop(),this.editor.executeCommand(t,v),this.editor.pushUndoStop(),this.decorations.set([{range:g,options:Che.DECORATION}]),(f=this.decorationRemover)==null||f.cancel(),this.decorationRemover=Cy(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(zi)}).catch(zi)):Promise.resolve(void 0)}},Che=s6,s6.ID="editor.contrib.inPlaceReplaceController",s6.DECORATION=Gi.register({description:"in-place-replace",className:"valueSetReplacement"}),s6);SV=Che=nSo([iSo(1,S1)],SV);class rSo extends Bn{constructor(){super({id:"editor.action.inPlaceReplace.up",label:_t(1240,"Replace with Previous Value"),precondition:$e.writable,kbOpts:{kbExpr:$e.editorTextFocus,primary:3159,weight:100}})}run(t,n){const r=SV.get(n);return r?r.run(this.id,!1):Promise.resolve(void 0)}}class oSo extends Bn{constructor(){super({id:"editor.action.inPlaceReplace.down",label:_t(1241,"Replace with Next Value"),precondition:$e.writable,kbOpts:{kbExpr:$e.editorTextFocus,primary:3161,weight:100}})}run(t,n){const r=SV.get(n);return r?r.run(this.id,!0):Promise.resolve(void 0)}}mo(SV.ID,SV,4);un(rSo);un(oSo);class sSo{constructor(t){this._selection=t,this._selectionId=null}getEditOperations(t,n){const r=aSo(t);r&&n.addEditOperation(r.range,r.text),this._selectionId=n.trackSelection(this._selection)}computeCursorState(t,n){return n.getTrackedSelection(this._selectionId)}}function aSo(e){const t=e.getLineCount(),n=e.getLineContent(t),r=Z4(n)===-1;if(!(!t||r))return $l.insert(new it(t,e.getLineMaxColumn(t)),e.getEOL())}const SAe=class SAe extends Bn{constructor(){super({id:SAe.ID,label:_t(1242,"Insert Final New Line"),precondition:$e.writable})}run(t,n,r){const o=n.getSelection();if(o===null)return;const s=new sSo(o);n.pushUndoStop(),n.executeCommands(this.id,[s]),n.pushUndoStop()}};SAe.ID="editor.action.insertFinalNewLine";let eze=SAe;un(eze);class lSo extends Bn{constructor(){super({id:"expandLineSelection",label:_t(1243,"Expand Line Selection"),precondition:void 0,kbOpts:{weight:0,kbExpr:$e.textInputFocus,primary:2090}})}run(t,n,r){if(r=r||{},!n.hasModel())return;const o=n._getViewModel();o.model.pushStackElement(),o.setCursorStates(r.source,3,th.expandLineSelection(o,o.getCursorStates())),o.revealAllCursors(r.source,!0)}}un(lSo);var cSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},fce=function(e,t){return function(n,r){t(n,r,e)}},_he;const LIn=new yn("LinkedEditingInputVisible",!1),dSo="linked-editing-decoration";var a6;let LV=(a6=class extends ft{static get(t){return t.getContribution(_he.ID)}constructor(t,n,r,o,s){super(),this.languageConfigurationService=o,this._syncRangesToken=0,this._localToDispose=this._register(new xt),this._editor=t,this._providers=r.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=LIn.bindTo(n),this._debounceInformation=s.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new xt),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequestCts=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(a=>{(a.hasChanged(78)||a.hasChanged(106))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(t){const n=this._editor.getModel(),r=n!==null&&(this._editor.getOption(78)||this._editor.getOption(106))&&this._providers.has(n);if(r===this._enabled&&!t||(this._enabled=r,this.clearRanges(),this._localToDispose.clear(),!r||n===null))return;this._localToDispose.add(an.runAndSubscribe(n.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition()}));const o=new dA(this._debounceInformation.get(n)),s=()=>{this._rangeUpdateTriggerPromise=o.trigger(()=>this.updateRanges(),this._debounceDuration??this._debounceInformation.get(n))},a=new dA(0),l=d=>{this._rangeSyncTriggerPromise=a.trigger(()=>this._syncRanges(d))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{s()})),this._localToDispose.add(this._editor.onDidChangeModelContent(d=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const u=this._currentDecorations.getRange(0);if(u&&d.changes.every(h=>u.intersectRanges(h.range))){l(this._syncRangesToken);return}}s()})),this._localToDispose.add({dispose:()=>{o.dispose(),a.dispose()}}),this.updateRanges()}_syncRanges(t){if(!this._editor.hasModel()||t!==this._syncRangesToken||this._currentDecorations.length===0)return;const n=this._editor.getModel(),r=this._currentDecorations.getRange(0);if(!r||r.startLineNumber!==r.endLineNumber)return this.clearRanges();const o=n.getValueInRange(r);if(this._currentWordPattern){const a=o.match(this._currentWordPattern);if((a?a[0].length:0)!==o.length)return this.clearRanges()}const s=[];for(let a=1,l=this._currentDecorations.length;a1){this.clearRanges();return}const r=this._editor.getModel(),o=r.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===o){if(n.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const l=this._currentDecorations.getRange(0);if(l&&l.containsPosition(n))return}}if(!((a=this._currentRequestPosition)!=null&&a.equals(n))){const l=this._currentDecorations.getRange(0);l!=null&&l.containsPosition(n)||this.clearRanges()}this._currentRequestPosition=n,this._currentRequestModelVersion=o;const s=this._currentRequestCts=new ja;try{const l=new vu(!1),d=await xIn(this._providers,r,n,s.token);if(this._debounceInformation.update(r,l.elapsed()),s!==this._currentRequestCts||(this._currentRequestCts=null,o!==r.getVersionId()))return;let u=[];d!=null&&d.ranges&&(u=d.ranges),this._currentWordPattern=(d==null?void 0:d.wordPattern)||this._languageWordPattern;let h=!1;for(let m=0,v=u.length;m({range:m,options:_he.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(g),this._syncRangesToken++}catch(l){C2(l)||zi(l),(this._currentRequestCts===s||!this._currentRequestCts)&&this.clearRanges()}}},_he=a6,a6.ID="editor.contrib.linkedEditing",a6.DECORATION=Gi.register({description:"linked-editing",stickiness:0,className:dSo}),a6);LV=_he=cSo([fce(1,Qi),fce(2,Nn),fce(3,kl),fce(4,CA)],LV);class uSo extends Bn{constructor(){super({id:"editor.action.linkedEditing",label:_t(1276,"Start Linked Editing"),precondition:Ft.and($e.writable,$e.hasRenameProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:3132,weight:100}})}runCommand(t,n){const r=t.get(yo),[o,s]=Array.isArray(n)&&n||[void 0,void 0];return vi.isUri(o)&&it.isIPosition(s)?r.openCodeEditor({resource:o},r.getActiveCodeEditor()).then(a=>{a&&(a.setPosition(s),a.invokeWithinContext(l=>(this.reportTelemetry(l,a),this.run(l,a))))},zi):super.runCommand(t,n)}run(t,n){const r=LV.get(n);return r?Promise.resolve(r.updateRanges(!0)):Promise.resolve()}}const hSo=$d.bindToContribution(LV.get);On(new hSo({id:"cancelLinkedEditingInput",precondition:LIn,handler:e=>e.clearRanges(),kbOpts:{kbExpr:$e.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));function xIn(e,t,n,r){const o=e.ordered(t);return EJe(o.map(s=>async()=>{try{return await s.provideLinkedEditingRanges(t,n,r)}catch(a){Nc(a);return}}),s=>!!s&&yg(s==null?void 0:s.ranges))}Ve("editor.linkedEditingBackground",{dark:Dt.fromHex("#f00").transparent(.3),light:Dt.fromHex("#f00").transparent(.3),hcDark:Dt.fromHex("#f00").transparent(.3),hcLight:Dt.white},U(1275,"Background color when the editor auto renames on type."));_1("_executeLinkedEditingProvider",(e,t,n)=>{const{linkedEditingRangeProvider:r}=e.get(Nn);return xIn(r,t,n,Er.None)});mo(LV.ID,LV,1);un(uSo);let fSo=class{constructor(t,n){this._link=t,this._provider=n}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(t){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,t)).then(n=>(this._link=n||this._link,this._link.url?this.resolve(t):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}};const xq=class xq{constructor(t){this._disposables=new xt;let n=[];for(const[r,o]of t){const s=r.links.map(a=>new fSo(a,o));n=xq._union(n,s),AI(r)&&(this._disposables??(this._disposables=new xt),this._disposables.add(r))}this.links=n}dispose(){var t;(t=this._disposables)==null||t.dispose(),this.links.length=0}static _union(t,n){const r=[];let o,s,a,l;for(o=0,a=0,s=t.length,l=n.length;o{try{const d=await a.provideLinks(t,n);d&&(r[l]=[d,a])}catch(d){Nc(d)}});await Promise.all(o);let s=new q0e(P3(r));return n.isCancellationRequested&&(s.dispose(),s=q0e.Empty),s}uo.registerCommand("_executeLinkProvider",async(e,...t)=>{let[n,r]=t;Oo(n instanceof vi),typeof r!="number"&&(r=0);const{linkProvider:o}=e.get(Nn),s=e.get(ml).getModel(n);if(!s)return[];const a=await EIn(o,s,Er.None);if(!a)return[];for(let d=0;d=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gce=function(e,t){return function(n,r){t(n,r,e)}},tze,fB;let lee=(fB=class extends ft{static get(t){return t.getContribution(tze.ID)}constructor(t,n,r,o,s){super(),this.editor=t,this.openerService=n,this.notificationService=r,this.languageFeaturesService=o,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=s.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new Es(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const a=this._register(new y3e(t));this._register(a.onMouseMoveOrRelevantKeyDown(([l,d])=>{this._onEditorMouseMove(l,d)})),this._register(a.onExecute(l=>{this.onEditorMouseUp(l)})),this._register(a.onCancel(l=>{this.cleanUpActiveLinkDecoration()})),this._register(t.onDidChangeConfiguration(l=>{l.hasChanged(79)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(t.onDidChangeModelContent(l=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(t.onDidChangeModel(l=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(t.onDidChangeModelLanguage(l=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(l=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(79))return;const t=this.editor.getModel();if(!t.isTooLargeForSyncing()&&this.providers.has(t)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=Fd(n=>EIn(this.providers,t,n));try{const n=new vu(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(t,n.elapsed()),t.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(n){zi(n)}finally{this.computePromise=null}}}updateDecorations(t){const n=this.editor.getOption(86)==="altKey",r=[],o=Object.keys(this.currentOccurrences);for(const a of o){const l=this.currentOccurrences[a];r.push(l.decorationId)}const s=[];if(t)for(const a of t)s.push(YU.decoration(a,n));this.editor.changeDecorations(a=>{const l=a.deltaDecorations(r,s);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let d=0,u=l.length;d{o.activate(s,r),this.activeLinkDecorationId=o.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const t=this.editor.getOption(86)==="altKey";if(this.activeLinkDecorationId){const n=this.currentOccurrences[this.activeLinkDecorationId];n&&this.editor.changeDecorations(r=>{n.deactivate(r,t)}),this.activeLinkDecorationId=null}}onEditorMouseUp(t){if(!this.isEnabled(t))return;const n=this.getLinkOccurrence(t.target.position);n&&this.openLinkOccurrence(n,t.hasSideBySideModifier,!0)}openLinkOccurrence(t,n,r=!1){if(!this.openerService)return;const{link:o}=t;o.resolve(Er.None).then(s=>{if(typeof s=="string"&&this.editor.hasModel()){const a=this.editor.getModel().uri;if(a.scheme===Ci.file&&s.startsWith(`${Ci.file}:`)){const l=vi.parse(s);if(l.scheme===Ci.file){const d=Ew(l);let u=null;d.startsWith("/./")||d.startsWith("\\.\\")?u=`.${d.substr(1)}`:(d.startsWith("//./")||d.startsWith("\\\\.\\"))&&(u=`.${d.substr(2)}`),u&&(s=MEn(a,u))}}}return this.openerService.open(s,{openToSide:n,fromUserGesture:r,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},s=>{const a=s instanceof Error?s.message:s;a==="invalid"?this.notificationService.warn(U(1277,"Failed to open this link because it is not well-formed: {0}",o.url.toString())):a==="missing"?this.notificationService.warn(U(1278,"Failed to open this link because its target is missing.")):zi(s)})}getLinkOccurrence(t){if(!this.editor.hasModel()||!t)return null;const n=this.editor.getModel().getDecorationsInRange({startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:t.lineNumber,endColumn:t.column},0,!0);for(const r of n){const o=this.currentOccurrences[r.id];if(o)return o}return null}isEnabled(t,n){return!!(t.target.type===6&&(t.hasTriggerModifier||n&&n.keyCodeIsTriggerKey||t.isMiddleClick&&t.mouseMiddleClickAction==="openLink"))}stop(){var t;this.computeLinks.cancel(),this.activeLinksList&&((t=this.activeLinksList)==null||t.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}},tze=fB,fB.ID="editor.linkDetector",fB);lee=tze=gSo([gce(1,OL),gce(2,ic),gce(3,Nn),gce(4,CA)],lee);const n_t={general:Gi.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:Gi.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class YU{static decoration(t,n){return{range:t.range,options:YU._getOptions(t,n,!1)}}static _getOptions(t,n,r){const o={...r?n_t.active:n_t.general};return o.hoverMessage=mSo(t,n),o}constructor(t,n){this.link=t,this.decorationId=n}activate(t,n){t.changeDecorationOptions(this.decorationId,YU._getOptions(this.link,n,!0))}deactivate(t,n){t.changeDecorationOptions(this.decorationId,YU._getOptions(this.link,n,!1))}}function mSo(e,t){const n=e.url&&/^command:/i.test(e.url.toString()),r=e.tooltip?e.tooltip:n?U(1279,"Execute command"):U(1280,"Follow link"),o=t?Tr?U(1281,"cmd + click"):U(1282,"ctrl + click"):Tr?U(1283,"option + click"):U(1284,"alt + click");if(e.url){let s="";if(/^command:/i.test(e.url.toString())){const l=e.url.toString().match(/^command:([^?#]+)/);if(l){const d=l[1];s=U(1285,"Execute command {0}",d)}}return new bf("",!0).appendLink(e.url.toString(!0).replace(/ /g,"%20"),r,s).appendMarkdown(` (${o})`)}else return new bf().appendText(`${r} (${o})`)}class kSo extends Bn{constructor(){super({id:"editor.action.openLink",label:_t(1286,"Open Link"),precondition:void 0})}run(t,n){const r=lee.get(n);if(!r||!n.hasModel())return;const o=n.getSelections();for(const s of o){const a=r.getLinkOccurrence(s.getEndPosition());a&&r.openLinkOccurrence(a,!1)}}}mo(lee.ID,lee,1);un(kSo);const pat=class pat extends ft{constructor(t){super(),this._editor=t,this._register(this._editor.onMouseDown(n=>{const r=this._editor.getOption(133);r>=0&&n.target.type===6&&n.target.position.column>=r&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}};pat.ID="editor.contrib.longLinesHelper";let K0e=pat;mo(K0e.ID,K0e,2);const bat=class bat extends ft{constructor(t){super(),this._editor=t;const n=hl(this._editor),r=n.getOption(171);this._register(Oi(o=>{if(!r.read(o))return;const s=n.domNode.read(o);if(!s)return;const a=o.store.add(YJe("scrollingSession",void 0));o.store.add(this._editor.onMouseDown(d=>{if(a.read(void 0)){a.set(void 0,void 0);return}if(!d.event.middleButton)return;d.event.stopPropagation(),d.event.preventDefault();const h=new xt,g=new cu(d.event.posx,d.event.posy),v=vSo(ii(s),g,h).map(A=>A.subtract(g).withThreshold(5)),f=s.getBoundingClientRect(),k=new cu(g.x-f.left,g.y-f.top);a.set({mouseDeltaAfterThreshold:v,initialMousePosInEditor:k,didScroll:!1,dispose:()=>h.dispose()},void 0),h.add(this._editor.onMouseUp(A=>{const p=a.read(void 0);p&&p.didScroll&&a.set(void 0,void 0)})),h.add(this._editor.onKeyDown(A=>{a.set(void 0,void 0)}))})),o.store.add(Oi(d=>{const u=a.read(d);if(!u)return;let h=Date.now();d.store.add(Oi(m=>{I0e.instance.invalidateOnNextAnimationFrame(m);const v=Date.now(),f=v-h;h=v;const k=u.mouseDeltaAfterThreshold.read(void 0),A=f/32,p=k.scale(A),b=new cu(this._editor.getScrollLeft(),this._editor.getScrollTop());this._editor.setScrollPosition(ASo(b.add(p))),p.isZero()||(u.didScroll=!0)}));const g=Rt(m=>{const v=u.mouseDeltaAfterThreshold.read(m);let f="";return f+=v.y<0?"n":v.y>0?"s":"",f+=v.x<0?"w":v.x>0?"e":"",f});d.store.add(Oi(m=>{s.setAttribute("data-scroll-direction",g.read(m))}))}));const l=o.store.add(cr.div({class:["scroll-editor-on-middle-click-dot",a.map(d=>d?"":"hidden")],style:{left:a.map(d=>d?d.initialMousePosInEditor.x:0),top:a.map(d=>d?d.initialMousePosInEditor.y:0)}}).toDisposableLiveElement());o.store.add(bN(s,l.element)),o.store.add(Oi(d=>{const u=a.read(d);s.classList.toggle("scroll-editor-on-middle-click-editor",!!u)}))}))}};bat.ID="editor.contrib.middleScroll";let J0e=bat;function vSo(e,t,n){const r=Ti("pos",t);return n.add(wt(e,"mousemove",o=>{r.set(new cu(o.pageX,o.pageY),void 0)})),r}function ASo(e){return{scrollLeft:e.x,scrollTop:e.y}}mo(J0e.ID,J0e,2);const pSo=Ve("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},U(1563,"Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);Ve("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},U(1564,"Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0);Ve("editor.wordHighlightTextBackground",pSo,U(1565,"Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const bSo=Ve("editor.wordHighlightBorder",{light:null,dark:null,hcDark:Va,hcLight:Va},U(1566,"Border color of a symbol during read-access, like reading a variable."));Ve("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:Va,hcLight:Va},U(1567,"Border color of a symbol during write-access, like writing to a variable."));Ve("editor.wordHighlightTextBorder",bSo,U(1568,"Border color of a textual occurrence for a symbol."));const wSo=Ve("editorOverviewRuler.wordHighlightForeground","#A0A0A0CC",U(1569,"Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),OSo=Ve("editorOverviewRuler.wordHighlightStrongForeground","#C0A0C0CC",U(1570,"Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),ySo=Ve("editorOverviewRuler.wordHighlightTextForeground",x7n,U(1571,"Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),CSo=Gi.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:zl(OSo),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),_So=Gi.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:zl(ySo),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),SSo=Gi.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:zl(x7n),position:r2.Center},minimap:{color:zl(Xbe),position:1}}),LSo=Gi.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),xSo=Gi.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:zl(wSo),position:r2.Center},minimap:{color:zl(Xbe),position:1}});function ESo(e){return e===uV.Write?CSo:e===uV.Text?_So:xSo}function TSo(e){return e?LSo:SSo}yA((e,t)=>{const n=e.getColor(bet);n&&t.addRule(`.monaco-editor .selectionHighlight { background-color: ${n.transparent(.5)}; }`)});var QSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},DSo=function(e,t){return function(n,r){t(n,r,e)}},nze;function hE(e,t){const n=t.filter(r=>!e.find(o=>o.equals(r)));if(n.length>=1){const r=n.map(s=>`line ${s.viewState.position.lineNumber} column ${s.viewState.position.column}`).join(", "),o=n.length===1?U(1288,"Cursor added: {0}",r):U(1289,"Cursors added: {0}",r);A3(o)}}class BSo extends Bn{constructor(){super({id:"editor.action.insertCursorAbove",label:_t(1298,"Add Cursor Above"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1290,"&&Add Cursor Above"),order:2}})}run(t,n,r){if(!n.hasModel())return;let o=!0;r&&r.logicalLine===!1&&(o=!1);const s=n._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const a=s.getCursorStates();s.setCursorStates(r.source,3,th.addCursorUp(s,a,o)),s.revealTopMostCursor(r.source),hE(a,s.getCursorStates())}}class RSo extends Bn{constructor(){super({id:"editor.action.insertCursorBelow",label:_t(1299,"Add Cursor Below"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1291,"A&&dd Cursor Below"),order:3}})}run(t,n,r){if(!n.hasModel())return;let o=!0;r&&r.logicalLine===!1&&(o=!1);const s=n._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const a=s.getCursorStates();s.setCursorStates(r.source,3,th.addCursorDown(s,a,o)),s.revealBottomMostCursor(r.source),hE(a,s.getCursorStates())}}class ISo extends Bn{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:_t(1300,"Add Cursors to Line Ends"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1292,"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(t,n,r){if(!t.isEmpty()){for(let o=t.startLineNumber;o1&&r.push(new Qn(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn))}}run(t,n){if(!n.hasModel())return;const r=n.getModel(),o=n.getSelections(),s=n._getViewModel(),a=s.getCursorStates(),l=[];o.forEach(d=>this.getCursorsForSelection(d,r,l)),l.length>0&&n.setSelections(l),hE(a,s.getCursorStates())}}class MSo extends Bn{constructor(){super({id:"editor.action.addCursorsToBottom",label:_t(1301,"Add Cursors to Bottom"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getSelections(),o=n.getModel().getLineCount(),s=[];for(let d=r[0].startLineNumber;d<=o;d++)s.push(new Qn(d,r[0].startColumn,d,r[0].endColumn));const a=n._getViewModel(),l=a.getCursorStates();s.length>0&&n.setSelections(s),hE(l,a.getCursorStates())}}class PSo extends Bn{constructor(){super({id:"editor.action.addCursorsToTop",label:_t(1302,"Add Cursors to Top"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getSelections(),o=[];for(let l=r[0].startLineNumber;l>=1;l--)o.push(new Qn(l,r[0].startColumn,l,r[0].endColumn));const s=n._getViewModel(),a=s.getCursorStates();o.length>0&&n.setSelections(o),hE(a,s.getCursorStates())}}class mce{constructor(t,n,r){this.selections=t,this.revealRange=n,this.revealScrollType=r}}class cee{static create(t,n){if(!t.hasModel())return null;const r=n.getState();if(!t.hasTextFocus()&&r.isRevealed&&r.searchString.length>0)return new cee(t,n,!1,r.searchString,r.wholeWord,r.matchCase,null);let o=!1,s,a;const l=t.getSelections();l.length===1&&l[0].isEmpty()?(o=!0,s=!0,a=!0):(s=r.wholeWord,a=r.matchCase);const d=t.getSelection();let u,h=null;if(d.isEmpty()){const g=t.getConfiguredWordAtPosition(d.getStartPosition());if(!g)return null;u=g.word,h=new Qn(d.startLineNumber,g.startColumn,d.startLineNumber,g.endColumn)}else u=t.getModel().getValueInRange(d).replace(/\r\n/g,` +`);return new cee(t,n,o,u,s,a,h)}constructor(t,n,r,o,s,a,l){this._editor=t,this.findController=n,this.isDisconnectedFromFindController=r,this.searchText=o,this.wholeWord=s,this.matchCase=a,this.currentMatch=l}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const t=this._getNextMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.concat(t),t,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const t=this._getNextMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.slice(0,n.length-1).concat(t),t,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const o=this.currentMatch;return this.currentMatch=null,o}this.findController.highlightFindOptions();const t=this._editor.getSelections(),n=t[t.length-1],r=this._editor.getModel().findNextMatch(this.searchText,n.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1);return r?new Qn(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const t=this._getPreviousMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.concat(t),t,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const t=this._getPreviousMatch();if(!t)return null;const n=this._editor.getSelections();return new mce(n.slice(0,n.length-1).concat(t),t,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const o=this.currentMatch;return this.currentMatch=null,o}this.findController.highlightFindOptions();const t=this._editor.getSelections(),n=t[t.length-1],r=this._editor.getModel().findPreviousMatch(this.searchText,n.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1);return r?new Qn(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn):null}selectAll(t){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const n=this._editor.getModel();return t?n.findMatches(this.searchText,t,!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1,1073741824):n.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(148):null,!1,1073741824)}}const LAe=class LAe extends ft{static get(t){return t.getContribution(LAe.ID)}constructor(t){super(),this._sessionDispose=this._register(new xt),this._editor=t,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(t){if(!this._session){const n=cee.create(this._editor,t);if(!n)return;this._session=n;const r={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(r.wholeWordOverride=1,r.matchCaseOverride=1,r.isRegexOverride=2),t.getState().change(r,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(o=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(t.getState().onFindReplaceStateChange(o=>{(o.matchCase||o.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const t={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(t,!1)}this._session=null}_setSelections(t){this._ignoreSelectionChange=!0,this._editor.setSelections(t),this._ignoreSelectionChange=!1}_expandEmptyToWord(t,n){if(!n.isEmpty())return n;const r=this._editor.getConfiguredWordAtPosition(n.getStartPosition());return r?new Qn(n.startLineNumber,r.startColumn,n.startLineNumber,r.endColumn):n}_applySessionResult(t){t&&(this._setSelections(t.selections),t.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(t.revealRange,t.revealScrollType))}getSession(t){return this._session}addSelectionToNextFindMatch(t){if(this._editor.hasModel()){if(!this._session){const n=this._editor.getSelections();if(n.length>1){const o=t.getState().matchCase;if(!TIn(this._editor.getModel(),n,o)){const a=this._editor.getModel(),l=[];for(let d=0,u=n.length;d0&&r.isRegex){const o=this._editor.getModel();r.searchScope?n=o.findMatches(r.searchString,r.searchScope,r.isRegex,r.matchCase,r.wholeWord?this._editor.getOption(148):null,!1,1073741824):n=o.findMatches(r.searchString,!0,r.isRegex,r.matchCase,r.wholeWord?this._editor.getOption(148):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(t),!this._session)return;n=this._session.selectAll(r.searchScope)}if(n.length>0){const o=this._editor.getSelection();for(let s=0,a=n.length;snew Qn(s.range.startLineNumber,s.range.startColumn,s.range.endLineNumber,s.range.endColumn)))}}};LAe.ID="editor.contrib.multiCursorController";let xV=LAe;class hH extends Bn{run(t,n){const r=xV.get(n);if(!r)return;const o=n._getViewModel();if(o){const s=o.getCursorStates(),a=w1.get(n);if(a)this._run(r,a);else{const l=t.get(Yn).createInstance(w1,n);this._run(r,l),l.dispose()}hE(s,o.getCursorStates())}}}class FSo extends hH{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:_t(1303,"Add Selection to Next Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:2082,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1293,"Add &&Next Occurrence"),order:5}})}_run(t,n){t.addSelectionToNextFindMatch(n)}}class NSo extends hH{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:_t(1304,"Add Selection to Previous Find Match"),precondition:void 0,menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1294,"Add P&&revious Occurrence"),order:6}})}_run(t,n){t.addSelectionToPreviousFindMatch(n)}}class USo extends hH{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:_t(1305,"Move Last Selection to Next Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:Uc(2089,2082),weight:100}})}_run(t,n){t.moveSelectionToNextFindMatch(n)}}class jSo extends hH{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:_t(1306,"Move Last Selection to Previous Find Match"),precondition:void 0})}_run(t,n){t.moveSelectionToPreviousFindMatch(n)}}class WSo extends hH{constructor(){super({id:"editor.action.selectHighlights",label:_t(1307,"Select All Occurrences of Find Match"),precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:3114,weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"3_multi",title:U(1295,"Select All &&Occurrences"),order:7}})}_run(t,n){t.selectAll(n)}}class VSo extends hH{constructor(){super({id:"editor.action.changeAll",label:_t(1308,"Change All Occurrences"),precondition:Ft.and($e.writable,$e.editorTextFocus),kbOpts:{kbExpr:$e.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(t,n){t.selectAll(n)}}class zSo{constructor(t,n,r,o,s){this._model=t,this._searchText=n,this._matchCase=r,this._wordSeparators=o,this._cachedFindMatches=null,this._modelVersionId=this._model.getVersionId(),s&&this._model===s._model&&this._searchText===s._searchText&&this._matchCase===s._matchCase&&this._wordSeparators===s._wordSeparators&&this._modelVersionId===s._modelVersionId&&(this._cachedFindMatches=s._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(t=>t.range),this._cachedFindMatches.sort(Ee.compareRangesUsingStarts)),this._cachedFindMatches}}var gB;let eke=(gB=class extends ft{constructor(t,n){super(),this._languageFeaturesService=n,this.editor=t,this._isEnabled=t.getOption(122),this._isEnabledMultiline=t.getOption(124),this._maxLength=t.getOption(123),this._decorations=t.createDecorationsCollection(),this.updateSoon=this._register(new Es(()=>this._update(),300)),this.state=null,this._register(t.onDidChangeConfiguration(o=>{this._isEnabled=t.getOption(122),this._isEnabledMultiline=t.getOption(124),this._maxLength=t.getOption(123)})),this._register(t.onDidChangeCursorSelection(o=>{this._isEnabled&&(o.selection.isEmpty()?o.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(t.onDidChangeModel(o=>{this._setState(null)})),this._register(t.onDidChangeModelContent(o=>{this._isEnabled&&this.updateSoon.schedule()}));const r=w1.get(t);r&&this._register(r.getState().onFindReplaceStateChange(o=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(nze._createState(this.state,this._isEnabled,this._isEnabledMultiline,this._maxLength,this.editor))}static _createState(t,n,r,o,s){if(!n||!s.hasModel())return null;if(!r){const g=s.getSelection();if(g.startLineNumber!==g.endLineNumber)return null}const a=xV.get(s);if(!a)return null;const l=w1.get(s);if(!l)return null;let d=a.getSession(l);if(!d){const g=s.getSelections();if(g.length>1){const v=l.getState().matchCase;if(!TIn(s.getModel(),g,v))return null}d=cee.create(s,l)}if(!d||d.currentMatch||/^[ \t]+$/.test(d.searchText)||o>0&&d.searchText.length>o)return null;const u=l.getState(),h=u.matchCase;if(u.isRevealed){let g=u.searchString;h||(g=g.toLowerCase());let m=d.searchText;if(h||(m=m.toLowerCase()),g===m&&d.matchCase===u.matchCase&&d.wholeWord===u.wholeWord&&!u.isRegex)return null}return new zSo(s.getModel(),d.searchText,d.matchCase,d.wholeWord?s.getOption(148):null,t)}_setState(t){if(this.state=t,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const n=this.editor.getModel();if(n.isTooLargeForTokenization())return;const r=this.state.findMatches(),o=this.editor.getSelections();o.sort(Ee.compareRangesUsingStarts);const s=[];for(let u=0,h=0,g=r.length,m=o.length;u=m)s.push(v),u++;else{const f=Ee.compareRangesUsingStarts(v,o[h]);f<0?((o[h].isEmpty()||!Ee.areIntersecting(v,o[h]))&&s.push(v),u++):(f>0||u++,h++)}}const a=this.editor.getOption(90)!=="off",l=this._languageFeaturesService.documentHighlightProvider.has(n)&&a,d=s.map(u=>({range:u,options:TSo(l)}));this._decorations.set(d)}dispose(){this._setState(null),super.dispose()}},nze=gB,gB.ID="editor.contrib.selectionHighlighter",gB);eke=nze=QSo([DSo(1,Nn)],eke);function TIn(e,t,n){const r=i_t(e,t[0],!n);for(let o=1,s=t.length;o{const[n,r,o]=t;Oo(vi.isUri(n)),Oo(it.isIPosition(r)),Oo(typeof o=="string"||!o);const s=e.get(Nn),a=await e.get(Dg).createModelReference(n);try{const l=await QIn(s.signatureHelpProvider,a.object.textEditorModel,it.lift(r),{triggerKind:ly.Invoke,isRetrigger:!1,triggerCharacter:o},Er.None);return l?(setTimeout(()=>l.dispose(),0),l.value):void 0}finally{a.dispose()}});var l5;(function(e){e.Default={type:0};class t{constructor(o,s){this.request=o,this.previouslyActiveHints=s,this.type=2}}e.Pending=t;class n{constructor(o){this.hints=o,this.type=1}}e.Active=n})(l5||(l5={}));const xAe=class xAe extends ft{constructor(t,n,r=xAe.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new at),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=l5.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new ts),this.triggerChars=new Bme,this.retriggerChars=new Bme,this.triggerId=0,this.editor=t,this.providers=n,this.throttledDelayer=new dA(r),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(o=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(o=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(o=>this.onCursorChange(o))),this._register(this.editor.onDidChangeModelContent(o=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(o=>this.onDidType(o))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(t){this._state.type===2&&this._state.request.cancel(),this._state=t}cancel(t=!1){this.state=l5.Default,this.throttledDelayer.cancel(),t||this._onChangedHints.fire(void 0)}trigger(t,n){const r=this.editor.getModel();if(!r||!this.providers.has(r))return;const o=++this.triggerId;this._pendingTriggers.push(t),this.throttledDelayer.trigger(()=>this.doTrigger(o),n).catch(zi)}next(){if(this.state.type!==1)return;const t=this.state.hints.signatures.length,n=this.state.hints.activeSignature,r=n%t===t-1,o=this.editor.getOption(98).cycle;if((t<2||r)&&!o){this.cancel();return}this.updateActiveSignature(r&&o?0:n+1)}previous(){if(this.state.type!==1)return;const t=this.state.hints.signatures.length,n=this.state.hints.activeSignature,r=n===0,o=this.editor.getOption(98).cycle;if((t<2||r)&&!o){this.cancel();return}this.updateActiveSignature(r&&o?t-1:n-1)}updateActiveSignature(t){this.state.type===1&&(this.state=new l5.Active({...this.state.hints,activeSignature:t}),this._onChangedHints.fire(this.state.hints))}async doTrigger(t){const n=this.state.type===1||this.state.type===2,r=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const o=this._pendingTriggers.reduce(XSo);this._pendingTriggers=[];const s={triggerKind:o.triggerKind,triggerCharacter:o.triggerCharacter,isRetrigger:n,activeSignatureHelp:r};if(!this.editor.hasModel())return!1;const a=this.editor.getModel(),l=this.editor.getPosition();this.state=new l5.Pending(Fd(d=>QIn(this.providers,a,l,s,d)),r);try{const d=await this.state.request;return t!==this.triggerId?(d==null||d.dispose(),!1):!d||!d.value.signatures||d.value.signatures.length===0?(d==null||d.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new l5.Active(d.value),this._lastSignatureHelpResult.value=d,this._onChangedHints.fire(this.state.hints),!0)}catch(d){return t===this.triggerId&&(this.state=l5.Default),zi(d),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const t=this.editor.getModel();if(t)for(const n of this.providers.ordered(t)){for(const r of n.signatureHelpTriggerCharacters||[])if(r.length){const o=r.charCodeAt(0);this.triggerChars.add(o),this.retriggerChars.add(o)}for(const r of n.signatureHelpRetriggerCharacters||[])r.length&&this.retriggerChars.add(r.charCodeAt(0))}}onDidType(t){if(!this.triggerOnType)return;const n=t.length-1,r=t.charCodeAt(n);(this.triggerChars.has(r)||this.isTriggered&&this.retriggerChars.has(r))&&this.trigger({triggerKind:ly.TriggerCharacter,triggerCharacter:t.charAt(n)})}onCursorChange(t){t.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:ly.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:ly.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(98).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}};xAe.DEFAULT_DELAY=120;let ize=xAe;function XSo(e,t){switch(t.triggerKind){case ly.Invoke:return t;case ly.ContentChange:return e;case ly.TriggerCharacter:default:return t}}var GSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},r_t=function(e,t){return function(n,r){t(n,r,e)}},rze;const fk=tn,YSo=Da("parameter-hints-next",zt.chevronDown,U(1312,"Icon for show next parameter hint.")),ZSo=Da("parameter-hints-previous",zt.chevronUp,U(1313,"Icon for show previous parameter hint."));var mB;let oze=(mB=class extends ft{constructor(t,n,r,o){super(),this.editor=t,this.model=n,this.markdownRendererService=o,this.renderDisposeables=this._register(new xt),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.keyVisible=RR.Visible.bindTo(r),this.keyMultipleSignatures=RR.MultipleSignatures.bindTo(r)}createParameterHintDOMNodes(){const t=fk(".editor-widget.parameter-hints-widget"),n=Xt(t,fk(".phwrapper"));n.tabIndex=-1;const r=Xt(n,fk(".controls")),o=Xt(r,fk(".button"+fi.asCSSSelector(ZSo))),s=Xt(r,fk(".overloads")),a=Xt(r,fk(".button"+fi.asCSSSelector(YSo)));this._register(wt(o,"click",m=>{Qo.stop(m),this.previous()})),this._register(wt(a,"click",m=>{Qo.stop(m),this.next()}));const l=fk(".body"),d=new Mie(l,{alwaysConsumeMouseWheel:!0});this._register(d),n.appendChild(d.getDomNode());const u=Xt(l,fk(".signature")),h=Xt(l,fk(".docs"));t.style.userSelect="text",this.domNodes={element:t,signature:u,overloads:s,docs:h,scrollbar:d},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(m=>{this.visible&&this.editor.layoutContentWidget(this)}));const g=()=>{if(!this.domNodes)return;const m=this.editor.getOption(59),v=this.domNodes.element;v.style.fontSize=`${m.fontSize}px`,v.style.lineHeight=`${m.lineHeight/m.fontSize}`,v.style.setProperty("--vscode-parameterHintsWidget-editorFontFamily",m.fontFamily),v.style.setProperty("--vscode-parameterHintsWidget-editorFontFamilyDefault",f1.fontFamily)};g(),this._register(an.chain(this.editor.onDidChangeConfiguration.bind(this.editor),m=>m.filter(v=>v.hasChanged(59)))(g)),this._register(this.editor.onDidLayoutChange(m=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var t;(t=this.domNodes)==null||t.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var t;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(t=this.domNodes)==null||t.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(t){if(this.renderDisposeables.clear(),!this.domNodes)return;const n=t.signatures.length>1;this.domNodes.element.classList.toggle("multiple",n),this.keyMultipleSignatures.set(n),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const r=t.signatures[t.activeSignature];if(!r)return;const o=Xt(this.domNodes.signature,fk(".code")),s=r.parameters.length>0,a=r.activeParameter??t.activeParameter;if(s)this.renderParameters(o,r,a);else{const u=Xt(o,fk("span"));u.textContent=r.label}const l=r.parameters[a];if(l!=null&&l.documentation){const u=fk("span.documentation");if(typeof l.documentation=="string")u.textContent=l.documentation;else{const h=this.renderMarkdownDocs(l.documentation);u.appendChild(h.element)}Xt(this.domNodes.docs,fk("p",{},u))}if(r.documentation!==void 0)if(typeof r.documentation=="string")Xt(this.domNodes.docs,fk("p",{},r.documentation));else{const u=this.renderMarkdownDocs(r.documentation);Xt(this.domNodes.docs,u.element)}const d=this.hasDocs(r,l);if(this.domNodes.signature.classList.toggle("has-docs",d),this.domNodes.docs.classList.toggle("empty",!d),this.domNodes.overloads.textContent=String(t.activeSignature+1).padStart(t.signatures.length.toString().length,"0")+"/"+t.signatures.length,l){let u="";const h=r.parameters[a];Array.isArray(h.label)?u=r.label.substring(h.label[0],h.label[1]):u=h.label,h.documentation&&(u+=typeof h.documentation=="string"?`, ${h.documentation}`:`, ${h.documentation.value}`),r.documentation&&(u+=typeof r.documentation=="string"?`, ${r.documentation}`:`, ${r.documentation.value}`),this.announcedLabel!==u&&(um(U(1314,"{0}, hint",u)),this.announcedLabel=u)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(t){const n=this.renderDisposeables.add(this.markdownRendererService.render(t,{context:this.editor,asyncRenderCallback:()=>{var r;(r=this.domNodes)==null||r.scrollbar.scanDomNode()}}));return n.element.classList.add("markdown-docs"),n}hasDocs(t,n){return!!(n&&typeof n.documentation=="string"&&a9(n.documentation).length>0||n&&typeof n.documentation=="object"&&a9(n.documentation).value.length>0||t.documentation&&typeof t.documentation=="string"&&a9(t.documentation).length>0||t.documentation&&typeof t.documentation=="object"&&a9(t.documentation.value).length>0)}renderParameters(t,n,r){const[o,s]=this.getParameterLabelOffsets(n,r),a=document.createElement("span");a.textContent=n.label.substring(0,o);const l=document.createElement("span");l.textContent=n.label.substring(o,s),l.className="parameter active";const d=document.createElement("span");d.textContent=n.label.substring(s),Xt(t,a,l,d)}getParameterLabelOffsets(t,n){const r=t.parameters[n];if(r){if(Array.isArray(r.label))return r.label;if(r.label.length){const o=new RegExp(`(\\W|^)${M0(r.label)}(?=\\W|$)`,"g");o.test(t.label);const s=o.lastIndex-r.label.length;return s>=0?[s,o.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return rze.ID}updateMaxHeight(){if(!this.domNodes)return;const n=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=n;const r=this.domNodes.element.getElementsByClassName("phwrapper");r.length&&(r[0].style.maxHeight=n)}},rze=mB,mB.ID="editor.widget.parameterHintsWidget",mB);oze=rze=GSo([r_t(2,Qi),r_t(3,Cp)],oze);Ve("editorHoverWidget.highlightForeground",gN,U(1315,"Foreground color of the active item in the parameter hint."));var qSo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},o_t=function(e,t){return function(n,r){t(n,r,e)}},sze,kB;let EV=(kB=class extends ft{static get(t){return t.getContribution(sze.ID)}constructor(t,n,r){super(),this.editor=t,this.model=this._register(new ize(t,r.signatureHelpProvider)),this._register(this.model.onChangedHints(o=>{var s;o?(this.widget.value.show(),this.widget.value.render(o)):(s=this.widget.rawValue)==null||s.hide()})),this.widget=new zh(()=>this._register(n.createInstance(oze,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var t;(t=this.widget.rawValue)==null||t.previous()}next(){var t;(t=this.widget.rawValue)==null||t.next()}trigger(t){this.model.trigger(t,0)}},sze=kB,kB.ID="editor.controller.parameterHints",kB);EV=sze=qSo([o_t(1,Yn),o_t(2,Nn)],EV);class KSo extends Bn{constructor(){super({id:"editor.action.triggerParameterHints",label:_t(1311,"Trigger Parameter Hints"),precondition:$e.hasSignatureHelpProvider,kbOpts:{kbExpr:$e.editorTextFocus,primary:3082,weight:100}})}run(t,n){const r=EV.get(n);r==null||r.trigger({triggerKind:ly.Invoke})}}mo(EV.ID,EV,2);un(KSo);const Vnt=175,znt=$d.bindToContribution(EV.get);On(new znt({id:"closeParameterHints",precondition:RR.Visible,handler:e=>e.cancel(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:9,secondary:[1033]}}));On(new znt({id:"showPrevParameterHint",precondition:Ft.and(RR.Visible,RR.MultipleSignatures),handler:e=>e.previous(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}}));On(new znt({id:"showNextParameterHint",precondition:Ft.and(RR.Visible,RR.MultipleSignatures),handler:e=>e.next(),kbOpts:{weight:Vnt,kbExpr:$e.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));const wat=class wat extends ft{constructor(t){super(),this._editor=t,this._editorObs=hl(this._editor),this._placeholderText=this._editorObs.getOption(100),this._state=Vh({owner:this,equalsFn:lNe},n=>{const r=this._placeholderText.read(n);if(r&&this._editorObs.valueIsEmpty.read(n))return{placeholder:r}}),this._shouldViewBeAlive=JSo(this,n=>{var r;return((r=this._state.read(n))==null?void 0:r.placeholder)!==void 0}),this._view=Rt(n=>{if(!this._shouldViewBeAlive.read(n))return;const r=wo("div.editorPlaceholder");n.store.add(Oi(o=>{const s=this._state.read(o),a=(s==null?void 0:s.placeholder)!==void 0;r.root.style.display=a?"block":"none",r.root.innerText=(s==null?void 0:s.placeholder)??""})),n.store.add(Oi(o=>{const s=this._editorObs.layoutInfo.read(o);r.root.style.left=`${s.contentLeft}px`,r.root.style.width=s.contentWidth-s.verticalScrollbarWidth+"px",r.root.style.top=`${this._editor.getTopForLineNumber(0)}px`})),n.store.add(Oi(o=>{r.root.style.fontFamily=this._editorObs.getOption(58).read(o),r.root.style.fontSize=this._editorObs.getOption(61).read(o)+"px",r.root.style.lineHeight=this._editorObs.getOption(75).read(o)+"px"})),n.store.add(this._editorObs.createOverlayWidget({allowEditorOverflow:!1,minContentWidthInPx:ca(0),position:ca(null),domNode:r.root}))}),this._view.recomputeInitiallyAndOnChange(this._store)}};wat.ID="editor.contrib.placeholderText";let tke=wat;function JSo(e,t){return vL(e,(n,r)=>r===!0?!0:t(n))}var e8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},t8o=function(e,t){return function(n,r){t(n,r,e)}};class n8o{constructor(t){this.instantiationService=t}init(...t){}}function i8o(e){return e()}let s_t=class extends n8o{constructor(t,n){super(n),this.init(t)}};s_t=e8o([t8o(1,Yn)],s_t);mo(tke.ID,i8o(()=>tke),0);Ve("editor.placeholder.foreground",Hlo,U(1334,"Foreground color of the placeholder text in the editor."));const W3e=Cr("textResourceConfigurationService"),DIn=Cr("textResourcePropertiesService");var r8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},kce=function(e,t){return function(n,r){t(n,r,e)}};const fH=new yn("renameInputVisible",!1,U(1391,"Whether the rename input widget is visible"));new yn("renameInputFocused",!1,U(1392,"Whether the rename input widget is focused"));let aze=class{constructor(t,n,r,o,s,a){this._editor=t,this._acceptKeybindings=n,this._themeService=r,this._keybindingService=o,this._logService=a,this.allowEditorOverflow=!0,this._disposables=new xt,this._visibleContextKey=fH.bindTo(s),this._isEditingRenameCandidate=!1,this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,this._candidates=new Set,this._beforeFirstInputFieldEditSW=new vu,this._inputWithButton=new o8o,this._disposables.add(this._inputWithButton),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(l=>{l.hasChanged(59)&&this._updateFont()})),this._disposables.add(r.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputWithButton.domNode),this._renameCandidateListView=this._disposables.add(new Hnt(this._domNode,{fontInfo:this._editor.getOption(59),onFocusChange:t=>{this._inputWithButton.input.value=t,this._isEditingRenameCandidate=!1},onSelectionChange:()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)}})),this._disposables.add(this._inputWithButton.onDidInputChange(()=>{var t,n,r;((t=this._renameCandidateListView)==null?void 0:t.focusedCandidate)!==void 0&&(this._isEditingRenameCandidate=!0),this._timeBeforeFirstInputFieldEdit??(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),((n=this._renameCandidateProvidersCts)==null?void 0:n.token.isCancellationRequested)===!1&&this._renameCandidateProvidersCts.cancel(),(r=this._renameCandidateListView)==null||r.clearFocus()})),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(t){if(!this._domNode)return;const n=t.getColor(Jz),r=t.getColor(Cet);this._domNode.style.backgroundColor=String(t.getColor(Gk)??""),this._domNode.style.boxShadow=n?` 0 0 8px 2px ${n}`:"",this._domNode.style.border=r?`1px solid ${r}`:"",this._domNode.style.color=String(t.getColor(E7n)??"");const o=t.getColor(T7n);this._inputWithButton.domNode.style.backgroundColor=String(t.getColor(jNe)??""),this._inputWithButton.input.style.backgroundColor=String(t.getColor(jNe)??""),this._inputWithButton.domNode.style.borderWidth=o?"1px":"0px",this._inputWithButton.domNode.style.borderStyle=o?"solid":"none",this._inputWithButton.domNode.style.borderColor=(o==null?void 0:o.toString())??"none"}_updateFont(){if(this._domNode===void 0)return;Oo(this._label!==void 0,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._inputWithButton.input);const t=this._editor.getOption(59);this._label.style.fontSize=`${this._computeLabelFontSize(t.fontSize)}px`}_computeLabelFontSize(t){return t*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const t=O6(this.getDomNode().ownerDocument.body),n=Kl(this._editor.getDomNode()),r=this._getTopForPosition();this._nPxAvailableAbove=r+n.top,this._nPxAvailableBelow=t.height-this._nPxAvailableAbove;const o=this._editor.getOption(75),{totalHeight:s}=dee.getLayoutInfo({lineHeight:o}),a=this._nPxAvailableBelow>s*6?[2,1]:[1,2];return{position:this._position,preference:a}}beforeRender(){var r,o;const[t,n]=this._acceptKeybindings;return this._label.innerText=U(1393,"{0} to Rename, {1} to Preview",(r=this._keybindingService.lookupKeybinding(t))==null?void 0:r.getLabel(),(o=this._keybindingService.lookupKeybinding(n))==null?void 0:o.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(t){if(t===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;Oo(this._renameCandidateListView),Oo(this._nPxAvailableAbove!==void 0),Oo(this._nPxAvailableBelow!==void 0);const n=ES(this._inputWithButton.domNode),r=ES(this._label);let o;t===2?o=this._nPxAvailableBelow:o=this._nPxAvailableAbove,this._renameCandidateListView.layout({height:o-r-n,width:s0(this._inputWithButton.domNode)})}acceptInput(t){var n;this._trace("invoking acceptInput"),(n=this._currentAcceptInput)==null||n.call(this,t)}cancelInput(t,n){var r;(r=this._currentCancelInput)==null||r.call(this,t)}focusNextRenameSuggestion(){var t;(t=this._renameCandidateListView)!=null&&t.focusNext()||(this._inputWithButton.input.value=this._currentName)}focusPreviousRenameSuggestion(){var t;(t=this._renameCandidateListView)!=null&&t.focusPrevious()||(this._inputWithButton.input.value=this._currentName)}getInput(t,n,r,o,s){const{start:a,end:l}=this._getSelection(t,n);this._renameCts=s;const d=new xt;this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,o===void 0?this._inputWithButton.button.style.display="none":(this._inputWithButton.button.style.display="flex",this._requestRenameCandidatesOnce=o,this._requestRenameCandidates(n,!1),d.add(wt(this._inputWithButton.button,"click",()=>this._requestRenameCandidates(n,!0))),d.add(wt(this._inputWithButton.button,rn.KEY_DOWN,h=>{const g=new Us(h);(g.equals(3)||g.equals(10))&&(g.stopPropagation(),g.preventDefault(),this._requestRenameCandidates(n,!0))}))),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",r),this._position=new it(t.startLineNumber,t.startColumn),this._currentName=n,this._inputWithButton.input.value=n,this._inputWithButton.input.setAttribute("selectionStart",a.toString()),this._inputWithButton.input.setAttribute("selectionEnd",l.toString()),this._inputWithButton.input.size=Math.max((t.endColumn-t.startColumn)*1.1,20),this._beforeFirstInputFieldEditSW.reset(),d.add(Hn(()=>{this._renameCts=void 0,s.dispose(!0)})),d.add(Hn(()=>{this._renameCandidateProvidersCts!==void 0&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})),d.add(Hn(()=>this._candidates.clear()));const u=new pI;return u.p.finally(()=>{d.dispose(),this._hide()}),this._currentCancelInput=h=>{var g;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(g=this._renameCandidateListView)==null||g.clearCandidates(),u.complete(h),!0},this._currentAcceptInput=h=>{this._trace("invoking _currentAcceptInput"),Oo(this._renameCandidateListView!==void 0);const g=this._renameCandidateListView.nCandidates;let m,v;const f=this._renameCandidateListView.focusedCandidate;if(f!==void 0?(this._trace("using new name from renameSuggestion"),m=f,v={k:"renameSuggestion"}):(this._trace("using new name from inputField"),m=this._inputWithButton.input.value,v=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),m===n||m.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),u.complete({newName:m,wantsPreview:r&&h,stats:{source:v,nRenameSuggestions:g,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit,nRenameSuggestionsInvocations:this._nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:this._hadAutomaticRenameSuggestionsInvocation}})},d.add(s.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),d.add(this._editor.onDidBlurEditorWidget(()=>{var h;return this.cancelInput(!((h=this._domNode)!=null&&h.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show(),u.p}_requestRenameCandidates(t,n){if(this._requestRenameCandidatesOnce!==void 0&&(this._renameCandidateProvidersCts!==void 0&&this._renameCandidateProvidersCts.dispose(!0),Oo(this._renameCts),this._inputWithButton.buttonState!=="stop")){this._renameCandidateProvidersCts=new ja;const r=n?fJ.Invoke:fJ.Automatic,o=this._requestRenameCandidatesOnce(r,this._renameCandidateProvidersCts.token);if(o.length===0){this._inputWithButton.setSparkleButton();return}n||(this._hadAutomaticRenameSuggestionsInvocation=!0),this._nRenameSuggestionsInvocations+=1,this._inputWithButton.setStopButton(),this._updateRenameCandidates(o,t,this._renameCts.token)}}_getSelection(t,n){Oo(this._editor.hasModel());const r=this._editor.getSelection();let o=0,s=n.length;return!Ee.isEmpty(r)&&!Ee.spansMultipleLines(r)&&Ee.containsRange(t,r)&&(o=Math.max(0,r.startColumn-t.startColumn),s=Math.min(t.endColumn,r.endColumn)-t.startColumn),{start:o,end:s}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._inputWithButton.input.focus(),this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute("selectionStart")),parseInt(this._inputWithButton.input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(t,n,r){const o=(...u)=>this._trace("_updateRenameCandidates",...u);o("start");const s=await YW(Promise.allSettled(t),r);if(this._inputWithButton.setSparkleButton(),s===void 0){o("returning early - received updateRenameCandidates results - undefined");return}const a=s.flatMap(u=>u.status==="fulfilled"&&Ru(u.value)?u.value:[]);o(`received updateRenameCandidates results - total (unfiltered) ${a.length} candidates.`);const l=M8(a,u=>u.newSymbolName);o(`distinct candidates - ${l.length} candidates.`);const d=l.filter(({newSymbolName:u})=>u.trim().length>0&&u!==this._inputWithButton.input.value&&u!==n&&!this._candidates.has(u));if(o(`valid distinct candidates - ${a.length} candidates.`),d.forEach(u=>this._candidates.add(u.newSymbolName)),d.length<1){o("returning early - no valid distinct candidates");return}o("setting candidates"),this._renameCandidateListView.setCandidates(d),o("asking editor to re-layout"),this._editor.layoutContentWidget(this)}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const t=this._editor.getVisibleRanges();let n;return t.length>0?n=t[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),n=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(n)}_trace(...t){this._logService.trace("RenameWidget",...t)}};aze=r8o([kce(2,Dl),kce(3,Do),kce(4,Qi),kce(5,va)],aze);class Hnt{constructor(t,n){this._disposables=new xt,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=n.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=n.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.className="rename-box rename-candidate-list-container",t.appendChild(this._listContainer),this._listWidget=Hnt._createListWidget(this._listContainer,this._candidateViewHeight,n.fontInfo),this._disposables.add(this._listWidget.onDidChangeFocus(r=>{r.elements.length===1&&n.onFocusChange(r.elements[0].newSymbolName)},this._disposables)),this._disposables.add(this._listWidget.onDidChangeSelection(r=>{r.elements.length===1&&n.onSelectionChange()},this._disposables)),this._disposables.add(this._listWidget.onDidBlur(r=>{this._listWidget.setFocus([])})),this._listWidget.style(TI({listInactiveFocusForeground:sJ,listInactiveFocusBackground:aJ}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height:t,width:n}){this._availableHeight=t,this._minimumWidth=n}setCandidates(t){this._listWidget.splice(0,0,t);const n=this._pickListHeight(this._listWidget.length),r=this._pickListWidth(t);this._listWidget.layout(n,r),this._listContainer.style.height=`${n}px`,this._listContainer.style.width=`${r}px`,A3(U(1394,"Received {0} rename suggestions",t.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(this._listWidget.length===0)return;const t=this._listWidget.getSelectedElements()[0];if(t!==void 0)return t.newSymbolName;const n=this._listWidget.getFocusedElements()[0];if(n!==void 0)return n.newSymbolName}focusNext(){if(this._listWidget.length===0)return!1;const t=this._listWidget.getFocus();if(t.length===0)return this._listWidget.focusFirst(),this._listWidget.reveal(0),!0;if(t[0]===this._listWidget.length-1)return this._listWidget.setFocus([]),this._listWidget.reveal(0),!1;{this._listWidget.focusNext();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}}focusPrevious(){if(this._listWidget.length===0)return!1;const t=this._listWidget.getFocus();if(t.length===0){this._listWidget.focusLast();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}else{if(t[0]===0)return this._listWidget.setFocus([]),!1;{this._listWidget.focusPrevious();const n=this._listWidget.getFocus()[0];return this._listWidget.reveal(n),!0}}}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight:t}=dee.getLayoutInfo({lineHeight:this._lineHeight});return t}_pickListHeight(t){const n=this._candidateViewHeight*t;return Math.min(n,this._availableHeight,this._candidateViewHeight*7)}_pickListWidth(t){const n=Math.ceil(Math.max(...t.map(o=>o.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,25+n+10)}static _createListWidget(t,n,r){const o=new class{getTemplateId(a){return"candidate"}getHeight(a){return n}},s=new class{constructor(){this.templateId="candidate"}renderTemplate(a){return new dee(a,r)}renderElement(a,l,d){d.populate(a)}disposeTemplate(a){a.dispose()}};return new _2("NewSymbolNameCandidates",t,o,[s],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}}class o8o{constructor(){this._buttonHoverContent="",this._onDidInputChange=new at,this.onDidInputChange=this._onDidInputChange.event,this._disposables=new xt}get domNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="rename-input-with-button",this._domNode.style.display="flex",this._domNode.style.flexDirection="row",this._domNode.style.alignItems="center",this._inputNode=document.createElement("input"),this._inputNode.className="rename-input",this._inputNode.type="text",this._inputNode.style.border="none",this._inputNode.setAttribute("aria-label",U(1395,"Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._inputNode),this._buttonNode=document.createElement("div"),this._buttonNode.className="rename-suggestions-button",this._buttonNode.setAttribute("tabindex","0"),this._buttonGenHoverText=U(1396,"Generate New Name Suggestions"),this._buttonCancelHoverText=U(1397,"Cancel"),this._buttonHoverContent=this._buttonGenHoverText,this._disposables.add(yp().setupDelayedHover(this._buttonNode,()=>({content:this._buttonHoverContent,style:1}))),this._domNode.appendChild(this._buttonNode),this._disposables.add(wt(this.input,rn.INPUT,()=>this._onDidInputChange.fire())),this._disposables.add(wt(this.input,rn.KEY_DOWN,t=>{const n=new Us(t);(n.keyCode===15||n.keyCode===17)&&this._onDidInputChange.fire()})),this._disposables.add(wt(this.input,rn.CLICK,()=>this._onDidInputChange.fire())),this._disposables.add(wt(this.input,rn.FOCUS,()=>{this.domNode.style.outlineWidth="1px",this.domNode.style.outlineStyle="solid",this.domNode.style.outlineOffset="-1px",this.domNode.style.outlineColor="var(--vscode-focusBorder)"})),this._disposables.add(wt(this.input,rn.BLUR,()=>{this.domNode.style.outline="none"}))),this._domNode}get input(){return Oo(this._inputNode),this._inputNode}get button(){return Oo(this._buttonNode),this._buttonNode}get buttonState(){return this._buttonState}setSparkleButton(){this._buttonState="sparkle",this._sparkleIcon??(this._sparkleIcon=y3(zt.sparkle)),uh(this.button),this.button.appendChild(this._sparkleIcon),this.button.setAttribute("aria-label","Generating new name suggestions"),this._buttonHoverContent=this._buttonGenHoverText,this.input.focus()}setStopButton(){this._buttonState="stop",this._stopIcon??(this._stopIcon=y3(zt.stopCircle)),uh(this.button),this.button.appendChild(this._stopIcon),this.button.setAttribute("aria-label","Cancel generating new name suggestions"),this._buttonHoverContent=this._buttonCancelHoverText,this.input.focus()}dispose(){this._disposables.dispose()}}const Eq=class Eq{constructor(t,n){this._domNode=document.createElement("div"),this._domNode.className="rename-box rename-candidate",this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height=`${n.lineHeight}px`,this._domNode.style.padding=`${Eq._PADDING}px`;const r=document.createElement("div");r.style.display="flex",r.style.alignItems="center",r.style.width=r.style.height=`${n.lineHeight*.8}px`,this._domNode.appendChild(r),this._icon=y3(zt.sparkle),this._icon.style.display="none",r.appendChild(this._icon),this._label=document.createElement("div"),Fu(this._label,n),this._domNode.appendChild(this._label),t.appendChild(this._domNode)}populate(t){this._updateIcon(t),this._updateLabel(t)}_updateIcon(t){var r;const n=!!((r=t.tags)!=null&&r.includes(KNe.AIGenerated));this._icon.style.display=n?"inherit":"none"}_updateLabel(t){this._label.innerText=t.newSymbolName}static getLayoutInfo({lineHeight:t}){return{totalHeight:t+Eq._PADDING*2}}dispose(){}};Eq._PADDING=2;let dee=Eq;var s8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_7=function(e,t){return function(n,r){t(n,r,e)}},lze;class $nt{constructor(t,n,r){this.model=t,this.position=n,this._providerRenameIdx=0,this._providers=r.ordered(t)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(t){const n=[];for(this._providerRenameIdx=0;this._providerRenameIdx0?n.join(` `):void 0}:{range:Ee.fromPositions(this.position),text:"",rejectReason:n.length>0?n.join(` `):void 0}}async provideRenameEdits(t,n){return this._provideRenameEdits(t,this._providerRenameIdx,[],n)}async _provideRenameEdits(t,n,r,o){const s=this._providers[n];if(!s)return{edits:[],rejectReason:r.join(` -`)};const a=await s.provideRenameEdits(this.model,this.position,t,o);if(a){if(a.rejectReason)return this._provideRenameEdits(t,n+1,r.concat(a.rejectReason),o)}else return this._provideRenameEdits(t,n+1,r.concat(U(1380,"No result.")),o);return a}}async function a8o(e,t,n,r){const o=new $nt(t,n,e),s=await o.resolveRenameLocation(Er.None);return s!=null&&s.rejectReason?{edits:[],rejectReason:s.rejectReason}:o.provideRenameEdits(r,Er.None)}var vB;let I6=(vB=class{static get(t){return t.getContribution(lze.ID)}constructor(t,n,r,o,s,a,l,d){this.editor=t,this._instaService=n,this._notificationService=r,this._bulkEditService=o,this._progressService=s,this._logService=a,this._configService=l,this._languageFeaturesService=d,this._disposableStore=new xt,this._cts=new ja,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(aze,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var f,k;const t=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new ja,!this.editor.hasModel()){t("editor has no model");return}const n=this.editor.getPosition(),r=new $nt(this.editor.getModel(),n,this._languageFeaturesService.renameProvider);if(!r.hasProvider()){t("skeleton has no provider");return}const o=new z8(this.editor,5,void 0,this._cts.token);let s;try{t("resolving rename location");const A=r.resolveRenameLocation(o.token);this._progressService.showWhile(A,250),s=await A,t("resolved rename location")}catch(A){A instanceof lA?t("resolve rename location cancelled",JSON.stringify(A,null," ")):(t("resolve rename location failed",A instanceof Error?A:JSON.stringify(A,null," ")),(typeof A=="string"||i8(A))&&((f=D0.get(this.editor))==null||f.showMessage(A||U(1381,"An unknown error occurred while resolving rename location"),n)));return}finally{o.dispose()}if(!s){t("returning early - no loc");return}if(s.rejectReason){t(`returning early - rejected with reason: ${s.rejectReason}`,s.rejectReason),(k=D0.get(this.editor))==null||k.showMessage(s.rejectReason,n);return}if(o.token.isCancellationRequested){t("returning early - cts1 cancelled");return}const a=new z8(this.editor,5,s.range,this._cts.token),l=this.editor.getModel(),d=this._languageFeaturesService.newSymbolNamesProvider.all(l),u=await Promise.all(d.map(async A=>[A,await A.supportsAutomaticNewSymbolNamesTriggerKind??!1])),h=(A,p)=>{let b=u.slice();return A===fJ.Automatic&&(b=b.filter(([w,O])=>O)),b.map(([w])=>w.provideNewSymbolNames(l,s.range,A,p))};t("creating rename input field and awaiting its result");const g=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),m=await this._renameWidget.getInput(s.range,s.text,g,d.length>0?h:void 0,a);if(t("received response from rename input field"),typeof m=="boolean"){t(`returning early - rename input field response - ${m}`),m&&this.editor.focus(),a.dispose();return}this.editor.focus(),t("requesting rename edits");const v=YW(r.provideRenameEdits(m.newName,a.token),a.token).then(async A=>{if(!A){t("returning early - no rename edits result");return}if(!this.editor.hasModel()){t("returning early - no model after rename edits are provided");return}if(A.rejectReason){t(`returning early - rejected with reason: ${A.rejectReason}`),this._notificationService.info(A.rejectReason);return}this.editor.setSelection(Ee.fromPositions(this.editor.getSelection().getPosition())),t("applying edits"),this._bulkEditService.apply(A,{editor:this.editor,showPreview:m.wantsPreview,label:U(1382,"Renaming '{0}' to '{1}'",s==null?void 0:s.text,m.newName),code:"undoredo.rename",quotableLabel:U(1383,"Renaming {0} to {1}",s==null?void 0:s.text,m.newName),respectAutoSaveConfig:!0,reason:Af.rename()}).then(p=>{t("edits applied"),p.ariaSummary&&um(U(1384,"Successfully renamed '{0}' to '{1}'. Summary: {2}",s.text,m.newName,p.ariaSummary))}).catch(p=>{t(`error when applying edits ${JSON.stringify(p,null," ")}`),this._notificationService.error(U(1385,"Rename failed to apply edits")),this._logService.error(p)})},A=>{t("error when providing rename edits",JSON.stringify(A,null," ")),this._notificationService.error(U(1386,"Rename failed to compute edits")),this._logService.error(A)}).finally(()=>{a.dispose()});return t("returning rename operation"),this._progressService.showWhile(v,250),v}acceptRenameInput(t){this._renameWidget.acceptInput(t)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}},lze=vB,vB.ID="editor.contrib.renameController",vB);I6=lze=s8o([_7(1,Yn),_7(2,ic),_7(3,Yie),_7(4,V8),_7(5,va),_7(6,W3e),_7(7,Nn)],I6);class l8o extends Bn{constructor(){super({id:"editor.action.rename",label:_t(1388,"Rename Symbol"),precondition:Ft.and($e.writable,$e.hasRenameProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1},canTriggerInlineEdits:!0})}runCommand(t,n){const r=t.get(yo),[o,s]=Array.isArray(n)&&n||[void 0,void 0];return vi.isUri(o)&&it.isIPosition(s)?r.openCodeEditor({resource:o},r.getActiveCodeEditor()).then(a=>{a&&(a.setPosition(s),a.invokeWithinContext(l=>(this.reportTelemetry(l,a),this.run(l,a))))},zi):super.runCommand(t,n)}run(t,n){const r=t.get(va),o=I6.get(n);return o?(r.trace("[RenameAction] got controller, running..."),o.run()):(r.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}mo(I6.ID,I6,4);un(l8o);const Xnt=$d.bindToContribution(I6.get);On(new Xnt({id:"acceptRenameInput",precondition:fH,handler:e=>e.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:Ft.and($e.focus,Ft.not("isComposing")),primary:3}}));On(new Xnt({id:"acceptRenameInputWithPreview",precondition:Ft.and(fH,Ft.has("config.editor.rename.enablePreview")),handler:e=>e.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:Ft.and($e.focus,Ft.not("isComposing")),primary:2051}}));On(new Xnt({id:"cancelRenameInput",precondition:fH,handler:e=>e.cancelRenameInput(),kbOpts:{weight:199,kbExpr:$e.focus,primary:9,secondary:[1033]}}));ys(class extends zu{constructor(){super({id:"focusNextRenameSuggestion",title:{..._t(1389,"Focus Next Rename Suggestion")},precondition:fH,keybinding:[{primary:18,weight:199}]})}run(t){const n=t.get(yo).getFocusedCodeEditor();if(!n)return;const r=I6.get(n);r&&r.focusNextRenameSuggestion()}});ys(class extends zu{constructor(){super({id:"focusPreviousRenameSuggestion",title:{..._t(1390,"Focus Previous Rename Suggestion")},precondition:fH,keybinding:[{primary:16,weight:199}]})}run(t){const n=t.get(yo).getFocusedCodeEditor();if(!n)return;const r=I6.get(n);r&&r.focusPreviousRenameSuggestion()}});_1("_executeDocumentRenameProvider",function(e,t,n,...r){const[o]=r;Oo(typeof o=="string");const{renameProvider:s}=e.get(Nn);return a8o(s,t,n,o)});_1("_executePrepareRename",async function(e,t,n){const{renameProvider:r}=e.get(Nn),s=await new $nt(t,n,r).resolveRenameLocation(Er.None);if(s!=null&&s.rejectReason)throw new Error(s.rejectReason);return s});Ql.as(F3.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:6,description:U(1387,"Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var c8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},a_t=function(e,t){return function(n,r){t(n,r,e)}},Zj;let nke=(Zj=class extends ft{constructor(t,n,r){super(),this.editor=t,this.languageConfigurationService=n,this.editorWorkerService=r,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(t.getOption(81)),this.computePromise=null,this.currentOccurrences={},this._register(t.onDidChangeModel(o=>{this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(t.onDidChangeModelLanguage(o=>{this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(n.onDidChange(o=>{var a;const s=(a=this.editor.getModel())==null?void 0:a.getLanguageId();s&&o.affects(s)&&(this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(t.onDidChangeConfiguration(o=>{this.options&&!o.hasChanged(81)||(this.options=this.createOptions(t.getOption(81)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(o=>{this.computeSectionHeaders.schedule()})),this._register(t.onDidChangeModelTokens(o=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new Es(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(t){if(!t||!this.editor.hasModel())return;const n=this.editor.getModel().getLanguageId();if(!n)return;const r=this.languageConfigurationService.getLanguageConfiguration(n).comments,o=this.languageConfigurationService.getLanguageConfiguration(n).foldingRules;if(!(!r&&!(o!=null&&o.markers)))return{foldingRules:o,markSectionHeaderRegex:t.markSectionHeaderRegex,findMarkSectionHeaders:t.showMarkSectionHeaders,findRegionSectionHeaders:t.showRegionSectionHeaders}}findSectionHeaders(){var r,o;if(!this.editor.hasModel()||!((r=this.options)!=null&&r.findMarkSectionHeaders)&&!((o=this.options)!=null&&o.findRegionSectionHeaders))return;const t=this.editor.getModel();if(t.isDisposed()||t.isTooLargeForSyncing())return;const n=t.getVersionId();this.editorWorkerService.findSectionHeaders(t.uri,this.options).then(s=>{t.isDisposed()||t.getVersionId()!==n||this.updateDecorations(s)})}updateDecorations(t){const n=this.editor.getModel();n&&(t=t.filter(s=>{if(!s.shouldBeInComments)return!0;const a=n.validateRange(s.range),l=n.tokenization.getLineTokens(a.startLineNumber),d=l.findTokenIndexAtOffset(a.startColumn-1),u=l.getStandardTokenType(d);return l.getLanguageId(d)===n.getLanguageId()&&u===1}));const r=Object.values(this.currentOccurrences).map(s=>s.decorationId),o=t.map(s=>d8o(s));this.editor.changeDecorations(s=>{const a=s.deltaDecorations(r,o);this.currentOccurrences={};for(let l=0,d=a.length;l=this._minimumTimeBetweenRuns&&(this._lastRun=n,t())}}class VZ{static create(t,n){return new VZ(t,new cze(n))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(t,n){this._startLineNumber=t,this._tokens=n,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(t){return this._startLineNumber<=t&&t<=this._endLineNumber?this._tokens.getLineTokens(t-this._startLineNumber):null}getRange(){const t=this._tokens.getRange();return t&&new Ee(this._startLineNumber+t.startLineNumber,t.startColumn,this._startLineNumber+t.endLineNumber,t.endColumn)}removeTokens(t){const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(n,t.startColumn-1,r,t.endColumn-1),this._updateEndLineNumber()}split(t){const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber,[o,s,a]=this._tokens.split(n,t.startColumn-1,r,t.endColumn-1);return[new VZ(this._startLineNumber,o),new VZ(this._startLineNumber+a,s)]}applyEdit(t,n){const[r,o,s]=x6(n);this.acceptEdit(t,r,o,s,n.length>0?n.charCodeAt(0):0)}acceptEdit(t,n,r,o,s){this._acceptDeleteRange(t),this._acceptInsertText(new it(t.startLineNumber,t.startColumn),n,r,o,s),this._updateEndLineNumber()}_acceptDeleteRange(t){if(t.startLineNumber===t.endLineNumber&&t.startColumn===t.endColumn)return;const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber;if(r<0){const s=r-n;this._startLineNumber-=s;return}const o=this._tokens.getMaxDeltaLine();if(!(n>=o+1)){if(n<0&&r>=o+1){this._startLineNumber=0,this._tokens.clear();return}if(n<0){const s=-n;this._startLineNumber-=s,this._tokens.acceptDeleteRange(t.startColumn-1,0,0,r,t.endColumn-1)}else this._tokens.acceptDeleteRange(0,n,t.startColumn-1,r,t.endColumn-1)}}_acceptInsertText(t,n,r,o,s){if(n===0&&r===0)return;const a=t.lineNumber-this._startLineNumber;if(a<0){this._startLineNumber+=n;return}const l=this._tokens.getMaxDeltaLine();a>=l+1||this._tokens.acceptInsertText(a,t.column-1,n,r,o,s)}reportIfInvalid(t){this._tokens.reportIfInvalid(t,this._startLineNumber)}}const C5=class C5{constructor(t){this._tokens=t,this._tokenCount=t.length/4}toString(t){const n=[];for(let r=0;rt)r=o-1;else{let a=o;for(;a>n&&this._getDeltaLine(a-1)===t;)a--;let l=o;for(;lt||m===t&&f>=n)&&(mt||f===t&&A>=n){if(fs?k-=s-r:k=r;else if(v===n&&f===r)if(v===o&&k>s)k-=s-r;else{h=!0;continue}else if(vs)v=n,f=r,k=f+(k-s);else{h=!0;continue}else if(v>o){if(d===0&&!h){u=l;break}v-=d}else if(v===o&&f>=s)t&&v===0&&(f+=t,k+=t),v-=d,f-=s-r,k-=s-r;else throw new Error("Not possible!");const p=4*u;a[p]=v,a[p+1]=f,a[p+2]=k,a[p+3]=A,u++}this._tokenCount=u}acceptInsertText(t,n,r,o,s,a){const l=r===0&&o===1&&(a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122),d=this._tokens,u=this._tokenCount;for(let h=0;h{console.error("Invalid Semantic Tokens Data From Extension: lineNumber < 1")}):o>t.getLineCount()?C5._rateLimiter.runIfNotLimited(()=>{console.error("Invalid Semantic Tokens Data From Extension: lineNumber > model.getLineCount()")}):this._getEndCharacter(r)>t.getLineLength(o)&&C5._rateLimiter.runIfNotLimited(()=>{console.error("Invalid Semantic Tokens Data From Extension: end character > model.getLineLength(lineNumber)")})}}};C5._rateLimiter=new u8o(10/60);let cze=C5;class l_t{constructor(t){this._tokens=t}getCount(){return this._tokens.length/4}getStartCharacter(t){return this._tokens[4*t+1]}getEndCharacter(t){return this._tokens[4*t+2]}getMetadata(t){return this._tokens[4*t+3]}}var h8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Hxe=function(e,t){return function(n,r){t(n,r,e)}};let dze=class{constructor(t,n,r,o){this._legend=t,this._themeService=n,this._languageService=r,this._logService=o,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new uze}getMetadata(t,n,r){const o=this._languageService.languageIdCodec.encodeLanguageId(r),s=this._hashTable.get(t,n,o);let a;if(s)a=s.metadata;else{let l=this._legend.tokenTypes[t];const d=[];if(l){let u=n;for(let g=0;u>0&&g>1;const h=this._themeService.getColorTheme().getTokenStyleMetadata(l,d,r);if(typeof h>"u")a=2147483647;else{if(a=0,typeof h.italic<"u"){const g=(h.italic?1:0)<<11;a|=g|1}if(typeof h.bold<"u"){const g=(h.bold?2:0)<<11;a|=g|2}if(typeof h.underline<"u"){const g=(h.underline?4:0)<<11;a|=g|4}if(typeof h.strikethrough<"u"){const g=(h.strikethrough?8:0)<<11;a|=g|8}if(h.foreground){const g=h.foreground<<15;a|=g|16}a===0&&(a=2147483647)}}else a=2147483647,l="not-in-legend";this._hashTable.add(t,n,o,a)}return a}warnOverlappingSemanticTokens(t,n){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${t}, column ${n}`))}warnInvalidLengthSemanticTokens(t,n){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn(`Semantic token with invalid length detected at lineNumber ${t}, column ${n}`))}warnInvalidEditStart(t,n,r,o,s){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${t}, resultId: ${n}) at edit #${r}: The provided start offset ${o} is outside the previous data (length ${s}).`))}};dze=h8o([Hxe(1,Dl),Hxe(2,nc),Hxe(3,va)],dze);function BIn(e,t,n){const r=e.data,o=e.data.length/5|0,s=Math.max(Math.ceil(o/1024),400),a=[];let l=0,d=1,u=0;for(;lh&&r[5*b]===0;)b--;if(b-1===h){let w=g;for(;w+1C)t.warnOverlappingSemanticTokens(y,C+1);else{const T=t.getMetadata(L,E,n);T!==2147483647&&(f===0&&(f=y),m[v]=y-f,m[v+1]=C,m[v+2]=S,m[v+3]=T,v+=4,k=y,A=S)}d=y,u=C,l++}v!==m.length&&(m=m.subarray(0,v));const p=VZ.create(f,m);a.push(p)}return a}class f8o{constructor(t,n,r,o){this.tokenTypeIndex=t,this.tokenModifierSet=n,this.languageId=r,this.metadata=o,this.next=null}}const Y_=class Y_{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=Y_._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1=this._growCount){const s=this._elements;this._currentLengthIndex++,this._currentLength=Y_._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+10?n[0]:[]}async function PIn(e,t,n,r,o){const s=A8o(e,t),a=await Promise.all(s.map(async l=>{let d,u=null;try{d=await l.provideDocumentSemanticTokens(t,l===n?r:null,o)}catch(h){u=h,d=null}return(!d||!z3e(d)&&!IIn(d))&&(d=null),new v8o(l,d,u)}));for(const l of a){if(l.error)throw l.error;if(l.tokens)return l}return a.length>0?a[0]:null}function p8o(e,t){const n=e.orderedGroups(t);return n.length>0?n[0]:null}class b8o{constructor(t,n){this.provider=t,this.tokens=n}}function w8o(e,t){return e.has(t)}function FIn(e,t){const n=e.orderedGroups(t);return n.length>0?n[0]:[]}async function Gnt(e,t,n,r){const o=FIn(e,t),s=await Promise.all(o.map(async a=>{let l;try{l=await a.provideDocumentRangeSemanticTokens(t,n,r)}catch(d){Nc(d),l=null}return(!l||!z3e(l))&&(l=null),new b8o(a,l)}));for(const a of s)if(a.tokens)return a;return s.length>0?s[0]:null}co.registerCommand("_provideDocumentSemanticTokensLegend",async(e,...t)=>{const[n]=t;Oo(n instanceof vi);const r=e.get(ml).getModel(n);if(!r)return;const{documentSemanticTokensProvider:o}=e.get(Nn),s=p8o(o,r);return s?s[0].getLegend():e.get(ba).executeCommand("_provideDocumentRangeSemanticTokensLegend",n)});co.registerCommand("_provideDocumentSemanticTokens",async(e,...t)=>{const[n]=t;Oo(n instanceof vi);const r=e.get(ml).getModel(n);if(!r)return;const{documentSemanticTokensProvider:o}=e.get(Nn);if(!MIn(o,r))return e.get(ba).executeCommand("_provideDocumentRangeSemanticTokens",n,r.getFullModelRange());const s=await PIn(o,r,null,null,Er.None);if(!s)return;const{provider:a,tokens:l}=s;if(!l||!z3e(l))return;const d=RIn({id:0,type:"full",data:l.data});return l.resultId&&a.releaseDocumentSemanticTokens(l.resultId),d});co.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(e,...t)=>{const[n,r]=t;Oo(n instanceof vi);const o=e.get(ml).getModel(n);if(!o)return;const{documentRangeSemanticTokensProvider:s}=e.get(Nn),a=FIn(s,o);if(a.length===0)return;if(a.length===1)return a[0].getLegend();if(!r||!Ee.isIRange(r))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),a[0].getLegend();const l=await Gnt(s,o,Ee.lift(r),Er.None);if(l)return l.provider.getLegend()});co.registerCommand("_provideDocumentRangeSemanticTokens",async(e,...t)=>{const[n,r]=t;Oo(n instanceof vi),Oo(Ee.isIRange(r));const o=e.get(ml).getModel(n);if(!o)return;const{documentRangeSemanticTokensProvider:s}=e.get(Nn),a=await Gnt(s,o,Ee.lift(r),Er.None);if(!(!a||!a.tokens))return RIn({id:0,type:"full",data:a.tokens.data})});const Ynt="editor.semanticHighlighting";function She(e,t,n){var o;const r=(o=n.getValue(Ynt,{overrideIdentifier:e.getLanguageId(),resource:e.uri}))==null?void 0:o.enabled;return typeof r=="boolean"?r:t.getColorTheme().semanticHighlighting}var NIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gO=function(e,t){return function(n,r){t(n,r,e)}},zx;let hze=class extends ft{constructor(t,n,r,o,s,a){super(),this._watchers=new _c;const l=h=>{var g;(g=this._watchers.get(h.uri))==null||g.dispose(),this._watchers.set(h.uri,new fze(h,t,r,s,a))},d=(h,g)=>{g.dispose(),this._watchers.delete(h.uri)},u=()=>{for(const h of n.getModels()){const g=this._watchers.get(h.uri);She(h,r,o)?g||l(h):g&&d(h,g)}};n.getModels().forEach(h=>{She(h,r,o)&&l(h)}),this._register(n.onModelAdded(h=>{She(h,r,o)&&l(h)})),this._register(n.onModelRemoved(h=>{const g=this._watchers.get(h.uri);g&&d(h,g)})),this._register(o.onDidChangeConfiguration(h=>{h.affectsConfiguration(Ynt)&&u()})),this._register(r.onDidColorThemeChange(u))}dispose(){us(this._watchers.values()),this._watchers.clear(),super.dispose()}};hze=NIn([gO(0,V3e),gO(1,ml),gO(2,Dl),gO(3,ar),gO(4,CA),gO(5,Nn)],hze);var l6;let fze=(l6=class extends ft{constructor(t,n,r,o,s){super(),this._semanticTokensStylingService=n,this._isDisposed=!1,this._model=t,this._provider=s.documentSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentSemanticTokens",{min:zx.REQUEST_MIN_DELAY,max:zx.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new Es(()=>this._fetchDocumentSemanticTokensNow(),zx.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 a=()=>{us(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const l of this._provider.all(t))typeof l.onDidChange=="function"&&this._documentProvidersChangeListeners.push(l.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};a(),this._register(this._provider.onDidChange(()=>{a(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(r.onDidColorThemeChange(l=>{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),us(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!MIn(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const t=new ja,n=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,r=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,o=PIn(this._provider,this._model,n,r,t.token);this._currentDocumentRequestCancellationTokenSource=t,this._providersChangedDuringRequest=!1;const s=[],a=this._model.onDidChangeContent(d=>{s.push(d)}),l=new vu(!1);o.then(d=>{if(this._debounceInformation.update(this._model,l.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,a.dispose(),!d)this._setDocumentSemanticTokens(null,null,null,s);else{const{provider:u,tokens:h}=d,g=this._semanticTokensStylingService.getStyling(u);this._setDocumentSemanticTokens(u,h||null,g,s)}},d=>{d&&(C2(d)||typeof d.message=="string"&&d.message.indexOf("busy")!==-1)||zi(d),this._currentDocumentRequestCancellationTokenSource=null,a.dispose(),(s.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(t,n,r,o,s){s=Math.min(s,r.length-o,t.length-n);for(let a=0;a{(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&&n&&t.releaseDocumentSemanticTokens(n.resultId);return}if(!t||!r){this._model.tokenization.setSemanticTokens(null,!1);return}if(!n){this._model.tokenization.setSemanticTokens(null,!0),a();return}if(IIn(n)){if(!s){this._model.tokenization.setSemanticTokens(null,!0);return}if(n.edits.length===0)n={resultId:n.resultId,data:s.data};else{let l=0;for(const m of n.edits)l+=(m.data?m.data.length:0)-m.deleteCount;const d=s.data,u=new Uint32Array(d.length+l);let h=d.length,g=u.length;for(let m=n.edits.length-1;m>=0;m--){const v=n.edits[m];if(v.start>d.length){r.warnInvalidEditStart(s.resultId,n.resultId,m,v.start,d.length),this._model.tokenization.setSemanticTokens(null,!0);return}const f=h-(v.start+v.deleteCount);f>0&&(zx._copy(d,h-f,u,g-f,f),g-=f),v.data&&(zx._copy(v.data,0,u,g-v.data.length,v.data.length),g-=v.data.length),h=v.start}h>0&&zx._copy(d,0,u,0,h),n={resultId:n.resultId,data:u}}}if(z3e(n)){this._currentDocumentResponse=new O8o(t,n.resultId,n.data);const l=BIn(n,r,this._model.getLanguageId());if(o.length>0)for(const d of o)for(const u of l)for(const h of d.changes)u.applyEdit(h.range,h.text);this._model.tokenization.setSemanticTokens(l,!0)}else this._model.tokenization.setSemanticTokens(null,!0);a()}},zx=l6,l6.REQUEST_MIN_DELAY=300,l6.REQUEST_MAX_DELAY=2e3,l6);fze=zx=NIn([gO(1,V3e),gO(2,Dl),gO(3,CA),gO(4,Nn)],fze);class O8o{constructor(t,n,r){this.provider=t,this.resultId=n,this.data=r}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}dH(hze);var y8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RX=function(e,t){return function(n,r){t(n,r,e)}},qj;let ike=(qj=class extends ft{constructor(t,n,r,o,s,a){super(),this._semanticTokensStylingService=n,this._themeService=r,this._configurationService=o,this._editor=t,this._provider=a.documentRangeSemanticTokensProvider,this._debounceInformation=s.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new Es(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[],this._rangeProvidersChangeListeners=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))},d=()=>{var u;if(this._cleanupProviderListeners(),this._editor.hasModel()){const h=this._editor.getModel();for(const g of this._provider.all(h)){const m=(u=g.onDidChange)==null?void 0:u.call(g,()=>{this._cancelAll(),l()});m&&this._rangeProvidersChangeListeners.push(m)}}};this._register(this._editor.onDidScrollChange(()=>{l()})),this._register(this._editor.onDidChangeModel(()=>{d(),this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelLanguage(()=>{d(),this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelContent(u=>{this._cancelAll(),l()})),d(),this._register(this._provider.onDidChange(()=>{d(),this._cancelAll(),l()})),this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration(Ynt)&&(this._cancelAll(),l())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),l()})),l()}dispose(){this._cleanupProviderListeners(),super.dispose()}_cleanupProviderListeners(){us(this._rangeProvidersChangeListeners),this._rangeProvidersChangeListeners=[]}_cancelAll(){for(const t of this._outstandingRequests)t.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(t){for(let n=0,r=this._outstandingRequests.length;nthis._requestRange(t,r)))}_requestRange(t,n){const r=t.getVersionId(),o=Fd(a=>Promise.resolve(Gnt(this._provider,t,n,a))),s=new vu(!1);return o.then(a=>{if(this._debounceInformation.update(t,s.elapsed()),!a||!a.tokens||t.isDisposed()||t.getVersionId()!==r)return;const{provider:l,tokens:d}=a,u=this._semanticTokensStylingService.getStyling(l);t.tokenization.setPartialSemanticTokens(n,BIn(d,u,t.getLanguageId()))}).then(()=>this._removeOutstandingRequest(o),()=>this._removeOutstandingRequest(o)),o}},qj.ID="editor.contrib.viewportSemanticTokens",qj);ike=y8o([RX(1,V3e),RX(2,Dl),RX(3,ar),RX(4,CA),RX(5,Nn)],ike);mo(ike.ID,ike,1);class C8o{constructor(t=!0){this.selectSubwords=t}provideSelectionRanges(t,n){const r=[];for(const o of n){const s=[];r.push(s),this.selectSubwords&&this._addInWordRanges(s,t,o),this._addWordRanges(s,t,o),this._addWhitespaceLine(s,t,o),s.push({range:t.getFullModelRange()})}return r}_addInWordRanges(t,n,r){const o=n.getWordAtPosition(r);if(!o)return;const{word:s,startColumn:a}=o,l=r.column-a;let d=l,u=l,h=0;for(;d>=0;d--){const g=s.charCodeAt(d);if(d!==l&&(g===95||g===45))break;if(l9(g)&&dO(h))break;h=g}for(d+=1;u0&&n.getLineFirstNonWhitespaceColumn(r.lineNumber)===0&&n.getLineLastNonWhitespaceColumn(r.lineNumber)===0&&t.push({range:new Ee(r.lineNumber,1,r.lineNumber,n.getLineMaxColumn(r.lineNumber))})}}var _8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},S8o=function(e,t){return function(n,r){t(n,r,e)}},gze;class Znt{constructor(t,n){this.index=t,this.ranges=n}mov(t){const n=this.index+(t?1:-1);if(n<0||n>=this.ranges.length)return this;const r=new Znt(n,this.ranges);return r.ranges[n].equalsRange(this.ranges[this.index])?r.mov(t):r}}var AB;let uee=(AB=class{static get(t){return t.getContribution(gze.ID)}constructor(t,n){this._editor=t,this._languageFeaturesService=n,this._ignoreSelection=!1}dispose(){var t;(t=this._selectionListener)==null||t.dispose()}async run(t){if(!this._editor.hasModel())return;const n=this._editor.getSelections(),r=this._editor.getModel();if(this._state||await jIn(this._languageFeaturesService.selectionRangeProvider,r,n.map(s=>s.getPosition()),this._editor.getOption(129),Er.None).then(s=>{var a;if(!(!yg(s)||s.length!==n.length)&&!(!this._editor.hasModel()||!Na(this._editor.getSelections(),n,(l,d)=>l.equalsSelection(d)))){for(let l=0;ld.containsPosition(n[l].getStartPosition())&&d.containsPosition(n[l].getEndPosition())),s[l].unshift(n[l]);this._state=s.map(l=>new Znt(0,l)),(a=this._selectionListener)==null||a.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var l;this._ignoreSelection||((l=this._selectionListener)==null||l.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(s=>s.mov(t));const o=this._state.map(s=>Qn.fromPositions(s.ranges[s.index].getStartPosition(),s.ranges[s.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(o)}finally{this._ignoreSelection=!1}}},gze=AB,AB.ID="editor.contrib.smartSelectController",AB);uee=gze=_8o([S8o(1,Nn)],uee);class UIn extends Bn{constructor(t,n){super(n),this._forward=t}async run(t,n){const r=uee.get(n);r&&await r.run(this._forward)}}class L8o extends UIn{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:_t(1400,"Expand Selection"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(1398,"&&Expand Selection"),order:2}})}}co.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class x8o extends UIn{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:_t(1401,"Shrink Selection"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(1399,"&&Shrink Selection"),order:3}})}}mo(uee.ID,uee,4);un(L8o);un(x8o);async function jIn(e,t,n,r,o){const s=e.all(t).concat(new C8o(r.selectSubwords));s.length===1&&s.unshift(new j0e);const a=[],l=[];for(const d of s)a.push(Promise.resolve(d.provideSelectionRanges(t,n,o)).then(u=>{if(yg(u)&&u.length===n.length)for(let h=0;h{if(d.length===0)return[];d.sort((m,v)=>it.isBefore(m.getStartPosition(),v.getStartPosition())?1:it.isBefore(v.getStartPosition(),m.getStartPosition())||it.isBefore(m.getEndPosition(),v.getEndPosition())?-1:it.isBefore(v.getEndPosition(),m.getEndPosition())?1:0);const u=[];let h;for(const m of d)(!h||Ee.containsRange(m,h)&&!Ee.equalsRange(m,h))&&(u.push(m),h=m);if(!r.selectLeadingAndTrailingWhitespace)return u;const g=[u[0]];for(let m=1;mit.isIPosition(a)));const o=e.get(Nn).selectionRangeProvider,s=await e.get(Dg).createModelReference(n);try{return jIn(o,s.object.textEditorModel,r.map(it.lift),{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},Er.None)}finally{s.dispose()}});const mze=Object.freeze({View:_t(1638,"View"),Help:_t(1639,"Help"),Test:_t(1640,"Test"),File:_t(1641,"File"),Preferences:_t(1642,"Preferences"),Developer:_t(1643,"Developer")});class E8o extends Op{constructor(){super({id:"editor.action.toggleStickyScroll",title:{..._t(1448,"Toggle Editor Sticky Scroll"),mnemonicTitle:U(1444,"&&Toggle Editor Sticky Scroll")},metadata:{description:_t(1449,"Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:mze.View,toggled:{condition:Ft.equals("config.editor.stickyScroll.enabled",!0),title:U(1445,"Sticky Scroll"),mnemonicTitle:U(1446,"&&Sticky Scroll")},menu:[{id:Wn.CommandPalette},{id:Wn.MenubarAppearanceMenu,group:"4_editor",order:3},{id:Wn.StickyScrollContext}]})}async runEditorCommand(t,n){var a;const r=t.get(ar),o=!r.getValue("editor.stickyScroll.enabled"),s=(a=fp.get(n))==null?void 0:a.isFocused();r.updateValue("editor.stickyScroll.enabled",o),s&&n.focus()}}const H3e=100;class T8o extends Op{constructor(){super({id:"editor.action.focusStickyScroll",title:{..._t(1450,"Focus Editor Sticky Scroll"),mnemonicTitle:U(1447,"&&Focus Editor Sticky Scroll")},precondition:Ft.and(Ft.has("config.editor.stickyScroll.enabled"),$e.stickyScrollVisible),menu:[{id:Wn.CommandPalette}]})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focus()}}class Q8o extends Op{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:_t(1451,"Select the next editor sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:18}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focusNext()}}class D8o extends Op{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:_t(1452,"Select the previous sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:16}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focusPrevious()}}class B8o extends Op{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:_t(1453,"Go to the focused sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:3}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.goToFocused()}}class R8o extends Op{constructor(){super({id:"editor.action.selectEditor",title:_t(1454,"Select Editor"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:9}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.selectEditor()}}mo(fp.ID,fp,1);ys(E8o);ys(T8o);ys(D8o);ys(Q8o);ys(B8o);ys(R8o);var WIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},YG=function(e,t){return function(n,r){t(n,r,e)}};class I8o{constructor(t,n,r,o,s,a,l){this.range=t,this.insertText=n,this.filterText=r,this.additionalTextEdits=o,this.command=s,this.gutterMenuLinkAction=a,this.completion=l}}let kze=class extends GJr{constructor(t,n,r,o,s,a){super(s.disposable),this.model=t,this.line=n,this.word=r,this.completionModel=o,this._suggestMemoryService=a}canBeReused(t,n,r){return this.model===t&&this.line===n&&this.word.word.length>0&&this.word.startColumn===r.startColumn&&this.word.endColumn=0&&l.resolve(Er.None)}return t}};kze=WIn([YG(5,N3e)],kze);let vze=class extends ft{constructor(t,n,r,o){super(),this._languageFeatureService=t,this._clipboardService=n,this._suggestMemoryService=r,this._editorService=o,this._store.add(t.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(t,n,r,o){var v;if(r.selectedSuggestionInfo)return;let s;for(const f of this._editorService.listCodeEditors())if(f.getModel()===t){s=f;break}if(!s)return;const a=s.getOption(102);if(CN.isAllOff(a))return;t.tokenization.tokenizeIfCheap(n.lineNumber);const l=t.tokenization.getLineTokens(n.lineNumber),d=l.getStandardTokenType(l.findTokenIndexAtOffset(Math.max(n.column-1-1,0)));if(CN.valueFor(a,d)!=="inline")return;let u=t.getWordAtPosition(n),h;if(u!=null&&u.word||(h=this._getTriggerCharacterInfo(t,n)),!(u!=null&&u.word)&&!h||(u||(u=t.getWordUntilPosition(n)),u.endColumn!==n.column))return;let g;const m=t.getValueInRange(new Ee(n.lineNumber,1,n.lineNumber,n.column));if(!h&&((v=this._lastResult)!=null&&v.canBeReused(t,n.lineNumber,u))){const f=new DCt(m,n.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=f,this._lastResult.acquire(),g=this._lastResult}else{const f=await Bnt(this._languageFeatureService.completionProvider,t,n,new JJ(void 0,V0e.createSuggestFilter(s).itemKind,h==null?void 0:h.providers),h&&{triggerKind:1,triggerCharacter:h.ch},o);let k;f.needsClipboard&&(k=await this._clipboardService.readText());const A=new D5(f.items,n.column,new DCt(m,0),W0e.None,s.getOption(134),s.getOption(128),{boostFullMatch:!1,firstMatchCanBeWeak:!1},k);g=new kze(t,n.lineNumber,u,A,f,this._suggestMemoryService)}return this._lastResult=g,g}handleItemDidShow(t,n){n.completion.resolve(Er.None)}disposeInlineCompletions(t){t.release()}_getTriggerCharacterInfo(t,n){var s;const r=t.getValueInRange(Ee.fromPositions({lineNumber:n.lineNumber,column:n.column-1},n)),o=new Set;for(const a of this._languageFeatureService.completionProvider.all(t))(s=a.triggerCharacters)!=null&&s.includes(r)&&o.add(a);if(o.size!==0)return{providers:o,ch:r}}};vze=WIn([YG(0,Nn),YG(1,U0),YG(2,N3e),YG(3,yo)],vze);dH(vze);class M8o extends Bn{constructor(){super({id:"editor.action.forceRetokenize",label:_t(1532,"Developer: Force Retokenize"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getModel();r.tokenization.resetTokenization();const o=new vu;r.tokenization.forceTokenization(r.getLineCount()),o.stop(),console.log(`tokenization took ${o.elapsed()}`)}}un(M8o);const EAe=class EAe extends zu{constructor(){super({id:EAe.ID,title:_t(1530,"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:_t(1531,"Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const n=!tV.getTabFocusMode();tV.setTabFocusMode(n),um(n?U(1528,"Pressing Tab will now move focus to the next focusable element"):U(1529,"Pressing Tab will now insert the tab character"))}};EAe.ID="editor.action.toggleTabFocusMode";let Aze=EAe;ys(Aze);class qnt{static computeUnicodeHighlights(t,n,r){const o=r?r.startLineNumber:1,s=r?r.endLineNumber:t.getLineCount(),a=new c_t(n),l=a.getCandidateCodePoints();let d;l==="allNonBasicAscii"?d=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):d=new RegExp(`${P8o(Array.from(l))}`,"g");const u=new AN(null,d),h=[];let g=!1,m,v=0,f=0,k=0;e:for(let A=o,p=s;A<=p;A++){const b=t.getLineContent(A),w=b.length;u.reset(0);do if(m=u.next(b),m){let O=m.index,y=m.index+m[0].length;if(O>0){const L=b.charCodeAt(O-1);Id(L)&&O--}if(y+1=1e3){g=!0;break e}h.push(new Ee(A,O+1,A,y+1))}}while(m)}return{ranges:h,hasMore:g,ambiguousCharacterCount:v,invisibleCharacterCount:f,nonBasicAsciiCharacterCount:k}}static computeUnicodeHighlightReason(t,n){const r=new c_t(n);switch(r.shouldHighlightNonBasicASCII(t,null)){case 0:return null;case 2:return{kind:1};case 3:{const s=t.codePointAt(0),a=r.ambiguousCharacters.getPrimaryConfusable(s),l=WK.getLocales().filter(d=>!WK.getInstance(new Set([...n.allowedLocales,d])).isAmbiguous(s));return{kind:0,confusableWith:String.fromCodePoint(a),notAmbiguousInLocales:l}}case 1:return{kind:2}}}}function P8o(e,t){return`[${M0(e.map(r=>String.fromCodePoint(r)).join(""))}]`}class c_t{constructor(t){this.options=t,this.allowedCodePoints=new Set(t.allowedCodePoints),this.ambiguousCharacters=WK.getInstance(new Set(t.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const t=new Set;if(this.options.invisibleCharacters)for(const n of aD.codePoints)d_t(String.fromCodePoint(n))||t.add(n);if(this.options.ambiguousCharacters)for(const n of this.ambiguousCharacters.getConfusableCodePoints())t.add(n);for(const n of this.allowedCodePoints)t.delete(n);return t}shouldHighlightNonBasicASCII(t,n){const r=t.codePointAt(0);if(this.allowedCodePoints.has(r))return 0;if(this.options.nonBasicASCII)return 1;let o=!1,s=!1;if(n)for(const a of n){const l=a.codePointAt(0),d=Sie(a);o=o||d,!d&&!this.ambiguousCharacters.isAmbiguous(l)&&!aD.isInvisibleCharacter(l)&&(s=!0)}return!o&&s?0:this.options.invisibleCharacters&&!d_t(t)&&aD.isInvisibleCharacter(r)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(r)?3:0}}function d_t(e){return e===" "||e===` +`)};const a=await s.provideRenameEdits(this.model,this.position,t,o);if(a){if(a.rejectReason)return this._provideRenameEdits(t,n+1,r.concat(a.rejectReason),o)}else return this._provideRenameEdits(t,n+1,r.concat(U(1380,"No result.")),o);return a}}async function a8o(e,t,n,r){const o=new $nt(t,n,e),s=await o.resolveRenameLocation(Er.None);return s!=null&&s.rejectReason?{edits:[],rejectReason:s.rejectReason}:o.provideRenameEdits(r,Er.None)}var vB;let I6=(vB=class{static get(t){return t.getContribution(lze.ID)}constructor(t,n,r,o,s,a,l,d){this.editor=t,this._instaService=n,this._notificationService=r,this._bulkEditService=o,this._progressService=s,this._logService=a,this._configService=l,this._languageFeaturesService=d,this._disposableStore=new xt,this._cts=new ja,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(aze,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var f,k;const t=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new ja,!this.editor.hasModel()){t("editor has no model");return}const n=this.editor.getPosition(),r=new $nt(this.editor.getModel(),n,this._languageFeaturesService.renameProvider);if(!r.hasProvider()){t("skeleton has no provider");return}const o=new z8(this.editor,5,void 0,this._cts.token);let s;try{t("resolving rename location");const A=r.resolveRenameLocation(o.token);this._progressService.showWhile(A,250),s=await A,t("resolved rename location")}catch(A){A instanceof lA?t("resolve rename location cancelled",JSON.stringify(A,null," ")):(t("resolve rename location failed",A instanceof Error?A:JSON.stringify(A,null," ")),(typeof A=="string"||i8(A))&&((f=D0.get(this.editor))==null||f.showMessage(A||U(1381,"An unknown error occurred while resolving rename location"),n)));return}finally{o.dispose()}if(!s){t("returning early - no loc");return}if(s.rejectReason){t(`returning early - rejected with reason: ${s.rejectReason}`,s.rejectReason),(k=D0.get(this.editor))==null||k.showMessage(s.rejectReason,n);return}if(o.token.isCancellationRequested){t("returning early - cts1 cancelled");return}const a=new z8(this.editor,5,s.range,this._cts.token),l=this.editor.getModel(),d=this._languageFeaturesService.newSymbolNamesProvider.all(l),u=await Promise.all(d.map(async A=>[A,await A.supportsAutomaticNewSymbolNamesTriggerKind??!1])),h=(A,p)=>{let b=u.slice();return A===fJ.Automatic&&(b=b.filter(([w,O])=>O)),b.map(([w])=>w.provideNewSymbolNames(l,s.range,A,p))};t("creating rename input field and awaiting its result");const g=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),m=await this._renameWidget.getInput(s.range,s.text,g,d.length>0?h:void 0,a);if(t("received response from rename input field"),typeof m=="boolean"){t(`returning early - rename input field response - ${m}`),m&&this.editor.focus(),a.dispose();return}this.editor.focus(),t("requesting rename edits");const v=YW(r.provideRenameEdits(m.newName,a.token),a.token).then(async A=>{if(!A){t("returning early - no rename edits result");return}if(!this.editor.hasModel()){t("returning early - no model after rename edits are provided");return}if(A.rejectReason){t(`returning early - rejected with reason: ${A.rejectReason}`),this._notificationService.info(A.rejectReason);return}this.editor.setSelection(Ee.fromPositions(this.editor.getSelection().getPosition())),t("applying edits"),this._bulkEditService.apply(A,{editor:this.editor,showPreview:m.wantsPreview,label:U(1382,"Renaming '{0}' to '{1}'",s==null?void 0:s.text,m.newName),code:"undoredo.rename",quotableLabel:U(1383,"Renaming {0} to {1}",s==null?void 0:s.text,m.newName),respectAutoSaveConfig:!0,reason:Af.rename()}).then(p=>{t("edits applied"),p.ariaSummary&&um(U(1384,"Successfully renamed '{0}' to '{1}'. Summary: {2}",s.text,m.newName,p.ariaSummary))}).catch(p=>{t(`error when applying edits ${JSON.stringify(p,null," ")}`),this._notificationService.error(U(1385,"Rename failed to apply edits")),this._logService.error(p)})},A=>{t("error when providing rename edits",JSON.stringify(A,null," ")),this._notificationService.error(U(1386,"Rename failed to compute edits")),this._logService.error(A)}).finally(()=>{a.dispose()});return t("returning rename operation"),this._progressService.showWhile(v,250),v}acceptRenameInput(t){this._renameWidget.acceptInput(t)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}},lze=vB,vB.ID="editor.contrib.renameController",vB);I6=lze=s8o([_7(1,Yn),_7(2,ic),_7(3,Yie),_7(4,V8),_7(5,va),_7(6,W3e),_7(7,Nn)],I6);class l8o extends Bn{constructor(){super({id:"editor.action.rename",label:_t(1388,"Rename Symbol"),precondition:Ft.and($e.writable,$e.hasRenameProvider),kbOpts:{kbExpr:$e.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1},canTriggerInlineEdits:!0})}runCommand(t,n){const r=t.get(yo),[o,s]=Array.isArray(n)&&n||[void 0,void 0];return vi.isUri(o)&&it.isIPosition(s)?r.openCodeEditor({resource:o},r.getActiveCodeEditor()).then(a=>{a&&(a.setPosition(s),a.invokeWithinContext(l=>(this.reportTelemetry(l,a),this.run(l,a))))},zi):super.runCommand(t,n)}run(t,n){const r=t.get(va),o=I6.get(n);return o?(r.trace("[RenameAction] got controller, running..."),o.run()):(r.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}mo(I6.ID,I6,4);un(l8o);const Xnt=$d.bindToContribution(I6.get);On(new Xnt({id:"acceptRenameInput",precondition:fH,handler:e=>e.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:Ft.and($e.focus,Ft.not("isComposing")),primary:3}}));On(new Xnt({id:"acceptRenameInputWithPreview",precondition:Ft.and(fH,Ft.has("config.editor.rename.enablePreview")),handler:e=>e.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:Ft.and($e.focus,Ft.not("isComposing")),primary:2051}}));On(new Xnt({id:"cancelRenameInput",precondition:fH,handler:e=>e.cancelRenameInput(),kbOpts:{weight:199,kbExpr:$e.focus,primary:9,secondary:[1033]}}));ys(class extends zu{constructor(){super({id:"focusNextRenameSuggestion",title:{..._t(1389,"Focus Next Rename Suggestion")},precondition:fH,keybinding:[{primary:18,weight:199}]})}run(t){const n=t.get(yo).getFocusedCodeEditor();if(!n)return;const r=I6.get(n);r&&r.focusNextRenameSuggestion()}});ys(class extends zu{constructor(){super({id:"focusPreviousRenameSuggestion",title:{..._t(1390,"Focus Previous Rename Suggestion")},precondition:fH,keybinding:[{primary:16,weight:199}]})}run(t){const n=t.get(yo).getFocusedCodeEditor();if(!n)return;const r=I6.get(n);r&&r.focusPreviousRenameSuggestion()}});_1("_executeDocumentRenameProvider",function(e,t,n,...r){const[o]=r;Oo(typeof o=="string");const{renameProvider:s}=e.get(Nn);return a8o(s,t,n,o)});_1("_executePrepareRename",async function(e,t,n){const{renameProvider:r}=e.get(Nn),s=await new $nt(t,n,r).resolveRenameLocation(Er.None);if(s!=null&&s.rejectReason)throw new Error(s.rejectReason);return s});Ql.as(F3.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:6,description:U(1387,"Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var c8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},a_t=function(e,t){return function(n,r){t(n,r,e)}},Zj;let nke=(Zj=class extends ft{constructor(t,n,r){super(),this.editor=t,this.languageConfigurationService=n,this.editorWorkerService=r,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(t.getOption(81)),this.computePromise=null,this.currentOccurrences={},this._register(t.onDidChangeModel(o=>{this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(t.onDidChangeModelLanguage(o=>{this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(n.onDidChange(o=>{var a;const s=(a=this.editor.getModel())==null?void 0:a.getLanguageId();s&&o.affects(s)&&(this.currentOccurrences={},this.options=this.createOptions(t.getOption(81)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(t.onDidChangeConfiguration(o=>{this.options&&!o.hasChanged(81)||(this.options=this.createOptions(t.getOption(81)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(o=>{this.computeSectionHeaders.schedule()})),this._register(t.onDidChangeModelTokens(o=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new Es(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(t){if(!t||!this.editor.hasModel())return;const n=this.editor.getModel().getLanguageId();if(!n)return;const r=this.languageConfigurationService.getLanguageConfiguration(n).comments,o=this.languageConfigurationService.getLanguageConfiguration(n).foldingRules;if(!(!r&&!(o!=null&&o.markers)))return{foldingRules:o,markSectionHeaderRegex:t.markSectionHeaderRegex,findMarkSectionHeaders:t.showMarkSectionHeaders,findRegionSectionHeaders:t.showRegionSectionHeaders}}findSectionHeaders(){var r,o;if(!this.editor.hasModel()||!((r=this.options)!=null&&r.findMarkSectionHeaders)&&!((o=this.options)!=null&&o.findRegionSectionHeaders))return;const t=this.editor.getModel();if(t.isDisposed()||t.isTooLargeForSyncing())return;const n=t.getVersionId();this.editorWorkerService.findSectionHeaders(t.uri,this.options).then(s=>{t.isDisposed()||t.getVersionId()!==n||this.updateDecorations(s)})}updateDecorations(t){const n=this.editor.getModel();n&&(t=t.filter(s=>{if(!s.shouldBeInComments)return!0;const a=n.validateRange(s.range),l=n.tokenization.getLineTokens(a.startLineNumber),d=l.findTokenIndexAtOffset(a.startColumn-1),u=l.getStandardTokenType(d);return l.getLanguageId(d)===n.getLanguageId()&&u===1}));const r=Object.values(this.currentOccurrences).map(s=>s.decorationId),o=t.map(s=>d8o(s));this.editor.changeDecorations(s=>{const a=s.deltaDecorations(r,o);this.currentOccurrences={};for(let l=0,d=a.length;l=this._minimumTimeBetweenRuns&&(this._lastRun=n,t())}}class VZ{static create(t,n){return new VZ(t,new cze(n))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(t,n){this._startLineNumber=t,this._tokens=n,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(t){return this._startLineNumber<=t&&t<=this._endLineNumber?this._tokens.getLineTokens(t-this._startLineNumber):null}getRange(){const t=this._tokens.getRange();return t&&new Ee(this._startLineNumber+t.startLineNumber,t.startColumn,this._startLineNumber+t.endLineNumber,t.endColumn)}removeTokens(t){const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(n,t.startColumn-1,r,t.endColumn-1),this._updateEndLineNumber()}split(t){const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber,[o,s,a]=this._tokens.split(n,t.startColumn-1,r,t.endColumn-1);return[new VZ(this._startLineNumber,o),new VZ(this._startLineNumber+a,s)]}applyEdit(t,n){const[r,o,s]=x6(n);this.acceptEdit(t,r,o,s,n.length>0?n.charCodeAt(0):0)}acceptEdit(t,n,r,o,s){this._acceptDeleteRange(t),this._acceptInsertText(new it(t.startLineNumber,t.startColumn),n,r,o,s),this._updateEndLineNumber()}_acceptDeleteRange(t){if(t.startLineNumber===t.endLineNumber&&t.startColumn===t.endColumn)return;const n=t.startLineNumber-this._startLineNumber,r=t.endLineNumber-this._startLineNumber;if(r<0){const s=r-n;this._startLineNumber-=s;return}const o=this._tokens.getMaxDeltaLine();if(!(n>=o+1)){if(n<0&&r>=o+1){this._startLineNumber=0,this._tokens.clear();return}if(n<0){const s=-n;this._startLineNumber-=s,this._tokens.acceptDeleteRange(t.startColumn-1,0,0,r,t.endColumn-1)}else this._tokens.acceptDeleteRange(0,n,t.startColumn-1,r,t.endColumn-1)}}_acceptInsertText(t,n,r,o,s){if(n===0&&r===0)return;const a=t.lineNumber-this._startLineNumber;if(a<0){this._startLineNumber+=n;return}const l=this._tokens.getMaxDeltaLine();a>=l+1||this._tokens.acceptInsertText(a,t.column-1,n,r,o,s)}reportIfInvalid(t){this._tokens.reportIfInvalid(t,this._startLineNumber)}}const C5=class C5{constructor(t){this._tokens=t,this._tokenCount=t.length/4}toString(t){const n=[];for(let r=0;rt)r=o-1;else{let a=o;for(;a>n&&this._getDeltaLine(a-1)===t;)a--;let l=o;for(;lt||m===t&&f>=n)&&(mt||f===t&&A>=n){if(fs?k-=s-r:k=r;else if(v===n&&f===r)if(v===o&&k>s)k-=s-r;else{h=!0;continue}else if(vs)v=n,f=r,k=f+(k-s);else{h=!0;continue}else if(v>o){if(d===0&&!h){u=l;break}v-=d}else if(v===o&&f>=s)t&&v===0&&(f+=t,k+=t),v-=d,f-=s-r,k-=s-r;else throw new Error("Not possible!");const p=4*u;a[p]=v,a[p+1]=f,a[p+2]=k,a[p+3]=A,u++}this._tokenCount=u}acceptInsertText(t,n,r,o,s,a){const l=r===0&&o===1&&(a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122),d=this._tokens,u=this._tokenCount;for(let h=0;h{console.error("Invalid Semantic Tokens Data From Extension: lineNumber < 1")}):o>t.getLineCount()?C5._rateLimiter.runIfNotLimited(()=>{console.error("Invalid Semantic Tokens Data From Extension: lineNumber > model.getLineCount()")}):this._getEndCharacter(r)>t.getLineLength(o)&&C5._rateLimiter.runIfNotLimited(()=>{console.error("Invalid Semantic Tokens Data From Extension: end character > model.getLineLength(lineNumber)")})}}};C5._rateLimiter=new u8o(10/60);let cze=C5;class l_t{constructor(t){this._tokens=t}getCount(){return this._tokens.length/4}getStartCharacter(t){return this._tokens[4*t+1]}getEndCharacter(t){return this._tokens[4*t+2]}getMetadata(t){return this._tokens[4*t+3]}}var h8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Hxe=function(e,t){return function(n,r){t(n,r,e)}};let dze=class{constructor(t,n,r,o){this._legend=t,this._themeService=n,this._languageService=r,this._logService=o,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new uze}getMetadata(t,n,r){const o=this._languageService.languageIdCodec.encodeLanguageId(r),s=this._hashTable.get(t,n,o);let a;if(s)a=s.metadata;else{let l=this._legend.tokenTypes[t];const d=[];if(l){let u=n;for(let g=0;u>0&&g>1;const h=this._themeService.getColorTheme().getTokenStyleMetadata(l,d,r);if(typeof h>"u")a=2147483647;else{if(a=0,typeof h.italic<"u"){const g=(h.italic?1:0)<<11;a|=g|1}if(typeof h.bold<"u"){const g=(h.bold?2:0)<<11;a|=g|2}if(typeof h.underline<"u"){const g=(h.underline?4:0)<<11;a|=g|4}if(typeof h.strikethrough<"u"){const g=(h.strikethrough?8:0)<<11;a|=g|8}if(h.foreground){const g=h.foreground<<15;a|=g|16}a===0&&(a=2147483647)}}else a=2147483647,l="not-in-legend";this._hashTable.add(t,n,o,a)}return a}warnOverlappingSemanticTokens(t,n){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${t}, column ${n}`))}warnInvalidLengthSemanticTokens(t,n){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn(`Semantic token with invalid length detected at lineNumber ${t}, column ${n}`))}warnInvalidEditStart(t,n,r,o,s){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${t}, resultId: ${n}) at edit #${r}: The provided start offset ${o} is outside the previous data (length ${s}).`))}};dze=h8o([Hxe(1,Dl),Hxe(2,nc),Hxe(3,va)],dze);function BIn(e,t,n){const r=e.data,o=e.data.length/5|0,s=Math.max(Math.ceil(o/1024),400),a=[];let l=0,d=1,u=0;for(;lh&&r[5*b]===0;)b--;if(b-1===h){let w=g;for(;w+1C)t.warnOverlappingSemanticTokens(y,C+1);else{const T=t.getMetadata(L,E,n);T!==2147483647&&(f===0&&(f=y),m[v]=y-f,m[v+1]=C,m[v+2]=S,m[v+3]=T,v+=4,k=y,A=S)}d=y,u=C,l++}v!==m.length&&(m=m.subarray(0,v));const p=VZ.create(f,m);a.push(p)}return a}class f8o{constructor(t,n,r,o){this.tokenTypeIndex=t,this.tokenModifierSet=n,this.languageId=r,this.metadata=o,this.next=null}}const Y_=class Y_{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=Y_._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1=this._growCount){const s=this._elements;this._currentLengthIndex++,this._currentLength=Y_._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+10?n[0]:[]}async function PIn(e,t,n,r,o){const s=A8o(e,t),a=await Promise.all(s.map(async l=>{let d,u=null;try{d=await l.provideDocumentSemanticTokens(t,l===n?r:null,o)}catch(h){u=h,d=null}return(!d||!z3e(d)&&!IIn(d))&&(d=null),new v8o(l,d,u)}));for(const l of a){if(l.error)throw l.error;if(l.tokens)return l}return a.length>0?a[0]:null}function p8o(e,t){const n=e.orderedGroups(t);return n.length>0?n[0]:null}class b8o{constructor(t,n){this.provider=t,this.tokens=n}}function w8o(e,t){return e.has(t)}function FIn(e,t){const n=e.orderedGroups(t);return n.length>0?n[0]:[]}async function Gnt(e,t,n,r){const o=FIn(e,t),s=await Promise.all(o.map(async a=>{let l;try{l=await a.provideDocumentRangeSemanticTokens(t,n,r)}catch(d){Nc(d),l=null}return(!l||!z3e(l))&&(l=null),new b8o(a,l)}));for(const a of s)if(a.tokens)return a;return s.length>0?s[0]:null}uo.registerCommand("_provideDocumentSemanticTokensLegend",async(e,...t)=>{const[n]=t;Oo(n instanceof vi);const r=e.get(ml).getModel(n);if(!r)return;const{documentSemanticTokensProvider:o}=e.get(Nn),s=p8o(o,r);return s?s[0].getLegend():e.get(ba).executeCommand("_provideDocumentRangeSemanticTokensLegend",n)});uo.registerCommand("_provideDocumentSemanticTokens",async(e,...t)=>{const[n]=t;Oo(n instanceof vi);const r=e.get(ml).getModel(n);if(!r)return;const{documentSemanticTokensProvider:o}=e.get(Nn);if(!MIn(o,r))return e.get(ba).executeCommand("_provideDocumentRangeSemanticTokens",n,r.getFullModelRange());const s=await PIn(o,r,null,null,Er.None);if(!s)return;const{provider:a,tokens:l}=s;if(!l||!z3e(l))return;const d=RIn({id:0,type:"full",data:l.data});return l.resultId&&a.releaseDocumentSemanticTokens(l.resultId),d});uo.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(e,...t)=>{const[n,r]=t;Oo(n instanceof vi);const o=e.get(ml).getModel(n);if(!o)return;const{documentRangeSemanticTokensProvider:s}=e.get(Nn),a=FIn(s,o);if(a.length===0)return;if(a.length===1)return a[0].getLegend();if(!r||!Ee.isIRange(r))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),a[0].getLegend();const l=await Gnt(s,o,Ee.lift(r),Er.None);if(l)return l.provider.getLegend()});uo.registerCommand("_provideDocumentRangeSemanticTokens",async(e,...t)=>{const[n,r]=t;Oo(n instanceof vi),Oo(Ee.isIRange(r));const o=e.get(ml).getModel(n);if(!o)return;const{documentRangeSemanticTokensProvider:s}=e.get(Nn),a=await Gnt(s,o,Ee.lift(r),Er.None);if(!(!a||!a.tokens))return RIn({id:0,type:"full",data:a.tokens.data})});const Ynt="editor.semanticHighlighting";function She(e,t,n){var o;const r=(o=n.getValue(Ynt,{overrideIdentifier:e.getLanguageId(),resource:e.uri}))==null?void 0:o.enabled;return typeof r=="boolean"?r:t.getColorTheme().semanticHighlighting}var NIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gO=function(e,t){return function(n,r){t(n,r,e)}},zx;let hze=class extends ft{constructor(t,n,r,o,s,a){super(),this._watchers=new _c;const l=h=>{var g;(g=this._watchers.get(h.uri))==null||g.dispose(),this._watchers.set(h.uri,new fze(h,t,r,s,a))},d=(h,g)=>{g.dispose(),this._watchers.delete(h.uri)},u=()=>{for(const h of n.getModels()){const g=this._watchers.get(h.uri);She(h,r,o)?g||l(h):g&&d(h,g)}};n.getModels().forEach(h=>{She(h,r,o)&&l(h)}),this._register(n.onModelAdded(h=>{She(h,r,o)&&l(h)})),this._register(n.onModelRemoved(h=>{const g=this._watchers.get(h.uri);g&&d(h,g)})),this._register(o.onDidChangeConfiguration(h=>{h.affectsConfiguration(Ynt)&&u()})),this._register(r.onDidColorThemeChange(u))}dispose(){us(this._watchers.values()),this._watchers.clear(),super.dispose()}};hze=NIn([gO(0,V3e),gO(1,ml),gO(2,Dl),gO(3,ar),gO(4,CA),gO(5,Nn)],hze);var l6;let fze=(l6=class extends ft{constructor(t,n,r,o,s){super(),this._semanticTokensStylingService=n,this._isDisposed=!1,this._model=t,this._provider=s.documentSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentSemanticTokens",{min:zx.REQUEST_MIN_DELAY,max:zx.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new Es(()=>this._fetchDocumentSemanticTokensNow(),zx.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 a=()=>{us(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const l of this._provider.all(t))typeof l.onDidChange=="function"&&this._documentProvidersChangeListeners.push(l.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};a(),this._register(this._provider.onDidChange(()=>{a(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(r.onDidColorThemeChange(l=>{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),us(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!MIn(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const t=new ja,n=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,r=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,o=PIn(this._provider,this._model,n,r,t.token);this._currentDocumentRequestCancellationTokenSource=t,this._providersChangedDuringRequest=!1;const s=[],a=this._model.onDidChangeContent(d=>{s.push(d)}),l=new vu(!1);o.then(d=>{if(this._debounceInformation.update(this._model,l.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,a.dispose(),!d)this._setDocumentSemanticTokens(null,null,null,s);else{const{provider:u,tokens:h}=d,g=this._semanticTokensStylingService.getStyling(u);this._setDocumentSemanticTokens(u,h||null,g,s)}},d=>{d&&(C2(d)||typeof d.message=="string"&&d.message.indexOf("busy")!==-1)||zi(d),this._currentDocumentRequestCancellationTokenSource=null,a.dispose(),(s.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(t,n,r,o,s){s=Math.min(s,r.length-o,t.length-n);for(let a=0;a{(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&&n&&t.releaseDocumentSemanticTokens(n.resultId);return}if(!t||!r){this._model.tokenization.setSemanticTokens(null,!1);return}if(!n){this._model.tokenization.setSemanticTokens(null,!0),a();return}if(IIn(n)){if(!s){this._model.tokenization.setSemanticTokens(null,!0);return}if(n.edits.length===0)n={resultId:n.resultId,data:s.data};else{let l=0;for(const m of n.edits)l+=(m.data?m.data.length:0)-m.deleteCount;const d=s.data,u=new Uint32Array(d.length+l);let h=d.length,g=u.length;for(let m=n.edits.length-1;m>=0;m--){const v=n.edits[m];if(v.start>d.length){r.warnInvalidEditStart(s.resultId,n.resultId,m,v.start,d.length),this._model.tokenization.setSemanticTokens(null,!0);return}const f=h-(v.start+v.deleteCount);f>0&&(zx._copy(d,h-f,u,g-f,f),g-=f),v.data&&(zx._copy(v.data,0,u,g-v.data.length,v.data.length),g-=v.data.length),h=v.start}h>0&&zx._copy(d,0,u,0,h),n={resultId:n.resultId,data:u}}}if(z3e(n)){this._currentDocumentResponse=new O8o(t,n.resultId,n.data);const l=BIn(n,r,this._model.getLanguageId());if(o.length>0)for(const d of o)for(const u of l)for(const h of d.changes)u.applyEdit(h.range,h.text);this._model.tokenization.setSemanticTokens(l,!0)}else this._model.tokenization.setSemanticTokens(null,!0);a()}},zx=l6,l6.REQUEST_MIN_DELAY=300,l6.REQUEST_MAX_DELAY=2e3,l6);fze=zx=NIn([gO(1,V3e),gO(2,Dl),gO(3,CA),gO(4,Nn)],fze);class O8o{constructor(t,n,r){this.provider=t,this.resultId=n,this.data=r}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}dH(hze);var y8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RX=function(e,t){return function(n,r){t(n,r,e)}},qj;let ike=(qj=class extends ft{constructor(t,n,r,o,s,a){super(),this._semanticTokensStylingService=n,this._themeService=r,this._configurationService=o,this._editor=t,this._provider=a.documentRangeSemanticTokensProvider,this._debounceInformation=s.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new Es(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[],this._rangeProvidersChangeListeners=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))},d=()=>{var u;if(this._cleanupProviderListeners(),this._editor.hasModel()){const h=this._editor.getModel();for(const g of this._provider.all(h)){const m=(u=g.onDidChange)==null?void 0:u.call(g,()=>{this._cancelAll(),l()});m&&this._rangeProvidersChangeListeners.push(m)}}};this._register(this._editor.onDidScrollChange(()=>{l()})),this._register(this._editor.onDidChangeModel(()=>{d(),this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelLanguage(()=>{d(),this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelContent(u=>{this._cancelAll(),l()})),d(),this._register(this._provider.onDidChange(()=>{d(),this._cancelAll(),l()})),this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration(Ynt)&&(this._cancelAll(),l())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),l()})),l()}dispose(){this._cleanupProviderListeners(),super.dispose()}_cleanupProviderListeners(){us(this._rangeProvidersChangeListeners),this._rangeProvidersChangeListeners=[]}_cancelAll(){for(const t of this._outstandingRequests)t.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(t){for(let n=0,r=this._outstandingRequests.length;nthis._requestRange(t,r)))}_requestRange(t,n){const r=t.getVersionId(),o=Fd(a=>Promise.resolve(Gnt(this._provider,t,n,a))),s=new vu(!1);return o.then(a=>{if(this._debounceInformation.update(t,s.elapsed()),!a||!a.tokens||t.isDisposed()||t.getVersionId()!==r)return;const{provider:l,tokens:d}=a,u=this._semanticTokensStylingService.getStyling(l);t.tokenization.setPartialSemanticTokens(n,BIn(d,u,t.getLanguageId()))}).then(()=>this._removeOutstandingRequest(o),()=>this._removeOutstandingRequest(o)),o}},qj.ID="editor.contrib.viewportSemanticTokens",qj);ike=y8o([RX(1,V3e),RX(2,Dl),RX(3,ar),RX(4,CA),RX(5,Nn)],ike);mo(ike.ID,ike,1);class C8o{constructor(t=!0){this.selectSubwords=t}provideSelectionRanges(t,n){const r=[];for(const o of n){const s=[];r.push(s),this.selectSubwords&&this._addInWordRanges(s,t,o),this._addWordRanges(s,t,o),this._addWhitespaceLine(s,t,o),s.push({range:t.getFullModelRange()})}return r}_addInWordRanges(t,n,r){const o=n.getWordAtPosition(r);if(!o)return;const{word:s,startColumn:a}=o,l=r.column-a;let d=l,u=l,h=0;for(;d>=0;d--){const g=s.charCodeAt(d);if(d!==l&&(g===95||g===45))break;if(l9(g)&&dO(h))break;h=g}for(d+=1;u0&&n.getLineFirstNonWhitespaceColumn(r.lineNumber)===0&&n.getLineLastNonWhitespaceColumn(r.lineNumber)===0&&t.push({range:new Ee(r.lineNumber,1,r.lineNumber,n.getLineMaxColumn(r.lineNumber))})}}var _8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},S8o=function(e,t){return function(n,r){t(n,r,e)}},gze;class Znt{constructor(t,n){this.index=t,this.ranges=n}mov(t){const n=this.index+(t?1:-1);if(n<0||n>=this.ranges.length)return this;const r=new Znt(n,this.ranges);return r.ranges[n].equalsRange(this.ranges[this.index])?r.mov(t):r}}var AB;let uee=(AB=class{static get(t){return t.getContribution(gze.ID)}constructor(t,n){this._editor=t,this._languageFeaturesService=n,this._ignoreSelection=!1}dispose(){var t;(t=this._selectionListener)==null||t.dispose()}async run(t){if(!this._editor.hasModel())return;const n=this._editor.getSelections(),r=this._editor.getModel();if(this._state||await jIn(this._languageFeaturesService.selectionRangeProvider,r,n.map(s=>s.getPosition()),this._editor.getOption(129),Er.None).then(s=>{var a;if(!(!yg(s)||s.length!==n.length)&&!(!this._editor.hasModel()||!Na(this._editor.getSelections(),n,(l,d)=>l.equalsSelection(d)))){for(let l=0;ld.containsPosition(n[l].getStartPosition())&&d.containsPosition(n[l].getEndPosition())),s[l].unshift(n[l]);this._state=s.map(l=>new Znt(0,l)),(a=this._selectionListener)==null||a.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var l;this._ignoreSelection||((l=this._selectionListener)==null||l.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(s=>s.mov(t));const o=this._state.map(s=>Qn.fromPositions(s.ranges[s.index].getStartPosition(),s.ranges[s.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(o)}finally{this._ignoreSelection=!1}}},gze=AB,AB.ID="editor.contrib.smartSelectController",AB);uee=gze=_8o([S8o(1,Nn)],uee);class UIn extends Bn{constructor(t,n){super(n),this._forward=t}async run(t,n){const r=uee.get(n);r&&await r.run(this._forward)}}class L8o extends UIn{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:_t(1400,"Expand Selection"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(1398,"&&Expand Selection"),order:2}})}}uo.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class x8o extends UIn{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:_t(1401,"Shrink Selection"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:Wn.MenubarSelectionMenu,group:"1_basic",title:U(1399,"&&Shrink Selection"),order:3}})}}mo(uee.ID,uee,4);un(L8o);un(x8o);async function jIn(e,t,n,r,o){const s=e.all(t).concat(new C8o(r.selectSubwords));s.length===1&&s.unshift(new j0e);const a=[],l=[];for(const d of s)a.push(Promise.resolve(d.provideSelectionRanges(t,n,o)).then(u=>{if(yg(u)&&u.length===n.length)for(let h=0;h{if(d.length===0)return[];d.sort((m,v)=>it.isBefore(m.getStartPosition(),v.getStartPosition())?1:it.isBefore(v.getStartPosition(),m.getStartPosition())||it.isBefore(m.getEndPosition(),v.getEndPosition())?-1:it.isBefore(v.getEndPosition(),m.getEndPosition())?1:0);const u=[];let h;for(const m of d)(!h||Ee.containsRange(m,h)&&!Ee.equalsRange(m,h))&&(u.push(m),h=m);if(!r.selectLeadingAndTrailingWhitespace)return u;const g=[u[0]];for(let m=1;mit.isIPosition(a)));const o=e.get(Nn).selectionRangeProvider,s=await e.get(Dg).createModelReference(n);try{return jIn(o,s.object.textEditorModel,r.map(it.lift),{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},Er.None)}finally{s.dispose()}});const mze=Object.freeze({View:_t(1638,"View"),Help:_t(1639,"Help"),Test:_t(1640,"Test"),File:_t(1641,"File"),Preferences:_t(1642,"Preferences"),Developer:_t(1643,"Developer")});class E8o extends Op{constructor(){super({id:"editor.action.toggleStickyScroll",title:{..._t(1448,"Toggle Editor Sticky Scroll"),mnemonicTitle:U(1444,"&&Toggle Editor Sticky Scroll")},metadata:{description:_t(1449,"Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:mze.View,toggled:{condition:Ft.equals("config.editor.stickyScroll.enabled",!0),title:U(1445,"Sticky Scroll"),mnemonicTitle:U(1446,"&&Sticky Scroll")},menu:[{id:Wn.CommandPalette},{id:Wn.MenubarAppearanceMenu,group:"4_editor",order:3},{id:Wn.StickyScrollContext}]})}async runEditorCommand(t,n){var a;const r=t.get(ar),o=!r.getValue("editor.stickyScroll.enabled"),s=(a=fp.get(n))==null?void 0:a.isFocused();r.updateValue("editor.stickyScroll.enabled",o),s&&n.focus()}}const H3e=100;class T8o extends Op{constructor(){super({id:"editor.action.focusStickyScroll",title:{..._t(1450,"Focus Editor Sticky Scroll"),mnemonicTitle:U(1447,"&&Focus Editor Sticky Scroll")},precondition:Ft.and(Ft.has("config.editor.stickyScroll.enabled"),$e.stickyScrollVisible),menu:[{id:Wn.CommandPalette}]})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focus()}}class Q8o extends Op{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:_t(1451,"Select the next editor sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:18}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focusNext()}}class D8o extends Op{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:_t(1452,"Select the previous sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:16}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.focusPrevious()}}class B8o extends Op{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:_t(1453,"Go to the focused sticky scroll line"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:3}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.goToFocused()}}class R8o extends Op{constructor(){super({id:"editor.action.selectEditor",title:_t(1454,"Select Editor"),precondition:$e.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:H3e,primary:9}})}runEditorCommand(t,n){var r;(r=fp.get(n))==null||r.selectEditor()}}mo(fp.ID,fp,1);ys(E8o);ys(T8o);ys(D8o);ys(Q8o);ys(B8o);ys(R8o);var WIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},YG=function(e,t){return function(n,r){t(n,r,e)}};class I8o{constructor(t,n,r,o,s,a,l){this.range=t,this.insertText=n,this.filterText=r,this.additionalTextEdits=o,this.command=s,this.gutterMenuLinkAction=a,this.completion=l}}let kze=class extends GJr{constructor(t,n,r,o,s,a){super(s.disposable),this.model=t,this.line=n,this.word=r,this.completionModel=o,this._suggestMemoryService=a}canBeReused(t,n,r){return this.model===t&&this.line===n&&this.word.word.length>0&&this.word.startColumn===r.startColumn&&this.word.endColumn=0&&l.resolve(Er.None)}return t}};kze=WIn([YG(5,N3e)],kze);let vze=class extends ft{constructor(t,n,r,o){super(),this._languageFeatureService=t,this._clipboardService=n,this._suggestMemoryService=r,this._editorService=o,this._store.add(t.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(t,n,r,o){var v;if(r.selectedSuggestionInfo)return;let s;for(const f of this._editorService.listCodeEditors())if(f.getModel()===t){s=f;break}if(!s)return;const a=s.getOption(102);if(CN.isAllOff(a))return;t.tokenization.tokenizeIfCheap(n.lineNumber);const l=t.tokenization.getLineTokens(n.lineNumber),d=l.getStandardTokenType(l.findTokenIndexAtOffset(Math.max(n.column-1-1,0)));if(CN.valueFor(a,d)!=="inline")return;let u=t.getWordAtPosition(n),h;if(u!=null&&u.word||(h=this._getTriggerCharacterInfo(t,n)),!(u!=null&&u.word)&&!h||(u||(u=t.getWordUntilPosition(n)),u.endColumn!==n.column))return;let g;const m=t.getValueInRange(new Ee(n.lineNumber,1,n.lineNumber,n.column));if(!h&&((v=this._lastResult)!=null&&v.canBeReused(t,n.lineNumber,u))){const f=new DCt(m,n.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=f,this._lastResult.acquire(),g=this._lastResult}else{const f=await Bnt(this._languageFeatureService.completionProvider,t,n,new JJ(void 0,V0e.createSuggestFilter(s).itemKind,h==null?void 0:h.providers),h&&{triggerKind:1,triggerCharacter:h.ch},o);let k;f.needsClipboard&&(k=await this._clipboardService.readText());const A=new D5(f.items,n.column,new DCt(m,0),W0e.None,s.getOption(134),s.getOption(128),{boostFullMatch:!1,firstMatchCanBeWeak:!1},k);g=new kze(t,n.lineNumber,u,A,f,this._suggestMemoryService)}return this._lastResult=g,g}handleItemDidShow(t,n){n.completion.resolve(Er.None)}disposeInlineCompletions(t){t.release()}_getTriggerCharacterInfo(t,n){var s;const r=t.getValueInRange(Ee.fromPositions({lineNumber:n.lineNumber,column:n.column-1},n)),o=new Set;for(const a of this._languageFeatureService.completionProvider.all(t))(s=a.triggerCharacters)!=null&&s.includes(r)&&o.add(a);if(o.size!==0)return{providers:o,ch:r}}};vze=WIn([YG(0,Nn),YG(1,U0),YG(2,N3e),YG(3,yo)],vze);dH(vze);class M8o extends Bn{constructor(){super({id:"editor.action.forceRetokenize",label:_t(1532,"Developer: Force Retokenize"),precondition:void 0})}run(t,n){if(!n.hasModel())return;const r=n.getModel();r.tokenization.resetTokenization();const o=new vu;r.tokenization.forceTokenization(r.getLineCount()),o.stop(),console.log(`tokenization took ${o.elapsed()}`)}}un(M8o);const EAe=class EAe extends zu{constructor(){super({id:EAe.ID,title:_t(1530,"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:_t(1531,"Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const n=!tV.getTabFocusMode();tV.setTabFocusMode(n),um(n?U(1528,"Pressing Tab will now move focus to the next focusable element"):U(1529,"Pressing Tab will now insert the tab character"))}};EAe.ID="editor.action.toggleTabFocusMode";let Aze=EAe;ys(Aze);class qnt{static computeUnicodeHighlights(t,n,r){const o=r?r.startLineNumber:1,s=r?r.endLineNumber:t.getLineCount(),a=new c_t(n),l=a.getCandidateCodePoints();let d;l==="allNonBasicAscii"?d=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):d=new RegExp(`${P8o(Array.from(l))}`,"g");const u=new AN(null,d),h=[];let g=!1,m,v=0,f=0,k=0;e:for(let A=o,p=s;A<=p;A++){const b=t.getLineContent(A),w=b.length;u.reset(0);do if(m=u.next(b),m){let O=m.index,y=m.index+m[0].length;if(O>0){const L=b.charCodeAt(O-1);Id(L)&&O--}if(y+1=1e3){g=!0;break e}h.push(new Ee(A,O+1,A,y+1))}}while(m)}return{ranges:h,hasMore:g,ambiguousCharacterCount:v,invisibleCharacterCount:f,nonBasicAsciiCharacterCount:k}}static computeUnicodeHighlightReason(t,n){const r=new c_t(n);switch(r.shouldHighlightNonBasicASCII(t,null)){case 0:return null;case 2:return{kind:1};case 3:{const s=t.codePointAt(0),a=r.ambiguousCharacters.getPrimaryConfusable(s),l=WK.getLocales().filter(d=>!WK.getInstance(new Set([...n.allowedLocales,d])).isAmbiguous(s));return{kind:0,confusableWith:String.fromCodePoint(a),notAmbiguousInLocales:l}}case 1:return{kind:2}}}}function P8o(e,t){return`[${M0(e.map(r=>String.fromCodePoint(r)).join(""))}]`}class c_t{constructor(t){this.options=t,this.allowedCodePoints=new Set(t.allowedCodePoints),this.ambiguousCharacters=WK.getInstance(new Set(t.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const t=new Set;if(this.options.invisibleCharacters)for(const n of aD.codePoints)d_t(String.fromCodePoint(n))||t.add(n);if(this.options.ambiguousCharacters)for(const n of this.ambiguousCharacters.getConfusableCodePoints())t.add(n);for(const n of this.allowedCodePoints)t.delete(n);return t}shouldHighlightNonBasicASCII(t,n){const r=t.codePointAt(0);if(this.allowedCodePoints.has(r))return 0;if(this.options.nonBasicASCII)return 1;let o=!1,s=!1;if(n)for(const a of n){const l=a.codePointAt(0),d=Sie(a);o=o||d,!d&&!this.ambiguousCharacters.isAmbiguous(l)&&!aD.isInvisibleCharacter(l)&&(s=!0)}return!o&&s?0:this.options.invisibleCharacters&&!d_t(t)&&aD.isInvisibleCharacter(r)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(r)?3:0}}function d_t(e){return e===" "||e===` `||e===" "}var F8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},u_t=function(e,t){return function(n,r){t(n,r,e)}};let pze=class extends ft{get enabled(){return this._enabled}set enabled(t){t?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=t}constructor(t,n,r={},o,s){super(),this._link=n,this._hoverService=o,this._enabled=!0,this.el=Xt(t,tn("a.monaco-link",{tabIndex:n.tabIndex??0,href:n.href},n.label)),this.hoverDelegate=r.hoverDelegate??eC("mouse"),this.setTooltip(n.title),this.el.setAttribute("role","button");const a=this._register(new ks(this.el,"click")),l=this._register(new ks(this.el,"keypress")),d=an.chain(l.event,g=>g.map(m=>new Us(m)).filter(m=>m.keyCode===3)),u=this._register(new ks(this.el,ma.Tap)).event;this._register(Bf.addTarget(this.el));const h=an.any(a.event,d,u);this._register(h(g=>{this.enabled&&(Qo.stop(g,!0),r!=null&&r.opener?r.opener(this._link.href):s.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}setTooltip(t){!this.hover&&t?this.hover=this._register(this._hoverService.setupManagedHover(this.hoverDelegate,this.el,t)):this.hover&&this.hover.update(t)}};pze=F8o([u_t(3,pm),u_t(4,OL)],pze);var VIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},bze=function(e,t){return function(n,r){t(n,r,e)}};const N8o=26;let wze=class extends ft{constructor(t,n){super(),this._editor=t,this.instantiationService=n,this.banner=this._register(this.instantiationService.createInstance(Oze))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(t){this.banner.show({...t,onClose:()=>{var n;this.hide(),(n=t.onClose)==null||n.call(t)}}),this._editor.setBanner(this.banner.element,N8o)}};wze=VIn([bze(1,Yn)],wze);let Oze=class extends ft{constructor(t,n){super(),this.instantiationService=t,this.markdownRendererService=n,this.element=tn("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(t){if(t.ariaLabel)return t.ariaLabel;if(typeof t.message=="string")return t.message}getBannerMessage(t){if(typeof t=="string"){const n=tn("span");return n.innerText=t,n}return this.markdownRendererService.render(t).element}clear(){uh(this.element)}show(t){uh(this.element);const n=this.getAriaLabel(t);n&&this.element.setAttribute("aria-label",n);const r=Xt(this.element,tn("div.icon-container"));r.setAttribute("aria-hidden","true"),t.icon&&r.appendChild(tn(`div${fi.asCSSSelector(t.icon)}`));const o=Xt(this.element,tn("div.message-container"));if(o.setAttribute("aria-hidden","true"),o.appendChild(this.getBannerMessage(t.message)),this.messageActionsContainer=Xt(this.element,tn("div.message-actions-container")),t.actions)for(const a of t.actions)this._register(this.instantiationService.createInstance(pze,this.messageActionsContainer,{...a,tabIndex:-1},{}));const s=Xt(this.element,tn("div.action-container"));this.actionBar=this._register(new g1(s)),this.actionBar.push(this._register(new n2("banner.close",U(1533,"Close Banner"),fi.asClassName(sDn),!0,()=>{typeof t.onClose=="function"&&t.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};Oze=VIn([bze(0,Yn),bze(1,Cp)],Oze);const zIn=Cr("workspaceTrustManagementService");var Knt=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},zZ=function(e,t){return function(n,r){t(n,r,e)}};const U8o=Da("extensions-warning-message",zt.warning,U(1534,"Icon shown with a warning message in the extensions editor."));var Kj;let hee=(Kj=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._editorWorkerService=n,this._workspaceTrustService=r,this._highlighter=null,this._bannerClosed=!1,this._updateState=s=>{if(s&&s.hasMore){if(this._bannerClosed)return;const a=Math.max(s.ambiguousCharacterCount,s.nonBasicAsciiCharacterCount,s.invisibleCharacterCount);let l;if(s.nonBasicAsciiCharacterCount>=a)l={message:U(1535,"This document contains many non-basic ASCII unicode characters"),command:new gee};else if(s.ambiguousCharacterCount>=a)l={message:U(1536,"This document contains many ambiguous unicode characters"),command:new IR};else if(s.invisibleCharacterCount>=a)l={message:U(1537,"This document contains many invisible unicode characters"),command:new fee};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:l.message,icon:U8o,actions:[{label:l.command.shortLabel,href:`command:${l.command.desc.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(o.createInstance(wze,t)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=t.getOption(142),this._register(r.onDidChangeTrust(s=>{this._updateHighlighter()})),this._register(t.onDidChangeConfiguration(s=>{s.hasChanged(142)&&(this._options=t.getOption(142),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 t=j8o(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([t.nonBasicASCII,t.ambiguousCharacters,t.invisibleCharacters].every(r=>r===!1))return;const n={nonBasicASCII:t.nonBasicASCII,ambiguousCharacters:t.ambiguousCharacters,invisibleCharacters:t.invisibleCharacters,includeComments:t.includeComments,includeStrings:t.includeStrings,allowedCodePoints:Object.keys(t.allowedCharacters).map(r=>r.codePointAt(0)),allowedLocales:Object.keys(t.allowedLocales).map(r=>r==="_os"?yI.NumberFormat().value.resolvedOptions().locale:r==="_vscode"?QJr:r)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new yze(this._editor,n,this._updateState,this._editorWorkerService):this._highlighter=new W8o(this._editor,n,this._updateState)}getDecorationInfo(t){return this._highlighter?this._highlighter.getDecorationInfo(t):null}},Kj.ID="editor.contrib.unicodeHighlighter",Kj);hee=Knt([zZ(1,S1),zZ(2,zIn),zZ(3,Yn)],hee);function j8o(e,t){return{nonBasicASCII:t.nonBasicASCII===Ek?!e:t.nonBasicASCII,ambiguousCharacters:t.ambiguousCharacters,invisibleCharacters:t.invisibleCharacters,includeComments:t.includeComments===Ek?!e:t.includeComments,includeStrings:t.includeStrings===Ek?!e:t.includeStrings,allowedCharacters:t.allowedCharacters,allowedLocales:t.allowedLocales}}let yze=class extends ft{constructor(t,n,r,o){super(),this._editor=t,this._options=n,this._updateState=r,this._editorWorkerService=o,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Es(()=>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()){this._decorations.clear();return}const t=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(n=>{if(this._model.isDisposed()||this._model.getVersionId()!==t)return;this._updateState(n);const r=[];if(!n.hasMore)for(const o of n.ranges)r.push({range:o,options:rke.instance.getDecorationFromOptions(this._options)});this._decorations.set(r)})}getDecorationInfo(t){if(!this._decorations.has(t))return null;const n=this._editor.getModel();if(!Fet(n,t))return null;const r=n.getValueInRange(t.range);return{reason:$In(r,this._options),inComment:Net(n,t),inString:Uet(n,t)}}};yze=Knt([zZ(3,S1)],yze);class W8o extends ft{constructor(t,n,r){super(),this._editor=t,this._options=n,this._updateState=r,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Es(()=>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()){this._decorations.clear();return}const t=this._editor.getVisibleRanges(),n=[],r={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const o of t){const s=qnt.computeUnicodeHighlights(this._model,this._options,o);for(const a of s.ranges)r.ranges.push(a);r.ambiguousCharacterCount+=r.ambiguousCharacterCount,r.invisibleCharacterCount+=r.invisibleCharacterCount,r.nonBasicAsciiCharacterCount+=r.nonBasicAsciiCharacterCount,r.hasMore=r.hasMore||s.hasMore}if(!r.hasMore)for(const o of r.ranges)n.push({range:o,options:rke.instance.getDecorationFromOptions(this._options)});this._updateState(r),this._decorations.set(n)}getDecorationInfo(t){if(!this._decorations.has(t))return null;const n=this._editor.getModel(),r=n.getValueInRange(t.range);return Fet(n,t)?{reason:$In(r,this._options),inComment:Net(n,t),inString:Uet(n,t)}:null}}const HIn=U(1538,"Configure Unicode Highlight Options");let Cze=class{constructor(t,n){this._editor=t,this._markdownRendererService=n,this.hoverOrdinal=5}computeSync(t,n){if(!this._editor.hasModel()||t.type!==1)return[];const r=this._editor.getModel(),o=this._editor.getContribution(hee.ID);if(!o)return[];const s=[],a=new Set;let l=300;for(const d of n){const u=o.getDecorationInfo(d);if(!u)continue;const g=r.getValueInRange(d.range).codePointAt(0),m=$xe(g);let v;switch(u.reason.kind){case 0:{Sie(u.reason.confusableWith)?v=U(1539,"The character {0} could be confused with the ASCII character {1}, which is more common in source code.",m,$xe(u.reason.confusableWith.codePointAt(0))):v=U(1540,"The character {0} could be confused with the character {1}, which is more common in source code.",m,$xe(u.reason.confusableWith.codePointAt(0)));break}case 1:v=U(1541,"The character {0} is invisible.",m);break;case 2:v=U(1542,"The character {0} is not a basic ASCII character.",m);break}if(a.has(v))continue;a.add(v);const f={codePoint:g,reason:u.reason,inComment:u.inComment,inString:u.inString},k=U(1543,"Adjust settings"),A=yQn(oke.ID,f),p=new bf("",!0).appendMarkdown(v).appendText(" ").appendLink(A,k,HIn);s.push(new I4(this,d.range,[p],!1,l++))}return s}renderHoverParts(t,n){return k4o(t,n,this._editor,this._markdownRendererService)}getAccessibleContent(t){return t.contents.map(n=>n.value).join(` -`)}};Cze=Knt([zZ(1,Cp)],Cze);function _ze(e){return`U+${e.toString(16).padStart(4,"0")}`}function $xe(e){let t=`\`${_ze(e)}\``;return aD.isInvisibleCharacter(e)||(t+=` "${`${V8o(e)}`}"`),t}function V8o(e){return e===96?"`` ` ``":"`"+String.fromCodePoint(e)+"`"}function $In(e,t){return qnt.computeUnicodeHighlightReason(e,t)}const TAe=class TAe{constructor(){this.map=new Map}getDecorationFromOptions(t){return this.getDecoration(!t.includeComments,!t.includeStrings)}getDecoration(t,n){const r=`${t}${n}`;let o=this.map.get(r);return o||(o=Gi.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:t,hideInStringTokens:n}),this.map.set(r,o)),o}};TAe.instance=new TAe;let rke=TAe;class z8o extends Bn{constructor(){super({id:IR.ID,label:_t(1552,"Disable highlighting of characters in comments"),precondition:void 0}),this.shortLabel=U(1544,"Disable Highlight In Comments")}async run(t,n,r){const o=t.get(ar);o&&this.runAction(o)}async runAction(t){await t.updateValue(Jm.includeComments,!1,2)}}class H8o extends Bn{constructor(){super({id:IR.ID,label:_t(1553,"Disable highlighting of characters in strings"),precondition:void 0}),this.shortLabel=U(1545,"Disable Highlight In Strings")}async run(t,n,r){const o=t.get(ar);o&&this.runAction(o)}async runAction(t){await t.updateValue(Jm.includeStrings,!1,2)}}const QAe=class QAe extends zu{constructor(){super({id:QAe.ID,title:_t(1554,"Disable highlighting of ambiguous characters"),precondition:void 0,f1:!1}),this.shortLabel=U(1546,"Disable Ambiguous Highlight")}async run(t,n,r){const o=t.get(ar);o&&this.runAction(o)}async runAction(t){await t.updateValue(Jm.ambiguousCharacters,!1,2)}};QAe.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";let IR=QAe;const DAe=class DAe extends zu{constructor(){super({id:DAe.ID,title:_t(1555,"Disable highlighting of invisible characters"),precondition:void 0,f1:!1}),this.shortLabel=U(1547,"Disable Invisible Highlight")}async run(t,n,r){const o=t.get(ar);o&&this.runAction(o)}async runAction(t){await t.updateValue(Jm.invisibleCharacters,!1,2)}};DAe.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";let fee=DAe;const BAe=class BAe extends zu{constructor(){super({id:BAe.ID,title:_t(1556,"Disable highlighting of non basic ASCII characters"),precondition:void 0,f1:!1}),this.shortLabel=U(1548,"Disable Non ASCII Highlight")}async run(t,n,r){const o=t.get(ar);o&&this.runAction(o)}async runAction(t){await t.updateValue(Jm.nonBasicASCII,!1,2)}};BAe.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";let gee=BAe;const RAe=class RAe extends zu{constructor(){super({id:RAe.ID,title:_t(1557,"Show Exclude Options"),precondition:void 0,f1:!1})}async run(t,n){const{codePoint:r,reason:o,inString:s,inComment:a}=n,l=String.fromCodePoint(r),d=t.get(Rf),u=t.get(ar);function h(f){return aD.isInvisibleCharacter(f)?U(1549,"Exclude {0} (invisible character) from being highlighted",_ze(f)):U(1550,"Exclude {0} from being highlighted",`${_ze(f)} "${l}"`)}const g=[];if(o.kind===0)for(const f of o.notAmbiguousInLocales)g.push({label:U(1551,'Allow unicode characters that are more common in the language "{0}".',f),run:async()=>{X8o(u,[f])}});if(g.push({label:h(r),run:()=>$8o(u,[r])}),a){const f=new z8o;g.push({label:f.label,run:async()=>f.runAction(u)})}else if(s){const f=new H8o;g.push({label:f.label,run:async()=>f.runAction(u)})}function m(f){return typeof f.desc.title=="string"?f.desc.title:f.desc.title.value}if(o.kind===0){const f=new IR;g.push({label:m(f),run:async()=>f.runAction(u)})}else if(o.kind===1){const f=new fee;g.push({label:m(f),run:async()=>f.runAction(u)})}else if(o.kind===2){const f=new gee;g.push({label:m(f),run:async()=>f.runAction(u)})}else G8o(o);const v=await d.pick(g,{title:HIn});v&&await v.run()}};RAe.ID="editor.action.unicodeHighlight.showExcludeOptions";let oke=RAe;async function $8o(e,t){const n=e.getValue(Jm.allowedCharacters);let r;typeof n=="object"&&n?r=n:r={};for(const o of t)r[String.fromCodePoint(o)]=!0;await e.updateValue(Jm.allowedCharacters,r,2)}async function X8o(e,t){var o;const n=(o=e.inspect(Jm.allowedLocales).user)==null?void 0:o.value;let r;typeof n=="object"&&n?r=Object.assign({},n):r={};for(const s of t)r[s]=!0;await e.updateValue(Jm.allowedLocales,r,2)}function G8o(e){throw new Error(`Unexpected value: ${e}`)}ys(IR);ys(fee);ys(gee);ys(oke);mo(hee.ID,hee,1);BI.register(Cze);const are=Cr("dialogService");var Y8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},h_t=function(e,t){return function(n,r){t(n,r,e)}};const XIn="ignoreUnusualLineTerminators";function Z8o(e,t,n){e.setModelProperty(t.uri,XIn,n)}function q8o(e,t){return e.getModelProperty(t.uri,XIn)}var Jj;let ske=(Jj=class extends ft{constructor(t,n,r){super(),this._editor=t,this._dialogService=n,this._codeEditorService=r,this._isPresentingDialog=!1,this._config=this._editor.getOption(143),this._register(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(143)&&(this._config=this._editor.getOption(143),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(o=>{o.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const t=this._editor.getModel();if(!t.mightContainUnusualLineTerminators()||q8o(this._codeEditorService,t)===!0||this._editor.getOption(104))return;if(this._config==="auto"){t.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let r;try{this._isPresentingDialog=!0,r=await this._dialogService.confirm({title:U(1558,"Unusual Line Terminators"),message:U(1559,"Detected unusual line terminators"),detail:U(1560,"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`.",hA(t.uri)),primaryButton:U(1561,"&&Remove Unusual Line Terminators"),cancelButton:U(1562,"Ignore")})}finally{this._isPresentingDialog=!1}if(!r.confirmed){Z8o(this._codeEditorService,t,!0);return}t.removeUnusualLineTerminators(this._editor.getSelections())}},Jj.ID="editor.contrib.unusualLineTerminatorsDetector",Jj);ske=Y8o([h_t(1,are),h_t(2,yo)],ske);mo(ske.ID,ske,1);const vce="**",f_t="/",Lhe="[/\\\\]",xhe="[^/\\\\]",K8o=/\//g;function g_t(e,t){switch(e){case 0:return"";case 1:return`${xhe}*?`;default:return`(?:${Lhe}|${xhe}+${Lhe}${t?`|${Lhe}${xhe}+`:""})*?`}}function m_t(e,t){if(!e)return[];const n=[];let r=!1,o=!1,s="";for(const a of e){switch(a){case t:if(!r&&!o){n.push(s),s="";continue}break;case"{":r=!0;break;case"}":r=!1;break;case"[":o=!0;break;case"]":o=!1;break}s+=a}return s&&n.push(s),n}function GIn(e){if(!e)return"";let t="";const n=m_t(e,f_t);if(n.every(r=>r===vce))t=".*";else{let r=!1;n.forEach((o,s)=>{if(o===vce){if(r)return;t+=g_t(2,s===n.length-1)}else{let a=!1,l="",d=!1,u="";for(const h of o){if(h!=="}"&&a){l+=h;continue}if(d&&(h!=="]"||!u)){let g;h==="-"?g=h:(h==="^"||h==="!")&&!u?g="^":h===f_t?g="":g=M0(h),u+=g;continue}switch(h){case"{":a=!0;continue;case"[":d=!0;continue;case"}":{const m=`(?:${m_t(l,",").map(v=>GIn(v)).join("|")})`;t+=m,a=!1,l="";break}case"]":{t+="["+u+"]",d=!1,u="";break}case"?":t+=xhe;continue;case"*":t+=g_t(1);continue;default:t+=M0(h)}}sd===u,endsWith:r?Aeo:(d,u)=>d.endsWith(u),isEqualOrParent:(d,u)=>pNe(d,u,!v1||r)},s=`${r?n.toLowerCase():n}_${!!t.trimForExclusions}_${r}`;let a=k_t.get(s);if(a)return A_t(a,e,o);let l;return J8o.test(n)?a=oLo(n.substring(4),n,o):(l=eLo.exec(Xxe(n,o)))?a=sLo(l[1],n,o):(t.trimForExclusions?nLo:tLo).test(n)?a=aLo(n,o):(l=iLo.exec(Xxe(n,o)))?a=p_t(l[1].substring(1),n,!0,o):(l=rLo.exec(Xxe(n,o)))?a=p_t(l[1],n,!1,o):a=lLo(n,o),k_t.set(s,a),A_t(a,e,o)}function A_t(e,t,n){if(typeof t=="string")return e;const r=function(o,s){return n.isEqualOrParent(o,t.base)?e(_ie(o.substring(t.base.length),o3),s):null};return r.allBasenames=e.allBasenames,r.allPaths=e.allPaths,r.basenames=e.basenames,r.patterns=e.patterns,r}function Xxe(e,t){return t.trimForExclusions&&e.endsWith("/**")?e.substring(0,e.length-2):e}function oLo(e,t,n){return function(r,o){return typeof r=="string"&&n.endsWith(r,e)?t:null}}function sLo(e,t,n){const r=`/${e}`,o=`\\${e}`,s=function(l,d){return typeof l!="string"?null:d?n.equals(d,e)?t:null:n.equals(l,e)||n.endsWith(l,r)||n.endsWith(l,o)?t:null},a=[e];return s.basenames=a,s.patterns=[t],s.allBasenames=a,s}function aLo(e,t){const n=ZIn(e.slice(1,-1).split(",").map(l=>Jnt(l,t)).filter(l=>l!==uy),e),r=n.length;if(!r)return uy;if(r===1)return n[0];const o=function(l,d){for(let u=0,h=n.length;u!!l.allBasenames);s&&(o.allBasenames=s.allBasenames);const a=n.reduce((l,d)=>d.allPaths?l.concat(d.allPaths):l,[]);return a.length&&(o.allPaths=a),o}function p_t(e,t,n,r){const o=o3===Jc.sep,s=o?e:e.replace(K8o,o3),a=o3+s,l=Jc.sep+e;let d;return n?d=function(u,h){return typeof u=="string"&&(r.equals(u,s)||r.endsWith(u,a)||!o&&(r.equals(u,e)||r.endsWith(u,l)))?t:null}:d=function(u,h){return typeof u=="string"&&(r.equals(u,s)||!o&&r.equals(u,e))?t:null},d.allPaths=[(n?"*/":"./")+e],d}function lLo(e,t){try{const n=new RegExp(`^${GIn(e)}$`,t.ignoreCase?"i":void 0);return function(r){return n.lastIndex=0,typeof r=="string"&&n.test(r)?e:null}}catch{return uy}}function cLo(e,t,n){return!e||typeof t!="string"?!1:YIn(e,n)(t)}function YIn(e,t={}){if(!e)return v_t;if(typeof e=="string"||dLo(e)){const n=Jnt(e,t);if(n===uy)return v_t;const r=function(o,s){return!!n(o,s)};return n.allBasenames&&(r.allBasenames=n.allBasenames),n.allPaths&&(r.allPaths=n.allPaths),r}return uLo(e,t)}function dLo(e){const t=e;return t?typeof t.base=="string"&&typeof t.pattern=="string":!1}function uLo(e,t){const n=ZIn(Object.getOwnPropertyNames(e).map(l=>hLo(l,e[l],t)).filter(l=>l!==uy)),r=n.length;if(!r)return uy;if(!n.some(l=>!!l.requiresSiblings)){if(r===1)return n[0];const l=function(h,g){let m;for(let v=0,f=n.length;v{for(const v of m){const f=await v;if(typeof f=="string")return f}return null})():null},d=n.find(h=>!!h.allBasenames);d&&(l.allBasenames=d.allBasenames);const u=n.reduce((h,g)=>g.allPaths?h.concat(g.allPaths):h,[]);return u.length&&(l.allPaths=u),l}const o=function(l,d,u){let h,g;for(let m=0,v=n.length;m{for(const m of g){const v=await m;if(typeof v=="string")return v}return null})():null},s=n.find(l=>!!l.allBasenames);s&&(o.allBasenames=s.allBasenames);const a=n.reduce((l,d)=>d.allPaths?l.concat(d.allPaths):l,[]);return a.length&&(o.allPaths=a),o}function hLo(e,t,n){if(t===!1)return uy;const r=Jnt(e,n);if(r===uy)return uy;if(typeof t=="boolean")return r;if(t){const o=t.when;if(typeof o=="string"){const s=(a,l,d,u)=>{if(!u||!r(a,l))return null;const h=o.replace("$(basename)",()=>d),g=u(h);return qFe(g)?g.then(m=>m?e:null):g?e:null};return s.requiresSiblings=!0,s}}return r}function ZIn(e,t){const n=e.filter(l=>!!l.basenames);if(n.length<2)return e;const r=n.reduce((l,d)=>{const u=d.basenames;return u?l.concat(u):l},[]);let o;if(t){o=[];for(let l=0,d=r.length;l{const u=d.patterns;return u?l.concat(u):l},[]);const s=function(l,d){if(typeof l!="string")return null;if(!d){let h;for(h=l.length;h>0;h--){const g=l.charCodeAt(h-1);if(g===47||g===92)break}d=l.substring(h)}const u=r.indexOf(d);return u!==-1?o[u]:null};s.basenames=r,s.patterns=o,s.allBasenames=r;const a=e.filter(l=>!l.basenames);return a.push(s),a}function eit(e,t,n,r,o,s){if(Array.isArray(e)){let a=0;for(const l of e){const d=eit(l,t,n,r,o,s);if(d===10)return d;d>a&&(a=d)}return a}else{if(typeof e=="string")return r?e==="*"?5:e===n?10:0:0;if(e){const{language:a,pattern:l,scheme:d,hasAccessToAllModels:u,notebookType:h}=e;if(!r&&!u)return 0;h&&o&&(t=o);let g=0;if(d)if(d===t.scheme)g=10;else if(d==="*")g=5;else return 0;if(a)if(a===n)g=10;else if(a==="*")g=Math.max(g,5);else return 0;if(h)if(h===s)g=10;else if(h==="*"&&s!==void 0)g=Math.max(g,5);else return 0;if(l){let m;if(typeof l=="string"?m=l:m={...l,base:J6n(l.base)},m===t.fsPath||cLo(m,t.fsPath))g=10;else return 0}return g}else return 0}}var fLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gLo=function(e,t){return function(n,r){t(n,r,e)}};class b_t{constructor(){this.selector={language:"*"}}provideDocumentHighlights(t,n,r){const o=[],s=t.getWordAtPosition({lineNumber:n.lineNumber,column:n.column});return s?t.isDisposed()?void 0:t.findMatches(s.word,!0,!1,!0,Ime,!1).map(l=>({range:l.range,kind:uV.Text})):Promise.resolve(o)}provideMultiDocumentHighlights(t,n,r,o){const s=new _c,a=t.getWordAtPosition({lineNumber:n.lineNumber,column:n.column});if(!a)return Promise.resolve(s);for(const l of[t,...r]){if(l.isDisposed())continue;const u=l.findMatches(a.word,!0,!1,!0,Ime,!1).map(h=>({range:h.range,kind:uV.Text}));u&&s.set(l.uri,u)}return s}}let Sze=class extends ft{constructor(t){super(),this._register(t.documentHighlightProvider.register("*",new b_t)),this._register(t.multiDocumentHighlightProvider.register("*",new b_t))}};Sze=fLo([gLo(0,Nn)],Sze);var qIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},mO=function(e,t){return function(n,r){t(n,r,e)}},Pl,Lze;const tit=new yn("hasWordHighlights",!1);function KIn(e,t,n,r){const o=e.ordered(t);return EJe(o.map(s=>()=>Promise.resolve(s.provideDocumentHighlights(t,n,r)).then(void 0,Nc)),s=>s!=null).then(s=>{if(s){const a=new _c;return a.set(t.uri,s),a}return new _c})}function mLo(e,t,n,r,o){const s=e.ordered(t);return EJe(s.map(a=>()=>{const l=o.filter(d=>GEn(d)).filter(d=>eit(a.selector,d.uri,d.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(a.provideMultiDocumentHighlights(t,n,l,r)).then(void 0,Nc)}),a=>a!=null)}class JIn{constructor(t,n,r){this._model=t,this._selection=n,this._wordSeparators=r,this._wordRange=this._getCurrentWordRange(t,n),this._result=null}get result(){return this._result||(this._result=Fd(t=>this._compute(this._model,this._selection,this._wordSeparators,t))),this._result}_getCurrentWordRange(t,n){const r=t.getWordAtPosition(n.getPosition());return r?new Ee(n.startLineNumber,r.startColumn,n.startLineNumber,r.endColumn):null}cancel(){this.result.cancel()}}class kLo extends JIn{constructor(t,n,r,o){super(t,n,r),this._providers=o}_compute(t,n,r,o){return KIn(this._providers,t,n.getPosition(),o).then(s=>s||new _c)}}class vLo extends JIn{constructor(t,n,r,o,s){super(t,n,r),this._providers=o,this._otherModels=s}_compute(t,n,r,o){return mLo(this._providers,t,n.getPosition(),o,this._otherModels).then(s=>s||new _c)}}function ALo(e,t,n,r){return new kLo(t,n,r,e)}function pLo(e,t,n,r,o){return new vLo(t,n,r,e,o)}_1("_executeDocumentHighlights",async(e,t,n)=>{const r=e.get(Nn),o=await KIn(r.documentHighlightProvider,t,n,Er.None);return o==null?void 0:o.get(t.uri)});var c6;let xze=(c6=class{constructor(t,n,r,o,s,a,l,d){this.toUnhook=new xt,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new _c,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=void 0,this.runDelayer=this.toUnhook.add(new dA(50)),this.editor=t,this.providers=n,this.multiDocumentProviders=r,this.codeEditorService=a,this.textModelService=s,this.configurationService=l,this.logService=d,this._hasWordHighlights=tit.bindTo(o),this._ignorePositionChangeEvent=!1,this.occurrencesHighlightEnablement=this.editor.getOption(90),this.occurrencesHighlightDelay=this.configurationService.getValue("editor.occurrencesHighlightDelay"),this.model=this.editor.getModel(),this.toUnhook.add(t.onDidChangeCursorPosition(u=>{this._ignorePositionChangeEvent||this.occurrencesHighlightEnablement!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(u)})})),this.toUnhook.add(t.onDidFocusEditorText(u=>{this.occurrencesHighlightEnablement!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(t.onDidChangeModelContent(u=>{kbe(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(t.onDidChangeModel(u=>{!u.newModelUrl&&u.oldModelUrl?this._stopSingular():Pl.query&&this._run()})),this.toUnhook.add(t.onDidChangeConfiguration(u=>{var g,m;const h=this.editor.getOption(90);if(this.occurrencesHighlightEnablement!==h)switch(this.occurrencesHighlightEnablement=h,h){case"off":this._stopAll();break;case"singleFile":this._stopAll((m=(g=Pl.query)==null?void 0:g.modelInfo)==null?void 0:m.modelURI);break;case"multiFile":Pl.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",h);break}})),this.toUnhook.add(this.configurationService.onDidChangeConfiguration(u=>{if(u.affectsConfiguration("editor.occurrencesHighlightDelay")){const h=l.getValue("editor.occurrencesHighlightDelay");this.occurrencesHighlightDelay!==h&&(this.occurrencesHighlightDelay=h)}})),this.toUnhook.add(t.onDidBlurEditorWidget(()=>{var h,g;const u=this.codeEditorService.getFocusedCodeEditor();u?((h=u.getModel())==null?void 0:h.uri.scheme)===Ci.vscodeNotebookCell&&((g=this.editor.getModel())==null?void 0:g.uri.scheme)!==Ci.vscodeNotebookCell&&this._stopAll():this._stopAll()})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=void 0,Pl.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(t){this.occurrencesHighlightEnablement!=="off"&&(this.runDelayer.cancel(),this.runDelayer.trigger(()=>{this._run(!1,t)}))}stop(){this.occurrencesHighlightEnablement!=="off"&&this._stopAll()}_getSortedHighlights(){return this.decorations.getRanges().sort(Ee.compareRangesUsingStarts)}moveNext(){const t=this._getSortedHighlights(),r=(t.findIndex(s=>s.containsPosition(this.editor.getPosition()))+1)%t.length,o=t[r];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(o.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(o);const s=this._getWord();if(s){const a=this.editor.getModel().getLineContent(o.startLineNumber);um(`${a}, ${r+1} of ${t.length} for '${s.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const t=this._getSortedHighlights(),r=(t.findIndex(s=>s.containsPosition(this.editor.getPosition()))-1+t.length)%t.length,o=t[r];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(o.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(o);const s=this._getWord();if(s){const a=this.editor.getModel().getLineContent(o.startLineNumber);um(`${a}, ${r+1} of ${t.length} for '${s.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const t=Pl.storedDecorationIDs.get(this.editor.getModel().uri);t&&(this.editor.removeDecorations(t),Pl.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(t){const n=this.codeEditorService.listCodeEditors(),r=[];for(const o of n){if(!o.hasModel()||C6(o.getModel().uri,t))continue;const s=Pl.storedDecorationIDs.get(o.getModel().uri);if(!s)continue;o.removeDecorations(s),r.push(o.getModel().uri);const a=M6.get(o);a!=null&&a.wordHighlighter&&a.wordHighlighter.decorations.length>0&&(a.wordHighlighter.decorations.clear(),a.wordHighlighter.workerRequest=null,a.wordHighlighter._hasWordHighlights.set(!1))}for(const o of r)Pl.storedDecorationIDs.delete(o)}_stopSingular(){var t,n,r,o;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((t=this.editor.getModel())==null?void 0:t.uri.scheme)!==Ci.vscodeNotebookCell&&((r=(n=Pl.query)==null?void 0:n.modelInfo)==null?void 0:r.modelURI.scheme)!==Ci.vscodeNotebookCell?(Pl.query=null,this._run()):(o=Pl.query)!=null&&o.modelInfo&&(Pl.query.modelInfo=null)),this.renderDecorationsTimer!==void 0&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=void 0),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(t){this._removeAllDecorations(t),this.renderDecorationsTimer!==void 0&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=void 0),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(t){if(this.occurrencesHighlightEnablement==="off"){this._stopAll();return}if(t.source!=="api"&&t.reason!==3){this._stopAll();return}this._run()}_getWord(){const t=this.editor.getSelection(),n=t.startLineNumber,r=t.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:n,column:r})}getOtherModelsToHighlight(t){if(!t)return[];if(t.uri.scheme===Ci.vscodeNotebookCell){const s=[],a=this.codeEditorService.listCodeEditors();for(const l of a){const d=l.getModel();d&&d!==t&&d.uri.scheme===Ci.vscodeNotebookCell&&s.push(d)}return s}const r=[],o=this.codeEditorService.listCodeEditors();for(const s of o){if(!nnt(s))continue;const a=s.getModel();a&&t===a.modified&&r.push(a.modified)}if(r.length)return r;if(this.occurrencesHighlightEnablement==="singleFile")return[];for(const s of o){const a=s.getModel();a&&a!==t&&r.push(a)}return r}async _run(t,n){var o,s,a;if(this.editor.hasTextFocus()){const l=this.editor.getSelection();if(!l||l.startLineNumber!==l.endLineNumber){Pl.query=null,this._stopAll();return}const d=l.startColumn,u=l.endColumn,h=this._getWord();if(!h||h.startColumn>d||h.endColumn{l===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=h||[],this._beginRenderDecorations(n??this.occurrencesHighlightDelay))},zi)}catch(h){this.logService.error("Unexpected error during occurrence request. Log: ",h)}finally{u.dispose()}}else if(this.model.uri.scheme===Ci.vscodeNotebookCell){const l=++this.workerRequestTokenId;if(this.workerRequestCompleted=!1,!Pl.query||!Pl.query.modelInfo)return;const d=await this.textModelService.createModelReference(Pl.query.modelInfo.modelURI);try{this.workerRequest=this.computeWithModel(d.object.textEditorModel,Pl.query.modelInfo.selection,[this.model]),(a=this.workerRequest)==null||a.result.then(u=>{l===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=u||[],this._beginRenderDecorations(n??this.occurrencesHighlightDelay))},zi)}catch(u){this.logService.error("Unexpected error during occurrence request. Log: ",u)}finally{d.dispose()}}}computeWithModel(t,n,r){return r.length?pLo(this.multiDocumentProviders,t,n,this.editor.getOption(148),r):ALo(this.providers,t,n,this.editor.getOption(148))}_beginRenderDecorations(t){const n=new Date().getTime(),r=this.lastCursorPositionChangeTime+t;n>=r?(this.renderDecorationsTimer=void 0,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},r-n)}renderDecorations(){var n,r,o;this.renderDecorationsTimer=void 0;const t=this.codeEditorService.listCodeEditors();for(const s of t){const a=M6.get(s);if(!a)continue;const l=[],d=(n=s.getModel())==null?void 0:n.uri;if(d&&this.workerRequestValue.has(d)){const u=Pl.storedDecorationIDs.get(d),h=this.workerRequestValue.get(d);if(h)for(const m of h)m.range&&l.push({range:m.range,options:ESo(m.kind)});let g=[];s.changeDecorations(m=>{g=m.deltaDecorations(u??[],l)}),Pl.storedDecorationIDs=Pl.storedDecorationIDs.set(d,g),l.length>0&&((r=a.wordHighlighter)==null||r.decorations.set(l),(o=a.wordHighlighter)==null||o._hasWordHighlights.set(!0))}}this.workerRequest=null}dispose(){this._stopSingular(),this.toUnhook.dispose()}},Pl=c6,c6.storedDecorationIDs=new _c,c6.query=null,c6);xze=Pl=qIn([mO(4,Dg),mO(5,yo),mO(6,ar),mO(7,va)],xze);var pB;let M6=(pB=class extends ft{static get(t){return t.getContribution(Lze.ID)}constructor(t,n,r,o,s,a,l){super(),this._wordHighlighter=null;const d=()=>{t.hasModel()&&!t.getModel().isTooLargeForTokenization()&&t.getModel().uri.scheme!==Ci.accessibleView&&(this._wordHighlighter=new xze(t,r.documentHighlightProvider,r.multiDocumentHighlightProvider,n,s,o,a,l))};this._register(t.onDidChangeModel(u=>{var h,g;this._wordHighlighter&&(!u.newModelUrl&&((h=u.oldModelUrl)==null?void 0:h.scheme)!==Ci.vscodeNotebookCell&&((g=this.wordHighlighter)==null||g.stop()),this._wordHighlighter.dispose(),this._wordHighlighter=null),d()})),d()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var t;(t=this._wordHighlighter)==null||t.moveNext()}moveBack(){var t;(t=this._wordHighlighter)==null||t.moveBack()}restoreViewState(t){this._wordHighlighter&&t&&this._wordHighlighter.restore(250)}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},Lze=pB,pB.ID="editor.contrib.wordHighlighter",pB);M6=Lze=qIn([mO(1,Qi),mO(2,Nn),mO(3,yo),mO(4,Dg),mO(5,ar),mO(6,va)],M6);class eMn extends Bn{constructor(t,n){super(n),this._isNext=t}run(t,n){const r=M6.get(n);r&&(this._isNext?r.moveNext():r.moveBack())}}class bLo extends eMn{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:_t(1572,"Go to Next Symbol Highlight"),precondition:tit,kbOpts:{kbExpr:$e.editorTextFocus,primary:65,weight:100}})}}class wLo extends eMn{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:_t(1573,"Go to Previous Symbol Highlight"),precondition:tit,kbOpts:{kbExpr:$e.editorTextFocus,primary:1089,weight:100}})}}class OLo extends Bn{constructor(){super({id:"editor.action.wordHighlight.trigger",label:_t(1574,"Trigger Symbol Highlight"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:0,weight:100}})}run(t,n,r){const o=M6.get(n);o&&o.restoreViewState(!0)}}mo(M6.ID,M6,0);un(bLo);un(wLo);un(OLo);dH(Sze);class $3e extends $d{constructor(t){super(t),this._inSelectionMode=t.inSelectionMode,this._wordNavigationType=t.wordNavigationType}runEditorCommand(t,n,r){if(!n.hasModel())return;const o=fA(n.getOption(148),n.getOption(147)),s=n.getModel(),a=n.getSelections(),l=a.length>1,d=a.map(u=>{const h=new it(u.positionLineNumber,u.positionColumn),g=this._move(o,s,h,this._wordNavigationType,l);return this._moveTo(u,g,this._inSelectionMode)});if(s.pushStackElement(),n._getViewModel().setCursorStates("moveWordCommand",3,d.map(u=>So.fromModelSelection(u))),d.length===1){const u=new it(d[0].positionLineNumber,d[0].positionColumn);n.revealPosition(u,0)}}_moveTo(t,n,r){return r?new Qn(t.selectionStartLineNumber,t.selectionStartColumn,n.lineNumber,n.column):new Qn(n.lineNumber,n.column,n.lineNumber,n.column)}}class fE extends $3e{_move(t,n,r,o,s){return as.moveWordLeft(t,n,r,o,s)}}class gE extends $3e{_move(t,n,r,o,s){return as.moveWordRight(t,n,r,o)}}class yLo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class CLo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class _Lo extends fE{constructor(){var t;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:2063,mac:{primary:527},weight:100}})}}class SLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class LLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class xLo extends fE{constructor(){var t;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:3087,mac:{primary:1551},weight:100}})}}class ELo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class TLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class QLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class DLo extends gE{constructor(){var t;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:2065,mac:{primary:529},weight:100}})}}class BLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class RLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class ILo extends gE{constructor(){var t;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:3089,mac:{primary:1553},weight:100}})}}class MLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class PLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class FLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class X3e extends $d{constructor(t){super({canTriggerInlineEdits:!0,...t}),this._whitespaceHeuristics=t.whitespaceHeuristics,this._wordNavigationType=t.wordNavigationType}runEditorCommand(t,n,r){const o=t==null?void 0:t.get(kl);if(!n.hasModel()||!o)return;const s=fA(n.getOption(148),n.getOption(147)),a=n.getModel(),l=n.getSelections(),d=n.getOption(10),u=n.getOption(15),h=o.getLanguageConfiguration(a.getLanguageId()).getAutoClosingPairs(),g=n._getViewModel(),m=l.map(v=>{const f=this._delete({wordSeparators:s,model:a,selection:v,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:n.getOption(13),autoClosingBrackets:d,autoClosingQuotes:u,autoClosingPairs:h,autoClosedCharacters:g.getCursorAutoClosedCharacters()},this._wordNavigationType);return new Hh(f,"")});n.pushUndoStop(),n.executeCommands(this.id,m),n.pushUndoStop()}}class nit extends X3e{_delete(t,n){const r=as.deleteWordLeft(t,n);return r||new Ee(1,1,1,1)}}class iit extends X3e{_delete(t,n){const r=as.deleteWordRight(t,n);if(r)return r;const o=t.model.getLineCount(),s=t.model.getLineMaxColumn(o);return new Ee(o,s,o,s)}}class NLo extends nit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:$e.writable})}}class ULo extends nit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:$e.writable})}}class jLo extends nit{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class WLo extends iit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:$e.writable})}}class VLo extends iit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:$e.writable})}}class zLo extends iit{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}class HLo extends Bn{constructor(){super({id:"deleteInsideWord",precondition:$e.writable,label:_t(1575,"Delete Word")})}run(t,n,r){if(!n.hasModel())return;const o=fA(n.getOption(148),n.getOption(147)),s=n.getModel(),l=n.getSelections().map(d=>{const u=as.deleteInsideWord(o,s,d);return new Hh(u,"")});n.pushUndoStop(),n.executeCommands(this.id,l),n.pushUndoStop()}}On(new yLo);On(new CLo);On(new _Lo);On(new SLo);On(new LLo);On(new xLo);On(new QLo);On(new DLo);On(new BLo);On(new RLo);On(new ILo);On(new MLo);On(new ELo);On(new TLo);On(new PLo);On(new FLo);On(new NLo);On(new ULo);On(new jLo);On(new WLo);On(new VLo);On(new zLo);un(HLo);class $Lo extends X3e{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(t,n){const r=Mbe.deleteWordPartLeft(t);return r||new Ee(1,1,1,1)}}class XLo extends X3e{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(t,n){const r=Mbe.deleteWordPartRight(t);if(r)return r;const o=t.model.getLineCount(),s=t.model.getLineMaxColumn(o);return new Ee(o,s,o,s)}}class tMn extends $3e{_move(t,n,r,o,s){return Mbe.moveWordPartLeft(t,n,r,s)}}class GLo extends tMn{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}co.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class YLo extends tMn{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}co.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class nMn extends $3e{_move(t,n,r,o,s){return Mbe.moveWordPartRight(t,n,r)}}class ZLo extends nMn{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class qLo extends nMn{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}On(new $Lo);On(new XLo);On(new GLo);On(new YLo);On(new ZLo);On(new qLo);const Oat=class Oat extends ft{constructor(t){super(),this.editor=t,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const t=D0.get(this.editor);if(t&&this.editor.hasModel()){let n=this.editor.getOptions().get(105);n||(this.editor.isSimpleWidget?n=new bf(U(1378,"Cannot edit in read-only input")):n=new bf(U(1379,"Cannot edit in read-only editor"))),t.showMessage(n,this.editor.getPosition())}}};Oat.ID="editor.contrib.readOnlyMessageController";let ake=Oat;mo(ake.ID,ake,2);var KLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},w_t=function(e,t){return function(n,r){t(n,r,e)}};let Eze=class extends ft{constructor(t,n,r){super(),this._textModel=t,this._languageFeaturesService=n,this._outlineModelService=r,this._currentModel=Ti(this,void 0);const o=A0("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),s=A0("_textModel.onDidChangeContent",an.debounce(a=>this._textModel.onDidChangeContent(a),()=>{},100));this._register(Ef(async(a,l)=>{o.read(a),s.read(a);const d=l.add(new A0o),u=await this._outlineModelService.getOrCreate(this._textModel,d.token);l.isDisposed||this._currentModel.set(u,void 0)}))}getBreadcrumbItems(t,n){const r=this._currentModel.read(n);if(!r)return[];const o=r.asListOfDocumentSymbols().filter(s=>t.contains(s.range.startLineNumber)&&!t.contains(s.range.endLineNumber));return o.sort(cEn(qh(s=>s.range.endLineNumber-s.range.startLineNumber,T0))),o.map(s=>({name:s.name,kind:s.kind,startLineNumber:s.range.startLineNumber}))}};Eze=KLo([w_t(1,Nn),w_t(2,ore)],Eze);P1e.setBreadcrumbsSourceFactory((e,t)=>t.createInstance(Eze,e));var JLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Gxe=function(e,t){return function(n,r){t(n,r,e)}},eW;let lke=(eW=class extends ft{constructor(t,n,r,o){super();const s=this._register(hl(t)),a=this._register(o.createMenu(Wn.EditorContent,t.contextKeyService)),l=Ko(this,a.onDidChange,()=>a.getActions().length===0);this._register(Oi(d=>{if(l.read(d))return;const h=wo("div.floating-menu-overlay-widget");h.root.style.height="28px";const g=n.createInstance(RJ,h.root,Wn.EditorContent,{actionViewItemProvider:(m,v)=>{if(!(m instanceof i2))return;const f=r.lookupKeybinding(m.id);if(f)return n.createInstance(class extends D6{updateLabel(){this.options.label&&this.label&&(this.label.textContent=`${this._commandAction.label} (${f.getLabel()})`)}},m,{...v,keybindingNotRenderedWithLabel:!0})},hiddenItemStrategy:0,menuOptions:{shouldForwardArgs:!0},telemetrySource:"editor.overlayToolbar",toolbarOptions:{primaryGroup:()=>!0,useSeparatorsInPrimaryActions:!0}});d.store.add(g),d.store.add(Oi(m=>{const v=s.model.read(m);g.context=v==null?void 0:v.uri})),d.store.add(s.createOverlayWidget({allowEditorOverflow:!1,domNode:h.root,minContentWidthInPx:ca(0),position:ca({preference:1})}))}))}},eW.ID="editor.contrib.floatingToolbar",eW);lke=JLo([Gxe(1,Yn),Gxe(2,Do),Gxe(3,wA)],lke);mo(lke.ID,lke,1);var Tze;(function(e){e.inspectTokensAction=U(786,"Developer: Inspect Tokens")})(Tze||(Tze={}));var cke;(function(e){e.gotoLineActionLabel=U(787,"Go to Line/Column...")})(cke||(cke={}));var Qze;(function(e){e.helpQuickAccessActionLabel=U(788,"Show all Quick Access Providers")})(Qze||(Qze={}));var dke;(function(e){e.quickCommandActionLabel=U(789,"Command Palette"),e.quickCommandHelp=U(790,"Show And Run Commands")})(dke||(dke={}));var mee;(function(e){e.quickOutlineActionLabel=U(791,"Go to Symbol..."),e.quickOutlineByCategoryActionLabel=U(792,"Go to Symbol by Category...")})(mee||(mee={}));var Dze;(function(e){e.editorViewAccessibleLabel=U(793,"Editor content")})(Dze||(Dze={}));var Bze;(function(e){e.toggleHighContrast=U(794,"Toggle High Contrast Theme")})(Bze||(Bze={}));var Rze;(function(e){e.bulkEditServiceSummary=U(795,"Made {0} edits in {1} files")})(Rze||(Rze={}));const yat=class yat extends ft{constructor(t){super(),this.editor=t,this.widget=null,cA&&(this._register(t.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const t=!this.editor.getOption(104);!this.widget&&t?this.widget=new Ize(this.editor):this.widget&&!t&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};yat.ID="editor.contrib.iPadShowKeyboard";let uke=yat;const IAe=class IAe extends ft{constructor(t){super(),this.editor=t,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(wt(this._domNode,"touchstart",n=>{this.editor.focus()})),this._register(wt(this._domNode,"focus",n=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return IAe.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};IAe.ID="editor.contrib.ShowKeyboardWidget";let Ize=IAe;mo(uke.ID,uke,3);const L2=Cr("themeService");var exo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},O_t=function(e,t){return function(n,r){t(n,r,e)}},Mze,bB;let kee=(bB=class extends ft{static get(t){return t.getContribution(Mze.ID)}constructor(t,n,r){super(),this._editor=t,this._languageService=r,this._widget=null,this._register(this._editor.onDidChangeModel(o=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(o=>this.stop())),this._register(Hl.onDidChange(o=>this.stop())),this._register(this._editor.onKeyUp(o=>o.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new Pze(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},Mze=bB,bB.ID="editor.contrib.inspectTokens",bB);kee=Mze=exo([O_t(1,L2),O_t(2,nc)],kee);class txo extends Bn{constructor(){super({id:"editor.action.inspectTokens",label:Tze.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(t,n){const r=kee.get(n);r==null||r.launch()}}function nxo(e){let t="";for(let n=0,r=e.length;nhV,tokenize:(o,s,a)=>ttt(t,a),tokenizeEncoded:(o,s,a)=>s3e(r,a)}}const MAe=class MAe extends ft{constructor(t,n){super(),this.allowEditorOverflow=!0,this._editor=t,this._languageService=n,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=ixo(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(r=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return MAe._ID}_compute(t){const n=this._getTokensAtLine(t.lineNumber);let r=0;for(let d=n.tokens1.length-1;d>=0;d--){const u=n.tokens1[d];if(t.column-1>=u.offset){r=d;break}}let o=0;for(let d=n.tokens2.length>>>1;d>=0;d--)if(t.column-1>=n.tokens2[d<<1]){o=d;break}const s=this._model.getLineContent(t.lineNumber);let a="";if(rr.prefix.length-n.prefix.length),Hn(()=>{this.providers.splice(this.providers.indexOf(t),1),this.defaultProvider===t&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return P3([this.defaultProvider,...this.providers])}getQuickAccessProvider(t){return t&&this.providers.find(r=>t.startsWith(r.prefix))||void 0||this.defaultProvider}}Ql.add(FI.Quickaccess,new rxo);var oxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},y_t=function(e,t){return function(n,r){t(n,r,e)}},ZG,wB;let Nze=(wB=class{constructor(t,n){this.quickInputService=t,this.keybindingService=n,this.registry=Ql.as(FI.Quickaccess)}provide(t){const n=new xt;return n.add(t.onDidAccept(()=>{const[r]=t.selectedItems;r&&this.quickInputService.quickAccess.show(r.prefix,{preserveValue:!0})})),n.add(t.onDidChangeValue(r=>{const o=this.registry.getQuickAccessProvider(r.substr(ZG.PREFIX.length));o&&o.prefix&&o.prefix!==ZG.PREFIX&&this.quickInputService.quickAccess.show(o.prefix,{preserveValue:!0})})),t.items=this.getQuickAccessProviders().filter(r=>r.prefix!==ZG.PREFIX),n}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((n,r)=>n.prefix.localeCompare(r.prefix)).flatMap(n=>this.createPicks(n))}createPicks(t){return t.helpEntries.map(n=>{const r=n.prefix||t.prefix,o=r||"…";return{prefix:r,label:o,keybinding:n.commandId?this.keybindingService.lookupKeybinding(n.commandId):void 0,ariaLabel:U(1747,"{0}, {1}",o,n.description),description:n.description}})}},ZG=wB,wB.PREFIX="?",wB);Nze=ZG=oxo([y_t(0,Rf),y_t(1,Do)],Nze);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Nze,prefix:"",helpEntries:[{description:Qze.helpQuickAccessActionLabel}]});class iMn{constructor(t){this.options=t,this.rangeHighlightDecorationId=void 0}provide(t,n,r){var a;const o=new xt;t.canAcceptInBackground=!!((a=this.options)!=null&&a.canAcceptInBackground),t.matchOnLabel=t.matchOnDescription=t.matchOnDetail=t.sortByLabel=!1;const s=o.add(new ts);return s.value=this.doProvide(t,n,r),o.add(this.onDidActiveTextEditorControlChange(()=>{s.value=void 0,s.value=this.doProvide(t,n)})),o}doProvide(t,n,r){const o=new xt,s=this.activeTextEditorControl;if(s&&this.canProvideWithTextEditor(s)){const a={editor:s},l=HBn(s);if(l){let d=s.saveViewState()??void 0;o.add(l.onDidChangeCursorPosition(()=>{d=s.saveViewState()??void 0})),a.restoreViewState=()=>{d&&s===this.activeTextEditorControl&&s.restoreViewState(d)},o.add(iR(n.onCancellationRequested)(()=>{var u;return(u=a.restoreViewState)==null?void 0:u.call(a)}))}o.add(Hn(()=>this.clearDecorations(s))),o.add(this.provideWithTextEditor(a,t,n,r))}else o.add(this.provideWithoutTextEditor(t,n));return o}canProvideWithTextEditor(t){return!0}gotoLocation({editor:t},n){t.setSelection(n.range,"code.jump"),t.revealRangeInCenter(n.range,0),n.preserveFocus||t.focus();const r=t.getModel();r&&"getLineContent"in r&&A3(`${r.getLineContent(n.range.startLineNumber)}`)}getModel(t){var n;return nnt(t)?(n=t.getModel())==null?void 0:n.modified:t.getModel()}addDecorations(t,n){t.changeDecorations(r=>{const o=[];this.rangeHighlightDecorationId&&(o.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),o.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const s=[{range:n,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:n,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:zl(oTn),position:r2.Full}}}],[a,l]=r.deltaDecorations(o,s);this.rangeHighlightDecorationId={rangeHighlightId:a,overviewRulerDecorationId:l}})}clearDecorations(t){const n=this.rangeHighlightDecorationId;n&&(t.changeDecorations(r=>{r.deltaDecorations([n.overviewRulerDecorationId,n.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}const YT=class YT extends iMn{constructor(){super({canAcceptInBackground:!0})}get useZeroBasedOffset(){return this.storageService.getBoolean(YT.ZERO_BASED_OFFSET_STORAGE_KEY,-1,!1)}set useZeroBasedOffset(t){this.storageService.store(YT.ZERO_BASED_OFFSET_STORAGE_KEY,t,-1,0)}provideWithoutTextEditor(t){const n=U(1335,"Open a text editor first to go to a line.");return t.items=[{label:n}],t.ariaLabel=n,ft.None}provideWithTextEditor(t,n,r){const o=t.editor,s=new xt;s.add(n.onDidAccept(u=>{const[h]=n.selectedItems;if(h){if(!h.lineNumber)return;this.gotoLocation(t,{range:this.toRange(h.lineNumber,h.column),keyMods:n.keyMods,preserveFocus:u.inBackground}),u.inBackground||n.hide()}}));const a=()=>{const u=n.value.trim().substring(YT.PREFIX.length),{inOffsetMode:h,lineNumber:g,column:m,label:v}=this.parsePosition(o,u);if(l.visible=!!h,n.items=[{lineNumber:g,column:m,label:v}],n.ariaLabel=v,!g){this.clearDecorations(o);return}const f=this.toRange(g,m);o.revealRangeInCenter(f,0),this.addDecorations(o,f)},l=new yL({title:U(1336,"Use Zero-Based Offset"),icon:zt.indexZero,isChecked:this.useZeroBasedOffset,inputActiveOptionBorder:en(Die),inputActiveOptionForeground:en(Bie),inputActiveOptionBackground:en(eH)});s.add(l.onChange(()=>{this.useZeroBasedOffset=!this.useZeroBasedOffset,a()})),n.toggles=[l],a(),s.add(n.onDidChangeValue(()=>a()));const d=HBn(o);return d&&d.getOptions().get(76).renderType===2&&(d.updateOptions({lineNumbers:"on"}),s.add(Hn(()=>d.updateOptions({lineNumbers:"relative"})))),s}toRange(t=1,n=1){return{startLineNumber:t,startColumn:n,endLineNumber:t,endColumn:n}}parsePosition(t,n){var o,s;const r=this.getModel(t);if(!r)return{label:U(1337,"Open a text editor first to go to a line.")};if(n.startsWith(":")){let a=parseInt(n.substring(1),10);const l=r.getValueLength();if(isNaN(a))return{inOffsetMode:!0,label:this.useZeroBasedOffset?U(1338,"Type a character position to go to (from 0 to {0}).",l-1):U(1339,"Type a character position to go to (from 1 to {0}).",l)};{const d=a<0;this.useZeroBasedOffset||(a-=Math.sign(a)),d&&(a+=l);const u=r.getPositionAt(a);return{...u,inOffsetMode:!0,label:U(1340,"Press 'Enter' to go to line {0} at column {1}.",u.lineNumber,u.column)}}}else{const a=n.split(/,|:|#/),l=r.getLineCount();let d=parseInt((o=a[0])==null?void 0:o.trim(),10);if(a.length<1||isNaN(d))return{label:U(1341,"Type a line number to go to (from 1 to {0}).",l)};d=d>=0?d:l+1+d,d=Math.min(Math.max(1,d),l);const u=r.getLineMaxColumn(d);let h=parseInt((s=a[1])==null?void 0:s.trim(),10);return a.length<2||isNaN(h)?{lineNumber:d,column:1,label:a.length<2?U(1342,"Press 'Enter' to go to line {0} or enter : to add a column number.",d):U(1343,"Press 'Enter' to go to line {0} or enter a column number (from 1 to {1}).",d,u)}:(h=h>=0?h:u+h,h=Math.min(Math.max(1,h),u),{lineNumber:d,column:h,label:U(1344,"Press 'Enter' to go to line {0} at column {1}.",d,h)})}}};YT.PREFIX=":",YT.ZERO_BASED_OFFSET_STORAGE_KEY="gotoLine.useZeroBasedOffset";let Uze=YT;var sxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},C_t=function(e,t){return function(n,r){t(n,r,e)}};let vee=class extends Uze{constructor(t,n){super(),this.editorService=t,this.storageService=n,this.onDidActiveTextEditorControlChange=an.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};vee=sxo([C_t(0,yo),C_t(1,Bg)],vee);var OB;let rMn=(OB=class extends Bn{constructor(){super({id:OB.ID,label:cke.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:2085,mac:{primary:293},weight:100}})}run(t){t.get(Rf).quickAccess.show(vee.PREFIX)}},OB.ID="editor.action.gotoLine",OB);un(rMn);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:vee,prefix:vee.PREFIX,helpEntries:[{description:cke.gotoLineActionLabel,commandId:rMn.ID}]});const oMn=[void 0,[]];function Yxe(e,t,n=0,r=0){const o=t;return o.values&&o.values.length>1?axo(e,o.values,n,r):sMn(e,t,n,r)}function axo(e,t,n,r){let o=0;const s=[];for(const a of t){const[l,d]=sMn(e,a,n,r);if(typeof l!="number")return oMn;o+=l,s.push(...d)}return[o,lxo(s)]}function sMn(e,t,n,r){const o=kR(t.original,t.originalLowercase,n,e,e.toLowerCase(),r,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return o?[o[0],Uie(o)]:oMn}function lxo(e){const t=e.sort((o,s)=>o.start-s.start),n=[];let r;for(const o of t)!r||!cxo(r,o)?(r=o,n.push(o)):(r.start=Math.min(r.start,o.start),r.end=Math.max(r.end,o.end));return n}function cxo(e,t){return!(e.end=0,a=__t(e);let l;const d=e.split(aMn);if(d.length>1)for(const u of d){const h=__t(u),{pathNormalized:g,normalized:m,normalizedLowercase:v}=S_t(u);m&&(l||(l=[]),l.push({original:u,originalLowercase:u.toLowerCase(),pathNormalized:g,normalized:m,normalizedLowercase:v,expectContiguousMatch:h}))}return{original:e,originalLowercase:t,pathNormalized:n,normalized:r,normalizedLowercase:o,values:l,containsPathSeparator:s,expectContiguousMatch:a}}function S_t(e){let t;mh?t=e.replace(/\//g,o3):t=e.replace(/\\/g,o3);const n=t.replace(/[\*\u2026\s"]/g,"");return{pathNormalized:t,normalized:n,normalizedLowercase:n.toLowerCase()}}function L_t(e){return Array.isArray(e)?jze(e.map(t=>t.original).join(aMn)):jze(e.original)}var dxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},x_t=function(e,t){return function(n,r){t(n,r,e)}},Ehe,Wb;let bD=(Wb=class extends iMn{constructor(t,n,r=Object.create(null)){super(r),this._languageFeaturesService=t,this._outlineModelService=n,this.options=r,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(t){return this.provideLabelPick(t,U(1345,"To go to a symbol, first open a text editor with symbol information.")),ft.None}provideWithTextEditor(t,n,r,o){const s=t.editor,a=this.getModel(s);return a?this._languageFeaturesService.documentSymbolProvider.has(a)?this.doProvideWithEditorSymbols(t,a,n,r,o):this.doProvideWithoutEditorSymbols(t,a,n,r):ft.None}doProvideWithoutEditorSymbols(t,n,r,o){const s=new xt;return this.provideLabelPick(r,U(1346,"The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(n,s)||o.isCancellationRequested||s.add(this.doProvideWithEditorSymbols(t,n,r,o)))(),s}provideLabelPick(t,n){t.items=[{label:n,index:0,kind:14}],t.ariaLabel=n}async waitForLanguageSymbolRegistry(t,n){if(this._languageFeaturesService.documentSymbolProvider.has(t))return!0;const r=new pI,o=n.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(t)&&(o.dispose(),r.complete(!0))}));return n.add(Hn(()=>r.complete(!1))),r.p}doProvideWithEditorSymbols(t,n,r,o,s){var g;const a=t.editor,l=new xt;l.add(r.onDidAccept(m=>{var f;const[v]=r.selectedItems;v&&v.range&&(this.gotoLocation(t,{range:v.range.selection,keyMods:r.keyMods,preserveFocus:m.inBackground}),(f=s==null?void 0:s.handleAccept)==null||f.call(s,v,m.inBackground),m.inBackground||r.hide())})),l.add(r.onDidTriggerItemButton(({item:m})=>{m&&m.range&&(this.gotoLocation(t,{range:m.range.selection,keyMods:r.keyMods,forceSideBySide:!0}),r.hide())}));const d=this.getDocumentSymbols(n,o),u=l.add(new ts),h=async m=>{var v;(v=u==null?void 0:u.value)==null||v.cancel(),r.busy=!1,u.value=new ja,r.busy=!0;try{const f=jze(r.value.substr(Ehe.PREFIX.length).trim()),k=await this.doGetSymbolPicks(d,f,void 0,u.value.token,n);if(o.isCancellationRequested)return;if(k.length>0){if(r.items=k,m&&f.original.length===0){const A=cJ(k,p=>!!(p.type!=="separator"&&p.range&&Ee.containsPosition(p.range.decoration,m)));A&&(r.activeItems=[A])}}else f.original.length>0?this.provideLabelPick(r,U(1347,"No matching editor symbols")):this.provideLabelPick(r,U(1348,"No editor symbols"))}finally{o.isCancellationRequested||(r.busy=!1)}};return l.add(r.onDidChangeValue(()=>h(void 0))),h((g=a.getSelection())==null?void 0:g.getPosition()),l.add(r.onDidChangeActive(()=>{const[m]=r.activeItems;m&&m.range&&(a.revealRangeInCenter(m.range.selection,0),this.addDecorations(a,m.range.decoration))})),l}async doGetSymbolPicks(t,n,r,o,s){var A,p;const a=await t;if(o.isCancellationRequested)return[];const l=n.original.indexOf(Ehe.SCOPE_PREFIX)===0,d=l?1:0;let u,h;n.values&&n.values.length>1?(u=L_t(n.values[0]),h=L_t(n.values.slice(1))):u=n;let g;const m=(p=(A=this.options)==null?void 0:A.openSideBySideDirection)==null?void 0:p.call(A);m&&(g=[{iconClass:m==="right"?fi.asClassName(zt.splitHorizontal):fi.asClassName(zt.splitVertical),tooltip:m==="right"?U(1349,"Open to the Side"):U(1350,"Open to the Bottom")}]);const v=[];for(let b=0;bd){let P=!1;if(u!==n&&([S,L]=Yxe(y,{...n,values:void 0},d,C),typeof S=="number"&&(P=!0)),typeof S!="number"&&([S,L]=Yxe(y,u,d,C),typeof S!="number"))continue;if(!P&&h){if(_&&h.original.length>0&&([E,T]=Yxe(_,h)),typeof E!="number")continue;typeof S=="number"&&(S+=E)}}const D=w.tags&&w.tags.indexOf(1)>=0;v.push({index:b,kind:w.kind,score:S,label:y,ariaLabel:Rco(w.name,w.kind),description:_,highlights:D?void 0:{label:L,description:T},range:{selection:Ee.collapseToStart(w.selectionRange),decoration:w.range},uri:s.uri,symbolName:O,strikethrough:D,buttons:g})}const f=v.sort((b,w)=>l?this.compareByKindAndScore(b,w):this.compareByScore(b,w));let k=[];if(l){let y=function(){w&&typeof b=="number"&&O>0&&(w.label=oR(qxe[b]||Zxe,O))},b,w,O=0;for(const C of f)b!==C.kind?(y(),b=C.kind,O=1,w={type:"separator"},k.push(w)):O++,k.push(C);y()}else f.length>0&&(k=[{label:U(1351,"symbols ({0})",v.length),type:"separator"},...f]);return k}compareByScore(t,n){if(typeof t.score!="number"&&typeof n.score=="number")return 1;if(typeof t.score=="number"&&typeof n.score!="number")return-1;if(typeof t.score=="number"&&typeof n.score=="number"){if(t.score>n.score)return-1;if(t.scoren.index?1:0}compareByKindAndScore(t,n){const r=qxe[t.kind]||Zxe,o=qxe[n.kind]||Zxe,s=r.localeCompare(o);return s===0?this.compareByScore(t,n):s}async getDocumentSymbols(t,n){const r=await this._outlineModelService.getOrCreate(t,n);return n.isCancellationRequested?[]:r.asListOfDocumentSymbols()}},Ehe=Wb,Wb.PREFIX="@",Wb.SCOPE_PREFIX=":",Wb.PREFIX_BY_CATEGORY=`${Wb.PREFIX}${Wb.SCOPE_PREFIX}`,Wb);bD=Ehe=dxo([x_t(0,Nn),x_t(1,ore)],bD);const Zxe=U(1352,"properties ({0})"),qxe={5:U(1353,"methods ({0})"),11:U(1354,"functions ({0})"),8:U(1355,"constructors ({0})"),12:U(1356,"variables ({0})"),4:U(1357,"classes ({0})"),22:U(1358,"structs ({0})"),23:U(1359,"events ({0})"),24:U(1360,"operators ({0})"),10:U(1361,"interfaces ({0})"),2:U(1362,"namespaces ({0})"),3:U(1363,"packages ({0})"),25:U(1364,"type parameters ({0})"),1:U(1365,"modules ({0})"),6:U(1366,"properties ({0})"),9:U(1367,"enumerations ({0})"),21:U(1368,"enumeration members ({0})"),14:U(1369,"strings ({0})"),0:U(1370,"files ({0})"),17:U(1371,"arrays ({0})"),15:U(1372,"numbers ({0})"),16:U(1373,"booleans ({0})"),18:U(1374,"objects ({0})"),19:U(1375,"keys ({0})"),7:U(1376,"fields ({0})"),13:U(1377,"constants ({0})")};var uxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Kxe=function(e,t){return function(n,r){t(n,r,e)}};let Wze=class extends bD{constructor(t,n,r){super(n,r),this.editorService=t,this.onDidActiveTextEditorControlChange=an.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};Wze=uxo([Kxe(0,yo),Kxe(1,Nn),Kxe(2,ore)],Wze);const PAe=class PAe extends Bn{constructor(){super({id:PAe.ID,label:mee.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:$e.hasDocumentSymbolProvider,kbOpts:{kbExpr:$e.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(t){t.get(Rf).quickAccess.show(bD.PREFIX,{itemActivation:Qb.NONE})}};PAe.ID="editor.action.quickOutline";let hke=PAe;un(hke);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Wze,prefix:bD.PREFIX,helpEntries:[{description:mee.quickOutlineActionLabel,prefix:bD.PREFIX,commandId:hke.ID},{description:mee.quickOutlineByCategoryActionLabel,prefix:bD.PREFIX_BY_CATEGORY}]});function hxo(e){const t=new Map;for(const n of e)t.set(n,(t.get(n)??0)+1);return t}class HZ{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(t,n){const r=this.computeEmbedding(t),o=new Map,s=[];for(const[a,l]of this.documents){if(n.isCancellationRequested)return[];for(const d of l.chunks){const u=this.computeSimilarityScore(d,r,o);u>0&&s.push({key:a,score:u})}}return s}static termFrequencies(t){return hxo(HZ.splitTerms(t))}static*splitTerms(t){const n=r=>r.toLowerCase();for(const[r]of t.matchAll(new RegExp("\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b","gu"))){yield n(r);const o=r.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(o.length>1)for(const s of o)s.length>2&&new RegExp("\\p{Letter}{3,}","gu").test(s)&&(yield n(s))}}updateDocuments(t){for(const{key:n}of t)this.deleteDocument(n);for(const n of t){const r=[];for(const o of n.textChunks){const s=HZ.termFrequencies(o);for(const a of s.keys())this.chunkOccurrences.set(a,(this.chunkOccurrences.get(a)??0)+1);r.push({text:o,tf:s})}this.chunkCount+=r.length,this.documents.set(n.key,{chunks:r})}return this}deleteDocument(t){const n=this.documents.get(t);if(n){this.documents.delete(t),this.chunkCount-=n.chunks.length;for(const r of n.chunks)for(const o of r.tf.keys()){const s=this.chunkOccurrences.get(o);if(typeof s=="number"){const a=s-1;a<=0?this.chunkOccurrences.delete(o):this.chunkOccurrences.set(o,a)}}}}computeSimilarityScore(t,n,r){let o=0;for(const[s,a]of Object.entries(n)){const l=t.tf.get(s);if(!l)continue;let d=r.get(s);typeof d!="number"&&(d=this.computeIdf(s),r.set(s,d));const u=l*d;o+=u*a}return o}computeEmbedding(t){const n=HZ.termFrequencies(t);return this.computeTfidf(n)}computeIdf(t){const n=this.chunkOccurrences.get(t)??0;return n>0?Math.log((this.chunkCount+1)/n):0}computeTfidf(t){const n=Object.create(null);for(const[r,o]of t){const s=this.computeIdf(r);s>0&&(n[r]=o*s)}return n}}function fxo(e){var r;const t=e.slice(0);t.sort((o,s)=>s.score-o.score);const n=((r=t[0])==null?void 0:r.score)??0;if(n>0)for(const o of t)o.score/=n;return t}var LN;(function(e){e[e.NO_ACTION=0]="NO_ACTION",e[e.CLOSE_PICKER=1]="CLOSE_PICKER",e[e.REFRESH_PICKER=2]="REFRESH_PICKER",e[e.REMOVE_ITEM=3]="REMOVE_ITEM"})(LN||(LN={}));function Jxe(e){const t=e;return Array.isArray(t.items)}function E_t(e){const t=e;return!!t.picks&&t.additionalPicks instanceof Promise}class gxo extends ft{constructor(t,n){super(),this.prefix=t,this.options=n}provide(t,n,r){var u;const o=new xt;t.canAcceptInBackground=!!((u=this.options)!=null&&u.canAcceptInBackground),t.matchOnLabel=t.matchOnDescription=t.matchOnDetail=t.sortByLabel=!1;let s;const a=o.add(new ts),l=async()=>{var A;s==null||s.dispose(!0),t.busy=!1;const h=a.value=new xt;s=h.add(new ja(n));const g=s.token;let m=t.value.substring(this.prefix.length);(A=this.options)!=null&&A.shouldSkipTrimPickFilter||(m=m.trim());const v=this._getPicks(m,h,g,r),f=(p,b)=>{var y;let w,O;if(Jxe(p)?(w=p.items,O=p.active):w=p,w.length===0){if(b)return!1;(m.length>0||t.hideInput)&&((y=this.options)!=null&&y.noResultsPick)&&(tR(this.options.noResultsPick)?w=[this.options.noResultsPick(m)]:w=[this.options.noResultsPick])}return t.items=w,O&&(t.activeItems=[O]),!0},k=async p=>{let b=!1,w=!1;await Promise.all([(async()=>{typeof p.mergeDelay=="number"&&(await Cy(p.mergeDelay),g.isCancellationRequested)||w||(b=f(p.picks,!0))})(),(async()=>{t.busy=!0;try{const O=await p.additionalPicks;if(g.isCancellationRequested)return;let y,C;Jxe(p.picks)?(y=p.picks.items,C=p.picks.active):y=p.picks;let _,S;if(Jxe(O)?(_=O.items,S=O.active):_=O,_.length>0||!b){let L;if(!C&&!S){const E=t.activeItems[0];E&&y.indexOf(E)!==-1&&(L=E)}f({items:[...y,..._],active:C||S||L})}}finally{g.isCancellationRequested||(t.busy=!1),w=!0}})()])};if(v!==null)if(E_t(v))await k(v);else if(!(v instanceof Promise))f(v);else{t.busy=!0;try{const p=await v;if(g.isCancellationRequested)return;E_t(p)?await k(p):f(p)}finally{g.isCancellationRequested||(t.busy=!1)}}};o.add(t.onDidChangeValue(()=>l())),l(),o.add(t.onDidAccept(h=>{var m;if(r!=null&&r.handleAccept){h.inBackground||t.hide(),(m=r.handleAccept)==null||m.call(r,t.activeItems[0],h.inBackground);return}const[g]=t.selectedItems;typeof(g==null?void 0:g.accept)=="function"&&(h.inBackground||t.hide(),g.accept(t.keyMods,h))}));const d=async(h,g)=>{var v;if(typeof g.trigger!="function")return;const m=((v=g.buttons)==null?void 0:v.indexOf(h))??-1;if(m>=0){const f=g.trigger(m,t.keyMods),k=typeof f=="number"?f:await f;if(n.isCancellationRequested)return;switch(k){case LN.NO_ACTION:break;case LN.CLOSE_PICKER:t.hide();break;case LN.REFRESH_PICKER:l();break;case LN.REMOVE_ITEM:{const A=t.items.indexOf(g);if(A!==-1){const p=t.items.slice(),b=p.splice(A,1),w=t.activeItems.filter(y=>y!==b[0]),O=t.keepScrollPosition;t.keepScrollPosition=!0,t.items=p,w&&(t.activeItems=w),t.keepScrollPosition=O}break}}}};return o.add(t.onDidTriggerItemButton(({button:h,item:g})=>d(h,g))),o.add(t.onDidTriggerSeparatorButton(({button:h,separator:g})=>d(h,g))),o}}new wp(1e4);const mxo=new wp(1e4);function kxo(e){return Axo(e,"NFD",mxo)}const vxo=/[^\u0000-\u0080]/;function Axo(e,t,n){if(!e)return e;const r=n.get(e);if(r)return r;let o;return vxo.test(e)?o=e.normalize(t):o=e,n.set(e,o),o}const pxo=function(){const e=/[\u0300-\u036f]/g;return function(t){return kxo(t).replace(e,"")}}();var lMn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},B5=function(e,t){return function(n,r){t(n,r,e)}},eT,hd,FO;let Vze=(FO=class extends gxo{constructor(t,n,r,o,s,a){super(eT.PREFIX,t),this.keybindingService=r,this.commandService=o,this.telemetryService=s,this.dialogService=a,this.commandsHistory=this._register(n.createInstance(zze)),this.options=t}async _getPicks(t,n,r,o){var f,k;const s=await this.getCommandPicks(r);if(r.isCancellationRequested)return[];const a=iR(()=>{const A=new HZ;A.updateDocuments(s.map(b=>({key:b.commandId,textChunks:[this.getTfIdfChunk(b)]})));const p=A.calculateScores(t,r);return fxo(p).filter(b=>b.score>eT.TFIDF_THRESHOLD).slice(0,eT.TFIDF_MAX_RESULTS)}),l=this.normalizeForFiltering(t),d=[];for(const A of s){A.labelNoAccents??(A.labelNoAccents=this.normalizeForFiltering(A.label));const p=eT.WORD_FILTER(l,A.labelNoAccents)??void 0;let b;if(A.commandAlias&&(A.aliasNoAccents??(A.aliasNoAccents=this.normalizeForFiltering(A.commandAlias)),b=eT.WORD_FILTER(l,A.aliasNoAccents)??void 0),p||b)A.highlights={label:p,detail:this.options.showAlias?b:void 0},d.push(A);else if(t===A.commandId)d.push(A);else if(t.length>=3){const w=a();if(r.isCancellationRequested)return[];const O=w.find(y=>y.key===A.commandId);O&&(A.tfIdfScore=O.score,d.push(A))}}const u=new Map;for(const A of d){const p=u.get(A.label);p?(A.description=A.commandId,p.description=p.commandId):u.set(A.label,A)}d.sort((A,p)=>{if(A.tfIdfScore&&p.tfIdfScore)return A.tfIdfScore===p.tfIdfScore?A.label.localeCompare(p.label):p.tfIdfScore-A.tfIdfScore;if(A.tfIdfScore)return 1;if(p.tfIdfScore)return-1;const b=this.commandsHistory.peek(A.commandId),w=this.commandsHistory.peek(p.commandId);if(b&&w)return b>w?-1:1;if(b)return-1;if(w)return 1;if(this.options.suggestedCommandIds){const C=this.options.suggestedCommandIds.has(A.commandId),_=this.options.suggestedCommandIds.has(p.commandId);if(C&&_)return 0;if(C)return-1;if(_)return 1}const O=A.commandCategory===mze.Developer.value,y=p.commandCategory===mze.Developer.value;return O&&!y?1:!O&&y?-1:A.label.localeCompare(p.label)});const h=[];let g=!1,m=!0,v=!!this.options.suggestedCommandIds;for(let A=0;A{var b;const A=await this.getAdditionalCommandPicks(s,d,t,r);if(r.isCancellationRequested)return[];const p=A.map(w=>this.toCommandPick(w,o));return m&&((b=p[0])==null?void 0:b.type)!=="separator"&&p.unshift({type:"separator",label:U(1744,"similar commands")}),p})()}:h}toCommandPick(t,n){if(t.type==="separator")return t;const r=this.keybindingService.lookupKeybinding(t.commandId),o=r?U(1745,"{0}, {1}",t.label,r.getAriaLabel()):t.label;return{...t,ariaLabel:o,detail:this.options.showAlias&&t.commandAlias!==t.label?t.commandAlias:void 0,keybinding:r,accept:async()=>{var s;this.commandsHistory.push(t.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:t.commandId,from:(n==null?void 0:n.from)??"quick open"});try{(s=t.args)!=null&&s.length?await this.commandService.executeCommand(t.commandId,...t.args):await this.commandService.executeCommand(t.commandId)}catch(a){C2(a)||this.dialogService.error(U(1746,"Command '{0}' resulted in an error",t.label),H1e(a))}}}}getTfIdfChunk({label:t,commandAlias:n,commandDescription:r}){let o=t;return n&&n!==t&&(o+=` - ${n}`),r&&r.value!==t&&(o+=` - ${r.value===r.original?r.value:`${r.value} (${r.original})`}`),o}normalizeForFiltering(t){const n=pxo(t);return n.length!==t.length?(this.telemetryService.publicLog2("QuickAccess:FilterLengthMismatch",{originalLength:t.length,normalizedLength:n.length}),t):n}},eT=FO,FO.PREFIX=">",FO.TFIDF_THRESHOLD=.5,FO.TFIDF_MAX_RESULTS=5,FO.WORD_FILTER=ctt(_J,Igo,hQn),FO);Vze=eT=lMn([B5(1,Yn),B5(2,Do),B5(3,ba),B5(4,Nf),B5(5,are)],Vze);var Vb;let zze=(Vb=class extends ft{constructor(t,n,r){super(),this.storageService=t,this.configurationService=n,this.logService=r,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(t=>this.updateConfiguration(t))),this._register(this.storageService.onWillSaveState(t=>{t.reason===F9.SHUTDOWN&&this.saveState()}))}updateConfiguration(t){t&&!t.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=hd.getConfiguredCommandHistoryLength(this.configurationService),hd.cache&&hd.cache.limit!==this.configuredCommandsHistoryLength&&(hd.cache.limit=this.configuredCommandsHistoryLength,hd.hasChanges=!0))}load(){const t=this.storageService.get(hd.PREF_KEY_CACHE,0);let n;if(t)try{n=JSON.parse(t)}catch(o){this.logService.error(`[CommandsHistory] invalid data: ${o}`)}const r=hd.cache=new wp(this.configuredCommandsHistoryLength,1);if(n){let o;n.usesLRU?o=n.entries:o=n.entries.sort((s,a)=>s.value-a.value),o.forEach(s=>r.set(s.key,s.value))}hd.counter=this.storageService.getNumber(hd.PREF_KEY_COUNTER,0,hd.counter)}push(t){hd.cache&&(hd.cache.set(t,hd.counter++),hd.hasChanges=!0)}peek(t){var n;return(n=hd.cache)==null?void 0:n.peek(t)}saveState(){if(!hd.cache||!hd.hasChanges)return;const t={usesLRU:!0,entries:[]};hd.cache.forEach((n,r)=>t.entries.push({key:r,value:n})),this.storageService.store(hd.PREF_KEY_CACHE,JSON.stringify(t),0,0),this.storageService.store(hd.PREF_KEY_COUNTER,hd.counter,0,0),hd.hasChanges=!1}static getConfiguredCommandHistoryLength(t){var o,s;const r=(s=(o=t.getValue().workbench)==null?void 0:o.commandPalette)==null?void 0:s.history;return typeof r=="number"?r:hd.DEFAULT_COMMANDS_HISTORY_LENGTH}},hd=Vb,Vb.DEFAULT_COMMANDS_HISTORY_LENGTH=50,Vb.PREF_KEY_CACHE="commandPalette.mru.cache",Vb.PREF_KEY_COUNTER="commandPalette.mru.counter",Vb.counter=1,Vb.hasChanges=!1,Vb);zze=hd=lMn([B5(0,Bg),B5(1,ar),B5(2,va)],zze);class bxo extends Vze{constructor(t,n,r,o,s,a){super(t,n,r,o,s,a)}getCodeEditorCommandPicks(){var r;const t=this.activeTextEditorControl;if(!t)return[];const n=[];for(const o of t.getSupportedActions()){let s;(r=o.metadata)!=null&&r.description&&(Oko(o.metadata.description)?s=o.metadata.description:s={original:o.metadata.description,value:o.metadata.description}),n.push({commandId:o.id,commandAlias:o.alias,commandDescription:s,label:mtt(o.label)||o.id})}return n}}var wxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},NP=function(e,t){return function(n,r){t(n,r,e)}};let Aee=class extends bxo{get activeTextEditorControl(){return this.codeEditorService.getFocusedCodeEditor()??void 0}constructor(t,n,r,o,s,a){super({showAlias:!1},t,r,o,s,a),this.codeEditorService=n}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};Aee=wxo([NP(0,Yn),NP(1,yo),NP(2,Do),NP(3,ba),NP(4,Nf),NP(5,are)],Aee);const FAe=class FAe extends Bn{constructor(){super({id:FAe.ID,label:dke.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(t){t.get(Rf).quickAccess.show(Aee.PREFIX)}};FAe.ID="editor.action.quickCommand";let fke=FAe;un(fke);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Aee,prefix:Aee.PREFIX,helpEntries:[{description:dke.quickCommandHelp,commandId:fke.ID}]});var Oxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},UP=function(e,t){return function(n,r){t(n,r,e)}};let Hze=class extends QR{constructor(t,n,r,o,s,a,l){super(!0,t,n,r,o,s,a,l)}};Hze=Oxo([UP(1,Qi),UP(2,yo),UP(3,ic),UP(4,Yn),UP(5,Bg),UP(6,ar)],Hze);mo(QR.ID,Hze,4);class yxo{constructor(t,n,r,o,s){this._parsedThemeRuleBrand=void 0,this.token=t,this.index=n,this.fontStyle=r,this.foreground=o,this.background=s}}function Cxo(e){if(!e||!Array.isArray(e))return[];const t=[];let n=0;for(let r=0,o=e.length;r{const m=Txo(h.token,g.token);return m!==0?m:h.index-g.index});let n=0,r="000000",o="ffffff";for(;e.length>=1&&e[0].token==="";){const h=e.shift();h.fontStyle!==-1&&(n=h.fontStyle),h.foreground!==null&&(r=h.foreground),h.background!==null&&(o=h.background)}const s=new Lxo;for(const h of t)s.getId(h);const a=s.getId(r),l=s.getId(o),d=new rit(n,a,l),u=new oit(d);for(let h=0,g=e.length;h"u"){const o=this._match(n),s=Exo(n);r=(o.metadata|s<<8)>>>0,this._cache.set(n,r)}return(r|t<<0)>>>0}}const xxo=/\b(comment|string|regex|regexp)\b/;function Exo(e){const t=e.match(xxo);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 Txo(e,t){return et?1:0}class rit{constructor(t,n,r){this._themeTrieElementRuleBrand=void 0,this._fontStyle=t,this._foreground=n,this._background=r,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new rit(this._fontStyle,this._foreground,this._background)}acceptOverwrite(t,n,r){t!==-1&&(this._fontStyle=t),n!==0&&(this._foreground=n),r!==0&&(this._background=r),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class oit{constructor(t){this._themeTrieElementBrand=void 0,this._mainRule=t,this._children=new Map}match(t){if(t==="")return this._mainRule;const n=t.indexOf(".");let r,o;n===-1?(r=t,o=""):(r=t.substring(0,n),o=t.substring(n+1));const s=this._children.get(r);return typeof s<"u"?s.match(o):this._mainRule}insert(t,n,r,o){if(t===""){this._mainRule.acceptOverwrite(n,r,o);return}const s=t.indexOf(".");let a,l;s===-1?(a=t,l=""):(a=t.substring(0,s),l=t.substring(s+1));let d=this._children.get(a);typeof d>"u"&&(d=new oit(this._mainRule.clone()),this._children.set(a,d)),d.insert(l,n,r,o)}}function Qxo(e){const t=[];for(let n=1,r=e.length;n{X8o(u,[f])}});if(g.push({label:h(r),run:()=>$8o(u,[r])}),a){const f=new z8o;g.push({label:f.label,run:async()=>f.runAction(u)})}else if(s){const f=new H8o;g.push({label:f.label,run:async()=>f.runAction(u)})}function m(f){return typeof f.desc.title=="string"?f.desc.title:f.desc.title.value}if(o.kind===0){const f=new IR;g.push({label:m(f),run:async()=>f.runAction(u)})}else if(o.kind===1){const f=new fee;g.push({label:m(f),run:async()=>f.runAction(u)})}else if(o.kind===2){const f=new gee;g.push({label:m(f),run:async()=>f.runAction(u)})}else G8o(o);const v=await d.pick(g,{title:HIn});v&&await v.run()}};RAe.ID="editor.action.unicodeHighlight.showExcludeOptions";let oke=RAe;async function $8o(e,t){const n=e.getValue(Jm.allowedCharacters);let r;typeof n=="object"&&n?r=n:r={};for(const o of t)r[String.fromCodePoint(o)]=!0;await e.updateValue(Jm.allowedCharacters,r,2)}async function X8o(e,t){var o;const n=(o=e.inspect(Jm.allowedLocales).user)==null?void 0:o.value;let r;typeof n=="object"&&n?r=Object.assign({},n):r={};for(const s of t)r[s]=!0;await e.updateValue(Jm.allowedLocales,r,2)}function G8o(e){throw new Error(`Unexpected value: ${e}`)}ys(IR);ys(fee);ys(gee);ys(oke);mo(hee.ID,hee,1);BI.register(Cze);const are=Cr("dialogService");var Y8o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},h_t=function(e,t){return function(n,r){t(n,r,e)}};const XIn="ignoreUnusualLineTerminators";function Z8o(e,t,n){e.setModelProperty(t.uri,XIn,n)}function q8o(e,t){return e.getModelProperty(t.uri,XIn)}var Jj;let ske=(Jj=class extends ft{constructor(t,n,r){super(),this._editor=t,this._dialogService=n,this._codeEditorService=r,this._isPresentingDialog=!1,this._config=this._editor.getOption(143),this._register(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(143)&&(this._config=this._editor.getOption(143),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(o=>{o.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const t=this._editor.getModel();if(!t.mightContainUnusualLineTerminators()||q8o(this._codeEditorService,t)===!0||this._editor.getOption(104))return;if(this._config==="auto"){t.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let r;try{this._isPresentingDialog=!0,r=await this._dialogService.confirm({title:U(1558,"Unusual Line Terminators"),message:U(1559,"Detected unusual line terminators"),detail:U(1560,"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`.",hA(t.uri)),primaryButton:U(1561,"&&Remove Unusual Line Terminators"),cancelButton:U(1562,"Ignore")})}finally{this._isPresentingDialog=!1}if(!r.confirmed){Z8o(this._codeEditorService,t,!0);return}t.removeUnusualLineTerminators(this._editor.getSelections())}},Jj.ID="editor.contrib.unusualLineTerminatorsDetector",Jj);ske=Y8o([h_t(1,are),h_t(2,yo)],ske);mo(ske.ID,ske,1);const vce="**",f_t="/",Lhe="[/\\\\]",xhe="[^/\\\\]",K8o=/\//g;function g_t(e,t){switch(e){case 0:return"";case 1:return`${xhe}*?`;default:return`(?:${Lhe}|${xhe}+${Lhe}${t?`|${Lhe}${xhe}+`:""})*?`}}function m_t(e,t){if(!e)return[];const n=[];let r=!1,o=!1,s="";for(const a of e){switch(a){case t:if(!r&&!o){n.push(s),s="";continue}break;case"{":r=!0;break;case"}":r=!1;break;case"[":o=!0;break;case"]":o=!1;break}s+=a}return s&&n.push(s),n}function GIn(e){if(!e)return"";let t="";const n=m_t(e,f_t);if(n.every(r=>r===vce))t=".*";else{let r=!1;n.forEach((o,s)=>{if(o===vce){if(r)return;t+=g_t(2,s===n.length-1)}else{let a=!1,l="",d=!1,u="";for(const h of o){if(h!=="}"&&a){l+=h;continue}if(d&&(h!=="]"||!u)){let g;h==="-"?g=h:(h==="^"||h==="!")&&!u?g="^":h===f_t?g="":g=M0(h),u+=g;continue}switch(h){case"{":a=!0;continue;case"[":d=!0;continue;case"}":{const m=`(?:${m_t(l,",").map(v=>GIn(v)).join("|")})`;t+=m,a=!1,l="";break}case"]":{t+="["+u+"]",d=!1,u="";break}case"?":t+=xhe;continue;case"*":t+=g_t(1);continue;default:t+=M0(h)}}sd===u,endsWith:r?Aeo:(d,u)=>d.endsWith(u),isEqualOrParent:(d,u)=>pNe(d,u,!v1||r)},s=`${r?n.toLowerCase():n}_${!!t.trimForExclusions}_${r}`;let a=k_t.get(s);if(a)return A_t(a,e,o);let l;return J8o.test(n)?a=oLo(n.substring(4),n,o):(l=eLo.exec(Xxe(n,o)))?a=sLo(l[1],n,o):(t.trimForExclusions?nLo:tLo).test(n)?a=aLo(n,o):(l=iLo.exec(Xxe(n,o)))?a=p_t(l[1].substring(1),n,!0,o):(l=rLo.exec(Xxe(n,o)))?a=p_t(l[1],n,!1,o):a=lLo(n,o),k_t.set(s,a),A_t(a,e,o)}function A_t(e,t,n){if(typeof t=="string")return e;const r=function(o,s){return n.isEqualOrParent(o,t.base)?e(_ie(o.substring(t.base.length),o3),s):null};return r.allBasenames=e.allBasenames,r.allPaths=e.allPaths,r.basenames=e.basenames,r.patterns=e.patterns,r}function Xxe(e,t){return t.trimForExclusions&&e.endsWith("/**")?e.substring(0,e.length-2):e}function oLo(e,t,n){return function(r,o){return typeof r=="string"&&n.endsWith(r,e)?t:null}}function sLo(e,t,n){const r=`/${e}`,o=`\\${e}`,s=function(l,d){return typeof l!="string"?null:d?n.equals(d,e)?t:null:n.equals(l,e)||n.endsWith(l,r)||n.endsWith(l,o)?t:null},a=[e];return s.basenames=a,s.patterns=[t],s.allBasenames=a,s}function aLo(e,t){const n=ZIn(e.slice(1,-1).split(",").map(l=>Jnt(l,t)).filter(l=>l!==uy),e),r=n.length;if(!r)return uy;if(r===1)return n[0];const o=function(l,d){for(let u=0,h=n.length;u!!l.allBasenames);s&&(o.allBasenames=s.allBasenames);const a=n.reduce((l,d)=>d.allPaths?l.concat(d.allPaths):l,[]);return a.length&&(o.allPaths=a),o}function p_t(e,t,n,r){const o=o3===Jc.sep,s=o?e:e.replace(K8o,o3),a=o3+s,l=Jc.sep+e;let d;return n?d=function(u,h){return typeof u=="string"&&(r.equals(u,s)||r.endsWith(u,a)||!o&&(r.equals(u,e)||r.endsWith(u,l)))?t:null}:d=function(u,h){return typeof u=="string"&&(r.equals(u,s)||!o&&r.equals(u,e))?t:null},d.allPaths=[(n?"*/":"./")+e],d}function lLo(e,t){try{const n=new RegExp(`^${GIn(e)}$`,t.ignoreCase?"i":void 0);return function(r){return n.lastIndex=0,typeof r=="string"&&n.test(r)?e:null}}catch{return uy}}function cLo(e,t,n){return!e||typeof t!="string"?!1:YIn(e,n)(t)}function YIn(e,t={}){if(!e)return v_t;if(typeof e=="string"||dLo(e)){const n=Jnt(e,t);if(n===uy)return v_t;const r=function(o,s){return!!n(o,s)};return n.allBasenames&&(r.allBasenames=n.allBasenames),n.allPaths&&(r.allPaths=n.allPaths),r}return uLo(e,t)}function dLo(e){const t=e;return t?typeof t.base=="string"&&typeof t.pattern=="string":!1}function uLo(e,t){const n=ZIn(Object.getOwnPropertyNames(e).map(l=>hLo(l,e[l],t)).filter(l=>l!==uy)),r=n.length;if(!r)return uy;if(!n.some(l=>!!l.requiresSiblings)){if(r===1)return n[0];const l=function(h,g){let m;for(let v=0,f=n.length;v{for(const v of m){const f=await v;if(typeof f=="string")return f}return null})():null},d=n.find(h=>!!h.allBasenames);d&&(l.allBasenames=d.allBasenames);const u=n.reduce((h,g)=>g.allPaths?h.concat(g.allPaths):h,[]);return u.length&&(l.allPaths=u),l}const o=function(l,d,u){let h,g;for(let m=0,v=n.length;m{for(const m of g){const v=await m;if(typeof v=="string")return v}return null})():null},s=n.find(l=>!!l.allBasenames);s&&(o.allBasenames=s.allBasenames);const a=n.reduce((l,d)=>d.allPaths?l.concat(d.allPaths):l,[]);return a.length&&(o.allPaths=a),o}function hLo(e,t,n){if(t===!1)return uy;const r=Jnt(e,n);if(r===uy)return uy;if(typeof t=="boolean")return r;if(t){const o=t.when;if(typeof o=="string"){const s=(a,l,d,u)=>{if(!u||!r(a,l))return null;const h=o.replace("$(basename)",()=>d),g=u(h);return qFe(g)?g.then(m=>m?e:null):g?e:null};return s.requiresSiblings=!0,s}}return r}function ZIn(e,t){const n=e.filter(l=>!!l.basenames);if(n.length<2)return e;const r=n.reduce((l,d)=>{const u=d.basenames;return u?l.concat(u):l},[]);let o;if(t){o=[];for(let l=0,d=r.length;l{const u=d.patterns;return u?l.concat(u):l},[]);const s=function(l,d){if(typeof l!="string")return null;if(!d){let h;for(h=l.length;h>0;h--){const g=l.charCodeAt(h-1);if(g===47||g===92)break}d=l.substring(h)}const u=r.indexOf(d);return u!==-1?o[u]:null};s.basenames=r,s.patterns=o,s.allBasenames=r;const a=e.filter(l=>!l.basenames);return a.push(s),a}function eit(e,t,n,r,o,s){if(Array.isArray(e)){let a=0;for(const l of e){const d=eit(l,t,n,r,o,s);if(d===10)return d;d>a&&(a=d)}return a}else{if(typeof e=="string")return r?e==="*"?5:e===n?10:0:0;if(e){const{language:a,pattern:l,scheme:d,hasAccessToAllModels:u,notebookType:h}=e;if(!r&&!u)return 0;h&&o&&(t=o);let g=0;if(d)if(d===t.scheme)g=10;else if(d==="*")g=5;else return 0;if(a)if(a===n)g=10;else if(a==="*")g=Math.max(g,5);else return 0;if(h)if(h===s)g=10;else if(h==="*"&&s!==void 0)g=Math.max(g,5);else return 0;if(l){let m;if(typeof l=="string"?m=l:m={...l,base:J6n(l.base)},m===t.fsPath||cLo(m,t.fsPath))g=10;else return 0}return g}else return 0}}var fLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gLo=function(e,t){return function(n,r){t(n,r,e)}};class b_t{constructor(){this.selector={language:"*"}}provideDocumentHighlights(t,n,r){const o=[],s=t.getWordAtPosition({lineNumber:n.lineNumber,column:n.column});return s?t.isDisposed()?void 0:t.findMatches(s.word,!0,!1,!0,Ime,!1).map(l=>({range:l.range,kind:uV.Text})):Promise.resolve(o)}provideMultiDocumentHighlights(t,n,r,o){const s=new _c,a=t.getWordAtPosition({lineNumber:n.lineNumber,column:n.column});if(!a)return Promise.resolve(s);for(const l of[t,...r]){if(l.isDisposed())continue;const u=l.findMatches(a.word,!0,!1,!0,Ime,!1).map(h=>({range:h.range,kind:uV.Text}));u&&s.set(l.uri,u)}return s}}let Sze=class extends ft{constructor(t){super(),this._register(t.documentHighlightProvider.register("*",new b_t)),this._register(t.multiDocumentHighlightProvider.register("*",new b_t))}};Sze=fLo([gLo(0,Nn)],Sze);var qIn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},mO=function(e,t){return function(n,r){t(n,r,e)}},Pl,Lze;const tit=new yn("hasWordHighlights",!1);function KIn(e,t,n,r){const o=e.ordered(t);return EJe(o.map(s=>()=>Promise.resolve(s.provideDocumentHighlights(t,n,r)).then(void 0,Nc)),s=>s!=null).then(s=>{if(s){const a=new _c;return a.set(t.uri,s),a}return new _c})}function mLo(e,t,n,r,o){const s=e.ordered(t);return EJe(s.map(a=>()=>{const l=o.filter(d=>GEn(d)).filter(d=>eit(a.selector,d.uri,d.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(a.provideMultiDocumentHighlights(t,n,l,r)).then(void 0,Nc)}),a=>a!=null)}class JIn{constructor(t,n,r){this._model=t,this._selection=n,this._wordSeparators=r,this._wordRange=this._getCurrentWordRange(t,n),this._result=null}get result(){return this._result||(this._result=Fd(t=>this._compute(this._model,this._selection,this._wordSeparators,t))),this._result}_getCurrentWordRange(t,n){const r=t.getWordAtPosition(n.getPosition());return r?new Ee(n.startLineNumber,r.startColumn,n.startLineNumber,r.endColumn):null}cancel(){this.result.cancel()}}class kLo extends JIn{constructor(t,n,r,o){super(t,n,r),this._providers=o}_compute(t,n,r,o){return KIn(this._providers,t,n.getPosition(),o).then(s=>s||new _c)}}class vLo extends JIn{constructor(t,n,r,o,s){super(t,n,r),this._providers=o,this._otherModels=s}_compute(t,n,r,o){return mLo(this._providers,t,n.getPosition(),o,this._otherModels).then(s=>s||new _c)}}function ALo(e,t,n,r){return new kLo(t,n,r,e)}function pLo(e,t,n,r,o){return new vLo(t,n,r,e,o)}_1("_executeDocumentHighlights",async(e,t,n)=>{const r=e.get(Nn),o=await KIn(r.documentHighlightProvider,t,n,Er.None);return o==null?void 0:o.get(t.uri)});var c6;let xze=(c6=class{constructor(t,n,r,o,s,a,l,d){this.toUnhook=new xt,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new _c,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=void 0,this.runDelayer=this.toUnhook.add(new dA(50)),this.editor=t,this.providers=n,this.multiDocumentProviders=r,this.codeEditorService=a,this.textModelService=s,this.configurationService=l,this.logService=d,this._hasWordHighlights=tit.bindTo(o),this._ignorePositionChangeEvent=!1,this.occurrencesHighlightEnablement=this.editor.getOption(90),this.occurrencesHighlightDelay=this.configurationService.getValue("editor.occurrencesHighlightDelay"),this.model=this.editor.getModel(),this.toUnhook.add(t.onDidChangeCursorPosition(u=>{this._ignorePositionChangeEvent||this.occurrencesHighlightEnablement!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(u)})})),this.toUnhook.add(t.onDidFocusEditorText(u=>{this.occurrencesHighlightEnablement!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(t.onDidChangeModelContent(u=>{kbe(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(t.onDidChangeModel(u=>{!u.newModelUrl&&u.oldModelUrl?this._stopSingular():Pl.query&&this._run()})),this.toUnhook.add(t.onDidChangeConfiguration(u=>{var g,m;const h=this.editor.getOption(90);if(this.occurrencesHighlightEnablement!==h)switch(this.occurrencesHighlightEnablement=h,h){case"off":this._stopAll();break;case"singleFile":this._stopAll((m=(g=Pl.query)==null?void 0:g.modelInfo)==null?void 0:m.modelURI);break;case"multiFile":Pl.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",h);break}})),this.toUnhook.add(this.configurationService.onDidChangeConfiguration(u=>{if(u.affectsConfiguration("editor.occurrencesHighlightDelay")){const h=l.getValue("editor.occurrencesHighlightDelay");this.occurrencesHighlightDelay!==h&&(this.occurrencesHighlightDelay=h)}})),this.toUnhook.add(t.onDidBlurEditorWidget(()=>{var h,g;const u=this.codeEditorService.getFocusedCodeEditor();u?((h=u.getModel())==null?void 0:h.uri.scheme)===Ci.vscodeNotebookCell&&((g=this.editor.getModel())==null?void 0:g.uri.scheme)!==Ci.vscodeNotebookCell&&this._stopAll():this._stopAll()})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=void 0,Pl.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(t){this.occurrencesHighlightEnablement!=="off"&&(this.runDelayer.cancel(),this.runDelayer.trigger(()=>{this._run(!1,t)}))}stop(){this.occurrencesHighlightEnablement!=="off"&&this._stopAll()}_getSortedHighlights(){return this.decorations.getRanges().sort(Ee.compareRangesUsingStarts)}moveNext(){const t=this._getSortedHighlights(),r=(t.findIndex(s=>s.containsPosition(this.editor.getPosition()))+1)%t.length,o=t[r];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(o.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(o);const s=this._getWord();if(s){const a=this.editor.getModel().getLineContent(o.startLineNumber);um(`${a}, ${r+1} of ${t.length} for '${s.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const t=this._getSortedHighlights(),r=(t.findIndex(s=>s.containsPosition(this.editor.getPosition()))-1+t.length)%t.length,o=t[r];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(o.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(o);const s=this._getWord();if(s){const a=this.editor.getModel().getLineContent(o.startLineNumber);um(`${a}, ${r+1} of ${t.length} for '${s.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const t=Pl.storedDecorationIDs.get(this.editor.getModel().uri);t&&(this.editor.removeDecorations(t),Pl.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(t){const n=this.codeEditorService.listCodeEditors(),r=[];for(const o of n){if(!o.hasModel()||C6(o.getModel().uri,t))continue;const s=Pl.storedDecorationIDs.get(o.getModel().uri);if(!s)continue;o.removeDecorations(s),r.push(o.getModel().uri);const a=M6.get(o);a!=null&&a.wordHighlighter&&a.wordHighlighter.decorations.length>0&&(a.wordHighlighter.decorations.clear(),a.wordHighlighter.workerRequest=null,a.wordHighlighter._hasWordHighlights.set(!1))}for(const o of r)Pl.storedDecorationIDs.delete(o)}_stopSingular(){var t,n,r,o;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((t=this.editor.getModel())==null?void 0:t.uri.scheme)!==Ci.vscodeNotebookCell&&((r=(n=Pl.query)==null?void 0:n.modelInfo)==null?void 0:r.modelURI.scheme)!==Ci.vscodeNotebookCell?(Pl.query=null,this._run()):(o=Pl.query)!=null&&o.modelInfo&&(Pl.query.modelInfo=null)),this.renderDecorationsTimer!==void 0&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=void 0),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(t){this._removeAllDecorations(t),this.renderDecorationsTimer!==void 0&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=void 0),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(t){if(this.occurrencesHighlightEnablement==="off"){this._stopAll();return}if(t.source!=="api"&&t.reason!==3){this._stopAll();return}this._run()}_getWord(){const t=this.editor.getSelection(),n=t.startLineNumber,r=t.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:n,column:r})}getOtherModelsToHighlight(t){if(!t)return[];if(t.uri.scheme===Ci.vscodeNotebookCell){const s=[],a=this.codeEditorService.listCodeEditors();for(const l of a){const d=l.getModel();d&&d!==t&&d.uri.scheme===Ci.vscodeNotebookCell&&s.push(d)}return s}const r=[],o=this.codeEditorService.listCodeEditors();for(const s of o){if(!nnt(s))continue;const a=s.getModel();a&&t===a.modified&&r.push(a.modified)}if(r.length)return r;if(this.occurrencesHighlightEnablement==="singleFile")return[];for(const s of o){const a=s.getModel();a&&a!==t&&r.push(a)}return r}async _run(t,n){var o,s,a;if(this.editor.hasTextFocus()){const l=this.editor.getSelection();if(!l||l.startLineNumber!==l.endLineNumber){Pl.query=null,this._stopAll();return}const d=l.startColumn,u=l.endColumn,h=this._getWord();if(!h||h.startColumn>d||h.endColumn{l===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=h||[],this._beginRenderDecorations(n??this.occurrencesHighlightDelay))},zi)}catch(h){this.logService.error("Unexpected error during occurrence request. Log: ",h)}finally{u.dispose()}}else if(this.model.uri.scheme===Ci.vscodeNotebookCell){const l=++this.workerRequestTokenId;if(this.workerRequestCompleted=!1,!Pl.query||!Pl.query.modelInfo)return;const d=await this.textModelService.createModelReference(Pl.query.modelInfo.modelURI);try{this.workerRequest=this.computeWithModel(d.object.textEditorModel,Pl.query.modelInfo.selection,[this.model]),(a=this.workerRequest)==null||a.result.then(u=>{l===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=u||[],this._beginRenderDecorations(n??this.occurrencesHighlightDelay))},zi)}catch(u){this.logService.error("Unexpected error during occurrence request. Log: ",u)}finally{d.dispose()}}}computeWithModel(t,n,r){return r.length?pLo(this.multiDocumentProviders,t,n,this.editor.getOption(148),r):ALo(this.providers,t,n,this.editor.getOption(148))}_beginRenderDecorations(t){const n=new Date().getTime(),r=this.lastCursorPositionChangeTime+t;n>=r?(this.renderDecorationsTimer=void 0,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},r-n)}renderDecorations(){var n,r,o;this.renderDecorationsTimer=void 0;const t=this.codeEditorService.listCodeEditors();for(const s of t){const a=M6.get(s);if(!a)continue;const l=[],d=(n=s.getModel())==null?void 0:n.uri;if(d&&this.workerRequestValue.has(d)){const u=Pl.storedDecorationIDs.get(d),h=this.workerRequestValue.get(d);if(h)for(const m of h)m.range&&l.push({range:m.range,options:ESo(m.kind)});let g=[];s.changeDecorations(m=>{g=m.deltaDecorations(u??[],l)}),Pl.storedDecorationIDs=Pl.storedDecorationIDs.set(d,g),l.length>0&&((r=a.wordHighlighter)==null||r.decorations.set(l),(o=a.wordHighlighter)==null||o._hasWordHighlights.set(!0))}}this.workerRequest=null}dispose(){this._stopSingular(),this.toUnhook.dispose()}},Pl=c6,c6.storedDecorationIDs=new _c,c6.query=null,c6);xze=Pl=qIn([mO(4,Dg),mO(5,yo),mO(6,ar),mO(7,va)],xze);var pB;let M6=(pB=class extends ft{static get(t){return t.getContribution(Lze.ID)}constructor(t,n,r,o,s,a,l){super(),this._wordHighlighter=null;const d=()=>{t.hasModel()&&!t.getModel().isTooLargeForTokenization()&&t.getModel().uri.scheme!==Ci.accessibleView&&(this._wordHighlighter=new xze(t,r.documentHighlightProvider,r.multiDocumentHighlightProvider,n,s,o,a,l))};this._register(t.onDidChangeModel(u=>{var h,g;this._wordHighlighter&&(!u.newModelUrl&&((h=u.oldModelUrl)==null?void 0:h.scheme)!==Ci.vscodeNotebookCell&&((g=this.wordHighlighter)==null||g.stop()),this._wordHighlighter.dispose(),this._wordHighlighter=null),d()})),d()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var t;(t=this._wordHighlighter)==null||t.moveNext()}moveBack(){var t;(t=this._wordHighlighter)==null||t.moveBack()}restoreViewState(t){this._wordHighlighter&&t&&this._wordHighlighter.restore(250)}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},Lze=pB,pB.ID="editor.contrib.wordHighlighter",pB);M6=Lze=qIn([mO(1,Qi),mO(2,Nn),mO(3,yo),mO(4,Dg),mO(5,ar),mO(6,va)],M6);class eMn extends Bn{constructor(t,n){super(n),this._isNext=t}run(t,n){const r=M6.get(n);r&&(this._isNext?r.moveNext():r.moveBack())}}class bLo extends eMn{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:_t(1572,"Go to Next Symbol Highlight"),precondition:tit,kbOpts:{kbExpr:$e.editorTextFocus,primary:65,weight:100}})}}class wLo extends eMn{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:_t(1573,"Go to Previous Symbol Highlight"),precondition:tit,kbOpts:{kbExpr:$e.editorTextFocus,primary:1089,weight:100}})}}class OLo extends Bn{constructor(){super({id:"editor.action.wordHighlight.trigger",label:_t(1574,"Trigger Symbol Highlight"),precondition:void 0,kbOpts:{kbExpr:$e.editorTextFocus,primary:0,weight:100}})}run(t,n,r){const o=M6.get(n);o&&o.restoreViewState(!0)}}mo(M6.ID,M6,0);un(bLo);un(wLo);un(OLo);dH(Sze);class $3e extends $d{constructor(t){super(t),this._inSelectionMode=t.inSelectionMode,this._wordNavigationType=t.wordNavigationType}runEditorCommand(t,n,r){if(!n.hasModel())return;const o=fA(n.getOption(148),n.getOption(147)),s=n.getModel(),a=n.getSelections(),l=a.length>1,d=a.map(u=>{const h=new it(u.positionLineNumber,u.positionColumn),g=this._move(o,s,h,this._wordNavigationType,l);return this._moveTo(u,g,this._inSelectionMode)});if(s.pushStackElement(),n._getViewModel().setCursorStates("moveWordCommand",3,d.map(u=>So.fromModelSelection(u))),d.length===1){const u=new it(d[0].positionLineNumber,d[0].positionColumn);n.revealPosition(u,0)}}_moveTo(t,n,r){return r?new Qn(t.selectionStartLineNumber,t.selectionStartColumn,n.lineNumber,n.column):new Qn(n.lineNumber,n.column,n.lineNumber,n.column)}}class fE extends $3e{_move(t,n,r,o,s){return as.moveWordLeft(t,n,r,o,s)}}class gE extends $3e{_move(t,n,r,o,s){return as.moveWordRight(t,n,r,o)}}class yLo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class CLo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class _Lo extends fE{constructor(){var t;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:2063,mac:{primary:527},weight:100}})}}class SLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class LLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class xLo extends fE{constructor(){var t;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:3087,mac:{primary:1551},weight:100}})}}class ELo extends fE{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class TLo extends fE{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class QLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class DLo extends gE{constructor(){var t;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:2065,mac:{primary:529},weight:100}})}}class BLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class RLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class ILo extends gE{constructor(){var t;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:Ft.and($e.textInputFocus,(t=Ft.and(qz,C3e))==null?void 0:t.negate()),primary:3089,mac:{primary:1553},weight:100}})}}class MLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class PLo extends gE{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class FLo extends gE{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(t,n,r,o,s){return super._move(fA(fg.wordSeparators.defaultValue,t.intlSegmenterLocales),n,r,o,s)}}class X3e extends $d{constructor(t){super({canTriggerInlineEdits:!0,...t}),this._whitespaceHeuristics=t.whitespaceHeuristics,this._wordNavigationType=t.wordNavigationType}runEditorCommand(t,n,r){const o=t==null?void 0:t.get(kl);if(!n.hasModel()||!o)return;const s=fA(n.getOption(148),n.getOption(147)),a=n.getModel(),l=n.getSelections(),d=n.getOption(10),u=n.getOption(15),h=o.getLanguageConfiguration(a.getLanguageId()).getAutoClosingPairs(),g=n._getViewModel(),m=l.map(v=>{const f=this._delete({wordSeparators:s,model:a,selection:v,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:n.getOption(13),autoClosingBrackets:d,autoClosingQuotes:u,autoClosingPairs:h,autoClosedCharacters:g.getCursorAutoClosedCharacters()},this._wordNavigationType);return new Hh(f,"")});n.pushUndoStop(),n.executeCommands(this.id,m),n.pushUndoStop()}}class nit extends X3e{_delete(t,n){const r=as.deleteWordLeft(t,n);return r||new Ee(1,1,1,1)}}class iit extends X3e{_delete(t,n){const r=as.deleteWordRight(t,n);if(r)return r;const o=t.model.getLineCount(),s=t.model.getLineMaxColumn(o);return new Ee(o,s,o,s)}}class NLo extends nit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:$e.writable})}}class ULo extends nit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:$e.writable})}}class jLo extends nit{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class WLo extends iit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:$e.writable})}}class VLo extends iit{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:$e.writable})}}class zLo extends iit{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}class HLo extends Bn{constructor(){super({id:"deleteInsideWord",precondition:$e.writable,label:_t(1575,"Delete Word")})}run(t,n,r){if(!n.hasModel())return;const o=fA(n.getOption(148),n.getOption(147)),s=n.getModel(),l=n.getSelections().map(d=>{const u=as.deleteInsideWord(o,s,d);return new Hh(u,"")});n.pushUndoStop(),n.executeCommands(this.id,l),n.pushUndoStop()}}On(new yLo);On(new CLo);On(new _Lo);On(new SLo);On(new LLo);On(new xLo);On(new QLo);On(new DLo);On(new BLo);On(new RLo);On(new ILo);On(new MLo);On(new ELo);On(new TLo);On(new PLo);On(new FLo);On(new NLo);On(new ULo);On(new jLo);On(new WLo);On(new VLo);On(new zLo);un(HLo);class $Lo extends X3e{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(t,n){const r=Mbe.deleteWordPartLeft(t);return r||new Ee(1,1,1,1)}}class XLo extends X3e{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:$e.writable,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(t,n){const r=Mbe.deleteWordPartRight(t);if(r)return r;const o=t.model.getLineCount(),s=t.model.getLineMaxColumn(o);return new Ee(o,s,o,s)}}class tMn extends $3e{_move(t,n,r,o,s){return Mbe.moveWordPartLeft(t,n,r,s)}}class GLo extends tMn{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}uo.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class YLo extends tMn{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}uo.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class nMn extends $3e{_move(t,n,r,o,s){return Mbe.moveWordPartRight(t,n,r)}}class ZLo extends nMn{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class qLo extends nMn{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:$e.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}On(new $Lo);On(new XLo);On(new GLo);On(new YLo);On(new ZLo);On(new qLo);const Oat=class Oat extends ft{constructor(t){super(),this.editor=t,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const t=D0.get(this.editor);if(t&&this.editor.hasModel()){let n=this.editor.getOptions().get(105);n||(this.editor.isSimpleWidget?n=new bf(U(1378,"Cannot edit in read-only input")):n=new bf(U(1379,"Cannot edit in read-only editor"))),t.showMessage(n,this.editor.getPosition())}}};Oat.ID="editor.contrib.readOnlyMessageController";let ake=Oat;mo(ake.ID,ake,2);var KLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},w_t=function(e,t){return function(n,r){t(n,r,e)}};let Eze=class extends ft{constructor(t,n,r){super(),this._textModel=t,this._languageFeaturesService=n,this._outlineModelService=r,this._currentModel=Ti(this,void 0);const o=A0("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),s=A0("_textModel.onDidChangeContent",an.debounce(a=>this._textModel.onDidChangeContent(a),()=>{},100));this._register(Ef(async(a,l)=>{o.read(a),s.read(a);const d=l.add(new A0o),u=await this._outlineModelService.getOrCreate(this._textModel,d.token);l.isDisposed||this._currentModel.set(u,void 0)}))}getBreadcrumbItems(t,n){const r=this._currentModel.read(n);if(!r)return[];const o=r.asListOfDocumentSymbols().filter(s=>t.contains(s.range.startLineNumber)&&!t.contains(s.range.endLineNumber));return o.sort(cEn(qh(s=>s.range.endLineNumber-s.range.startLineNumber,T0))),o.map(s=>({name:s.name,kind:s.kind,startLineNumber:s.range.startLineNumber}))}};Eze=KLo([w_t(1,Nn),w_t(2,ore)],Eze);P1e.setBreadcrumbsSourceFactory((e,t)=>t.createInstance(Eze,e));var JLo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Gxe=function(e,t){return function(n,r){t(n,r,e)}},eW;let lke=(eW=class extends ft{constructor(t,n,r,o){super();const s=this._register(hl(t)),a=this._register(o.createMenu(Wn.EditorContent,t.contextKeyService)),l=Ko(this,a.onDidChange,()=>a.getActions().length===0);this._register(Oi(d=>{if(l.read(d))return;const h=wo("div.floating-menu-overlay-widget");h.root.style.height="28px";const g=n.createInstance(RJ,h.root,Wn.EditorContent,{actionViewItemProvider:(m,v)=>{if(!(m instanceof i2))return;const f=r.lookupKeybinding(m.id);if(f)return n.createInstance(class extends D6{updateLabel(){this.options.label&&this.label&&(this.label.textContent=`${this._commandAction.label} (${f.getLabel()})`)}},m,{...v,keybindingNotRenderedWithLabel:!0})},hiddenItemStrategy:0,menuOptions:{shouldForwardArgs:!0},telemetrySource:"editor.overlayToolbar",toolbarOptions:{primaryGroup:()=>!0,useSeparatorsInPrimaryActions:!0}});d.store.add(g),d.store.add(Oi(m=>{const v=s.model.read(m);g.context=v==null?void 0:v.uri})),d.store.add(s.createOverlayWidget({allowEditorOverflow:!1,domNode:h.root,minContentWidthInPx:ca(0),position:ca({preference:1})}))}))}},eW.ID="editor.contrib.floatingToolbar",eW);lke=JLo([Gxe(1,Yn),Gxe(2,Do),Gxe(3,wA)],lke);mo(lke.ID,lke,1);var Tze;(function(e){e.inspectTokensAction=U(786,"Developer: Inspect Tokens")})(Tze||(Tze={}));var cke;(function(e){e.gotoLineActionLabel=U(787,"Go to Line/Column...")})(cke||(cke={}));var Qze;(function(e){e.helpQuickAccessActionLabel=U(788,"Show all Quick Access Providers")})(Qze||(Qze={}));var dke;(function(e){e.quickCommandActionLabel=U(789,"Command Palette"),e.quickCommandHelp=U(790,"Show And Run Commands")})(dke||(dke={}));var mee;(function(e){e.quickOutlineActionLabel=U(791,"Go to Symbol..."),e.quickOutlineByCategoryActionLabel=U(792,"Go to Symbol by Category...")})(mee||(mee={}));var Dze;(function(e){e.editorViewAccessibleLabel=U(793,"Editor content")})(Dze||(Dze={}));var Bze;(function(e){e.toggleHighContrast=U(794,"Toggle High Contrast Theme")})(Bze||(Bze={}));var Rze;(function(e){e.bulkEditServiceSummary=U(795,"Made {0} edits in {1} files")})(Rze||(Rze={}));const yat=class yat extends ft{constructor(t){super(),this.editor=t,this.widget=null,cA&&(this._register(t.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const t=!this.editor.getOption(104);!this.widget&&t?this.widget=new Ize(this.editor):this.widget&&!t&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};yat.ID="editor.contrib.iPadShowKeyboard";let uke=yat;const IAe=class IAe extends ft{constructor(t){super(),this.editor=t,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(wt(this._domNode,"touchstart",n=>{this.editor.focus()})),this._register(wt(this._domNode,"focus",n=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return IAe.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};IAe.ID="editor.contrib.ShowKeyboardWidget";let Ize=IAe;mo(uke.ID,uke,3);const L2=Cr("themeService");var exo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},O_t=function(e,t){return function(n,r){t(n,r,e)}},Mze,bB;let kee=(bB=class extends ft{static get(t){return t.getContribution(Mze.ID)}constructor(t,n,r){super(),this._editor=t,this._languageService=r,this._widget=null,this._register(this._editor.onDidChangeModel(o=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(o=>this.stop())),this._register(Hl.onDidChange(o=>this.stop())),this._register(this._editor.onKeyUp(o=>o.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new Pze(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},Mze=bB,bB.ID="editor.contrib.inspectTokens",bB);kee=Mze=exo([O_t(1,L2),O_t(2,nc)],kee);class txo extends Bn{constructor(){super({id:"editor.action.inspectTokens",label:Tze.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(t,n){const r=kee.get(n);r==null||r.launch()}}function nxo(e){let t="";for(let n=0,r=e.length;nhV,tokenize:(o,s,a)=>ttt(t,a),tokenizeEncoded:(o,s,a)=>s3e(r,a)}}const MAe=class MAe extends ft{constructor(t,n){super(),this.allowEditorOverflow=!0,this._editor=t,this._languageService=n,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=ixo(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(r=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return MAe._ID}_compute(t){const n=this._getTokensAtLine(t.lineNumber);let r=0;for(let d=n.tokens1.length-1;d>=0;d--){const u=n.tokens1[d];if(t.column-1>=u.offset){r=d;break}}let o=0;for(let d=n.tokens2.length>>>1;d>=0;d--)if(t.column-1>=n.tokens2[d<<1]){o=d;break}const s=this._model.getLineContent(t.lineNumber);let a="";if(rr.prefix.length-n.prefix.length),Hn(()=>{this.providers.splice(this.providers.indexOf(t),1),this.defaultProvider===t&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return P3([this.defaultProvider,...this.providers])}getQuickAccessProvider(t){return t&&this.providers.find(r=>t.startsWith(r.prefix))||void 0||this.defaultProvider}}Ql.add(FI.Quickaccess,new rxo);var oxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},y_t=function(e,t){return function(n,r){t(n,r,e)}},ZG,wB;let Nze=(wB=class{constructor(t,n){this.quickInputService=t,this.keybindingService=n,this.registry=Ql.as(FI.Quickaccess)}provide(t){const n=new xt;return n.add(t.onDidAccept(()=>{const[r]=t.selectedItems;r&&this.quickInputService.quickAccess.show(r.prefix,{preserveValue:!0})})),n.add(t.onDidChangeValue(r=>{const o=this.registry.getQuickAccessProvider(r.substr(ZG.PREFIX.length));o&&o.prefix&&o.prefix!==ZG.PREFIX&&this.quickInputService.quickAccess.show(o.prefix,{preserveValue:!0})})),t.items=this.getQuickAccessProviders().filter(r=>r.prefix!==ZG.PREFIX),n}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((n,r)=>n.prefix.localeCompare(r.prefix)).flatMap(n=>this.createPicks(n))}createPicks(t){return t.helpEntries.map(n=>{const r=n.prefix||t.prefix,o=r||"…";return{prefix:r,label:o,keybinding:n.commandId?this.keybindingService.lookupKeybinding(n.commandId):void 0,ariaLabel:U(1747,"{0}, {1}",o,n.description),description:n.description}})}},ZG=wB,wB.PREFIX="?",wB);Nze=ZG=oxo([y_t(0,Rf),y_t(1,Do)],Nze);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Nze,prefix:"",helpEntries:[{description:Qze.helpQuickAccessActionLabel}]});class iMn{constructor(t){this.options=t,this.rangeHighlightDecorationId=void 0}provide(t,n,r){var a;const o=new xt;t.canAcceptInBackground=!!((a=this.options)!=null&&a.canAcceptInBackground),t.matchOnLabel=t.matchOnDescription=t.matchOnDetail=t.sortByLabel=!1;const s=o.add(new ts);return s.value=this.doProvide(t,n,r),o.add(this.onDidActiveTextEditorControlChange(()=>{s.value=void 0,s.value=this.doProvide(t,n)})),o}doProvide(t,n,r){const o=new xt,s=this.activeTextEditorControl;if(s&&this.canProvideWithTextEditor(s)){const a={editor:s},l=HBn(s);if(l){let d=s.saveViewState()??void 0;o.add(l.onDidChangeCursorPosition(()=>{d=s.saveViewState()??void 0})),a.restoreViewState=()=>{d&&s===this.activeTextEditorControl&&s.restoreViewState(d)},o.add(iR(n.onCancellationRequested)(()=>{var u;return(u=a.restoreViewState)==null?void 0:u.call(a)}))}o.add(Hn(()=>this.clearDecorations(s))),o.add(this.provideWithTextEditor(a,t,n,r))}else o.add(this.provideWithoutTextEditor(t,n));return o}canProvideWithTextEditor(t){return!0}gotoLocation({editor:t},n){t.setSelection(n.range,"code.jump"),t.revealRangeInCenter(n.range,0),n.preserveFocus||t.focus();const r=t.getModel();r&&"getLineContent"in r&&A3(`${r.getLineContent(n.range.startLineNumber)}`)}getModel(t){var n;return nnt(t)?(n=t.getModel())==null?void 0:n.modified:t.getModel()}addDecorations(t,n){t.changeDecorations(r=>{const o=[];this.rangeHighlightDecorationId&&(o.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),o.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const s=[{range:n,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:n,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:zl(oTn),position:r2.Full}}}],[a,l]=r.deltaDecorations(o,s);this.rangeHighlightDecorationId={rangeHighlightId:a,overviewRulerDecorationId:l}})}clearDecorations(t){const n=this.rangeHighlightDecorationId;n&&(t.changeDecorations(r=>{r.deltaDecorations([n.overviewRulerDecorationId,n.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}const YT=class YT extends iMn{constructor(){super({canAcceptInBackground:!0})}get useZeroBasedOffset(){return this.storageService.getBoolean(YT.ZERO_BASED_OFFSET_STORAGE_KEY,-1,!1)}set useZeroBasedOffset(t){this.storageService.store(YT.ZERO_BASED_OFFSET_STORAGE_KEY,t,-1,0)}provideWithoutTextEditor(t){const n=U(1335,"Open a text editor first to go to a line.");return t.items=[{label:n}],t.ariaLabel=n,ft.None}provideWithTextEditor(t,n,r){const o=t.editor,s=new xt;s.add(n.onDidAccept(u=>{const[h]=n.selectedItems;if(h){if(!h.lineNumber)return;this.gotoLocation(t,{range:this.toRange(h.lineNumber,h.column),keyMods:n.keyMods,preserveFocus:u.inBackground}),u.inBackground||n.hide()}}));const a=()=>{const u=n.value.trim().substring(YT.PREFIX.length),{inOffsetMode:h,lineNumber:g,column:m,label:v}=this.parsePosition(o,u);if(l.visible=!!h,n.items=[{lineNumber:g,column:m,label:v}],n.ariaLabel=v,!g){this.clearDecorations(o);return}const f=this.toRange(g,m);o.revealRangeInCenter(f,0),this.addDecorations(o,f)},l=new yL({title:U(1336,"Use Zero-Based Offset"),icon:zt.indexZero,isChecked:this.useZeroBasedOffset,inputActiveOptionBorder:en(Die),inputActiveOptionForeground:en(Bie),inputActiveOptionBackground:en(eH)});s.add(l.onChange(()=>{this.useZeroBasedOffset=!this.useZeroBasedOffset,a()})),n.toggles=[l],a(),s.add(n.onDidChangeValue(()=>a()));const d=HBn(o);return d&&d.getOptions().get(76).renderType===2&&(d.updateOptions({lineNumbers:"on"}),s.add(Hn(()=>d.updateOptions({lineNumbers:"relative"})))),s}toRange(t=1,n=1){return{startLineNumber:t,startColumn:n,endLineNumber:t,endColumn:n}}parsePosition(t,n){var o,s;const r=this.getModel(t);if(!r)return{label:U(1337,"Open a text editor first to go to a line.")};if(n.startsWith(":")){let a=parseInt(n.substring(1),10);const l=r.getValueLength();if(isNaN(a))return{inOffsetMode:!0,label:this.useZeroBasedOffset?U(1338,"Type a character position to go to (from 0 to {0}).",l-1):U(1339,"Type a character position to go to (from 1 to {0}).",l)};{const d=a<0;this.useZeroBasedOffset||(a-=Math.sign(a)),d&&(a+=l);const u=r.getPositionAt(a);return{...u,inOffsetMode:!0,label:U(1340,"Press 'Enter' to go to line {0} at column {1}.",u.lineNumber,u.column)}}}else{const a=n.split(/,|:|#/),l=r.getLineCount();let d=parseInt((o=a[0])==null?void 0:o.trim(),10);if(a.length<1||isNaN(d))return{label:U(1341,"Type a line number to go to (from 1 to {0}).",l)};d=d>=0?d:l+1+d,d=Math.min(Math.max(1,d),l);const u=r.getLineMaxColumn(d);let h=parseInt((s=a[1])==null?void 0:s.trim(),10);return a.length<2||isNaN(h)?{lineNumber:d,column:1,label:a.length<2?U(1342,"Press 'Enter' to go to line {0} or enter : to add a column number.",d):U(1343,"Press 'Enter' to go to line {0} or enter a column number (from 1 to {1}).",d,u)}:(h=h>=0?h:u+h,h=Math.min(Math.max(1,h),u),{lineNumber:d,column:h,label:U(1344,"Press 'Enter' to go to line {0} at column {1}.",d,h)})}}};YT.PREFIX=":",YT.ZERO_BASED_OFFSET_STORAGE_KEY="gotoLine.useZeroBasedOffset";let Uze=YT;var sxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},C_t=function(e,t){return function(n,r){t(n,r,e)}};let vee=class extends Uze{constructor(t,n){super(),this.editorService=t,this.storageService=n,this.onDidActiveTextEditorControlChange=an.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};vee=sxo([C_t(0,yo),C_t(1,Bg)],vee);var OB;let rMn=(OB=class extends Bn{constructor(){super({id:OB.ID,label:cke.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:2085,mac:{primary:293},weight:100}})}run(t){t.get(Rf).quickAccess.show(vee.PREFIX)}},OB.ID="editor.action.gotoLine",OB);un(rMn);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:vee,prefix:vee.PREFIX,helpEntries:[{description:cke.gotoLineActionLabel,commandId:rMn.ID}]});const oMn=[void 0,[]];function Yxe(e,t,n=0,r=0){const o=t;return o.values&&o.values.length>1?axo(e,o.values,n,r):sMn(e,t,n,r)}function axo(e,t,n,r){let o=0;const s=[];for(const a of t){const[l,d]=sMn(e,a,n,r);if(typeof l!="number")return oMn;o+=l,s.push(...d)}return[o,lxo(s)]}function sMn(e,t,n,r){const o=kR(t.original,t.originalLowercase,n,e,e.toLowerCase(),r,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return o?[o[0],Uie(o)]:oMn}function lxo(e){const t=e.sort((o,s)=>o.start-s.start),n=[];let r;for(const o of t)!r||!cxo(r,o)?(r=o,n.push(o)):(r.start=Math.min(r.start,o.start),r.end=Math.max(r.end,o.end));return n}function cxo(e,t){return!(e.end=0,a=__t(e);let l;const d=e.split(aMn);if(d.length>1)for(const u of d){const h=__t(u),{pathNormalized:g,normalized:m,normalizedLowercase:v}=S_t(u);m&&(l||(l=[]),l.push({original:u,originalLowercase:u.toLowerCase(),pathNormalized:g,normalized:m,normalizedLowercase:v,expectContiguousMatch:h}))}return{original:e,originalLowercase:t,pathNormalized:n,normalized:r,normalizedLowercase:o,values:l,containsPathSeparator:s,expectContiguousMatch:a}}function S_t(e){let t;mh?t=e.replace(/\//g,o3):t=e.replace(/\\/g,o3);const n=t.replace(/[\*\u2026\s"]/g,"");return{pathNormalized:t,normalized:n,normalizedLowercase:n.toLowerCase()}}function L_t(e){return Array.isArray(e)?jze(e.map(t=>t.original).join(aMn)):jze(e.original)}var dxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},x_t=function(e,t){return function(n,r){t(n,r,e)}},Ehe,Wb;let bD=(Wb=class extends iMn{constructor(t,n,r=Object.create(null)){super(r),this._languageFeaturesService=t,this._outlineModelService=n,this.options=r,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(t){return this.provideLabelPick(t,U(1345,"To go to a symbol, first open a text editor with symbol information.")),ft.None}provideWithTextEditor(t,n,r,o){const s=t.editor,a=this.getModel(s);return a?this._languageFeaturesService.documentSymbolProvider.has(a)?this.doProvideWithEditorSymbols(t,a,n,r,o):this.doProvideWithoutEditorSymbols(t,a,n,r):ft.None}doProvideWithoutEditorSymbols(t,n,r,o){const s=new xt;return this.provideLabelPick(r,U(1346,"The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(n,s)||o.isCancellationRequested||s.add(this.doProvideWithEditorSymbols(t,n,r,o)))(),s}provideLabelPick(t,n){t.items=[{label:n,index:0,kind:14}],t.ariaLabel=n}async waitForLanguageSymbolRegistry(t,n){if(this._languageFeaturesService.documentSymbolProvider.has(t))return!0;const r=new pI,o=n.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(t)&&(o.dispose(),r.complete(!0))}));return n.add(Hn(()=>r.complete(!1))),r.p}doProvideWithEditorSymbols(t,n,r,o,s){var g;const a=t.editor,l=new xt;l.add(r.onDidAccept(m=>{var f;const[v]=r.selectedItems;v&&v.range&&(this.gotoLocation(t,{range:v.range.selection,keyMods:r.keyMods,preserveFocus:m.inBackground}),(f=s==null?void 0:s.handleAccept)==null||f.call(s,v,m.inBackground),m.inBackground||r.hide())})),l.add(r.onDidTriggerItemButton(({item:m})=>{m&&m.range&&(this.gotoLocation(t,{range:m.range.selection,keyMods:r.keyMods,forceSideBySide:!0}),r.hide())}));const d=this.getDocumentSymbols(n,o),u=l.add(new ts),h=async m=>{var v;(v=u==null?void 0:u.value)==null||v.cancel(),r.busy=!1,u.value=new ja,r.busy=!0;try{const f=jze(r.value.substr(Ehe.PREFIX.length).trim()),k=await this.doGetSymbolPicks(d,f,void 0,u.value.token,n);if(o.isCancellationRequested)return;if(k.length>0){if(r.items=k,m&&f.original.length===0){const A=cJ(k,p=>!!(p.type!=="separator"&&p.range&&Ee.containsPosition(p.range.decoration,m)));A&&(r.activeItems=[A])}}else f.original.length>0?this.provideLabelPick(r,U(1347,"No matching editor symbols")):this.provideLabelPick(r,U(1348,"No editor symbols"))}finally{o.isCancellationRequested||(r.busy=!1)}};return l.add(r.onDidChangeValue(()=>h(void 0))),h((g=a.getSelection())==null?void 0:g.getPosition()),l.add(r.onDidChangeActive(()=>{const[m]=r.activeItems;m&&m.range&&(a.revealRangeInCenter(m.range.selection,0),this.addDecorations(a,m.range.decoration))})),l}async doGetSymbolPicks(t,n,r,o,s){var A,p;const a=await t;if(o.isCancellationRequested)return[];const l=n.original.indexOf(Ehe.SCOPE_PREFIX)===0,d=l?1:0;let u,h;n.values&&n.values.length>1?(u=L_t(n.values[0]),h=L_t(n.values.slice(1))):u=n;let g;const m=(p=(A=this.options)==null?void 0:A.openSideBySideDirection)==null?void 0:p.call(A);m&&(g=[{iconClass:m==="right"?fi.asClassName(zt.splitHorizontal):fi.asClassName(zt.splitVertical),tooltip:m==="right"?U(1349,"Open to the Side"):U(1350,"Open to the Bottom")}]);const v=[];for(let b=0;bd){let P=!1;if(u!==n&&([S,L]=Yxe(y,{...n,values:void 0},d,C),typeof S=="number"&&(P=!0)),typeof S!="number"&&([S,L]=Yxe(y,u,d,C),typeof S!="number"))continue;if(!P&&h){if(_&&h.original.length>0&&([E,T]=Yxe(_,h)),typeof E!="number")continue;typeof S=="number"&&(S+=E)}}const D=w.tags&&w.tags.indexOf(1)>=0;v.push({index:b,kind:w.kind,score:S,label:y,ariaLabel:Rco(w.name,w.kind),description:_,highlights:D?void 0:{label:L,description:T},range:{selection:Ee.collapseToStart(w.selectionRange),decoration:w.range},uri:s.uri,symbolName:O,strikethrough:D,buttons:g})}const f=v.sort((b,w)=>l?this.compareByKindAndScore(b,w):this.compareByScore(b,w));let k=[];if(l){let y=function(){w&&typeof b=="number"&&O>0&&(w.label=oR(qxe[b]||Zxe,O))},b,w,O=0;for(const C of f)b!==C.kind?(y(),b=C.kind,O=1,w={type:"separator"},k.push(w)):O++,k.push(C);y()}else f.length>0&&(k=[{label:U(1351,"symbols ({0})",v.length),type:"separator"},...f]);return k}compareByScore(t,n){if(typeof t.score!="number"&&typeof n.score=="number")return 1;if(typeof t.score=="number"&&typeof n.score!="number")return-1;if(typeof t.score=="number"&&typeof n.score=="number"){if(t.score>n.score)return-1;if(t.scoren.index?1:0}compareByKindAndScore(t,n){const r=qxe[t.kind]||Zxe,o=qxe[n.kind]||Zxe,s=r.localeCompare(o);return s===0?this.compareByScore(t,n):s}async getDocumentSymbols(t,n){const r=await this._outlineModelService.getOrCreate(t,n);return n.isCancellationRequested?[]:r.asListOfDocumentSymbols()}},Ehe=Wb,Wb.PREFIX="@",Wb.SCOPE_PREFIX=":",Wb.PREFIX_BY_CATEGORY=`${Wb.PREFIX}${Wb.SCOPE_PREFIX}`,Wb);bD=Ehe=dxo([x_t(0,Nn),x_t(1,ore)],bD);const Zxe=U(1352,"properties ({0})"),qxe={5:U(1353,"methods ({0})"),11:U(1354,"functions ({0})"),8:U(1355,"constructors ({0})"),12:U(1356,"variables ({0})"),4:U(1357,"classes ({0})"),22:U(1358,"structs ({0})"),23:U(1359,"events ({0})"),24:U(1360,"operators ({0})"),10:U(1361,"interfaces ({0})"),2:U(1362,"namespaces ({0})"),3:U(1363,"packages ({0})"),25:U(1364,"type parameters ({0})"),1:U(1365,"modules ({0})"),6:U(1366,"properties ({0})"),9:U(1367,"enumerations ({0})"),21:U(1368,"enumeration members ({0})"),14:U(1369,"strings ({0})"),0:U(1370,"files ({0})"),17:U(1371,"arrays ({0})"),15:U(1372,"numbers ({0})"),16:U(1373,"booleans ({0})"),18:U(1374,"objects ({0})"),19:U(1375,"keys ({0})"),7:U(1376,"fields ({0})"),13:U(1377,"constants ({0})")};var uxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Kxe=function(e,t){return function(n,r){t(n,r,e)}};let Wze=class extends bD{constructor(t,n,r){super(n,r),this.editorService=t,this.onDidActiveTextEditorControlChange=an.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};Wze=uxo([Kxe(0,yo),Kxe(1,Nn),Kxe(2,ore)],Wze);const PAe=class PAe extends Bn{constructor(){super({id:PAe.ID,label:mee.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:$e.hasDocumentSymbolProvider,kbOpts:{kbExpr:$e.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(t){t.get(Rf).quickAccess.show(bD.PREFIX,{itemActivation:Qb.NONE})}};PAe.ID="editor.action.quickOutline";let hke=PAe;un(hke);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Wze,prefix:bD.PREFIX,helpEntries:[{description:mee.quickOutlineActionLabel,prefix:bD.PREFIX,commandId:hke.ID},{description:mee.quickOutlineByCategoryActionLabel,prefix:bD.PREFIX_BY_CATEGORY}]});function hxo(e){const t=new Map;for(const n of e)t.set(n,(t.get(n)??0)+1);return t}class HZ{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(t,n){const r=this.computeEmbedding(t),o=new Map,s=[];for(const[a,l]of this.documents){if(n.isCancellationRequested)return[];for(const d of l.chunks){const u=this.computeSimilarityScore(d,r,o);u>0&&s.push({key:a,score:u})}}return s}static termFrequencies(t){return hxo(HZ.splitTerms(t))}static*splitTerms(t){const n=r=>r.toLowerCase();for(const[r]of t.matchAll(new RegExp("\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b","gu"))){yield n(r);const o=r.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(o.length>1)for(const s of o)s.length>2&&new RegExp("\\p{Letter}{3,}","gu").test(s)&&(yield n(s))}}updateDocuments(t){for(const{key:n}of t)this.deleteDocument(n);for(const n of t){const r=[];for(const o of n.textChunks){const s=HZ.termFrequencies(o);for(const a of s.keys())this.chunkOccurrences.set(a,(this.chunkOccurrences.get(a)??0)+1);r.push({text:o,tf:s})}this.chunkCount+=r.length,this.documents.set(n.key,{chunks:r})}return this}deleteDocument(t){const n=this.documents.get(t);if(n){this.documents.delete(t),this.chunkCount-=n.chunks.length;for(const r of n.chunks)for(const o of r.tf.keys()){const s=this.chunkOccurrences.get(o);if(typeof s=="number"){const a=s-1;a<=0?this.chunkOccurrences.delete(o):this.chunkOccurrences.set(o,a)}}}}computeSimilarityScore(t,n,r){let o=0;for(const[s,a]of Object.entries(n)){const l=t.tf.get(s);if(!l)continue;let d=r.get(s);typeof d!="number"&&(d=this.computeIdf(s),r.set(s,d));const u=l*d;o+=u*a}return o}computeEmbedding(t){const n=HZ.termFrequencies(t);return this.computeTfidf(n)}computeIdf(t){const n=this.chunkOccurrences.get(t)??0;return n>0?Math.log((this.chunkCount+1)/n):0}computeTfidf(t){const n=Object.create(null);for(const[r,o]of t){const s=this.computeIdf(r);s>0&&(n[r]=o*s)}return n}}function fxo(e){var r;const t=e.slice(0);t.sort((o,s)=>s.score-o.score);const n=((r=t[0])==null?void 0:r.score)??0;if(n>0)for(const o of t)o.score/=n;return t}var LN;(function(e){e[e.NO_ACTION=0]="NO_ACTION",e[e.CLOSE_PICKER=1]="CLOSE_PICKER",e[e.REFRESH_PICKER=2]="REFRESH_PICKER",e[e.REMOVE_ITEM=3]="REMOVE_ITEM"})(LN||(LN={}));function Jxe(e){const t=e;return Array.isArray(t.items)}function E_t(e){const t=e;return!!t.picks&&t.additionalPicks instanceof Promise}class gxo extends ft{constructor(t,n){super(),this.prefix=t,this.options=n}provide(t,n,r){var u;const o=new xt;t.canAcceptInBackground=!!((u=this.options)!=null&&u.canAcceptInBackground),t.matchOnLabel=t.matchOnDescription=t.matchOnDetail=t.sortByLabel=!1;let s;const a=o.add(new ts),l=async()=>{var A;s==null||s.dispose(!0),t.busy=!1;const h=a.value=new xt;s=h.add(new ja(n));const g=s.token;let m=t.value.substring(this.prefix.length);(A=this.options)!=null&&A.shouldSkipTrimPickFilter||(m=m.trim());const v=this._getPicks(m,h,g,r),f=(p,b)=>{var y;let w,O;if(Jxe(p)?(w=p.items,O=p.active):w=p,w.length===0){if(b)return!1;(m.length>0||t.hideInput)&&((y=this.options)!=null&&y.noResultsPick)&&(tR(this.options.noResultsPick)?w=[this.options.noResultsPick(m)]:w=[this.options.noResultsPick])}return t.items=w,O&&(t.activeItems=[O]),!0},k=async p=>{let b=!1,w=!1;await Promise.all([(async()=>{typeof p.mergeDelay=="number"&&(await Cy(p.mergeDelay),g.isCancellationRequested)||w||(b=f(p.picks,!0))})(),(async()=>{t.busy=!0;try{const O=await p.additionalPicks;if(g.isCancellationRequested)return;let y,C;Jxe(p.picks)?(y=p.picks.items,C=p.picks.active):y=p.picks;let _,S;if(Jxe(O)?(_=O.items,S=O.active):_=O,_.length>0||!b){let L;if(!C&&!S){const E=t.activeItems[0];E&&y.indexOf(E)!==-1&&(L=E)}f({items:[...y,..._],active:C||S||L})}}finally{g.isCancellationRequested||(t.busy=!1),w=!0}})()])};if(v!==null)if(E_t(v))await k(v);else if(!(v instanceof Promise))f(v);else{t.busy=!0;try{const p=await v;if(g.isCancellationRequested)return;E_t(p)?await k(p):f(p)}finally{g.isCancellationRequested||(t.busy=!1)}}};o.add(t.onDidChangeValue(()=>l())),l(),o.add(t.onDidAccept(h=>{var m;if(r!=null&&r.handleAccept){h.inBackground||t.hide(),(m=r.handleAccept)==null||m.call(r,t.activeItems[0],h.inBackground);return}const[g]=t.selectedItems;typeof(g==null?void 0:g.accept)=="function"&&(h.inBackground||t.hide(),g.accept(t.keyMods,h))}));const d=async(h,g)=>{var v;if(typeof g.trigger!="function")return;const m=((v=g.buttons)==null?void 0:v.indexOf(h))??-1;if(m>=0){const f=g.trigger(m,t.keyMods),k=typeof f=="number"?f:await f;if(n.isCancellationRequested)return;switch(k){case LN.NO_ACTION:break;case LN.CLOSE_PICKER:t.hide();break;case LN.REFRESH_PICKER:l();break;case LN.REMOVE_ITEM:{const A=t.items.indexOf(g);if(A!==-1){const p=t.items.slice(),b=p.splice(A,1),w=t.activeItems.filter(y=>y!==b[0]),O=t.keepScrollPosition;t.keepScrollPosition=!0,t.items=p,w&&(t.activeItems=w),t.keepScrollPosition=O}break}}}};return o.add(t.onDidTriggerItemButton(({button:h,item:g})=>d(h,g))),o.add(t.onDidTriggerSeparatorButton(({button:h,separator:g})=>d(h,g))),o}}new wp(1e4);const mxo=new wp(1e4);function kxo(e){return Axo(e,"NFD",mxo)}const vxo=/[^\u0000-\u0080]/;function Axo(e,t,n){if(!e)return e;const r=n.get(e);if(r)return r;let o;return vxo.test(e)?o=e.normalize(t):o=e,n.set(e,o),o}const pxo=function(){const e=/[\u0300-\u036f]/g;return function(t){return kxo(t).replace(e,"")}}();var lMn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},B5=function(e,t){return function(n,r){t(n,r,e)}},eT,hd,FO;let Vze=(FO=class extends gxo{constructor(t,n,r,o,s,a){super(eT.PREFIX,t),this.keybindingService=r,this.commandService=o,this.telemetryService=s,this.dialogService=a,this.commandsHistory=this._register(n.createInstance(zze)),this.options=t}async _getPicks(t,n,r,o){var f,k;const s=await this.getCommandPicks(r);if(r.isCancellationRequested)return[];const a=iR(()=>{const A=new HZ;A.updateDocuments(s.map(b=>({key:b.commandId,textChunks:[this.getTfIdfChunk(b)]})));const p=A.calculateScores(t,r);return fxo(p).filter(b=>b.score>eT.TFIDF_THRESHOLD).slice(0,eT.TFIDF_MAX_RESULTS)}),l=this.normalizeForFiltering(t),d=[];for(const A of s){A.labelNoAccents??(A.labelNoAccents=this.normalizeForFiltering(A.label));const p=eT.WORD_FILTER(l,A.labelNoAccents)??void 0;let b;if(A.commandAlias&&(A.aliasNoAccents??(A.aliasNoAccents=this.normalizeForFiltering(A.commandAlias)),b=eT.WORD_FILTER(l,A.aliasNoAccents)??void 0),p||b)A.highlights={label:p,detail:this.options.showAlias?b:void 0},d.push(A);else if(t===A.commandId)d.push(A);else if(t.length>=3){const w=a();if(r.isCancellationRequested)return[];const O=w.find(y=>y.key===A.commandId);O&&(A.tfIdfScore=O.score,d.push(A))}}const u=new Map;for(const A of d){const p=u.get(A.label);p?(A.description=A.commandId,p.description=p.commandId):u.set(A.label,A)}d.sort((A,p)=>{if(A.tfIdfScore&&p.tfIdfScore)return A.tfIdfScore===p.tfIdfScore?A.label.localeCompare(p.label):p.tfIdfScore-A.tfIdfScore;if(A.tfIdfScore)return 1;if(p.tfIdfScore)return-1;const b=this.commandsHistory.peek(A.commandId),w=this.commandsHistory.peek(p.commandId);if(b&&w)return b>w?-1:1;if(b)return-1;if(w)return 1;if(this.options.suggestedCommandIds){const C=this.options.suggestedCommandIds.has(A.commandId),_=this.options.suggestedCommandIds.has(p.commandId);if(C&&_)return 0;if(C)return-1;if(_)return 1}const O=A.commandCategory===mze.Developer.value,y=p.commandCategory===mze.Developer.value;return O&&!y?1:!O&&y?-1:A.label.localeCompare(p.label)});const h=[];let g=!1,m=!0,v=!!this.options.suggestedCommandIds;for(let A=0;A{var b;const A=await this.getAdditionalCommandPicks(s,d,t,r);if(r.isCancellationRequested)return[];const p=A.map(w=>this.toCommandPick(w,o));return m&&((b=p[0])==null?void 0:b.type)!=="separator"&&p.unshift({type:"separator",label:U(1744,"similar commands")}),p})()}:h}toCommandPick(t,n){if(t.type==="separator")return t;const r=this.keybindingService.lookupKeybinding(t.commandId),o=r?U(1745,"{0}, {1}",t.label,r.getAriaLabel()):t.label;return{...t,ariaLabel:o,detail:this.options.showAlias&&t.commandAlias!==t.label?t.commandAlias:void 0,keybinding:r,accept:async()=>{var s;this.commandsHistory.push(t.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:t.commandId,from:(n==null?void 0:n.from)??"quick open"});try{(s=t.args)!=null&&s.length?await this.commandService.executeCommand(t.commandId,...t.args):await this.commandService.executeCommand(t.commandId)}catch(a){C2(a)||this.dialogService.error(U(1746,"Command '{0}' resulted in an error",t.label),H1e(a))}}}}getTfIdfChunk({label:t,commandAlias:n,commandDescription:r}){let o=t;return n&&n!==t&&(o+=` - ${n}`),r&&r.value!==t&&(o+=` - ${r.value===r.original?r.value:`${r.value} (${r.original})`}`),o}normalizeForFiltering(t){const n=pxo(t);return n.length!==t.length?(this.telemetryService.publicLog2("QuickAccess:FilterLengthMismatch",{originalLength:t.length,normalizedLength:n.length}),t):n}},eT=FO,FO.PREFIX=">",FO.TFIDF_THRESHOLD=.5,FO.TFIDF_MAX_RESULTS=5,FO.WORD_FILTER=ctt(_J,Igo,hQn),FO);Vze=eT=lMn([B5(1,Yn),B5(2,Do),B5(3,ba),B5(4,Nf),B5(5,are)],Vze);var Vb;let zze=(Vb=class extends ft{constructor(t,n,r){super(),this.storageService=t,this.configurationService=n,this.logService=r,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(t=>this.updateConfiguration(t))),this._register(this.storageService.onWillSaveState(t=>{t.reason===F9.SHUTDOWN&&this.saveState()}))}updateConfiguration(t){t&&!t.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=hd.getConfiguredCommandHistoryLength(this.configurationService),hd.cache&&hd.cache.limit!==this.configuredCommandsHistoryLength&&(hd.cache.limit=this.configuredCommandsHistoryLength,hd.hasChanges=!0))}load(){const t=this.storageService.get(hd.PREF_KEY_CACHE,0);let n;if(t)try{n=JSON.parse(t)}catch(o){this.logService.error(`[CommandsHistory] invalid data: ${o}`)}const r=hd.cache=new wp(this.configuredCommandsHistoryLength,1);if(n){let o;n.usesLRU?o=n.entries:o=n.entries.sort((s,a)=>s.value-a.value),o.forEach(s=>r.set(s.key,s.value))}hd.counter=this.storageService.getNumber(hd.PREF_KEY_COUNTER,0,hd.counter)}push(t){hd.cache&&(hd.cache.set(t,hd.counter++),hd.hasChanges=!0)}peek(t){var n;return(n=hd.cache)==null?void 0:n.peek(t)}saveState(){if(!hd.cache||!hd.hasChanges)return;const t={usesLRU:!0,entries:[]};hd.cache.forEach((n,r)=>t.entries.push({key:r,value:n})),this.storageService.store(hd.PREF_KEY_CACHE,JSON.stringify(t),0,0),this.storageService.store(hd.PREF_KEY_COUNTER,hd.counter,0,0),hd.hasChanges=!1}static getConfiguredCommandHistoryLength(t){var o,s;const r=(s=(o=t.getValue().workbench)==null?void 0:o.commandPalette)==null?void 0:s.history;return typeof r=="number"?r:hd.DEFAULT_COMMANDS_HISTORY_LENGTH}},hd=Vb,Vb.DEFAULT_COMMANDS_HISTORY_LENGTH=50,Vb.PREF_KEY_CACHE="commandPalette.mru.cache",Vb.PREF_KEY_COUNTER="commandPalette.mru.counter",Vb.counter=1,Vb.hasChanges=!1,Vb);zze=hd=lMn([B5(0,Bg),B5(1,ar),B5(2,va)],zze);class bxo extends Vze{constructor(t,n,r,o,s,a){super(t,n,r,o,s,a)}getCodeEditorCommandPicks(){var r;const t=this.activeTextEditorControl;if(!t)return[];const n=[];for(const o of t.getSupportedActions()){let s;(r=o.metadata)!=null&&r.description&&(Oko(o.metadata.description)?s=o.metadata.description:s={original:o.metadata.description,value:o.metadata.description}),n.push({commandId:o.id,commandAlias:o.alias,commandDescription:s,label:mtt(o.label)||o.id})}return n}}var wxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},NP=function(e,t){return function(n,r){t(n,r,e)}};let Aee=class extends bxo{get activeTextEditorControl(){return this.codeEditorService.getFocusedCodeEditor()??void 0}constructor(t,n,r,o,s,a){super({showAlias:!1},t,r,o,s,a),this.codeEditorService=n}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};Aee=wxo([NP(0,Yn),NP(1,yo),NP(2,Do),NP(3,ba),NP(4,Nf),NP(5,are)],Aee);const FAe=class FAe extends Bn{constructor(){super({id:FAe.ID,label:dke.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:$e.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(t){t.get(Rf).quickAccess.show(Aee.PREFIX)}};FAe.ID="editor.action.quickCommand";let fke=FAe;un(fke);Ql.as(FI.Quickaccess).registerQuickAccessProvider({ctor:Aee,prefix:Aee.PREFIX,helpEntries:[{description:dke.quickCommandHelp,commandId:fke.ID}]});var Oxo=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},UP=function(e,t){return function(n,r){t(n,r,e)}};let Hze=class extends QR{constructor(t,n,r,o,s,a,l){super(!0,t,n,r,o,s,a,l)}};Hze=Oxo([UP(1,Qi),UP(2,yo),UP(3,ic),UP(4,Yn),UP(5,Bg),UP(6,ar)],Hze);mo(QR.ID,Hze,4);class yxo{constructor(t,n,r,o,s){this._parsedThemeRuleBrand=void 0,this.token=t,this.index=n,this.fontStyle=r,this.foreground=o,this.background=s}}function Cxo(e){if(!e||!Array.isArray(e))return[];const t=[];let n=0;for(let r=0,o=e.length;r{const m=Txo(h.token,g.token);return m!==0?m:h.index-g.index});let n=0,r="000000",o="ffffff";for(;e.length>=1&&e[0].token==="";){const h=e.shift();h.fontStyle!==-1&&(n=h.fontStyle),h.foreground!==null&&(r=h.foreground),h.background!==null&&(o=h.background)}const s=new Lxo;for(const h of t)s.getId(h);const a=s.getId(r),l=s.getId(o),d=new rit(n,a,l),u=new oit(d);for(let h=0,g=e.length;h"u"){const o=this._match(n),s=Exo(n);r=(o.metadata|s<<8)>>>0,this._cache.set(n,r)}return(r|t<<0)>>>0}}const xxo=/\b(comment|string|regex|regexp)\b/;function Exo(e){const t=e.match(xxo);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 Txo(e,t){return et?1:0}class rit{constructor(t,n,r){this._themeTrieElementRuleBrand=void 0,this._fontStyle=t,this._foreground=n,this._background=r,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new rit(this._fontStyle,this._foreground,this._background)}acceptOverwrite(t,n,r){t!==-1&&(this._fontStyle=t),n!==0&&(this._foreground=n),r!==0&&(this._background=r),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class oit{constructor(t){this._themeTrieElementBrand=void 0,this._mainRule=t,this._children=new Map}match(t){if(t==="")return this._mainRule;const n=t.indexOf(".");let r,o;n===-1?(r=t,o=""):(r=t.substring(0,n),o=t.substring(n+1));const s=this._children.get(r);return typeof s<"u"?s.match(o):this._mainRule}insert(t,n,r,o){if(t===""){this._mainRule.acceptOverwrite(n,r,o);return}const s=t.indexOf(".");let a,l;s===-1?(a=t,l=""):(a=t.substring(0,s),l=t.substring(s+1));let d=this._children.get(a);typeof d>"u"&&(d=new oit(this._mainRule.clone()),this._children.set(a,d)),d.insert(l,n,r,o)}}function Qxo(e){const t=[];for(let n=1,r=e.length;nn.fire())),e&&t.add(e.onDidProductIconThemeChange(()=>n.fire())),{dispose:()=>t.dispose(),onDidChange:n.event,getCSS(){const o=e?e.getProductIconTheme():new dMn,s={},a=new PLe,l=new PLe;for(const d of r.getIcons()){const u=o.getIcon(d);if(!u)continue;const h=u.font,g=$1`--vscode-icon-${Qle(d.id)}-font-family`,m=$1`--vscode-icon-${Qle(d.id)}-content`;h?(s[h.id]=h.definition,l.push($1`${g}: ${mx(h.id)};`,$1`${m}: ${mx(u.fontCharacter)};`),a.push($1`.codicon-${Qle(d.id)}:before { content: ${mx(u.fontCharacter)}; font-family: ${mx(h.id)}; }`)):(l.push($1`${m}: ${mx(u.fontCharacter)}; ${g}: 'codicon';`),a.push($1`.codicon-${Qle(d.id)}:before { content: ${mx(u.fontCharacter)}; }`))}for(const d in s){const u=s[d],h=u.weight?$1`font-weight: ${Fwt(u.weight)};`:$1``,g=u.style?$1`font-style: ${Fwt(u.style)};`:$1``,m=new PLe;for(const v of u.src)m.push($1`${xy(v.location)} format(${mx(v.format)})`);a.push($1`@font-face { src: ${m.join(", ")}; font-family: ${mx(d)};${h}${g} font-display: block; }`)}return a.push($1`:root { ${l.join(" ")} }`),a.join(` `)}}}class dMn{getIcon(t){const n=iDn();let r=t.defaults;for(;fi.isThemeIcon(r);){const o=n.getIcon(r.id);if(!o)return;r=o.defaults}return r}}const bS="vs",ZU="vs-dark",wD="hc-black",OD="hc-light",uMn=Ql.as(p7n.ColorContribution),Pxo=Ql.as(eTn.ThemingContribution);class hMn{constructor(t,n){this.semanticHighlighting=!1,this.themeData=n;const r=n.base;t.length>0?(The(t)?this.id=t:this.id=r+" "+t,this.themeName=t):(this.id=r,this.themeName=r),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const t=new Map;for(const n in this.themeData.colors)t.set(n,Dt.fromHex(this.themeData.colors[n]));if(this.themeData.inherit){const n=$ze(this.themeData.base);for(const r in n.colors)t.has(r)||t.set(r,Dt.fromHex(n.colors[r]))}this.colors=t}return this.colors}getColor(t,n){const r=this.getColors().get(t);if(r)return r;if(n!==!1)return this.getDefault(t)}getDefault(t){let n=this.defaultColors[t];return n||(n=uMn.resolveDefaultColor(t,this),this.defaultColors[t]=n,n)}defines(t){return this.getColors().has(t)}get type(){switch(this.base){case bS:return zv.LIGHT;case wD:return zv.HIGH_CONTRAST_DARK;case OD:return zv.HIGH_CONTRAST_LIGHT;default:return zv.DARK}}get tokenTheme(){if(!this._tokenTheme){let t=[],n=[];if(this.themeData.inherit){const s=$ze(this.themeData.base);t=s.rules,s.encodedTokensColors&&(n=s.encodedTokensColors)}const r=this.themeData.colors["editor.foreground"],o=this.themeData.colors["editor.background"];if(r||o){const s={token:""};r&&(s.foreground=r),o&&(s.background=o),t.push(s)}t=t.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(n=this.themeData.encodedTokensColors),this._tokenTheme=cMn.createFromRawTokenTheme(t,n)}return this._tokenTheme}getTokenStyleMetadata(t,n,r){const s=this.tokenTheme._match([t].concat(n).join(".")).metadata,a=pf.getForeground(s),l=pf.getFontStyle(s);return{foreground:a,italic:!!(l&1),bold:!!(l&2),underline:!!(l&4),strikethrough:!!(l&8)}}get tokenColorMap(){return[]}}function The(e){return e===bS||e===ZU||e===wD||e===OD}function $ze(e){switch(e){case bS:return Dxo;case ZU:return Bxo;case wD:return Rxo;case OD:return Ixo}}function Ace(e){const t=$ze(e);return new hMn(e,t)}class Fxo extends ft{constructor(){super(),this._onColorThemeChange=this._register(new at),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new at),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new dMn,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(bS,Ace(bS)),this._knownThemes.set(ZU,Ace(ZU)),this._knownThemes.set(wD,Ace(wD)),this._knownThemes.set(OD,Ace(OD));const t=this._register(Mxo(this));this._codiconCSS=t.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS} ${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(bS),this._onOSSchemeChanged(),this._register(t.onDidChange(()=>{this._codiconCSS=t.getCSS(),this._updateCSS()})),L6n(Ls,"(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(t){return xme(t)?this._registerShadowDomContainer(t):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=mA(void 0,t=>{t.className="monaco-colors",t.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),ft.None}_registerShadowDomContainer(t){const n=mA(t,r=>{r.className="monaco-colors",r.textContent=this._allCSS});return this._styleElements.push(n),{dispose:()=>{for(let r=0;r{r.base===t&&r.notifyBaseUpdated()}),this._theme.themeName===t&&this.setTheme(t)}getColorTheme(){return this._theme}setColorMapOverride(t){this._colorMapOverride=t,this._updateThemeOrColorMap()}setTheme(t){let n;this._knownThemes.has(t)?n=this._knownThemes.get(t):n=this._knownThemes.get(bS),this._updateActualTheme(n)}_updateActualTheme(t){!t||this._theme===t||(this._theme=t,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const t=Ls.matchMedia("(forced-colors: active)").matches;if(t!==l3(this._theme.type)){let n;j8(this._theme.type)?n=t?wD:ZU:n=t?OD:bS,this._updateActualTheme(this._knownThemes.get(n))}}}setAutoDetectHighContrast(t){this._autoDetectHighContrast=t,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const t=[],n={},r={addRule:a=>{n[a]||(t.push(a),n[a]=!0)}};Pxo.getThemingParticipants().forEach(a=>a(this._theme,r,this._environment));const o=[];for(const a of uMn.getColors()){const l=this._theme.getColor(a.id,!0);l&&o.push(`${Aet(a.id)}: ${l.toString()};`)}r.addRule(`.monaco-editor, .monaco-diff-editor, .monaco-component { ${o.join(` @@ -2796,7 +2796,7 @@ ${iSt(zt.menuSubmenu)} `:`\r `}_shouldRestoreUndoStack(){const t=this._configurationService.getValue("files.restoreUndoStack");return typeof t=="boolean"?t:!0}getCreationOptions(t,n,r){const o=typeof t=="string"?t:t.languageId;let s=this._modelCreationOptionsByLanguageAndResource[o+n];if(!s){const a=this._configurationService.getValue("editor",{overrideIdentifier:o,resource:n}),l=this._getEOL(n,o);s=IF._readModelOptions({editor:a,eol:l},r),this._modelCreationOptionsByLanguageAndResource[o+n]=s}return s}_updateModelOptions(t){const n=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const r=Object.keys(this._models);for(let o=0,s=r.length;ot){const n=[];for(this._disposedModels.forEach(r=>{r.sharesUndoRedoStack||n.push(r)}),n.sort((r,o)=>r.time-o.time);n.length>0&&this._disposedModelsHeapSize>t;){const r=n.shift();this._removeDisposedModel(r.uri),r.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(r.initialUndoRedoSnapshot)}}}_createModelData(t,n,r,o){const s=this.getCreationOptions(n,r,o),a=this._instantiationService.createInstance(fR,t,n,s,r);if(r&&this._disposedModels.has(S7(r))){const u=this._removeDisposedModel(r),h=this._undoRedoService.getElements(r),g=this._getSHA1Computer(),m=g.canComputeSHA1(a)?g.computeSHA1(a)===u.sha1:!1;if(m||u.sharesUndoRedoStack){for(const v of h.past)iS(v)&&v.matchesResource(r)&&v.setModel(a);for(const v of h.future)iS(v)&&v.matchesResource(r)&&v.setModel(a);this._undoRedoService.setElementsValidFlag(r,!0,v=>iS(v)&&v.matchesResource(r)),m&&(a._overwriteVersionId(u.versionId),a._overwriteAlternativeVersionId(u.alternativeVersionId),a._overwriteInitialUndoRedoSnapshot(u.initialUndoRedoSnapshot))}else u.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(u.initialUndoRedoSnapshot)}const l=S7(a.uri);if(this._models[l])throw new Error("ModelService: Cannot add model because it already exists!");const d=new b9o(a,u=>this._onWillDispose(u),(u,h)=>this._onDidChangeLanguage(u,h));return this._models[l]=d,d}createModel(t,n,r,o=!1){let s;return n?s=this._createModelData(t,n,r,o):s=this._createModelData(t,o2,r,o),this._onModelAdded.fire(s.model),s.model}getModels(){const t=[],n=Object.keys(this._models);for(let r=0,o=n.length;r0||u.future.length>0){for(const h of u.past)iS(h)&&h.matchesResource(t.uri)&&(s=!0,a+=h.heapSize(t.uri),h.setModel(t.uri));for(const h of u.future)iS(h)&&h.matchesResource(t.uri)&&(s=!0,a+=h.heapSize(t.uri),h.setModel(t.uri))}}const l=IF.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,d=this._getSHA1Computer();if(s)if(!o&&(a>l||!d.canComputeSHA1(t))){const u=r.model.getInitialUndoRedoSnapshot();u!==null&&this._undoRedoService.restoreSnapshot(u)}else this._ensureDisposedModelsHeapSize(l-a),this._undoRedoService.setElementsValidFlag(t.uri,!1,u=>iS(u)&&u.matchesResource(t.uri)),this._insertDisposedModel(new O9o(t.uri,r.model.getInitialUndoRedoSnapshot(),Date.now(),o,a,d.computeSHA1(t),t.getVersionId(),t.getAlternativeVersionId()));else if(!o){const u=r.model.getInitialUndoRedoSnapshot();u!==null&&this._undoRedoService.restoreSnapshot(u)}delete this._models[n],r.dispose(),delete this._modelCreationOptionsByLanguageAndResource[t.getLanguageId()+t.uri],this._onModelRemoved.fire(t)}_onDidChangeLanguage(t,n){const r=n.oldLanguage,o=t.getLanguageId(),s=this.getCreationOptions(r,t.uri,t.isForSimpleWidget),a=this.getCreationOptions(o,t.uri,t.isForSimpleWidget);IF._setModelOptionsForModel(t,a,s),this._onModelModeChanged.fire({model:t,oldLanguageId:r})}_getSHA1Computer(){return new g$e}},IF=yB,yB.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,yB);f$e=IF=p9o([Lce(0,ar),Lce(1,DIn),Lce(2,rtt),Lce(3,Yn)],f$e);const zAe=class zAe{canComputeSHA1(t){return t.getValueLength()<=zAe.MAX_MODEL_SIZE}computeSHA1(t){const n=new oNe,r=t.createSnapshot();let o;for(;o=r.read();)n.update(o);return n.digest()}};zAe.MAX_MODEL_SIZE=10*1024*1024;let g$e=zAe;var y9o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},oSt=function(e,t){return function(n,r){t(n,r,e)}};let m$e=class extends ft{constructor(t,n){super(),this.quickInputService=t,this.instantiationService=n,this.registry=Ql.as(FI.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0,this._register(Hn(()=>{var r;for(const o of this.mapProviderToDescriptor.values())AI(o)&&o.dispose();(r=this.visibleQuickAccess)==null||r.picker.dispose()}))}show(t="",n){this.doShowOrPick(t,!1,n)}doShowOrPick(t,n,r){var f,k;const[o,s]=this.getOrInstantiateProvider(t,r==null?void 0:r.enabledProviderPrefixes),a=this.visibleQuickAccess,l=a==null?void 0:a.descriptor;if(a&&s&&l===s){t!==s.prefix&&!(r!=null&&r.preserveValue)&&(a.picker.value=t),this.adjustValueSelection(a.picker,s,r);return}if(s&&!(r!=null&&r.preserveValue)){let A;if(a&&l&&l!==s){const p=a.value.substr(l.prefix.length);p&&(A=`${s.prefix}${p}`)}if(!A){const p=o==null?void 0:o.defaultFilterValue;p===Fze.LAST?A=this.lastAcceptedPickerValues.get(s):typeof p=="string"&&(A=`${s.prefix}${p}`)}typeof A=="string"&&(t=A)}const d=(f=a==null?void 0:a.picker)==null?void 0:f.valueSelection,u=(k=a==null?void 0:a.picker)==null?void 0:k.value,h=new xt,g=h.add(this.quickInputService.createQuickPick({useSeparators:!0}));g.value=t,this.adjustValueSelection(g,s,r),g.placeholder=(r==null?void 0:r.placeholder)??(s==null?void 0:s.placeholder),g.quickNavigate=r==null?void 0:r.quickNavigateConfiguration,g.hideInput=!!g.quickNavigate&&!a,(typeof(r==null?void 0:r.itemActivation)=="number"||r!=null&&r.quickNavigateConfiguration)&&(g.itemActivation=(r==null?void 0:r.itemActivation)??Qb.SECOND),g.contextKey=s==null?void 0:s.contextKey,g.filterValue=A=>A.substring(s?s.prefix.length:0);let m;n&&(m=new pI,h.add(an.once(g.onWillAccept)(A=>{A.veto(),g.hide()}))),h.add(this.registerPickerListeners(g,o,s,t,r));const v=h.add(new ja);if(o&&h.add(o.provide(g,v.token,r==null?void 0:r.providerOptions)),an.once(g.onDidHide)(()=>{g.selectedItems.length===0&&v.cancel(),h.dispose(),m==null||m.complete(g.selectedItems.slice(0))}),g.show(),d&&u===t&&(g.valueSelection=d),n)return m==null?void 0:m.p}adjustValueSelection(t,n,r){let o;r!=null&&r.preserveValue?o=[t.value.length,t.value.length]:o=[(n==null?void 0:n.prefix.length)??0,t.value.length],t.valueSelection=o}registerPickerListeners(t,n,r,o,s){const a=new xt,l=this.visibleQuickAccess={picker:t,descriptor:r,value:o};return a.add(Hn(()=>{l===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),a.add(t.onDidChangeValue(d=>{const[u]=this.getOrInstantiateProvider(d,s==null?void 0:s.enabledProviderPrefixes);u!==n?this.show(d,{enabledProviderPrefixes:s==null?void 0:s.enabledProviderPrefixes,preserveValue:!0,providerOptions:s==null?void 0:s.providerOptions}):l.value=d})),r&&a.add(t.onDidAccept(()=>{this.lastAcceptedPickerValues.set(r,t.value)})),a}getOrInstantiateProvider(t,n){const r=this.registry.getQuickAccessProvider(t);if(!r||n&&!(n!=null&&n.includes(r.prefix)))return[void 0,void 0];let o=this.mapProviderToDescriptor.get(r);return o||(o=this.instantiationService.createInstance(r.ctor),this.mapProviderToDescriptor.set(r,o)),[o,r]}};m$e=y9o([oSt(0,Rf),oSt(1,Yn)],m$e);var C9o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s};class xMn{constructor(t){this.nodes=t}toString(){return this.nodes.map(t=>typeof t=="string"?t:t.label).join("")}}C9o([mc],xMn.prototype,"toString",null);const _9o=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function S9o(e){const t=[];let n=0,r;for(;r=_9o.exec(e);){r.index-n>0&&t.push(e.substring(n,r.index));const[,o,s,,a]=r;a?t.push({label:o,href:s,title:a}):t.push({label:o,href:s}),n=r.index+r[0].length}return n{Vto(v)&&Qo.stop(v,!0),n.callback(s.href)},u=n.disposables.add(new ks(l,rn.CLICK)).event,h=n.disposables.add(new ks(l,rn.KEY_DOWN)).event,g=an.chain(h,v=>v.filter(f=>{const k=new Us(f);return k.equals(10)||k.equals(3)}));n.disposables.add(Bf.addTarget(l));const m=n.disposables.add(new ks(l,ma.Tap)).event;an.any(u,m,g)(d,null,n.disposables),t.appendChild(l)}}var T9o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},sSt=function(e,t){return function(n,r){t(n,r,e)}};const EMn="inQuickInput",Q9o=new yn(EMn,!1,U(1748,"Whether keyboard focus is inside the quick input control")),Y3e=Ft.has(EMn),D9o="quickInputAlignment",B9o=new yn(D9o,"top",U(1749,"The alignment of the quick input")),Oee="quickInputType",R9o=new yn(Oee,void 0,U(1750,"The type of the currently visible quick input")),TMn="cursorAtEndOfQuickInputBox",I9o=new yn(TMn,!1,U(1751,"Whether the cursor in the quick input is at the end of the input box")),M9o=Ft.has(TMn),k$e={iconClass:fi.asClassName(zt.quickInputBack),tooltip:U(1752,"Back")},HAe=class HAe extends ft{constructor(t){super(),this.ui=t,this._visible=Ti("visible",!1),this._widgetUpdated=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._leftButtons=[],this._rightButtons=[],this._inlineButtons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=HAe.noPromptMessage,this._severity=Sl.Ignore,this.onDidTriggerButtonEmitter=this._register(new at),this.onDidHideEmitter=this._register(new at),this.onWillHideEmitter=this._register(new at),this.onDisposeEmitter=this._register(new at),this.visibleDisposables=this._register(new xt),this.onDidHide=this.onDidHideEmitter.event}get visible(){return this._visible.get()}get title(){return this._title}set title(t){this._title=t,this.update()}get description(){return this._description}set description(t){this._description=t,this.update()}get step(){return this._steps}set step(t){this._steps=t,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(t){this._totalSteps=t,this.update()}get enabled(){return this._enabled}set enabled(t){this._enabled=t,this.update()}get contextKey(){return this._contextKey}set contextKey(t){this._contextKey=t,this.update()}get busy(){return this._busy}set busy(t){this._busy=t,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(t){const n=this._ignoreFocusOut!==t&&!cA;this._ignoreFocusOut=t&&!cA,n&&this.update()}get titleButtons(){return this._leftButtons.length?[...this._leftButtons,this._rightButtons]:this._rightButtons}get buttons(){return[...this._leftButtons,...this._rightButtons,...this._inlineButtons]}set buttons(t){this._leftButtons=t.filter(n=>n===k$e),this._rightButtons=t.filter(n=>n!==k$e&&n.location!==j1e.Inline),this._inlineButtons=t.filter(n=>n.location===j1e.Inline),this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(t){this._toggles=t??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(t){this._validationMessage=t,this.update()}get severity(){return this._severity}set severity(t){this._severity=t,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(t=>{this.buttons.indexOf(t)!==-1&&this.onDidTriggerButtonEmitter.fire(t)})),this.ui.show(this),this._visible.set(!0,void 0),this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(t=MJ.Other){this._visible.set(!1,void 0),this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:t})}willHide(t=MJ.Other){this.onWillHideEmitter.fire({reason:t})}update(){var o;if(!this.visible)return;const t=this.getTitle();t&&this.ui.title.textContent!==t?this.ui.title.textContent=t:!t&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText=" ");const n=this.getDescription();if(this.ui.description1.textContent!==n&&(this.ui.description1.textContent=n),this.ui.description2.textContent!==n&&(this.ui.description2.textContent=n),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?mu(this.ui.widget,this._widget):mu(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new I0,this.busyDelay.setIfNotSet(()=>{this.visible&&(this.ui.progressBar.infinite(),this.ui.progressBar.getContainer().removeAttribute("aria-hidden"))},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.ui.progressBar.getContainer().setAttribute("aria-hidden","true"),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const s=this._leftButtons.map((d,u)=>JU(d,`id-${u}`,async()=>this.onDidTriggerButtonEmitter.fire(d)));this.ui.leftActionBar.push(s,{icon:!0,label:!1}),this.ui.rightActionBar.clear();const a=this._rightButtons.map((d,u)=>JU(d,`id-${u}`,async()=>this.onDidTriggerButtonEmitter.fire(d)));this.ui.rightActionBar.push(a,{icon:!0,label:!1}),this.ui.inlineActionBar.clear();const l=this._inlineButtons.map((d,u)=>JU(d,`id-${u}`,async()=>this.onDidTriggerButtonEmitter.fire(d)));this.ui.inlineActionBar.push(l,{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const s=((o=this.toggles)==null?void 0:o.filter(l=>l instanceof yL))??[];this.ui.inputBox.toggles=s;const a=s.length*22;this.ui.countContainer.style.right=a>0?`${4+a}px`:"4px",this.ui.visibleCountContainer.style.right=a>0?`${4+a}px`:"4px"}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const r=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==r&&(this._lastValidationMessage=r,mu(this.ui.message),r&&E9o(r,this.ui.message,{callback:s=>{this.ui.linkOpenerDelegate(s)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?U(1754,"{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(t){if(this.ui.inputBox.showDecoration(t),t!==Sl.Ignore){const n=this.ui.inputBox.stylesForType(t);this.ui.message.style.color=n.foreground?`${n.foreground}`:"",this.ui.message.style.backgroundColor=n.background?`${n.background}`:"",this.ui.message.style.border=n.border?`1px solid ${n.border}`:"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}};HAe.noPromptMessage=U(1753,"Press 'Enter' to confirm your input or 'Escape' to cancel");let yee=HAe;const $Ae=class $Ae extends yee{constructor(t){super(t),this._value="",this.onDidChangeValueEmitter=this._register(new at),this.onWillAcceptEmitter=this._register(new at),this.onDidAcceptEmitter=this._register(new at),this.onDidCustomEmitter=this._register(new at),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._keepScrollPosition=!1,this._itemActivation=Qb.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new at),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new at),this.onDidTriggerItemButtonEmitter=this._register(new at),this.onDidTriggerSeparatorButtonEmitter=this._register(new at),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this._focusEventBufferer=new Cie,this.type="quickPick",this.filterValue=n=>n,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event,this.noValidationMessage=void 0}get quickNavigate(){return this._quickNavigate}set quickNavigate(t){this._quickNavigate=t,this.update()}get value(){return this._value}set value(t){this.doSetValue(t)}doSetValue(t,n){this._value!==t&&(this._value=t,n||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(t){this._ariaLabel=t,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(t){this._placeholder=t,this.update()}get prompt(){return this.noValidationMessage}set prompt(t){this.noValidationMessage=t,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(t){this.ui.list.scrollTop=t}set items(t){this._items=t,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(t){this._canSelectMany=t,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(t){this._canAcceptInBackground=t}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(t){this._matchOnDescription=t,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(t){this._matchOnDetail=t,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(t){this._matchOnLabel=t,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(t){this._matchOnLabelMode=t,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(t){this._sortByLabel=t,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(t){this._keepScrollPosition=t}get itemActivation(){return this._itemActivation}set itemActivation(t){this._itemActivation=t}get activeItems(){return this._activeItems}set activeItems(t){this._activeItems=t,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(t){this._selectedItems=t,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?A2o:this.ui.keyMods}get valueSelection(){const t=this.ui.inputBox.getSelection();if(t)return[t.start,t.end]}set valueSelection(t){this._valueSelection=t,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(t){this._customButton=t,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(t){this._customButtonLabel=t,this.update()}get customHover(){return this._customButtonHover}set customHover(t){this._customButtonHover=t,this.update()}get ok(){return this._ok}set ok(t){this._ok=t,this.update()}get okLabel(){return this._okLabel??U(1756,"OK")}set okLabel(t){this._okLabel=t,this.update()}get hideInput(){return!!this._hideInput}set hideInput(t){this._hideInput=t,this.update()}trySelectFirst(){this.canSelectMany||this.ui.list.focus(Sa.First)}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(t=>{this.doSetValue(t,!0)})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this._focusEventBufferer.wrapEvent(this.ui.list.onDidChangeFocus,(t,n)=>n)(t=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&Na(t,this._activeItems,(n,r)=>n===r)||(this._activeItems=t,this.onDidChangeActiveEmitter.fire(t))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:t,event:n})=>{if(this.canSelectMany&&!t.some(r=>r.pickable===!1)){t.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&Na(t,this._selectedItems,(r,o)=>r===o)||(this._selectedItems=t,this.onDidChangeSelectionEmitter.fire(t),t.length&&this.handleAccept(qJe(n)&&n.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(t=>{!this.canSelectMany||!this.visible||this.selectedItemsToConfirm!==this._selectedItems&&Na(t,this._selectedItems,(n,r)=>n===r)||(this._selectedItems=t,this.onDidChangeSelectionEmitter.fire(t))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(t=>this.onDidTriggerItemButtonEmitter.fire(t))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(t=>this.onDidTriggerSeparatorButtonEmitter.fire(t))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(t){let n=!1;this.onWillAcceptEmitter.fire({veto:()=>n=!0}),n||this.onDidAcceptEmitter.fire({inBackground:t})}registerQuickNavigation(){return wt(this.ui.container,rn.KEY_UP,t=>{if(this.canSelectMany||!this._quickNavigate)return;const n=new Us(t),r=n.keyCode;this._quickNavigate.keybindings.some(a=>{const l=a.getChords();return l.length>1?!1:l[0].shiftKey&&r===4?!(n.ctrlKey||n.altKey||n.metaKey):!!(l[0].altKey&&r===6||l[0].ctrlKey&&r===5||l[0].metaKey&&r===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const t=this.keepScrollPosition?this.scrollTop:0,n=!!this.description,r={title:!!this.title||!!this.step||!!this.titleButtons.length,description:n,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||n,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage||!!this.prompt,customButton:this.customButton};this.ui.setVisibilities(r),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let o=this.ariaLabel;!o&&r.inputBox&&(o=this.placeholder,this.title&&(o=o?`${o} - ${this.title}`:this.title),o||(o=$Ae.DEFAULT_ARIA_LABEL)),this.ui.list.ariaLabel!==o&&(this.ui.list.ariaLabel=o??null),this.ui.inputBox.ariaLabel!==o&&(this.ui.inputBox.ariaLabel=o??"input"),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated&&(this.itemsUpdated=!1,this._focusEventBufferer.bufferEvents(()=>{switch(this.ui.list.setElements(this.items),this.ui.list.shouldLoop=!this.canSelectMany,this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this._itemActivation){case Qb.NONE:this._itemActivation=Qb.FIRST;break;case Qb.SECOND:this.ui.list.focus(Sa.Second),this._itemActivation=Qb.FIRST;break;case Qb.LAST:this.ui.list.focus(Sa.Last),this._itemActivation=Qb.FIRST;break;default:this.trySelectFirst();break}})),this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.ok.label=this.okLabel||"",this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",r.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Sa.First)),this.keepScrollPosition&&(this.scrollTop=t)}focus(t){this.ui.list.focus(t),this.canSelectMany&&this.ui.list.domFocus()}accept(t){t&&!this._canAcceptInBackground||(this.activeItems[0]&&!this._canSelectMany&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(t??!1))}};$Ae.DEFAULT_ARIA_LABEL=U(1755,"Type to narrow down results.");let GZ=$Ae;class P9o extends yee{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new at),this.onDidAcceptEmitter=this._register(new at),this.type="inputBox",this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(t){this._value=t||"",this.update()}get valueSelection(){const t=this.ui.inputBox.getSelection();if(t)return[t.start,t.end]}set valueSelection(t){this._valueSelection=t,this.valueSelectionUpdated=!0,this.update()}get placeholder(){return this._placeholder}set placeholder(t){this._placeholder=t,this.update()}get ariaLabel(){return this._ariaLabel}set ariaLabel(t){this._ariaLabel=t,this.update()}get password(){return this._password}set password(t){this._password=t,this.update()}get prompt(){return this._prompt}set prompt(t){this._prompt=t,this.noValidationMessage=t?U(1757,"{0} (Press 'Enter' to confirm or 'Escape' to cancel)",t):yee.noPromptMessage,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(t=>{t!==this.value&&(this._value=t,this.onDidValueChangeEmitter.fire(t))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}accept(){this.onDidAcceptEmitter.fire()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const t={title:!!this.title||!!this.step||!!this.titleButtons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(t),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password);let n=this.ariaLabel;!n&&t.inputBox&&(n=this.placeholder?this.title?`${this.placeholder} - ${this.title}`:this.placeholder:this.title?this.title:"input"),this.ui.inputBox.ariaLabel!==n&&(this.ui.inputBox.ariaLabel=n||"input")}}let v$e=class extends mV{constructor(t,n){super("mouse",void 0,r=>this.getOverrideOptions(r),t,n)}getOverrideOptions(t){const n=(ec(t.content)?t.content.textContent??"":typeof t.content=="string"?t.content:t.content.value).includes(` `);return{persistence:{hideOnKeyDown:!1},appearance:{showHoverHint:n,skipFadeInAnimation:!0}}}};v$e=T9o([sSt(0,ar),sSt(1,pm)],v$e);const aSt="done",lSt="active",a5e="infinite",l5e="infinite-long-running",cSt="discrete",XAe=class XAe extends ft{constructor(t,n){super(),this.progressSignal=this._register(new ts),this.workedVal=0,this.showDelayedScheduler=this._register(new Es(()=>k0(this.element),0)),this.longRunningScheduler=this._register(new Es(()=>this.infiniteLongRunning(),XAe.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(t,n)}create(t,n){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),t.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=(n==null?void 0:n.progressBarBackground)||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(lSt,a5e,l5e,cSt),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel(),this.progressSignal.clear()}stop(){return this.doDone(!1)}doDone(t){return this.element.classList.add(aSt),this.element.classList.contains(a5e)?(this.bit.style.opacity="0",t?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",t?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(cSt,aSt,l5e),this.element.classList.add(lSt,a5e),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(l5e)}getContainer(){return this.element}};XAe.LONG_RUNNING_INFINITE_THRESHOLD=1e4;let A$e=XAe;const F9o=tn;class N9o extends ft{constructor(t,n,r){super(),this.parent=t,this.onDidChange=s=>this.findInput.onDidChange(s),this.container=Xt(this.parent,F9o(".quick-input-box")),this.findInput=this._register(new QBn(this.container,void 0,{label:"",inputBoxStyles:n,toggleStyles:r}));const o=this.findInput.inputBox.inputElement;o.role="textbox",o.ariaHasPopup="menu",o.ariaAutoComplete="list"}get onKeyDown(){return this.findInput.onKeyDown}get value(){return this.findInput.getValue()}set value(t){this.findInput.setValue(t)}select(t=null){this.findInput.inputBox.select(t)}getSelection(){return this.findInput.inputBox.getSelection()}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(t){this.findInput.inputBox.setPlaceHolder(t)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(t){this.findInput.inputBox.inputElement.type=t?"password":"text"}set enabled(t){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!t)}set toggles(t){this.findInput.setAdditionalToggles(t)}get ariaLabel(){return this.findInput.inputBox.inputElement.getAttribute("aria-label")||""}set ariaLabel(t){this.findInput.inputBox.inputElement.setAttribute("aria-label",t)}hasFocus(){return this.findInput.inputBox.hasFocus()}setAttribute(t,n){this.findInput.inputBox.inputElement.setAttribute(t,n)}removeAttribute(t){this.findInput.inputBox.inputElement.removeAttribute(t)}showDecoration(t){t===Sl.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:t===Sl.Info?1:t===Sl.Warning?2:3,content:""})}stylesForType(t){return this.findInput.inputBox.stylesForType(t===Sl.Info?1:t===Sl.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}const dSt=new zh(()=>{const e=yI.Collator(void 0,{numeric:!0,sensitivity:"base"}).value;return{collator:e,collatorIsNumeric:e.resolvedOptions().numeric}});new zh(()=>({collator:yI.Collator(void 0,{numeric:!0}).value}));new zh(()=>({collator:yI.Collator(void 0,{numeric:!0,sensitivity:"accent"}).value}));function U9o(e,t,n=!1){const r=e||"",o=t||"",s=dSt.value.collator.compare(r,o);return dSt.value.collatorIsNumeric&&s===0&&r!==o?ro.length)return 1}return 0}var Z3e=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},p$e=function(e,t){return function(n,r){t(n,r,e)}},b$e;const Rw=tn;class QMn{constructor(t,n,r){this.index=t,this.hasCheckbox=n,this._hidden=!1,this._init=new zh(()=>{const o=r.label??"",s=hQ(o).text.trim(),a=r.ariaLabel||[o,this.saneDescription,this.saneDetail].map(l=>OQn(l)).filter(l=>!!l).join(", ");return{saneLabel:o,saneSortLabel:s,saneAriaLabel:a}}),this._saneDescription=r.description,this._saneTooltip=r.tooltip}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(t){this._element=t}get hidden(){return this._hidden}set hidden(t){this._hidden=t}get saneDescription(){return this._saneDescription}set saneDescription(t){this._saneDescription=t}get saneDetail(){return this._saneDetail}set saneDetail(t){this._saneDetail=t}get saneTooltip(){return this._saneTooltip}set saneTooltip(t){this._saneTooltip=t}get labelHighlights(){return this._labelHighlights}set labelHighlights(t){this._labelHighlights=t}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(t){this._descriptionHighlights=t}get detailHighlights(){return this._detailHighlights}set detailHighlights(t){this._detailHighlights=t}}class Ch extends QMn{constructor(t,n,r,o,s,a,l){var d,u,h;super(t,r,a),this.childIndex=n,this.fireButtonTriggered=o,this._onChecked=s,this.item=a,this._separator=l,this._checked=!1,this.onChecked=r?an.map(an.filter(this._onChecked.event,g=>g.element===this),g=>g.checked):an.None,this._saneDetail=a.detail,this._labelHighlights=(d=a.highlights)==null?void 0:d.label,this._descriptionHighlights=(u=a.highlights)==null?void 0:u.description,this._detailHighlights=(h=a.highlights)==null?void 0:h.detail}get separator(){return this._separator}set separator(t){this._separator=t}get checked(){return this._checked}set checked(t){t!==this._checked&&(this._checked=t,this._onChecked.fire({element:this,checked:t}))}get checkboxDisabled(){return!!this.item.disabled}}var qw;(function(e){e[e.NONE=0]="NONE",e[e.MOUSE_HOVER=1]="MOUSE_HOVER",e[e.ACTIVE_ITEM=2]="ACTIVE_ITEM"})(qw||(qw={}));class tT extends QMn{constructor(t,n,r){super(t,!1,r),this.fireSeparatorButtonTriggered=n,this.separator=r,this.children=new Array,this.focusInsideSeparator=qw.NONE}}class V9o{getHeight(t){return t instanceof tT?30:t.saneDetail?44:22}getTemplateId(t){return t instanceof Ch?Cke.ID:_ke.ID}}class z9o{getWidgetAriaLabel(){return U(1770,"Quick Input")}getAriaLabel(t){var n;return(n=t.separator)!=null&&n.label?`${t.saneAriaLabel}, ${t.separator.label}`:t.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(t){return t.hasCheckbox?"checkbox":"option"}isChecked(t){if(!(!t.hasCheckbox||!(t instanceof Ch)))return{get value(){return t.checked},onDidChange:n=>t.onChecked(()=>n())}}}class DMn{constructor(t){this.hoverDelegate=t}renderTemplate(t){const n=Object.create(null);n.toDisposeElement=new xt,n.toDisposeTemplate=new xt,n.entry=Xt(t,Rw(".quick-input-list-entry"));const r=Xt(n.entry,Rw("label.quick-input-list-label"));n.outerLabel=r,n.checkbox=n.toDisposeTemplate.add(new ts),n.toDisposeTemplate.add(wc(r,rn.CLICK,u=>{if(n.checkbox.value&&!u.defaultPrevented&&n.checkbox.value.enabled){const h=!n.checkbox.value.checked;n.checkbox.value.checked=h,n.element.checked=h}}));const o=Xt(r,Rw(".quick-input-list-rows")),s=Xt(o,Rw(".quick-input-list-row")),a=Xt(o,Rw(".quick-input-list-row"));n.label=new GJ(s,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),n.toDisposeTemplate.add(n.label),n.icon=Obe(n.label.element,Rw(".quick-input-list-icon"));const l=Xt(s,Rw(".quick-input-list-entry-keybinding"));n.keybinding=new cH(l,b0),n.toDisposeTemplate.add(n.keybinding);const d=Xt(a,Rw(".quick-input-list-label-meta"));return n.detail=new GJ(d,{supportHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),n.toDisposeTemplate.add(n.detail),n.separator=Xt(n.entry,Rw(".quick-input-list-separator")),n.actionBar=new g1(n.entry,this.hoverDelegate?{hoverDelegate:this.hoverDelegate}:void 0),n.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),n.toDisposeTemplate.add(n.actionBar),n}disposeTemplate(t){t.toDisposeElement.dispose(),t.toDisposeTemplate.dispose()}disposeElement(t,n,r){r.toDisposeElement.clear(),r.actionBar.clear()}}var CB;let Cke=(CB=class extends DMn{constructor(t,n){super(t),this.themeService=n,this._itemsWithSeparatorsFrequency=new Map}get templateId(){return b$e.ID}ensureCheckbox(t,n){var o;if(!t.hasCheckbox){(o=n.checkbox.value)==null||o.domNode.remove(),n.checkbox.clear();return}let r=n.checkbox.value;r?r.setTitle(t.saneLabel):(r=new yBn(t.saneLabel,t.checked,{...Btt,size:15}),n.checkbox.value=r,n.outerLabel.prepend(r.domNode)),t.checkboxDisabled?r.disable():r.enable(),r.checked=t.checked,n.toDisposeElement.add(t.onChecked(s=>r.checked=s)),n.toDisposeElement.add(r.onChange(()=>t.checked=r.checked))}renderElement(t,n,r){var m;const o=t.element;r.element=o,o.element=r.entry??void 0;const s=o.item;o.element.classList.toggle("not-pickable",o.item.pickable===!1),this.ensureCheckbox(o,r);const{labelHighlights:a,descriptionHighlights:l,detailHighlights:d}=o;if(s.iconPath){const v=j8(this.themeService.getColorTheme().type)?s.iconPath.dark:s.iconPath.light??s.iconPath.dark,f=vi.revive(v);r.icon.className="quick-input-list-icon",r.icon.style.backgroundImage=xy(f)}else r.icon.style.backgroundImage="",r.icon.className=s.iconClass?`quick-input-list-icon ${s.iconClass}`:"";let u;!o.saneTooltip&&o.saneDescription&&(u={markdown:{value:Y4(o.saneDescription),supportThemeIcons:!0},markdownNotSupportedFallback:o.saneDescription});const h={matches:a||[],descriptionTitle:u,descriptionMatches:l||[],labelEscapeNewLines:!0};if(h.extraClasses=s.iconClasses,h.italic=s.italic,h.strikethrough=s.strikethrough,r.entry.classList.remove("quick-input-list-separator-as-item"),r.label.setLabel(o.saneLabel,o.saneDescription,h),r.keybinding.set(s.keybinding),o.saneDetail){let v;o.saneTooltip||(v={markdown:{value:Y4(o.saneDetail),supportThemeIcons:!0},markdownNotSupportedFallback:o.saneDetail}),r.detail.element.style.display="",r.detail.setLabel(o.saneDetail,void 0,{matches:d,title:v,labelEscapeNewLines:!0})}else r.detail.element.style.display="none";(m=o.separator)!=null&&m.label?(r.separator.textContent=o.separator.label,r.separator.style.display="",this.addItemWithSeparator(o)):r.separator.style.display="none",r.entry.classList.toggle("quick-input-list-separator-border",!!o.separator&&o.childIndex!==0);const g=s.buttons;g&&g.length?(r.actionBar.push(g.map((v,f)=>JU(v,`id-${f}`,()=>o.fireButtonTriggered({button:v,item:o.item}))),{icon:!0,label:!1}),r.entry.classList.add("has-actions")):r.entry.classList.remove("has-actions")}disposeElement(t,n,r){this.removeItemWithSeparator(t.element),super.disposeElement(t,n,r)}isItemWithSeparatorVisible(t){return this._itemsWithSeparatorsFrequency.has(t)}addItemWithSeparator(t){this._itemsWithSeparatorsFrequency.set(t,(this._itemsWithSeparatorsFrequency.get(t)||0)+1)}removeItemWithSeparator(t){const n=this._itemsWithSeparatorsFrequency.get(t)||0;n>1?this._itemsWithSeparatorsFrequency.set(t,n-1):this._itemsWithSeparatorsFrequency.delete(t)}},b$e=CB,CB.ID="quickpickitem",CB);Cke=b$e=Z3e([p$e(1,Dl)],Cke);const GAe=class GAe extends DMn{constructor(){super(...arguments),this._visibleSeparatorsFrequency=new Map}get templateId(){return GAe.ID}get visibleSeparators(){return[...this._visibleSeparatorsFrequency.keys()]}isSeparatorVisible(t){return this._visibleSeparatorsFrequency.has(t)}renderElement(t,n,r){const o=t.element;r.element=o,o.element=r.entry??void 0,o.element.classList.toggle("focus-inside",!!o.focusInsideSeparator);const s=o.separator,{labelHighlights:a,descriptionHighlights:l}=o;r.icon.style.backgroundImage="",r.icon.className="";let d;!o.saneTooltip&&o.saneDescription&&(d={markdown:{value:Y4(o.saneDescription),supportThemeIcons:!0},markdownNotSupportedFallback:o.saneDescription});const u={matches:a||[],descriptionTitle:d,descriptionMatches:l||[],labelEscapeNewLines:!0};r.entry.classList.add("quick-input-list-separator-as-item"),r.label.setLabel(o.saneLabel,o.saneDescription,u),r.separator.style.display="none",r.entry.classList.add("quick-input-list-separator-border");const h=s.buttons;h&&h.length?(r.actionBar.push(h.map((g,m)=>JU(g,`id-${m}`,()=>o.fireSeparatorButtonTriggered({button:g,separator:o.separator}))),{icon:!0,label:!1}),r.entry.classList.add("has-actions")):r.entry.classList.remove("has-actions"),this.addSeparator(o)}disposeElement(t,n,r){var o;this.removeSeparator(t.element),this.isSeparatorVisible(t.element)||(o=t.element.element)==null||o.classList.remove("focus-inside"),super.disposeElement(t,n,r)}addSeparator(t){this._visibleSeparatorsFrequency.set(t,(this._visibleSeparatorsFrequency.get(t)||0)+1)}removeSeparator(t){const n=this._visibleSeparatorsFrequency.get(t)||0;n>1?this._visibleSeparatorsFrequency.set(t,n-1):this._visibleSeparatorsFrequency.delete(t)}};GAe.ID="quickpickseparator";let _ke=GAe,Cee=class extends ft{constructor(t,n,r,o,s,a){super(),this.parent=t,this.hoverDelegate=n,this.linkOpenerDelegate=r,this.accessibilityService=a,this._onKeyDown=new at,this._onLeave=new at,this.onLeave=this._onLeave.event,this._visibleCountObservable=Ti("VisibleCount",0),this.onChangedVisibleCount=an.fromObservable(this._visibleCountObservable,this._store),this._allVisibleCheckedObservable=Ti("AllVisibleChecked",!1),this.onChangedAllVisibleChecked=an.fromObservable(this._allVisibleCheckedObservable,this._store),this._checkedCountObservable=Ti("CheckedCount",0),this.onChangedCheckedCount=an.fromObservable(this._checkedCountObservable,this._store),this._checkedElementsObservable=wZ({equalsFn:Na},new Array),this.onChangedCheckedElements=an.fromObservable(this._checkedElementsObservable,this._store),this._onButtonTriggered=new at,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new at,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._elementChecked=new at,this._elementCheckedEventBufferer=new Cie,this._hasCheckboxes=!1,this._inputElements=new Array,this._elementTree=new Array,this._itemElements=new Array,this._elementDisposable=this._register(new xt),this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._shouldLoop=!0,this._container=Xt(this.parent,Rw(".quick-input-list")),this._separatorRenderer=new _ke(n),this._itemRenderer=s.createInstance(Cke,n),this._tree=this._register(s.createInstance(u0e,"QuickInput",this._container,new V9o,[this._itemRenderer,this._separatorRenderer],{filter:{filter(l){return l.hidden?0:l instanceof tT?2:1}},sorter:{compare:(l,d)=>{if(!this.sortByLabel||!this._lastQueryString)return 0;const u=this._lastQueryString.toLowerCase();return $9o(l,d,u)}},accessibilityProvider:new z9o,setRowLineHeight:!1,multipleSelectionSupport:!1,hideTwistiesOfChildlessElements:!0,renderIndentGuides:xR.None,findWidgetEnabled:!1,indent:0,horizontalScrolling:!1,allowNonCollapsibleParents:!0,alwaysConsumeMouseWheel:!0})),this._tree.getHTMLElement().id=o,this._registerListeners()}get onDidChangeFocus(){return an.map(this._tree.onDidChangeFocus,t=>t.elements.filter(n=>n instanceof Ch).map(n=>n.item),this._store)}get onDidChangeSelection(){return an.map(this._tree.onDidChangeSelection,t=>({items:t.elements.filter(n=>n instanceof Ch).map(n=>n.item),event:t.browserEvent}),this._store)}get displayed(){return this._container.style.display!=="none"}set displayed(t){this._container.style.display=t?"":"none"}get scrollTop(){return this._tree.scrollTop}set scrollTop(t){this._tree.scrollTop=t}get ariaLabel(){return this._tree.ariaLabel}set ariaLabel(t){this._tree.ariaLabel=t??""}set enabled(t){this._tree.getHTMLElement().style.pointerEvents=t?"":"none"}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(t){this._matchOnDescription=t}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(t){this._matchOnDetail=t}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(t){this._matchOnLabel=t}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(t){this._matchOnLabelMode=t}get sortByLabel(){return this._sortByLabel}set sortByLabel(t){this._sortByLabel=t}get shouldLoop(){return this._shouldLoop}set shouldLoop(t){this._shouldLoop=t}_registerListeners(){this._registerOnKeyDown(),this._registerOnContainerClick(),this._registerOnMouseMiddleClick(),this._registerOnTreeModelChanged(),this._registerOnElementChecked(),this._registerOnContextMenu(),this._registerHoverListeners(),this._registerSelectionChangeListener(),this._registerSeparatorActionShowingListeners()}_registerOnKeyDown(){this._register(this._tree.onKeyDown(t=>{const n=new Us(t);switch(n.keyCode){case 10:this.toggleCheckbox();break}this._onKeyDown.fire(n)}))}_registerOnContainerClick(){this._register(wt(this._container,rn.CLICK,t=>{(t.x||t.y)&&this._onLeave.fire()}))}_registerOnMouseMiddleClick(){this._register(wt(this._container,rn.AUXCLICK,t=>{t.button===1&&this._onLeave.fire()}))}_registerOnTreeModelChanged(){this._register(this._tree.onDidChangeModel(()=>{const t=this._itemElements.filter(n=>!n.hidden).length;this._visibleCountObservable.set(t,void 0),this._hasCheckboxes&&this._updateCheckedObservables()}))}_registerOnElementChecked(){this._register(this._elementCheckedEventBufferer.wrapEvent(this._elementChecked.event,(t,n)=>n)(t=>this._updateCheckedObservables()))}_registerOnContextMenu(){this._register(this._tree.onContextMenu(t=>{t.element&&(t.browserEvent.preventDefault(),this._tree.setSelection([t.element]))}))}_registerHoverListeners(){const t=this._register(new N6n(typeof this.hoverDelegate.delay=="function"?this.hoverDelegate.delay():this.hoverDelegate.delay));this._register(this._tree.onMouseOver(async n=>{var r;if(_bt(n.browserEvent.target)){t.cancel();return}if(!(!_bt(n.browserEvent.relatedTarget)&&gu(n.browserEvent.relatedTarget,(r=n.element)==null?void 0:r.element)))try{await t.trigger(async()=>{n.element instanceof Ch&&this.showHover(n.element)})}catch(o){if(!C2(o))throw o}})),this._register(this._tree.onMouseOut(n=>{var r;gu(n.browserEvent.relatedTarget,(r=n.element)==null?void 0:r.element)||t.cancel()}))}_registerSeparatorActionShowingListeners(){this._register(this._tree.onDidChangeFocus(t=>{const n=t.elements[0]?this._tree.getParentElement(t.elements[0]):null;for(const r of this._separatorRenderer.visibleSeparators){const o=r===n;!!(r.focusInsideSeparator&qw.ACTIVE_ITEM)!==o&&(o?r.focusInsideSeparator|=qw.ACTIVE_ITEM:r.focusInsideSeparator&=~qw.ACTIVE_ITEM,this._tree.rerender(r))}})),this._register(this._tree.onMouseOver(t=>{const n=t.element?this._tree.getParentElement(t.element):null;for(const r of this._separatorRenderer.visibleSeparators){if(r!==n)continue;!!(r.focusInsideSeparator&qw.MOUSE_HOVER)||(r.focusInsideSeparator|=qw.MOUSE_HOVER,this._tree.rerender(r))}})),this._register(this._tree.onMouseOut(t=>{const n=t.element?this._tree.getParentElement(t.element):null;for(const r of this._separatorRenderer.visibleSeparators){if(r!==n)continue;!!(r.focusInsideSeparator&qw.MOUSE_HOVER)&&(r.focusInsideSeparator&=~qw.MOUSE_HOVER,this._tree.rerender(r))}}))}_registerSelectionChangeListener(){this._register(this._tree.onDidChangeSelection(t=>{const n=t.elements.filter(r=>r instanceof Ch);n.length!==t.elements.length&&(t.elements.length===1&&t.elements[0]instanceof tT&&(this._tree.setFocus([t.elements[0].children[0]]),this._tree.reveal(t.elements[0],0)),this._tree.setSelection(n))}))}setAllVisibleChecked(t){this._elementCheckedEventBufferer.bufferEvents(()=>{this._itemElements.forEach(n=>{!n.hidden&&!n.checkboxDisabled&&n.item.pickable!==!1&&(n.checked=t)})})}setElements(t){this._elementDisposable.clear(),this._lastQueryString=void 0,this._inputElements=t,this._hasCheckboxes=this.parent.classList.contains("show-checkboxes");let n;this._itemElements=new Array,this._elementTree=t.reduce((r,o,s)=>{let a;if(o.type==="separator"){if(!o.buttons)return r;n=new tT(s,l=>this._onSeparatorButtonTriggered.fire(l),o),a=n}else{const l=s>0?t[s-1]:void 0;let d;l&&l.type==="separator"&&!l.buttons&&(d=l);const u=new Ch(s,n!=null&&n.children?n.children.length:s,this._hasCheckboxes&&o.pickable!==!1,h=>this._onButtonTriggered.fire(h),this._elementChecked,o,d);if(this._itemElements.push(u),n)return n.children.push(u),r;a=u}return r.push(a),r},new Array),this._setElementsToTree(this._elementTree),this.accessibilityService.isScreenReaderOptimized()&&setTimeout(()=>{const r=this._tree.getHTMLElement().querySelector(".monaco-list-row.focused"),o=r==null?void 0:r.parentNode;if(r&&o){const s=r.nextSibling;r.remove(),o.insertBefore(r,s)}},0)}setFocusedElements(t){const n=t.map(r=>this._itemElements.find(o=>o.item===r)).filter(r=>!!r).filter(r=>!r.hidden);if(this._tree.setFocus(n),t.length>0){const r=this._tree.getFocus()[0];r&&this._tree.reveal(r)}}getActiveDescendant(){return this._tree.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(t){const n=t.map(r=>this._itemElements.find(o=>o.item===r)).filter(r=>!!r);this._tree.setSelection(n)}getCheckedElements(){return this._itemElements.filter(t=>t.checked).map(t=>t.item)}setCheckedElements(t){this._elementCheckedEventBufferer.bufferEvents(()=>{const n=new Set;for(const r of t)n.add(r);for(const r of this._itemElements)r.checked=n.has(r.item)})}focus(t){var n;if(this._itemElements.length)switch(t===Sa.Second&&this._itemElements.length<2&&(t=Sa.First),t){case Sa.First:this._tree.scrollTop=0,this._tree.focusFirst(void 0,r=>r.element instanceof Ch);break;case Sa.Second:{this._tree.scrollTop=0;let r=!1;this._tree.focusFirst(void 0,o=>o.element instanceof Ch?r?!0:(r=!r,!1):!1);break}case Sa.Last:this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,r=>r.element instanceof Ch);break;case Sa.Next:{const r=this._tree.getFocus();this._tree.focusNext(void 0,this._shouldLoop,void 0,s=>s.element instanceof Ch?(this._tree.reveal(s.element),!0):!1);const o=this._tree.getFocus();r.length&&r[0]===o[0]&&this._onLeave.fire();break}case Sa.Previous:{const r=this._tree.getFocus();this._tree.focusPrevious(void 0,this._shouldLoop,void 0,s=>{if(!(s.element instanceof Ch))return!1;const a=this._tree.getParentElement(s.element);return a===null||a.children[0]!==s.element?this._tree.reveal(s.element):this._tree.reveal(a),!0});const o=this._tree.getFocus();r.length&&r[0]===o[0]&&this._onLeave.fire();break}case Sa.NextPage:this._tree.focusNextPage(void 0,r=>r.element instanceof Ch?(this._tree.reveal(r.element),!0):!1);break;case Sa.PreviousPage:this._tree.focusPreviousPage(void 0,r=>{if(!(r.element instanceof Ch))return!1;const o=this._tree.getParentElement(r.element);return o===null||o.children[0]!==r.element?this._tree.reveal(r.element):this._tree.reveal(o),!0});break;case Sa.NextSeparator:{let r=!1;const o=this._tree.getFocus()[0];this._tree.focusNext(void 0,!0,void 0,a=>{if(r)return!0;if(a.element instanceof tT)r=!0,this._separatorRenderer.isSeparatorVisible(a.element)?this._tree.reveal(a.element.children[0]):this._tree.reveal(a.element,0);else if(a.element instanceof Ch){if(a.element.separator)return this._itemRenderer.isItemWithSeparatorVisible(a.element)?this._tree.reveal(a.element):this._tree.reveal(a.element,0),!0;if(a.element===this._elementTree[0])return this._tree.reveal(a.element,0),!0}return!1});const s=this._tree.getFocus()[0];o===s&&(this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,a=>a.element instanceof Ch));break}case Sa.PreviousSeparator:{let r,o=!!((n=this._tree.getFocus()[0])!=null&&n.separator);this._tree.focusPrevious(void 0,!0,void 0,s=>{if(s.element instanceof tT)o?r||(this._separatorRenderer.isSeparatorVisible(s.element)?this._tree.reveal(s.element):this._tree.reveal(s.element,0),r=s.element.children[0]):o=!0;else if(s.element instanceof Ch&&!r){if(s.element.separator)this._itemRenderer.isItemWithSeparatorVisible(s.element)?this._tree.reveal(s.element):this._tree.reveal(s.element,0),r=s.element;else if(s.element===this._elementTree[0])return this._tree.reveal(s.element,0),!0}return!1}),r&&this._tree.setFocus([r]);break}}}clearFocus(){this._tree.setFocus([])}domFocus(){this._tree.domFocus()}layout(t){this._tree.getHTMLElement().style.maxHeight=t?`${Math.floor(t/44)*44+6}px`:"",this._tree.layout()}filter(t){if(this._lastQueryString=t,!(this._sortByLabel||this._matchOnLabel||this._matchOnDescription||this._matchOnDetail))return this._tree.layout(),!1;const n=t;if(t=t.trim(),!t||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this._itemElements.forEach(r=>{r.labelHighlights=void 0,r.descriptionHighlights=void 0,r.detailHighlights=void 0,r.hidden=!1;const o=r.index&&this._inputElements[r.index-1];r.item&&(r.separator=o&&o.type==="separator"&&!o.buttons?o:void 0)});else{let r;this._itemElements.forEach(o=>{let s;this.matchOnLabelMode==="fuzzy"?s=this.matchOnLabel?SZ(t,hQ(o.saneLabel))??void 0:void 0:s=this.matchOnLabel?H9o(n,hQ(o.saneLabel))??void 0:void 0;const a=this.matchOnDescription?SZ(t,hQ(o.saneDescription||""))??void 0:void 0,l=this.matchOnDetail?SZ(t,hQ(o.saneDetail||""))??void 0:void 0;if(s||a||l?(o.labelHighlights=s,o.descriptionHighlights=a,o.detailHighlights=l,o.hidden=!1):(o.labelHighlights=void 0,o.descriptionHighlights=void 0,o.detailHighlights=void 0,o.hidden=o.item?!o.item.alwaysShow:!0),o.item?o.separator=void 0:o.separator&&(o.hidden=!0),!this.sortByLabel){const d=o.index&&this._inputElements[o.index-1]||void 0;(d==null?void 0:d.type)==="separator"&&!d.buttons&&(r=d),r&&!o.hidden&&(o.separator=r,r=void 0)}})}return this._setElementsToTree(this._sortByLabel&&t?this._itemElements:this._elementTree),this._tree.layout(),!0}toggleCheckbox(){this._elementCheckedEventBufferer.bufferEvents(()=>{const t=this._tree.getFocus().filter(r=>r instanceof Ch),n=this._allVisibleChecked(t);for(const r of t)r.checkboxDisabled||(r.checked=!n)})}style(t){this._tree.style(t)}toggleHover(){const t=this._tree.getFocus()[0];if(!(t!=null&&t.saneTooltip)||!(t instanceof Ch))return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}this.showHover(t);const n=new xt;n.add(this._tree.onDidChangeFocus(r=>{r.elements[0]instanceof Ch&&this.showHover(r.elements[0])})),this._lastHover&&n.add(this._lastHover),this._elementDisposable.add(n)}_setElementsToTree(t){const n=new Array;for(const r of t)r instanceof tT?n.push({element:r,collapsible:!1,collapsed:!1,children:r.children.map(o=>({element:o,collapsible:!1,collapsed:!1}))}):n.push({element:r,collapsible:!1,collapsed:!1});this._tree.setChildren(null,n)}_allVisibleChecked(t,n=!0){for(let r=0,o=t.length;r{this._allVisibleCheckedObservable.set(this._allVisibleChecked(this._itemElements,!1),t);const n=this._itemElements.filter(r=>r.checked).length;this._checkedCountObservable.set(n,t),this._checkedElementsObservable.set(this.getCheckedElements(),t)})}showHover(t){var n,r,o;this._lastHover&&!this._lastHover.isDisposed&&((r=(n=this.hoverDelegate).onDidHideHover)==null||r.call(n),(o=this._lastHover)==null||o.dispose()),!(!t.element||!t.saneTooltip)&&(this._lastHover=this.hoverDelegate.showHover({content:t.saneTooltip,target:t.element,linkHandler:s=>{this.linkOpenerDelegate(s)},appearance:{showPointer:!0},container:this._container,position:{hoverPosition:1}},!1))}};Z3e([mc],Cee.prototype,"onDidChangeFocus",null);Z3e([mc],Cee.prototype,"onDidChangeSelection",null);Cee=Z3e([p$e(4,Yn),p$e(5,vh)],Cee);function H9o(e,t){const{text:n,iconOffsets:r}=t;if(!r||r.length===0)return uSt(e,n);const o=_ie(n," "),s=n.length-o.length,a=uSt(e,o);if(a)for(const l of a){const d=r[l.start+s]+s;l.start+=d,l.end+=d}return a}function uSt(e,t){const n=t.toLowerCase().indexOf(e.toLowerCase());return n!==-1?[{start:n,end:n+e.length}]:null}function $9o(e,t,n){const r=e.labelHighlights||[],o=t.labelHighlights||[];return r.length&&!o.length?-1:!r.length&&o.length?1:r.length===0&&o.length===0?0:j9o(e.saneSortLabel,t.saneSortLabel,n)}function X9o(e,t={}){Nu.registerCommandAndKeybindingRule({weight:200,when:Y3e,metadata:{description:U(1758,"Used while in the context of any kind of quick input. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.")},...e,secondary:uit(e.primary,e.secondary??[],t)})}function qm(e,t={}){Nu.registerCommandAndKeybindingRule({weight:200,when:Ft.and(Ft.or(Ft.equals(Oee,"quickPick"),Ft.equals(Oee,"quickTree")),Y3e),metadata:{description:U(1759,"Used while in the context of the quick pick. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.")},...e,secondary:uit(e.primary,e.secondary??[],t)})}const _ee=Tr?256:2048;function uit(e,t,n={}){return n.withAltMod&&t.push(512+e),n.withCtrlMod&&(t.push(_ee+e),n.withAltMod&&t.push(512+_ee+e)),n.withCmdMod&&Tr&&(t.push(2048+e),n.withCtrlMod&&t.push(2304+e),n.withAltMod&&(t.push(2560+e),n.withCtrlMod&&t.push(2816+e))),t}function Mk(e,t){return n=>{const r=n.get(Rf).currentQuickInput;if(r)return t&&r.quickNavigate?r.focus(t):r.focus(e)}}qm({id:"quickInput.pageNext",primary:12,handler:Mk(Sa.NextPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});qm({id:"quickInput.pagePrevious",primary:11,handler:Mk(Sa.PreviousPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});qm({id:"quickInput.first",primary:_ee+14,handler:Mk(Sa.First)},{withAltMod:!0,withCmdMod:!0});qm({id:"quickInput.last",primary:_ee+13,handler:Mk(Sa.Last)},{withAltMod:!0,withCmdMod:!0});qm({id:"quickInput.next",primary:18,handler:Mk(Sa.Next)},{withCtrlMod:!0});qm({id:"quickInput.previous",primary:16,handler:Mk(Sa.Previous)},{withCtrlMod:!0});const hSt=U(1760,"If we're in quick access mode, this will navigate to the next item. If we are not in quick access mode, this will navigate to the next separator."),fSt=U(1761,"If we're in quick access mode, this will navigate to the previous item. If we are not in quick access mode, this will navigate to the previous separator.");Tr?(qm({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:2066,handler:Mk(Sa.NextSeparator,Sa.Next),metadata:{description:hSt}}),qm({id:"quickInput.nextSeparator",primary:2578,secondary:[2322],handler:Mk(Sa.NextSeparator)},{withCtrlMod:!0}),qm({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:2064,handler:Mk(Sa.PreviousSeparator,Sa.Previous),metadata:{description:fSt}}),qm({id:"quickInput.previousSeparator",primary:2576,secondary:[2320],handler:Mk(Sa.PreviousSeparator)},{withCtrlMod:!0})):(qm({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:530,handler:Mk(Sa.NextSeparator,Sa.Next),metadata:{description:hSt}}),qm({id:"quickInput.nextSeparator",primary:2578,handler:Mk(Sa.NextSeparator)}),qm({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:528,handler:Mk(Sa.PreviousSeparator,Sa.Previous),metadata:{description:fSt}}),qm({id:"quickInput.previousSeparator",primary:2576,handler:Mk(Sa.PreviousSeparator)}));Nu.registerCommandAndKeybindingRule({id:"quickInput.accept",primary:3,weight:200,when:Ft.and(Ft.notEquals(Oee,"quickWidget"),Y3e,Ft.not("isComposing")),metadata:{description:U(1762,"Used while in the context of some quick input. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.")},handler:e=>{const t=e.get(Rf).currentQuickInput;t==null||t.accept()},secondary:uit(3,[],{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0})});qm({id:"quickInput.acceptInBackground",when:Ft.and(Y3e,Ft.equals(Oee,"quickPick"),Ft.or(unt.negate(),M9o)),primary:17,weight:250,handler:e=>{const t=e.get(Rf).currentQuickInput;t==null||t.accept(!0)}},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});X9o({id:"quickInput.hide",primary:9,handler:e=>{const t=e.get(Rf).currentQuickInput;t==null||t.hide()}},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});qm({id:"quickInput.toggleHover",primary:_ee|10,handler:e=>{e.get(Rf).toggleHover()}});var G9o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Y9o=function(e,t){return function(n,r){t(n,r,e)}},w$e;const FX=tn;var _B;let Ske=(_B=class extends ft{constructor(t,n,r,o){super(),this._hoverDelegate=t,this._buttonTriggeredEmitter=n,this.onCheckedEvent=r,this._themeService=o,this.templateId=w$e.ID}renderTemplate(t){const n=new xt,r=Xt(t,FX(".quick-input-tree-entry")),o=n.add(new CBn("",!1,{...Btt,size:15}));r.appendChild(o.domNode);const s=Xt(r,FX("label.quick-input-tree-label")),a=Xt(s,FX(".quick-input-tree-rows")),l=Xt(a,FX(".quick-input-tree-row")),d=Obe(l,FX(".quick-input-tree-icon")),u=n.add(new GJ(l,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this._hoverDelegate})),h=n.add(new g1(r,this._hoverDelegate?{hoverDelegate:this._hoverDelegate}:void 0));return h.domNode.classList.add("quick-input-tree-entry-action-bar"),{toDisposeTemplate:n,entry:r,checkbox:o,icon:d,label:u,actionBar:h,toDisposeElement:new xt}}renderElement(t,n,r,o){const s=r.toDisposeElement,a=t.element;if(a.pickable===!1?r.checkbox.domNode.style.display="none":(r.checkbox.domNode.style.display="",r.checkbox.checked=a.checked??!1,s.add(an.filter(this.onCheckedEvent,g=>g.item===a)(g=>r.checkbox.checked=g.checked)),a.disabled&&r.checkbox.disable()),a.iconPath){const g=j8(this._themeService.getColorTheme().type)?a.iconPath.dark:a.iconPath.light??a.iconPath.dark,m=vi.revive(g);r.icon.className="quick-input-tree-icon",r.icon.style.backgroundImage=xy(m)}else r.icon.style.backgroundImage="",r.icon.className=a.iconClass?`quick-input-tree-icon ${a.iconClass}`:"";const{labelHighlights:l,descriptionHighlights:d}=t.filterData||{};let u;a.description&&(u={markdown:{value:Y4(a.description),supportThemeIcons:!0},markdownNotSupportedFallback:a.description}),r.label.setLabel(a.label,a.description,{matches:l,descriptionMatches:d,extraClasses:a.iconClasses,italic:a.italic,strikethrough:a.strikethrough,labelEscapeNewLines:!0,descriptionTitle:u});const h=a.buttons;h&&h.length?(r.actionBar.push(h.map((g,m)=>JU(g,`tree-${m}`,()=>this._buttonTriggeredEmitter.fire({item:a,button:g}))),{icon:!0,label:!1}),r.entry.classList.add("has-actions")):r.entry.classList.remove("has-actions")}disposeElement(t,n,r,o){r.toDisposeElement.clear(),r.actionBar.clear()}disposeTemplate(t){t.toDisposeElement.dispose(),t.toDisposeTemplate.dispose()}},w$e=_B,_B.ID="quickInputTreeElement",_B);Ske=w$e=G9o([Y9o(3,Dl)],Ske);class Z9o{getHeight(t){return 22}getTemplateId(t){return Ske.ID}}function q9o(e){var s;let t=!1,n=!1,r=!1;for(const a of e){switch((s=a.element)==null?void 0:s.checked){case"mixed":r=!0;break;case!0:t=!0;break;default:n=!0;break}if(t&&n&&r)break}return n?r||t?"mixed":!1:r?"mixed":t}class K9o{constructor(t){this.onCheckedEvent=t}getWidgetAriaLabel(){return U(1772,"Quick Tree")}getAriaLabel(t){return t.ariaLabel||[t.label,t.description].map(n=>OQn(n)).filter(n=>!!n).join(", ")}getWidgetRole(){return"tree"}getRole(t){return"checkbox"}isChecked(t){return{get value(){return t.checked==="mixed"?"mixed":!!t.checked},onDidChange:n=>an.filter(this.onCheckedEvent,r=>r.item===t)(r=>n())}}}class J9o{constructor(){this.filterValue="",this.matchOnLabel=!0,this.matchOnDescription=!1}filter(t,n){if(!this.filterValue||!(this.matchOnLabel||this.matchOnDescription))return t.children?{visibility:2,data:{}}:{visibility:1,data:{}};const r=this.matchOnLabel?SZ(this.filterValue,hQ(t.label))??void 0:void 0,o=this.matchOnDescription?SZ(this.filterValue,hQ(t.description||""))??void 0:void 0;return{visibility:n===1||r||o?1:t.children?2:0,data:{labelHighlights:r,descriptionHighlights:o}}}}class e6o extends ft{constructor(){super(...arguments),this._sortByLabel=!0}get sortByLabel(){return this._sortByLabel}set sortByLabel(t){this._sortByLabel=t}compare(t,n){if(!this._sortByLabel)return 0;if(t.labeln.label)return 1;if(t.description&&n.description){if(t.descriptionn.description)return 1}else{if(t.description)return-1;if(n.description)return 1}return 0}}var t6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},n6o=function(e,t){return function(n,r){t(n,r,e)}};const i6o=tn;let O$e=class extends ft{constructor(t,n,r){super(),this.instantiationService=r,this._onDidTriggerButton=this._register(new at),this._onDidChangeCheckboxState=this._register(new at),this.onDidChangeCheckboxState=this._onDidChangeCheckboxState.event,this._onDidCheckedLeafItemsChange=this._register(new at),this._onLeave=new at,this.onLeave=this._onLeave.event,this._onDidAccept=this._register(new at),this.onDidAccept=this._onDidAccept.event,this._container=Xt(t,i6o(".quick-input-tree")),this._renderer=this._register(this.instantiationService.createInstance(Ske,n,this._onDidTriggerButton,this.onDidChangeCheckboxState)),this._filter=this.instantiationService.createInstance(J9o),this._sorter=this._register(new e6o),this._tree=this._register(this.instantiationService.createInstance(u0e,"QuickInputTree",this._container,new Z9o,[this._renderer],{accessibilityProvider:new K9o(this.onDidChangeCheckboxState),horizontalScrolling:!1,multipleSelectionSupport:!1,findWidgetEnabled:!1,alwaysConsumeMouseWheel:!0,hideTwistiesOfChildlessElements:!0,renderIndentGuides:xR.None,expandOnDoubleClick:!0,expandOnlyOnTwistieClick:!0,disableExpandOnSpacebar:!0,sorter:this._sorter,filter:this._filter})),this.registerOnOpenListener()}get tree(){return this._tree}get displayed(){return this._container.style.display!=="none"}set displayed(t){this._container.style.display=t?"":"none"}get sortByLabel(){return this._sorter.sortByLabel}set sortByLabel(t){this._sorter.sortByLabel=t,this._tree.resort(null,!0)}getActiveDescendant(){return this._tree.getHTMLElement().getAttribute("aria-activedescendant")}updateFilterOptions(t){t.matchOnLabel!==void 0&&(this._filter.matchOnLabel=t.matchOnLabel),t.matchOnDescription!==void 0&&(this._filter.matchOnDescription=t.matchOnDescription),this._tree.refilter()}layout(t){this._tree.getHTMLElement().style.maxHeight=t?`${Math.floor(t/44)*44+6}px`:"",this._tree.layout()}registerOnOpenListener(){this._register(this._tree.onDidOpen(t=>{const n=t.element;if(!n||n.disabled)return;if(n.pickable===!1){this._tree.setFocus([n]),this._onDidAccept.fire();return}const r=n.checked!==!0;if((n.checked??!1)===r)return;n.checked=r,this._tree.rerender(n);const o=new Set,s=[...this._tree.getNode(n).children];for(;s.length;){const l=s.shift();l!=null&&l.element&&!o.has(l.element)&&(o.add(l.element),(l.element.checked??!1)!==n.checked&&(l.element.checked=n.checked,this._tree.rerender(l.element)),s.push(...l.children))}let a=this._tree.getParentElement(n);for(;a;){const l=[...this._tree.getNode(a).children],d=q9o(l);(a.checked??!1)!==d&&(a.checked=d,this._tree.rerender(a)),a=this._tree.getParentElement(a)}this._onDidChangeCheckboxState.fire({item:n,checked:n.checked??!1}),this._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems())}))}getCheckedLeafItems(){const t=new Set,n=[...this._tree.getNode().children],r=new Array;for(;n.length;){const o=n.shift();!(o!=null&&o.element)||t.has(o.element)||o.element.checked&&(t.add(o.element),n.push(...o.children),o.element.children||r.push(o.element))}return r}};O$e=t6o([n6o(2,Yn)],O$e);var BMn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},wQ=function(e,t){return function(n,r){t(n,r,e)}},y$e;const gk=tn,c5e="workbench.quickInput.viewState";var SB;let C$e=(SB=class extends ft{get currentQuickInput(){return this.controller??void 0}get container(){return this._container}constructor(t,n,r,o,s){super(),this.options=t,this.layoutService=n,this.instantiationService=r,this.storageService=s,this.enabled=!0,this.onDidAcceptEmitter=this._register(new at),this.onDidCustomEmitter=this._register(new at),this.onDidTriggerButtonEmitter=this._register(new at),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new at),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new at),this.onHide=this.onHideEmitter.event,this.inQuickInputContext=Q9o.bindTo(o),this.quickInputTypeContext=R9o.bindTo(o),this.endOfQuickInputBoxContext=I9o.bindTo(o),this.idPrefix=t.idPrefix,this._container=t.container,this.styles=t.styles,this._register(an.runAndSubscribe(xie,({window:a,disposables:l})=>this.registerKeyModsListeners(a,l),{window:Ls,disposables:this._store})),this._register(Bto(a=>{this.ui&&ii(this.ui.container)===a&&(this.reparentUI(this.layoutService.mainContainer),this.layout(this.layoutService.mainContainerDimension,this.layoutService.mainContainerOffset.quickPickTop))})),this.viewState=this.loadViewState()}registerKeyModsListeners(t,n){const r=o=>{this.keyMods.ctrlCmd=o.ctrlKey||o.metaKey,this.keyMods.alt=o.altKey};for(const o of[rn.KEY_DOWN,rn.KEY_UP,rn.MOUSE_DOWN])n.add(wt(t,o,r,!0))}getUI(t){if(this.ui)return t&&ii(this._container)!==ii(this.layoutService.activeContainer)&&(this.reparentUI(this.layoutService.activeContainer),this.layout(this.layoutService.activeContainerDimension,this.layoutService.activeContainerOffset.quickPickTop)),this.ui;const n=Xt(this._container,gk(".quick-input-widget.show-file-icons"));n.tabIndex=-1,n.style.display="none";const r=mA(n),o=Xt(n,gk(".quick-input-titlebar")),s=this._register(new g1(o,{hoverDelegate:this.options.hoverDelegate}));s.domNode.classList.add("quick-input-left-action-bar");const a=Xt(o,gk(".quick-input-title")),l=this._register(new g1(o,{hoverDelegate:this.options.hoverDelegate}));l.domNode.classList.add("quick-input-right-action-bar");const d=Xt(n,gk(".quick-input-header")),u=this._register(new CBn(U(1763,"Toggle all checkboxes"),!1,{...Btt,size:15}));Xt(d,u.domNode),this._register(u.onChange(()=>{const M=u.checked;D.setAllVisibleChecked(M===!0)})),this._register(wt(u.domNode,rn.CLICK,M=>{(M.x||M.y)&&v.setFocus()}));const h=Xt(d,gk(".quick-input-description")),g=Xt(d,gk(".quick-input-and-message")),m=Xt(g,gk(".quick-input-filter")),v=this._register(new N9o(m,this.styles.inputBox,this.styles.toggle));v.setAttribute("aria-describedby",`${this.idPrefix}message`);const f=Xt(m,gk(".quick-input-visible-count"));f.setAttribute("aria-live","polite"),f.setAttribute("aria-atomic","true");const k=this._register(new dWe(f,{countFormat:U(1764,"{0} Results")},this.styles.countBadge)),A=Xt(m,gk(".quick-input-count"));A.setAttribute("aria-live","polite");const p=this._register(new dWe(A,{countFormat:U(1765,"{0} Selected")},this.styles.countBadge)),b=this._register(new g1(d,{hoverDelegate:this.options.hoverDelegate}));b.domNode.classList.add("quick-input-inline-action-bar");const w=Xt(d,gk(".quick-input-action")),O=this._register(new z1e(w,this.styles.button));O.label=U(1766,"OK"),this._register(O.onDidClick(M=>{this.onDidAcceptEmitter.fire()}));const y=Xt(d,gk(".quick-input-action")),C=this._register(new z1e(y,{...this.styles.button,supportIcons:!0}));C.label=U(1767,"Custom"),this._register(C.onDidClick(M=>{this.onDidCustomEmitter.fire()}));const _=Xt(g,gk(`#${this.idPrefix}message.quick-input-message`)),S=this._register(new A$e(n,this.styles.progressBar));S.getContainer().classList.add("quick-input-progress");const L=Xt(n,gk(".quick-input-html-widget"));L.tabIndex=-1;const E=Xt(n,gk(".quick-input-description")),T=this.idPrefix+"list",D=this._register(this.instantiationService.createInstance(Cee,n,this.options.hoverDelegate,this.options.linkOpenerDelegate,T));v.setAttribute("aria-controls",T),this._register(D.onDidChangeFocus(()=>{v.hasFocus()&&v.setAttribute("aria-activedescendant",D.getActiveDescendant()??"")})),this._register(D.onChangedAllVisibleChecked(M=>{u.checked=M})),this._register(D.onChangedVisibleCount(M=>{k.setCount(M)})),this._register(D.onChangedCheckedCount(M=>{Oie(()=>p.setCount(M))})),this._register(D.onLeave(()=>{setTimeout(()=>{this.controller&&(v.setFocus(),this.controller instanceof GZ&&this.controller.canSelectMany&&D.clearFocus())},0)}));const P=this._register(this.instantiationService.createInstance(O$e,n,this.options.hoverDelegate));this._register(P.tree.onDidChangeFocus(()=>{v.hasFocus()&&v.setAttribute("aria-activedescendant",P.getActiveDescendant()??"")})),this._register(P.onLeave(()=>{setTimeout(()=>{this.controller&&(v.setFocus(),P.tree.setFocus([]))},0)})),this._register(P.onDidAccept(()=>{this.onDidAcceptEmitter.fire()})),this._register(P.tree.onDidChangeContentHeight(()=>this.updateLayout()));const Q=uA(n);return this._register(Q),this._register(wt(n,rn.FOCUS,M=>{const B=this.getUI();if(gu(M.relatedTarget,B.inputContainer)){const R=B.inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==R&&this.endOfQuickInputBoxContext.set(R)}gu(M.relatedTarget,B.container)||(this.inQuickInputContext.set(!0),this.previousFocusElement=ec(M.relatedTarget)?M.relatedTarget:void 0)},!0)),this._register(Q.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(MJ.Blur),this.inQuickInputContext.set(!1),this.endOfQuickInputBoxContext.set(!1),this.previousFocusElement=void 0})),this._register(v.onKeyDown(M=>{const B=this.getUI().inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==B&&this.endOfQuickInputBoxContext.set(B),v.removeAttribute("aria-activedescendant")})),this._register(wt(n,rn.FOCUS,M=>{v.setFocus()})),this.dndController=this._register(this.instantiationService.createInstance(_$e,this._container,n,[{node:o,includeChildren:!0},{node:d,includeChildren:!1}],this.viewState)),this._register(Oi(M=>{var R;const B=(R=this.dndController)==null?void 0:R.dndViewState.read(M);B&&(B.top!==void 0&&B.left!==void 0?this.viewState={...this.viewState,top:B.top,left:B.left}:this.viewState=void 0,this.updateLayout(),B.done&&this.saveViewState(this.viewState))})),this.ui={container:n,styleSheet:r,leftActionBar:s,titleBar:o,title:a,description1:E,description2:h,widget:L,rightActionBar:l,inlineActionBar:b,checkAll:u,inputContainer:g,filterContainer:m,inputBox:v,visibleCountContainer:f,visibleCount:k,countContainer:A,count:p,okContainer:w,ok:O,message:_,customButtonContainer:y,customButton:C,list:D,tree:P,progressBar:S,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:M=>this.show(M),hide:()=>this.hide(),setVisibilities:M=>this.setVisibilities(M),setEnabled:M=>this.setEnabled(M),setContextKey:M=>this.options.setContextKey(M),linkOpenerDelegate:M=>this.options.linkOpenerDelegate(M)},this.updateStyles(),this.ui}reparentUI(t){var n;this.ui&&(this._container=t,Xt(this._container,this.ui.container),(n=this.dndController)==null||n.reparentUI(this._container))}pick(t,n={},r=Er.None){return new Promise((o,s)=>{let a=h=>{var g;a=o,(g=n.onKeyMods)==null||g.call(n,l.keyMods),o(h)};if(r.isCancellationRequested){a(void 0);return}const l=this.createQuickPick({useSeparators:!0});let d;const u=[l,l.onDidAccept(()=>{if(l.canSelectMany)a(l.selectedItems.slice()),l.hide();else{const h=l.activeItems[0];h&&(a(h),l.hide())}}),l.onDidChangeActive(h=>{const g=h[0];g&&n.onDidFocus&&n.onDidFocus(g)}),l.onDidChangeSelection(h=>{if(!l.canSelectMany){const g=h[0];g&&(a(g),l.hide())}}),l.onDidTriggerItemButton(h=>n.onDidTriggerItemButton&&n.onDidTriggerItemButton({...h,removeItem:()=>{const g=l.items.indexOf(h.item);if(g!==-1){const m=l.items.slice(),v=m.splice(g,1),f=l.activeItems.filter(A=>A!==v[0]),k=l.keepScrollPosition;l.keepScrollPosition=!0,l.items=m,f&&(l.activeItems=f),l.keepScrollPosition=k}}})),l.onDidTriggerSeparatorButton(h=>{var g;return(g=n.onDidTriggerSeparatorButton)==null?void 0:g.call(n,h)}),l.onDidChangeValue(h=>{d&&!h&&(l.activeItems.length!==1||l.activeItems[0]!==d)&&(l.activeItems=[d])}),r.onCancellationRequested(()=>{l.hide()}),l.onDidHide(()=>{us(u),a(void 0)})];l.title=n.title,n.value&&(l.value=n.value),l.canSelectMany=!!n.canPickMany,l.placeholder=n.placeHolder,l.prompt=n.prompt,l.ignoreFocusOut=!!n.ignoreFocusLost,l.matchOnDescription=!!n.matchOnDescription,l.matchOnDetail=!!n.matchOnDetail,n.sortByLabel!==void 0&&(l.sortByLabel=n.sortByLabel),l.matchOnLabel=n.matchOnLabel===void 0||n.matchOnLabel,l.quickNavigate=n.quickNavigate,l.hideInput=!!n.hideInput,l.contextKey=n.contextKey,l.busy=!0,Promise.all([t,n.activeItem]).then(([h,g])=>{d=g,l.busy=!1,l.items=h,l.canSelectMany&&(l.selectedItems=h.filter(m=>m.type!=="separator"&&m.picked)),d&&(l.activeItems=[d])}),l.show(),Promise.resolve(t).then(void 0,h=>{s(h),l.hide()})})}setValidationOnInput(t,n){n&&fu(n)?(t.severity=Sl.Error,t.validationMessage=n):n&&!fu(n)?(t.severity=n.severity,t.validationMessage=n.content):(t.severity=Sl.Ignore,t.validationMessage=void 0)}input(t={},n=Er.None){return new Promise(r=>{if(n.isCancellationRequested){r(void 0);return}const o=this.createInputBox(),s=t.validateInput||(()=>Promise.resolve(void 0)),a=an.debounce(o.onDidChangeValue,(h,g)=>g,100);let l=t.value||"",d=Promise.resolve(s(l));const u=[o,a(h=>{h!==l&&(d=Promise.resolve(s(h)),l=h),d.then(g=>{h===l&&this.setValidationOnInput(o,g)})}),o.onDidAccept(()=>{const h=o.value;h!==l&&(d=Promise.resolve(s(h)),l=h),d.then(g=>{!g||!fu(g)&&g.severity!==Sl.Error?(r(h),o.hide()):h===l&&this.setValidationOnInput(o,g)})}),n.onCancellationRequested(()=>{o.hide()}),o.onDidHide(()=>{us(u),r(void 0)})];o.title=t.title,o.value=t.value||"",o.valueSelection=t.valueSelection,o.prompt=t.prompt,o.placeholder=t.placeHolder,o.password=!!t.password,o.ignoreFocusOut=!!t.ignoreFocusLost,o.show()})}createQuickPick(t={useSeparators:!1}){const n=this.getUI(!0);return new GZ(n)}createInputBox(){const t=this.getUI(!0);return new P9o(t)}show(t){var s;const n=this.getUI(!0);this.onShowEmitter.fire();const r=this.controller;this.controller=t,r==null||r.didHide(),this.setEnabled(!0),n.leftActionBar.clear(),n.title.textContent="",n.description1.textContent="",n.description2.textContent="",mu(n.widget),n.rightActionBar.clear(),n.inlineActionBar.clear(),n.checkAll.checked=!1,n.inputBox.placeholder="",n.inputBox.password=!1,n.inputBox.showDecoration(Sl.Ignore),n.visibleCount.setCount(0),n.count.setCount(0),mu(n.message),n.progressBar.stop(),n.progressBar.getContainer().setAttribute("aria-hidden","true"),n.list.setElements([]),n.list.matchOnDescription=!1,n.list.matchOnDetail=!1,n.list.matchOnLabel=!0,n.list.sortByLabel=!0,n.tree.updateFilterOptions({matchOnDescription:!1,matchOnLabel:!0}),n.tree.sortByLabel=!0,n.ignoreFocusOut=!1,n.inputBox.toggles=void 0;const o=this.options.backKeybindingLabel();k$e.tooltip=o?U(1768,"Back ({0})",o):U(1769,"Back"),n.container.style.display="",this.updateLayout(),(s=this.dndController)==null||s.layoutContainer(),n.inputBox.setFocus(),this.quickInputTypeContext.set(t.type)}isVisible(){return!!this.ui&&this.ui.container.style.display!=="none"}setVisibilities(t){const n=this.getUI();n.title.style.display=t.title?"":"none",n.description1.style.display=t.description&&(t.inputBox||t.checkAll)?"":"none",n.description2.style.display=t.description&&!(t.inputBox||t.checkAll)?"":"none",n.checkAll.domNode.style.display=t.checkAll?"":"none",n.inputContainer.style.display=t.inputBox?"":"none",n.filterContainer.style.display=t.inputBox?"":"none",n.visibleCountContainer.style.display=t.visibleCount?"":"none",n.countContainer.style.display=t.count?"":"none",n.okContainer.style.display=t.ok?"":"none",n.customButtonContainer.style.display=t.customButton?"":"none",n.message.style.display=t.message?"":"none",n.progressBar.getContainer().style.display=t.progressBar?"":"none",n.list.displayed=!!t.list,n.tree.displayed=!!t.tree,n.container.classList.toggle("show-checkboxes",!!t.checkBox),n.container.classList.toggle("hidden-input",!t.inputBox&&!t.description),this.updateLayout()}setEnabled(t){if(t!==this.enabled){this.enabled=t;const n=this.getUI();for(const r of n.leftActionBar.viewItems)r.action.enabled=t;for(const r of n.rightActionBar.viewItems)r.action.enabled=t;t?n.checkAll.enable():n.checkAll.disable(),n.inputBox.enabled=t,n.ok.enabled=t,n.list.enabled=t}}hide(t){var s;const n=this.controller;if(!n)return;n.willHide(t);const r=(s=this.ui)==null?void 0:s.container,o=r&&!yEn(r);if(this.controller=null,this.onHideEmitter.fire(),r&&(r.style.display="none"),!o){let a=this.previousFocusElement;for(;a&&!a.offsetParent;)a=a.parentElement??void 0;a!=null&&a.offsetParent?(a.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}n.didHide(t)}toggleHover(){this.isVisible()&&this.controller instanceof GZ&&this.getUI().list.toggleHover()}layout(t,n){this.dimension=t,this.titleBarOffset=n,this.updateLayout()}updateLayout(){var t,n;if(this.ui&&this.isVisible()){const r=this.ui.container.style,o=Math.min(this.dimension.width*.62,y$e.MAX_WIDTH);r.width=o+"px",r.top=`${(t=this.viewState)!=null&&t.top?Math.round(this.dimension.height*this.viewState.top):this.titleBarOffset}px`,r.left=`${Math.round(this.dimension.width*(((n=this.viewState)==null?void 0:n.left)??.5)-o/2)}px`,this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4),this.ui.tree.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(t){this.styles=t,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:t,quickInputBackground:n,quickInputForeground:r,widgetBorder:o,widgetShadow:s}=this.styles.widget;this.ui.titleBar.style.backgroundColor=t??"",this.ui.container.style.backgroundColor=n??"",this.ui.container.style.color=r??"",this.ui.container.style.border=o?`1px solid ${o}`:"",this.ui.container.style.boxShadow=s?`0 0 8px 2px ${s}`:"",this.ui.list.style(this.styles.list),this.ui.tree.tree.style(this.styles.list);const a=[];this.styles.pickerGroup.pickerGroupBorder&&a.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&a.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&a.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(a.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&a.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&a.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&a.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&a.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&a.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),a.push("}"));const l=a.join(` -`);l!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=l)}}loadViewState(){try{const t=JSON.parse(this.storageService.get(c5e,-1,"{}"));if(t.top!==void 0||t.left!==void 0)return t}catch{}}saveViewState(t){this.layoutService.activeContainer===this.layoutService.mainContainer&&(t!==void 0?this.storageService.store(c5e,JSON.stringify(t),-1,1):this.storageService.remove(c5e,-1))}},y$e=SB,SB.MAX_WIDTH=600,SB);C$e=y$e=BMn([wQ(1,tC),wQ(2,Yn),wQ(3,Qi),wQ(4,Bg)],C$e);let _$e=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._container=t,this._quickInputContainer=n,this._quickInputDragAreas=r,this._layoutService=s,this.configurationService=l,this.dndViewState=Ti(this,void 0),this._snapThreshold=20,this._snapLineHorizontalRatio=.25,this._quickInputAlignmentContext=B9o.bindTo(a);const d=Rko(this.configurationService)==="custom";this._controlsOnLeft=d&&z8e===1,this._controlsOnRight=d&&(z8e===3||z8e===2),this._registerLayoutListener(),this.registerMouseListeners(),this.dndViewState.set({...o,done:!0},void 0)}reparentUI(t){this._container=t}layoutContainer(t=this._layoutService.activeContainerDimension){const n=this.dndViewState.get(),r=this._quickInputContainer.getBoundingClientRect();if(n!=null&&n.top&&(n!=null&&n.left)){const o=Math.round(n.left*100)/100,s=t.width,a=r.width,l=o*s-a/2;this._layout(n.top*t.height,l)}}_registerLayoutListener(){this._register(an.filter(this._layoutService.onDidLayoutContainer,t=>t.container===this._container)(t=>this.layoutContainer(t.dimension)))}registerMouseListeners(){const t=this._quickInputContainer;this._register(Cbt(t,n=>{const r=new Xh(ii(t),n);r.detail===2&&this._quickInputDragAreas.some(({node:o,includeChildren:s})=>s?gu(r.target,o):r.target===o)&&this.dndViewState.set({top:void 0,left:void 0,done:!0},void 0)})),this._register(pEn(t,n=>{const r=ii(this._layoutService.activeContainer),o=new Xh(r,n);if(!this._quickInputDragAreas.some(({node:g,includeChildren:m})=>m?gu(o.target,g):o.target===g))return;const s=this._quickInputContainer.getBoundingClientRect(),a=o.browserEvent.clientX-s.left,l=o.browserEvent.clientY-s.top;let d=!1;const u=Fto(r,g=>{new Xh(r,g).preventDefault(),d||(d=!0),this._layout(g.clientY-l,g.clientX-a)}),h=Cbt(r,g=>{if(d){const m=this.dndViewState.get();this.dndViewState.set({top:m==null?void 0:m.top,left:m==null?void 0:m.left,done:!0},void 0)}u.dispose(),h.dispose()})}))}_layout(t,n){const r=this._getTopSnapValue(),o=this._getCenterYSnapValue(),s=this._getCenterXSnapValue();t=Math.max(0,Math.min(t,this._container.clientHeight-this._quickInputContainer.clientHeight)),t=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},NX=function(e,t){return function(n,r){t(n,r,e)}};let S$e=class extends ylo{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get currentQuickInput(){return this.controller.currentQuickInput}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(m$e))),this._quickAccess}constructor(t,n,r,o,s){super(r),this.instantiationService=t,this.contextKeyService=n,this.layoutService=o,this.configurationService=s,this._onShow=this._register(new at),this._onHide=this._register(new at),this.contexts=new Map}createController(t=this.layoutService,n){const r={idPrefix:"quickInput_",container:t.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:s=>this.setContextKey(s),linkOpenerDelegate:s=>{this.instantiationService.invokeFunction(a=>{a.get(OL).open(s,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>t.focus(),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(v$e))},o=this._register(this.instantiationService.createInstance(C$e,{...r,...n}));return o.layout(t.activeContainerDimension,t.activeContainerOffset.quickPickTop),this._register(t.onDidLayoutActiveContainer(s=>{ii(t.activeContainer)===ii(o.container)&&o.layout(s,t.activeContainerOffset.quickPickTop)})),this._register(t.onDidChangeActiveContainer(()=>{o.isVisible()||o.layout(t.activeContainerDimension,t.activeContainerOffset.quickPickTop)})),this._register(o.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(o.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),o}setContextKey(t){let n;t&&(n=this.contexts.get(t),n||(n=new yn(t,!1).bindTo(this.contextKeyService),this.contexts.set(t,n))),!(n&&n.get())&&(this.resetContextKeys(),n==null||n.set(!0))}resetContextKeys(){this.contexts.forEach(t=>{t.get()&&t.reset()})}pick(t,n,r=Er.None){return this.controller.pick(t,n,r)}input(t={},n=Er.None){return this.controller.input(t,n)}createQuickPick(t={useSeparators:!1}){return this.controller.createQuickPick(t)}createInputBox(){return this.controller.createInputBox()}toggleHover(){this.hasController&&this.controller.toggleHover()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:en(mLe),quickInputForeground:en(hao),quickInputTitleBackground:en(fao),widgetBorder:en(Cet),widgetShadow:en(Jz)},inputBox:R1e,toggle:B1e,countBadge:gDn,button:Lko,progressBar:xko,keybindingLabel:fDn,list:TI({listBackground:mLe,listFocusBackground:aJ,listFocusForeground:sJ,listInactiveFocusForeground:sJ,listInactiveSelectionIconForeground:Qet,listInactiveFocusBackground:aJ,listFocusOutline:Va,listInactiveFocusOutline:Va,treeStickyScrollBackground:mLe}),pickerGroup:{pickerGroupBorder:en(gao),pickerGroupForeground:en(M7n)}}}};S$e=r6o([NX(0,Yn),NX(1,Qi),NX(2,Dl),NX(3,tC),NX(4,ar)],S$e);var RMn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RT=function(e,t){return function(n,r){t(n,r,e)}};let L$e=class extends S$e{constructor(t,n,r,o,s,a){super(n,r,o,new ZHe(t.getContainerDomNode(),s),a),this.host=void 0;const l=See.get(t);if(l){const d=l.widget;this.host={_serviceBrand:void 0,get mainContainer(){return d.getDomNode()},getContainer(){return d.getDomNode()},whenContainerStylesLoaded(){},get containers(){return[d.getDomNode()]},get activeContainer(){return d.getDomNode()},get mainContainerDimension(){return t.getLayoutInfo()},get activeContainerDimension(){return t.getLayoutInfo()},get onDidLayoutMainContainer(){return t.onDidLayoutChange},get onDidLayoutActiveContainer(){return t.onDidLayoutChange},get onDidLayoutContainer(){return an.map(t.onDidLayoutChange,u=>({container:d.getDomNode(),dimension:u}))},get onDidChangeActiveContainer(){return an.None},get onDidAddContainer(){return an.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>t.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};L$e=RMn([RT(1,Yn),RT(2,Qi),RT(3,Dl),RT(4,yo),RT(5,ar)],L$e);let x$e=class{get activeService(){const t=this.codeEditorService.getFocusedCodeEditor();if(!t)throw new Error("Quick input service needs a focused editor to work.");let n=this.mapEditorToService.get(t);if(!n){const r=n=this.instantiationService.createInstance(L$e,t);this.mapEditorToService.set(t,n),iR(t.onDidDispose)(()=>{r.dispose(),this.mapEditorToService.delete(t)})}return n}get currentQuickInput(){return this.activeService.currentQuickInput}get quickAccess(){return this.activeService.quickAccess}constructor(t,n){this.instantiationService=t,this.codeEditorService=n,this.mapEditorToService=new Map}pick(t,n,r=Er.None){return this.activeService.pick(t,n,r)}input(t,n){return this.activeService.input(t,n)}createQuickPick(t={useSeparators:!1}){return this.activeService.createQuickPick(t)}createInputBox(){return this.activeService.createInputBox()}toggleHover(){return this.activeService.toggleHover()}};x$e=RMn([RT(0,Yn),RT(1,yo)],x$e);const YAe=class YAe{static get(t){return t.getContribution(YAe.ID)}constructor(t){this.editor=t,this.widget=new E$e(this.editor)}dispose(){this.widget.dispose()}};YAe.ID="editor.controller.quickInput";let See=YAe;const ZAe=class ZAe{constructor(t){this.codeEditor=t,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return ZAe.ID}getDomNode(){return this.domNode}getPosition(){return{preference:{top:0,left:0}}}dispose(){this.codeEditor.removeOverlayWidget(this)}};ZAe.ID="editor.contrib.quickInputWidget";let E$e=ZAe;mo(See.ID,See,4);var o6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},d5e=function(e,t){return function(n,r){t(n,r,e)}};let T$e=class extends ft{constructor(t,n,r){super(),this._contextKeyService=t,this._layoutService=n,this._configurationService=r,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new at,this._onDidChangeReducedMotion=new at,this._onDidChangeLinkUnderline=new at,this._accessibilityModeEnabledContext=qz.bindTo(this._contextKeyService);const o=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration("editor.accessibilitySupport")&&(o(),this._onDidChangeScreenReaderOptimized.fire()),a.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),o(),this._register(this.onDidChangeScreenReaderOptimized(()=>o()));const s=Ls.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=s.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._linkUnderlinesEnabled=this._configurationService.getValue("accessibility.underlineLinks"),this.initReducedMotionListeners(s),this.initLinkUnderlineListeners()}initReducedMotionListeners(t){this._register(wt(t,"change",()=>{this._systemMotionReduced=t.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const n=()=>{const r=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("monaco-reduce-motion",r),this._layoutService.mainContainer.classList.toggle("monaco-enable-motion",!r)};n(),this._register(this.onDidChangeReducedMotion(()=>n()))}initLinkUnderlineListeners(){this._register(this._configurationService.onDidChangeConfiguration(n=>{if(n.affectsConfiguration("accessibility.underlineLinks")){const r=this._configurationService.getValue("accessibility.underlineLinks");this._linkUnderlinesEnabled=r,this._onDidChangeLinkUnderline.fire()}}));const t=()=>{const n=this._linkUnderlinesEnabled;this._layoutService.mainContainer.classList.toggle("underline-links",n)};t(),this._register(this.onDidChangeLinkUnderlines(()=>t()))}onDidChangeLinkUnderlines(t){return this._onDidChangeLinkUnderline.event(t)}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const t=this._configurationService.getValue("editor.accessibilitySupport");return t==="on"||t==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const t=this._configMotionReduced;return t==="on"||t==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};T$e=o6o([d5e(0,Qi),d5e(1,tC),d5e(2,ar)],T$e);var s6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gSt=function(e,t){return function(n,r){t(n,r,e)}},Q$e;const mSt="application/vnd.code.resources";var LB;let D$e=(LB=class extends ft{constructor(t,n){super(),this.layoutService=t,this.logService=n,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(eR||x6n)&&this.installWebKitWriteTextWorkaround(),this._register(an.runAndSubscribe(xie,({window:r,disposables:o})=>{o.add(wt(r.document,"copy",()=>this.clearResourcesState()))},{window:Ls,disposables:this._store}))}triggerPaste(){this.logService.trace("BrowserClipboardService#triggerPaste")}installWebKitWriteTextWorkaround(){const t=()=>{const n=new pI;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=n,vs().navigator.clipboard.write([new ClipboardItem({"text/plain":n.p})]).catch(async r=>{(!(r instanceof Error)||r.name!=="NotAllowedError"||!n.isRejected)&&this.logService.error(r)})};this._register(an.runAndSubscribe(this.layoutService.onDidAddContainer,({container:n,disposables:r})=>{r.add(wt(n,"click",t)),r.add(wt(n,"keydown",t))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(t,n){if(this.logService.trace("BrowserClipboardService#writeText called with type:",n," text.length:",t.length),this.clearResourcesState(),n){this.mapTextToType.set(n,t),this.logService.trace("BrowserClipboardService#writeText");return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(t);try{return this.logService.trace("before navigator.clipboard.writeText"),await vs().navigator.clipboard.writeText(t)}catch(r){console.error(r)}this.fallbackWriteText(t)}fallbackWriteText(t){this.logService.trace("BrowserClipboardService#fallbackWriteText");const n=Eie(),r=n.activeElement,o=n.body.appendChild(tn("textarea",{"aria-hidden":!0}));o.style.height="1px",o.style.width="1px",o.style.position="absolute",o.value=t,o.focus(),o.select(),n.execCommand("copy"),ec(r)&&r.focus(),o.remove()}async readText(t){if(this.logService.trace("BrowserClipboardService#readText called with type:",t),t){const n=this.mapTextToType.get(t)||"";return this.logService.trace("BrowserClipboardService#readText text.length:",n.length),n}try{const n=await vs().navigator.clipboard.readText();return this.logService.trace("BrowserClipboardService#readText text.length:",n.length),n}catch(n){console.error(n)}return""}async readFindText(){return this.findText}async writeFindText(t){this.findText=t}async readResources(){try{const n=await vs().navigator.clipboard.read();for(const r of n)if(r.types.includes(`web ${mSt}`)){const o=await r.getType(`web ${mSt}`);return JSON.parse(await o.text()).map(a=>vi.from(a))}}catch{}const t=await this.computeResourcesStateHash();return this.resourcesStateHash!==t&&this.clearResourcesState(),this.resources}async computeResourcesStateHash(){if(this.resources.length===0)return;const t=await this.readText();return Lie(t.substring(0,Q$e.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearInternalState(){this.clearResourcesState()}clearResourcesState(){this.resources=[],this.resourcesStateHash=void 0}},Q$e=LB,LB.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,LB);D$e=Q$e=s6o([gSt(0,tC),gSt(1,va)],D$e);var a6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},l6o=function(e,t){return function(n,r){t(n,r,e)}};const YZ="data-keybinding-context";class hit{constructor(t,n){this._id=t,this._parent=n,this._value=Object.create(null),this._value._contextId=t}get value(){return{...this._value}}setValue(t,n){return this._value[t]!==n?(this._value[t]=n,!0):!1}removeValue(t){return t in this._value?(delete this._value[t],!0):!1}getValue(t){const n=this._value[t];return typeof n>"u"&&this._parent?this._parent.getValue(t):n}}const qAe=class qAe extends hit{constructor(){super(-1,null)}setValue(t,n){return!1}removeValue(t){return!1}getValue(t){}};qAe.INSTANCE=new qAe;let QV=qAe;const Bq=class Bq extends hit{constructor(t,n,r){super(t,null),this._configurationService=n,this._values=zU.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(o=>{if(o.source===7){const s=Array.from(this._values,([a])=>a);this._values.clear(),r.fire(new vSt(s))}else{const s=[];for(const a of o.affectedKeys){const l=`config.${a}`,d=this._values.findSuperstr(l);d!==void 0&&(s.push(...to.map(d,([u])=>u)),this._values.deleteSuperstr(l)),this._values.has(l)&&(s.push(l),this._values.delete(l))}r.fire(new vSt(s))}})}dispose(){this._listener.dispose()}getValue(t){if(t.indexOf(Bq._keyPrefix)!==0)return super.getValue(t);if(this._values.has(t))return this._values.get(t);const n=t.substr(Bq._keyPrefix.length),r=this._configurationService.getValue(n);let o;switch(typeof r){case"number":case"boolean":case"string":o=r;break;default:Array.isArray(r)?o=JSON.stringify(r):o=r}return this._values.set(t,o),o}setValue(t,n){return super.setValue(t,n)}removeValue(t){return super.removeValue(t)}};Bq._keyPrefix="config.";let B$e=Bq;class c6o{constructor(t,n,r){this._service=t,this._key=n,this._defaultValue=r,this.reset()}set(t){this._service.setContext(this._key,t)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class kSt{constructor(t){this.key=t}affectsSome(t){return t.has(this.key)}allKeysContainedIn(t){return this.affectsSome(t)}}class vSt{constructor(t){this.keys=t}affectsSome(t){for(const n of this.keys)if(t.has(n))return!0;return!1}allKeysContainedIn(t){return this.keys.every(n=>t.has(n))}}class d6o{constructor(t){this.events=t}affectsSome(t){for(const n of this.events)if(n.affectsSome(t))return!0;return!1}allKeysContainedIn(t){return this.events.every(n=>n.allKeysContainedIn(t))}}function u6o(e,t){return e.allKeysContainedIn(new Set(Object.keys(t)))}class IMn extends ft{get onDidChangeContext(){return this._onDidChangeContext.event}constructor(t){super(),this._onDidChangeContext=this._register(new rR({merge:n=>new d6o(n)})),this._isDisposed=!1,this._myContextId=t}createKey(t,n){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new c6o(this,t,n)}bufferChangeEvents(t){this._onDidChangeContext.pause();try{t()}finally{this._onDidChangeContext.resume()}}createScoped(t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new h6o(this,t)}contextMatchesRules(t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const n=this.getContextValuesContainer(this._myContextId);return t?t.evaluate(n):!0}getContextKeyValue(t){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(t)}setContext(t,n){if(this._isDisposed)return;const r=this.getContextValuesContainer(this._myContextId);r&&r.setValue(t,n)&&this._onDidChangeContext.fire(new kSt(t))}removeContext(t){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(t)&&this._onDidChangeContext.fire(new kSt(t))}getContext(t){return this._isDisposed?QV.INSTANCE:this.getContextValuesContainer(f6o(t))}dispose(){super.dispose(),this._isDisposed=!0}}let R$e=class extends IMn{constructor(t){super(0),this._contexts=new Map,this._lastContextId=0,this.inputFocusedContext=unt.bindTo(this);const n=this._register(new B$e(this._myContextId,t,this._onDidChangeContext));this._contexts.set(this._myContextId,n),this._register(an.runAndSubscribe(xie,({window:r,disposables:o})=>{const s=o.add(new ts);o.add(wt(r,rn.FOCUS_IN,()=>{s.value=new xt,this.updateInputContextKeys(r.document,s.value)},!0))},{window:Ls,disposables:this._store}))}updateInputContextKeys(t,n){function r(){return!!t.activeElement&&s3(t.activeElement)}const o=r();if(this.inputFocusedContext.set(o),o){const s=n.add(uA(t.activeElement));an.once(s.onDidBlur)(()=>{vs().document===t&&this.inputFocusedContext.set(r()),s.dispose()},void 0,n)}}getContextValuesContainer(t){return this._isDisposed?QV.INSTANCE:this._contexts.get(t)||QV.INSTANCE}createChildContext(t=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const n=++this._lastContextId;return this._contexts.set(n,new hit(n,this.getContextValuesContainer(t))),n}disposeContext(t){this._isDisposed||this._contexts.delete(t)}};R$e=a6o([l6o(0,ar)],R$e);class h6o extends IMn{constructor(t,n){if(super(t.createChildContext()),this._parentChangeListener=this._register(new ts),this._parent=t,this._updateParentChangeListener(),this._domNode=n,this._domNode.hasAttribute(YZ)){let r="";this._domNode.classList&&(r=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${r?": "+r:""}`)}this._domNode.setAttribute(YZ,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(t=>{const r=this._parent.getContextValuesContainer(this._myContextId).value;u6o(t,r)||this._onDidChangeContext.fire(t)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(YZ),super.dispose())}getContextValuesContainer(t){return this._isDisposed?QV.INSTANCE:this._parent.getContextValuesContainer(t)}createChildContext(t=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(t)}disposeContext(t){this._isDisposed||this._parent.disposeContext(t)}}function f6o(e){for(;e;){if(e.hasAttribute(YZ)){const t=e.getAttribute(YZ);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}function g6o(e,t,n){e.get(Qi).createKey(String(t),m6o(n))}function m6o(e){return XEn(e,t=>{if(typeof t=="object"&&t.$mid===1)return vi.revive(t).toString();if(t instanceof vi)return t.toString()})}co.registerCommand("_setContext",g6o);co.registerCommand({id:"getContextKeyInfo",handler(){return[...yn.all()].sort((e,t)=>e.key.localeCompare(t.key))},metadata:{description:U(1674,"A command that returns information about context keys"),args:[]}});co.registerCommand("_generateContextKeyInfo",function(){const e=[],t=new Set;for(const n of yn.all())t.has(n.key)||(t.add(n.key),e.push(n));e.sort((n,r)=>n.key.localeCompare(r.key)),console.log(JSON.stringify(e,void 0,2))});let k6o=class{constructor(t,n){this.key=t,this.data=n,this.incoming=new Map,this.outgoing=new Map}};class ASt{constructor(t){this._hashFn=t,this._nodes=new Map}roots(){const t=[];for(const n of this._nodes.values())n.outgoing.size===0&&t.push(n);return t}insertEdge(t,n){const r=this.lookupOrInsertNode(t),o=this.lookupOrInsertNode(n);r.outgoing.set(o.key,o),o.incoming.set(r.key,r)}removeNode(t){const n=this._hashFn(t);this._nodes.delete(n);for(const r of this._nodes.values())r.outgoing.delete(n),r.incoming.delete(n)}lookupOrInsertNode(t){const n=this._hashFn(t);let r=this._nodes.get(n);return r||(r=new k6o(n,t),this._nodes.set(n,r)),r}isEmpty(){return this._nodes.size===0}toString(){const t=[];for(const[n,r]of this._nodes)t.push(`${n} +`);l!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=l)}}loadViewState(){try{const t=JSON.parse(this.storageService.get(c5e,-1,"{}"));if(t.top!==void 0||t.left!==void 0)return t}catch{}}saveViewState(t){this.layoutService.activeContainer===this.layoutService.mainContainer&&(t!==void 0?this.storageService.store(c5e,JSON.stringify(t),-1,1):this.storageService.remove(c5e,-1))}},y$e=SB,SB.MAX_WIDTH=600,SB);C$e=y$e=BMn([wQ(1,tC),wQ(2,Yn),wQ(3,Qi),wQ(4,Bg)],C$e);let _$e=class extends ft{constructor(t,n,r,o,s,a,l){super(),this._container=t,this._quickInputContainer=n,this._quickInputDragAreas=r,this._layoutService=s,this.configurationService=l,this.dndViewState=Ti(this,void 0),this._snapThreshold=20,this._snapLineHorizontalRatio=.25,this._quickInputAlignmentContext=B9o.bindTo(a);const d=Rko(this.configurationService)==="custom";this._controlsOnLeft=d&&z8e===1,this._controlsOnRight=d&&(z8e===3||z8e===2),this._registerLayoutListener(),this.registerMouseListeners(),this.dndViewState.set({...o,done:!0},void 0)}reparentUI(t){this._container=t}layoutContainer(t=this._layoutService.activeContainerDimension){const n=this.dndViewState.get(),r=this._quickInputContainer.getBoundingClientRect();if(n!=null&&n.top&&(n!=null&&n.left)){const o=Math.round(n.left*100)/100,s=t.width,a=r.width,l=o*s-a/2;this._layout(n.top*t.height,l)}}_registerLayoutListener(){this._register(an.filter(this._layoutService.onDidLayoutContainer,t=>t.container===this._container)(t=>this.layoutContainer(t.dimension)))}registerMouseListeners(){const t=this._quickInputContainer;this._register(Cbt(t,n=>{const r=new Xh(ii(t),n);r.detail===2&&this._quickInputDragAreas.some(({node:o,includeChildren:s})=>s?gu(r.target,o):r.target===o)&&this.dndViewState.set({top:void 0,left:void 0,done:!0},void 0)})),this._register(pEn(t,n=>{const r=ii(this._layoutService.activeContainer),o=new Xh(r,n);if(!this._quickInputDragAreas.some(({node:g,includeChildren:m})=>m?gu(o.target,g):o.target===g))return;const s=this._quickInputContainer.getBoundingClientRect(),a=o.browserEvent.clientX-s.left,l=o.browserEvent.clientY-s.top;let d=!1;const u=Fto(r,g=>{new Xh(r,g).preventDefault(),d||(d=!0),this._layout(g.clientY-l,g.clientX-a)}),h=Cbt(r,g=>{if(d){const m=this.dndViewState.get();this.dndViewState.set({top:m==null?void 0:m.top,left:m==null?void 0:m.left,done:!0},void 0)}u.dispose(),h.dispose()})}))}_layout(t,n){const r=this._getTopSnapValue(),o=this._getCenterYSnapValue(),s=this._getCenterXSnapValue();t=Math.max(0,Math.min(t,this._container.clientHeight-this._quickInputContainer.clientHeight)),t=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},NX=function(e,t){return function(n,r){t(n,r,e)}};let S$e=class extends ylo{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get currentQuickInput(){return this.controller.currentQuickInput}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(m$e))),this._quickAccess}constructor(t,n,r,o,s){super(r),this.instantiationService=t,this.contextKeyService=n,this.layoutService=o,this.configurationService=s,this._onShow=this._register(new at),this._onHide=this._register(new at),this.contexts=new Map}createController(t=this.layoutService,n){const r={idPrefix:"quickInput_",container:t.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:s=>this.setContextKey(s),linkOpenerDelegate:s=>{this.instantiationService.invokeFunction(a=>{a.get(OL).open(s,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>t.focus(),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(v$e))},o=this._register(this.instantiationService.createInstance(C$e,{...r,...n}));return o.layout(t.activeContainerDimension,t.activeContainerOffset.quickPickTop),this._register(t.onDidLayoutActiveContainer(s=>{ii(t.activeContainer)===ii(o.container)&&o.layout(s,t.activeContainerOffset.quickPickTop)})),this._register(t.onDidChangeActiveContainer(()=>{o.isVisible()||o.layout(t.activeContainerDimension,t.activeContainerOffset.quickPickTop)})),this._register(o.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(o.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),o}setContextKey(t){let n;t&&(n=this.contexts.get(t),n||(n=new yn(t,!1).bindTo(this.contextKeyService),this.contexts.set(t,n))),!(n&&n.get())&&(this.resetContextKeys(),n==null||n.set(!0))}resetContextKeys(){this.contexts.forEach(t=>{t.get()&&t.reset()})}pick(t,n,r=Er.None){return this.controller.pick(t,n,r)}input(t={},n=Er.None){return this.controller.input(t,n)}createQuickPick(t={useSeparators:!1}){return this.controller.createQuickPick(t)}createInputBox(){return this.controller.createInputBox()}toggleHover(){this.hasController&&this.controller.toggleHover()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:en(mLe),quickInputForeground:en(hao),quickInputTitleBackground:en(fao),widgetBorder:en(Cet),widgetShadow:en(Jz)},inputBox:R1e,toggle:B1e,countBadge:gDn,button:Lko,progressBar:xko,keybindingLabel:fDn,list:TI({listBackground:mLe,listFocusBackground:aJ,listFocusForeground:sJ,listInactiveFocusForeground:sJ,listInactiveSelectionIconForeground:Qet,listInactiveFocusBackground:aJ,listFocusOutline:Va,listInactiveFocusOutline:Va,treeStickyScrollBackground:mLe}),pickerGroup:{pickerGroupBorder:en(gao),pickerGroupForeground:en(M7n)}}}};S$e=r6o([NX(0,Yn),NX(1,Qi),NX(2,Dl),NX(3,tC),NX(4,ar)],S$e);var RMn=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},RT=function(e,t){return function(n,r){t(n,r,e)}};let L$e=class extends S$e{constructor(t,n,r,o,s,a){super(n,r,o,new ZHe(t.getContainerDomNode(),s),a),this.host=void 0;const l=See.get(t);if(l){const d=l.widget;this.host={_serviceBrand:void 0,get mainContainer(){return d.getDomNode()},getContainer(){return d.getDomNode()},whenContainerStylesLoaded(){},get containers(){return[d.getDomNode()]},get activeContainer(){return d.getDomNode()},get mainContainerDimension(){return t.getLayoutInfo()},get activeContainerDimension(){return t.getLayoutInfo()},get onDidLayoutMainContainer(){return t.onDidLayoutChange},get onDidLayoutActiveContainer(){return t.onDidLayoutChange},get onDidLayoutContainer(){return an.map(t.onDidLayoutChange,u=>({container:d.getDomNode(),dimension:u}))},get onDidChangeActiveContainer(){return an.None},get onDidAddContainer(){return an.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>t.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};L$e=RMn([RT(1,Yn),RT(2,Qi),RT(3,Dl),RT(4,yo),RT(5,ar)],L$e);let x$e=class{get activeService(){const t=this.codeEditorService.getFocusedCodeEditor();if(!t)throw new Error("Quick input service needs a focused editor to work.");let n=this.mapEditorToService.get(t);if(!n){const r=n=this.instantiationService.createInstance(L$e,t);this.mapEditorToService.set(t,n),iR(t.onDidDispose)(()=>{r.dispose(),this.mapEditorToService.delete(t)})}return n}get currentQuickInput(){return this.activeService.currentQuickInput}get quickAccess(){return this.activeService.quickAccess}constructor(t,n){this.instantiationService=t,this.codeEditorService=n,this.mapEditorToService=new Map}pick(t,n,r=Er.None){return this.activeService.pick(t,n,r)}input(t,n){return this.activeService.input(t,n)}createQuickPick(t={useSeparators:!1}){return this.activeService.createQuickPick(t)}createInputBox(){return this.activeService.createInputBox()}toggleHover(){return this.activeService.toggleHover()}};x$e=RMn([RT(0,Yn),RT(1,yo)],x$e);const YAe=class YAe{static get(t){return t.getContribution(YAe.ID)}constructor(t){this.editor=t,this.widget=new E$e(this.editor)}dispose(){this.widget.dispose()}};YAe.ID="editor.controller.quickInput";let See=YAe;const ZAe=class ZAe{constructor(t){this.codeEditor=t,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return ZAe.ID}getDomNode(){return this.domNode}getPosition(){return{preference:{top:0,left:0}}}dispose(){this.codeEditor.removeOverlayWidget(this)}};ZAe.ID="editor.contrib.quickInputWidget";let E$e=ZAe;mo(See.ID,See,4);var o6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},d5e=function(e,t){return function(n,r){t(n,r,e)}};let T$e=class extends ft{constructor(t,n,r){super(),this._contextKeyService=t,this._layoutService=n,this._configurationService=r,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new at,this._onDidChangeReducedMotion=new at,this._onDidChangeLinkUnderline=new at,this._accessibilityModeEnabledContext=qz.bindTo(this._contextKeyService);const o=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration("editor.accessibilitySupport")&&(o(),this._onDidChangeScreenReaderOptimized.fire()),a.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),o(),this._register(this.onDidChangeScreenReaderOptimized(()=>o()));const s=Ls.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=s.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._linkUnderlinesEnabled=this._configurationService.getValue("accessibility.underlineLinks"),this.initReducedMotionListeners(s),this.initLinkUnderlineListeners()}initReducedMotionListeners(t){this._register(wt(t,"change",()=>{this._systemMotionReduced=t.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const n=()=>{const r=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("monaco-reduce-motion",r),this._layoutService.mainContainer.classList.toggle("monaco-enable-motion",!r)};n(),this._register(this.onDidChangeReducedMotion(()=>n()))}initLinkUnderlineListeners(){this._register(this._configurationService.onDidChangeConfiguration(n=>{if(n.affectsConfiguration("accessibility.underlineLinks")){const r=this._configurationService.getValue("accessibility.underlineLinks");this._linkUnderlinesEnabled=r,this._onDidChangeLinkUnderline.fire()}}));const t=()=>{const n=this._linkUnderlinesEnabled;this._layoutService.mainContainer.classList.toggle("underline-links",n)};t(),this._register(this.onDidChangeLinkUnderlines(()=>t()))}onDidChangeLinkUnderlines(t){return this._onDidChangeLinkUnderline.event(t)}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const t=this._configurationService.getValue("editor.accessibilitySupport");return t==="on"||t==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const t=this._configMotionReduced;return t==="on"||t==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};T$e=o6o([d5e(0,Qi),d5e(1,tC),d5e(2,ar)],T$e);var s6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},gSt=function(e,t){return function(n,r){t(n,r,e)}},Q$e;const mSt="application/vnd.code.resources";var LB;let D$e=(LB=class extends ft{constructor(t,n){super(),this.layoutService=t,this.logService=n,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(eR||x6n)&&this.installWebKitWriteTextWorkaround(),this._register(an.runAndSubscribe(xie,({window:r,disposables:o})=>{o.add(wt(r.document,"copy",()=>this.clearResourcesState()))},{window:Ls,disposables:this._store}))}triggerPaste(){this.logService.trace("BrowserClipboardService#triggerPaste")}installWebKitWriteTextWorkaround(){const t=()=>{const n=new pI;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=n,vs().navigator.clipboard.write([new ClipboardItem({"text/plain":n.p})]).catch(async r=>{(!(r instanceof Error)||r.name!=="NotAllowedError"||!n.isRejected)&&this.logService.error(r)})};this._register(an.runAndSubscribe(this.layoutService.onDidAddContainer,({container:n,disposables:r})=>{r.add(wt(n,"click",t)),r.add(wt(n,"keydown",t))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(t,n){if(this.logService.trace("BrowserClipboardService#writeText called with type:",n," text.length:",t.length),this.clearResourcesState(),n){this.mapTextToType.set(n,t),this.logService.trace("BrowserClipboardService#writeText");return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(t);try{return this.logService.trace("before navigator.clipboard.writeText"),await vs().navigator.clipboard.writeText(t)}catch(r){console.error(r)}this.fallbackWriteText(t)}fallbackWriteText(t){this.logService.trace("BrowserClipboardService#fallbackWriteText");const n=Eie(),r=n.activeElement,o=n.body.appendChild(tn("textarea",{"aria-hidden":!0}));o.style.height="1px",o.style.width="1px",o.style.position="absolute",o.value=t,o.focus(),o.select(),n.execCommand("copy"),ec(r)&&r.focus(),o.remove()}async readText(t){if(this.logService.trace("BrowserClipboardService#readText called with type:",t),t){const n=this.mapTextToType.get(t)||"";return this.logService.trace("BrowserClipboardService#readText text.length:",n.length),n}try{const n=await vs().navigator.clipboard.readText();return this.logService.trace("BrowserClipboardService#readText text.length:",n.length),n}catch(n){console.error(n)}return""}async readFindText(){return this.findText}async writeFindText(t){this.findText=t}async readResources(){try{const n=await vs().navigator.clipboard.read();for(const r of n)if(r.types.includes(`web ${mSt}`)){const o=await r.getType(`web ${mSt}`);return JSON.parse(await o.text()).map(a=>vi.from(a))}}catch{}const t=await this.computeResourcesStateHash();return this.resourcesStateHash!==t&&this.clearResourcesState(),this.resources}async computeResourcesStateHash(){if(this.resources.length===0)return;const t=await this.readText();return Lie(t.substring(0,Q$e.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearInternalState(){this.clearResourcesState()}clearResourcesState(){this.resources=[],this.resourcesStateHash=void 0}},Q$e=LB,LB.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,LB);D$e=Q$e=s6o([gSt(0,tC),gSt(1,va)],D$e);var a6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},l6o=function(e,t){return function(n,r){t(n,r,e)}};const YZ="data-keybinding-context";class hit{constructor(t,n){this._id=t,this._parent=n,this._value=Object.create(null),this._value._contextId=t}get value(){return{...this._value}}setValue(t,n){return this._value[t]!==n?(this._value[t]=n,!0):!1}removeValue(t){return t in this._value?(delete this._value[t],!0):!1}getValue(t){const n=this._value[t];return typeof n>"u"&&this._parent?this._parent.getValue(t):n}}const qAe=class qAe extends hit{constructor(){super(-1,null)}setValue(t,n){return!1}removeValue(t){return!1}getValue(t){}};qAe.INSTANCE=new qAe;let QV=qAe;const Bq=class Bq extends hit{constructor(t,n,r){super(t,null),this._configurationService=n,this._values=zU.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(o=>{if(o.source===7){const s=Array.from(this._values,([a])=>a);this._values.clear(),r.fire(new vSt(s))}else{const s=[];for(const a of o.affectedKeys){const l=`config.${a}`,d=this._values.findSuperstr(l);d!==void 0&&(s.push(...to.map(d,([u])=>u)),this._values.deleteSuperstr(l)),this._values.has(l)&&(s.push(l),this._values.delete(l))}r.fire(new vSt(s))}})}dispose(){this._listener.dispose()}getValue(t){if(t.indexOf(Bq._keyPrefix)!==0)return super.getValue(t);if(this._values.has(t))return this._values.get(t);const n=t.substr(Bq._keyPrefix.length),r=this._configurationService.getValue(n);let o;switch(typeof r){case"number":case"boolean":case"string":o=r;break;default:Array.isArray(r)?o=JSON.stringify(r):o=r}return this._values.set(t,o),o}setValue(t,n){return super.setValue(t,n)}removeValue(t){return super.removeValue(t)}};Bq._keyPrefix="config.";let B$e=Bq;class c6o{constructor(t,n,r){this._service=t,this._key=n,this._defaultValue=r,this.reset()}set(t){this._service.setContext(this._key,t)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class kSt{constructor(t){this.key=t}affectsSome(t){return t.has(this.key)}allKeysContainedIn(t){return this.affectsSome(t)}}class vSt{constructor(t){this.keys=t}affectsSome(t){for(const n of this.keys)if(t.has(n))return!0;return!1}allKeysContainedIn(t){return this.keys.every(n=>t.has(n))}}class d6o{constructor(t){this.events=t}affectsSome(t){for(const n of this.events)if(n.affectsSome(t))return!0;return!1}allKeysContainedIn(t){return this.events.every(n=>n.allKeysContainedIn(t))}}function u6o(e,t){return e.allKeysContainedIn(new Set(Object.keys(t)))}class IMn extends ft{get onDidChangeContext(){return this._onDidChangeContext.event}constructor(t){super(),this._onDidChangeContext=this._register(new rR({merge:n=>new d6o(n)})),this._isDisposed=!1,this._myContextId=t}createKey(t,n){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new c6o(this,t,n)}bufferChangeEvents(t){this._onDidChangeContext.pause();try{t()}finally{this._onDidChangeContext.resume()}}createScoped(t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new h6o(this,t)}contextMatchesRules(t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const n=this.getContextValuesContainer(this._myContextId);return t?t.evaluate(n):!0}getContextKeyValue(t){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(t)}setContext(t,n){if(this._isDisposed)return;const r=this.getContextValuesContainer(this._myContextId);r&&r.setValue(t,n)&&this._onDidChangeContext.fire(new kSt(t))}removeContext(t){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(t)&&this._onDidChangeContext.fire(new kSt(t))}getContext(t){return this._isDisposed?QV.INSTANCE:this.getContextValuesContainer(f6o(t))}dispose(){super.dispose(),this._isDisposed=!0}}let R$e=class extends IMn{constructor(t){super(0),this._contexts=new Map,this._lastContextId=0,this.inputFocusedContext=unt.bindTo(this);const n=this._register(new B$e(this._myContextId,t,this._onDidChangeContext));this._contexts.set(this._myContextId,n),this._register(an.runAndSubscribe(xie,({window:r,disposables:o})=>{const s=o.add(new ts);o.add(wt(r,rn.FOCUS_IN,()=>{s.value=new xt,this.updateInputContextKeys(r.document,s.value)},!0))},{window:Ls,disposables:this._store}))}updateInputContextKeys(t,n){function r(){return!!t.activeElement&&s3(t.activeElement)}const o=r();if(this.inputFocusedContext.set(o),o){const s=n.add(uA(t.activeElement));an.once(s.onDidBlur)(()=>{vs().document===t&&this.inputFocusedContext.set(r()),s.dispose()},void 0,n)}}getContextValuesContainer(t){return this._isDisposed?QV.INSTANCE:this._contexts.get(t)||QV.INSTANCE}createChildContext(t=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const n=++this._lastContextId;return this._contexts.set(n,new hit(n,this.getContextValuesContainer(t))),n}disposeContext(t){this._isDisposed||this._contexts.delete(t)}};R$e=a6o([l6o(0,ar)],R$e);class h6o extends IMn{constructor(t,n){if(super(t.createChildContext()),this._parentChangeListener=this._register(new ts),this._parent=t,this._updateParentChangeListener(),this._domNode=n,this._domNode.hasAttribute(YZ)){let r="";this._domNode.classList&&(r=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${r?": "+r:""}`)}this._domNode.setAttribute(YZ,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(t=>{const r=this._parent.getContextValuesContainer(this._myContextId).value;u6o(t,r)||this._onDidChangeContext.fire(t)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(YZ),super.dispose())}getContextValuesContainer(t){return this._isDisposed?QV.INSTANCE:this._parent.getContextValuesContainer(t)}createChildContext(t=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(t)}disposeContext(t){this._isDisposed||this._parent.disposeContext(t)}}function f6o(e){for(;e;){if(e.hasAttribute(YZ)){const t=e.getAttribute(YZ);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}function g6o(e,t,n){e.get(Qi).createKey(String(t),m6o(n))}function m6o(e){return XEn(e,t=>{if(typeof t=="object"&&t.$mid===1)return vi.revive(t).toString();if(t instanceof vi)return t.toString()})}uo.registerCommand("_setContext",g6o);uo.registerCommand({id:"getContextKeyInfo",handler(){return[...yn.all()].sort((e,t)=>e.key.localeCompare(t.key))},metadata:{description:U(1674,"A command that returns information about context keys"),args:[]}});uo.registerCommand("_generateContextKeyInfo",function(){const e=[],t=new Set;for(const n of yn.all())t.has(n.key)||(t.add(n.key),e.push(n));e.sort((n,r)=>n.key.localeCompare(r.key)),console.log(JSON.stringify(e,void 0,2))});let k6o=class{constructor(t,n){this.key=t,this.data=n,this.incoming=new Map,this.outgoing=new Map}};class ASt{constructor(t){this._hashFn=t,this._nodes=new Map}roots(){const t=[];for(const n of this._nodes.values())n.outgoing.size===0&&t.push(n);return t}insertEdge(t,n){const r=this.lookupOrInsertNode(t),o=this.lookupOrInsertNode(n);r.outgoing.set(o.key,o),o.incoming.set(r.key,r)}removeNode(t){const n=this._hashFn(t);this._nodes.delete(n);for(const r of this._nodes.values())r.outgoing.delete(n),r.incoming.delete(n)}lookupOrInsertNode(t){const n=this._hashFn(t);let r=this._nodes.get(n);return r||(r=new k6o(n,t),this._nodes.set(n,r)),r}isEmpty(){return this._nodes.size===0}toString(){const t=[];for(const[n,r]of this._nodes)t.push(`${n} (-> incoming)[${[...r.incoming.keys()].join(", ")}] (outgoing ->)[${[...r.outgoing.keys()].join(",")}] `);return t.join(` @@ -2807,10 +2807,10 @@ ${t.toString()}`}}class Lke{constructor(t=new rH,n=!1,r,o=v6o){this._services=t, `)}const o=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${r(1,this)}`,`DONE, took ${t.toFixed(2)}ms (grand total ${Lk._totals.toFixed(2)}ms)`];(t>2||n)&&Lk.all.add(o.join(` `))}};Lk.all=new Set,Lk._None=new class extends Lk{constructor(){super(0,null)}stop(){}branch(){return this}},Lk._totals=0;let ZZ=Lk;const A6o=new Set([Ci.inMemory,Ci.vscodeSourceControl,Ci.walkThrough,Ci.walkThroughSnippet,Ci.vscodeChatCodeBlock,Ci.vscodeTerminal]);class p6o{constructor(){this._byResource=new _c,this._byOwner=new Map}set(t,n,r){let o=this._byResource.get(t);o||(o=new Map,this._byResource.set(t,o)),o.set(n,r);let s=this._byOwner.get(n);s||(s=new _c,this._byOwner.set(n,s)),s.set(t,r)}get(t,n){const r=this._byResource.get(t);return r==null?void 0:r.get(n)}delete(t,n){let r=!1,o=!1;const s=this._byResource.get(t);s&&(r=s.delete(n));const a=this._byOwner.get(n);if(a&&(o=a.delete(t)),r!==o)throw new Error("illegal state");return r&&o}values(t){var n,r;return typeof t=="string"?((n=this._byOwner.get(t))==null?void 0:n.values())??to.empty():vi.isUri(t)?((r=this._byResource.get(t))==null?void 0:r.values())??to.empty():to.map(to.concat(...this._byOwner.values()),o=>o[1])}}class b6o{constructor(t){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new _c,this._service=t,this._subscription=t.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(t){for(const n of t){const r=this._data.get(n);r&&this._substract(r);const o=this._resourceStats(n);this._add(o),this._data.set(n,o)}}_resourceStats(t){const n={errors:0,warnings:0,infos:0,unknowns:0};if(A6o.has(t.scheme))return n;for(const{severity:r}of this._service.read({resource:t}))r===xl.Error?n.errors+=1:r===xl.Warning?n.warnings+=1:r===xl.Info?n.infos+=1:n.unknowns+=1;return n}_substract(t){this.errors-=t.errors,this.warnings-=t.warnings,this.infos-=t.infos,this.unknowns-=t.unknowns}_add(t){this.errors+=t.errors,this.warnings+=t.warnings,this.infos+=t.infos,this.unknowns+=t.unknowns}}class IT{constructor(){this._onMarkerChanged=new M6n({delay:0,merge:IT._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new p6o,this._stats=new b6o(this),this._filteredResources=new _c}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(t,n){for(const r of n||[])this.changeOne(t,r,[])}changeOne(t,n,r){if(sEn(r))this._data.delete(n,t)&&this._onMarkerChanged.fire([n]);else{const o=[];for(const s of r){const a=IT._toMarker(t,n,s);a&&o.push(a)}this._data.set(n,t,o),this._onMarkerChanged.fire([n])}}static _toMarker(t,n,r){let{code:o,severity:s,message:a,source:l,startLineNumber:d,startColumn:u,endLineNumber:h,endColumn:g,relatedInformation:m,tags:v,origin:f}=r;if(a)return d=d>0?d:1,u=u>0?u:1,h=h>=d?h:d,g=g>0?g:u,{resource:n,owner:t,code:o,severity:s,message:a,source:l,startLineNumber:d,startColumn:u,endLineNumber:h,endColumn:g,relatedInformation:m,tags:v,origin:f}}changeAll(t,n){const r=[],o=this._data.values(t);if(o)for(const s of o){const a=to.first(s);a&&(r.push(a.resource),this._data.delete(a.resource,t))}if(yg(n)){const s=new _c;for(const{resource:a,marker:l}of n){const d=IT._toMarker(t,a,l);if(!d)continue;const u=s.get(a);u?u.push(d):(s.set(a,[d]),r.push(a))}for(const[a,l]of s)this._data.set(a,t,l)}r.length>0&&this._onMarkerChanged.fire(r)}_createFilteredMarker(t,n){const r=n.length===1?U(1738,'Problems are paused because: "{0}"',n[0]):U(1739,'Problems are paused because: "{0}" and {1} more',n[0],n.length-1);return{owner:"markersFilter",resource:t,severity:xl.Info,message:r,startLineNumber:1,startColumn:1,endLineNumber:1,endColumn:1}}read(t=Object.create(null)){let{owner:n,resource:r,severities:o,take:s}=t;if((!s||s<0)&&(s=-1),n&&r){const a=t.ignoreResourceFilters?void 0:this._filteredResources.get(r);if(a!=null&&a.length)return[this._createFilteredMarker(r,a)];const l=this._data.get(r,n);if(!l)return[];const d=[];for(const u of l){if(s>0&&d.length===s)break;const h=t.ignoreResourceFilters?void 0:this._filteredResources.get(r);h!=null&&h.length?d.push(this._createFilteredMarker(r,h)):IT._accept(u,o)&&d.push(u)}return d}else{const a=!n&&!r?this._data.values():this._data.values(r??n),l=[],d=new _no;for(const u of a)for(const h of u){if(d.has(h.resource))continue;if(s>0&&l.length===s)break;const g=t.ignoreResourceFilters?void 0:this._filteredResources.get(h.resource);g!=null&&g.length?(l.push(this._createFilteredMarker(h.resource,g)),d.add(h.resource)):IT._accept(h,o)&&l.push(h)}return l}}static _accept(t,n){return n===void 0||(n&t.severity)===t.severity}static _merge(t){const n=new _c;for(const r of t)for(const o of r)n.set(o,!0);return Array.from(n.keys())}}class w6o extends ft{get configurationModel(){return this._configurationModel}constructor(t){super(),this.logService=t,this._configurationModel=oh.createEmptyModel(t)}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=oh.createEmptyModel(this.logService);const t=Ql.as(F3.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(t),t)}updateConfigurationModel(t,n){const r=this.getConfigurationDefaultOverrides();for(const o of t){const s=r[o],a=n[o];s!==void 0?this._configurationModel.setValue(o,s):a?this._configurationModel.setValue(o,uO(a.default)):this._configurationModel.removeValue(o)}}}class O6o extends ft{constructor(t,n=[]){super(),this.logger=new Pno([t,...n]),this._register(t.onDidChangeLogLevel(r=>this.setLevel(r)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(t){this.logger.setLevel(t)}getLevel(){return this.logger.getLevel()}trace(t,...n){this.logger.trace(t,...n)}debug(t,...n){this.logger.debug(t,...n)}info(t,...n){this.logger.info(t,...n)}warn(t,...n){this.logger.warn(t,...n)}error(t,...n){this.logger.error(t,...n)}}class y6o{getParserClass(){throw new Error("not implemented in StandaloneTreeSitterLibraryService")}supportsLanguage(t,n){return!1}getLanguage(t,n,r){}getInjectionQueries(t,n){return null}getHighlightingQueries(t,n){return null}}var rC=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},Pc=function(e,t){return function(n,r){t(n,r,e)}};class C6o{constructor(t){this.disposed=!1,this.model=t,this._onWillDispose=new at}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let I$e=class{constructor(t){this.modelService=t}createModelReference(t){const n=this.modelService.getModel(t);return n?Promise.resolve(new YJr(new C6o(n))):Promise.reject(new Error("Model not found"))}};I$e=rC([Pc(0,ml)],I$e);const KAe=class KAe{show(){return KAe.NULL_PROGRESS_RUNNER}async showWhile(t,n){await t}};KAe.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};let M$e=KAe;class _6o{withProgress(t,n,r){return n({report:()=>{}})}}class S6o{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class L6o{async confirm(t){return{confirmed:this.doConfirm(t.message,t.detail),checkboxChecked:!1}}doConfirm(t,n){let r=t;return n&&(r=r+` -`+n),Ls.confirm(r)}async prompt(t){var o;let n;if(this.doConfirm(t.message,t.detail)){const s=[...t.buttons??[]];t.cancelButton&&typeof t.cancelButton!="string"&&typeof t.cancelButton!="boolean"&&s.push(t.cancelButton),n=await((o=s[0])==null?void 0:o.run({checkboxChecked:!1}))}return{result:n}}async error(t,n){await this.prompt({type:Sl.Error,message:t,detail:n})}}const Rq=class Rq{info(t){return this.notify({severity:Sl.Info,message:t})}warn(t){return this.notify({severity:Sl.Warning,message:t})}error(t){return this.notify({severity:Sl.Error,message:t})}notify(t){switch(t.severity){case Sl.Error:console.error(t.message);break;case Sl.Warning:console.warn(t.message);break;default:console.log(t.message);break}return Rq.NO_OP}prompt(t,n,r,o){return Rq.NO_OP}status(t,n){return{close:()=>{}}}};Rq.NO_OP=new vdo;let P$e=Rq,F$e=class{constructor(t){this._onWillExecuteCommand=new at,this._onDidExecuteCommand=new at,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=t}executeCommand(t,...n){const r=co.getCommand(t);if(!r)return Promise.reject(new Error(`command '${t}' not found`));try{this._onWillExecuteCommand.fire({commandId:t,args:n});const o=this._instantiationService.invokeFunction.apply(this._instantiationService,[r.handler,...n]);return this._onDidExecuteCommand.fire({commandId:t,args:n}),Promise.resolve(o)}catch(o){return Promise.reject(o)}}};F$e=rC([Pc(0,Yn)],F$e);let DV=class extends r9o{constructor(t,n,r,o,s,a){super(t,n,r,o,s),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const l=v=>{const f=new xt;f.add(wt(v,rn.KEY_DOWN,k=>{const A=new Us(k);this._dispatch(A,A.target)&&(A.preventDefault(),A.stopPropagation())})),f.add(wt(v,rn.KEY_UP,k=>{const A=new Us(k);this._singleModifierDispatch(A,A.target)&&A.preventDefault()})),this._domNodeListeners.push(new x6o(v,f))},d=v=>{for(let f=0;f{v.getOption(70)||l(v.getContainerDomNode())},h=v=>{v.getOption(70)||d(v.getContainerDomNode())};this._register(a.onCodeEditorAdd(u)),this._register(a.onCodeEditorRemove(h)),a.listCodeEditors().forEach(u);const g=v=>{l(v.getContainerDomNode())},m=v=>{d(v.getContainerDomNode())};this._register(a.onDiffEditorAdd(g)),this._register(a.onDiffEditorRemove(m)),a.listDiffEditors().forEach(g)}addDynamicKeybinding(t,n,r,o){return G4(co.registerCommand(t,r),this.addDynamicKeybindings([{keybinding:n,command:t,when:o}]))}addDynamicKeybindings(t){const n=t.map(r=>({keybinding:XFe(r.keybinding,b0),command:r.command??null,commandArgs:r.commandArgs,when:r.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}));return this._dynamicKeybindings=this._dynamicKeybindings.concat(n),this.updateResolver(),Hn(()=>{for(let r=0;rthis._log(r))}return this._cachedResolver}_documentHasFocus(){return Ls.document.hasFocus()}_toNormalizedKeybindingItems(t,n){const r=[];let o=0;for(const s of t){const a=s.when||void 0,l=s.keybinding;if(!l)r[o++]=new q_t(void 0,s.command,s.commandArgs,a,n,null,!1);else{const d=wee.resolveKeybinding(l,b0);for(const u of d)r[o++]=new q_t(u,s.command,s.commandArgs,a,n,null,!1)}}return r}resolveKeyboardEvent(t){const n=new D8(t.ctrlKey,t.shiftKey,t.altKey,t.metaKey,t.keyCode);return new wee([n],b0)}};DV=rC([Pc(0,Qi),Pc(1,ba),Pc(2,Nf),Pc(3,ic),Pc(4,va),Pc(5,yo)],DV);class x6o extends ft{constructor(t,n){super(),this.domNode=t,this._register(n)}}function bSt(e){return!!e&&typeof e=="object"&&(!e.overrideIdentifier||typeof e.overrideIdentifier=="string")&&(!e.resource||e.resource instanceof vi)}let xke=class{constructor(t){this.logService=t,this._onDidChangeConfiguration=new at,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const n=new w6o(t);this._configuration=new G3e(n.reload(),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),new _c,oh.createEmptyModel(t),new _c,t),n.dispose()}getValue(t,n){const r=typeof t=="string"?t:void 0,o=bSt(t)?t:bSt(n)?n:{};return this._configuration.getValue(r,o,void 0)}updateValues(t){const n={data:this._configuration.toData()},r=[];for(const o of t){const[s,a]=o;this.getValue(s)!==a&&(this._configuration.updateValue(s,a),r.push(s))}if(r.length>0){const o=new e9o({keys:r,overrides:[]},n,this._configuration,void 0,this.logService);o.source=8,this._onDidChangeConfiguration.fire(o)}return Promise.resolve()}updateValue(t,n,r,o){return this.updateValues([[t,n]])}inspect(t,n={}){return this._configuration.inspect(t,n,void 0)}};xke=rC([Pc(0,va)],xke);let N$e=class{constructor(t,n,r){this.configurationService=t,this.modelService=n,this.languageService=r,this._onDidChangeConfiguration=new at,this.configurationService.onDidChangeConfiguration(o=>{this._onDidChangeConfiguration.fire({affectedKeys:o.affectedKeys,affectsConfiguration:(s,a)=>o.affectsConfiguration(a)})})}getValue(t,n,r){const o=it.isIPosition(n)?n:null,s=o?typeof r=="string"?r:void 0:typeof n=="string"?n:void 0,a=t?this.getLanguage(t,o):void 0;return typeof s>"u"?this.configurationService.getValue({resource:t,overrideIdentifier:a}):this.configurationService.getValue(s,{resource:t,overrideIdentifier:a})}getLanguage(t,n){const r=this.modelService.getModel(t);return r?n?r.getLanguageIdAtPosition(n.lineNumber,n.column):r.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(t)}};N$e=rC([Pc(0,ar),Pc(1,ml),Pc(2,nc)],N$e);let U$e=class{constructor(t){this.configurationService=t}getEOL(t,n){const r=this.configurationService.getValue("files.eol",{overrideIdentifier:n,resource:t});return r&&typeof r=="string"&&r!=="auto"?r:v1||Tr?` +`+n),Ls.confirm(r)}async prompt(t){var o;let n;if(this.doConfirm(t.message,t.detail)){const s=[...t.buttons??[]];t.cancelButton&&typeof t.cancelButton!="string"&&typeof t.cancelButton!="boolean"&&s.push(t.cancelButton),n=await((o=s[0])==null?void 0:o.run({checkboxChecked:!1}))}return{result:n}}async error(t,n){await this.prompt({type:Sl.Error,message:t,detail:n})}}const Rq=class Rq{info(t){return this.notify({severity:Sl.Info,message:t})}warn(t){return this.notify({severity:Sl.Warning,message:t})}error(t){return this.notify({severity:Sl.Error,message:t})}notify(t){switch(t.severity){case Sl.Error:console.error(t.message);break;case Sl.Warning:console.warn(t.message);break;default:console.log(t.message);break}return Rq.NO_OP}prompt(t,n,r,o){return Rq.NO_OP}status(t,n){return{close:()=>{}}}};Rq.NO_OP=new vdo;let P$e=Rq,F$e=class{constructor(t){this._onWillExecuteCommand=new at,this._onDidExecuteCommand=new at,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=t}executeCommand(t,...n){const r=uo.getCommand(t);if(!r)return Promise.reject(new Error(`command '${t}' not found`));try{this._onWillExecuteCommand.fire({commandId:t,args:n});const o=this._instantiationService.invokeFunction.apply(this._instantiationService,[r.handler,...n]);return this._onDidExecuteCommand.fire({commandId:t,args:n}),Promise.resolve(o)}catch(o){return Promise.reject(o)}}};F$e=rC([Pc(0,Yn)],F$e);let DV=class extends r9o{constructor(t,n,r,o,s,a){super(t,n,r,o,s),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const l=v=>{const f=new xt;f.add(wt(v,rn.KEY_DOWN,k=>{const A=new Us(k);this._dispatch(A,A.target)&&(A.preventDefault(),A.stopPropagation())})),f.add(wt(v,rn.KEY_UP,k=>{const A=new Us(k);this._singleModifierDispatch(A,A.target)&&A.preventDefault()})),this._domNodeListeners.push(new x6o(v,f))},d=v=>{for(let f=0;f{v.getOption(70)||l(v.getContainerDomNode())},h=v=>{v.getOption(70)||d(v.getContainerDomNode())};this._register(a.onCodeEditorAdd(u)),this._register(a.onCodeEditorRemove(h)),a.listCodeEditors().forEach(u);const g=v=>{l(v.getContainerDomNode())},m=v=>{d(v.getContainerDomNode())};this._register(a.onDiffEditorAdd(g)),this._register(a.onDiffEditorRemove(m)),a.listDiffEditors().forEach(g)}addDynamicKeybinding(t,n,r,o){return G4(uo.registerCommand(t,r),this.addDynamicKeybindings([{keybinding:n,command:t,when:o}]))}addDynamicKeybindings(t){const n=t.map(r=>({keybinding:XFe(r.keybinding,b0),command:r.command??null,commandArgs:r.commandArgs,when:r.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}));return this._dynamicKeybindings=this._dynamicKeybindings.concat(n),this.updateResolver(),Hn(()=>{for(let r=0;rthis._log(r))}return this._cachedResolver}_documentHasFocus(){return Ls.document.hasFocus()}_toNormalizedKeybindingItems(t,n){const r=[];let o=0;for(const s of t){const a=s.when||void 0,l=s.keybinding;if(!l)r[o++]=new q_t(void 0,s.command,s.commandArgs,a,n,null,!1);else{const d=wee.resolveKeybinding(l,b0);for(const u of d)r[o++]=new q_t(u,s.command,s.commandArgs,a,n,null,!1)}}return r}resolveKeyboardEvent(t){const n=new D8(t.ctrlKey,t.shiftKey,t.altKey,t.metaKey,t.keyCode);return new wee([n],b0)}};DV=rC([Pc(0,Qi),Pc(1,ba),Pc(2,Nf),Pc(3,ic),Pc(4,va),Pc(5,yo)],DV);class x6o extends ft{constructor(t,n){super(),this.domNode=t,this._register(n)}}function bSt(e){return!!e&&typeof e=="object"&&(!e.overrideIdentifier||typeof e.overrideIdentifier=="string")&&(!e.resource||e.resource instanceof vi)}let xke=class{constructor(t){this.logService=t,this._onDidChangeConfiguration=new at,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const n=new w6o(t);this._configuration=new G3e(n.reload(),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),oh.createEmptyModel(t),new _c,oh.createEmptyModel(t),new _c,t),n.dispose()}getValue(t,n){const r=typeof t=="string"?t:void 0,o=bSt(t)?t:bSt(n)?n:{};return this._configuration.getValue(r,o,void 0)}updateValues(t){const n={data:this._configuration.toData()},r=[];for(const o of t){const[s,a]=o;this.getValue(s)!==a&&(this._configuration.updateValue(s,a),r.push(s))}if(r.length>0){const o=new e9o({keys:r,overrides:[]},n,this._configuration,void 0,this.logService);o.source=8,this._onDidChangeConfiguration.fire(o)}return Promise.resolve()}updateValue(t,n,r,o){return this.updateValues([[t,n]])}inspect(t,n={}){return this._configuration.inspect(t,n,void 0)}};xke=rC([Pc(0,va)],xke);let N$e=class{constructor(t,n,r){this.configurationService=t,this.modelService=n,this.languageService=r,this._onDidChangeConfiguration=new at,this.configurationService.onDidChangeConfiguration(o=>{this._onDidChangeConfiguration.fire({affectedKeys:o.affectedKeys,affectsConfiguration:(s,a)=>o.affectsConfiguration(a)})})}getValue(t,n,r){const o=it.isIPosition(n)?n:null,s=o?typeof r=="string"?r:void 0:typeof n=="string"?n:void 0,a=t?this.getLanguage(t,o):void 0;return typeof s>"u"?this.configurationService.getValue({resource:t,overrideIdentifier:a}):this.configurationService.getValue(s,{resource:t,overrideIdentifier:a})}getLanguage(t,n){const r=this.modelService.getModel(t);return r?n?r.getLanguageIdAtPosition(n.lineNumber,n.column):r.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(t)}};N$e=rC([Pc(0,ar),Pc(1,ml),Pc(2,nc)],N$e);let U$e=class{constructor(t){this.configurationService=t}getEOL(t,n){const r=this.configurationService.getValue("files.eol",{overrideIdentifier:n,resource:t});return r&&typeof r=="string"&&r!=="auto"?r:v1||Tr?` `:`\r -`}};U$e=rC([Pc(0,ar)],U$e);class E6o{publicLog2(){}}const Iq=class Iq{constructor(){const t=vi.from({scheme:Iq.SCHEME,authority:"model",path:"/"});this.workspace={id:MDn,folders:[new W2o({uri:t,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(t){return t&&t.scheme===Iq.SCHEME?this.workspace.folders[0]:null}};Iq.SCHEME="inmemory";let j$e=Iq;function Eke(e,t,n){if(!t||!(e instanceof xke))return;const r=[];Object.keys(t).forEach(o=>{avo(o)&&r.push([`editor.${o}`,t[o]]),n&&lvo(o)&&r.push([`diffEditor.${o}`,t[o]])}),r.length>0&&e.updateValues(r)}let W$e=class{constructor(t){this._modelService=t}hasPreviewHandler(){return!1}async apply(t,n){const r=Array.isArray(t)?t:Ptt.convert(t),o=new Map;for(const l of r){if(!(l instanceof N9))throw new Error("bad edit - only text edits are supported");const d=this._modelService.getModel(l.resource);if(!d)throw new Error("bad edit - model not found");if(typeof l.versionId=="number"&&d.getVersionId()!==l.versionId)throw new Error("bad state - model changed in the meantime");let u=o.get(d);u||(u=[],o.set(d,u)),u.push($l.replaceMove(Ee.lift(l.textEdit.range),l.textEdit.text))}let s=0,a=0;for(const[l,d]of o)l.pushStackElement(),l.pushEditOperations([],d,()=>[]),l.pushStackElement(),a+=1,s+=d.length;return{ariaSummary:oR(Rze.bulkEditServiceSummary,s,a),isApplied:s>0}}};W$e=rC([Pc(0,ml)],W$e);class T6o{getUriLabel(t,n){return t.scheme==="file"?t.fsPath:t.path}getUriBasenameLabel(t){return hA(t)}}let V$e=class extends $5o{constructor(t,n){super(t),this._codeEditorService=n}showContextView(t,n,r){if(!n){const o=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();o&&(n=o.getContainerDomNode())}return super.showContextView(t,n,r)}};V$e=rC([Pc(0,tC),Pc(1,yo)],V$e);class Q6o{constructor(){this._neverEmitter=new at,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class D6o extends r$e{constructor(){super()}}class B6o extends O6o{constructor(){super(new Mno)}}let z$e=class extends a$e{constructor(t,n,r,o,s,a){super(t,n,r,o,s,a),this.configure({blockMouse:!1})}};z$e=rC([Pc(0,Nf),Pc(1,ic),Pc(2,wL),Pc(3,Do),Pc(4,wA),Pc(5,Qi)],z$e);const R6o={esmModuleLocation:void 0,label:"editorWorkerService"};let H$e=class extends $He{constructor(t,n,r,o,s){super(R6o,t,n,r,o,s)}};H$e=rC([Pc(0,ml),Pc(1,W3e),Pc(2,va),Pc(3,kl),Pc(4,Nn)],H$e);class I6o{async playSignal(t,n){}}zr(va,B6o,0);zr(ar,xke,0);zr(W3e,N$e,0);zr(DIn,U$e,0);zr(H8,j$e,0);zr(TR,T6o,0);zr(Nf,E6o,0);zr(are,L6o,0);zr($tt,S6o,0);zr(ic,P$e,0);zr(nC,IT,0);zr(nc,D6o,0);zr(L2,Fxo,0);zr(ml,f$e,0);zr(ket,h$e,0);zr(Qi,R$e,0);zr(cQn,_6o,0);zr(V8,M$e,0);zr(Bg,_ko,0);zr(S1,H$e,0);zr(Yie,W$e,0);zr(zIn,Q6o,0);zr(Dg,I$e,0);zr(vh,T$e,0);zr(_A,Ipo,0);zr(ba,F$e,0);zr(Do,DV,0);zr(Rf,x$e,0);zr(wL,V$e,0);zr(OL,u$e,0);zr(U0,D$e,0);zr(S2,z$e,0);zr(wA,mje,0);zr(pL,I6o,0);zr(ntt,y6o,0);zr(PEn,Uno,0);zr(Int,qwo,0);var Hi;(function(e){const t=new rH;for(const[d,u]of Hbt())t.set(d,u);const n=new Lke(t,!0);t.set(Yn,n);function r(d){o||a({});const u=t.get(d);if(!u)throw new Error("Missing service "+d);return u instanceof hO?n.invokeFunction(h=>h.get(d)):u}e.get=r;let o=!1;const s=new at;function a(d){if(o)return n;o=!0;for(const[h,g]of Hbt())t.get(h)||t.set(h,g);for(const h in d)if(d.hasOwnProperty(h)){const g=Cr(h);t.get(g)instanceof hO&&t.set(g,d[h])}const u=Vvo();for(const h of u)try{n.createInstance(h)}catch(g){zi(g)}return s.fire(),n}e.initialize=a;function l(d){if(o)return d();const u=new xt,h=u.add(s.event(()=>{h.dispose(),u.add(d())}));return u}e.withServices=l})(Hi||(Hi={}));var M6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},wSt=function(e,t){return function(n,r){t(n,r,e)}},Qhe,xB;let $$e=(xB=class{constructor(t,n){this._configurationService=t,this._languageService=n}async renderCodeBlock(t,n,r){var h;const o=C3(r.context)?r.context:void 0;let s;t?s=this._languageService.getLanguageIdByLanguageName(t):o&&(s=(h=o.getModel())==null?void 0:h.getLanguageId()),s||(s=o2);const a=await jfo(this._languageService,n,s),l=Qhe._ttpTokenizer?Qhe._ttpTokenizer.createHTML(a)??a:a,d=document.createElement("span");d.innerHTML=l;const u=d.querySelector(".monaco-tokenized-source");return ec(u)?(Fu(u,this.getFontInfo(o)),d):document.createElement("span")}getFontInfo(t){return t?t.getOption(59):poo({fontFamily:this._configurationService.getValue("editor").fontFamily},1)}},Qhe=xB,xB._ttpTokenizer=Jy("tokenizeToString",{createHTML(t){return t}}),xB);$$e=Qhe=M6o([wSt(0,ar),wSt(1,nc)],$$e);var fit=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},aa=function(e,t){return function(n,r){t(n,r,e)}};let P6o=0,OSt=!1;function F6o(e){if(!e){if(OSt)return;OSt=!0}tno(e||Ls.document.body)}let Tke=class extends gR{constructor(t,n,r,o,s,a,l,d,u,h,g,m,v,f){const k={...n};k.ariaLabel=k.ariaLabel||Dze.editorViewAccessibleLabel,super(t,k,{},r,o,s,a,u,h,g,m,v),d instanceof DV?this._standaloneKeybindingService=d:this._standaloneKeybindingService=null,F6o(k.ariaContainerElement),Lgo((A,p)=>r.createInstance(mV,A,{instantHover:p},{})),P1o(l),f.setDefaultCodeBlockRenderer(r.createInstance($$e))}addCommand(t,n,r){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const o="DYNAMIC_"+ ++P6o,s=Ft.deserialize(r);return this._standaloneKeybindingService.addDynamicKeybinding(o,t,n,s),o}createContextKey(t,n){return this._contextKeyService.createKey(t,n)}addAction(t){if(typeof t.id!="string"||typeof t.label!="string"||typeof t.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),ft.None;const n=t.id,r=t.label,o=Ft.and(Ft.equals("editorId",this.getId()),Ft.deserialize(t.precondition)),s=t.keybindings,a=Ft.and(o,Ft.deserialize(t.keybindingContext)),l=t.contextMenuGroupId||null,d=t.contextMenuOrder||0,u=(v,...f)=>Promise.resolve(t.run(this,...f)),h=new xt,g=this.getId()+":"+n;if(h.add(co.registerCommand(g,u)),l){const v={command:{id:g,title:r},when:o,group:l,order:d};h.add(Iu.appendMenuItem(Wn.EditorContext,v))}if(Array.isArray(s))for(const v of s)h.add(this._standaloneKeybindingService.addDynamicKeybinding(g,v,u,a));const m=new BTn(g,r,r,void 0,o,(...v)=>Promise.resolve(t.run(this,...v)),this._contextKeyService);return this._actions.set(n,m),h.add(Hn(()=>{this._actions.delete(n)})),h}_triggerCommand(t,n){if(this._codeEditorService instanceof vke)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(t,n)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(t,n)}};Tke=fit([aa(2,Yn),aa(3,yo),aa(4,ba),aa(5,Qi),aa(6,pm),aa(7,Do),aa(8,Dl),aa(9,ic),aa(10,vh),aa(11,kl),aa(12,Nn),aa(13,Cp)],Tke);let X$e=class extends Tke{constructor(t,n,r,o,s,a,l,d,u,h,g,m,v,f,k,A,p){const b={...n};Eke(g,b,!1);const w=u.registerEditorContainer(t);typeof b.theme=="string"&&u.setTheme(b.theme),typeof b.autoDetectHighContrast<"u"&&u.setAutoDetectHighContrast(!!b.autoDetectHighContrast);const O=b.model;delete b.model,super(t,b,r,o,s,a,l,d,u,h,m,k,A,p),this._configurationService=g,this._standaloneThemeService=u,this._register(w);let y;if(typeof O>"u"){const C=f.getLanguageIdByMimeType(b.language)||b.language||o2;y=MMn(v,f,b.value||"",C,void 0),this._ownsModel=!0}else y=O,this._ownsModel=!1;if(this._attachModel(y),y){const C={oldModelUrl:null,newModelUrl:y.uri};this._onDidChangeModel.fire(C)}}dispose(){super.dispose()}updateOptions(t){Eke(this._configurationService,t,!1),typeof t.theme=="string"&&this._standaloneThemeService.setTheme(t.theme),typeof t.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!t.autoDetectHighContrast),super.updateOptions(t)}_postDetachModelCleanup(t){super._postDetachModelCleanup(t),t&&this._ownsModel&&(t.dispose(),this._ownsModel=!1)}};X$e=fit([aa(2,Yn),aa(3,yo),aa(4,ba),aa(5,Qi),aa(6,pm),aa(7,Do),aa(8,L2),aa(9,ic),aa(10,ar),aa(11,vh),aa(12,ml),aa(13,nc),aa(14,kl),aa(15,Nn),aa(16,Cp)],X$e);let G$e=class extends Ey{constructor(t,n,r,o,s,a,l,d,u,h,g,m){const v={...n};Eke(d,v,!0);const f=a.registerEditorContainer(t);typeof v.theme=="string"&&a.setTheme(v.theme),typeof v.autoDetectHighContrast<"u"&&a.setAutoDetectHighContrast(!!v.autoDetectHighContrast),super(t,v,{},o,r,s,m,h),this._configurationService=d,this._standaloneThemeService=a,this._register(f)}dispose(){super.dispose()}updateOptions(t){Eke(this._configurationService,t,!0),typeof t.theme=="string"&&this._standaloneThemeService.setTheme(t.theme),typeof t.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!t.autoDetectHighContrast),super.updateOptions(t)}_createInnerEditor(t,n,r){return t.createInstance(Tke,n,r)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(t,n,r){return this.getModifiedEditor().addCommand(t,n,r)}createContextKey(t,n){return this.getModifiedEditor().createContextKey(t,n)}addAction(t){return this.getModifiedEditor().addAction(t)}};G$e=fit([aa(2,Yn),aa(3,Qi),aa(4,yo),aa(5,L2),aa(6,ic),aa(7,ar),aa(8,S2),aa(9,V8),aa(10,U0),aa(11,pL)],G$e);function MMn(e,t,n,r,o){if(n=n||"",!r){const s=n.indexOf(` -`);let a=n;return s!==-1&&(a=n.substring(0,s)),ySt(e,n,t.createByFilepathOrFirstLine(o||null,a),o)}return ySt(e,n,t.createById(r),o)}function ySt(e,t,n,r){return e.createModel(t,n,r)}Ve("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},U(142,"The background color of the diff editor's header"));Ve("multiDiffEditor.background",Oc,U(143,"The background color of the multi file diff editor"));Ve("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},U(144,"The border color of the multi file diff editor"));var N6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},CSt=function(e,t){return function(n,r){t(n,r,e)}};class U6o{constructor(t,n){this.viewModel=t,this.deltaScrollVertical=n}getId(){return this.viewModel}}let Y$e=class extends ft{constructor(t,n,r,o,s){super(),this._container=t,this._overflowWidgetsDomNode=n,this._workbenchUIElementFactory=r,this._instantiationService=o,this._viewModel=Ti(this,void 0),this._collapsed=Rt(this,d=>{var u;return(u=this._viewModel.read(d))==null?void 0:u.collapsed.read(d)}),this._editorContentHeight=Ti(this,500),this.contentHeight=Rt(this,d=>(this._collapsed.read(d)?0:this._editorContentHeight.read(d))+this._outerEditorHeight),this._modifiedContentWidth=Ti(this,0),this._modifiedWidth=Ti(this,0),this._originalContentWidth=Ti(this,0),this._originalWidth=Ti(this,0),this.maxScroll=Rt(this,d=>{const u=this._modifiedContentWidth.read(d)-this._modifiedWidth.read(d),h=this._originalContentWidth.read(d)-this._originalWidth.read(d);return u>h?{maxScroll:u,width:this._modifiedWidth.read(d)}:{maxScroll:h,width:this._originalWidth.read(d)}}),this._elements=wo("div.multiDiffEntry",[wo("div.header@header",[wo("div.header-content",[wo("div.collapse-button@collapseButton"),wo("div.file-path",[wo("div.title.modified.show-file-icons@primaryPath",[]),wo("div.status.deleted@status",["R"]),wo("div.title.original.show-file-icons@secondaryPath",[])]),wo("div.actions@actions")])]),wo("div.editorParent",[wo("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(Ey,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode,fixedOverflowWidgets:!0},{})),this.isModifedFocused=hl(this.editor.getModifiedEditor()).isFocused,this.isOriginalFocused=hl(this.editor.getOriginalEditor()).isFocused,this.isFocused=Rt(this,d=>this.isModifedFocused.read(d)||this.isOriginalFocused.read(d)),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath)):void 0,this._resourceLabel2=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath)):void 0,this._dataStore=this._register(new xt),this._headerHeight=40,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const a=new z1e(this._elements.collapseButton,{});this._register(Oi(d=>{a.element.className="",a.icon=this._collapsed.read(d)?zt.chevronRight:zt.chevronDown})),this._register(a.onDidClick(()=>{var d;(d=this._viewModel.get())==null||d.collapsed.set(!this._collapsed.get(),void 0)})),this._register(Oi(d=>{this._elements.editor.style.display=this._collapsed.read(d)?"none":"block"})),this._register(this.editor.getModifiedEditor().onDidLayoutChange(d=>{const u=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(u,void 0)})),this._register(this.editor.getOriginalEditor().onDidLayoutChange(d=>{const u=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(u,void 0)})),this._register(this.editor.onDidContentSizeChange(d=>{BG(u=>{this._editorContentHeight.set(d.contentHeight,u),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),u),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),u)})})),this._register(this.editor.getOriginalEditor().onDidScrollChange(d=>{if(this._isSettingScrollTop||!d.scrollTopChanged||!this._data)return;const u=d.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(u)})),this._register(Oi(d=>{var h;const u=(h=this._viewModel.read(d))==null?void 0:h.isActive.read(d);this._elements.root.classList.toggle("active",u)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._contextKeyService=this._register(s.createScoped(this._elements.actions));const l=this._register(this._instantiationService.createChild(new rH([Qi,this._contextKeyService])));this._register(l.createInstance(RJ,this._elements.actions,Wn.MultiDiffEditorFileToolbar,{actionRunner:this._register(new ODn(()=>{var d,u;return((d=this._viewModel.get())==null?void 0:d.modifiedUri)??((u=this._viewModel.get())==null?void 0:u.originalUri)})),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:d=>d.startsWith("navigation")},actionViewItemProvider:(d,u)=>Itt(l,d,u)}))}setScrollLeft(t){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(t):this.editor.getOriginalEditor().setScrollLeft(t)}setData(t){this._data=t;function n(o){return{...o,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}if(!t){BG(o=>{this._viewModel.set(void 0,o),this.editor.setDiffModel(null,o),this._dataStore.clear()});return}const r=t.viewModel.documentDiffItem;if(BG(o=>{var u,h;(u=this._resourceLabel)==null||u.setUri(t.viewModel.modifiedUri??t.viewModel.originalUri,{strikethrough:t.viewModel.modifiedUri===void 0});let s=!1,a=!1,l=!1,d="";t.viewModel.modifiedUri&&t.viewModel.originalUri&&t.viewModel.modifiedUri.path!==t.viewModel.originalUri.path?(d="R",s=!0):t.viewModel.modifiedUri?t.viewModel.originalUri||(d="A",l=!0):(d="D",a=!0),this._elements.status.classList.toggle("renamed",s),this._elements.status.classList.toggle("deleted",a),this._elements.status.classList.toggle("added",l),this._elements.status.innerText=d,(h=this._resourceLabel2)==null||h.setUri(s?t.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(t.viewModel,o),this.editor.setDiffModel(t.viewModel.diffEditorViewModelRef,o),this.editor.updateOptions(n(r.options??{}))}),r.onOptionsDidChange&&this._dataStore.add(r.onOptionsDidChange(()=>{this.editor.updateOptions(n(r.options??{}))})),t.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore,o=>{o||this.setData(void 0)}),t.viewModel.documentDiffItem.contextKeys)for(const[o,s]of Object.entries(t.viewModel.documentDiffItem.contextKeys))this._contextKeyService.createKey(o,s)}render(t,n,r,o){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${t.start}px`,this._elements.root.style.height=`${t.length}px`,this._elements.root.style.width=`${n}px`,this._elements.root.style.position="absolute";const s=t.length-this._headerHeight,a=Math.max(0,Math.min(o.start-t.start,s));this._elements.header.style.transform=`translateY(${a}px)`,BG(l=>{this.editor.layout({width:n-2*8-2*1,height:t.length-this._outerEditorHeight})});try{this._isSettingScrollTop=!0,this._lastScrollTop=r,this.editor.getOriginalEditor().setScrollTop(r)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",a>0||r>0),this._elements.header.classList.toggle("collapsed",a===s)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};Y$e=N6o([CSt(3,Yn),CSt(4,Qi)],Y$e);class j6o{constructor(t){this._create=t,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(t){let n;if(this._unused.size===0)n=this._create(t),this._itemData.set(n,t);else{const r=[...this._unused.values()];n=r.find(o=>this._itemData.get(o).getId()===t.getId())??r[0],this._unused.delete(n),this._itemData.set(n,t),n.setData(t)}return this._used.add(n),{object:n,dispose:()=>{this._used.delete(n),this._unused.size>5?n.dispose():this._unused.add(n)}}}dispose(){for(const t of this._used)t.dispose();for(const t of this._unused)t.dispose();this._used.clear(),this._unused.clear()}}var W6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_St=function(e,t){return function(n,r){t(n,r,e)}};let Z$e=class extends ft{constructor(t,n,r,o,s,a){super(),this._element=t,this._dimension=n,this._viewModel=r,this._workbenchUIElementFactory=o,this._parentContextKeyService=s,this._parentInstantiationService=a,this._scrollableElements=wo("div.scrollContent",[wo("div@content",{style:{overflow:"hidden"}}),wo("div.monaco-editor@overflowWidgetsDomNode",{})]),this._scrollable=this._register(new nH({forceIntegerValues:!1,scheduleAtNextAnimationFrame:u=>A1(ii(this._element),u),smoothScrollDuration:100})),this._scrollableElement=this._register(new Jbe(this._scrollableElements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this._elements=wo("div.monaco-component.multiDiffEditor",{},[wo("div",{},[this._scrollableElement.getDomNode()]),wo("div.placeholder@placeholder",{},[wo("div")])]),this._sizeObserver=this._register(new nDn(this._element,void 0)),this._objectPool=this._register(new j6o(u=>{const h=this._instantiationService.createInstance(Y$e,this._scrollableElements.content,this._scrollableElements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return h.setData(u),h})),this.scrollTop=Ko(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=Ko(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItemsInfo=Rt(this,u=>{const h=this._viewModel.read(u);if(!h)return{items:[],getItem:f=>{throw new ui}};const g=h.items.read(u),m=new Map;return{items:g.map(f=>{var p;const k=u.store.add(new z6o(f,this._objectPool,this.scrollLeft,b=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+b})})),A=(p=this._lastDocStates)==null?void 0:p[k.getKey()];return A&&la(b=>{k.setViewState(A,b)}),m.set(f,k),k}),getItem:f=>m.get(f)}}),this._viewItems=this._viewItemsInfo.map(this,u=>u.items),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,(u,h)=>u.reduce((g,m)=>g+m.contentHeight.read(h)+this._spaceBetweenPx,0)),this.activeControl=Rt(this,u=>{var m,v;const h=(m=this._viewModel.read(u))==null?void 0:m.activeDiffItem.read(u);return h?(v=this._viewItemsInfo.read(u).getItem(h).template.read(u))==null?void 0:v.editor:void 0}),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new rH([Qi,this._contextKeyService]))),this._contextKeyService.createKey($e.inMultiDiffEditor.key,!0),this._lastDocStates={},this._register(Ef((u,h)=>{const g=this._viewModel.read(u);if(g&&g.contextKeys)for(const[m,v]of Object.entries(g.contextKeys)){const f=this._contextKeyService.createKey(m,void 0);f.set(v),h.add(Hn(()=>f.reset()))}}));const l=this._parentContextKeyService.createKey($e.multiDiffEditorAllCollapsed.key,!1);this._register(Oi(u=>{const h=this._viewModel.read(u);if(h){const g=h.items.read(u).every(m=>m.collapsed.read(u));l.set(g)}})),this._register(Oi(u=>{const h=this._dimension.read(u);this._sizeObserver.observe(h)}));const d=Rt(u=>{if(this._viewItems.read(u).length>0)return;const g=this._viewModel.read(u);return!g||g.isLoading.read(u)?U(145,"Loading..."):U(146,"No Changed Files")});this._register(Oi(u=>{const h=d.read(u);this._elements.placeholder.innerText=h??"",this._elements.placeholder.classList.toggle("visible",!!h)})),this._scrollableElements.content.style.position="relative",this._register(Oi(u=>{const h=this._sizeObserver.height.read(u);this._scrollableElements.root.style.height=`${h}px`;const g=this._totalHeight.read(u);this._scrollableElements.content.style.height=`${g}px`;const m=this._sizeObserver.width.read(u);let v=m;const f=this._viewItems.read(u),k=Met(f,qh(A=>A.maxScroll.read(u).maxScroll,T0));if(k){const A=k.maxScroll.read(u);v=m+A.maxScroll}this._scrollableElement.setScrollDimensions({width:m,height:h,scrollHeight:g,scrollWidth:v})})),t.replaceChildren(this._elements.root),this._register(Hn(()=>{t.replaceChildren()})),this._register(Oi(u=>{const h=this._viewModel.read(u);if(h&&!h.isLoading.read(u)){if(h.items.read(u).length===0||h.activeDiffItem.read(u))return;this.goToNextChange()}})),this._register(this._register(Oi(u=>{BG(h=>{this.render(u)})})))}reveal(t,n){var u;const r=this._viewItems.get(),o=r.findIndex(h=>{var g,m,v,f;return((g=h.viewModel.originalUri)==null?void 0:g.toString())===((m=t.original)==null?void 0:m.toString())&&((v=h.viewModel.modifiedUri)==null?void 0:v.toString())===((f=t.modified)==null?void 0:f.toString())});if(o===-1)throw new ui("Resource not found in diff editor");const s=r[o];this._viewModel.get().activeDiffItem.setCache(s.viewModel,void 0);let a=0;for(let h=0;hv.viewModel===r):-1;if(o===-1){this._goToFile(0,"first");return}const s=n[o];s.viewModel.collapsed.get()&&s.viewModel.collapsed.set(!1,void 0);const a=(u=s.template.get())==null?void 0:u.editor;if((g=(h=a==null?void 0:a.getDiffComputationResult())==null?void 0:h.changes2)!=null&&g.length){const v=((m=a.getModifiedEditor().getPosition())==null?void 0:m.lineNumber)||1,f=a.getDiffComputationResult().changes2;if(t==="next"?f.some(A=>A.modified.startLineNumber>v):f.some(A=>A.modified.endLineNumberExclusive<=v)){a.goToDiff(t);return}}const l=(o+(t==="next"?1:-1)+n.length)%n.length;this._goToFile(l,t==="next"?"first":"last")}_goToFile(t,n){var s,a,l;const r=this._viewItems.get()[t];r.viewModel.collapsed.get()&&r.viewModel.collapsed.set(!1,void 0),this.reveal({original:r.viewModel.originalUri,modified:r.viewModel.modifiedUri});const o=(s=r.template.get())==null?void 0:s.editor;if((l=(a=o==null?void 0:o.getDiffComputationResult())==null?void 0:a.changes2)!=null&&l.length)if(n==="first")o.revealFirstDiff();else{const d=o.getDiffComputationResult().changes2.at(-1),u=o.getModifiedEditor();u.setPosition({lineNumber:d.modified.startLineNumber,column:1}),u.revealLineInCenter(d.modified.startLineNumber)}o==null||o.focus()}render(t){const n=this.scrollTop.read(t);let r=0,o=0,s=0;const a=this._sizeObserver.height.read(t),l=Xn.ofStartAndLength(n,a),d=this._sizeObserver.width.read(t);for(const u of this._viewItems.read(t)){const h=u.contentHeight.read(t),g=Math.min(h,a),m=Xn.ofStartAndLength(o,g),v=Xn.ofStartAndLength(s,h);if(v.isBefore(l))r-=h-g,u.hide();else if(v.isAfter(l))u.hide();else{const f=Math.max(0,Math.min(l.start-v.start,h-g));r-=f;const k=Xn.ofStartAndLength(n+r,a);u.render(m,f,d,k)}o+=g+this._spaceBetweenPx,s+=h+this._spaceBetweenPx}this._scrollableElements.content.style.transform=`translateY(${-(n+r)}px)`}};Z$e=W6o([_St(4,Qi),_St(5,Yn)],Z$e);function V6o(e,t){const n=e.getModel(),r=e.createDecorationsCollection([{range:t,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{e.getModel()===n&&r.clear()},350)}class z6o extends ft{constructor(t,n,r,o){super(),this.viewModel=t,this._objectPool=n,this._scrollLeft=r,this._deltaScrollVertical=o,this._templateRef=this._register(YJe(this,void 0)),this.contentHeight=Rt(this,s=>{var a,l;return((l=(a=this._templateRef.read(s))==null?void 0:a.object.contentHeight)==null?void 0:l.read(s))??this.viewModel.lastTemplateData.read(s).contentHeight}),this.maxScroll=Rt(this,s=>{var a;return((a=this._templateRef.read(s))==null?void 0:a.object.maxScroll.read(s))??{maxScroll:0,scrollWidth:0}}),this.template=Rt(this,s=>{var a;return(a=this._templateRef.read(s))==null?void 0:a.object}),this._isHidden=Ti(this,!1),this._isFocused=Rt(this,s=>{var a;return((a=this.template.read(s))==null?void 0:a.isFocused.read(s))??!1}),this.viewModel.setIsFocused(this._isFocused,void 0),this._register(Oi(s=>{var l;const a=this._scrollLeft.read(s);(l=this._templateRef.read(s))==null||l.object.setScrollLeft(a)})),this._register(Oi(s=>{const a=this._templateRef.read(s);!a||!this._isHidden.read(s)||a.object.isFocused.read(s)||this._clear()}))}dispose(){this._clear(),super.dispose()}toString(){var t;return`VirtualViewItem(${(t=this.viewModel.documentDiffItem.modified)==null?void 0:t.uri.toString()})`}getKey(){return this.viewModel.getKey()}setViewState(t,n){var a;this.viewModel.collapsed.set(t.collapsed,n),this._updateTemplateData(n);const r=this.viewModel.lastTemplateData.get(),o=(a=t.selections)==null?void 0:a.map(Qn.liftSelection);this.viewModel.lastTemplateData.set({...r,selections:o},n);const s=this._templateRef.get();s&&o&&s.object.editor.setSelections(o)}_updateTemplateData(t){const n=this._templateRef.get();n&&this.viewModel.lastTemplateData.set({contentHeight:n.object.contentHeight.get(),selections:n.object.editor.getSelections()??void 0},t)}_clear(){const t=this._templateRef.get();t&&la(n=>{this._updateTemplateData(n),t.object.hide(),this._templateRef.set(void 0,n)})}hide(){this._isHidden.set(!0,void 0)}render(t,n,r,o){this._isHidden.set(!1,void 0);let s=this._templateRef.get();if(!s){s=this._objectPool.getUnusedObj(new U6o(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(s,void 0);const a=this.viewModel.lastTemplateData.get().selections;a&&s.object.editor.setSelections(a)}s.object.render(t,r,n,o)}}var H6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},$6o=function(e,t){return function(n,r){t(n,r,e)}};let q$e=class extends ft{constructor(t,n,r){super(),this._element=t,this._workbenchUIElementFactory=n,this._instantiationService=r,this._dimension=Ti(this,void 0),this._viewModel=Ti(this,void 0),this._widgetImpl=Rt(this,o=>o.store.add(this._instantiationService.createInstance(A_(Z$e),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory))),this._register(KW(this._widgetImpl))}};q$e=H6o([$6o(2,Yn)],q$e);function X6o(e,t,n){return Hi.initialize(n||{}).createInstance(X$e,e,t)}function G6o(e){return Hi.get(yo).onCodeEditorAdd(n=>{e(n)})}function Y6o(e){return Hi.get(yo).onDiffEditorAdd(n=>{e(n)})}function Z6o(){return Hi.get(yo).listCodeEditors()}function q6o(){return Hi.get(yo).listDiffEditors()}function K6o(e,t,n){return Hi.initialize(n||{}).createInstance(G$e,e,t)}function J6o(e,t){const n=Hi.initialize(t||{});return new q$e(e,{},n)}function eEo(e){if(typeof e.id!="string"||typeof e.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return co.registerCommand(e.id,e.run)}function tEo(e){if(typeof e.id!="string"||typeof e.label!="string"||typeof e.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const t=Ft.deserialize(e.precondition),n=(o,...s)=>$d.runEditorCommand(o,s,t,(a,l,d)=>Promise.resolve(e.run(l,...d))),r=new xt;if(r.add(co.registerCommand(e.id,n)),e.contextMenuGroupId){const o={command:{id:e.id,title:e.label},when:t,group:e.contextMenuGroupId,order:e.contextMenuOrder||0};r.add(Iu.appendMenuItem(Wn.EditorContext,o))}if(Array.isArray(e.keybindings)){const o=Hi.get(Do);if(!(o instanceof DV))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const s=Ft.and(t,Ft.deserialize(e.keybindingContext));r.add(o.addDynamicKeybindings(e.keybindings.map(a=>({keybinding:a,command:e.id,when:s}))))}}return r}function nEo(e){return PMn([e])}function PMn(e){const t=Hi.get(Do);return t instanceof DV?t.addDynamicKeybindings(e.map(n=>({keybinding:n.keybinding,command:n.command,commandArgs:n.commandArgs,when:Ft.deserialize(n.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),ft.None)}function iEo(e,t,n){const r=Hi.get(nc),o=r.getLanguageIdByMimeType(t)||t;return MMn(Hi.get(ml),r,e,o,n)}function rEo(e,t){const n=Hi.get(nc),r=n.getLanguageIdByMimeType(t)||t||o2;e.setLanguage(n.createById(r))}function oEo(e,t,n){e&&Hi.get(nC).changeOne(t,e.uri,n)}function sEo(e){Hi.get(nC).changeAll(e,[])}function aEo(e){return Hi.get(nC).read(e)}function lEo(e){return Hi.get(nC).onMarkerChanged(e)}function cEo(e){return Hi.get(ml).getModel(e)}function dEo(){return Hi.get(ml).getModels()}function uEo(e){return Hi.get(ml).onModelAdded(e)}function hEo(e){return Hi.get(ml).onModelRemoved(e)}function fEo(e){return Hi.get(ml).onModelLanguageChanged(n=>{e({model:n.model,oldLanguage:n.oldLanguageId})})}function gEo(e){return b5o(Hi.get(ml),e)}function mEo(e,t){const n=Hi.get(nc),r=Hi.get(L2);return lit.colorizeElement(r,n,e,t).then(()=>{r.registerEditorContainer(e)})}function kEo(e,t,n){const r=Hi.get(nc);return Hi.get(L2).registerEditorContainer(Ls.document.body),lit.colorize(r,e,t,n)}function vEo(e,t,n=4){return Hi.get(L2).registerEditorContainer(Ls.document.body),lit.colorizeModelLine(e,t,n)}function AEo(e){const t=Hl.get(e);return t||{getInitialState:()=>hV,tokenize:(n,r,o)=>ttt(e,o)}}function pEo(e,t){Hl.getOrCreate(t);const n=AEo(t),r=P0(e),o=[];let s=n.getInitialState();for(let a=0,l=r.length;a{var l;if(!r)return null;const s=(l=n.options)==null?void 0:l.selection;let a;return s&&typeof s.endLineNumber=="number"&&typeof s.endColumn=="number"?a=s:s&&(a={lineNumber:s.startLineNumber,column:s.startColumn}),await e.openCodeEditor(r,n.resource,a)?r:null})}function SEo(){return{create:X6o,getEditors:Z6o,getDiffEditors:q6o,onDidCreateEditor:G6o,onDidCreateDiffEditor:Y6o,createDiffEditor:K6o,addCommand:eEo,addEditorAction:tEo,addKeybindingRule:nEo,addKeybindingRules:PMn,createModel:iEo,setModelLanguage:rEo,setModelMarkers:oEo,getModelMarkers:aEo,removeAllMarkers:sEo,onDidChangeMarkers:lEo,getModels:dEo,getModel:cEo,onDidCreateModel:uEo,onWillDisposeModel:hEo,onDidChangeModelLanguage:fEo,createWebWorker:gEo,colorizeElement:mEo,colorize:kEo,colorizeModelLine:vEo,tokenize:pEo,defineTheme:bEo,setTheme:wEo,remeasureFonts:OEo,registerCommand:yEo,registerLinkOpener:CEo,registerEditorOpener:_Eo,AccessibilitySupport:Xze,ContentWidgetPositionPreference:Jze,CursorChangeReason:eHe,DefaultEndOfLine:tHe,EditorAutoIndentStrategy:iHe,EditorOption:rHe,EndOfLinePreference:oHe,EndOfLineSequence:sHe,MinimapPosition:AHe,MinimapSectionHeaderStyle:pHe,MouseTargetType:bHe,OverlayWidgetPositionPreference:yHe,OverviewRulerLane:CHe,GlyphMarginLane:aHe,RenderLineNumbersType:LHe,RenderMinimap:xHe,ScrollbarVisibility:THe,ScrollType:EHe,TextEditorCursorBlinkingStyle:PHe,TextEditorCursorStyle:FHe,TrackedRangeStickiness:NHe,WrappingIndent:UHe,InjectedTextCursorStops:dHe,PositionAffinity:SHe,ShowLightbulbIconMode:DHe,TextDirection:MHe,ConfigurationChangedEvent:g7n,BareFontInfo:lR,FontInfo:jme,TextModelResolvedOptions:Jue,FindMatch:qK,ApplyUpdateResult:uZ,EditorZoom:Rv,createMultiFileDiffEditor:J6o,EditorType:Nie,EditorOptions:fg}}function LEo(e,t){if(!t||!Array.isArray(t))return!1;for(const n of t)if(!e(n))return!1;return!0}function xce(e,t){return typeof e=="boolean"?e:t}function SSt(e,t){return typeof e=="string"?e:t}function xEo(e){const t={};for(const n of e)t[n]=!0;return t}function LSt(e,t=!1){t&&(e=e.map(function(r){return r.toLowerCase()}));const n=xEo(e);return t?function(r){return n[r.toLowerCase()]!==void 0&&n.hasOwnProperty(r.toLowerCase())}:function(r){return n[r]!==void 0&&n.hasOwnProperty(r)}}function K$e(e,t,n){t=t.replace(/@@/g,"");let r=0,o;do o=!1,t=t.replace(/@(\w+)/g,function(a,l){o=!0;let d="";if(typeof e[l]=="string")d=e[l];else if(e[l]&&e[l]instanceof RegExp)d=e[l].source;else throw e[l]===void 0?Ra(e,"language definition does not contain attribute '"+l+"', used at: "+t):Ra(e,"attribute reference '"+l+"' must be a string, used at: "+t);return BT(d)?"":"(?:"+d+")"}),r++;while(o&&r<5);t=t.replace(/\x01/g,"@");const s=(e.ignoreCase?"i":"")+(e.unicode?"u":"");if(n&&t.match(/\$[sS](\d\d?)/g)){let l=null,d=null;return u=>(d&&l===u||(l=u,d=new RegExp(_5o(e,t,u),s)),d)}return new RegExp(t,s)}function EEo(e,t,n,r){if(r<0)return e;if(r=100){r=r-100;const o=n.split(".");if(o.unshift(n),r=0&&(r.tokenSubst=!0),typeof n.bracket=="string")if(n.bracket==="@open")r.bracket=1;else if(n.bracket==="@close")r.bracket=-1;else throw Ra(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);if(n.next){if(typeof n.next!="string")throw Ra(e,"the next state must be a string value in rule: "+t);{let o=n.next;if(!/^(@pop|@push|@popall)$/.test(o)&&(o[0]==="@"&&(o=o.substr(1)),o.indexOf("$")<0&&!S5o(e,R5(e,o,"",[],""))))throw Ra(e,"the next state '"+n.next+"' is not defined in rule: "+t);r.next=o}}return typeof n.goBack=="number"&&(r.goBack=n.goBack),typeof n.switchTo=="string"&&(r.switchTo=n.switchTo),typeof n.log=="string"&&(r.log=n.log),typeof n.nextEmbedded=="string"&&(r.nextEmbedded=n.nextEmbedded,e.usesEmbedded=!0),r}}else if(Array.isArray(n)){const r=[];for(let o=0,s=n.length;o0&&r[0]==="^",this.name=this.name+": "+r,this.regex=K$e(t,"^(?:"+(this.matchOnlyAtLineStart?r.substr(1):r)+")",!0)}setAction(t,n){this.action=J$e(t,this.name,n)}resolveRegex(t){return this.regex instanceof RegExp?this.regex:this.regex(t)}}function FMn(e,t){if(!t||typeof t!="object")throw new Error("Monarch: expecting a language definition object");const n={languageId:e,includeLF:xce(t.includeLF,!1),noThrow:!1,maxStack:100,start:typeof t.start=="string"?t.start:null,ignoreCase:xce(t.ignoreCase,!1),unicode:xce(t.unicode,!1),tokenPostfix:SSt(t.tokenPostfix,"."+e),defaultToken:SSt(t.defaultToken,"source"),usesEmbedded:!1,stateNames:{},tokenizer:{},brackets:[]},r=t;r.languageId=e,r.includeLF=n.includeLF,r.ignoreCase=n.ignoreCase,r.unicode=n.unicode,r.noThrow=n.noThrow,r.usesEmbedded=n.usesEmbedded,r.stateNames=t.tokenizer,r.defaultToken=n.defaultToken;function o(a,l,d){for(const u of d){let h=u.include;if(h){if(typeof h!="string")throw Ra(n,"an 'include' attribute must be a string at: "+a);if(h[0]==="@"&&(h=h.substr(1)),!t.tokenizer[h])throw Ra(n,"include target '"+h+"' is not defined at: "+a);o(a+"."+h,l,t.tokenizer[h])}else{const g=new QEo(a);if(Array.isArray(u)&&u.length>=1&&u.length<=3)if(g.setRegex(r,u[0]),u.length>=3)if(typeof u[1]=="string")g.setAction(r,{token:u[1],next:u[2]});else if(typeof u[1]=="object"){const m=u[1];m.next=u[2],g.setAction(r,m)}else throw Ra(n,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+a);else g.setAction(r,u[1]);else{if(!u.regex)throw Ra(n,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+a);u.name&&typeof u.name=="string"&&(g.name=u.name),u.matchOnlyAtStart&&(g.matchOnlyAtLineStart=xce(u.matchOnlyAtLineStart,!1)),g.setRegex(r,u.regex),g.setAction(r,u.action)}l.push(g)}}}if(!t.tokenizer||typeof t.tokenizer!="object")throw Ra(n,"a language definition must define the 'tokenizer' attribute as an object");n.tokenizer=[];for(const a in t.tokenizer)if(t.tokenizer.hasOwnProperty(a)){n.start||(n.start=a);const l=t.tokenizer[a];n.tokenizer[a]=new Array,o("tokenizer."+a,n.tokenizer[a],l)}if(n.usesEmbedded=r.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw Ra(n,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const s=[];for(const a of t.brackets){let l=a;if(l&&Array.isArray(l)&&l.length===3&&(l={token:l[2],open:l[0],close:l[1]}),l.open===l.close)throw Ra(n,"open and close brackets in a 'brackets' attribute must be different: "+l.open+` +`}};U$e=rC([Pc(0,ar)],U$e);class E6o{publicLog2(){}}const Iq=class Iq{constructor(){const t=vi.from({scheme:Iq.SCHEME,authority:"model",path:"/"});this.workspace={id:MDn,folders:[new W2o({uri:t,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(t){return t&&t.scheme===Iq.SCHEME?this.workspace.folders[0]:null}};Iq.SCHEME="inmemory";let j$e=Iq;function Eke(e,t,n){if(!t||!(e instanceof xke))return;const r=[];Object.keys(t).forEach(o=>{avo(o)&&r.push([`editor.${o}`,t[o]]),n&&lvo(o)&&r.push([`diffEditor.${o}`,t[o]])}),r.length>0&&e.updateValues(r)}let W$e=class{constructor(t){this._modelService=t}hasPreviewHandler(){return!1}async apply(t,n){const r=Array.isArray(t)?t:Ptt.convert(t),o=new Map;for(const l of r){if(!(l instanceof N9))throw new Error("bad edit - only text edits are supported");const d=this._modelService.getModel(l.resource);if(!d)throw new Error("bad edit - model not found");if(typeof l.versionId=="number"&&d.getVersionId()!==l.versionId)throw new Error("bad state - model changed in the meantime");let u=o.get(d);u||(u=[],o.set(d,u)),u.push($l.replaceMove(Ee.lift(l.textEdit.range),l.textEdit.text))}let s=0,a=0;for(const[l,d]of o)l.pushStackElement(),l.pushEditOperations([],d,()=>[]),l.pushStackElement(),a+=1,s+=d.length;return{ariaSummary:oR(Rze.bulkEditServiceSummary,s,a),isApplied:s>0}}};W$e=rC([Pc(0,ml)],W$e);class T6o{getUriLabel(t,n){return t.scheme==="file"?t.fsPath:t.path}getUriBasenameLabel(t){return hA(t)}}let V$e=class extends $5o{constructor(t,n){super(t),this._codeEditorService=n}showContextView(t,n,r){if(!n){const o=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();o&&(n=o.getContainerDomNode())}return super.showContextView(t,n,r)}};V$e=rC([Pc(0,tC),Pc(1,yo)],V$e);class Q6o{constructor(){this._neverEmitter=new at,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class D6o extends r$e{constructor(){super()}}class B6o extends O6o{constructor(){super(new Mno)}}let z$e=class extends a$e{constructor(t,n,r,o,s,a){super(t,n,r,o,s,a),this.configure({blockMouse:!1})}};z$e=rC([Pc(0,Nf),Pc(1,ic),Pc(2,wL),Pc(3,Do),Pc(4,wA),Pc(5,Qi)],z$e);const R6o={esmModuleLocation:void 0,label:"editorWorkerService"};let H$e=class extends $He{constructor(t,n,r,o,s){super(R6o,t,n,r,o,s)}};H$e=rC([Pc(0,ml),Pc(1,W3e),Pc(2,va),Pc(3,kl),Pc(4,Nn)],H$e);class I6o{async playSignal(t,n){}}zr(va,B6o,0);zr(ar,xke,0);zr(W3e,N$e,0);zr(DIn,U$e,0);zr(H8,j$e,0);zr(TR,T6o,0);zr(Nf,E6o,0);zr(are,L6o,0);zr($tt,S6o,0);zr(ic,P$e,0);zr(nC,IT,0);zr(nc,D6o,0);zr(L2,Fxo,0);zr(ml,f$e,0);zr(ket,h$e,0);zr(Qi,R$e,0);zr(cQn,_6o,0);zr(V8,M$e,0);zr(Bg,_ko,0);zr(S1,H$e,0);zr(Yie,W$e,0);zr(zIn,Q6o,0);zr(Dg,I$e,0);zr(vh,T$e,0);zr(_A,Ipo,0);zr(ba,F$e,0);zr(Do,DV,0);zr(Rf,x$e,0);zr(wL,V$e,0);zr(OL,u$e,0);zr(U0,D$e,0);zr(S2,z$e,0);zr(wA,mje,0);zr(pL,I6o,0);zr(ntt,y6o,0);zr(PEn,Uno,0);zr(Int,qwo,0);var Hi;(function(e){const t=new rH;for(const[d,u]of Hbt())t.set(d,u);const n=new Lke(t,!0);t.set(Yn,n);function r(d){o||a({});const u=t.get(d);if(!u)throw new Error("Missing service "+d);return u instanceof hO?n.invokeFunction(h=>h.get(d)):u}e.get=r;let o=!1;const s=new at;function a(d){if(o)return n;o=!0;for(const[h,g]of Hbt())t.get(h)||t.set(h,g);for(const h in d)if(d.hasOwnProperty(h)){const g=Cr(h);t.get(g)instanceof hO&&t.set(g,d[h])}const u=Vvo();for(const h of u)try{n.createInstance(h)}catch(g){zi(g)}return s.fire(),n}e.initialize=a;function l(d){if(o)return d();const u=new xt,h=u.add(s.event(()=>{h.dispose(),u.add(d())}));return u}e.withServices=l})(Hi||(Hi={}));var M6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},wSt=function(e,t){return function(n,r){t(n,r,e)}},Qhe,xB;let $$e=(xB=class{constructor(t,n){this._configurationService=t,this._languageService=n}async renderCodeBlock(t,n,r){var h;const o=C3(r.context)?r.context:void 0;let s;t?s=this._languageService.getLanguageIdByLanguageName(t):o&&(s=(h=o.getModel())==null?void 0:h.getLanguageId()),s||(s=o2);const a=await jfo(this._languageService,n,s),l=Qhe._ttpTokenizer?Qhe._ttpTokenizer.createHTML(a)??a:a,d=document.createElement("span");d.innerHTML=l;const u=d.querySelector(".monaco-tokenized-source");return ec(u)?(Fu(u,this.getFontInfo(o)),d):document.createElement("span")}getFontInfo(t){return t?t.getOption(59):poo({fontFamily:this._configurationService.getValue("editor").fontFamily},1)}},Qhe=xB,xB._ttpTokenizer=Jy("tokenizeToString",{createHTML(t){return t}}),xB);$$e=Qhe=M6o([wSt(0,ar),wSt(1,nc)],$$e);var fit=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},aa=function(e,t){return function(n,r){t(n,r,e)}};let P6o=0,OSt=!1;function F6o(e){if(!e){if(OSt)return;OSt=!0}tno(e||Ls.document.body)}let Tke=class extends gR{constructor(t,n,r,o,s,a,l,d,u,h,g,m,v,f){const k={...n};k.ariaLabel=k.ariaLabel||Dze.editorViewAccessibleLabel,super(t,k,{},r,o,s,a,u,h,g,m,v),d instanceof DV?this._standaloneKeybindingService=d:this._standaloneKeybindingService=null,F6o(k.ariaContainerElement),Lgo((A,p)=>r.createInstance(mV,A,{instantHover:p},{})),P1o(l),f.setDefaultCodeBlockRenderer(r.createInstance($$e))}addCommand(t,n,r){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const o="DYNAMIC_"+ ++P6o,s=Ft.deserialize(r);return this._standaloneKeybindingService.addDynamicKeybinding(o,t,n,s),o}createContextKey(t,n){return this._contextKeyService.createKey(t,n)}addAction(t){if(typeof t.id!="string"||typeof t.label!="string"||typeof t.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),ft.None;const n=t.id,r=t.label,o=Ft.and(Ft.equals("editorId",this.getId()),Ft.deserialize(t.precondition)),s=t.keybindings,a=Ft.and(o,Ft.deserialize(t.keybindingContext)),l=t.contextMenuGroupId||null,d=t.contextMenuOrder||0,u=(v,...f)=>Promise.resolve(t.run(this,...f)),h=new xt,g=this.getId()+":"+n;if(h.add(uo.registerCommand(g,u)),l){const v={command:{id:g,title:r},when:o,group:l,order:d};h.add(Iu.appendMenuItem(Wn.EditorContext,v))}if(Array.isArray(s))for(const v of s)h.add(this._standaloneKeybindingService.addDynamicKeybinding(g,v,u,a));const m=new BTn(g,r,r,void 0,o,(...v)=>Promise.resolve(t.run(this,...v)),this._contextKeyService);return this._actions.set(n,m),h.add(Hn(()=>{this._actions.delete(n)})),h}_triggerCommand(t,n){if(this._codeEditorService instanceof vke)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(t,n)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(t,n)}};Tke=fit([aa(2,Yn),aa(3,yo),aa(4,ba),aa(5,Qi),aa(6,pm),aa(7,Do),aa(8,Dl),aa(9,ic),aa(10,vh),aa(11,kl),aa(12,Nn),aa(13,Cp)],Tke);let X$e=class extends Tke{constructor(t,n,r,o,s,a,l,d,u,h,g,m,v,f,k,A,p){const b={...n};Eke(g,b,!1);const w=u.registerEditorContainer(t);typeof b.theme=="string"&&u.setTheme(b.theme),typeof b.autoDetectHighContrast<"u"&&u.setAutoDetectHighContrast(!!b.autoDetectHighContrast);const O=b.model;delete b.model,super(t,b,r,o,s,a,l,d,u,h,m,k,A,p),this._configurationService=g,this._standaloneThemeService=u,this._register(w);let y;if(typeof O>"u"){const C=f.getLanguageIdByMimeType(b.language)||b.language||o2;y=MMn(v,f,b.value||"",C,void 0),this._ownsModel=!0}else y=O,this._ownsModel=!1;if(this._attachModel(y),y){const C={oldModelUrl:null,newModelUrl:y.uri};this._onDidChangeModel.fire(C)}}dispose(){super.dispose()}updateOptions(t){Eke(this._configurationService,t,!1),typeof t.theme=="string"&&this._standaloneThemeService.setTheme(t.theme),typeof t.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!t.autoDetectHighContrast),super.updateOptions(t)}_postDetachModelCleanup(t){super._postDetachModelCleanup(t),t&&this._ownsModel&&(t.dispose(),this._ownsModel=!1)}};X$e=fit([aa(2,Yn),aa(3,yo),aa(4,ba),aa(5,Qi),aa(6,pm),aa(7,Do),aa(8,L2),aa(9,ic),aa(10,ar),aa(11,vh),aa(12,ml),aa(13,nc),aa(14,kl),aa(15,Nn),aa(16,Cp)],X$e);let G$e=class extends Ey{constructor(t,n,r,o,s,a,l,d,u,h,g,m){const v={...n};Eke(d,v,!0);const f=a.registerEditorContainer(t);typeof v.theme=="string"&&a.setTheme(v.theme),typeof v.autoDetectHighContrast<"u"&&a.setAutoDetectHighContrast(!!v.autoDetectHighContrast),super(t,v,{},o,r,s,m,h),this._configurationService=d,this._standaloneThemeService=a,this._register(f)}dispose(){super.dispose()}updateOptions(t){Eke(this._configurationService,t,!0),typeof t.theme=="string"&&this._standaloneThemeService.setTheme(t.theme),typeof t.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!t.autoDetectHighContrast),super.updateOptions(t)}_createInnerEditor(t,n,r){return t.createInstance(Tke,n,r)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(t,n,r){return this.getModifiedEditor().addCommand(t,n,r)}createContextKey(t,n){return this.getModifiedEditor().createContextKey(t,n)}addAction(t){return this.getModifiedEditor().addAction(t)}};G$e=fit([aa(2,Yn),aa(3,Qi),aa(4,yo),aa(5,L2),aa(6,ic),aa(7,ar),aa(8,S2),aa(9,V8),aa(10,U0),aa(11,pL)],G$e);function MMn(e,t,n,r,o){if(n=n||"",!r){const s=n.indexOf(` +`);let a=n;return s!==-1&&(a=n.substring(0,s)),ySt(e,n,t.createByFilepathOrFirstLine(o||null,a),o)}return ySt(e,n,t.createById(r),o)}function ySt(e,t,n,r){return e.createModel(t,n,r)}Ve("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},U(142,"The background color of the diff editor's header"));Ve("multiDiffEditor.background",Oc,U(143,"The background color of the multi file diff editor"));Ve("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},U(144,"The border color of the multi file diff editor"));var N6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},CSt=function(e,t){return function(n,r){t(n,r,e)}};class U6o{constructor(t,n){this.viewModel=t,this.deltaScrollVertical=n}getId(){return this.viewModel}}let Y$e=class extends ft{constructor(t,n,r,o,s){super(),this._container=t,this._overflowWidgetsDomNode=n,this._workbenchUIElementFactory=r,this._instantiationService=o,this._viewModel=Ti(this,void 0),this._collapsed=Rt(this,d=>{var u;return(u=this._viewModel.read(d))==null?void 0:u.collapsed.read(d)}),this._editorContentHeight=Ti(this,500),this.contentHeight=Rt(this,d=>(this._collapsed.read(d)?0:this._editorContentHeight.read(d))+this._outerEditorHeight),this._modifiedContentWidth=Ti(this,0),this._modifiedWidth=Ti(this,0),this._originalContentWidth=Ti(this,0),this._originalWidth=Ti(this,0),this.maxScroll=Rt(this,d=>{const u=this._modifiedContentWidth.read(d)-this._modifiedWidth.read(d),h=this._originalContentWidth.read(d)-this._originalWidth.read(d);return u>h?{maxScroll:u,width:this._modifiedWidth.read(d)}:{maxScroll:h,width:this._originalWidth.read(d)}}),this._elements=wo("div.multiDiffEntry",[wo("div.header@header",[wo("div.header-content",[wo("div.collapse-button@collapseButton"),wo("div.file-path",[wo("div.title.modified.show-file-icons@primaryPath",[]),wo("div.status.deleted@status",["R"]),wo("div.title.original.show-file-icons@secondaryPath",[])]),wo("div.actions@actions")])]),wo("div.editorParent",[wo("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(Ey,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode,fixedOverflowWidgets:!0},{})),this.isModifedFocused=hl(this.editor.getModifiedEditor()).isFocused,this.isOriginalFocused=hl(this.editor.getOriginalEditor()).isFocused,this.isFocused=Rt(this,d=>this.isModifedFocused.read(d)||this.isOriginalFocused.read(d)),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath)):void 0,this._resourceLabel2=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath)):void 0,this._dataStore=this._register(new xt),this._headerHeight=40,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const a=new z1e(this._elements.collapseButton,{});this._register(Oi(d=>{a.element.className="",a.icon=this._collapsed.read(d)?zt.chevronRight:zt.chevronDown})),this._register(a.onDidClick(()=>{var d;(d=this._viewModel.get())==null||d.collapsed.set(!this._collapsed.get(),void 0)})),this._register(Oi(d=>{this._elements.editor.style.display=this._collapsed.read(d)?"none":"block"})),this._register(this.editor.getModifiedEditor().onDidLayoutChange(d=>{const u=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(u,void 0)})),this._register(this.editor.getOriginalEditor().onDidLayoutChange(d=>{const u=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(u,void 0)})),this._register(this.editor.onDidContentSizeChange(d=>{BG(u=>{this._editorContentHeight.set(d.contentHeight,u),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),u),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),u)})})),this._register(this.editor.getOriginalEditor().onDidScrollChange(d=>{if(this._isSettingScrollTop||!d.scrollTopChanged||!this._data)return;const u=d.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(u)})),this._register(Oi(d=>{var h;const u=(h=this._viewModel.read(d))==null?void 0:h.isActive.read(d);this._elements.root.classList.toggle("active",u)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._contextKeyService=this._register(s.createScoped(this._elements.actions));const l=this._register(this._instantiationService.createChild(new rH([Qi,this._contextKeyService])));this._register(l.createInstance(RJ,this._elements.actions,Wn.MultiDiffEditorFileToolbar,{actionRunner:this._register(new ODn(()=>{var d,u;return((d=this._viewModel.get())==null?void 0:d.modifiedUri)??((u=this._viewModel.get())==null?void 0:u.originalUri)})),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:d=>d.startsWith("navigation")},actionViewItemProvider:(d,u)=>Itt(l,d,u)}))}setScrollLeft(t){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(t):this.editor.getOriginalEditor().setScrollLeft(t)}setData(t){this._data=t;function n(o){return{...o,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}if(!t){BG(o=>{this._viewModel.set(void 0,o),this.editor.setDiffModel(null,o),this._dataStore.clear()});return}const r=t.viewModel.documentDiffItem;if(BG(o=>{var u,h;(u=this._resourceLabel)==null||u.setUri(t.viewModel.modifiedUri??t.viewModel.originalUri,{strikethrough:t.viewModel.modifiedUri===void 0});let s=!1,a=!1,l=!1,d="";t.viewModel.modifiedUri&&t.viewModel.originalUri&&t.viewModel.modifiedUri.path!==t.viewModel.originalUri.path?(d="R",s=!0):t.viewModel.modifiedUri?t.viewModel.originalUri||(d="A",l=!0):(d="D",a=!0),this._elements.status.classList.toggle("renamed",s),this._elements.status.classList.toggle("deleted",a),this._elements.status.classList.toggle("added",l),this._elements.status.innerText=d,(h=this._resourceLabel2)==null||h.setUri(s?t.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(t.viewModel,o),this.editor.setDiffModel(t.viewModel.diffEditorViewModelRef,o),this.editor.updateOptions(n(r.options??{}))}),r.onOptionsDidChange&&this._dataStore.add(r.onOptionsDidChange(()=>{this.editor.updateOptions(n(r.options??{}))})),t.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore,o=>{o||this.setData(void 0)}),t.viewModel.documentDiffItem.contextKeys)for(const[o,s]of Object.entries(t.viewModel.documentDiffItem.contextKeys))this._contextKeyService.createKey(o,s)}render(t,n,r,o){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${t.start}px`,this._elements.root.style.height=`${t.length}px`,this._elements.root.style.width=`${n}px`,this._elements.root.style.position="absolute";const s=t.length-this._headerHeight,a=Math.max(0,Math.min(o.start-t.start,s));this._elements.header.style.transform=`translateY(${a}px)`,BG(l=>{this.editor.layout({width:n-2*8-2*1,height:t.length-this._outerEditorHeight})});try{this._isSettingScrollTop=!0,this._lastScrollTop=r,this.editor.getOriginalEditor().setScrollTop(r)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",a>0||r>0),this._elements.header.classList.toggle("collapsed",a===s)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};Y$e=N6o([CSt(3,Yn),CSt(4,Qi)],Y$e);class j6o{constructor(t){this._create=t,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(t){let n;if(this._unused.size===0)n=this._create(t),this._itemData.set(n,t);else{const r=[...this._unused.values()];n=r.find(o=>this._itemData.get(o).getId()===t.getId())??r[0],this._unused.delete(n),this._itemData.set(n,t),n.setData(t)}return this._used.add(n),{object:n,dispose:()=>{this._used.delete(n),this._unused.size>5?n.dispose():this._unused.add(n)}}}dispose(){for(const t of this._used)t.dispose();for(const t of this._unused)t.dispose();this._used.clear(),this._unused.clear()}}var W6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},_St=function(e,t){return function(n,r){t(n,r,e)}};let Z$e=class extends ft{constructor(t,n,r,o,s,a){super(),this._element=t,this._dimension=n,this._viewModel=r,this._workbenchUIElementFactory=o,this._parentContextKeyService=s,this._parentInstantiationService=a,this._scrollableElements=wo("div.scrollContent",[wo("div@content",{style:{overflow:"hidden"}}),wo("div.monaco-editor@overflowWidgetsDomNode",{})]),this._scrollable=this._register(new nH({forceIntegerValues:!1,scheduleAtNextAnimationFrame:u=>A1(ii(this._element),u),smoothScrollDuration:100})),this._scrollableElement=this._register(new Jbe(this._scrollableElements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this._elements=wo("div.monaco-component.multiDiffEditor",{},[wo("div",{},[this._scrollableElement.getDomNode()]),wo("div.placeholder@placeholder",{},[wo("div")])]),this._sizeObserver=this._register(new nDn(this._element,void 0)),this._objectPool=this._register(new j6o(u=>{const h=this._instantiationService.createInstance(Y$e,this._scrollableElements.content,this._scrollableElements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return h.setData(u),h})),this.scrollTop=Ko(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=Ko(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItemsInfo=Rt(this,u=>{const h=this._viewModel.read(u);if(!h)return{items:[],getItem:f=>{throw new ui}};const g=h.items.read(u),m=new Map;return{items:g.map(f=>{var p;const k=u.store.add(new z6o(f,this._objectPool,this.scrollLeft,b=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+b})})),A=(p=this._lastDocStates)==null?void 0:p[k.getKey()];return A&&la(b=>{k.setViewState(A,b)}),m.set(f,k),k}),getItem:f=>m.get(f)}}),this._viewItems=this._viewItemsInfo.map(this,u=>u.items),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,(u,h)=>u.reduce((g,m)=>g+m.contentHeight.read(h)+this._spaceBetweenPx,0)),this.activeControl=Rt(this,u=>{var m,v;const h=(m=this._viewModel.read(u))==null?void 0:m.activeDiffItem.read(u);return h?(v=this._viewItemsInfo.read(u).getItem(h).template.read(u))==null?void 0:v.editor:void 0}),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new rH([Qi,this._contextKeyService]))),this._contextKeyService.createKey($e.inMultiDiffEditor.key,!0),this._lastDocStates={},this._register(Ef((u,h)=>{const g=this._viewModel.read(u);if(g&&g.contextKeys)for(const[m,v]of Object.entries(g.contextKeys)){const f=this._contextKeyService.createKey(m,void 0);f.set(v),h.add(Hn(()=>f.reset()))}}));const l=this._parentContextKeyService.createKey($e.multiDiffEditorAllCollapsed.key,!1);this._register(Oi(u=>{const h=this._viewModel.read(u);if(h){const g=h.items.read(u).every(m=>m.collapsed.read(u));l.set(g)}})),this._register(Oi(u=>{const h=this._dimension.read(u);this._sizeObserver.observe(h)}));const d=Rt(u=>{if(this._viewItems.read(u).length>0)return;const g=this._viewModel.read(u);return!g||g.isLoading.read(u)?U(145,"Loading..."):U(146,"No Changed Files")});this._register(Oi(u=>{const h=d.read(u);this._elements.placeholder.innerText=h??"",this._elements.placeholder.classList.toggle("visible",!!h)})),this._scrollableElements.content.style.position="relative",this._register(Oi(u=>{const h=this._sizeObserver.height.read(u);this._scrollableElements.root.style.height=`${h}px`;const g=this._totalHeight.read(u);this._scrollableElements.content.style.height=`${g}px`;const m=this._sizeObserver.width.read(u);let v=m;const f=this._viewItems.read(u),k=Met(f,qh(A=>A.maxScroll.read(u).maxScroll,T0));if(k){const A=k.maxScroll.read(u);v=m+A.maxScroll}this._scrollableElement.setScrollDimensions({width:m,height:h,scrollHeight:g,scrollWidth:v})})),t.replaceChildren(this._elements.root),this._register(Hn(()=>{t.replaceChildren()})),this._register(Oi(u=>{const h=this._viewModel.read(u);if(h&&!h.isLoading.read(u)){if(h.items.read(u).length===0||h.activeDiffItem.read(u))return;this.goToNextChange()}})),this._register(this._register(Oi(u=>{BG(h=>{this.render(u)})})))}reveal(t,n){var u;const r=this._viewItems.get(),o=r.findIndex(h=>{var g,m,v,f;return((g=h.viewModel.originalUri)==null?void 0:g.toString())===((m=t.original)==null?void 0:m.toString())&&((v=h.viewModel.modifiedUri)==null?void 0:v.toString())===((f=t.modified)==null?void 0:f.toString())});if(o===-1)throw new ui("Resource not found in diff editor");const s=r[o];this._viewModel.get().activeDiffItem.setCache(s.viewModel,void 0);let a=0;for(let h=0;hv.viewModel===r):-1;if(o===-1){this._goToFile(0,"first");return}const s=n[o];s.viewModel.collapsed.get()&&s.viewModel.collapsed.set(!1,void 0);const a=(u=s.template.get())==null?void 0:u.editor;if((g=(h=a==null?void 0:a.getDiffComputationResult())==null?void 0:h.changes2)!=null&&g.length){const v=((m=a.getModifiedEditor().getPosition())==null?void 0:m.lineNumber)||1,f=a.getDiffComputationResult().changes2;if(t==="next"?f.some(A=>A.modified.startLineNumber>v):f.some(A=>A.modified.endLineNumberExclusive<=v)){a.goToDiff(t);return}}const l=(o+(t==="next"?1:-1)+n.length)%n.length;this._goToFile(l,t==="next"?"first":"last")}_goToFile(t,n){var s,a,l;const r=this._viewItems.get()[t];r.viewModel.collapsed.get()&&r.viewModel.collapsed.set(!1,void 0),this.reveal({original:r.viewModel.originalUri,modified:r.viewModel.modifiedUri});const o=(s=r.template.get())==null?void 0:s.editor;if((l=(a=o==null?void 0:o.getDiffComputationResult())==null?void 0:a.changes2)!=null&&l.length)if(n==="first")o.revealFirstDiff();else{const d=o.getDiffComputationResult().changes2.at(-1),u=o.getModifiedEditor();u.setPosition({lineNumber:d.modified.startLineNumber,column:1}),u.revealLineInCenter(d.modified.startLineNumber)}o==null||o.focus()}render(t){const n=this.scrollTop.read(t);let r=0,o=0,s=0;const a=this._sizeObserver.height.read(t),l=Xn.ofStartAndLength(n,a),d=this._sizeObserver.width.read(t);for(const u of this._viewItems.read(t)){const h=u.contentHeight.read(t),g=Math.min(h,a),m=Xn.ofStartAndLength(o,g),v=Xn.ofStartAndLength(s,h);if(v.isBefore(l))r-=h-g,u.hide();else if(v.isAfter(l))u.hide();else{const f=Math.max(0,Math.min(l.start-v.start,h-g));r-=f;const k=Xn.ofStartAndLength(n+r,a);u.render(m,f,d,k)}o+=g+this._spaceBetweenPx,s+=h+this._spaceBetweenPx}this._scrollableElements.content.style.transform=`translateY(${-(n+r)}px)`}};Z$e=W6o([_St(4,Qi),_St(5,Yn)],Z$e);function V6o(e,t){const n=e.getModel(),r=e.createDecorationsCollection([{range:t,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{e.getModel()===n&&r.clear()},350)}class z6o extends ft{constructor(t,n,r,o){super(),this.viewModel=t,this._objectPool=n,this._scrollLeft=r,this._deltaScrollVertical=o,this._templateRef=this._register(YJe(this,void 0)),this.contentHeight=Rt(this,s=>{var a,l;return((l=(a=this._templateRef.read(s))==null?void 0:a.object.contentHeight)==null?void 0:l.read(s))??this.viewModel.lastTemplateData.read(s).contentHeight}),this.maxScroll=Rt(this,s=>{var a;return((a=this._templateRef.read(s))==null?void 0:a.object.maxScroll.read(s))??{maxScroll:0,scrollWidth:0}}),this.template=Rt(this,s=>{var a;return(a=this._templateRef.read(s))==null?void 0:a.object}),this._isHidden=Ti(this,!1),this._isFocused=Rt(this,s=>{var a;return((a=this.template.read(s))==null?void 0:a.isFocused.read(s))??!1}),this.viewModel.setIsFocused(this._isFocused,void 0),this._register(Oi(s=>{var l;const a=this._scrollLeft.read(s);(l=this._templateRef.read(s))==null||l.object.setScrollLeft(a)})),this._register(Oi(s=>{const a=this._templateRef.read(s);!a||!this._isHidden.read(s)||a.object.isFocused.read(s)||this._clear()}))}dispose(){this._clear(),super.dispose()}toString(){var t;return`VirtualViewItem(${(t=this.viewModel.documentDiffItem.modified)==null?void 0:t.uri.toString()})`}getKey(){return this.viewModel.getKey()}setViewState(t,n){var a;this.viewModel.collapsed.set(t.collapsed,n),this._updateTemplateData(n);const r=this.viewModel.lastTemplateData.get(),o=(a=t.selections)==null?void 0:a.map(Qn.liftSelection);this.viewModel.lastTemplateData.set({...r,selections:o},n);const s=this._templateRef.get();s&&o&&s.object.editor.setSelections(o)}_updateTemplateData(t){const n=this._templateRef.get();n&&this.viewModel.lastTemplateData.set({contentHeight:n.object.contentHeight.get(),selections:n.object.editor.getSelections()??void 0},t)}_clear(){const t=this._templateRef.get();t&&la(n=>{this._updateTemplateData(n),t.object.hide(),this._templateRef.set(void 0,n)})}hide(){this._isHidden.set(!0,void 0)}render(t,n,r,o){this._isHidden.set(!1,void 0);let s=this._templateRef.get();if(!s){s=this._objectPool.getUnusedObj(new U6o(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(s,void 0);const a=this.viewModel.lastTemplateData.get().selections;a&&s.object.editor.setSelections(a)}s.object.render(t,r,n,o)}}var H6o=function(e,t,n,r){var o=arguments.length,s=o<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},$6o=function(e,t){return function(n,r){t(n,r,e)}};let q$e=class extends ft{constructor(t,n,r){super(),this._element=t,this._workbenchUIElementFactory=n,this._instantiationService=r,this._dimension=Ti(this,void 0),this._viewModel=Ti(this,void 0),this._widgetImpl=Rt(this,o=>o.store.add(this._instantiationService.createInstance(A_(Z$e),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory))),this._register(KW(this._widgetImpl))}};q$e=H6o([$6o(2,Yn)],q$e);function X6o(e,t,n){return Hi.initialize(n||{}).createInstance(X$e,e,t)}function G6o(e){return Hi.get(yo).onCodeEditorAdd(n=>{e(n)})}function Y6o(e){return Hi.get(yo).onDiffEditorAdd(n=>{e(n)})}function Z6o(){return Hi.get(yo).listCodeEditors()}function q6o(){return Hi.get(yo).listDiffEditors()}function K6o(e,t,n){return Hi.initialize(n||{}).createInstance(G$e,e,t)}function J6o(e,t){const n=Hi.initialize(t||{});return new q$e(e,{},n)}function eEo(e){if(typeof e.id!="string"||typeof e.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return uo.registerCommand(e.id,e.run)}function tEo(e){if(typeof e.id!="string"||typeof e.label!="string"||typeof e.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const t=Ft.deserialize(e.precondition),n=(o,...s)=>$d.runEditorCommand(o,s,t,(a,l,d)=>Promise.resolve(e.run(l,...d))),r=new xt;if(r.add(uo.registerCommand(e.id,n)),e.contextMenuGroupId){const o={command:{id:e.id,title:e.label},when:t,group:e.contextMenuGroupId,order:e.contextMenuOrder||0};r.add(Iu.appendMenuItem(Wn.EditorContext,o))}if(Array.isArray(e.keybindings)){const o=Hi.get(Do);if(!(o instanceof DV))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const s=Ft.and(t,Ft.deserialize(e.keybindingContext));r.add(o.addDynamicKeybindings(e.keybindings.map(a=>({keybinding:a,command:e.id,when:s}))))}}return r}function nEo(e){return PMn([e])}function PMn(e){const t=Hi.get(Do);return t instanceof DV?t.addDynamicKeybindings(e.map(n=>({keybinding:n.keybinding,command:n.command,commandArgs:n.commandArgs,when:Ft.deserialize(n.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),ft.None)}function iEo(e,t,n){const r=Hi.get(nc),o=r.getLanguageIdByMimeType(t)||t;return MMn(Hi.get(ml),r,e,o,n)}function rEo(e,t){const n=Hi.get(nc),r=n.getLanguageIdByMimeType(t)||t||o2;e.setLanguage(n.createById(r))}function oEo(e,t,n){e&&Hi.get(nC).changeOne(t,e.uri,n)}function sEo(e){Hi.get(nC).changeAll(e,[])}function aEo(e){return Hi.get(nC).read(e)}function lEo(e){return Hi.get(nC).onMarkerChanged(e)}function cEo(e){return Hi.get(ml).getModel(e)}function dEo(){return Hi.get(ml).getModels()}function uEo(e){return Hi.get(ml).onModelAdded(e)}function hEo(e){return Hi.get(ml).onModelRemoved(e)}function fEo(e){return Hi.get(ml).onModelLanguageChanged(n=>{e({model:n.model,oldLanguage:n.oldLanguageId})})}function gEo(e){return b5o(Hi.get(ml),e)}function mEo(e,t){const n=Hi.get(nc),r=Hi.get(L2);return lit.colorizeElement(r,n,e,t).then(()=>{r.registerEditorContainer(e)})}function kEo(e,t,n){const r=Hi.get(nc);return Hi.get(L2).registerEditorContainer(Ls.document.body),lit.colorize(r,e,t,n)}function vEo(e,t,n=4){return Hi.get(L2).registerEditorContainer(Ls.document.body),lit.colorizeModelLine(e,t,n)}function AEo(e){const t=Hl.get(e);return t||{getInitialState:()=>hV,tokenize:(n,r,o)=>ttt(e,o)}}function pEo(e,t){Hl.getOrCreate(t);const n=AEo(t),r=P0(e),o=[];let s=n.getInitialState();for(let a=0,l=r.length;a{var l;if(!r)return null;const s=(l=n.options)==null?void 0:l.selection;let a;return s&&typeof s.endLineNumber=="number"&&typeof s.endColumn=="number"?a=s:s&&(a={lineNumber:s.startLineNumber,column:s.startColumn}),await e.openCodeEditor(r,n.resource,a)?r:null})}function SEo(){return{create:X6o,getEditors:Z6o,getDiffEditors:q6o,onDidCreateEditor:G6o,onDidCreateDiffEditor:Y6o,createDiffEditor:K6o,addCommand:eEo,addEditorAction:tEo,addKeybindingRule:nEo,addKeybindingRules:PMn,createModel:iEo,setModelLanguage:rEo,setModelMarkers:oEo,getModelMarkers:aEo,removeAllMarkers:sEo,onDidChangeMarkers:lEo,getModels:dEo,getModel:cEo,onDidCreateModel:uEo,onWillDisposeModel:hEo,onDidChangeModelLanguage:fEo,createWebWorker:gEo,colorizeElement:mEo,colorize:kEo,colorizeModelLine:vEo,tokenize:pEo,defineTheme:bEo,setTheme:wEo,remeasureFonts:OEo,registerCommand:yEo,registerLinkOpener:CEo,registerEditorOpener:_Eo,AccessibilitySupport:Xze,ContentWidgetPositionPreference:Jze,CursorChangeReason:eHe,DefaultEndOfLine:tHe,EditorAutoIndentStrategy:iHe,EditorOption:rHe,EndOfLinePreference:oHe,EndOfLineSequence:sHe,MinimapPosition:AHe,MinimapSectionHeaderStyle:pHe,MouseTargetType:bHe,OverlayWidgetPositionPreference:yHe,OverviewRulerLane:CHe,GlyphMarginLane:aHe,RenderLineNumbersType:LHe,RenderMinimap:xHe,ScrollbarVisibility:THe,ScrollType:EHe,TextEditorCursorBlinkingStyle:PHe,TextEditorCursorStyle:FHe,TrackedRangeStickiness:NHe,WrappingIndent:UHe,InjectedTextCursorStops:dHe,PositionAffinity:SHe,ShowLightbulbIconMode:DHe,TextDirection:MHe,ConfigurationChangedEvent:g7n,BareFontInfo:lR,FontInfo:jme,TextModelResolvedOptions:Jue,FindMatch:qK,ApplyUpdateResult:uZ,EditorZoom:Rv,createMultiFileDiffEditor:J6o,EditorType:Nie,EditorOptions:fg}}function LEo(e,t){if(!t||!Array.isArray(t))return!1;for(const n of t)if(!e(n))return!1;return!0}function xce(e,t){return typeof e=="boolean"?e:t}function SSt(e,t){return typeof e=="string"?e:t}function xEo(e){const t={};for(const n of e)t[n]=!0;return t}function LSt(e,t=!1){t&&(e=e.map(function(r){return r.toLowerCase()}));const n=xEo(e);return t?function(r){return n[r.toLowerCase()]!==void 0&&n.hasOwnProperty(r.toLowerCase())}:function(r){return n[r]!==void 0&&n.hasOwnProperty(r)}}function K$e(e,t,n){t=t.replace(/@@/g,"");let r=0,o;do o=!1,t=t.replace(/@(\w+)/g,function(a,l){o=!0;let d="";if(typeof e[l]=="string")d=e[l];else if(e[l]&&e[l]instanceof RegExp)d=e[l].source;else throw e[l]===void 0?Ra(e,"language definition does not contain attribute '"+l+"', used at: "+t):Ra(e,"attribute reference '"+l+"' must be a string, used at: "+t);return BT(d)?"":"(?:"+d+")"}),r++;while(o&&r<5);t=t.replace(/\x01/g,"@");const s=(e.ignoreCase?"i":"")+(e.unicode?"u":"");if(n&&t.match(/\$[sS](\d\d?)/g)){let l=null,d=null;return u=>(d&&l===u||(l=u,d=new RegExp(_5o(e,t,u),s)),d)}return new RegExp(t,s)}function EEo(e,t,n,r){if(r<0)return e;if(r=100){r=r-100;const o=n.split(".");if(o.unshift(n),r=0&&(r.tokenSubst=!0),typeof n.bracket=="string")if(n.bracket==="@open")r.bracket=1;else if(n.bracket==="@close")r.bracket=-1;else throw Ra(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);if(n.next){if(typeof n.next!="string")throw Ra(e,"the next state must be a string value in rule: "+t);{let o=n.next;if(!/^(@pop|@push|@popall)$/.test(o)&&(o[0]==="@"&&(o=o.substr(1)),o.indexOf("$")<0&&!S5o(e,R5(e,o,"",[],""))))throw Ra(e,"the next state '"+n.next+"' is not defined in rule: "+t);r.next=o}}return typeof n.goBack=="number"&&(r.goBack=n.goBack),typeof n.switchTo=="string"&&(r.switchTo=n.switchTo),typeof n.log=="string"&&(r.log=n.log),typeof n.nextEmbedded=="string"&&(r.nextEmbedded=n.nextEmbedded,e.usesEmbedded=!0),r}}else if(Array.isArray(n)){const r=[];for(let o=0,s=n.length;o0&&r[0]==="^",this.name=this.name+": "+r,this.regex=K$e(t,"^(?:"+(this.matchOnlyAtLineStart?r.substr(1):r)+")",!0)}setAction(t,n){this.action=J$e(t,this.name,n)}resolveRegex(t){return this.regex instanceof RegExp?this.regex:this.regex(t)}}function FMn(e,t){if(!t||typeof t!="object")throw new Error("Monarch: expecting a language definition object");const n={languageId:e,includeLF:xce(t.includeLF,!1),noThrow:!1,maxStack:100,start:typeof t.start=="string"?t.start:null,ignoreCase:xce(t.ignoreCase,!1),unicode:xce(t.unicode,!1),tokenPostfix:SSt(t.tokenPostfix,"."+e),defaultToken:SSt(t.defaultToken,"source"),usesEmbedded:!1,stateNames:{},tokenizer:{},brackets:[]},r=t;r.languageId=e,r.includeLF=n.includeLF,r.ignoreCase=n.ignoreCase,r.unicode=n.unicode,r.noThrow=n.noThrow,r.usesEmbedded=n.usesEmbedded,r.stateNames=t.tokenizer,r.defaultToken=n.defaultToken;function o(a,l,d){for(const u of d){let h=u.include;if(h){if(typeof h!="string")throw Ra(n,"an 'include' attribute must be a string at: "+a);if(h[0]==="@"&&(h=h.substr(1)),!t.tokenizer[h])throw Ra(n,"include target '"+h+"' is not defined at: "+a);o(a+"."+h,l,t.tokenizer[h])}else{const g=new QEo(a);if(Array.isArray(u)&&u.length>=1&&u.length<=3)if(g.setRegex(r,u[0]),u.length>=3)if(typeof u[1]=="string")g.setAction(r,{token:u[1],next:u[2]});else if(typeof u[1]=="object"){const m=u[1];m.next=u[2],g.setAction(r,m)}else throw Ra(n,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+a);else g.setAction(r,u[1]);else{if(!u.regex)throw Ra(n,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+a);u.name&&typeof u.name=="string"&&(g.name=u.name),u.matchOnlyAtStart&&(g.matchOnlyAtLineStart=xce(u.matchOnlyAtLineStart,!1)),g.setRegex(r,u.regex),g.setAction(r,u.action)}l.push(g)}}}if(!t.tokenizer||typeof t.tokenizer!="object")throw Ra(n,"a language definition must define the 'tokenizer' attribute as an object");n.tokenizer=[];for(const a in t.tokenizer)if(t.tokenizer.hasOwnProperty(a)){n.start||(n.start=a);const l=t.tokenizer[a];n.tokenizer[a]=new Array,o("tokenizer."+a,n.tokenizer[a],l)}if(n.usesEmbedded=r.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw Ra(n,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const s=[];for(const a of t.brackets){let l=a;if(l&&Array.isArray(l)&&l.length===3&&(l={token:l[2],open:l[0],close:l[1]}),l.open===l.close)throw Ra(n,"open and close brackets in a 'brackets' attribute must be different: "+l.open+` hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof l.open=="string"&&typeof l.token=="string"&&typeof l.close=="string")s.push({token:l.token+n.tokenPostfix,open:a8(n,l.open),close:a8(n,l.close)});else throw Ra(n,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return n.brackets=s,n.noThrow=!0,n}function DEo(e){eV.registerLanguage(e)}function BEo(){let e=[];return e=e.concat(eV.getLanguages()),e}function REo(e){return Hi.get(nc).languageIdCodec.encodeLanguageId(e)}function IEo(e,t){return Hi.withServices(()=>{const r=Hi.get(nc).onDidRequestRichLanguageFeatures(o=>{o===e&&(r.dispose(),t())});return r})}function MEo(e,t){return Hi.withServices(()=>{const r=Hi.get(nc).onDidRequestBasicLanguageFeatures(o=>{o===e&&(r.dispose(),t())});return r})}function PEo(e,t){if(!Hi.get(nc).isRegisteredLanguageId(e))throw new Error(`Cannot set configuration for unknown language ${e}`);return Hi.get(kl).register(e,t,100)}class FEo{constructor(t,n){this._languageId=t,this._actual=n}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(t,n,r){if(typeof this._actual.tokenize=="function")return Lee.adaptTokenize(this._languageId,this._actual,t,r);throw new Error("Not supported!")}tokenizeEncoded(t,n,r){const o=this._actual.tokenizeEncoded(t,r);return new i3e(o.tokens,o.endState)}}class Lee{constructor(t,n,r,o){this._languageId=t,this._actual=n,this._languageService=r,this._standaloneThemeService=o}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(t,n){const r=[];let o=0;for(let s=0,a=t.length;s0&&s[a-1]===m)continue;let v=g.startIndex;u===0?v=0:v{const r=await Promise.resolve(t.create());return r?NEo(r)?UMn(e,r):new bee(Hi.get(nc),Hi.get(L2),e,FMn(e,r),Hi.get(ar)):null});return Hl.registerFactory(e,n)}function WEo(e,t){if(!Hi.get(nc).isRegisteredLanguageId(e))throw new Error(`Cannot set tokens provider for unknown language ${e}`);return NMn(t)?git(e,{create:()=>t}):Hl.register(e,UMn(e,t))}function VEo(e,t){const n=r=>new bee(Hi.get(nc),Hi.get(L2),e,FMn(e,r),Hi.get(ar));return NMn(t)?git(e,{create:()=>t}):Hl.register(e,n(t))}function zEo(e,t){return Hi.get(Nn).referenceProvider.register(e,t)}function HEo(e,t){return Hi.get(Nn).renameProvider.register(e,t)}function $Eo(e,t){return Hi.get(Nn).newSymbolNamesProvider.register(e,t)}function XEo(e,t){return Hi.get(Nn).signatureHelpProvider.register(e,t)}function GEo(e,t){return Hi.get(Nn).hoverProvider.register(e,{provideHover:async(r,o,s,a)=>{const l=r.getWordAtPosition(o);return Promise.resolve(t.provideHover(r,o,s,a)).then(d=>{if(d)return!d.range&&l&&(d.range=new Ee(o.lineNumber,l.startColumn,o.lineNumber,l.endColumn)),d.range||(d.range=new Ee(o.lineNumber,o.column,o.lineNumber,o.column)),d})}})}function YEo(e,t){return Hi.get(Nn).documentSymbolProvider.register(e,t)}function ZEo(e,t){return Hi.get(Nn).documentHighlightProvider.register(e,t)}function qEo(e,t){return Hi.get(Nn).linkedEditingRangeProvider.register(e,t)}function KEo(e,t){return Hi.get(Nn).definitionProvider.register(e,t)}function JEo(e,t){return Hi.get(Nn).implementationProvider.register(e,t)}function e7o(e,t){return Hi.get(Nn).typeDefinitionProvider.register(e,t)}function t7o(e,t){return Hi.get(Nn).codeLensProvider.register(e,t)}function n7o(e,t,n){return Hi.get(Nn).codeActionProvider.register(e,{providedCodeActionKinds:n==null?void 0:n.providedCodeActionKinds,documentation:n==null?void 0:n.documentation,provideCodeActions:(o,s,a,l)=>{const u=Hi.get(nC).read({resource:o.uri}).filter(h=>Ee.areIntersectingOrTouching(h,s));return t.provideCodeActions(o,s,{markers:u,only:a.only,trigger:a.trigger},l)},resolveCodeAction:t.resolveCodeAction})}function i7o(e,t){return Hi.get(Nn).documentFormattingEditProvider.register(e,t)}function r7o(e,t){return Hi.get(Nn).documentRangeFormattingEditProvider.register(e,t)}function o7o(e,t){return Hi.get(Nn).onTypeFormattingEditProvider.register(e,t)}function s7o(e,t){return Hi.get(Nn).linkProvider.register(e,t)}function a7o(e,t){return Hi.get(Nn).completionProvider.register(e,t)}function l7o(e,t){return Hi.get(Nn).colorProvider.register(e,t)}function c7o(e,t){return Hi.get(Nn).foldingRangeProvider.register(e,t)}function d7o(e,t){return Hi.get(Nn).declarationProvider.register(e,t)}function u7o(e,t){return Hi.get(Nn).selectionRangeProvider.register(e,t)}function h7o(e,t){return Hi.get(Nn).documentSemanticTokensProvider.register(e,t)}function f7o(e,t){return Hi.get(Nn).documentRangeSemanticTokensProvider.register(e,t)}function g7o(e,t){return Hi.get(Nn).inlineCompletionsProvider.register(e,t)}function m7o(e,t){return Hi.get(Nn).inlayHintsProvider.register(e,t)}function k7o(){return{register:DEo,getLanguages:BEo,onLanguage:IEo,onLanguageEncountered:MEo,getEncodedLanguageId:REo,setLanguageConfiguration:PEo,setColorMap:jEo,registerTokensProviderFactory:git,setTokensProvider:WEo,setMonarchTokensProvider:VEo,registerReferenceProvider:zEo,registerRenameProvider:HEo,registerNewSymbolNameProvider:$Eo,registerCompletionItemProvider:a7o,registerSignatureHelpProvider:XEo,registerHoverProvider:GEo,registerDocumentSymbolProvider:YEo,registerDocumentHighlightProvider:ZEo,registerLinkedEditingRangeProvider:qEo,registerDefinitionProvider:KEo,registerImplementationProvider:JEo,registerTypeDefinitionProvider:e7o,registerCodeLensProvider:t7o,registerCodeActionProvider:n7o,registerDocumentFormattingEditProvider:i7o,registerDocumentRangeFormattingEditProvider:r7o,registerOnTypeFormattingEditProvider:o7o,registerLinkProvider:s7o,registerColorProvider:l7o,registerFoldingRangeProvider:c7o,registerDeclarationProvider:d7o,registerSelectionRangeProvider:u7o,registerDocumentSemanticTokensProvider:h7o,registerDocumentRangeSemanticTokensProvider:f7o,registerInlineCompletionsProvider:g7o,registerInlayHintsProvider:m7o,DocumentHighlightKind:nHe,CompletionItemKind:Zze,CompletionItemTag:qze,CompletionItemInsertTextRule:Yze,SymbolKind:RHe,SymbolTag:IHe,IndentAction:cHe,CompletionTriggerKind:Kze,SignatureHelpTriggerKind:BHe,InlayHintKind:uHe,InlineCompletionTriggerKind:gHe,CodeActionTriggerType:Gze,NewSymbolNameTag:wHe,NewSymbolNameTriggerKind:OHe,PartialAcceptTriggerKind:_He,HoverVerbosityAction:lHe,InlineCompletionEndOfLifeReasonKind:hHe,InlineCompletionHintStyle:fHe,FoldingRangeKind:LI,SelectedSuggestionInfo:ATn,EditDeltaInfo:yJ}}fg.wrappingIndent.defaultValue=0;fg.glyphMargin.defaultValue=!1;fg.autoIndent.defaultValue=3;fg.overviewRulerLanes.defaultValue=2;KJ.setFormatterSelector((e,t,n)=>Promise.resolve(e[0]));const wm=fMn();wm.editor=SEo();wm.languages=k7o();const v7o=wm.CancellationTokenSource,BV=wm.Emitter,A7o=wm.KeyCode,p7o=wm.KeyMod,b7o=wm.Position,xee=wm.Range,w7o=wm.Selection,O7o=wm.SelectionDirection,yf=wm.MarkerSeverity,Eee=wm.MarkerTag,NI=wm.Uri,y7o=wm.Token,Ic=wm.editor,Tt=wm.languages,u5e=wJe(),ej=globalThis;(u5e!=null&&u5e.globalAPI||typeof ej.define=="function"&&ej.define.amd)&&(ej.monaco=wm);typeof ej.require<"u"&&typeof ej.require.config=="function"&&ej.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]});const C7o=Object.freeze(Object.defineProperty({__proto__:null,CancellationTokenSource:v7o,Emitter:BV,KeyCode:A7o,KeyMod:p7o,MarkerSeverity:yf,MarkerTag:Eee,Position:b7o,Range:xee,Selection:w7o,SelectionDirection:O7o,Token:y7o,Uri:NI,editor:Ic,languages:Tt},Symbol.toStringTag,{value:"Module"}));let mit=class{constructor(t,n,r){this._onDidChange=new BV,this._languageId=t,this.setOptions(n),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(t){this._options=t||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(t){this.setOptions(t)}setModeConfiguration(t){this._modeConfiguration=t||Object.create(null),this._onDidChange.fire(this)}};const kit={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:"collapse",maxPreserveNewLines:void 0,preserveNewLines:!0}},vit={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},jMn=new mit("css",kit,vit),WMn=new mit("scss",kit,vit),VMn=new mit("less",kit,vit);function Ait(){return Ct(()=>Promise.resolve().then(()=>EBs),void 0,import.meta.url)}Tt.onLanguage("less",()=>{Ait().then(e=>e.setupMode(VMn))});Tt.onLanguage("scss",()=>{Ait().then(e=>e.setupMode(WMn))});Tt.onLanguage("css",()=>{Ait().then(e=>e.setupMode(jMn))});const _7o=Object.freeze(Object.defineProperty({__proto__:null,cssDefaults:jMn,lessDefaults:VMn,scssDefaults:WMn},Symbol.toStringTag,{value:"Module"}));let S7o=class{constructor(t,n,r){this._onDidChange=new BV,this._languageId=t,this.setOptions(n),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(t){this._options=t||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(t){this._modeConfiguration=t||Object.create(null),this._onDidChange.fire(this)}};const L7o={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},q3e={format:L7o,suggest:{},data:{useDefaultDataProvider:!0}};function K3e(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===qZ,documentFormattingEdits:e===qZ,documentRangeFormattingEdits:e===qZ}}const qZ="html",xSt="handlebars",ESt="razor",zMn=J3e(qZ,q3e,K3e(qZ)),x7o=zMn.defaults,HMn=J3e(xSt,q3e,K3e(xSt)),E7o=HMn.defaults,$Mn=J3e(ESt,q3e,K3e(ESt)),T7o=$Mn.defaults;function Q7o(){return Ct(()=>Promise.resolve().then(()=>BBs),void 0,import.meta.url)}function J3e(e,t=q3e,n=K3e(e)){const r=new S7o(e,t,n);let o;const s=Tt.onLanguage(e,async()=>{o=(await Q7o()).setupMode(r)});return{defaults:r,dispose(){s.dispose(),o==null||o.dispose(),o=void 0}}}const D7o=Object.freeze(Object.defineProperty({__proto__:null,handlebarDefaults:E7o,handlebarLanguageService:HMn,htmlDefaults:x7o,htmlLanguageService:zMn,razorDefaults:T7o,razorLanguageService:$Mn,registerHTMLLanguageService:J3e},Symbol.toStringTag,{value:"Module"}));let B7o=class{constructor(t,n,r){this._onDidChange=new BV,this._languageId=t,this.setDiagnosticsOptions(n),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(t){this._diagnosticsOptions=t||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(t){this._modeConfiguration=t||Object.create(null),this._onDidChange.fire(this)}};const R7o={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},I7o={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},XMn=new B7o("json",R7o,I7o),M7o=()=>GMn().then(e=>e.getWorker());function GMn(){return Ct(()=>Promise.resolve().then(()=>KBs),void 0,import.meta.url)}Tt.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]});Tt.onLanguage("json",()=>{GMn().then(e=>e.setupMode(XMn))});const P7o=Object.freeze(Object.defineProperty({__proto__:null,getWorker:M7o,jsonDefaults:XMn},Symbol.toStringTag,{value:"Module"})),F7o="5.9.3";var YMn=(e=>(e[e.None=0]="None",e[e.CommonJS=1]="CommonJS",e[e.AMD=2]="AMD",e[e.UMD=3]="UMD",e[e.System=4]="System",e[e.ES2015=5]="ES2015",e[e.ESNext=99]="ESNext",e))(YMn||{}),ZMn=(e=>(e[e.None=0]="None",e[e.Preserve=1]="Preserve",e[e.React=2]="React",e[e.ReactNative=3]="ReactNative",e[e.ReactJSX=4]="ReactJSX",e[e.ReactJSXDev=5]="ReactJSXDev",e))(ZMn||{}),qMn=(e=>(e[e.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",e[e.LineFeed=1]="LineFeed",e))(qMn||{}),KMn=(e=>(e[e.ES3=0]="ES3",e[e.ES5=1]="ES5",e[e.ES2015=2]="ES2015",e[e.ES2016=3]="ES2016",e[e.ES2017=4]="ES2017",e[e.ES2018=5]="ES2018",e[e.ES2019=6]="ES2019",e[e.ES2020=7]="ES2020",e[e.ESNext=99]="ESNext",e[e.JSON=100]="JSON",e[e.Latest=99]="Latest",e))(KMn||{}),JMn=(e=>(e[e.Classic=1]="Classic",e[e.NodeJs=2]="NodeJs",e))(JMn||{});class ePn{constructor(t,n,r,o,s){this._onDidChange=new BV,this._onDidExtraLibsChange=new BV,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(t),this.setDiagnosticsOptions(n),this.setWorkerOptions(r),this.setInlayHintsOptions(o),this.setModeConfiguration(s),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(t,n){let r;if(typeof n>"u"?r=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:r=n,this._extraLibs[r]&&this._extraLibs[r].content===t)return{dispose:()=>{}};let o=1;return this._removedExtraLibs[r]&&(o=this._removedExtraLibs[r]+1),this._extraLibs[r]&&(o=this._extraLibs[r].version+1),this._extraLibs[r]={content:t,version:o},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let s=this._extraLibs[r];s&&s.version===o&&(delete this._extraLibs[r],this._removedExtraLibs[r]=o,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(t){for(const n in this._extraLibs)this._removedExtraLibs[n]=this._extraLibs[n].version;if(this._extraLibs=Object.create(null),t&&t.length>0)for(const n of t){const r=n.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,o=n.content;let s=1;this._removedExtraLibs[r]&&(s=this._removedExtraLibs[r]+1),this._extraLibs[r]={content:o,version:s}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(t){this._compilerOptions=t||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(t){this._diagnosticsOptions=t||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(t){this._workerOptions=t||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(t){this._inlayHintsOptions=t||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(t){}setEagerModelSync(t){this._eagerModelSync=t}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(t){this._modeConfiguration=t||Object.create(null),this._onDidChange.fire(void 0)}}const N7o=F7o,tPn={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},pit=new ePn({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},tPn),nPn=new ePn({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},tPn),U7o=()=>ewe().then(e=>e.getTypeScriptWorker()),j7o=()=>ewe().then(e=>e.getJavaScriptWorker());function ewe(){return Ct(()=>Promise.resolve().then(()=>rRs),void 0,import.meta.url)}Tt.onLanguage("typescript",()=>ewe().then(e=>e.setupTypeScript(pit)));Tt.onLanguage("javascript",()=>ewe().then(e=>e.setupJavaScript(nPn)));const W7o=Object.freeze(Object.defineProperty({__proto__:null,JsxEmit:ZMn,ModuleKind:YMn,ModuleResolutionKind:JMn,NewLineKind:qMn,ScriptTarget:KMn,getJavaScriptWorker:j7o,getTypeScriptWorker:U7o,javascriptDefaults:nPn,typescriptDefaults:pit,typescriptVersion:N7o},Symbol.toStringTag,{value:"Module"})),iPn={},h5e={};class bit{static getOrCreate(t){return h5e[t]||(h5e[t]=new bit(t)),h5e[t]}constructor(t){this._languageId=t,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((n,r)=>{this._lazyLoadPromiseResolve=n,this._lazyLoadPromiseReject=r})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,iPn[this._languageId].loader().then(t=>this._lazyLoadPromiseResolve(t),t=>this._lazyLoadPromiseReject(t))),this._lazyLoadPromise}}function bi(e){const t=e.id;iPn[t]=e,Tt.register(e);const n=bit.getOrCreate(t);Tt.registerTokensProviderFactory(t,{create:async()=>(await n.load()).language}),Tt.onLanguageEncountered(t,async()=>{const r=await n.load();Tt.setLanguageConfiguration(t,r.conf)})}bi({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>Ct(()=>Promise.resolve().then(()=>aRs),void 0,import.meta.url)});bi({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>Ct(()=>Promise.resolve().then(()=>hRs),void 0,import.meta.url)});bi({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>Ct(()=>Promise.resolve().then(()=>mRs),void 0,import.meta.url)});bi({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>Ct(()=>Promise.resolve().then(()=>ARs),void 0,import.meta.url)});bi({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>Ct(()=>Promise.resolve().then(()=>ERs),void 0,import.meta.url)});bi({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>Ct(()=>Promise.resolve().then(()=>DRs),void 0,import.meta.url)});bi({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>Ct(()=>Promise.resolve().then(()=>IRs),void 0,import.meta.url)});bi({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>Ct(()=>Promise.resolve().then(()=>FRs),void 0,import.meta.url)});bi({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>Ct(()=>Promise.resolve().then(()=>pKn),void 0,import.meta.url)});bi({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>Ct(()=>Promise.resolve().then(()=>pKn),void 0,import.meta.url)});bi({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>Ct(()=>Promise.resolve().then(()=>VRs),void 0,import.meta.url)});bi({id:"csp",extensions:[".csp"],aliases:["CSP","csp"],loader:()=>Ct(()=>Promise.resolve().then(()=>$Rs),void 0,import.meta.url)});bi({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>Ct(()=>Promise.resolve().then(()=>YRs),void 0,import.meta.url)});bi({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>Ct(()=>Promise.resolve().then(()=>KRs),void 0,import.meta.url)});bi({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>Ct(()=>Promise.resolve().then(()=>tIs),void 0,import.meta.url)});bi({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>Ct(()=>Promise.resolve().then(()=>rIs),void 0,import.meta.url)});bi({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>Ct(()=>Promise.resolve().then(()=>aIs),void 0,import.meta.url)});bi({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>Ct(()=>Promise.resolve().then(()=>dIs),void 0,import.meta.url)});bi({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>Ct(()=>Promise.resolve().then(()=>fIs),void 0,import.meta.url)});bi({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>Ct(()=>Promise.resolve().then(()=>kIs),void 0,import.meta.url)});bi({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagAutoInterpolationDollar)});bi({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagAngleInterpolationDollar)});bi({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagBracketInterpolationDollar)});bi({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagAngleInterpolationBracket)});bi({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagBracketInterpolationBracket)});bi({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagAutoInterpolationDollar)});bi({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>Ct(()=>Promise.resolve().then(()=>fM),void 0,import.meta.url).then(e=>e.TagAutoInterpolationBracket)});bi({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>Ct(()=>Promise.resolve().then(()=>SIs),void 0,import.meta.url)});bi({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>Ct(()=>Promise.resolve().then(()=>EIs),void 0,import.meta.url)});bi({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>Ct(()=>Promise.resolve().then(()=>DIs),void 0,import.meta.url)});bi({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>Ct(()=>Promise.resolve().then(()=>IIs),void 0,import.meta.url)});bi({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>Ct(()=>Promise.resolve().then(()=>FIs),void 0,import.meta.url)});bi({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>Ct(()=>Promise.resolve().then(()=>jIs),void 0,import.meta.url)});bi({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>Ct(()=>Promise.resolve().then(()=>zIs),void 0,import.meta.url)});bi({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>Ct(()=>Promise.resolve().then(()=>GIs),void 0,import.meta.url)});bi({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>Ct(()=>Promise.resolve().then(()=>qIs),void 0,import.meta.url)});bi({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>Ct(()=>Promise.resolve().then(()=>eMs),void 0,import.meta.url)});bi({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>Ct(()=>Promise.resolve().then(()=>iMs),void 0,import.meta.url)});bi({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>Ct(()=>Promise.resolve().then(()=>sMs),void 0,import.meta.url)});bi({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>Ct(()=>Promise.resolve().then(()=>cMs),void 0,import.meta.url)});bi({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>Ct(()=>Promise.resolve().then(()=>hMs),void 0,import.meta.url)});bi({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>Ct(()=>Promise.resolve().then(()=>mMs),void 0,import.meta.url)});bi({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>Ct(()=>Promise.resolve().then(()=>AMs),void 0,import.meta.url)});bi({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>Ct(()=>Promise.resolve().then(()=>wMs),void 0,import.meta.url)});bi({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>Ct(()=>Promise.resolve().then(()=>CMs),void 0,import.meta.url)});bi({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>Ct(()=>Promise.resolve().then(()=>LMs),void 0,import.meta.url)});bi({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>Ct(()=>Promise.resolve().then(()=>TMs),void 0,import.meta.url)});bi({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>Ct(()=>Promise.resolve().then(()=>BMs),void 0,import.meta.url)});bi({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>Ct(()=>Promise.resolve().then(()=>MMs),void 0,import.meta.url)});bi({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>Ct(()=>Promise.resolve().then(()=>NMs),void 0,import.meta.url)});bi({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>Ct(()=>Promise.resolve().then(()=>WMs),void 0,import.meta.url)});bi({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>Ct(()=>Promise.resolve().then(()=>HMs),void 0,import.meta.url)});bi({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>Ct(()=>Promise.resolve().then(()=>GMs),void 0,import.meta.url)});bi({id:"pla",extensions:[".pla"],loader:()=>Ct(()=>Promise.resolve().then(()=>qMs),void 0,import.meta.url)});bi({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>Ct(()=>Promise.resolve().then(()=>ePs),void 0,import.meta.url)});bi({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>Ct(()=>Promise.resolve().then(()=>iPs),void 0,import.meta.url)});bi({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>Ct(()=>Promise.resolve().then(()=>sPs),void 0,import.meta.url)});bi({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>Ct(()=>Promise.resolve().then(()=>dPs),void 0,import.meta.url)});bi({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>Ct(()=>Promise.resolve().then(()=>fPs),void 0,import.meta.url)});bi({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>Ct(()=>Promise.resolve().then(()=>kPs),void 0,import.meta.url)});bi({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>Ct(()=>Promise.resolve().then(()=>pPs),void 0,import.meta.url)});bi({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>Ct(()=>Promise.resolve().then(()=>OPs),void 0,import.meta.url)});bi({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>Ct(()=>Promise.resolve().then(()=>_Ps),void 0,import.meta.url)});bi({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>Ct(()=>Promise.resolve().then(()=>xPs),void 0,import.meta.url)});bi({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>Ct(()=>Promise.resolve().then(()=>QPs),void 0,import.meta.url)});bi({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>Ct(()=>Promise.resolve().then(()=>RPs),void 0,import.meta.url)});bi({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>Ct(()=>Promise.resolve().then(()=>PPs),void 0,import.meta.url)});bi({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>Ct(()=>Promise.resolve().then(()=>UPs),void 0,import.meta.url)});bi({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>Ct(()=>Promise.resolve().then(()=>VPs),void 0,import.meta.url)});bi({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>Ct(()=>Promise.resolve().then(()=>$Ps),void 0,import.meta.url)});bi({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>Ct(()=>Promise.resolve().then(()=>YPs),void 0,import.meta.url)});bi({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>Ct(()=>Promise.resolve().then(()=>KPs),void 0,import.meta.url)});bi({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>Ct(()=>Promise.resolve().then(()=>tFs),void 0,import.meta.url)});bi({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>Ct(()=>Promise.resolve().then(()=>rFs),void 0,import.meta.url)});bi({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>Ct(()=>Promise.resolve().then(()=>aFs),void 0,import.meta.url)});bi({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>Ct(()=>Promise.resolve().then(()=>dFs),void 0,import.meta.url)});bi({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>Ct(()=>Promise.resolve().then(()=>fFs),void 0,import.meta.url)});bi({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>Ct(()=>Promise.resolve().then(()=>kFs),void 0,import.meta.url)});bi({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>Ct(()=>Promise.resolve().then(()=>pFs),void 0,import.meta.url)});bi({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>Ct(()=>Promise.resolve().then(()=>yKn),void 0,import.meta.url)});bi({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>Ct(()=>Promise.resolve().then(()=>yKn),void 0,import.meta.url)});bi({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>Ct(()=>Promise.resolve().then(()=>CFs),void 0,import.meta.url)});bi({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>Ct(()=>Promise.resolve().then(()=>LFs),void 0,import.meta.url)});bi({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>Ct(()=>Promise.resolve().then(()=>HIs),void 0,import.meta.url)});bi({id:"typespec",extensions:[".tsp"],aliases:["TypeSpec"],loader:()=>Ct(()=>Promise.resolve().then(()=>PFs),void 0,import.meta.url)});bi({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>Ct(()=>Promise.resolve().then(()=>UFs),void 0,import.meta.url)});bi({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>Ct(()=>Promise.resolve().then(()=>JFs),void 0,import.meta.url)});bi({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\Ct(()=>Promise.resolve().then(()=>nNs),void 0,import.meta.url)});bi({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>Ct(()=>Promise.resolve().then(()=>oNs),void 0,import.meta.url)});var V7o=Object.defineProperty,z7o=(e,t,n)=>t in e?V7o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Gr=(e,t,n)=>z7o(e,typeof t!="symbol"?t+"":t,n),Ece,TSt,Tce,f5e,Qce;function H7o(e){return e.method!==void 0}var QSt;(function(e){function t(n){return n}e.create=t})(QSt||(QSt={}));var E4;(function(e){e.parseError=-32700,e.invalidRequest=-32600,e.methodNotFound=-32601,e.invalidParams=-32602,e.internalError=-32603;function t(s){return-32099<=s&&s<=-32e3}e.isServerError=t;function n(s){if(!t(s))throw new Error("Invalid range for a server error.");return s}e.serverError=n,e.unexpectedServerError=-32e3;function r(s){return!0}e.isApplicationError=r;function o(s){return s}e.applicationError=o,e.genericApplicationError=-320100})(E4||(E4={}));var rPn=class{constructor(){Gr(this,"listeners",new Set),Gr(this,"event",e=>(this.listeners.add(e),{dispose:()=>{this.listeners.delete(e)}}))}fire(e){this.listeners.forEach(t=>t(e))}},$7o=class{constructor(e){Gr(this,"_value"),Gr(this,"eventEmitter"),this._value=e,this.eventEmitter=new rPn}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this.eventEmitter.fire(e))}get onChange(){return this.eventEmitter.event}};function X7o(e,t){const n=setTimeout(t,e);return{dispose:()=>clearTimeout(n)}}function g5e(e,t,n){return e instanceof Set?(e.add(t),{dispose:()=>e.delete(t)}):(e.set(t,n),{dispose:()=>e.delete(t)})}var G7o=class{constructor(){Gr(this,"_state","none"),Gr(this,"promise"),Gr(this,"resolve",()=>{}),Gr(this,"reject",()=>{}),this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}get state(){return this._state}};Ece=class{constructor(){Gr(this,"_unprocessedMessages",[]),Gr(this,"_messageListener"),Gr(this,"id",Ece.id++),Gr(this,"_state",new $7o({state:"open"})),Gr(this,"state",this._state)}setListener(e){if(this._messageListener=e,!!e)for(;this._unprocessedMessages.length>0&&this._messageListener!==void 0;){const t=this._unprocessedMessages.shift();this._messageListener(t)}}send(e){return this._sendImpl(e)}_dispatchReceivedMessage(e){this._unprocessedMessages.length===0&&this._messageListener?this._messageListener(e):this._unprocessedMessages.push(e)}_onConnectionClosed(){this._state.value={state:"closed",error:void 0}}log(e){return new Y7o(this,e??new Z7o)}},Gr(Ece,"id",0);var Y7o=class{constructor(e,t){Gr(this,"baseStream"),Gr(this,"logger"),this.baseStream=e,this.logger=t}get state(){return this.baseStream.state}setListener(e){if(e===void 0){this.baseStream.setListener(void 0);return}this.baseStream.setListener(t=>{this.logger.log(this.baseStream,"incoming",t),e(t)})}send(e){return this.logger.log(this.baseStream,"outgoing",e),this.baseStream.send(e)}toString(){return`StreamLogger/${this.baseStream.toString()}`}},Z7o=class{log(e,t,n){console.log(`${t==="incoming"?"<-":"->"} [${e.toString()}] ${JSON.stringify(n)}`)}},q7o=class oPn{constructor(t){Gr(this,"connect"),this.connect=t}mapContext(t){return new oPn(n=>this.connect(n?K7o(n,t):void 0))}};function K7o(e,t){return{handleNotification:(n,r)=>e.handleNotification(n,t(r)),handleRequest:(n,r,o)=>e.handleRequest(n,r,t(o))}}var J7o=class sPn{constructor(t,n,r){Gr(this,"_stream"),Gr(this,"_listener"),Gr(this,"_logger"),Gr(this,"_unprocessedResponses",new Map),Gr(this,"_lastUsedRequestId",0),this._stream=t,this._listener=n,this._logger=r,this._stream.setListener(o=>{H7o(o)?o.id===void 0?this._processNotification(o):this._processRequest(o):this._processResponse(o)})}static createChannel(t,n){let r=!1;return new q7o(o=>{if(r)throw new Error(`A channel to the stream ${t} was already constructed!`);return r=!0,new sPn(t,o,n)})}get state(){return this._stream.state}async _processNotification(t){if(t.id!==void 0)throw new Error;if(!this._listener){this._logger&&this._logger.debug({text:"Notification ignored",message:t});return}try{await this._listener.handleNotification({method:t.method,params:t.params||null})}catch(n){this._logger&&this._logger.warn({text:`Exception was thrown while handling notification: ${n}`,exception:n,message:t})}}async _processRequest(t){if(t.id===void 0)throw new Error;let n;if(this._listener)try{n=await this._listener.handleRequest({method:t.method,params:t.params||null},t.id)}catch(o){this._logger&&this._logger.warn({text:`Exception was thrown while handling request: ${o}`,message:t,exception:o}),n={error:{code:E4.internalError,message:"An unexpected exception was thrown.",data:void 0}}}else this._logger&&this._logger.debug({text:"Received request even though not listening for requests",message:t}),n={error:{code:E4.methodNotFound,message:"This endpoint does not listen for requests or notifications.",data:void 0}};let r;"result"in n?r={jsonrpc:"2.0",id:t.id,result:n.result}:r={jsonrpc:"2.0",id:t.id,error:n.error},await this._stream.send(r)}_processResponse(t){const n=""+t.id,r=this._unprocessedResponses.get(n);if(!r){this._logger&&this._logger.debug({text:"Got an unexpected response message",message:t});return}this._unprocessedResponses.delete(n),r(t)}_newRequestId(){return this._lastUsedRequestId++}sendRequest(t,n,r){const o={jsonrpc:"2.0",id:this._newRequestId(),method:t.method,params:t.params||void 0};return r&&r(o.id),new Promise((s,a)=>{const l=""+o.id;this._unprocessedResponses.set(l,d=>{"result"in d?s({result:d.result}):(d.error||a(new Error("Response had neither 'result' nor 'error' field set.")),s({error:d.error}))}),this._stream.send(o).then(void 0,d=>{this._unprocessedResponses.delete(l),a(d)})})}sendNotification(t,n){const r={jsonrpc:"2.0",id:void 0,method:t.method,params:t.params||void 0};return this._stream.send(r)}toString(){return"StreamChannel/"+this._stream.toString()}},tj;(function(e){function t(){return{deserializeFromJson:o=>({hasErrors:!1,value:o}),serializeToJson:o=>o}}e.sAny=t;function n(){return{deserializeFromJson:o=>({hasErrors:!1,value:{}}),serializeToJson:o=>({})}}e.sEmptyObject=n;function r(){return{deserializeFromJson:o=>({hasErrors:!1,value:void 0}),serializeToJson:o=>null}}e.sVoidFromNull=r})(tj||(tj={}));const aPn=Symbol("OptionalMethodNotFound");var lPn=class{contextualize(e){return new eTo(this,e)}},eTo=class extends lPn{constructor(e,t){super(),Gr(this,"underylingTypedChannel"),Gr(this,"converters"),this.underylingTypedChannel=e,this.converters=t}async request(e,t,n){const r=await this.converters.getSendContext(n);return this.underylingTypedChannel.request(e,t,r)}async notify(e,t,n){const r=await this.converters.getSendContext(n);return this.underylingTypedChannel.notify(e,t,r)}registerNotificationHandler(e,t){return this.underylingTypedChannel.registerNotificationHandler(e,async(n,r)=>await t(n,await this.converters.getNewContext(r)))}registerRequestHandler(e,t){return this.underylingTypedChannel.registerRequestHandler(e,async(n,r,o)=>await t(n,r,await this.converters.getNewContext(o)))}},DSt=class cPn extends lPn{constructor(t,n={}){super(),Gr(this,"channelCtor"),Gr(this,"_requestSender"),Gr(this,"_handler",new Map),Gr(this,"_unknownNotificationHandler",new Set),Gr(this,"_timeout"),Gr(this,"sendExceptionDetails",!1),Gr(this,"_logger"),Gr(this,"listeningDeferred",new G7o),Gr(this,"onListening",this.listeningDeferred.promise),Gr(this,"_requestDidErrorEventEmitter",new rPn),Gr(this,"onRequestDidError",this._requestDidErrorEventEmitter.event),this.channelCtor=t,this._logger=n.logger,this.sendExceptionDetails=!!n.sendExceptionDetails,this._timeout=X7o(1e3,()=>{this._requestSender||console.warn(`"${this.startListen.name}" has not been called within 1 second after construction of this channel. Did you forget to call it?`,this)})}static fromTransport(t,n={}){return new cPn(J7o.createChannel(t,n.logger),n)}startListen(){if(this._requestSender)throw new Error(`"${this.startListen.name}" can be called only once, but it already has been called.`);this._timeout&&(this._timeout.dispose(),this._timeout=void 0),this._requestSender=this.channelCtor.connect({handleRequest:(t,n,r)=>this.handleRequest(t,n,r),handleNotification:(t,n)=>this.handleNotification(t,n)}),this.listeningDeferred.resolve()}checkChannel(t){if(!t)throw new Error(`"${this.startListen.name}" must be called before any messages can be sent or received.`);return!0}async handleRequest(t,n,r){const o=this._handler.get(t.method);if(!o)return this._logger&&this._logger.debug({text:`No request handler for "${t.method}".`,data:{requestObject:t}}),{error:{code:E4.methodNotFound,message:`No request handler for "${t.method}".`,data:{method:t.method}}};if(o.kind!="request"){const a=`"${t.method}" is registered as notification, but was sent as request.`;return this._logger&&this._logger.debug({text:a,data:{requestObject:t}}),{error:{code:E4.invalidRequest,message:a,data:{method:t.method}}}}const s=o.requestType.paramsSerializer.deserializeFromJson(t.params);if(s.hasErrors){const a=`Got invalid params: ${s.errorMessage}`;return this._logger&&this._logger.debug({text:a,data:{requestObject:t,errorMessage:s.errorMessage}}),{error:{code:E4.invalidParams,message:a,data:{errors:s.errorMessage}}}}else{const a=s.value;let l;try{const d=await o.handler(a,n,r);if("error"in d||"errorMessage"in d){const u=d.error?o.requestType.errorSerializer.serializeToJson(d.error):void 0;l={error:{code:d.errorCode||E4.genericApplicationError,message:d.errorMessage||"An error was returned",data:u}}}else l={result:o.requestType.resultSerializer.serializeToJson(d.ok)}}catch(d){d instanceof RSt?l={error:{code:d.code,message:d.message}}:(this._logger&&this._logger.warn({text:`An exception was thrown while handling a request: ${d}.`,exception:d,data:{requestObject:t}}),l={error:{code:E4.unexpectedServerError,message:this.sendExceptionDetails?`An exception was thrown while handling a request: ${d}.`:"Server has thrown an unexpected exception"}})}return l}}async handleNotification(t,n){const r=this._handler.get(t.method);if(!r){for(const a of this._unknownNotificationHandler)a(t);this._unknownNotificationHandler.size===0&&this._logger&&this._logger.debug({text:`Unhandled notification "${t.method}"`,data:{requestObject:t}});return}if(r.kind!="notification"){this._logger&&this._logger.debug({text:`"${t.method}" is registered as request, but was sent as notification.`,data:{requestObject:t}});return}const o=r.notificationType.paramsSerializer.deserializeFromJson(t.params);if(o.hasErrors){this._logger&&this._logger.debug({text:`Got invalid params: ${o}`,data:{requestObject:t,errorMessage:o.errorMessage}});return}const s=o.value;for(const a of r.handlers)try{a(s,n)}catch(l){this._logger&&this._logger.warn({text:`An exception was thrown while handling a notification: ${l}.`,exception:l,data:{requestObject:t}})}}registerUnknownNotificationHandler(t){return g5e(this._unknownNotificationHandler,t)}registerRequestHandler(t,n){if(this._handler.get(t.method))throw new Error(`Handler with method "${t.method}" already registered.`);return g5e(this._handler,t.method,{kind:"request",requestType:t,handler:n})}registerNotificationHandler(t,n){let r=this._handler.get(t.method);if(!r)r={kind:"notification",notificationType:t,handlers:new Set},this._handler.set(t.method,r);else{if(r.kind!=="notification")throw new Error(`Method "${t.method}" was already registered as request handler.`);if(r.notificationType!==t)throw new Error(`Method "${t.method}" was registered for a different type.`)}return g5e(r.handlers,n)}getRegisteredTypes(){const t=[];for(const n of this._handler.values())n.kind==="notification"?t.push(n.notificationType):n.kind==="request"&&t.push(n.requestType);return t}async request(t,n,r){if(!this.checkChannel(this._requestSender))throw new Error("Impossible");const o=t.paramsSerializer.serializeToJson(n);BSt(o);const s=await this._requestSender.sendRequest({method:t.method,params:o},r);if("error"in s){if(t.isOptional&&s.error.code===E4.methodNotFound)return aPn;let a;if(s.error.data!==void 0){const d=t.errorSerializer.deserializeFromJson(s.error.data);if(d.hasErrors)throw new Error(d.errorMessage);a=d.value}else a=void 0;const l=new RSt(s.error.message,a,s.error.code);throw this._requestDidErrorEventEmitter.fire({error:l}),l}else{const a=t.resultSerializer.deserializeFromJson(s.result);if(a.hasErrors)throw new Error("Could not deserialize response: "+a.errorMessage+` ${JSON.stringify(s,null,2)}`);return a.value}}async notify(t,n,r){if(!this.checkChannel(this._requestSender))throw new Error;const o=t.paramsSerializer.serializeToJson(n);BSt(o),this._requestSender.sendNotification({method:t.method,params:o},r)}};function BSt(e){if(e!==null&&Array.isArray(e)&&typeof e!="object")throw new Error("Invalid value! Only null, array and object is allowed.")}var RSt=class dPn extends Error{constructor(t,n,r=E4.genericApplicationError){super(t),Gr(this,"data"),Gr(this,"code"),this.data=n,this.code=r,Object.setPrototypeOf(this,dPn.prototype)}},tTo=class eXe{constructor(t,n,r,o,s=!1){Gr(this,"method"),Gr(this,"paramsSerializer"),Gr(this,"resultSerializer"),Gr(this,"errorSerializer"),Gr(this,"isOptional"),Gr(this,"kind","request"),this.method=t,this.paramsSerializer=n,this.resultSerializer=r,this.errorSerializer=o,this.isOptional=s}withMethod(t){return new eXe(t,this.paramsSerializer,this.resultSerializer,this.errorSerializer)}optional(){return new eXe(this.method,this.paramsSerializer,this.resultSerializer,this.errorSerializer,!0)}},nTo=class uPn{constructor(t,n){Gr(this,"method"),Gr(this,"paramsSerializer"),Gr(this,"kind","notification"),this.method=t,this.paramsSerializer=n}withMethod(t){return new uPn(t,this.paramsSerializer)}};function kr(e){return new tTo((e||{}).method,tj.sAny(),tj.sAny(),tj.sAny())}function vc(e){return new nTo((e||{}).method,tj.sAny())}const iTo=Symbol();var ISt=(TSt=iTo,Tce=class{constructor(e){Gr(this,"error"),Gr(this,TSt),this.error=e}},Gr(Tce,"factory",e=>new Tce(e)),Tce);function rTo(e){const t=MSt(e.server),n=MSt(e.client);return new oTo(e.tags||[],t,n)}function MSt(e){const t={};for(const[n,r]of Object.entries(e)){const o=r.method?r.method:n;t[n]=r.withMethod(o)}return t}var oTo=class hPn{constructor(t=[],n,r){Gr(this,"tags"),Gr(this,"server"),Gr(this,"client"),this.tags=t,this.server=n,this.client=r}_onlyDesignTime(){return new Error("This property is not meant to be accessed at runtime")}get TContractObject(){throw this._onlyDesignTime()}get TClientInterface(){throw this._onlyDesignTime()}get TServerInterface(){throw this._onlyDesignTime()}get TClientHandler(){throw this._onlyDesignTime()}get TServerHandler(){throw this._onlyDesignTime()}get TTags(){throw this._onlyDesignTime()}getInterface(t,n,r,o){const s=this.buildCounterpart(t,r),a=this.registerHandlers(t,n,o,s);return{counterpart:s,dispose:()=>a.dispose()}}buildCounterpart(t,n){const r={};for(const[o,s]of Object.entries(n)){let a;s.kind==="request"?s.isOptional?a=async(l,d)=>{l===void 0&&(l={});try{return await t.request(s,l,d)}catch(u){if(u&&u.code===E4.methodNotFound)return aPn;throw u}}:a=(l,d)=>(l===void 0&&(l={}),t.request(s,l,d)):a=(l,d)=>(l===void 0&&(l={}),t.notify(s,l,d)),r[o]=a}return r}registerHandlers(t,n,r,o){const s=[];for(const[a,l]of Object.entries(n))if(l.kind==="request"){let d=r[a];if(!d)continue;const u=this.createRequestHandler(o,d);s.push(t.registerRequestHandler(l,u))}else{const d=r[a];d&&s.push(t.registerNotificationHandler(l,(u,h)=>{d(u,{context:h,counterpart:o})}))}return{dispose:()=>s.forEach(a=>a.dispose())}}createRequestHandler(t,n){return async(r,o,s)=>{const a=await n(r,{context:s,counterpart:t,newErr:ISt.factory,requestId:o});return a instanceof ISt?a.error:{ok:a}}}static getServerFromStream(t,n,r,o){const s=DSt.fromTransport(n,r),{server:a}=t.getServer(s,o);return s.startListen(),{channel:s,server:a}}static registerServerToStream(t,n,r,o){const s=DSt.fromTransport(n,r),{client:a}=t.registerServer(s,o);return s.startListen(),{channel:s,client:a}}getServer(t,n){const{counterpart:r,dispose:o}=this.getInterface(t,this.client,this.server,n);return{server:r,dispose:o}}registerServer(t,n){const{counterpart:r,dispose:o}=this.getInterface(t,this.server,this.client,n);return{client:r,dispose:o}}withContext(){return new hPn(this.tags,this.server,this.client)}};let m5e=function(e){return e.Comment="comment",e.Imports="imports",e.Region="region",e}({}),$c=function(e){return e[e.File=1]="File",e[e.Module=2]="Module",e[e.Namespace=3]="Namespace",e[e.Package=4]="Package",e[e.Class=5]="Class",e[e.Method=6]="Method",e[e.Property=7]="Property",e[e.Field=8]="Field",e[e.Constructor=9]="Constructor",e[e.Enum=10]="Enum",e[e.Interface=11]="Interface",e[e.Function=12]="Function",e[e.Variable=13]="Variable",e[e.Constant=14]="Constant",e[e.String=15]="String",e[e.Number=16]="Number",e[e.Boolean=17]="Boolean",e[e.Array=18]="Array",e[e.Object=19]="Object",e[e.Key=20]="Key",e[e.Null=21]="Null",e[e.EnumMember=22]="EnumMember",e[e.Struct=23]="Struct",e[e.Event=24]="Event",e[e.Operator=25]="Operator",e[e.TypeParameter=26]="TypeParameter",e}({}),sTo=function(e){return e[e.Deprecated=1]="Deprecated",e}({}),PSt=function(e){return e[e.Type=1]="Type",e[e.Parameter=2]="Parameter",e}({}),ld=function(e){return e[e.Text=1]="Text",e[e.Method=2]="Method",e[e.Function=3]="Function",e[e.Constructor=4]="Constructor",e[e.Field=5]="Field",e[e.Variable=6]="Variable",e[e.Class=7]="Class",e[e.Interface=8]="Interface",e[e.Module=9]="Module",e[e.Property=10]="Property",e[e.Unit=11]="Unit",e[e.Value=12]="Value",e[e.Enum=13]="Enum",e[e.Keyword=14]="Keyword",e[e.Snippet=15]="Snippet",e[e.Color=16]="Color",e[e.File=17]="File",e[e.Reference=18]="Reference",e[e.Folder=19]="Folder",e[e.EnumMember=20]="EnumMember",e[e.Constant=21]="Constant",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter",e}({}),aTo=function(e){return e[e.Deprecated=1]="Deprecated",e}({}),lTo=function(e){return e[e.PlainText=1]="PlainText",e[e.Snippet=2]="Snippet",e}({}),k5e=function(e){return e[e.Text=1]="Text",e[e.Read=2]="Read",e[e.Write=3]="Write",e}({}),_9=function(e){return e[e.Error=1]="Error",e[e.Warning=2]="Warning",e[e.Information=3]="Information",e[e.Hint=4]="Hint",e}({}),FSt=function(e){return e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated",e}({}),v5e=function(e){return e[e.Invoked=1]="Invoked",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=3]="TriggerForIncompleteCompletions",e}({}),A5e=function(e){return e[e.Invoked=1]="Invoked",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange",e}({}),NSt=function(e){return e[e.Invoked=1]="Invoked",e[e.Automatic=2]="Automatic",e}({});var Ro=class{constructor(e){this.method=e}};const cTo={textDocumentImplementation:new Ro("textDocument/implementation"),textDocumentTypeDefinition:new Ro("textDocument/typeDefinition"),textDocumentDocumentColor:new Ro("textDocument/documentColor"),textDocumentColorPresentation:new Ro("textDocument/colorPresentation"),textDocumentFoldingRange:new Ro("textDocument/foldingRange"),textDocumentDeclaration:new Ro("textDocument/declaration"),textDocumentSelectionRange:new Ro("textDocument/selectionRange"),textDocumentPrepareCallHierarchy:new Ro("textDocument/prepareCallHierarchy"),textDocumentSemanticTokensFull:new Ro("textDocument/semanticTokens/full"),textDocumentSemanticTokensFullDelta:new Ro("textDocument/semanticTokens/full/delta"),textDocumentLinkedEditingRange:new Ro("textDocument/linkedEditingRange"),workspaceWillCreateFiles:new Ro("workspace/willCreateFiles"),workspaceWillRenameFiles:new Ro("workspace/willRenameFiles"),workspaceWillDeleteFiles:new Ro("workspace/willDeleteFiles"),textDocumentMoniker:new Ro("textDocument/moniker"),textDocumentPrepareTypeHierarchy:new Ro("textDocument/prepareTypeHierarchy"),textDocumentInlineValue:new Ro("textDocument/inlineValue"),textDocumentInlayHint:new Ro("textDocument/inlayHint"),textDocumentDiagnostic:new Ro("textDocument/diagnostic"),textDocumentInlineCompletion:new Ro("textDocument/inlineCompletion"),textDocumentWillSaveWaitUntil:new Ro("textDocument/willSaveWaitUntil"),textDocumentCompletion:new Ro("textDocument/completion"),textDocumentHover:new Ro("textDocument/hover"),textDocumentSignatureHelp:new Ro("textDocument/signatureHelp"),textDocumentDefinition:new Ro("textDocument/definition"),textDocumentReferences:new Ro("textDocument/references"),textDocumentDocumentHighlight:new Ro("textDocument/documentHighlight"),textDocumentDocumentSymbol:new Ro("textDocument/documentSymbol"),textDocumentCodeAction:new Ro("textDocument/codeAction"),workspaceSymbol:new Ro("workspace/symbol"),textDocumentCodeLens:new Ro("textDocument/codeLens"),textDocumentDocumentLink:new Ro("textDocument/documentLink"),textDocumentFormatting:new Ro("textDocument/formatting"),textDocumentRangeFormatting:new Ro("textDocument/rangeFormatting"),textDocumentRangesFormatting:new Ro("textDocument/rangesFormatting"),textDocumentOnTypeFormatting:new Ro("textDocument/onTypeFormatting"),textDocumentRename:new Ro("textDocument/rename"),workspaceExecuteCommand:new Ro("workspace/executeCommand"),workspaceDidCreateFiles:new Ro("workspace/didCreateFiles"),workspaceDidRenameFiles:new Ro("workspace/didRenameFiles"),workspaceDidDeleteFiles:new Ro("workspace/didDeleteFiles"),workspaceDidChangeConfiguration:new Ro("workspace/didChangeConfiguration"),textDocumentDidOpen:new Ro("textDocument/didOpen"),textDocumentDidChange:new Ro("textDocument/didChange"),textDocumentDidClose:new Ro("textDocument/didClose"),textDocumentDidSave:new Ro("textDocument/didSave"),textDocumentWillSave:new Ro("textDocument/willSave"),workspaceDidChangeWatchedFiles:new Ro("workspace/didChangeWatchedFiles")};rTo({server:{textDocumentImplementation:kr({method:"textDocument/implementation"}),textDocumentTypeDefinition:kr({method:"textDocument/typeDefinition"}),textDocumentDocumentColor:kr({method:"textDocument/documentColor"}),textDocumentColorPresentation:kr({method:"textDocument/colorPresentation"}),textDocumentFoldingRange:kr({method:"textDocument/foldingRange"}),textDocumentDeclaration:kr({method:"textDocument/declaration"}),textDocumentSelectionRange:kr({method:"textDocument/selectionRange"}),textDocumentPrepareCallHierarchy:kr({method:"textDocument/prepareCallHierarchy"}),callHierarchyIncomingCalls:kr({method:"callHierarchy/incomingCalls"}),callHierarchyOutgoingCalls:kr({method:"callHierarchy/outgoingCalls"}),textDocumentSemanticTokensFull:kr({method:"textDocument/semanticTokens/full"}),textDocumentSemanticTokensFullDelta:kr({method:"textDocument/semanticTokens/full/delta"}),textDocumentSemanticTokensRange:kr({method:"textDocument/semanticTokens/range"}),textDocumentLinkedEditingRange:kr({method:"textDocument/linkedEditingRange"}),workspaceWillCreateFiles:kr({method:"workspace/willCreateFiles"}),workspaceWillRenameFiles:kr({method:"workspace/willRenameFiles"}),workspaceWillDeleteFiles:kr({method:"workspace/willDeleteFiles"}),textDocumentMoniker:kr({method:"textDocument/moniker"}),textDocumentPrepareTypeHierarchy:kr({method:"textDocument/prepareTypeHierarchy"}),typeHierarchySupertypes:kr({method:"typeHierarchy/supertypes"}),typeHierarchySubtypes:kr({method:"typeHierarchy/subtypes"}),textDocumentInlineValue:kr({method:"textDocument/inlineValue"}),textDocumentInlayHint:kr({method:"textDocument/inlayHint"}),inlayHintResolve:kr({method:"inlayHint/resolve"}),textDocumentDiagnostic:kr({method:"textDocument/diagnostic"}),workspaceDiagnostic:kr({method:"workspace/diagnostic"}),textDocumentInlineCompletion:kr({method:"textDocument/inlineCompletion"}),initialize:kr({method:"initialize"}),shutdown:kr({method:"shutdown"}),textDocumentWillSaveWaitUntil:kr({method:"textDocument/willSaveWaitUntil"}),textDocumentCompletion:kr({method:"textDocument/completion"}),completionItemResolve:kr({method:"completionItem/resolve"}),textDocumentHover:kr({method:"textDocument/hover"}),textDocumentSignatureHelp:kr({method:"textDocument/signatureHelp"}),textDocumentDefinition:kr({method:"textDocument/definition"}),textDocumentReferences:kr({method:"textDocument/references"}),textDocumentDocumentHighlight:kr({method:"textDocument/documentHighlight"}),textDocumentDocumentSymbol:kr({method:"textDocument/documentSymbol"}),textDocumentCodeAction:kr({method:"textDocument/codeAction"}),codeActionResolve:kr({method:"codeAction/resolve"}),workspaceSymbol:kr({method:"workspace/symbol"}),workspaceSymbolResolve:kr({method:"workspaceSymbol/resolve"}),textDocumentCodeLens:kr({method:"textDocument/codeLens"}),codeLensResolve:kr({method:"codeLens/resolve"}),textDocumentDocumentLink:kr({method:"textDocument/documentLink"}),documentLinkResolve:kr({method:"documentLink/resolve"}),textDocumentFormatting:kr({method:"textDocument/formatting"}),textDocumentRangeFormatting:kr({method:"textDocument/rangeFormatting"}),textDocumentRangesFormatting:kr({method:"textDocument/rangesFormatting"}),textDocumentOnTypeFormatting:kr({method:"textDocument/onTypeFormatting"}),textDocumentRename:kr({method:"textDocument/rename"}),textDocumentPrepareRename:kr({method:"textDocument/prepareRename"}),workspaceExecuteCommand:kr({method:"workspace/executeCommand"}),workspaceDidChangeWorkspaceFolders:vc({method:"workspace/didChangeWorkspaceFolders"}),windowWorkDoneProgressCancel:vc({method:"window/workDoneProgress/cancel"}),workspaceDidCreateFiles:vc({method:"workspace/didCreateFiles"}),workspaceDidRenameFiles:vc({method:"workspace/didRenameFiles"}),workspaceDidDeleteFiles:vc({method:"workspace/didDeleteFiles"}),notebookDocumentDidOpen:vc({method:"notebookDocument/didOpen"}),notebookDocumentDidChange:vc({method:"notebookDocument/didChange"}),notebookDocumentDidSave:vc({method:"notebookDocument/didSave"}),notebookDocumentDidClose:vc({method:"notebookDocument/didClose"}),initialized:vc({method:"initialized"}),exit:vc({method:"exit"}),workspaceDidChangeConfiguration:vc({method:"workspace/didChangeConfiguration"}),textDocumentDidOpen:vc({method:"textDocument/didOpen"}),textDocumentDidChange:vc({method:"textDocument/didChange"}),textDocumentDidClose:vc({method:"textDocument/didClose"}),textDocumentDidSave:vc({method:"textDocument/didSave"}),textDocumentWillSave:vc({method:"textDocument/willSave"}),workspaceDidChangeWatchedFiles:vc({method:"workspace/didChangeWatchedFiles"}),setTrace:vc({method:"$/setTrace"}),cancelRequest:vc({method:"$/cancelRequest"}),progress:vc({method:"$/progress"})},client:{workspaceWorkspaceFolders:kr({method:"workspace/workspaceFolders"}).optional(),workspaceConfiguration:kr({method:"workspace/configuration"}).optional(),workspaceFoldingRangeRefresh:kr({method:"workspace/foldingRange/refresh"}).optional(),windowWorkDoneProgressCreate:kr({method:"window/workDoneProgress/create"}).optional(),workspaceSemanticTokensRefresh:kr({method:"workspace/semanticTokens/refresh"}).optional(),windowShowDocument:kr({method:"window/showDocument"}).optional(),workspaceInlineValueRefresh:kr({method:"workspace/inlineValue/refresh"}).optional(),workspaceInlayHintRefresh:kr({method:"workspace/inlayHint/refresh"}).optional(),workspaceDiagnosticRefresh:kr({method:"workspace/diagnostic/refresh"}).optional(),clientRegisterCapability:kr({method:"client/registerCapability"}).optional(),clientUnregisterCapability:kr({method:"client/unregisterCapability"}).optional(),windowShowMessageRequest:kr({method:"window/showMessageRequest"}).optional(),workspaceCodeLensRefresh:kr({method:"workspace/codeLens/refresh"}).optional(),workspaceApplyEdit:kr({method:"workspace/applyEdit"}).optional(),windowShowMessage:vc({method:"window/showMessage"}),windowLogMessage:vc({method:"window/logMessage"}),telemetryEvent:vc({method:"telemetry/event"}),textDocumentPublishDiagnostics:vc({method:"textDocument/publishDiagnostics"}),logTrace:vc({method:"$/logTrace"}),cancelRequest:vc({method:"$/cancelRequest"}),progress:vc({method:"$/progress"})}});f5e=class{constructor(){Gr(this,"_store",new dTo)}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}},Gr(f5e,"None",Object.freeze({dispose(){}}));var dTo=(Qce=class{constructor(){Gr(this,"_toDispose",new Set),Gr(this,"_isDisposed",!1)}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}clear(){if(this._toDispose.size!==0)try{for(const e of this._toDispose)e.dispose()}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?Qce.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}},Gr(Qce,"DISABLE_DISPOSED_WARNING",!1),Qce);Tt.CodeActionTriggerType.Invoke,NSt.Invoked,Tt.CodeActionTriggerType.Auto,NSt.Automatic;ld.Text,Tt.CompletionItemKind.Text,ld.Method,Tt.CompletionItemKind.Method,ld.Function,Tt.CompletionItemKind.Function,ld.Constructor,Tt.CompletionItemKind.Constructor,ld.Field,Tt.CompletionItemKind.Field,ld.Variable,Tt.CompletionItemKind.Variable,ld.Class,Tt.CompletionItemKind.Class,ld.Interface,Tt.CompletionItemKind.Interface,ld.Module,Tt.CompletionItemKind.Module,ld.Property,Tt.CompletionItemKind.Property,ld.Unit,Tt.CompletionItemKind.Unit,ld.Value,Tt.CompletionItemKind.Value,ld.Enum,Tt.CompletionItemKind.Enum,ld.Keyword,Tt.CompletionItemKind.Keyword,ld.Snippet,Tt.CompletionItemKind.Snippet,ld.Color,Tt.CompletionItemKind.Color,ld.File,Tt.CompletionItemKind.File,ld.Reference,Tt.CompletionItemKind.Reference,ld.Folder,Tt.CompletionItemKind.Folder,ld.EnumMember,Tt.CompletionItemKind.EnumMember,ld.Constant,Tt.CompletionItemKind.Constant,ld.Struct,Tt.CompletionItemKind.Struct,ld.Event,Tt.CompletionItemKind.Event,ld.Operator,Tt.CompletionItemKind.Operator,ld.TypeParameter,Tt.CompletionItemKind.TypeParameter;aTo.Deprecated,Tt.CompletionItemTag.Deprecated;Tt.CompletionTriggerKind.Invoke,v5e.Invoked,Tt.CompletionTriggerKind.TriggerCharacter,v5e.TriggerCharacter,Tt.CompletionTriggerKind.TriggerForIncompleteCompletions,v5e.TriggerForIncompleteCompletions;lTo.Snippet,Tt.CompletionItemInsertTextRule.InsertAsSnippet;$c.File,Tt.SymbolKind.File,$c.Module,Tt.SymbolKind.Module,$c.Namespace,Tt.SymbolKind.Namespace,$c.Package,Tt.SymbolKind.Package,$c.Class,Tt.SymbolKind.Class,$c.Method,Tt.SymbolKind.Method,$c.Property,Tt.SymbolKind.Property,$c.Field,Tt.SymbolKind.Field,$c.Constructor,Tt.SymbolKind.Constructor,$c.Enum,Tt.SymbolKind.Enum,$c.Interface,Tt.SymbolKind.Interface,$c.Function,Tt.SymbolKind.Function,$c.Variable,Tt.SymbolKind.Variable,$c.Constant,Tt.SymbolKind.Constant,$c.String,Tt.SymbolKind.String,$c.Number,Tt.SymbolKind.Number,$c.Boolean,Tt.SymbolKind.Boolean,$c.Array,Tt.SymbolKind.Array,$c.Object,Tt.SymbolKind.Object,$c.Key,Tt.SymbolKind.Key,$c.Null,Tt.SymbolKind.Null,$c.EnumMember,Tt.SymbolKind.EnumMember,$c.Struct,Tt.SymbolKind.Struct,$c.Event,Tt.SymbolKind.Event,$c.Operator,Tt.SymbolKind.Operator,$c.TypeParameter,Tt.SymbolKind.TypeParameter;sTo.Deprecated,Tt.SymbolTag.Deprecated;k5e.Text,Tt.DocumentHighlightKind.Text,k5e.Read,Tt.DocumentHighlightKind.Read,k5e.Write,Tt.DocumentHighlightKind.Write;m5e.Comment,Tt.FoldingRangeKind.Comment,m5e.Imports,Tt.FoldingRangeKind.Imports,m5e.Region,Tt.FoldingRangeKind.Region;yf.Error,_9.Error,yf.Warning,_9.Warning,yf.Info,_9.Information,yf.Hint,_9.Hint;_9.Error,yf.Error,_9.Warning,yf.Warning,_9.Information,yf.Info,_9.Hint,yf.Hint;FSt.Unnecessary,Eee.Unnecessary,FSt.Deprecated,Eee.Deprecated;Tt.SignatureHelpTriggerKind.Invoke,A5e.Invoked,Tt.SignatureHelpTriggerKind.TriggerCharacter,A5e.TriggerCharacter,Tt.SignatureHelpTriggerKind.ContentChange,A5e.ContentChange;PSt.Type,Tt.InlayHintKind.Type,PSt.Parameter,Tt.InlayHintKind.Parameter;new Map([...Object.values(cTo)].map(e=>[e.method,e]));function uTo(e,t){var r;const n=globalThis.MonacoEnvironment;if(n!=null&&n.createTrustedTypesPolicy)try{return n.createTrustedTypesPolicy(e,t)}catch(o){console.error(o);return}try{return(r=globalThis.trustedTypes)==null?void 0:r.createPolicy(e,t)}catch(o){console.error(o);return}}let Qke;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?Qke=globalThis.workerttPolicy:Qke=uTo("defaultWorkerFactory",{createScriptURL:e=>e});function hTo(e){const t=e.label,n=globalThis.MonacoEnvironment;if(n){if(typeof n.getWorker=="function")return n.getWorker("workerMain.js",t);if(typeof n.getWorkerUrl=="function"){const r=n.getWorkerUrl("workerMain.js",t);return new Worker(Qke?Qke.createScriptURL(r):r,{name:t,type:"module"})}}if(e.createWorker)return e.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function twe(e){const t=Promise.resolve(hTo({label:e.label??"monaco-editor-worker",moduleId:e.moduleId,createWorker:e.createWorker})).then(n=>(n.postMessage("ignore"),n.postMessage(e.createData),n));return Ic.createWebWorker({worker:t,host:e.host,keepIdleModels:e.keepIdleModels})}function fPn(){return C7o}const p5e=globalThis.MonacoEnvironment;p5e!=null&&p5e.globalAPI&&(globalThis.monaco=fPn());const nwe=fPn();nwe.languages.css=_7o;nwe.languages.html=D7o;nwe.languages.typescript=W7o;nwe.languages.json=P7o;const fTo=e=>{console.warn(`[MonacoEditorVue3]: ${e}`)},USt=e=>typeof e=="number"?`${e}px`:typeof e=="string"?e.includes("%")||e.includes("px")||e.includes("rem")||e.includes("em")?e:`${e}px`:"100%",gTo=()=>{const e=fe({isLoading:!1,loadingText:"Loading Monaco Editor...",progress:0}),t=fe(null),n=fe(!1),r=l=>{e.value={...e.value,...l}};return{loading:e,error:t,isReady:n,setLoading:r,setError:l=>{t.value=l,l&&(fTo(`Editor Error [${l.code}]: ${l.message}`),l.details&&console.error("Error details:",l.details))},clearError:()=>{t.value=null},setReady:l=>{n.value=l,l&&r({isLoading:!1,progress:100})}}},mTo=e=>({executeHook:async(n,...r)=>{var o;const s=e==null?void 0:e[n];if(s)try{await s(...r)}catch(a){(o=e==null?void 0:e.onError)==null||o.call(e,{code:"LIFECYCLE_ERROR",message:`Error in ${n} hook`,details:a instanceof Error?a.message:String(a),recoverable:!0})}}}),kTo=(e,t)=>{let n=null;const r=fe(),{loading:o,error:s,isReady:a,setLoading:l,setError:d,clearError:u,setReady:h}=gTo(),{executeHook:g}=mTo(e.lifecycle),m=async()=>{try{if(!r.value)throw new Error("Container element not found");await g("beforeCreate"),l({isLoading:!0,progress:20}),await g("onCreating"),t("editorWillMount"),l({progress:50});const k={value:e.value,language:e.language,theme:e.theme,...e.options};n=Ic.create(r.value,k),l({progress:80}),await g("onCreated",n),n.onDidChangeModelContent(A=>{const p=n.getValue();e.value!==p&&(t("change",p,A),t("update:value",p))}),h(!0),await g("onReady",n),t("editorDidMount",n)}catch(k){const A={code:"EDITOR_CREATE_FAILED",message:"Failed to create Monaco editor",details:k instanceof Error?k.message:String(k),recoverable:!0};d(A),await g("onError",A)}},v=async()=>{try{await g("beforeDestroy"),n&&(n.dispose(),n=null),h(!1),u(),await g("onDestroyed")}catch(k){const A={code:"EDITOR_DESTROY_FAILED",message:"Failed to destroy Monaco editor",details:k instanceof Error?k.message:String(k),recoverable:!1};d(A)}};return An(()=>{ai(()=>{m()})}),Qa(()=>{v()}),pt(()=>e.options,k=>{if(!(!k||!n))try{n.updateOptions(k)}catch(A){const p={code:"OPTIONS_UPDATE_FAILED",message:"Failed to update editor options",details:A instanceof Error?A.message:String(A),recoverable:!0};d(p)}},{deep:!0}),pt(()=>e.value,k=>{if(!n||k===void 0)return;if(n.getValue()!==k)try{n.setValue(k)}catch(p){const b={code:"VALUE_UPDATE_FAILED",message:"Failed to update editor value",details:p instanceof Error?p.message:String(p),recoverable:!0};d(b)}}),{editorInstance:n,container:r,loading:o,error:s,isReady:a,retry:()=>{u(),m()},destroy:v}},vTo=ge("div",null,[ge("div")],-1),ATo={key:0},pTo=Je({__name:"MonacoLoading",props:{loadingText:{default:"Loading Monaco Editor..."},progress:{default:0},showProgress:{type:Boolean,default:!0}},setup(e){return(t,n)=>(xe(),Ge("div",null,[ge("div",null,[vTo,ge("div",null,Pe(t.loadingText),1),t.showProgress?(xe(),Ge("div",ATo,[ge("div",null,[ge("div",{style:no({width:`${t.progress}%`})},null,4)]),ge("div",null,Pe(t.progress)+"%",1)])):nn("",!0)])]))}}),bTo=ge("div",null,[ge("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[ge("circle",{cx:"12",cy:"12",r:"10",stroke:"#dc3545","stroke-width":"2"}),ge("path",{d:"m15 9-6 6",stroke:"#dc3545","stroke-width":"2"}),ge("path",{d:"m9 9 6 6",stroke:"#dc3545","stroke-width":"2"})])],-1),wTo=ge("div",null,"Monaco Editor Error",-1),OTo={key:0},yTo=ge("summary",null,"Error Details",-1),CTo={key:1},_To=Je({__name:"MonacoErrorBoundary",props:{error:{},showDetails:{type:Boolean,default:!0},showRetry:{type:Boolean,default:!0},showReload:{type:Boolean,default:!1},showReport:{type:Boolean,default:!1}},emits:["retry","reload","report"],setup(e,{emit:t}){const n=e,r=t,o=X(()=>n.error.code),s=()=>{r("retry")},a=()=>{typeof window<"u"&&window.location.reload(),r("reload")},l=()=>{r("report",n.error)};return(d,u)=>(xe(),Ge("div",null,[ge("div",null,[bTo,wTo,ge("div",null,Pe(d.error.message),1),d.error.details&&d.showDetails?(xe(),Ge("div",OTo,[ge("details",null,[yTo,ge("pre",null,Pe(d.error.details),1)])])):nn("",!0),ge("div",null,[d.error.recoverable&&d.showRetry?(xe(),Ge("button",{key:0,onClick:s},"Retry")):nn("",!0),d.showReload?(xe(),Ge("button",{key:1,onClick:a},"Reload Page")):nn("",!0),d.showReport?(xe(),Ge("button",{key:2,onClick:l},"Report Issue")):nn("",!0)]),o.value?(xe(),Ge("div",CTo,"Error Code: "+Pe(o.value),1)):nn("",!0)])]))}}),STo=Je({__name:"CodeEditor",props:{loadingText:{},showProgress:{type:Boolean,default:!0},showErrorBoundary:{type:Boolean,default:!0},retryable:{type:Boolean,default:!0},lifecycle:{},useDefaultLoading:{type:Boolean,default:!0},useDefaultErrorBoundary:{type:Boolean,default:!0},value:{default:""},width:{default:"100%"},height:{default:"100%"},theme:{default:"vs"},language:{default:"javascript"},options:{default:()=>({})}},emits:["editorWillMount","editorDidMount","change","update:value","error","ready","loading"],setup(e,{emit:t}){const n=e,r=t,{container:o,loading:s,error:a,isReady:l,retry:d}=kTo(n,r),{width:u,height:h}=Li(n),g=X(()=>({width:USt(u.value),height:USt(h.value),textAlign:"left",position:"relative"})),m=X(()=>({width:"100%",height:"100%",visibility:l.value&&!a.value?"visible":"hidden"})),v=()=>{d(),r("error",null)};return pt(s,f=>{r("loading",f)},{deep:!0}),pt(a,f=>{r("error",f)}),pt(l,f=>{f&&r("ready")}),(f,k)=>(xe(),Ge("div",{ref:"editorContainer",style:no(g.value),class:"monaco-code-editor"},[!Ae(l)&&!Ae(a)?Zr(f.$slots,"loading",{key:0,loading:Ae(s),loadingText:f.loadingText||Ae(s).loadingText,progress:Ae(s).progress,showProgress:f.showProgress},()=>[f.useDefaultLoading?(xe(),Ut(pTo,{key:0,"loading-text":f.loadingText||Ae(s).loadingText,progress:Ae(s).progress,"show-progress":f.showProgress},null,8,["loading-text","progress","show-progress"])):nn("",!0)]):Ae(a)&&f.showErrorBoundary?Zr(f.$slots,"error",{key:1,error:Ae(a),retry:v,retryable:f.retryable},()=>[f.useDefaultErrorBoundary?(xe(),Ut(_To,{key:0,error:Ae(a),"show-retry":f.retryable,"show-details":!0,"show-reload":!1,"show-report":!1,onRetry:v},null,8,["error","show-retry"])):nn("",!0)]):nn("",!0),ge("div",{ref_key:"container",ref:o,style:no(m.value)},null,4)],4))}}),b5e=`//如需遥测AI请使用在toonflow安装目录运行npx @ai-sdk/devtools (要求在其他设置中打开遥测功能,且toonflow有权限在安装目录创建.devtools文件夹)\r @@ -2990,7 +2990,7 @@ const ttsRequest = async (ttsConfig: TTSConfig, ttsModel: TTSModel) => {\r return null;\r };\r exports.ttsRequest = ttsRequest;\r -`,LTo={class:"modelServe"},xTo={class:"modelList"},ETo={class:"listFooter"},TTo={class:"listContent"},QTo={key:0,class:"modelParameter"},DTo={class:"configuration"},BTo={class:"infoBox ac jb"},RTo={class:"idBox"},ITo={class:"author"},MTo={class:"requiredLabel"},PTo={class:"requiredText"},FTo={class:"inputHelp"},NTo={key:0,class:"optionalSection"},UTo={class:"inputHelp"},jTo={class:"jb ac"},WTo={class:"sectionTitle"},VTo={class:"topInfo jb ac"},zTo={class:"modelCardName"},HTo={class:"actionBtns"},$To={class:"tags"},XTo={class:"updateAction"},GTo={class:"addBox"},YTo={style:{display:"flex","flex-direction":"column","align-items":"flex-start",gap:"0"}},ZTo={style:{border:"1px solid #ddd","border-radius":"6px",padding:"6px 12px","margin-top":"6px"}},qTo={class:"drmEditor"},KTo={class:"drmHeader"},JTo={class:"drmHeaderLabel"},eQo={class:"drmHeaderLabel"},tQo={class:"drmRowIndex"},nQo={class:"testResult"},iQo={key:0,class:"resultContent"},rQo=["src"],oQo={key:1,class:"resultContent"},sQo=["src"],aQo={key:2,class:"resultContent"},lQo={class:"data"},cQo={key:0,class:"linkAdd"},dQo={style:{"margin-top":"10px","text-align":"right",width:"100%"}},uQo={key:1,class:"importAdd"},hQo={class:"dragIcon"},fQo={class:"uploadText"},gQo={class:"uploadHint"},mQo={key:2,class:"codeAdd"},kQo={class:"editorToolbar"},vQo={class:"editorInfo"},AQo={class:"editorActions"},pQo={class:"editorWrapper"},bQo=700,wQo=Je({__name:"vendorConfig",setup(e){const t={text:"settings.vendor.textModel",image:"settings.vendor.imageModel",video:"settings.vendor.videoModel"},n={singleImage:"settings.vendor.singleImage",multiImage:"settings.vendor.multiImage",startEndRequired:"settings.vendor.startEndRequired",endFrameOptional:"settings.vendor.endFrameOptional",startFrameOptional:"settings.vendor.startFrameOptional",audioReference:"settings.vendor.audioRef",videoReference:"settings.vendor.videoRef",textReference:"settings.vendor.textRef",imageReference:"settings.vendor.imageRef"};function r(Se){return t[Se]||Se}function o(Se,Ie){return Se==="text"?Ie==="image"?"settings.vendor.textToImage":"settings.vendor.textToVideo":n[Se]||Se}const s={fontSize:14,automaticLayout:!0,tabSize:2,scrollBeyondLastLine:!1,formatOnPaste:!0,formatOnType:!0},a=[{value:"text",label:"settings.vendor.textModel"},{value:"image",label:"settings.vendor.imageModel"},{value:"video",label:"settings.vendor.videoModel"}],l=[{label:"settings.vendor.textToImage",value:"text"},{label:"settings.vendor.singleImage",value:"singleImage"}],d=[{label:"settings.vendor.singleImage",value:"singleImage"},{label:"settings.vendor.multiImage",value:"multiImage"},{label:"settings.vendor.startEndRequired",value:"startEndRequired"},{label:"settings.vendor.endFrameOptional",value:"endFrameOptional"},{label:"settings.vendor.startFrameOptional",value:"startFrameOptional"},{label:"settings.vendor.textToVideo",value:"text"}],u=[{label:"settings.vendor.textRef",value:"textReference"},{label:"settings.vendor.imageRef",value:"videoReference"},{label:"settings.vendor.videoRef",value:"imageReference"},{label:"settings.vendor.audioRef",value:"audioReference"}],h=[{label:"settings.vendor.audioOptional",value:"optional"},{label:"settings.vendor.audioOnly",value:!0},{label:"settings.vendor.noAudio",value:!1}],g=fe([]),m=fe(!1);async function v(){m.value=!0;try{const Se=await mn.post("/setting/vendorConfig/getVendorList");g.value=Se.data.map(Ie=>({...Ie,enable:Ie.enable})),g.value.length&&!g.value.some(Ie=>Ie.id===f.value)&&(f.value=g.value[0].id)}catch(Se){window.$message.error(`${$t("settings.vendor.msg.getVendorListFailed")}${Se.message}`)}finally{m.value=!1,ai(()=>{E.value=H.value,L.value=!0})}}An(()=>{v()});const f=fe(),k=X(()=>g.value.find(Se=>Se.id===f.value)),A=X(()=>{var Se,Ie;return((Se=k.value)==null?void 0:Se.models)||((Ie=k.value)==null?void 0:Ie.model)||[]}),p=X(()=>{var Se,Ie;return((Ie=(Se=k.value)==null?void 0:Se.inputs)==null?void 0:Ie.filter(ze=>ze.required))||[]}),b=X(()=>{var Se,Ie;return((Ie=(Se=k.value)==null?void 0:Se.inputs)==null?void 0:Ie.filter(ze=>!ze.required))||[]}),w=fe(!1),O=fe(!1),y=fe(b5e),C=fe(null),_=fe(!1),S=fe(!1),L=fe(!1),E=fe("");let T=null,D=!1;const P=fe(!1),Q=fe(""),M=fe(""),B=fe(""),R=hs({});function I(Se){return Se==="password"?"secured":Se==="url"?"link":"edit-1"}function F(Se){var Ie;return((Ie=Se.placeholder)==null?void 0:Ie.trim())||""}function j(Se){return Se?/^(?:data:[^;]+;base64,)?[A-Za-z0-9+/]*={0,2}$/.test(Se)&&Se.length>0:!1}function W(Se){return{id:Se.id,name:Se.name,icon:Se.icon,inputs:Se.inputs,inputValues:Se.inputValues,models:Se.models??Se.model??[]}}const H=X(()=>k.value?JSON.stringify(W(k.value)):"");function $(){T&&clearTimeout(T),T=setTimeout(()=>{G()},bQo)}async function G(){if(!k.value||!L.value||m.value)return;const Se=H.value;if(!(!Se||Se===E.value)){if(S.value){D=!0;return}S.value=!0;try{await mn.post("/setting/vendorConfig/updateVendor",W(k.value)),E.value=Se}catch(Ie){window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${Ie.message}`)}finally{S.value=!1,D&&(D=!1,$())}}}pt(H,Se=>{!Se||!L.value||m.value||Se!==E.value&&$()},{flush:"post"}),pt(f,()=>{T&&(clearTimeout(T),T=null),D=!1,ai(()=>{E.value=H.value})},{flush:"post"});const q=fe();function re(){ke.value="linkAdd",q.value=void 0,y.value=b5e,w.value=!0}function J(){if(q.value){const Se=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.updateVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.updateVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndUpdate"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{mn.post("/setting/vendorConfig/updateCode",{id:q.value,tsCode:y.value}).then(ze=>{window.$message.success($t("settings.vendor.msg.updateSuccess")),w.value=!1,O.value=!1,v()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${ze.message}`)}).finally(()=>{Ie.destroy()})},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}else{const Se=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.addVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{mn.post("/setting/vendorConfig/addVendor",{tsCode:y.value}).then(ze=>{window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.addFailed")}${ze.message}`)}).finally(()=>{Ie.destroy()})},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}}const oe=fe(!1),se=fe(null),le=fe({name:"",modelName:"",type:"text",think:!1,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:""});function ue(Se="text"){le.value={name:"",modelName:"",type:Se,think:!1,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:""}}function ee(){return k.value?(Array.isArray(k.value.models)||(k.value.models=Array.isArray(k.value.model)?[...k.value.model]:[]),k.value.model=k.value.models,k.value.models):[]}function de(){const Se=le.value.name.trim(),Ie=le.value.modelName.trim();if(!Se)return window.$message.error($t("settings.vendor.msg.fillDisplayName")),null;if(!Ie)return window.$message.error($t("settings.vendor.msg.fillModelId")),null;if(le.value.type==="text")return{name:Se,modelName:Ie,type:"text",think:le.value.think,associationSkills:le.value.associationSkills};if(le.value.type==="image"){const gt=le.value.mode;return gt.length?{name:Se,modelName:Ie,type:"image",mode:gt,associationSkills:le.value.associationSkills}:(window.$message.error($t("settings.vendor.msg.selectImageMode")),null)}const ze=[...le.value.mode];if(le.value.mixedMode.length>0&&ze.push([...le.value.mixedMode]),!ze.length)return window.$message.error($t("settings.vendor.msg.selectVideoMode")),null;const Ze=[];for(let gt=0;gtNumber.isFinite(on)&&on>0),dn=St.resolution.filter(Boolean);if(!Pt.length)return window.$message.error(`${$t("settings.vendor.msg.groupPrefix",{n:gt+1})}${$t("settings.vendor.msg.addDuration")}`),null;if(!dn.length)return window.$message.error(`${$t("settings.vendor.msg.groupPrefix",{n:gt+1})}${$t("settings.vendor.msg.addResolution")}`),null;Ze.push({duration:Pt,resolution:dn})}return{name:Se,modelName:Ie,type:"video",mode:ze,audio:le.value.audio,durationResolutionMap:Ze,associationSkills:le.value.associationSkills}}function z(){if(!k.value){window.$message.error($t("settings.vendor.msg.selectVendorFirst"));return}se.value=null,ue("text"),oe.value=!0}function Y(){const Se=ee();if(!Se.length&&!k.value)return;const Ie=de();if(!Ie)return;if(Se.findIndex((Ze,gt)=>se.value!==null&>===se.value?!1:Ze.modelName===Ie.modelName)!==-1){window.$message.error($t("settings.vendor.msg.modelIdExists"));return}se.value===null?(Se.push(Ie),window.$message.success($t("settings.vendor.msg.modelAdded"))):(Se.splice(se.value,1,Ie),window.$message.success($t("settings.vendor.msg.modelUpdated"))),oe.value=!1}function ie(Se){var ze;const Ie=ee();if(se.value=Ie.findIndex(Ze=>Ze.modelName===Se.modelName),Se.type==="text"&&(le.value={name:Se.name,modelName:Se.modelName,type:"text",think:Se.think,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:Se.associationSkills||""}),Se.type==="image"&&(le.value={name:Se.name,modelName:Se.modelName,type:"image",think:!1,mode:[...Se.mode],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:Se.associationSkills||""}),Se.type==="video"){const Ze=((ze=Se.durationResolutionMap)==null?void 0:ze.length)>0?Se.durationResolutionMap.map(Pt=>({duration:Pt.duration.map(String),resolution:[...Pt.resolution]})):[{duration:[],resolution:[]}],gt=[];let St=[];for(const Pt of Se.mode)Array.isArray(Pt)?St=[...Pt]:gt.push(Pt);le.value={name:Se.name,modelName:Se.modelName,type:"video",think:!1,mode:gt,mixedMode:St,audio:Se.audio,durationResolutionMap:Ze,associationSkills:Se.associationSkills||""}}oe.value=!0}async function te(Se){var Ie,ze,Ze,gt,St,Pt,dn;if(!((ze=(Ie=k.value)==null?void 0:Ie.inputValues)!=null&&ze.apiKey))return window.$message.error($t("settings.vendor.msg.enterApiKey"));if(!((gt=(Ze=k.value)==null?void 0:Ze.inputValues)!=null&>.baseUrl))return window.$message.error($t("settings.vendor.msg.enterApiUrl"));if(!R[Se.modelName]){R[Se.modelName]=!0;try{const{data:on}=await mn.post("/setting/vendorConfig/modelTest",{type:Se.type,modelName:Se.modelName,id:k.value.id});Se.type==="text"?window.$message.success(`${Se.modelName} ${$t("settings.vendor.msg.testSuccess")}: ${typeof on=="string"?on:JSON.stringify(on)}`):(Se.type==="image"||Se.type==="video")&&(B.value=Se.modelName,M.value=Se.type,Q.value=on,P.value=!0,window.$message.success(`${Se.type==="image"?$t("settings.vendor.msg.imageGenSuccess"):$t("settings.vendor.msg.videoGenSuccess")}`))}catch(on){const pn=((Pt=(St=on==null?void 0:on.response)==null?void 0:St.data)==null?void 0:Pt.message)||((dn=on==null?void 0:on.response)==null?void 0:dn.data)||(on==null?void 0:on.message)||String(on);window.$message.error(`${$t("settings.vendor.msg.requestFailed")}${typeof pn=="string"?pn:JSON.stringify(pn)}`)}finally{delete R[Se.modelName]}}}function Z(Se){if(!k.value)return;const Ie=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.deleteModelConfirm"),body:`${$t("settings.vendor.msg.deleteModelBody",{name:Se})}`,confirmBtn:{content:$t("settings.vendor.msg.confirmDelete"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{const Ze=ee().filter(gt=>gt.modelName!==Se);k.value.models=Ze,k.value.model=Ze,window.$message.success($t("settings.vendor.msg.modelDeleted")),Ie.destroy()}})}function he(){k.value&&(q.value=k.value.id,y.value=k.value.code,O.value=!0)}function pe(){if(!k.value)return;const Se=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.deleteVendorConfirm"),body:`${$t("settings.vendor.msg.deleteVendorBody",{name:k.value.name})}`,confirmBtn:{content:$t("settings.vendor.msg.confirmDelete"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{var Ie;mn.post("/setting/vendorConfig/deleteVendor",{id:(Ie=k.value)==null?void 0:Ie.id}).then(()=>{var ze;window.$message.success($t("settings.vendor.msg.vendorDeleted")),f.value===((ze=k.value)==null?void 0:ze.id)&&(f.value=void 0),v(),Se.destroy()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.deleteFailed")}${ze.message}`)})}})}function Ce(){var Se,Ie,ze,Ze,gt;mn.post("/setting/vendorConfig/updateVendor",{id:(Se=k.value)==null?void 0:Se.id,inputs:(Ie=k.value)==null?void 0:Ie.inputs,inputValues:(ze=k.value)==null?void 0:ze.inputValues,models:((Ze=k.value)==null?void 0:Ze.models)??((gt=k.value)==null?void 0:gt.model)??[]}).then(()=>{window.$message.success($t("settings.vendor.msg.vendorConfigUpdated")),v()}).catch(St=>{window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${St.message}`)})}function Qe(Se,Ie){const ze=Ie===1?0:1;mn.post("/setting/vendorConfig/enableVendor",{id:Se.id,enable:Ie}).then(()=>{}).catch(Ze=>{Se.enable=ze})}const ke=fe("linkAdd"),me=fe(""),_e=fe(!1);pt(ke,Se=>{Se=="codeAdd"?O.value=!0:O.value=!1});function Te(){if(_e.value)return;const Se=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.linkAddVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{const ze=Wh({fullscreen:!0,attach:"body",preventScrollThrough:!1}),Ze=setTimeout(()=>{ze.hide(),clearTimeout(Ze)},1e3);_e.value=!0;try{const{data:gt}=await mn.post("/setting/vendorConfig/getCodeByLink",{link:me.value});if(!gt.includes("vendor")){let St=null;gt.includes("")?St=fo.alert({theme:"danger",header:"链接返回了一个网页,添加供应商需要返回TS代码,请确认链接是否正确",body:"请勿输入中转站地址,如需使用中转站请修改OpenAI标准接口的baseUrl使用中转站地址",onConfirm:({e:Pt})=>{St.hide()}}):fo.alert({theme:"danger",header:"链接返回的内容不正确,添加供应商需要返回TS代码,请确认链接是否正确",onConfirm:({e:Pt})=>{St.hide()}});return}gt?(mn.post("/setting/vendorConfig/addVendor",{tsCode:gt}),window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()):(window.$message.error($t("settings.vendor.msg.linkAddFailed")),O.value=!1)}catch(gt){window.$message.error(`${$t("settings.vendor.msg.addFailed")}${gt.message}`)}finally{clearTimeout(Ze),ze.hide(),_e.value=!1,Ie.destroy()}},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}const De=fe();async function Ye(Se){const Ie=Se.raw;if(!Ie)return window.$message.error($t("workbench.novel.import.msg.selectFile")),!1;Wh(!0);try{const ze=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.importAdd"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{ze.destroy();const Ze=fo.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{const gt=new FileReader;gt.readAsText(Ie),gt.onload=()=>{const St=gt.result;mn.post("/setting/vendorConfig/addVendor",{tsCode:St}).then(Pt=>{window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()}).catch(Pt=>{window.$message.error(`${$t("settings.vendor.msg.addFailed")}${Pt.message}`)}).finally(()=>{Ze.destroy()})}},onClose:()=>Ze.hide()})},onClose:()=>ze.hide()})}catch{window.$message.error($t("workbench.novel.import.msg.parseFailed"))}finally{Wh(!1)}return!1}const ot=fe([]);function We(){var Se;(Se=De.value)==null||Se.triggerUpload()}function et(){return Promise.resolve({response:{},status:"success"})}async function st(Se){var ze;const Ie=(ze=Se.dataTransfer)==null?void 0:ze.files;Ie&&Ie.length>0&&await Ye({raw:Ie[0]})}function Me(Se){var gt;const Ie=Se.target,ze=(gt=Ie.files)==null?void 0:gt[0];if(!ze)return;const Ze=new FileReader;Ze.onload=St=>{var Pt;y.value=((Pt=St.target)==null?void 0:Pt.result)||""},Ze.readAsText(ze),Ie.value=""}return(Se,Ie)=>{const ze=dL,Ze=Si,gt=yZe,St=T3n,Pt=Jbn,dn=Kbn,on=Xy,pn=p2,ni=Wu,Zn=wwn,Pi=bwn,rr=_n("i-plus"),Hr=_n("i-lightning"),Bo=_n("i-pencil"),lo=_n("i-delete"),Fr=Sg,is=km,yi=A2,Gt=uL,gi=pA,ri=L3n,tr=OZe,ht=py,At=U4e,Mt=pZe,Kt=gc,qn=Wc,Zt=x3n,so=Ez,Un=X4e,dt=_n("i-upload-one"),Ne=f4e("loading");return xe(),Ge("div",LTo,[ge("div",xTo,[ge("div",ETo,[c(Ze,{block:"",theme:"primary",onClick:re},{icon:Oe(()=>[c(ze,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addVendor")),1)]),_:1})]),uu((xe(),Ge("div",TTo,[Ae(g).length>0?(xe(),Ut(dn,{key:0,modelValue:Ae(f),"onUpdate:modelValue":Ie[1]||(Ie[1]=nt=>Fn(f)?f.value=nt:null),theme:"light"},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(g),(nt,bn)=>(xe(),Ut(Pt,{key:bn,value:nt.id,onClick:hn=>f.value=nt.id,style:{position:"relative"}},_Y({default:Oe(()=>[ge("span",null,Pe(nt.name),1),c(St,{modelValue:nt.enable,"onUpdate:modelValue":hn=>nt.enable=hn,customValue:[1,0],onClick:Ie[0]||(Ie[0]=Mr(()=>{},["stop"])),onChange:hn=>Qe(nt,hn),style:{position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)","z-index":"10"}},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},[j(nt.icon)?{name:"icon",fn:Oe(()=>[c(gt,{size:"24px",shape:"round",image:nt.icon},null,8,["image"])]),key:"0"}:void 0]),1032,["value","onClick"]))),128))]),_:1},8,["modelValue"])):(xe(),Ut(on,{key:1,title:Se.$t("settings.vendor.noVendor"),style:{"margin-top":"16px"}},null,8,["title"]))])),[[Ne,Ae(m)]])]),Ae(k)?(xe(),Ge("div",QTo,[ge("div",DTo,[c(yi,{data:Ae(k),labelAlign:"top"},{default:Oe(()=>[ge("div",BTo,[ge("span",RTo,"#"+Pe(Ae(k).id),1),ge("span",ITo,"@"+Pe(Ae(k).author),1)]),c(pn,null,{default:Oe(()=>[c(Ae(i3),{modelValue:Ae(k).description,"onUpdate:modelValue":Ie[2]||(Ie[2]=nt=>Ae(k).description=nt),theme:"light"},null,8,["modelValue"])]),_:1}),(xe(!0),Ge(sn,null,Bi(Ae(p),nt=>(xe(),Ut(pn,{key:nt.key,name:nt.key},_Y({label:Oe(()=>[ge("span",MTo,[Bt(Pe(nt.label)+" ",1),Ie[23]||(Ie[23]=ge("span",{class:"requiredMark"},"*",-1)),ge("span",PTo,Pe(Se.$t("settings.vendor.required")),1)])]),default:Oe(()=>[c(ni,{modelValue:Ae(k).inputValues[nt.key],"onUpdate:modelValue":bn=>Ae(k).inputValues[nt.key]=bn,type:nt.type,clearable:"",onBlur:Ce},{"prefix-icon":Oe(()=>[c(ze,{name:I(nt.type)},null,8,["name"])]),_:2},1032,["modelValue","onUpdate:modelValue","type"])]),_:2},[F(nt)?{name:"help",fn:Oe(()=>[ge("span",FTo,Pe(F(nt)),1)]),key:"0"}:void 0]),1032,["name"]))),128)),Ae(b).length>0?(xe(),Ge("div",NTo,[c(Pi,null,{default:Oe(()=>[c(Zn,{value:"optional-inputs",header:Se.$t("settings.vendor.optionalSection")},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(b),nt=>(xe(),Ut(pn,{key:nt.key,name:nt.key,label:nt.label},_Y({default:Oe(()=>[c(ni,{modelValue:Ae(k).inputValues[nt.key],"onUpdate:modelValue":bn=>Ae(k).inputValues[nt.key]=bn,type:nt.type,clearable:"",onBlur:Ce},{"prefix-icon":Oe(()=>[c(ze,{name:I(nt.type)},null,8,["name"])]),_:2},1032,["modelValue","onUpdate:modelValue","type"])]),_:2},[F(nt)?{name:"help",fn:Oe(()=>[ge("span",UTo,Pe(F(nt)),1)]),key:"0"}:void 0]),1032,["name","label"]))),128))]),_:1},8,["header"])]),_:1})])):nn("",!0),ge("div",jTo,[ge("h4",WTo,Pe(Se.$t("settings.vendor.modelSettings")),1),c(Ze,{variant:"outline",size:"small",onClick:z},{icon:Oe(()=>[c(rr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addManually")),1)]),_:1})]),(xe(!0),Ge(sn,null,Bi(Ae(A),(nt,bn)=>(xe(),Ut(is,{key:bn,class:"modelCard"},{default:Oe(()=>[ge("div",VTo,[ge("span",zTo,Pe(nt.name),1),ge("div",HTo,[c(Ze,{size:"small",variant:"text",loading:!!Ae(R)[nt.modelName],onClick:hn=>te(nt)},{icon:Oe(()=>[c(Hr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.test")),1)]),_:1},8,["loading","onClick"]),c(Ze,{variant:"text",size:"small",onClick:hn=>ie(nt)},{icon:Oe(()=>[c(Bo,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.edit")),1)]),_:1},8,["onClick"]),c(Ze,{variant:"text",size:"small",theme:"danger",onClick:hn=>Z(nt.modelName)},{icon:Oe(()=>[c(lo,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.delete")),1)]),_:1},8,["onClick"])])]),ge("div",$To,[c(Fr,{theme:"primary"},{default:Oe(()=>[Bt(Pe(Se.$t(r(nt.type))),1)]),_:2},1024),(xe(!0),Ge(sn,null,Bi(nt.mode,(hn,En)=>(xe(),Ge(sn,{key:En},[Array.isArray(hn)?(xe(!0),Ge(sn,{key:1},Bi(hn,(wi,Ue)=>(xe(),Ut(Fr,{variant:"light",key:Ue},{default:Oe(()=>[Bt(Pe(Se.$t(o(wi,nt.type))),1)]),_:2},1024))),128)):(xe(),Ut(Fr,{key:0,variant:"light"},{default:Oe(()=>[Bt(Pe(Se.$t(o(hn,nt.type))),1)]),_:2},1024))],64))),128))])]),_:2},1024))),128))]),_:1},8,["data"]),ge("div",XTo,[c(Ze,{theme:"danger",loading:Ae(_),onClick:pe},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.deleteVendor")),1)]),_:1},8,["loading"]),c(Ze,{theme:"default",loading:Ae(_),onClick:he},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.editCode")),1)]),_:1},8,["loading"])])])])):nn("",!0),c(Kt,{placement:"center",width:"40vw",visible:Ae(oe),"onUpdate:visible":Ie[12]||(Ie[12]=nt=>Fn(oe)?oe.value=nt:null),header:Ae(se)===null?Se.$t("settings.vendor.addModel"):Se.$t("settings.vendor.editModel"),maskClosable:!1,onConfirm:Y},{default:Oe(()=>[ge("div",GTo,[c(yi,{data:Ae(le),labelAlign:"top"},{default:Oe(()=>[c(pn,{name:"name",label:Se.$t("settings.vendor.displayName")},{default:Oe(()=>[c(ni,{modelValue:Ae(le).name,"onUpdate:modelValue":Ie[3]||(Ie[3]=nt=>Ae(le).name=nt),placeholder:Se.$t("settings.vendor.displayNamePlaceholder"),clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(pn,{name:"modelName",label:Se.$t("settings.vendor.modelId")},{default:Oe(()=>[c(ni,{modelValue:Ae(le).modelName,"onUpdate:modelValue":Ie[4]||(Ie[4]=nt=>Ae(le).modelName=nt),placeholder:Se.$t("settings.vendor.modelIdPlaceholder"),clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(pn,{name:"type",label:Se.$t("settings.vendor.modelType")},{default:Oe(()=>[c(gi,{modelValue:Ae(le).type,"onUpdate:modelValue":Ie[5]||(Ie[5]=nt=>Ae(le).type=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(a,nt=>c(Gt,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),Ae(le).type!=="text"?(xe(),Ut(pn,{key:0,name:"associationSkills",label:Se.$t("settings.vendor.associationSkills")},{default:Oe(()=>[c(Fr,null,{default:Oe(()=>[Bt(Pe(Ae(le).associationSkills),1)]),_:1})]),_:1},8,["label"])):nn("",!0),Ae(le).type==="text"?(xe(),Ut(pn,{key:1,name:"think",label:Se.$t("settings.vendor.think")},{default:Oe(()=>[c(tr,{modelValue:Ae(le).think,"onUpdate:modelValue":Ie[6]||(Ie[6]=nt=>Ae(le).think=nt)},{default:Oe(()=>[c(ri,{value:!0},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.supported")),1)]),_:1}),c(ri,{value:!1},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.notSupported")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(le).type==="image"?(xe(),Ut(pn,{key:2,name:"mode",label:Se.$t("settings.vendor.imageMode")},{default:Oe(()=>[c(At,{modelValue:Ae(le).mode,"onUpdate:modelValue":Ie[7]||(Ie[7]=nt=>Ae(le).mode=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(l,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(le).type==="video"?(xe(),Ge(sn,{key:3},[c(pn,{name:"mode",label:Se.$t("settings.vendor.videoMode")},{default:Oe(()=>[ge("div",YTo,[c(At,{modelValue:Ae(le).mode,"onUpdate:modelValue":Ie[8]||(Ie[8]=nt=>Ae(le).mode=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(d,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"]),ge("div",ZTo,[c(At,{modelValue:Ae(le).mixedMode,"onUpdate:modelValue":Ie[9]||(Ie[9]=nt=>Ae(le).mixedMode=nt),style:{display:"flex","flex-direction":"row",gap:"8px"}},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(u,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])])]),_:1},8,["label"]),c(pn,{name:"audio",label:Se.$t("settings.vendor.audioOutput")},{default:Oe(()=>[c(tr,{modelValue:Ae(le).audio,"onUpdate:modelValue":Ie[10]||(Ie[10]=nt=>Ae(le).audio=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(h,nt=>c(ri,{key:String(nt.value),value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(pn,{name:"durationResolutionMap",label:Se.$t("settings.vendor.durationResolution")},{default:Oe(()=>[ge("div",qTo,[ge("div",KTo,[Ie[24]||(Ie[24]=ge("div",{class:"drmHeaderIndex"},null,-1)),ge("div",JTo,Pe(Se.$t("settings.vendor.durationSec")),1),Ie[25]||(Ie[25]=ge("div",{class:"drmHeaderArrow"},null,-1)),ge("div",eQo,Pe(Se.$t("settings.vendor.resolution")),1),Ie[26]||(Ie[26]=ge("div",{class:"drmHeaderAction"},null,-1))]),(xe(!0),Ge(sn,null,Bi(Ae(le).durationResolutionMap,(nt,bn)=>(xe(),Ge("div",{key:bn,class:"drmRow"},[ge("div",tQo,Pe(bn+1),1),c(Mt,{modelValue:nt.duration,"onUpdate:modelValue":hn=>nt.duration=hn,placeholder:Se.$t("settings.vendor.enterAndPress"),class:"drmInput"},null,8,["modelValue","onUpdate:modelValue","placeholder"]),Ie[27]||(Ie[27]=ge("div",{class:"drmArrow"},"→",-1)),c(Mt,{modelValue:nt.resolution,"onUpdate:modelValue":hn=>nt.resolution=hn,placeholder:Se.$t("settings.vendor.enterAndPress"),class:"drmInput"},null,8,["modelValue","onUpdate:modelValue","placeholder"]),c(Ze,{variant:"text",theme:"danger",size:"small",disabled:Ae(le).durationResolutionMap.length===1,onClick:hn=>Ae(le).durationResolutionMap.splice(bn,1)},{icon:Oe(()=>[c(lo,{theme:"outline"})]),_:1},8,["disabled","onClick"])]))),128)),c(Ze,{style:{"margin-top":"16px"},variant:"dashed",block:"",onClick:Ie[11]||(Ie[11]=nt=>Ae(le).durationResolutionMap.push({duration:[],resolution:[]}))},{icon:Oe(()=>[c(rr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addDurationResolution")),1)]),_:1})])]),_:1},8,["label"])],64)):nn("",!0)]),_:1},8,["data"])])]),_:1},8,["visible","header"]),c(Kt,{width:"50vw",placement:"center",visible:Ae(P),"onUpdate:visible":Ie[13]||(Ie[13]=nt=>Fn(P)?P.value=nt:null),header:Se.$t("settings.vendor.testResult")+" - "+Ae(B),footer:!1},{default:Oe(()=>[ge("div",nQo,[Ae(M)==="image"?(xe(),Ge("div",iQo,[ge("img",{src:Ae(Q),alt:"generated image"},null,8,rQo)])):Ae(M)==="video"?(xe(),Ge("div",oQo,[ge("video",{src:Ae(Q),controls:"",autoplay:"",loop:""},null,8,sQo)])):(xe(),Ge("div",aQo,[c(qn,{size:"large",text:Se.$t("settings.vendor.generating")},null,8,["text"])]))])]),_:1},8,["visible","header"]),c(Kt,{width:"30vw",placement:"center",top:"10vh",footer:!1,visible:Ae(w),"onUpdate:visible":Ie[18]||(Ie[18]=nt=>Fn(w)?w.value=nt:null),header:Se.$t("settings.vendor.addVendorDialog"),maskClosable:!1},{default:Oe(()=>[ge("div",lQo,[c(tr,{variant:"default-filled",modelValue:Ae(ke),"onUpdate:modelValue":Ie[14]||(Ie[14]=nt=>Fn(ke)?ke.value=nt:null)},{default:Oe(()=>[c(Zt,{value:"linkAdd"},{default:Oe(()=>[...Ie[28]||(Ie[28]=[Bt("通过链接添加",-1)])]),_:1}),c(Zt,{value:"importAdd"},{default:Oe(()=>[...Ie[29]||(Ie[29]=[Bt("通过文件导入",-1)])]),_:1}),c(Zt,{value:"codeAdd"},{default:Oe(()=>[...Ie[30]||(Ie[30]=[Bt("通过代码添加",-1)])]),_:1})]),_:1},8,["modelValue"]),Ae(ke)=="linkAdd"?(xe(),Ge("div",cQo,[c(so,{theme:"warning",style:{"margin-bottom":"20px"}},{default:Oe(()=>[...Ie[31]||(Ie[31]=[Bt(" 请勿输入不可靠的地址!点击“确定”后,Toonflow 将自动从该地址拉取代码并添加为供应商。如果地址存在安全隐患,可能导致引入存在风险的供应商代码。建议仅输入来自可信来源的地址。 ",-1)])]),_:1}),c(ni,{modelValue:Ae(me),"onUpdate:modelValue":Ie[15]||(Ie[15]=nt=>Fn(me)?me.value=nt:null),placeholder:Se.$t("settings.vendor.linkAddPlaceholder")},null,8,["modelValue","placeholder"]),ge("div",dQo,[c(Ze,{loading:Ae(_e),disabled:!Ae(me).trim(),onClick:Te},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.linkAdd")),1)]),_:1},8,["loading","disabled"])])])):nn("",!0),Ae(ke)=="importAdd"?(xe(),Ge("div",uQo,[ge("div",{class:"uploadArea",onClick:We,onDragover:Ie[17]||(Ie[17]=Mr(()=>{},["prevent"])),onDrop:Mr(st,["prevent"])},[c(Un,{ref_key:"uploadRef",ref:De,modelValue:Ae(ot),"onUpdate:modelValue":Ie[16]||(Ie[16]=nt=>Fn(ot)?ot.value=nt:null),theme:"file",multiple:!1,max:1,accept:".ts","before-upload":Ye,"request-method":et,style:{display:"none"}},null,8,["modelValue"]),ge("div",hQo,[c(dt,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",fQo,Pe(Se.$t("workbench.novel.import.importAdd")),1),ge("p",gQo,Pe(Se.$t("workbench.novel.import.limit")),1)],32)])):nn("",!0),Ae(ke)=="codeAdd"?(xe(),Ge("div",mQo)):nn("",!0)])]),_:1},8,["visible","header"]),c(Kt,{width:"70vw",placement:"center",top:"10vh",visible:Ae(O),"onUpdate:visible":Ie[22]||(Ie[22]=nt=>Fn(O)?O.value=nt:null),header:Se.$t("settings.vendor.code"),maskClosable:!1,onConfirm:J},{default:Oe(()=>[ge("div",kQo,[ge("div",vQo,[c(ze,{name:"info-circle",size:"16px"}),ge("span",null,Pe(Se.$t("settings.vendor.codeEditorInfo")),1)]),ge("div",AQo,[c(Ze,{variant:"text",size:"small",onClick:Ie[19]||(Ie[19]=nt=>y.value=Ae(b5e))},{icon:Oe(()=>[c(ze,{name:"rollback"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.reset")),1)]),_:1}),c(Ze,{variant:"outline",size:"small",onClick:Ie[20]||(Ie[20]=nt=>{var bn;return(bn=Ae(C))==null?void 0:bn.click()})},{icon:Oe(()=>[c(ze,{name:"upload"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.importFile")),1)]),_:1}),ge("input",{ref_key:"fileInputRef",ref:C,type:"file",accept:".ts,.js,.txt,.json",style:{display:"none"},onChange:Me},null,544)])]),ge("div",pQo,[c(Ae(STo),{value:Ae(y),"onUpdate:value":Ie[21]||(Ie[21]=nt=>Fn(y)?y.value=nt:null),language:"typescript",theme:"vs-dark",height:600,options:s},null,8,["value"])])]),_:1},8,["visible","header"])])}}}),OQo=oo(wQo,[["__scopeId","data-v-49f0cb9a"]]),yQo={class:"memoryConfig"},CQo={class:"actionRow f frr"},_Qo=Je({__name:"memoryConfig",setup(e){const t=fe({messagesPerSummary:3,shortTermLimit:5,summaryMaxLength:500,summaryLimit:10,ragLimit:3,deepRetrieveSummaryLimit:5,modelOnnxFile:["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:"fp16"}),n=["fp16","auto","fp32","q8","int8","uint8","q4","bnb4","q4f16"],r=fe(!1),o=fe(!1),s=fe(!1);async function a(){r.value=!0;try{const{data:h}=await mn.get("/setting/memoryConfig/getMemory");t.value={messagesPerSummary:h.messagesPerSummary??3,shortTermLimit:h.shortTermLimit??5,summaryMaxLength:h.summaryMaxLength??500,summaryLimit:h.summaryLimit??10,ragLimit:h.ragLimit??3,deepRetrieveSummaryLimit:h.deepRetrieveSummaryLimit??5,modelOnnxFile:h.modelOnnxFile??["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:h.modelDtype??"fp16"}}catch(h){window.$message.warning(h==null?void 0:h.message)}finally{r.value=!1}}async function l(){o.value=!0;try{await mn.post("/setting/memoryConfig/sureMemory",{...t.value}),window.$message.success($t("settings.memory.msg.saved"))}catch(h){window.$message.warning(h==null?void 0:h.message)}finally{o.value=!1}}async function d(){const h=fo.confirm({header:$t("settings.memory.msg.clearConfirmTitle"),body:$t("settings.memory.msg.clearConfirmBody"),confirmBtn:$t("settings.memory.msg.confirmClear"),cancelBtn:$t("settings.memory.msg.cancel"),onConfirm:async()=>{s.value=!0;try{await mn.post("/setting/memoryConfig/delAllMemory"),window.$message.success($t("settings.memory.msg.cleared")),h.hide()}catch(g){window.$message.error((g==null?void 0:g.msg)||$t("settings.memory.msg.clearFailed"))}finally{s.value=!1}}})}function u(){t.value={messagesPerSummary:3,shortTermLimit:5,summaryMaxLength:500,summaryLimit:10,ragLimit:3,deepRetrieveSummaryLimit:5,modelOnnxFile:["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:"fp16"},l()}return An(()=>{a()}),(h,g)=>{const m=Ez,v=pZe,f=p2,k=uL,A=pA,p=km,b=Lz,w=Si,O=A2;return xe(),Ge("div",yQo,[c(m,{theme:"warning",class:"topAlert",message:h.$t("settings.memory.warning")},null,8,["message"]),c(O,{data:t.value,labelAlign:"top",labelWidth:"180px",class:"memoryForm",onSubmit:l},{default:Oe(()=>[c(p,{title:h.$t("settings.memory.vectorModelConfig"),bordered:!0,style:{"margin-top":"16px"}},{default:Oe(()=>[c(f,{label:h.$t("settings.memory.modelFilePath"),name:"modelOnnxFile"},{help:Oe(()=>[Bt("向量模型文件路径:/data/models/"+Pe(t.value.modelOnnxFile?t.value.modelOnnxFile.join("/"):""),1)]),default:Oe(()=>[c(v,{modelValue:t.value.modelOnnxFile,"onUpdate:modelValue":g[0]||(g[0]=y=>t.value.modelOnnxFile=y),clearable:""},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.quantizationType"),name:"modelDtype"},{help:Oe(()=>[...g[8]||(g[8]=[])]),default:Oe(()=>[c(A,{modelValue:t.value.modelDtype,"onUpdate:modelValue":g[1]||(g[1]=y=>t.value.modelDtype=y),placeholder:h.$t("settings.memory.quantizationPlaceholder")},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(n,y=>c(k,{key:y,value:y,label:y},null,8,["value","label"])),64))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["title"]),c(p,{title:h.$t("settings.memory.memoryParams"),bordered:!0,style:{"margin-top":"16px"}},{default:Oe(()=>[c(f,{label:h.$t("settings.memory.messagesPerSummary"),name:"messagesPerSummary"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.messagesPerSummaryHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.messagesPerSummary,"onUpdate:modelValue":g[2]||(g[2]=y=>t.value.messagesPerSummary=y),min:1,max:200,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.shortTermLimit"),name:"shortTermLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.shortTermLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.shortTermLimit,"onUpdate:modelValue":g[3]||(g[3]=y=>t.value.shortTermLimit=y),min:1,max:100,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.summaryMaxLength"),name:"summaryMaxLength"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.summaryMaxLengthHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.summaryMaxLength,"onUpdate:modelValue":g[4]||(g[4]=y=>t.value.summaryMaxLength=y),min:0,max:1e3,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.summaryLimit"),name:"summaryLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.summaryLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.summaryLimit,"onUpdate:modelValue":g[5]||(g[5]=y=>t.value.summaryLimit=y),min:0,max:100,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.ragLimit"),name:"ragLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.ragLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.ragLimit,"onUpdate:modelValue":g[6]||(g[6]=y=>t.value.ragLimit=y),min:0,max:50,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.deepRetrieveSummaryLimit"),name:"deepRetrieveSummaryLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.deepRetrieveSummaryLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.deepRetrieveSummaryLimit,"onUpdate:modelValue":g[7]||(g[7]=y=>t.value.deepRetrieveSummaryLimit=y),min:0,max:100,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["title"]),ge("div",CQo,[c(w,{theme:"primary",type:"submit",loading:o.value},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.saveConfig")),1)]),_:1},8,["loading"]),c(w,{theme:"danger",variant:"outline",loading:s.value,onClick:d},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.clearMemory")),1)]),_:1},8,["loading"]),c(w,{theme:"warning",variant:"outline",loading:o.value,onClick:u},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.restoreDefault")),1)]),_:1},8,["loading"])])]),_:1},8,["data"])])}}}),SQo=oo(_Qo,[["__scopeId","data-v-c59a3784"]]),LQo={class:"fileManagement"},xQo={class:"folderList"},EQo={class:"folderInfo"},TQo={class:"folderName"},QQo={class:"folderDesc"},DQo=Je({__name:"fileManagement",setup(e){const{isElectron:t}=xs(ku()),n=[{label:"settings.file.folders.data",path:"",desc:"settings.file.folders.dataDesc"},{label:"settings.file.folders.logs",path:"logs",desc:"settings.file.folders.logsDesc"},{label:"settings.file.folders.oss",path:"oss",desc:"settings.file.folders.ossDesc"},{label:"settings.file.folders.skills",path:"skills",desc:"settings.file.folders.skillsDesc"},{label:"settings.file.folders.models",path:"models",desc:"settings.file.folders.modelsDesc"},{label:"settings.file.folders.web",path:"web",desc:"settings.file.folders.webDesc"},{label:"settings.file.folders.serve",path:"serve",desc:"settings.file.folders.serveDesc"}],r=o=>{mn.post("/setting/fileManagement/openFolder",{path:o}).catch(s=>{var a;(a=window.$message)==null||a.error(s.message||$t("settings.file.openFailed"))})};return(o,s)=>{const a=Si,l=km,d=_n("i-reduce-one"),u=Xy;return xe(),Ge("div",LQo,[Ae(t)?(xe(),Ut(l,{key:0,title:o.$t("settings.file.quickOpen"),bordered:""},{default:Oe(()=>[ge("div",xQo,[(xe(),Ge(sn,null,Bi(n,h=>ge("div",{key:h.path,class:"folderItem"},[ge("div",EQo,[ge("div",TQo,Pe(o.$t(h.label)),1),ge("div",QQo,Pe(o.$t(h.desc)),1)]),c(a,{theme:"primary",variant:"outline",onClick:g=>r(h.path)},{default:Oe(()=>[Bt(Pe(o.$t("settings.file.open")),1)]),_:1},8,["onClick"])])),64))])]),_:1},8,["title"])):(xe(),Ut(u,{key:1,description:o.$t("settings.file.dockerDesc"),title:o.$t("settings.file.desktopOnly")},{image:Oe(()=>[c(d,{theme:"outline",fill:"red"})]),_:1},8,["description","title"]))])}}}),BQo=oo(DQo,[["__scopeId","data-v-b9c6a62b"]]),RQo={class:"skillManagement"},IQo={class:"sidebarPanel"},MQo={class:"treeWrap"},PQo={class:"viewPanel"},FQo={key:0,class:"viewHeader"},NQo={class:"fileName"},UQo={key:1,class:"previewWrap"},jQo=Je({__name:"skillManagement",setup(e){const t=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"],n=fe([]),r=fe(""),o=fe(""),s=fe(""),a=fe(""),l=fe(!1),d=fe(!1),u=X(()=>r.value?[r.value]:[]),h=X(()=>{let p=n.value.filter(w=>w.endsWith(".md"));if(!o.value)return p;const b=o.value.toLowerCase();return p.filter(w=>w.toLowerCase().includes(b))}),g=X(()=>{const p=new Map,b=[];for(const O of h.value){const y=O.split("/").filter(Boolean);let C=b,_="";for(let S=0;SE.value===_)||C.push({label:y[S],value:_,isFile:!0,isRoot:y.length===1});else{let E=p.get(_);E||(E={label:y[S],value:_,isFile:!1,children:[]},p.set(_,E),C.push(E)),C=E.children}}const w=O=>{O.sort((y,C)=>y.isFile!==C.isFile?y.isFile?1:-1:y.label.localeCompare(C.label)),O.forEach(y=>y.children&&w(y.children))};return w(b),b});async function m(){try{const{data:p}=await mn.post("/setting/skillManagement/getSkillList");n.value=Array.isArray(p)?p:[]}catch(p){console.error(p)}}async function v(p){try{const{data:b}=await mn.post("/setting/skillManagement/getSkillContent",{path:p});s.value=typeof b=="string"?b:(b==null?void 0:b.content)||""}catch(b){console.error(b),s.value=""}}async function f(p,b){const w=p[p.length-1],O=typeof w=="string"?w:String(w||""),y=b.node.data;!O||!(y!=null&&y.isFile)||O===r.value||(r.value=O,await v(O))}function k(){a.value=s.value,l.value=!0}async function A(){if(r.value){d.value=!0;try{await mn.post("/setting/skillManagement/saveSkillContent",{path:r.value,content:a.value}),s.value=a.value,l.value=!1}catch(p){console.error(p)}finally{d.value=!1}}}return An(()=>m()),(p,b)=>{const w=Wu,O=_n("i-folder-open"),y=_n("i-file-text"),C=A4i,_=Xy,S=Si,L=gc;return xe(),Ge("div",RQo,[ge("aside",IQo,[c(w,{modelValue:o.value,"onUpdate:modelValue":b[0]||(b[0]=E=>o.value=E),clearable:"",placeholder:p.$t("setting.skillManagement.search")},null,8,["modelValue","placeholder"]),ge("div",MQo,[g.value.length?(xe(),Ut(C,{key:0,activable:"",hover:"",line:"","expand-on-click-node":"",data:g.value,actived:u.value,onActive:f},{icon:Oe(({node:E})=>[E.data.isFile?E.data.isRoot?(xe(),Ut(y,{key:1,theme:"outline",size:"16",fill:"red"})):(xe(),Ut(y,{key:2,theme:"outline",size:"16"})):(xe(),Ut(O,{key:0,theme:"outline",size:"16"}))]),_:1},8,["data","actived"])):(xe(),Ut(_,{key:1,description:p.$t("setting.skillManagement.empty")},null,8,["description"]))])]),ge("section",PQo,[r.value?(xe(),Ge("div",FQo,[ge("span",NQo,Pe(r.value),1),c(S,{size:"small",theme:"primary",variant:"outline",onClick:k},{default:Oe(()=>[Bt(Pe(p.$t("setting.skillManagement.edit")),1)]),_:1})])):nn("",!0),r.value?(xe(),Ge("div",UQo,[c(Ae(i3),{modelValue:s.value,toolbars:[],"preview-only":"","preview-theme":"github","code-theme":"atom"},null,8,["modelValue"])])):(xe(),Ut(_,{key:2,description:p.$t("setting.skillManagement.selectOnTheLeft")},null,8,["description"]))]),c(L,{placement:"center",visible:l.value,"onUpdate:visible":b[2]||(b[2]=E=>l.value=E),header:p.$t("setting.skillManagement.edit")+` ${r.value}`,width:"80vw","confirm-btn":p.$t("common.save"),"confirm-on-enter":!1,"on-confirm":A,loading:d.value},{default:Oe(()=>[c(Ae(X4),{modelValue:a.value,"onUpdate:modelValue":b[1]||(b[1]=E=>a.value=E),toolbars:t,"preview-theme":"github","code-theme":"atom",style:{height:"72vh"}},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","loading"])])}}}),WQo=oo(jQo,[["__scopeId","data-v-0d56dd55"]]),VQo={class:"otherConfig"},zQo=Je({__name:"devConfig",setup(e){const{isElectron:t}=xs(ku()),n=fe("0");function r(){var a,l;if(t.value)try{fetch("toonflow://openDevTool")}catch{(a=window.$message)==null||a.warning("$t('settings.dev.openDevtoolFailed')")}else(l=window.$message)==null||l.warning("$t('settings.dev.notInElectron')")}async function o(){const{data:a}=await mn.get("/setting/dev/getSwitchAiDevTool");n.value=(a==null?void 0:a.switchAiDevTool)||"0"}function s(){mn.post("/setting/dev/updateSwitchAiDevTool",{switchAiDevTool:n.value})}return An(()=>{o()}),(a,l)=>{const d=Ez,u=Si,h=p2,g=T3n,m=A2;return xe(),Ge("div",VQo,[c(m,{"label-align":"top"},{default:Oe(()=>[c(d,{theme:"warning"},{default:Oe(()=>[Bt(Pe(a.$t("settings.dev.warning")),1)]),_:1}),c(h,{label:a.$t("settings.dev.devtool"),name:"showTitleBar"},{default:Oe(()=>[c(u,{theme:"primary",onClick:r},{default:Oe(()=>[Bt(Pe(a.$t("settings.dev.openDevtool")),1)]),_:1})]),_:1},8,["label"]),c(h,{label:a.$t("settings.dev.aiDevtool"),name:"showTitleBar"},{default:Oe(()=>[c(g,{modelValue:Ae(t),"onUpdate:modelValue":l[0]||(l[0]=v=>Fn(t)?t.value=v:null),onChange:o},null,8,["modelValue"])]),_:1},8,["label"]),uu(c(h,{label:a.$t("settings.dev.switchAiDevTool"),name:"showTitleBar"},{tips:Oe(()=>[ge("p",null,Pe(a.$t("settings.dev.devtoolsDoc"))+":https://ai-sdk.dev/docs/ai-sdk-core/devtools",1),ge("p",null,Pe(a.$t("settings.dev.devtoolsDesc")),1),ge("p",null,Pe(a.$t("settings.dev.devtoolsDesc2")),1)]),default:Oe(()=>[c(g,{customValue:["1","0"],modelValue:Ae(n),"onUpdate:modelValue":l[1]||(l[1]=v=>Fn(n)?n.value=v:null),onChange:s},null,8,["modelValue"])]),_:1},8,["label"]),[[h1,Ae(t)]])]),_:1})])}}}),HQo=oo(zQo,[["__scopeId","data-v-472d7447"]]),$Qo={class:"promptManage"},XQo=["onClick"],GQo={class:"data"},YQo={class:"jb"},ZQo={class:"name"},qQo={class:"type"},KQo={class:"data"},JQo={class:"show"},eDo=Je({__name:"promptManage",setup(e){An(()=>{o()});const t=["bold","italic","strikeThrough","-","unorderedList","orderedList","-","revoke","next","=","preview"],n=fe(!1),r=fe([]);function o(){mn.post("/setting/promptManage/getPrompt").then(d=>{r.value=d.data.map(u=>({id:u.id,name:u.name,type:u.type,data:u.data}))})}function s(d){a.value={...d},n.value=!0}const a=fe({id:0,name:"",type:"",data:""});async function l(){await mn.post("/setting/promptManage/updatePrompt",{id:a.value.id,data:a.value.data}),window.$message.success($t("workbench.project.dialog.prompt.saveSuccess")),o(),n.value=!1}return(d,u)=>{const h=km,g=gc;return xe(),Ge("div",$Qo,[(xe(!0),Ge(sn,null,Bi(r.value,m=>(xe(),Ge("div",{key:m.id,style:{cursor:"pointer"},onClick:v=>s(m)},[c(h,{bordered:""},{default:Oe(()=>[ge("div",GQo,[ge("div",YQo,[ge("div",ZQo,Pe(m.name),1),ge("div",qQo,Pe(m.type),1)]),ge("div",KQo,Pe(m.data),1)])]),_:2},1024)],8,XQo))),128)),ge("div",JQo,[c(g,{visible:n.value,"onUpdate:visible":u[1]||(u[1]=m=>n.value=m),header:d.$t("workbench.project.dialog.prompt.title"),width:"70%","close-on-overlay-click":!1,onConfirm:l,top:"9vh"},{default:Oe(()=>[c(Ae(X4),{modelValue:a.value.data,"onUpdate:modelValue":u[0]||(u[0]=m=>a.value.data=m),theme:"light",toolbars:t,footers:[],style:{height:"60vh"},placeholder:d.$t("workbench.project.dialog.prompt.placeholder"),onOnUploadImg:()=>{}},null,8,["modelValue","placeholder"])]),_:1},8,["visible","header"])])])}}}),tDo=oo(eDo,[["__scopeId","data-v-2bed7c85"]]),nDo={class:"settingPanel"},iDo={class:"settingRight"},rDo={class:"sectionTitle"},oDo={class:"settingContent"},sDo=Je({__name:"index",setup(e){const{showSetting:t,activeMenu:n,needUpdate:r}=xs(ku()),o=[{key:"language",label:"settings.menu.language",icon:"i-translate"},{key:"vendorConfig",label:"settings.menu.vendorConfig",icon:"i-computer"},{key:"agentConfog",label:"settings.menu.agentConfig",icon:"i-color-filter"},{key:"promptManage",label:"settings.menu.promptManage",icon:"i-tips"},{key:"skillManagement",label:"settings.menu.skillsSkillsManagement",icon:"i-ring"},{key:"memoryConfig",label:"settings.menu.memoryConfig",icon:"i-memory-card-one"},{key:"loginConfig",label:"settings.menu.loginConfig",icon:"i-lock"},{key:"dbConfig",label:"settings.menu.dbConfig",icon:"i-data"},{key:"fileManagement",label:"settings.menu.fileManagement",icon:"i-hard-disk"},{key:"otherConfig",label:"settings.menu.otherConfig",icon:"i-application-menu"},{key:"requestConfig",label:"settings.menu.requestConfig",icon:"i-api"},{key:"devConfig",label:"settings.menu.devConfig",icon:"i-flask"},{key:"about",label:"settings.menu.about",icon:"i-info"},{key:"logoutConfig",label:"settings.menu.logoutConfig",icon:"i-logout"}],s=X(()=>o.find(a=>a.key===n.value));return(a,l)=>{const d=CZe,u=Jbn,h=Kbn,g=gc;return xe(),Ut(g,{header:a.$t("settings.title"),footer:!1,placement:"center",width:"1200px",visible:Ae(t),"onUpdate:visible":l[1]||(l[1]=m=>Fn(t)?t.value=m:null)},{default:Oe(()=>[ge("div",nDo,[c(h,{class:"settingMenu",value:Ae(n),"onUpdate:value":l[0]||(l[0]=m=>Fn(n)?n.value=m:null),style:{height:"70vh"}},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(o,m=>c(u,{key:m.key,value:m.key},{icon:Oe(()=>[c(d,{count:Ae(r)&&m.key==="about"?1:0,dot:""},{default:Oe(()=>[(xe(),Ut(Bd(m.icon),{class:"icon"}))]),_:2},1032,["count"])]),default:Oe(()=>[Bt(" "+Pe(a.$t(m.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),ge("div",iDo,[ge("div",rDo,Pe(Ae(s)?a.$t(Ae(s).label):""),1),ge("div",oDo,[Ae(n)==="language"?(xe(),Ut(Tqr,{key:0})):nn("",!0),Ae(n)==="vendorConfig"?(xe(),Ut(OQo,{key:1})):nn("",!0),Ae(n)==="requestConfig"?(xe(),Ut(Dqr,{key:2})):nn("",!0),Ae(n)==="loginConfig"?(xe(),Ut(Bqr,{key:3})):nn("",!0),Ae(n)==="agentConfog"?(xe(),Ut(cKr,{key:4})):nn("",!0),Ae(n)==="promptManage"?(xe(),Ut(tDo,{key:5})):nn("",!0),Ae(n)==="otherConfig"?(xe(),Ut(AKr,{key:6})):nn("",!0),Ae(n)==="dbConfig"?(xe(),Ut(mKr,{key:7})):nn("",!0),Ae(n)==="about"?(xe(),Ut(fJr,{key:8})):nn("",!0),Ae(n)==="logoutConfig"?(xe(),Ut(kJr,{key:9})):nn("",!0),Ae(n)==="memoryConfig"?(xe(),Ut(SQo,{key:10})):nn("",!0),Ae(n)==="fileManagement"?(xe(),Ut(BQo,{key:11})):nn("",!0),Ae(n)==="skillManagement"?(xe(),Ut(WQo,{key:12})):nn("",!0),Ae(n)==="devConfig"?(xe(),Ut(HQo,{key:13})):nn("",!0)])])])]),_:1},8,["header","visible"])}}}),aDo=oo(sDo,[["__scopeId","data-v-ba4aaf24"]]),lDo={class:"migrateShow"},cDo={class:"taskList"},dDo={class:"item"},uDo=Je({__name:"migrateShow",setup(e){const t=fe(!1);function n(){mn.post("/migrate/migrateData").then(()=>{window.$message.success($t("components.migrateShow.msg.migrateSuccess"))}).catch(()=>{window.$message.error($t("components.migrateShow.msg.migrateFailed"))}).finally(()=>{})}return(r,o)=>{const s=Si,a=Ev,l=gc;return xe(),Ge("div",lDo,[c(l,{visible:Ae(t),"onUpdate:visible":o[1]||(o[1]=d=>Fn(t)?t.value=d:null),header:r.$t("components.migrateShow.title"),width:"500px"},{footer:Oe(()=>[c(a,null,{default:Oe(()=>[c(s,{theme:"default",onClick:o[0]||(o[0]=()=>t.value=!1)},{default:Oe(()=>[Bt(Pe(r.$t("components.migrateShow.hide")),1)]),_:1}),c(s,{theme:"primary",onClick:n},{default:Oe(()=>[Bt(Pe(r.$t("components.migrateShow.confirm")),1)]),_:1})]),_:1})]),default:Oe(()=>[ge("div",cDo,[ge("div",dDo,[ge("span",null,Pe(r.$t("components.migrateShow.desc")),1)])])]),_:1},8,["visible","header"])])}}});function wit(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function hDo(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:0,r=Math.random()*(t-e)+e;return Math.floor(r*Math.pow(10,n))/Math.pow(10,n)}function WSt(e){return e[T4(0,e.length)]}var kDo=.00125,vDo=5e-4,ADo=9e-4,pDo=1e-5,bDo=6,wDo=80,ODo=.9,yDo=1.7,CDo=.2,_Do=.6,SDo=.03,LDo=.07,gPn=15,mPn=82,VSt=150,xDo=100,EDo=250,TDo=40,QDo=["#fcf403","#62fc03","#f4fc03","#03e7fc","#03fca5","#a503fc","#fc03ad","#fc03c2"];function zSt(e){var t=1920;return Math.log(e)/Math.log(t)}var w5e=function(){function e(t){wit(this,e);var n=t.initialPosition,r=t.confettiRadius,o=t.confettiColors,s=t.emojis,a=t.emojiSize,l=t.canvasWidth,d=t.initialFlightAngle,u=t.rotationAngle,h=t.shouldHideConfettiInShiftedPosition,g=h===void 0?!1:h,m=T4(ODo,yDo,3),v=m*zSt(l);this.confettiSpeed={x:v,y:v},this.finalConfettiSpeedX=T4(CDo,_Do,3),this.rotationSpeed=s.length?.01:T4(SDo,LDo,3)*zSt(l),this.dragForceCoefficient=T4(vDo,ADo,6),this.radius={x:r,y:r},this.initialRadius=r,this.rotationAngle=u,this.emojiSize=a,this.emojiRotationAngle=T4(0,2*Math.PI),this.radiusYUpdateDirection="down",this.cos=Math.cos(d),this.sin=Math.sin(d);var f=T4(-150,0);this.positionOffset={x:f*this.sin,y:f*this.cos},this.distanceTravelled={x:0,y:0};var k={x:n.x+this.positionOffset.x,y:n.y-this.positionOffset.y};this.currentPosition=Object.assign({},k),this.initialPosition=Object.assign({},k),this.color=s.length?null:WSt(o),this.emoji=s.length?WSt(s):null,this.createdAt=new Date().getTime(),this.isVisible=!g}return Oit(e,[{key:"draw",value:function(n){var r=this.currentPosition,o=this.radius,s=this.color,a=this.emoji,l=this.rotationAngle,d=this.emojiRotationAngle,u=this.emojiSize,h=this.isVisible;if(h){var g=window.devicePixelRatio;s?(n.fillStyle=s,n.beginPath(),n.ellipse(r.x*g,r.y*g,o.x*g,o.y*g,l,0,2*Math.PI),n.fill()):a&&(n.font="".concat(u,"px serif"),n.save(),n.translate(g*r.x,g*r.y),n.rotate(d),n.textAlign="center",n.fillText(a,0,0),n.restore())}}},{key:"updatePosition",value:function(n,r){var o=this.confettiSpeed,s=this.dragForceCoefficient,a=this.finalConfettiSpeedX,l=this.radiusYUpdateDirection,d=this.rotationSpeed,u=this.createdAt;o.x>a&&(this.confettiSpeed.x-=s*n);var h=this.currentPosition.y,g=r-u;this.currentPosition.y=this.initialPosition.y-o.y*this.cos*g+kDo*Math.pow(g,2)/2;var m={x:o.x*this.sin*n,y:this.currentPosition.y-h};if(this.currentPosition.x+=m.x,this.distanceTravelled.x+=Math.abs(m.x),this.distanceTravelled.y+=Math.abs(m.y),this.distanceTravelled.x>=Math.abs(this.positionOffset.x)&&this.distanceTravelled.y>=Math.abs(this.positionOffset.y)&&(this.isVisible=!0),this.rotationSpeed-=this.emoji?1e-4:pDo*n,this.rotationSpeed<0&&(this.rotationSpeed=0),this.emoji){this.emojiRotationAngle+=this.rotationSpeed*n%(2*Math.PI);return}l==="down"?(this.radius.y-=n*d,this.radius.y<=0&&(this.radius.y=0,this.radiusYUpdateDirection="up")):(this.radius.y+=n*d,this.radius.y>=this.initialRadius&&(this.radius.y=this.initialRadius,this.radiusYUpdateDirection="down"))}},{key:"getIsVisibleOnCanvas",value:function(n){return this.currentPosition.y0&&arguments[0]!==void 0?arguments[0]:{};wit(this,e),this.activeConfettiBatches=[],this.canvas=t.canvas||DDo(),this.canvasContext=this.canvas.getContext("2d"),this.requestAnimationFrameRequested=!1,this.lastUpdated=new Date().getTime(),this.iterationIndex=0,this.loop=this.loop.bind(this),requestAnimationFrame(this.loop)}return Oit(e,[{key:"loop",value:function(){this.requestAnimationFrameRequested=!1,mDo(this.canvas);var n=new Date().getTime(),r=n-this.lastUpdated,o=this.canvas.offsetHeight,s=this.iterationIndex%10===0;this.activeConfettiBatches=this.activeConfettiBatches.filter(function(a){return a.processShapes({timeDelta:r,currentTime:n},o,s),s?!a.complete():!0}),this.iterationIndex++,this.queueAnimationFrameIfNeeded(n)}},{key:"queueAnimationFrameIfNeeded",value:function(n){this.requestAnimationFrameRequested||this.activeConfettiBatches.length<1||(this.requestAnimationFrameRequested=!0,this.lastUpdated=n||new Date().getTime(),requestAnimationFrame(this.loop))}},{key:"addConfettiAtPosition",value:function(){for(var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=HSt(n),o=r.confettiRadius,s=r.confettiNumber,a=r.confettiColors,l=r.emojis,d=r.emojiSize,u=r.confettiDispatchPosition,h=this.canvas.getBoundingClientRect(),g=h.width,m=new XSt(this.canvasContext),v=0;v0&&arguments[0]!==void 0?arguments[0]:{},r=HSt(n),o=r.confettiRadius,s=r.confettiNumber,a=r.confettiColors,l=r.emojis,d=r.emojiSize,u=this.canvas.getBoundingClientRect(),h=u.width,g=u.height,m=g*5/7,v={x:0,y:m},f={x:h,y:m},k=new XSt(this.canvasContext),A=0;A({content:k.label,value:k.value})),a=k=>{o.value=k.value,yW.value=k.value},l=q4e("helloGuideDone",!1),d=fe(!l.value),u=fe(0);function h(){n.value="vendorConfig",t.value=!0}function g(){n.value="agentConfog",t.value=!0}function m(){l.value=!0,d.value=!1}function v(){l.value=!0,d.value=!1,new PDo().addConfetti()}async function f(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://github.com/HBAI-Ltd/Toonflow-app"):window.open("https://github.com/HBAI-Ltd/Toonflow-app")}return(k,A)=>{const p=Si,b=_n("i-translate"),w=Rne,O=Yvi,y=Gvi,C=dL,_=Ez,S=h3i,L=gc;return xe(),Ut(L,{visible:Ae(d),"onUpdate:visible":A[3]||(A[3]=E=>Fn(d)?d.value=E:null),footer:!1,header:!1,width:"680px","close-on-overlay-click":!1,placement:"center"},{default:Oe(()=>[ge("div",FDo,[Ae(u)===0?(xe(),Ge("div",NDo,[A[4]||(A[4]=ge("img",{src:lbe,alt:"ToonFlow Logo",class:"welcomeLogo"},null,-1)),ge("h1",UDo,Pe(k.$t("hello.welcomeTitle")),1),ge("p",jDo,Pe(k.$t("hello.welcomeDesc")),1),c(p,{theme:"primary",size:"large",onClick:A[0]||(A[0]=E=>u.value=1)},{default:Oe(()=>[Bt(Pe(k.$t("hello.startConfig")),1)]),_:1}),c(p,{variant:"text",size:"small",style:{"margin-top":"12px"},onClick:m},{default:Oe(()=>[Bt(Pe(k.$t("hello.skip")),1)]),_:1}),ge("div",WDo,[c(w,{options:Ae(s),trigger:"click",onClick:a,maxColumnWidth:150},{default:Oe(()=>[c(p,{shape:"circle",theme:"default",size:"large"},{icon:Oe(()=>[c(b,{theme:"outline",size:"20"})]),_:1})]),_:1},8,["options"])])])):(xe(),Ge(sn,{key:1},[c(y,{current:Ae(u)-1,class:"guideSteps"},{default:Oe(()=>[c(O,{title:k.$t("hello.configModel")},null,8,["title"]),c(O,{title:k.$t("hello.configData")},null,8,["title"]),c(O,{title:k.$t("hello.startUse")},null,8,["title"])]),_:1},8,["current"]),ge("div",VDo,[Ae(u)===1?(xe(),Ge("div",zDo,[ge("div",HDo,[c(C,{name:"server",size:"48px"})]),ge("h2",$Do,Pe(k.$t("hello.configModelTitle")),1),ge("p",XDo,Pe(k.$t("hello.configModelDesc")),1),ge("div",GDo,[c(_,{theme:"info",message:k.$t("hello.configModelTip")},null,8,["message"])]),c(p,{theme:"primary",size:"large",onClick:h},{icon:Oe(()=>[c(C,{name:"setting"})]),default:Oe(()=>[Bt(" "+Pe(k.$t("hello.configModelBtn")),1)]),_:1})])):nn("",!0),Ae(u)===2?(xe(),Ge("div",YDo,[ge("div",ZDo,[c(C,{name:"relativity",size:"48px"})]),ge("h2",qDo,Pe(k.$t("hello.configAgentTitle")),1),ge("p",KDo,Pe(k.$t("hello.configAgentDesc")),1),ge("div",JDo,[c(_,{theme:"info",message:k.$t("hello.configAgentTip")},null,8,["message"])]),c(p,{theme:"primary",size:"large",onClick:g},{icon:Oe(()=>[c(C,{name:"setting"})]),default:Oe(()=>[Bt(" "+Pe(k.$t("hello.configAgentBtn")),1)]),_:1})])):nn("",!0),Ae(u)===3?(xe(),Ge("div",eBo,[ge("div",tBo,[c(C,{name:"check-circle",size:"48px",color:"var(--td-success-color)"})]),ge("h2",nBo,Pe(k.$t("hello.finishTitle")),1),ge("p",iBo,Pe(k.$t("hello.finishDesc")),1),ge("div",rBo,[ge("p",oBo,Pe(k.$t("hello.qrcodeLabel")),1),c(S,{value:"https://work.weixin.qq.com/u/vc36adcc89845edcbe?v=5.0.3.63936&bb=85b8d228e8",level:"Q",type:"svg"})]),ge("div",sBo,[ge("p",aBo,Pe(k.$t("hello.githubLabel")),1),c(p,{theme:"danger",size:"large",onClick:f},{icon:Oe(()=>[c(C,{name:"logo-github"})]),default:Oe(()=>[A[5]||(A[5]=Bt(" Star on GitHub ",-1))]),_:1})])])):nn("",!0)]),ge("div",lBo,[Ae(u)>1?(xe(),Ut(p,{key:0,variant:"outline",onClick:A[1]||(A[1]=E=>u.value--)},{default:Oe(()=>[Bt(Pe(k.$t("hello.prevStep")),1)]),_:1})):nn("",!0),ge("div",cBo,[Ae(u)<3?(xe(),Ut(p,{key:0,variant:"text",onClick:m},{default:Oe(()=>[Bt(Pe(k.$t("hello.skip")),1)]),_:1})):nn("",!0),Ae(u)<3?(xe(),Ut(p,{key:1,theme:"primary",onClick:A[2]||(A[2]=E=>u.value++)},{default:Oe(()=>[Bt(Pe(k.$t("hello.nextStep")),1)]),_:1})):nn("",!0),Ae(u)===3?(xe(),Ut(p,{key:2,theme:"primary",onClick:v},{default:Oe(()=>[Bt(Pe(k.$t("hello.finish")),1)]),_:1})):nn("",!0)])])],64))])]),_:1},8,["visible"])}}}),uBo=oo(dBo,[["__scopeId","data-v-da3a500c"]]),ph=Wy("project",()=>({allProject:fe([]),project:fe(null)}),{persist:!0}),hBo={class:"menu fc jb"},fBo={class:"itemBox fc ac"},gBo=["onClick"],mBo={key:1,class:"divider"},kBo={class:"footItem fc ac"},vBo={class:"view"},ABo={key:0,class:"topMenu f ac jb"},pBo={class:"title"},bBo={class:"rightBtnList f ac"},wBo=["onClick"],OBo={key:1,class:"divider"},yBo={class:"viewBox"},CBo=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{showSetting:n,isElectron:r,needUpdate:o}=xs(ku()),s=fe([{type:"btn",path:"/project",labelKey:"workbench.menu.myProject",icon:"i-folder-close"},{type:"btn",path:"/task",labelKey:"workbench.menu.taskCenter",icon:"i-view-list"}]),a=fe([{type:"btn",path:"/novel",labelKey:"workbench.menu.novel",icon:"i-notebook",nodelOnly:!0},{type:"btn",path:"/scriptAgent",labelKey:"workbench.menu.scriptAgent",icon:"i-color-filter",nodelOnly:!0},{type:"btn",path:"/script",labelKey:"workbench.menu.scriptManage",icon:"i-document-folder"},{type:"btn",path:"/cornerScape",labelKey:"workbench.menu.cornerScape",icon:"i-peoples-two"},{type:"btn",path:"/production",labelKey:"workbench.menu.production",icon:"i-carousel-video"},{type:"divider"},{type:"btn",path:"/assets",labelKey:"workbench.menu.assetCenter",icon:"i-receive"}]),l=_pe(),d=mNi(),u=fe(d.path);pt(()=>d.path,p=>{u.value=p});function h(p){p.needProject&&!t.value||(l.push(p.path),u.value=p.path)}async function g(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://github.com/HBAI-Ltd/Toonflow-app"):window.open("https://github.com/HBAI-Ltd/Toonflow-app")}async function m(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://docs.qq.com/smartsheet/form/EmvmQBrmlPmr%2Fss_vsqk2v%2FvhiGzE?tab=ss_vsqk2v"):window.open("https://docs.qq.com/smartsheet/form/EmvmQBrmlPmr%2Fss_vsqk2v%2FvhiGzE?tab=ss_vsqk2v")}async function v(){const{data:p}=await mn.post("/setting/about/checkUpdate",{source:"toonflow"});if(p.needUpdate){o.value=!0;const{activeMenu:b}=xs(ku()),w=NB.success({title:$t("version.newVersion"),content:()=>xn("div",{style:"text-align: right; padding-top: 4px;"},xn("span",{style:"color: #ed7b2f; font-size: 12px; cursor: pointer;",onClick:()=>{b.value="about",n.value=!0,NB.close(w)}},$t("skillScan.openSettings"))),closeBtn:!0,placement:"bottom-right"})}else o.value=!1}let f=null;function k(){v(),f=setInterval(()=>{v()},2*60*1e3)}function A(){f&&(clearInterval(f),f=null)}return pt(o,p=>{p&&A()}),An(()=>{k()}),Qa(()=>{A()}),(p,b)=>{var L,E;const w=el,O=_n("i-bill"),y=_n("i-setting-one"),C=CZe,_=_n("i-github-one"),S=_n("router-view");return xe(),Ge(sn,null,[ge("div",{class:"main",style:no({height:Ae(r)?"calc(100vh - 32px)":"100vh"})},[ge("div",hBo,[b[1]||(b[1]=ge("div",{class:"logoBox c"},[ge("img",{class:"logo",src:lbe})],-1)),ge("div",fBo,[(xe(!0),Ge(sn,null,Bi(Ae(s),(T,D)=>(xe(),Ut(w,{content:T.labelKey?p.$t(T.labelKey):"",placement:"right",theme:"light",destroyOnClose:"",showArrow:!1,key:D},{default:Oe(()=>[T.type==="btn"?(xe(),Ge("div",{key:0,class:Eo(["item fc c",{active:Ae(u)==T.path}]),onClick:P=>h(T)},[(xe(),Ut(Bd(T.icon),{class:"icon"}))],10,gBo)):nn("",!0),T.type==="divider"?(xe(),Ge("div",mBo)):nn("",!0)]),_:2},1032,["content"]))),128))]),ge("div",kBo,[c(w,{content:p.$t("workbench.menu.feedbackQuestions"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:m},[c(O,{class:"icon"})])]),_:1},8,["content"]),c(w,{content:p.$t("workbench.menu.settings"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:b[0]||(b[0]=T=>n.value=!0)},[c(C,{count:Ae(o)?1:0,dot:""},{default:Oe(()=>[c(y,{class:"icon"})]),_:1},8,["count"])])]),_:1},8,["content"]),c(w,{content:p.$t("workbench.menu.jumpGithub"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:g},[c(_,{size:"24"})])]),_:1},8,["content"])])]),ge("div",vBo,[(L=Ae(t))!=null&&L.id?(xe(),Ge("div",ABo,[ge("div",pBo,[ge("h2",null,Pe(((E=Ae(t))==null?void 0:E.name)||p.$t("workbench.selectProject")),1)]),ge("div",bBo,[(xe(!0),Ge(sn,null,Bi(Ae(a),(T,D)=>(xe(),Ut(w,{content:T.labelKey?p.$t(T.labelKey):"",placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1,key:D},{default:Oe(()=>[T.type==="btn"&&(Ae(t).projectType==="novel"||!T.nodelOnly)?(xe(),Ge("div",{key:0,class:Eo(["item fc c",{active:Ae(u)==T.path}]),onClick:P=>h(T)},[(xe(),Ut(Bd(T.icon),{class:"icon"}))],10,wBo)):nn("",!0),T.type==="divider"?(xe(),Ge("div",OBo)):nn("",!0)]),_:2},1032,["content"]))),128))])])):nn("",!0),ge("div",yBo,[c(S,null,{default:Oe(({Component:T})=>[(xe(),Ut(Bd(T),{key:p.$route.fullPath}))]),_:1})])])],4),c(uBo),c(aDo),c(uDo)],64)}}}),_Bo=oo(CBo,[["__scopeId","data-v-99f1fe92"]]),SBo=Object.freeze(Object.defineProperty({__proto__:null,default:_Bo},Symbol.toStringTag,{value:"Module"})),LBo={class:"addProject"},xBo={class:"formColumns"},EBo={class:"formLeft"},TBo={class:"ac",style:{gap:"5px",width:"100%"}},QBo={class:"ac",style:{gap:"5px",width:"100%"}},DBo={class:"formRight"},BBo={class:"artStylePicker"},RBo={class:"artStyleHeader"},IBo={class:"artStyleContent"},MBo={class:"gridContainer"},PBo=["onClick"],FBo={class:"imageWrapper"},NBo=["src","alt"],UBo={class:"text"},jBo=["onClick"],WBo=["onClick"],VBo={class:"directorManual"},zBo={class:"directorManualHeader"},HBo={class:"artStyleContent"},$Bo={class:"gridContainer"},XBo=["onClick"],GBo={class:"imageWrapper"},YBo=["src","alt"],ZBo={class:"text"},qBo=["onClick"],KBo=["onClick"],JBo={class:"nameAndCoverRow"},eRo={class:"nameField"},tRo={class:"fieldLabel"},nRo={class:"mdFileLocation"},iRo={class:"fieldLabel"},rRo={class:"coverField"},oRo={class:"fieldLabel"},sRo={class:"coverUploadArea multiCoverUploadArea"},aRo=["src"],lRo=["onClick"],cRo={class:"promptEditorWrapper"},dRo={class:"promptEditorHeader"},uRo={class:"aiExtractInline"},hRo={class:"nameAndCoverRow"},fRo={class:"nameField"},gRo={class:"fieldLabel"},mRo={class:"mdFileLocation"},kRo={class:"fieldLabel"},vRo={class:"coverField"},ARo={class:"fieldLabel"},pRo={class:"coverUploadArea multiCoverUploadArea"},bRo=["src"],wRo=["onClick"],ORo={class:"promptEditorWrapper"},yRo={class:"promptEditorHeader"},CRo={class:"aiExtractInline"},_Ro=Je({__name:"projectDialog",props:Fc({projectData:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:Fc(["add","edit"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t,s=()=>[{label:"README",value:"README",data:""},{label:"前缀",value:"prefix",data:""},{label:"角色",value:"art_character",data:""},{label:"角色衍生",value:"art_character_derivative",data:""},{label:"道具",value:"art_prop",data:""},{label:"道具衍生",value:"art_prop_derivative",data:""},{label:"场景",value:"art_scene",data:""},{label:"场景衍生",value:"art_scene_derivative",data:""},{label:"分镜",value:"director_storyboard",data:""},{label:"分镜视频",value:"art_storyboard_video",data:""},{label:"技法-导演规划",value:"director_planning_style",data:""},{label:"技法-分镜表设计",value:"director_storyboard_table_style",data:""}],a=X(()=>!!r.projectData),l=[{value:"16:9",label:"16:9"},{value:"9:16",label:"9:16"}],d=()=>({id:0,projectType:"novel",name:"",intro:"",type:"",artStyle:"",era:"",videoRatio:"16:9",createTime:0,userId:0,imageModel:"",videoModel:"",imageQuality:"",mode:"",directorManual:""}),u=fe(d());function h(){u.value=d()}function g(){n.value=!1,h()}function m(){if(!u.value.name)return window.$message.warning($t("workbench.project.msg.enterProjectName"));if(!u.value.type)return window.$message.warning($t("workbench.project.msg.enterProjectType"));if(!u.value.imageModel)return window.$message.warning($t("workbench.project.msg.enterImageModel"));if(!u.value.videoModel)return window.$message.warning($t("workbench.project.msg.enterVideoModel"));if(!u.value.artStyle)return window.$message.warning($t("workbench.project.msg.enterArtStyle"));if(!u.value.directorManual)return window.$message.warning($t("workbench.project.msg.directorManual"));if(!u.value.videoRatio)return window.$message.warning($t("workbench.project.msg.enterVideoRatio"));if(!u.value.intro)return window.$message.warning($t("workbench.project.msg.enterProjectIntro"));if(!u.value.imageQuality)return window.$message.warning($t("workbench.project.msg.enterProjectQuality"));if(!u.value.mode)return window.$message.warning($t("workbench.project.msg.selectMode"));a.value?o("edit",{id:u.value.id,name:u.value.name,intro:u.value.intro,type:u.value.type,artStyle:u.value.artStyle,videoRatio:u.value.videoRatio,imageModel:u.value.imageModel,videoModel:u.value.videoModel,projectType:u.value.projectType||"novel",directorManual:u.value.directorManual,imageQuality:u.value.imageQuality,mode:u.value.mode}):o("add",{projectType:u.value.projectType||"novel",name:u.value.name,intro:u.value.intro,type:u.value.type,artStyle:u.value.artStyle,videoRatio:u.value.videoRatio||"16:9",imageModel:u.value.imageModel,videoModel:u.value.videoModel,imageQuality:u.value.imageQuality,directorManual:u.value.directorManual,mode:u.value.mode}),h(),n.value=!1}const v=["bold","italic","strikeThrough","-","unorderedList","orderedList","-","revoke","next","=","preview"];pt(n,async Y=>{if(Y){if(r.projectData){if(u.value={...d(),id:r.projectData.id,name:r.projectData.name||"",intro:r.projectData.intro||"",type:r.projectData.type||"",artStyle:r.projectData.artStyle||"",videoRatio:r.projectData.videoRatio||"16:9",imageModel:r.projectData.imageModel||"",videoModel:r.projectData.videoModel||"",imageQuality:r.projectData.imageQuality||"",projectType:r.projectData.projectType||"novel",mode:r.projectData.mode||"text",directorManual:r.projectData.directorManual||""},r.projectData.videoModel)try{const{data:ie}=await mn.post("/modelSelect/getModelDetail",{modelId:r.projectData.videoModel});ie!=null&&ie.mode&&(M.value=ie.mode.map(te=>({label:R(te),value:I(te)})))}catch{}}else h();C(),oe()}});const f=fe([]),k=fe(!1),A=fe(!1),p=fe(null),b=fe({name:"",images:[],stylePath:""}),w=fe(),O=fe("README"),y=fe(s());function C(){k.value=!0,mn.post("/project/getVisualManual").then(({data:Y})=>{f.value=Y.map(ie=>({id:ie.id,name:ie.name,stylePath:ie.stylePath,images:ie.images??(Array.isArray(ie.image)?ie.image:ie.image?[ie.image]:[]),data:ie.data}))}).finally(()=>{k.value=!1})}function _(Y){if(p.value=Y??null,Y){b.value.name=Y.name,b.value.stylePath=Y.stylePath,b.value.images=Y.images?[...Y.images]:[];const ie=Array.isArray(Y.data)?Y.data:[];y.value=s().map(te=>{const Z=ie.find(he=>he.value===te.value);return Z?{...te,data:Z.data}:{...te}})}else b.value={name:"",images:[],stylePath:""},y.value=s();O.value="README",A.value=!0}function S(){A.value=!1,p.value=null,b.value={name:"",images:[],stylePath:""},y.value=s(),O.value="README"}function L(){var Y;(Y=w.value)==null||Y.click()}function E(Y){const ie=Y.target.files;!ie||ie.length===0||(Array.from(ie).forEach(te=>{const Z=new FileReader;Z.onload=()=>{b.value.images.push(Z.result)},Z.readAsDataURL(te)}),Y.target.value="")}function T(Y){b.value.images.splice(Y,1)}const D=fe(!1);async function P(){if(!b.value.name.trim()){window.$message.warning($t("workbench.project.msg.enterVisualManualName"));return}if(!b.value.images.length){window.$message.warning($t("workbench.project.msg.enterVisualManualImage"));return}const Y=y.value.find(ie=>!ie.data.trim());if(Y)return window.$message.warning(`「${Y.label}」${$t("workbench.project.msg.enterVisualManualTabData")}`);try{D.value=!0,p.value?await mn.post("/project/editVisualManual",{name:b.value.name,images:b.value.images,data:y.value,stylePath:b.value.stylePath}):await mn.post("/project/addVisualManual",{name:b.value.name,images:b.value.images,data:y.value,stylePath:b.value.stylePath}),D.value=!1,p.value?window.$message.success($t("workbench.project.msg.visualManualUpdated")):window.$message.success($t("workbench.project.msg.visualManualAdded")),S(),C()}catch(ie){D.value=!1,window.$message.error(ie.message??$t("workbench.project.msg.operationFailed"))}}function Q(Y){const ie=fo.confirm({header:$t("workbench.project.msg.deleteVisualManualHeader"),body:$t("workbench.project.msg.deleteVisualManualBody",{name:Y.stylePath}),confirmBtn:$t("workbench.project.msg.deleteVisualManualConfirm"),cancelBtn:$t("workbench.project.msg.deleteVisualManualCancel"),onConfirm:()=>{mn.post("/project/deleteVisualManual",{name:Y.stylePath}).then(()=>{C(),S(),window.$message.success($t("workbench.project.msg.visualManualDeleted"))}).catch(te=>{window.$message.error(te.message??$t("workbench.project.msg.operationFailed"))}).finally(()=>{C(),ie.destroy()})}})}const M=fe([]),B={singleImage:$t("workbench.production.generate.modeSingleImage"),multiImage:$t("workbench.production.generate.modeMultiImage"),gridImage:$t("workbench.production.generate.modeGridImage"),startEndRequired:$t("workbench.production.generate.modeStartEnd"),endFrameOptional:$t("workbench.production.generate.modeStartEnd"),startFrameOptional:$t("workbench.production.generate.modeStartEnd"),text:$t("workbench.production.generate.modeText"),videoReference:$t("workbench.production.generate.modeVideoRef"),imageReference:$t("workbench.production.generate.modeImageRef"),audioReference:$t("workbench.production.generate.modeAudioRef"),textReference:$t("workbench.production.generate.modeTextRef")};function R(Y){return Y?Array.isArray(Y)?Y.map(ie=>B[ie]??ie).join("、"):B[Y]??Y:""}function I(Y){return Array.isArray(Y)?JSON.stringify(Y):Y}function F(Y,ie){M.value=ie.mode.map(te=>({label:R(te),value:I(te)}))}const j=()=>[{label:"README",value:"README",data:""},{label:"导演规划",value:"director_planning_narrative",data:""},{label:"分镜表",value:"director_storyboard_table_narrative",data:""}],W=fe({name:"",images:[],directorManual:""}),H=fe(!1),$=fe(null),G=fe(!1),q=fe([]),re=fe("README"),J=fe(j());function oe(){H.value=!0,mn.post("/project/queryDirectorManual").then(({data:Y})=>{q.value=Y.map(ie=>({id:ie.id,name:ie.name,directorManual:ie.directorManual,images:ie.images??(Array.isArray(ie.image)?ie.image:ie.image?[ie.image]:[]),data:ie.data}))}).finally(()=>{H.value=!1})}function se(Y){if($.value=Y??null,Y){W.value.name=Y.name,W.value.directorManual=Y.directorManual,W.value.images=Y.images?[...Y.images]:[];const ie=Array.isArray(Y.data)?Y.data:[];J.value=j().map(te=>{const Z=ie.find(he=>he.value===te.value);return Z?{...te,data:Z.data}:{...te}})}else W.value={name:"",images:[],directorManual:""},J.value=j();re.value="README",G.value=!0}function le(){G.value=!1,$.value=null,W.value={name:"",images:[],directorManual:""},J.value=j(),re.value="README"}function ue(Y){const ie=fo.confirm({header:$t("workbench.project.msg.deleteDirectorManualHeader"),body:$t("workbench.project.msg.deleteDirectorManualBody",{name:Y.directorManual}),confirmBtn:$t("workbench.project.msg.deleteVisualManualConfirm"),cancelBtn:$t("workbench.project.msg.deleteVisualManualCancel"),onConfirm:()=>{mn.post("/project/deleteDirectorManual",{name:Y.directorManual}).then(()=>{oe(),le(),window.$message.success($t("workbench.project.msg.visualManualDeleted"))}).catch(te=>{window.$message.error(te.message??$t("workbench.project.msg.operationFailed"))}).finally(()=>{oe(),ie.destroy()})}})}async function ee(){if(!W.value.name.trim()){window.$message.warning($t("workbench.project.msg.enterVisualManualName"));return}if(!W.value.images.length){window.$message.warning($t("workbench.project.msg.enterVisualManualImage"));return}const Y=J.value.find(ie=>!ie.data.trim());if(Y)return window.$message.warning(`「${Y.label}」${$t("workbench.project.msg.enterVisualManualTabData")}`);try{D.value=!0,$.value?await mn.post("/project/editDirectorlManual",{name:W.value.name,images:W.value.images,data:J.value,directorManual:W.value.directorManual}):await mn.post("/project/addDirectorManual",{name:W.value.name,images:W.value.images,data:J.value,directorManual:W.value.directorManual}),D.value=!1,$.value?window.$message.success($t("workbench.project.msg.directorManualUpdated")):window.$message.success($t("workbench.project.msg.directorManualAdded")),le(),oe()}catch(ie){D.value=!1,window.$message.error(ie.message??$t("workbench.project.msg.operationFailed"))}}function de(){var Y;(Y=w.value)==null||Y.click()}function z(Y){const ie=Y.target.files;!ie||ie.length===0||(Array.from(ie).forEach(te=>{const Z=new FileReader;Z.onload=()=>{W.value.images.push(Z.result)},Z.readAsDataURL(te)}),Y.target.value="")}return(Y,ie)=>{const te=uL,Z=pA,he=p2,pe=Wu,Ce=c2,Qe=A2,ke=_n("i-plus"),me=Si,_e=_n("i-edit"),Te=_n("i-delete"),De=Wc,Ye=gc,ot=_n("i-close"),We=Mne,et=Ine;return xe(),Ge("div",LBo,[c(Ye,{placement:"center",visible:n.value,"onUpdate:visible":ie[11]||(ie[11]=st=>n.value=st),header:a.value?Y.$t("workbench.project.dialog.editTitle"):Y.$t("workbench.project.dialog.addTitle"),width:"60%",onConfirm:m,onCloseBtnClick:g,onCancel:g,"confirm-btn":a.value?Y.$t("workbench.project.dialog.save"):Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[ge("div",xBo,[ge("div",EBo,[c(Qe,{data:u.value,"label-align":"top"},{default:Oe(()=>[c(he,{label:Y.$t("workbench.project.dialog.projectType")},{default:Oe(()=>[c(Z,{modelValue:u.value.projectType,"onUpdate:modelValue":ie[0]||(ie[0]=st=>u.value.projectType=st),placeholder:Y.$t("workbench.project.dialog.selectType")},{default:Oe(()=>[c(te,{key:"基于小说原文",label:Y.$t("workbench.project.dialog.basedOnNovel"),value:"novel"},null,8,["label"]),c(te,{key:"基于剧本",label:Y.$t("workbench.project.dialog.basedOnScript"),value:"script"},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.projectName")},{default:Oe(()=>[c(pe,{modelValue:u.value.name,"onUpdate:modelValue":ie[1]||(ie[1]=st=>u.value.name=st),placeholder:Y.$t("workbench.project.dialog.projectNamePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.novelType")},{default:Oe(()=>[c(pe,{modelValue:u.value.type,"onUpdate:modelValue":ie[2]||(ie[2]=st=>u.value.type=st),placeholder:Y.$t("workbench.project.dialog.novelTypePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.modelData")},{default:Oe(()=>[ge("div",TBo,[c(T8,{modelValue:u.value.imageModel,"onUpdate:modelValue":ie[3]||(ie[3]=st=>u.value.imageModel=st),type:"image"},null,8,["modelValue"]),c(Z,{modelValue:u.value.imageQuality,"onUpdate:modelValue":ie[4]||(ie[4]=st=>u.value.imageQuality=st),class:"paramSelect ml-5",placeholder:Y.$t("workbench.production.editImage.quality")},{default:Oe(()=>[c(te,{value:"1K",label:"1K"}),c(te,{value:"2K",label:"2K"}),c(te,{value:"4K",label:"4K"})]),_:1},8,["modelValue","placeholder"])])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.videoModelData")},{default:Oe(()=>[ge("div",QBo,[c(T8,{modelValue:u.value.videoModel,"onUpdate:modelValue":ie[5]||(ie[5]=st=>u.value.videoModel=st),type:"video",onChange:F,changeConfig:!0},null,8,["modelValue"]),c(Z,{modelValue:u.value.mode,"onUpdate:modelValue":ie[6]||(ie[6]=st=>u.value.mode=st),class:"paramSelect ml-5",placeholder:Y.$t("workbench.production.editImage.mode")},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(M.value,st=>(xe(),Ut(te,{key:st.value,value:st.value,label:st.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue","placeholder"])])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.videoRatio")},{default:Oe(()=>[c(Z,{modelValue:u.value.videoRatio,"onUpdate:modelValue":ie[7]||(ie[7]=st=>u.value.videoRatio=st),options:l},null,8,["modelValue"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.novelIntro")},{default:Oe(()=>[c(Ce,{modelValue:u.value.intro,"onUpdate:modelValue":ie[8]||(ie[8]=st=>u.value.intro=st),autosize:{minRows:3,maxRows:6},placeholder:Y.$t("workbench.project.dialog.novelIntroPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["data"])]),ge("div",DBo,[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",BBo,[ge("div",RBo,[ge("span",null,Pe(Y.$t("workbench.project.dialog.visualManual")),1),c(me,{size:"small",variant:"outline",onClick:ie[9]||(ie[9]=st=>_())},{icon:Oe(()=>[c(ke,{size:"14"})]),default:Oe(()=>[Bt(" "+Pe(Y.$t("workbench.project.dialog.newVisualManual")),1)]),_:1})]),ge("div",IBo,[c(De,{loading:k.value,text:Y.$t("workbench.project.dialog.loading")},{default:Oe(()=>[ge("div",MBo,[(xe(!0),Ge(sn,null,Bi(f.value,(st,Me)=>(xe(),Ge("div",{key:Me,class:Eo(["gridItem",{active:u.value.artStyle===st.stylePath}]),onClick:Se=>u.value.artStyle=st.stylePath},[ge("div",FBo,[ge("img",{src:st.images&&st.images[0],alt:st.name,class:"artImage",loading:"lazy"},null,8,NBo),ge("div",UBo,Pe(st.name),1)]),ge("div",{class:"editBtn",onClick:Mr(Se=>_(st),["stop"])},[c(_e,{theme:"outline",size:"14"})],8,jBo),ge("div",{class:"delBtn",onClick:Mr(Se=>Q(st),["stop"])},[c(Te,{theme:"outline",size:"14"})],8,WBo)],10,PBo))),128))])]),_:1},8,["loading","text"])])])]),_:1}),c(he,null,{default:Oe(()=>[ge("div",VBo,[ge("div",zBo,[ge("span",null,Pe(Y.$t("workbench.project.dialog.directorManual")),1),c(me,{size:"small",variant:"outline",onClick:ie[10]||(ie[10]=st=>se())},{icon:Oe(()=>[c(ke,{size:"14"})]),default:Oe(()=>[Bt(" "+Pe(Y.$t("workbench.project.dialog.addDirectorManual")),1)]),_:1})]),ge("div",HBo,[c(De,{loading:H.value,text:Y.$t("workbench.project.dialog.loading")},{default:Oe(()=>[ge("div",$Bo,[(xe(!0),Ge(sn,null,Bi(q.value,(st,Me)=>(xe(),Ge("div",{key:Me,class:Eo(["gridItem",{active:u.value.directorManual===st.directorManual}]),onClick:Se=>u.value.directorManual=st.directorManual},[ge("div",GBo,[ge("img",{src:st.images&&st.images[0],alt:st.name,class:"artImage",loading:"lazy"},null,8,YBo),ge("div",ZBo,Pe(st.name),1)]),ge("div",{class:"editBtn",onClick:Mr(Se=>se(st),["stop"])},[c(_e,{theme:"outline",size:"14"})],8,qBo),ge("div",{class:"delBtn",onClick:Mr(Se=>ue(st),["stop"])},[c(Te,{theme:"outline",size:"14"})],8,KBo)],10,XBo))),128))])]),_:1},8,["loading","text"])])])]),_:1})]),_:1})])])]),_:1},8,["visible","header","confirm-btn","cancel-btn"]),c(Ye,{class:"artStyleDialog",visible:A.value,"onUpdate:visible":ie[15]||(ie[15]=st=>A.value=st),header:p.value?Y.$t("workbench.project.dialog.editVisualManualTitle"):Y.$t("workbench.project.dialog.newVisualManualTitle"),width:"90vw",placement:"center",onConfirm:P,onCloseBtnClick:le,onCancel:le,"confirm-btn":Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[c(De,{loading:D.value},{default:Oe(()=>[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",JBo,[ge("div",eRo,[ge("label",tRo,Pe(Y.$t("workbench.project.dialog.visualManualName")),1),c(pe,{modelValue:b.value.name,"onUpdate:modelValue":ie[12]||(ie[12]=st=>b.value.name=st),placeholder:Y.$t("workbench.project.dialog.visualManualNamePh")},null,8,["modelValue","placeholder"])]),ge("div",nRo,[ge("label",iRo,Pe(Y.$t("workbench.project.dialog.mdFile")),1),c(pe,{modelValue:b.value.stylePath,"onUpdate:modelValue":ie[13]||(ie[13]=st=>b.value.stylePath=st),disabled:!!p.value},null,8,["modelValue","disabled"])]),ge("div",rRo,[ge("label",oRo,Pe(Y.$t("workbench.project.dialog.visualManualCover")),1),ge("div",sRo,[(xe(!0),Ge(sn,null,Bi(b.value.images,(st,Me)=>(xe(),Ge("div",{key:Me,class:"coverPreview"},[ge("img",{src:st,class:"coverImg"},null,8,aRo),ge("div",{class:"coverImgRemove",onClick:Se=>T(Me)},[c(ot,{size:"10"})],8,lRo)]))),128)),ge("div",{class:"coverUploadTrigger",onClick:L},[ge("input",{ref_key:"visualManualCoverInputRef",ref:w,type:"file",accept:"image/*",multiple:"",style:{display:"none"},onChange:E},null,544),c(ke,{size:"24"}),ge("span",null,Pe(Y.$t("workbench.project.dialog.uploadCover")),1)])])])])]),_:1}),c(he,{label:Y.$t("workbench.project.dialog.visualManualPrompt")},{default:Oe(()=>[ge("div",cRo,[ge("div",dRo,[ge("div",uRo,[c(et,{value:O.value,size:"medium",onChange:ie[14]||(ie[14]=st=>O.value=st)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(y.value,st=>(xe(),Ut(We,{key:st.value,value:st.value,label:st.label},{default:Oe(()=>[c(Ae(X4),{modelValue:st.data,"onUpdate:modelValue":Me=>st.data=Me,theme:"light",toolbars:v,footers:[],placeholder:Y.$t("workbench.project.dialog.promptPlaceholder"),style:{height:"30vh","margin-top":"5px"},onOnUploadImg:()=>{}},null,8,["modelValue","onUpdate:modelValue","placeholder"])]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])])])])]),_:1},8,["label"])]),_:1})]),_:1},8,["loading"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"]),c(Ye,{class:"artStyleDialog",visible:G.value,"onUpdate:visible":ie[19]||(ie[19]=st=>G.value=st),header:$.value?Y.$t("workbench.project.dialog.editingDirectorManual"):Y.$t("workbench.project.dialog.newDirecorManualTitle"),width:"90vw",placement:"center",onConfirm:ee,onCloseBtnClick:S,onCancel:S,"confirm-btn":Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[c(De,{loading:D.value},{default:Oe(()=>[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",hRo,[ge("div",fRo,[ge("label",gRo,Pe(Y.$t("workbench.project.dialog.directorManualName")),1),c(pe,{modelValue:W.value.name,"onUpdate:modelValue":ie[16]||(ie[16]=st=>W.value.name=st),placeholder:Y.$t("workbench.project.dialog.directorManualNamePh")},null,8,["modelValue","placeholder"])]),ge("div",mRo,[ge("label",kRo,Pe(Y.$t("workbench.project.dialog.directorFile")),1),c(pe,{modelValue:W.value.directorManual,"onUpdate:modelValue":ie[17]||(ie[17]=st=>W.value.directorManual=st),disabled:!!$.value},null,8,["modelValue","disabled"])]),ge("div",vRo,[ge("label",ARo,Pe(Y.$t("workbench.project.dialog.directorManualCover")),1),ge("div",pRo,[(xe(!0),Ge(sn,null,Bi(W.value.images,(st,Me)=>(xe(),Ge("div",{key:Me,class:"coverPreview"},[ge("img",{src:st,class:"coverImg"},null,8,bRo),ge("div",{class:"coverImgRemove",onClick:Se=>T(Me)},[c(ot,{size:"10"})],8,wRo)]))),128)),ge("div",{class:"coverUploadTrigger",onClick:de},[ge("input",{ref_key:"visualManualCoverInputRef",ref:w,type:"file",accept:"image/*",multiple:"",style:{display:"none"},onChange:z},null,544),c(ke,{size:"24"}),ge("span",null,Pe(Y.$t("workbench.project.dialog.uploadCover")),1)])])])])]),_:1}),c(he,{label:Y.$t("workbench.project.dialog.directorManualPrompt")},{default:Oe(()=>[ge("div",ORo,[ge("div",yRo,[ge("div",CRo,[c(et,{value:re.value,size:"medium",onChange:ie[18]||(ie[18]=st=>re.value=st)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(J.value,st=>(xe(),Ut(We,{key:st.value,value:st.value,label:st.label},{default:Oe(()=>[c(Ae(X4),{modelValue:st.data,"onUpdate:modelValue":Me=>st.data=Me,theme:"light",toolbars:v,footers:[],placeholder:Y.$t("workbench.project.dialog.promptPlaceholder"),style:{height:"30vh","margin-top":"5px"},onOnUploadImg:()=>{}},null,8,["modelValue","onUpdate:modelValue","placeholder"])]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])])])])]),_:1},8,["label"])]),_:1})]),_:1},8,["loading"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])])}}}),SRo=oo(_Ro,[["__scopeId","data-v-2e24f11a"]]),LRo={class:"project"},xRo={class:"header"},ERo={class:"fc"},TRo={class:"title"},QRo={class:"sub"},DRo={class:"list"},BRo={class:"jb ac"},RRo={class:"title"},IRo={class:"intro"},MRo={class:"bottomMenu f ac jb"},PRo={class:"time"},FRo={class:"actionBtns f ac"},NRo=["onClick"],URo=["onClick"],jRo=Je({__name:"index",setup(e){const{allProject:t,project:n}=xs(ph()),r=fe(!1),o=fe(null);function s(){mn.post("/project/getProject").then(({data:m})=>{t.value=m})}An(()=>{n.value=null,s()});const a=_pe();function l(m){const v=t.value.find(f=>f.id===m);if(v)n.value=v;else return window.$message.error($t("workbench.project.msg.notFound"));v.projectType==="novel"?a.push("/novel"):v.projectType==="script"&&a.push("/script")}function d(m){o.value={...m},r.value=!0}function u(m){mn.post("/project/editProject",m).then(()=>{window.$message.success($t("workbench.project.msg.editSuccess")),s()}).catch(v=>{window.$message.error(v.message??$t("workbench.project.msg.editFailed"))})}function h(m){mn.post("/project/addProject",m).then(()=>{window.$message.success($t("workbench.project.msg.addSuccess")),s()}).catch(v=>{window.$message.error(v.message??$t("workbench.project.msg.addFailed"))})}function g(m){const v=fo.confirm({header:$t("workbench.project.msg.deleteHeader"),body:$t("workbench.project.msg.deleteBody"),confirmBtn:$t("workbench.project.msg.deleteConfirm"),cancelBtn:$t("workbench.project.msg.deleteCancel"),onConfirm:()=>{mn.post("/project/delProject",{id:m}).then(()=>{window.$message.success($t("workbench.project.msg.deleteSuccess")),s()}).catch(f=>{window.$message.error(f.message??$t("workbench.project.msg.deleteFailed"))}).finally(()=>{v.destroy()})}})}return(m,v)=>{const f=_n("i-plus"),k=Si,A=Sg,p=_n("i-edit"),b=_n("i-delete"),w=km,O=L1i,y=S1i;return xe(),Ge(sn,null,[ge("div",LRo,[ge("div",xRo,[ge("div",ERo,[ge("span",TRo,Pe(m.$t("workbench.project.title")),1),ge("span",QRo,Pe(m.$t("workbench.project.subtitle")),1)]),c(k,{class:"addBtn",onClick:v[0]||(v[0]=C=>{o.value=null,r.value=!0})},{icon:Oe(()=>[c(f,{class:"addIcon",size:20})]),default:Oe(()=>[Bt(" "+Pe(m.$t("workbench.project.newProject")),1)]),_:1})]),ge("div",DRo,[c(y,{style:{gap:"20px"}},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(t),C=>(xe(),Ut(O,{xs:12,sm:6,md:6,lg:4,xl:4,key:C.id},{default:Oe(()=>[c(w,{hoverShadow:"",class:"card",onClick:_=>l(C.id)},{default:Oe(()=>[ge("div",BRo,[ge("div",RRo,Pe(C.name),1),ge("div",null,[c(A,{shape:"round"},{default:Oe(()=>[Bt(Pe(C.projectType=="novel"?m.$t("workbench.project.type.novel"):m.$t("workbench.project.type.script")),1)]),_:2},1024)])]),C.artStyle?(xe(),Ut(A,{key:0,shape:"round"},{default:Oe(()=>[Bt(Pe(C.artStyle),1)]),_:2},1024)):nn("",!0),ge("div",IRo,Pe(C.intro),1),ge("div",MRo,[ge("div",PRo,[ge("span",null,Pe(Ae(JB)(C==null?void 0:C.createTime).format("YYYY-MM-DD HH:mm:ss")),1)]),ge("div",FRo,[ge("div",{class:"editBtn",onClick:Mr(_=>d(C),["stop"])},[c(p,{size:18})],8,NRo),ge("div",{class:"removeBtn",onClick:Mr(_=>g(C.id),["stop"])},[c(b,{size:18})],8,URo)])])]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})])]),c(SRo,{modelValue:Ae(r),"onUpdate:modelValue":v[1]||(v[1]=C=>Fn(r)?r.value=C:null),projectData:Ae(o),onAdd:h,onEdit:u},null,8,["modelValue","projectData"])],64)}}}),WRo=oo(jRo,[["__scopeId","data-v-d59f6a92"]]),VRo=Object.freeze(Object.defineProperty({__proto__:null,default:WRo},Symbol.toStringTag,{value:"Module"})),zRo={class:"task"},HRo={class:"header"},$Ro={class:"headerInfo fc"},XRo={class:"title"},GRo={class:"sub"},YRo={class:"list"},ZRo={class:"search f"},qRo={class:"content"},KRo={class:"stateText stateFail"},JRo=Je({__name:"index",setup(e){const{project:t}=xs(ph()),n=[{colKey:"taskClass",title:$t("workbench.task.col.taskClass"),width:120,ellipsis:!0},{colKey:"relatedObjects",title:$t("workbench.task.col.relatedObjects"),width:120,ellipsis:!0},{colKey:"model",title:$t("workbench.task.col.model"),width:280,ellipsis:!0},{colKey:"describe",title:$t("workbench.task.col.describe"),ellipsis:!0},{colKey:"reason",title:$t("workbench.task.col.reason"),ellipsis:!0},{colKey:"state",title:$t("workbench.task.col.state"),width:100,cell:"state"},{colKey:"startTime",title:$t("workbench.task.col.startTime"),width:200,cell:"startTime"}],r=[{label:$t("workbench.task.stateAll"),value:""},{label:$t("workbench.task.stateRunning"),value:"进行中"},{label:$t("workbench.task.stateCompleted"),value:"已完成"},{label:$t("workbench.task.stateFailed"),value:"生成失败"}],o=fe({page:1,limit:10,total:0,loading:!1}),s=fe([]),a=fe([]),l=fe(""),d=fe(""),u=fe(""),h=fe([]);An(()=>{f(),m(),v()});function g(){o.value.page=1,f()}async function m(){const{data:k}=await mn.post("/task/getTaskCategories").catch(()=>({data:[]}));s.value=[{label:$t("workbench.task.stateAll"),value:""},...k.map(A=>({label:A.taskClass,value:A.taskClass}))]}async function v(){const{data:k}=await mn.post("/task/getProject").catch(()=>({data:[]}));a.value=[{label:$t("workbench.task.stateAll"),value:""},...k.map(A=>({label:A.name,value:A.id}))]}async function f(){var k;o.value.loading=!0;try{const{data:A}=await mn.post("/task/getTaskApi",{page:o.value.page,limit:o.value.limit,taskClass:l.value,state:d.value,projectId:u.value||((k=t.value)==null?void 0:k.id)});h.value=A.data,o.value.total=A.total}catch{window.$message.error($t("workbench.task.fetchFailed"))}finally{o.value.loading=!1}}return(k,A)=>{const p=_n("i-redo"),b=Si,w=pA,O=el,y=jne,C=g3n;return xe(),Ge("div",zRo,[ge("div",HRo,[ge("div",$Ro,[ge("span",XRo,Pe(k.$t("workbench.task.title")),1),ge("span",GRo,Pe(k.$t("workbench.task.subtitle")),1)]),c(b,{onClick:f},{icon:Oe(()=>[c(p,{size:20})]),default:Oe(()=>[Bt(" "+Pe(k.$t("workbench.task.refresh")),1)]),_:1})]),ge("div",YRo,[ge("div",ZRo,[c(w,{label:k.$t("workbench.task.project"),modelValue:Ae(u),"onUpdate:modelValue":A[0]||(A[0]=_=>Fn(u)?u.value=_:null),options:Ae(a),onChange:g},null,8,["label","modelValue","options"]),c(w,{label:k.$t("workbench.task.categoryLabel"),modelValue:Ae(l),"onUpdate:modelValue":A[1]||(A[1]=_=>Fn(l)?l.value=_:null),options:Ae(s),onChange:g,style:{"margin-left":"20px"}},null,8,["label","modelValue","options"]),c(w,{label:k.$t("workbench.task.stateLabel"),modelValue:Ae(d),"onUpdate:modelValue":A[2]||(A[2]=_=>Fn(d)?d.value=_:null),options:r,onChange:g,style:{"margin-left":"20px"}},null,8,["label","modelValue"])]),ge("div",qRo,[c(y,{data:Ae(h),columns:n,"row-key":"id",loading:Ae(o).loading,hover:"",stripe:""},{state:Oe(({row:_})=>[_.state==="生成失败"?(xe(),Ut(O,{key:0,content:_.reason||k.$t("workbench.task.noFailReason"),placement:"top"},{default:Oe(()=>[ge("span",KRo,Pe(_.state),1)]),_:2},1032,["content"])):(xe(),Ge("span",{key:1,class:Eo(["stateText",_.state==="进行中"?"stateRunning":"stateSuccess"])},Pe(_.state),3))]),startTime:Oe(({row:_})=>[ge("span",null,Pe(Ae(JB)(_.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),_:1},8,["data","loading"]),c(C,{class:"paginationWrap",current:Ae(o).page,"onUpdate:current":A[3]||(A[3]=_=>Ae(o).page=_),pageSize:Ae(o).limit,"onUpdate:pageSize":A[4]||(A[4]=_=>Ae(o).limit=_),"show-sizer":"",total:Ae(o).total,onPageSizeChange:f,onCurrentChange:f},null,8,["current","pageSize","total"])])])])}}}),eIo=oo(JRo,[["__scopeId","data-v-7d93af9d"]]),tIo=Object.freeze(Object.defineProperty({__proto__:null,default:eIo},Symbol.toStringTag,{value:"Module"})),Dce=/^(第[\d一二三四五六七八九十百千]+卷)\s*([^\n第]*)/gm,nIo=/第\s*([0-90-9零一二三四五六七八九十百千万]+)\s*[章回节]\s*([^\n\r]*)/g,O5e={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},GSt={十:10,百:100,千:1e3};function y5e(e){if(/^\d+$/.test(e))return parseInt(e,10);if(/^十[一二三四五六七八九]?$/.test(e))return e.length===1?10:10+O5e[e[1]];let t=0,n=0;for(const r of e)O5e[r]!==void 0?n=O5e[r]:GSt[r]!==void 0&&(n===0&&r==="十"&&(n=1),t+=n*GSt[r],n=0);return t+=n,t}function iIo(e){var l;Dce.lastIndex=0;const t=Array.from(e.matchAll(Dce)),n=[];let r;const o=ku().otherSetting.chapterReg;if(o){const d=o.match(/^\/(.*)\/([igmuy]*)$/);d?r=new RegExp(d[1],d[2]):r=new RegExp(o)}else r=nIo;if(t.length===0){const d=[];r.lastIndex=0;const u=Array.from(e.matchAll(r));if(u.length===0&&e.trim()!=="")d.push({index:1,chapter:"",text:e.trim()});else for(let h=0;hh.index-g.index),n.push({index:1,reel:"正文卷",chapters:d}),n}const s=new Map;for(let d=0;dp.index-b.index),s.has(m)||s.set(m,{index:y5e(g.replace(/第|卷/g,"")),reel:m,chapters:[]}),s.get(m).chapters.push(...A)}const a=Array.from(s.values()).sort((d,u)=>d.index-u.index);return a.forEach(d=>d.chapters.sort((u,h)=>u.index-h.index)),a}var _p={},Cit="1.13.8",YSt=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},iwe=Array.prototype,_it=Object.prototype,ZSt=typeof Symbol<"u"?Symbol.prototype:null,rIo=iwe.push,lre=iwe.slice,Tee=_it.toString,oIo=_it.hasOwnProperty,kPn=typeof ArrayBuffer<"u",sIo=typeof DataView<"u",aIo=Array.isArray,qSt=Object.keys,KSt=Object.create,JSt=kPn&&ArrayBuffer.isView,lIo=isNaN,cIo=isFinite,vPn=!{toString:null}.propertyIsEnumerable("toString"),e8t=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],dIo=Math.pow(2,53)-1;function V0(e,t){return t=t==null?e.length-1:+t,function(){for(var n=Math.max(arguments.length-t,0),r=Array(n),o=0;o=0&&n<=dIo}}function xPn(e){return function(t){return t==null?void 0:t[e]}}const Dke=xPn("byteLength"),gIo=LPn(Dke);var mIo=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function kIo(e){return JSt?JSt(e)&&!Qee(e):gIo(e)&&mIo.test(Tee.call(e))}const Rit=kPn?kIo:Bit(!1),m1=xPn("length");function vIo(e){for(var t={},n=e.length,r=0;r=0))if(r.push(e),o.push(t),n.push(!0),d){if(m=e.length,m!==t.length)return!1;for(;m--;)n.push({a:e[m],b:t[m]})}else{var v=Mf(e),f;if(m=v.length,Mf(t).length!==m)return!1;for(;m--;){if(f=v[m],!vE(t,f))return!1;n.push({a:e[f],b:t[f]})}}}return!0}function gH(e){if(!mE(e))return[];var t=[];for(var n in e)t.push(n);return vPn&&EPn(e,t),t}function Mit(e){var t=m1(e);return function(n){if(n==null)return!1;var r=gH(n);if(m1(r))return!1;for(var o=0;o":">",'"':""","'":"'","`":"`"},qPn=YPn(ZPn),wIo=Nit(ZPn),KPn=YPn(wIo),JPn=Jl.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var C5e=/(.)^/,OIo={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},yIo=/\\|'|\r|\n|\u2028|\u2029/g;function CIo(e){return"\\"+OIo[e]}var _Io=/^\s*(\w|\$)+\s*$/;function eFn(e,t,n){!t&&n&&(t=n),t=Wit({},t,Jl.templateSettings);var r=RegExp([(t.escape||C5e).source,(t.interpolate||C5e).source,(t.evaluate||C5e).source].join("|")+"|$","g"),o=0,s="__p+='";e.replace(r,function(u,h,g,m,v){return s+=e.slice(o,v).replace(yIo,CIo),o=v+u.length,h?s+=`'+ +`,LTo={class:"modelServe"},xTo={class:"modelList"},ETo={class:"listFooter"},TTo={class:"listContent"},QTo={key:0,class:"modelParameter"},DTo={class:"configuration"},BTo={class:"infoBox ac jb"},RTo={class:"idBox"},ITo={class:"author"},MTo={class:"requiredLabel"},PTo={class:"requiredText"},FTo={class:"inputHelp"},NTo={key:0,class:"optionalSection"},UTo={class:"inputHelp"},jTo={class:"jb ac"},WTo={class:"sectionTitle"},VTo={class:"topInfo jb ac"},zTo={class:"modelCardName"},HTo={class:"actionBtns"},$To={class:"tags"},XTo={class:"updateAction"},GTo={class:"addBox"},YTo={style:{display:"flex","flex-direction":"column","align-items":"flex-start",gap:"0"}},ZTo={style:{border:"1px solid #ddd","border-radius":"6px",padding:"6px 12px","margin-top":"6px"}},qTo={class:"drmEditor"},KTo={class:"drmHeader"},JTo={class:"drmHeaderLabel"},eQo={class:"drmHeaderLabel"},tQo={class:"drmRowIndex"},nQo={class:"testResult"},iQo={key:0,class:"resultContent"},rQo=["src"],oQo={key:1,class:"resultContent"},sQo=["src"],aQo={key:2,class:"resultContent"},lQo={class:"data"},cQo={key:0,class:"linkAdd"},dQo={style:{"margin-top":"10px","text-align":"right",width:"100%"}},uQo={key:1,class:"importAdd"},hQo={class:"dragIcon"},fQo={class:"uploadText"},gQo={class:"uploadHint"},mQo={key:2,class:"codeAdd"},kQo={class:"editorToolbar"},vQo={class:"editorInfo"},AQo={class:"editorActions"},pQo={class:"editorWrapper"},bQo=700,wQo=Je({__name:"vendorConfig",setup(e){const t={text:"settings.vendor.textModel",image:"settings.vendor.imageModel",video:"settings.vendor.videoModel"},n={singleImage:"settings.vendor.singleImage",multiImage:"settings.vendor.multiImage",startEndRequired:"settings.vendor.startEndRequired",endFrameOptional:"settings.vendor.endFrameOptional",startFrameOptional:"settings.vendor.startFrameOptional",audioReference:"settings.vendor.audioRef",videoReference:"settings.vendor.videoRef",textReference:"settings.vendor.textRef",imageReference:"settings.vendor.imageRef"};function r(Se){return t[Se]||Se}function o(Se,Ie){return Se==="text"?Ie==="image"?"settings.vendor.textToImage":"settings.vendor.textToVideo":n[Se]||Se}const s={fontSize:14,automaticLayout:!0,tabSize:2,scrollBeyondLastLine:!1,formatOnPaste:!0,formatOnType:!0},a=[{value:"text",label:"settings.vendor.textModel"},{value:"image",label:"settings.vendor.imageModel"},{value:"video",label:"settings.vendor.videoModel"}],l=[{label:"settings.vendor.textToImage",value:"text"},{label:"settings.vendor.singleImage",value:"singleImage"}],d=[{label:"settings.vendor.singleImage",value:"singleImage"},{label:"settings.vendor.multiImage",value:"multiImage"},{label:"settings.vendor.startEndRequired",value:"startEndRequired"},{label:"settings.vendor.endFrameOptional",value:"endFrameOptional"},{label:"settings.vendor.startFrameOptional",value:"startFrameOptional"},{label:"settings.vendor.textToVideo",value:"text"}],u=[{label:"settings.vendor.textRef",value:"textReference"},{label:"settings.vendor.imageRef",value:"videoReference"},{label:"settings.vendor.videoRef",value:"imageReference"},{label:"settings.vendor.audioRef",value:"audioReference"}],h=[{label:"settings.vendor.audioOptional",value:"optional"},{label:"settings.vendor.audioOnly",value:!0},{label:"settings.vendor.noAudio",value:!1}],g=fe([]),m=fe(!1);async function v(){m.value=!0;try{const Se=await mn.post("/setting/vendorConfig/getVendorList");g.value=Se.data.map(Ie=>({...Ie,enable:Ie.enable})),g.value.length&&!g.value.some(Ie=>Ie.id===f.value)&&(f.value=g.value[0].id)}catch(Se){window.$message.error(`${$t("settings.vendor.msg.getVendorListFailed")}${Se.message}`)}finally{m.value=!1,ai(()=>{E.value=H.value,L.value=!0})}}An(()=>{v()});const f=fe(),k=X(()=>g.value.find(Se=>Se.id===f.value)),A=X(()=>{var Se,Ie;return((Se=k.value)==null?void 0:Se.models)||((Ie=k.value)==null?void 0:Ie.model)||[]}),p=X(()=>{var Se,Ie;return((Ie=(Se=k.value)==null?void 0:Se.inputs)==null?void 0:Ie.filter(ze=>ze.required))||[]}),b=X(()=>{var Se,Ie;return((Ie=(Se=k.value)==null?void 0:Se.inputs)==null?void 0:Ie.filter(ze=>!ze.required))||[]}),w=fe(!1),O=fe(!1),y=fe(b5e),C=fe(null),_=fe(!1),S=fe(!1),L=fe(!1),E=fe("");let T=null,D=!1;const P=fe(!1),Q=fe(""),M=fe(""),B=fe(""),R=hs({});function I(Se){return Se==="password"?"secured":Se==="url"?"link":"edit-1"}function F(Se){var Ie;return((Ie=Se.placeholder)==null?void 0:Ie.trim())||""}function j(Se){return Se?/^(?:data:[^;]+;base64,)?[A-Za-z0-9+/]*={0,2}$/.test(Se)&&Se.length>0:!1}function W(Se){return{id:Se.id,name:Se.name,icon:Se.icon,inputs:Se.inputs,inputValues:Se.inputValues,models:Se.models??Se.model??[]}}const H=X(()=>k.value?JSON.stringify(W(k.value)):"");function $(){T&&clearTimeout(T),T=setTimeout(()=>{G()},bQo)}async function G(){if(!k.value||!L.value||m.value)return;const Se=H.value;if(!(!Se||Se===E.value)){if(S.value){D=!0;return}S.value=!0;try{await mn.post("/setting/vendorConfig/updateVendor",W(k.value)),E.value=Se}catch(Ie){window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${Ie.message}`)}finally{S.value=!1,D&&(D=!1,$())}}}pt(H,Se=>{!Se||!L.value||m.value||Se!==E.value&&$()},{flush:"post"}),pt(f,()=>{T&&(clearTimeout(T),T=null),D=!1,ai(()=>{E.value=H.value})},{flush:"post"});const q=fe();function re(){ke.value="linkAdd",q.value=void 0,y.value=b5e,w.value=!0}function J(){if(q.value){const Se=co.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.updateVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=co.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.updateVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndUpdate"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{mn.post("/setting/vendorConfig/updateCode",{id:q.value,tsCode:y.value}).then(ze=>{window.$message.success($t("settings.vendor.msg.updateSuccess")),w.value=!1,O.value=!1,v()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${ze.message}`)}).finally(()=>{Ie.destroy()})},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}else{const Se=co.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.addVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=co.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{mn.post("/setting/vendorConfig/addVendor",{tsCode:y.value}).then(ze=>{window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.addFailed")}${ze.message}`)}).finally(()=>{Ie.destroy()})},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}}const oe=fe(!1),se=fe(null),le=fe({name:"",modelName:"",type:"text",think:!1,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:""});function ue(Se="text"){le.value={name:"",modelName:"",type:Se,think:!1,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:""}}function ee(){return k.value?(Array.isArray(k.value.models)||(k.value.models=Array.isArray(k.value.model)?[...k.value.model]:[]),k.value.model=k.value.models,k.value.models):[]}function de(){const Se=le.value.name.trim(),Ie=le.value.modelName.trim();if(!Se)return window.$message.error($t("settings.vendor.msg.fillDisplayName")),null;if(!Ie)return window.$message.error($t("settings.vendor.msg.fillModelId")),null;if(le.value.type==="text")return{name:Se,modelName:Ie,type:"text",think:le.value.think,associationSkills:le.value.associationSkills};if(le.value.type==="image"){const gt=le.value.mode;return gt.length?{name:Se,modelName:Ie,type:"image",mode:gt,associationSkills:le.value.associationSkills}:(window.$message.error($t("settings.vendor.msg.selectImageMode")),null)}const ze=[...le.value.mode];if(le.value.mixedMode.length>0&&ze.push([...le.value.mixedMode]),!ze.length)return window.$message.error($t("settings.vendor.msg.selectVideoMode")),null;const Ze=[];for(let gt=0;gtNumber.isFinite(on)&&on>0),dn=St.resolution.filter(Boolean);if(!Pt.length)return window.$message.error(`${$t("settings.vendor.msg.groupPrefix",{n:gt+1})}${$t("settings.vendor.msg.addDuration")}`),null;if(!dn.length)return window.$message.error(`${$t("settings.vendor.msg.groupPrefix",{n:gt+1})}${$t("settings.vendor.msg.addResolution")}`),null;Ze.push({duration:Pt,resolution:dn})}return{name:Se,modelName:Ie,type:"video",mode:ze,audio:le.value.audio,durationResolutionMap:Ze,associationSkills:le.value.associationSkills}}function z(){if(!k.value){window.$message.error($t("settings.vendor.msg.selectVendorFirst"));return}se.value=null,ue("text"),oe.value=!0}function Y(){const Se=ee();if(!Se.length&&!k.value)return;const Ie=de();if(!Ie)return;if(Se.findIndex((Ze,gt)=>se.value!==null&>===se.value?!1:Ze.modelName===Ie.modelName)!==-1){window.$message.error($t("settings.vendor.msg.modelIdExists"));return}se.value===null?(Se.push(Ie),window.$message.success($t("settings.vendor.msg.modelAdded"))):(Se.splice(se.value,1,Ie),window.$message.success($t("settings.vendor.msg.modelUpdated"))),oe.value=!1}function ie(Se){var ze;const Ie=ee();if(se.value=Ie.findIndex(Ze=>Ze.modelName===Se.modelName),Se.type==="text"&&(le.value={name:Se.name,modelName:Se.modelName,type:"text",think:Se.think,mode:[],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:Se.associationSkills||""}),Se.type==="image"&&(le.value={name:Se.name,modelName:Se.modelName,type:"image",think:!1,mode:[...Se.mode],mixedMode:[],audio:"optional",durationResolutionMap:[{duration:[],resolution:[]}],associationSkills:Se.associationSkills||""}),Se.type==="video"){const Ze=((ze=Se.durationResolutionMap)==null?void 0:ze.length)>0?Se.durationResolutionMap.map(Pt=>({duration:Pt.duration.map(String),resolution:[...Pt.resolution]})):[{duration:[],resolution:[]}],gt=[];let St=[];for(const Pt of Se.mode)Array.isArray(Pt)?St=[...Pt]:gt.push(Pt);le.value={name:Se.name,modelName:Se.modelName,type:"video",think:!1,mode:gt,mixedMode:St,audio:Se.audio,durationResolutionMap:Ze,associationSkills:Se.associationSkills||""}}oe.value=!0}async function te(Se){var Ie,ze,Ze,gt,St,Pt,dn;if(!((ze=(Ie=k.value)==null?void 0:Ie.inputValues)!=null&&ze.apiKey))return window.$message.error($t("settings.vendor.msg.enterApiKey"));if(!((gt=(Ze=k.value)==null?void 0:Ze.inputValues)!=null&>.baseUrl))return window.$message.error($t("settings.vendor.msg.enterApiUrl"));if(!R[Se.modelName]){R[Se.modelName]=!0;try{const{data:on}=await mn.post("/setting/vendorConfig/modelTest",{type:Se.type,modelName:Se.modelName,id:k.value.id});Se.type==="text"?window.$message.success(`${Se.modelName} ${$t("settings.vendor.msg.testSuccess")}: ${typeof on=="string"?on:JSON.stringify(on)}`):(Se.type==="image"||Se.type==="video")&&(B.value=Se.modelName,M.value=Se.type,Q.value=on,P.value=!0,window.$message.success(`${Se.type==="image"?$t("settings.vendor.msg.imageGenSuccess"):$t("settings.vendor.msg.videoGenSuccess")}`))}catch(on){const pn=((Pt=(St=on==null?void 0:on.response)==null?void 0:St.data)==null?void 0:Pt.message)||((dn=on==null?void 0:on.response)==null?void 0:dn.data)||(on==null?void 0:on.message)||String(on);window.$message.error(`${$t("settings.vendor.msg.requestFailed")}${typeof pn=="string"?pn:JSON.stringify(pn)}`)}finally{delete R[Se.modelName]}}}function Z(Se){if(!k.value)return;const Ie=co.confirm({theme:"danger",header:$t("settings.vendor.msg.deleteModelConfirm"),body:`${$t("settings.vendor.msg.deleteModelBody",{name:Se})}`,confirmBtn:{content:$t("settings.vendor.msg.confirmDelete"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{const Ze=ee().filter(gt=>gt.modelName!==Se);k.value.models=Ze,k.value.model=Ze,window.$message.success($t("settings.vendor.msg.modelDeleted")),Ie.destroy()}})}function he(){k.value&&(q.value=k.value.id,y.value=k.value.code,O.value=!0)}function pe(){if(!k.value)return;const Se=co.confirm({theme:"danger",header:$t("settings.vendor.msg.deleteVendorConfirm"),body:`${$t("settings.vendor.msg.deleteVendorBody",{name:k.value.name})}`,confirmBtn:{content:$t("settings.vendor.msg.confirmDelete"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{var Ie;mn.post("/setting/vendorConfig/deleteVendor",{id:(Ie=k.value)==null?void 0:Ie.id}).then(()=>{var ze;window.$message.success($t("settings.vendor.msg.vendorDeleted")),f.value===((ze=k.value)==null?void 0:ze.id)&&(f.value=void 0),v(),Se.destroy()}).catch(ze=>{window.$message.error(`${$t("settings.vendor.msg.deleteFailed")}${ze.message}`)})}})}function Ce(){var Se,Ie,ze,Ze,gt;mn.post("/setting/vendorConfig/updateVendor",{id:(Se=k.value)==null?void 0:Se.id,inputs:(Ie=k.value)==null?void 0:Ie.inputs,inputValues:(ze=k.value)==null?void 0:ze.inputValues,models:((Ze=k.value)==null?void 0:Ze.models)??((gt=k.value)==null?void 0:gt.model)??[]}).then(()=>{window.$message.success($t("settings.vendor.msg.vendorConfigUpdated")),v()}).catch(St=>{window.$message.error(`${$t("settings.vendor.msg.updateFailed")}${St.message}`)})}function Qe(Se,Ie){const ze=Ie===1?0:1;mn.post("/setting/vendorConfig/enableVendor",{id:Se.id,enable:Ie}).then(()=>{}).catch(Ze=>{Se.enable=ze})}const ke=fe("linkAdd"),me=fe(""),_e=fe(!1);pt(ke,Se=>{Se=="codeAdd"?O.value=!0:O.value=!1});function Te(){if(_e.value)return;const Se=co.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.linkAddVendorRiskBody"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{Se.destroy();const Ie=co.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{const ze=Wh({fullscreen:!0,attach:"body",preventScrollThrough:!1}),Ze=setTimeout(()=>{ze.hide(),clearTimeout(Ze)},1e3);_e.value=!0;try{const{data:gt}=await mn.post("/setting/vendorConfig/getCodeByLink",{link:me.value});if(!gt.includes("vendor")){let St=null;gt.includes("")?St=co.alert({theme:"danger",header:"链接返回了一个网页,添加供应商需要返回TS代码,请确认链接是否正确",body:"请勿输入中转站地址,如需使用中转站请修改OpenAI标准接口的baseUrl使用中转站地址",onConfirm:({e:Pt})=>{St.hide()}}):co.alert({theme:"danger",header:"链接返回的内容不正确,添加供应商需要返回TS代码,请确认链接是否正确",onConfirm:({e:Pt})=>{St.hide()}});return}gt?(mn.post("/setting/vendorConfig/addVendor",{tsCode:gt}),window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()):(window.$message.error($t("settings.vendor.msg.linkAddFailed")),O.value=!1)}catch(gt){window.$message.error(`${$t("settings.vendor.msg.addFailed")}${gt.message}`)}finally{clearTimeout(Ze),ze.hide(),_e.value=!1,Ie.destroy()}},onClose:()=>Ie.hide()})},onClose:()=>Se.hide()})}const De=fe();async function Ye(Se){const Ie=Se.raw;if(!Ie)return window.$message.error($t("workbench.novel.import.msg.selectFile")),!1;Wh(!0);try{const ze=co.confirm({theme:"danger",header:$t("settings.vendor.msg.highRiskConfirm"),body:$t("settings.vendor.msg.importAdd"),confirmBtn:{content:$t("settings.vendor.msg.iKnowRisk"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.cancel"),onConfirm:()=>{ze.destroy();const Ze=co.confirm({theme:"danger",header:$t("settings.vendor.msg.confirmAgain"),body:$t("settings.vendor.msg.addVendorConfirmBody"),confirmBtn:{content:$t("settings.vendor.msg.confirmAndAdd"),theme:"danger"},cancelBtn:$t("settings.vendor.msg.goBackCheck"),onConfirm:async()=>{const gt=new FileReader;gt.readAsText(Ie),gt.onload=()=>{const St=gt.result;mn.post("/setting/vendorConfig/addVendor",{tsCode:St}).then(Pt=>{window.$message.success($t("settings.vendor.msg.vendorAdded")),w.value=!1,O.value=!1,v()}).catch(Pt=>{window.$message.error(`${$t("settings.vendor.msg.addFailed")}${Pt.message}`)}).finally(()=>{Ze.destroy()})}},onClose:()=>Ze.hide()})},onClose:()=>ze.hide()})}catch{window.$message.error($t("workbench.novel.import.msg.parseFailed"))}finally{Wh(!1)}return!1}const ot=fe([]);function We(){var Se;(Se=De.value)==null||Se.triggerUpload()}function et(){return Promise.resolve({response:{},status:"success"})}async function st(Se){var ze;const Ie=(ze=Se.dataTransfer)==null?void 0:ze.files;Ie&&Ie.length>0&&await Ye({raw:Ie[0]})}function Me(Se){var gt;const Ie=Se.target,ze=(gt=Ie.files)==null?void 0:gt[0];if(!ze)return;const Ze=new FileReader;Ze.onload=St=>{var Pt;y.value=((Pt=St.target)==null?void 0:Pt.result)||""},Ze.readAsText(ze),Ie.value=""}return(Se,Ie)=>{const ze=dL,Ze=Si,gt=yZe,St=T3n,Pt=Jbn,dn=Kbn,on=Xy,pn=p2,ni=Wu,Zn=wwn,Pi=bwn,rr=_n("i-plus"),Hr=_n("i-lightning"),Bo=_n("i-pencil"),lo=_n("i-delete"),Fr=Sg,is=km,yi=A2,Gt=uL,gi=pA,ri=L3n,tr=OZe,ht=py,At=U4e,Mt=pZe,Kt=gc,qn=Wc,Zt=x3n,so=Ez,Un=X4e,dt=_n("i-upload-one"),Ne=f4e("loading");return xe(),Ge("div",LTo,[ge("div",xTo,[ge("div",ETo,[c(Ze,{block:"",theme:"primary",onClick:re},{icon:Oe(()=>[c(ze,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addVendor")),1)]),_:1})]),uu((xe(),Ge("div",TTo,[Ae(g).length>0?(xe(),Ut(dn,{key:0,modelValue:Ae(f),"onUpdate:modelValue":Ie[1]||(Ie[1]=nt=>Fn(f)?f.value=nt:null),theme:"light"},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(g),(nt,bn)=>(xe(),Ut(Pt,{key:bn,value:nt.id,onClick:hn=>f.value=nt.id,style:{position:"relative"}},_Y({default:Oe(()=>[ge("span",null,Pe(nt.name),1),c(St,{modelValue:nt.enable,"onUpdate:modelValue":hn=>nt.enable=hn,customValue:[1,0],onClick:Ie[0]||(Ie[0]=Mr(()=>{},["stop"])),onChange:hn=>Qe(nt,hn),style:{position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)","z-index":"10"}},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},[j(nt.icon)?{name:"icon",fn:Oe(()=>[c(gt,{size:"24px",shape:"round",image:nt.icon},null,8,["image"])]),key:"0"}:void 0]),1032,["value","onClick"]))),128))]),_:1},8,["modelValue"])):(xe(),Ut(on,{key:1,title:Se.$t("settings.vendor.noVendor"),style:{"margin-top":"16px"}},null,8,["title"]))])),[[Ne,Ae(m)]])]),Ae(k)?(xe(),Ge("div",QTo,[ge("div",DTo,[c(yi,{data:Ae(k),labelAlign:"top"},{default:Oe(()=>[ge("div",BTo,[ge("span",RTo,"#"+Pe(Ae(k).id),1),ge("span",ITo,"@"+Pe(Ae(k).author),1)]),c(pn,null,{default:Oe(()=>[c(Ae(i3),{modelValue:Ae(k).description,"onUpdate:modelValue":Ie[2]||(Ie[2]=nt=>Ae(k).description=nt),theme:"light"},null,8,["modelValue"])]),_:1}),(xe(!0),Ge(sn,null,Bi(Ae(p),nt=>(xe(),Ut(pn,{key:nt.key,name:nt.key},_Y({label:Oe(()=>[ge("span",MTo,[Bt(Pe(nt.label)+" ",1),Ie[23]||(Ie[23]=ge("span",{class:"requiredMark"},"*",-1)),ge("span",PTo,Pe(Se.$t("settings.vendor.required")),1)])]),default:Oe(()=>[c(ni,{modelValue:Ae(k).inputValues[nt.key],"onUpdate:modelValue":bn=>Ae(k).inputValues[nt.key]=bn,type:nt.type,clearable:"",onBlur:Ce},{"prefix-icon":Oe(()=>[c(ze,{name:I(nt.type)},null,8,["name"])]),_:2},1032,["modelValue","onUpdate:modelValue","type"])]),_:2},[F(nt)?{name:"help",fn:Oe(()=>[ge("span",FTo,Pe(F(nt)),1)]),key:"0"}:void 0]),1032,["name"]))),128)),Ae(b).length>0?(xe(),Ge("div",NTo,[c(Pi,null,{default:Oe(()=>[c(Zn,{value:"optional-inputs",header:Se.$t("settings.vendor.optionalSection")},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(b),nt=>(xe(),Ut(pn,{key:nt.key,name:nt.key,label:nt.label},_Y({default:Oe(()=>[c(ni,{modelValue:Ae(k).inputValues[nt.key],"onUpdate:modelValue":bn=>Ae(k).inputValues[nt.key]=bn,type:nt.type,clearable:"",onBlur:Ce},{"prefix-icon":Oe(()=>[c(ze,{name:I(nt.type)},null,8,["name"])]),_:2},1032,["modelValue","onUpdate:modelValue","type"])]),_:2},[F(nt)?{name:"help",fn:Oe(()=>[ge("span",UTo,Pe(F(nt)),1)]),key:"0"}:void 0]),1032,["name","label"]))),128))]),_:1},8,["header"])]),_:1})])):nn("",!0),ge("div",jTo,[ge("h4",WTo,Pe(Se.$t("settings.vendor.modelSettings")),1),c(Ze,{variant:"outline",size:"small",onClick:z},{icon:Oe(()=>[c(rr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addManually")),1)]),_:1})]),(xe(!0),Ge(sn,null,Bi(Ae(A),(nt,bn)=>(xe(),Ut(is,{key:bn,class:"modelCard"},{default:Oe(()=>[ge("div",VTo,[ge("span",zTo,Pe(nt.name),1),ge("div",HTo,[c(Ze,{size:"small",variant:"text",loading:!!Ae(R)[nt.modelName],onClick:hn=>te(nt)},{icon:Oe(()=>[c(Hr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.test")),1)]),_:1},8,["loading","onClick"]),c(Ze,{variant:"text",size:"small",onClick:hn=>ie(nt)},{icon:Oe(()=>[c(Bo,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.edit")),1)]),_:1},8,["onClick"]),c(Ze,{variant:"text",size:"small",theme:"danger",onClick:hn=>Z(nt.modelName)},{icon:Oe(()=>[c(lo,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.delete")),1)]),_:1},8,["onClick"])])]),ge("div",$To,[c(Fr,{theme:"primary"},{default:Oe(()=>[Bt(Pe(Se.$t(r(nt.type))),1)]),_:2},1024),(xe(!0),Ge(sn,null,Bi(nt.mode,(hn,En)=>(xe(),Ge(sn,{key:En},[Array.isArray(hn)?(xe(!0),Ge(sn,{key:1},Bi(hn,(wi,Ue)=>(xe(),Ut(Fr,{variant:"light",key:Ue},{default:Oe(()=>[Bt(Pe(Se.$t(o(wi,nt.type))),1)]),_:2},1024))),128)):(xe(),Ut(Fr,{key:0,variant:"light"},{default:Oe(()=>[Bt(Pe(Se.$t(o(hn,nt.type))),1)]),_:2},1024))],64))),128))])]),_:2},1024))),128))]),_:1},8,["data"]),ge("div",XTo,[c(Ze,{theme:"danger",loading:Ae(_),onClick:pe},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.deleteVendor")),1)]),_:1},8,["loading"]),c(Ze,{theme:"default",loading:Ae(_),onClick:he},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.editCode")),1)]),_:1},8,["loading"])])])])):nn("",!0),c(Kt,{placement:"center",width:"40vw",visible:Ae(oe),"onUpdate:visible":Ie[12]||(Ie[12]=nt=>Fn(oe)?oe.value=nt:null),header:Ae(se)===null?Se.$t("settings.vendor.addModel"):Se.$t("settings.vendor.editModel"),maskClosable:!1,onConfirm:Y},{default:Oe(()=>[ge("div",GTo,[c(yi,{data:Ae(le),labelAlign:"top"},{default:Oe(()=>[c(pn,{name:"name",label:Se.$t("settings.vendor.displayName")},{default:Oe(()=>[c(ni,{modelValue:Ae(le).name,"onUpdate:modelValue":Ie[3]||(Ie[3]=nt=>Ae(le).name=nt),placeholder:Se.$t("settings.vendor.displayNamePlaceholder"),clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(pn,{name:"modelName",label:Se.$t("settings.vendor.modelId")},{default:Oe(()=>[c(ni,{modelValue:Ae(le).modelName,"onUpdate:modelValue":Ie[4]||(Ie[4]=nt=>Ae(le).modelName=nt),placeholder:Se.$t("settings.vendor.modelIdPlaceholder"),clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(pn,{name:"type",label:Se.$t("settings.vendor.modelType")},{default:Oe(()=>[c(gi,{modelValue:Ae(le).type,"onUpdate:modelValue":Ie[5]||(Ie[5]=nt=>Ae(le).type=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(a,nt=>c(Gt,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),Ae(le).type!=="text"?(xe(),Ut(pn,{key:0,name:"associationSkills",label:Se.$t("settings.vendor.associationSkills")},{default:Oe(()=>[c(Fr,null,{default:Oe(()=>[Bt(Pe(Ae(le).associationSkills),1)]),_:1})]),_:1},8,["label"])):nn("",!0),Ae(le).type==="text"?(xe(),Ut(pn,{key:1,name:"think",label:Se.$t("settings.vendor.think")},{default:Oe(()=>[c(tr,{modelValue:Ae(le).think,"onUpdate:modelValue":Ie[6]||(Ie[6]=nt=>Ae(le).think=nt)},{default:Oe(()=>[c(ri,{value:!0},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.supported")),1)]),_:1}),c(ri,{value:!1},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.notSupported")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(le).type==="image"?(xe(),Ut(pn,{key:2,name:"mode",label:Se.$t("settings.vendor.imageMode")},{default:Oe(()=>[c(At,{modelValue:Ae(le).mode,"onUpdate:modelValue":Ie[7]||(Ie[7]=nt=>Ae(le).mode=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(l,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(le).type==="video"?(xe(),Ge(sn,{key:3},[c(pn,{name:"mode",label:Se.$t("settings.vendor.videoMode")},{default:Oe(()=>[ge("div",YTo,[c(At,{modelValue:Ae(le).mode,"onUpdate:modelValue":Ie[8]||(Ie[8]=nt=>Ae(le).mode=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(d,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"]),ge("div",ZTo,[c(At,{modelValue:Ae(le).mixedMode,"onUpdate:modelValue":Ie[9]||(Ie[9]=nt=>Ae(le).mixedMode=nt),style:{display:"flex","flex-direction":"row",gap:"8px"}},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(u,nt=>c(ht,{key:nt.value,value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])])]),_:1},8,["label"]),c(pn,{name:"audio",label:Se.$t("settings.vendor.audioOutput")},{default:Oe(()=>[c(tr,{modelValue:Ae(le).audio,"onUpdate:modelValue":Ie[10]||(Ie[10]=nt=>Ae(le).audio=nt)},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(h,nt=>c(ri,{key:String(nt.value),value:nt.value},{default:Oe(()=>[Bt(Pe(Se.$t(nt.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),c(pn,{name:"durationResolutionMap",label:Se.$t("settings.vendor.durationResolution")},{default:Oe(()=>[ge("div",qTo,[ge("div",KTo,[Ie[24]||(Ie[24]=ge("div",{class:"drmHeaderIndex"},null,-1)),ge("div",JTo,Pe(Se.$t("settings.vendor.durationSec")),1),Ie[25]||(Ie[25]=ge("div",{class:"drmHeaderArrow"},null,-1)),ge("div",eQo,Pe(Se.$t("settings.vendor.resolution")),1),Ie[26]||(Ie[26]=ge("div",{class:"drmHeaderAction"},null,-1))]),(xe(!0),Ge(sn,null,Bi(Ae(le).durationResolutionMap,(nt,bn)=>(xe(),Ge("div",{key:bn,class:"drmRow"},[ge("div",tQo,Pe(bn+1),1),c(Mt,{modelValue:nt.duration,"onUpdate:modelValue":hn=>nt.duration=hn,placeholder:Se.$t("settings.vendor.enterAndPress"),class:"drmInput"},null,8,["modelValue","onUpdate:modelValue","placeholder"]),Ie[27]||(Ie[27]=ge("div",{class:"drmArrow"},"→",-1)),c(Mt,{modelValue:nt.resolution,"onUpdate:modelValue":hn=>nt.resolution=hn,placeholder:Se.$t("settings.vendor.enterAndPress"),class:"drmInput"},null,8,["modelValue","onUpdate:modelValue","placeholder"]),c(Ze,{variant:"text",theme:"danger",size:"small",disabled:Ae(le).durationResolutionMap.length===1,onClick:hn=>Ae(le).durationResolutionMap.splice(bn,1)},{icon:Oe(()=>[c(lo,{theme:"outline"})]),_:1},8,["disabled","onClick"])]))),128)),c(Ze,{style:{"margin-top":"16px"},variant:"dashed",block:"",onClick:Ie[11]||(Ie[11]=nt=>Ae(le).durationResolutionMap.push({duration:[],resolution:[]}))},{icon:Oe(()=>[c(rr,{theme:"outline"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.addDurationResolution")),1)]),_:1})])]),_:1},8,["label"])],64)):nn("",!0)]),_:1},8,["data"])])]),_:1},8,["visible","header"]),c(Kt,{width:"50vw",placement:"center",visible:Ae(P),"onUpdate:visible":Ie[13]||(Ie[13]=nt=>Fn(P)?P.value=nt:null),header:Se.$t("settings.vendor.testResult")+" - "+Ae(B),footer:!1},{default:Oe(()=>[ge("div",nQo,[Ae(M)==="image"?(xe(),Ge("div",iQo,[ge("img",{src:Ae(Q),alt:"generated image"},null,8,rQo)])):Ae(M)==="video"?(xe(),Ge("div",oQo,[ge("video",{src:Ae(Q),controls:"",autoplay:"",loop:""},null,8,sQo)])):(xe(),Ge("div",aQo,[c(qn,{size:"large",text:Se.$t("settings.vendor.generating")},null,8,["text"])]))])]),_:1},8,["visible","header"]),c(Kt,{width:"30vw",placement:"center",top:"10vh",footer:!1,visible:Ae(w),"onUpdate:visible":Ie[18]||(Ie[18]=nt=>Fn(w)?w.value=nt:null),header:Se.$t("settings.vendor.addVendorDialog"),maskClosable:!1},{default:Oe(()=>[ge("div",lQo,[c(tr,{variant:"default-filled",modelValue:Ae(ke),"onUpdate:modelValue":Ie[14]||(Ie[14]=nt=>Fn(ke)?ke.value=nt:null)},{default:Oe(()=>[c(Zt,{value:"linkAdd"},{default:Oe(()=>[...Ie[28]||(Ie[28]=[Bt("通过链接添加",-1)])]),_:1}),c(Zt,{value:"importAdd"},{default:Oe(()=>[...Ie[29]||(Ie[29]=[Bt("通过文件导入",-1)])]),_:1}),c(Zt,{value:"codeAdd"},{default:Oe(()=>[...Ie[30]||(Ie[30]=[Bt("通过代码添加",-1)])]),_:1})]),_:1},8,["modelValue"]),Ae(ke)=="linkAdd"?(xe(),Ge("div",cQo,[c(so,{theme:"warning",style:{"margin-bottom":"20px"}},{default:Oe(()=>[...Ie[31]||(Ie[31]=[Bt(" 请勿输入不可靠的地址!点击“确定”后,Toonflow 将自动从该地址拉取代码并添加为供应商。如果地址存在安全隐患,可能导致引入存在风险的供应商代码。建议仅输入来自可信来源的地址。 ",-1)])]),_:1}),c(ni,{modelValue:Ae(me),"onUpdate:modelValue":Ie[15]||(Ie[15]=nt=>Fn(me)?me.value=nt:null),placeholder:Se.$t("settings.vendor.linkAddPlaceholder")},null,8,["modelValue","placeholder"]),ge("div",dQo,[c(Ze,{loading:Ae(_e),disabled:!Ae(me).trim(),onClick:Te},{default:Oe(()=>[Bt(Pe(Se.$t("settings.vendor.linkAdd")),1)]),_:1},8,["loading","disabled"])])])):nn("",!0),Ae(ke)=="importAdd"?(xe(),Ge("div",uQo,[ge("div",{class:"uploadArea",onClick:We,onDragover:Ie[17]||(Ie[17]=Mr(()=>{},["prevent"])),onDrop:Mr(st,["prevent"])},[c(Un,{ref_key:"uploadRef",ref:De,modelValue:Ae(ot),"onUpdate:modelValue":Ie[16]||(Ie[16]=nt=>Fn(ot)?ot.value=nt:null),theme:"file",multiple:!1,max:1,accept:".ts","before-upload":Ye,"request-method":et,style:{display:"none"}},null,8,["modelValue"]),ge("div",hQo,[c(dt,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",fQo,Pe(Se.$t("workbench.novel.import.importAdd")),1),ge("p",gQo,Pe(Se.$t("workbench.novel.import.limit")),1)],32)])):nn("",!0),Ae(ke)=="codeAdd"?(xe(),Ge("div",mQo)):nn("",!0)])]),_:1},8,["visible","header"]),c(Kt,{width:"70vw",placement:"center",top:"10vh",visible:Ae(O),"onUpdate:visible":Ie[22]||(Ie[22]=nt=>Fn(O)?O.value=nt:null),header:Se.$t("settings.vendor.code"),maskClosable:!1,onConfirm:J},{default:Oe(()=>[ge("div",kQo,[ge("div",vQo,[c(ze,{name:"info-circle",size:"16px"}),ge("span",null,Pe(Se.$t("settings.vendor.codeEditorInfo")),1)]),ge("div",AQo,[c(Ze,{variant:"text",size:"small",onClick:Ie[19]||(Ie[19]=nt=>y.value=Ae(b5e))},{icon:Oe(()=>[c(ze,{name:"rollback"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.reset")),1)]),_:1}),c(Ze,{variant:"outline",size:"small",onClick:Ie[20]||(Ie[20]=nt=>{var bn;return(bn=Ae(C))==null?void 0:bn.click()})},{icon:Oe(()=>[c(ze,{name:"upload"})]),default:Oe(()=>[Bt(" "+Pe(Se.$t("settings.vendor.importFile")),1)]),_:1}),ge("input",{ref_key:"fileInputRef",ref:C,type:"file",accept:".ts,.js,.txt,.json",style:{display:"none"},onChange:Me},null,544)])]),ge("div",pQo,[c(Ae(STo),{value:Ae(y),"onUpdate:value":Ie[21]||(Ie[21]=nt=>Fn(y)?y.value=nt:null),language:"typescript",theme:"vs-dark",height:600,options:s},null,8,["value"])])]),_:1},8,["visible","header"])])}}}),OQo=oo(wQo,[["__scopeId","data-v-49f0cb9a"]]),yQo={class:"memoryConfig"},CQo={class:"actionRow f frr"},_Qo=Je({__name:"memoryConfig",setup(e){const t=fe({messagesPerSummary:3,shortTermLimit:5,summaryMaxLength:500,summaryLimit:10,ragLimit:3,deepRetrieveSummaryLimit:5,modelOnnxFile:["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:"fp16"}),n=["fp16","auto","fp32","q8","int8","uint8","q4","bnb4","q4f16"],r=fe(!1),o=fe(!1),s=fe(!1);async function a(){r.value=!0;try{const{data:h}=await mn.get("/setting/memoryConfig/getMemory");t.value={messagesPerSummary:h.messagesPerSummary??3,shortTermLimit:h.shortTermLimit??5,summaryMaxLength:h.summaryMaxLength??500,summaryLimit:h.summaryLimit??10,ragLimit:h.ragLimit??3,deepRetrieveSummaryLimit:h.deepRetrieveSummaryLimit??5,modelOnnxFile:h.modelOnnxFile??["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:h.modelDtype??"fp16"}}catch(h){window.$message.warning(h==null?void 0:h.message)}finally{r.value=!1}}async function l(){o.value=!0;try{await mn.post("/setting/memoryConfig/sureMemory",{...t.value}),window.$message.success($t("settings.memory.msg.saved"))}catch(h){window.$message.warning(h==null?void 0:h.message)}finally{o.value=!1}}async function d(){const h=co.confirm({header:$t("settings.memory.msg.clearConfirmTitle"),body:$t("settings.memory.msg.clearConfirmBody"),confirmBtn:$t("settings.memory.msg.confirmClear"),cancelBtn:$t("settings.memory.msg.cancel"),onConfirm:async()=>{s.value=!0;try{await mn.post("/setting/memoryConfig/delAllMemory"),window.$message.success($t("settings.memory.msg.cleared")),h.hide()}catch(g){window.$message.error((g==null?void 0:g.msg)||$t("settings.memory.msg.clearFailed"))}finally{s.value=!1}}})}function u(){t.value={messagesPerSummary:3,shortTermLimit:5,summaryMaxLength:500,summaryLimit:10,ragLimit:3,deepRetrieveSummaryLimit:5,modelOnnxFile:["all-MiniLM-L6-v2","onnx","model_fp16.onnx"],modelDtype:"fp16"},l()}return An(()=>{a()}),(h,g)=>{const m=Ez,v=pZe,f=p2,k=uL,A=pA,p=km,b=Lz,w=Si,O=A2;return xe(),Ge("div",yQo,[c(m,{theme:"warning",class:"topAlert",message:h.$t("settings.memory.warning")},null,8,["message"]),c(O,{data:t.value,labelAlign:"top",labelWidth:"180px",class:"memoryForm",onSubmit:l},{default:Oe(()=>[c(p,{title:h.$t("settings.memory.vectorModelConfig"),bordered:!0,style:{"margin-top":"16px"}},{default:Oe(()=>[c(f,{label:h.$t("settings.memory.modelFilePath"),name:"modelOnnxFile"},{help:Oe(()=>[Bt("向量模型文件路径:/data/models/"+Pe(t.value.modelOnnxFile?t.value.modelOnnxFile.join("/"):""),1)]),default:Oe(()=>[c(v,{modelValue:t.value.modelOnnxFile,"onUpdate:modelValue":g[0]||(g[0]=y=>t.value.modelOnnxFile=y),clearable:""},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.quantizationType"),name:"modelDtype"},{help:Oe(()=>[...g[8]||(g[8]=[])]),default:Oe(()=>[c(A,{modelValue:t.value.modelDtype,"onUpdate:modelValue":g[1]||(g[1]=y=>t.value.modelDtype=y),placeholder:h.$t("settings.memory.quantizationPlaceholder")},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(n,y=>c(k,{key:y,value:y,label:y},null,8,["value","label"])),64))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["title"]),c(p,{title:h.$t("settings.memory.memoryParams"),bordered:!0,style:{"margin-top":"16px"}},{default:Oe(()=>[c(f,{label:h.$t("settings.memory.messagesPerSummary"),name:"messagesPerSummary"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.messagesPerSummaryHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.messagesPerSummary,"onUpdate:modelValue":g[2]||(g[2]=y=>t.value.messagesPerSummary=y),min:1,max:200,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.shortTermLimit"),name:"shortTermLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.shortTermLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.shortTermLimit,"onUpdate:modelValue":g[3]||(g[3]=y=>t.value.shortTermLimit=y),min:1,max:100,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.summaryMaxLength"),name:"summaryMaxLength"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.summaryMaxLengthHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.summaryMaxLength,"onUpdate:modelValue":g[4]||(g[4]=y=>t.value.summaryMaxLength=y),min:0,max:1e3,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.summaryLimit"),name:"summaryLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.summaryLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.summaryLimit,"onUpdate:modelValue":g[5]||(g[5]=y=>t.value.summaryLimit=y),min:0,max:100,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.ragLimit"),name:"ragLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.ragLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.ragLimit,"onUpdate:modelValue":g[6]||(g[6]=y=>t.value.ragLimit=y),min:0,max:50,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"]),c(f,{label:h.$t("settings.memory.deepRetrieveSummaryLimit"),name:"deepRetrieveSummaryLimit"},{help:Oe(()=>[Bt(Pe(h.$t("settings.memory.deepRetrieveSummaryLimitHelp")),1)]),default:Oe(()=>[c(b,{modelValue:t.value.deepRetrieveSummaryLimit,"onUpdate:modelValue":g[7]||(g[7]=y=>t.value.deepRetrieveSummaryLimit=y),min:0,max:100,step:1,allowInputOverLimit:!1},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["title"]),ge("div",CQo,[c(w,{theme:"primary",type:"submit",loading:o.value},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.saveConfig")),1)]),_:1},8,["loading"]),c(w,{theme:"danger",variant:"outline",loading:s.value,onClick:d},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.clearMemory")),1)]),_:1},8,["loading"]),c(w,{theme:"warning",variant:"outline",loading:o.value,onClick:u},{default:Oe(()=>[Bt(Pe(h.$t("settings.memory.restoreDefault")),1)]),_:1},8,["loading"])])]),_:1},8,["data"])])}}}),SQo=oo(_Qo,[["__scopeId","data-v-c59a3784"]]),LQo={class:"fileManagement"},xQo={class:"folderList"},EQo={class:"folderInfo"},TQo={class:"folderName"},QQo={class:"folderDesc"},DQo=Je({__name:"fileManagement",setup(e){const{isElectron:t}=xs(ku()),n=[{label:"settings.file.folders.data",path:"",desc:"settings.file.folders.dataDesc"},{label:"settings.file.folders.logs",path:"logs",desc:"settings.file.folders.logsDesc"},{label:"settings.file.folders.oss",path:"oss",desc:"settings.file.folders.ossDesc"},{label:"settings.file.folders.skills",path:"skills",desc:"settings.file.folders.skillsDesc"},{label:"settings.file.folders.models",path:"models",desc:"settings.file.folders.modelsDesc"},{label:"settings.file.folders.web",path:"web",desc:"settings.file.folders.webDesc"},{label:"settings.file.folders.serve",path:"serve",desc:"settings.file.folders.serveDesc"}],r=o=>{mn.post("/setting/fileManagement/openFolder",{path:o}).catch(s=>{var a;(a=window.$message)==null||a.error(s.message||$t("settings.file.openFailed"))})};return(o,s)=>{const a=Si,l=km,d=_n("i-reduce-one"),u=Xy;return xe(),Ge("div",LQo,[Ae(t)?(xe(),Ut(l,{key:0,title:o.$t("settings.file.quickOpen"),bordered:""},{default:Oe(()=>[ge("div",xQo,[(xe(),Ge(sn,null,Bi(n,h=>ge("div",{key:h.path,class:"folderItem"},[ge("div",EQo,[ge("div",TQo,Pe(o.$t(h.label)),1),ge("div",QQo,Pe(o.$t(h.desc)),1)]),c(a,{theme:"primary",variant:"outline",onClick:g=>r(h.path)},{default:Oe(()=>[Bt(Pe(o.$t("settings.file.open")),1)]),_:1},8,["onClick"])])),64))])]),_:1},8,["title"])):(xe(),Ut(u,{key:1,description:o.$t("settings.file.dockerDesc"),title:o.$t("settings.file.desktopOnly")},{image:Oe(()=>[c(d,{theme:"outline",fill:"red"})]),_:1},8,["description","title"]))])}}}),BQo=oo(DQo,[["__scopeId","data-v-b9c6a62b"]]),RQo={class:"skillManagement"},IQo={class:"sidebarPanel"},MQo={class:"treeWrap"},PQo={class:"viewPanel"},FQo={key:0,class:"viewHeader"},NQo={class:"fileName"},UQo={key:1,class:"previewWrap"},jQo=Je({__name:"skillManagement",setup(e){const t=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"],n=fe([]),r=fe(""),o=fe(""),s=fe(""),a=fe(""),l=fe(!1),d=fe(!1),u=X(()=>r.value?[r.value]:[]),h=X(()=>{let p=n.value.filter(w=>w.endsWith(".md"));if(!o.value)return p;const b=o.value.toLowerCase();return p.filter(w=>w.toLowerCase().includes(b))}),g=X(()=>{const p=new Map,b=[];for(const O of h.value){const y=O.split("/").filter(Boolean);let C=b,_="";for(let S=0;SE.value===_)||C.push({label:y[S],value:_,isFile:!0,isRoot:y.length===1});else{let E=p.get(_);E||(E={label:y[S],value:_,isFile:!1,children:[]},p.set(_,E),C.push(E)),C=E.children}}const w=O=>{O.sort((y,C)=>y.isFile!==C.isFile?y.isFile?1:-1:y.label.localeCompare(C.label)),O.forEach(y=>y.children&&w(y.children))};return w(b),b});async function m(){try{const{data:p}=await mn.post("/setting/skillManagement/getSkillList");n.value=Array.isArray(p)?p:[]}catch(p){console.error(p)}}async function v(p){try{const{data:b}=await mn.post("/setting/skillManagement/getSkillContent",{path:p});s.value=typeof b=="string"?b:(b==null?void 0:b.content)||""}catch(b){console.error(b),s.value=""}}async function f(p,b){const w=p[p.length-1],O=typeof w=="string"?w:String(w||""),y=b.node.data;!O||!(y!=null&&y.isFile)||O===r.value||(r.value=O,await v(O))}function k(){a.value=s.value,l.value=!0}async function A(){if(r.value){d.value=!0;try{await mn.post("/setting/skillManagement/saveSkillContent",{path:r.value,content:a.value}),s.value=a.value,l.value=!1}catch(p){console.error(p)}finally{d.value=!1}}}return An(()=>m()),(p,b)=>{const w=Wu,O=_n("i-folder-open"),y=_n("i-file-text"),C=A4i,_=Xy,S=Si,L=gc;return xe(),Ge("div",RQo,[ge("aside",IQo,[c(w,{modelValue:o.value,"onUpdate:modelValue":b[0]||(b[0]=E=>o.value=E),clearable:"",placeholder:p.$t("setting.skillManagement.search")},null,8,["modelValue","placeholder"]),ge("div",MQo,[g.value.length?(xe(),Ut(C,{key:0,activable:"",hover:"",line:"","expand-on-click-node":"",data:g.value,actived:u.value,onActive:f},{icon:Oe(({node:E})=>[E.data.isFile?E.data.isRoot?(xe(),Ut(y,{key:1,theme:"outline",size:"16",fill:"red"})):(xe(),Ut(y,{key:2,theme:"outline",size:"16"})):(xe(),Ut(O,{key:0,theme:"outline",size:"16"}))]),_:1},8,["data","actived"])):(xe(),Ut(_,{key:1,description:p.$t("setting.skillManagement.empty")},null,8,["description"]))])]),ge("section",PQo,[r.value?(xe(),Ge("div",FQo,[ge("span",NQo,Pe(r.value),1),c(S,{size:"small",theme:"primary",variant:"outline",onClick:k},{default:Oe(()=>[Bt(Pe(p.$t("setting.skillManagement.edit")),1)]),_:1})])):nn("",!0),r.value?(xe(),Ge("div",UQo,[c(Ae(i3),{modelValue:s.value,toolbars:[],"preview-only":"","preview-theme":"github","code-theme":"atom"},null,8,["modelValue"])])):(xe(),Ut(_,{key:2,description:p.$t("setting.skillManagement.selectOnTheLeft")},null,8,["description"]))]),c(L,{placement:"center",visible:l.value,"onUpdate:visible":b[2]||(b[2]=E=>l.value=E),header:p.$t("setting.skillManagement.edit")+` ${r.value}`,width:"80vw","confirm-btn":p.$t("common.save"),"confirm-on-enter":!1,"on-confirm":A,loading:d.value},{default:Oe(()=>[c(Ae(X4),{modelValue:a.value,"onUpdate:modelValue":b[1]||(b[1]=E=>a.value=E),toolbars:t,"preview-theme":"github","code-theme":"atom",style:{height:"72vh"}},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","loading"])])}}}),WQo=oo(jQo,[["__scopeId","data-v-0d56dd55"]]),VQo={class:"otherConfig"},zQo=Je({__name:"devConfig",setup(e){const{isElectron:t}=xs(ku()),n=fe("0");function r(){var a,l;if(t.value)try{fetch("toonflow://openDevTool")}catch{(a=window.$message)==null||a.warning("$t('settings.dev.openDevtoolFailed')")}else(l=window.$message)==null||l.warning("$t('settings.dev.notInElectron')")}async function o(){const{data:a}=await mn.get("/setting/dev/getSwitchAiDevTool");n.value=(a==null?void 0:a.switchAiDevTool)||"0"}function s(){mn.post("/setting/dev/updateSwitchAiDevTool",{switchAiDevTool:n.value})}return An(()=>{o()}),(a,l)=>{const d=Ez,u=Si,h=p2,g=T3n,m=A2;return xe(),Ge("div",VQo,[c(m,{"label-align":"top"},{default:Oe(()=>[c(d,{theme:"warning"},{default:Oe(()=>[Bt(Pe(a.$t("settings.dev.warning")),1)]),_:1}),c(h,{label:a.$t("settings.dev.devtool"),name:"showTitleBar"},{default:Oe(()=>[c(u,{theme:"primary",onClick:r},{default:Oe(()=>[Bt(Pe(a.$t("settings.dev.openDevtool")),1)]),_:1})]),_:1},8,["label"]),c(h,{label:a.$t("settings.dev.aiDevtool"),name:"showTitleBar"},{default:Oe(()=>[c(g,{modelValue:Ae(t),"onUpdate:modelValue":l[0]||(l[0]=v=>Fn(t)?t.value=v:null),onChange:o},null,8,["modelValue"])]),_:1},8,["label"]),uu(c(h,{label:a.$t("settings.dev.switchAiDevTool"),name:"showTitleBar"},{tips:Oe(()=>[ge("p",null,Pe(a.$t("settings.dev.devtoolsDoc"))+":https://ai-sdk.dev/docs/ai-sdk-core/devtools",1),ge("p",null,Pe(a.$t("settings.dev.devtoolsDesc")),1),ge("p",null,Pe(a.$t("settings.dev.devtoolsDesc2")),1)]),default:Oe(()=>[c(g,{customValue:["1","0"],modelValue:Ae(n),"onUpdate:modelValue":l[1]||(l[1]=v=>Fn(n)?n.value=v:null),onChange:s},null,8,["modelValue"])]),_:1},8,["label"]),[[h1,Ae(t)]])]),_:1})])}}}),HQo=oo(zQo,[["__scopeId","data-v-472d7447"]]),$Qo={class:"promptManage"},XQo=["onClick"],GQo={class:"data"},YQo={class:"jb"},ZQo={class:"name"},qQo={class:"type"},KQo={class:"data"},JQo={class:"show"},eDo=Je({__name:"promptManage",setup(e){An(()=>{o()});const t=["bold","italic","strikeThrough","-","unorderedList","orderedList","-","revoke","next","=","preview"],n=fe(!1),r=fe([]);function o(){mn.post("/setting/promptManage/getPrompt").then(d=>{r.value=d.data.map(u=>({id:u.id,name:u.name,type:u.type,data:u.data}))})}function s(d){a.value={...d},n.value=!0}const a=fe({id:0,name:"",type:"",data:""});async function l(){await mn.post("/setting/promptManage/updatePrompt",{id:a.value.id,data:a.value.data}),window.$message.success($t("workbench.project.dialog.prompt.saveSuccess")),o(),n.value=!1}return(d,u)=>{const h=km,g=gc;return xe(),Ge("div",$Qo,[(xe(!0),Ge(sn,null,Bi(r.value,m=>(xe(),Ge("div",{key:m.id,style:{cursor:"pointer"},onClick:v=>s(m)},[c(h,{bordered:""},{default:Oe(()=>[ge("div",GQo,[ge("div",YQo,[ge("div",ZQo,Pe(m.name),1),ge("div",qQo,Pe(m.type),1)]),ge("div",KQo,Pe(m.data),1)])]),_:2},1024)],8,XQo))),128)),ge("div",JQo,[c(g,{visible:n.value,"onUpdate:visible":u[1]||(u[1]=m=>n.value=m),header:d.$t("workbench.project.dialog.prompt.title"),width:"70%","close-on-overlay-click":!1,onConfirm:l,top:"9vh"},{default:Oe(()=>[c(Ae(X4),{modelValue:a.value.data,"onUpdate:modelValue":u[0]||(u[0]=m=>a.value.data=m),theme:"light",toolbars:t,footers:[],style:{height:"60vh"},placeholder:d.$t("workbench.project.dialog.prompt.placeholder"),onOnUploadImg:()=>{}},null,8,["modelValue","placeholder"])]),_:1},8,["visible","header"])])])}}}),tDo=oo(eDo,[["__scopeId","data-v-2bed7c85"]]),nDo={class:"settingPanel"},iDo={class:"settingRight"},rDo={class:"sectionTitle"},oDo={class:"settingContent"},sDo=Je({__name:"index",setup(e){const{showSetting:t,activeMenu:n,needUpdate:r}=xs(ku()),o=[{key:"language",label:"settings.menu.language",icon:"i-translate"},{key:"vendorConfig",label:"settings.menu.vendorConfig",icon:"i-computer"},{key:"agentConfog",label:"settings.menu.agentConfig",icon:"i-color-filter"},{key:"promptManage",label:"settings.menu.promptManage",icon:"i-tips"},{key:"skillManagement",label:"settings.menu.skillsSkillsManagement",icon:"i-ring"},{key:"memoryConfig",label:"settings.menu.memoryConfig",icon:"i-memory-card-one"},{key:"loginConfig",label:"settings.menu.loginConfig",icon:"i-lock"},{key:"dbConfig",label:"settings.menu.dbConfig",icon:"i-data"},{key:"fileManagement",label:"settings.menu.fileManagement",icon:"i-hard-disk"},{key:"otherConfig",label:"settings.menu.otherConfig",icon:"i-application-menu"},{key:"requestConfig",label:"settings.menu.requestConfig",icon:"i-api"},{key:"devConfig",label:"settings.menu.devConfig",icon:"i-flask"},{key:"about",label:"settings.menu.about",icon:"i-info"},{key:"logoutConfig",label:"settings.menu.logoutConfig",icon:"i-logout"}],s=X(()=>o.find(a=>a.key===n.value));return(a,l)=>{const d=CZe,u=Jbn,h=Kbn,g=gc;return xe(),Ut(g,{header:a.$t("settings.title"),footer:!1,placement:"center",width:"1200px",visible:Ae(t),"onUpdate:visible":l[1]||(l[1]=m=>Fn(t)?t.value=m:null)},{default:Oe(()=>[ge("div",nDo,[c(h,{class:"settingMenu",value:Ae(n),"onUpdate:value":l[0]||(l[0]=m=>Fn(n)?n.value=m:null),style:{height:"70vh"}},{default:Oe(()=>[(xe(),Ge(sn,null,Bi(o,m=>c(u,{key:m.key,value:m.key},{icon:Oe(()=>[c(d,{count:Ae(r)&&m.key==="about"?1:0,dot:""},{default:Oe(()=>[(xe(),Ut(Bd(m.icon),{class:"icon"}))]),_:2},1032,["count"])]),default:Oe(()=>[Bt(" "+Pe(a.$t(m.label)),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),ge("div",iDo,[ge("div",rDo,Pe(Ae(s)?a.$t(Ae(s).label):""),1),ge("div",oDo,[Ae(n)==="language"?(xe(),Ut(Tqr,{key:0})):nn("",!0),Ae(n)==="vendorConfig"?(xe(),Ut(OQo,{key:1})):nn("",!0),Ae(n)==="requestConfig"?(xe(),Ut(Dqr,{key:2})):nn("",!0),Ae(n)==="loginConfig"?(xe(),Ut(Bqr,{key:3})):nn("",!0),Ae(n)==="agentConfog"?(xe(),Ut(cKr,{key:4})):nn("",!0),Ae(n)==="promptManage"?(xe(),Ut(tDo,{key:5})):nn("",!0),Ae(n)==="otherConfig"?(xe(),Ut(AKr,{key:6})):nn("",!0),Ae(n)==="dbConfig"?(xe(),Ut(mKr,{key:7})):nn("",!0),Ae(n)==="about"?(xe(),Ut(fJr,{key:8})):nn("",!0),Ae(n)==="logoutConfig"?(xe(),Ut(kJr,{key:9})):nn("",!0),Ae(n)==="memoryConfig"?(xe(),Ut(SQo,{key:10})):nn("",!0),Ae(n)==="fileManagement"?(xe(),Ut(BQo,{key:11})):nn("",!0),Ae(n)==="skillManagement"?(xe(),Ut(WQo,{key:12})):nn("",!0),Ae(n)==="devConfig"?(xe(),Ut(HQo,{key:13})):nn("",!0)])])])]),_:1},8,["header","visible"])}}}),aDo=oo(sDo,[["__scopeId","data-v-ba4aaf24"]]),lDo={class:"migrateShow"},cDo={class:"taskList"},dDo={class:"item"},uDo=Je({__name:"migrateShow",setup(e){const t=fe(!1);function n(){mn.post("/migrate/migrateData").then(()=>{window.$message.success($t("components.migrateShow.msg.migrateSuccess"))}).catch(()=>{window.$message.error($t("components.migrateShow.msg.migrateFailed"))}).finally(()=>{})}return(r,o)=>{const s=Si,a=Ev,l=gc;return xe(),Ge("div",lDo,[c(l,{visible:Ae(t),"onUpdate:visible":o[1]||(o[1]=d=>Fn(t)?t.value=d:null),header:r.$t("components.migrateShow.title"),width:"500px"},{footer:Oe(()=>[c(a,null,{default:Oe(()=>[c(s,{theme:"default",onClick:o[0]||(o[0]=()=>t.value=!1)},{default:Oe(()=>[Bt(Pe(r.$t("components.migrateShow.hide")),1)]),_:1}),c(s,{theme:"primary",onClick:n},{default:Oe(()=>[Bt(Pe(r.$t("components.migrateShow.confirm")),1)]),_:1})]),_:1})]),default:Oe(()=>[ge("div",cDo,[ge("div",dDo,[ge("span",null,Pe(r.$t("components.migrateShow.desc")),1)])])]),_:1},8,["visible","header"])])}}});function wit(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function hDo(e,t){for(var n=0;n2&&arguments[2]!==void 0?arguments[2]:0,r=Math.random()*(t-e)+e;return Math.floor(r*Math.pow(10,n))/Math.pow(10,n)}function WSt(e){return e[T4(0,e.length)]}var kDo=.00125,vDo=5e-4,ADo=9e-4,pDo=1e-5,bDo=6,wDo=80,ODo=.9,yDo=1.7,CDo=.2,_Do=.6,SDo=.03,LDo=.07,gPn=15,mPn=82,VSt=150,xDo=100,EDo=250,TDo=40,QDo=["#fcf403","#62fc03","#f4fc03","#03e7fc","#03fca5","#a503fc","#fc03ad","#fc03c2"];function zSt(e){var t=1920;return Math.log(e)/Math.log(t)}var w5e=function(){function e(t){wit(this,e);var n=t.initialPosition,r=t.confettiRadius,o=t.confettiColors,s=t.emojis,a=t.emojiSize,l=t.canvasWidth,d=t.initialFlightAngle,u=t.rotationAngle,h=t.shouldHideConfettiInShiftedPosition,g=h===void 0?!1:h,m=T4(ODo,yDo,3),v=m*zSt(l);this.confettiSpeed={x:v,y:v},this.finalConfettiSpeedX=T4(CDo,_Do,3),this.rotationSpeed=s.length?.01:T4(SDo,LDo,3)*zSt(l),this.dragForceCoefficient=T4(vDo,ADo,6),this.radius={x:r,y:r},this.initialRadius=r,this.rotationAngle=u,this.emojiSize=a,this.emojiRotationAngle=T4(0,2*Math.PI),this.radiusYUpdateDirection="down",this.cos=Math.cos(d),this.sin=Math.sin(d);var f=T4(-150,0);this.positionOffset={x:f*this.sin,y:f*this.cos},this.distanceTravelled={x:0,y:0};var k={x:n.x+this.positionOffset.x,y:n.y-this.positionOffset.y};this.currentPosition=Object.assign({},k),this.initialPosition=Object.assign({},k),this.color=s.length?null:WSt(o),this.emoji=s.length?WSt(s):null,this.createdAt=new Date().getTime(),this.isVisible=!g}return Oit(e,[{key:"draw",value:function(n){var r=this.currentPosition,o=this.radius,s=this.color,a=this.emoji,l=this.rotationAngle,d=this.emojiRotationAngle,u=this.emojiSize,h=this.isVisible;if(h){var g=window.devicePixelRatio;s?(n.fillStyle=s,n.beginPath(),n.ellipse(r.x*g,r.y*g,o.x*g,o.y*g,l,0,2*Math.PI),n.fill()):a&&(n.font="".concat(u,"px serif"),n.save(),n.translate(g*r.x,g*r.y),n.rotate(d),n.textAlign="center",n.fillText(a,0,0),n.restore())}}},{key:"updatePosition",value:function(n,r){var o=this.confettiSpeed,s=this.dragForceCoefficient,a=this.finalConfettiSpeedX,l=this.radiusYUpdateDirection,d=this.rotationSpeed,u=this.createdAt;o.x>a&&(this.confettiSpeed.x-=s*n);var h=this.currentPosition.y,g=r-u;this.currentPosition.y=this.initialPosition.y-o.y*this.cos*g+kDo*Math.pow(g,2)/2;var m={x:o.x*this.sin*n,y:this.currentPosition.y-h};if(this.currentPosition.x+=m.x,this.distanceTravelled.x+=Math.abs(m.x),this.distanceTravelled.y+=Math.abs(m.y),this.distanceTravelled.x>=Math.abs(this.positionOffset.x)&&this.distanceTravelled.y>=Math.abs(this.positionOffset.y)&&(this.isVisible=!0),this.rotationSpeed-=this.emoji?1e-4:pDo*n,this.rotationSpeed<0&&(this.rotationSpeed=0),this.emoji){this.emojiRotationAngle+=this.rotationSpeed*n%(2*Math.PI);return}l==="down"?(this.radius.y-=n*d,this.radius.y<=0&&(this.radius.y=0,this.radiusYUpdateDirection="up")):(this.radius.y+=n*d,this.radius.y>=this.initialRadius&&(this.radius.y=this.initialRadius,this.radiusYUpdateDirection="down"))}},{key:"getIsVisibleOnCanvas",value:function(n){return this.currentPosition.y0&&arguments[0]!==void 0?arguments[0]:{};wit(this,e),this.activeConfettiBatches=[],this.canvas=t.canvas||DDo(),this.canvasContext=this.canvas.getContext("2d"),this.requestAnimationFrameRequested=!1,this.lastUpdated=new Date().getTime(),this.iterationIndex=0,this.loop=this.loop.bind(this),requestAnimationFrame(this.loop)}return Oit(e,[{key:"loop",value:function(){this.requestAnimationFrameRequested=!1,mDo(this.canvas);var n=new Date().getTime(),r=n-this.lastUpdated,o=this.canvas.offsetHeight,s=this.iterationIndex%10===0;this.activeConfettiBatches=this.activeConfettiBatches.filter(function(a){return a.processShapes({timeDelta:r,currentTime:n},o,s),s?!a.complete():!0}),this.iterationIndex++,this.queueAnimationFrameIfNeeded(n)}},{key:"queueAnimationFrameIfNeeded",value:function(n){this.requestAnimationFrameRequested||this.activeConfettiBatches.length<1||(this.requestAnimationFrameRequested=!0,this.lastUpdated=n||new Date().getTime(),requestAnimationFrame(this.loop))}},{key:"addConfettiAtPosition",value:function(){for(var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=HSt(n),o=r.confettiRadius,s=r.confettiNumber,a=r.confettiColors,l=r.emojis,d=r.emojiSize,u=r.confettiDispatchPosition,h=this.canvas.getBoundingClientRect(),g=h.width,m=new XSt(this.canvasContext),v=0;v0&&arguments[0]!==void 0?arguments[0]:{},r=HSt(n),o=r.confettiRadius,s=r.confettiNumber,a=r.confettiColors,l=r.emojis,d=r.emojiSize,u=this.canvas.getBoundingClientRect(),h=u.width,g=u.height,m=g*5/7,v={x:0,y:m},f={x:h,y:m},k=new XSt(this.canvasContext),A=0;A({content:k.label,value:k.value})),a=k=>{o.value=k.value,yW.value=k.value},l=q4e("helloGuideDone",!1),d=fe(!l.value),u=fe(0);function h(){n.value="vendorConfig",t.value=!0}function g(){n.value="agentConfog",t.value=!0}function m(){l.value=!0,d.value=!1}function v(){l.value=!0,d.value=!1,new PDo().addConfetti()}async function f(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://github.com/HBAI-Ltd/Toonflow-app"):window.open("https://github.com/HBAI-Ltd/Toonflow-app")}return(k,A)=>{const p=Si,b=_n("i-translate"),w=Rne,O=Yvi,y=Gvi,C=dL,_=Ez,S=h3i,L=gc;return xe(),Ut(L,{visible:Ae(d),"onUpdate:visible":A[3]||(A[3]=E=>Fn(d)?d.value=E:null),footer:!1,header:!1,width:"680px","close-on-overlay-click":!1,placement:"center"},{default:Oe(()=>[ge("div",FDo,[Ae(u)===0?(xe(),Ge("div",NDo,[A[4]||(A[4]=ge("img",{src:lbe,alt:"ToonFlow Logo",class:"welcomeLogo"},null,-1)),ge("h1",UDo,Pe(k.$t("hello.welcomeTitle")),1),ge("p",jDo,Pe(k.$t("hello.welcomeDesc")),1),c(p,{theme:"primary",size:"large",onClick:A[0]||(A[0]=E=>u.value=1)},{default:Oe(()=>[Bt(Pe(k.$t("hello.startConfig")),1)]),_:1}),c(p,{variant:"text",size:"small",style:{"margin-top":"12px"},onClick:m},{default:Oe(()=>[Bt(Pe(k.$t("hello.skip")),1)]),_:1}),ge("div",WDo,[c(w,{options:Ae(s),trigger:"click",onClick:a,maxColumnWidth:150},{default:Oe(()=>[c(p,{shape:"circle",theme:"default",size:"large"},{icon:Oe(()=>[c(b,{theme:"outline",size:"20"})]),_:1})]),_:1},8,["options"])])])):(xe(),Ge(sn,{key:1},[c(y,{current:Ae(u)-1,class:"guideSteps"},{default:Oe(()=>[c(O,{title:k.$t("hello.configModel")},null,8,["title"]),c(O,{title:k.$t("hello.configData")},null,8,["title"]),c(O,{title:k.$t("hello.startUse")},null,8,["title"])]),_:1},8,["current"]),ge("div",VDo,[Ae(u)===1?(xe(),Ge("div",zDo,[ge("div",HDo,[c(C,{name:"server",size:"48px"})]),ge("h2",$Do,Pe(k.$t("hello.configModelTitle")),1),ge("p",XDo,Pe(k.$t("hello.configModelDesc")),1),ge("div",GDo,[c(_,{theme:"info",message:k.$t("hello.configModelTip")},null,8,["message"])]),c(p,{theme:"primary",size:"large",onClick:h},{icon:Oe(()=>[c(C,{name:"setting"})]),default:Oe(()=>[Bt(" "+Pe(k.$t("hello.configModelBtn")),1)]),_:1})])):nn("",!0),Ae(u)===2?(xe(),Ge("div",YDo,[ge("div",ZDo,[c(C,{name:"relativity",size:"48px"})]),ge("h2",qDo,Pe(k.$t("hello.configAgentTitle")),1),ge("p",KDo,Pe(k.$t("hello.configAgentDesc")),1),ge("div",JDo,[c(_,{theme:"info",message:k.$t("hello.configAgentTip")},null,8,["message"])]),c(p,{theme:"primary",size:"large",onClick:g},{icon:Oe(()=>[c(C,{name:"setting"})]),default:Oe(()=>[Bt(" "+Pe(k.$t("hello.configAgentBtn")),1)]),_:1})])):nn("",!0),Ae(u)===3?(xe(),Ge("div",eBo,[ge("div",tBo,[c(C,{name:"check-circle",size:"48px",color:"var(--td-success-color)"})]),ge("h2",nBo,Pe(k.$t("hello.finishTitle")),1),ge("p",iBo,Pe(k.$t("hello.finishDesc")),1),ge("div",rBo,[ge("p",oBo,Pe(k.$t("hello.qrcodeLabel")),1),c(S,{value:"https://work.weixin.qq.com/u/vc36adcc89845edcbe?v=5.0.3.63936&bb=85b8d228e8",level:"Q",type:"svg"})]),ge("div",sBo,[ge("p",aBo,Pe(k.$t("hello.githubLabel")),1),c(p,{theme:"danger",size:"large",onClick:f},{icon:Oe(()=>[c(C,{name:"logo-github"})]),default:Oe(()=>[A[5]||(A[5]=Bt(" Star on GitHub ",-1))]),_:1})])])):nn("",!0)]),ge("div",lBo,[Ae(u)>1?(xe(),Ut(p,{key:0,variant:"outline",onClick:A[1]||(A[1]=E=>u.value--)},{default:Oe(()=>[Bt(Pe(k.$t("hello.prevStep")),1)]),_:1})):nn("",!0),ge("div",cBo,[Ae(u)<3?(xe(),Ut(p,{key:0,variant:"text",onClick:m},{default:Oe(()=>[Bt(Pe(k.$t("hello.skip")),1)]),_:1})):nn("",!0),Ae(u)<3?(xe(),Ut(p,{key:1,theme:"primary",onClick:A[2]||(A[2]=E=>u.value++)},{default:Oe(()=>[Bt(Pe(k.$t("hello.nextStep")),1)]),_:1})):nn("",!0),Ae(u)===3?(xe(),Ut(p,{key:2,theme:"primary",onClick:v},{default:Oe(()=>[Bt(Pe(k.$t("hello.finish")),1)]),_:1})):nn("",!0)])])],64))])]),_:1},8,["visible"])}}}),uBo=oo(dBo,[["__scopeId","data-v-da3a500c"]]),ph=Wy("project",()=>({allProject:fe([]),project:fe(null)}),{persist:!0}),hBo={class:"menu fc jb"},fBo={class:"itemBox fc ac"},gBo=["onClick"],mBo={key:1,class:"divider"},kBo={class:"footItem fc ac"},vBo={class:"view"},ABo={key:0,class:"topMenu f ac jb"},pBo={class:"title"},bBo={class:"rightBtnList f ac"},wBo=["onClick"],OBo={key:1,class:"divider"},yBo={class:"viewBox"},CBo=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{showSetting:n,isElectron:r,needUpdate:o}=xs(ku()),s=fe([{type:"btn",path:"/project",labelKey:"workbench.menu.myProject",icon:"i-folder-close"},{type:"btn",path:"/task",labelKey:"workbench.menu.taskCenter",icon:"i-view-list"}]),a=fe([{type:"btn",path:"/novel",labelKey:"workbench.menu.novel",icon:"i-notebook",nodelOnly:!0},{type:"btn",path:"/scriptAgent",labelKey:"workbench.menu.scriptAgent",icon:"i-color-filter",nodelOnly:!0},{type:"btn",path:"/script",labelKey:"workbench.menu.scriptManage",icon:"i-document-folder"},{type:"btn",path:"/cornerScape",labelKey:"workbench.menu.cornerScape",icon:"i-peoples-two"},{type:"btn",path:"/production",labelKey:"workbench.menu.production",icon:"i-carousel-video"},{type:"divider"},{type:"btn",path:"/assets",labelKey:"workbench.menu.assetCenter",icon:"i-receive"}]),l=_pe(),d=mNi(),u=fe(d.path);pt(()=>d.path,p=>{u.value=p});function h(p){p.needProject&&!t.value||(l.push(p.path),u.value=p.path)}async function g(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://github.com/HBAI-Ltd/Toonflow-app"):window.open("https://github.com/HBAI-Ltd/Toonflow-app")}async function m(){r.value?await fetch("toonflow://openurlwithbrowser?url=https://docs.qq.com/smartsheet/form/EmvmQBrmlPmr%2Fss_vsqk2v%2FvhiGzE?tab=ss_vsqk2v"):window.open("https://docs.qq.com/smartsheet/form/EmvmQBrmlPmr%2Fss_vsqk2v%2FvhiGzE?tab=ss_vsqk2v")}async function v(){const{data:p}=await mn.post("/setting/about/checkUpdate",{source:"toonflow"});if(p.needUpdate){o.value=!0;const{activeMenu:b}=xs(ku()),w=NB.success({title:$t("version.newVersion"),content:()=>xn("div",{style:"text-align: right; padding-top: 4px;"},xn("span",{style:"color: #ed7b2f; font-size: 12px; cursor: pointer;",onClick:()=>{b.value="about",n.value=!0,NB.close(w)}},$t("skillScan.openSettings"))),closeBtn:!0,placement:"bottom-right"})}else o.value=!1}let f=null;function k(){v(),f=setInterval(()=>{v()},2*60*1e3)}function A(){f&&(clearInterval(f),f=null)}return pt(o,p=>{p&&A()}),An(()=>{k()}),Qa(()=>{A()}),(p,b)=>{var L,E;const w=el,O=_n("i-bill"),y=_n("i-setting-one"),C=CZe,_=_n("i-github-one"),S=_n("router-view");return xe(),Ge(sn,null,[ge("div",{class:"main",style:no({height:Ae(r)?"calc(100vh - 32px)":"100vh"})},[ge("div",hBo,[b[1]||(b[1]=ge("div",{class:"logoBox c"},[ge("img",{class:"logo",src:lbe})],-1)),ge("div",fBo,[(xe(!0),Ge(sn,null,Bi(Ae(s),(T,D)=>(xe(),Ut(w,{content:T.labelKey?p.$t(T.labelKey):"",placement:"right",theme:"light",destroyOnClose:"",showArrow:!1,key:D},{default:Oe(()=>[T.type==="btn"?(xe(),Ge("div",{key:0,class:Eo(["item fc c",{active:Ae(u)==T.path}]),onClick:P=>h(T)},[(xe(),Ut(Bd(T.icon),{class:"icon"}))],10,gBo)):nn("",!0),T.type==="divider"?(xe(),Ge("div",mBo)):nn("",!0)]),_:2},1032,["content"]))),128))]),ge("div",kBo,[c(w,{content:p.$t("workbench.menu.feedbackQuestions"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:m},[c(O,{class:"icon"})])]),_:1},8,["content"]),c(w,{content:p.$t("workbench.menu.settings"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:b[0]||(b[0]=T=>n.value=!0)},[c(C,{count:Ae(o)?1:0,dot:""},{default:Oe(()=>[c(y,{class:"icon"})]),_:1},8,["count"])])]),_:1},8,["content"]),c(w,{content:p.$t("workbench.menu.jumpGithub"),placement:"right",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:"item c",onClick:g},[c(_,{size:"24"})])]),_:1},8,["content"])])]),ge("div",vBo,[(L=Ae(t))!=null&&L.id?(xe(),Ge("div",ABo,[ge("div",pBo,[ge("h2",null,Pe(((E=Ae(t))==null?void 0:E.name)||p.$t("workbench.selectProject")),1)]),ge("div",bBo,[(xe(!0),Ge(sn,null,Bi(Ae(a),(T,D)=>(xe(),Ut(w,{content:T.labelKey?p.$t(T.labelKey):"",placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1,key:D},{default:Oe(()=>[T.type==="btn"&&(Ae(t).projectType==="novel"||!T.nodelOnly)?(xe(),Ge("div",{key:0,class:Eo(["item fc c",{active:Ae(u)==T.path}]),onClick:P=>h(T)},[(xe(),Ut(Bd(T.icon),{class:"icon"}))],10,wBo)):nn("",!0),T.type==="divider"?(xe(),Ge("div",OBo)):nn("",!0)]),_:2},1032,["content"]))),128))])])):nn("",!0),ge("div",yBo,[c(S,null,{default:Oe(({Component:T})=>[(xe(),Ut(Bd(T),{key:p.$route.fullPath}))]),_:1})])])],4),c(uBo),c(aDo),c(uDo)],64)}}}),_Bo=oo(CBo,[["__scopeId","data-v-99f1fe92"]]),SBo=Object.freeze(Object.defineProperty({__proto__:null,default:_Bo},Symbol.toStringTag,{value:"Module"})),LBo={class:"addProject"},xBo={class:"formColumns"},EBo={class:"formLeft"},TBo={class:"ac",style:{gap:"5px",width:"100%"}},QBo={class:"ac",style:{gap:"5px",width:"100%"}},DBo={class:"formRight"},BBo={class:"artStylePicker"},RBo={class:"artStyleHeader"},IBo={class:"artStyleContent"},MBo={class:"gridContainer"},PBo=["onClick"],FBo={class:"imageWrapper"},NBo=["src","alt"],UBo={class:"text"},jBo=["onClick"],WBo=["onClick"],VBo={class:"directorManual"},zBo={class:"directorManualHeader"},HBo={class:"artStyleContent"},$Bo={class:"gridContainer"},XBo=["onClick"],GBo={class:"imageWrapper"},YBo=["src","alt"],ZBo={class:"text"},qBo=["onClick"],KBo=["onClick"],JBo={class:"nameAndCoverRow"},eRo={class:"nameField"},tRo={class:"fieldLabel"},nRo={class:"mdFileLocation"},iRo={class:"fieldLabel"},rRo={class:"coverField"},oRo={class:"fieldLabel"},sRo={class:"coverUploadArea multiCoverUploadArea"},aRo=["src"],lRo=["onClick"],cRo={class:"promptEditorWrapper"},dRo={class:"promptEditorHeader"},uRo={class:"aiExtractInline"},hRo={class:"nameAndCoverRow"},fRo={class:"nameField"},gRo={class:"fieldLabel"},mRo={class:"mdFileLocation"},kRo={class:"fieldLabel"},vRo={class:"coverField"},ARo={class:"fieldLabel"},pRo={class:"coverUploadArea multiCoverUploadArea"},bRo=["src"],wRo=["onClick"],ORo={class:"promptEditorWrapper"},yRo={class:"promptEditorHeader"},CRo={class:"aiExtractInline"},_Ro=Je({__name:"projectDialog",props:Fc({projectData:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:Fc(["add","edit"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t,s=()=>[{label:"README",value:"README",data:""},{label:"前缀",value:"prefix",data:""},{label:"角色",value:"art_character",data:""},{label:"角色衍生",value:"art_character_derivative",data:""},{label:"道具",value:"art_prop",data:""},{label:"道具衍生",value:"art_prop_derivative",data:""},{label:"场景",value:"art_scene",data:""},{label:"场景衍生",value:"art_scene_derivative",data:""},{label:"分镜",value:"director_storyboard",data:""},{label:"分镜视频",value:"art_storyboard_video",data:""},{label:"技法-导演规划",value:"director_planning_style",data:""},{label:"技法-分镜表设计",value:"director_storyboard_table_style",data:""}],a=X(()=>!!r.projectData),l=[{value:"16:9",label:"16:9"},{value:"9:16",label:"9:16"}],d=()=>({id:0,projectType:"novel",name:"",intro:"",type:"",artStyle:"",era:"",videoRatio:"16:9",createTime:0,userId:0,imageModel:"",videoModel:"",imageQuality:"",mode:"",directorManual:""}),u=fe(d());function h(){u.value=d()}function g(){n.value=!1,h()}function m(){if(!u.value.name)return window.$message.warning($t("workbench.project.msg.enterProjectName"));if(!u.value.type)return window.$message.warning($t("workbench.project.msg.enterProjectType"));if(!u.value.imageModel)return window.$message.warning($t("workbench.project.msg.enterImageModel"));if(!u.value.videoModel)return window.$message.warning($t("workbench.project.msg.enterVideoModel"));if(!u.value.artStyle)return window.$message.warning($t("workbench.project.msg.enterArtStyle"));if(!u.value.directorManual)return window.$message.warning($t("workbench.project.msg.directorManual"));if(!u.value.videoRatio)return window.$message.warning($t("workbench.project.msg.enterVideoRatio"));if(!u.value.intro)return window.$message.warning($t("workbench.project.msg.enterProjectIntro"));if(!u.value.imageQuality)return window.$message.warning($t("workbench.project.msg.enterProjectQuality"));if(!u.value.mode)return window.$message.warning($t("workbench.project.msg.selectMode"));a.value?o("edit",{id:u.value.id,name:u.value.name,intro:u.value.intro,type:u.value.type,artStyle:u.value.artStyle,videoRatio:u.value.videoRatio,imageModel:u.value.imageModel,videoModel:u.value.videoModel,projectType:u.value.projectType||"novel",directorManual:u.value.directorManual,imageQuality:u.value.imageQuality,mode:u.value.mode}):o("add",{projectType:u.value.projectType||"novel",name:u.value.name,intro:u.value.intro,type:u.value.type,artStyle:u.value.artStyle,videoRatio:u.value.videoRatio||"16:9",imageModel:u.value.imageModel,videoModel:u.value.videoModel,imageQuality:u.value.imageQuality,directorManual:u.value.directorManual,mode:u.value.mode}),h(),n.value=!1}const v=["bold","italic","strikeThrough","-","unorderedList","orderedList","-","revoke","next","=","preview"];pt(n,async Y=>{if(Y){if(r.projectData){if(u.value={...d(),id:r.projectData.id,name:r.projectData.name||"",intro:r.projectData.intro||"",type:r.projectData.type||"",artStyle:r.projectData.artStyle||"",videoRatio:r.projectData.videoRatio||"16:9",imageModel:r.projectData.imageModel||"",videoModel:r.projectData.videoModel||"",imageQuality:r.projectData.imageQuality||"",projectType:r.projectData.projectType||"novel",mode:r.projectData.mode||"text",directorManual:r.projectData.directorManual||""},r.projectData.videoModel)try{const{data:ie}=await mn.post("/modelSelect/getModelDetail",{modelId:r.projectData.videoModel});ie!=null&&ie.mode&&(M.value=ie.mode.map(te=>({label:R(te),value:I(te)})))}catch{}}else h();C(),oe()}});const f=fe([]),k=fe(!1),A=fe(!1),p=fe(null),b=fe({name:"",images:[],stylePath:""}),w=fe(),O=fe("README"),y=fe(s());function C(){k.value=!0,mn.post("/project/getVisualManual").then(({data:Y})=>{f.value=Y.map(ie=>({id:ie.id,name:ie.name,stylePath:ie.stylePath,images:ie.images??(Array.isArray(ie.image)?ie.image:ie.image?[ie.image]:[]),data:ie.data}))}).finally(()=>{k.value=!1})}function _(Y){if(p.value=Y??null,Y){b.value.name=Y.name,b.value.stylePath=Y.stylePath,b.value.images=Y.images?[...Y.images]:[];const ie=Array.isArray(Y.data)?Y.data:[];y.value=s().map(te=>{const Z=ie.find(he=>he.value===te.value);return Z?{...te,data:Z.data}:{...te}})}else b.value={name:"",images:[],stylePath:""},y.value=s();O.value="README",A.value=!0}function S(){A.value=!1,p.value=null,b.value={name:"",images:[],stylePath:""},y.value=s(),O.value="README"}function L(){var Y;(Y=w.value)==null||Y.click()}function E(Y){const ie=Y.target.files;!ie||ie.length===0||(Array.from(ie).forEach(te=>{const Z=new FileReader;Z.onload=()=>{b.value.images.push(Z.result)},Z.readAsDataURL(te)}),Y.target.value="")}function T(Y){b.value.images.splice(Y,1)}const D=fe(!1);async function P(){if(!b.value.name.trim()){window.$message.warning($t("workbench.project.msg.enterVisualManualName"));return}if(!b.value.images.length){window.$message.warning($t("workbench.project.msg.enterVisualManualImage"));return}const Y=y.value.find(ie=>!ie.data.trim());if(Y)return window.$message.warning(`「${Y.label}」${$t("workbench.project.msg.enterVisualManualTabData")}`);try{D.value=!0,p.value?await mn.post("/project/editVisualManual",{name:b.value.name,images:b.value.images,data:y.value,stylePath:b.value.stylePath}):await mn.post("/project/addVisualManual",{name:b.value.name,images:b.value.images,data:y.value,stylePath:b.value.stylePath}),D.value=!1,p.value?window.$message.success($t("workbench.project.msg.visualManualUpdated")):window.$message.success($t("workbench.project.msg.visualManualAdded")),S(),C()}catch(ie){D.value=!1,window.$message.error(ie.message??$t("workbench.project.msg.operationFailed"))}}function Q(Y){const ie=co.confirm({header:$t("workbench.project.msg.deleteVisualManualHeader"),body:$t("workbench.project.msg.deleteVisualManualBody",{name:Y.stylePath}),confirmBtn:$t("workbench.project.msg.deleteVisualManualConfirm"),cancelBtn:$t("workbench.project.msg.deleteVisualManualCancel"),onConfirm:()=>{mn.post("/project/deleteVisualManual",{name:Y.stylePath}).then(()=>{C(),S(),window.$message.success($t("workbench.project.msg.visualManualDeleted"))}).catch(te=>{window.$message.error(te.message??$t("workbench.project.msg.operationFailed"))}).finally(()=>{C(),ie.destroy()})}})}const M=fe([]),B={singleImage:$t("workbench.production.generate.modeSingleImage"),multiImage:$t("workbench.production.generate.modeMultiImage"),gridImage:$t("workbench.production.generate.modeGridImage"),startEndRequired:$t("workbench.production.generate.modeStartEnd"),endFrameOptional:$t("workbench.production.generate.modeStartEnd"),startFrameOptional:$t("workbench.production.generate.modeStartEnd"),text:$t("workbench.production.generate.modeText"),videoReference:$t("workbench.production.generate.modeVideoRef"),imageReference:$t("workbench.production.generate.modeImageRef"),audioReference:$t("workbench.production.generate.modeAudioRef"),textReference:$t("workbench.production.generate.modeTextRef")};function R(Y){return Y?Array.isArray(Y)?Y.map(ie=>B[ie]??ie).join("、"):B[Y]??Y:""}function I(Y){return Array.isArray(Y)?JSON.stringify(Y):Y}function F(Y,ie){M.value=ie.mode.map(te=>({label:R(te),value:I(te)}))}const j=()=>[{label:"README",value:"README",data:""},{label:"导演规划",value:"director_planning_narrative",data:""},{label:"分镜表",value:"director_storyboard_table_narrative",data:""}],W=fe({name:"",images:[],directorManual:""}),H=fe(!1),$=fe(null),G=fe(!1),q=fe([]),re=fe("README"),J=fe(j());function oe(){H.value=!0,mn.post("/project/queryDirectorManual").then(({data:Y})=>{q.value=Y.map(ie=>({id:ie.id,name:ie.name,directorManual:ie.directorManual,images:ie.images??(Array.isArray(ie.image)?ie.image:ie.image?[ie.image]:[]),data:ie.data}))}).finally(()=>{H.value=!1})}function se(Y){if($.value=Y??null,Y){W.value.name=Y.name,W.value.directorManual=Y.directorManual,W.value.images=Y.images?[...Y.images]:[];const ie=Array.isArray(Y.data)?Y.data:[];J.value=j().map(te=>{const Z=ie.find(he=>he.value===te.value);return Z?{...te,data:Z.data}:{...te}})}else W.value={name:"",images:[],directorManual:""},J.value=j();re.value="README",G.value=!0}function le(){G.value=!1,$.value=null,W.value={name:"",images:[],directorManual:""},J.value=j(),re.value="README"}function ue(Y){const ie=co.confirm({header:$t("workbench.project.msg.deleteDirectorManualHeader"),body:$t("workbench.project.msg.deleteDirectorManualBody",{name:Y.directorManual}),confirmBtn:$t("workbench.project.msg.deleteVisualManualConfirm"),cancelBtn:$t("workbench.project.msg.deleteVisualManualCancel"),onConfirm:()=>{mn.post("/project/deleteDirectorManual",{name:Y.directorManual}).then(()=>{oe(),le(),window.$message.success($t("workbench.project.msg.visualManualDeleted"))}).catch(te=>{window.$message.error(te.message??$t("workbench.project.msg.operationFailed"))}).finally(()=>{oe(),ie.destroy()})}})}async function ee(){if(!W.value.name.trim()){window.$message.warning($t("workbench.project.msg.enterVisualManualName"));return}if(!W.value.images.length){window.$message.warning($t("workbench.project.msg.enterVisualManualImage"));return}const Y=J.value.find(ie=>!ie.data.trim());if(Y)return window.$message.warning(`「${Y.label}」${$t("workbench.project.msg.enterVisualManualTabData")}`);try{D.value=!0,$.value?await mn.post("/project/editDirectorlManual",{name:W.value.name,images:W.value.images,data:J.value,directorManual:W.value.directorManual}):await mn.post("/project/addDirectorManual",{name:W.value.name,images:W.value.images,data:J.value,directorManual:W.value.directorManual}),D.value=!1,$.value?window.$message.success($t("workbench.project.msg.directorManualUpdated")):window.$message.success($t("workbench.project.msg.directorManualAdded")),le(),oe()}catch(ie){D.value=!1,window.$message.error(ie.message??$t("workbench.project.msg.operationFailed"))}}function de(){var Y;(Y=w.value)==null||Y.click()}function z(Y){const ie=Y.target.files;!ie||ie.length===0||(Array.from(ie).forEach(te=>{const Z=new FileReader;Z.onload=()=>{W.value.images.push(Z.result)},Z.readAsDataURL(te)}),Y.target.value="")}return(Y,ie)=>{const te=uL,Z=pA,he=p2,pe=Wu,Ce=c2,Qe=A2,ke=_n("i-plus"),me=Si,_e=_n("i-edit"),Te=_n("i-delete"),De=Wc,Ye=gc,ot=_n("i-close"),We=Mne,et=Ine;return xe(),Ge("div",LBo,[c(Ye,{placement:"center",visible:n.value,"onUpdate:visible":ie[11]||(ie[11]=st=>n.value=st),header:a.value?Y.$t("workbench.project.dialog.editTitle"):Y.$t("workbench.project.dialog.addTitle"),width:"60%",onConfirm:m,onCloseBtnClick:g,onCancel:g,"confirm-btn":a.value?Y.$t("workbench.project.dialog.save"):Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[ge("div",xBo,[ge("div",EBo,[c(Qe,{data:u.value,"label-align":"top"},{default:Oe(()=>[c(he,{label:Y.$t("workbench.project.dialog.projectType")},{default:Oe(()=>[c(Z,{modelValue:u.value.projectType,"onUpdate:modelValue":ie[0]||(ie[0]=st=>u.value.projectType=st),placeholder:Y.$t("workbench.project.dialog.selectType")},{default:Oe(()=>[c(te,{key:"基于小说原文",label:Y.$t("workbench.project.dialog.basedOnNovel"),value:"novel"},null,8,["label"]),c(te,{key:"基于剧本",label:Y.$t("workbench.project.dialog.basedOnScript"),value:"script"},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.projectName")},{default:Oe(()=>[c(pe,{modelValue:u.value.name,"onUpdate:modelValue":ie[1]||(ie[1]=st=>u.value.name=st),placeholder:Y.$t("workbench.project.dialog.projectNamePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.novelType")},{default:Oe(()=>[c(pe,{modelValue:u.value.type,"onUpdate:modelValue":ie[2]||(ie[2]=st=>u.value.type=st),placeholder:Y.$t("workbench.project.dialog.novelTypePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.modelData")},{default:Oe(()=>[ge("div",TBo,[c(T8,{modelValue:u.value.imageModel,"onUpdate:modelValue":ie[3]||(ie[3]=st=>u.value.imageModel=st),type:"image"},null,8,["modelValue"]),c(Z,{modelValue:u.value.imageQuality,"onUpdate:modelValue":ie[4]||(ie[4]=st=>u.value.imageQuality=st),class:"paramSelect ml-5",placeholder:Y.$t("workbench.production.editImage.quality")},{default:Oe(()=>[c(te,{value:"1K",label:"1K"}),c(te,{value:"2K",label:"2K"}),c(te,{value:"4K",label:"4K"})]),_:1},8,["modelValue","placeholder"])])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.videoModelData")},{default:Oe(()=>[ge("div",QBo,[c(T8,{modelValue:u.value.videoModel,"onUpdate:modelValue":ie[5]||(ie[5]=st=>u.value.videoModel=st),type:"video",onChange:F,changeConfig:!0},null,8,["modelValue"]),c(Z,{modelValue:u.value.mode,"onUpdate:modelValue":ie[6]||(ie[6]=st=>u.value.mode=st),class:"paramSelect ml-5",placeholder:Y.$t("workbench.production.editImage.mode")},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(M.value,st=>(xe(),Ut(te,{key:st.value,value:st.value,label:st.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue","placeholder"])])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.videoRatio")},{default:Oe(()=>[c(Z,{modelValue:u.value.videoRatio,"onUpdate:modelValue":ie[7]||(ie[7]=st=>u.value.videoRatio=st),options:l},null,8,["modelValue"])]),_:1},8,["label"]),c(he,{label:Y.$t("workbench.project.dialog.novelIntro")},{default:Oe(()=>[c(Ce,{modelValue:u.value.intro,"onUpdate:modelValue":ie[8]||(ie[8]=st=>u.value.intro=st),autosize:{minRows:3,maxRows:6},placeholder:Y.$t("workbench.project.dialog.novelIntroPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["data"])]),ge("div",DBo,[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",BBo,[ge("div",RBo,[ge("span",null,Pe(Y.$t("workbench.project.dialog.visualManual")),1),c(me,{size:"small",variant:"outline",onClick:ie[9]||(ie[9]=st=>_())},{icon:Oe(()=>[c(ke,{size:"14"})]),default:Oe(()=>[Bt(" "+Pe(Y.$t("workbench.project.dialog.newVisualManual")),1)]),_:1})]),ge("div",IBo,[c(De,{loading:k.value,text:Y.$t("workbench.project.dialog.loading")},{default:Oe(()=>[ge("div",MBo,[(xe(!0),Ge(sn,null,Bi(f.value,(st,Me)=>(xe(),Ge("div",{key:Me,class:Eo(["gridItem",{active:u.value.artStyle===st.stylePath}]),onClick:Se=>u.value.artStyle=st.stylePath},[ge("div",FBo,[ge("img",{src:st.images&&st.images[0],alt:st.name,class:"artImage",loading:"lazy"},null,8,NBo),ge("div",UBo,Pe(st.name),1)]),ge("div",{class:"editBtn",onClick:Mr(Se=>_(st),["stop"])},[c(_e,{theme:"outline",size:"14"})],8,jBo),ge("div",{class:"delBtn",onClick:Mr(Se=>Q(st),["stop"])},[c(Te,{theme:"outline",size:"14"})],8,WBo)],10,PBo))),128))])]),_:1},8,["loading","text"])])])]),_:1}),c(he,null,{default:Oe(()=>[ge("div",VBo,[ge("div",zBo,[ge("span",null,Pe(Y.$t("workbench.project.dialog.directorManual")),1),c(me,{size:"small",variant:"outline",onClick:ie[10]||(ie[10]=st=>se())},{icon:Oe(()=>[c(ke,{size:"14"})]),default:Oe(()=>[Bt(" "+Pe(Y.$t("workbench.project.dialog.addDirectorManual")),1)]),_:1})]),ge("div",HBo,[c(De,{loading:H.value,text:Y.$t("workbench.project.dialog.loading")},{default:Oe(()=>[ge("div",$Bo,[(xe(!0),Ge(sn,null,Bi(q.value,(st,Me)=>(xe(),Ge("div",{key:Me,class:Eo(["gridItem",{active:u.value.directorManual===st.directorManual}]),onClick:Se=>u.value.directorManual=st.directorManual},[ge("div",GBo,[ge("img",{src:st.images&&st.images[0],alt:st.name,class:"artImage",loading:"lazy"},null,8,YBo),ge("div",ZBo,Pe(st.name),1)]),ge("div",{class:"editBtn",onClick:Mr(Se=>se(st),["stop"])},[c(_e,{theme:"outline",size:"14"})],8,qBo),ge("div",{class:"delBtn",onClick:Mr(Se=>ue(st),["stop"])},[c(Te,{theme:"outline",size:"14"})],8,KBo)],10,XBo))),128))])]),_:1},8,["loading","text"])])])]),_:1})]),_:1})])])]),_:1},8,["visible","header","confirm-btn","cancel-btn"]),c(Ye,{class:"artStyleDialog",visible:A.value,"onUpdate:visible":ie[15]||(ie[15]=st=>A.value=st),header:p.value?Y.$t("workbench.project.dialog.editVisualManualTitle"):Y.$t("workbench.project.dialog.newVisualManualTitle"),width:"90vw",placement:"center",onConfirm:P,onCloseBtnClick:le,onCancel:le,"confirm-btn":Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[c(De,{loading:D.value},{default:Oe(()=>[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",JBo,[ge("div",eRo,[ge("label",tRo,Pe(Y.$t("workbench.project.dialog.visualManualName")),1),c(pe,{modelValue:b.value.name,"onUpdate:modelValue":ie[12]||(ie[12]=st=>b.value.name=st),placeholder:Y.$t("workbench.project.dialog.visualManualNamePh")},null,8,["modelValue","placeholder"])]),ge("div",nRo,[ge("label",iRo,Pe(Y.$t("workbench.project.dialog.mdFile")),1),c(pe,{modelValue:b.value.stylePath,"onUpdate:modelValue":ie[13]||(ie[13]=st=>b.value.stylePath=st),disabled:!!p.value},null,8,["modelValue","disabled"])]),ge("div",rRo,[ge("label",oRo,Pe(Y.$t("workbench.project.dialog.visualManualCover")),1),ge("div",sRo,[(xe(!0),Ge(sn,null,Bi(b.value.images,(st,Me)=>(xe(),Ge("div",{key:Me,class:"coverPreview"},[ge("img",{src:st,class:"coverImg"},null,8,aRo),ge("div",{class:"coverImgRemove",onClick:Se=>T(Me)},[c(ot,{size:"10"})],8,lRo)]))),128)),ge("div",{class:"coverUploadTrigger",onClick:L},[ge("input",{ref_key:"visualManualCoverInputRef",ref:w,type:"file",accept:"image/*",multiple:"",style:{display:"none"},onChange:E},null,544),c(ke,{size:"24"}),ge("span",null,Pe(Y.$t("workbench.project.dialog.uploadCover")),1)])])])])]),_:1}),c(he,{label:Y.$t("workbench.project.dialog.visualManualPrompt")},{default:Oe(()=>[ge("div",cRo,[ge("div",dRo,[ge("div",uRo,[c(et,{value:O.value,size:"medium",onChange:ie[14]||(ie[14]=st=>O.value=st)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(y.value,st=>(xe(),Ut(We,{key:st.value,value:st.value,label:st.label},{default:Oe(()=>[c(Ae(X4),{modelValue:st.data,"onUpdate:modelValue":Me=>st.data=Me,theme:"light",toolbars:v,footers:[],placeholder:Y.$t("workbench.project.dialog.promptPlaceholder"),style:{height:"30vh","margin-top":"5px"},onOnUploadImg:()=>{}},null,8,["modelValue","onUpdate:modelValue","placeholder"])]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])])])])]),_:1},8,["label"])]),_:1})]),_:1},8,["loading"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"]),c(Ye,{class:"artStyleDialog",visible:G.value,"onUpdate:visible":ie[19]||(ie[19]=st=>G.value=st),header:$.value?Y.$t("workbench.project.dialog.editingDirectorManual"):Y.$t("workbench.project.dialog.newDirecorManualTitle"),width:"90vw",placement:"center",onConfirm:ee,onCloseBtnClick:S,onCancel:S,"confirm-btn":Y.$t("workbench.project.dialog.ok"),"cancel-btn":Y.$t("workbench.project.dialog.cancel")},{default:Oe(()=>[c(De,{loading:D.value},{default:Oe(()=>[c(Qe,{"label-align":"top"},{default:Oe(()=>[c(he,null,{default:Oe(()=>[ge("div",hRo,[ge("div",fRo,[ge("label",gRo,Pe(Y.$t("workbench.project.dialog.directorManualName")),1),c(pe,{modelValue:W.value.name,"onUpdate:modelValue":ie[16]||(ie[16]=st=>W.value.name=st),placeholder:Y.$t("workbench.project.dialog.directorManualNamePh")},null,8,["modelValue","placeholder"])]),ge("div",mRo,[ge("label",kRo,Pe(Y.$t("workbench.project.dialog.directorFile")),1),c(pe,{modelValue:W.value.directorManual,"onUpdate:modelValue":ie[17]||(ie[17]=st=>W.value.directorManual=st),disabled:!!$.value},null,8,["modelValue","disabled"])]),ge("div",vRo,[ge("label",ARo,Pe(Y.$t("workbench.project.dialog.directorManualCover")),1),ge("div",pRo,[(xe(!0),Ge(sn,null,Bi(W.value.images,(st,Me)=>(xe(),Ge("div",{key:Me,class:"coverPreview"},[ge("img",{src:st,class:"coverImg"},null,8,bRo),ge("div",{class:"coverImgRemove",onClick:Se=>T(Me)},[c(ot,{size:"10"})],8,wRo)]))),128)),ge("div",{class:"coverUploadTrigger",onClick:de},[ge("input",{ref_key:"visualManualCoverInputRef",ref:w,type:"file",accept:"image/*",multiple:"",style:{display:"none"},onChange:z},null,544),c(ke,{size:"24"}),ge("span",null,Pe(Y.$t("workbench.project.dialog.uploadCover")),1)])])])])]),_:1}),c(he,{label:Y.$t("workbench.project.dialog.directorManualPrompt")},{default:Oe(()=>[ge("div",ORo,[ge("div",yRo,[ge("div",CRo,[c(et,{value:re.value,size:"medium",onChange:ie[18]||(ie[18]=st=>re.value=st)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(J.value,st=>(xe(),Ut(We,{key:st.value,value:st.value,label:st.label},{default:Oe(()=>[c(Ae(X4),{modelValue:st.data,"onUpdate:modelValue":Me=>st.data=Me,theme:"light",toolbars:v,footers:[],placeholder:Y.$t("workbench.project.dialog.promptPlaceholder"),style:{height:"30vh","margin-top":"5px"},onOnUploadImg:()=>{}},null,8,["modelValue","onUpdate:modelValue","placeholder"])]),_:2},1032,["value","label"]))),128))]),_:1},8,["value"])])])])]),_:1},8,["label"])]),_:1})]),_:1},8,["loading"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])])}}}),SRo=oo(_Ro,[["__scopeId","data-v-2e24f11a"]]),LRo={class:"project"},xRo={class:"header"},ERo={class:"fc"},TRo={class:"title"},QRo={class:"sub"},DRo={class:"list"},BRo={class:"jb ac"},RRo={class:"title"},IRo={class:"intro"},MRo={class:"bottomMenu f ac jb"},PRo={class:"time"},FRo={class:"actionBtns f ac"},NRo=["onClick"],URo=["onClick"],jRo=Je({__name:"index",setup(e){const{allProject:t,project:n}=xs(ph()),r=fe(!1),o=fe(null);function s(){mn.post("/project/getProject").then(({data:m})=>{t.value=m})}An(()=>{n.value=null,s()});const a=_pe();function l(m){const v=t.value.find(f=>f.id===m);if(v)n.value=v;else return window.$message.error($t("workbench.project.msg.notFound"));v.projectType==="novel"?a.push("/novel"):v.projectType==="script"&&a.push("/script")}function d(m){o.value={...m},r.value=!0}function u(m){mn.post("/project/editProject",m).then(()=>{window.$message.success($t("workbench.project.msg.editSuccess")),s()}).catch(v=>{window.$message.error(v.message??$t("workbench.project.msg.editFailed"))})}function h(m){mn.post("/project/addProject",m).then(()=>{window.$message.success($t("workbench.project.msg.addSuccess")),s()}).catch(v=>{window.$message.error(v.message??$t("workbench.project.msg.addFailed"))})}function g(m){const v=co.confirm({header:$t("workbench.project.msg.deleteHeader"),body:$t("workbench.project.msg.deleteBody"),confirmBtn:$t("workbench.project.msg.deleteConfirm"),cancelBtn:$t("workbench.project.msg.deleteCancel"),onConfirm:()=>{mn.post("/project/delProject",{id:m}).then(()=>{window.$message.success($t("workbench.project.msg.deleteSuccess")),s()}).catch(f=>{window.$message.error(f.message??$t("workbench.project.msg.deleteFailed"))}).finally(()=>{v.destroy()})}})}return(m,v)=>{const f=_n("i-plus"),k=Si,A=Sg,p=_n("i-edit"),b=_n("i-delete"),w=km,O=L1i,y=S1i;return xe(),Ge(sn,null,[ge("div",LRo,[ge("div",xRo,[ge("div",ERo,[ge("span",TRo,Pe(m.$t("workbench.project.title")),1),ge("span",QRo,Pe(m.$t("workbench.project.subtitle")),1)]),c(k,{class:"addBtn",onClick:v[0]||(v[0]=C=>{o.value=null,r.value=!0})},{icon:Oe(()=>[c(f,{class:"addIcon",size:20})]),default:Oe(()=>[Bt(" "+Pe(m.$t("workbench.project.newProject")),1)]),_:1})]),ge("div",DRo,[c(y,{style:{gap:"20px"}},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(t),C=>(xe(),Ut(O,{xs:12,sm:6,md:6,lg:4,xl:4,key:C.id},{default:Oe(()=>[c(w,{hoverShadow:"",class:"card",onClick:_=>l(C.id)},{default:Oe(()=>[ge("div",BRo,[ge("div",RRo,Pe(C.name),1),ge("div",null,[c(A,{shape:"round"},{default:Oe(()=>[Bt(Pe(C.projectType=="novel"?m.$t("workbench.project.type.novel"):m.$t("workbench.project.type.script")),1)]),_:2},1024)])]),C.artStyle?(xe(),Ut(A,{key:0,shape:"round"},{default:Oe(()=>[Bt(Pe(C.artStyle),1)]),_:2},1024)):nn("",!0),ge("div",IRo,Pe(C.intro),1),ge("div",MRo,[ge("div",PRo,[ge("span",null,Pe(Ae(JB)(C==null?void 0:C.createTime).format("YYYY-MM-DD HH:mm:ss")),1)]),ge("div",FRo,[ge("div",{class:"editBtn",onClick:Mr(_=>d(C),["stop"])},[c(p,{size:18})],8,NRo),ge("div",{class:"removeBtn",onClick:Mr(_=>g(C.id),["stop"])},[c(b,{size:18})],8,URo)])])]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})])]),c(SRo,{modelValue:Ae(r),"onUpdate:modelValue":v[1]||(v[1]=C=>Fn(r)?r.value=C:null),projectData:Ae(o),onAdd:h,onEdit:u},null,8,["modelValue","projectData"])],64)}}}),WRo=oo(jRo,[["__scopeId","data-v-d59f6a92"]]),VRo=Object.freeze(Object.defineProperty({__proto__:null,default:WRo},Symbol.toStringTag,{value:"Module"})),zRo={class:"task"},HRo={class:"header"},$Ro={class:"headerInfo fc"},XRo={class:"title"},GRo={class:"sub"},YRo={class:"list"},ZRo={class:"search f"},qRo={class:"content"},KRo={class:"stateText stateFail"},JRo=Je({__name:"index",setup(e){const{project:t}=xs(ph()),n=[{colKey:"taskClass",title:$t("workbench.task.col.taskClass"),width:120,ellipsis:!0},{colKey:"relatedObjects",title:$t("workbench.task.col.relatedObjects"),width:120,ellipsis:!0},{colKey:"model",title:$t("workbench.task.col.model"),width:280,ellipsis:!0},{colKey:"describe",title:$t("workbench.task.col.describe"),ellipsis:!0},{colKey:"reason",title:$t("workbench.task.col.reason"),ellipsis:!0},{colKey:"state",title:$t("workbench.task.col.state"),width:100,cell:"state"},{colKey:"startTime",title:$t("workbench.task.col.startTime"),width:200,cell:"startTime"}],r=[{label:$t("workbench.task.stateAll"),value:""},{label:$t("workbench.task.stateRunning"),value:"进行中"},{label:$t("workbench.task.stateCompleted"),value:"已完成"},{label:$t("workbench.task.stateFailed"),value:"生成失败"}],o=fe({page:1,limit:10,total:0,loading:!1}),s=fe([]),a=fe([]),l=fe(""),d=fe(""),u=fe(""),h=fe([]);An(()=>{f(),m(),v()});function g(){o.value.page=1,f()}async function m(){const{data:k}=await mn.post("/task/getTaskCategories").catch(()=>({data:[]}));s.value=[{label:$t("workbench.task.stateAll"),value:""},...k.map(A=>({label:A.taskClass,value:A.taskClass}))]}async function v(){const{data:k}=await mn.post("/task/getProject").catch(()=>({data:[]}));a.value=[{label:$t("workbench.task.stateAll"),value:""},...k.map(A=>({label:A.name,value:A.id}))]}async function f(){var k;o.value.loading=!0;try{const{data:A}=await mn.post("/task/getTaskApi",{page:o.value.page,limit:o.value.limit,taskClass:l.value,state:d.value,projectId:u.value||((k=t.value)==null?void 0:k.id)});h.value=A.data,o.value.total=A.total}catch{window.$message.error($t("workbench.task.fetchFailed"))}finally{o.value.loading=!1}}return(k,A)=>{const p=_n("i-redo"),b=Si,w=pA,O=el,y=jne,C=g3n;return xe(),Ge("div",zRo,[ge("div",HRo,[ge("div",$Ro,[ge("span",XRo,Pe(k.$t("workbench.task.title")),1),ge("span",GRo,Pe(k.$t("workbench.task.subtitle")),1)]),c(b,{onClick:f},{icon:Oe(()=>[c(p,{size:20})]),default:Oe(()=>[Bt(" "+Pe(k.$t("workbench.task.refresh")),1)]),_:1})]),ge("div",YRo,[ge("div",ZRo,[c(w,{label:k.$t("workbench.task.project"),modelValue:Ae(u),"onUpdate:modelValue":A[0]||(A[0]=_=>Fn(u)?u.value=_:null),options:Ae(a),onChange:g},null,8,["label","modelValue","options"]),c(w,{label:k.$t("workbench.task.categoryLabel"),modelValue:Ae(l),"onUpdate:modelValue":A[1]||(A[1]=_=>Fn(l)?l.value=_:null),options:Ae(s),onChange:g,style:{"margin-left":"20px"}},null,8,["label","modelValue","options"]),c(w,{label:k.$t("workbench.task.stateLabel"),modelValue:Ae(d),"onUpdate:modelValue":A[2]||(A[2]=_=>Fn(d)?d.value=_:null),options:r,onChange:g,style:{"margin-left":"20px"}},null,8,["label","modelValue"])]),ge("div",qRo,[c(y,{data:Ae(h),columns:n,"row-key":"id",loading:Ae(o).loading,hover:"",stripe:""},{state:Oe(({row:_})=>[_.state==="生成失败"?(xe(),Ut(O,{key:0,content:_.reason||k.$t("workbench.task.noFailReason"),placement:"top"},{default:Oe(()=>[ge("span",KRo,Pe(_.state),1)]),_:2},1032,["content"])):(xe(),Ge("span",{key:1,class:Eo(["stateText",_.state==="进行中"?"stateRunning":"stateSuccess"])},Pe(_.state),3))]),startTime:Oe(({row:_})=>[ge("span",null,Pe(Ae(JB)(_.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),_:1},8,["data","loading"]),c(C,{class:"paginationWrap",current:Ae(o).page,"onUpdate:current":A[3]||(A[3]=_=>Ae(o).page=_),pageSize:Ae(o).limit,"onUpdate:pageSize":A[4]||(A[4]=_=>Ae(o).limit=_),"show-sizer":"",total:Ae(o).total,onPageSizeChange:f,onCurrentChange:f},null,8,["current","pageSize","total"])])])])}}}),eIo=oo(JRo,[["__scopeId","data-v-7d93af9d"]]),tIo=Object.freeze(Object.defineProperty({__proto__:null,default:eIo},Symbol.toStringTag,{value:"Module"})),Dce=/^(第[\d一二三四五六七八九十百千]+卷)\s*([^\n第]*)/gm,nIo=/第\s*([0-90-9零一二三四五六七八九十百千万]+)\s*[章回节]\s*([^\n\r]*)/g,O5e={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},GSt={十:10,百:100,千:1e3};function y5e(e){if(/^\d+$/.test(e))return parseInt(e,10);if(/^十[一二三四五六七八九]?$/.test(e))return e.length===1?10:10+O5e[e[1]];let t=0,n=0;for(const r of e)O5e[r]!==void 0?n=O5e[r]:GSt[r]!==void 0&&(n===0&&r==="十"&&(n=1),t+=n*GSt[r],n=0);return t+=n,t}function iIo(e){var l;Dce.lastIndex=0;const t=Array.from(e.matchAll(Dce)),n=[];let r;const o=ku().otherSetting.chapterReg;if(o){const d=o.match(/^\/(.*)\/([igmuy]*)$/);d?r=new RegExp(d[1],d[2]):r=new RegExp(o)}else r=nIo;if(t.length===0){const d=[];r.lastIndex=0;const u=Array.from(e.matchAll(r));if(u.length===0&&e.trim()!=="")d.push({index:1,chapter:"",text:e.trim()});else for(let h=0;hh.index-g.index),n.push({index:1,reel:"正文卷",chapters:d}),n}const s=new Map;for(let d=0;dp.index-b.index),s.has(m)||s.set(m,{index:y5e(g.replace(/第|卷/g,"")),reel:m,chapters:[]}),s.get(m).chapters.push(...A)}const a=Array.from(s.values()).sort((d,u)=>d.index-u.index);return a.forEach(d=>d.chapters.sort((u,h)=>u.index-h.index)),a}var _p={},Cit="1.13.8",YSt=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},iwe=Array.prototype,_it=Object.prototype,ZSt=typeof Symbol<"u"?Symbol.prototype:null,rIo=iwe.push,lre=iwe.slice,Tee=_it.toString,oIo=_it.hasOwnProperty,kPn=typeof ArrayBuffer<"u",sIo=typeof DataView<"u",aIo=Array.isArray,qSt=Object.keys,KSt=Object.create,JSt=kPn&&ArrayBuffer.isView,lIo=isNaN,cIo=isFinite,vPn=!{toString:null}.propertyIsEnumerable("toString"),e8t=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],dIo=Math.pow(2,53)-1;function V0(e,t){return t=t==null?e.length-1:+t,function(){for(var n=Math.max(arguments.length-t,0),r=Array(n),o=0;o=0&&n<=dIo}}function xPn(e){return function(t){return t==null?void 0:t[e]}}const Dke=xPn("byteLength"),gIo=LPn(Dke);var mIo=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function kIo(e){return JSt?JSt(e)&&!Qee(e):gIo(e)&&mIo.test(Tee.call(e))}const Rit=kPn?kIo:Bit(!1),m1=xPn("length");function vIo(e){for(var t={},n=e.length,r=0;r=0))if(r.push(e),o.push(t),n.push(!0),d){if(m=e.length,m!==t.length)return!1;for(;m--;)n.push({a:e[m],b:t[m]})}else{var v=Mf(e),f;if(m=v.length,Mf(t).length!==m)return!1;for(;m--;){if(f=v[m],!vE(t,f))return!1;n.push({a:e[f],b:t[f]})}}}return!0}function gH(e){if(!mE(e))return[];var t=[];for(var n in e)t.push(n);return vPn&&EPn(e,t),t}function Mit(e){var t=m1(e);return function(n){if(n==null)return!1;var r=gH(n);if(m1(r))return!1;for(var o=0;o":">",'"':""","'":"'","`":"`"},qPn=YPn(ZPn),wIo=Nit(ZPn),KPn=YPn(wIo),JPn=Jl.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var C5e=/(.)^/,OIo={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},yIo=/\\|'|\r|\n|\u2028|\u2029/g;function CIo(e){return"\\"+OIo[e]}var _Io=/^\s*(\w|\$)+\s*$/;function eFn(e,t,n){!t&&n&&(t=n),t=Wit({},t,Jl.templateSettings);var r=RegExp([(t.escape||C5e).source,(t.interpolate||C5e).source,(t.evaluate||C5e).source].join("|")+"|$","g"),o=0,s="__p+='";e.replace(r,function(u,h,g,m,v){return s+=e.slice(o,v).replace(yIo,CIo),o=v+u.length,h?s+=`'+ ((__t=(`+h+`))==null?'':_.escape(__t))+ '`:g?s+=`'+ ((__t=(`+g+`))==null?'':__t)+ @@ -3220,7 +3220,7 @@ Character number: `+e.characterNumber};NR.prototype.lineNumber=function(){return `,r:"\r",t:" "};function wUn(e){return e.replace(/\\(.)/g,function(t,n){return DNo[n]||n})}var BNo=ei.rules.sequence(ei.rules.tokenOfType("open-square-bracket"),ei.rules.sequence.cut(),ei.rules.sequence.capture(Wwe),ei.rules.tokenOfType("equals"),ei.rules.sequence.capture(BN),ei.rules.tokenOfType("close-square-bracket")).map(function(e,t){return{name:e,value:t,append:!1}}),RNo=ei.rules.sequence(ei.rules.tokenOfType("dot"),ei.rules.sequence.cut(),ei.rules.sequence.capture(Wwe)).map(function(e){return{name:"class",value:e,append:!0}}),INo=ei.rules.firstOf("attribute or class",BNo,RNo);function Urt(e,t){var n=SNo(t),r=ei.Parser(),o=r.parseTokens(e,n);return o.isSuccess()?B9e.success(o.value()):new B9e.Result(null,[B9e.warning(MNo(t,o))])}function MNo(e,t){return"Did not understand this style mapping, so ignored it: "+e+` `+t.errors().map(PNo).join(` `)}function PNo(e){return"Error was at character number "+e.characterNumber()+": Expected "+e.expected+" but got "+e.actual}var FNo=xNo(),Vwe={};Vwe.readOptions=jNo;var OUn=bh,NNo=Vwe._defaultStyleMap=["p.Heading1 => h1:fresh","p.Heading2 => h2:fresh","p.Heading3 => h3:fresh","p.Heading4 => h4:fresh","p.Heading5 => h5:fresh","p.Heading6 => h6:fresh","p[style-name='Heading 1'] => h1:fresh","p[style-name='Heading 2'] => h2:fresh","p[style-name='Heading 3'] => h3:fresh","p[style-name='Heading 4'] => h4:fresh","p[style-name='Heading 5'] => h5:fresh","p[style-name='Heading 6'] => h6:fresh","p[style-name='heading 1'] => h1:fresh","p[style-name='heading 2'] => h2:fresh","p[style-name='heading 3'] => h3:fresh","p[style-name='heading 4'] => h4:fresh","p[style-name='heading 5'] => h5:fresh","p[style-name='heading 6'] => h6:fresh","p.Heading => h1:fresh","p[style-name='Heading'] => h1:fresh","r[style-name='Strong'] => strong","p[style-name='footnote text'] => p:fresh","r[style-name='footnote reference'] =>","p[style-name='endnote text'] => p:fresh","r[style-name='endnote reference'] =>","p[style-name='annotation text'] => p:fresh","r[style-name='annotation reference'] =>","p[style-name='Footnote'] => p:fresh","r[style-name='Footnote anchor'] =>","p[style-name='Endnote'] => p:fresh","r[style-name='Endnote anchor'] =>","p:unordered-list(1) => ul > li:fresh","p:unordered-list(2) => ul|ol > li > ul > li:fresh","p:unordered-list(3) => ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:ordered-list(1) => ol > li:fresh","p:ordered-list(2) => ul|ol > li > ol > li:fresh","p:ordered-list(3) => ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","r[style-name='Hyperlink'] =>","p[style-name='Normal'] => p:fresh","p.Body => p:fresh","p[style-name='Body'] => p:fresh"],UNo=Vwe._standardOptions={externalFileAccess:!1,transformDocument:WNo,includeDefaultStyleMap:!0,includeEmbeddedStyleMap:!0};function jNo(e){return e=e||{},OUn.extend({},UNo,e,{customStyleMap:zLt(e.styleMap),readStyleMap:function(){var t=this.customStyleMap;return this.includeEmbeddedStyleMap&&(t=t.concat(zLt(this.embeddedStyleMap))),this.includeDefaultStyleMap&&(t=t.concat(NNo)),t}})}function zLt(e){return e?OUn.isString(e)?e.split(` -`).map(function(t){return t.trim()}).filter(function(t){return t!==""&&t.charAt(0)!=="#"}):e:[]}function WNo(e){return e}var yUn={},HLt=Rg,VNo=ure;yUn.openZip=zNo;function zNo(e){return e.arrayBuffer?HLt.resolve(VNo.openArrayBuffer(e.arrayBuffer)):HLt.reject(new Error("Could not find file in options"))}var CUn={},HNo=Fwe(),$No=Pwe();CUn.element=XNo;function XNo(e){return function(t){return $No.elementWithTag(HNo.element(e),[t])}}var GNo=bh,_Un=lrt,jrt=Rrt,YNo=Irt.DocumentConverter,ZNo=sUn.convertElementToRawText,qNo=Nwe.readStyle,KNo=Vwe.readOptions,zwe=yUn,JNo=LA.Result;_p.convertToHtml=eUo;_p.convertToMarkdown=tUo;_p.convert=Wrt;_p.extractRawText=oUo;_p.images=Mrt;_p.transforms=pE;_p.underline=CUn;_p.embedStyleMap=sUo;_p.readEmbeddedStyleMap=nUo;function eUo(e,t){return Wrt(e,t)}function tUo(e,t){var n=Object.create(t||{});return n.outputFormat="markdown",Wrt(e,n)}function Wrt(e,t){return t=KNo(t),zwe.openZip(e).tap(function(n){return jrt.readStyleMap(n).then(function(r){t.embeddedStyleMap=r})}).then(function(n){return _Un.read(n,e,t).then(function(r){return r.map(t.transformDocument)}).then(function(r){return iUo(r,t)})})}function nUo(e){return zwe.openZip(e).then(jrt.readStyleMap)}function iUo(e,t){var n=rUo(t.readStyleMap()),r=GNo.extend({},t,{styleMap:n.value}),o=new YNo(r);return e.flatMapThen(function(s){return n.flatMapThen(function(a){return o.convertToHtml(s)})})}function rUo(e){return JNo.combine((e||[]).map(qNo)).map(function(t){return t.filter(function(n){return!!n})})}function oUo(e){return zwe.openZip(e).then(_Un.read).then(function(t){return t.map(ZNo)})}function sUo(e,t){return zwe.openZip(e).tap(function(n){return jrt.writeStyleMap(n,t)}).then(function(n){return n.toArrayBuffer()}).then(function(n){return{toArrayBuffer:function(){return n},toBuffer:function(){return Buffer.from(n)}}})}_p.styleMapping=function(){throw new Error(`Use a raw string instead of mammoth.styleMapping e.g. "p[style-name='Title'] => h1" instead of mammoth.styleMapping("p[style-name='Title'] => h1")`)};const aUo={class:"purgeNovel"},lUo={class:"data"},cUo={class:"dragIcon"},dUo={class:"uploadText"},uUo={class:"uploadHint"},hUo={class:"formItem"},fUo={class:"label"},gUo={class:"uploadWrap"},mUo={class:"footerInfo f ac jb",style:{"margin-top":"8px"}},kUo={class:"charCount"},vUo={key:0,class:"tips warn"},AUo={style:{"margin-top":"16px","text-align":"right"}},pUo={class:"fc to2Box"},bUo={class:"ellipsisText"},wUo={class:"selectedInfo"},OUo={style:{"margin-top":"16px","text-align":"right"}},yUo=Je({__name:"importNovel",props:{modelValue:{type:Boolean},modelModifiers:{}},emits:Fc(["select"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=Pf(e,"modelValue"),o=fe("To1"),s=fe(),a=fe(""),l=fe([]),d=fe([]),u=fe(!1),h=[{colKey:"row-select",type:"multiple",width:60},{colKey:"index",title:$t("workbench.novel.import.col.chapter"),width:100},{colKey:"reel",title:$t("workbench.novel.import.col.reel"),width:100},{colKey:"chapter",title:$t("workbench.novel.import.col.chapterName"),width:200,ellipsis:!0},{colKey:"chapterData",title:$t("workbench.novel.import.col.chapterData"),ellipsis:!0}],g=X(()=>{if(!a.value)return[];try{return iIo(a.value).flatMap(C=>C.chapters.map(_=>({index:_.index,reel:C.reel,chapter:_.chapter,chapterData:_.text})))}catch(C){return console.error("解析小说内容出错:",C),[]}}),m=X(()=>g.value.filter(C=>d.value.includes(C.index))),v=X(()=>m.value.reduce((C,_)=>C+_.chapterData.length,0));function f(){var C;(C=s.value)==null||C.triggerUpload()}async function k(C){var S;const _=(S=C.dataTransfer)==null?void 0:S.files;_&&_.length>0&&await b({raw:_[0]})}async function A(C){const _=await C.arrayBuffer();return C.type==="text/plain"?new TextDecoder().decode(_):(await _p.extractRawText({arrayBuffer:_})).value}function p(){return Promise.resolve({response:{},status:"success"})}async function b(C){const _=C.raw;if(!_)return window.$message.error($t("workbench.novel.import.msg.selectFile")),!1;const S=["text/plain","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];if(_.type==="application/msword")return window.$message.warning($t("workbench.novel.import.msg.docNotSupported")),!1;if(!S.includes(_.type))return window.$message.error($t("workbench.novel.import.msg.unsupportedType")),!1;if(_.size>10*1024*1024)return window.$message.error($t("workbench.novel.import.msg.fileTooLarge")),!1;Wh(!0);try{a.value=await A(_)}catch{window.$message.error($t("workbench.novel.import.msg.parseFailed"))}finally{Wh(!1)}return!1}function w(C,_){d.value=C}const O=t;async function y(){var C;if(u.value=!0,!m.value.length){window.$message.warning($t("workbench.novel.import.msg.selectChapters")),u.value=!1;return}try{await mn.post("/novel/addNovel",{projectId:(C=n.value)==null?void 0:C.id,data:m.value}),u.value=!1,O("select"),window.$message.success($t("workbench.novel.import.msg.saveSuccess"))}catch(_){window.$message.error(_.message),u.value=!1}finally{u.value=!1,r.value=!1}}return pt(r,C=>{C||(a.value="",l.value=[],d.value=[],o.value="To1")}),(C,_)=>{const S=X4e,L=_n("i-upload-one"),E=fW,T=c2,D=Si,P=Mne,Q=el,M=jne,B=Ine,R=gc;return xe(),Ge("div",aUo,[c(R,{footer:!1,visible:r.value,"onUpdate:visible":_[5]||(_[5]=I=>r.value=I),header:C.$t("workbench.novel.import.title"),width:"50%",placement:"center"},{default:Oe(()=>[ge("div",lUo,[c(B,{value:Ae(o),disabled:""},{default:Oe(()=>[c(P,{value:"To1",label:C.$t("workbench.novel.import.step1"),style:{height:"680px","overflow-y":"auto"}},{default:Oe(()=>[ge("div",{class:"uploadArea",onClick:f,onDragover:_[1]||(_[1]=Mr(()=>{},["prevent"])),onDrop:Mr(k,["prevent"])},[c(S,{ref_key:"uploadRef",ref:s,modelValue:Ae(l),"onUpdate:modelValue":_[0]||(_[0]=I=>Fn(l)?l.value=I:null),theme:"file",multiple:!1,max:1,"before-upload":b,"request-method":p,style:{display:"none"}},null,8,["modelValue"]),ge("div",cUo,[c(L,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",dUo,Pe(C.$t("workbench.novel.import.dragUpload")),1),ge("p",uUo,Pe(C.$t("workbench.novel.import.uploadHint")),1)],32),c(E,null,{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.or")),1)]),_:1}),ge("div",hUo,[ge("div",fUo,Pe(C.$t("workbench.novel.import.pasteLabel")),1),ge("div",gUo,[c(T,{modelValue:Ae(a),"onUpdate:modelValue":_[2]||(_[2]=I=>Fn(a)?a.value=I:null),placeholder:C.$t("workbench.novel.import.pastePlaceholder"),autosize:{minRows:12,maxRows:12}},null,8,["modelValue","placeholder"])]),ge("div",mUo,[ge("div",null,[ge("span",kUo,Pe(Ae(a).length)+" "+Pe(C.$t("workbench.novel.import.chars")),1),Ae(a).length>0&&Ae(a).length<100?(xe(),Ge("span",vUo,Pe(C.$t("workbench.novel.import.tooShort")),1)):nn("",!0)]),ge("span",null,Pe(C.$t("workbench.novel.import.parsedChapters",{count:Ae(g).length})),1)])]),ge("div",AUo,[c(D,{theme:"primary",style:{"margin-left":"10px"},disabled:!Ae(a)||!Ae(g).length,onClick:_[3]||(_[3]=I=>o.value="To2")},{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.nextStep")),1)]),_:1},8,["disabled"])])]),_:1},8,["label"]),c(P,{value:"To2",label:C.$t("workbench.novel.import.step2"),style:{height:"680px","overflow-y":"auto"}},{default:Oe(()=>[ge("div",pUo,[c(M,{ref:"tableRef","row-key":"index",data:Ae(g),columns:h,"selected-row-keys":Ae(d),hover:"",style:{flex:"1","overflow-y":"auto"},onSelectChange:w},{chapterData:Oe(({row:I})=>[c(Q,{content:I.chapterData,placement:"top"},{default:Oe(()=>[ge("span",bUo,Pe(I.chapterData),1)]),_:2},1032,["content"])]),_:1},8,["data","selected-row-keys"]),ge("div",wUo,Pe(C.$t("workbench.novel.import.selectedInfo",{count:Ae(v)})),1),ge("div",OUo,[c(D,{variant:"outline",onClick:_[4]||(_[4]=I=>o.value="To1")},{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.prevStep")),1)]),_:1}),c(D,{theme:"primary",style:{"margin-left":"10px"},disabled:Ae(v)>2e5,loading:Ae(u),onClick:y},{default:Oe(()=>[..._[6]||(_[6]=[Bt(" 保存 ",-1)])]),_:1},8,["disabled","loading"])])])]),_:1},8,["label"])]),_:1},8,["value"])])]),_:1},8,["visible","header"])])}}}),CUo=oo(yUo,[["__scopeId","data-v-4a10a557"]]),_Uo={class:"editNodel"},SUo={class:"data",style:{"overflow-x":"hidden"}},LUo={class:"editNodel-footer"},xUo=Je({__name:"editNodel",props:Fc({formData:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:Fc(["select"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t;async function s(){console.log("保存的章节数据:",r.formData);try{await mn.post("/novel/updateNovel",{id:r.formData.id,index:r.formData.index,reel:r.formData.reel,chapter:r.formData.chapter,chapterData:r.formData.chapterData,event:r.formData.event}),o("select"),window.$message.success($t("workbench.novel.editDialog.msg.updateSuccess"))}catch(a){window.$message.error(a.message)}finally{n.value=!1}n.value=!1}return(a,l)=>{const d=Wu,u=p2,h=c2,g=A2,m=Si,v=gc;return xe(),Ge("div",_Uo,[c(v,{visible:n.value,"onUpdate:visible":l[4]||(l[4]=f=>n.value=f),header:a.$t("workbench.novel.editDialog.title"),width:"50%",top:"10vh",placement:"center"},{footer:Oe(()=>[ge("div",LUo,[c(m,{onClick:l[3]||(l[3]=f=>n.value=!1)},{default:Oe(()=>[Bt(Pe(a.$t("workbench.novel.editDialog.cancel")),1)]),_:1}),c(m,{theme:"primary",onClick:s},{default:Oe(()=>[Bt(Pe(a.$t("workbench.novel.editDialog.save")),1)]),_:1})])]),default:Oe(()=>[ge("div",SUo,[c(g,{"label-width":"80px"},{default:Oe(()=>[c(u,{label:a.$t("workbench.novel.editDialog.chapterName")},{default:Oe(()=>[c(d,{placeholder:a.$t("workbench.novel.editDialog.chapterNamePh"),modelValue:e.formData.chapter,"onUpdate:modelValue":l[0]||(l[0]=f=>e.formData.chapter=f)},null,8,["placeholder","modelValue"])]),_:1},8,["label"]),c(u,{label:a.$t("workbench.novel.editDialog.eventContent")},{default:Oe(()=>[c(h,{modelValue:e.formData.event,"onUpdate:modelValue":l[1]||(l[1]=f=>e.formData.event=f),placeholder:a.$t("workbench.novel.editDialog.eventContentPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(u,{label:a.$t("workbench.novel.editDialog.chapterContent")},{default:Oe(()=>[c(h,{placeholder:a.$t("workbench.novel.editDialog.chapterContentPh"),modelValue:e.formData.chapterData,"onUpdate:modelValue":l[2]||(l[2]=f=>e.formData.chapterData=f),autosize:{minRows:15,maxRows:15}},null,8,["placeholder","modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["visible","header"])])}}}),EUo=oo(xUo,[["__scopeId","data-v-9e187c61"]]),TUo={class:"novel",ref:"novelRef"},QUo={class:"headBtn jb ac",ref:"headBtnRef"},DUo={class:"f"},BUo={style:{color:"red",cursor:"pointer"}},RUo={key:2},IUo=Je({__name:"index",setup(e){const{otherSetting:t}=xs(ku()),{project:n}=xs(ph()),r=fe(""),o=fe([{colKey:"row-select",type:"multiple",width:50,align:"center"},{colKey:"index",title:$t("workbench.novel.col.id"),width:50,align:"center"},{colKey:"reel",title:$t("workbench.novel.col.reel"),width:100,align:"center",cell:"preview"},{colKey:"chapter",title:$t("workbench.novel.col.chapter"),width:100,ellipsis:!0},{colKey:"chapterData",title:$t("workbench.novel.col.chapterData"),ellipsis:!0},{colKey:"event",title:$t("workbench.novel.col.event"),ellipsis:!0},{colKey:"operation",title:$t("workbench.novel.col.operation"),width:200,align:"center"}]),s=fe(!1),a=fe({id:-1,index:0,reel:"",chapter:"",chapterData:"",event:""}),l=fe([]),d=fe(!1),u=fe([]),h=fe({page:1,pageSize:10,total:0});An(()=>{m()}),Qa(()=>{L()});function g(){h.value.page=1,m()}function m(){var E;d.value=!0,mn.post("/novel/getNovel",{projectId:(E=n.value)==null?void 0:E.id,page:h.value.page,limit:h.value.pageSize,search:r.value}).then(T=>{l.value=T.data.data,h.value.total=T.data.total}).finally(()=>{d.value=!1})}function v(E){h.value.page=E.current,h.value.pageSize=E.pageSize,m()}const f=fe(!1);function k(){f.value=!0}function A(E,T){u.value=E.filter(Boolean)}function p(){if(u.value.length===0)return;const E=fo.confirm({header:$t("workbench.novel.msg.batchDeleteHeader"),body:$t("workbench.novel.msg.batchDeleteBody",{count:u.value.length}),onConfirm:async()=>{await mn.post("/novel/batchDeleteNovel",{ids:u.value}),m(),window.$message.success($t("workbench.novel.msg.batchDeleteSuccess")),E.destroy()}})}function b(E){s.value=!0,a.value={...E}}function w(E){const T=fo.confirm({header:$t("workbench.novel.msg.deleteHeader"),body:$t("workbench.novel.msg.deleteBody",{name:E.chapter}),onConfirm:async()=>{try{await mn.post("/novel/delNovel",{id:E.id}),window.$message.success($t("workbench.novel.msg.deleteSuccess")),l.value.length===1&&h.value.page>1&&(h.value.page-=1),m()}catch(D){window.$message.error(D.message)}window.$message.success($t("workbench.novel.msg.deleteSuccess")),T.destroy()}})}function O(){const E=fo.confirm({header:$t("workbench.novel.msg.eventAnalysisHeader"),body:$t("workbench.novel.msg.eventAnalysisBody",{count:u.value.length}),onConfirm:()=>{var T;E.destroy(),mn.post("/novel/event/generateEvents",{projectId:(T=n.value)==null?void 0:T.id,novelIds:u.value,concurrentCount:t.value.assetsBatchGenereateSize}).then(D=>{u.value.length=0,m()})}})}const y=X(()=>l.value.filter(E=>!E.eventState));let C=null;async function _(){if(y.value.length===0)return;const E=y.value.map(T=>T.id);try{const{data:T}=await mn.post("/novel/getNovelEventState",{ids:E});Array.isArray(T)&&T.forEach(D=>{const P=l.value.find(Q=>Q.id===D.id);P&&(P.eventState=D.eventState,P.eventState==-1&&(P.errorReason=D.errorReason),D.event!==void 0&&(P.event=D.event))})}catch(T){console.error("轮询事件状态失败:",T)}}function S(){C||(C=setInterval(async()=>{if(y.value.length===0){L();return}await _()},3e3))}function L(){C&&(clearInterval(C),C=null)}return pt(y,E=>{E.length>0?S():L()}),Qa(()=>{L()}),(E,T)=>{const D=dL,P=Si,Q=Ev,M=Wu,B=Wc,R=el,I=jne;return xe(),Ge("div",TUo,[ge("div",QUo,[c(Q,null,{default:Oe(()=>[c(P,{theme:"primary",onClick:k},{icon:Oe(()=>[c(D,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.importText")),1)]),_:1}),c(P,{theme:"danger",disabled:Ae(u).length===0,onClick:p},{icon:Oe(()=>[c(D,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.batchDelete"))+" "+Pe(Ae(u).length>0?`(${Ae(u).length})`:""),1)]),_:1},8,["disabled"]),c(P,{onClick:O,disabled:Ae(u).length===0},{icon:Oe(()=>[c(D,{name:"analytics"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.eventAnalysis"))+" "+Pe(Ae(u).length>0?`(${Ae(u).length})`:""),1)]),_:1},8,["disabled"])]),_:1}),ge("div",DUo,[c(M,{modelValue:Ae(r),"onUpdate:modelValue":T[0]||(T[0]=F=>Fn(r)?r.value=F:null),placeholder:E.$t("workbench.novel.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(P,{onClick:g,style:{"margin-left":"10px"}},{icon:Oe(()=>[c(D,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.search")),1)]),_:1})])],512),c(I,{ref:"tableRef",style:{"margin-top":"10px",flex:"1",display:"flex","flex-direction":"column"},columns:Ae(o),data:Ae(l),"selected-row-keys":Ae(u),"select-on-row-click":!0,keyboardRowHover:!1,"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(h),loading:Ae(d),"lazy-load":"",resizable:"","table-layout":"fixed",onSelectChange:A,onPageChange:v},{startTime:Oe(({row:F})=>[ge("span",null,Pe(Ae(JB)(F.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),event:Oe(({row:F})=>[F.eventState==0?(xe(),Ut(B,{key:0,size:"small",text:E.$t("workbench.novel.generating")},null,8,["text"])):F.eventState==-1&&!F.event?(xe(),Ut(R,{key:1,content:F==null?void 0:F.errorReason},{default:Oe(()=>[ge("div",BUo,Pe(E.$t("workbench.novel.genFailed")),1)]),_:1},8,["content"])):(xe(),Ge("div",RUo,Pe(F.event||E.$t("workbench.novel.none")),1))]),operation:Oe(({row:F})=>[c(Q,{size:0},{default:Oe(()=>[c(P,{theme:"primary",disabled:F.eventState==0,variant:"text",onClick:j=>b(F)},{icon:Oe(()=>[c(D,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.edit")),1)]),_:1},8,["disabled","onClick"]),c(P,{theme:"danger",disabled:F.eventState==0,variant:"text",onClick:j=>w(F)},{icon:Oe(()=>[c(D,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["columns","data","selected-row-keys","pagination","loading"]),c(CUo,{modelValue:Ae(f),"onUpdate:modelValue":T[1]||(T[1]=F=>Fn(f)?f.value=F:null),onSelect:m},null,8,["modelValue"]),c(EUo,{modelValue:Ae(s),"onUpdate:modelValue":T[2]||(T[2]=F=>Fn(s)?s.value=F:null),formData:Ae(a),onSelect:m},null,8,["modelValue","formData"])],512)}}}),MUo=oo(IUo,[["__scopeId","data-v-311980c9"]]),PUo=Object.freeze(Object.defineProperty({__proto__:null,default:MUo},Symbol.toStringTag,{value:"Module"})),FUo={class:"addAssets"},NUo={class:"data"},UUo=Je({__name:"addAssets",props:Fc({type:{},title:{},formData:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["getFilteredData"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=e,o=Pf(e,"modelValue"),s=fe({name:[{required:!0,message:$t("workbench.assets.add.nameRequired"),trigger:"blur"}],describe:[{required:!0,message:$t("workbench.assets.add.describeRequired"),trigger:"blur"}],remark:[{required:!0,message:$t("workbench.assets.add.remarkRequired"),trigger:"blur"}]});function a(){o.value=!1}const l=fe(),d=t;function u(){var h;(h=l.value)==null||h.validate().then(async()=>{var g;if(r.formData.id!==0){await mn.post("/assets/updateAssets",{id:r.formData.id,name:r.formData.name,describe:r.formData.describe,remark:r.formData.remark,prompt:r.formData.prompt}).then(()=>{window.$message.success($t("workbench.assets.add.updateSuccess")),d("getFilteredData"),o.value=!1});return}else mn.post("/assets/addAssets",{name:r.formData.name,describe:r.formData.describe,remark:r.formData.remark,type:r.type,projectId:(g=n.value)==null?void 0:g.id,prompt:r.formData.prompt}).then(()=>{window.$message.success($t("workbench.assets.add.addSuccess")),d("getFilteredData"),o.value=!1})})}return(h,g)=>{const m=Wu,v=p2,f=c2,k=A2,A=gc;return xe(),Ge("div",FUo,[c(A,{visible:o.value,"onUpdate:visible":g[4]||(g[4]=p=>o.value=p),closable:!1,width:"40vw",header:r.title,maskClosable:!1,onCloseBtnClick:a,onConfirm:u,onCancel:a},{default:Oe(()=>[ge("div",NUo,[c(k,{data:r.formData,rules:Ae(s),ref_key:"formRef",ref:l},{default:Oe(()=>[c(v,{label:h.$t("workbench.assets.add.name"),name:"name"},{default:Oe(()=>[c(m,{modelValue:r.formData.name,"onUpdate:modelValue":g[0]||(g[0]=p=>r.formData.name=p),placeholder:h.$t("workbench.assets.add.namePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:h.$t("workbench.assets.add.describe"),name:"describe"},{default:Oe(()=>[c(f,{modelValue:r.formData.describe,"onUpdate:modelValue":g[1]||(g[1]=p=>r.formData.describe=p),placeholder:h.$t("workbench.assets.add.describePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:h.$t("workbench.assets.add.remark"),name:"remark"},{default:Oe(()=>[c(m,{modelValue:r.formData.remark,"onUpdate:modelValue":g[2]||(g[2]=p=>r.formData.remark=p),placeholder:h.$t("workbench.assets.add.remarkPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),r.type!=="clip"?(xe(),Ut(v,{key:0,label:h.$t("workbench.assets.add.prompt"),name:"prompt"},{default:Oe(()=>[c(f,{modelValue:r.formData.prompt,"onUpdate:modelValue":g[3]||(g[3]=p=>r.formData.prompt=p),autosize:{minRows:3,maxRows:5},placeholder:h.$t("workbench.assets.add.promptPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])):nn("",!0)]),_:1},8,["data","rules"])])]),_:1},8,["visible","header"])])}}}),jUo=oo(UUo,[["__scopeId","data-v-46105082"]]),WUo={class:"generateImage"},VUo={class:"data f"},zUo={class:"uploadReferenceImage"},HUo={class:"jb"},$Uo={style:{"font-size":"16px","font-weight":"900"}},XUo={class:"upload"},GUo={class:"rawPicturePrompt"},YUo={class:"jb"},ZUo={style:{"font-size":"16px","font-weight":"900"}},qUo={style:{"margin-left":"5px","font-size":"13px"}},KUo={class:"input"},JUo={class:"selectModel f"},ejo={style:{width:"60%"}},tjo={style:{"font-size":"16px","font-weight":"900"}},njo={style:{width:"40%","margin-left":"15px"}},ijo={style:{"font-size":"16px","font-weight":"900"}},rjo={class:"generateButton",style:{"margin-top":"20px"}},ojo={class:"resultImages",style:{gap:"20px","flex-wrap":"wrap"}},sjo={class:"image f w"},ajo=["onClick","onMouseenter"],ljo={key:0,class:"generating-overlay f ac jc"},cjo={key:1,class:"failed-overlay f ac jc"},djo={style:{"text-align":"center"}},ujo={style:{"margin-top":"10px",color:"#d0021b","font-weight":"bold"}},hjo={class:"preview"},fjo={class:"selected"},gjo={class:"delImage"},mjo={class:"customUpload"},kjo={class:"uploadPlaceholder f ac jc",style:{width:"180px",height:"180px",border:"2px dashed #d9d9d9","border-radius":"20px",cursor:"pointer"}},vjo={class:"keep"},Ajo=Je({__name:"generateImage",props:Fc({formData:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["update"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=e,o=Pf(e,"modelValue");function s(){o.value=!1,u.value=!1,E(),f("update")}const a=fe([]),l=fe(!1),d=fe(!1),u=fe(!1),h=fe(""),g=fe(""),m=fe(!1);async function v(){var M;m.value=!0;try{const{data:B}=await mn.post("/assetsGenerate/polishAssetsPrompt",{projectId:(M=n.value)==null?void 0:M.id,assetsId:r.formData.id,type:r.formData.type??"props",name:r.formData.name,describe:r.formData.describe?r.formData.describe:$t("workbench.assets.noDescription")});window.$message.success($t("workbench.assets.gen.promptSuccess")),B.assetsId===r.formData.id&&(r.formData.prompt=B.prompt)}catch(B){window.$message.error(B.message??$t("workbench.assets.gen.promptFail"))}finally{m.value=!1}}const f=t,k=fe("1K");async function A(){var M;if(!r.formData.prompt){window.$message.error($t("workbench.assets.gen.fillPrompt"));return}if(!k.value){window.$message.error($t("workbench.assets.gen.pickResolution"));return}if(!h.value){window.$message.error($t("workbench.assets.gen.pickModel"));return}u.value=!0;try{let B="";if(a.value.length>0){const R=a.value[0].raw;R instanceof File&&(B=await new Promise(I=>{const F=new FileReader;F.onload=j=>{var H;const W=(H=j.target)==null?void 0:H.result;I(W)},F.readAsDataURL(R)}))}await mn.post("/assetsGenerate/generateAssets",{type:r.formData.type??"props",projectId:(M=n.value)==null?void 0:M.id,name:r.formData.name??$t("workbench.assets.gen.unnamed"),base64:B,prompt:r.formData.prompt,model:h.value,id:r.formData.id,resolution:k.value}),window.$message.success($t("workbench.assets.gen.assetGenSuccess")),await T()}catch(B){window.$message.error(B.message??$t("workbench.assets.gen.assetGenFail")),T()}finally{u.value=!1}}const p=fe([]);function b(M){var B;if(M.length>0){const R=((B=M[0])==null?void 0:B.raw)||M[0];if(R instanceof File){const I=new FileReader;I.onload=F=>{var W;const j=(W=F.target)==null?void 0:W.result;w.value.push({id:"",src:j,state:"已完成"}),window.$message.success($t("workbench.assets.gen.uploadOk")),p.value=[]},I.readAsDataURL(R)}}}const w=fe([]),O=fe(!1),y=fe();function C(M){O.value=!0,y.value=M}const _=fe(null),S=fe(null);pt(()=>o.value,M=>{M&&(a.value=[],g.value="",_.value=null,S.value=null,u.value=!1,T())});let L=null;function E(){L&&(clearTimeout(L),L=null)}async function T(){const{data:M}=await mn.post("/assets/getImage",{assetsId:r.formData.id}),B=M.tempAssets.map(F=>({id:F.id,src:F.filePath,state:F.state,selected:F.selected??!1}));w.value=B;const R=B.findIndex(F=>F.selected);R!==-1&&(_.value=R);const I=B.some(F=>F.state==="生成中");E(),I&&o.value&&(L=setTimeout(()=>T(),3e3))}function D(M){w.value[M].state==="已完成"&&(_.value=M,window.$message.success($t("workbench.assets.gen.imageSelected")))}function P(M,B){console.log("%c Line:343 🍩 id","background:#4fff4B",M);const R=fo.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{try{mn.post("/assets/delImage",{id:M}),window.$message.success($t("workbench.assets.deleteSuccess")),w.value.splice(B,1),_.value===B?_.value=null:_.value!==null&&_.value>B&&_.value--,R.destroy()}catch{window.$message.error($t("workbench.assets.deleteFail")),R.destroy()}}})}async function Q(){var M;if(_.value!==null){const B=w.value[_.value],R=!B.id;await mn.post("/assets/saveAssets",{id:r.formData.id,base64:R?B.src:"",type:r.formData.type,prompt:r.formData.prompt,projectId:(M=n.value)==null?void 0:M.id,imageId:R?void 0:Number(B.id)}),window.$message.success($t("workbench.assets.gen.imageSaved")),o.value=!1,f("update")}}return(M,B)=>{const R=Sg,I=X4e,F=_n("i-magic"),j=c2,W=Wc,H=uL,$=pA,G=Si,q=km,re=fW,J=_n("i-close-one"),oe=Zh,se=_n("i-preview-open"),le=_n("i-check-one"),ue=_n("i-delete"),ee=_n("i-plus"),de=hL,z=gc;return xe(),Ge("div",WUo,[c(z,{visible:o.value,"onUpdate:visible":B[7]||(B[7]=Y=>o.value=Y),top:"4vh",width:"80vw",header:M.$t("workbench.assets.gen.header"),maskClosable:!1,footer:!1,onCloseBtnClick:s},{default:Oe(()=>[ge("div",VUo,[c(q,{bordered:!1,style:{width:"40%"}},{default:Oe(()=>[ge("div",zUo,[ge("div",HUo,[ge("span",$Uo,Pe(M.$t("workbench.assets.gen.uploadRef")),1),c(R,null,{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.optional")),1)]),_:1})]),ge("div",XUo,[c(I,{modelValue:Ae(a),"onUpdate:modelValue":B[0]||(B[0]=Y=>Fn(a)?a.value=Y:null),autoUpload:Ae(l),disabled:Ae(u),theme:"image",abridgeName:[10,8],draggable:"",action:"",accept:"image/*",showImageFileName:Ae(d)},null,8,["modelValue","autoUpload","disabled","showImageFileName"])])]),ge("div",GUo,[ge("div",YUo,[ge("span",ZUo,Pe(M.$t("workbench.assets.gen.promptLabel")),1),ge("div",{class:"ac",style:{cursor:"pointer"},onClick:Mr(v,["stop"])},[c(F,{theme:"outline",size:"18"}),ge("span",qUo,Pe(M.$t("workbench.assets.gen.smartGenerate")),1)])]),ge("div",KUo,[c(W,{loading:Ae(m),text:M.$t("workbench.assets.gen.generatingPrompt")},{default:Oe(()=>[c(j,{modelValue:r.formData.prompt,"onUpdate:modelValue":B[1]||(B[1]=Y=>r.formData.prompt=Y),placeholder:M.$t("workbench.assets.gen.promptPlaceholder"),autosize:{minRows:15,maxRows:15},disabled:Ae(u)},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["loading","text"])])]),ge("div",JUo,[ge("div",ejo,[ge("span",tjo,Pe(M.$t("workbench.assets.gen.selectModel")),1),c(T8,{modelValue:Ae(h),"onUpdate:modelValue":B[2]||(B[2]=Y=>Fn(h)?h.value=Y:null),type:"image"},null,8,["modelValue"])]),ge("div",njo,[ge("span",ijo,Pe(M.$t("workbench.assets.gen.selectResolution")),1),c($,{modelValue:Ae(k),"onUpdate:modelValue":B[3]||(B[3]=Y=>Fn(k)?k.value=Y:null)},{default:Oe(()=>[c(H,{key:"1K",label:"1K",value:"1K"}),c(H,{key:"2K",label:"2K",value:"2K"}),c(H,{key:"4K",label:"4K",value:"4K"})]),_:1},8,["modelValue"])])]),ge("div",rjo,[c(G,{theme:"primary",size:"large",block:"",loading:Ae(u),onClick:A},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.generateBtn")),1)]),_:1},8,["loading"])])]),_:1}),c(re,{layout:"vertical",style:{height:"700px"}}),c(q,{title:M.$t("workbench.assets.gen.resultTitle"),bordered:!1,style:{width:"60%"}},{actions:Oe(()=>[Ae(w).length?(xe(),Ut(R,{key:0},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.generatedCount",{count:Ae(w).length})),1)]),_:1})):nn("",!0)]),default:Oe(()=>[ge("div",ojo,[ge("div",sjo,[(xe(!0),Ge(sn,null,Bi(Ae(w),(Y,ie)=>(xe(),Ge("div",{key:ie,class:Eo(["resultImage",{"is-selected":Ae(_)===ie,"is-disabled":Y.state!=="已完成"}]),onClick:te=>Y.state==="已完成"?D(ie):null,onMouseenter:te=>S.value=ie,onMouseleave:B[4]||(B[4]=te=>S.value=null)},[Y.state==="生成中"?(xe(),Ge("div",ljo,[c(W,{text:M.$t("workbench.assets.gen.generatingLabel")},null,8,["text"])])):Y.state==="生成失败"&&!Y.src?(xe(),Ge("div",cjo,[ge("div",djo,[c(J,{theme:"filled",size:"40",fill:"#d0021b"}),ge("div",ujo,Pe(M.$t("workbench.assets.gen.genFailed")),1)])])):(xe(),Ut(oe,{key:2,src:Y.src,fit:"cover",style:{width:"100%",height:"100%",borderRadius:"20px"}},{loading:Oe(()=>[c(W)]),_:1},8,["src"])),uu(ge("div",hjo,[c(se,{theme:"outline",size:"25",fill:"#ffffff",onClick:Mr(te=>C(Y.src),["stop"])},null,8,["onClick"])],512),[[h1,Ae(S)===ie&&Y.state==="已完成"]]),uu(ge("div",fjo,[c(le,{theme:"filled",size:"25",fill:"#000"})],512),[[h1,Ae(_)===ie&&Y.state==="已完成"]]),uu(ge("div",gjo,[c(ue,{theme:"outline",size:"20",fill:"#d0021b",onClick:Mr(te=>P(Y.id,ie),["stop"])},null,8,["onClick"])],512),[[h1,Ae(S)===ie]])],42,ajo))),128)),ge("div",mjo,[c(I,{ref:"customUploadRef",action:"",modelValue:Ae(p),"onUpdate:modelValue":B[5]||(B[5]=Y=>Fn(p)?p.value=Y:null),disabled:Ae(u),autoUpload:!1,theme:"custom",accept:"image/*",max:1,onChange:b,showImageFileName:!1},{default:Oe(()=>[ge("div",kjo,[c(ee,{theme:"outline",size:"24",fill:"#4a4a4a"})])]),_:1},8,["modelValue","disabled"])])])]),ge("div",vjo,[c(G,{theme:"primary",size:"large",block:"",disabled:Ae(_)===null,onClick:Q},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.confirmSelect")),1)]),_:1},8,["disabled"])])]),_:1},8,["title"])]),c(de,{modelValue:Ae(O),"onUpdate:modelValue":B[6]||(B[6]=Y=>Fn(O)?O.value=Y:null),images:[Ae(y)]},null,8,["modelValue","images"])]),_:1},8,["visible","header"])])}}}),pjo=oo(Ajo,[["__scopeId","data-v-4d2f2866"]]),bjo={class:"assets"},wjo={class:"data"},Ojo={class:"tabLabel"},yjo={class:"panelContent"},Cjo={class:"toolbar"},_jo={class:"data"},Sjo={class:"generatePrompt"},Ljo={class:"generateImage"},xjo={class:"f ac"},Ejo={class:"assetsList f w"},Tjo={class:"expandedContent"},Qjo={class:"previewCell"},Djo={key:0,class:"imageTrigger generatingImage"},Bjo={class:"generatingLabel"},Rjo=["onClick"],Ijo=["src","alt"],Mjo={key:1,class:"noImage"},Pjo={key:2,class:"imageHoverOverlay"},Fjo={class:"hoverText"},Njo={class:"promptCell"},Ujo={class:"previewCell"},jjo=["onClick"],Wjo=["src","alt"],Vjo={key:1,class:"noImage"},zjo={key:2,class:"imageHoverOverlay"},Hjo={class:"hoverText"},$jo={class:"promptCell"},Xjo={class:"previewCell"},Gjo={key:0,class:"imageTrigger generatingImage"},Yjo={class:"generatingLabel"},Zjo=["onClick"],qjo=["src","alt"],Kjo={key:1,class:"noImage"},Jjo={key:2,class:"imageHoverOverlay"},eWo={class:"hoverText"},tWo={class:"previewCell"},nWo=["onClick"],iWo=["src","alt"],rWo={class:"mediaHoverOverlay"},oWo={class:"hoverText"},sWo=["onClick"],aWo=["src"],lWo={class:"mediaHoverOverlay"},cWo={class:"hoverText"},dWo=["onClick"],uWo={class:"mediaHoverOverlay"},hWo={class:"hoverText"},fWo={key:3,class:"mediaTrigger noMedia"},gWo={class:"mediaPreviewDialog"},mWo=["src"],kWo={key:1,class:"audioWrapper"},vWo={class:"audioIcon"},AWo={class:"audioName"},pWo=["src"],bWo={class:"batch"},wWo=Je({__name:"index",props:{selectorMode:{type:Boolean,default:!1},allowedTypes:{},clipMediaTypes:{},multiple:{type:Boolean,default:!0}},setup(e,{expose:t}){var Se,Ie;const{otherSetting:n}=xs(ku()),r=e;An(()=>{O()}),Qa(()=>{et(),Me()});const{project:o}=xs(ph()),s=[{name:$t("workbench.assets.role"),value:"role",icon:"i-permissions"},{name:$t("workbench.assets.prop"),value:"tool",icon:"i-tool"},{name:$t("workbench.assets.scene"),value:"scene",icon:"i-landscape"},{name:$t("workbench.assets.clip"),value:"clip",icon:"i-editing"}],a=fe((Se=r.allowedTypes)!=null&&Se.length?s.filter(ze=>r.allowedTypes.includes(ze.value)):s),l=((Ie=a.value[0])==null?void 0:Ie.value)||"role",d=fe(l),u=fe(""),h={role:$t("workbench.assets.role"),tool:$t("workbench.assets.prop"),scene:$t("workbench.assets.scene"),clip:$t("workbench.assets.clip")},g=fe([]),m=fe([]),v=fe([]),f=fe(!1),k=ze=>{const Ze=ke(ze);return(Ze==null?void 0:Ze.promptState)==="生成中"||(Ze==null?void 0:Ze.state)==="生成中"},A=fe([]),p=fe({page:1,pageSize:10,total:0,showJumper:!0});function b(){p.value.page=1,w(d.value)}async function w(ze){var Ze,gt;try{f.value=!0;const{data:St}=await mn.post("/assets/getAssetsApi",{projectId:(Ze=o.value)==null?void 0:Ze.id,type:ze,name:u.value||void 0,page:p.value.page,limit:p.value.pageSize});return A.value=St.data||[],ze==="clip"&&((gt=r.clipMediaTypes)!=null&>.length)&&(A.value=A.value.filter(Pt=>{const dn=Y(Pt.src);return r.clipMediaTypes.includes(dn)})),p.value.total=St.total||0,A.value}catch(St){console.error("加载资产数据失败:",St),A.value=[],p.value.total=0}finally{f.value=!1}}async function O(){d.value==="role"||d.value==="tool"||d.value==="scene"||d.value,await w(d.value)}function y(ze){u.value="",g.value=[],m.value=[],v.value=[],p.value.page=1,O()}const C=fe({id:0,name:"",describe:"",remark:"",src:"",prompt:""}),_=fe(!1),{open:S,onChange:L,onCancel:E}=cOn({multiple:!1,reset:!0,accept:".png,.jpg,.jpeg,.mp3,.mp4"});async function T(ze){if(ze==="clip"){const Ze=await new Promise(Pt=>{S(),L(dn=>Pt(dn)),E(()=>Pt(null))});if(!(Ze!=null&&Ze.length))return;const gt=Ze[0],St=new FileReader;St.onload=async Pt=>{var on;const dn=St.result;await mn.post("/assets/uploadClip",{projectId:(on=o.value)==null?void 0:on.id,base64Data:dn,name:gt.name}),window.$message.success($t("workbench.assets.uploadSuccess")),w(d.value)},St.readAsDataURL(gt)}else _.value=!0,C.value={id:0,name:"",describe:"",remark:"",prompt:""}}const D=fe(!1),P=fe(""),Q=fe("1K"),M=fe("");function B(ze){M.value=ze===1?$t("workbench.assets.batchGenPrompt"):$t("workbench.assets.batchGenImage"),D.value=!0}function R(){M.value===$t("workbench.assets.batchGenPrompt")?F():M.value===$t("workbench.assets.batchGenImage")&&j()}function I(){const ze=[];return A.value.forEach(Ze=>{var gt;(gt=Ze.sonAssets)!=null&>.length&&Ze.sonAssets.forEach(St=>{m.value.includes(St.id)&&ze.push(St)})}),ze}async function F(){var St;const ze=A.value.filter(Pt=>g.value.includes(Pt.id)),Ze=I(),gt=[...ze,...Ze];if(gt.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}ze.forEach(Pt=>{const dn=A.value.find(on=>on.id===Pt.id);dn&&(dn.promptState="生成中")}),Ze.forEach(Pt=>{A.value.forEach(dn=>{var pn;const on=(pn=dn.sonAssets)==null?void 0:pn.find(ni=>ni.id===Pt.id);on&&(on.promptState="生成中")})}),g.value=g.value.filter(Pt=>!ze.some(dn=>dn.id===Pt)),m.value=m.value.filter(Pt=>!Ze.some(dn=>dn.id===Pt)),D.value=!1;try{await mn.post("/assetsGenerate/batchPolishAssetsPrompt",{projectId:(St=o.value)==null?void 0:St.id,concurrentCount:n.value.assetsBatchGenereateSize,items:gt.map(Pt=>({assetsId:Pt.id,type:Pt.type??"props",name:Pt.name,describe:Pt.describe?Pt.describe:$t("workbench.assets.noDescription")}))})}catch{window.$message.error($t("workbench.assets.promptGenFail"))}}async function j(){var on;const ze=A.value.filter(pn=>g.value.includes(pn.id)),Ze=I(),gt=[...ze,...Ze];if(gt.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}if(!P.value){window.$message.error($t("workbench.assets.selectModel"));return}if(!Q.value){window.$message.error($t("workbench.assets.selectResolution"));return}const St=gt.filter(pn=>pn.prompt?!0:(window.$message.warning($t("workbench.assets.noPromptForImage",{name:pn.name})),!1));if(St.length===0)return;const Pt=St.filter(pn=>g.value.includes(pn.id)),dn=St.filter(pn=>m.value.includes(pn.id));Pt.forEach(pn=>{const ni=A.value.find(Zn=>Zn.id===pn.id);ni&&(ni.state="生成中")}),dn.forEach(pn=>{A.value.forEach(ni=>{var Pi;const Zn=(Pi=ni.sonAssets)==null?void 0:Pi.find(rr=>rr.id===pn.id);Zn&&(Zn.state="生成中")})}),g.value=g.value.filter(pn=>!St.some(ni=>ni.id===pn)),m.value=m.value.filter(pn=>!St.some(ni=>ni.id===pn)),D.value=!1;try{await mn.post("/assetsGenerate/batchGenerateImageAssets",{projectId:(on=o.value)==null?void 0:on.id,model:P.value,resolution:Q.value,concurrentCount:n.value.assetsBatchGenereateSize,items:St.map(pn=>({id:pn.id,type:pn.type??"props",name:pn.name??$t("workbench.cornerScape.unnamed"),prompt:pn.prompt||pn.describe}))})}catch(pn){window.$message.error($t("workbench.assets.imageGenFail",{name:"",error:pn.message??""})),St.forEach(ni=>{const Zn=A.value.find(Pi=>Pi.id===ni.id);Zn?Zn.state="生成失败":A.value.forEach(Pi=>{var Hr;const rr=(Hr=Pi.sonAssets)==null?void 0:Hr.find(Bo=>Bo.id===ni.id);rr&&(rr.state="生成失败")})})}}function W(){const ze=A.value.filter(gt=>g.value.includes(gt.id));if(ze.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}const Ze=fo.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmBatchDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{await mn.post("/assets/batchDelete",{id:ze.map(gt=>gt.id)}),window.$message.success($t("workbench.assets.deleteSuccess")),w(d.value),Ze.destroy()}})}const H=r.multiple?"multiple":"single",$=[{colKey:"row-select",type:H,width:50,align:"center",fixed:"left",disabled:ze=>{var Ze;return k(((Ze=ze.row)==null?void 0:Ze.id)??ze.id)}},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"previewWithLoading"},{colKey:"name",title:$t("workbench.assets.colName"),width:100,align:"left",ellipsis:!0},{colKey:"prompt",title:$t("workbench.assets.colPrompt"),width:200,align:"left",ellipsis:!0,cell:"prompt"},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:200,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:200,align:"left",ellipsis:!0},{colKey:"startTime",title:$t("workbench.assets.colCreateTime"),width:200,align:"center",cell:"startTime"},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:280,align:"center",fixed:"right",cell:"operation"}],G=[{colKey:"row-select",type:H,width:50,align:"center",fixed:"left"},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"previewWithLoading"},{colKey:"name",title:$t("workbench.assets.colName"),width:100,align:"left",ellipsis:!0},{colKey:"prompt",title:$t("workbench.assets.colPrompt"),width:200,align:"left",ellipsis:!0,cell:"prompt"},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:100,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:150,align:"left",ellipsis:!0},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:280,align:"center",fixed:"right",cell:"operation"}],q=[{colKey:"row-select",type:"multiple",width:50,align:"center",fixed:"left"},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"preview"},{colKey:"name",title:$t("workbench.assets.colName"),width:200,align:"left",ellipsis:!0},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:200,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:200,align:"left",ellipsis:!0},{colKey:"startTime",title:$t("workbench.assets.colCreateTime"),width:200,align:"center",cell:"startTime"},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:180,align:"center",fixed:"right",cell:"operation"}];function re(ze){const Ze=ze.filter(dn=>!k(dn)),gt=g.value;r.multiple?g.value=Ze:g.value=Ze.length>0?[Ze[Ze.length-1]]:[];const St=g.value.filter(dn=>!gt.includes(dn)),Pt=gt.filter(dn=>!g.value.includes(dn));St.forEach(dn=>{var pn;const on=A.value.find(ni=>ni.id===dn);if((pn=on==null?void 0:on.sonAssets)!=null&&pn.length){const ni=on.sonAssets.map(Pi=>Pi.id),Zn=new Set([...m.value,...ni]);m.value=Array.from(Zn)}}),Pt.forEach(dn=>{var pn;const on=A.value.find(ni=>ni.id===dn);if((pn=on==null?void 0:on.sonAssets)!=null&&pn.length){const ni=new Set(on.sonAssets.map(Zn=>Zn.id));m.value=m.value.filter(Zn=>!ni.has(Zn))}})}function J(ze){r.multiple?m.value=ze:m.value=ze.length>0?[ze[ze.length-1]]:[]}function oe(ze){ze.length>3&&(ze=ze.slice(-3)),v.value=ze}function se(ze){p.value.page=ze.current,p.value.pageSize=ze.pageSize,O()}const le=fe(!1),ue=fe({id:void 0,name:"",describe:"",type:"",prompt:"",src:""});function ee(ze){ue.value={id:ze.id,name:ze.name,describe:ze.describe,type:ze.type,prompt:ze.prompt,src:ze.src},le.value=!0}function de(ze){C.value={...ze},_.value=!0}function z(ze){const Ze=fo.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{try{await mn.post("/assets/delAssets",{id:ze.id}),window.$message.success($t("workbench.assets.deleteSuccess")),w(d.value),Ze.destroy()}catch(gt){console.error("删除资产失败:",gt),window.$message.error($t("workbench.assets.deleteFail")),Ze.destroy()}}})}t({selectedRowKeys:g,selectedSubRowKeys:m,tableData:A});function Y(ze){var gt;if(!ze)return"unknown";const Ze=((gt=ze.split("?")[0].split(".").pop())==null?void 0:gt.toLowerCase())??"";return["png","jpg","jpeg","gif","webp","bmp","svg"].includes(Ze)?"image":["mp4","webm","ogg","mov","avi","mkv"].includes(Ze)?"video":["mp3","wav","ogg","aac","flac","m4a"].includes(Ze)?"audio":"unknown"}const ie=fe(!1),te=fe(""),Z=fe("unknown"),he=fe("");function pe(ze,Ze){ze&&(te.value=ze,Z.value=Y(ze),he.value=Ze,ie.value=!0)}function Ce(){ie.value=!1,te.value=""}function Qe(){const ze=[];return A.value.forEach(Ze=>{var gt;ze.push(Ze),(gt=Ze.sonAssets)!=null&>.length&&ze.push(...Ze.sonAssets)}),ze}function ke(ze){var Ze;for(const gt of A.value){if(gt.id===ze)return gt;const St=(Ze=gt.sonAssets)==null?void 0:Ze.find(Pt=>Pt.id===ze);if(St)return St}}const me=X(()=>Qe().filter(ze=>ze.promptState=="生成中")),_e=X(()=>Qe().filter(ze=>ze.state==="生成中"));let Te=null,De=null;async function Ye(){if(me.value.length===0)return;const ze=me.value.map(Ze=>Ze.id);try{const{data:Ze}=await mn.post("/assets/pollingPromptAssets",{ids:ze});Array.isArray(Ze)&&Ze.length&&(Ze.forEach(gt=>{const St=ke(gt.id);St&&(St.promptState=gt.promptState,gt.prompt!==void 0&&(St.prompt=gt.prompt))}),w(d.value))}catch(Ze){console.error("轮询提示词状态失败:",Ze)}}async function ot(){if(_e.value.length===0)return;const ze=_e.value.map(Ze=>Ze.id);try{const{data:Ze}=await mn.post("/assets/pollingImageAssets",{ids:ze});Array.isArray(Ze)&&Ze.length&&(Ze.forEach(gt=>{const St=ke(gt.id);St&&(St.state=gt.state,gt.filePath!==void 0&&(St.filePath=gt.filePath),gt.src!==void 0&&(St.src=gt.src),!gt.src&>.filePath&>.state!=="生成中"&&(St.src=gt.filePath))}),w(d.value))}catch(Ze){console.error("轮询图片生成状态失败:",Ze)}}function We(){Te||(Te=setInterval(async()=>{if(me.value.length===0){et();return}await Ye()},3e3))}function et(){Te&&(clearInterval(Te),Te=null)}function st(){De||(De=setInterval(async()=>{if(_e.value.length===0){Me();return}await ot()},3e3))}function Me(){De&&(clearInterval(De),De=null)}return pt(me,ze=>{ze.length>0?We():et()}),pt(_e,ze=>{ze.length>0?st():Me()}),(ze,Ze)=>{const gt=dL,St=Si,Pt=y1,dn=Ev,on=Wu,pn=Wc,ni=hL,Zn=_n("i-magic"),Pi=jne,rr=Mne,Hr=Ine,Bo=gc,lo=p2,Fr=uL,is=pA,yi=A2;return xe(),Ge("div",bjo,[ge("div",wjo,[c(Hr,{modelValue:Ae(d),"onUpdate:modelValue":Ze[3]||(Ze[3]=Gt=>Fn(d)?d.value=Gt:null),onChange:y},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(a),(Gt,gi)=>(xe(),Ut(rr,{key:gi,value:Gt.value},{label:Oe(()=>[ge("div",Ojo,[(xe(),Ut(Bd(Gt.icon),{theme:"outline",size:"20"})),ge("span",null,Pe(Gt.name),1)])]),default:Oe(()=>[ge("div",yjo,[ge("div",Cjo,[c(dn,null,{default:Oe(()=>[c(St,{theme:"primary",onClick:ri=>T(Gt.value)},{icon:Oe(()=>[c(gt,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.addPrefix"))+Pe(Gt.name),1)]),_:2},1032,["onClick"]),c(Pt,{placement:"bottom"},{content:Oe(()=>[ge("div",_jo,[ge("div",Sjo,[ge("span",{onClick:Ze[0]||(Ze[0]=ri=>B(1))},Pe(ze.$t("workbench.assets.generatePrompt")),1)]),ge("div",Ljo,[ge("span",{onClick:Ze[1]||(Ze[1]=ri=>B(2))},Pe(ze.$t("workbench.assets.generateImage")),1)])])]),default:Oe(()=>[Ae(d)!="clip"?(xe(),Ut(St,{key:0,theme:"primary"},{icon:Oe(()=>[c(gt,{name:"indent-left"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.batchGenerate")),1)]),_:1})):nn("",!0)]),_:1}),c(St,{theme:"default",variant:"outline",onClick:W},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.batchDelete")),1)]),_:1})]),_:2},1024),ge("div",xjo,[c(on,{modelValue:Ae(u),"onUpdate:modelValue":Ze[2]||(Ze[2]=ri=>Fn(u)?u.value=ri:null),placeholder:ze.$t("workbench.assets.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(St,{style:{"margin-left":"5px"},onClick:b},{icon:Oe(()=>[c(gt,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.search")),1)]),_:1})])]),ge("div",Ejo,[Ae(d)!=="clip"?(xe(),Ut(Pi,{key:0,columns:$,data:Ae(A),"selected-row-keys":Ae(g),"expanded-row-keys":Ae(v),"row-key":"id",hover:"",height:"calc(100vh - 300px)",stripe:"",size:"small",pagination:Ae(p),loading:Ae(f),"lazy-load":"","table-layout":"fixed","select-on-row-click":!1,onSelectChange:re,onExpandChange:oe,onPageChange:se},{expandedRow:Oe(({row:ri})=>[ge("div",Tjo,[c(Pi,{columns:G,data:ri.sonAssets||[],"selected-row-keys":Ae(m),"row-key":"id",hover:"",size:"small","table-layout":"fixed","select-on-row-click":!1,onSelectChange:J},{previewWithLoading:Oe(({row:tr})=>[ge("div",Qjo,[tr.state==="生成中"?(xe(),Ge("div",Djo,[c(pn,{size:"small"}),ge("span",Bjo,Pe(ze.$t("workbench.assets.generating")),1)])):(xe(),Ut(ni,{key:1,images:[tr.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:ht})=>[ge("div",{class:"imageTrigger",onClick:At=>tr.src&&ht()},[tr.src?(xe(),Ge("img",{key:0,src:tr.src,alt:tr.name,class:"previewImage"},null,8,Ijo)):(xe(),Ge("div",Mjo,[c(gt,{name:"image",size:"24px"})])),tr.src?(xe(),Ge("div",Pjo,[c(gt,{name:"browse",size:"20px"}),ge("span",Fjo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,Rjo)]),_:2},1032,["images"]))])]),prompt:Oe(({row:tr})=>[ge("div",Njo,[tr.promptState==="生成中"?(xe(),Ut(pn,{key:0,size:"small",style:{"margin-right":"4px"}})):nn("",!0),ge("span",{class:Eo({"generating-text":tr.promptState==="生成中"})},Pe(tr.prompt),3)])]),operation:Oe(({row:tr})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",disabled:k(tr.id),onClick:ht=>ee(tr)},{icon:Oe(()=>[c(Zn,{size:18})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.generate")),1)]),_:1},8,["disabled","onClick"]),c(St,{theme:"primary",variant:"text",onClick:ht=>de(tr)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",disabled:k(tr.id),onClick:ht=>z(tr)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys"])])]),preview:Oe(({row:ri})=>[ge("div",Ujo,[c(ni,{images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"imageTrigger",onClick:ht=>ri.src&&tr()},[ri.src?(xe(),Ge("img",{key:0,src:ri.src,alt:ri.name,class:"previewImage"},null,8,Wjo)):(xe(),Ge("div",Vjo,[c(gt,{name:"image",size:"24px"})])),ri.src?(xe(),Ge("div",zjo,[c(gt,{name:"browse",size:"20px"}),ge("span",Hjo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,jjo)]),_:2},1032,["images"])])]),prompt:Oe(({row:ri})=>[ge("div",$jo,[ri.promptState==="生成中"?(xe(),Ut(pn,{key:0,size:"small",style:{"margin-right":"4px"}})):nn("",!0),ge("span",{class:Eo({"generating-text":ri.promptState==="生成中"})},Pe(ri.prompt),3)])]),previewWithLoading:Oe(({row:ri})=>[ge("div",Xjo,[ri.state==="生成中"?(xe(),Ge("div",Gjo,[c(pn,{size:"small"}),ge("span",Yjo,Pe(ze.$t("workbench.assets.generating")),1)])):(xe(),Ut(ni,{key:1,images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"imageTrigger",onClick:ht=>ri.src&&tr()},[ri.src?(xe(),Ge("img",{key:0,src:ri.src,alt:ri.name,class:"previewImage"},null,8,qjo)):(xe(),Ge("div",Kjo,[c(gt,{name:"image",size:"24px"})])),ri.src?(xe(),Ge("div",Jjo,[c(gt,{name:"browse",size:"20px"}),ge("span",eWo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,Zjo)]),_:2},1032,["images"]))])]),startTime:Oe(({row:ri})=>[ge("span",null,Pe(Ae(JB)(ri.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),operation:Oe(({row:ri})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",disabled:k(ri.id),onClick:tr=>ee(ri)},{icon:Oe(()=>[c(Zn,{size:18})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.generate")),1)]),_:1},8,["disabled","onClick"]),c(St,{theme:"primary",variant:"text",onClick:tr=>de(ri)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",disabled:k(ri.id),onClick:tr=>z(ri)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])):nn("",!0),Ae(d)=="clip"?(xe(),Ut(Pi,{key:1,columns:q,data:Ae(A),"selected-row-keys":Ae(g),"expanded-row-keys":Ae(v),"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(p),loading:Ae(f),"lazy-load":"","table-layout":"fixed",onSelectChange:re,onExpandChange:oe,onPageChange:se},{preview:Oe(({row:ri})=>[ge("div",tWo,[Y(ri.src)==="image"?(xe(),Ut(ni,{key:0,images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"mediaTrigger",onClick:ht=>ri.src&&tr()},[ge("img",{src:ri.src,alt:ri.name},null,8,iWo),ge("div",rWo,[c(gt,{name:"browse",size:"20px"}),ge("span",oWo,Pe(ze.$t("workbench.assets.preview")),1)])],8,nWo)]),_:2},1032,["images"])):Y(ri.src)==="video"?(xe(),Ge("div",{key:1,class:"mediaTrigger videoThumb",onClick:tr=>pe(ri.src,ri.name)},[ge("video",{src:ri.src,class:"thumbVideo"},null,8,aWo),ge("div",lWo,[c(gt,{name:"play-circle",size:"24px"}),ge("span",cWo,Pe(ze.$t("workbench.assets.play")),1)])],8,sWo)):Y(ri.src)==="audio"?(xe(),Ge("div",{key:2,class:"mediaTrigger audioThumb",onClick:tr=>pe(ri.src,ri.name)},[c(gt,{name:"music",size:"28px"}),ge("div",uWo,[c(gt,{name:"play-circle",size:"24px"}),ge("span",hWo,Pe(ze.$t("workbench.assets.play")),1)])],8,dWo)):(xe(),Ge("div",fWo,[c(gt,{name:"image",size:"24px"})]))])]),startTime:Oe(({row:ri})=>[ge("span",null,Pe(Ae(JB)(ri.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),operation:Oe(({row:ri})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",onClick:tr=>de(ri)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",onClick:tr=>z(ri)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])):nn("",!0)])])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),c(jUo,{modelValue:Ae(_),"onUpdate:modelValue":Ze[4]||(Ze[4]=Gt=>Fn(_)?_.value=Gt:null),type:Ae(d),title:h[Ae(d)],formData:Ae(C),onGetFilteredData:Ze[5]||(Ze[5]=Gt=>w(Ae(d)))},null,8,["modelValue","type","title","formData"]),c(pjo,{modelValue:Ae(le),"onUpdate:modelValue":Ze[6]||(Ze[6]=Gt=>Fn(le)?le.value=Gt:null),onUpdate:O,formData:Ae(ue)},null,8,["modelValue","formData"]),c(Bo,{visible:Ae(ie),"onUpdate:visible":Ze[7]||(Ze[7]=Gt=>Fn(ie)?ie.value=Gt:null),header:Ae(he)||ze.$t("workbench.assets.mediaPreview"),footer:!1,width:"600px",placement:"center",destroyOnClose:"",onClose:Ce},{default:Oe(()=>[ge("div",gWo,[Ae(Z)==="video"?(xe(),Ge("video",{key:0,src:Ae(te),controls:"",autoplay:"",class:"mediaPlayer videoPlayer"},null,8,mWo)):Ae(Z)==="audio"?(xe(),Ge("div",kWo,[ge("div",vWo,[c(gt,{name:"music",size:"64px"})]),ge("p",AWo,Pe(Ae(he)),1),ge("audio",{src:Ae(te),controls:"",autoplay:"",class:"mediaPlayer audioPlayer"},null,8,pWo)])):nn("",!0)])]),_:1},8,["visible","header"]),c(Bo,{visible:Ae(D),"onUpdate:visible":Ze[10]||(Ze[10]=Gt=>Fn(D)?D.value=Gt:null),header:Ae(M),width:"600px",top:"10vh",placement:"center",destroyOnClose:"",onConfirm:R,onClose:Ze[11]||(Ze[11]=Gt=>D.value=!1)},{default:Oe(()=>[ge("div",bWo,[ge("span",null,Pe(ze.$t("workbench.assets.confirmBatch",{type:Ae(M)})),1),c(yi,{labelAlign:"top"},{default:Oe(()=>[Ae(M)===ze.$t("workbench.assets.batchGenImage")?(xe(),Ut(lo,{key:0,label:ze.$t("workbench.assets.model"),name:"selectValue"},{default:Oe(()=>[c(T8,{modelValue:Ae(P),"onUpdate:modelValue":Ze[8]||(Ze[8]=Gt=>Fn(P)?P.value=Gt:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(M)===ze.$t("workbench.assets.batchGenImage")?(xe(),Ut(lo,{key:1,label:ze.$t("workbench.assets.resolution"),name:"resolution"},{default:Oe(()=>[c(is,{modelValue:Ae(Q),"onUpdate:modelValue":Ze[9]||(Ze[9]=Gt=>Fn(Q)?Q.value=Gt:null),placeholder:ze.$t("workbench.assets.resolutionPh")},{default:Oe(()=>[c(Fr,{key:"1K",label:"1K",value:"1K"}),c(Fr,{key:"2K",label:"2K",value:"2K"}),c(Fr,{key:"4K",label:"4K",value:"4K"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])):nn("",!0)]),_:1})])]),_:1},8,["visible","header"])])}}}),SUn=oo(wWo,[["__scopeId","data-v-afc25f42"]]),OWo=Object.freeze(Object.defineProperty({__proto__:null,default:SUn},Symbol.toStringTag,{value:"Module"}));function jV(e={}){const{types:t,clipMediaTypes:n,multiple:r=!0,title:o=window.$t("common.selectAssets")}=e;return new Promise(s=>{const a=document.createElement("div");document.body.appendChild(a);const l=fe(!1),d=fe();let u=!1;const h=()=>{p8(null,a),a.remove()},g=v=>{u||(u=!0,l.value=!1,m(),s(v))},m=()=>{var k,A;const v=xn(gc,{visible:l.value,header:o,width:"80%",top:"5vh",destroyOnClose:!0,confirmBtn:window.$t("common.confirm"),cancelBtn:window.$t("common.cancel"),onConfirm:()=>{var C,_,S;const p=((C=d.value)==null?void 0:C.selectedRowKeys)||[],b=((_=d.value)==null?void 0:_.selectedSubRowKeys)||[],w=((S=d.value)==null?void 0:S.tableData)||[],O=w.filter(L=>p.includes(L.id)),y=[];w.forEach(L=>{var E;(E=L.sonAssets)==null||E.forEach(T=>{b.includes(T.id)&&y.push(T)})}),g([...O,...y])},onClose:()=>g([]),onCancel:()=>g([]),onClosed:()=>h()},{default:()=>xn("div",{style:"height: 72vh; overflow: auto;"},[xn(SUn,{ref:d,selectorMode:!0,allowedTypes:t,clipMediaTypes:n,multiple:r})])}),f=(A=(k=document.querySelector("#app"))==null?void 0:k.__vue_app__)==null?void 0:A._context;f&&(v.appContext=f),p8(v,a)};m(),ai(()=>{l.value=!0,m()})})}const yWo={class:"details"},CWo={class:"assets-section"},_Wo={class:"assets-header"},SWo={key:0,class:"assets-list"},LWo={key:1,class:"assets-empty"},xWo=Je({__name:"editScript",props:Fc({item:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["searchScripts"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=fe([]);pt(()=>{var u;return(u=r.item)==null?void 0:u.relatedAssets},u=>{o.value=(u==null?void 0:u.map(h=>({id:h.id,name:h.name})))??[]},{immediate:!0});async function s(){const u=await jV({title:$t("workbench.script.edit.msg.selectAssetsTitle"),types:["role","tool","scene"]});if(u.length){const h=new Set(o.value.map(g=>g.id));for(const g of u)h.has(g.id)||o.value.push({id:g.id,name:g.name})}}function a(u){o.value=o.value.filter(h=>h.id!==u)}const l=t;async function d(){try{await mn.post("/script/updateScript",{id:r.item.id,name:r.item.name,content:r.item.content,assets:o.value.map(u=>u.id)}),window.$message.success($t("workbench.script.edit.msg.updateSuccess"))}catch{window.$message.error($t("workbench.script.edit.msg.updateFailed"))}finally{l("searchScripts")}n.value=!1}return(u,h)=>{const g=Zbi,m=Wu,v=p2,f=c2,k=_n("i-plus"),A=Si,p=Sg,b=A2,w=gc;return xe(),Ge("div",yWo,[c(w,{visible:n.value,"onUpdate:visible":h[2]||(h[2]=O=>n.value=O),width:"60vw",top:"5vh",onConfirm:d},{header:Oe(()=>[c(g,{level:"h4",style:{margin:"0"}},{default:Oe(()=>[Bt(Pe(u.$t("workbench.script.edit.title")),1)]),_:1})]),default:Oe(()=>[c(b,{data:r.item,"label-align":"top",class:"detailsForm"},{default:Oe(()=>[c(v,{label:u.$t("workbench.script.edit.scriptName"),name:"name"},{default:Oe(()=>[c(m,{modelValue:r.item.name,"onUpdate:modelValue":h[0]||(h[0]=O=>r.item.name=O),maxlength:10,placeholder:u.$t("workbench.script.edit.scriptNamePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:u.$t("workbench.script.edit.scriptContent"),name:"content"},{default:Oe(()=>[c(f,{modelValue:r.item.content,"onUpdate:modelValue":h[1]||(h[1]=O=>r.item.content=O),placeholder:u.$t("workbench.script.edit.scriptContentPh"),autosize:{minRows:20,maxRows:20}},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:u.$t("workbench.script.edit.relatedAssets"),name:"assets"},{default:Oe(()=>[ge("div",CWo,[ge("div",_Wo,[c(A,{size:"small",theme:"primary",variant:"outline",onClick:s},{icon:Oe(()=>[c(k)]),default:Oe(()=>[Bt(" "+Pe(u.$t("workbench.script.edit.selectAssets")),1)]),_:1})]),Ae(o).length?(xe(),Ge("div",SWo,[(xe(!0),Ge(sn,null,Bi(Ae(o),O=>(xe(),Ut(p,{key:O.id,closable:"",variant:"light-outline",onClose:y=>a(O.id)},{default:Oe(()=>[Bt(Pe(O.name),1)]),_:2},1032,["onClose"]))),128))])):(xe(),Ge("div",LWo,Pe(u.$t("workbench.script.edit.noAssets")),1))])]),_:1},8,["label"])]),_:1},8,["data"])]),_:1},8,["visible"])])}}}),EWo=oo(xWo,[["__scopeId","data-v-2dc13535"]]),TWo={class:"addScript"},QWo={class:"data"},DWo={class:"section name"},BWo={class:"section-label"},RWo={class:"section upload"},IWo={class:"section-label"},MWo={class:"dragIcon"},PWo={class:"upload-text"},FWo={class:"upload-hint"},NWo={class:"section content"},UWo={class:"section-label"},jWo={class:"section assets-section"},WWo={class:"assets-header"},VWo={class:"section-label"},zWo={key:0,class:"assets-list"},HWo={key:1,class:"assets-empty"},$Wo={class:"dialog-footer"},XWo=Je({__name:"addScript",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:Fc(["searchScripts"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=Pf(e,"modelValue"),o=fe(null),s=fe(""),a=fe([]),l=fe(""),d=fe(!1);function u(){var y;(y=o.value)==null||y.triggerUpload()}async function h(y){const C=await y.arrayBuffer();return y.type==="text/plain"?new TextDecoder().decode(C):(await _p.extractRawText({arrayBuffer:C})).value}async function g(y){const C=y.raw;if(!C)return window.$message.error($t("workbench.script.add.msg.fileReadFailed")),!1;const _=["text/plain","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];if(C.type==="application/msword")return window.$message.warning($t("workbench.script.add.msg.docNotSupported")),a.value=[],!1;if(!_.includes(C.type))return window.$message.error($t("workbench.script.add.msg.unsupportedType")),a.value=[],!1;if(C.size>10*1024*1024)return window.$message.error($t("workbench.script.add.msg.fileTooLarge")),a.value=[],!1;const S=Wh({fullscreen:!0,attach:"body",text:$t("workbench.script.add.msg.parsing")});try{s.value=await h(C),l.value=s.value}catch(L){console.error("文件解析失败:",L),window.$message.error($t("workbench.script.add.msg.parseFailed")),a.value=[]}finally{S.hide()}return!1}async function m(y){var _;const C=(_=y.dataTransfer)==null?void 0:_.files;if(C&&C.length>0){a.value=[];const S=C[0];await g({raw:S})}}const v=fe([]);async function f(){const y=await jV({title:$t("workbench.script.add.msg.selectAssetsTitle"),types:["role","tool","scene"]});if(y.length){const C=new Set(v.value.map(_=>_.id));for(const _ of y)C.has(_.id)||v.value.push({id:_.id,name:_.name})}}function k(y){v.value=v.value.filter(C=>C.id!==y)}function A(){r.value=!1,l.value="",s.value="",a.value=[],v.value=[]}function p(){l.value="",s.value="",a.value=[],v.value=[],r.value=!1}const b=t;async function w(){var y;if(!l.value.trim()){window.$message.warning($t("workbench.script.add.msg.enterContent"));return}if(!O.value.trim()){window.$message.warning($t("workbench.script.add.msg.enterName"));return}d.value=!0;try{await mn.post("/script/addScript",{name:O.value,content:l.value,projectId:(y=n.value)==null?void 0:y.id,assets:v.value.map(C=>C.id)}),window.$message.success($t("workbench.script.add.msg.addSuccess")),p(),b("searchScripts")}catch(C){console.error("添加剧本失败:",C),window.$message.error(C.message??$t("workbench.script.add.msg.addFailed"))}finally{d.value=!1}}const O=fe("");return(y,C)=>{const _=Wu,S=X4e,L=_n("i-upload-one"),E=c2,T=_n("i-plus"),D=Si,P=Sg,Q=gc;return xe(),Ge("div",TWo,[c(Q,{visible:r.value,"onUpdate:visible":C[4]||(C[4]=M=>r.value=M),width:"60vw",top:"5vh",header:y.$t("workbench.script.add.title"),closable:!1,maskClosable:!1},{footer:Oe(()=>[ge("div",$Wo,[c(D,{theme:"default",onClick:A},{default:Oe(()=>[Bt(Pe(y.$t("workbench.script.add.cancel")),1)]),_:1}),c(D,{theme:"primary",loading:Ae(d),onClick:w},{default:Oe(()=>[Bt(Pe(y.$t("workbench.script.add.confirm")),1)]),_:1},8,["loading"])])]),default:Oe(()=>[ge("div",QWo,[ge("div",DWo,[ge("span",BWo,Pe(y.$t("workbench.script.add.scriptName")),1),c(_,{modelValue:Ae(O),"onUpdate:modelValue":C[0]||(C[0]=M=>Fn(O)?O.value=M:null),placeholder:y.$t("workbench.script.add.scriptNamePh")},null,8,["modelValue","placeholder"])]),ge("div",RWo,[ge("span",IWo,Pe(y.$t("workbench.script.add.uploadFile")),1),ge("div",{class:"upload-area",onClick:u,onDragover:C[2]||(C[2]=Mr(()=>{},["prevent"])),onDrop:Mr(m,["prevent"])},[c(S,{ref_key:"uploadRef",ref:o,modelValue:Ae(a),"onUpdate:modelValue":C[1]||(C[1]=M=>Fn(a)?a.value=M:null),theme:"file",multiple:!1,max:1,"before-upload":g,style:{display:"none"}},null,8,["modelValue"]),ge("div",MWo,[c(L,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",PWo,Pe(y.$t("workbench.script.add.dragUpload")),1),ge("p",FWo,Pe(y.$t("workbench.script.add.uploadHint")),1)],32)]),ge("div",NWo,[ge("span",UWo,Pe(y.$t("workbench.script.add.scriptContent")),1),c(E,{modelValue:Ae(l),"onUpdate:modelValue":C[3]||(C[3]=M=>Fn(l)?l.value=M:null),placeholder:y.$t("workbench.script.add.scriptContentPh"),name:"description",autosize:{minRows:12,maxRows:12}},null,8,["modelValue","placeholder"])]),ge("div",jWo,[ge("div",WWo,[ge("span",VWo,Pe(y.$t("workbench.script.add.relatedAssets")),1),c(D,{size:"small",theme:"primary",variant:"outline",onClick:f},{icon:Oe(()=>[c(T)]),default:Oe(()=>[Bt(" "+Pe(y.$t("workbench.script.add.selectAssets")),1)]),_:1})]),Ae(v).length?(xe(),Ge("div",zWo,[(xe(!0),Ge(sn,null,Bi(Ae(v),M=>(xe(),Ut(P,{key:M.id,closable:"",variant:"light-outline",onClose:B=>k(M.id)},{default:Oe(()=>[Bt(Pe(M.name),1)]),_:2},1032,["onClose"]))),128))])):(xe(),Ge("div",HWo,Pe(y.$t("workbench.script.add.noAssets")),1))])])]),_:1},8,["visible","header"])])}}}),GWo=oo(XWo,[["__scopeId","data-v-b9b0384d"]]),YWo={class:"script"},ZWo={class:"actionBar"},qWo={class:"actionBar-left f ac"},KWo={key:0,class:"actionBar-right f ac"},JWo={class:"contentArea"},eVo={key:0,class:"emptyState"},tVo={key:1,class:"scriptsList f w"},nVo=["onClick"],iVo={class:"cardHeader"},rVo={class:"cardTitle"},oVo={class:"content"},sVo={class:"del"},aVo=Je({__name:"index",setup(e){const{otherSetting:t}=xs(ku()),{project:n}=xs(ph()),r=fe([]),o=fe(""),s=fe(!1),a=fe([]),l=fe(!1),d=X(()=>r.value.length>0&&a.value.length===r.value.length);function u(E){const T=a.value.indexOf(E);T===-1?a.value.push(E):a.value.splice(T,1)}function h(E){E?a.value=r.value.map(T=>T.id):a.value=[]}async function g(){var E;try{const T=await mn.post("/script/getScrptApi",{projectId:(E=n.value)==null?void 0:E.id,name:o.value});r.value=T.data}catch(T){console.error("搜索剧本失败:",T),window.$message.error($t("workbench.script.msg.searchFailed"))}}An(g);function m(){g()}function v(){s.value=!0}async function f(){if(!a.value.length){window.$message.warning($t("workbench.script.msg.selectsExport"));return}try{const E=await mn.post("/script/exportScript",{id:a.value},{responseType:"blob"}),T=new Blob([E],{type:"application/zip"}),D=URL.createObjectURL(T),P=document.createElement("a");P.href=D,P.download=`script_${new Date().toISOString().slice(0,10)}.zip`,document.body.appendChild(P),P.click(),document.body.removeChild(P),URL.revokeObjectURL(D),window.$message.success($t("workbench.script.msg.exportSuccess"))}catch(E){console.error("导出剧本失败:",E),window.$message.error(E.message??$t("workbench.script.msg.exportFailed"))}}const k=fe({id:0,name:"",content:""}),A=fe(!1);function p(E){k.value={...E},A.value=!0}async function b(E){const T=fo.confirm({header:$t("workbench.script.msg.deleteHeader"),body:$t("workbench.script.msg.deleteBody"),confirmBtn:$t("workbench.script.msg.deleteConfirm"),cancelBtn:$t("workbench.script.msg.cancel"),theme:"warning",onConfirm:async()=>{try{await mn.post("/script/delScript",{id:[E]}),window.$message.success($t("workbench.script.msg.deleteSuccess")),g(),T.destroy()}catch(D){console.error("删除剧本失败:",D),window.$message.error($t("workbench.script.msg.deleteFailed")),T.destroy()}},onClose:()=>{T.destroy()}})}async function w(){if(!n.value)return window.$message.error($t("workbench.script.msg.projectNotFound"));l.value=!0;try{await mn.post("/script/extractAssets",{scriptIds:a.value,projectId:n.value.id,groupSize:t.value.assetsBatchGenereateSize}),g()}catch(E){window.$message.error((E==null?void 0:E.message)||$t("workbench.script.msg.extractFailed"))}finally{l.value=!1}}async function O(){if(!a.value.length){window.$message.warning($t("workbench.script.msg.selectDelScript"));return}const E=new Set(S.value.map(D=>D.id));if(a.value.some(D=>E.has(D)))return window.$message.error($t("workbench.script.msg.extractingInProgress"));const T=fo.confirm({header:$t("workbench.script.msg.batchDeleteHeader"),body:$t("workbench.script.msg.batchDeleteBody",{count:a.value.length}),confirmBtn:$t("workbench.script.msg.deleteConfirm"),cancelBtn:$t("workbench.script.msg.cancel"),theme:"warning",onConfirm:async()=>{try{await mn.post("/script/delScript",{id:a.value}),window.$message.success($t("workbench.script.msg.batchDeleteSuccess")),g(),T.destroy()}catch(D){console.error("删除剧本失败:",D),window.$message.error($t("workbench.script.msg.deleteFailed")),T.destroy()}finally{a.value=[]}},onClose:()=>{T.destroy()}})}let y=null;function C(){y||(y=setInterval(async()=>{if(S.value.length===0){_();return}await L()},3e3))}function _(){y&&(clearInterval(y),y=null)}const S=X(()=>r.value.filter(E=>E.extractState==0));async function L(){if(S.value.length===0)return;const E=S.value.map(T=>T.id);try{const{data:T}=await mn.post("/script/pollScriptAssets",{ids:E});T.length&&g()}catch(T){console.error("轮询事件状态失败:",T)}}return pt(()=>S.value,E=>{E.length>0?C():_()}),Qa(()=>{_()}),(E,T)=>{const D=Wu,P=_n("i-search"),Q=Si,M=_n("i-plus"),B=_n("i-export"),R=_n("i-delete"),I=Xy,F=py,j=Wc,W=Sg,H=el,$=km;return xe(),Ge("div",YWo,[ge("div",ZWo,[ge("div",qWo,[c(D,{placeholder:E.$t("workbench.script.searchPlaceholder"),modelValue:Ae(o),"onUpdate:modelValue":T[0]||(T[0]=G=>Fn(o)?o.value=G:null),class:"searchInput",clearable:"",style:{width:"300px"}},null,8,["placeholder","modelValue"]),c(Q,{theme:"primary",onClick:m},{icon:Oe(()=>[c(P)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.search")),1)]),_:1}),c(Q,{theme:"primary",onClick:v},{icon:Oe(()=>[c(M)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.addScript")),1)]),_:1})]),Ae(r).length?(xe(),Ge("div",KWo,[c(Q,{theme:Ae(d)?"default":"primary",variant:"outline",onClick:T[1]||(T[1]=G=>h(!Ae(d)))},{default:Oe(()=>[Bt(Pe(Ae(d)?E.$t("workbench.script.cancelSelectAll"):E.$t("workbench.script.selectAll")),1)]),_:1},8,["theme"]),c(Q,{theme:"primary",onClick:f,disabled:Ae(a).length===0},{icon:Oe(()=>[c(B)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.exportScript"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["disabled"]),c(Q,{theme:"primary",onClick:w,loading:Ae(l),disabled:Ae(a).length===0},{icon:Oe(()=>[c(B)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.extractAssets"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["loading","disabled"]),c(Q,{theme:"primary",onClick:O,disabled:Ae(a).length===0},{icon:Oe(()=>[c(R)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.deleteScript"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["disabled"])])):nn("",!0)]),ge("div",JWo,[Ae(r).length===0?(xe(),Ge("div",eVo,[c(I)])):(xe(),Ge("div",tVo,[(xe(!0),Ge(sn,null,Bi(Ae(r),(G,q)=>(xe(),Ge("div",{key:q,onClick:re=>p(G),class:"scriptCard"},[c($,{shadow:"","hover-shadow":"",style:{width:"400px",cursor:"pointer"}},{header:Oe(()=>[ge("div",iVo,[ge("span",rVo,Pe(G.name),1),c(F,{checked:Ae(a).includes(G.id),onClick:T[2]||(T[2]=Mr(()=>{},["stop"])),onChange:re=>u(G.id),class:"cardCheckbox"},null,8,["checked","onChange"])])]),default:Oe(()=>{var re;return[ge("span",oVo,Pe(G.content),1),(G==null?void 0:G.extractState)==0?(xe(),Ut(j,{key:0,text:E.$t("workbench.script.msg.extracting"),size:"small"},null,8,["text"])):nn("",!0),(G==null?void 0:G.extractState)==2?(xe(),Ut(j,{key:1,text:E.$t("workbench.script.msg.waitExtract"),size:"small"},null,8,["text"])):nn("",!0),(G==null?void 0:G.extractState)==-1?(xe(),Ut(H,{key:2,content:G.errorReason,theme:"light"},{default:Oe(()=>[c(W,{theme:"danger",size:"small"},{default:Oe(()=>[Bt(Pe(E.$t("workbench.script.msg.extractFailed")),1)]),_:1})]),_:1},8,["content"])):(re=G.relatedAssets)!=null&&re.length?(xe(),Ge("div",{key:3,class:"assetTags",onClick:T[3]||(T[3]=Mr(()=>{},["stop"]))},[(xe(!0),Ge(sn,null,Bi(G.relatedAssets,J=>(xe(),Ut(W,{key:J.id,variant:"light-outline",size:"small"},{default:Oe(()=>[Bt(Pe(J.name),1)]),_:2},1024))),128))])):nn("",!0),ge("div",sVo,[c(R,{theme:"outline",size:"18",onClick:Mr(J=>b(G.id),["stop"]),style:{cursor:"pointer"}},null,8,["onClick"])])]}),_:2},1024)],8,nVo))),128))]))]),c(EWo,{modelValue:Ae(A),"onUpdate:modelValue":T[4]||(T[4]=G=>Fn(A)?A.value=G:null),item:Ae(k),onSearchScripts:g},null,8,["modelValue","item"]),c(GWo,{modelValue:Ae(s),"onUpdate:modelValue":T[5]||(T[5]=G=>Fn(s)?s.value=G:null),onSearchScripts:g},null,8,["modelValue"])])}}}),lVo=oo(aVo,[["__scopeId","data-v-235d9376"]]),cVo=Object.freeze(Object.defineProperty({__proto__:null,default:lVo},Symbol.toStringTag,{value:"Module"}));function tp(e){"@babel/helpers - typeof";return tp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tp(e)}function dVo(e,t){if(tp(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(tp(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function LUn(e){var t=dVo(e,"string");return tp(t)=="symbol"?t:t+""}function u0(e,t,n){return(t=LUn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}/** +`).map(function(t){return t.trim()}).filter(function(t){return t!==""&&t.charAt(0)!=="#"}):e:[]}function WNo(e){return e}var yUn={},HLt=Rg,VNo=ure;yUn.openZip=zNo;function zNo(e){return e.arrayBuffer?HLt.resolve(VNo.openArrayBuffer(e.arrayBuffer)):HLt.reject(new Error("Could not find file in options"))}var CUn={},HNo=Fwe(),$No=Pwe();CUn.element=XNo;function XNo(e){return function(t){return $No.elementWithTag(HNo.element(e),[t])}}var GNo=bh,_Un=lrt,jrt=Rrt,YNo=Irt.DocumentConverter,ZNo=sUn.convertElementToRawText,qNo=Nwe.readStyle,KNo=Vwe.readOptions,zwe=yUn,JNo=LA.Result;_p.convertToHtml=eUo;_p.convertToMarkdown=tUo;_p.convert=Wrt;_p.extractRawText=oUo;_p.images=Mrt;_p.transforms=pE;_p.underline=CUn;_p.embedStyleMap=sUo;_p.readEmbeddedStyleMap=nUo;function eUo(e,t){return Wrt(e,t)}function tUo(e,t){var n=Object.create(t||{});return n.outputFormat="markdown",Wrt(e,n)}function Wrt(e,t){return t=KNo(t),zwe.openZip(e).tap(function(n){return jrt.readStyleMap(n).then(function(r){t.embeddedStyleMap=r})}).then(function(n){return _Un.read(n,e,t).then(function(r){return r.map(t.transformDocument)}).then(function(r){return iUo(r,t)})})}function nUo(e){return zwe.openZip(e).then(jrt.readStyleMap)}function iUo(e,t){var n=rUo(t.readStyleMap()),r=GNo.extend({},t,{styleMap:n.value}),o=new YNo(r);return e.flatMapThen(function(s){return n.flatMapThen(function(a){return o.convertToHtml(s)})})}function rUo(e){return JNo.combine((e||[]).map(qNo)).map(function(t){return t.filter(function(n){return!!n})})}function oUo(e){return zwe.openZip(e).then(_Un.read).then(function(t){return t.map(ZNo)})}function sUo(e,t){return zwe.openZip(e).tap(function(n){return jrt.writeStyleMap(n,t)}).then(function(n){return n.toArrayBuffer()}).then(function(n){return{toArrayBuffer:function(){return n},toBuffer:function(){return Buffer.from(n)}}})}_p.styleMapping=function(){throw new Error(`Use a raw string instead of mammoth.styleMapping e.g. "p[style-name='Title'] => h1" instead of mammoth.styleMapping("p[style-name='Title'] => h1")`)};const aUo={class:"purgeNovel"},lUo={class:"data"},cUo={class:"dragIcon"},dUo={class:"uploadText"},uUo={class:"uploadHint"},hUo={class:"formItem"},fUo={class:"label"},gUo={class:"uploadWrap"},mUo={class:"footerInfo f ac jb",style:{"margin-top":"8px"}},kUo={class:"charCount"},vUo={key:0,class:"tips warn"},AUo={style:{"margin-top":"16px","text-align":"right"}},pUo={class:"fc to2Box"},bUo={class:"ellipsisText"},wUo={class:"selectedInfo"},OUo={style:{"margin-top":"16px","text-align":"right"}},yUo=Je({__name:"importNovel",props:{modelValue:{type:Boolean},modelModifiers:{}},emits:Fc(["select"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=Pf(e,"modelValue"),o=fe("To1"),s=fe(),a=fe(""),l=fe([]),d=fe([]),u=fe(!1),h=[{colKey:"row-select",type:"multiple",width:60},{colKey:"index",title:$t("workbench.novel.import.col.chapter"),width:100},{colKey:"reel",title:$t("workbench.novel.import.col.reel"),width:100},{colKey:"chapter",title:$t("workbench.novel.import.col.chapterName"),width:200,ellipsis:!0},{colKey:"chapterData",title:$t("workbench.novel.import.col.chapterData"),ellipsis:!0}],g=X(()=>{if(!a.value)return[];try{return iIo(a.value).flatMap(C=>C.chapters.map(_=>({index:_.index,reel:C.reel,chapter:_.chapter,chapterData:_.text})))}catch(C){return console.error("解析小说内容出错:",C),[]}}),m=X(()=>g.value.filter(C=>d.value.includes(C.index))),v=X(()=>m.value.reduce((C,_)=>C+_.chapterData.length,0));function f(){var C;(C=s.value)==null||C.triggerUpload()}async function k(C){var S;const _=(S=C.dataTransfer)==null?void 0:S.files;_&&_.length>0&&await b({raw:_[0]})}async function A(C){const _=await C.arrayBuffer();return C.type==="text/plain"?new TextDecoder().decode(_):(await _p.extractRawText({arrayBuffer:_})).value}function p(){return Promise.resolve({response:{},status:"success"})}async function b(C){const _=C.raw;if(!_)return window.$message.error($t("workbench.novel.import.msg.selectFile")),!1;const S=["text/plain","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];if(_.type==="application/msword")return window.$message.warning($t("workbench.novel.import.msg.docNotSupported")),!1;if(!S.includes(_.type))return window.$message.error($t("workbench.novel.import.msg.unsupportedType")),!1;if(_.size>10*1024*1024)return window.$message.error($t("workbench.novel.import.msg.fileTooLarge")),!1;Wh(!0);try{a.value=await A(_)}catch{window.$message.error($t("workbench.novel.import.msg.parseFailed"))}finally{Wh(!1)}return!1}function w(C,_){d.value=C}const O=t;async function y(){var C;if(u.value=!0,!m.value.length){window.$message.warning($t("workbench.novel.import.msg.selectChapters")),u.value=!1;return}try{await mn.post("/novel/addNovel",{projectId:(C=n.value)==null?void 0:C.id,data:m.value}),u.value=!1,O("select"),window.$message.success($t("workbench.novel.import.msg.saveSuccess"))}catch(_){window.$message.error(_.message),u.value=!1}finally{u.value=!1,r.value=!1}}return pt(r,C=>{C||(a.value="",l.value=[],d.value=[],o.value="To1")}),(C,_)=>{const S=X4e,L=_n("i-upload-one"),E=fW,T=c2,D=Si,P=Mne,Q=el,M=jne,B=Ine,R=gc;return xe(),Ge("div",aUo,[c(R,{footer:!1,visible:r.value,"onUpdate:visible":_[5]||(_[5]=I=>r.value=I),header:C.$t("workbench.novel.import.title"),width:"50%",placement:"center"},{default:Oe(()=>[ge("div",lUo,[c(B,{value:Ae(o),disabled:""},{default:Oe(()=>[c(P,{value:"To1",label:C.$t("workbench.novel.import.step1"),style:{height:"680px","overflow-y":"auto"}},{default:Oe(()=>[ge("div",{class:"uploadArea",onClick:f,onDragover:_[1]||(_[1]=Mr(()=>{},["prevent"])),onDrop:Mr(k,["prevent"])},[c(S,{ref_key:"uploadRef",ref:s,modelValue:Ae(l),"onUpdate:modelValue":_[0]||(_[0]=I=>Fn(l)?l.value=I:null),theme:"file",multiple:!1,max:1,"before-upload":b,"request-method":p,style:{display:"none"}},null,8,["modelValue"]),ge("div",cUo,[c(L,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",dUo,Pe(C.$t("workbench.novel.import.dragUpload")),1),ge("p",uUo,Pe(C.$t("workbench.novel.import.uploadHint")),1)],32),c(E,null,{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.or")),1)]),_:1}),ge("div",hUo,[ge("div",fUo,Pe(C.$t("workbench.novel.import.pasteLabel")),1),ge("div",gUo,[c(T,{modelValue:Ae(a),"onUpdate:modelValue":_[2]||(_[2]=I=>Fn(a)?a.value=I:null),placeholder:C.$t("workbench.novel.import.pastePlaceholder"),autosize:{minRows:12,maxRows:12}},null,8,["modelValue","placeholder"])]),ge("div",mUo,[ge("div",null,[ge("span",kUo,Pe(Ae(a).length)+" "+Pe(C.$t("workbench.novel.import.chars")),1),Ae(a).length>0&&Ae(a).length<100?(xe(),Ge("span",vUo,Pe(C.$t("workbench.novel.import.tooShort")),1)):nn("",!0)]),ge("span",null,Pe(C.$t("workbench.novel.import.parsedChapters",{count:Ae(g).length})),1)])]),ge("div",AUo,[c(D,{theme:"primary",style:{"margin-left":"10px"},disabled:!Ae(a)||!Ae(g).length,onClick:_[3]||(_[3]=I=>o.value="To2")},{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.nextStep")),1)]),_:1},8,["disabled"])])]),_:1},8,["label"]),c(P,{value:"To2",label:C.$t("workbench.novel.import.step2"),style:{height:"680px","overflow-y":"auto"}},{default:Oe(()=>[ge("div",pUo,[c(M,{ref:"tableRef","row-key":"index",data:Ae(g),columns:h,"selected-row-keys":Ae(d),hover:"",style:{flex:"1","overflow-y":"auto"},onSelectChange:w},{chapterData:Oe(({row:I})=>[c(Q,{content:I.chapterData,placement:"top"},{default:Oe(()=>[ge("span",bUo,Pe(I.chapterData),1)]),_:2},1032,["content"])]),_:1},8,["data","selected-row-keys"]),ge("div",wUo,Pe(C.$t("workbench.novel.import.selectedInfo",{count:Ae(v)})),1),ge("div",OUo,[c(D,{variant:"outline",onClick:_[4]||(_[4]=I=>o.value="To1")},{default:Oe(()=>[Bt(Pe(C.$t("workbench.novel.import.prevStep")),1)]),_:1}),c(D,{theme:"primary",style:{"margin-left":"10px"},disabled:Ae(v)>2e5,loading:Ae(u),onClick:y},{default:Oe(()=>[..._[6]||(_[6]=[Bt(" 保存 ",-1)])]),_:1},8,["disabled","loading"])])])]),_:1},8,["label"])]),_:1},8,["value"])])]),_:1},8,["visible","header"])])}}}),CUo=oo(yUo,[["__scopeId","data-v-4a10a557"]]),_Uo={class:"editNodel"},SUo={class:"data",style:{"overflow-x":"hidden"}},LUo={class:"editNodel-footer"},xUo=Je({__name:"editNodel",props:Fc({formData:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:Fc(["select"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=t;async function s(){console.log("保存的章节数据:",r.formData);try{await mn.post("/novel/updateNovel",{id:r.formData.id,index:r.formData.index,reel:r.formData.reel,chapter:r.formData.chapter,chapterData:r.formData.chapterData,event:r.formData.event}),o("select"),window.$message.success($t("workbench.novel.editDialog.msg.updateSuccess"))}catch(a){window.$message.error(a.message)}finally{n.value=!1}n.value=!1}return(a,l)=>{const d=Wu,u=p2,h=c2,g=A2,m=Si,v=gc;return xe(),Ge("div",_Uo,[c(v,{visible:n.value,"onUpdate:visible":l[4]||(l[4]=f=>n.value=f),header:a.$t("workbench.novel.editDialog.title"),width:"50%",top:"10vh",placement:"center"},{footer:Oe(()=>[ge("div",LUo,[c(m,{onClick:l[3]||(l[3]=f=>n.value=!1)},{default:Oe(()=>[Bt(Pe(a.$t("workbench.novel.editDialog.cancel")),1)]),_:1}),c(m,{theme:"primary",onClick:s},{default:Oe(()=>[Bt(Pe(a.$t("workbench.novel.editDialog.save")),1)]),_:1})])]),default:Oe(()=>[ge("div",SUo,[c(g,{"label-width":"80px"},{default:Oe(()=>[c(u,{label:a.$t("workbench.novel.editDialog.chapterName")},{default:Oe(()=>[c(d,{placeholder:a.$t("workbench.novel.editDialog.chapterNamePh"),modelValue:e.formData.chapter,"onUpdate:modelValue":l[0]||(l[0]=f=>e.formData.chapter=f)},null,8,["placeholder","modelValue"])]),_:1},8,["label"]),c(u,{label:a.$t("workbench.novel.editDialog.eventContent")},{default:Oe(()=>[c(h,{modelValue:e.formData.event,"onUpdate:modelValue":l[1]||(l[1]=f=>e.formData.event=f),placeholder:a.$t("workbench.novel.editDialog.eventContentPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(u,{label:a.$t("workbench.novel.editDialog.chapterContent")},{default:Oe(()=>[c(h,{placeholder:a.$t("workbench.novel.editDialog.chapterContentPh"),modelValue:e.formData.chapterData,"onUpdate:modelValue":l[2]||(l[2]=f=>e.formData.chapterData=f),autosize:{minRows:15,maxRows:15}},null,8,["placeholder","modelValue"])]),_:1},8,["label"])]),_:1})])]),_:1},8,["visible","header"])])}}}),EUo=oo(xUo,[["__scopeId","data-v-9e187c61"]]),TUo={class:"novel",ref:"novelRef"},QUo={class:"headBtn jb ac",ref:"headBtnRef"},DUo={class:"f"},BUo={style:{color:"red",cursor:"pointer"}},RUo={key:2},IUo=Je({__name:"index",setup(e){const{otherSetting:t}=xs(ku()),{project:n}=xs(ph()),r=fe(""),o=fe([{colKey:"row-select",type:"multiple",width:50,align:"center"},{colKey:"index",title:$t("workbench.novel.col.id"),width:50,align:"center"},{colKey:"reel",title:$t("workbench.novel.col.reel"),width:100,align:"center",cell:"preview"},{colKey:"chapter",title:$t("workbench.novel.col.chapter"),width:100,ellipsis:!0},{colKey:"chapterData",title:$t("workbench.novel.col.chapterData"),ellipsis:!0},{colKey:"event",title:$t("workbench.novel.col.event"),ellipsis:!0},{colKey:"operation",title:$t("workbench.novel.col.operation"),width:200,align:"center"}]),s=fe(!1),a=fe({id:-1,index:0,reel:"",chapter:"",chapterData:"",event:""}),l=fe([]),d=fe(!1),u=fe([]),h=fe({page:1,pageSize:10,total:0});An(()=>{m()}),Qa(()=>{L()});function g(){h.value.page=1,m()}function m(){var E;d.value=!0,mn.post("/novel/getNovel",{projectId:(E=n.value)==null?void 0:E.id,page:h.value.page,limit:h.value.pageSize,search:r.value}).then(T=>{l.value=T.data.data,h.value.total=T.data.total}).finally(()=>{d.value=!1})}function v(E){h.value.page=E.current,h.value.pageSize=E.pageSize,m()}const f=fe(!1);function k(){f.value=!0}function A(E,T){u.value=E.filter(Boolean)}function p(){if(u.value.length===0)return;const E=co.confirm({header:$t("workbench.novel.msg.batchDeleteHeader"),body:$t("workbench.novel.msg.batchDeleteBody",{count:u.value.length}),onConfirm:async()=>{await mn.post("/novel/batchDeleteNovel",{ids:u.value}),m(),window.$message.success($t("workbench.novel.msg.batchDeleteSuccess")),E.destroy()}})}function b(E){s.value=!0,a.value={...E}}function w(E){const T=co.confirm({header:$t("workbench.novel.msg.deleteHeader"),body:$t("workbench.novel.msg.deleteBody",{name:E.chapter}),onConfirm:async()=>{try{await mn.post("/novel/delNovel",{id:E.id}),window.$message.success($t("workbench.novel.msg.deleteSuccess")),l.value.length===1&&h.value.page>1&&(h.value.page-=1),m()}catch(D){window.$message.error(D.message)}window.$message.success($t("workbench.novel.msg.deleteSuccess")),T.destroy()}})}function O(){const E=co.confirm({header:$t("workbench.novel.msg.eventAnalysisHeader"),body:$t("workbench.novel.msg.eventAnalysisBody",{count:u.value.length}),onConfirm:()=>{var T;E.destroy(),mn.post("/novel/event/generateEvents",{projectId:(T=n.value)==null?void 0:T.id,novelIds:u.value,concurrentCount:t.value.assetsBatchGenereateSize}).then(D=>{u.value.length=0,m()})}})}const y=X(()=>l.value.filter(E=>!E.eventState));let C=null;async function _(){if(y.value.length===0)return;const E=y.value.map(T=>T.id);try{const{data:T}=await mn.post("/novel/getNovelEventState",{ids:E});Array.isArray(T)&&T.forEach(D=>{const P=l.value.find(Q=>Q.id===D.id);P&&(P.eventState=D.eventState,P.eventState==-1&&(P.errorReason=D.errorReason),D.event!==void 0&&(P.event=D.event))})}catch(T){console.error("轮询事件状态失败:",T)}}function S(){C||(C=setInterval(async()=>{if(y.value.length===0){L();return}await _()},3e3))}function L(){C&&(clearInterval(C),C=null)}return pt(y,E=>{E.length>0?S():L()}),Qa(()=>{L()}),(E,T)=>{const D=dL,P=Si,Q=Ev,M=Wu,B=Wc,R=el,I=jne;return xe(),Ge("div",TUo,[ge("div",QUo,[c(Q,null,{default:Oe(()=>[c(P,{theme:"primary",onClick:k},{icon:Oe(()=>[c(D,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.importText")),1)]),_:1}),c(P,{theme:"danger",disabled:Ae(u).length===0,onClick:p},{icon:Oe(()=>[c(D,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.batchDelete"))+" "+Pe(Ae(u).length>0?`(${Ae(u).length})`:""),1)]),_:1},8,["disabled"]),c(P,{onClick:O,disabled:Ae(u).length===0},{icon:Oe(()=>[c(D,{name:"analytics"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.eventAnalysis"))+" "+Pe(Ae(u).length>0?`(${Ae(u).length})`:""),1)]),_:1},8,["disabled"])]),_:1}),ge("div",DUo,[c(M,{modelValue:Ae(r),"onUpdate:modelValue":T[0]||(T[0]=F=>Fn(r)?r.value=F:null),placeholder:E.$t("workbench.novel.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(P,{onClick:g,style:{"margin-left":"10px"}},{icon:Oe(()=>[c(D,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.search")),1)]),_:1})])],512),c(I,{ref:"tableRef",style:{"margin-top":"10px",flex:"1",display:"flex","flex-direction":"column"},columns:Ae(o),data:Ae(l),"selected-row-keys":Ae(u),"select-on-row-click":!0,keyboardRowHover:!1,"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(h),loading:Ae(d),"lazy-load":"",resizable:"","table-layout":"fixed",onSelectChange:A,onPageChange:v},{startTime:Oe(({row:F})=>[ge("span",null,Pe(Ae(JB)(F.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),event:Oe(({row:F})=>[F.eventState==0?(xe(),Ut(B,{key:0,size:"small",text:E.$t("workbench.novel.generating")},null,8,["text"])):F.eventState==-1&&!F.event?(xe(),Ut(R,{key:1,content:F==null?void 0:F.errorReason},{default:Oe(()=>[ge("div",BUo,Pe(E.$t("workbench.novel.genFailed")),1)]),_:1},8,["content"])):(xe(),Ge("div",RUo,Pe(F.event||E.$t("workbench.novel.none")),1))]),operation:Oe(({row:F})=>[c(Q,{size:0},{default:Oe(()=>[c(P,{theme:"primary",disabled:F.eventState==0,variant:"text",onClick:j=>b(F)},{icon:Oe(()=>[c(D,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.edit")),1)]),_:1},8,["disabled","onClick"]),c(P,{theme:"danger",disabled:F.eventState==0,variant:"text",onClick:j=>w(F)},{icon:Oe(()=>[c(D,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.novel.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["columns","data","selected-row-keys","pagination","loading"]),c(CUo,{modelValue:Ae(f),"onUpdate:modelValue":T[1]||(T[1]=F=>Fn(f)?f.value=F:null),onSelect:m},null,8,["modelValue"]),c(EUo,{modelValue:Ae(s),"onUpdate:modelValue":T[2]||(T[2]=F=>Fn(s)?s.value=F:null),formData:Ae(a),onSelect:m},null,8,["modelValue","formData"])],512)}}}),MUo=oo(IUo,[["__scopeId","data-v-311980c9"]]),PUo=Object.freeze(Object.defineProperty({__proto__:null,default:MUo},Symbol.toStringTag,{value:"Module"})),FUo={class:"addAssets"},NUo={class:"data"},UUo=Je({__name:"addAssets",props:Fc({type:{},title:{},formData:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["getFilteredData"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=e,o=Pf(e,"modelValue"),s=fe({name:[{required:!0,message:$t("workbench.assets.add.nameRequired"),trigger:"blur"}],describe:[{required:!0,message:$t("workbench.assets.add.describeRequired"),trigger:"blur"}],remark:[{required:!0,message:$t("workbench.assets.add.remarkRequired"),trigger:"blur"}]});function a(){o.value=!1}const l=fe(),d=t;function u(){var h;(h=l.value)==null||h.validate().then(async()=>{var g;if(r.formData.id!==0){await mn.post("/assets/updateAssets",{id:r.formData.id,name:r.formData.name,describe:r.formData.describe,remark:r.formData.remark,prompt:r.formData.prompt}).then(()=>{window.$message.success($t("workbench.assets.add.updateSuccess")),d("getFilteredData"),o.value=!1});return}else mn.post("/assets/addAssets",{name:r.formData.name,describe:r.formData.describe,remark:r.formData.remark,type:r.type,projectId:(g=n.value)==null?void 0:g.id,prompt:r.formData.prompt}).then(()=>{window.$message.success($t("workbench.assets.add.addSuccess")),d("getFilteredData"),o.value=!1})})}return(h,g)=>{const m=Wu,v=p2,f=c2,k=A2,A=gc;return xe(),Ge("div",FUo,[c(A,{visible:o.value,"onUpdate:visible":g[4]||(g[4]=p=>o.value=p),closable:!1,width:"40vw",header:r.title,maskClosable:!1,onCloseBtnClick:a,onConfirm:u,onCancel:a},{default:Oe(()=>[ge("div",NUo,[c(k,{data:r.formData,rules:Ae(s),ref_key:"formRef",ref:l},{default:Oe(()=>[c(v,{label:h.$t("workbench.assets.add.name"),name:"name"},{default:Oe(()=>[c(m,{modelValue:r.formData.name,"onUpdate:modelValue":g[0]||(g[0]=p=>r.formData.name=p),placeholder:h.$t("workbench.assets.add.namePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:h.$t("workbench.assets.add.describe"),name:"describe"},{default:Oe(()=>[c(f,{modelValue:r.formData.describe,"onUpdate:modelValue":g[1]||(g[1]=p=>r.formData.describe=p),placeholder:h.$t("workbench.assets.add.describePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:h.$t("workbench.assets.add.remark"),name:"remark"},{default:Oe(()=>[c(m,{modelValue:r.formData.remark,"onUpdate:modelValue":g[2]||(g[2]=p=>r.formData.remark=p),placeholder:h.$t("workbench.assets.add.remarkPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),r.type!=="clip"?(xe(),Ut(v,{key:0,label:h.$t("workbench.assets.add.prompt"),name:"prompt"},{default:Oe(()=>[c(f,{modelValue:r.formData.prompt,"onUpdate:modelValue":g[3]||(g[3]=p=>r.formData.prompt=p),autosize:{minRows:3,maxRows:5},placeholder:h.$t("workbench.assets.add.promptPh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])):nn("",!0)]),_:1},8,["data","rules"])])]),_:1},8,["visible","header"])])}}}),jUo=oo(UUo,[["__scopeId","data-v-46105082"]]),WUo={class:"generateImage"},VUo={class:"data f"},zUo={class:"uploadReferenceImage"},HUo={class:"jb"},$Uo={style:{"font-size":"16px","font-weight":"900"}},XUo={class:"upload"},GUo={class:"rawPicturePrompt"},YUo={class:"jb"},ZUo={style:{"font-size":"16px","font-weight":"900"}},qUo={style:{"margin-left":"5px","font-size":"13px"}},KUo={class:"input"},JUo={class:"selectModel f"},ejo={style:{width:"60%"}},tjo={style:{"font-size":"16px","font-weight":"900"}},njo={style:{width:"40%","margin-left":"15px"}},ijo={style:{"font-size":"16px","font-weight":"900"}},rjo={class:"generateButton",style:{"margin-top":"20px"}},ojo={class:"resultImages",style:{gap:"20px","flex-wrap":"wrap"}},sjo={class:"image f w"},ajo=["onClick","onMouseenter"],ljo={key:0,class:"generating-overlay f ac jc"},cjo={key:1,class:"failed-overlay f ac jc"},djo={style:{"text-align":"center"}},ujo={style:{"margin-top":"10px",color:"#d0021b","font-weight":"bold"}},hjo={class:"preview"},fjo={class:"selected"},gjo={class:"delImage"},mjo={class:"customUpload"},kjo={class:"uploadPlaceholder f ac jc",style:{width:"180px",height:"180px",border:"2px dashed #d9d9d9","border-radius":"20px",cursor:"pointer"}},vjo={class:"keep"},Ajo=Je({__name:"generateImage",props:Fc({formData:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["update"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=e,o=Pf(e,"modelValue");function s(){o.value=!1,u.value=!1,E(),f("update")}const a=fe([]),l=fe(!1),d=fe(!1),u=fe(!1),h=fe(""),g=fe(""),m=fe(!1);async function v(){var M;m.value=!0;try{const{data:B}=await mn.post("/assetsGenerate/polishAssetsPrompt",{projectId:(M=n.value)==null?void 0:M.id,assetsId:r.formData.id,type:r.formData.type??"props",name:r.formData.name,describe:r.formData.describe?r.formData.describe:$t("workbench.assets.noDescription")});window.$message.success($t("workbench.assets.gen.promptSuccess")),B.assetsId===r.formData.id&&(r.formData.prompt=B.prompt)}catch(B){window.$message.error(B.message??$t("workbench.assets.gen.promptFail"))}finally{m.value=!1}}const f=t,k=fe("1K");async function A(){var M;if(!r.formData.prompt){window.$message.error($t("workbench.assets.gen.fillPrompt"));return}if(!k.value){window.$message.error($t("workbench.assets.gen.pickResolution"));return}if(!h.value){window.$message.error($t("workbench.assets.gen.pickModel"));return}u.value=!0;try{let B="";if(a.value.length>0){const R=a.value[0].raw;R instanceof File&&(B=await new Promise(I=>{const F=new FileReader;F.onload=j=>{var H;const W=(H=j.target)==null?void 0:H.result;I(W)},F.readAsDataURL(R)}))}await mn.post("/assetsGenerate/generateAssets",{type:r.formData.type??"props",projectId:(M=n.value)==null?void 0:M.id,name:r.formData.name??$t("workbench.assets.gen.unnamed"),base64:B,prompt:r.formData.prompt,model:h.value,id:r.formData.id,resolution:k.value}),window.$message.success($t("workbench.assets.gen.assetGenSuccess")),await T()}catch(B){window.$message.error(B.message??$t("workbench.assets.gen.assetGenFail")),T()}finally{u.value=!1}}const p=fe([]);function b(M){var B;if(M.length>0){const R=((B=M[0])==null?void 0:B.raw)||M[0];if(R instanceof File){const I=new FileReader;I.onload=F=>{var W;const j=(W=F.target)==null?void 0:W.result;w.value.push({id:"",src:j,state:"已完成"}),window.$message.success($t("workbench.assets.gen.uploadOk")),p.value=[]},I.readAsDataURL(R)}}}const w=fe([]),O=fe(!1),y=fe();function C(M){O.value=!0,y.value=M}const _=fe(null),S=fe(null);pt(()=>o.value,M=>{M&&(a.value=[],g.value="",_.value=null,S.value=null,u.value=!1,T())});let L=null;function E(){L&&(clearTimeout(L),L=null)}async function T(){const{data:M}=await mn.post("/assets/getImage",{assetsId:r.formData.id}),B=M.tempAssets.map(F=>({id:F.id,src:F.filePath,state:F.state,selected:F.selected??!1}));w.value=B;const R=B.findIndex(F=>F.selected);R!==-1&&(_.value=R);const I=B.some(F=>F.state==="生成中");E(),I&&o.value&&(L=setTimeout(()=>T(),3e3))}function D(M){w.value[M].state==="已完成"&&(_.value=M,window.$message.success($t("workbench.assets.gen.imageSelected")))}function P(M,B){console.log("%c Line:343 🍩 id","background:#4fff4B",M);const R=co.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{try{mn.post("/assets/delImage",{id:M}),window.$message.success($t("workbench.assets.deleteSuccess")),w.value.splice(B,1),_.value===B?_.value=null:_.value!==null&&_.value>B&&_.value--,R.destroy()}catch{window.$message.error($t("workbench.assets.deleteFail")),R.destroy()}}})}async function Q(){var M;if(_.value!==null){const B=w.value[_.value],R=!B.id;await mn.post("/assets/saveAssets",{id:r.formData.id,base64:R?B.src:"",type:r.formData.type,prompt:r.formData.prompt,projectId:(M=n.value)==null?void 0:M.id,imageId:R?void 0:Number(B.id)}),window.$message.success($t("workbench.assets.gen.imageSaved")),o.value=!1,f("update")}}return(M,B)=>{const R=Sg,I=X4e,F=_n("i-magic"),j=c2,W=Wc,H=uL,$=pA,G=Si,q=km,re=fW,J=_n("i-close-one"),oe=Zh,se=_n("i-preview-open"),le=_n("i-check-one"),ue=_n("i-delete"),ee=_n("i-plus"),de=hL,z=gc;return xe(),Ge("div",WUo,[c(z,{visible:o.value,"onUpdate:visible":B[7]||(B[7]=Y=>o.value=Y),top:"4vh",width:"80vw",header:M.$t("workbench.assets.gen.header"),maskClosable:!1,footer:!1,onCloseBtnClick:s},{default:Oe(()=>[ge("div",VUo,[c(q,{bordered:!1,style:{width:"40%"}},{default:Oe(()=>[ge("div",zUo,[ge("div",HUo,[ge("span",$Uo,Pe(M.$t("workbench.assets.gen.uploadRef")),1),c(R,null,{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.optional")),1)]),_:1})]),ge("div",XUo,[c(I,{modelValue:Ae(a),"onUpdate:modelValue":B[0]||(B[0]=Y=>Fn(a)?a.value=Y:null),autoUpload:Ae(l),disabled:Ae(u),theme:"image",abridgeName:[10,8],draggable:"",action:"",accept:"image/*",showImageFileName:Ae(d)},null,8,["modelValue","autoUpload","disabled","showImageFileName"])])]),ge("div",GUo,[ge("div",YUo,[ge("span",ZUo,Pe(M.$t("workbench.assets.gen.promptLabel")),1),ge("div",{class:"ac",style:{cursor:"pointer"},onClick:Mr(v,["stop"])},[c(F,{theme:"outline",size:"18"}),ge("span",qUo,Pe(M.$t("workbench.assets.gen.smartGenerate")),1)])]),ge("div",KUo,[c(W,{loading:Ae(m),text:M.$t("workbench.assets.gen.generatingPrompt")},{default:Oe(()=>[c(j,{modelValue:r.formData.prompt,"onUpdate:modelValue":B[1]||(B[1]=Y=>r.formData.prompt=Y),placeholder:M.$t("workbench.assets.gen.promptPlaceholder"),autosize:{minRows:15,maxRows:15},disabled:Ae(u)},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["loading","text"])])]),ge("div",JUo,[ge("div",ejo,[ge("span",tjo,Pe(M.$t("workbench.assets.gen.selectModel")),1),c(T8,{modelValue:Ae(h),"onUpdate:modelValue":B[2]||(B[2]=Y=>Fn(h)?h.value=Y:null),type:"image"},null,8,["modelValue"])]),ge("div",njo,[ge("span",ijo,Pe(M.$t("workbench.assets.gen.selectResolution")),1),c($,{modelValue:Ae(k),"onUpdate:modelValue":B[3]||(B[3]=Y=>Fn(k)?k.value=Y:null)},{default:Oe(()=>[c(H,{key:"1K",label:"1K",value:"1K"}),c(H,{key:"2K",label:"2K",value:"2K"}),c(H,{key:"4K",label:"4K",value:"4K"})]),_:1},8,["modelValue"])])]),ge("div",rjo,[c(G,{theme:"primary",size:"large",block:"",loading:Ae(u),onClick:A},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.generateBtn")),1)]),_:1},8,["loading"])])]),_:1}),c(re,{layout:"vertical",style:{height:"700px"}}),c(q,{title:M.$t("workbench.assets.gen.resultTitle"),bordered:!1,style:{width:"60%"}},{actions:Oe(()=>[Ae(w).length?(xe(),Ut(R,{key:0},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.generatedCount",{count:Ae(w).length})),1)]),_:1})):nn("",!0)]),default:Oe(()=>[ge("div",ojo,[ge("div",sjo,[(xe(!0),Ge(sn,null,Bi(Ae(w),(Y,ie)=>(xe(),Ge("div",{key:ie,class:Eo(["resultImage",{"is-selected":Ae(_)===ie,"is-disabled":Y.state!=="已完成"}]),onClick:te=>Y.state==="已完成"?D(ie):null,onMouseenter:te=>S.value=ie,onMouseleave:B[4]||(B[4]=te=>S.value=null)},[Y.state==="生成中"?(xe(),Ge("div",ljo,[c(W,{text:M.$t("workbench.assets.gen.generatingLabel")},null,8,["text"])])):Y.state==="生成失败"&&!Y.src?(xe(),Ge("div",cjo,[ge("div",djo,[c(J,{theme:"filled",size:"40",fill:"#d0021b"}),ge("div",ujo,Pe(M.$t("workbench.assets.gen.genFailed")),1)])])):(xe(),Ut(oe,{key:2,src:Y.src,fit:"cover",style:{width:"100%",height:"100%",borderRadius:"20px"}},{loading:Oe(()=>[c(W)]),_:1},8,["src"])),uu(ge("div",hjo,[c(se,{theme:"outline",size:"25",fill:"#ffffff",onClick:Mr(te=>C(Y.src),["stop"])},null,8,["onClick"])],512),[[h1,Ae(S)===ie&&Y.state==="已完成"]]),uu(ge("div",fjo,[c(le,{theme:"filled",size:"25",fill:"#000"})],512),[[h1,Ae(_)===ie&&Y.state==="已完成"]]),uu(ge("div",gjo,[c(ue,{theme:"outline",size:"20",fill:"#d0021b",onClick:Mr(te=>P(Y.id,ie),["stop"])},null,8,["onClick"])],512),[[h1,Ae(S)===ie]])],42,ajo))),128)),ge("div",mjo,[c(I,{ref:"customUploadRef",action:"",modelValue:Ae(p),"onUpdate:modelValue":B[5]||(B[5]=Y=>Fn(p)?p.value=Y:null),disabled:Ae(u),autoUpload:!1,theme:"custom",accept:"image/*",max:1,onChange:b,showImageFileName:!1},{default:Oe(()=>[ge("div",kjo,[c(ee,{theme:"outline",size:"24",fill:"#4a4a4a"})])]),_:1},8,["modelValue","disabled"])])])]),ge("div",vjo,[c(G,{theme:"primary",size:"large",block:"",disabled:Ae(_)===null,onClick:Q},{default:Oe(()=>[Bt(Pe(M.$t("workbench.assets.gen.confirmSelect")),1)]),_:1},8,["disabled"])])]),_:1},8,["title"])]),c(de,{modelValue:Ae(O),"onUpdate:modelValue":B[6]||(B[6]=Y=>Fn(O)?O.value=Y:null),images:[Ae(y)]},null,8,["modelValue","images"])]),_:1},8,["visible","header"])])}}}),pjo=oo(Ajo,[["__scopeId","data-v-4d2f2866"]]),bjo={class:"assets"},wjo={class:"data"},Ojo={class:"tabLabel"},yjo={class:"panelContent"},Cjo={class:"toolbar"},_jo={class:"data"},Sjo={class:"generatePrompt"},Ljo={class:"generateImage"},xjo={class:"f ac"},Ejo={class:"assetsList f w"},Tjo={class:"expandedContent"},Qjo={class:"previewCell"},Djo={key:0,class:"imageTrigger generatingImage"},Bjo={class:"generatingLabel"},Rjo=["onClick"],Ijo=["src","alt"],Mjo={key:1,class:"noImage"},Pjo={key:2,class:"imageHoverOverlay"},Fjo={class:"hoverText"},Njo={class:"promptCell"},Ujo={class:"previewCell"},jjo=["onClick"],Wjo=["src","alt"],Vjo={key:1,class:"noImage"},zjo={key:2,class:"imageHoverOverlay"},Hjo={class:"hoverText"},$jo={class:"promptCell"},Xjo={class:"previewCell"},Gjo={key:0,class:"imageTrigger generatingImage"},Yjo={class:"generatingLabel"},Zjo=["onClick"],qjo=["src","alt"],Kjo={key:1,class:"noImage"},Jjo={key:2,class:"imageHoverOverlay"},eWo={class:"hoverText"},tWo={class:"previewCell"},nWo=["onClick"],iWo=["src","alt"],rWo={class:"mediaHoverOverlay"},oWo={class:"hoverText"},sWo=["onClick"],aWo=["src"],lWo={class:"mediaHoverOverlay"},cWo={class:"hoverText"},dWo=["onClick"],uWo={class:"mediaHoverOverlay"},hWo={class:"hoverText"},fWo={key:3,class:"mediaTrigger noMedia"},gWo={class:"mediaPreviewDialog"},mWo=["src"],kWo={key:1,class:"audioWrapper"},vWo={class:"audioIcon"},AWo={class:"audioName"},pWo=["src"],bWo={class:"batch"},wWo=Je({__name:"index",props:{selectorMode:{type:Boolean,default:!1},allowedTypes:{},clipMediaTypes:{},multiple:{type:Boolean,default:!0}},setup(e,{expose:t}){var Se,Ie;const{otherSetting:n}=xs(ku()),r=e;An(()=>{O()}),Qa(()=>{et(),Me()});const{project:o}=xs(ph()),s=[{name:$t("workbench.assets.role"),value:"role",icon:"i-permissions"},{name:$t("workbench.assets.prop"),value:"tool",icon:"i-tool"},{name:$t("workbench.assets.scene"),value:"scene",icon:"i-landscape"},{name:$t("workbench.assets.clip"),value:"clip",icon:"i-editing"}],a=fe((Se=r.allowedTypes)!=null&&Se.length?s.filter(ze=>r.allowedTypes.includes(ze.value)):s),l=((Ie=a.value[0])==null?void 0:Ie.value)||"role",d=fe(l),u=fe(""),h={role:$t("workbench.assets.role"),tool:$t("workbench.assets.prop"),scene:$t("workbench.assets.scene"),clip:$t("workbench.assets.clip")},g=fe([]),m=fe([]),v=fe([]),f=fe(!1),k=ze=>{const Ze=ke(ze);return(Ze==null?void 0:Ze.promptState)==="生成中"||(Ze==null?void 0:Ze.state)==="生成中"},A=fe([]),p=fe({page:1,pageSize:10,total:0,showJumper:!0});function b(){p.value.page=1,w(d.value)}async function w(ze){var Ze,gt;try{f.value=!0;const{data:St}=await mn.post("/assets/getAssetsApi",{projectId:(Ze=o.value)==null?void 0:Ze.id,type:ze,name:u.value||void 0,page:p.value.page,limit:p.value.pageSize});return A.value=St.data||[],ze==="clip"&&((gt=r.clipMediaTypes)!=null&>.length)&&(A.value=A.value.filter(Pt=>{const dn=Y(Pt.src);return r.clipMediaTypes.includes(dn)})),p.value.total=St.total||0,A.value}catch(St){console.error("加载资产数据失败:",St),A.value=[],p.value.total=0}finally{f.value=!1}}async function O(){d.value==="role"||d.value==="tool"||d.value==="scene"||d.value,await w(d.value)}function y(ze){u.value="",g.value=[],m.value=[],v.value=[],p.value.page=1,O()}const C=fe({id:0,name:"",describe:"",remark:"",src:"",prompt:""}),_=fe(!1),{open:S,onChange:L,onCancel:E}=cOn({multiple:!1,reset:!0,accept:".png,.jpg,.jpeg,.mp3,.mp4"});async function T(ze){if(ze==="clip"){const Ze=await new Promise(Pt=>{S(),L(dn=>Pt(dn)),E(()=>Pt(null))});if(!(Ze!=null&&Ze.length))return;const gt=Ze[0],St=new FileReader;St.onload=async Pt=>{var on;const dn=St.result;await mn.post("/assets/uploadClip",{projectId:(on=o.value)==null?void 0:on.id,base64Data:dn,name:gt.name}),window.$message.success($t("workbench.assets.uploadSuccess")),w(d.value)},St.readAsDataURL(gt)}else _.value=!0,C.value={id:0,name:"",describe:"",remark:"",prompt:""}}const D=fe(!1),P=fe(""),Q=fe("1K"),M=fe("");function B(ze){M.value=ze===1?$t("workbench.assets.batchGenPrompt"):$t("workbench.assets.batchGenImage"),D.value=!0}function R(){M.value===$t("workbench.assets.batchGenPrompt")?F():M.value===$t("workbench.assets.batchGenImage")&&j()}function I(){const ze=[];return A.value.forEach(Ze=>{var gt;(gt=Ze.sonAssets)!=null&>.length&&Ze.sonAssets.forEach(St=>{m.value.includes(St.id)&&ze.push(St)})}),ze}async function F(){var St;const ze=A.value.filter(Pt=>g.value.includes(Pt.id)),Ze=I(),gt=[...ze,...Ze];if(gt.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}ze.forEach(Pt=>{const dn=A.value.find(on=>on.id===Pt.id);dn&&(dn.promptState="生成中")}),Ze.forEach(Pt=>{A.value.forEach(dn=>{var pn;const on=(pn=dn.sonAssets)==null?void 0:pn.find(ni=>ni.id===Pt.id);on&&(on.promptState="生成中")})}),g.value=g.value.filter(Pt=>!ze.some(dn=>dn.id===Pt)),m.value=m.value.filter(Pt=>!Ze.some(dn=>dn.id===Pt)),D.value=!1;try{await mn.post("/assetsGenerate/batchPolishAssetsPrompt",{projectId:(St=o.value)==null?void 0:St.id,concurrentCount:n.value.assetsBatchGenereateSize,items:gt.map(Pt=>({assetsId:Pt.id,type:Pt.type??"props",name:Pt.name,describe:Pt.describe?Pt.describe:$t("workbench.assets.noDescription")}))})}catch{window.$message.error($t("workbench.assets.promptGenFail"))}}async function j(){var on;const ze=A.value.filter(pn=>g.value.includes(pn.id)),Ze=I(),gt=[...ze,...Ze];if(gt.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}if(!P.value){window.$message.error($t("workbench.assets.selectModel"));return}if(!Q.value){window.$message.error($t("workbench.assets.selectResolution"));return}const St=gt.filter(pn=>pn.prompt?!0:(window.$message.warning($t("workbench.assets.noPromptForImage",{name:pn.name})),!1));if(St.length===0)return;const Pt=St.filter(pn=>g.value.includes(pn.id)),dn=St.filter(pn=>m.value.includes(pn.id));Pt.forEach(pn=>{const ni=A.value.find(Zn=>Zn.id===pn.id);ni&&(ni.state="生成中")}),dn.forEach(pn=>{A.value.forEach(ni=>{var Pi;const Zn=(Pi=ni.sonAssets)==null?void 0:Pi.find(rr=>rr.id===pn.id);Zn&&(Zn.state="生成中")})}),g.value=g.value.filter(pn=>!St.some(ni=>ni.id===pn)),m.value=m.value.filter(pn=>!St.some(ni=>ni.id===pn)),D.value=!1;try{await mn.post("/assetsGenerate/batchGenerateImageAssets",{projectId:(on=o.value)==null?void 0:on.id,model:P.value,resolution:Q.value,concurrentCount:n.value.assetsBatchGenereateSize,items:St.map(pn=>({id:pn.id,type:pn.type??"props",name:pn.name??$t("workbench.cornerScape.unnamed"),prompt:pn.prompt||pn.describe}))})}catch(pn){window.$message.error($t("workbench.assets.imageGenFail",{name:"",error:pn.message??""})),St.forEach(ni=>{const Zn=A.value.find(Pi=>Pi.id===ni.id);Zn?Zn.state="生成失败":A.value.forEach(Pi=>{var Hr;const rr=(Hr=Pi.sonAssets)==null?void 0:Hr.find(Bo=>Bo.id===ni.id);rr&&(rr.state="生成失败")})})}}function W(){const ze=A.value.filter(gt=>g.value.includes(gt.id));if(ze.length===0){window.$message.warning($t("workbench.assets.selectAtLeastOne"));return}const Ze=co.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmBatchDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{await mn.post("/assets/batchDelete",{id:ze.map(gt=>gt.id)}),window.$message.success($t("workbench.assets.deleteSuccess")),w(d.value),Ze.destroy()}})}const H=r.multiple?"multiple":"single",$=[{colKey:"row-select",type:H,width:50,align:"center",fixed:"left",disabled:ze=>{var Ze;return k(((Ze=ze.row)==null?void 0:Ze.id)??ze.id)}},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"previewWithLoading"},{colKey:"name",title:$t("workbench.assets.colName"),width:100,align:"left",ellipsis:!0},{colKey:"prompt",title:$t("workbench.assets.colPrompt"),width:200,align:"left",ellipsis:!0,cell:"prompt"},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:200,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:200,align:"left",ellipsis:!0},{colKey:"startTime",title:$t("workbench.assets.colCreateTime"),width:200,align:"center",cell:"startTime"},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:280,align:"center",fixed:"right",cell:"operation"}],G=[{colKey:"row-select",type:H,width:50,align:"center",fixed:"left"},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"previewWithLoading"},{colKey:"name",title:$t("workbench.assets.colName"),width:100,align:"left",ellipsis:!0},{colKey:"prompt",title:$t("workbench.assets.colPrompt"),width:200,align:"left",ellipsis:!0,cell:"prompt"},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:100,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:150,align:"left",ellipsis:!0},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:280,align:"center",fixed:"right",cell:"operation"}],q=[{colKey:"row-select",type:"multiple",width:50,align:"center",fixed:"left"},{colKey:"src",title:$t("workbench.assets.colPreview"),width:100,align:"center",cell:"preview"},{colKey:"name",title:$t("workbench.assets.colName"),width:200,align:"left",ellipsis:!0},{colKey:"describe",title:$t("workbench.assets.colDescribe"),width:200,align:"left",ellipsis:!0},{colKey:"remark",title:$t("workbench.assets.colRemark"),minWidth:200,align:"left",ellipsis:!0},{colKey:"startTime",title:$t("workbench.assets.colCreateTime"),width:200,align:"center",cell:"startTime"},{colKey:"operation",title:$t("workbench.assets.colOperation"),width:180,align:"center",fixed:"right",cell:"operation"}];function re(ze){const Ze=ze.filter(dn=>!k(dn)),gt=g.value;r.multiple?g.value=Ze:g.value=Ze.length>0?[Ze[Ze.length-1]]:[];const St=g.value.filter(dn=>!gt.includes(dn)),Pt=gt.filter(dn=>!g.value.includes(dn));St.forEach(dn=>{var pn;const on=A.value.find(ni=>ni.id===dn);if((pn=on==null?void 0:on.sonAssets)!=null&&pn.length){const ni=on.sonAssets.map(Pi=>Pi.id),Zn=new Set([...m.value,...ni]);m.value=Array.from(Zn)}}),Pt.forEach(dn=>{var pn;const on=A.value.find(ni=>ni.id===dn);if((pn=on==null?void 0:on.sonAssets)!=null&&pn.length){const ni=new Set(on.sonAssets.map(Zn=>Zn.id));m.value=m.value.filter(Zn=>!ni.has(Zn))}})}function J(ze){r.multiple?m.value=ze:m.value=ze.length>0?[ze[ze.length-1]]:[]}function oe(ze){ze.length>3&&(ze=ze.slice(-3)),v.value=ze}function se(ze){p.value.page=ze.current,p.value.pageSize=ze.pageSize,O()}const le=fe(!1),ue=fe({id:void 0,name:"",describe:"",type:"",prompt:"",src:""});function ee(ze){ue.value={id:ze.id,name:ze.name,describe:ze.describe,type:ze.type,prompt:ze.prompt,src:ze.src},le.value=!0}function de(ze){C.value={...ze},_.value=!0}function z(ze){const Ze=co.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{try{await mn.post("/assets/delAssets",{id:ze.id}),window.$message.success($t("workbench.assets.deleteSuccess")),w(d.value),Ze.destroy()}catch(gt){console.error("删除资产失败:",gt),window.$message.error($t("workbench.assets.deleteFail")),Ze.destroy()}}})}t({selectedRowKeys:g,selectedSubRowKeys:m,tableData:A});function Y(ze){var gt;if(!ze)return"unknown";const Ze=((gt=ze.split("?")[0].split(".").pop())==null?void 0:gt.toLowerCase())??"";return["png","jpg","jpeg","gif","webp","bmp","svg"].includes(Ze)?"image":["mp4","webm","ogg","mov","avi","mkv"].includes(Ze)?"video":["mp3","wav","ogg","aac","flac","m4a"].includes(Ze)?"audio":"unknown"}const ie=fe(!1),te=fe(""),Z=fe("unknown"),he=fe("");function pe(ze,Ze){ze&&(te.value=ze,Z.value=Y(ze),he.value=Ze,ie.value=!0)}function Ce(){ie.value=!1,te.value=""}function Qe(){const ze=[];return A.value.forEach(Ze=>{var gt;ze.push(Ze),(gt=Ze.sonAssets)!=null&>.length&&ze.push(...Ze.sonAssets)}),ze}function ke(ze){var Ze;for(const gt of A.value){if(gt.id===ze)return gt;const St=(Ze=gt.sonAssets)==null?void 0:Ze.find(Pt=>Pt.id===ze);if(St)return St}}const me=X(()=>Qe().filter(ze=>ze.promptState=="生成中")),_e=X(()=>Qe().filter(ze=>ze.state==="生成中"));let Te=null,De=null;async function Ye(){if(me.value.length===0)return;const ze=me.value.map(Ze=>Ze.id);try{const{data:Ze}=await mn.post("/assets/pollingPromptAssets",{ids:ze});Array.isArray(Ze)&&Ze.length&&(Ze.forEach(gt=>{const St=ke(gt.id);St&&(St.promptState=gt.promptState,gt.prompt!==void 0&&(St.prompt=gt.prompt))}),w(d.value))}catch(Ze){console.error("轮询提示词状态失败:",Ze)}}async function ot(){if(_e.value.length===0)return;const ze=_e.value.map(Ze=>Ze.id);try{const{data:Ze}=await mn.post("/assets/pollingImageAssets",{ids:ze});Array.isArray(Ze)&&Ze.length&&(Ze.forEach(gt=>{const St=ke(gt.id);St&&(St.state=gt.state,gt.filePath!==void 0&&(St.filePath=gt.filePath),gt.src!==void 0&&(St.src=gt.src),!gt.src&>.filePath&>.state!=="生成中"&&(St.src=gt.filePath))}),w(d.value))}catch(Ze){console.error("轮询图片生成状态失败:",Ze)}}function We(){Te||(Te=setInterval(async()=>{if(me.value.length===0){et();return}await Ye()},3e3))}function et(){Te&&(clearInterval(Te),Te=null)}function st(){De||(De=setInterval(async()=>{if(_e.value.length===0){Me();return}await ot()},3e3))}function Me(){De&&(clearInterval(De),De=null)}return pt(me,ze=>{ze.length>0?We():et()}),pt(_e,ze=>{ze.length>0?st():Me()}),(ze,Ze)=>{const gt=dL,St=Si,Pt=y1,dn=Ev,on=Wu,pn=Wc,ni=hL,Zn=_n("i-magic"),Pi=jne,rr=Mne,Hr=Ine,Bo=gc,lo=p2,Fr=uL,is=pA,yi=A2;return xe(),Ge("div",bjo,[ge("div",wjo,[c(Hr,{modelValue:Ae(d),"onUpdate:modelValue":Ze[3]||(Ze[3]=Gt=>Fn(d)?d.value=Gt:null),onChange:y},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(a),(Gt,gi)=>(xe(),Ut(rr,{key:gi,value:Gt.value},{label:Oe(()=>[ge("div",Ojo,[(xe(),Ut(Bd(Gt.icon),{theme:"outline",size:"20"})),ge("span",null,Pe(Gt.name),1)])]),default:Oe(()=>[ge("div",yjo,[ge("div",Cjo,[c(dn,null,{default:Oe(()=>[c(St,{theme:"primary",onClick:ri=>T(Gt.value)},{icon:Oe(()=>[c(gt,{name:"add"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.addPrefix"))+Pe(Gt.name),1)]),_:2},1032,["onClick"]),c(Pt,{placement:"bottom"},{content:Oe(()=>[ge("div",_jo,[ge("div",Sjo,[ge("span",{onClick:Ze[0]||(Ze[0]=ri=>B(1))},Pe(ze.$t("workbench.assets.generatePrompt")),1)]),ge("div",Ljo,[ge("span",{onClick:Ze[1]||(Ze[1]=ri=>B(2))},Pe(ze.$t("workbench.assets.generateImage")),1)])])]),default:Oe(()=>[Ae(d)!="clip"?(xe(),Ut(St,{key:0,theme:"primary"},{icon:Oe(()=>[c(gt,{name:"indent-left"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.batchGenerate")),1)]),_:1})):nn("",!0)]),_:1}),c(St,{theme:"default",variant:"outline",onClick:W},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.batchDelete")),1)]),_:1})]),_:2},1024),ge("div",xjo,[c(on,{modelValue:Ae(u),"onUpdate:modelValue":Ze[2]||(Ze[2]=ri=>Fn(u)?u.value=ri:null),placeholder:ze.$t("workbench.assets.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(St,{style:{"margin-left":"5px"},onClick:b},{icon:Oe(()=>[c(gt,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.search")),1)]),_:1})])]),ge("div",Ejo,[Ae(d)!=="clip"?(xe(),Ut(Pi,{key:0,columns:$,data:Ae(A),"selected-row-keys":Ae(g),"expanded-row-keys":Ae(v),"row-key":"id",hover:"",height:"calc(100vh - 300px)",stripe:"",size:"small",pagination:Ae(p),loading:Ae(f),"lazy-load":"","table-layout":"fixed","select-on-row-click":!1,onSelectChange:re,onExpandChange:oe,onPageChange:se},{expandedRow:Oe(({row:ri})=>[ge("div",Tjo,[c(Pi,{columns:G,data:ri.sonAssets||[],"selected-row-keys":Ae(m),"row-key":"id",hover:"",size:"small","table-layout":"fixed","select-on-row-click":!1,onSelectChange:J},{previewWithLoading:Oe(({row:tr})=>[ge("div",Qjo,[tr.state==="生成中"?(xe(),Ge("div",Djo,[c(pn,{size:"small"}),ge("span",Bjo,Pe(ze.$t("workbench.assets.generating")),1)])):(xe(),Ut(ni,{key:1,images:[tr.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:ht})=>[ge("div",{class:"imageTrigger",onClick:At=>tr.src&&ht()},[tr.src?(xe(),Ge("img",{key:0,src:tr.src,alt:tr.name,class:"previewImage"},null,8,Ijo)):(xe(),Ge("div",Mjo,[c(gt,{name:"image",size:"24px"})])),tr.src?(xe(),Ge("div",Pjo,[c(gt,{name:"browse",size:"20px"}),ge("span",Fjo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,Rjo)]),_:2},1032,["images"]))])]),prompt:Oe(({row:tr})=>[ge("div",Njo,[tr.promptState==="生成中"?(xe(),Ut(pn,{key:0,size:"small",style:{"margin-right":"4px"}})):nn("",!0),ge("span",{class:Eo({"generating-text":tr.promptState==="生成中"})},Pe(tr.prompt),3)])]),operation:Oe(({row:tr})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",disabled:k(tr.id),onClick:ht=>ee(tr)},{icon:Oe(()=>[c(Zn,{size:18})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.generate")),1)]),_:1},8,["disabled","onClick"]),c(St,{theme:"primary",variant:"text",onClick:ht=>de(tr)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",disabled:k(tr.id),onClick:ht=>z(tr)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys"])])]),preview:Oe(({row:ri})=>[ge("div",Ujo,[c(ni,{images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"imageTrigger",onClick:ht=>ri.src&&tr()},[ri.src?(xe(),Ge("img",{key:0,src:ri.src,alt:ri.name,class:"previewImage"},null,8,Wjo)):(xe(),Ge("div",Vjo,[c(gt,{name:"image",size:"24px"})])),ri.src?(xe(),Ge("div",zjo,[c(gt,{name:"browse",size:"20px"}),ge("span",Hjo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,jjo)]),_:2},1032,["images"])])]),prompt:Oe(({row:ri})=>[ge("div",$jo,[ri.promptState==="生成中"?(xe(),Ut(pn,{key:0,size:"small",style:{"margin-right":"4px"}})):nn("",!0),ge("span",{class:Eo({"generating-text":ri.promptState==="生成中"})},Pe(ri.prompt),3)])]),previewWithLoading:Oe(({row:ri})=>[ge("div",Xjo,[ri.state==="生成中"?(xe(),Ge("div",Gjo,[c(pn,{size:"small"}),ge("span",Yjo,Pe(ze.$t("workbench.assets.generating")),1)])):(xe(),Ut(ni,{key:1,images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"imageTrigger",onClick:ht=>ri.src&&tr()},[ri.src?(xe(),Ge("img",{key:0,src:ri.src,alt:ri.name,class:"previewImage"},null,8,qjo)):(xe(),Ge("div",Kjo,[c(gt,{name:"image",size:"24px"})])),ri.src?(xe(),Ge("div",Jjo,[c(gt,{name:"browse",size:"20px"}),ge("span",eWo,Pe(ze.$t("workbench.assets.preview")),1)])):nn("",!0)],8,Zjo)]),_:2},1032,["images"]))])]),startTime:Oe(({row:ri})=>[ge("span",null,Pe(Ae(JB)(ri.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),operation:Oe(({row:ri})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",disabled:k(ri.id),onClick:tr=>ee(ri)},{icon:Oe(()=>[c(Zn,{size:18})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.generate")),1)]),_:1},8,["disabled","onClick"]),c(St,{theme:"primary",variant:"text",onClick:tr=>de(ri)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",disabled:k(ri.id),onClick:tr=>z(ri)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])):nn("",!0),Ae(d)=="clip"?(xe(),Ut(Pi,{key:1,columns:q,data:Ae(A),"selected-row-keys":Ae(g),"expanded-row-keys":Ae(v),"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(p),loading:Ae(f),"lazy-load":"","table-layout":"fixed",onSelectChange:re,onExpandChange:oe,onPageChange:se},{preview:Oe(({row:ri})=>[ge("div",tWo,[Y(ri.src)==="image"?(xe(),Ut(ni,{key:0,images:[ri.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:tr})=>[ge("div",{class:"mediaTrigger",onClick:ht=>ri.src&&tr()},[ge("img",{src:ri.src,alt:ri.name},null,8,iWo),ge("div",rWo,[c(gt,{name:"browse",size:"20px"}),ge("span",oWo,Pe(ze.$t("workbench.assets.preview")),1)])],8,nWo)]),_:2},1032,["images"])):Y(ri.src)==="video"?(xe(),Ge("div",{key:1,class:"mediaTrigger videoThumb",onClick:tr=>pe(ri.src,ri.name)},[ge("video",{src:ri.src,class:"thumbVideo"},null,8,aWo),ge("div",lWo,[c(gt,{name:"play-circle",size:"24px"}),ge("span",cWo,Pe(ze.$t("workbench.assets.play")),1)])],8,sWo)):Y(ri.src)==="audio"?(xe(),Ge("div",{key:2,class:"mediaTrigger audioThumb",onClick:tr=>pe(ri.src,ri.name)},[c(gt,{name:"music",size:"28px"}),ge("div",uWo,[c(gt,{name:"play-circle",size:"24px"}),ge("span",hWo,Pe(ze.$t("workbench.assets.play")),1)])],8,dWo)):(xe(),Ge("div",fWo,[c(gt,{name:"image",size:"24px"})]))])]),startTime:Oe(({row:ri})=>[ge("span",null,Pe(Ae(JB)(ri.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),operation:Oe(({row:ri})=>[c(dn,{size:0},{default:Oe(()=>[c(St,{theme:"primary",variant:"text",onClick:tr=>de(ri)},{icon:Oe(()=>[c(gt,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.edit")),1)]),_:1},8,["onClick"]),c(St,{theme:"danger",variant:"text",onClick:tr=>z(ri)},{icon:Oe(()=>[c(gt,{name:"delete"})]),default:Oe(()=>[Bt(" "+Pe(ze.$t("workbench.assets.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])):nn("",!0)])])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),c(jUo,{modelValue:Ae(_),"onUpdate:modelValue":Ze[4]||(Ze[4]=Gt=>Fn(_)?_.value=Gt:null),type:Ae(d),title:h[Ae(d)],formData:Ae(C),onGetFilteredData:Ze[5]||(Ze[5]=Gt=>w(Ae(d)))},null,8,["modelValue","type","title","formData"]),c(pjo,{modelValue:Ae(le),"onUpdate:modelValue":Ze[6]||(Ze[6]=Gt=>Fn(le)?le.value=Gt:null),onUpdate:O,formData:Ae(ue)},null,8,["modelValue","formData"]),c(Bo,{visible:Ae(ie),"onUpdate:visible":Ze[7]||(Ze[7]=Gt=>Fn(ie)?ie.value=Gt:null),header:Ae(he)||ze.$t("workbench.assets.mediaPreview"),footer:!1,width:"600px",placement:"center",destroyOnClose:"",onClose:Ce},{default:Oe(()=>[ge("div",gWo,[Ae(Z)==="video"?(xe(),Ge("video",{key:0,src:Ae(te),controls:"",autoplay:"",class:"mediaPlayer videoPlayer"},null,8,mWo)):Ae(Z)==="audio"?(xe(),Ge("div",kWo,[ge("div",vWo,[c(gt,{name:"music",size:"64px"})]),ge("p",AWo,Pe(Ae(he)),1),ge("audio",{src:Ae(te),controls:"",autoplay:"",class:"mediaPlayer audioPlayer"},null,8,pWo)])):nn("",!0)])]),_:1},8,["visible","header"]),c(Bo,{visible:Ae(D),"onUpdate:visible":Ze[10]||(Ze[10]=Gt=>Fn(D)?D.value=Gt:null),header:Ae(M),width:"600px",top:"10vh",placement:"center",destroyOnClose:"",onConfirm:R,onClose:Ze[11]||(Ze[11]=Gt=>D.value=!1)},{default:Oe(()=>[ge("div",bWo,[ge("span",null,Pe(ze.$t("workbench.assets.confirmBatch",{type:Ae(M)})),1),c(yi,{labelAlign:"top"},{default:Oe(()=>[Ae(M)===ze.$t("workbench.assets.batchGenImage")?(xe(),Ut(lo,{key:0,label:ze.$t("workbench.assets.model"),name:"selectValue"},{default:Oe(()=>[c(T8,{modelValue:Ae(P),"onUpdate:modelValue":Ze[8]||(Ze[8]=Gt=>Fn(P)?P.value=Gt:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"])):nn("",!0),Ae(M)===ze.$t("workbench.assets.batchGenImage")?(xe(),Ut(lo,{key:1,label:ze.$t("workbench.assets.resolution"),name:"resolution"},{default:Oe(()=>[c(is,{modelValue:Ae(Q),"onUpdate:modelValue":Ze[9]||(Ze[9]=Gt=>Fn(Q)?Q.value=Gt:null),placeholder:ze.$t("workbench.assets.resolutionPh")},{default:Oe(()=>[c(Fr,{key:"1K",label:"1K",value:"1K"}),c(Fr,{key:"2K",label:"2K",value:"2K"}),c(Fr,{key:"4K",label:"4K",value:"4K"})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])):nn("",!0)]),_:1})])]),_:1},8,["visible","header"])])}}}),SUn=oo(wWo,[["__scopeId","data-v-afc25f42"]]),OWo=Object.freeze(Object.defineProperty({__proto__:null,default:SUn},Symbol.toStringTag,{value:"Module"}));function jV(e={}){const{types:t,clipMediaTypes:n,multiple:r=!0,title:o=window.$t("common.selectAssets")}=e;return new Promise(s=>{const a=document.createElement("div");document.body.appendChild(a);const l=fe(!1),d=fe();let u=!1;const h=()=>{p8(null,a),a.remove()},g=v=>{u||(u=!0,l.value=!1,m(),s(v))},m=()=>{var k,A;const v=xn(gc,{visible:l.value,header:o,width:"80%",top:"5vh",destroyOnClose:!0,confirmBtn:window.$t("common.confirm"),cancelBtn:window.$t("common.cancel"),onConfirm:()=>{var C,_,S;const p=((C=d.value)==null?void 0:C.selectedRowKeys)||[],b=((_=d.value)==null?void 0:_.selectedSubRowKeys)||[],w=((S=d.value)==null?void 0:S.tableData)||[],O=w.filter(L=>p.includes(L.id)),y=[];w.forEach(L=>{var E;(E=L.sonAssets)==null||E.forEach(T=>{b.includes(T.id)&&y.push(T)})}),g([...O,...y])},onClose:()=>g([]),onCancel:()=>g([]),onClosed:()=>h()},{default:()=>xn("div",{style:"height: 72vh; overflow: auto;"},[xn(SUn,{ref:d,selectorMode:!0,allowedTypes:t,clipMediaTypes:n,multiple:r})])}),f=(A=(k=document.querySelector("#app"))==null?void 0:k.__vue_app__)==null?void 0:A._context;f&&(v.appContext=f),p8(v,a)};m(),ai(()=>{l.value=!0,m()})})}const yWo={class:"details"},CWo={class:"assets-section"},_Wo={class:"assets-header"},SWo={key:0,class:"assets-list"},LWo={key:1,class:"assets-empty"},xWo=Je({__name:"editScript",props:Fc({item:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["searchScripts"],["update:modelValue"]),setup(e,{emit:t}){const n=Pf(e,"modelValue"),r=e,o=fe([]);pt(()=>{var u;return(u=r.item)==null?void 0:u.relatedAssets},u=>{o.value=(u==null?void 0:u.map(h=>({id:h.id,name:h.name})))??[]},{immediate:!0});async function s(){const u=await jV({title:$t("workbench.script.edit.msg.selectAssetsTitle"),types:["role","tool","scene"]});if(u.length){const h=new Set(o.value.map(g=>g.id));for(const g of u)h.has(g.id)||o.value.push({id:g.id,name:g.name})}}function a(u){o.value=o.value.filter(h=>h.id!==u)}const l=t;async function d(){try{await mn.post("/script/updateScript",{id:r.item.id,name:r.item.name,content:r.item.content,assets:o.value.map(u=>u.id)}),window.$message.success($t("workbench.script.edit.msg.updateSuccess"))}catch{window.$message.error($t("workbench.script.edit.msg.updateFailed"))}finally{l("searchScripts")}n.value=!1}return(u,h)=>{const g=Zbi,m=Wu,v=p2,f=c2,k=_n("i-plus"),A=Si,p=Sg,b=A2,w=gc;return xe(),Ge("div",yWo,[c(w,{visible:n.value,"onUpdate:visible":h[2]||(h[2]=O=>n.value=O),width:"60vw",top:"5vh",onConfirm:d},{header:Oe(()=>[c(g,{level:"h4",style:{margin:"0"}},{default:Oe(()=>[Bt(Pe(u.$t("workbench.script.edit.title")),1)]),_:1})]),default:Oe(()=>[c(b,{data:r.item,"label-align":"top",class:"detailsForm"},{default:Oe(()=>[c(v,{label:u.$t("workbench.script.edit.scriptName"),name:"name"},{default:Oe(()=>[c(m,{modelValue:r.item.name,"onUpdate:modelValue":h[0]||(h[0]=O=>r.item.name=O),maxlength:10,placeholder:u.$t("workbench.script.edit.scriptNamePh")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:u.$t("workbench.script.edit.scriptContent"),name:"content"},{default:Oe(()=>[c(f,{modelValue:r.item.content,"onUpdate:modelValue":h[1]||(h[1]=O=>r.item.content=O),placeholder:u.$t("workbench.script.edit.scriptContentPh"),autosize:{minRows:20,maxRows:20}},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(v,{label:u.$t("workbench.script.edit.relatedAssets"),name:"assets"},{default:Oe(()=>[ge("div",CWo,[ge("div",_Wo,[c(A,{size:"small",theme:"primary",variant:"outline",onClick:s},{icon:Oe(()=>[c(k)]),default:Oe(()=>[Bt(" "+Pe(u.$t("workbench.script.edit.selectAssets")),1)]),_:1})]),Ae(o).length?(xe(),Ge("div",SWo,[(xe(!0),Ge(sn,null,Bi(Ae(o),O=>(xe(),Ut(p,{key:O.id,closable:"",variant:"light-outline",onClose:y=>a(O.id)},{default:Oe(()=>[Bt(Pe(O.name),1)]),_:2},1032,["onClose"]))),128))])):(xe(),Ge("div",LWo,Pe(u.$t("workbench.script.edit.noAssets")),1))])]),_:1},8,["label"])]),_:1},8,["data"])]),_:1},8,["visible"])])}}}),EWo=oo(xWo,[["__scopeId","data-v-2dc13535"]]),TWo={class:"addScript"},QWo={class:"data"},DWo={class:"section name"},BWo={class:"section-label"},RWo={class:"section upload"},IWo={class:"section-label"},MWo={class:"dragIcon"},PWo={class:"upload-text"},FWo={class:"upload-hint"},NWo={class:"section content"},UWo={class:"section-label"},jWo={class:"section assets-section"},WWo={class:"assets-header"},VWo={class:"section-label"},zWo={key:0,class:"assets-list"},HWo={key:1,class:"assets-empty"},$Wo={class:"dialog-footer"},XWo=Je({__name:"addScript",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:Fc(["searchScripts"],["update:modelValue"]),setup(e,{emit:t}){const{project:n}=xs(ph()),r=Pf(e,"modelValue"),o=fe(null),s=fe(""),a=fe([]),l=fe(""),d=fe(!1);function u(){var y;(y=o.value)==null||y.triggerUpload()}async function h(y){const C=await y.arrayBuffer();return y.type==="text/plain"?new TextDecoder().decode(C):(await _p.extractRawText({arrayBuffer:C})).value}async function g(y){const C=y.raw;if(!C)return window.$message.error($t("workbench.script.add.msg.fileReadFailed")),!1;const _=["text/plain","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];if(C.type==="application/msword")return window.$message.warning($t("workbench.script.add.msg.docNotSupported")),a.value=[],!1;if(!_.includes(C.type))return window.$message.error($t("workbench.script.add.msg.unsupportedType")),a.value=[],!1;if(C.size>10*1024*1024)return window.$message.error($t("workbench.script.add.msg.fileTooLarge")),a.value=[],!1;const S=Wh({fullscreen:!0,attach:"body",text:$t("workbench.script.add.msg.parsing")});try{s.value=await h(C),l.value=s.value}catch(L){console.error("文件解析失败:",L),window.$message.error($t("workbench.script.add.msg.parseFailed")),a.value=[]}finally{S.hide()}return!1}async function m(y){var _;const C=(_=y.dataTransfer)==null?void 0:_.files;if(C&&C.length>0){a.value=[];const S=C[0];await g({raw:S})}}const v=fe([]);async function f(){const y=await jV({title:$t("workbench.script.add.msg.selectAssetsTitle"),types:["role","tool","scene"]});if(y.length){const C=new Set(v.value.map(_=>_.id));for(const _ of y)C.has(_.id)||v.value.push({id:_.id,name:_.name})}}function k(y){v.value=v.value.filter(C=>C.id!==y)}function A(){r.value=!1,l.value="",s.value="",a.value=[],v.value=[]}function p(){l.value="",s.value="",a.value=[],v.value=[],r.value=!1}const b=t;async function w(){var y;if(!l.value.trim()){window.$message.warning($t("workbench.script.add.msg.enterContent"));return}if(!O.value.trim()){window.$message.warning($t("workbench.script.add.msg.enterName"));return}d.value=!0;try{await mn.post("/script/addScript",{name:O.value,content:l.value,projectId:(y=n.value)==null?void 0:y.id,assets:v.value.map(C=>C.id)}),window.$message.success($t("workbench.script.add.msg.addSuccess")),p(),b("searchScripts")}catch(C){console.error("添加剧本失败:",C),window.$message.error(C.message??$t("workbench.script.add.msg.addFailed"))}finally{d.value=!1}}const O=fe("");return(y,C)=>{const _=Wu,S=X4e,L=_n("i-upload-one"),E=c2,T=_n("i-plus"),D=Si,P=Sg,Q=gc;return xe(),Ge("div",TWo,[c(Q,{visible:r.value,"onUpdate:visible":C[4]||(C[4]=M=>r.value=M),width:"60vw",top:"5vh",header:y.$t("workbench.script.add.title"),closable:!1,maskClosable:!1},{footer:Oe(()=>[ge("div",$Wo,[c(D,{theme:"default",onClick:A},{default:Oe(()=>[Bt(Pe(y.$t("workbench.script.add.cancel")),1)]),_:1}),c(D,{theme:"primary",loading:Ae(d),onClick:w},{default:Oe(()=>[Bt(Pe(y.$t("workbench.script.add.confirm")),1)]),_:1},8,["loading"])])]),default:Oe(()=>[ge("div",QWo,[ge("div",DWo,[ge("span",BWo,Pe(y.$t("workbench.script.add.scriptName")),1),c(_,{modelValue:Ae(O),"onUpdate:modelValue":C[0]||(C[0]=M=>Fn(O)?O.value=M:null),placeholder:y.$t("workbench.script.add.scriptNamePh")},null,8,["modelValue","placeholder"])]),ge("div",RWo,[ge("span",IWo,Pe(y.$t("workbench.script.add.uploadFile")),1),ge("div",{class:"upload-area",onClick:u,onDragover:C[2]||(C[2]=Mr(()=>{},["prevent"])),onDrop:Mr(m,["prevent"])},[c(S,{ref_key:"uploadRef",ref:o,modelValue:Ae(a),"onUpdate:modelValue":C[1]||(C[1]=M=>Fn(a)?a.value=M:null),theme:"file",multiple:!1,max:1,"before-upload":g,style:{display:"none"}},null,8,["modelValue"]),ge("div",MWo,[c(L,{theme:"outline",size:"32",fill:"var(--td-brand-color)"})]),ge("p",PWo,Pe(y.$t("workbench.script.add.dragUpload")),1),ge("p",FWo,Pe(y.$t("workbench.script.add.uploadHint")),1)],32)]),ge("div",NWo,[ge("span",UWo,Pe(y.$t("workbench.script.add.scriptContent")),1),c(E,{modelValue:Ae(l),"onUpdate:modelValue":C[3]||(C[3]=M=>Fn(l)?l.value=M:null),placeholder:y.$t("workbench.script.add.scriptContentPh"),name:"description",autosize:{minRows:12,maxRows:12}},null,8,["modelValue","placeholder"])]),ge("div",jWo,[ge("div",WWo,[ge("span",VWo,Pe(y.$t("workbench.script.add.relatedAssets")),1),c(D,{size:"small",theme:"primary",variant:"outline",onClick:f},{icon:Oe(()=>[c(T)]),default:Oe(()=>[Bt(" "+Pe(y.$t("workbench.script.add.selectAssets")),1)]),_:1})]),Ae(v).length?(xe(),Ge("div",zWo,[(xe(!0),Ge(sn,null,Bi(Ae(v),M=>(xe(),Ut(P,{key:M.id,closable:"",variant:"light-outline",onClose:B=>k(M.id)},{default:Oe(()=>[Bt(Pe(M.name),1)]),_:2},1032,["onClose"]))),128))])):(xe(),Ge("div",HWo,Pe(y.$t("workbench.script.add.noAssets")),1))])])]),_:1},8,["visible","header"])])}}}),GWo=oo(XWo,[["__scopeId","data-v-b9b0384d"]]),YWo={class:"script"},ZWo={class:"actionBar"},qWo={class:"actionBar-left f ac"},KWo={key:0,class:"actionBar-right f ac"},JWo={class:"contentArea"},eVo={key:0,class:"emptyState"},tVo={key:1,class:"scriptsList f w"},nVo=["onClick"],iVo={class:"cardHeader"},rVo={class:"cardTitle"},oVo={class:"content"},sVo={class:"del"},aVo=Je({__name:"index",setup(e){const{otherSetting:t}=xs(ku()),{project:n}=xs(ph()),r=fe([]),o=fe(""),s=fe(!1),a=fe([]),l=fe(!1),d=X(()=>r.value.length>0&&a.value.length===r.value.length);function u(E){const T=a.value.indexOf(E);T===-1?a.value.push(E):a.value.splice(T,1)}function h(E){E?a.value=r.value.map(T=>T.id):a.value=[]}async function g(){var E;try{const T=await mn.post("/script/getScrptApi",{projectId:(E=n.value)==null?void 0:E.id,name:o.value});r.value=T.data}catch(T){console.error("搜索剧本失败:",T),window.$message.error($t("workbench.script.msg.searchFailed"))}}An(g);function m(){g()}function v(){s.value=!0}async function f(){if(!a.value.length){window.$message.warning($t("workbench.script.msg.selectsExport"));return}try{const E=await mn.post("/script/exportScript",{id:a.value},{responseType:"blob"}),T=new Blob([E],{type:"application/zip"}),D=URL.createObjectURL(T),P=document.createElement("a");P.href=D,P.download=`script_${new Date().toISOString().slice(0,10)}.zip`,document.body.appendChild(P),P.click(),document.body.removeChild(P),URL.revokeObjectURL(D),window.$message.success($t("workbench.script.msg.exportSuccess"))}catch(E){console.error("导出剧本失败:",E),window.$message.error(E.message??$t("workbench.script.msg.exportFailed"))}}const k=fe({id:0,name:"",content:""}),A=fe(!1);function p(E){k.value={...E},A.value=!0}async function b(E){const T=co.confirm({header:$t("workbench.script.msg.deleteHeader"),body:$t("workbench.script.msg.deleteBody"),confirmBtn:$t("workbench.script.msg.deleteConfirm"),cancelBtn:$t("workbench.script.msg.cancel"),theme:"warning",onConfirm:async()=>{try{await mn.post("/script/delScript",{id:[E]}),window.$message.success($t("workbench.script.msg.deleteSuccess")),g(),T.destroy()}catch(D){console.error("删除剧本失败:",D),window.$message.error($t("workbench.script.msg.deleteFailed")),T.destroy()}},onClose:()=>{T.destroy()}})}async function w(){if(!n.value)return window.$message.error($t("workbench.script.msg.projectNotFound"));l.value=!0;try{await mn.post("/script/extractAssets",{scriptIds:a.value,projectId:n.value.id,groupSize:t.value.assetsBatchGenereateSize}),g()}catch(E){window.$message.error((E==null?void 0:E.message)||$t("workbench.script.msg.extractFailed"))}finally{l.value=!1}}async function O(){if(!a.value.length){window.$message.warning($t("workbench.script.msg.selectDelScript"));return}const E=new Set(S.value.map(D=>D.id));if(a.value.some(D=>E.has(D)))return window.$message.error($t("workbench.script.msg.extractingInProgress"));const T=co.confirm({header:$t("workbench.script.msg.batchDeleteHeader"),body:$t("workbench.script.msg.batchDeleteBody",{count:a.value.length}),confirmBtn:$t("workbench.script.msg.deleteConfirm"),cancelBtn:$t("workbench.script.msg.cancel"),theme:"warning",onConfirm:async()=>{try{await mn.post("/script/delScript",{id:a.value}),window.$message.success($t("workbench.script.msg.batchDeleteSuccess")),g(),T.destroy()}catch(D){console.error("删除剧本失败:",D),window.$message.error($t("workbench.script.msg.deleteFailed")),T.destroy()}finally{a.value=[]}},onClose:()=>{T.destroy()}})}let y=null;function C(){y||(y=setInterval(async()=>{if(S.value.length===0){_();return}await L()},3e3))}function _(){y&&(clearInterval(y),y=null)}const S=X(()=>r.value.filter(E=>E.extractState==0));async function L(){if(S.value.length===0)return;const E=S.value.map(T=>T.id);try{const{data:T}=await mn.post("/script/pollScriptAssets",{ids:E});T.length&&g()}catch(T){console.error("轮询事件状态失败:",T)}}return pt(()=>S.value,E=>{E.length>0?C():_()}),Qa(()=>{_()}),(E,T)=>{const D=Wu,P=_n("i-search"),Q=Si,M=_n("i-plus"),B=_n("i-export"),R=_n("i-delete"),I=Xy,F=py,j=Wc,W=Sg,H=el,$=km;return xe(),Ge("div",YWo,[ge("div",ZWo,[ge("div",qWo,[c(D,{placeholder:E.$t("workbench.script.searchPlaceholder"),modelValue:Ae(o),"onUpdate:modelValue":T[0]||(T[0]=G=>Fn(o)?o.value=G:null),class:"searchInput",clearable:"",style:{width:"300px"}},null,8,["placeholder","modelValue"]),c(Q,{theme:"primary",onClick:m},{icon:Oe(()=>[c(P)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.search")),1)]),_:1}),c(Q,{theme:"primary",onClick:v},{icon:Oe(()=>[c(M)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.addScript")),1)]),_:1})]),Ae(r).length?(xe(),Ge("div",KWo,[c(Q,{theme:Ae(d)?"default":"primary",variant:"outline",onClick:T[1]||(T[1]=G=>h(!Ae(d)))},{default:Oe(()=>[Bt(Pe(Ae(d)?E.$t("workbench.script.cancelSelectAll"):E.$t("workbench.script.selectAll")),1)]),_:1},8,["theme"]),c(Q,{theme:"primary",onClick:f,disabled:Ae(a).length===0},{icon:Oe(()=>[c(B)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.exportScript"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["disabled"]),c(Q,{theme:"primary",onClick:w,loading:Ae(l),disabled:Ae(a).length===0},{icon:Oe(()=>[c(B)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.extractAssets"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["loading","disabled"]),c(Q,{theme:"primary",onClick:O,disabled:Ae(a).length===0},{icon:Oe(()=>[c(R)]),default:Oe(()=>[Bt(" "+Pe(E.$t("workbench.script.deleteScript"))+Pe(Ae(a).length?`(${Ae(a).length})`:""),1)]),_:1},8,["disabled"])])):nn("",!0)]),ge("div",JWo,[Ae(r).length===0?(xe(),Ge("div",eVo,[c(I)])):(xe(),Ge("div",tVo,[(xe(!0),Ge(sn,null,Bi(Ae(r),(G,q)=>(xe(),Ge("div",{key:q,onClick:re=>p(G),class:"scriptCard"},[c($,{shadow:"","hover-shadow":"",style:{width:"400px",cursor:"pointer"}},{header:Oe(()=>[ge("div",iVo,[ge("span",rVo,Pe(G.name),1),c(F,{checked:Ae(a).includes(G.id),onClick:T[2]||(T[2]=Mr(()=>{},["stop"])),onChange:re=>u(G.id),class:"cardCheckbox"},null,8,["checked","onChange"])])]),default:Oe(()=>{var re;return[ge("span",oVo,Pe(G.content),1),(G==null?void 0:G.extractState)==0?(xe(),Ut(j,{key:0,text:E.$t("workbench.script.msg.extracting"),size:"small"},null,8,["text"])):nn("",!0),(G==null?void 0:G.extractState)==2?(xe(),Ut(j,{key:1,text:E.$t("workbench.script.msg.waitExtract"),size:"small"},null,8,["text"])):nn("",!0),(G==null?void 0:G.extractState)==-1?(xe(),Ut(H,{key:2,content:G.errorReason,theme:"light"},{default:Oe(()=>[c(W,{theme:"danger",size:"small"},{default:Oe(()=>[Bt(Pe(E.$t("workbench.script.msg.extractFailed")),1)]),_:1})]),_:1},8,["content"])):(re=G.relatedAssets)!=null&&re.length?(xe(),Ge("div",{key:3,class:"assetTags",onClick:T[3]||(T[3]=Mr(()=>{},["stop"]))},[(xe(!0),Ge(sn,null,Bi(G.relatedAssets,J=>(xe(),Ut(W,{key:J.id,variant:"light-outline",size:"small"},{default:Oe(()=>[Bt(Pe(J.name),1)]),_:2},1024))),128))])):nn("",!0),ge("div",sVo,[c(R,{theme:"outline",size:"18",onClick:Mr(J=>b(G.id),["stop"]),style:{cursor:"pointer"}},null,8,["onClick"])])]}),_:2},1024)],8,nVo))),128))]))]),c(EWo,{modelValue:Ae(A),"onUpdate:modelValue":T[4]||(T[4]=G=>Fn(A)?A.value=G:null),item:Ae(k),onSearchScripts:g},null,8,["modelValue","item"]),c(GWo,{modelValue:Ae(s),"onUpdate:modelValue":T[5]||(T[5]=G=>Fn(s)?s.value=G:null),onSearchScripts:g},null,8,["modelValue"])])}}}),lVo=oo(aVo,[["__scopeId","data-v-235d9376"]]),cVo=Object.freeze(Object.defineProperty({__proto__:null,default:lVo},Symbol.toStringTag,{value:"Module"}));function tp(e){"@babel/helpers - typeof";return tp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tp(e)}function dVo(e,t){if(tp(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(tp(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function LUn(e){var t=dVo(e,"string");return tp(t)=="symbol"?t:t+""}function u0(e,t,n){return(t=LUn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}/** * @tdesign-vue-next/chat v0.5.1 * (c) 2026 tdesign * @license MIT @@ -3451,11 +3451,11 @@ Expected a VNode / Vthunk / VWidget / string but: got: `+v(w.foreignObject)+`. The parent vnode is: -`+v(w.parentVnode),O.foreignObject=w.foreignObject,O.parentVnode=w.parentVnode,O}for(var b=0;b=re.length?$.length:re[le],te=0;te<$.length;te++){var Z=$[te];Z.key?oe.hasOwnProperty(Z.key)||se.push(Z):te>=ie&&se.push(Z)}for(var he,pe=se.slice(),Ce=0,Qe=[],ke=[],me=0;me<$.length;){var _e=$[me];for(he=pe[Ce];he===null&&pe.length;)Qe.push(f(pe,Ce,null)),he=pe[Ce];he&&he.key===_e.key?(Ce++,me++):_e.key?(he&&he.key&&q[he.key]!==me+1?(Qe.push(f(pe,Ce,he.key)),(he=pe[Ce])&&he.key===_e.key?Ce++:ke.push({key:_e.key,to:me})):ke.push({key:_e.key,to:me}),me++):he&&he.key&&Qe.push(f(pe,Ce,he.key))}for(;CeR?B:R,F=0;F=s&&d<=a;if(da))return!0;h=l-1}}return!1}function r(o,s){return o>s?1:-1}return ZGt=function(s,a,l,d){return l&&l.length!==0?(l.sort(r),t(s,a,l,d,0)):{}}}function jqo(){if(eYt)return pEe;eYt=1;var e=xzn(),t=jR(),n=_zn(),r=function(){if(JGt)return KGt;JGt=1;var s=jR();return KGt=function(l,d){return!(!s(l)||!s(d))&&("name"in l&&"name"in d?l.id===d.id:l.init===d.init)}}();function o(s,a){typeof a.destroy=="function"&&t(a)&&a.destroy(s)}return pEe=function(a,l,d){var u=a.type,h=a.vNode,g=a.patch;switch(u){case n.REMOVE:return function(m,v){var f=m.parentNode;return f&&f.removeChild(m),o(m,v),null}(l,h);case n.INSERT:return function(m,v,f){var k=f.render(v,f);return m&&m.appendChild(k),m}(l,g,d);case n.VTEXT:return function(m,v,f,k){var A;if(m.nodeType===3)m.replaceData(0,m.length,f.text),A=m;else{var p=m.parentNode;A=k.render(f,k),p&&A!==m&&p.replaceChild(A,m)}return A}(l,0,g,d);case n.WIDGET:return function(m,v,f,k){var A,p=r(v,f);A=p?f.update(v,m)||m:k.render(f,k);var b=m.parentNode;return b&&A!==m&&b.replaceChild(A,m),p||o(m,v),A}(l,h,g,d);case n.VNODE:return function(m,v,f,k){var A=m.parentNode,p=k.render(f,k);return A&&p!==m&&A.replaceChild(p,m),p}(l,0,g,d);case n.ORDER:return function(m,v){for(var f,k,A,p=m.childNodes,b={},w=0;w=O++?null:p[A.to])}(l,g),l;case n.PROPS:return e(l,g,h.properties),l;case n.THUNK:return function(m,v){return m&&v&&m!==v&&m.parentNode&&m.parentNode.replaceChild(v,m),v}(l,d.patch(l,g,d));default:return l}},pEe}function Wqo(){if(tYt)return bEe;tYt=1;var e=rYt(),t=yot(),n=function(){if(YGt)return AEe;YGt=1;var l=rYt(),d=xzn(),u=Gee(),h=fOe(),g=jR(),m=Szn();return AEe=function v(f,k){var A=k&&k.document||l,p=k?k.warn:null;if(f=m(f).a,g(f))return f.init();if(h(f))return A.createTextNode(f.text);if(!u(f))return p&&p("Item is not a valid virtual dom node",f),null;var b=f.namespace===null?A.createElement(f.tagName):A.createElementNS(f.namespace,f.tagName),w=f.properties;d(b,w);for(var O=f.children,y=0;y=o&&k>=r)return l[d]=u,this.$backtraceSnakes(l,r,o,d)}l[d]=u}return[]}},{key:"$backtraceSnakes",value:function(t,n,r,o){for(var s=[],a={x:r,y:n},l=o;l>0;l--){var d=t[l],u=t[l-1],h=a.x-a.y,g=d[h],m=h===-l||h!==l&&u[h+1]>u[h-1],v=m?h+1:h-1,f=u[v],k=f-v,A=m?f:f+1;s.unshift({xStart:f,xMid:A,xEnd:g}),a.x=f,a.y=k}return s}},{key:"assembleResult",value:function(t,n,r){var o=0,s=[],a={},l={},d={};return ki(t).call(t,function(u,h){var g=u.xStart;if(h===0&&u.xStart!==0)for(var m=0;m0;)o[d]=o[--d];d!==u++&&(o[d]=l)}else for(var h=t(a/2),g=r(e(o,0,h),s),m=r(e(o,h),s),v=g.length,f=m.length,k=0,A=0;k=Se.length)return Me.target=void 0,L(void 0,!0);var ze=Se[Ie];switch(Me.kind){case"keys":return L(ze.key,!1);case"values":return L(ze.value,!1)}return L([ze.key,ze.value],!1)},!0),Te=function(Se){this.entries=[],this.url=null,Se!==void 0&&(w(Se)?this.parseObject(Se):this.parseQuery(typeof Se=="string"?oe(Se,0)==="?"?Y(Se,1):Se:O(Se)))};Te.prototype={type:Q,bindURL:function(Se){this.url=Se,this.update()},parseObject:function(Se){var Ie,ze,Ze,gt,St,Pt,dn,on=this.entries,pn=S(Se);if(pn)for(ze=(Ie=_(Se,pn)).next;!(Ze=r(ze,Ie)).done;){if(St=(gt=_(b(Ze.value))).next,(Pt=r(St,gt)).done||(dn=r(St,gt)).done||!r(St,gt).done)throw new q("Expected sequence with length 2");le(on,{key:O(Pt.value),value:O(dn.value)})}else for(var ni in Se)k(Se,ni)&&le(on,{key:ni,value:O(Se[ni])})},parseQuery:function(Se){if(Se)for(var Ie,ze,Ze=this.entries,gt=z(Se,"&"),St=0;St0?arguments[0]:void 0));s||(this.size=Se.entries.length)},Ye=De.prototype;if(u(Ye,{append:function(Se,Ie){var ze=R(this);E(arguments.length,2),le(ze.entries,{key:O(Se),value:O(Ie)}),s||this.length++,ze.updateURL()},delete:function(Se){for(var Ie=R(this),ze=E(arguments.length,1),Ze=Ie.entries,gt=O(Se),St=ze<2?void 0:arguments[1],Pt=St===void 0?St:O(St),dn=0;dnze.key?1:-1}),Se.updateURL()},forEach:function(Se){for(var Ie,ze=R(this).entries,Ze=A(Se,arguments.length>1?arguments[1]:void 0),gt=0;gt1?et(arguments[1]):{})}}),f(j)){var st=function(Se){return v(this,H),new j(Se,arguments.length>1?et(arguments[1]):{})};H.constructor=st,st.prototype=H,e({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:st})}}return lYt={URLSearchParams:De,getState:R}}var dYt,uYt,hYt,fYt,gYt={};function $qo(){if(uYt)return dYt;uYt=1;var e=Xs(),t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,o="Overflow: input needs wider integers to process",s=RangeError,a=e(r.exec),l=Math.floor,d=String.fromCharCode,u=e("".charCodeAt),h=e([].join),g=e([].push),m=e("".replace),v=e("".split),f=e("".toLowerCase),k=function(w){return w+22+75*(w<26)},A=function(w,O,y){var C=0;for(w=y?l(w/700):w>>1,w+=l(w/O);w>455;)w=l(w/35),C+=36;return l(C+36*w/(w+38))},p=function(w){var O=[];w=function(j){for(var W=[],H=0,$=j.length;H<$;){var G=u(j,H++);if(G>=55296&&G<=56319&&H<$){var q=u(j,H++);(64512&q)==56320?g(W,((1023&G)<<10)+(1023&q)+65536):(g(W,G),H--)}else g(W,G)}return W}(w);var y,C,_=w.length,S=128,L=0,E=72;for(y=0;y=S&&Cl((t-L)/Q))throw new s(o);for(L+=(P-S)*Q,S=P,y=0;yt)throw new s(o);if(C===S){for(var M=L,B=36;;){var R=B<=E?1:B>=E+26?26:B-E;if(M?@[\\\]^|]/,te=/[\0\t\n\r #/:<>?@[\\\]^|]/,Z=/^[\u0000-\u0020]+/,he=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,pe=/[\t\n\r]/g,Ce=function(At){var Mt,Kt,qn,Zt;if(typeof At=="number"){for(Mt=[],Kt=0;Kt<4;Kt++)q(Mt,At%256),At=D(At/256);return B(Mt,".")}if(kn(At)=="object"){for(Mt="",qn=function(so){for(var Un=null,dt=1,Ne=null,nt=0,bn=0;bn<8;bn++)so[bn]!==0?(nt>dt&&(Un=Ne,dt=nt),Ne=null,nt=0):(Ne===null&&(Ne=bn),++nt);return nt>dt&&(Un=Ne,dt=nt),Un}(At),Kt=0;Kt<8;Kt++)Zt&&At[Kt]===0||(Zt&&(Zt=!1),qn===Kt?(Mt+=Kt?":":"::",Zt=!0):(Mt+=R(At[Kt],16),Kt<7&&(Mt+=":")));return"["+Mt+"]"}return At},Qe={},ke=g({},Qe,{" ":1,'"':1,"<":1,">":1,"`":1}),me=g({},ke,{"#":1,"?":1,"{":1,"}":1}),_e=g({},me,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Te=function(At,Mt){var Kt=f(At,0);return Kt>32&&Kt<127&&!h(Mt,At)?At:encodeURIComponent(At)},De={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ye=function(At,Mt){var Kt;return At.length===2&&M(se,Q(At,0))&&((Kt=Q(At,1))===":"||!Mt&&Kt==="|")},ot=function(At){var Mt;return At.length>1&&Ye($(At,0,2))&&(At.length===2||(Mt=Q(At,2))==="/"||Mt==="\\"||Mt==="?"||Mt==="#")},We=function(At){return At==="."||G(At)==="%2e"},et={},st={},Me={},Se={},Ie={},ze={},Ze={},gt={},St={},Pt={},dn={},on={},pn={},ni={},Zn={},Pi={},rr={},Hr={},Bo={},lo={},Fr={},is=function ht(At,Mt,Kt){var qn,Zt,so,Un=A(At);if(Mt){if(Zt=this.parse(Un))throw new E(Zt);this.searchParams=null}else{if(Kt!==void 0&&(qn=new ht(Kt,!0)),Zt=this.parse(Un,null,qn))throw new E(Zt);(so=S(new _)).bindURL(this),this.searchParams=so}};is.prototype={type:"URL",parse:function(At,Mt,Kt){var qn,Zt,so,Un,dt,Ne=this,nt=Mt||et,bn=0,hn="",En=!1,wi=!1,Ue=!1;for(At=A(At),Mt||(Ne.scheme="",Ne.username="",Ne.password="",Ne.host=null,Ne.port=null,Ne.path=[],Ne.query=null,Ne.fragment=null,Ne.cannotBeABaseURL=!1,At=j(At,Z,""),At=j(At,he,"$1")),At=j(At,pe,""),qn=m(At);bn<=qn.length;){switch(Zt=qn[bn],nt){case et:if(!Zt||!M(se,Zt)){if(Mt)return re;nt=Me;continue}hn+=G(Zt),nt=st;break;case st:if(Zt&&(M(le,Zt)||Zt==="+"||Zt==="-"||Zt==="."))hn+=G(Zt);else{if(Zt!==":"){if(Mt)return re;hn="",nt=Me,bn=0;continue}if(Mt&&(Ne.isSpecial()!==h(De,hn)||hn==="file"&&(Ne.includesCredentials()||Ne.port!==null)||Ne.scheme==="file"&&!Ne.host))return;if(Ne.scheme=hn,Mt)return void(Ne.isSpecial()&&De[Ne.scheme]===Ne.port&&(Ne.port=null));hn="",Ne.scheme==="file"?nt=ni:Ne.isSpecial()&&Kt&&Kt.scheme===Ne.scheme?nt=Se:Ne.isSpecial()?nt=gt:qn[bn+1]==="/"?(nt=Ie,bn++):(Ne.cannotBeABaseURL=!0,F(Ne.path,""),nt=Bo)}break;case Me:if(!Kt||Kt.cannotBeABaseURL&&Zt!=="#")return re;if(Kt.cannotBeABaseURL&&Zt==="#"){Ne.scheme=Kt.scheme,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",Ne.cannotBeABaseURL=!0,nt=Fr;break}nt=Kt.scheme==="file"?ni:ze;continue;case Se:if(Zt!=="/"||qn[bn+1]!=="/"){nt=ze;continue}nt=St,bn++;break;case Ie:if(Zt==="/"){nt=Pt;break}nt=Hr;continue;case ze:if(Ne.scheme=Kt.scheme,Zt===e)Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query=Kt.query;else if(Zt==="/"||Zt==="\\"&&Ne.isSpecial())nt=Ze;else if(Zt==="?")Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query="",nt=lo;else{if(Zt!=="#"){Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.path.length--,nt=Hr;continue}Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",nt=Fr}break;case Ze:if(!Ne.isSpecial()||Zt!=="/"&&Zt!=="\\"){if(Zt!=="/"){Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,nt=Hr;continue}nt=Pt}else nt=St;break;case gt:if(nt=St,Zt!=="/"||Q(hn,bn+1)!=="/")continue;bn++;break;case St:if(Zt!=="/"&&Zt!=="\\"){nt=Pt;continue}break;case Pt:if(Zt==="@"){En&&(hn="%40"+hn),En=!0,so=m(hn);for(var ut=0;ut65535)return oe;Ne.port=Ne.isSpecial()&&Cn===De[Ne.scheme]?null:Cn,hn=""}if(Mt)return;nt=rr;continue}return oe}hn+=Zt;break;case ni:if(Ne.scheme="file",Zt==="/"||Zt==="\\")nt=Zn;else{if(!Kt||Kt.scheme!=="file"){nt=Hr;continue}switch(Zt){case e:Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query=Kt.query;break;case"?":Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query="",nt=lo;break;case"#":Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",nt=Fr;break;default:ot(B(v(qn,bn),""))||(Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.shortenPath()),nt=Hr;continue}}break;case Zn:if(Zt==="/"||Zt==="\\"){nt=Pi;break}Kt&&Kt.scheme==="file"&&!ot(B(v(qn,bn),""))&&(Ye(Kt.path[0],!0)?F(Ne.path,Kt.path[0]):Ne.host=Kt.host),nt=Hr;continue;case Pi:if(Zt===e||Zt==="/"||Zt==="\\"||Zt==="?"||Zt==="#"){if(!Mt&&Ye(hn))nt=Hr;else if(hn===""){if(Ne.host="",Mt)return;nt=rr}else{if(Un=Ne.parseHost(hn))return Un;if(Ne.host==="localhost"&&(Ne.host=""),Mt)return;hn="",nt=rr}continue}hn+=Zt;break;case rr:if(Ne.isSpecial()){if(nt=Hr,Zt!=="/"&&Zt!=="\\")continue}else if(Mt||Zt!=="?")if(Mt||Zt!=="#"){if(Zt!==e&&(nt=Hr,Zt!=="/"))continue}else Ne.fragment="",nt=Fr;else Ne.query="",nt=lo;break;case Hr:if(Zt===e||Zt==="/"||Zt==="\\"&&Ne.isSpecial()||!Mt&&(Zt==="?"||Zt==="#")){if((dt=G(dt=hn))===".."||dt==="%2e."||dt===".%2e"||dt==="%2e%2e"?(Ne.shortenPath(),Zt==="/"||Zt==="\\"&&Ne.isSpecial()||F(Ne.path,"")):We(hn)?Zt==="/"||Zt==="\\"&&Ne.isSpecial()||F(Ne.path,""):(Ne.scheme==="file"&&!Ne.path.length&&Ye(hn)&&(Ne.host&&(Ne.host=""),hn=Q(hn,0)+":"),F(Ne.path,hn)),hn="",Ne.scheme==="file"&&(Zt===e||Zt==="?"||Zt==="#"))for(;Ne.path.length>1&&Ne.path[0]==="";)W(Ne.path);Zt==="?"?(Ne.query="",nt=lo):Zt==="#"&&(Ne.fragment="",nt=Fr)}else hn+=Te(Zt,me);break;case Bo:Zt==="?"?(Ne.query="",nt=lo):Zt==="#"?(Ne.fragment="",nt=Fr):Zt!==e&&(Ne.path[0]+=Te(Zt,Qe));break;case lo:Mt||Zt!=="#"?Zt!==e&&(Zt==="'"&&Ne.isSpecial()?Ne.query+="%27":Ne.query+=Zt==="#"?"%23":Te(Zt,Qe)):(Ne.fragment="",nt=Fr);break;case Fr:Zt!==e&&(Ne.fragment+=Te(Zt,ke))}bn++}},parseHost:function(At){var Mt,Kt,qn;if(Q(At,0)==="["){if(Q(At,At.length-1)!=="]"||(Mt=function(Zt){var so,Un,dt,Ne,nt,bn,hn,En=[0,0,0,0,0,0,0,0],wi=0,Ue=null,ut=0,Nt=function(){return Q(Zt,ut)};if(Nt()===":"){if(Q(Zt,1)!==":")return;ut+=2,Ue=++wi}for(;Nt();){if(wi===8)return;if(Nt()!==":"){for(so=Un=0;Un<4&&M(Y,Nt());)so=16*so+T(Nt(),16),ut++,Un++;if(Nt()==="."){if(Un===0||(ut-=Un,wi>6))return;for(dt=0;Nt();){if(Ne=null,dt>0){if(!(Nt()==="."&&dt<4))return;ut++}if(!M(ue,Nt()))return;for(;M(ue,Nt());){if(nt=T(Nt(),10),Ne===null)Ne=nt;else{if(Ne===0)return;Ne=10*Ne+nt}if(Ne>255)return;ut++}En[wi]=256*En[wi]+Ne,++dt!=2&&dt!==4||wi++}if(dt!==4)return;break}if(Nt()===":"){if(ut++,!Nt())return}else if(Nt())return;En[wi++]=so}else{if(Ue!==null)return;ut++,Ue=++wi}}if(Ue!==null)for(bn=wi-Ue,wi=7;wi!==0&&bn>0;)hn=En[wi],En[wi--]=En[Ue+bn-1],En[Ue+--bn]=hn;else if(wi!==8)return;return En}($(At,1,-1)),!Mt))return J;this.host=Mt}else if(this.isSpecial()){if(At=k(At),M(ie,At)||(Mt=function(Zt){var so,Un,dt,Ne,nt,bn,hn,En=H(Zt,".");if(En.length&&En[En.length-1]===""&&En.length--,(so=En.length)>4)return Zt;for(Un=[],dt=0;dt1&&Q(Ne,0)==="0"&&(nt=M(ee,Ne)?16:8,Ne=$(Ne,nt===8?1:2)),Ne==="")bn=0;else{if(!M(nt===10?z:nt===8?de:Y,Ne))return Zt;bn=T(Ne,nt)}F(Un,bn)}for(dt=0;dt=P(256,5-so))return null}else if(bn>255)return null;for(hn=I(Un),dt=0;dt1?arguments[1]:void 0,qn=y(Mt,new is(At,!1,Kt));n||(Mt.href=qn.serialize(),Mt.origin=qn.getOrigin(),Mt.protocol=qn.getProtocol(),Mt.username=qn.getUsername(),Mt.password=qn.getPassword(),Mt.host=qn.getHost(),Mt.hostname=qn.getHostname(),Mt.port=qn.getPort(),Mt.pathname=qn.getPathname(),Mt.search=qn.getSearch(),Mt.searchParams=qn.getSearchParams(),Mt.hash=qn.getHash())},Gt=yi.prototype,gi=function(At,Mt){return{get:function(){return C(this)[At]()},set:Mt&&function(Kt){return C(this)[Mt](Kt)},configurable:!0,enumerable:!0}};if(n&&(d(Gt,"href",gi("serialize","setHref")),d(Gt,"origin",gi("getOrigin")),d(Gt,"protocol",gi("getProtocol","setProtocol")),d(Gt,"username",gi("getUsername","setUsername")),d(Gt,"password",gi("getPassword","setPassword")),d(Gt,"host",gi("getHost","setHost")),d(Gt,"hostname",gi("getHostname","setHostname")),d(Gt,"port",gi("getPort","setPort")),d(Gt,"pathname",gi("getPathname","setPathname")),d(Gt,"search",gi("getSearch","setSearch")),d(Gt,"searchParams",gi("getSearchParams")),d(Gt,"hash",gi("getHash","setHash"))),l(Gt,"toJSON",function(){return C(this).serialize()},{enumerable:!0}),l(Gt,"toString",function(){return C(this).serialize()},{enumerable:!0}),L){var ri=L.createObjectURL,tr=L.revokeObjectURL;ri&&l(yi,"createObjectURL",s(ri,L)),tr&&l(yi,"revokeObjectURL",s(tr,L))}return p(yi,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!n},{URL:yi}),gYt}var mYt,Gqo={},kYt,Yqo={},vYt,AYt,pYt,bYt,wYt,OYt;function Zqo(){return AYt?vYt:(AYt=1,fYt||(fYt=1,Xqo()),function(){if(mYt)return Gqo;mYt=1;var e=si(),t=nf(),n=Rs(),r=zV(),o=rf(),s=Jke(),a=t("URL"),l=s&&n(function(){a.canParse()}),d=n(function(){return a.canParse.length!==1});e({target:"URL",stat:!0,forced:!l||d},{canParse:function(h){var g=r(arguments.length,1),m=o(h),v=g<2||arguments[1]===void 0?void 0:o(arguments[1]);try{return!!new a(m,v)}catch{return!1}}})}(),function(){if(kYt)return Yqo;kYt=1;var e=si(),t=nf(),n=zV(),r=rf(),o=Jke(),s=t("URL");e({target:"URL",stat:!0,forced:!o},{parse:function(l){var d=n(arguments.length,1),u=r(l),h=d<2||arguments[1]===void 0?void 0:r(arguments[1]);try{return new s(u,h)}catch{return null}}})}(),vYt=vl().URL)}function qqo(){return bYt?pYt:(bYt=1,pYt=Zqo())}var yYt,PN=Fi(OYt?wYt:(OYt=1,wYt=qqo())),CYt={exports:{}},_Yt,Kqo=(yYt||(yYt=1,_Yt=CYt,function(e,t){_Yt.exports=t()}(0,function(){var e=function(K,ne){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ae,be){ae.__proto__=be}||function(ae,be){for(var Be in be)Object.prototype.hasOwnProperty.call(be,Be)&&(ae[Be]=be[Be])},e(K,ne)};function t(Fe,K){if(typeof K!="function"&&K!==null)throw new TypeError("Class extends value "+String(K)+" is not a constructor or null");function ne(){this.constructor=Fe}e(Fe,K),Fe.prototype=K===null?Object.create(K):(ne.prototype=K.prototype,new ne)}var n=function(){return n=Object.assign||function(K){for(var ne,ae=1,be=arguments.length;ae0&&be[be.length-1])||Ot[0]!==6&&Ot[0]!==2)){Xe=0;continue}if(Ot[0]===3&&(!be||Ot[1]>be[0]&&Ot[1]=55296&&Be<=56319&&ae>10),Ke%1024+56320)),(Be+1===ae||be.length>16384)&&(Xe+=String.fromCharCode.apply(String,be),be.length=0)}return Xe},h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=typeof Uint8Array>"u"?[]:new Uint8Array(256),m=0;m<64;m++)g[h.charCodeAt(m)]=m;for(var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=typeof Uint8Array>"u"?[]:new Uint8Array(256),k=0;k<64;k++)f[v.charCodeAt(k)]=k;for(var A=function(K,ne,ae){return K.slice?K.slice(ne,ae):new Uint16Array(Array.prototype.slice.call(K,ne,ae))},p=function(){function Fe(K,ne,ae,be,Be,Xe){this.initialValue=K,this.errorValue=ne,this.highStart=ae,this.highValueIndex=be,this.index=Be,this.data=Xe}return Fe.prototype.get=function(K){var ne;if(K>=0){if(K<55296||K>56319&&K<=65535)return ne=((ne=this.index[K>>5])<<2)+(31&K),this.data[ne];if(K<=65535)return ne=((ne=this.index[2048+(K-55296>>5)])<<2)+(31&K),this.data[ne];if(K>11),ne=this.index[ne],ne+=K>>5&63,ne=((ne=this.index[ne])<<2)+(31&K),this.data[ne];if(K<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Fe}(),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w=typeof Uint8Array>"u"?[]:new Uint8Array(256),O=0;O<64;O++)w[b.charCodeAt(O)]=O;var y=10,C=13,_=15,S=17,L=18,E=19,T=20,D=21,P=22,Q=24,M=25,B=26,R=27,I=28,F=30,j=32,W=33,H=34,$=35,G=37,q=38,re=39,J=40,oe=42,se=[9001,65288],le="×",ue="÷",ee=function(Fe){var K,ne,ae,be=function(qe){var Ot,Lt,Vt,Vn,Dn,$n=.75*qe.length,Ai=qe.length,mr=0;qe[qe.length-1]==="="&&($n--,qe[qe.length-2]==="="&&$n--);var $i=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&Uint8Array.prototype.slice!==void 0?new ArrayBuffer($n):new Array($n),Go=Array.isArray($i)?$i:new Uint8Array($i);for(Ot=0;Ot>4,Go[mr++]=(15&Vt)<<4|Vn>>2,Go[mr++]=(3&Vn)<<6|63&Dn;return $i}(Fe),Be=Array.isArray(be)?function(qe){for(var Ot=qe.length,Lt=[],Vt=0;Vt0;){var Ke=be[--Xe];if(Array.isArray(K)?K.indexOf(Ke)!==-1:K===Ke)for(var vt=ae;vt<=be.length;){var qe;if((qe=be[++vt])===ne)return!0;if(qe!==y)break}if(Ke!==y)break}return!1},Ce=function(K,ne){for(var ae=K;ae>=0;){var be=ne[ae];if(be!==y)return be;ae--}return 0},Qe=function(K,ne,ae,be,Be){if(ae[be]===0)return le;var Xe=be-1;if(Array.isArray(Be)&&Be[Xe]===!0)return le;var Ke=Xe-1,vt=Xe+1,qe=ne[Xe],Ot=Ke>=0?ne[Ke]:0,Lt=ne[vt];if(qe===2&&Lt===3)return le;if(z.indexOf(qe)!==-1)return"!";if(z.indexOf(Lt)!==-1||Y.indexOf(Lt)!==-1)return le;if(Ce(Xe,ne)===8)return ue;if(ee.get(K[Xe])===11||(qe===j||qe===W)&&ee.get(K[vt])===11||qe===7||Lt===7||qe===9||[y,C,_].indexOf(qe)===-1&&Lt===9||[S,L,E,Q,I].indexOf(Lt)!==-1||Ce(Xe,ne)===P||pe(23,P,Xe,ne)||pe([S,L],D,Xe,ne)||pe(12,12,Xe,ne))return le;if(qe===y)return ue;if(qe===23||Lt===23)return le;if(Lt===16||qe===16)return ue;if([C,_,D].indexOf(Lt)!==-1||qe===14||Ot===36&&he.indexOf(qe)!==-1||qe===I&&Lt===36||Lt===T||de.indexOf(Lt)!==-1&&qe===M||de.indexOf(qe)!==-1&&Lt===M||qe===R&&[G,j,W].indexOf(Lt)!==-1||[G,j,W].indexOf(qe)!==-1&&Lt===B||de.indexOf(qe)!==-1&&ie.indexOf(Lt)!==-1||ie.indexOf(qe)!==-1&&de.indexOf(Lt)!==-1||[R,B].indexOf(qe)!==-1&&(Lt===M||[P,_].indexOf(Lt)!==-1&&ne[vt+1]===M)||[P,_].indexOf(qe)!==-1&&Lt===M||qe===M&&[M,I,Q].indexOf(Lt)!==-1)return le;if([M,I,Q,S,L].indexOf(Lt)!==-1)for(var Vt=Xe;Vt>=0;){if((Vn=ne[Vt])===M)return le;if([I,Q].indexOf(Vn)===-1)break;Vt--}if([R,B].indexOf(Lt)!==-1)for(Vt=[S,L].indexOf(qe)!==-1?Ke:Xe;Vt>=0;){var Vn;if((Vn=ne[Vt])===M)return le;if([I,Q].indexOf(Vn)===-1)break;Vt--}if(q===qe&&[q,re,H,$].indexOf(Lt)!==-1||[re,H].indexOf(qe)!==-1&&[re,J].indexOf(Lt)!==-1||[J,$].indexOf(qe)!==-1&&Lt===J||Z.indexOf(qe)!==-1&&[T,B].indexOf(Lt)!==-1||Z.indexOf(Lt)!==-1&&qe===R||de.indexOf(qe)!==-1&&de.indexOf(Lt)!==-1||qe===Q&&de.indexOf(Lt)!==-1||de.concat(M).indexOf(qe)!==-1&&Lt===P&&se.indexOf(K[vt])===-1||de.concat(M).indexOf(Lt)!==-1&&qe===L)return le;if(qe===41&&Lt===41){for(var Dn=ae[Xe],$n=1;Dn>0&&ne[--Dn]===41;)$n++;if($n%2!=0)return le}return qe===j&&Lt===W?le:ue},ke=function(K,ne){ne||(ne={lineBreak:"normal",wordBreak:"normal"});var ae=function(vt,qe){qe===void 0&&(qe="strict");var Ot=[],Lt=[],Vt=[];return vt.forEach(function(Vn,Dn){var $n=ee.get(Vn);if($n>50?(Vt.push(!0),$n-=50):Vt.push(!1),["normal","auto","loose"].indexOf(qe)!==-1&&[8208,8211,12316,12448].indexOf(Vn)!==-1)return Lt.push(Dn),Ot.push(16);if($n===4||$n===11){if(Dn===0)return Lt.push(Dn),Ot.push(F);var Ai=Ot[Dn-1];return te.indexOf(Ai)===-1?(Lt.push(Lt[Dn-1]),Ot.push(Ai)):(Lt.push(Dn),Ot.push(F))}return Lt.push(Dn),$n===31?Ot.push(qe==="strict"?D:G):$n===oe||$n===29?Ot.push(F):$n===43?Vn>=131072&&Vn<=196605||Vn>=196608&&Vn<=262141?Ot.push(G):Ot.push(F):void Ot.push($n)}),[Lt,Ot,Vt]}(K,ne.lineBreak),be=ae[0],Be=ae[1],Xe=ae[2];ne.wordBreak!=="break-all"&&ne.wordBreak!=="break-word"||(Be=Be.map(function(vt){return[M,F,oe].indexOf(vt)!==-1?G:vt}));var Ke=ne.wordBreak==="keep-all"?Xe.map(function(vt,qe){return vt&&K[qe]>=19968&&K[qe]<=40959}):void 0;return[be,Be,Ke]},me=function(){function Fe(K,ne,ae,be){this.codePoints=K,this.required=ne==="!",this.start=ae,this.end=be}return Fe.prototype.slice=function(){return u.apply(void 0,this.codePoints.slice(this.start,this.end))},Fe}(),_e=45,Te=43,De=-1,Ye=function(K){return K>=48&&K<=57},ot=function(K){return Ye(K)||K>=65&&K<=70||K>=97&&K<=102},We=function(K){return K===10||K===9||K===32},et=function(K){return function(ne){return function(ae){return ae>=97&&ae<=122}(ne)||function(ae){return ae>=65&&ae<=90}(ne)}(K)||function(ne){return ne>=128}(K)||K===95},st=function(K){return et(K)||Ye(K)||K===_e},Me=function(K){return K>=0&&K<=8||K===11||K>=14&&K<=31||K===127},Se=function(K,ne){return K===92&&ne!==10},Ie=function(K,ne,ae){return K===_e?et(ne)||Se(ne,ae):!!et(K)||!(K!==92||!Se(K,ne))},ze=function(K,ne,ae){return K===Te||K===_e?!!Ye(ne)||ne===46&&Ye(ae):Ye(K===46?ne:K)},Ze=function(K){var ne=0,ae=1;K[ne]!==Te&&K[ne]!==_e||(K[ne]===_e&&(ae=-1),ne++);for(var be=[];Ye(K[ne]);)be.push(K[ne++]);var Be=be.length?parseInt(u.apply(void 0,be),10):0;K[ne]===46&&ne++;for(var Xe=[];Ye(K[ne]);)Xe.push(K[ne++]);var Ke=Xe.length,vt=Ke?parseInt(u.apply(void 0,Xe),10):0;K[ne]!==69&&K[ne]!==101||ne++;var qe=1;K[ne]!==Te&&K[ne]!==_e||(K[ne]===_e&&(qe=-1),ne++);for(var Ot=[];Ye(K[ne]);)Ot.push(K[ne++]);var Lt=Ot.length?parseInt(u.apply(void 0,Ot),10):0;return ae*(Be+vt*Math.pow(10,-Ke))*Math.pow(10,qe*Lt)},gt={type:2},St={type:3},Pt={type:4},dn={type:13},on={type:8},pn={type:21},ni={type:9},Zn={type:10},Pi={type:11},rr={type:12},Hr={type:14},Bo={type:23},lo={type:1},Fr={type:25},is={type:24},yi={type:26},Gt={type:27},gi={type:28},ri={type:29},tr={type:31},ht={type:32},At=function(){function Fe(){this._value=[]}return Fe.prototype.write=function(K){this._value=this._value.concat(d(K))},Fe.prototype.read=function(){for(var K=[],ne=this.consumeToken();ne!==ht;)K.push(ne),ne=this.consumeToken();return K},Fe.prototype.consumeToken=function(){var K=this.consumeCodePoint();switch(K){case 34:return this.consumeStringToken(34);case 35:var ne=this.peekCodePoint(0),ae=this.peekCodePoint(1),be=this.peekCodePoint(2);if(st(ne)||Se(ae,be)){var Be=Ie(ne,ae,be)?2:1;return{type:5,value:this.consumeName(),flags:Be}}break;case 36:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),dn;break;case 39:return this.consumeStringToken(39);case 40:return gt;case 41:return St;case 42:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),Hr;break;case Te:if(ze(K,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(K),this.consumeNumericToken();break;case 44:return Pt;case _e:var Xe=K,Ke=this.peekCodePoint(0),vt=this.peekCodePoint(1);if(ze(Xe,Ke,vt))return this.reconsumeCodePoint(K),this.consumeNumericToken();if(Ie(Xe,Ke,vt))return this.reconsumeCodePoint(K),this.consumeIdentLikeToken();if(Ke===_e&&vt===62)return this.consumeCodePoint(),this.consumeCodePoint(),is;break;case 46:if(ze(K,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(K),this.consumeNumericToken();break;case 47:if(this.peekCodePoint(0)===42)for(this.consumeCodePoint();;){var qe=this.consumeCodePoint();if(qe===42&&(qe=this.consumeCodePoint())===47)return this.consumeToken();if(qe===De)return this.consumeToken()}break;case 58:return yi;case 59:return Gt;case 60:if(this.peekCodePoint(0)===33&&this.peekCodePoint(1)===_e&&this.peekCodePoint(2)===_e)return this.consumeCodePoint(),this.consumeCodePoint(),Fr;break;case 64:var Ot=this.peekCodePoint(0),Lt=this.peekCodePoint(1),Vt=this.peekCodePoint(2);if(Ie(Ot,Lt,Vt))return{type:7,value:this.consumeName()};break;case 91:return gi;case 92:if(Se(K,this.peekCodePoint(0)))return this.reconsumeCodePoint(K),this.consumeIdentLikeToken();break;case 93:return ri;case 61:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),on;break;case 123:return Pi;case 125:return rr;case 117:case 85:var Vn=this.peekCodePoint(0),Dn=this.peekCodePoint(1);return Vn!==Te||!ot(Dn)&&Dn!==63||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(K),this.consumeIdentLikeToken();case 124:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),ni;if(this.peekCodePoint(0)===124)return this.consumeCodePoint(),pn;break;case 126:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),Zn;break;case De:return ht}return We(K)?(this.consumeWhiteSpace(),tr):Ye(K)?(this.reconsumeCodePoint(K),this.consumeNumericToken()):et(K)?(this.reconsumeCodePoint(K),this.consumeIdentLikeToken()):{type:6,value:u(K)}},Fe.prototype.consumeCodePoint=function(){var K=this._value.shift();return K===void 0?-1:K},Fe.prototype.reconsumeCodePoint=function(K){this._value.unshift(K)},Fe.prototype.peekCodePoint=function(K){return K>=this._value.length?-1:this._value[K]},Fe.prototype.consumeUnicodeRangeToken=function(){for(var K=[],ne=this.consumeCodePoint();ot(ne)&&K.length<6;)K.push(ne),ne=this.consumeCodePoint();for(var ae=!1;ne===63&&K.length<6;)K.push(ne),ne=this.consumeCodePoint(),ae=!0;if(ae)return{type:30,start:parseInt(u.apply(void 0,K.map(function(Xe){return Xe===63?48:Xe})),16),end:parseInt(u.apply(void 0,K.map(function(Xe){return Xe===63?70:Xe})),16)};var be=parseInt(u.apply(void 0,K),16);if(this.peekCodePoint(0)===_e&&ot(this.peekCodePoint(1))){this.consumeCodePoint(),ne=this.consumeCodePoint();for(var Be=[];ot(ne)&&Be.length<6;)Be.push(ne),ne=this.consumeCodePoint();return{type:30,start:be,end:parseInt(u.apply(void 0,Be),16)}}return{type:30,start:be,end:be}},Fe.prototype.consumeIdentLikeToken=function(){var K=this.consumeName();return K.toLowerCase()==="url"&&this.peekCodePoint(0)===40?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===40?(this.consumeCodePoint(),{type:19,value:K}):{type:20,value:K}},Fe.prototype.consumeUrlToken=function(){var K=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===De)return{type:22,value:""};var ne=this.peekCodePoint(0);if(ne===39||ne===34){var ae=this.consumeStringToken(this.consumeCodePoint());return ae.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===De||this.peekCodePoint(0)===41)?(this.consumeCodePoint(),{type:22,value:ae.value}):(this.consumeBadUrlRemnants(),Bo)}for(;;){var be=this.consumeCodePoint();if(be===De||be===41)return{type:22,value:u.apply(void 0,K)};if(We(be))return this.consumeWhiteSpace(),this.peekCodePoint(0)===De||this.peekCodePoint(0)===41?(this.consumeCodePoint(),{type:22,value:u.apply(void 0,K)}):(this.consumeBadUrlRemnants(),Bo);if(be===34||be===39||be===40||Me(be))return this.consumeBadUrlRemnants(),Bo;if(be===92){if(!Se(be,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Bo;K.push(this.consumeEscapedCodePoint())}else K.push(be)}},Fe.prototype.consumeWhiteSpace=function(){for(;We(this.peekCodePoint(0));)this.consumeCodePoint()},Fe.prototype.consumeBadUrlRemnants=function(){for(;;){var K=this.consumeCodePoint();if(K===41||K===De)return;Se(K,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},Fe.prototype.consumeStringSlice=function(K){for(var ne="";K>0;){var ae=Math.min(5e4,K);ne+=u.apply(void 0,this._value.splice(0,ae)),K-=ae}return this._value.shift(),ne},Fe.prototype.consumeStringToken=function(K){for(var ne="",ae=0;;){var be=this._value[ae];if(be===De||be===void 0||be===K)return{type:0,value:ne+=this.consumeStringSlice(ae)};if(be===10)return this._value.splice(0,ae),lo;if(be===92){var Be=this._value[ae+1];Be!==De&&Be!==void 0&&(Be===10?(ne+=this.consumeStringSlice(ae),ae=-1,this._value.shift()):Se(be,Be)&&(ne+=this.consumeStringSlice(ae),ne+=u(this.consumeEscapedCodePoint()),ae=-1))}ae++}},Fe.prototype.consumeNumber=function(){var K=[],ne=4,ae=this.peekCodePoint(0);for(ae!==Te&&ae!==_e||K.push(this.consumeCodePoint());Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());ae=this.peekCodePoint(0);var be=this.peekCodePoint(1);if(ae===46&&Ye(be))for(K.push(this.consumeCodePoint(),this.consumeCodePoint()),ne=8;Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());ae=this.peekCodePoint(0),be=this.peekCodePoint(1);var Be=this.peekCodePoint(2);if((ae===69||ae===101)&&((be===Te||be===_e)&&Ye(Be)||Ye(be)))for(K.push(this.consumeCodePoint(),this.consumeCodePoint()),ne=8;Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());return[Ze(K),ne]},Fe.prototype.consumeNumericToken=function(){var K=this.consumeNumber(),ne=K[0],ae=K[1],be=this.peekCodePoint(0),Be=this.peekCodePoint(1),Xe=this.peekCodePoint(2);return Ie(be,Be,Xe)?{type:15,number:ne,flags:ae,unit:this.consumeName()}:be===37?(this.consumeCodePoint(),{type:16,number:ne,flags:ae}):{type:17,number:ne,flags:ae}},Fe.prototype.consumeEscapedCodePoint=function(){var K=this.consumeCodePoint();if(ot(K)){for(var ne=u(K);ot(this.peekCodePoint(0))&&ne.length<6;)ne+=u(this.consumeCodePoint());We(this.peekCodePoint(0))&&this.consumeCodePoint();var ae=parseInt(ne,16);return ae===0||function(be){return be>=55296&&be<=57343}(ae)||ae>1114111?65533:ae}return K===De?65533:K},Fe.prototype.consumeName=function(){for(var K="";;){var ne=this.consumeCodePoint();if(st(ne))K+=u(ne);else{if(!Se(ne,this.peekCodePoint(0)))return this.reconsumeCodePoint(ne),K;K+=u(this.consumeEscapedCodePoint())}}},Fe}(),Mt=function(){function Fe(K){this._tokens=K}return Fe.create=function(K){var ne=new At;return ne.write(K),new Fe(ne.read())},Fe.parseValue=function(K){return Fe.create(K).parseComponentValue()},Fe.parseValues=function(K){return Fe.create(K).parseComponentValues()},Fe.prototype.parseComponentValue=function(){for(var K=this.consumeToken();K.type===31;)K=this.consumeToken();if(K.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(K);var ne=this.consumeComponentValue();do K=this.consumeToken();while(K.type===31);if(K.type===32)return ne;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},Fe.prototype.parseComponentValues=function(){for(var K=[];;){var ne=this.consumeComponentValue();if(ne.type===32)return K;K.push(ne),K.push()}},Fe.prototype.consumeComponentValue=function(){var K=this.consumeToken();switch(K.type){case 11:case 28:case 2:return this.consumeSimpleBlock(K.type);case 19:return this.consumeFunction(K)}return K},Fe.prototype.consumeSimpleBlock=function(K){for(var ne={type:K,values:[]},ae=this.consumeToken();;){if(ae.type===32||bn(ae,K))return ne;this.reconsumeToken(ae),ne.values.push(this.consumeComponentValue()),ae=this.consumeToken()}},Fe.prototype.consumeFunction=function(K){for(var ne={name:K.value,values:[],type:18};;){var ae=this.consumeToken();if(ae.type===32||ae.type===3)return ne;this.reconsumeToken(ae),ne.values.push(this.consumeComponentValue())}},Fe.prototype.consumeToken=function(){var K=this._tokens.shift();return K===void 0?ht:K},Fe.prototype.reconsumeToken=function(K){this._tokens.unshift(K)},Fe}(),Kt=function(K){return K.type===15},qn=function(K){return K.type===17},Zt=function(K){return K.type===20},so=function(K){return K.type===0},Un=function(K,ne){return Zt(K)&&K.value===ne},dt=function(K){return K.type!==31},Ne=function(K){return K.type!==31&&K.type!==4},nt=function(K){var ne=[],ae=[];return K.forEach(function(be){if(be.type===4){if(ae.length===0)throw new Error("Error parsing function args, zero tokens for arg");return ne.push(ae),void(ae=[])}be.type!==31&&ae.push(be)}),ae.length&&ne.push(ae),ne},bn=function(K,ne){return ne===11&&K.type===12||ne===28&&K.type===29||ne===2&&K.type===3},hn=function(K){return K.type===17||K.type===15},En=function(K){return K.type===16||hn(K)},wi=function(K){return K.length>1?[K[0],K[1]]:[K[0]]},Ue={type:17,number:0,flags:4},ut={type:16,number:50,flags:4},Nt={type:16,number:100,flags:4},wn=function(K,ne,ae){var be=K[0],Be=K[1];return[Cn(be,ne),Cn(Be!==void 0?Be:be,ae)]},Cn=function(K,ne){if(K.type===16)return K.number/100*ne;if(Kt(K))switch(K.unit){case"rem":case"em":return 16*K.number;default:return K.number}return K.number},wr="grad",Kr="turn",Wo=function(K,ne){if(ne.type===15)switch(ne.unit){case"deg":return Math.PI*ne.number/180;case wr:return Math.PI/200*ne.number;case"rad":return ne.number;case Kr:return 2*Math.PI*ne.number}throw new Error("Unsupported angle type")},pl=function(K){return K.type===15&&(K.unit==="deg"||K.unit===wr||K.unit==="rad"||K.unit===Kr)},pu=function(K){switch(K.filter(Zt).map(function(ne){return ne.value}).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[Ue,Ue];case"to top":case"bottom":return bu(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[Ue,Nt];case"to right":case"left":return bu(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[Nt,Nt];case"to bottom":case"top":return bu(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[Nt,Ue];case"to left":case"right":return bu(270)}return 0},bu=function(K){return Math.PI*K/180},T1=function(K,ne){if(ne.type===18){var ae=UL[ne.name];if(ae===void 0)throw new Error('Attempting to parse an unsupported color function "'+ne.name+'"');return ae(K,ne.values)}if(ne.type===5){if(ne.value.length===3){var be=ne.value.substring(0,1),Be=ne.value.substring(1,2),Xe=ne.value.substring(2,3);return Em(parseInt(be+be,16),parseInt(Be+Be,16),parseInt(Xe+Xe,16),1)}if(ne.value.length===4){be=ne.value.substring(0,1),Be=ne.value.substring(1,2),Xe=ne.value.substring(2,3);var Ke=ne.value.substring(3,4);return Em(parseInt(be+be,16),parseInt(Be+Be,16),parseInt(Xe+Xe,16),parseInt(Ke+Ke,16)/255)}if(ne.value.length===6)return be=ne.value.substring(0,2),Be=ne.value.substring(2,4),Xe=ne.value.substring(4,6),Em(parseInt(be,16),parseInt(Be,16),parseInt(Xe,16),1);if(ne.value.length===8)return be=ne.value.substring(0,2),Be=ne.value.substring(2,4),Xe=ne.value.substring(4,6),Ke=ne.value.substring(6,8),Em(parseInt(be,16),parseInt(Be,16),parseInt(Xe,16),parseInt(Ke,16)/255)}if(ne.type===20){var vt=jf[ne.value.toUpperCase()];if(vt!==void 0)return vt}return jf.TRANSPARENT},xm=function(K){return!(255&K)},Gd=function(K){var ne=255&K,ae=255&K>>8,be=255&K>>16,Be=255&K>>24;return ne<255?"rgba("+Be+","+be+","+ae+","+ne/255+")":"rgb("+Be+","+be+","+ae+")"},Em=function(K,ne,ae,be){return(K<<24|ne<<16|ae<<8|Math.round(255*be))>>>0},$3=function(K,ne){if(K.type===17)return K.number;if(K.type===16){var ae=ne===3?1:255;return ne===3?K.number/100*ae:Math.round(K.number/100*ae)}return 0},FL=function(K,ne){var ae=ne.filter(Ne);if(ae.length===3){var be=ae.map($3),Be=be[0],Xe=be[1],Ke=be[2];return Em(Be,Xe,Ke,1)}if(ae.length===4){var vt=ae.map($3),qe=(Be=vt[0],Xe=vt[1],Ke=vt[2],vt[3]);return Em(Be,Xe,Ke,qe)}return 0};function NL(Fe,K,ne){return ne<0&&(ne+=1),ne>=1&&(ne-=1),ne<1/6?(K-Fe)*ne*6+Fe:ne<.5?K:ne<2/3?6*(K-Fe)*(2/3-ne)+Fe:Fe}var TA,fC=function(K,ne){var ae=ne.filter(Ne),be=ae[0],Be=ae[1],Xe=ae[2],Ke=ae[3],vt=(be.type===17?bu(be.number):Wo(K,be))/(2*Math.PI),qe=En(Be)?Be.number/100:0,Ot=En(Xe)?Xe.number/100:0,Lt=Ke!==void 0&&En(Ke)?Cn(Ke,1):1;if(qe===0)return Em(255*Ot,255*Ot,255*Ot,1);var Vt=Ot<=.5?Ot*(qe+1):Ot+qe-Ot*qe,Vn=2*Ot-Vt,Dn=NL(Vn,Vt,vt+1/3),$n=NL(Vn,Vt,vt),Ai=NL(Vn,Vt,vt-1/3);return Em(255*Dn,255*$n,255*Ai,Lt)},UL={hsl:fC,hsla:fC,rgb:FL,rgba:FL},tk=function(K,ne){return T1(K,Mt.create(ne).parseComponentValue())},jf={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},gC={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(K,ne){return ne.map(function(ae){if(Zt(ae))switch(ae.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},mC={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Q1=function(K,ne){var ae=T1(K,ne[0]),be=ne[1];return be&&En(be)?{color:ae,stop:be}:{color:ae,stop:null}},kC=function(K,ne){var ae=K[0],be=K[K.length-1];ae.stop===null&&(ae.stop=Ue),be.stop===null&&(be.stop=Nt);for(var Be=[],Xe=0,Ke=0;KeXe?Be.push(qe):Be.push(Xe),Xe=qe}else Be.push(null)}var Ot=null;for(Ke=0;KeXe.optimumDistance)?{optimumCorner:Ke,optimumDistance:Ot}:Xe},{optimumDistance:Be?1/0:-1/0,optimumCorner:null}).optimumCorner},QA=function(K,ne){var ae=bu(180),be=[];return nt(ne).forEach(function(Be,Xe){if(Xe===0){var Ke=Be[0];if(Ke.type===20&&["top","left","right","bottom"].indexOf(Ke.value)!==-1)return void(ae=pu(Be));if(pl(Ke))return void(ae=(Wo(K,Ke)+bu(270))%bu(360))}var vt=Q1(K,Be);be.push(vt)}),{angle:ae,stops:be,type:1}},vC="closest-side",AC="farthest-side",G3="closest-corner",DA="farthest-corner",R2="circle",Y3="ellipse",Tm="cover",BA="contain",D1=function(K,ne){var ae=0,be=3,Be=[],Xe=[];return nt(ne).forEach(function(Ke,vt){var qe=!0;if(vt===0?qe=Ke.reduce(function(Lt,Vt){if(Zt(Vt))switch(Vt.value){case"center":return Xe.push(ut),!1;case"top":case"left":return Xe.push(Ue),!1;case"right":case"bottom":return Xe.push(Nt),!1}else if(En(Vt)||hn(Vt))return Xe.push(Vt),!1;return Lt},qe):vt===1&&(qe=Ke.reduce(function(Lt,Vt){if(Zt(Vt))switch(Vt.value){case R2:return ae=0,!1;case Y3:return ae=1,!1;case BA:case vC:return be=0,!1;case AC:return be=1,!1;case G3:return be=2,!1;case Tm:case DA:return be=3,!1}else if(hn(Vt)||En(Vt))return Array.isArray(be)||(be=[]),be.push(Vt),!1;return Lt},qe)),qe){var Ot=Q1(K,Ke);Be.push(Ot)}}),{size:be,shape:ae,stops:Be,position:Xe,type:2}},Bp=function(K,ne){if(ne.type===22){var ae={url:ne.value,type:0};return K.cache.addImage(ne.value),ae}if(ne.type===18){var be=gM[ne.name];if(be===void 0)throw new Error('Attempting to parse an unsupported image function "'+ne.name+'"');return be(K,ne.values)}throw new Error("Unsupported image type "+ne.type)},gM={"linear-gradient":function(K,ne){var ae=bu(180),be=[];return nt(ne).forEach(function(Be,Xe){if(Xe===0){var Ke=Be[0];if(Ke.type===20&&Ke.value==="to")return void(ae=pu(Be));if(pl(Ke))return void(ae=Wo(K,Ke))}var vt=Q1(K,Be);be.push(vt)}),{angle:ae,stops:be,type:1}},"-moz-linear-gradient":QA,"-ms-linear-gradient":QA,"-o-linear-gradient":QA,"-webkit-linear-gradient":QA,"radial-gradient":function(K,ne){var ae=0,be=3,Be=[],Xe=[];return nt(ne).forEach(function(Ke,vt){var qe=!0;if(vt===0){var Ot=!1;qe=Ke.reduce(function(Vt,Vn){if(Ot)if(Zt(Vn))switch(Vn.value){case"center":return Xe.push(ut),Vt;case"top":case"left":return Xe.push(Ue),Vt;case"right":case"bottom":return Xe.push(Nt),Vt}else(En(Vn)||hn(Vn))&&Xe.push(Vn);else if(Zt(Vn))switch(Vn.value){case R2:return ae=0,!1;case Y3:return ae=1,!1;case"at":return Ot=!0,!1;case vC:return be=0,!1;case Tm:case AC:return be=1,!1;case BA:case G3:return be=2,!1;case DA:return be=3,!1}else if(hn(Vn)||En(Vn))return Array.isArray(be)||(be=[]),be.push(Vn),!1;return Vt},qe)}if(qe){var Lt=Q1(K,Ke);Be.push(Lt)}}),{size:be,shape:ae,stops:Be,position:Xe,type:2}},"-moz-radial-gradient":D1,"-ms-radial-gradient":D1,"-o-radial-gradient":D1,"-webkit-radial-gradient":D1,"-webkit-gradient":function(K,ne){var ae=bu(180),be=[],Be=1;return nt(ne).forEach(function(Xe,Ke){var vt=Xe[0];if(Ke===0){if(Zt(vt)&&vt.value==="linear")return void(Be=1);if(Zt(vt)&&vt.value==="radial")return void(Be=2)}if(vt.type===18){if(vt.name==="from"){var qe=T1(K,vt.values[0]);be.push({stop:Ue,color:qe})}else if(vt.name==="to")qe=T1(K,vt.values[0]),be.push({stop:Nt,color:qe});else if(vt.name==="color-stop"){var Ot=vt.values.filter(Ne);if(Ot.length===2){qe=T1(K,Ot[1]);var Lt=Ot[0];qn(Lt)&&be.push({stop:{type:16,number:100*Lt.number,flags:Lt.flags},color:qe})}}}}),Be===1?{angle:(ae+bu(180))%bu(360),stops:be,type:Be}:{size:3,shape:0,stops:be,position:[],type:Be}}},rye={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(K,ne){if(ne.length===0)return[];var ae=ne[0];return ae.type===20&&ae.value==="none"?[]:ne.filter(function(be){return Ne(be)&&function(Be){return!(Be.type===20&&Be.value==="none"||Be.type===18&&!gM[Be.name])}(be)}).map(function(be){return Bp(K,be)})}},oye={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(K,ne){return ne.map(function(ae){if(Zt(ae))switch(ae.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},sye={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(En)}).map(wi)}},aye={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(Zt).map(function(be){return be.value}).join(" ")}).map(lye)}},lye=function(K){switch(K){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};(function(Fe){Fe.AUTO="auto",Fe.CONTAIN="contain",Fe.COVER="cover"})(TA||(TA={}));var Bl,kc={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(cye)})}},cye=function(K){return Zt(K)||En(K)},mM=function(K){return{name:"border-"+K+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},dye=mM("top"),uye=mM("right"),hye=mM("bottom"),fye=mM("left"),QE=function(K){return{name:"border-radius-"+K,initialValue:"0 0",prefix:!1,type:1,parse:function(ae,be){return wi(be.filter(En))}}},gye=QE("top-left"),lf=QE("top-right"),jH=QE("bottom-right"),pC=QE("bottom-left"),DE=function(K){return{name:"border-"+K+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(ae,be){switch(be){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},WH=DE("top"),nk=DE("right"),ioe=DE("bottom"),roe=DE("left"),BE=function(K){return{name:"border-"+K+"-width",initialValue:"0",type:0,prefix:!1,parse:function(ae,be){return Kt(be)?be.number:0}}},ooe=BE("top"),soe=BE("right"),aoe=BE("bottom"),B1=BE("left"),mye={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ik={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(K,ne){return ne==="rtl"?1:0}},kye={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(K,ne){return ne.filter(Zt).reduce(function(ae,be){return ae|loe(be.value)},0)}},loe=function(K){switch(K){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},Z3={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},kM={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(K,ne){return ne.type===20&&ne.value==="normal"?0:ne.type===17||ne.type===15?ne.number:0}};(function(Fe){Fe.NORMAL="normal",Fe.STRICT="strict"})(Bl||(Bl={}));var bC,Hc={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(K,ne){return ne==="strict"?Bl.STRICT:Bl.NORMAL}},q3={name:"line-height",initialValue:"normal",prefix:!1,type:4},vM=function(K,ne){return Zt(K)&&K.value==="normal"?1.2*ne:K.type===17?ne*K.number:En(K)?Cn(K,ne):ne},vye={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(K,ne){return ne.type===20&&ne.value==="none"?null:Bp(K,ne)}},VH={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(K,ne){return ne==="inside"?0:1}},zH={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},AM=function(K){return{name:"margin-"+K,initialValue:"0",prefix:!1,type:4}},Aye=AM("top"),coe=AM("right"),pM=AM("bottom"),jL=AM("left"),pye={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(K,ne){return ne.filter(Zt).map(function(ae){switch(ae.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}})}},doe={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(K,ne){return ne==="break-word"?"break-word":"normal"}},RE=function(K){return{name:"padding-"+K,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},HH=RE("top"),$H=RE("right"),uoe=RE("bottom"),bye=RE("left"),XH={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},GH={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},wye={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(K,ne){return ne.length===1&&Un(ne[0],"none")?[]:nt(ne).map(function(ae){for(var be={color:jf.TRANSPARENT,offsetX:Ue,offsetY:Ue,blur:Ue},Be=0,Xe=0;Xe1?1:0],this.overflowWrap=Et(K,doe,ne.overflowWrap),this.paddingTop=Et(K,HH,ne.paddingTop),this.paddingRight=Et(K,$H,ne.paddingRight),this.paddingBottom=Et(K,uoe,ne.paddingBottom),this.paddingLeft=Et(K,bye,ne.paddingLeft),this.paintOrder=Et(K,Qye,ne.paintOrder),this.position=Et(K,GH,ne.position),this.textAlign=Et(K,XH,ne.textAlign),this.textDecorationColor=Et(K,VL,(ae=ne.textDecorationColor)!==null&&ae!==void 0?ae:ne.color),this.textDecorationLine=Et(K,Sye,(be=ne.textDecorationLine)!==null&&be!==void 0?be:ne.textDecoration),this.textShadow=Et(K,wye,ne.textShadow),this.textTransform=Et(K,hoe,ne.textTransform),this.transform=Et(K,R1,ne.transform),this.transformOrigin=Et(K,goe,ne.transformOrigin),this.visibility=Et(K,Oye,ne.visibility),this.webkitTextStrokeColor=Et(K,Dye,ne.webkitTextStrokeColor),this.webkitTextStrokeWidth=Et(K,Bye,ne.webkitTextStrokeWidth),this.wordBreak=Et(K,yye,ne.wordBreak),this.zIndex=Et(K,Cye,ne.zIndex)}return Fe.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},Fe.prototype.isTransparent=function(){return xm(this.backgroundColor)},Fe.prototype.isTransformed=function(){return this.transform!==null},Fe.prototype.isPositioned=function(){return this.position!==0},Fe.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},Fe.prototype.isFloating=function(){return this.float!==0},Fe.prototype.isInlineLevel=function(){return Xu(this.display,4)||Xu(this.display,33554432)||Xu(this.display,268435456)||Xu(this.display,536870912)||Xu(this.display,67108864)||Xu(this.display,134217728)},Fe}(),Wt=function(K,ne){this.content=Et(K,xye,ne.content),this.quotes=Et(K,voe,ne.quotes)},Sn=function(K,ne){this.counterIncrement=Et(K,Eye,ne.counterIncrement),this.counterReset=Et(K,zL,ne.counterReset)},Et=function(K,ne,ae){var be=new At,Be=ae!=null?ae.toString():ne.initialValue;be.write(Be);var Xe=new Mt(be.read());switch(ne.type){case 2:var Ke=Xe.parseComponentValue();return ne.parse(K,Zt(Ke)?Ke.value:ne.initialValue);case 0:return ne.parse(K,Xe.parseComponentValue());case 1:return ne.parse(K,Xe.parseComponentValues());case 4:return Xe.parseComponentValue();case 3:switch(ne.format){case"angle":return Wo(K,Xe.parseComponentValue());case"color":return T1(K,Xe.parseComponentValue());case"image":return Bp(K,Xe.parseComponentValue());case"length":var vt=Xe.parseComponentValue();return hn(vt)?vt:Ue;case"length-percentage":var qe=Xe.parseComponentValue();return En(qe)?qe:Ue;case"time":return moe(K,Xe.parseComponentValue())}}},or=function(K,ne){var ae=function(be){switch(be.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(K);return ae===1||ne===ae},Jr=function(K,ne){this.context=K,this.textNodes=[],this.elements=[],this.flags=0,or(ne,3),this.styles=new HL(K,window.getComputedStyle(ne,null)),n$(ne)&&(this.styles.animationDuration.some(function(ae){return ae>0})&&(ne.style.animationDuration="0s"),this.styles.transform!==null&&(ne.style.transform="none")),this.bounds=l(this.context,ne),or(ne,4)&&(this.flags|=16)},za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ad=typeof Uint8Array>"u"?[]:new Uint8Array(256),sl=0;sl<64;sl++)ad[za.charCodeAt(sl)]=sl;for(var wM=function(K,ne,ae){return K.slice?K.slice(ne,ae):new Uint16Array(Array.prototype.slice.call(K,ne,ae))},Rye=function(){function Fe(K,ne,ae,be,Be,Xe){this.initialValue=K,this.errorValue=ne,this.highStart=ae,this.highValueIndex=be,this.index=Be,this.data=Xe}return Fe.prototype.get=function(K){var ne;if(K>=0){if(K<55296||K>56319&&K<=65535)return ne=((ne=this.index[K>>5])<<2)+(31&K),this.data[ne];if(K<=65535)return ne=((ne=this.index[2048+(K-55296>>5)])<<2)+(31&K),this.data[ne];if(K>11),ne=this.index[ne],ne+=K>>5&63,ne=((ne=this.index[ne])<<2)+(31&K),this.data[ne];if(K<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Fe}(),rk="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",OM=typeof Uint8Array>"u"?[]:new Uint8Array(256),yM=0;yM<64;yM++)OM[rk.charCodeAt(yM)]=yM;var RA,IE=8,$L=9,Ha=11,poe=12,boe=function(){for(var K=[],ne=0;ne>10),Ke%1024+56320)),(Be+1===ae||be.length>16384)&&(Xe+=String.fromCharCode.apply(String,be),be.length=0)}return Xe},CM=function(Fe){var K,ne,ae,be=function(qe){var Ot,Lt,Vt,Vn,Dn,$n=.75*qe.length,Ai=qe.length,mr=0;qe[qe.length-1]==="="&&($n--,qe[qe.length-2]==="="&&$n--);var $i=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&Uint8Array.prototype.slice!==void 0?new ArrayBuffer($n):new Array($n),Go=Array.isArray($i)?$i:new Uint8Array($i);for(Ot=0;Ot>4,Go[mr++]=(15&Vt)<<4|Vn>>2,Go[mr++]=(3&Vn)<<6|63&Dn;return $i}(Fe),Be=Array.isArray(be)?function(qe){for(var Ot=qe.length,Lt=[],Vt=0;Vt=55296&&Lt<=56319&&qe=ae)return{done:!0,value:null};for(var vt=ok;beKe.x||Lt.y>Ke.y;return Ke=Lt,Ot===0||Vt});return K.body.removeChild(ne),vt}(document);return Object.defineProperty(wu,"SUPPORT_WORD_BREAKING",{value:Fe}),Fe},get SUPPORT_SVG_DRAWING(){var Fe=function(K){var ne=new Image,ae=K.createElement("canvas"),be=ae.getContext("2d");if(!be)return!1;ne.src="data:image/svg+xml,";try{be.drawImage(ne,0,0),ae.toDataURL()}catch{return!1}return!0}(document);return Object.defineProperty(wu,"SUPPORT_SVG_DRAWING",{value:Fe}),Fe},get SUPPORT_FOREIGNOBJECT_DRAWING(){var Fe=typeof Array.from=="function"&&typeof window.fetch=="function"?function(K){var ne=K.createElement("canvas"),ae=100;ne.width=ae,ne.height=ae;var be=ne.getContext("2d");if(!be)return Promise.reject(!1);be.fillStyle="rgb(0, 255, 0)",be.fillRect(0,0,ae,ae);var Be=new Image,Xe=ne.toDataURL();Be.src=Xe;var Ke=XL(ae,ae,0,0,Be);return be.fillStyle="red",be.fillRect(0,0,ae,ae),qH(Ke).then(function(vt){be.drawImage(vt,0,0);var qe=be.getImageData(0,0,ae,ae).data;be.fillStyle="red",be.fillRect(0,0,ae,ae);var Ot=K.createElement("div");return Ot.style.backgroundImage="url("+Xe+")",Ot.style.height=ae+"px",Rp(qe)?qH(XL(ae,ae,0,0,Ot)):Promise.reject(!1)}).then(function(vt){return be.drawImage(vt,0,0),Rp(be.getImageData(0,0,ae,ae).data)}).catch(function(){return!1})}(document):Promise.resolve(!1);return Object.defineProperty(wu,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:Fe}),Fe},get SUPPORT_CORS_IMAGES(){var Fe=new Image().crossOrigin!==void 0;return Object.defineProperty(wu,"SUPPORT_CORS_IMAGES",{value:Fe}),Fe},get SUPPORT_RESPONSE_TYPE(){var Fe=typeof new XMLHttpRequest().responseType=="string";return Object.defineProperty(wu,"SUPPORT_RESPONSE_TYPE",{value:Fe}),Fe},get SUPPORT_CORS_XHR(){var Fe="withCredentials"in new XMLHttpRequest;return Object.defineProperty(wu,"SUPPORT_CORS_XHR",{value:Fe}),Fe},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var Fe=!(typeof Intl>"u"||!Intl.Segmenter);return Object.defineProperty(wu,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:Fe}),Fe}},GL=function(K,ne){this.text=K,this.bounds=ne},woe=function(K,ne){var ae=ne.ownerDocument;if(ae){var be=ae.createElement("html2canvaswrapper");be.appendChild(ne.cloneNode(!0));var Be=ne.parentNode;if(Be){Be.replaceChild(be,ne);var Xe=l(K,be);return be.firstChild&&Be.replaceChild(be.firstChild,be),Xe}}return a.EMPTY},ME=function(K,ne,ae){var be=K.ownerDocument;if(!be)throw new Error("Node has no owner document");var Be=be.createRange();return Be.setStart(K,ne),Be.setEnd(K,ne+ae),Be},SM=function(K){if(wu.SUPPORT_NATIVE_TEXT_SEGMENTATION){var ne=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(ne.segment(K)).map(function(ae){return ae.segment})}return function(ae){for(var be,Be=_M(ae),Xe=[];!(be=Be.next()).done;)be.value&&Xe.push(be.value.slice());return Xe}(K)},PE=function(K,ne){return ne.letterSpacing!==0?SM(K):function(ae,be){if(wu.SUPPORT_NATIVE_TEXT_SEGMENTATION){var Be=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(Be.segment(ae)).map(function(Xe){return Xe.segment})}return LM(ae,be)}(K,ne)},wC=[32,160,4961,65792,65793,4153,4241],LM=function(K,ne){for(var ae,be=function(Ke,vt){var qe=d(Ke),Ot=ke(qe,vt),Lt=Ot[0],Vt=Ot[1],Vn=Ot[2],Dn=qe.length,$n=0,Ai=0;return{next:function(){if(Ai>=Dn)return{done:!0,value:null};for(var $i=le;Ai0)if(wu.SUPPORT_RANGE_BOUNDS){var Vt=ME(Ke,Ot,Lt.length).getClientRects();if(Vt.length>1){var Vn=SM(Lt),Dn=0;Vn.forEach(function(Ai){qe.push(new GL(Ai,a.fromDOMRectList(be,ME(Ke,Dn+Ot,Ai.length).getClientRects()))),Dn+=Ai.length})}else qe.push(new GL(Lt,a.fromDOMRectList(be,Vt)))}else{var $n=Ke.splitText(Lt.length);qe.push(new GL(Lt,woe(be,Ke))),Ke=$n}else wu.SUPPORT_RANGE_BOUNDS||(Ke=Ke.splitText(Lt.length));Ot+=Lt.length}),qe}(K,this.text,ae,ne)},Fye=function(K,ne){switch(ne){case 1:return K.toLowerCase();case 3:return K.replace(Nye,xM);case 2:return K.toUpperCase();default:return K}},Nye=/(^|\s|:|-|\(|\))([a-z])/g,xM=function(K,ne,ae){return K.length>0?ne+ae.toUpperCase():K},FE=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.src=ae.currentSrc||ae.src,be.intrinsicWidth=ae.naturalWidth,be.intrinsicHeight=ae.naturalHeight,be.context.cache.addImage(be.src),be}return t(K,Fe),K}(Jr),EM=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.canvas=ae,be.intrinsicWidth=ae.width,be.intrinsicHeight=ae.height,be}return t(K,Fe),K}(Jr),Ooe=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this,Be=new XMLSerializer,Xe=l(ne,ae);return ae.setAttribute("width",Xe.width+"px"),ae.setAttribute("height",Xe.height+"px"),be.svg="data:image/svg+xml,"+encodeURIComponent(Be.serializeToString(ae)),be.intrinsicWidth=ae.width.baseVal.value,be.intrinsicHeight=ae.height.baseVal.value,be.context.cache.addImage(be.svg),be}return t(K,Fe),K}(Jr),KH=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.value=ae.value,be}return t(K,Fe),K}(Jr),JH=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.start=ae.start,be.reversed=typeof ae.reversed=="boolean"&&ae.reversed===!0,be}return t(K,Fe),K}(Jr),Uye=[{type:15,flags:0,unit:"px",number:3}],Gu=[{type:16,flags:0,number:50}],Yu="checkbox",TM="radio",jye="password",e$=707406591,t$=function(Fe){function K(ne,ae){var be,Be,Xe,Ke=Fe.call(this,ne,ae)||this;switch(Ke.type=ae.type.toLowerCase(),Ke.checked=ae.checked,Ke.value=(Be=(be=ae).type===jye?new Array(be.value.length+1).join("•"):be.value).length===0?be.placeholder||"":Be,Ke.type!==Yu&&Ke.type!==TM||(Ke.styles.backgroundColor=3739148031,Ke.styles.borderTopColor=Ke.styles.borderRightColor=Ke.styles.borderBottomColor=Ke.styles.borderLeftColor=2779096575,Ke.styles.borderTopWidth=Ke.styles.borderRightWidth=Ke.styles.borderBottomWidth=Ke.styles.borderLeftWidth=1,Ke.styles.borderTopStyle=Ke.styles.borderRightStyle=Ke.styles.borderBottomStyle=Ke.styles.borderLeftStyle=1,Ke.styles.backgroundClip=[0],Ke.styles.backgroundOrigin=[0],Ke.bounds=(Xe=Ke.bounds).width>Xe.height?new a(Xe.left+(Xe.width-Xe.height)/2,Xe.top,Xe.height,Xe.height):Xe.width0)ae.textNodes.push(new Pye(K,Be,ae.styles));else if(JL(Be))if(Loe(Be)&&Be.assignedNodes)Be.assignedNodes().forEach(function(vt){return Fe(K,vt,ae,be)});else{var Ke=qL(K,Be);Ke.styles.isVisible()&&(KL(Be,Ke,be)?Ke.flags|=4:Wye(Ke.styles)&&(Ke.flags|=2),ZL.indexOf(Be.tagName)!==-1&&(Ke.flags|=8),ae.elements.push(Ke),Be.slot,Be.shadowRoot?Fe(K,Be.shadowRoot,Ke,be):IM(Be)||tt(Be)||IA(Be)||Fe(K,Be,Ke,be))}},qL=function(K,ne){return Is(ne)?new FE(K,ne):WE(ne)?new EM(K,ne):tt(ne)?new Ooe(K,ne):RM(ne)?new KH(K,ne):jE(ne)?new JH(K,ne):Coe(ne)?new t$(K,ne):IA(ne)?new QM(K,ne):IM(ne)?new YL(K,ne):_oe(ne)?new DM(K,ne):new Jr(K,ne)},UE=function(K,ne){var ae=qL(K,ne);return ae.flags|=4,NE(K,ne,ae,ae),ae},KL=function(K,ne,ae){return ne.styles.isPositionedWithZIndex()||ne.styles.opacity<1||ne.styles.isTransformed()||J3(K)&&ae.styles.isTransparent()},Wye=function(K){return K.isPositioned()||K.isFloating()},yoe=function(K){return K.nodeType===Node.TEXT_NODE},JL=function(K){return K.nodeType===Node.ELEMENT_NODE},n$=function(K){return JL(K)&&K.style!==void 0&&!BM(K)},BM=function(K){return kn(K.className)=="object"},RM=function(K){return K.tagName==="LI"},jE=function(K){return K.tagName==="OL"},Coe=function(K){return K.tagName==="INPUT"},tt=function(K){return K.tagName==="svg"},J3=function(K){return K.tagName==="BODY"},WE=function(K){return K.tagName==="CANVAS"},I1=function(K){return K.tagName==="VIDEO"},Is=function(K){return K.tagName==="IMG"},_oe=function(K){return K.tagName==="IFRAME"},Soe=function(K){return K.tagName==="STYLE"},IM=function(K){return K.tagName==="TEXTAREA"},IA=function(K){return K.tagName==="SELECT"},Loe=function(K){return K.tagName==="SLOT"},xoe=function(K){return K.tagName.indexOf("-")>0},Vye=function(){function Fe(){this.counters={}}return Fe.prototype.getCounterValue=function(K){var ne=this.counters[K];return ne&&ne.length?ne[ne.length-1]:1},Fe.prototype.getCounterValues=function(K){var ne=this.counters[K];return ne||[]},Fe.prototype.pop=function(K){var ne=this;K.forEach(function(ae){return ne.counters[ae].pop()})},Fe.prototype.parse=function(K){var ne=this,ae=K.counterIncrement,be=K.counterReset,Be=!0;ae!==null&&ae.forEach(function(Ke){var vt=ne.counters[Ke.counter];vt&&Ke.increment!==0&&(Be=!1,vt.length||vt.push(1),vt[Math.max(0,vt.length-1)]+=Ke.increment)});var Xe=[];return Be&&be.forEach(function(Ke){var vt=ne.counters[Ke.counter];Xe.push(Ke.counter),vt||(vt=ne.counters[Ke.counter]=[]),vt.push(Ke.reset)}),Xe},Fe}(),Eoe={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Toe={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Ip={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},zye={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},ex=function(K,ne,ae,be,Be,Xe){return Kae?VE(K,Be,Xe.length>0):be.integers.reduce(function(Ke,vt,qe){for(;K>=vt;)K-=vt,Ke+=be.values[qe];return Ke},"")+Xe},Qoe=function(K,ne,ae,be){var Be="";do ae||K--,Be=be(K)+Be,K/=ne;while(K*ne>=ne);return Be},Yd=function(K,ne,ae,be,Be){var Xe=ae-ne+1;return(K<0?"-":"")+(Qoe(Math.abs(K),Xe,be,function(Ke){return u(Math.floor(Ke%Xe)+ne)})+Be)},OC=function(K,ne,ae){ae===void 0&&(ae=". ");var be=ne.length;return Qoe(Math.abs(K),be,!1,function(Be){return ne[Math.floor(Be%be)]})+ae},cf=function(K,ne,ae,be,Be,Xe){if(K<-9999||K>9999)return VE(K,4,Be.length>0);var Ke=Math.abs(K),vt=Be;if(Ke===0)return ne[0]+vt;for(var qe=0;Ke>0&&qe<=4;qe++){var Ot=Ke%10;Ot===0&&Xu(Xe,1)&&vt!==""?vt=ne[Ot]+vt:Ot>1||Ot===1&&qe===0||Ot===1&&qe===1&&Xu(Xe,2)||Ot===1&&qe===1&&Xu(Xe,4)&&K>100||Ot===1&&qe>1&&Xu(Xe,8)?vt=ne[Ot]+(qe>0?ae[qe-1]:"")+vt:Ot===1&&qe>0&&(vt=ae[qe-1]+vt),Ke=Math.floor(Ke/10)}return(K<0?be:"")+vt},Doe="十百千萬",Boe="拾佰仟萬",Roe="マイナス",i$="마이너스",VE=function(K,ne,ae){var be=ae?". ":"",Be=ae?"、":"",Xe=ae?", ":"",Ke=ae?" ":"";switch(ne){case 0:return"•"+Ke;case 1:return"◦"+Ke;case 2:return"◾"+Ke;case 5:var vt=Yd(K,48,57,!0,be);return vt.length<4?"0"+vt:vt;case 4:return OC(K,"〇一二三四五六七八九",Be);case 6:return ex(K,1,3999,Eoe,3,be).toLowerCase();case 7:return ex(K,1,3999,Eoe,3,be);case 8:return Yd(K,945,969,!1,be);case 9:return Yd(K,97,122,!1,be);case 10:return Yd(K,65,90,!1,be);case 11:return Yd(K,1632,1641,!0,be);case 12:case 49:return ex(K,1,9999,Toe,3,be);case 35:return ex(K,1,9999,Toe,3,be).toLowerCase();case 13:return Yd(K,2534,2543,!0,be);case 14:case 30:return Yd(K,6112,6121,!0,be);case 15:return OC(K,"子丑寅卯辰巳午未申酉戌亥",Be);case 16:return OC(K,"甲乙丙丁戊己庚辛壬癸",Be);case 17:case 48:return cf(K,"零一二三四五六七八九",Doe,"負",Be,14);case 47:return cf(K,"零壹貳參肆伍陸柒捌玖",Boe,"負",Be,15);case 42:return cf(K,"零一二三四五六七八九",Doe,"负",Be,14);case 41:return cf(K,"零壹贰叁肆伍陆柒捌玖",Boe,"负",Be,15);case 26:return cf(K,"〇一二三四五六七八九","十百千万",Roe,Be,0);case 25:return cf(K,"零壱弐参四伍六七八九","拾百千万",Roe,Be,7);case 31:return cf(K,"영일이삼사오육칠팔구","십백천만",i$,Xe,7);case 33:return cf(K,"零一二三四五六七八九","十百千萬",i$,Xe,0);case 32:return cf(K,"零壹貳參四五六七八九","拾百千",i$,Xe,7);case 18:return Yd(K,2406,2415,!0,be);case 20:return ex(K,1,19999,zye,3,be);case 21:return Yd(K,2790,2799,!0,be);case 22:return Yd(K,2662,2671,!0,be);case 22:return ex(K,1,10999,Ip,3,be);case 23:return OC(K,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return OC(K,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Yd(K,3302,3311,!0,be);case 28:return OC(K,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",Be);case 29:return OC(K,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",Be);case 34:return Yd(K,3792,3801,!0,be);case 37:return Yd(K,6160,6169,!0,be);case 38:return Yd(K,4160,4169,!0,be);case 39:return Yd(K,2918,2927,!0,be);case 40:return Yd(K,1776,1785,!0,be);case 43:return Yd(K,3046,3055,!0,be);case 44:return Yd(K,3174,3183,!0,be);case 45:return Yd(K,3664,3673,!0,be);case 46:return Yd(K,3872,3881,!0,be);default:return Yd(K,48,57,!0,be)}},ew="data-html2canvas-ignore",Ioe=function(){function Fe(K,ne,ae){if(this.context=K,this.options=ae,this.scrolledElements=[],this.referenceElement=ne,this.counters=new Vye,this.quoteDepth=0,!ne.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(ne.ownerDocument.documentElement,!1)}return Fe.prototype.toIFrame=function(K,ne){var ae=this,be=M2(K,ne);if(!be.contentWindow)return Promise.reject("Unable to find iframe window");var Be=K.defaultView.pageXOffset,Xe=K.defaultView.pageYOffset,Ke=be.contentWindow,vt=Ke.document,qe=Xye(be).then(function(){return r(ae,void 0,void 0,function(){var Ot,Lt;return o(this,function(Vt){switch(Vt.label){case 0:return this.scrolledElements.forEach(Yye),Ke&&(Ke.scrollTo(ne.left,ne.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||Ke.scrollY===ne.top&&Ke.scrollX===ne.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(Ke.scrollX-ne.left,Ke.scrollY-ne.top,0,0))),Ot=this.options.onclone,(Lt=this.clonedReferenceElement)===void 0?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:vt.fonts&&vt.fonts.ready?[4,vt.fonts.ready]:[3,2];case 1:Vt.sent(),Vt.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,$ye(vt)]:[3,4];case 3:Vt.sent(),Vt.label=4;case 4:return typeof Ot=="function"?[2,Promise.resolve().then(function(){return Ot(vt,Lt)}).then(function(){return be})]:[2,be]}})})});return vt.open(),vt.write(Moe(document.doctype)+""),Poe(this.referenceElement.ownerDocument,Be,Xe),vt.replaceChild(vt.adoptNode(this.documentElement),vt.documentElement),vt.close(),qe},Fe.prototype.createElementClone=function(K){if(or(K,2),WE(K))return this.createCanvasClone(K);if(I1(K))return this.createVideoClone(K);if(Soe(K))return this.createStyleClone(K);var ne=K.cloneNode(!1);return Is(ne)&&(Is(K)&&K.currentSrc&&K.currentSrc!==K.src&&(ne.src=K.currentSrc,ne.srcset=""),ne.loading==="lazy"&&(ne.loading="eager")),xoe(ne)?this.createCustomElementClone(ne):ne},Fe.prototype.createCustomElementClone=function(K){var ne=document.createElement("html2canvascustomelement");return r$(K.style,ne),ne},Fe.prototype.createStyleClone=function(K){try{var ne=K.sheet;if(ne&&ne.cssRules){var ae=[].slice.call(ne.cssRules,0).reduce(function(Be,Xe){return Xe&&typeof Xe.cssText=="string"?Be+Xe.cssText:Be},""),be=K.cloneNode(!1);return be.textContent=ae,be}}catch(Be){if(this.context.logger.error("Unable to access cssRules property",Be),Be.name!=="SecurityError")throw Be}return K.cloneNode(!1)},Fe.prototype.createCanvasClone=function(K){var ne;if(this.options.inlineImages&&K.ownerDocument){var ae=K.ownerDocument.createElement("img");try{return ae.src=K.toDataURL(),ae}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",K)}}var be=K.cloneNode(!1);try{be.width=K.width,be.height=K.height;var Be=K.getContext("2d"),Xe=be.getContext("2d");if(Xe)if(!this.options.allowTaint&&Be)Xe.putImageData(Be.getImageData(0,0,K.width,K.height),0,0);else{var Ke=(ne=K.getContext("webgl2"))!==null&&ne!==void 0?ne:K.getContext("webgl");if(Ke){var vt=Ke.getContextAttributes();(vt==null?void 0:vt.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",K)}Xe.drawImage(K,0,0)}return be}catch{this.context.logger.info("Unable to clone canvas as it is tainted",K)}return be},Fe.prototype.createVideoClone=function(K){var ne=K.ownerDocument.createElement("canvas");ne.width=K.offsetWidth,ne.height=K.offsetHeight;var ae=ne.getContext("2d");try{return ae&&(ae.drawImage(K,0,0,ne.width,ne.height),this.options.allowTaint||ae.getImageData(0,0,ne.width,ne.height)),ne}catch{this.context.logger.info("Unable to clone video as it is tainted",K)}var be=K.ownerDocument.createElement("canvas");return be.width=K.offsetWidth,be.height=K.offsetHeight,be},Fe.prototype.appendChildNode=function(K,ne,ae){JL(ne)&&(ne.tagName==="SCRIPT"||ne.hasAttribute(ew)||typeof this.options.ignoreElements=="function"&&this.options.ignoreElements(ne))||this.options.copyStyles&&JL(ne)&&Soe(ne)||K.appendChild(this.cloneNode(ne,ae))},Fe.prototype.cloneChildNodes=function(K,ne,ae){for(var be=this,Be=K.shadowRoot?K.shadowRoot.firstChild:K.firstChild;Be;Be=Be.nextSibling)if(JL(Be)&&Loe(Be)&&typeof Be.assignedNodes=="function"){var Xe=Be.assignedNodes();Xe.length&&Xe.forEach(function(Ke){return be.appendChildNode(ne,Ke,ae)})}else this.appendChildNode(ne,Be,ae)},Fe.prototype.cloneNode=function(K,ne){if(yoe(K))return document.createTextNode(K.data);if(!K.ownerDocument)return K.cloneNode(!1);var ae=K.ownerDocument.defaultView;if(ae&&JL(K)&&(n$(K)||BM(K))){var be=this.createElementClone(K);be.style.transitionProperty="none";var Be=ae.getComputedStyle(K),Xe=ae.getComputedStyle(K,":before"),Ke=ae.getComputedStyle(K,":after");this.referenceElement===K&&n$(be)&&(this.clonedReferenceElement=be),J3(be)&&MM(be);var vt=this.counters.parse(new Sn(this.context,Be)),qe=this.resolvePseudoContent(K,be,Xe,RA.BEFORE);xoe(K)&&(ne=!0),I1(K)||this.cloneChildNodes(K,be,ne),qe&&be.insertBefore(qe,be.firstChild);var Ot=this.resolvePseudoContent(K,be,Ke,RA.AFTER);return Ot&&be.appendChild(Ot),this.counters.pop(vt),(Be&&(this.options.copyStyles||BM(K))&&!_oe(K)||ne)&&r$(Be,be),K.scrollTop===0&&K.scrollLeft===0||this.scrolledElements.push([be,K.scrollLeft,K.scrollTop]),(IM(K)||IA(K))&&(IM(be)||IA(be))&&(be.value=K.value),be}return K.cloneNode(!1)},Fe.prototype.resolvePseudoContent=function(K,ne,ae,be){var Be=this;if(ae){var Xe=ae.content,Ke=ne.ownerDocument;if(Ke&&Xe&&Xe!=="none"&&Xe!=="-moz-alt-content"&&ae.display!=="none"){this.counters.parse(new Sn(this.context,ae));var vt=new Wt(this.context,ae),qe=Ke.createElement("html2canvaspseudoelement");r$(ae,qe),vt.content.forEach(function(Lt){if(Lt.type===0)qe.appendChild(Ke.createTextNode(Lt.value));else if(Lt.type===22){var Vt=Ke.createElement("img");Vt.src=Lt.value,Vt.style.opacity="1",qe.appendChild(Vt)}else if(Lt.type===18){if(Lt.name==="attr"){var Vn=Lt.values.filter(Zt);Vn.length&&qe.appendChild(Ke.createTextNode(K.getAttribute(Vn[0].value)||""))}else if(Lt.name==="counter"){var Dn=Lt.values.filter(Ne),$n=Dn[0],Ai=Dn[1];if($n&&Zt($n)){var mr=Be.counters.getCounterValue($n.value),$i=Ai&&Zt(Ai)?zH.parse(Be.context,Ai.value):3;qe.appendChild(Ke.createTextNode(VE(mr,$i,!1)))}}else if(Lt.name==="counters"){var Go=Lt.values.filter(Ne),Vo=($n=Go[0],Go[1]);if(Ai=Go[2],$n&&Zt($n)){var uo=Be.counters.getCounterValues($n.value),lr=Ai&&Zt(Ai)?zH.parse(Be.context,Ai.value):3,rs=Vo&&Vo.type===0?Vo.value:"",os=uo.map(function(ko){return VE(ko,lr,!1)}).join(rs);qe.appendChild(Ke.createTextNode(os))}}}else if(Lt.type===20)switch(Lt.value){case"open-quote":qe.appendChild(Ke.createTextNode(Aoe(vt.quotes,Be.quoteDepth++,!0)));break;case"close-quote":qe.appendChild(Ke.createTextNode(Aoe(vt.quotes,--Be.quoteDepth,!1)));break;default:qe.appendChild(Ke.createTextNode(Lt.value))}}),qe.className=o$+" "+zE;var Ot=be===RA.BEFORE?" "+o$:" "+zE;return BM(ne)?ne.className.baseValue+=Ot:ne.className+=Ot,qe}}},Fe.destroy=function(K){return!!K.parentNode&&(K.parentNode.removeChild(K),!0)},Fe}();(function(Fe){Fe[Fe.BEFORE=0]="BEFORE",Fe[Fe.AFTER=1]="AFTER"})(RA||(RA={}));var al,M2=function(K,ne){var ae=K.createElement("iframe");return ae.className="html2canvas-container",ae.style.visibility="hidden",ae.style.position="fixed",ae.style.left="-10000px",ae.style.top="0px",ae.style.border="0",ae.width=ne.width.toString(),ae.height=ne.height.toString(),ae.scrolling="no",ae.setAttribute(ew,"true"),K.body.appendChild(ae),ae},Hye=function(K){return new Promise(function(ne){K.complete?ne():K.src?(K.onload=ne,K.onerror=ne):ne()})},$ye=function(K){return Promise.all([].slice.call(K.images,0).map(Hye))},Xye=function(K){return new Promise(function(ne,ae){var be=K.contentWindow;if(!be)return ae("No window assigned for iframe");var Be=be.document;be.onload=K.onload=function(){be.onload=K.onload=null;var Xe=setInterval(function(){Be.body.childNodes.length>0&&Be.readyState==="complete"&&(clearInterval(Xe),ne(K))},50)}})},Gye=["all","d","content"],r$=function(K,ne){for(var ae=K.length-1;ae>=0;ae--){var be=K.item(ae);Gye.indexOf(be)===-1&&ne.style.setProperty(be,K.getPropertyValue(be))}return ne},Moe=function(K){var ne="";return K&&(ne+=""),ne},Poe=function(K,ne,ae){K&&K.defaultView&&(ne!==K.defaultView.pageXOffset||ae!==K.defaultView.pageYOffset)&&K.defaultView.scrollTo(ne,ae)},Yye=function(K){var ne=K[0],ae=K[1],be=K[2];ne.scrollLeft=ae,ne.scrollTop=be},o$="___html2canvas___pseudoelement_before",zE="___html2canvas___pseudoelement_after",tx=`{ +`+v(w.parentVnode),O.foreignObject=w.foreignObject,O.parentVnode=w.parentVnode,O}for(var b=0;b=re.length?$.length:re[le],te=0;te<$.length;te++){var Z=$[te];Z.key?oe.hasOwnProperty(Z.key)||se.push(Z):te>=ie&&se.push(Z)}for(var he,pe=se.slice(),Ce=0,Qe=[],ke=[],me=0;me<$.length;){var _e=$[me];for(he=pe[Ce];he===null&&pe.length;)Qe.push(f(pe,Ce,null)),he=pe[Ce];he&&he.key===_e.key?(Ce++,me++):_e.key?(he&&he.key&&q[he.key]!==me+1?(Qe.push(f(pe,Ce,he.key)),(he=pe[Ce])&&he.key===_e.key?Ce++:ke.push({key:_e.key,to:me})):ke.push({key:_e.key,to:me}),me++):he&&he.key&&Qe.push(f(pe,Ce,he.key))}for(;CeR?B:R,F=0;F=s&&d<=a;if(da))return!0;h=l-1}}return!1}function r(o,s){return o>s?1:-1}return ZGt=function(s,a,l,d){return l&&l.length!==0?(l.sort(r),t(s,a,l,d,0)):{}}}function jqo(){if(eYt)return pEe;eYt=1;var e=xzn(),t=jR(),n=_zn(),r=function(){if(JGt)return KGt;JGt=1;var s=jR();return KGt=function(l,d){return!(!s(l)||!s(d))&&("name"in l&&"name"in d?l.id===d.id:l.init===d.init)}}();function o(s,a){typeof a.destroy=="function"&&t(a)&&a.destroy(s)}return pEe=function(a,l,d){var u=a.type,h=a.vNode,g=a.patch;switch(u){case n.REMOVE:return function(m,v){var f=m.parentNode;return f&&f.removeChild(m),o(m,v),null}(l,h);case n.INSERT:return function(m,v,f){var k=f.render(v,f);return m&&m.appendChild(k),m}(l,g,d);case n.VTEXT:return function(m,v,f,k){var A;if(m.nodeType===3)m.replaceData(0,m.length,f.text),A=m;else{var p=m.parentNode;A=k.render(f,k),p&&A!==m&&p.replaceChild(A,m)}return A}(l,0,g,d);case n.WIDGET:return function(m,v,f,k){var A,p=r(v,f);A=p?f.update(v,m)||m:k.render(f,k);var b=m.parentNode;return b&&A!==m&&b.replaceChild(A,m),p||o(m,v),A}(l,h,g,d);case n.VNODE:return function(m,v,f,k){var A=m.parentNode,p=k.render(f,k);return A&&p!==m&&A.replaceChild(p,m),p}(l,0,g,d);case n.ORDER:return function(m,v){for(var f,k,A,p=m.childNodes,b={},w=0;w=O++?null:p[A.to])}(l,g),l;case n.PROPS:return e(l,g,h.properties),l;case n.THUNK:return function(m,v){return m&&v&&m!==v&&m.parentNode&&m.parentNode.replaceChild(v,m),v}(l,d.patch(l,g,d));default:return l}},pEe}function Wqo(){if(tYt)return bEe;tYt=1;var e=rYt(),t=yot(),n=function(){if(YGt)return AEe;YGt=1;var l=rYt(),d=xzn(),u=Gee(),h=fOe(),g=jR(),m=Szn();return AEe=function v(f,k){var A=k&&k.document||l,p=k?k.warn:null;if(f=m(f).a,g(f))return f.init();if(h(f))return A.createTextNode(f.text);if(!u(f))return p&&p("Item is not a valid virtual dom node",f),null;var b=f.namespace===null?A.createElement(f.tagName):A.createElementNS(f.namespace,f.tagName),w=f.properties;d(b,w);for(var O=f.children,y=0;y=o&&k>=r)return l[d]=u,this.$backtraceSnakes(l,r,o,d)}l[d]=u}return[]}},{key:"$backtraceSnakes",value:function(t,n,r,o){for(var s=[],a={x:r,y:n},l=o;l>0;l--){var d=t[l],u=t[l-1],h=a.x-a.y,g=d[h],m=h===-l||h!==l&&u[h+1]>u[h-1],v=m?h+1:h-1,f=u[v],k=f-v,A=m?f:f+1;s.unshift({xStart:f,xMid:A,xEnd:g}),a.x=f,a.y=k}return s}},{key:"assembleResult",value:function(t,n,r){var o=0,s=[],a={},l={},d={};return ki(t).call(t,function(u,h){var g=u.xStart;if(h===0&&u.xStart!==0)for(var m=0;m0;)o[d]=o[--d];d!==u++&&(o[d]=l)}else for(var h=t(a/2),g=r(e(o,0,h),s),m=r(e(o,h),s),v=g.length,f=m.length,k=0,A=0;k=Se.length)return Me.target=void 0,L(void 0,!0);var ze=Se[Ie];switch(Me.kind){case"keys":return L(ze.key,!1);case"values":return L(ze.value,!1)}return L([ze.key,ze.value],!1)},!0),Te=function(Se){this.entries=[],this.url=null,Se!==void 0&&(w(Se)?this.parseObject(Se):this.parseQuery(typeof Se=="string"?oe(Se,0)==="?"?Y(Se,1):Se:O(Se)))};Te.prototype={type:Q,bindURL:function(Se){this.url=Se,this.update()},parseObject:function(Se){var Ie,ze,Ze,gt,St,Pt,dn,on=this.entries,pn=S(Se);if(pn)for(ze=(Ie=_(Se,pn)).next;!(Ze=r(ze,Ie)).done;){if(St=(gt=_(b(Ze.value))).next,(Pt=r(St,gt)).done||(dn=r(St,gt)).done||!r(St,gt).done)throw new q("Expected sequence with length 2");le(on,{key:O(Pt.value),value:O(dn.value)})}else for(var ni in Se)k(Se,ni)&&le(on,{key:ni,value:O(Se[ni])})},parseQuery:function(Se){if(Se)for(var Ie,ze,Ze=this.entries,gt=z(Se,"&"),St=0;St0?arguments[0]:void 0));s||(this.size=Se.entries.length)},Ye=De.prototype;if(u(Ye,{append:function(Se,Ie){var ze=R(this);E(arguments.length,2),le(ze.entries,{key:O(Se),value:O(Ie)}),s||this.length++,ze.updateURL()},delete:function(Se){for(var Ie=R(this),ze=E(arguments.length,1),Ze=Ie.entries,gt=O(Se),St=ze<2?void 0:arguments[1],Pt=St===void 0?St:O(St),dn=0;dnze.key?1:-1}),Se.updateURL()},forEach:function(Se){for(var Ie,ze=R(this).entries,Ze=A(Se,arguments.length>1?arguments[1]:void 0),gt=0;gt1?et(arguments[1]):{})}}),f(j)){var st=function(Se){return v(this,H),new j(Se,arguments.length>1?et(arguments[1]):{})};H.constructor=st,st.prototype=H,e({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:st})}}return lYt={URLSearchParams:De,getState:R}}var dYt,uYt,hYt,fYt,gYt={};function $qo(){if(uYt)return dYt;uYt=1;var e=Xs(),t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,o="Overflow: input needs wider integers to process",s=RangeError,a=e(r.exec),l=Math.floor,d=String.fromCharCode,u=e("".charCodeAt),h=e([].join),g=e([].push),m=e("".replace),v=e("".split),f=e("".toLowerCase),k=function(w){return w+22+75*(w<26)},A=function(w,O,y){var C=0;for(w=y?l(w/700):w>>1,w+=l(w/O);w>455;)w=l(w/35),C+=36;return l(C+36*w/(w+38))},p=function(w){var O=[];w=function(j){for(var W=[],H=0,$=j.length;H<$;){var G=u(j,H++);if(G>=55296&&G<=56319&&H<$){var q=u(j,H++);(64512&q)==56320?g(W,((1023&G)<<10)+(1023&q)+65536):(g(W,G),H--)}else g(W,G)}return W}(w);var y,C,_=w.length,S=128,L=0,E=72;for(y=0;y=S&&Cl((t-L)/Q))throw new s(o);for(L+=(P-S)*Q,S=P,y=0;yt)throw new s(o);if(C===S){for(var M=L,B=36;;){var R=B<=E?1:B>=E+26?26:B-E;if(M?@[\\\]^|]/,te=/[\0\t\n\r #/:<>?@[\\\]^|]/,Z=/^[\u0000-\u0020]+/,he=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,pe=/[\t\n\r]/g,Ce=function(At){var Mt,Kt,qn,Zt;if(typeof At=="number"){for(Mt=[],Kt=0;Kt<4;Kt++)q(Mt,At%256),At=D(At/256);return B(Mt,".")}if(kn(At)=="object"){for(Mt="",qn=function(so){for(var Un=null,dt=1,Ne=null,nt=0,bn=0;bn<8;bn++)so[bn]!==0?(nt>dt&&(Un=Ne,dt=nt),Ne=null,nt=0):(Ne===null&&(Ne=bn),++nt);return nt>dt&&(Un=Ne,dt=nt),Un}(At),Kt=0;Kt<8;Kt++)Zt&&At[Kt]===0||(Zt&&(Zt=!1),qn===Kt?(Mt+=Kt?":":"::",Zt=!0):(Mt+=R(At[Kt],16),Kt<7&&(Mt+=":")));return"["+Mt+"]"}return At},Qe={},ke=g({},Qe,{" ":1,'"':1,"<":1,">":1,"`":1}),me=g({},ke,{"#":1,"?":1,"{":1,"}":1}),_e=g({},me,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Te=function(At,Mt){var Kt=f(At,0);return Kt>32&&Kt<127&&!h(Mt,At)?At:encodeURIComponent(At)},De={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ye=function(At,Mt){var Kt;return At.length===2&&M(se,Q(At,0))&&((Kt=Q(At,1))===":"||!Mt&&Kt==="|")},ot=function(At){var Mt;return At.length>1&&Ye($(At,0,2))&&(At.length===2||(Mt=Q(At,2))==="/"||Mt==="\\"||Mt==="?"||Mt==="#")},We=function(At){return At==="."||G(At)==="%2e"},et={},st={},Me={},Se={},Ie={},ze={},Ze={},gt={},St={},Pt={},dn={},on={},pn={},ni={},Zn={},Pi={},rr={},Hr={},Bo={},lo={},Fr={},is=function ht(At,Mt,Kt){var qn,Zt,so,Un=A(At);if(Mt){if(Zt=this.parse(Un))throw new E(Zt);this.searchParams=null}else{if(Kt!==void 0&&(qn=new ht(Kt,!0)),Zt=this.parse(Un,null,qn))throw new E(Zt);(so=S(new _)).bindURL(this),this.searchParams=so}};is.prototype={type:"URL",parse:function(At,Mt,Kt){var qn,Zt,so,Un,dt,Ne=this,nt=Mt||et,bn=0,hn="",En=!1,wi=!1,Ue=!1;for(At=A(At),Mt||(Ne.scheme="",Ne.username="",Ne.password="",Ne.host=null,Ne.port=null,Ne.path=[],Ne.query=null,Ne.fragment=null,Ne.cannotBeABaseURL=!1,At=j(At,Z,""),At=j(At,he,"$1")),At=j(At,pe,""),qn=m(At);bn<=qn.length;){switch(Zt=qn[bn],nt){case et:if(!Zt||!M(se,Zt)){if(Mt)return re;nt=Me;continue}hn+=G(Zt),nt=st;break;case st:if(Zt&&(M(le,Zt)||Zt==="+"||Zt==="-"||Zt==="."))hn+=G(Zt);else{if(Zt!==":"){if(Mt)return re;hn="",nt=Me,bn=0;continue}if(Mt&&(Ne.isSpecial()!==h(De,hn)||hn==="file"&&(Ne.includesCredentials()||Ne.port!==null)||Ne.scheme==="file"&&!Ne.host))return;if(Ne.scheme=hn,Mt)return void(Ne.isSpecial()&&De[Ne.scheme]===Ne.port&&(Ne.port=null));hn="",Ne.scheme==="file"?nt=ni:Ne.isSpecial()&&Kt&&Kt.scheme===Ne.scheme?nt=Se:Ne.isSpecial()?nt=gt:qn[bn+1]==="/"?(nt=Ie,bn++):(Ne.cannotBeABaseURL=!0,F(Ne.path,""),nt=Bo)}break;case Me:if(!Kt||Kt.cannotBeABaseURL&&Zt!=="#")return re;if(Kt.cannotBeABaseURL&&Zt==="#"){Ne.scheme=Kt.scheme,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",Ne.cannotBeABaseURL=!0,nt=Fr;break}nt=Kt.scheme==="file"?ni:ze;continue;case Se:if(Zt!=="/"||qn[bn+1]!=="/"){nt=ze;continue}nt=St,bn++;break;case Ie:if(Zt==="/"){nt=Pt;break}nt=Hr;continue;case ze:if(Ne.scheme=Kt.scheme,Zt===e)Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query=Kt.query;else if(Zt==="/"||Zt==="\\"&&Ne.isSpecial())nt=Ze;else if(Zt==="?")Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query="",nt=lo;else{if(Zt!=="#"){Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.path.length--,nt=Hr;continue}Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",nt=Fr}break;case Ze:if(!Ne.isSpecial()||Zt!=="/"&&Zt!=="\\"){if(Zt!=="/"){Ne.username=Kt.username,Ne.password=Kt.password,Ne.host=Kt.host,Ne.port=Kt.port,nt=Hr;continue}nt=Pt}else nt=St;break;case gt:if(nt=St,Zt!=="/"||Q(hn,bn+1)!=="/")continue;bn++;break;case St:if(Zt!=="/"&&Zt!=="\\"){nt=Pt;continue}break;case Pt:if(Zt==="@"){En&&(hn="%40"+hn),En=!0,so=m(hn);for(var ut=0;ut65535)return oe;Ne.port=Ne.isSpecial()&&Cn===De[Ne.scheme]?null:Cn,hn=""}if(Mt)return;nt=rr;continue}return oe}hn+=Zt;break;case ni:if(Ne.scheme="file",Zt==="/"||Zt==="\\")nt=Zn;else{if(!Kt||Kt.scheme!=="file"){nt=Hr;continue}switch(Zt){case e:Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query=Kt.query;break;case"?":Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query="",nt=lo;break;case"#":Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.query=Kt.query,Ne.fragment="",nt=Fr;break;default:ot(B(v(qn,bn),""))||(Ne.host=Kt.host,Ne.path=v(Kt.path),Ne.shortenPath()),nt=Hr;continue}}break;case Zn:if(Zt==="/"||Zt==="\\"){nt=Pi;break}Kt&&Kt.scheme==="file"&&!ot(B(v(qn,bn),""))&&(Ye(Kt.path[0],!0)?F(Ne.path,Kt.path[0]):Ne.host=Kt.host),nt=Hr;continue;case Pi:if(Zt===e||Zt==="/"||Zt==="\\"||Zt==="?"||Zt==="#"){if(!Mt&&Ye(hn))nt=Hr;else if(hn===""){if(Ne.host="",Mt)return;nt=rr}else{if(Un=Ne.parseHost(hn))return Un;if(Ne.host==="localhost"&&(Ne.host=""),Mt)return;hn="",nt=rr}continue}hn+=Zt;break;case rr:if(Ne.isSpecial()){if(nt=Hr,Zt!=="/"&&Zt!=="\\")continue}else if(Mt||Zt!=="?")if(Mt||Zt!=="#"){if(Zt!==e&&(nt=Hr,Zt!=="/"))continue}else Ne.fragment="",nt=Fr;else Ne.query="",nt=lo;break;case Hr:if(Zt===e||Zt==="/"||Zt==="\\"&&Ne.isSpecial()||!Mt&&(Zt==="?"||Zt==="#")){if((dt=G(dt=hn))===".."||dt==="%2e."||dt===".%2e"||dt==="%2e%2e"?(Ne.shortenPath(),Zt==="/"||Zt==="\\"&&Ne.isSpecial()||F(Ne.path,"")):We(hn)?Zt==="/"||Zt==="\\"&&Ne.isSpecial()||F(Ne.path,""):(Ne.scheme==="file"&&!Ne.path.length&&Ye(hn)&&(Ne.host&&(Ne.host=""),hn=Q(hn,0)+":"),F(Ne.path,hn)),hn="",Ne.scheme==="file"&&(Zt===e||Zt==="?"||Zt==="#"))for(;Ne.path.length>1&&Ne.path[0]==="";)W(Ne.path);Zt==="?"?(Ne.query="",nt=lo):Zt==="#"&&(Ne.fragment="",nt=Fr)}else hn+=Te(Zt,me);break;case Bo:Zt==="?"?(Ne.query="",nt=lo):Zt==="#"?(Ne.fragment="",nt=Fr):Zt!==e&&(Ne.path[0]+=Te(Zt,Qe));break;case lo:Mt||Zt!=="#"?Zt!==e&&(Zt==="'"&&Ne.isSpecial()?Ne.query+="%27":Ne.query+=Zt==="#"?"%23":Te(Zt,Qe)):(Ne.fragment="",nt=Fr);break;case Fr:Zt!==e&&(Ne.fragment+=Te(Zt,ke))}bn++}},parseHost:function(At){var Mt,Kt,qn;if(Q(At,0)==="["){if(Q(At,At.length-1)!=="]"||(Mt=function(Zt){var so,Un,dt,Ne,nt,bn,hn,En=[0,0,0,0,0,0,0,0],wi=0,Ue=null,ut=0,Nt=function(){return Q(Zt,ut)};if(Nt()===":"){if(Q(Zt,1)!==":")return;ut+=2,Ue=++wi}for(;Nt();){if(wi===8)return;if(Nt()!==":"){for(so=Un=0;Un<4&&M(Y,Nt());)so=16*so+T(Nt(),16),ut++,Un++;if(Nt()==="."){if(Un===0||(ut-=Un,wi>6))return;for(dt=0;Nt();){if(Ne=null,dt>0){if(!(Nt()==="."&&dt<4))return;ut++}if(!M(ue,Nt()))return;for(;M(ue,Nt());){if(nt=T(Nt(),10),Ne===null)Ne=nt;else{if(Ne===0)return;Ne=10*Ne+nt}if(Ne>255)return;ut++}En[wi]=256*En[wi]+Ne,++dt!=2&&dt!==4||wi++}if(dt!==4)return;break}if(Nt()===":"){if(ut++,!Nt())return}else if(Nt())return;En[wi++]=so}else{if(Ue!==null)return;ut++,Ue=++wi}}if(Ue!==null)for(bn=wi-Ue,wi=7;wi!==0&&bn>0;)hn=En[wi],En[wi--]=En[Ue+bn-1],En[Ue+--bn]=hn;else if(wi!==8)return;return En}($(At,1,-1)),!Mt))return J;this.host=Mt}else if(this.isSpecial()){if(At=k(At),M(ie,At)||(Mt=function(Zt){var so,Un,dt,Ne,nt,bn,hn,En=H(Zt,".");if(En.length&&En[En.length-1]===""&&En.length--,(so=En.length)>4)return Zt;for(Un=[],dt=0;dt1&&Q(Ne,0)==="0"&&(nt=M(ee,Ne)?16:8,Ne=$(Ne,nt===8?1:2)),Ne==="")bn=0;else{if(!M(nt===10?z:nt===8?de:Y,Ne))return Zt;bn=T(Ne,nt)}F(Un,bn)}for(dt=0;dt=P(256,5-so))return null}else if(bn>255)return null;for(hn=I(Un),dt=0;dt1?arguments[1]:void 0,qn=y(Mt,new is(At,!1,Kt));n||(Mt.href=qn.serialize(),Mt.origin=qn.getOrigin(),Mt.protocol=qn.getProtocol(),Mt.username=qn.getUsername(),Mt.password=qn.getPassword(),Mt.host=qn.getHost(),Mt.hostname=qn.getHostname(),Mt.port=qn.getPort(),Mt.pathname=qn.getPathname(),Mt.search=qn.getSearch(),Mt.searchParams=qn.getSearchParams(),Mt.hash=qn.getHash())},Gt=yi.prototype,gi=function(At,Mt){return{get:function(){return C(this)[At]()},set:Mt&&function(Kt){return C(this)[Mt](Kt)},configurable:!0,enumerable:!0}};if(n&&(d(Gt,"href",gi("serialize","setHref")),d(Gt,"origin",gi("getOrigin")),d(Gt,"protocol",gi("getProtocol","setProtocol")),d(Gt,"username",gi("getUsername","setUsername")),d(Gt,"password",gi("getPassword","setPassword")),d(Gt,"host",gi("getHost","setHost")),d(Gt,"hostname",gi("getHostname","setHostname")),d(Gt,"port",gi("getPort","setPort")),d(Gt,"pathname",gi("getPathname","setPathname")),d(Gt,"search",gi("getSearch","setSearch")),d(Gt,"searchParams",gi("getSearchParams")),d(Gt,"hash",gi("getHash","setHash"))),l(Gt,"toJSON",function(){return C(this).serialize()},{enumerable:!0}),l(Gt,"toString",function(){return C(this).serialize()},{enumerable:!0}),L){var ri=L.createObjectURL,tr=L.revokeObjectURL;ri&&l(yi,"createObjectURL",s(ri,L)),tr&&l(yi,"revokeObjectURL",s(tr,L))}return p(yi,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!n},{URL:yi}),gYt}var mYt,Gqo={},kYt,Yqo={},vYt,AYt,pYt,bYt,wYt,OYt;function Zqo(){return AYt?vYt:(AYt=1,fYt||(fYt=1,Xqo()),function(){if(mYt)return Gqo;mYt=1;var e=si(),t=nf(),n=Rs(),r=zV(),o=rf(),s=Jke(),a=t("URL"),l=s&&n(function(){a.canParse()}),d=n(function(){return a.canParse.length!==1});e({target:"URL",stat:!0,forced:!l||d},{canParse:function(h){var g=r(arguments.length,1),m=o(h),v=g<2||arguments[1]===void 0?void 0:o(arguments[1]);try{return!!new a(m,v)}catch{return!1}}})}(),function(){if(kYt)return Yqo;kYt=1;var e=si(),t=nf(),n=zV(),r=rf(),o=Jke(),s=t("URL");e({target:"URL",stat:!0,forced:!o},{parse:function(l){var d=n(arguments.length,1),u=r(l),h=d<2||arguments[1]===void 0?void 0:r(arguments[1]);try{return new s(u,h)}catch{return null}}})}(),vYt=vl().URL)}function qqo(){return bYt?pYt:(bYt=1,pYt=Zqo())}var yYt,PN=Fi(OYt?wYt:(OYt=1,wYt=qqo())),CYt={exports:{}},_Yt,Kqo=(yYt||(yYt=1,_Yt=CYt,function(e,t){_Yt.exports=t()}(0,function(){var e=function(K,ne){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ae,be){ae.__proto__=be}||function(ae,be){for(var Be in be)Object.prototype.hasOwnProperty.call(be,Be)&&(ae[Be]=be[Be])},e(K,ne)};function t(Fe,K){if(typeof K!="function"&&K!==null)throw new TypeError("Class extends value "+String(K)+" is not a constructor or null");function ne(){this.constructor=Fe}e(Fe,K),Fe.prototype=K===null?Object.create(K):(ne.prototype=K.prototype,new ne)}var n=function(){return n=Object.assign||function(K){for(var ne,ae=1,be=arguments.length;ae0&&be[be.length-1])||Ot[0]!==6&&Ot[0]!==2)){Xe=0;continue}if(Ot[0]===3&&(!be||Ot[1]>be[0]&&Ot[1]=55296&&Be<=56319&&ae>10),Ke%1024+56320)),(Be+1===ae||be.length>16384)&&(Xe+=String.fromCharCode.apply(String,be),be.length=0)}return Xe},h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=typeof Uint8Array>"u"?[]:new Uint8Array(256),m=0;m<64;m++)g[h.charCodeAt(m)]=m;for(var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=typeof Uint8Array>"u"?[]:new Uint8Array(256),k=0;k<64;k++)f[v.charCodeAt(k)]=k;for(var A=function(K,ne,ae){return K.slice?K.slice(ne,ae):new Uint16Array(Array.prototype.slice.call(K,ne,ae))},p=function(){function Fe(K,ne,ae,be,Be,Xe){this.initialValue=K,this.errorValue=ne,this.highStart=ae,this.highValueIndex=be,this.index=Be,this.data=Xe}return Fe.prototype.get=function(K){var ne;if(K>=0){if(K<55296||K>56319&&K<=65535)return ne=((ne=this.index[K>>5])<<2)+(31&K),this.data[ne];if(K<=65535)return ne=((ne=this.index[2048+(K-55296>>5)])<<2)+(31&K),this.data[ne];if(K>11),ne=this.index[ne],ne+=K>>5&63,ne=((ne=this.index[ne])<<2)+(31&K),this.data[ne];if(K<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Fe}(),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w=typeof Uint8Array>"u"?[]:new Uint8Array(256),O=0;O<64;O++)w[b.charCodeAt(O)]=O;var y=10,C=13,_=15,S=17,L=18,E=19,T=20,D=21,P=22,Q=24,M=25,B=26,R=27,I=28,F=30,j=32,W=33,H=34,$=35,G=37,q=38,re=39,J=40,oe=42,se=[9001,65288],le="×",ue="÷",ee=function(Fe){var K,ne,ae,be=function(qe){var Ot,Lt,Vt,Vn,Dn,$n=.75*qe.length,Ai=qe.length,mr=0;qe[qe.length-1]==="="&&($n--,qe[qe.length-2]==="="&&$n--);var $i=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&Uint8Array.prototype.slice!==void 0?new ArrayBuffer($n):new Array($n),Go=Array.isArray($i)?$i:new Uint8Array($i);for(Ot=0;Ot>4,Go[mr++]=(15&Vt)<<4|Vn>>2,Go[mr++]=(3&Vn)<<6|63&Dn;return $i}(Fe),Be=Array.isArray(be)?function(qe){for(var Ot=qe.length,Lt=[],Vt=0;Vt0;){var Ke=be[--Xe];if(Array.isArray(K)?K.indexOf(Ke)!==-1:K===Ke)for(var vt=ae;vt<=be.length;){var qe;if((qe=be[++vt])===ne)return!0;if(qe!==y)break}if(Ke!==y)break}return!1},Ce=function(K,ne){for(var ae=K;ae>=0;){var be=ne[ae];if(be!==y)return be;ae--}return 0},Qe=function(K,ne,ae,be,Be){if(ae[be]===0)return le;var Xe=be-1;if(Array.isArray(Be)&&Be[Xe]===!0)return le;var Ke=Xe-1,vt=Xe+1,qe=ne[Xe],Ot=Ke>=0?ne[Ke]:0,Lt=ne[vt];if(qe===2&&Lt===3)return le;if(z.indexOf(qe)!==-1)return"!";if(z.indexOf(Lt)!==-1||Y.indexOf(Lt)!==-1)return le;if(Ce(Xe,ne)===8)return ue;if(ee.get(K[Xe])===11||(qe===j||qe===W)&&ee.get(K[vt])===11||qe===7||Lt===7||qe===9||[y,C,_].indexOf(qe)===-1&&Lt===9||[S,L,E,Q,I].indexOf(Lt)!==-1||Ce(Xe,ne)===P||pe(23,P,Xe,ne)||pe([S,L],D,Xe,ne)||pe(12,12,Xe,ne))return le;if(qe===y)return ue;if(qe===23||Lt===23)return le;if(Lt===16||qe===16)return ue;if([C,_,D].indexOf(Lt)!==-1||qe===14||Ot===36&&he.indexOf(qe)!==-1||qe===I&&Lt===36||Lt===T||de.indexOf(Lt)!==-1&&qe===M||de.indexOf(qe)!==-1&&Lt===M||qe===R&&[G,j,W].indexOf(Lt)!==-1||[G,j,W].indexOf(qe)!==-1&&Lt===B||de.indexOf(qe)!==-1&&ie.indexOf(Lt)!==-1||ie.indexOf(qe)!==-1&&de.indexOf(Lt)!==-1||[R,B].indexOf(qe)!==-1&&(Lt===M||[P,_].indexOf(Lt)!==-1&&ne[vt+1]===M)||[P,_].indexOf(qe)!==-1&&Lt===M||qe===M&&[M,I,Q].indexOf(Lt)!==-1)return le;if([M,I,Q,S,L].indexOf(Lt)!==-1)for(var Vt=Xe;Vt>=0;){if((Vn=ne[Vt])===M)return le;if([I,Q].indexOf(Vn)===-1)break;Vt--}if([R,B].indexOf(Lt)!==-1)for(Vt=[S,L].indexOf(qe)!==-1?Ke:Xe;Vt>=0;){var Vn;if((Vn=ne[Vt])===M)return le;if([I,Q].indexOf(Vn)===-1)break;Vt--}if(q===qe&&[q,re,H,$].indexOf(Lt)!==-1||[re,H].indexOf(qe)!==-1&&[re,J].indexOf(Lt)!==-1||[J,$].indexOf(qe)!==-1&&Lt===J||Z.indexOf(qe)!==-1&&[T,B].indexOf(Lt)!==-1||Z.indexOf(Lt)!==-1&&qe===R||de.indexOf(qe)!==-1&&de.indexOf(Lt)!==-1||qe===Q&&de.indexOf(Lt)!==-1||de.concat(M).indexOf(qe)!==-1&&Lt===P&&se.indexOf(K[vt])===-1||de.concat(M).indexOf(Lt)!==-1&&qe===L)return le;if(qe===41&&Lt===41){for(var Dn=ae[Xe],$n=1;Dn>0&&ne[--Dn]===41;)$n++;if($n%2!=0)return le}return qe===j&&Lt===W?le:ue},ke=function(K,ne){ne||(ne={lineBreak:"normal",wordBreak:"normal"});var ae=function(vt,qe){qe===void 0&&(qe="strict");var Ot=[],Lt=[],Vt=[];return vt.forEach(function(Vn,Dn){var $n=ee.get(Vn);if($n>50?(Vt.push(!0),$n-=50):Vt.push(!1),["normal","auto","loose"].indexOf(qe)!==-1&&[8208,8211,12316,12448].indexOf(Vn)!==-1)return Lt.push(Dn),Ot.push(16);if($n===4||$n===11){if(Dn===0)return Lt.push(Dn),Ot.push(F);var Ai=Ot[Dn-1];return te.indexOf(Ai)===-1?(Lt.push(Lt[Dn-1]),Ot.push(Ai)):(Lt.push(Dn),Ot.push(F))}return Lt.push(Dn),$n===31?Ot.push(qe==="strict"?D:G):$n===oe||$n===29?Ot.push(F):$n===43?Vn>=131072&&Vn<=196605||Vn>=196608&&Vn<=262141?Ot.push(G):Ot.push(F):void Ot.push($n)}),[Lt,Ot,Vt]}(K,ne.lineBreak),be=ae[0],Be=ae[1],Xe=ae[2];ne.wordBreak!=="break-all"&&ne.wordBreak!=="break-word"||(Be=Be.map(function(vt){return[M,F,oe].indexOf(vt)!==-1?G:vt}));var Ke=ne.wordBreak==="keep-all"?Xe.map(function(vt,qe){return vt&&K[qe]>=19968&&K[qe]<=40959}):void 0;return[be,Be,Ke]},me=function(){function Fe(K,ne,ae,be){this.codePoints=K,this.required=ne==="!",this.start=ae,this.end=be}return Fe.prototype.slice=function(){return u.apply(void 0,this.codePoints.slice(this.start,this.end))},Fe}(),_e=45,Te=43,De=-1,Ye=function(K){return K>=48&&K<=57},ot=function(K){return Ye(K)||K>=65&&K<=70||K>=97&&K<=102},We=function(K){return K===10||K===9||K===32},et=function(K){return function(ne){return function(ae){return ae>=97&&ae<=122}(ne)||function(ae){return ae>=65&&ae<=90}(ne)}(K)||function(ne){return ne>=128}(K)||K===95},st=function(K){return et(K)||Ye(K)||K===_e},Me=function(K){return K>=0&&K<=8||K===11||K>=14&&K<=31||K===127},Se=function(K,ne){return K===92&&ne!==10},Ie=function(K,ne,ae){return K===_e?et(ne)||Se(ne,ae):!!et(K)||!(K!==92||!Se(K,ne))},ze=function(K,ne,ae){return K===Te||K===_e?!!Ye(ne)||ne===46&&Ye(ae):Ye(K===46?ne:K)},Ze=function(K){var ne=0,ae=1;K[ne]!==Te&&K[ne]!==_e||(K[ne]===_e&&(ae=-1),ne++);for(var be=[];Ye(K[ne]);)be.push(K[ne++]);var Be=be.length?parseInt(u.apply(void 0,be),10):0;K[ne]===46&&ne++;for(var Xe=[];Ye(K[ne]);)Xe.push(K[ne++]);var Ke=Xe.length,vt=Ke?parseInt(u.apply(void 0,Xe),10):0;K[ne]!==69&&K[ne]!==101||ne++;var qe=1;K[ne]!==Te&&K[ne]!==_e||(K[ne]===_e&&(qe=-1),ne++);for(var Ot=[];Ye(K[ne]);)Ot.push(K[ne++]);var Lt=Ot.length?parseInt(u.apply(void 0,Ot),10):0;return ae*(Be+vt*Math.pow(10,-Ke))*Math.pow(10,qe*Lt)},gt={type:2},St={type:3},Pt={type:4},dn={type:13},on={type:8},pn={type:21},ni={type:9},Zn={type:10},Pi={type:11},rr={type:12},Hr={type:14},Bo={type:23},lo={type:1},Fr={type:25},is={type:24},yi={type:26},Gt={type:27},gi={type:28},ri={type:29},tr={type:31},ht={type:32},At=function(){function Fe(){this._value=[]}return Fe.prototype.write=function(K){this._value=this._value.concat(d(K))},Fe.prototype.read=function(){for(var K=[],ne=this.consumeToken();ne!==ht;)K.push(ne),ne=this.consumeToken();return K},Fe.prototype.consumeToken=function(){var K=this.consumeCodePoint();switch(K){case 34:return this.consumeStringToken(34);case 35:var ne=this.peekCodePoint(0),ae=this.peekCodePoint(1),be=this.peekCodePoint(2);if(st(ne)||Se(ae,be)){var Be=Ie(ne,ae,be)?2:1;return{type:5,value:this.consumeName(),flags:Be}}break;case 36:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),dn;break;case 39:return this.consumeStringToken(39);case 40:return gt;case 41:return St;case 42:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),Hr;break;case Te:if(ze(K,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(K),this.consumeNumericToken();break;case 44:return Pt;case _e:var Xe=K,Ke=this.peekCodePoint(0),vt=this.peekCodePoint(1);if(ze(Xe,Ke,vt))return this.reconsumeCodePoint(K),this.consumeNumericToken();if(Ie(Xe,Ke,vt))return this.reconsumeCodePoint(K),this.consumeIdentLikeToken();if(Ke===_e&&vt===62)return this.consumeCodePoint(),this.consumeCodePoint(),is;break;case 46:if(ze(K,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(K),this.consumeNumericToken();break;case 47:if(this.peekCodePoint(0)===42)for(this.consumeCodePoint();;){var qe=this.consumeCodePoint();if(qe===42&&(qe=this.consumeCodePoint())===47)return this.consumeToken();if(qe===De)return this.consumeToken()}break;case 58:return yi;case 59:return Gt;case 60:if(this.peekCodePoint(0)===33&&this.peekCodePoint(1)===_e&&this.peekCodePoint(2)===_e)return this.consumeCodePoint(),this.consumeCodePoint(),Fr;break;case 64:var Ot=this.peekCodePoint(0),Lt=this.peekCodePoint(1),Vt=this.peekCodePoint(2);if(Ie(Ot,Lt,Vt))return{type:7,value:this.consumeName()};break;case 91:return gi;case 92:if(Se(K,this.peekCodePoint(0)))return this.reconsumeCodePoint(K),this.consumeIdentLikeToken();break;case 93:return ri;case 61:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),on;break;case 123:return Pi;case 125:return rr;case 117:case 85:var Vn=this.peekCodePoint(0),Dn=this.peekCodePoint(1);return Vn!==Te||!ot(Dn)&&Dn!==63||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(K),this.consumeIdentLikeToken();case 124:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),ni;if(this.peekCodePoint(0)===124)return this.consumeCodePoint(),pn;break;case 126:if(this.peekCodePoint(0)===61)return this.consumeCodePoint(),Zn;break;case De:return ht}return We(K)?(this.consumeWhiteSpace(),tr):Ye(K)?(this.reconsumeCodePoint(K),this.consumeNumericToken()):et(K)?(this.reconsumeCodePoint(K),this.consumeIdentLikeToken()):{type:6,value:u(K)}},Fe.prototype.consumeCodePoint=function(){var K=this._value.shift();return K===void 0?-1:K},Fe.prototype.reconsumeCodePoint=function(K){this._value.unshift(K)},Fe.prototype.peekCodePoint=function(K){return K>=this._value.length?-1:this._value[K]},Fe.prototype.consumeUnicodeRangeToken=function(){for(var K=[],ne=this.consumeCodePoint();ot(ne)&&K.length<6;)K.push(ne),ne=this.consumeCodePoint();for(var ae=!1;ne===63&&K.length<6;)K.push(ne),ne=this.consumeCodePoint(),ae=!0;if(ae)return{type:30,start:parseInt(u.apply(void 0,K.map(function(Xe){return Xe===63?48:Xe})),16),end:parseInt(u.apply(void 0,K.map(function(Xe){return Xe===63?70:Xe})),16)};var be=parseInt(u.apply(void 0,K),16);if(this.peekCodePoint(0)===_e&&ot(this.peekCodePoint(1))){this.consumeCodePoint(),ne=this.consumeCodePoint();for(var Be=[];ot(ne)&&Be.length<6;)Be.push(ne),ne=this.consumeCodePoint();return{type:30,start:be,end:parseInt(u.apply(void 0,Be),16)}}return{type:30,start:be,end:be}},Fe.prototype.consumeIdentLikeToken=function(){var K=this.consumeName();return K.toLowerCase()==="url"&&this.peekCodePoint(0)===40?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===40?(this.consumeCodePoint(),{type:19,value:K}):{type:20,value:K}},Fe.prototype.consumeUrlToken=function(){var K=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===De)return{type:22,value:""};var ne=this.peekCodePoint(0);if(ne===39||ne===34){var ae=this.consumeStringToken(this.consumeCodePoint());return ae.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===De||this.peekCodePoint(0)===41)?(this.consumeCodePoint(),{type:22,value:ae.value}):(this.consumeBadUrlRemnants(),Bo)}for(;;){var be=this.consumeCodePoint();if(be===De||be===41)return{type:22,value:u.apply(void 0,K)};if(We(be))return this.consumeWhiteSpace(),this.peekCodePoint(0)===De||this.peekCodePoint(0)===41?(this.consumeCodePoint(),{type:22,value:u.apply(void 0,K)}):(this.consumeBadUrlRemnants(),Bo);if(be===34||be===39||be===40||Me(be))return this.consumeBadUrlRemnants(),Bo;if(be===92){if(!Se(be,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),Bo;K.push(this.consumeEscapedCodePoint())}else K.push(be)}},Fe.prototype.consumeWhiteSpace=function(){for(;We(this.peekCodePoint(0));)this.consumeCodePoint()},Fe.prototype.consumeBadUrlRemnants=function(){for(;;){var K=this.consumeCodePoint();if(K===41||K===De)return;Se(K,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},Fe.prototype.consumeStringSlice=function(K){for(var ne="";K>0;){var ae=Math.min(5e4,K);ne+=u.apply(void 0,this._value.splice(0,ae)),K-=ae}return this._value.shift(),ne},Fe.prototype.consumeStringToken=function(K){for(var ne="",ae=0;;){var be=this._value[ae];if(be===De||be===void 0||be===K)return{type:0,value:ne+=this.consumeStringSlice(ae)};if(be===10)return this._value.splice(0,ae),lo;if(be===92){var Be=this._value[ae+1];Be!==De&&Be!==void 0&&(Be===10?(ne+=this.consumeStringSlice(ae),ae=-1,this._value.shift()):Se(be,Be)&&(ne+=this.consumeStringSlice(ae),ne+=u(this.consumeEscapedCodePoint()),ae=-1))}ae++}},Fe.prototype.consumeNumber=function(){var K=[],ne=4,ae=this.peekCodePoint(0);for(ae!==Te&&ae!==_e||K.push(this.consumeCodePoint());Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());ae=this.peekCodePoint(0);var be=this.peekCodePoint(1);if(ae===46&&Ye(be))for(K.push(this.consumeCodePoint(),this.consumeCodePoint()),ne=8;Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());ae=this.peekCodePoint(0),be=this.peekCodePoint(1);var Be=this.peekCodePoint(2);if((ae===69||ae===101)&&((be===Te||be===_e)&&Ye(Be)||Ye(be)))for(K.push(this.consumeCodePoint(),this.consumeCodePoint()),ne=8;Ye(this.peekCodePoint(0));)K.push(this.consumeCodePoint());return[Ze(K),ne]},Fe.prototype.consumeNumericToken=function(){var K=this.consumeNumber(),ne=K[0],ae=K[1],be=this.peekCodePoint(0),Be=this.peekCodePoint(1),Xe=this.peekCodePoint(2);return Ie(be,Be,Xe)?{type:15,number:ne,flags:ae,unit:this.consumeName()}:be===37?(this.consumeCodePoint(),{type:16,number:ne,flags:ae}):{type:17,number:ne,flags:ae}},Fe.prototype.consumeEscapedCodePoint=function(){var K=this.consumeCodePoint();if(ot(K)){for(var ne=u(K);ot(this.peekCodePoint(0))&&ne.length<6;)ne+=u(this.consumeCodePoint());We(this.peekCodePoint(0))&&this.consumeCodePoint();var ae=parseInt(ne,16);return ae===0||function(be){return be>=55296&&be<=57343}(ae)||ae>1114111?65533:ae}return K===De?65533:K},Fe.prototype.consumeName=function(){for(var K="";;){var ne=this.consumeCodePoint();if(st(ne))K+=u(ne);else{if(!Se(ne,this.peekCodePoint(0)))return this.reconsumeCodePoint(ne),K;K+=u(this.consumeEscapedCodePoint())}}},Fe}(),Mt=function(){function Fe(K){this._tokens=K}return Fe.create=function(K){var ne=new At;return ne.write(K),new Fe(ne.read())},Fe.parseValue=function(K){return Fe.create(K).parseComponentValue()},Fe.parseValues=function(K){return Fe.create(K).parseComponentValues()},Fe.prototype.parseComponentValue=function(){for(var K=this.consumeToken();K.type===31;)K=this.consumeToken();if(K.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(K);var ne=this.consumeComponentValue();do K=this.consumeToken();while(K.type===31);if(K.type===32)return ne;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},Fe.prototype.parseComponentValues=function(){for(var K=[];;){var ne=this.consumeComponentValue();if(ne.type===32)return K;K.push(ne),K.push()}},Fe.prototype.consumeComponentValue=function(){var K=this.consumeToken();switch(K.type){case 11:case 28:case 2:return this.consumeSimpleBlock(K.type);case 19:return this.consumeFunction(K)}return K},Fe.prototype.consumeSimpleBlock=function(K){for(var ne={type:K,values:[]},ae=this.consumeToken();;){if(ae.type===32||bn(ae,K))return ne;this.reconsumeToken(ae),ne.values.push(this.consumeComponentValue()),ae=this.consumeToken()}},Fe.prototype.consumeFunction=function(K){for(var ne={name:K.value,values:[],type:18};;){var ae=this.consumeToken();if(ae.type===32||ae.type===3)return ne;this.reconsumeToken(ae),ne.values.push(this.consumeComponentValue())}},Fe.prototype.consumeToken=function(){var K=this._tokens.shift();return K===void 0?ht:K},Fe.prototype.reconsumeToken=function(K){this._tokens.unshift(K)},Fe}(),Kt=function(K){return K.type===15},qn=function(K){return K.type===17},Zt=function(K){return K.type===20},so=function(K){return K.type===0},Un=function(K,ne){return Zt(K)&&K.value===ne},dt=function(K){return K.type!==31},Ne=function(K){return K.type!==31&&K.type!==4},nt=function(K){var ne=[],ae=[];return K.forEach(function(be){if(be.type===4){if(ae.length===0)throw new Error("Error parsing function args, zero tokens for arg");return ne.push(ae),void(ae=[])}be.type!==31&&ae.push(be)}),ae.length&&ne.push(ae),ne},bn=function(K,ne){return ne===11&&K.type===12||ne===28&&K.type===29||ne===2&&K.type===3},hn=function(K){return K.type===17||K.type===15},En=function(K){return K.type===16||hn(K)},wi=function(K){return K.length>1?[K[0],K[1]]:[K[0]]},Ue={type:17,number:0,flags:4},ut={type:16,number:50,flags:4},Nt={type:16,number:100,flags:4},wn=function(K,ne,ae){var be=K[0],Be=K[1];return[Cn(be,ne),Cn(Be!==void 0?Be:be,ae)]},Cn=function(K,ne){if(K.type===16)return K.number/100*ne;if(Kt(K))switch(K.unit){case"rem":case"em":return 16*K.number;default:return K.number}return K.number},wr="grad",Kr="turn",Wo=function(K,ne){if(ne.type===15)switch(ne.unit){case"deg":return Math.PI*ne.number/180;case wr:return Math.PI/200*ne.number;case"rad":return ne.number;case Kr:return 2*Math.PI*ne.number}throw new Error("Unsupported angle type")},pl=function(K){return K.type===15&&(K.unit==="deg"||K.unit===wr||K.unit==="rad"||K.unit===Kr)},pu=function(K){switch(K.filter(Zt).map(function(ne){return ne.value}).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[Ue,Ue];case"to top":case"bottom":return bu(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[Ue,Nt];case"to right":case"left":return bu(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[Nt,Nt];case"to bottom":case"top":return bu(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[Nt,Ue];case"to left":case"right":return bu(270)}return 0},bu=function(K){return Math.PI*K/180},T1=function(K,ne){if(ne.type===18){var ae=UL[ne.name];if(ae===void 0)throw new Error('Attempting to parse an unsupported color function "'+ne.name+'"');return ae(K,ne.values)}if(ne.type===5){if(ne.value.length===3){var be=ne.value.substring(0,1),Be=ne.value.substring(1,2),Xe=ne.value.substring(2,3);return Em(parseInt(be+be,16),parseInt(Be+Be,16),parseInt(Xe+Xe,16),1)}if(ne.value.length===4){be=ne.value.substring(0,1),Be=ne.value.substring(1,2),Xe=ne.value.substring(2,3);var Ke=ne.value.substring(3,4);return Em(parseInt(be+be,16),parseInt(Be+Be,16),parseInt(Xe+Xe,16),parseInt(Ke+Ke,16)/255)}if(ne.value.length===6)return be=ne.value.substring(0,2),Be=ne.value.substring(2,4),Xe=ne.value.substring(4,6),Em(parseInt(be,16),parseInt(Be,16),parseInt(Xe,16),1);if(ne.value.length===8)return be=ne.value.substring(0,2),Be=ne.value.substring(2,4),Xe=ne.value.substring(4,6),Ke=ne.value.substring(6,8),Em(parseInt(be,16),parseInt(Be,16),parseInt(Xe,16),parseInt(Ke,16)/255)}if(ne.type===20){var vt=jf[ne.value.toUpperCase()];if(vt!==void 0)return vt}return jf.TRANSPARENT},xm=function(K){return!(255&K)},Gd=function(K){var ne=255&K,ae=255&K>>8,be=255&K>>16,Be=255&K>>24;return ne<255?"rgba("+Be+","+be+","+ae+","+ne/255+")":"rgb("+Be+","+be+","+ae+")"},Em=function(K,ne,ae,be){return(K<<24|ne<<16|ae<<8|Math.round(255*be))>>>0},$3=function(K,ne){if(K.type===17)return K.number;if(K.type===16){var ae=ne===3?1:255;return ne===3?K.number/100*ae:Math.round(K.number/100*ae)}return 0},FL=function(K,ne){var ae=ne.filter(Ne);if(ae.length===3){var be=ae.map($3),Be=be[0],Xe=be[1],Ke=be[2];return Em(Be,Xe,Ke,1)}if(ae.length===4){var vt=ae.map($3),qe=(Be=vt[0],Xe=vt[1],Ke=vt[2],vt[3]);return Em(Be,Xe,Ke,qe)}return 0};function NL(Fe,K,ne){return ne<0&&(ne+=1),ne>=1&&(ne-=1),ne<1/6?(K-Fe)*ne*6+Fe:ne<.5?K:ne<2/3?6*(K-Fe)*(2/3-ne)+Fe:Fe}var TA,fC=function(K,ne){var ae=ne.filter(Ne),be=ae[0],Be=ae[1],Xe=ae[2],Ke=ae[3],vt=(be.type===17?bu(be.number):Wo(K,be))/(2*Math.PI),qe=En(Be)?Be.number/100:0,Ot=En(Xe)?Xe.number/100:0,Lt=Ke!==void 0&&En(Ke)?Cn(Ke,1):1;if(qe===0)return Em(255*Ot,255*Ot,255*Ot,1);var Vt=Ot<=.5?Ot*(qe+1):Ot+qe-Ot*qe,Vn=2*Ot-Vt,Dn=NL(Vn,Vt,vt+1/3),$n=NL(Vn,Vt,vt),Ai=NL(Vn,Vt,vt-1/3);return Em(255*Dn,255*$n,255*Ai,Lt)},UL={hsl:fC,hsla:fC,rgb:FL,rgba:FL},tk=function(K,ne){return T1(K,Mt.create(ne).parseComponentValue())},jf={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},gC={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(K,ne){return ne.map(function(ae){if(Zt(ae))switch(ae.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},mC={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Q1=function(K,ne){var ae=T1(K,ne[0]),be=ne[1];return be&&En(be)?{color:ae,stop:be}:{color:ae,stop:null}},kC=function(K,ne){var ae=K[0],be=K[K.length-1];ae.stop===null&&(ae.stop=Ue),be.stop===null&&(be.stop=Nt);for(var Be=[],Xe=0,Ke=0;KeXe?Be.push(qe):Be.push(Xe),Xe=qe}else Be.push(null)}var Ot=null;for(Ke=0;KeXe.optimumDistance)?{optimumCorner:Ke,optimumDistance:Ot}:Xe},{optimumDistance:Be?1/0:-1/0,optimumCorner:null}).optimumCorner},QA=function(K,ne){var ae=bu(180),be=[];return nt(ne).forEach(function(Be,Xe){if(Xe===0){var Ke=Be[0];if(Ke.type===20&&["top","left","right","bottom"].indexOf(Ke.value)!==-1)return void(ae=pu(Be));if(pl(Ke))return void(ae=(Wo(K,Ke)+bu(270))%bu(360))}var vt=Q1(K,Be);be.push(vt)}),{angle:ae,stops:be,type:1}},vC="closest-side",AC="farthest-side",G3="closest-corner",DA="farthest-corner",R2="circle",Y3="ellipse",Tm="cover",BA="contain",D1=function(K,ne){var ae=0,be=3,Be=[],Xe=[];return nt(ne).forEach(function(Ke,vt){var qe=!0;if(vt===0?qe=Ke.reduce(function(Lt,Vt){if(Zt(Vt))switch(Vt.value){case"center":return Xe.push(ut),!1;case"top":case"left":return Xe.push(Ue),!1;case"right":case"bottom":return Xe.push(Nt),!1}else if(En(Vt)||hn(Vt))return Xe.push(Vt),!1;return Lt},qe):vt===1&&(qe=Ke.reduce(function(Lt,Vt){if(Zt(Vt))switch(Vt.value){case R2:return ae=0,!1;case Y3:return ae=1,!1;case BA:case vC:return be=0,!1;case AC:return be=1,!1;case G3:return be=2,!1;case Tm:case DA:return be=3,!1}else if(hn(Vt)||En(Vt))return Array.isArray(be)||(be=[]),be.push(Vt),!1;return Lt},qe)),qe){var Ot=Q1(K,Ke);Be.push(Ot)}}),{size:be,shape:ae,stops:Be,position:Xe,type:2}},Bp=function(K,ne){if(ne.type===22){var ae={url:ne.value,type:0};return K.cache.addImage(ne.value),ae}if(ne.type===18){var be=gM[ne.name];if(be===void 0)throw new Error('Attempting to parse an unsupported image function "'+ne.name+'"');return be(K,ne.values)}throw new Error("Unsupported image type "+ne.type)},gM={"linear-gradient":function(K,ne){var ae=bu(180),be=[];return nt(ne).forEach(function(Be,Xe){if(Xe===0){var Ke=Be[0];if(Ke.type===20&&Ke.value==="to")return void(ae=pu(Be));if(pl(Ke))return void(ae=Wo(K,Ke))}var vt=Q1(K,Be);be.push(vt)}),{angle:ae,stops:be,type:1}},"-moz-linear-gradient":QA,"-ms-linear-gradient":QA,"-o-linear-gradient":QA,"-webkit-linear-gradient":QA,"radial-gradient":function(K,ne){var ae=0,be=3,Be=[],Xe=[];return nt(ne).forEach(function(Ke,vt){var qe=!0;if(vt===0){var Ot=!1;qe=Ke.reduce(function(Vt,Vn){if(Ot)if(Zt(Vn))switch(Vn.value){case"center":return Xe.push(ut),Vt;case"top":case"left":return Xe.push(Ue),Vt;case"right":case"bottom":return Xe.push(Nt),Vt}else(En(Vn)||hn(Vn))&&Xe.push(Vn);else if(Zt(Vn))switch(Vn.value){case R2:return ae=0,!1;case Y3:return ae=1,!1;case"at":return Ot=!0,!1;case vC:return be=0,!1;case Tm:case AC:return be=1,!1;case BA:case G3:return be=2,!1;case DA:return be=3,!1}else if(hn(Vn)||En(Vn))return Array.isArray(be)||(be=[]),be.push(Vn),!1;return Vt},qe)}if(qe){var Lt=Q1(K,Ke);Be.push(Lt)}}),{size:be,shape:ae,stops:Be,position:Xe,type:2}},"-moz-radial-gradient":D1,"-ms-radial-gradient":D1,"-o-radial-gradient":D1,"-webkit-radial-gradient":D1,"-webkit-gradient":function(K,ne){var ae=bu(180),be=[],Be=1;return nt(ne).forEach(function(Xe,Ke){var vt=Xe[0];if(Ke===0){if(Zt(vt)&&vt.value==="linear")return void(Be=1);if(Zt(vt)&&vt.value==="radial")return void(Be=2)}if(vt.type===18){if(vt.name==="from"){var qe=T1(K,vt.values[0]);be.push({stop:Ue,color:qe})}else if(vt.name==="to")qe=T1(K,vt.values[0]),be.push({stop:Nt,color:qe});else if(vt.name==="color-stop"){var Ot=vt.values.filter(Ne);if(Ot.length===2){qe=T1(K,Ot[1]);var Lt=Ot[0];qn(Lt)&&be.push({stop:{type:16,number:100*Lt.number,flags:Lt.flags},color:qe})}}}}),Be===1?{angle:(ae+bu(180))%bu(360),stops:be,type:Be}:{size:3,shape:0,stops:be,position:[],type:Be}}},rye={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(K,ne){if(ne.length===0)return[];var ae=ne[0];return ae.type===20&&ae.value==="none"?[]:ne.filter(function(be){return Ne(be)&&function(Be){return!(Be.type===20&&Be.value==="none"||Be.type===18&&!gM[Be.name])}(be)}).map(function(be){return Bp(K,be)})}},oye={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(K,ne){return ne.map(function(ae){if(Zt(ae))switch(ae.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},sye={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(En)}).map(wi)}},aye={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(Zt).map(function(be){return be.value}).join(" ")}).map(lye)}},lye=function(K){switch(K){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};(function(Fe){Fe.AUTO="auto",Fe.CONTAIN="contain",Fe.COVER="cover"})(TA||(TA={}));var Bl,kc={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(K,ne){return nt(ne).map(function(ae){return ae.filter(cye)})}},cye=function(K){return Zt(K)||En(K)},mM=function(K){return{name:"border-"+K+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},dye=mM("top"),uye=mM("right"),hye=mM("bottom"),fye=mM("left"),QE=function(K){return{name:"border-radius-"+K,initialValue:"0 0",prefix:!1,type:1,parse:function(ae,be){return wi(be.filter(En))}}},gye=QE("top-left"),lf=QE("top-right"),jH=QE("bottom-right"),pC=QE("bottom-left"),DE=function(K){return{name:"border-"+K+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(ae,be){switch(be){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},WH=DE("top"),nk=DE("right"),ioe=DE("bottom"),roe=DE("left"),BE=function(K){return{name:"border-"+K+"-width",initialValue:"0",type:0,prefix:!1,parse:function(ae,be){return Kt(be)?be.number:0}}},ooe=BE("top"),soe=BE("right"),aoe=BE("bottom"),B1=BE("left"),mye={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ik={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(K,ne){return ne==="rtl"?1:0}},kye={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(K,ne){return ne.filter(Zt).reduce(function(ae,be){return ae|loe(be.value)},0)}},loe=function(K){switch(K){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},Z3={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},kM={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(K,ne){return ne.type===20&&ne.value==="normal"?0:ne.type===17||ne.type===15?ne.number:0}};(function(Fe){Fe.NORMAL="normal",Fe.STRICT="strict"})(Bl||(Bl={}));var bC,Hc={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(K,ne){return ne==="strict"?Bl.STRICT:Bl.NORMAL}},q3={name:"line-height",initialValue:"normal",prefix:!1,type:4},vM=function(K,ne){return Zt(K)&&K.value==="normal"?1.2*ne:K.type===17?ne*K.number:En(K)?Cn(K,ne):ne},vye={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(K,ne){return ne.type===20&&ne.value==="none"?null:Bp(K,ne)}},VH={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(K,ne){return ne==="inside"?0:1}},zH={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},AM=function(K){return{name:"margin-"+K,initialValue:"0",prefix:!1,type:4}},Aye=AM("top"),coe=AM("right"),pM=AM("bottom"),jL=AM("left"),pye={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(K,ne){return ne.filter(Zt).map(function(ae){switch(ae.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}})}},doe={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(K,ne){return ne==="break-word"?"break-word":"normal"}},RE=function(K){return{name:"padding-"+K,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},HH=RE("top"),$H=RE("right"),uoe=RE("bottom"),bye=RE("left"),XH={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},GH={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(K,ne){switch(ne){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},wye={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(K,ne){return ne.length===1&&Un(ne[0],"none")?[]:nt(ne).map(function(ae){for(var be={color:jf.TRANSPARENT,offsetX:Ue,offsetY:Ue,blur:Ue},Be=0,Xe=0;Xe1?1:0],this.overflowWrap=Et(K,doe,ne.overflowWrap),this.paddingTop=Et(K,HH,ne.paddingTop),this.paddingRight=Et(K,$H,ne.paddingRight),this.paddingBottom=Et(K,uoe,ne.paddingBottom),this.paddingLeft=Et(K,bye,ne.paddingLeft),this.paintOrder=Et(K,Qye,ne.paintOrder),this.position=Et(K,GH,ne.position),this.textAlign=Et(K,XH,ne.textAlign),this.textDecorationColor=Et(K,VL,(ae=ne.textDecorationColor)!==null&&ae!==void 0?ae:ne.color),this.textDecorationLine=Et(K,Sye,(be=ne.textDecorationLine)!==null&&be!==void 0?be:ne.textDecoration),this.textShadow=Et(K,wye,ne.textShadow),this.textTransform=Et(K,hoe,ne.textTransform),this.transform=Et(K,R1,ne.transform),this.transformOrigin=Et(K,goe,ne.transformOrigin),this.visibility=Et(K,Oye,ne.visibility),this.webkitTextStrokeColor=Et(K,Dye,ne.webkitTextStrokeColor),this.webkitTextStrokeWidth=Et(K,Bye,ne.webkitTextStrokeWidth),this.wordBreak=Et(K,yye,ne.wordBreak),this.zIndex=Et(K,Cye,ne.zIndex)}return Fe.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},Fe.prototype.isTransparent=function(){return xm(this.backgroundColor)},Fe.prototype.isTransformed=function(){return this.transform!==null},Fe.prototype.isPositioned=function(){return this.position!==0},Fe.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},Fe.prototype.isFloating=function(){return this.float!==0},Fe.prototype.isInlineLevel=function(){return Xu(this.display,4)||Xu(this.display,33554432)||Xu(this.display,268435456)||Xu(this.display,536870912)||Xu(this.display,67108864)||Xu(this.display,134217728)},Fe}(),Wt=function(K,ne){this.content=Et(K,xye,ne.content),this.quotes=Et(K,voe,ne.quotes)},Sn=function(K,ne){this.counterIncrement=Et(K,Eye,ne.counterIncrement),this.counterReset=Et(K,zL,ne.counterReset)},Et=function(K,ne,ae){var be=new At,Be=ae!=null?ae.toString():ne.initialValue;be.write(Be);var Xe=new Mt(be.read());switch(ne.type){case 2:var Ke=Xe.parseComponentValue();return ne.parse(K,Zt(Ke)?Ke.value:ne.initialValue);case 0:return ne.parse(K,Xe.parseComponentValue());case 1:return ne.parse(K,Xe.parseComponentValues());case 4:return Xe.parseComponentValue();case 3:switch(ne.format){case"angle":return Wo(K,Xe.parseComponentValue());case"color":return T1(K,Xe.parseComponentValue());case"image":return Bp(K,Xe.parseComponentValue());case"length":var vt=Xe.parseComponentValue();return hn(vt)?vt:Ue;case"length-percentage":var qe=Xe.parseComponentValue();return En(qe)?qe:Ue;case"time":return moe(K,Xe.parseComponentValue())}}},or=function(K,ne){var ae=function(be){switch(be.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(K);return ae===1||ne===ae},Jr=function(K,ne){this.context=K,this.textNodes=[],this.elements=[],this.flags=0,or(ne,3),this.styles=new HL(K,window.getComputedStyle(ne,null)),n$(ne)&&(this.styles.animationDuration.some(function(ae){return ae>0})&&(ne.style.animationDuration="0s"),this.styles.transform!==null&&(ne.style.transform="none")),this.bounds=l(this.context,ne),or(ne,4)&&(this.flags|=16)},za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ad=typeof Uint8Array>"u"?[]:new Uint8Array(256),sl=0;sl<64;sl++)ad[za.charCodeAt(sl)]=sl;for(var wM=function(K,ne,ae){return K.slice?K.slice(ne,ae):new Uint16Array(Array.prototype.slice.call(K,ne,ae))},Rye=function(){function Fe(K,ne,ae,be,Be,Xe){this.initialValue=K,this.errorValue=ne,this.highStart=ae,this.highValueIndex=be,this.index=Be,this.data=Xe}return Fe.prototype.get=function(K){var ne;if(K>=0){if(K<55296||K>56319&&K<=65535)return ne=((ne=this.index[K>>5])<<2)+(31&K),this.data[ne];if(K<=65535)return ne=((ne=this.index[2048+(K-55296>>5)])<<2)+(31&K),this.data[ne];if(K>11),ne=this.index[ne],ne+=K>>5&63,ne=((ne=this.index[ne])<<2)+(31&K),this.data[ne];if(K<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Fe}(),rk="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",OM=typeof Uint8Array>"u"?[]:new Uint8Array(256),yM=0;yM<64;yM++)OM[rk.charCodeAt(yM)]=yM;var RA,IE=8,$L=9,Ha=11,poe=12,boe=function(){for(var K=[],ne=0;ne>10),Ke%1024+56320)),(Be+1===ae||be.length>16384)&&(Xe+=String.fromCharCode.apply(String,be),be.length=0)}return Xe},CM=function(Fe){var K,ne,ae,be=function(qe){var Ot,Lt,Vt,Vn,Dn,$n=.75*qe.length,Ai=qe.length,mr=0;qe[qe.length-1]==="="&&($n--,qe[qe.length-2]==="="&&$n--);var $i=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&Uint8Array.prototype.slice!==void 0?new ArrayBuffer($n):new Array($n),Go=Array.isArray($i)?$i:new Uint8Array($i);for(Ot=0;Ot>4,Go[mr++]=(15&Vt)<<4|Vn>>2,Go[mr++]=(3&Vn)<<6|63&Dn;return $i}(Fe),Be=Array.isArray(be)?function(qe){for(var Ot=qe.length,Lt=[],Vt=0;Vt=55296&&Lt<=56319&&qe=ae)return{done:!0,value:null};for(var vt=ok;beKe.x||Lt.y>Ke.y;return Ke=Lt,Ot===0||Vt});return K.body.removeChild(ne),vt}(document);return Object.defineProperty(wu,"SUPPORT_WORD_BREAKING",{value:Fe}),Fe},get SUPPORT_SVG_DRAWING(){var Fe=function(K){var ne=new Image,ae=K.createElement("canvas"),be=ae.getContext("2d");if(!be)return!1;ne.src="data:image/svg+xml,";try{be.drawImage(ne,0,0),ae.toDataURL()}catch{return!1}return!0}(document);return Object.defineProperty(wu,"SUPPORT_SVG_DRAWING",{value:Fe}),Fe},get SUPPORT_FOREIGNOBJECT_DRAWING(){var Fe=typeof Array.from=="function"&&typeof window.fetch=="function"?function(K){var ne=K.createElement("canvas"),ae=100;ne.width=ae,ne.height=ae;var be=ne.getContext("2d");if(!be)return Promise.reject(!1);be.fillStyle="rgb(0, 255, 0)",be.fillRect(0,0,ae,ae);var Be=new Image,Xe=ne.toDataURL();Be.src=Xe;var Ke=XL(ae,ae,0,0,Be);return be.fillStyle="red",be.fillRect(0,0,ae,ae),qH(Ke).then(function(vt){be.drawImage(vt,0,0);var qe=be.getImageData(0,0,ae,ae).data;be.fillStyle="red",be.fillRect(0,0,ae,ae);var Ot=K.createElement("div");return Ot.style.backgroundImage="url("+Xe+")",Ot.style.height=ae+"px",Rp(qe)?qH(XL(ae,ae,0,0,Ot)):Promise.reject(!1)}).then(function(vt){return be.drawImage(vt,0,0),Rp(be.getImageData(0,0,ae,ae).data)}).catch(function(){return!1})}(document):Promise.resolve(!1);return Object.defineProperty(wu,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:Fe}),Fe},get SUPPORT_CORS_IMAGES(){var Fe=new Image().crossOrigin!==void 0;return Object.defineProperty(wu,"SUPPORT_CORS_IMAGES",{value:Fe}),Fe},get SUPPORT_RESPONSE_TYPE(){var Fe=typeof new XMLHttpRequest().responseType=="string";return Object.defineProperty(wu,"SUPPORT_RESPONSE_TYPE",{value:Fe}),Fe},get SUPPORT_CORS_XHR(){var Fe="withCredentials"in new XMLHttpRequest;return Object.defineProperty(wu,"SUPPORT_CORS_XHR",{value:Fe}),Fe},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var Fe=!(typeof Intl>"u"||!Intl.Segmenter);return Object.defineProperty(wu,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:Fe}),Fe}},GL=function(K,ne){this.text=K,this.bounds=ne},woe=function(K,ne){var ae=ne.ownerDocument;if(ae){var be=ae.createElement("html2canvaswrapper");be.appendChild(ne.cloneNode(!0));var Be=ne.parentNode;if(Be){Be.replaceChild(be,ne);var Xe=l(K,be);return be.firstChild&&Be.replaceChild(be.firstChild,be),Xe}}return a.EMPTY},ME=function(K,ne,ae){var be=K.ownerDocument;if(!be)throw new Error("Node has no owner document");var Be=be.createRange();return Be.setStart(K,ne),Be.setEnd(K,ne+ae),Be},SM=function(K){if(wu.SUPPORT_NATIVE_TEXT_SEGMENTATION){var ne=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(ne.segment(K)).map(function(ae){return ae.segment})}return function(ae){for(var be,Be=_M(ae),Xe=[];!(be=Be.next()).done;)be.value&&Xe.push(be.value.slice());return Xe}(K)},PE=function(K,ne){return ne.letterSpacing!==0?SM(K):function(ae,be){if(wu.SUPPORT_NATIVE_TEXT_SEGMENTATION){var Be=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(Be.segment(ae)).map(function(Xe){return Xe.segment})}return LM(ae,be)}(K,ne)},wC=[32,160,4961,65792,65793,4153,4241],LM=function(K,ne){for(var ae,be=function(Ke,vt){var qe=d(Ke),Ot=ke(qe,vt),Lt=Ot[0],Vt=Ot[1],Vn=Ot[2],Dn=qe.length,$n=0,Ai=0;return{next:function(){if(Ai>=Dn)return{done:!0,value:null};for(var $i=le;Ai0)if(wu.SUPPORT_RANGE_BOUNDS){var Vt=ME(Ke,Ot,Lt.length).getClientRects();if(Vt.length>1){var Vn=SM(Lt),Dn=0;Vn.forEach(function(Ai){qe.push(new GL(Ai,a.fromDOMRectList(be,ME(Ke,Dn+Ot,Ai.length).getClientRects()))),Dn+=Ai.length})}else qe.push(new GL(Lt,a.fromDOMRectList(be,Vt)))}else{var $n=Ke.splitText(Lt.length);qe.push(new GL(Lt,woe(be,Ke))),Ke=$n}else wu.SUPPORT_RANGE_BOUNDS||(Ke=Ke.splitText(Lt.length));Ot+=Lt.length}),qe}(K,this.text,ae,ne)},Fye=function(K,ne){switch(ne){case 1:return K.toLowerCase();case 3:return K.replace(Nye,xM);case 2:return K.toUpperCase();default:return K}},Nye=/(^|\s|:|-|\(|\))([a-z])/g,xM=function(K,ne,ae){return K.length>0?ne+ae.toUpperCase():K},FE=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.src=ae.currentSrc||ae.src,be.intrinsicWidth=ae.naturalWidth,be.intrinsicHeight=ae.naturalHeight,be.context.cache.addImage(be.src),be}return t(K,Fe),K}(Jr),EM=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.canvas=ae,be.intrinsicWidth=ae.width,be.intrinsicHeight=ae.height,be}return t(K,Fe),K}(Jr),Ooe=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this,Be=new XMLSerializer,Xe=l(ne,ae);return ae.setAttribute("width",Xe.width+"px"),ae.setAttribute("height",Xe.height+"px"),be.svg="data:image/svg+xml,"+encodeURIComponent(Be.serializeToString(ae)),be.intrinsicWidth=ae.width.baseVal.value,be.intrinsicHeight=ae.height.baseVal.value,be.context.cache.addImage(be.svg),be}return t(K,Fe),K}(Jr),KH=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.value=ae.value,be}return t(K,Fe),K}(Jr),JH=function(Fe){function K(ne,ae){var be=Fe.call(this,ne,ae)||this;return be.start=ae.start,be.reversed=typeof ae.reversed=="boolean"&&ae.reversed===!0,be}return t(K,Fe),K}(Jr),Uye=[{type:15,flags:0,unit:"px",number:3}],Gu=[{type:16,flags:0,number:50}],Yu="checkbox",TM="radio",jye="password",e$=707406591,t$=function(Fe){function K(ne,ae){var be,Be,Xe,Ke=Fe.call(this,ne,ae)||this;switch(Ke.type=ae.type.toLowerCase(),Ke.checked=ae.checked,Ke.value=(Be=(be=ae).type===jye?new Array(be.value.length+1).join("•"):be.value).length===0?be.placeholder||"":Be,Ke.type!==Yu&&Ke.type!==TM||(Ke.styles.backgroundColor=3739148031,Ke.styles.borderTopColor=Ke.styles.borderRightColor=Ke.styles.borderBottomColor=Ke.styles.borderLeftColor=2779096575,Ke.styles.borderTopWidth=Ke.styles.borderRightWidth=Ke.styles.borderBottomWidth=Ke.styles.borderLeftWidth=1,Ke.styles.borderTopStyle=Ke.styles.borderRightStyle=Ke.styles.borderBottomStyle=Ke.styles.borderLeftStyle=1,Ke.styles.backgroundClip=[0],Ke.styles.backgroundOrigin=[0],Ke.bounds=(Xe=Ke.bounds).width>Xe.height?new a(Xe.left+(Xe.width-Xe.height)/2,Xe.top,Xe.height,Xe.height):Xe.width0)ae.textNodes.push(new Pye(K,Be,ae.styles));else if(JL(Be))if(Loe(Be)&&Be.assignedNodes)Be.assignedNodes().forEach(function(vt){return Fe(K,vt,ae,be)});else{var Ke=qL(K,Be);Ke.styles.isVisible()&&(KL(Be,Ke,be)?Ke.flags|=4:Wye(Ke.styles)&&(Ke.flags|=2),ZL.indexOf(Be.tagName)!==-1&&(Ke.flags|=8),ae.elements.push(Ke),Be.slot,Be.shadowRoot?Fe(K,Be.shadowRoot,Ke,be):IM(Be)||tt(Be)||IA(Be)||Fe(K,Be,Ke,be))}},qL=function(K,ne){return Is(ne)?new FE(K,ne):WE(ne)?new EM(K,ne):tt(ne)?new Ooe(K,ne):RM(ne)?new KH(K,ne):jE(ne)?new JH(K,ne):Coe(ne)?new t$(K,ne):IA(ne)?new QM(K,ne):IM(ne)?new YL(K,ne):_oe(ne)?new DM(K,ne):new Jr(K,ne)},UE=function(K,ne){var ae=qL(K,ne);return ae.flags|=4,NE(K,ne,ae,ae),ae},KL=function(K,ne,ae){return ne.styles.isPositionedWithZIndex()||ne.styles.opacity<1||ne.styles.isTransformed()||J3(K)&&ae.styles.isTransparent()},Wye=function(K){return K.isPositioned()||K.isFloating()},yoe=function(K){return K.nodeType===Node.TEXT_NODE},JL=function(K){return K.nodeType===Node.ELEMENT_NODE},n$=function(K){return JL(K)&&K.style!==void 0&&!BM(K)},BM=function(K){return kn(K.className)=="object"},RM=function(K){return K.tagName==="LI"},jE=function(K){return K.tagName==="OL"},Coe=function(K){return K.tagName==="INPUT"},tt=function(K){return K.tagName==="svg"},J3=function(K){return K.tagName==="BODY"},WE=function(K){return K.tagName==="CANVAS"},I1=function(K){return K.tagName==="VIDEO"},Is=function(K){return K.tagName==="IMG"},_oe=function(K){return K.tagName==="IFRAME"},Soe=function(K){return K.tagName==="STYLE"},IM=function(K){return K.tagName==="TEXTAREA"},IA=function(K){return K.tagName==="SELECT"},Loe=function(K){return K.tagName==="SLOT"},xoe=function(K){return K.tagName.indexOf("-")>0},Vye=function(){function Fe(){this.counters={}}return Fe.prototype.getCounterValue=function(K){var ne=this.counters[K];return ne&&ne.length?ne[ne.length-1]:1},Fe.prototype.getCounterValues=function(K){var ne=this.counters[K];return ne||[]},Fe.prototype.pop=function(K){var ne=this;K.forEach(function(ae){return ne.counters[ae].pop()})},Fe.prototype.parse=function(K){var ne=this,ae=K.counterIncrement,be=K.counterReset,Be=!0;ae!==null&&ae.forEach(function(Ke){var vt=ne.counters[Ke.counter];vt&&Ke.increment!==0&&(Be=!1,vt.length||vt.push(1),vt[Math.max(0,vt.length-1)]+=Ke.increment)});var Xe=[];return Be&&be.forEach(function(Ke){var vt=ne.counters[Ke.counter];Xe.push(Ke.counter),vt||(vt=ne.counters[Ke.counter]=[]),vt.push(Ke.reset)}),Xe},Fe}(),Eoe={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Toe={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Ip={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},zye={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},ex=function(K,ne,ae,be,Be,Xe){return Kae?VE(K,Be,Xe.length>0):be.integers.reduce(function(Ke,vt,qe){for(;K>=vt;)K-=vt,Ke+=be.values[qe];return Ke},"")+Xe},Qoe=function(K,ne,ae,be){var Be="";do ae||K--,Be=be(K)+Be,K/=ne;while(K*ne>=ne);return Be},Yd=function(K,ne,ae,be,Be){var Xe=ae-ne+1;return(K<0?"-":"")+(Qoe(Math.abs(K),Xe,be,function(Ke){return u(Math.floor(Ke%Xe)+ne)})+Be)},OC=function(K,ne,ae){ae===void 0&&(ae=". ");var be=ne.length;return Qoe(Math.abs(K),be,!1,function(Be){return ne[Math.floor(Be%be)]})+ae},cf=function(K,ne,ae,be,Be,Xe){if(K<-9999||K>9999)return VE(K,4,Be.length>0);var Ke=Math.abs(K),vt=Be;if(Ke===0)return ne[0]+vt;for(var qe=0;Ke>0&&qe<=4;qe++){var Ot=Ke%10;Ot===0&&Xu(Xe,1)&&vt!==""?vt=ne[Ot]+vt:Ot>1||Ot===1&&qe===0||Ot===1&&qe===1&&Xu(Xe,2)||Ot===1&&qe===1&&Xu(Xe,4)&&K>100||Ot===1&&qe>1&&Xu(Xe,8)?vt=ne[Ot]+(qe>0?ae[qe-1]:"")+vt:Ot===1&&qe>0&&(vt=ae[qe-1]+vt),Ke=Math.floor(Ke/10)}return(K<0?be:"")+vt},Doe="十百千萬",Boe="拾佰仟萬",Roe="マイナス",i$="마이너스",VE=function(K,ne,ae){var be=ae?". ":"",Be=ae?"、":"",Xe=ae?", ":"",Ke=ae?" ":"";switch(ne){case 0:return"•"+Ke;case 1:return"◦"+Ke;case 2:return"◾"+Ke;case 5:var vt=Yd(K,48,57,!0,be);return vt.length<4?"0"+vt:vt;case 4:return OC(K,"〇一二三四五六七八九",Be);case 6:return ex(K,1,3999,Eoe,3,be).toLowerCase();case 7:return ex(K,1,3999,Eoe,3,be);case 8:return Yd(K,945,969,!1,be);case 9:return Yd(K,97,122,!1,be);case 10:return Yd(K,65,90,!1,be);case 11:return Yd(K,1632,1641,!0,be);case 12:case 49:return ex(K,1,9999,Toe,3,be);case 35:return ex(K,1,9999,Toe,3,be).toLowerCase();case 13:return Yd(K,2534,2543,!0,be);case 14:case 30:return Yd(K,6112,6121,!0,be);case 15:return OC(K,"子丑寅卯辰巳午未申酉戌亥",Be);case 16:return OC(K,"甲乙丙丁戊己庚辛壬癸",Be);case 17:case 48:return cf(K,"零一二三四五六七八九",Doe,"負",Be,14);case 47:return cf(K,"零壹貳參肆伍陸柒捌玖",Boe,"負",Be,15);case 42:return cf(K,"零一二三四五六七八九",Doe,"负",Be,14);case 41:return cf(K,"零壹贰叁肆伍陆柒捌玖",Boe,"负",Be,15);case 26:return cf(K,"〇一二三四五六七八九","十百千万",Roe,Be,0);case 25:return cf(K,"零壱弐参四伍六七八九","拾百千万",Roe,Be,7);case 31:return cf(K,"영일이삼사오육칠팔구","십백천만",i$,Xe,7);case 33:return cf(K,"零一二三四五六七八九","十百千萬",i$,Xe,0);case 32:return cf(K,"零壹貳參四五六七八九","拾百千",i$,Xe,7);case 18:return Yd(K,2406,2415,!0,be);case 20:return ex(K,1,19999,zye,3,be);case 21:return Yd(K,2790,2799,!0,be);case 22:return Yd(K,2662,2671,!0,be);case 22:return ex(K,1,10999,Ip,3,be);case 23:return OC(K,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return OC(K,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return Yd(K,3302,3311,!0,be);case 28:return OC(K,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",Be);case 29:return OC(K,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",Be);case 34:return Yd(K,3792,3801,!0,be);case 37:return Yd(K,6160,6169,!0,be);case 38:return Yd(K,4160,4169,!0,be);case 39:return Yd(K,2918,2927,!0,be);case 40:return Yd(K,1776,1785,!0,be);case 43:return Yd(K,3046,3055,!0,be);case 44:return Yd(K,3174,3183,!0,be);case 45:return Yd(K,3664,3673,!0,be);case 46:return Yd(K,3872,3881,!0,be);default:return Yd(K,48,57,!0,be)}},ew="data-html2canvas-ignore",Ioe=function(){function Fe(K,ne,ae){if(this.context=K,this.options=ae,this.scrolledElements=[],this.referenceElement=ne,this.counters=new Vye,this.quoteDepth=0,!ne.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(ne.ownerDocument.documentElement,!1)}return Fe.prototype.toIFrame=function(K,ne){var ae=this,be=M2(K,ne);if(!be.contentWindow)return Promise.reject("Unable to find iframe window");var Be=K.defaultView.pageXOffset,Xe=K.defaultView.pageYOffset,Ke=be.contentWindow,vt=Ke.document,qe=Xye(be).then(function(){return r(ae,void 0,void 0,function(){var Ot,Lt;return o(this,function(Vt){switch(Vt.label){case 0:return this.scrolledElements.forEach(Yye),Ke&&(Ke.scrollTo(ne.left,ne.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||Ke.scrollY===ne.top&&Ke.scrollX===ne.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(Ke.scrollX-ne.left,Ke.scrollY-ne.top,0,0))),Ot=this.options.onclone,(Lt=this.clonedReferenceElement)===void 0?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:vt.fonts&&vt.fonts.ready?[4,vt.fonts.ready]:[3,2];case 1:Vt.sent(),Vt.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,$ye(vt)]:[3,4];case 3:Vt.sent(),Vt.label=4;case 4:return typeof Ot=="function"?[2,Promise.resolve().then(function(){return Ot(vt,Lt)}).then(function(){return be})]:[2,be]}})})});return vt.open(),vt.write(Moe(document.doctype)+""),Poe(this.referenceElement.ownerDocument,Be,Xe),vt.replaceChild(vt.adoptNode(this.documentElement),vt.documentElement),vt.close(),qe},Fe.prototype.createElementClone=function(K){if(or(K,2),WE(K))return this.createCanvasClone(K);if(I1(K))return this.createVideoClone(K);if(Soe(K))return this.createStyleClone(K);var ne=K.cloneNode(!1);return Is(ne)&&(Is(K)&&K.currentSrc&&K.currentSrc!==K.src&&(ne.src=K.currentSrc,ne.srcset=""),ne.loading==="lazy"&&(ne.loading="eager")),xoe(ne)?this.createCustomElementClone(ne):ne},Fe.prototype.createCustomElementClone=function(K){var ne=document.createElement("html2canvascustomelement");return r$(K.style,ne),ne},Fe.prototype.createStyleClone=function(K){try{var ne=K.sheet;if(ne&&ne.cssRules){var ae=[].slice.call(ne.cssRules,0).reduce(function(Be,Xe){return Xe&&typeof Xe.cssText=="string"?Be+Xe.cssText:Be},""),be=K.cloneNode(!1);return be.textContent=ae,be}}catch(Be){if(this.context.logger.error("Unable to access cssRules property",Be),Be.name!=="SecurityError")throw Be}return K.cloneNode(!1)},Fe.prototype.createCanvasClone=function(K){var ne;if(this.options.inlineImages&&K.ownerDocument){var ae=K.ownerDocument.createElement("img");try{return ae.src=K.toDataURL(),ae}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",K)}}var be=K.cloneNode(!1);try{be.width=K.width,be.height=K.height;var Be=K.getContext("2d"),Xe=be.getContext("2d");if(Xe)if(!this.options.allowTaint&&Be)Xe.putImageData(Be.getImageData(0,0,K.width,K.height),0,0);else{var Ke=(ne=K.getContext("webgl2"))!==null&&ne!==void 0?ne:K.getContext("webgl");if(Ke){var vt=Ke.getContextAttributes();(vt==null?void 0:vt.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",K)}Xe.drawImage(K,0,0)}return be}catch{this.context.logger.info("Unable to clone canvas as it is tainted",K)}return be},Fe.prototype.createVideoClone=function(K){var ne=K.ownerDocument.createElement("canvas");ne.width=K.offsetWidth,ne.height=K.offsetHeight;var ae=ne.getContext("2d");try{return ae&&(ae.drawImage(K,0,0,ne.width,ne.height),this.options.allowTaint||ae.getImageData(0,0,ne.width,ne.height)),ne}catch{this.context.logger.info("Unable to clone video as it is tainted",K)}var be=K.ownerDocument.createElement("canvas");return be.width=K.offsetWidth,be.height=K.offsetHeight,be},Fe.prototype.appendChildNode=function(K,ne,ae){JL(ne)&&(ne.tagName==="SCRIPT"||ne.hasAttribute(ew)||typeof this.options.ignoreElements=="function"&&this.options.ignoreElements(ne))||this.options.copyStyles&&JL(ne)&&Soe(ne)||K.appendChild(this.cloneNode(ne,ae))},Fe.prototype.cloneChildNodes=function(K,ne,ae){for(var be=this,Be=K.shadowRoot?K.shadowRoot.firstChild:K.firstChild;Be;Be=Be.nextSibling)if(JL(Be)&&Loe(Be)&&typeof Be.assignedNodes=="function"){var Xe=Be.assignedNodes();Xe.length&&Xe.forEach(function(Ke){return be.appendChildNode(ne,Ke,ae)})}else this.appendChildNode(ne,Be,ae)},Fe.prototype.cloneNode=function(K,ne){if(yoe(K))return document.createTextNode(K.data);if(!K.ownerDocument)return K.cloneNode(!1);var ae=K.ownerDocument.defaultView;if(ae&&JL(K)&&(n$(K)||BM(K))){var be=this.createElementClone(K);be.style.transitionProperty="none";var Be=ae.getComputedStyle(K),Xe=ae.getComputedStyle(K,":before"),Ke=ae.getComputedStyle(K,":after");this.referenceElement===K&&n$(be)&&(this.clonedReferenceElement=be),J3(be)&&MM(be);var vt=this.counters.parse(new Sn(this.context,Be)),qe=this.resolvePseudoContent(K,be,Xe,RA.BEFORE);xoe(K)&&(ne=!0),I1(K)||this.cloneChildNodes(K,be,ne),qe&&be.insertBefore(qe,be.firstChild);var Ot=this.resolvePseudoContent(K,be,Ke,RA.AFTER);return Ot&&be.appendChild(Ot),this.counters.pop(vt),(Be&&(this.options.copyStyles||BM(K))&&!_oe(K)||ne)&&r$(Be,be),K.scrollTop===0&&K.scrollLeft===0||this.scrolledElements.push([be,K.scrollLeft,K.scrollTop]),(IM(K)||IA(K))&&(IM(be)||IA(be))&&(be.value=K.value),be}return K.cloneNode(!1)},Fe.prototype.resolvePseudoContent=function(K,ne,ae,be){var Be=this;if(ae){var Xe=ae.content,Ke=ne.ownerDocument;if(Ke&&Xe&&Xe!=="none"&&Xe!=="-moz-alt-content"&&ae.display!=="none"){this.counters.parse(new Sn(this.context,ae));var vt=new Wt(this.context,ae),qe=Ke.createElement("html2canvaspseudoelement");r$(ae,qe),vt.content.forEach(function(Lt){if(Lt.type===0)qe.appendChild(Ke.createTextNode(Lt.value));else if(Lt.type===22){var Vt=Ke.createElement("img");Vt.src=Lt.value,Vt.style.opacity="1",qe.appendChild(Vt)}else if(Lt.type===18){if(Lt.name==="attr"){var Vn=Lt.values.filter(Zt);Vn.length&&qe.appendChild(Ke.createTextNode(K.getAttribute(Vn[0].value)||""))}else if(Lt.name==="counter"){var Dn=Lt.values.filter(Ne),$n=Dn[0],Ai=Dn[1];if($n&&Zt($n)){var mr=Be.counters.getCounterValue($n.value),$i=Ai&&Zt(Ai)?zH.parse(Be.context,Ai.value):3;qe.appendChild(Ke.createTextNode(VE(mr,$i,!1)))}}else if(Lt.name==="counters"){var Go=Lt.values.filter(Ne),Vo=($n=Go[0],Go[1]);if(Ai=Go[2],$n&&Zt($n)){var ho=Be.counters.getCounterValues($n.value),lr=Ai&&Zt(Ai)?zH.parse(Be.context,Ai.value):3,rs=Vo&&Vo.type===0?Vo.value:"",os=ho.map(function(ko){return VE(ko,lr,!1)}).join(rs);qe.appendChild(Ke.createTextNode(os))}}}else if(Lt.type===20)switch(Lt.value){case"open-quote":qe.appendChild(Ke.createTextNode(Aoe(vt.quotes,Be.quoteDepth++,!0)));break;case"close-quote":qe.appendChild(Ke.createTextNode(Aoe(vt.quotes,--Be.quoteDepth,!1)));break;default:qe.appendChild(Ke.createTextNode(Lt.value))}}),qe.className=o$+" "+zE;var Ot=be===RA.BEFORE?" "+o$:" "+zE;return BM(ne)?ne.className.baseValue+=Ot:ne.className+=Ot,qe}}},Fe.destroy=function(K){return!!K.parentNode&&(K.parentNode.removeChild(K),!0)},Fe}();(function(Fe){Fe[Fe.BEFORE=0]="BEFORE",Fe[Fe.AFTER=1]="AFTER"})(RA||(RA={}));var al,M2=function(K,ne){var ae=K.createElement("iframe");return ae.className="html2canvas-container",ae.style.visibility="hidden",ae.style.position="fixed",ae.style.left="-10000px",ae.style.top="0px",ae.style.border="0",ae.width=ne.width.toString(),ae.height=ne.height.toString(),ae.scrolling="no",ae.setAttribute(ew,"true"),K.body.appendChild(ae),ae},Hye=function(K){return new Promise(function(ne){K.complete?ne():K.src?(K.onload=ne,K.onerror=ne):ne()})},$ye=function(K){return Promise.all([].slice.call(K.images,0).map(Hye))},Xye=function(K){return new Promise(function(ne,ae){var be=K.contentWindow;if(!be)return ae("No window assigned for iframe");var Be=be.document;be.onload=K.onload=function(){be.onload=K.onload=null;var Xe=setInterval(function(){Be.body.childNodes.length>0&&Be.readyState==="complete"&&(clearInterval(Xe),ne(K))},50)}})},Gye=["all","d","content"],r$=function(K,ne){for(var ae=K.length-1;ae>=0;ae--){var be=K.item(ae);Gye.indexOf(be)===-1&&ne.style.setProperty(be,K.getPropertyValue(be))}return ne},Moe=function(K){var ne="";return K&&(ne+=""),ne},Poe=function(K,ne,ae){K&&K.defaultView&&(ne!==K.defaultView.pageXOffset||ae!==K.defaultView.pageYOffset)&&K.defaultView.scrollTo(ne,ae)},Yye=function(K){var ne=K[0],ae=K[1],be=K[2];ne.scrollLeft=ae,ne.scrollTop=be},o$="___html2canvas___pseudoelement_before",zE="___html2canvas___pseudoelement_after",tx=`{ content: "" !important; display: none !important; }`,MM=function(K){Zye(K,"."+o$+":before"+tx+` - .`+zE+":after"+tx)},Zye=function(K,ne){var ae=K.ownerDocument;if(ae){var be=ae.createElement("style");be.textContent=ne,K.appendChild(be)}},s$=function(){function Fe(){}return Fe.getOrigin=function(K){var ne=Fe._link;return ne?(ne.href=K,ne.href=ne.href,ne.protocol+ne.hostname+ne.port):"about:blank"},Fe.isSameOrigin=function(K){return Fe.getOrigin(K)===Fe._origin},Fe.setContext=function(K){Fe._link=K.document.createElement("a"),Fe._origin=Fe.getOrigin(K.location.href)},Fe._origin="about:blank",Fe}(),qye=function(){function Fe(K,ne){this.context=K,this._options=ne,this._cache={}}return Fe.prototype.addImage=function(K){var ne=Promise.resolve();return this.has(K)||(PM(K)||sk(K))&&(this._cache[K]=this.loadImage(K)).catch(function(){}),ne},Fe.prototype.match=function(K){return this._cache[K]},Fe.prototype.loadImage=function(K){return r(this,void 0,void 0,function(){var ne,ae,be,Be,Xe=this;return o(this,function(Ke){switch(Ke.label){case 0:return ne=s$.isSameOrigin(K),ae=!l$(K)&&this._options.useCORS===!0&&wu.SUPPORT_CORS_IMAGES&&!ne,be=!l$(K)&&!ne&&!PM(K)&&typeof this._options.proxy=="string"&&wu.SUPPORT_CORS_XHR&&!ae,ne||this._options.allowTaint!==!1||l$(K)||PM(K)||be||ae?(Be=K,be?[4,this.proxy(Be)]:[3,2]):[2];case 1:Be=Ke.sent(),Ke.label=2;case 2:return this.context.logger.debug("Added image "+K.substring(0,256)),[4,new Promise(function(vt,qe){var Ot=new Image;Ot.onload=function(){return vt(Ot)},Ot.onerror=qe,(Foe(Be)||ae)&&(Ot.crossOrigin="anonymous"),Ot.src=Be,Ot.complete===!0&&setTimeout(function(){return vt(Ot)},500),Xe._options.imageTimeout>0&&setTimeout(function(){return qe("Timed out ("+Xe._options.imageTimeout+"ms) loading image")},Xe._options.imageTimeout)})];case 3:return[2,Ke.sent()]}})})},Fe.prototype.has=function(K){return this._cache[K]!==void 0},Fe.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},Fe.prototype.proxy=function(K){var ne=this,ae=this._options.proxy;if(!ae)throw new Error("No proxy defined");var be=K.substring(0,256);return new Promise(function(Be,Xe){var Ke=wu.SUPPORT_RESPONSE_TYPE?"blob":"text",vt=new XMLHttpRequest;vt.onload=function(){if(vt.status===200)if(Ke==="text")Be(vt.response);else{var Lt=new FileReader;Lt.addEventListener("load",function(){return Be(Lt.result)},!1),Lt.addEventListener("error",function(Vt){return Xe(Vt)},!1),Lt.readAsDataURL(vt.response)}else Xe("Failed to proxy resource "+be+" with status code "+vt.status)},vt.onerror=Xe;var qe=ae.indexOf("?")>-1?"&":"?";if(vt.open("GET",""+ae+qe+"url="+encodeURIComponent(K)+"&responseType="+Ke),Ke!=="text"&&vt instanceof XMLHttpRequest&&(vt.responseType=Ke),ne._options.imageTimeout){var Ot=ne._options.imageTimeout;vt.timeout=Ot,vt.ontimeout=function(){return Xe("Timed out ("+Ot+"ms) proxying "+be)}}vt.send()})},Fe}(),Mp=/^data:image\/svg\+xml/i,a$=/^data:image\/.*;base64,/i,yC=/^data:image\/.*/i,sk=function(K){return wu.SUPPORT_SVG_DRAWING||!HE(K)},l$=function(K){return yC.test(K)},Foe=function(K){return a$.test(K)},PM=function(K){return K.substr(0,4)==="blob"},HE=function(K){return K.substr(-3).toLowerCase()==="svg"||Mp.test(K)},Mi=function(){function Fe(K,ne){this.type=0,this.x=K,this.y=ne}return Fe.prototype.add=function(K,ne){return new Fe(this.x+K,this.y+ne)},Fe}(),CC=function(K,ne,ae){return new Mi(K.x+(ne.x-K.x)*ae,K.y+(ne.y-K.y)*ae)},FM=function(){function Fe(K,ne,ae,be){this.type=1,this.start=K,this.startControl=ne,this.endControl=ae,this.end=be}return Fe.prototype.subdivide=function(K,ne){var ae=CC(this.start,this.startControl,K),be=CC(this.startControl,this.endControl,K),Be=CC(this.endControl,this.end,K),Xe=CC(ae,be,K),Ke=CC(be,Be,K),vt=CC(Xe,Ke,K);return ne?new Fe(this.start,ae,Xe,vt):new Fe(vt,Ke,Be,this.end)},Fe.prototype.add=function(K,ne){return new Fe(this.start.add(K,ne),this.startControl.add(K,ne),this.endControl.add(K,ne),this.end.add(K,ne))},Fe.prototype.reverse=function(){return new Fe(this.end,this.endControl,this.startControl,this.start)},Fe}(),Ig=function(K){return K.type===1},Kye=function(K){var ne=K.styles,ae=K.bounds,be=wn(ne.borderTopLeftRadius,ae.width,ae.height),Be=be[0],Xe=be[1],Ke=wn(ne.borderTopRightRadius,ae.width,ae.height),vt=Ke[0],qe=Ke[1],Ot=wn(ne.borderBottomRightRadius,ae.width,ae.height),Lt=Ot[0],Vt=Ot[1],Vn=wn(ne.borderBottomLeftRadius,ae.width,ae.height),Dn=Vn[0],$n=Vn[1],Ai=[];Ai.push((Be+vt)/ae.width),Ai.push((Dn+Lt)/ae.width),Ai.push((Xe+$n)/ae.height),Ai.push((qe+Vt)/ae.height);var mr=Math.max.apply(Math,Ai);mr>1&&(Be/=mr,Xe/=mr,vt/=mr,qe/=mr,Lt/=mr,Vt/=mr,Dn/=mr,$n/=mr);var $i=ae.width-vt,Go=ae.height-Vt,Vo=ae.width-Lt,uo=ae.height-$n,lr=ne.borderTopWidth,rs=ne.borderRightWidth,os=ne.borderBottomWidth,ko=ne.borderLeftWidth,Zd=Cn(ne.paddingTop,K.bounds.width),Mg=Cn(ne.paddingRight,K.bounds.width),Pg=Cn(ne.paddingBottom,K.bounds.width),yu=Cn(ne.paddingLeft,K.bounds.width);this.topLeftBorderDoubleOuterBox=Be>0||Xe>0?xc(ae.left+ko/3,ae.top+lr/3,Be-ko/3,Xe-lr/3,al.TOP_LEFT):new Mi(ae.left+ko/3,ae.top+lr/3),this.topRightBorderDoubleOuterBox=Be>0||Xe>0?xc(ae.left+$i,ae.top+lr/3,vt-rs/3,qe-lr/3,al.TOP_RIGHT):new Mi(ae.left+ae.width-rs/3,ae.top+lr/3),this.bottomRightBorderDoubleOuterBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-rs/3,Vt-os/3,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs/3,ae.top+ae.height-os/3),this.bottomLeftBorderDoubleOuterBox=Dn>0||$n>0?xc(ae.left+ko/3,ae.top+uo,Dn-ko/3,$n-os/3,al.BOTTOM_LEFT):new Mi(ae.left+ko/3,ae.top+ae.height-os/3),this.topLeftBorderDoubleInnerBox=Be>0||Xe>0?xc(ae.left+2*ko/3,ae.top+2*lr/3,Be-2*ko/3,Xe-2*lr/3,al.TOP_LEFT):new Mi(ae.left+2*ko/3,ae.top+2*lr/3),this.topRightBorderDoubleInnerBox=Be>0||Xe>0?xc(ae.left+$i,ae.top+2*lr/3,vt-2*rs/3,qe-2*lr/3,al.TOP_RIGHT):new Mi(ae.left+ae.width-2*rs/3,ae.top+2*lr/3),this.bottomRightBorderDoubleInnerBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-2*rs/3,Vt-2*os/3,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-2*rs/3,ae.top+ae.height-2*os/3),this.bottomLeftBorderDoubleInnerBox=Dn>0||$n>0?xc(ae.left+2*ko/3,ae.top+uo,Dn-2*ko/3,$n-2*os/3,al.BOTTOM_LEFT):new Mi(ae.left+2*ko/3,ae.top+ae.height-2*os/3),this.topLeftBorderStroke=Be>0||Xe>0?xc(ae.left+ko/2,ae.top+lr/2,Be-ko/2,Xe-lr/2,al.TOP_LEFT):new Mi(ae.left+ko/2,ae.top+lr/2),this.topRightBorderStroke=Be>0||Xe>0?xc(ae.left+$i,ae.top+lr/2,vt-rs/2,qe-lr/2,al.TOP_RIGHT):new Mi(ae.left+ae.width-rs/2,ae.top+lr/2),this.bottomRightBorderStroke=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-rs/2,Vt-os/2,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs/2,ae.top+ae.height-os/2),this.bottomLeftBorderStroke=Dn>0||$n>0?xc(ae.left+ko/2,ae.top+uo,Dn-ko/2,$n-os/2,al.BOTTOM_LEFT):new Mi(ae.left+ko/2,ae.top+ae.height-os/2),this.topLeftBorderBox=Be>0||Xe>0?xc(ae.left,ae.top,Be,Xe,al.TOP_LEFT):new Mi(ae.left,ae.top),this.topRightBorderBox=vt>0||qe>0?xc(ae.left+$i,ae.top,vt,qe,al.TOP_RIGHT):new Mi(ae.left+ae.width,ae.top),this.bottomRightBorderBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt,Vt,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width,ae.top+ae.height),this.bottomLeftBorderBox=Dn>0||$n>0?xc(ae.left,ae.top+uo,Dn,$n,al.BOTTOM_LEFT):new Mi(ae.left,ae.top+ae.height),this.topLeftPaddingBox=Be>0||Xe>0?xc(ae.left+ko,ae.top+lr,Math.max(0,Be-ko),Math.max(0,Xe-lr),al.TOP_LEFT):new Mi(ae.left+ko,ae.top+lr),this.topRightPaddingBox=vt>0||qe>0?xc(ae.left+Math.min($i,ae.width-rs),ae.top+lr,$i>ae.width+rs?0:Math.max(0,vt-rs),Math.max(0,qe-lr),al.TOP_RIGHT):new Mi(ae.left+ae.width-rs,ae.top+lr),this.bottomRightPaddingBox=Lt>0||Vt>0?xc(ae.left+Math.min(Vo,ae.width-ko),ae.top+Math.min(Go,ae.height-os),Math.max(0,Lt-rs),Math.max(0,Vt-os),al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs,ae.top+ae.height-os),this.bottomLeftPaddingBox=Dn>0||$n>0?xc(ae.left+ko,ae.top+Math.min(uo,ae.height-os),Math.max(0,Dn-ko),Math.max(0,$n-os),al.BOTTOM_LEFT):new Mi(ae.left+ko,ae.top+ae.height-os),this.topLeftContentBox=Be>0||Xe>0?xc(ae.left+ko+yu,ae.top+lr+Zd,Math.max(0,Be-(ko+yu)),Math.max(0,Xe-(lr+Zd)),al.TOP_LEFT):new Mi(ae.left+ko+yu,ae.top+lr+Zd),this.topRightContentBox=vt>0||qe>0?xc(ae.left+Math.min($i,ae.width+ko+yu),ae.top+lr+Zd,$i>ae.width+ko+yu?0:vt-ko+yu,qe-(lr+Zd),al.TOP_RIGHT):new Mi(ae.left+ae.width-(rs+Mg),ae.top+lr+Zd),this.bottomRightContentBox=Lt>0||Vt>0?xc(ae.left+Math.min(Vo,ae.width-(ko+yu)),ae.top+Math.min(Go,ae.height+lr+Zd),Math.max(0,Lt-(rs+Mg)),Vt-(os+Pg),al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-(rs+Mg),ae.top+ae.height-(os+Pg)),this.bottomLeftContentBox=Dn>0||$n>0?xc(ae.left+ko+yu,ae.top+uo,Math.max(0,Dn-(ko+yu)),$n-(os+Pg),al.BOTTOM_LEFT):new Mi(ae.left+ko+yu,ae.top+ae.height-(os+Pg))};(function(Fe){Fe[Fe.TOP_LEFT=0]="TOP_LEFT",Fe[Fe.TOP_RIGHT=1]="TOP_RIGHT",Fe[Fe.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",Fe[Fe.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(al||(al={}));var xc=function(K,ne,ae,be,Be){var Xe=(Math.sqrt(2)-1)/3*4,Ke=ae*Xe,vt=be*Xe,qe=K+ae,Ot=ne+be;switch(Be){case al.TOP_LEFT:return new FM(new Mi(K,Ot),new Mi(K,Ot-vt),new Mi(qe-Ke,ne),new Mi(qe,ne));case al.TOP_RIGHT:return new FM(new Mi(K,ne),new Mi(K+Ke,ne),new Mi(qe,Ot-vt),new Mi(qe,Ot));case al.BOTTOM_RIGHT:return new FM(new Mi(qe,ne),new Mi(qe,ne+vt),new Mi(K+Ke,Ot),new Mi(K,Ot));case al.BOTTOM_LEFT:default:return new FM(new Mi(qe,Ot),new Mi(qe-Ke,Ot),new Mi(K,ne+vt),new Mi(K,ne))}},Ou=function(K){return[K.topLeftBorderBox,K.topRightBorderBox,K.bottomRightBorderBox,K.bottomLeftBorderBox]},nx=function(K){return[K.topLeftPaddingBox,K.topRightPaddingBox,K.bottomRightPaddingBox,K.bottomLeftPaddingBox]},Noe=function(K,ne,ae){this.offsetX=K,this.offsetY=ne,this.matrix=ae,this.type=0,this.target=6},M1=function(K,ne){this.path=K,this.target=ne,this.type=1},c$=function(K){this.opacity=K,this.type=2,this.target=6},$E=function(K){return K.type===1},tw=function(K,ne){return K.length===ne.length&&K.some(function(ae,be){return ae===ne[be]})},d$=function(K){this.element=K,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Vf=function(){function Fe(K,ne){if(this.container=K,this.parent=ne,this.effects=[],this.curves=new Kye(this.container),this.container.styles.opacity<1&&this.effects.push(new c$(this.container.styles.opacity)),this.container.styles.transform!==null){var ae=this.container.bounds.left+this.container.styles.transformOrigin[0].number,be=this.container.bounds.top+this.container.styles.transformOrigin[1].number,Be=this.container.styles.transform;this.effects.push(new Noe(ae,be,Be))}if(this.container.styles.overflowX!==0){var Xe=Ou(this.curves),Ke=nx(this.curves);tw(Xe,Ke)?this.effects.push(new M1(Xe,6)):(this.effects.push(new M1(Xe,2)),this.effects.push(new M1(Ke,4)))}}return Fe.prototype.getEffects=function(K){for(var ne=[2,3].indexOf(this.container.styles.position)===-1,ae=this.parent,be=this.effects.slice(0);ae;){var Be=ae.effects.filter(function(vt){return!$E(vt)});if(ne||ae.container.styles.position!==0||!ae.parent){if(be.unshift.apply(be,Be),ne=[2,3].indexOf(ae.container.styles.position)===-1,ae.container.styles.overflowX!==0){var Xe=Ou(ae.curves),Ke=nx(ae.curves);tw(Xe,Ke)||be.unshift(new M1(Ke,6))}}else be.unshift.apply(be,Be);ae=ae.parent}return be.filter(function(vt){return Xu(vt.target,K)})},Fe}(),u$=function Fe(K,ne,ae,be){K.container.elements.forEach(function(Be){var Xe=Xu(Be.flags,4),Ke=Xu(Be.flags,2),vt=new Vf(Be,K);Xu(Be.styles.display,2048)&&be.push(vt);var qe=Xu(Be.flags,8)?[]:be;if(Xe||Ke){var Ot=Xe||Be.styles.isPositioned()?ae:ne,Lt=new d$(vt);if(Be.styles.isPositioned()||Be.styles.opacity<1||Be.styles.isTransformed()){var Vt=Be.styles.zIndex.order;if(Vt<0){var Vn=0;Ot.negativeZIndex.some(function($n,Ai){return Vt>$n.element.container.styles.zIndex.order?(Vn=Ai,!1):Vn>0}),Ot.negativeZIndex.splice(Vn,0,Lt)}else if(Vt>0){var Dn=0;Ot.positiveZIndex.some(function($n,Ai){return Vt>=$n.element.container.styles.zIndex.order?(Dn=Ai+1,!1):Dn>0}),Ot.positiveZIndex.splice(Dn,0,Lt)}else Ot.zeroOrAutoZIndexOrTransformedOrOpacity.push(Lt)}else Be.styles.isFloating()?Ot.nonPositionedFloats.push(Lt):Ot.nonPositionedInlineLevel.push(Lt);Fe(vt,Lt,Xe?Lt:ae,qe)}else Be.styles.isInlineLevel()?ne.inlineLevel.push(vt):ne.nonInlineLevel.push(vt),Fe(vt,ne,ae,qe);Xu(Be.flags,8)&&Uoe(Be,qe)})},Uoe=function(K,ne){for(var ae=K instanceof JH?K.start:1,be=K instanceof JH&&K.reversed,Be=0;Be0&&ne.intrinsicHeight>0){var Be=nw(ne),Xe=nx(ae);this.path(Xe),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(be,0,0,ne.intrinsicWidth,ne.intrinsicHeight,Be.left,Be.top,Be.width,Be.height),this.ctx.restore()}},K.prototype.renderNodeContent=function(ne){return r(this,void 0,void 0,function(){var ae,be,Be,Xe,Ke,vt,qe,Ot,Lt,Vt,Vn,Dn,$n,Ai,mr,$i,Go,Vo;return o(this,function(uo){switch(uo.label){case 0:this.applyEffects(ne.getEffects(4)),ae=ne.container,be=ne.curves,Be=ae.styles,Xe=0,Ke=ae.textNodes,uo.label=1;case 1:return Xe0&&uf>0&&(ko=Be.ctx.createPattern(lr,"repeat"),Be.renderRepeat(Mg,ko,ak,Zu))):function(ll){return ll.type===2}(Lt)&&(Zd=UM(ne,ae,[null,null,null]),Mg=Zd[0],Pg=Zd[1],yu=Zd[2],df=Zd[3],uf=Zd[4],Fg=Lt.position.length===0?[ut]:Lt.position,ak=Cn(Fg[0],df),Zu=Cn(Fg[Fg.length-1],uf),iw=function(ll,rc,Ts,_d,P1){var F2=0,F1=0;switch(ll.size){case 0:ll.shape===0?F2=F1=Math.min(Math.abs(rc),Math.abs(rc-_d),Math.abs(Ts),Math.abs(Ts-P1)):ll.shape===1&&(F2=Math.min(Math.abs(rc),Math.abs(rc-_d)),F1=Math.min(Math.abs(Ts),Math.abs(Ts-P1)));break;case 2:if(ll.shape===0)F2=F1=Math.min(Wf(rc,Ts),Wf(rc,Ts-P1),Wf(rc-_d,Ts),Wf(rc-_d,Ts-P1));else if(ll.shape===1){var PA=Math.min(Math.abs(Ts),Math.abs(Ts-P1))/Math.min(Math.abs(rc),Math.abs(rc-_d)),g$=X3(_d,P1,rc,Ts,!0),zM=g$[0],m$=g$[1];F1=PA*(F2=Wf(zM-rc,(m$-Ts)/PA))}break;case 1:ll.shape===0?F2=F1=Math.max(Math.abs(rc),Math.abs(rc-_d),Math.abs(Ts),Math.abs(Ts-P1)):ll.shape===1&&(F2=Math.max(Math.abs(rc),Math.abs(rc-_d)),F1=Math.max(Math.abs(Ts),Math.abs(Ts-P1)));break;case 3:if(ll.shape===0)F2=F1=Math.max(Wf(rc,Ts),Wf(rc,Ts-P1),Wf(rc-_d,Ts),Wf(rc-_d,Ts-P1));else if(ll.shape===1){PA=Math.max(Math.abs(Ts),Math.abs(Ts-P1))/Math.max(Math.abs(rc),Math.abs(rc-_d));var k$=X3(_d,P1,rc,Ts,!1);zM=k$[0],m$=k$[1],F1=PA*(F2=Wf(zM-rc,(m$-Ts)/PA))}}return Array.isArray(ll.size)&&(F2=Cn(ll.size[0],_d),F1=ll.size.length===2?Cn(ll.size[1],P1):F2),[F2,F1]}(Lt,ak,Zu,df,uf),P2=iw[0],MA=iw[1],P2>0&&MA>0&&(_C=Be.ctx.createRadialGradient(Pg+ak,yu+Zu,0,Pg+ak,yu+Zu,P2),kC(Lt.stops,2*P2).forEach(function(ll){return _C.addColorStop(ll.stop,Gd(ll.color))}),Be.path(Mg),Be.ctx.fillStyle=_C,P2!==MA?(SC=ne.bounds.left+.5*ne.bounds.width,Pp=ne.bounds.top+.5*ne.bounds.height,LC=1/(Fp=MA/P2),Be.ctx.save(),Be.ctx.translate(SC,Pp),Be.ctx.transform(1,0,0,Fp,0,0),Be.ctx.translate(-SC,-Pp),Be.ctx.fillRect(Pg,LC*(yu-Pp)+Pp,df,uf*LC),Be.ctx.restore()):Be.ctx.fill())),Dm.label=6;case 6:return ae--,[2]}})},Be=this,Xe=0,Ke=ne.styles.backgroundImage.slice(0).reverse(),qe.label=1;case 1:return Xe0?Ot.style!==2?[3,5]:[4,this.renderDashedDottedBorder(Ot.color,Ot.width,Ke,ne.curves,2)]:[3,11]:[3,13];case 4:return Vt.sent(),[3,11];case 5:return Ot.style!==3?[3,7]:[4,this.renderDashedDottedBorder(Ot.color,Ot.width,Ke,ne.curves,3)];case 6:return Vt.sent(),[3,11];case 7:return Ot.style!==4?[3,9]:[4,this.renderDoubleBorder(Ot.color,Ot.width,Ke,ne.curves)];case 8:return Vt.sent(),[3,11];case 9:return[4,this.renderSolidBorder(Ot.color,Ke,ne.curves)];case 10:Vt.sent(),Vt.label=11;case 11:Ke++,Vt.label=12;case 12:return vt++,[3,3];case 13:return[2]}})})},K.prototype.renderDashedDottedBorder=function(ne,ae,be,Be,Xe){return r(this,void 0,void 0,function(){var Ke,vt,qe,Ot,Lt,Vt,Vn,Dn,$n,Ai,mr,$i,Go,Vo,uo,lr;return o(this,function(rs){return this.ctx.save(),Ke=function(os,ko){switch(ko){case 0:return NM(os.topLeftBorderStroke,os.topRightBorderStroke);case 1:return NM(os.topRightBorderStroke,os.bottomRightBorderStroke);case 2:return NM(os.bottomRightBorderStroke,os.bottomLeftBorderStroke);default:return NM(os.bottomLeftBorderStroke,os.topLeftBorderStroke)}}(Be,be),vt=joe(Be,be),Xe===2&&(this.path(vt),this.ctx.clip()),Ig(vt[0])?(qe=vt[0].start.x,Ot=vt[0].start.y):(qe=vt[0].x,Ot=vt[0].y),Ig(vt[1])?(Lt=vt[1].end.x,Vt=vt[1].end.y):(Lt=vt[1].x,Vt=vt[1].y),Vn=Math.abs(be===0||be===2?qe-Lt:Ot-Vt),this.ctx.beginPath(),Xe===3?this.formatPath(Ke):this.formatPath(vt.slice(0,2)),Dn=ae<3?3*ae:2*ae,$n=ae<3?2*ae:ae,Xe===3&&(Dn=ae,$n=ae),Ai=!0,Vn<=2*Dn?Ai=!1:Vn<=2*Dn+$n?(Dn*=mr=Vn/(2*Dn+$n),$n*=mr):($i=Math.floor((Vn+$n)/(Dn+$n)),Go=(Vn-$i*Dn)/($i-1),$n=(Vo=(Vn-($i+1)*Dn)/$i)<=0||Math.abs($n-Go)1&&arguments[1]!==void 0?arguments[1]:{};if(t.format!=="svg"){var n=t.width,r=n===void 0?e.width.baseVal.value:n,o=t.height,s=o===void 0?e.height.baseVal.value:o,a=t.scale,l=a===void 0?5:a,d=t.quality,u=d===void 0?1:d,h=t.backgroundColor,g=h===void 0?"white":h,m=t.filename,v=m===void 0?"formula":m,f=t.format,k=f===void 0?"png":f,A=t.mimeType,p=A===void 0?"image/png":A,b=e2e(e),w=document.createElement("canvas"),O=w.getContext("2d"),y=new Image;y.src="data:image/svg+xml;base64,".concat(btoa(unescape(encodeURIComponent(b)))),y.onload=function(){w.width=r*l,w.height=s*l,O.fillStyle=g,O.fillRect(0,0,w.width,w.height),O.drawImage(y,0,0,w.width,w.height),w.toBlob(function(_){var S,L=PN.createObjectURL(_);SYt(L,rt(S="".concat(v,".")).call(S,k)),PN.revokeObjectURL(L)},p,u)}}else{var C;(function(_,S){var L=e2e(_),E=new Blob([L],{type:"image/svg+xml;charset=utf-8"}),T=PN.createObjectURL(E);SYt(T,S),PN.revokeObjectURL(T)})(e,(C=t.filename)!==null&&C!==void 0?C:"formula.svg")}}function e2e(e){return new XMLSerializer().serializeToString(e)}function tKo(e,t){var n=XI!==void 0&&GI(e)||e["@@iterator"];if(!n){if(Tf(e)||(n=function(d,u){if(d){var h;if(typeof d=="string")return LYt(d,u);var g=ka(h={}.toString.call(d)).call(h,8,-1);return g==="Object"&&d.constructor&&(g=d.constructor.name),g==="Map"||g==="Set"?Wl(d):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?LYt(d,u):void 0}}(e))||t){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(u){throw u},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. + .`+zE+":after"+tx)},Zye=function(K,ne){var ae=K.ownerDocument;if(ae){var be=ae.createElement("style");be.textContent=ne,K.appendChild(be)}},s$=function(){function Fe(){}return Fe.getOrigin=function(K){var ne=Fe._link;return ne?(ne.href=K,ne.href=ne.href,ne.protocol+ne.hostname+ne.port):"about:blank"},Fe.isSameOrigin=function(K){return Fe.getOrigin(K)===Fe._origin},Fe.setContext=function(K){Fe._link=K.document.createElement("a"),Fe._origin=Fe.getOrigin(K.location.href)},Fe._origin="about:blank",Fe}(),qye=function(){function Fe(K,ne){this.context=K,this._options=ne,this._cache={}}return Fe.prototype.addImage=function(K){var ne=Promise.resolve();return this.has(K)||(PM(K)||sk(K))&&(this._cache[K]=this.loadImage(K)).catch(function(){}),ne},Fe.prototype.match=function(K){return this._cache[K]},Fe.prototype.loadImage=function(K){return r(this,void 0,void 0,function(){var ne,ae,be,Be,Xe=this;return o(this,function(Ke){switch(Ke.label){case 0:return ne=s$.isSameOrigin(K),ae=!l$(K)&&this._options.useCORS===!0&&wu.SUPPORT_CORS_IMAGES&&!ne,be=!l$(K)&&!ne&&!PM(K)&&typeof this._options.proxy=="string"&&wu.SUPPORT_CORS_XHR&&!ae,ne||this._options.allowTaint!==!1||l$(K)||PM(K)||be||ae?(Be=K,be?[4,this.proxy(Be)]:[3,2]):[2];case 1:Be=Ke.sent(),Ke.label=2;case 2:return this.context.logger.debug("Added image "+K.substring(0,256)),[4,new Promise(function(vt,qe){var Ot=new Image;Ot.onload=function(){return vt(Ot)},Ot.onerror=qe,(Foe(Be)||ae)&&(Ot.crossOrigin="anonymous"),Ot.src=Be,Ot.complete===!0&&setTimeout(function(){return vt(Ot)},500),Xe._options.imageTimeout>0&&setTimeout(function(){return qe("Timed out ("+Xe._options.imageTimeout+"ms) loading image")},Xe._options.imageTimeout)})];case 3:return[2,Ke.sent()]}})})},Fe.prototype.has=function(K){return this._cache[K]!==void 0},Fe.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},Fe.prototype.proxy=function(K){var ne=this,ae=this._options.proxy;if(!ae)throw new Error("No proxy defined");var be=K.substring(0,256);return new Promise(function(Be,Xe){var Ke=wu.SUPPORT_RESPONSE_TYPE?"blob":"text",vt=new XMLHttpRequest;vt.onload=function(){if(vt.status===200)if(Ke==="text")Be(vt.response);else{var Lt=new FileReader;Lt.addEventListener("load",function(){return Be(Lt.result)},!1),Lt.addEventListener("error",function(Vt){return Xe(Vt)},!1),Lt.readAsDataURL(vt.response)}else Xe("Failed to proxy resource "+be+" with status code "+vt.status)},vt.onerror=Xe;var qe=ae.indexOf("?")>-1?"&":"?";if(vt.open("GET",""+ae+qe+"url="+encodeURIComponent(K)+"&responseType="+Ke),Ke!=="text"&&vt instanceof XMLHttpRequest&&(vt.responseType=Ke),ne._options.imageTimeout){var Ot=ne._options.imageTimeout;vt.timeout=Ot,vt.ontimeout=function(){return Xe("Timed out ("+Ot+"ms) proxying "+be)}}vt.send()})},Fe}(),Mp=/^data:image\/svg\+xml/i,a$=/^data:image\/.*;base64,/i,yC=/^data:image\/.*/i,sk=function(K){return wu.SUPPORT_SVG_DRAWING||!HE(K)},l$=function(K){return yC.test(K)},Foe=function(K){return a$.test(K)},PM=function(K){return K.substr(0,4)==="blob"},HE=function(K){return K.substr(-3).toLowerCase()==="svg"||Mp.test(K)},Mi=function(){function Fe(K,ne){this.type=0,this.x=K,this.y=ne}return Fe.prototype.add=function(K,ne){return new Fe(this.x+K,this.y+ne)},Fe}(),CC=function(K,ne,ae){return new Mi(K.x+(ne.x-K.x)*ae,K.y+(ne.y-K.y)*ae)},FM=function(){function Fe(K,ne,ae,be){this.type=1,this.start=K,this.startControl=ne,this.endControl=ae,this.end=be}return Fe.prototype.subdivide=function(K,ne){var ae=CC(this.start,this.startControl,K),be=CC(this.startControl,this.endControl,K),Be=CC(this.endControl,this.end,K),Xe=CC(ae,be,K),Ke=CC(be,Be,K),vt=CC(Xe,Ke,K);return ne?new Fe(this.start,ae,Xe,vt):new Fe(vt,Ke,Be,this.end)},Fe.prototype.add=function(K,ne){return new Fe(this.start.add(K,ne),this.startControl.add(K,ne),this.endControl.add(K,ne),this.end.add(K,ne))},Fe.prototype.reverse=function(){return new Fe(this.end,this.endControl,this.startControl,this.start)},Fe}(),Ig=function(K){return K.type===1},Kye=function(K){var ne=K.styles,ae=K.bounds,be=wn(ne.borderTopLeftRadius,ae.width,ae.height),Be=be[0],Xe=be[1],Ke=wn(ne.borderTopRightRadius,ae.width,ae.height),vt=Ke[0],qe=Ke[1],Ot=wn(ne.borderBottomRightRadius,ae.width,ae.height),Lt=Ot[0],Vt=Ot[1],Vn=wn(ne.borderBottomLeftRadius,ae.width,ae.height),Dn=Vn[0],$n=Vn[1],Ai=[];Ai.push((Be+vt)/ae.width),Ai.push((Dn+Lt)/ae.width),Ai.push((Xe+$n)/ae.height),Ai.push((qe+Vt)/ae.height);var mr=Math.max.apply(Math,Ai);mr>1&&(Be/=mr,Xe/=mr,vt/=mr,qe/=mr,Lt/=mr,Vt/=mr,Dn/=mr,$n/=mr);var $i=ae.width-vt,Go=ae.height-Vt,Vo=ae.width-Lt,ho=ae.height-$n,lr=ne.borderTopWidth,rs=ne.borderRightWidth,os=ne.borderBottomWidth,ko=ne.borderLeftWidth,Zd=Cn(ne.paddingTop,K.bounds.width),Mg=Cn(ne.paddingRight,K.bounds.width),Pg=Cn(ne.paddingBottom,K.bounds.width),yu=Cn(ne.paddingLeft,K.bounds.width);this.topLeftBorderDoubleOuterBox=Be>0||Xe>0?xc(ae.left+ko/3,ae.top+lr/3,Be-ko/3,Xe-lr/3,al.TOP_LEFT):new Mi(ae.left+ko/3,ae.top+lr/3),this.topRightBorderDoubleOuterBox=Be>0||Xe>0?xc(ae.left+$i,ae.top+lr/3,vt-rs/3,qe-lr/3,al.TOP_RIGHT):new Mi(ae.left+ae.width-rs/3,ae.top+lr/3),this.bottomRightBorderDoubleOuterBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-rs/3,Vt-os/3,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs/3,ae.top+ae.height-os/3),this.bottomLeftBorderDoubleOuterBox=Dn>0||$n>0?xc(ae.left+ko/3,ae.top+ho,Dn-ko/3,$n-os/3,al.BOTTOM_LEFT):new Mi(ae.left+ko/3,ae.top+ae.height-os/3),this.topLeftBorderDoubleInnerBox=Be>0||Xe>0?xc(ae.left+2*ko/3,ae.top+2*lr/3,Be-2*ko/3,Xe-2*lr/3,al.TOP_LEFT):new Mi(ae.left+2*ko/3,ae.top+2*lr/3),this.topRightBorderDoubleInnerBox=Be>0||Xe>0?xc(ae.left+$i,ae.top+2*lr/3,vt-2*rs/3,qe-2*lr/3,al.TOP_RIGHT):new Mi(ae.left+ae.width-2*rs/3,ae.top+2*lr/3),this.bottomRightBorderDoubleInnerBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-2*rs/3,Vt-2*os/3,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-2*rs/3,ae.top+ae.height-2*os/3),this.bottomLeftBorderDoubleInnerBox=Dn>0||$n>0?xc(ae.left+2*ko/3,ae.top+ho,Dn-2*ko/3,$n-2*os/3,al.BOTTOM_LEFT):new Mi(ae.left+2*ko/3,ae.top+ae.height-2*os/3),this.topLeftBorderStroke=Be>0||Xe>0?xc(ae.left+ko/2,ae.top+lr/2,Be-ko/2,Xe-lr/2,al.TOP_LEFT):new Mi(ae.left+ko/2,ae.top+lr/2),this.topRightBorderStroke=Be>0||Xe>0?xc(ae.left+$i,ae.top+lr/2,vt-rs/2,qe-lr/2,al.TOP_RIGHT):new Mi(ae.left+ae.width-rs/2,ae.top+lr/2),this.bottomRightBorderStroke=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt-rs/2,Vt-os/2,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs/2,ae.top+ae.height-os/2),this.bottomLeftBorderStroke=Dn>0||$n>0?xc(ae.left+ko/2,ae.top+ho,Dn-ko/2,$n-os/2,al.BOTTOM_LEFT):new Mi(ae.left+ko/2,ae.top+ae.height-os/2),this.topLeftBorderBox=Be>0||Xe>0?xc(ae.left,ae.top,Be,Xe,al.TOP_LEFT):new Mi(ae.left,ae.top),this.topRightBorderBox=vt>0||qe>0?xc(ae.left+$i,ae.top,vt,qe,al.TOP_RIGHT):new Mi(ae.left+ae.width,ae.top),this.bottomRightBorderBox=Lt>0||Vt>0?xc(ae.left+Vo,ae.top+Go,Lt,Vt,al.BOTTOM_RIGHT):new Mi(ae.left+ae.width,ae.top+ae.height),this.bottomLeftBorderBox=Dn>0||$n>0?xc(ae.left,ae.top+ho,Dn,$n,al.BOTTOM_LEFT):new Mi(ae.left,ae.top+ae.height),this.topLeftPaddingBox=Be>0||Xe>0?xc(ae.left+ko,ae.top+lr,Math.max(0,Be-ko),Math.max(0,Xe-lr),al.TOP_LEFT):new Mi(ae.left+ko,ae.top+lr),this.topRightPaddingBox=vt>0||qe>0?xc(ae.left+Math.min($i,ae.width-rs),ae.top+lr,$i>ae.width+rs?0:Math.max(0,vt-rs),Math.max(0,qe-lr),al.TOP_RIGHT):new Mi(ae.left+ae.width-rs,ae.top+lr),this.bottomRightPaddingBox=Lt>0||Vt>0?xc(ae.left+Math.min(Vo,ae.width-ko),ae.top+Math.min(Go,ae.height-os),Math.max(0,Lt-rs),Math.max(0,Vt-os),al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-rs,ae.top+ae.height-os),this.bottomLeftPaddingBox=Dn>0||$n>0?xc(ae.left+ko,ae.top+Math.min(ho,ae.height-os),Math.max(0,Dn-ko),Math.max(0,$n-os),al.BOTTOM_LEFT):new Mi(ae.left+ko,ae.top+ae.height-os),this.topLeftContentBox=Be>0||Xe>0?xc(ae.left+ko+yu,ae.top+lr+Zd,Math.max(0,Be-(ko+yu)),Math.max(0,Xe-(lr+Zd)),al.TOP_LEFT):new Mi(ae.left+ko+yu,ae.top+lr+Zd),this.topRightContentBox=vt>0||qe>0?xc(ae.left+Math.min($i,ae.width+ko+yu),ae.top+lr+Zd,$i>ae.width+ko+yu?0:vt-ko+yu,qe-(lr+Zd),al.TOP_RIGHT):new Mi(ae.left+ae.width-(rs+Mg),ae.top+lr+Zd),this.bottomRightContentBox=Lt>0||Vt>0?xc(ae.left+Math.min(Vo,ae.width-(ko+yu)),ae.top+Math.min(Go,ae.height+lr+Zd),Math.max(0,Lt-(rs+Mg)),Vt-(os+Pg),al.BOTTOM_RIGHT):new Mi(ae.left+ae.width-(rs+Mg),ae.top+ae.height-(os+Pg)),this.bottomLeftContentBox=Dn>0||$n>0?xc(ae.left+ko+yu,ae.top+ho,Math.max(0,Dn-(ko+yu)),$n-(os+Pg),al.BOTTOM_LEFT):new Mi(ae.left+ko+yu,ae.top+ae.height-(os+Pg))};(function(Fe){Fe[Fe.TOP_LEFT=0]="TOP_LEFT",Fe[Fe.TOP_RIGHT=1]="TOP_RIGHT",Fe[Fe.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",Fe[Fe.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(al||(al={}));var xc=function(K,ne,ae,be,Be){var Xe=(Math.sqrt(2)-1)/3*4,Ke=ae*Xe,vt=be*Xe,qe=K+ae,Ot=ne+be;switch(Be){case al.TOP_LEFT:return new FM(new Mi(K,Ot),new Mi(K,Ot-vt),new Mi(qe-Ke,ne),new Mi(qe,ne));case al.TOP_RIGHT:return new FM(new Mi(K,ne),new Mi(K+Ke,ne),new Mi(qe,Ot-vt),new Mi(qe,Ot));case al.BOTTOM_RIGHT:return new FM(new Mi(qe,ne),new Mi(qe,ne+vt),new Mi(K+Ke,Ot),new Mi(K,Ot));case al.BOTTOM_LEFT:default:return new FM(new Mi(qe,Ot),new Mi(qe-Ke,Ot),new Mi(K,ne+vt),new Mi(K,ne))}},Ou=function(K){return[K.topLeftBorderBox,K.topRightBorderBox,K.bottomRightBorderBox,K.bottomLeftBorderBox]},nx=function(K){return[K.topLeftPaddingBox,K.topRightPaddingBox,K.bottomRightPaddingBox,K.bottomLeftPaddingBox]},Noe=function(K,ne,ae){this.offsetX=K,this.offsetY=ne,this.matrix=ae,this.type=0,this.target=6},M1=function(K,ne){this.path=K,this.target=ne,this.type=1},c$=function(K){this.opacity=K,this.type=2,this.target=6},$E=function(K){return K.type===1},tw=function(K,ne){return K.length===ne.length&&K.some(function(ae,be){return ae===ne[be]})},d$=function(K){this.element=K,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Vf=function(){function Fe(K,ne){if(this.container=K,this.parent=ne,this.effects=[],this.curves=new Kye(this.container),this.container.styles.opacity<1&&this.effects.push(new c$(this.container.styles.opacity)),this.container.styles.transform!==null){var ae=this.container.bounds.left+this.container.styles.transformOrigin[0].number,be=this.container.bounds.top+this.container.styles.transformOrigin[1].number,Be=this.container.styles.transform;this.effects.push(new Noe(ae,be,Be))}if(this.container.styles.overflowX!==0){var Xe=Ou(this.curves),Ke=nx(this.curves);tw(Xe,Ke)?this.effects.push(new M1(Xe,6)):(this.effects.push(new M1(Xe,2)),this.effects.push(new M1(Ke,4)))}}return Fe.prototype.getEffects=function(K){for(var ne=[2,3].indexOf(this.container.styles.position)===-1,ae=this.parent,be=this.effects.slice(0);ae;){var Be=ae.effects.filter(function(vt){return!$E(vt)});if(ne||ae.container.styles.position!==0||!ae.parent){if(be.unshift.apply(be,Be),ne=[2,3].indexOf(ae.container.styles.position)===-1,ae.container.styles.overflowX!==0){var Xe=Ou(ae.curves),Ke=nx(ae.curves);tw(Xe,Ke)||be.unshift(new M1(Ke,6))}}else be.unshift.apply(be,Be);ae=ae.parent}return be.filter(function(vt){return Xu(vt.target,K)})},Fe}(),u$=function Fe(K,ne,ae,be){K.container.elements.forEach(function(Be){var Xe=Xu(Be.flags,4),Ke=Xu(Be.flags,2),vt=new Vf(Be,K);Xu(Be.styles.display,2048)&&be.push(vt);var qe=Xu(Be.flags,8)?[]:be;if(Xe||Ke){var Ot=Xe||Be.styles.isPositioned()?ae:ne,Lt=new d$(vt);if(Be.styles.isPositioned()||Be.styles.opacity<1||Be.styles.isTransformed()){var Vt=Be.styles.zIndex.order;if(Vt<0){var Vn=0;Ot.negativeZIndex.some(function($n,Ai){return Vt>$n.element.container.styles.zIndex.order?(Vn=Ai,!1):Vn>0}),Ot.negativeZIndex.splice(Vn,0,Lt)}else if(Vt>0){var Dn=0;Ot.positiveZIndex.some(function($n,Ai){return Vt>=$n.element.container.styles.zIndex.order?(Dn=Ai+1,!1):Dn>0}),Ot.positiveZIndex.splice(Dn,0,Lt)}else Ot.zeroOrAutoZIndexOrTransformedOrOpacity.push(Lt)}else Be.styles.isFloating()?Ot.nonPositionedFloats.push(Lt):Ot.nonPositionedInlineLevel.push(Lt);Fe(vt,Lt,Xe?Lt:ae,qe)}else Be.styles.isInlineLevel()?ne.inlineLevel.push(vt):ne.nonInlineLevel.push(vt),Fe(vt,ne,ae,qe);Xu(Be.flags,8)&&Uoe(Be,qe)})},Uoe=function(K,ne){for(var ae=K instanceof JH?K.start:1,be=K instanceof JH&&K.reversed,Be=0;Be0&&ne.intrinsicHeight>0){var Be=nw(ne),Xe=nx(ae);this.path(Xe),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(be,0,0,ne.intrinsicWidth,ne.intrinsicHeight,Be.left,Be.top,Be.width,Be.height),this.ctx.restore()}},K.prototype.renderNodeContent=function(ne){return r(this,void 0,void 0,function(){var ae,be,Be,Xe,Ke,vt,qe,Ot,Lt,Vt,Vn,Dn,$n,Ai,mr,$i,Go,Vo;return o(this,function(ho){switch(ho.label){case 0:this.applyEffects(ne.getEffects(4)),ae=ne.container,be=ne.curves,Be=ae.styles,Xe=0,Ke=ae.textNodes,ho.label=1;case 1:return Xe0&&uf>0&&(ko=Be.ctx.createPattern(lr,"repeat"),Be.renderRepeat(Mg,ko,ak,Zu))):function(ll){return ll.type===2}(Lt)&&(Zd=UM(ne,ae,[null,null,null]),Mg=Zd[0],Pg=Zd[1],yu=Zd[2],df=Zd[3],uf=Zd[4],Fg=Lt.position.length===0?[ut]:Lt.position,ak=Cn(Fg[0],df),Zu=Cn(Fg[Fg.length-1],uf),iw=function(ll,rc,Ts,_d,P1){var F2=0,F1=0;switch(ll.size){case 0:ll.shape===0?F2=F1=Math.min(Math.abs(rc),Math.abs(rc-_d),Math.abs(Ts),Math.abs(Ts-P1)):ll.shape===1&&(F2=Math.min(Math.abs(rc),Math.abs(rc-_d)),F1=Math.min(Math.abs(Ts),Math.abs(Ts-P1)));break;case 2:if(ll.shape===0)F2=F1=Math.min(Wf(rc,Ts),Wf(rc,Ts-P1),Wf(rc-_d,Ts),Wf(rc-_d,Ts-P1));else if(ll.shape===1){var PA=Math.min(Math.abs(Ts),Math.abs(Ts-P1))/Math.min(Math.abs(rc),Math.abs(rc-_d)),g$=X3(_d,P1,rc,Ts,!0),zM=g$[0],m$=g$[1];F1=PA*(F2=Wf(zM-rc,(m$-Ts)/PA))}break;case 1:ll.shape===0?F2=F1=Math.max(Math.abs(rc),Math.abs(rc-_d),Math.abs(Ts),Math.abs(Ts-P1)):ll.shape===1&&(F2=Math.max(Math.abs(rc),Math.abs(rc-_d)),F1=Math.max(Math.abs(Ts),Math.abs(Ts-P1)));break;case 3:if(ll.shape===0)F2=F1=Math.max(Wf(rc,Ts),Wf(rc,Ts-P1),Wf(rc-_d,Ts),Wf(rc-_d,Ts-P1));else if(ll.shape===1){PA=Math.max(Math.abs(Ts),Math.abs(Ts-P1))/Math.max(Math.abs(rc),Math.abs(rc-_d));var k$=X3(_d,P1,rc,Ts,!1);zM=k$[0],m$=k$[1],F1=PA*(F2=Wf(zM-rc,(m$-Ts)/PA))}}return Array.isArray(ll.size)&&(F2=Cn(ll.size[0],_d),F1=ll.size.length===2?Cn(ll.size[1],P1):F2),[F2,F1]}(Lt,ak,Zu,df,uf),P2=iw[0],MA=iw[1],P2>0&&MA>0&&(_C=Be.ctx.createRadialGradient(Pg+ak,yu+Zu,0,Pg+ak,yu+Zu,P2),kC(Lt.stops,2*P2).forEach(function(ll){return _C.addColorStop(ll.stop,Gd(ll.color))}),Be.path(Mg),Be.ctx.fillStyle=_C,P2!==MA?(SC=ne.bounds.left+.5*ne.bounds.width,Pp=ne.bounds.top+.5*ne.bounds.height,LC=1/(Fp=MA/P2),Be.ctx.save(),Be.ctx.translate(SC,Pp),Be.ctx.transform(1,0,0,Fp,0,0),Be.ctx.translate(-SC,-Pp),Be.ctx.fillRect(Pg,LC*(yu-Pp)+Pp,df,uf*LC),Be.ctx.restore()):Be.ctx.fill())),Dm.label=6;case 6:return ae--,[2]}})},Be=this,Xe=0,Ke=ne.styles.backgroundImage.slice(0).reverse(),qe.label=1;case 1:return Xe0?Ot.style!==2?[3,5]:[4,this.renderDashedDottedBorder(Ot.color,Ot.width,Ke,ne.curves,2)]:[3,11]:[3,13];case 4:return Vt.sent(),[3,11];case 5:return Ot.style!==3?[3,7]:[4,this.renderDashedDottedBorder(Ot.color,Ot.width,Ke,ne.curves,3)];case 6:return Vt.sent(),[3,11];case 7:return Ot.style!==4?[3,9]:[4,this.renderDoubleBorder(Ot.color,Ot.width,Ke,ne.curves)];case 8:return Vt.sent(),[3,11];case 9:return[4,this.renderSolidBorder(Ot.color,Ke,ne.curves)];case 10:Vt.sent(),Vt.label=11;case 11:Ke++,Vt.label=12;case 12:return vt++,[3,3];case 13:return[2]}})})},K.prototype.renderDashedDottedBorder=function(ne,ae,be,Be,Xe){return r(this,void 0,void 0,function(){var Ke,vt,qe,Ot,Lt,Vt,Vn,Dn,$n,Ai,mr,$i,Go,Vo,ho,lr;return o(this,function(rs){return this.ctx.save(),Ke=function(os,ko){switch(ko){case 0:return NM(os.topLeftBorderStroke,os.topRightBorderStroke);case 1:return NM(os.topRightBorderStroke,os.bottomRightBorderStroke);case 2:return NM(os.bottomRightBorderStroke,os.bottomLeftBorderStroke);default:return NM(os.bottomLeftBorderStroke,os.topLeftBorderStroke)}}(Be,be),vt=joe(Be,be),Xe===2&&(this.path(vt),this.ctx.clip()),Ig(vt[0])?(qe=vt[0].start.x,Ot=vt[0].start.y):(qe=vt[0].x,Ot=vt[0].y),Ig(vt[1])?(Lt=vt[1].end.x,Vt=vt[1].end.y):(Lt=vt[1].x,Vt=vt[1].y),Vn=Math.abs(be===0||be===2?qe-Lt:Ot-Vt),this.ctx.beginPath(),Xe===3?this.formatPath(Ke):this.formatPath(vt.slice(0,2)),Dn=ae<3?3*ae:2*ae,$n=ae<3?2*ae:ae,Xe===3&&(Dn=ae,$n=ae),Ai=!0,Vn<=2*Dn?Ai=!1:Vn<=2*Dn+$n?(Dn*=mr=Vn/(2*Dn+$n),$n*=mr):($i=Math.floor((Vn+$n)/(Dn+$n)),Go=(Vn-$i*Dn)/($i-1),$n=(Vo=(Vn-($i+1)*Dn)/$i)<=0||Math.abs($n-Go)1&&arguments[1]!==void 0?arguments[1]:{};if(t.format!=="svg"){var n=t.width,r=n===void 0?e.width.baseVal.value:n,o=t.height,s=o===void 0?e.height.baseVal.value:o,a=t.scale,l=a===void 0?5:a,d=t.quality,u=d===void 0?1:d,h=t.backgroundColor,g=h===void 0?"white":h,m=t.filename,v=m===void 0?"formula":m,f=t.format,k=f===void 0?"png":f,A=t.mimeType,p=A===void 0?"image/png":A,b=e2e(e),w=document.createElement("canvas"),O=w.getContext("2d"),y=new Image;y.src="data:image/svg+xml;base64,".concat(btoa(unescape(encodeURIComponent(b)))),y.onload=function(){w.width=r*l,w.height=s*l,O.fillStyle=g,O.fillRect(0,0,w.width,w.height),O.drawImage(y,0,0,w.width,w.height),w.toBlob(function(_){var S,L=PN.createObjectURL(_);SYt(L,rt(S="".concat(v,".")).call(S,k)),PN.revokeObjectURL(L)},p,u)}}else{var C;(function(_,S){var L=e2e(_),E=new Blob([L],{type:"image/svg+xml;charset=utf-8"}),T=PN.createObjectURL(E);SYt(T,S),PN.revokeObjectURL(T)})(e,(C=t.filename)!==null&&C!==void 0?C:"formula.svg")}}function e2e(e){return new XMLSerializer().serializeToString(e)}function tKo(e,t){var n=XI!==void 0&&GI(e)||e["@@iterator"];if(!n){if(Tf(e)||(n=function(d,u){if(d){var h;if(typeof d=="string")return LYt(d,u);var g=ka(h={}.toString.call(d)).call(h,8,-1);return g==="Object"&&d.constructor&&(g=d.constructor.name),g==="Map"||g==="Set"?Wl(d):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?LYt(d,u):void 0}}(e))||t){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(u){throw u},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s,a=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var u=n.next();return a=u.done,u},e:function(u){l=!0,s=u},f:function(){try{a||n.return==null||n.return()}finally{if(l)throw s}}}}function LYt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n3&&arguments[3]!==void 0?arguments[3]:"block",o=document.createElement("img");return o.src=e,o.width=t,o.height=n,o.style.maxWidth="100%",o.style.height="auto",o.style.display=r,o}var iKo=['[data-type="mermaid"]','[data-type="mathBlock"]'];function rKo(e,t,n){return new e3(function(r,o){try{var s=e2e(e),a=document.createElement("canvas"),l=a.getContext("2d");a.width=2*t,a.height=2*n;var d=new Image;d.onload=function(){try{l&&l.drawImage(d,0,0,a.width,a.height),r(a.toDataURL("image/png"))}catch(u){z0.log("SVG 绘制到 Canvas 失败:",u),o(u)}},d.onerror=function(u){z0.log("SVG 图片加载失败:",u),o(u)},d.src="data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(s))}catch(u){o(u)}})}function oKo(e,t){return LXe.apply(this,arguments)}function LXe(){return LXe=j6(d1.mark(function e(t,n){var r,o,s,a,l,d;return d1.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:if((r=t.querySelector("svg"))instanceof SVGSVGElement){u.next=3;break}return u.abrupt("return",!1);case 3:return o=r.getBoundingClientRect(),s=Math.max(1,Math.round(o.width)),a=Math.max(1,Math.round(o.height)),u.next=8,rKo(r,s,a);case 8:return l=u.sent,d=nKo(l,s,a,n),t.replaceWith(d),u.abrupt("return",!0);case 12:case"end":return u.stop()}},e)})),LXe.apply(this,arguments)}function sKo(e){return xXe.apply(this,arguments)}function xXe(){return xXe=j6(d1.mark(function e(t){var n,r,o,s,a,l,d,u,h;return d1.wrap(function(g){for(;;)switch(g.prev=g.next){case 0:n=document.createElement("div"),CD(n.style,{position:"fixed",left:"-100000px",top:"0",visibility:"hidden",pointerEvents:"none",width:"".concat(document.documentElement.clientWidth||document.body.clientWidth||1e3,"px")}),(r=document.createElement("div")).className="cherry-export-word-container",r.innerHTML=t,n.appendChild(r),document.body.appendChild(n),o=Wl(r.querySelectorAll(iKo.join(","))),s=tKo(o),g.prev=9,s.s();case 11:if((a=s.n()).done){g.next=25;break}return l=a.value,g.prev=13,d=l.getAttribute("data-type"),u=d==="mathBlock"?"inline-block":"block",g.next=18,oKo(l,u);case 18:g.next=23;break;case 20:g.prev=20,g.t0=g.catch(13),z0.log("[exportWord] 处理节点失败,已跳过该节点:",g.t0);case 23:g.next=11;break;case 25:g.next=30;break;case 27:g.prev=27,g.t1=g.catch(9),s.e(g.t1);case 30:return g.prev=30,s.f(),g.finish(30);case 33:return h=r.innerHTML,n.remove(),g.abrupt("return",h);case 36:case"end":return g.stop()}},e,null,[[9,27,30,33],[13,20]])})),xXe.apply(this,arguments)}function aKo(e,t){return Tzn.apply(this,arguments)}function Tzn(){return(Tzn=j6(d1.mark(function e(t,n){var r,o,s,a;return d1.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return o=t,l.prev=1,l.next=4,sKo(t);case 4:o=l.sent,l.next=10;break;case 7:l.prev=7,l.t0=l.catch(1),z0.warn("[exportWord] 预处理失败,降级为原始 HTML:",l.t0);case 10:if(s=rt(r=` @@ -15449,7 +15449,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * @tdesign-vue-next/chat v0.5.1 * (c) 2026 tdesign * @license MIT - */var JGn=Cm(VXn),eYn=Cm(B0s);Cm(OGn);Cm(pGe);Cm(yGn);Cm(P0s,"t-chat-thinking");Cm(T2s,"t-chatbot");var tYn=Cm(WXn,"t-chat-message");Cm(AGe);Cm(Q2s,"t-chat-search-content");Cm(D2s,"t-chat-suggestion-content");Cm(AGn,"t-chat-markdown");Cm(VXn);Cm(OGn);Cm(T0s);Cm(bGe);Cm(x0s);const wGe={__name:"splitpanes",props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click","splitter-dblclick"],setup(e,{emit:t}){const n=t,r=e,o=TAn(),s=fe([]),a=X(()=>s.value.reduce((J,oe)=>(J[~~oe.id]=oe)&&J,{})),l=X(()=>s.value.length),d=fe(null),u=fe(!1),h=fe({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),g=fe({splitter:null,timeoutId:null}),m=X(()=>({[`splitpanes splitpanes--${r.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":h.value.dragging})),v=()=>{document.addEventListener("mousemove",A,{passive:!1}),document.addEventListener("mouseup",p),"ontouchstart"in window&&(document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",p))},f=()=>{document.removeEventListener("mousemove",A,{passive:!1}),document.removeEventListener("mouseup",p),"ontouchstart"in window&&(document.removeEventListener("touchmove",A,{passive:!1}),document.removeEventListener("touchend",p))},k=(J,oe)=>{const se=J.target.closest(".splitpanes__splitter");if(se){const{left:le,top:ue}=se.getBoundingClientRect(),{clientX:ee,clientY:de}="ontouchstart"in window&&J.touches?J.touches[0]:J;h.value.cursorOffset=r.horizontal?de-ue:ee-le}v(),h.value.mouseDown=!0,h.value.activeSplitter=oe},A=J=>{h.value.mouseDown&&(J.preventDefault(),h.value.dragging=!0,requestAnimationFrame(()=>{_(y(J)),q("resize",{event:J},!0)}))},p=J=>{h.value.dragging&&(window.getSelection().removeAllRanges(),q("resized",{event:J},!0)),h.value.mouseDown=!1,h.value.activeSplitter=null,setTimeout(()=>{h.value.dragging=!1,f()},100)},b=(J,oe)=>{"ontouchstart"in window&&(J.preventDefault(),g.value.splitter===oe?(clearTimeout(g.value.timeoutId),g.value.timeoutId=null,w(J,oe),g.value.splitter=null):(g.value.splitter=oe,g.value.timeoutId=setTimeout(()=>g.value.splitter=null,500))),h.value.dragging||q("splitter-click",{event:J,index:oe},!0)},w=(J,oe)=>{if(q("splitter-dblclick",{event:J,index:oe},!0),r.maximizePanes){let se=0;s.value=s.value.map((le,ue)=>(le.size=ue===oe?le.max:le.min,ue!==oe&&(se+=le.min),le)),s.value[oe].size-=se,q("pane-maximize",{event:J,index:oe,pane:s.value[oe]}),q("resized",{event:J,index:oe},!0)}},O=(J,oe)=>{q("pane-click",{event:J,index:a.value[oe].index,pane:a.value[oe]})},y=J=>{const oe=d.value.getBoundingClientRect(),{clientX:se,clientY:le}="ontouchstart"in window&&J.touches?J.touches[0]:J;return{x:se-(r.horizontal?0:h.value.cursorOffset)-oe.left,y:le-(r.horizontal?h.value.cursorOffset:0)-oe.top}},C=J=>{J=J[r.horizontal?"y":"x"];const oe=d.value[r.horizontal?"clientHeight":"clientWidth"];return r.rtl&&!r.horizontal&&(J=oe-J),J*100/oe},_=J=>{const oe=h.value.activeSplitter;let se={prevPanesSize:L(oe),nextPanesSize:E(oe),prevReachedMinPanes:0,nextReachedMinPanes:0};const le=0+(r.pushOtherPanes?0:se.prevPanesSize),ue=100-(r.pushOtherPanes?0:se.nextPanesSize),ee=Math.max(Math.min(C(J),ue),le);let de=[oe,oe+1],z=s.value[de[0]]||null,Y=s.value[de[1]]||null;const ie=z.max<100&&ee>=z.max+se.prevPanesSize,te=Y.max<100&&ee<=100-(Y.max+E(oe+1));if(ie||te){ie?(z.size=z.max,Y.size=Math.max(100-z.max-se.prevPanesSize-se.nextPanesSize,0)):(z.size=Math.max(100-Y.max-se.prevPanesSize-E(oe+1),0),Y.size=Y.max);return}if(r.pushOtherPanes){const Z=S(se,ee);if(!Z)return;({sums:se,panesToResize:de}=Z),z=s.value[de[0]]||null,Y=s.value[de[1]]||null}z!==null&&(z.size=Math.min(Math.max(ee-se.prevPanesSize-se.prevReachedMinPanes,z.min),z.max)),Y!==null&&(Y.size=Math.min(Math.max(100-ee-se.nextPanesSize-se.nextReachedMinPanes,Y.min),Y.max))},S=(J,oe)=>{const se=h.value.activeSplitter,le=[se,se+1];return oe{ee>le[0]&&ee<=se&&(ue.size=ue.min,J.prevReachedMinPanes+=ue.min)}),J.prevPanesSize=L(le[0]),le[0]===void 0)?(J.prevReachedMinPanes=0,s.value[0].size=s.value[0].min,s.value.forEach((ue,ee)=>{ee>0&&ee<=se&&(ue.size=ue.min,J.prevReachedMinPanes+=ue.min)}),s.value[le[1]].size=100-J.prevReachedMinPanes-s.value[0].min-J.prevPanesSize-J.nextPanesSize,null):oe>100-J.nextPanesSize-s.value[le[1]].min&&(le[1]=D(se).index,J.nextReachedMinPanes=0,le[1]>se+1&&s.value.forEach((ue,ee)=>{ee>se&&ee{ee=se+1&&(ue.size=ue.min,J.nextReachedMinPanes+=ue.min)}),s.value[le[0]].size=100-J.prevPanesSize-E(le[0]-1),null):{sums:J,panesToResize:le}},L=J=>s.value.reduce((oe,se,le)=>oe+(les.value.reduce((oe,se,le)=>oe+(le>J+1?se.size:0),0),T=J=>[...s.value].reverse().find(oe=>oe.indexoe.min)||{},D=J=>s.value.find(oe=>oe.index>J+1&&oe.size>oe.min)||{},P=()=>{var J;const oe=Array.from(((J=d.value)==null?void 0:J.children)||[]);for(const se of oe){const le=se.classList.contains("splitpanes__pane"),ue=se.classList.contains("splitpanes__splitter");!le&&!ue&&(se.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))}},Q=(J,oe,se=!1)=>{const le=J-1,ue=document.createElement("div");ue.classList.add("splitpanes__splitter"),se||(ue.onmousedown=ee=>k(ee,le),typeof window<"u"&&"ontouchstart"in window&&(ue.ontouchstart=ee=>k(ee,le)),ue.onclick=ee=>b(ee,le+1)),ue.ondblclick=ee=>w(ee,le+1),oe.parentNode.insertBefore(ue,oe)},M=J=>{J.onmousedown=void 0,J.onclick=void 0,J.ondblclick=void 0,J.remove()},B=()=>{var J;const oe=Array.from(((J=d.value)==null?void 0:J.children)||[]);for(const le of oe)le.className.includes("splitpanes__splitter")&&M(le);let se=0;for(const le of oe)le.className.includes("splitpanes__pane")&&(!se&&r.firstSplitter?Q(se,le,!0):se&&Q(se,le),se++)},R=({uid:J,...oe})=>{const se=a.value[J];for(const[le,ue]of Object.entries(oe))se[le]=ue},I=J=>{var oe;let se=-1;Array.from(((oe=d.value)==null?void 0:oe.children)||[]).some(le=>(le.className.includes("splitpanes__pane")&&se++,le.isSameNode(J.el))),s.value.splice(se,0,{...J,index:se}),s.value.forEach((le,ue)=>le.index=ue),u.value&&ai(()=>{B(),j({addedPane:s.value[se]}),q("pane-add",{pane:s.value[se]})})},F=J=>{const oe=s.value.findIndex(le=>le.id===J);s.value[oe].el=null;const se=s.value.splice(oe,1)[0];s.value.forEach((le,ue)=>le.index=ue),ai(()=>{B(),q("pane-remove",{pane:se}),j({removedPane:{...se}})})},j=(J={})=>{!J.addedPane&&!J.removedPane?H():s.value.some(oe=>oe.givenSize!==null||oe.min||oe.max<100)?$(J):W(),u.value&&q("resized")},W=()=>{const J=100/l.value;let oe=0;const se=[],le=[];for(const ue of s.value)ue.size=Math.max(Math.min(J,ue.max),ue.min),oe-=ue.size,ue.size>=ue.max&&se.push(ue.id),ue.size<=ue.min&&le.push(ue.id);oe>.1&&G(oe,se,le)},H=()=>{let J=100;const oe=[],se=[];let le=0;for(const ee of s.value)J-=ee.size,ee.givenSize!==null&&le++,ee.size>=ee.max&&oe.push(ee.id),ee.size<=ee.min&&se.push(ee.id);let ue=100;if(J>.1){for(const ee of s.value)ee.givenSize===null&&(ee.size=Math.max(Math.min(J/(l.value-le),ee.max),ee.min)),ue-=ee.size;ue>.1&&G(ue,oe,se)}},$=({addedPane:J,removedPane:oe}={})=>{let se=100/l.value,le=0;const ue=[],ee=[];((J==null?void 0:J.givenSize)??null)!==null&&(se=(100-J.givenSize)/(l.value-1));for(const de of s.value)le-=de.size,de.size>=de.max&&ue.push(de.id),de.size<=de.min&&ee.push(de.id);if(!(Math.abs(le)<.1)){for(const de of s.value)(J==null?void 0:J.givenSize)!==null&&(J==null?void 0:J.id)===de.id||(de.size=Math.max(Math.min(se,de.max),de.min)),le-=de.size,de.size>=de.max&&ue.push(de.id),de.size<=de.min&&ee.push(de.id);le>.1&&G(le,ue,ee)}},G=(J,oe,se)=>{let le;J>0?le=J/(l.value-oe.length):le=J/(l.value-se.length),s.value.forEach((ue,ee)=>{if(J>0&&!oe.includes(ue.id)){const de=Math.max(Math.min(ue.size+le,ue.max),ue.min),z=de-ue.size;J-=z,ue.size=de}else if(!se.includes(ue.id)){const de=Math.max(Math.min(ue.size+le,ue.max),ue.min),z=de-ue.size;J-=z,ue.size=de}}),Math.abs(J)>.1&&ai(()=>{u.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})},q=(J,oe=void 0,se=!1)=>{const le=(oe==null?void 0:oe.index)??h.value.activeSplitter??null;n(J,{...oe,...le!==null&&{index:le},...se&&le!==null&&{prevPane:s.value[le-(r.firstSplitter?1:0)],nextPane:s.value[le+(r.firstSplitter?0:1)]},panes:s.value.map(ue=>({min:ue.min,max:ue.max,size:ue.size}))})};pt(()=>r.firstSplitter,()=>B()),An(()=>{P(),B(),j(),q("ready"),u.value=!0}),qs(()=>u.value=!1);const re=()=>{var J;return xn("div",{ref:d,class:m.value},(J=o.default)==null?void 0:J.call(o))};return Yi("panes",s),Yi("indexedPanes",a),Yi("horizontal",X(()=>r.horizontal)),Yi("requestUpdate",R),Yi("onPaneAdd",I),Yi("onPaneRemove",F),Yi("onPaneClick",O),(J,oe)=>(xe(),Ut(Bd(re)))}},PT={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(e){var t;const n=e,r=bt("requestUpdate"),o=bt("onPaneAdd"),s=bt("horizontal"),a=bt("onPaneRemove"),l=bt("onPaneClick"),d=(t=ps())==null?void 0:t.uid,u=bt("indexedPanes"),h=X(()=>u.value[d]),g=fe(null),m=X(()=>{const A=isNaN(n.size)||n.size===void 0?0:parseFloat(n.size);return Math.max(Math.min(A,f.value),v.value)}),v=X(()=>{const A=parseFloat(n.minSize);return isNaN(A)?0:A}),f=X(()=>{const A=parseFloat(n.maxSize);return isNaN(A)?100:A}),k=X(()=>{var A;return`${s.value?"height":"width"}: ${(A=h.value)==null?void 0:A.size}%`});return pt(()=>m.value,A=>r({uid:d,size:A})),pt(()=>v.value,A=>r({uid:d,min:A})),pt(()=>f.value,A=>r({uid:d,max:A})),An(()=>{o({id:d,el:g.value,min:v.value,max:f.value,givenSize:n.size===void 0?null:m.value,size:m.value})}),qs(()=>a(d)),(A,p)=>(xe(),Ge("div",{ref_key:"paneEl",ref:g,class:"splitpanes__pane",onClick:p[0]||(p[0]=b=>Ae(l)(b,A._.uid)),style:no(k.value)},[Zr(A.$slots,"default")],4))}},F2s=Je({__name:"editMdPreivew",props:Fc({content:{}},{modelValue:{default:!1},modelModifiers:{}}),emits:Fc(["save"],["update:modelValue"]),setup(e,{emit:t}){const n=e,r=fe(""),o=Pf(e,"modelValue"),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];pt(()=>o.value,()=>{r.value=n.content});const a=t;function l(){a("save",r.value),o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=gc;return xe(),Ut(m,{visible:o.value,"onUpdate:visible":g[2]||(g[2]=v=>o.value=v),header:h.$t("components.editMdPreivew.title"),width:"90vw","confirm-btn":h.$t("components.editMdPreivew.confirm"),"cancel-btn":h.$t("components.editMdPreivew.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:Ae(r),"onUpdate:modelValue":g[0]||(g[0]=v=>Fn(r)?r.value=v:null),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[1]||(g[1]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])}}}),Ny=Object.create(null);Ny.open="0";Ny.close="1";Ny.ping="2";Ny.pong="3";Ny.message="4";Ny.upgrade="5";Ny.noop="6";const Xhe=Object.create(null);Object.keys(Ny).forEach(e=>{Xhe[Ny[e]]=e});const OGe={type:"error",data:"parser error"},nYn=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",iYn=typeof ArrayBuffer=="function",rYn=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Qst=({type:e,data:t},n,r)=>nYn&&t instanceof Blob?n?r(t):A0n(t,r):iYn&&(t instanceof ArrayBuffer||rYn(t))?n?r(t):A0n(new Blob([t]),r):r(Ny[e]+(t||"")),A0n=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function p0n(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let JBe;function N2s(e,t){if(nYn&&e.data instanceof Blob)return e.data.arrayBuffer().then(p0n).then(t);if(iYn&&(e.data instanceof ArrayBuffer||rYn(e.data)))return t(p0n(e.data));Qst(e,!1,n=>{JBe||(JBe=new TextEncoder),t(JBe.encode(n))})}const b0n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sY=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,o=0,s,a,l,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),h=new Uint8Array(u);for(r=0;r>4,h[o++]=(a&15)<<4|l>>2,h[o++]=(l&3)<<6|d&63;return u},j2s=typeof ArrayBuffer=="function",Dst=(e,t)=>{if(typeof e!="string")return{type:"message",data:oYn(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:W2s(e.substring(1),t)}:Xhe[n]?e.length>1?{type:Xhe[n],data:e.substring(1)}:{type:Xhe[n]}:OGe},W2s=(e,t)=>{if(j2s){const n=U2s(e);return oYn(n,t)}else return{base64:!0,data:e}},oYn=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},sYn="",V2s=(e,t)=>{const n=e.length,r=new Array(n);let o=0;e.forEach((s,a)=>{Qst(s,!1,l=>{r[a]=l,++o===n&&t(r.join(sYn))})})},z2s=(e,t)=>{const n=e.split(sYn),r=[];for(let o=0;o{const r=n.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const s=new DataView(o.buffer);s.setUint8(0,126),s.setUint16(1,r)}else{o=new Uint8Array(9);const s=new DataView(o.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(n)})}})}let eRe;function xde(e){return e.reduce((t,n)=>t+n.length,0)}function Ede(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let o=0;oMath.pow(2,21)-1){l.enqueue(OGe);break}o=h*Math.pow(2,32)+u.getUint32(4),r=3}else{if(xde(n)e){l.enqueue(OGe);break}}}})}const aYn=4;function Gh(e){if(e)return X2s(e)}function X2s(e){for(var t in Gh.prototype)e[t]=Gh.prototype[t];return e}Gh.prototype.on=Gh.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Gh.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Gh.prototype.off=Gh.prototype.removeListener=Gh.prototype.removeAllListeners=Gh.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,o=0;oPromise.resolve().then(t):(t,n)=>n(t,0),D4=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),G2s="arraybuffer";function lYn(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const Y2s=D4.setTimeout,Z2s=D4.clearTimeout;function NOe(e,t){t.useNativeTimers?(e.setTimeoutFn=Y2s.bind(D4),e.clearTimeoutFn=Z2s.bind(D4)):(e.setTimeoutFn=D4.setTimeout.bind(D4),e.clearTimeoutFn=D4.clearTimeout.bind(D4))}const q2s=1.33;function K2s(e){return typeof e=="string"?J2s(e):Math.ceil((e.byteLength||e.size)*q2s)}function J2s(e){let t=0,n=0;for(let r=0,o=e.length;r=57344?n+=3:(r++,n+=4);return n}function cYn(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function evs(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function tvs(e){let t={},n=e.split("&");for(let r=0,o=n.length;r{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};z2s(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,V2s(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=cYn()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let dYn=!1;try{dYn=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const rvs=dYn;function ovs(){}class svs extends ivs{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(o,s)=>{this.onError("xhr post error",o,s)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}class my extends Gh{constructor(t,n,r){super(),this.createRequest=t,NOe(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const n=lYn(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=my.requestsCount++,my.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=ovs,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete my.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}my.requestsCount=0;my.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",w0n);else if(typeof addEventListener=="function"){const e="onpagehide"in D4?"pagehide":"unload";addEventListener(e,w0n,!1)}}function w0n(){for(let e in my.requests)my.requests.hasOwnProperty(e)&&my.requests[e].abort()}const avs=function(){const e=uYn({xdomain:!1});return e&&e.responseType!==null}();class lvs extends svs{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=avs&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new my(uYn,this.uri(),t)}}function uYn(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||rvs))return new XMLHttpRequest}catch{}if(!t)try{return new D4[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const hYn=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class cvs extends Bst{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,r=hYn?{}:lYn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{try{this.doWrite(r,s)}catch{}o&&FOe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=cYn()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const tRe=D4.WebSocket||D4.MozWebSocket;class dvs extends cvs{createSocket(t,n,r){return hYn?new tRe(t,n,r):n?new tRe(t,n):new tRe(t)}doWrite(t,n){this.ws.send(n)}}class uvs extends Bst{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=$2s(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),o=H2s();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const s=()=>{r.read().then(({done:l,value:d})=>{l||(this.onPacket(d),s())}).catch(l=>{})};s();const a={type:"open"};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this._writer.write(a).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n{o&&FOe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const hvs={websocket:dvs,webtransport:uvs,polling:lvs},fvs=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,gvs=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function yGe(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let o=fvs.exec(e||""),s={},a=14;for(;a--;)s[gvs[a]]=o[a]||"";return n!=-1&&r!=-1&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=mvs(s,s.path),s.queryKey=kvs(s,s.query),s}function mvs(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function kvs(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,s){o&&(n[o]=s)}),n}const CGe=typeof addEventListener=="function"&&typeof removeEventListener=="function",Ghe=[];CGe&&addEventListener("offline",()=>{Ghe.forEach(e=>e())},!1);class z9 extends Gh{constructor(t,n){if(super(),this.binaryType=G2s,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const r=yGe(t);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=yGe(n.host).host);NOe(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=tvs(this.opts.query)),CGe&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Ghe.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=aYn,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&z9.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",z9.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,FOe(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,r){return this._sendPacket("message",t,n,r),this}send(t,n,r){return this._sendPacket("message",t,n,r),this}_sendPacket(t,n,r,o){if(typeof n=="function"&&(o=n,n=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const s={type:t,data:n,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(z9.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),CGe&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Ghe.indexOf(this._offlineEventListener);r!==-1&&Ghe.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}z9.protocol=aYn;class vvs extends z9{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",g=>{if(!r)if(g.type==="pong"&&g.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;z9.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(h(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const m=new Error("probe error");m.transport=n.name,this.emitReserved("upgradeError",m)}}))};function s(){r||(r=!0,h(),n.close(),n=null)}const a=g=>{const m=new Error("probe error: "+g);m.transport=n.name,s(),this.emitReserved("upgradeError",m)};function l(){a("transport closed")}function d(){a("socket closed")}function u(g){n&&g.name!==n.name&&s()}const h=()=>{n.removeListener("open",o),n.removeListener("error",a),n.removeListener("close",l),this.off("close",d),this.off("upgrading",u)};n.once("open",o),n.once("error",a),n.once("close",l),this.once("close",d),this.once("upgrading",u),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let r=0;rhvs[o]).filter(o=>!!o)),super(t,r)}};function pvs(e,t="",n){let r=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),r=yGe(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const s=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+s+":"+r.port+t,r.href=r.protocol+"://"+s+(n&&n.port===r.port?"":":"+r.port),r}const bvs=typeof ArrayBuffer=="function",wvs=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,fYn=Object.prototype.toString,Ovs=typeof Blob=="function"||typeof Blob<"u"&&fYn.call(Blob)==="[object BlobConstructor]",yvs=typeof File=="function"||typeof File<"u"&&fYn.call(File)==="[object FileConstructor]";function Rst(e){return bvs&&(e instanceof ArrayBuffer||wvs(e))||Ovs&&e instanceof Blob||yvs&&e instanceof File}function Yhe(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.numthis.opts.maxAttachments)throw new Error("too many attachments");r.attachments=l}if(t.charAt(n+1)==="/"){const s=n+1;for(;++n&&!(t.charAt(n)===","||n===t.length););r.nsp=t.substring(s,n)}else r.nsp="/";const o=t.charAt(n+1);if(o!==""&&Number(o)==o){const s=n+1;for(;++n;){const a=t.charAt(n);if(a==null||Number(a)!=a){--n;break}if(n===t.length)break}r.id=Number(t.substring(s,n+1))}if(t.charAt(++n)){const s=this.tryParse(t.substr(n));if(Ist.isPayloadValid(r.type,s))r.data=s;else throw new Error("invalid payload")}return r}tryParse(t){try{return JSON.parse(t,this.opts.reviver)}catch{return!1}}static isPayloadValid(t,n){switch(t){case _a.CONNECT:return O0n(n);case _a.DISCONNECT:return n===void 0;case _a.CONNECT_ERROR:return typeof n=="string"||O0n(n);case _a.EVENT:case _a.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&Svs.indexOf(n[0])===-1);case _a.ACK:case _a.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class xvs{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=_vs(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Evs=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e};function O0n(e){return Object.prototype.toString.call(e)==="[object Object]"}const Tvs=Object.freeze(Object.defineProperty({__proto__:null,Decoder:Ist,Encoder:Lvs,get PacketType(){return _a}},Symbol.toStringTag,{value:"Module"}));function Rb(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const Qvs=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class gYn extends Gh{constructor(t,n,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Rb(t,"open",this.onopen.bind(this)),Rb(t,"packet",this.onpacket.bind(this)),Rb(t,"error",this.onerror.bind(this)),Rb(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){var r,o,s;if(Qvs.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(n.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const a={type:_a.EVENT,data:n};if(a.options={},a.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const h=this.ids++,g=n.pop();this._registerAckCallback(h,g),a.id=h}const l=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,d=this.connected&&!(!((s=this.io.engine)===null||s===void 0)&&s._hasPingExpired());return this.flags.volatile&&!l||(d?(this.notifyOutgoingListeners(a),this.packet(a)):this.sendBuffer.push(a)),this.flags={},this}_registerAckCallback(t,n){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[t]=n;return}const s=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let l=0;l{this.io.clearTimeoutFn(s),n.apply(this,l)};a.withError=!0,this.acks[t]=a}emitWithAck(t,...n){return new Promise((r,o)=>{const s=(a,l)=>a?o(a):r(l);s.withError=!0,n.push(s),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...s)=>(this._queue[0],o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(o)):(this._queue.shift(),n&&n(null,...s)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:_a.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case _a.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case _a.EVENT:case _a.BINARY_EVENT:this.onevent(t);break;case _a.ACK:case _a.BINARY_ACK:this.onack(t);break;case _a.DISCONNECT:this.ondisconnect();break;case _a.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...o){r||(r=!0,n.packet({type:_a.ACK,id:t,data:o}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:_a.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}RH.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0};RH.prototype.reset=function(){this.attempts=0};RH.prototype.setMin=function(e){this.ms=e};RH.prototype.setMax=function(e){this.max=e};RH.prototype.setJitter=function(e){this.jitter=e};class LGe extends Gh{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,NOe(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new RH({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const o=n.parser||Tvs;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Avs(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Rb(n,"open",function(){r.onopen(),t&&t()}),s=l=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",l),t?t(l):this.maybeReconnectOnOpen()},a=Rb(n,"error",s);if(this._timeout!==!1){const l=this._timeout,d=this.setTimeoutFn(()=>{o(),s(new Error("timeout")),n.close()},l);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(o),this.subs.push(a),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Rb(t,"ping",this.onping.bind(this)),Rb(t,"data",this.ondata.bind(this)),Rb(t,"error",this.onerror.bind(this)),Rb(t,"close",this.onclose.bind(this)),Rb(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){FOe(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new gYn(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const sG={};function Zhe(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=pvs(e,t.path||"/socket.io"),r=n.source,o=n.id,s=n.path,a=sG[o]&&s in sG[o].nsps,l=t.forceNew||t["force new connection"]||t.multiplex===!1||a;let d;return l?d=new LGe(r,t):(sG[o]||(sG[o]=new LGe(r,t)),d=sG[o]),n.query&&!t.query&&(t.query=n.queryKey),d.socket(n.path,t)}Object.assign(Zhe,{Manager:LGe,Socket:gYn,io:Zhe,connect:Zhe});function mYn(e){const{url:t,auth:n,autoConnect:r=!0,xmlTags:o=[],keepXmlInMessage:s=!0,onXmlTag:a,onError:l,onConnect:d,onDisconnect:u,manageLifecycle:h=!0}=e,g=nd(null),m=fe(!1),v=fe(!1),f=fe([]),k=fe(null),A=fe("idle"),p=fe({}),b=fe({}),w=Array.from(new Map(o.map(ke=>typeof ke=="string"?{tag:ke}:ke).filter(ke=>!!(ke!=null&&ke.tag)).map(ke=>[ke.tag,ke])).values()),O=w.map(ke=>ke.tag),y=w.filter(ke=>!(ke.keepInMessage??s)).map(ke=>ke.tag),C=new Map,_=new Map,S=X(()=>{var Te;const ke=f.value[f.value.length-1];if(!ke||ke.role!=="assistant")return!1;const me=ke.status;return!!(me==="pending"||me==="streaming"||(Te=ke.content)!=null&&Te.some(De=>De.status==="pending"||De.status==="streaming"))}),L=X(()=>f.value[f.value.length-1]),E=ke=>f.value.find(me=>me.id===ke),T=ke=>f.value.findIndex(me=>me.id===ke),D=(ke,me)=>{var _e;return(_e=ke.content)==null?void 0:_e.find(Te=>Te.id===me)},P=ke=>(ke.type==="text"||ke.type==="markdown")&&typeof ke.data=="string",Q=(ke,me)=>`${ke}:${me.id??me.type}`,M=ke=>ke.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),B=ke=>{const me={},_e=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;let Te;for(;(Te=_e.exec(ke))!==null;)me[Te[1]]=Te[2]??Te[3];return me},R=ke=>{const me=[],_e=/<(\w+)((?:\s+[\w-]+\s*=\s*(?:"[^"]*"|'[^']*'))*)\s*(?:\/>|>([\s\S]*?)<\/\1>)/g;let Te,De=0;for(;(Te=_e.exec(ke))!==null;)me.push({tag:Te[1],attrs:B(Te[2]),value:Te[3]??""}),De=_e.lastIndex;const ot=ke.slice(De).match(/<(\w+)((?:\s+[\w-]+\s*=\s*(?:"[^"]*"|'[^']*'))*)\s*>([\s\S]*)$/);return ot&&me.push({tag:ot[1],attrs:B(ot[2]),value:ot[3]}),me},I=(ke,me)=>{const _e=M(me),Te=new RegExp(`<${_e}(\\s[^>]*)?>`,"g");let De=null,Ye;for(;(Ye=Te.exec(ke))!==null;)De=Ye;if(!De)return null;const ot=B(De[1]??""),We=De.index+De[0].length,et=``,st=ke.indexOf(et,We),Me=st!==-1,Se=ke.slice(We,Me?st:ke.length).trim(),Ie=R(Se);return{value:Se,attrs:ot,children:Ie,isComplete:Me}},F=ke=>{let me=ke;for(const _e of y){const Te=M(_e);me=me.replace(new RegExp(`<${Te}(?:\\s[^>]*)?>[\\s\\S]*?<\\/${Te}>`,"g"),""),me=me.replace(new RegExp(`<${Te}(?:\\s[^>]*)?>[\\s\\S]*$`,"g"),"")}return me},j=(ke,me)=>P(me)?_.get(Q(ke,me))??me.data:null,W=(ke,me)=>{if(!P(me))return;const _e=j(ke,me)??"";me.data=y.length?F(_e):_e},H=(ke,me,_e)=>{if(!O.length||!P(me))return;const Te=Q(ke,me),De=C.get(Te)??{},Ye={...De},ot={...b.value[ke]??{}},We=me.status??_e??"pending",et=j(ke,me);if(et===null)return;let st=!1;for(const Me of O){const Se=I(et,Me);if(Se===null)continue;const{value:Ie,isComplete:ze}=Se,Ze=ze?We==="error"||We==="stop"?We:"complete":We;(De[Me]!==Ie||Ze==="complete")&&(Ye[Me]=Ie,ot[Me]=Ie,p.value={...p.value,[Me]:Ie},st=!0,a==null||a({messageId:ke,contentId:me.id,type:me.type,tag:Me,value:Ie,attrs:Se.attrs,children:Se.children,status:Ze}))}st&&(C.set(Te,Ye),b.value={...b.value,[ke]:ot})},$=(ke,me,_e)=>{var De;if(!me||me.role!=="assistant")return;const Te=me;(De=Te.content)==null||De.forEach(Ye=>H(ke,Ye,_e??Te.status))},G=(ke,me)=>{if(typeof me!="object"||me===null)return me;const _e={...ke};for(const Te in me){const De=me[Te],Ye=_e[Te];if(Array.isArray(De))_e[Te]=[...Array.isArray(Ye)?Ye:[],...De];else if(typeof De=="object"&&De!==null){const ot=typeof Ye=="object"&&Ye!==null?Ye:{};_e[Te]=G(ot,De)}else De!==void 0&&(_e[Te]=De)}return _e},q=(ke,me)=>{typeof ke.data=="string"?ke.data+=me:typeof ke.data=="object"&&ke.data!==null&&"text"in ke.data&&typeof me=="string"&&(ke.data.text=(ke.data.text||"")+me)},re=ke=>{const{messageId:me,contentId:_e,type:Te,data:De,strategy:Ye,status:ot}=ke,We=E(me);if(!We||We.role!=="assistant")return;const et=D(We,_e);if(et){if(ot&&(et.status=ot),(ot==="streaming"||Ye==="append"&&De)&&(We.status==="pending"&&(We.status="streaming"),k.value===me&&(A.value="streaming")),De==null){H(me,et,We.status);return}if(P(et)&&typeof De=="string"){const st=Q(me,et),Me=_.get(st)??et.data,Se=Ye==="append"?Me+De:De;_.set(st,Se),W(me,et)}else Ye==="append"?typeof De=="string"?q(et,De):typeof De=="object"&&(et.data=G(et.data,De)):typeof et.data=="object"&&typeof De=="object"?et.data={...et.data,...De}:et.data=De;!ot&&Ye==="append"&&(et.status="streaming"),H(me,et,We.status)}},J=()=>{g.value&&(g.value.on("message",ke=>{var _e,Te;const me={id:ke.id,role:ke.role,name:ke.name,status:ke.status||"pending",datetime:ke.datetime,content:ke.content||[],ext:ke.ext};if(ke.role==="assistant"&&((_e=me.content)==null||_e.forEach(Ye=>{P(Ye)&&(_.set(Q(ke.id,Ye),Ye.data),W(ke.id,Ye))})),f.value.push(me),ke.role==="assistant"){const De=me;(Te=De.content)==null||Te.forEach(Ye=>H(ke.id,Ye,De.status))}ke.role==="assistant"&&(k.value=ke.id,A.value=ke.status==="streaming"?"streaming":"pending")}),g.value.on("message:update",ke=>{const me=E(ke.id);me&&(ke.status&&(me.status=ke.status),ke.ext&&(me.ext={...me.ext,...ke.ext}),ke.status&&$(ke.id,me,ke.status),ke.status==="streaming"&&(A.value="streaming"),(ke.status==="complete"||ke.status==="error"||ke.status==="stop")&&k.value===ke.id&&(k.value=null,A.value="idle"))}),g.value.on("content:add",ke=>{const me=E(ke.messageId);if(!me||me.role!=="assistant")return;me.content||(me.content=[]);const _e={...ke.content,status:ke.content.status||"pending",...ke.content.type==="thinking"?{ext:{collapsed:!0,...ke.content.ext}}:{}};if(P(_e)&&(_.set(Q(ke.messageId,_e),_e.data),W(ke.messageId,_e)),_e.type==="thinking"){const Te=me.content.findIndex(De=>De.type!=="thinking");Te===-1?me.content.push(_e):me.content.splice(Te,0,_e)}else me.content.push(_e);H(ke.messageId,_e,me.status),_e.status==="streaming"&&me.status==="pending"&&(me.status="streaming")}),g.value.on("content:update",re),g.value.on("error",ke=>{console.error("[Chat Error]",ke),l==null||l(ke)}),g.value.on("connect",()=>{m.value=!0,v.value=!1,d==null||d()}),g.value.on("disconnect",ke=>{m.value=!1,v.value=!1,u==null||u(),console.log("[Chat Disconnected]",ke)}),g.value.on("connect_error",ke=>{m.value=!1,v.value=!1,console.error("[Chat Connect Error]",ke)}))},oe=()=>{var ke;(ke=g.value)!=null&&ke.connected||v.value||(v.value=!0,g.value?g.value.connect():(g.value=Zhe(t,{transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:5e3,timeout:1e4,auth:{token:localStorage.getItem("token"),...typeof n=="function"?n():n}}),J()))},se=()=>{var ke;(ke=g.value)==null||ke.disconnect(),m.value=!1,v.value=!1},le=()=>{se(),setTimeout(oe,100)},ue=(ke,me)=>{var _e;return(_e=g.value)!=null&&_e.connected?(g.value.emit(ke,me),!0):(console.warn("[Chat] Socket not connected"),!1)},ee=(ke,me)=>{var _e;return(_e=g.value)==null||_e.on(ke,me),()=>{var Te;return(Te=g.value)==null?void 0:Te.off(ke,me)}},de=(ke,me)=>{var _e;(_e=g.value)==null||_e.once(ke,me)},z=(ke,me)=>{var _e;(_e=g.value)==null||_e.off(ke,me)},Y=(ke,me)=>{if(!ke.trim()&&!(me!=null&&me.length))return!1;const _e={id:`user_${Date.now()}`,role:"user",status:"complete",datetime:new Date().toISOString(),content:[{type:"text",data:ke,status:"complete"}]};return me!=null&&me.length&&_e.content.push({type:"attachment",data:me,status:"complete"}),f.value.push(_e),ue("chat",{content:ke,attachments:me})},ie=ke=>{const me=ke||k.value;if(!me)return!1;const _e=E(me);return _e&&(_e.status="stop"),k.value=null,A.value="idle",ue("stop",{messageId:me})},te=ke=>ue("regenerate",{messageId:ke}),Z=()=>{f.value=[],k.value=null,A.value="idle",p.value={},b.value={},C.clear(),_.clear()},he=ke=>{var _e;const me=T(ke);if(me>-1){const Te=f.value[me];(_e=Te==null?void 0:Te.content)==null||_e.forEach(Ye=>{C.delete(Q(ke,Ye)),_.delete(Q(ke,Ye))});const De={...b.value};delete De[ke],b.value=De,f.value.splice(me,1)}},pe=ke=>{const me=T(ke);me>-1&&f.value.splice(me+1)},Ce=(ke,me)=>{const _e=E(ke);_e&&Object.assign(_e,me)},Qe=(ke,me)=>{var Te;const _e=E(ke);return!_e||_e.role!=="assistant"?[]:((Te=_e.content)==null?void 0:Te.filter(De=>De.type===me))||[]};return h?(An(()=>{r&&oe()}),Qa(()=>{var ke;se(),(ke=g.value)==null||ke.removeAllListeners(),g.value=null})):r&&oe(),{socket:g,connected:m,connecting:v,status:A,messages:f,currentMessageId:k,xmlData:p,xmlDataByMessage:b,isGenerating:S,lastMessage:L,connect:oe,disconnect:se,reconnect:le,emit:ue,on:ee,once:de,off:z,chat:Y,stopGenerate:ie,regenerate:te,clearMessages:Z,removeMessage:he,removeMessagesAfter:pe,updateMessage:Ce,findMessage:E,getContentByType:Qe}}const nRe=new Map;function Dvs(e){return nRe.has(e)||nRe.set(e,Wy(`scriptAgent-${e}`,()=>{const t=fe({storySkeleton:"",adaptationStrategy:"",script:[]}),{connected:n,messages:r,chat:o,stopGenerate:s,socket:a,status:l,disconnect:d,connect:u}=mYn({url:`${ku().baseUrl}/socket/scriptAgent`,auth:()=>({isolationKey:`${e}:scriptAgent`,projectId:e}),manageLifecycle:!1,xmlTags:[{tag:"storySkeleton",keepInMessage:!1},{tag:"adaptationStrategy",keepInMessage:!1},{tag:"scriptItem",keepInMessage:!1}],onXmlTag:g=>{const{tag:m,value:v,children:f,status:k,attrs:A}=g;if(m==="storySkeleton")t.value.storySkeleton=v;else if(m==="adaptationStrategy")t.value.adaptationStrategy=v;else if(m==="scriptItem"){const p=A.name??"",b=v;if(p){const w=t.value.script.findIndex(O=>O.name===p);w!==-1?t.value.script[w].content=b:t.value.script.push({name:p,content:b})}}k==="complete"&&h()},autoConnect:!1});pt(a,g=>{g&&g.on("getPlanData",(m,v)=>{v(t.value)})},{immediate:!0});async function h(){await mn.post("/scriptAgent/setPlanData",{projectId:e,agentType:"scriptAgent",data:t.value})}return{connected:n,messages:r,chat:o,stopGenerate:s,socket:a,status:l,planData:t,setPlanData:h,connect:u,disconnect:d}})),nRe.get(e)}function R7(){var t;const e=(t=ph().project)==null?void 0:t.id;if(!e)throw new Error("No project selected");return Dvs(e)()}const iRe=new Map;function Bvs(e){return iRe.has(e)||iRe.set(e,Wy(`productionAgent-${e}`,()=>{const t=[{id:"welcome",role:"assistant",content:[{type:"text",status:"complete",data:$t("workbench.production.chatBox.welcomeMessage")},{type:"suggestion",status:"complete",data:[{title:$t("workbench.production.chatBox.startMakingVideo"),prompt:$t("workbench.production.chatBox.startMakingVideoPrompt")}]}]}];An(()=>{s.value.length<=0&&(s.value=[...t,...s.value])});const n=fe({script:"",scriptPlan:"",storyboardTable:"",assets:[],storyboard:[],workbench:{videoList:[]}}),r=fe(),{connected:o,messages:s,chat:a,stopGenerate:l,socket:d,status:u,reconnect:h,connect:g}=mYn({url:`${ku().baseUrl}/socket/productionAgent`,auth:()=>({isolationKey:`${e}:productionAgent:${r.value}`,projectId:e,scriptId:r.value}),manageLifecycle:!1,autoConnect:!1,xmlTags:[{tag:"script",keepInMessage:!1},{tag:"scriptPlan",keepInMessage:!1},{tag:"storyboardTable",keepInMessage:!1},{tag:"storyboardItem",keepInMessage:!1}],onXmlTag:async R=>{const{tag:I,value:F,children:j,attrs:W,status:H}=R;if(I==="script")n.value.script=F??"";else if(I==="scriptPlan")n.value.scriptPlan=F??"";else if(I==="storyboardTable")n.value.storyboardTable=F??"";else if(I==="storyboardItem"&&H==="complete"){const $=W.prompt??"",G=Number(W.duration)||0,q=W.track||"",re=W.shouldGenerateImage=="true"?1:0,J=(W==null?void 0:W.videoDesc)??"",oe=n.value.storyboard.findIndex(se=>se.prompt==$&&se.duration==G&&J==se.videoDesc);oe!==-1?n.value.storyboard[oe].prompt=$:(n.value.storyboard.push({prompt:$||"",duration:Number(G)||0,state:"未生成",src:null,associateAssetsIds:JSON.parse(W.associateAssetsIds)||[],videoDesc:J,shouldGenerateImage:re}),await Q([{prompt:$||"",duration:Number(G)||0,track:q||"",state:"未生成",src:null,videoDesc:J,shouldGenerateImage:re,associateAssetsIds:JSON.parse(W.associateAssetsIds)||[]}]))}H=="complete"&&m()}}),m=_yi(()=>{v(r.value)},500,!0,!0);pt(d,R=>{R&&(R.on("connect",()=>{B()}),R.on("getFlowData",(I,F)=>{F(n.value)}),R.on("addDeriveAsset",async(I,F)=>{const j=n.value.assets.find($=>$.id===I.assetsId);if(!j)return F({success:!1,message:$t("storyboard.assets.notExist")});const W=j.derive||[],H=W.find($=>$.id===I.id);if(H){if(!H)return F({success:!1,message:$t("storyboard.assets.notDerivativeExist")});H.name=I.name,H.type=j.type,F({success:!0,message:$t("storyboard.assets.derivativeUpdateSuccess")})}else W.push({assetsId:I.assetsId,id:I.id,name:I.name,type:j.type,desc:I.describe,prompt:"",state:"未生成",src:""}),F({success:!0,message:$t("storyboard.assets.derivativeAddSuccess")})}),R.on("delDeriveAsset",async(I,F)=>{const j=n.value.assets.find($=>$.id===I.assetsId);if(!j)return F({success:!1,message:$t("storyboard.assets.notExist")});const W=j.derive||[],H=W.findIndex($=>$.id===I.id);if(H===-1)return F({success:!1,message:$t("storyboard.assets.notDerivativeExist")});W.splice(H,1),F({success:!0,message:$t("storyboard.assets.derivativeDelSuccess")})}),R.on("generateDeriveAsset",async(I,F)=>{const j=await A(I.ids);F({success:!0,message:j})}),R.on("generateStoryboard",async(I,F)=>{const j=await k(I.ids);F({success:!0,message:j})}))},{immediate:!0});async function v(R){await mn.post("/production/saveFlowData",{projectId:e,data:n.value,episodesId:R||r.value})}async function f(){const{data:R}=await mn.post("/production/getFlowData",{projectId:e,episodesId:r.value});n.value=R}async function k(R){n.value.storyboard.forEach(F=>{R.includes(F.id)&&(F.state="生成中")});const{data:I}=await mn.post("/production/storyboard/batchGenerateImage",{scriptId:r.value,projectId:e,storyboardIds:R,script:n.value.script,scriptPlan:n.value.scriptPlan,storyboardTable:n.value.storyboardTable,assets:n.value.assets});if(I){if(n.value.storyboard.length===0)return n.value.storyboard=I,I;n.value.storyboard.forEach(F=>{const j=I.find(W=>W.id==F.id);j&&(F.state=j.state,F.src=j.src)})}return I}async function A(R){n.value.assets.forEach(I=>{I.derive&&I.derive.forEach(F=>{R.includes(F.id)&&(F.state="生成中")})});try{const{data:I}=await mn.post("/production/assets/batchGenerateAssetsImage",{assetIds:R,projectId:e,scriptId:r.value,concurrentCount:ku().otherSetting.assetsBatchGenereateSize});return I&&I.forEach(F=>{n.value.assets.forEach(j=>{j.derive&&j.derive.forEach(W=>{W.id===F.id&&(W.state=F.state,W.src=F.src)})})}),I}catch{}}const p=X(()=>{const R=[];return n.value.assets.forEach(I=>{I.derive&&I.derive.forEach(F=>{F.state=="生成中"&&R.push(F.id)})}),R}),b=X(()=>{const R=[];return n.value.storyboard.forEach(I=>{I.state=="生成中"&&I.id&&R.push(I.id)}),R});let w=null,O=!1;async function y(){const R=p.value;if(!(R.length===0||O)){O=!0;try{const{data:I}=await mn.post("/production/assets/pollingImage",{ids:R});if(!I||I.length===0)return;I.forEach(j=>{n.value.assets.forEach(W=>{W.derive&&W.derive.forEach(H=>{H.id===j.id&&(H.state=j.state,j.src&&(H.src=j.src),H.errorReason=(j==null?void 0:j.errorReason)??"",H.prompt=(j==null?void 0:j.prompt)??"")})})})}catch(I){console.error("[assetsPolling] error",I)}finally{O=!1}}}function C(){w||(w=window.setInterval(async()=>{if(p.value.length===0){_();return}await y()},5e3),y())}function _(){w&&(clearInterval(w),w=null)}pt(()=>p.value,R=>{R.length>0?C():_()});let S=null,L=!1;async function E(){const R=b.value;if(!(R.length===0||L)){L=!0;try{const{data:I}=await mn.post("/production/storyboard/pollingImage",{ids:R});if(!I||I.length===0)return;I.forEach(j=>{const W=n.value.storyboard.find(H=>H.id===j.id);W&&(W.state=j.state,j.src&&(W.src=j.src),W.reason=(j==null?void 0:j.reason)??"")})}catch(I){console.error("[storyboardPolling] error",I)}finally{L=!1}}}function T(){S||(S=window.setInterval(async()=>{if(b.value.length===0){D();return}await E()},5e3),E())}function D(){S&&(clearInterval(S),S=null)}pt(()=>b.value,R=>{R.length>0?T():D()});function P(){if(r.value<0)return;const R={isolationKey:`${e}:productionAgent:${r.value}`,projectId:e,scriptId:r.value};o.value||g(),d.value.emit("updateContext",R)}async function Q(R){const{data:I}=await mn.post("/production/storyboard/batchAddStoryboardInfo",{scriptId:r.value,data:R,projectId:e});n.value.storyboard.forEach(F=>{const j=I.find(W=>W.prompt==F.prompt&&W.duration==F.duration);j&&(F.id=j.id,F.trackId=j.trackId,F.src=j.src,F.state=j.state,F.associateAssetsIds=j.associateAssetsIds)})}const M=fe(!1);async function B(){M.value=!0;const{data:R}=await mn.post("/agents/getMemory",{projectId:e,episodesId:r.value,agentType:"productionAgent"});s.value=[],s.value=[...t,...R],M.value=!1}return{connected:o,messages:s,chat:a,stopGenerate:l,socket:d,status:u,flowData:n,setFlowData:v,getFlowData:f,episodesId:r,stopAssetsPolling:_,stopStoryboardPolling:D,updateContext:P,getHistory:B,loadingHistory:M,batchGenerateStoryboard:k,reconnect:h}})),iRe.get(e)}function g0(){var t;const e=(t=ph().project)==null?void 0:t.id;if(!e)throw new Error("No project selected");return Bvs(e)()}const Rvs={class:"scriptAgent"},Ivs={class:"box pr"},Mvs={class:"settingMenu"},Pvs={key:0,class:"forceGenerateMask"},Fvs={class:"forceGenerateCard"},Nvs={class:"forceGenerateDesc"},Uvs={class:"forceGenerateActions"},jvs={class:"tabsWrapper"},Wvs={key:0,class:"ac"},Vvs={key:1,class:"ac"},zvs={class:"panelContent"},Hvs={class:"panelContent"},$vs={class:"panelContent"},Xvs={key:1,class:"scriptList"},Gvs={class:"scriptCardHeader"},Yvs={class:"scriptCardHeaderLeft"},Zvs={class:"scriptIndex"},qvs={class:"scriptTitle"},Kvs={class:"scriptCardActions"},Jvs={class:"scriptCardBody"},eAs={key:0},tAs={key:1,class:"emptyContent"},nAs={class:"scriptEditForm"},iAs={class:"scriptEditField"},rAs={class:"scriptEditField"},oAs=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{connected:n,messages:r,status:o,planData:s}=xs(R7()),a=fe(1),l=fe(""),d=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"],u=[{id:"welcome",role:"assistant",content:[{type:"text",status:"complete",data:$t("workbench.scriptAgent.welcomeMsg")},{type:"suggestion",status:"complete",data:[{title:$t("workbench.scriptAgent.start"),prompt:$t("workbench.scriptAgent.start")}]}]}];An(()=>{r.value.length<=0&&(r.value=[...u,...r.value]),g(),C(),R7().connect(),r.value.length<=1&&w()});const h=fe();async function g(){var I;const{data:R}=await mn.post("/scriptAgent/getPlanData",{projectId:(I=t.value)==null?void 0:I.id,agentType:"scriptAgent"});s.value.storySkeleton=R.data.storySkeleton,s.value.adaptationStrategy=R.data.adaptationStrategy,s.value.script=R.data.script||[],h.value=R.id}const m={suggestion:R=>{var I;R7().chat((I=R==null?void 0:R.content)==null?void 0:I.prompt)}};function v(R){R7().chat(R),l.value=""}function f(){R7().stopGenerate()}const k={message:$t("workbench.scriptAgent.memoryType.message"),summary:$t("workbench.scriptAgent.memoryType.summary"),all:$t("workbench.scriptAgent.memoryType.all")};function A(R){const I=fo.confirm({header:$t("workbench.scriptAgent.msg.clearConfirm"),body:$t("workbench.scriptAgent.msg.clearBody",{type:k[R]}),confirmBtn:$t("workbench.scriptAgent.msg.confirmClear"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{var F;await mn.post("/agents/clearMemory",{projectId:(F=t.value)==null?void 0:F.id,agentType:"scriptAgent",type:R}),window.$message.success($t("workbench.scriptAgent.msg.memoryCleared",{type:k[R]})),I.destroy(),w()}})}function p(){const R=fo.confirm({header:$t("workbench.scriptAgent.msg.reconnect"),body:$t("workbench.scriptAgent.msg.notReconnect"),confirmBtn:$t("workbench.scriptAgent.msg.keepReconnect"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{g0().reconnect(),R.destroy()}})}const b=fe(!1);async function w(){var I;b.value=!0;const{data:R}=await mn.post("/agents/getMemory",{projectId:(I=t.value)==null?void 0:I.id,agentType:"scriptAgent"});r.value=[...u,...R],b.value=!1}const O=fe(!1),y=fe([]);function C(){var R;mn.post("/novel/getNovelData",{projectId:(R=t.value)==null?void 0:R.id}).then(({data:I})=>{y.value=I,y.value.some(j=>j.eventState===0)&&!O.value&&(O.value=!0)})}const _=fe(!1),S=fe("");function L(){a.value==1?S.value=s.value.storySkeleton:a.value==2&&(S.value=s.value.adaptationStrategy),_.value=!0}const E=fe(-1),T=fe({name:"",content:""}),D=fe(!1);function P(R){const I=s.value.script[R];E.value=R,T.value={name:I.name,content:I.content},D.value=!0}async function Q(){E.value<0||(s.value.script[E.value]={...T.value},await R7().setPlanData(),await g(),window.$message.success($t("workbench.scriptAgent.msg.scriptUpdated")),D.value=!1)}async function M(R){const I=s.value.script[R],F=fo.confirm({header:$t("workbench.scriptAgent.msg.deleteConfirm"),body:$t("workbench.scriptAgent.msg.deleteBody"),confirmBtn:$t("workbench.scriptAgent.msg.confirmDelete"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"danger",onConfirm:async()=>{I.id&&await mn.post("/script/delScript",{id:[I.id]}),s.value.script.splice(R,1),await R7().setPlanData(),await g(),window.$message.success($t("workbench.scriptAgent.msg.scriptDeleted")),F.destroy()}})}function B(R){mn.post("/scriptAgent/updateData",{id:h.value,data:{storySkeleton:a.value==1?R:s.value.storySkeleton,adaptationStrategy:a.value==2?R:s.value.adaptationStrategy,script:s.value.script}}).then(()=>{window.$message.success($t("workbench.scriptAgent.msg.updated")),g()}).catch(I=>{window.$message.success($t("workbench.scriptAgent.msg.error"))})}return(R,I)=>{const F=tYn,j=JGn,W=_n("i-setting-config"),H=Si,$=_n("i-api"),G=_n("i-delete"),q=_n("i-close"),re=_n("i-delete-one"),J=y1,oe=eYn,se=_n("i-dot"),le=Xy,ue=Mne,ee=_n("i-edit"),de=Ine,z=gc;return xe(),Ge("div",Rvs,[c(Ae(wGe),{class:"default-theme data f"},{default:Oe(()=>[c(Ae(PT),{size:30,"min-size":15,class:"operate"},{default:Oe(()=>[ge("div",Ivs,[c(j,{"clear-history":!1},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(r),Y=>(xe(),Ut(F,{key:Y.id,message:Y,name:Y.name,placement:Y.role==="user"?"right":"left",variant:Y.role==="user"?"base":"outline",handleActions:Y.role==="user"?{}:m,status:Y.status,allowContentSegmentCustom:""},null,8,["message","name","placement","variant","handleActions","status"]))),128))]),_:1}),c(oe,{class:"inputBox",disabled:Ae(o)==="pending"||Ae(o)==="streaming",modelValue:Ae(l),"onUpdate:modelValue":I[4]||(I[4]=Y=>Fn(l)?l.value=Y:null),loading:Ae(o)==="pending"||Ae(o)==="streaming",placeholder:"$t('workbench.scriptAgent.inputPlaceholder')",onSend:v,onStop:f},{"footer-prefix":Oe(()=>[c(J,{trigger:"click",placement:"top-left"},{content:Oe(()=>[ge("div",Mvs,[ge("div",{class:"settingMenuItem",onClick:I[0]||(I[0]=Y=>p())},[c($,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.reconnect")),1)]),ge("div",{class:"settingMenuItem",onClick:I[1]||(I[1]=Y=>A("message"))},[c(G,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearMessageMemory")),1)]),ge("div",{class:"settingMenuItem",onClick:I[2]||(I[2]=Y=>A("summary"))},[c(q,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearSummaryMemory")),1)]),ge("div",{class:"settingMenuItem danger",onClick:I[3]||(I[3]=Y=>A("all"))},[c(re,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearAllMemory")),1)])])]),default:Oe(()=>[c(H,{shape:"square",variant:"outline",size:"small",disabled:Ae(o)==="pending"||Ae(o)==="streaming"},{icon:Oe(()=>[c(W,{size:"16"})]),_:1},8,["disabled"])]),_:1})]),_:1},8,["disabled","modelValue","loading"]),c(se,{class:"dot",theme:"outline",fill:Ae(n)?"green":"red"},null,8,["fill"]),c(A8,{name:"fade"},{default:Oe(()=>[Ae(O)?(xe(),Ge("div",Pvs,[ge("div",Fvs,[ge("div",Nvs,Pe(R.$t("workbench.scriptAgent.forceGenerate.desc")),1),ge("div",Uvs,[c(H,{onClick:I[5]||(I[5]=Y=>O.value=!1)},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.forceGenerate.confirm")),1)]),_:1})])])])):nn("",!0)]),_:1})])]),_:1}),c(Ae(PT),{size:70,"min-size":30,class:"data"},{default:Oe(()=>[ge("div",jvs,[c(de,{modelValue:Ae(a),"onUpdate:modelValue":I[6]||(I[6]=Y=>Fn(a)?a.value=Y:null)},{action:Oe(()=>[Ae(a)==1?(xe(),Ge("div",Wvs,[c(H,{onClick:L},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.edit")),1)]),_:1})])):Ae(a)==2?(xe(),Ge("div",Vvs,[c(H,{onClick:L},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.edit")),1)]),_:1})])):nn("",!0)]),default:Oe(()=>[c(ue,{value:1,label:R.$t("workbench.scriptAgent.storySkeleton")},{default:Oe(()=>[ge("div",zvs,[Ae(s).storySkeleton?(xe(),Ut(Ae(i3),{key:0,modelValue:Ae(s).storySkeleton},null,8,["modelValue"])):(xe(),Ut(le,{key:1,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]),_:1},8,["label"]),c(ue,{value:2,label:R.$t("workbench.scriptAgent.adaptationStrategy")},{default:Oe(()=>[ge("div",Hvs,[Ae(s).adaptationStrategy?(xe(),Ut(Ae(i3),{key:0,modelValue:Ae(s).adaptationStrategy},null,8,["modelValue"])):(xe(),Ut(le,{key:1,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]),_:1},8,["label"]),c(ue,{value:3,label:R.$t("workbench.scriptAgent.script")},{default:Oe(()=>{var Y;return[ge("div",$vs,[(Y=Ae(s).script)!=null&&Y.length?(xe(),Ge("div",Xvs,[(xe(!0),Ge(sn,null,Bi(Ae(s).script,(ie,te)=>(xe(),Ge("div",{key:te,class:"scriptCard"},[ge("div",Gvs,[ge("div",Yvs,[ge("span",Zvs,"#"+Pe(te+1),1),ge("span",qvs,Pe(ie.name),1)]),ge("div",Kvs,[c(H,{size:"small",onClick:Z=>P(te)},{icon:Oe(()=>[c(ee,{size:"14"})]),_:1},8,["onClick"]),c(H,{theme:"danger",variant:"outline",size:"small",onClick:Z=>M(te)},{icon:Oe(()=>[c(G,{size:"14"})]),_:1},8,["onClick"])])]),ge("div",Jvs,[ie.content?(xe(),Ge("pre",eAs,Pe(ie.content),1)):(xe(),Ge("span",tAs,Pe(R.$t("workbench.scriptAgent.noContent")),1))])]))),128))])):(xe(),Ut(le,{key:0,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]}),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})]),_:1}),c(F2s,{modelValue:Ae(_),"onUpdate:modelValue":I[7]||(I[7]=Y=>Fn(_)?_.value=Y:null),onSave:B,content:Ae(S)},null,8,["modelValue","content"]),c(z,{visible:Ae(D),"onUpdate:visible":I[10]||(I[10]=Y=>Fn(D)?D.value=Y:null),header:R.$t("workbench.scriptAgent.editScript"),width:"80%",top:"10vh",placement:"center","confirm-btn":{content:R.$t("workbench.scriptAgent.save"),theme:"primary"},onConfirm:Q,onClose:I[11]||(I[11]=Y=>D.value=!1)},{default:Oe(()=>[ge("div",nAs,[ge("div",iAs,[ge("strong",null,Pe(Ae(T).name),1)]),ge("div",rAs,[ge("label",null,Pe(R.$t("workbench.scriptAgent.content")),1),c(Ae(X4),{modelValue:Ae(T).content,"onUpdate:modelValue":I[8]||(I[8]=Y=>Ae(T).content=Y),theme:"light",toolbars:d,footers:[],style:{height:"50vh"},onOnUploadImg:()=>{},onDrop:I[9]||(I[9]=Mr(()=>{},["prevent"]))},null,8,["modelValue"])])])]),_:1},8,["visible","header","confirm-btn"])])}}}),sAs=oo(oAs,[["__scopeId","data-v-261a295a"]]),aAs=Object.freeze(Object.defineProperty({__proto__:null,default:sAs},Symbol.toStringTag,{value:"Module"})),lAs=Je({__name:"imageTools",props:{src:{},placement:{},position:{},margin:{}},setup(e){const t=e,n=X(function(){return t.placement||"bottom"}),r=X(function(){const d=t.margin??"4px",u=t.position||"none";return{br:{position:"absolute",bottom:d,right:d},bl:{position:"absolute",bottom:d,left:d},tr:{position:"absolute",top:d,right:d},tl:{position:"absolute",top:d,left:d},none:{margin:d}}[u]}),o=fe(!1);function s(){o.value=!0}async function a(){try{const d=new Image;d.crossOrigin="anonymous",d.src=t.src,await new Promise(function(m,v){d.onload=function(){m()},d.onerror=function(){v(new Error($t("components.imageTools.msg.imageLoadFailed")))}});const u=document.createElement("canvas");u.width=d.naturalWidth,u.height=d.naturalHeight,u.getContext("2d").drawImage(d,0,0);const g=await new Promise(function(m,v){u.toBlob(function(f){if(f){m(f);return}v(new Error($t("components.imageTools.msg.convertFailed")))},"image/png")});await navigator.clipboard.write([new ClipboardItem({"image/png":g})]),window.$message.success($t("components.imageTools.msg.copied"))}catch{window.$message.error($t("components.imageTools.msg.copyFailed"))}}async function l(){let d="";try{const u=await fetch(t.src,{mode:"cors"});if(!u.ok)throw new Error($t("components.imageTools.msg.downloadFailed"));const h=await u.blob();d=URL.createObjectURL(h);const g=document.createElement("a");g.href=d,g.download=t.src.split("/").pop()||"image",document.body.appendChild(g),g.click(),document.body.removeChild(g),window.$message.success($t("components.imageTools.msg.downloadStarted"))}catch{const u=document.createElement("a");u.href=t.src,u.download=t.src.split("/").pop()||"image",u.target="_blank",u.rel="noopener noreferrer",document.body.appendChild(u),u.click(),document.body.removeChild(u),window.$message.warning($t("components.imageTools.msg.downloadBlockedOpenNewWindow"))}finally{d&&URL.revokeObjectURL(d)}}return(d,u)=>{const h=_n("i-copy"),g=Si,m=el,v=_n("i-expand-text-input"),f=hL,k=_n("i-download");return xe(),Ge("div",{class:"imageTools",style:no(Ae(r))},[c(m,{theme:"primary",content:d.$t("components.imageTools.copy"),placement:Ae(n)},{default:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(a,["stop"])},{icon:Oe(()=>[c(h,{size:"16"})]),_:1})]),_:1},8,["content","placement"]),c(m,{theme:"primary",content:d.$t("components.imageTools.preview"),placement:Ae(n)},{default:Oe(()=>[c(f,{visible:Ae(o),"onUpdate:visible":u[0]||(u[0]=A=>Fn(o)?o.value=A:null),images:[t.src]},{trigger:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(s,["stop"])},{icon:Oe(()=>[c(v,{size:"16"})]),_:1})]),_:1},8,["visible","images"])]),_:1},8,["content","placement"]),c(m,{theme:"primary",content:d.$t("components.imageTools.download"),placement:Ae(n)},{default:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(l,["stop"])},{icon:Oe(()=>[c(k,{size:"16"})]),_:1})]),_:1},8,["content","placement"])],4)}}}),jre=oo(lAs,[["__scopeId","data-v-5144fc67"]]),cAs={class:"cornerScape f"},dAs={class:"left"},uAs={class:"quickActions"},hAs={class:"content"},fAs={class:"imageBox"},gAs={key:1,class:"generatingBox"},mAs={class:"generatingText"},kAs={class:"imageToolsWrap"},vAs={class:"infoBox"},AAs={class:"title"},pAs={class:"meta"},bAs={key:0,class:"prompt"},wAs={class:"drawerHeader"},OAs={key:0,class:"drawerImageBox"},yAs={key:1,class:"generatingBox"},CAs={class:"generatingText"},_As={class:"imageToolsWrap show"},SAs={class:"historyImageList f"},LAs=["onClick"],xAs={class:"drawerActions"},EAs=Je({__name:"index",setup(e){var le;const{otherSetting:t}=xs(ku()),n=fe([]),{project:r}=xs(ph()),o=fe(((le=r.value)==null?void 0:le.imageModel)??""),s=fe("1K"),a=[{label:"1K",value:"1K"},{label:"2K",value:"2K"},{label:"4K",value:"4K"}],l=fe([{labelKey:"workbench.cornerScape.filterRole",value:"role"},{labelKey:"workbench.cornerScape.filterScene",value:"scene"},{labelKey:"workbench.cornerScape.filterTool",value:"tool"}]),d=X(()=>l.value.map(ue=>({...ue,label:$t(ue.labelKey)}))),u=fe([]),h=fe(!1);let g=null;function m(){return g==null||g.abort(),g=new AbortController,g}An(()=>{f()}),Qa(()=>{g&&(g.abort(),u.value,g=null),J(),se(),u.value.forEach(ue=>{ue.state==="生成中"&&(ue.state="")})});function v(){f()}async function f(){var ue;try{h.value=!0;const{data:ee}=await mn.post("/cornerScape/getAllAssets",{projectId:(ue=r.value)==null?void 0:ue.id,type:n.value});u.value=ee}catch(ee){console.error("加载资产数据失败:",ee),u.value=[]}finally{h.value=!1}}const k=fe([]),A=X(()=>{const ue=u.value.filter(ee=>k.value.includes(ee.id)&&ee.filePath).map(ee=>ee.filePath);return ue.length>0?ue:u.value.filter(ee=>ee.filePath).map(ee=>ee.filePath)}),p=X(()=>A.value.length>0),b=ue=>{const ee=k.value.indexOf(ue);ee===-1?k.value.push(ue):k.value.splice(ee,1)},w=ue=>{k.value=u.value.filter(ee=>ue===""?!ee.state:ee.state===ue).map(ee=>ee.id)};function O(){const ue=u.value.filter(ee=>!ee.prompt||ee.prompt.trim()==="").map(ee=>ee.id);if(ue.length===0){window.$message.warning($t("workbench.cornerScape.noEmptyPrompt"));return}k.value=ue,window.$message.success($t("workbench.cornerScape.selectedCount",{count:k.value.length}))}function y(){k.value.length===u.value.length?k.value=[]:k.value=u.value.map(ue=>ue.id)}function C(){k.value=[]}const _=fe(!1),S=fe(null),L=fe(null);async function E(ue){var de;if(L.value=L.value===ue?null:ue,!S.value)return;const ee=S.value.historyImages.find(z=>z.id===L.value);try{await mn.post("/assets/saveAssets",{id:S.value.id,type:S.value.type,projectId:(de=r.value)==null?void 0:de.id,prompt:S.value.prompt,imageId:ee==null?void 0:ee.id}),ee&&(S.value.filePath=ee.filePath,S.value.state="已完成"),f(),window.$message.success($t("workbench.cornerScape.msg.replaceSuccess"))}catch{window.$message.error($t("workbench.cornerScape.msg.replaceFailed"));return}}const T=hs({assetsId:0,model:"",type:"",resolution:"",prompt:"",name:"",describe:"",promptState:""});async function D(ue){var ee;L.value=null,T.assetsId=ue.id,T.name=ue.name||"",T.type=ue.type||"",T.model=ue.model||"",S.value=ue,T.resolution=ue.resolution||"",T.prompt=ue.prompt||"",T.describe=ue.describe||"",T.promptState=ue.promptState,_.value=!0;try{const{data:de}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value}),z=de.find(Y=>Y.id===ue.id);if(z){const Y=u.value.findIndex(ie=>ie.id===ue.id);Y!==-1&&(u.value[Y]=z),S.value=z,T.prompt=z.prompt||T.prompt,T.resolution=z.resolution||T.resolution}}catch(de){console.error("刷新资产详情失败:",de)}}function P(ue,ee){var z;const de=u.value.find(Y=>Y.id===ue);de&&(de.state=ee),((z=S.value)==null?void 0:z.id)===ue&&(S.value.state=ee)}function Q(){var de;if(!S.value)return;if(!o.value){window.$message.warning($t("workbench.cornerScape.msg.selectModel"));return}if(!T.resolution){window.$message.warning($t("workbench.cornerScape.msg.selectResolution"));return}if(!T.prompt.trim()){window.$message.warning($t("workbench.cornerScape.msg.enterPrompt"));return}const ue=S.value;P(ue.id,"生成中"),_.value=!1;const ee=m();mn.post("/assetsGenerate/generateAssets",{type:ue.type??"props",projectId:(de=r.value)==null?void 0:de.id,name:ue.name??$t("workbench.cornerScape.unnamed"),base64:"",prompt:T.prompt,model:o.value,id:ue.id,resolution:T.resolution,concurrentCount:1},{signal:ee.signal}).then(async()=>{window.$message.success($t("workbench.cornerScape.msg.genSuccess",{name:ue.name})),await f()}).catch(z=>{z.name==="CanceledError"||z.code==="ERR_CANCELED"||(window.$message.error(z.message??$t("workbench.cornerScape.msg.genFailed",{name:ue.name})),P(ue.id,"生成失败"))})}async function M(){var ue;if(S.value&&T.prompt!==S.value.prompt)try{await mn.post("/assets/saveAssets",{id:S.value.id,type:S.value.type,projectId:(ue=r.value)==null?void 0:ue.id,prompt:T.prompt}),S.value.prompt=T.prompt;const ee=u.value.find(de=>de.id===S.value.id);ee&&(ee.prompt=T.prompt),window.$message.success($t("workbench.cornerScape.msg.saveSuccess"))}catch{window.$message.error($t("workbench.cornerScape.msg.saveFailed"))}}const B=fe(!1);async function R(){var ue;if(!T.prompt.trim()){window.$message.warning($t("workbench.cornerScape.msg.enterPromptFirst"));return}B.value=!0;try{const{data:ee}=await mn.post("/assetsGenerate/polishAssetsPrompt",{projectId:(ue=r.value)==null?void 0:ue.id,assetsId:T.assetsId,type:T.type??"props",name:T.name,describe:T.describe});window.$message.success($t("workbench.cornerScape.msg.promptGenSuccess")),ee.assetsId===T.assetsId&&(T.prompt=ee.prompt),f()}catch{window.$message.error($t("workbench.cornerScape.msg.polishFailed"))}finally{B.value=!1}}async function I(){var ee;if(k.value.length===0){window.$message.warning($t("workbench.cornerScape.msg.selectAtLeastOne"));return}const ue=u.value.filter(de=>k.value.includes(de.id));ue.forEach(de=>{de.promptState="生成中"}),k.value=[];try{await mn.post("/assetsGenerate/batchPolishAssetsPrompt",{projectId:(ee=r.value)==null?void 0:ee.id,items:ue.map(de=>({assetsId:de.id,type:de.type??"props",name:de.name,describe:de.describe})),concurrentCount:t.value.assetsBatchGenereateSize})}catch(de){window.$message.error(de.message??$t("workbench.cornerScape.msg.promptGenFail")),ue.forEach(z=>{const Y=u.value.find(ie=>ie.id===z.id);Y&&(Y.promptState="")})}}async function F(){var de;if(k.value.length===0){window.$message.warning($t("workbench.cornerScape.msg.selectAtLeastOne"));return}if(!o.value){window.$message.warning($t("workbench.cornerScape.msg.selectModel"));return}if(!s.value){window.$message.warning($t("workbench.cornerScape.msg.selectResolution"));return}const ue=u.value.filter(z=>k.value.includes(z.id)),ee=ue.filter(z=>!z.prompt);if(ee.length>0){const z=ee.map(Y=>Y.name).join(", ");window.$message.warning($t("workbench.cornerScape.msg.emptyPrompt",{emptyPromptNames:z}));return}ue.forEach(z=>P(z.id,"生成中")),window.$message.success($t("workbench.cornerScape.msg.batchStarted",{count:ue.length,concurrent:t.value.assetsBatchGenereateSize}));try{await mn.post("/assetsGenerate/batchGenerateImageAssets",{projectId:(de=r.value)==null?void 0:de.id,model:o.value,resolution:s.value,concurrentCount:t.value.assetsBatchGenereateSize,items:ue.map(z=>({id:z.id,type:z.type??"props",name:z.name??$t("workbench.cornerScape.unnamed"),prompt:z.prompt}))})}catch(z){if(z.name==="CanceledError"||z.code==="ERR_CANCELED")return;window.$message.error(z.message??$t("workbench.cornerScape.msg.batchFailed"))}}const j=X(()=>u.value.filter(ue=>ue.promptState=="生成中")),W=X(()=>u.value.filter(ue=>ue.state==="生成中"));let H=null,$=null;async function G(){var ee;if(j.value.length===0)return;const ue=j.value.map(de=>de.id);try{const{data:de}=await mn.post("/assets/pollingPromptAssets",{ids:ue});let z=!1;if(Array.isArray(de)&&de.length&&de.forEach(Y=>{const ie=u.value.find(te=>te.id===Y.id);ie&&(ie.promptState==="生成中"&&Y.promptState!=="生成中"&&(z=!0),ie.promptState=Y.promptState,Y.prompt!==void 0&&(ie.prompt=Y.prompt))}),z)try{const{data:Y}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value});if(Y.forEach(ie=>{const te=u.value.find(Z=>Z.id===ie.id);te&&(te.historyImages=ie.historyImages)}),S.value){const ie=Y.find(te=>te.id===S.value.id);ie&&(S.value.historyImages=ie.historyImages)}}catch(Y){console.error("刷新历史图片失败:",Y)}}catch(de){console.error("轮询提示词状态失败:",de)}}async function q(){var ee;if(W.value.length===0)return;const ue=W.value.map(de=>de.id);try{const{data:de}=await mn.post("/assets/pollingImageAssets",{ids:ue});let z=!1;if(Array.isArray(de)&&de.length&&de.forEach(Y=>{const ie=u.value.find(te=>te.id===Y.id);ie&&(ie.state==="生成中"&&Y.state!=="生成中"&&(z=!0),ie.state=Y.state,Y.filePath!==void 0&&(ie.filePath=Y.filePath))}),z)try{const{data:Y}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value});if(Y.forEach(ie=>{const te=u.value.find(Z=>Z.id===ie.id);te&&(te.historyImages=ie.historyImages)}),S.value){const ie=Y.find(te=>te.id===S.value.id);ie&&(S.value.historyImages=ie.historyImages)}}catch(Y){console.error("刷新历史图片失败:",Y)}}catch(de){console.error("轮询图片生成状态失败:",de)}}function re(){H||(H=setInterval(async()=>{if(j.value.length===0){J();return}await G()},3e3))}function J(){H&&(clearInterval(H),H=null)}function oe(){$||($=setInterval(async()=>{if(W.value.length===0){se();return}await q()},3e3))}function se(){$&&(clearInterval($),$=null)}return pt(j,ue=>{ue.length>0?re():J()}),pt(W,ue=>{ue.length>0?oe():se()}),(ue,ee)=>{const de=Si,z=hL,Y=p2,ie=U4e,te=pA,Z=A2,he=km,pe=py,Ce=Xy,Qe=Wc,ke=y1,me=jre,_e=Zh,Te=Sg,De=c2,Ye=dL,ot=b3i;return xe(),Ge("div",cAs,[ge("div",dAs,[c(he,{shadow:"",title:ue.$t("workbench.cornerScape.batchSettings"),class:"card"},{default:Oe(()=>[c(Z,{labelAlign:"top"},{default:Oe(()=>[c(Y,{label:ue.$t("workbench.cornerScape.quickActions")},{default:Oe(()=>[ge("div",uAs,[c(de,{theme:"primary",variant:"outline",onClick:ee[0]||(ee[0]=We=>O())},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectPromptEmpty")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[1]||(ee[1]=We=>w(""))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectUngenerated")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[2]||(ee[2]=We=>w("已完成"))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectGenerated")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[3]||(ee[3]=We=>w("生成失败"))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectFailed")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:y},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.invertSelection")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:C},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.clearSelection")),1)]),_:1}),c(z,{images:Ae(A),closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:We})=>[c(de,{theme:"primary",variant:"outline",disabled:!Ae(p),onClick:et=>Ae(p)&&We()},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.batchPreview")),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["images"])])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.assetTypeFilter")},{default:Oe(()=>[c(ie,{onChange:v,modelValue:Ae(n),"onUpdate:modelValue":ee[4]||(ee[4]=We=>Fn(n)?n.value=We:null),options:Ae(d),class:"filterGroup"},null,8,["modelValue","options"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.genModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(o),"onUpdate:modelValue":ee[5]||(ee[5]=We=>Fn(o)?o.value=We:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.resolution")},{default:Oe(()=>[c(te,{modelValue:Ae(s),"onUpdate:modelValue":ee[6]||(ee[6]=We=>Fn(s)?s.value=We:null),placeholder:ue.$t("workbench.cornerScape.resolutionPh"),options:[{label:"1K",value:"1K"},{label:"2K",value:"2K"},{label:"4K",value:"4K"}]},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(Y,null,{default:Oe(()=>[c(de,{theme:"primary",block:"",onClick:I},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.batchGenerationPrompt")),1)]),_:1}),c(de,{theme:"primary",block:"",onClick:F,style:{"margin-left":"10px"}},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.startBatch")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),ge("div",hAs,[(xe(!0),Ge(sn,null,Bi(Ae(u),We=>uu((xe(),Ut(he,{shadow:"",class:"card",key:We.id,onClick:et=>D(We)},{default:Oe(()=>[ge("div",fAs,[c(pe,{class:"selectBox",checked:Ae(k).includes(We.id),onClick:ee[7]||(ee[7]=Mr(()=>{},["stop"])),onChange:et=>b(We.id)},null,8,["checked","onChange"]),!We.state&&We.promptState!=="生成中"?(xe(),Ut(Ce,{key:0,type:"maintenance",title:ue.$t("workbench.cornerScape.waitingGen")},null,8,["title"])):We.state==="生成中"||We.promptState==="生成中"?(xe(),Ge("div",gAs,[c(Qe),ge("span",mAs,Pe(We.promptState==="生成中"?ue.$t("workbench.cornerScape.generatingPrompt"):ue.$t("workbench.cornerScape.generating")),1)])):We.state==="生成失败"?(xe(),Ut(ke,{key:2,content:We.errorReason},{default:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.genFailed")},null,8,["title"])]),_:1},8,["content"])):(xe(),Ut(_e,{key:3,class:"image",src:We.filePath??void 0,fit:"contain",preview:!0,lazy:!0},{error:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.imageError")},null,8,["title"])]),overlayContent:Oe(()=>[ge("div",kAs,[c(me,{src:We.filePath,position:"br"},null,8,["src"])])]),_:2},1032,["src"]))]),ge("div",vAs,[ge("div",AAs,Pe(We.name),1),ge("div",pAs,[c(Te,{size:"small",variant:"light-outline",theme:"warning",class:"typeTag"},{default:Oe(()=>[Bt(Pe(We.type==="role"?ue.$t("workbench.cornerScape.typeRole"):We.type==="scene"?ue.$t("workbench.cornerScape.typeScene"):We.type==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown")),1)]),_:2},1024),We.model?(xe(),Ut(Te,{key:0,size:"small",variant:"outline",class:"stateTag"},{default:Oe(()=>[Bt(Pe(We.model),1)]),_:2},1024)):nn("",!0),We.resolution?(xe(),Ut(Te,{key:1,size:"small",variant:"outline"},{default:Oe(()=>[Bt(Pe(We.resolution),1)]),_:2},1024)):nn("",!0)]),We.describe?(xe(),Ge("div",bAs,Pe(We.type==="role"?ue.$t("workbench.cornerScape.typeRole"):We.type==="scene"?ue.$t("workbench.cornerScape.typeScene"):We.type==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown"))+Pe(ue.$t("workbench.cornerScape.descriptionSuffix"))+Pe(We.describe),1)):nn("",!0)])]),_:2},1032,["onClick"])),[[h1,Ae(u).length>0]])),128)),Ae(u).length===0?(xe(),Ut(Ce,{key:0,type:"empty",title:ue.$t("workbench.cornerScape.operateScriptFirst")},null,8,["title"])):nn("",!0),c(ot,{closeBtn:!0,closeOnEscKeydown:"",showOverlay:!1,footer:!1,visible:Ae(_),"onUpdate:visible":ee[11]||(ee[11]=We=>Fn(_)?_.value=We:null),size:"480px"},{header:Oe(()=>{var We;return[ge("div",wAs,[ge("span",null,Pe((We=Ae(S))==null?void 0:We.name)+" - "+Pe(ue.$t("workbench.cornerScape.individualConfig")),1),c(Te,{size:"medium",variant:"light-outline",theme:"warning"},{default:Oe(()=>{var et,st,Me;return[Bt(Pe(((et=Ae(S))==null?void 0:et.type)==="role"?ue.$t("workbench.cornerScape.typeRole"):((st=Ae(S))==null?void 0:st.type)==="scene"?ue.$t("workbench.cornerScape.typeScene"):((Me=Ae(S))==null?void 0:Me.type)==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown")),1)]}),_:1})])]}),default:Oe(()=>[Ae(S)?(xe(),Ge("div",OAs,[Ae(S).state?Ae(S).state==="生成中"?(xe(),Ge("div",yAs,[c(Qe),ge("span",CAs,Pe(ue.$t("workbench.cornerScape.generating")),1)])):Ae(S).state==="生成失败"?(xe(),Ut(Ce,{key:2,type:"fail",title:ue.$t("workbench.cornerScape.genFailed")},null,8,["title"])):Ae(S).filePath?(xe(),Ut(_e,{key:3,class:"image",src:Ae(S).filePath,fit:"contain"},{error:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.imageError")},null,8,["title"])]),overlayContent:Oe(()=>[ge("div",_As,[c(me,{src:Ae(S).filePath,position:"br"},null,8,["src"])])]),_:1},8,["src"])):(xe(),Ut(Ce,{key:4,type:"maintenance",title:ue.$t("workbench.cornerScape.noImage")},null,8,["title"])):(xe(),Ut(Ce,{key:0,type:"maintenance",title:ue.$t("workbench.cornerScape.waitingGen")},null,8,["title"]))])):nn("",!0),Ae(S)?(xe(),Ut(Z,{key:1,labelAlign:"top"},{default:Oe(()=>[c(Y,{label:ue.$t("workbench.cornerScape.history")},{default:Oe(()=>[ge("div",SAs,[(xe(!0),Ge(sn,null,Bi(Ae(S).historyImages,We=>(xe(),Ge("div",{key:We.id,class:Eo(["historyImageItem",{selected:Ae(L)===We.id}]),onClick:Mr(et=>E(We.id),["stop"])},[c(_e,{src:We.filePath,style:{width:"100px",minWidth:"100px",height:"100px"},lazy:!0,fit:"contain"},null,8,["src"])],10,LAs))),128))])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.genModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(o),"onUpdate:modelValue":ee[8]||(ee[8]=We=>Fn(o)?o.value=We:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.resolution")},{default:Oe(()=>[c(te,{modelValue:Ae(T).resolution,"onUpdate:modelValue":ee[9]||(ee[9]=We=>Ae(T).resolution=We),placeholder:ue.$t("workbench.cornerScape.resolutionPh"),options:a},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.promptLabel")},{default:Oe(()=>[c(Qe,{style:{width:"100%"},loading:Ae(S).promptState=="生成中"},{default:Oe(()=>[c(De,{modelValue:Ae(T).prompt,"onUpdate:modelValue":ee[10]||(ee[10]=We=>Ae(T).prompt=We),placeholder:ue.$t("workbench.cornerScape.promptPh"),autosize:{minRows:4,maxRows:10},disabled:Ae(B),onBlur:M},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["loading"])]),_:1},8,["label"]),c(Y,null,{default:Oe(()=>[ge("div",xAs,[c(de,{theme:"default",variant:"outline",loading:Ae(B),onClick:R,disabled:Ae(S).promptState=="生成中"},{icon:Oe(()=>[c(Ye,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ue.$t("workbench.cornerScape.aiPolish")),1)]),_:1},8,["loading","disabled"]),c(de,{theme:"primary",onClick:Q,disabled:Ae(S).state=="生成中"},{icon:Oe(()=>[c(Ye,{name:"refresh"})]),default:Oe(()=>[Bt(" "+Pe(ue.$t("workbench.cornerScape.regenerate")),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})):nn("",!0)]),_:1},8,["visible"])])])}}}),TAs=oo(EAs,[["__scopeId","data-v-6f5829b2"]]),QAs=Object.freeze(Object.defineProperty({__proto__:null,default:TAs},Symbol.toStringTag,{value:"Module"}));function xte(e){return vz()?(YQ(e),!0):!1}function wS(e){return typeof e=="function"?e():Ae(e)}const DAs=typeof window<"u"&&typeof document<"u",BAs=e=>typeof e<"u",RAs=Object.prototype.toString,IAs=e=>RAs.call(e)==="[object Object]",MAs=()=>{};function PAs(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const kYn=e=>e();function FAs(e=kYn){const t=fe(!0);function n(){t.value=!1}function r(){t.value=!0}return{isActive:d6(t),pause:n,resume:r,eventFilter:(...s)=>{t.value&&e(...s)}}}function y0n(e,t=!1,n="Timeout"){return new Promise((r,o)=>{setTimeout(t?()=>o(n):r,e)})}function NAs(e,t,n={}){const{eventFilter:r=kYn,...o}=n;return pt(e,PAs(r,t),o)}function rF(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:a,resume:l,isActive:d}=FAs(r);return{stop:NAs(e,t,{...o,eventFilter:s}),pause:a,resume:l,isActive:d}}function UAs(e,t={}){if(!Fn(e))return Li(e);const n=Array.isArray(e.value)?Array.from({length:e.value.length}):{};for(const r in e.value)n[r]=QYe(()=>({get(){return e.value[r]},set(o){var s;if((s=wS(t.replaceRef))!=null?s:!0)if(Array.isArray(e.value)){const l=[...e.value];l[r]=o,e.value=l}else{const l={...e.value,[r]:o};Object.setPrototypeOf(l,Object.getPrototypeOf(e.value)),e.value=l}else e.value[r]=o}}));return n}function xGe(e,t=!1){function n(g,{flush:m="sync",deep:v=!1,timeout:f,throwOnTimeout:k}={}){let A=null;const b=[new Promise(w=>{A=pt(e,O=>{g(O)!==t&&(A==null||A(),w(O))},{flush:m,deep:v,immediate:!0})})];return f!=null&&b.push(y0n(f,k).then(()=>wS(e)).finally(()=>A==null?void 0:A())),Promise.race(b)}function r(g,m){if(!Fn(g))return n(O=>O===g,m);const{flush:v="sync",deep:f=!1,timeout:k,throwOnTimeout:A}=m??{};let p=null;const w=[new Promise(O=>{p=pt([e,g],([y,C])=>{t!==(y===C)&&(p==null||p(),O(y))},{flush:v,deep:f,immediate:!0})})];return k!=null&&w.push(y0n(k,A).then(()=>wS(e)).finally(()=>(p==null||p(),wS(e)))),Promise.race(w)}function o(g){return n(m=>!!m,g)}function s(g){return r(null,g)}function a(g){return r(void 0,g)}function l(g){return n(Number.isNaN,g)}function d(g,m){return n(v=>{const f=Array.from(v);return f.includes(g)||f.includes(wS(g))},m)}function u(g){return h(1,g)}function h(g=1,m){let v=-1;return n(()=>(v+=1,v>=g),m)}return Array.isArray(wS(e))?{toMatch:n,toContains:d,changed:u,changedTimes:h,get not(){return xGe(e,!t)}}:{toMatch:n,toBe:r,toBeTruthy:o,toBeNull:s,toBeNaN:l,toBeUndefined:a,changed:u,changedTimes:h,get not(){return xGe(e,!t)}}}function EGe(e){return xGe(e)}function jAs(e){var t;const n=wS(e);return(t=n==null?void 0:n.$el)!=null?t:n}const vYn=DAs?window:void 0;function AYn(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=vYn):[t,n,r,o]=e,!t)return MAs;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],a=()=>{s.forEach(h=>h()),s.length=0},l=(h,g,m,v)=>(h.addEventListener(g,m,v),()=>h.removeEventListener(g,m,v)),d=pt(()=>[jAs(t),wS(o)],([h,g])=>{if(a(),!h)return;const m=IAs(g)?{...g}:g;s.push(...n.flatMap(v=>r.map(f=>l(h,v,f,m))))},{immediate:!0,flush:"post"}),u=()=>{d(),a()};return xte(u),u}function WAs(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function C0n(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:o=vYn,eventName:s="keydown",passive:a=!1,dedupe:l=!1}=r,d=WAs(t);return AYn(o,s,h=>{h.repeat&&wS(l)||d(h)&&n(h)},a)}function VAs(e){return JSON.parse(JSON.stringify(e))}function rRe(e,t,n,r={}){var o,s,a;const{clone:l=!1,passive:d=!1,eventName:u,deep:h=!1,defaultValue:g,shouldEmit:m}=r,v=ps(),f=n||(v==null?void 0:v.emit)||((o=v==null?void 0:v.$emit)==null?void 0:o.bind(v))||((a=(s=v==null?void 0:v.proxy)==null?void 0:s.$emit)==null?void 0:a.bind(v==null?void 0:v.proxy));let k=u;t||(t="modelValue"),k=k||`update:${t.toString()}`;const A=w=>l?typeof l=="function"?l(w):VAs(w):w,p=()=>BAs(e[t])?A(e[t]):g,b=w=>{m?m(w)&&f(k,w):f(k,w)};if(d){const w=p(),O=fe(w);let y=!1;return pt(()=>e[t],C=>{y||(y=!0,O.value=A(C),ai(()=>y=!1))}),pt(O,C=>{!y&&(C!==e[t]||h)&&b(C)},{deep:h}),O}else return X({get(){return p()},set(w){b(w)}})}var zAs={value:()=>{}};function UOe(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}qhe.prototype=UOe.prototype={constructor:qhe,on:function(e,t){var n=this._,r=HAs(e+"",n),o,s=-1,a=r.length;if(arguments.length<2){for(;++s0)for(var n=new Array(o),r=0,o,s;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),S0n.hasOwnProperty(t)?{space:S0n[t],local:e}:e}function XAs(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===TGe&&t.documentElement.namespaceURI===TGe?t.createElement(e):t.createElementNS(n,e)}}function GAs(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pYn(e){var t=jOe(e);return(t.local?GAs:XAs)(t)}function YAs(){}function Mst(e){return e==null?YAs:function(){return this.querySelector(e)}}function ZAs(e){typeof e!="function"&&(e=Mst(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=w&&(w=b+1);!(y=A[w])&&++w=0;)(a=r[o])&&(s&&a.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(a,s),s=a);return this}function w4s(e){e||(e=O4s);function t(g,m){return g&&m?e(g.__data__,m.__data__):!g-!m}for(var n=this._groups,r=n.length,o=new Array(r),s=0;st?1:e>=t?0:NaN}function y4s(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function C4s(){return Array.from(this)}function _4s(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?M4s:typeof t=="function"?F4s:P4s)(e,t,n??"")):oz(this.node(),e)}function oz(e,t){return e.style.getPropertyValue(t)||CYn(e).getComputedStyle(e,null).getPropertyValue(t)}function U4s(e){return function(){delete this[e]}}function j4s(e,t){return function(){this[e]=t}}function W4s(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function V4s(e,t){return arguments.length>1?this.each((t==null?U4s:typeof t=="function"?W4s:j4s)(e,t)):this.node()[e]}function _Yn(e){return e.trim().split(/^|\s+/)}function Pst(e){return e.classList||new SYn(e)}function SYn(e){this._node=e,this._names=_Yn(e.getAttribute("class")||"")}SYn.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function LYn(e,t){for(var n=Pst(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function vps(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,s;n()=>e;function QGe(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:s,x:a,y:l,dx:d,dy:u,dispatch:h}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:d,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:h}})}QGe.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Lps(e){return!e.ctrlKey&&!e.button}function xps(){return this.parentNode}function Eps(e,t){return t??{x:e.x,y:e.y}}function Tps(){return navigator.maxTouchPoints||"ontouchstart"in this}function Qps(){var e=Lps,t=xps,n=Eps,r=Tps,o={},s=UOe("start","drag","end"),a=0,l,d,u,h,g=0;function m(O){O.on("mousedown.drag",v).filter(r).on("touchstart.drag",A).on("touchmove.drag",p,Sps).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(O,y){if(!(h||!e.call(this,O,y))){var C=w(this,t.call(this,O,y),O,y,"mouse");C&&($b(O.view).on("mousemove.drag",f,Ete).on("mouseup.drag",k,Ete),QYn(O.view),oRe(O),u=!1,l=O.clientX,d=O.clientY,C("start",O))}}function f(O){if(gj(O),!u){var y=O.clientX-l,C=O.clientY-d;u=y*y+C*C>g}o.mouse("drag",O)}function k(O){$b(O.view).on("mousemove.drag mouseup.drag",null),DYn(O.view,u),gj(O),o.mouse("end",O)}function A(O,y){if(e.call(this,O,y)){var C=O.changedTouches,_=t.call(this,O,y),S=C.length,L,E;for(L=0;L>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Qde(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Qde(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Bps.exec(e))?new qk(t[1],t[2],t[3],1):(t=Rps.exec(e))?new qk(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ips.exec(e))?Qde(t[1],t[2],t[3],t[4]):(t=Mps.exec(e))?Qde(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Pps.exec(e))?B0n(t[1],t[2]/100,t[3]/100,1):(t=Fps.exec(e))?B0n(t[1],t[2]/100,t[3]/100,t[4]):L0n.hasOwnProperty(e)?T0n(L0n[e]):e==="transparent"?new qk(NaN,NaN,NaN,0):null}function T0n(e){return new qk(e>>16&255,e>>8&255,e&255,1)}function Qde(e,t,n,r){return r<=0&&(e=t=n=NaN),new qk(e,t,n,r)}function jps(e){return e instanceof Vre||(e=KR(e)),e?(e=e.rgb(),new qk(e.r,e.g,e.b,e.opacity)):new qk}function DGe(e,t,n,r){return arguments.length===1?jps(e):new qk(e,t,n,r??1)}function qk(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Fst(qk,DGe,BYn(Vre,{brighter(e){return e=e==null?M2e:Math.pow(M2e,e),new qk(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tte:Math.pow(Tte,e),new qk(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new qk(SD(this.r),SD(this.g),SD(this.b),P2e(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Q0n,formatHex:Q0n,formatHex8:Wps,formatRgb:D0n,toString:D0n}));function Q0n(){return`#${_Q(this.r)}${_Q(this.g)}${_Q(this.b)}`}function Wps(){return`#${_Q(this.r)}${_Q(this.g)}${_Q(this.b)}${_Q((isNaN(this.opacity)?1:this.opacity)*255)}`}function D0n(){const e=P2e(this.opacity);return`${e===1?"rgb(":"rgba("}${SD(this.r)}, ${SD(this.g)}, ${SD(this.b)}${e===1?")":`, ${e})`}`}function P2e(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function SD(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function _Q(e){return e=SD(e),(e<16?"0":"")+e.toString(16)}function B0n(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Xb(e,t,n,r)}function RYn(e){if(e instanceof Xb)return new Xb(e.h,e.s,e.l,e.opacity);if(e instanceof Vre||(e=KR(e)),!e)return new Xb;if(e instanceof Xb)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),s=Math.max(t,n,r),a=NaN,l=s-o,d=(s+o)/2;return l?(t===s?a=(n-r)/l+(n0&&d<1?0:a,new Xb(a,l,d,e.opacity)}function Vps(e,t,n,r){return arguments.length===1?RYn(e):new Xb(e,t,n,r??1)}function Xb(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Fst(Xb,Vps,BYn(Vre,{brighter(e){return e=e==null?M2e:Math.pow(M2e,e),new Xb(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tte:Math.pow(Tte,e),new Xb(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new qk(sRe(e>=240?e-240:e+120,o,r),sRe(e,o,r),sRe(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new Xb(R0n(this.h),Dde(this.s),Dde(this.l),P2e(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=P2e(this.opacity);return`${e===1?"hsl(":"hsla("}${R0n(this.h)}, ${Dde(this.s)*100}%, ${Dde(this.l)*100}%${e===1?")":`, ${e})`}`}}));function R0n(e){return e=(e||0)%360,e<0?e+360:e}function Dde(e){return Math.max(0,Math.min(1,e||0))}function sRe(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Nst=e=>()=>e;function zps(e,t){return function(n){return e+n*t}}function Hps(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function $ps(e){return(e=+e)==1?IYn:function(t,n){return n-t?Hps(t,n,e):Nst(isNaN(t)?n:t)}}function IYn(e,t){var n=t-e;return n?zps(e,n):Nst(isNaN(e)?t:e)}const F2e=function e(t){var n=$ps(t);function r(o,s){var a=n((o=DGe(o)).r,(s=DGe(s)).r),l=n(o.g,s.g),d=n(o.b,s.b),u=IYn(o.opacity,s.opacity);return function(h){return o.r=a(h),o.g=l(h),o.b=d(h),o.opacity=u(h),o+""}}return r.gamma=e,r}(1);function Xps(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(s){for(o=0;on&&(s=t.slice(n,s),l[a]?l[a]+=s:l[++a]=s),(r=r[0])===(o=o[0])?l[a]?l[a]+=o:l[++a]=o:(l[++a]=null,d.push({i:a,x:vO(r,o)})),n=aRe.lastIndex;return n180?h+=360:h-u>180&&(u+=360),m.push({i:g.push(o(g)+"rotate(",null,r)-2,x:vO(u,h)})):h&&g.push(o(g)+"rotate("+h+r)}function l(u,h,g,m){u!==h?m.push({i:g.push(o(g)+"skewX(",null,r)-2,x:vO(u,h)}):h&&g.push(o(g)+"skewX("+h+r)}function d(u,h,g,m,v,f){if(u!==g||h!==m){var k=v.push(o(v)+"scale(",null,",",null,")");f.push({i:k-4,x:vO(u,g)},{i:k-2,x:vO(h,m)})}else(g!==1||m!==1)&&v.push(o(v)+"scale("+g+","+m+")")}return function(u,h){var g=[],m=[];return u=e(u),h=e(h),s(u.translateX,u.translateY,h.translateX,h.translateY,g,m),a(u.rotate,h.rotate,g,m),l(u.skewX,h.skewX,g,m),d(u.scaleX,u.scaleY,h.scaleX,h.scaleY,g,m),u=h=null,function(v){for(var f=-1,k=m.length,A;++f=0&&e._call.call(void 0,t),e=e._next;--sz}function P0n(){JR=(U2e=Dte.now())+WOe,sz=aY=0;try{lbs()}finally{sz=0,dbs(),JR=0}}function cbs(){var e=Dte.now(),t=e-U2e;t>NYn&&(WOe-=t,U2e=e)}function dbs(){for(var e,t=N2e,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:N2e=n);lY=e,IGe(r)}function IGe(e){if(!sz){aY&&(aY=clearTimeout(aY));var t=e-JR;t>24?(e<1/0&&(aY=setTimeout(P0n,e-Dte.now()-WOe)),aG&&(aG=clearInterval(aG))):(aG||(U2e=Dte.now(),aG=setInterval(cbs,NYn)),sz=1,UYn(P0n))}}function F0n(e,t,n){var r=new j2e;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var ubs=UOe("start","end","cancel","interrupt"),hbs=[],WYn=0,N0n=1,MGe=2,Jhe=3,U0n=4,PGe=5,efe=6;function VOe(e,t,n,r,o,s){var a=e.__transition;if(!a)e.__transition={};else if(n in a)return;fbs(e,n,{name:t,index:r,group:o,on:ubs,tween:hbs,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:WYn})}function jst(e,t){var n=H3(e,t);if(n.state>WYn)throw new Error("too late; already scheduled");return n}function uC(e,t){var n=H3(e,t);if(n.state>Jhe)throw new Error("too late; already running");return n}function H3(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function fbs(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=jYn(s,0,n.time);function s(u){n.state=N0n,n.timer.restart(a,n.delay,n.time),n.delay<=u&&a(u-n.delay)}function a(u){var h,g,m,v;if(n.state!==N0n)return d();for(h in r)if(v=r[h],v.name===n.name){if(v.state===Jhe)return F0n(a);v.state===U0n?(v.state=efe,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete r[h]):+hMGe&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Vbs(e,t,n){var r,o,s=Wbs(t)?jst:uC;return function(){var a=s(this,e),l=a.on;l!==r&&(o=(r=l).copy()).on(t,n),a.on=o}}function zbs(e,t){var n=this._id;return arguments.length<2?H3(this.node(),n).on.on(e):this.each(Vbs(n,e,t))}function Hbs(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function $bs(){return this.on("end.remove",Hbs(this._id))}function Xbs(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Mst(e));for(var r=this._groups,o=r.length,s=new Array(o),a=0;a()=>e;function A3s(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function FS(e,t,n){this.k=e,this.x=t,this.y=n}FS.prototype={constructor:FS,scale:function(e){return e===1?this:new FS(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new FS(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var az=new FS(1,0,0);FS.prototype;function lRe(e){e.stopImmediatePropagation()}function lG(e){e.preventDefault(),e.stopImmediatePropagation()}function p3s(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function b3s(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function j0n(){return this.__zoom||az}function w3s(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function O3s(){return navigator.maxTouchPoints||"ontouchstart"in this}function y3s(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],s=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>s?(s+a)/2:Math.min(0,s)||Math.max(0,a))}function C3s(){var e=p3s,t=b3s,n=y3s,r=w3s,o=O3s,s=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,d=Khe,u=UOe("start","zoom","end"),h,g,m,v=500,f=150,k=0,A=10;function p(Q){Q.property("__zoom",j0n).on("wheel.zoom",S,{passive:!1}).on("mousedown.zoom",L).on("dblclick.zoom",E).filter(o).on("touchstart.zoom",T).on("touchmove.zoom",D).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}p.transform=function(Q,M,B,R){var I=Q.selection?Q.selection():Q;I.property("__zoom",j0n),Q!==I?y(Q,M,B,R):I.interrupt().each(function(){C(this,arguments).event(R).start().zoom(null,typeof M=="function"?M.apply(this,arguments):M).end()})},p.scaleBy=function(Q,M,B,R){p.scaleTo(Q,function(){var I=this.__zoom.k,F=typeof M=="function"?M.apply(this,arguments):M;return I*F},B,R)},p.scaleTo=function(Q,M,B,R){p.transform(Q,function(){var I=t.apply(this,arguments),F=this.__zoom,j=B==null?O(I):typeof B=="function"?B.apply(this,arguments):B,W=F.invert(j),H=typeof M=="function"?M.apply(this,arguments):M;return n(w(b(F,H),j,W),I,a)},B,R)},p.translateBy=function(Q,M,B,R){p.transform(Q,function(){return n(this.__zoom.translate(typeof M=="function"?M.apply(this,arguments):M,typeof B=="function"?B.apply(this,arguments):B),t.apply(this,arguments),a)},null,R)},p.translateTo=function(Q,M,B,R,I){p.transform(Q,function(){var F=t.apply(this,arguments),j=this.__zoom,W=R==null?O(F):typeof R=="function"?R.apply(this,arguments):R;return n(az.translate(W[0],W[1]).scale(j.k).translate(typeof M=="function"?-M.apply(this,arguments):-M,typeof B=="function"?-B.apply(this,arguments):-B),F,a)},R,I)};function b(Q,M){return M=Math.max(s[0],Math.min(s[1],M)),M===Q.k?Q:new FS(M,Q.x,Q.y)}function w(Q,M,B){var R=M[0]-B[0]*Q.k,I=M[1]-B[1]*Q.k;return R===Q.x&&I===Q.y?Q:new FS(Q.k,R,I)}function O(Q){return[(+Q[0][0]+ +Q[1][0])/2,(+Q[0][1]+ +Q[1][1])/2]}function y(Q,M,B,R){Q.on("start.zoom",function(){C(this,arguments).event(R).start()}).on("interrupt.zoom end.zoom",function(){C(this,arguments).event(R).end()}).tween("zoom",function(){var I=this,F=arguments,j=C(I,F).event(R),W=t.apply(I,F),H=B==null?O(W):typeof B=="function"?B.apply(I,F):B,$=Math.max(W[1][0]-W[0][0],W[1][1]-W[0][1]),G=I.__zoom,q=typeof M=="function"?M.apply(I,F):M,re=d(G.invert(H).concat($/G.k),q.invert(H).concat($/q.k));return function(J){if(J===1)J=q;else{var oe=re(J),se=$/oe[2];J=new FS(se,H[0]-oe[0]*se,H[1]-oe[1]*se)}j.zoom(null,J)}})}function C(Q,M,B){return!B&&Q.__zooming||new _(Q,M)}function _(Q,M){this.that=Q,this.args=M,this.active=0,this.sourceEvent=null,this.extent=t.apply(Q,M),this.taps=0}_.prototype={event:function(Q){return Q&&(this.sourceEvent=Q),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(Q,M){return this.mouse&&Q!=="mouse"&&(this.mouse[1]=M.invert(this.mouse[0])),this.touch0&&Q!=="touch"&&(this.touch0[1]=M.invert(this.touch0[0])),this.touch1&&Q!=="touch"&&(this.touch1[1]=M.invert(this.touch1[0])),this.that.__zoom=M,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(Q){var M=$b(this.that).datum();u.call(Q,this.that,new A3s(Q,{sourceEvent:this.sourceEvent,target:p,transform:this.that.__zoom,dispatch:u}),M)}};function S(Q,...M){if(!e.apply(this,arguments))return;var B=C(this,M).event(Q),R=this.__zoom,I=Math.max(s[0],Math.min(s[1],R.k*Math.pow(2,r.apply(this,arguments)))),F=Kw(Q);if(B.wheel)(B.mouse[0][0]!==F[0]||B.mouse[0][1]!==F[1])&&(B.mouse[1]=R.invert(B.mouse[0]=F)),clearTimeout(B.wheel);else{if(R.k===I)return;B.mouse=[F,R.invert(F)],tfe(this),B.start()}lG(Q),B.wheel=setTimeout(j,f),B.zoom("mouse",n(w(b(R,I),B.mouse[0],B.mouse[1]),B.extent,a));function j(){B.wheel=null,B.end()}}function L(Q,...M){if(m||!e.apply(this,arguments))return;var B=Q.currentTarget,R=C(this,M,!0).event(Q),I=$b(Q.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",$,!0),F=Kw(Q,B),j=Q.clientX,W=Q.clientY;QYn(Q.view),lRe(Q),R.mouse=[F,this.__zoom.invert(F)],tfe(this),R.start();function H(G){if(lG(G),!R.moved){var q=G.clientX-j,re=G.clientY-W;R.moved=q*q+re*re>k}R.event(G).zoom("mouse",n(w(R.that.__zoom,R.mouse[0]=Kw(G,B),R.mouse[1]),R.extent,a))}function $(G){I.on("mousemove.zoom mouseup.zoom",null),DYn(G.view,R.moved),lG(G),R.event(G).end()}}function E(Q,...M){if(e.apply(this,arguments)){var B=this.__zoom,R=Kw(Q.changedTouches?Q.changedTouches[0]:Q,this),I=B.invert(R),F=B.k*(Q.shiftKey?.5:2),j=n(w(b(B,F),R,I),t.apply(this,M),a);lG(Q),l>0?$b(this).transition().duration(l).call(y,j,R,Q):$b(this).call(p.transform,j,R,Q)}}function T(Q,...M){if(e.apply(this,arguments)){var B=Q.touches,R=B.length,I=C(this,M,Q.changedTouches.length===R).event(Q),F,j,W,H;for(lRe(Q),j=0;j(e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom",e))(Vi||{}),Vst=(e=>(e.Partial="partial",e.Full="full",e))(Vst||{}),FT=(e=>(e.Bezier="default",e.SimpleBezier="simple-bezier",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e))(FT||{}),H6=(e=>(e.Strict="strict",e.Loose="loose",e))(H6||{}),FGe=(e=>(e.Arrow="arrow",e.ArrowClosed="arrowclosed",e))(FGe||{}),lq=(e=>(e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal",e))(lq||{}),$Yn=(e=>(e.TopLeft="top-left",e.TopCenter="top-center",e.TopRight="top-right",e.BottomLeft="bottom-left",e.BottomCenter="bottom-center",e.BottomRight="bottom-right",e))($Yn||{});const _3s=["INPUT","SELECT","TEXTAREA"],S3s=typeof document<"u"?document:null;function NGe(e){var t,n;const r=((n=(t=e.composedPath)==null?void 0:t.call(e))==null?void 0:n[0])||e.target,o=typeof(r==null?void 0:r.hasAttribute)=="function"?r.hasAttribute("contenteditable"):!1,s=typeof(r==null?void 0:r.closest)=="function"?r.closest(".nokey"):null;return _3s.includes(r==null?void 0:r.nodeName)||o||!!s}function L3s(e){return e.ctrlKey||e.metaKey||e.shiftKey||e.altKey}function W0n(e,t,n,r){const o=t.replace("+",` + */var JGn=Cm(VXn),eYn=Cm(B0s);Cm(OGn);Cm(pGe);Cm(yGn);Cm(P0s,"t-chat-thinking");Cm(T2s,"t-chatbot");var tYn=Cm(WXn,"t-chat-message");Cm(AGe);Cm(Q2s,"t-chat-search-content");Cm(D2s,"t-chat-suggestion-content");Cm(AGn,"t-chat-markdown");Cm(VXn);Cm(OGn);Cm(T0s);Cm(bGe);Cm(x0s);const wGe={__name:"splitpanes",props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click","splitter-dblclick"],setup(e,{emit:t}){const n=t,r=e,o=TAn(),s=fe([]),a=X(()=>s.value.reduce((J,oe)=>(J[~~oe.id]=oe)&&J,{})),l=X(()=>s.value.length),d=fe(null),u=fe(!1),h=fe({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),g=fe({splitter:null,timeoutId:null}),m=X(()=>({[`splitpanes splitpanes--${r.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":h.value.dragging})),v=()=>{document.addEventListener("mousemove",A,{passive:!1}),document.addEventListener("mouseup",p),"ontouchstart"in window&&(document.addEventListener("touchmove",A,{passive:!1}),document.addEventListener("touchend",p))},f=()=>{document.removeEventListener("mousemove",A,{passive:!1}),document.removeEventListener("mouseup",p),"ontouchstart"in window&&(document.removeEventListener("touchmove",A,{passive:!1}),document.removeEventListener("touchend",p))},k=(J,oe)=>{const se=J.target.closest(".splitpanes__splitter");if(se){const{left:le,top:ue}=se.getBoundingClientRect(),{clientX:ee,clientY:de}="ontouchstart"in window&&J.touches?J.touches[0]:J;h.value.cursorOffset=r.horizontal?de-ue:ee-le}v(),h.value.mouseDown=!0,h.value.activeSplitter=oe},A=J=>{h.value.mouseDown&&(J.preventDefault(),h.value.dragging=!0,requestAnimationFrame(()=>{_(y(J)),q("resize",{event:J},!0)}))},p=J=>{h.value.dragging&&(window.getSelection().removeAllRanges(),q("resized",{event:J},!0)),h.value.mouseDown=!1,h.value.activeSplitter=null,setTimeout(()=>{h.value.dragging=!1,f()},100)},b=(J,oe)=>{"ontouchstart"in window&&(J.preventDefault(),g.value.splitter===oe?(clearTimeout(g.value.timeoutId),g.value.timeoutId=null,w(J,oe),g.value.splitter=null):(g.value.splitter=oe,g.value.timeoutId=setTimeout(()=>g.value.splitter=null,500))),h.value.dragging||q("splitter-click",{event:J,index:oe},!0)},w=(J,oe)=>{if(q("splitter-dblclick",{event:J,index:oe},!0),r.maximizePanes){let se=0;s.value=s.value.map((le,ue)=>(le.size=ue===oe?le.max:le.min,ue!==oe&&(se+=le.min),le)),s.value[oe].size-=se,q("pane-maximize",{event:J,index:oe,pane:s.value[oe]}),q("resized",{event:J,index:oe},!0)}},O=(J,oe)=>{q("pane-click",{event:J,index:a.value[oe].index,pane:a.value[oe]})},y=J=>{const oe=d.value.getBoundingClientRect(),{clientX:se,clientY:le}="ontouchstart"in window&&J.touches?J.touches[0]:J;return{x:se-(r.horizontal?0:h.value.cursorOffset)-oe.left,y:le-(r.horizontal?h.value.cursorOffset:0)-oe.top}},C=J=>{J=J[r.horizontal?"y":"x"];const oe=d.value[r.horizontal?"clientHeight":"clientWidth"];return r.rtl&&!r.horizontal&&(J=oe-J),J*100/oe},_=J=>{const oe=h.value.activeSplitter;let se={prevPanesSize:L(oe),nextPanesSize:E(oe),prevReachedMinPanes:0,nextReachedMinPanes:0};const le=0+(r.pushOtherPanes?0:se.prevPanesSize),ue=100-(r.pushOtherPanes?0:se.nextPanesSize),ee=Math.max(Math.min(C(J),ue),le);let de=[oe,oe+1],z=s.value[de[0]]||null,Y=s.value[de[1]]||null;const ie=z.max<100&&ee>=z.max+se.prevPanesSize,te=Y.max<100&&ee<=100-(Y.max+E(oe+1));if(ie||te){ie?(z.size=z.max,Y.size=Math.max(100-z.max-se.prevPanesSize-se.nextPanesSize,0)):(z.size=Math.max(100-Y.max-se.prevPanesSize-E(oe+1),0),Y.size=Y.max);return}if(r.pushOtherPanes){const Z=S(se,ee);if(!Z)return;({sums:se,panesToResize:de}=Z),z=s.value[de[0]]||null,Y=s.value[de[1]]||null}z!==null&&(z.size=Math.min(Math.max(ee-se.prevPanesSize-se.prevReachedMinPanes,z.min),z.max)),Y!==null&&(Y.size=Math.min(Math.max(100-ee-se.nextPanesSize-se.nextReachedMinPanes,Y.min),Y.max))},S=(J,oe)=>{const se=h.value.activeSplitter,le=[se,se+1];return oe{ee>le[0]&&ee<=se&&(ue.size=ue.min,J.prevReachedMinPanes+=ue.min)}),J.prevPanesSize=L(le[0]),le[0]===void 0)?(J.prevReachedMinPanes=0,s.value[0].size=s.value[0].min,s.value.forEach((ue,ee)=>{ee>0&&ee<=se&&(ue.size=ue.min,J.prevReachedMinPanes+=ue.min)}),s.value[le[1]].size=100-J.prevReachedMinPanes-s.value[0].min-J.prevPanesSize-J.nextPanesSize,null):oe>100-J.nextPanesSize-s.value[le[1]].min&&(le[1]=D(se).index,J.nextReachedMinPanes=0,le[1]>se+1&&s.value.forEach((ue,ee)=>{ee>se&&ee{ee=se+1&&(ue.size=ue.min,J.nextReachedMinPanes+=ue.min)}),s.value[le[0]].size=100-J.prevPanesSize-E(le[0]-1),null):{sums:J,panesToResize:le}},L=J=>s.value.reduce((oe,se,le)=>oe+(les.value.reduce((oe,se,le)=>oe+(le>J+1?se.size:0),0),T=J=>[...s.value].reverse().find(oe=>oe.indexoe.min)||{},D=J=>s.value.find(oe=>oe.index>J+1&&oe.size>oe.min)||{},P=()=>{var J;const oe=Array.from(((J=d.value)==null?void 0:J.children)||[]);for(const se of oe){const le=se.classList.contains("splitpanes__pane"),ue=se.classList.contains("splitpanes__splitter");!le&&!ue&&(se.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))}},Q=(J,oe,se=!1)=>{const le=J-1,ue=document.createElement("div");ue.classList.add("splitpanes__splitter"),se||(ue.onmousedown=ee=>k(ee,le),typeof window<"u"&&"ontouchstart"in window&&(ue.ontouchstart=ee=>k(ee,le)),ue.onclick=ee=>b(ee,le+1)),ue.ondblclick=ee=>w(ee,le+1),oe.parentNode.insertBefore(ue,oe)},M=J=>{J.onmousedown=void 0,J.onclick=void 0,J.ondblclick=void 0,J.remove()},B=()=>{var J;const oe=Array.from(((J=d.value)==null?void 0:J.children)||[]);for(const le of oe)le.className.includes("splitpanes__splitter")&&M(le);let se=0;for(const le of oe)le.className.includes("splitpanes__pane")&&(!se&&r.firstSplitter?Q(se,le,!0):se&&Q(se,le),se++)},R=({uid:J,...oe})=>{const se=a.value[J];for(const[le,ue]of Object.entries(oe))se[le]=ue},I=J=>{var oe;let se=-1;Array.from(((oe=d.value)==null?void 0:oe.children)||[]).some(le=>(le.className.includes("splitpanes__pane")&&se++,le.isSameNode(J.el))),s.value.splice(se,0,{...J,index:se}),s.value.forEach((le,ue)=>le.index=ue),u.value&&ai(()=>{B(),j({addedPane:s.value[se]}),q("pane-add",{pane:s.value[se]})})},F=J=>{const oe=s.value.findIndex(le=>le.id===J);s.value[oe].el=null;const se=s.value.splice(oe,1)[0];s.value.forEach((le,ue)=>le.index=ue),ai(()=>{B(),q("pane-remove",{pane:se}),j({removedPane:{...se}})})},j=(J={})=>{!J.addedPane&&!J.removedPane?H():s.value.some(oe=>oe.givenSize!==null||oe.min||oe.max<100)?$(J):W(),u.value&&q("resized")},W=()=>{const J=100/l.value;let oe=0;const se=[],le=[];for(const ue of s.value)ue.size=Math.max(Math.min(J,ue.max),ue.min),oe-=ue.size,ue.size>=ue.max&&se.push(ue.id),ue.size<=ue.min&&le.push(ue.id);oe>.1&&G(oe,se,le)},H=()=>{let J=100;const oe=[],se=[];let le=0;for(const ee of s.value)J-=ee.size,ee.givenSize!==null&&le++,ee.size>=ee.max&&oe.push(ee.id),ee.size<=ee.min&&se.push(ee.id);let ue=100;if(J>.1){for(const ee of s.value)ee.givenSize===null&&(ee.size=Math.max(Math.min(J/(l.value-le),ee.max),ee.min)),ue-=ee.size;ue>.1&&G(ue,oe,se)}},$=({addedPane:J,removedPane:oe}={})=>{let se=100/l.value,le=0;const ue=[],ee=[];((J==null?void 0:J.givenSize)??null)!==null&&(se=(100-J.givenSize)/(l.value-1));for(const de of s.value)le-=de.size,de.size>=de.max&&ue.push(de.id),de.size<=de.min&&ee.push(de.id);if(!(Math.abs(le)<.1)){for(const de of s.value)(J==null?void 0:J.givenSize)!==null&&(J==null?void 0:J.id)===de.id||(de.size=Math.max(Math.min(se,de.max),de.min)),le-=de.size,de.size>=de.max&&ue.push(de.id),de.size<=de.min&&ee.push(de.id);le>.1&&G(le,ue,ee)}},G=(J,oe,se)=>{let le;J>0?le=J/(l.value-oe.length):le=J/(l.value-se.length),s.value.forEach((ue,ee)=>{if(J>0&&!oe.includes(ue.id)){const de=Math.max(Math.min(ue.size+le,ue.max),ue.min),z=de-ue.size;J-=z,ue.size=de}else if(!se.includes(ue.id)){const de=Math.max(Math.min(ue.size+le,ue.max),ue.min),z=de-ue.size;J-=z,ue.size=de}}),Math.abs(J)>.1&&ai(()=>{u.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})},q=(J,oe=void 0,se=!1)=>{const le=(oe==null?void 0:oe.index)??h.value.activeSplitter??null;n(J,{...oe,...le!==null&&{index:le},...se&&le!==null&&{prevPane:s.value[le-(r.firstSplitter?1:0)],nextPane:s.value[le+(r.firstSplitter?0:1)]},panes:s.value.map(ue=>({min:ue.min,max:ue.max,size:ue.size}))})};pt(()=>r.firstSplitter,()=>B()),An(()=>{P(),B(),j(),q("ready"),u.value=!0}),qs(()=>u.value=!1);const re=()=>{var J;return xn("div",{ref:d,class:m.value},(J=o.default)==null?void 0:J.call(o))};return Yi("panes",s),Yi("indexedPanes",a),Yi("horizontal",X(()=>r.horizontal)),Yi("requestUpdate",R),Yi("onPaneAdd",I),Yi("onPaneRemove",F),Yi("onPaneClick",O),(J,oe)=>(xe(),Ut(Bd(re)))}},PT={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(e){var t;const n=e,r=bt("requestUpdate"),o=bt("onPaneAdd"),s=bt("horizontal"),a=bt("onPaneRemove"),l=bt("onPaneClick"),d=(t=ps())==null?void 0:t.uid,u=bt("indexedPanes"),h=X(()=>u.value[d]),g=fe(null),m=X(()=>{const A=isNaN(n.size)||n.size===void 0?0:parseFloat(n.size);return Math.max(Math.min(A,f.value),v.value)}),v=X(()=>{const A=parseFloat(n.minSize);return isNaN(A)?0:A}),f=X(()=>{const A=parseFloat(n.maxSize);return isNaN(A)?100:A}),k=X(()=>{var A;return`${s.value?"height":"width"}: ${(A=h.value)==null?void 0:A.size}%`});return pt(()=>m.value,A=>r({uid:d,size:A})),pt(()=>v.value,A=>r({uid:d,min:A})),pt(()=>f.value,A=>r({uid:d,max:A})),An(()=>{o({id:d,el:g.value,min:v.value,max:f.value,givenSize:n.size===void 0?null:m.value,size:m.value})}),qs(()=>a(d)),(A,p)=>(xe(),Ge("div",{ref_key:"paneEl",ref:g,class:"splitpanes__pane",onClick:p[0]||(p[0]=b=>Ae(l)(b,A._.uid)),style:no(k.value)},[Zr(A.$slots,"default")],4))}},F2s=Je({__name:"editMdPreivew",props:Fc({content:{}},{modelValue:{default:!1},modelModifiers:{}}),emits:Fc(["save"],["update:modelValue"]),setup(e,{emit:t}){const n=e,r=fe(""),o=Pf(e,"modelValue"),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];pt(()=>o.value,()=>{r.value=n.content});const a=t;function l(){a("save",r.value),o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=gc;return xe(),Ut(m,{visible:o.value,"onUpdate:visible":g[2]||(g[2]=v=>o.value=v),header:h.$t("components.editMdPreivew.title"),width:"90vw","confirm-btn":h.$t("components.editMdPreivew.confirm"),"cancel-btn":h.$t("components.editMdPreivew.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:Ae(r),"onUpdate:modelValue":g[0]||(g[0]=v=>Fn(r)?r.value=v:null),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[1]||(g[1]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])}}}),Ny=Object.create(null);Ny.open="0";Ny.close="1";Ny.ping="2";Ny.pong="3";Ny.message="4";Ny.upgrade="5";Ny.noop="6";const Xhe=Object.create(null);Object.keys(Ny).forEach(e=>{Xhe[Ny[e]]=e});const OGe={type:"error",data:"parser error"},nYn=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",iYn=typeof ArrayBuffer=="function",rYn=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Qst=({type:e,data:t},n,r)=>nYn&&t instanceof Blob?n?r(t):A0n(t,r):iYn&&(t instanceof ArrayBuffer||rYn(t))?n?r(t):A0n(new Blob([t]),r):r(Ny[e]+(t||"")),A0n=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function p0n(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let JBe;function N2s(e,t){if(nYn&&e.data instanceof Blob)return e.data.arrayBuffer().then(p0n).then(t);if(iYn&&(e.data instanceof ArrayBuffer||rYn(e.data)))return t(p0n(e.data));Qst(e,!1,n=>{JBe||(JBe=new TextEncoder),t(JBe.encode(n))})}const b0n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sY=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,o=0,s,a,l,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),h=new Uint8Array(u);for(r=0;r>4,h[o++]=(a&15)<<4|l>>2,h[o++]=(l&3)<<6|d&63;return u},j2s=typeof ArrayBuffer=="function",Dst=(e,t)=>{if(typeof e!="string")return{type:"message",data:oYn(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:W2s(e.substring(1),t)}:Xhe[n]?e.length>1?{type:Xhe[n],data:e.substring(1)}:{type:Xhe[n]}:OGe},W2s=(e,t)=>{if(j2s){const n=U2s(e);return oYn(n,t)}else return{base64:!0,data:e}},oYn=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},sYn="",V2s=(e,t)=>{const n=e.length,r=new Array(n);let o=0;e.forEach((s,a)=>{Qst(s,!1,l=>{r[a]=l,++o===n&&t(r.join(sYn))})})},z2s=(e,t)=>{const n=e.split(sYn),r=[];for(let o=0;o{const r=n.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const s=new DataView(o.buffer);s.setUint8(0,126),s.setUint16(1,r)}else{o=new Uint8Array(9);const s=new DataView(o.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(n)})}})}let eRe;function xde(e){return e.reduce((t,n)=>t+n.length,0)}function Ede(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let o=0;oMath.pow(2,21)-1){l.enqueue(OGe);break}o=h*Math.pow(2,32)+u.getUint32(4),r=3}else{if(xde(n)e){l.enqueue(OGe);break}}}})}const aYn=4;function Gh(e){if(e)return X2s(e)}function X2s(e){for(var t in Gh.prototype)e[t]=Gh.prototype[t];return e}Gh.prototype.on=Gh.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Gh.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Gh.prototype.off=Gh.prototype.removeListener=Gh.prototype.removeAllListeners=Gh.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,o=0;oPromise.resolve().then(t):(t,n)=>n(t,0),D4=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),G2s="arraybuffer";function lYn(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const Y2s=D4.setTimeout,Z2s=D4.clearTimeout;function NOe(e,t){t.useNativeTimers?(e.setTimeoutFn=Y2s.bind(D4),e.clearTimeoutFn=Z2s.bind(D4)):(e.setTimeoutFn=D4.setTimeout.bind(D4),e.clearTimeoutFn=D4.clearTimeout.bind(D4))}const q2s=1.33;function K2s(e){return typeof e=="string"?J2s(e):Math.ceil((e.byteLength||e.size)*q2s)}function J2s(e){let t=0,n=0;for(let r=0,o=e.length;r=57344?n+=3:(r++,n+=4);return n}function cYn(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function evs(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function tvs(e){let t={},n=e.split("&");for(let r=0,o=n.length;r{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};z2s(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,V2s(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=cYn()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let dYn=!1;try{dYn=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const rvs=dYn;function ovs(){}class svs extends ivs{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(o,s)=>{this.onError("xhr post error",o,s)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}class my extends Gh{constructor(t,n,r){super(),this.createRequest=t,NOe(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const n=lYn(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=my.requestsCount++,my.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=ovs,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete my.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}my.requestsCount=0;my.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",w0n);else if(typeof addEventListener=="function"){const e="onpagehide"in D4?"pagehide":"unload";addEventListener(e,w0n,!1)}}function w0n(){for(let e in my.requests)my.requests.hasOwnProperty(e)&&my.requests[e].abort()}const avs=function(){const e=uYn({xdomain:!1});return e&&e.responseType!==null}();class lvs extends svs{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=avs&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new my(uYn,this.uri(),t)}}function uYn(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||rvs))return new XMLHttpRequest}catch{}if(!t)try{return new D4[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const hYn=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class cvs extends Bst{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,r=hYn?{}:lYn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{try{this.doWrite(r,s)}catch{}o&&FOe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=cYn()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const tRe=D4.WebSocket||D4.MozWebSocket;class dvs extends cvs{createSocket(t,n,r){return hYn?new tRe(t,n,r):n?new tRe(t,n):new tRe(t)}doWrite(t,n){this.ws.send(n)}}class uvs extends Bst{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=$2s(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),o=H2s();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const s=()=>{r.read().then(({done:l,value:d})=>{l||(this.onPacket(d),s())}).catch(l=>{})};s();const a={type:"open"};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this._writer.write(a).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n{o&&FOe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const hvs={websocket:dvs,webtransport:uvs,polling:lvs},fvs=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,gvs=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function yGe(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let o=fvs.exec(e||""),s={},a=14;for(;a--;)s[gvs[a]]=o[a]||"";return n!=-1&&r!=-1&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=mvs(s,s.path),s.queryKey=kvs(s,s.query),s}function mvs(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function kvs(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,s){o&&(n[o]=s)}),n}const CGe=typeof addEventListener=="function"&&typeof removeEventListener=="function",Ghe=[];CGe&&addEventListener("offline",()=>{Ghe.forEach(e=>e())},!1);class z9 extends Gh{constructor(t,n){if(super(),this.binaryType=G2s,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const r=yGe(t);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=yGe(n.host).host);NOe(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=tvs(this.opts.query)),CGe&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Ghe.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=aYn,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&z9.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",z9.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,FOe(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,r){return this._sendPacket("message",t,n,r),this}send(t,n,r){return this._sendPacket("message",t,n,r),this}_sendPacket(t,n,r,o){if(typeof n=="function"&&(o=n,n=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const s={type:t,data:n,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(z9.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),CGe&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Ghe.indexOf(this._offlineEventListener);r!==-1&&Ghe.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}z9.protocol=aYn;class vvs extends z9{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",g=>{if(!r)if(g.type==="pong"&&g.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;z9.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(h(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const m=new Error("probe error");m.transport=n.name,this.emitReserved("upgradeError",m)}}))};function s(){r||(r=!0,h(),n.close(),n=null)}const a=g=>{const m=new Error("probe error: "+g);m.transport=n.name,s(),this.emitReserved("upgradeError",m)};function l(){a("transport closed")}function d(){a("socket closed")}function u(g){n&&g.name!==n.name&&s()}const h=()=>{n.removeListener("open",o),n.removeListener("error",a),n.removeListener("close",l),this.off("close",d),this.off("upgrading",u)};n.once("open",o),n.once("error",a),n.once("close",l),this.once("close",d),this.once("upgrading",u),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let r=0;rhvs[o]).filter(o=>!!o)),super(t,r)}};function pvs(e,t="",n){let r=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),r=yGe(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const s=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+s+":"+r.port+t,r.href=r.protocol+"://"+s+(n&&n.port===r.port?"":":"+r.port),r}const bvs=typeof ArrayBuffer=="function",wvs=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,fYn=Object.prototype.toString,Ovs=typeof Blob=="function"||typeof Blob<"u"&&fYn.call(Blob)==="[object BlobConstructor]",yvs=typeof File=="function"||typeof File<"u"&&fYn.call(File)==="[object FileConstructor]";function Rst(e){return bvs&&(e instanceof ArrayBuffer||wvs(e))||Ovs&&e instanceof Blob||yvs&&e instanceof File}function Yhe(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.numthis.opts.maxAttachments)throw new Error("too many attachments");r.attachments=l}if(t.charAt(n+1)==="/"){const s=n+1;for(;++n&&!(t.charAt(n)===","||n===t.length););r.nsp=t.substring(s,n)}else r.nsp="/";const o=t.charAt(n+1);if(o!==""&&Number(o)==o){const s=n+1;for(;++n;){const a=t.charAt(n);if(a==null||Number(a)!=a){--n;break}if(n===t.length)break}r.id=Number(t.substring(s,n+1))}if(t.charAt(++n)){const s=this.tryParse(t.substr(n));if(Ist.isPayloadValid(r.type,s))r.data=s;else throw new Error("invalid payload")}return r}tryParse(t){try{return JSON.parse(t,this.opts.reviver)}catch{return!1}}static isPayloadValid(t,n){switch(t){case _a.CONNECT:return O0n(n);case _a.DISCONNECT:return n===void 0;case _a.CONNECT_ERROR:return typeof n=="string"||O0n(n);case _a.EVENT:case _a.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&Svs.indexOf(n[0])===-1);case _a.ACK:case _a.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class xvs{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=_vs(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Evs=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e};function O0n(e){return Object.prototype.toString.call(e)==="[object Object]"}const Tvs=Object.freeze(Object.defineProperty({__proto__:null,Decoder:Ist,Encoder:Lvs,get PacketType(){return _a}},Symbol.toStringTag,{value:"Module"}));function Rb(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const Qvs=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class gYn extends Gh{constructor(t,n,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Rb(t,"open",this.onopen.bind(this)),Rb(t,"packet",this.onpacket.bind(this)),Rb(t,"error",this.onerror.bind(this)),Rb(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){var r,o,s;if(Qvs.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(n.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const a={type:_a.EVENT,data:n};if(a.options={},a.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const h=this.ids++,g=n.pop();this._registerAckCallback(h,g),a.id=h}const l=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,d=this.connected&&!(!((s=this.io.engine)===null||s===void 0)&&s._hasPingExpired());return this.flags.volatile&&!l||(d?(this.notifyOutgoingListeners(a),this.packet(a)):this.sendBuffer.push(a)),this.flags={},this}_registerAckCallback(t,n){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[t]=n;return}const s=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let l=0;l{this.io.clearTimeoutFn(s),n.apply(this,l)};a.withError=!0,this.acks[t]=a}emitWithAck(t,...n){return new Promise((r,o)=>{const s=(a,l)=>a?o(a):r(l);s.withError=!0,n.push(s),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...s)=>(this._queue[0],o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(o)):(this._queue.shift(),n&&n(null,...s)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:_a.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case _a.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case _a.EVENT:case _a.BINARY_EVENT:this.onevent(t);break;case _a.ACK:case _a.BINARY_ACK:this.onack(t);break;case _a.DISCONNECT:this.ondisconnect();break;case _a.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...o){r||(r=!0,n.packet({type:_a.ACK,id:t,data:o}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:_a.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}RH.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0};RH.prototype.reset=function(){this.attempts=0};RH.prototype.setMin=function(e){this.ms=e};RH.prototype.setMax=function(e){this.max=e};RH.prototype.setJitter=function(e){this.jitter=e};class LGe extends Gh{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,NOe(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new RH({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const o=n.parser||Tvs;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Avs(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Rb(n,"open",function(){r.onopen(),t&&t()}),s=l=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",l),t?t(l):this.maybeReconnectOnOpen()},a=Rb(n,"error",s);if(this._timeout!==!1){const l=this._timeout,d=this.setTimeoutFn(()=>{o(),s(new Error("timeout")),n.close()},l);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(o),this.subs.push(a),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Rb(t,"ping",this.onping.bind(this)),Rb(t,"data",this.ondata.bind(this)),Rb(t,"error",this.onerror.bind(this)),Rb(t,"close",this.onclose.bind(this)),Rb(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){FOe(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new gYn(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const sG={};function Zhe(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=pvs(e,t.path||"/socket.io"),r=n.source,o=n.id,s=n.path,a=sG[o]&&s in sG[o].nsps,l=t.forceNew||t["force new connection"]||t.multiplex===!1||a;let d;return l?d=new LGe(r,t):(sG[o]||(sG[o]=new LGe(r,t)),d=sG[o]),n.query&&!t.query&&(t.query=n.queryKey),d.socket(n.path,t)}Object.assign(Zhe,{Manager:LGe,Socket:gYn,io:Zhe,connect:Zhe});function mYn(e){const{url:t,auth:n,autoConnect:r=!0,xmlTags:o=[],keepXmlInMessage:s=!0,onXmlTag:a,onError:l,onConnect:d,onDisconnect:u,manageLifecycle:h=!0}=e,g=nd(null),m=fe(!1),v=fe(!1),f=fe([]),k=fe(null),A=fe("idle"),p=fe({}),b=fe({}),w=Array.from(new Map(o.map(ke=>typeof ke=="string"?{tag:ke}:ke).filter(ke=>!!(ke!=null&&ke.tag)).map(ke=>[ke.tag,ke])).values()),O=w.map(ke=>ke.tag),y=w.filter(ke=>!(ke.keepInMessage??s)).map(ke=>ke.tag),C=new Map,_=new Map,S=X(()=>{var Te;const ke=f.value[f.value.length-1];if(!ke||ke.role!=="assistant")return!1;const me=ke.status;return!!(me==="pending"||me==="streaming"||(Te=ke.content)!=null&&Te.some(De=>De.status==="pending"||De.status==="streaming"))}),L=X(()=>f.value[f.value.length-1]),E=ke=>f.value.find(me=>me.id===ke),T=ke=>f.value.findIndex(me=>me.id===ke),D=(ke,me)=>{var _e;return(_e=ke.content)==null?void 0:_e.find(Te=>Te.id===me)},P=ke=>(ke.type==="text"||ke.type==="markdown")&&typeof ke.data=="string",Q=(ke,me)=>`${ke}:${me.id??me.type}`,M=ke=>ke.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),B=ke=>{const me={},_e=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;let Te;for(;(Te=_e.exec(ke))!==null;)me[Te[1]]=Te[2]??Te[3];return me},R=ke=>{const me=[],_e=/<(\w+)((?:\s+[\w-]+\s*=\s*(?:"[^"]*"|'[^']*'))*)\s*(?:\/>|>([\s\S]*?)<\/\1>)/g;let Te,De=0;for(;(Te=_e.exec(ke))!==null;)me.push({tag:Te[1],attrs:B(Te[2]),value:Te[3]??""}),De=_e.lastIndex;const ot=ke.slice(De).match(/<(\w+)((?:\s+[\w-]+\s*=\s*(?:"[^"]*"|'[^']*'))*)\s*>([\s\S]*)$/);return ot&&me.push({tag:ot[1],attrs:B(ot[2]),value:ot[3]}),me},I=(ke,me)=>{const _e=M(me),Te=new RegExp(`<${_e}(\\s[^>]*)?>`,"g");let De=null,Ye;for(;(Ye=Te.exec(ke))!==null;)De=Ye;if(!De)return null;const ot=B(De[1]??""),We=De.index+De[0].length,et=``,st=ke.indexOf(et,We),Me=st!==-1,Se=ke.slice(We,Me?st:ke.length).trim(),Ie=R(Se);return{value:Se,attrs:ot,children:Ie,isComplete:Me}},F=ke=>{let me=ke;for(const _e of y){const Te=M(_e);me=me.replace(new RegExp(`<${Te}(?:\\s[^>]*)?>[\\s\\S]*?<\\/${Te}>`,"g"),""),me=me.replace(new RegExp(`<${Te}(?:\\s[^>]*)?>[\\s\\S]*$`,"g"),"")}return me},j=(ke,me)=>P(me)?_.get(Q(ke,me))??me.data:null,W=(ke,me)=>{if(!P(me))return;const _e=j(ke,me)??"";me.data=y.length?F(_e):_e},H=(ke,me,_e)=>{if(!O.length||!P(me))return;const Te=Q(ke,me),De=C.get(Te)??{},Ye={...De},ot={...b.value[ke]??{}},We=me.status??_e??"pending",et=j(ke,me);if(et===null)return;let st=!1;for(const Me of O){const Se=I(et,Me);if(Se===null)continue;const{value:Ie,isComplete:ze}=Se,Ze=ze?We==="error"||We==="stop"?We:"complete":We;(De[Me]!==Ie||Ze==="complete")&&(Ye[Me]=Ie,ot[Me]=Ie,p.value={...p.value,[Me]:Ie},st=!0,a==null||a({messageId:ke,contentId:me.id,type:me.type,tag:Me,value:Ie,attrs:Se.attrs,children:Se.children,status:Ze}))}st&&(C.set(Te,Ye),b.value={...b.value,[ke]:ot})},$=(ke,me,_e)=>{var De;if(!me||me.role!=="assistant")return;const Te=me;(De=Te.content)==null||De.forEach(Ye=>H(ke,Ye,_e??Te.status))},G=(ke,me)=>{if(typeof me!="object"||me===null)return me;const _e={...ke};for(const Te in me){const De=me[Te],Ye=_e[Te];if(Array.isArray(De))_e[Te]=[...Array.isArray(Ye)?Ye:[],...De];else if(typeof De=="object"&&De!==null){const ot=typeof Ye=="object"&&Ye!==null?Ye:{};_e[Te]=G(ot,De)}else De!==void 0&&(_e[Te]=De)}return _e},q=(ke,me)=>{typeof ke.data=="string"?ke.data+=me:typeof ke.data=="object"&&ke.data!==null&&"text"in ke.data&&typeof me=="string"&&(ke.data.text=(ke.data.text||"")+me)},re=ke=>{const{messageId:me,contentId:_e,type:Te,data:De,strategy:Ye,status:ot}=ke,We=E(me);if(!We||We.role!=="assistant")return;const et=D(We,_e);if(et){if(ot&&(et.status=ot),(ot==="streaming"||Ye==="append"&&De)&&(We.status==="pending"&&(We.status="streaming"),k.value===me&&(A.value="streaming")),De==null){H(me,et,We.status);return}if(P(et)&&typeof De=="string"){const st=Q(me,et),Me=_.get(st)??et.data,Se=Ye==="append"?Me+De:De;_.set(st,Se),W(me,et)}else Ye==="append"?typeof De=="string"?q(et,De):typeof De=="object"&&(et.data=G(et.data,De)):typeof et.data=="object"&&typeof De=="object"?et.data={...et.data,...De}:et.data=De;!ot&&Ye==="append"&&(et.status="streaming"),H(me,et,We.status)}},J=()=>{g.value&&(g.value.on("message",ke=>{var _e,Te;const me={id:ke.id,role:ke.role,name:ke.name,status:ke.status||"pending",datetime:ke.datetime,content:ke.content||[],ext:ke.ext};if(ke.role==="assistant"&&((_e=me.content)==null||_e.forEach(Ye=>{P(Ye)&&(_.set(Q(ke.id,Ye),Ye.data),W(ke.id,Ye))})),f.value.push(me),ke.role==="assistant"){const De=me;(Te=De.content)==null||Te.forEach(Ye=>H(ke.id,Ye,De.status))}ke.role==="assistant"&&(k.value=ke.id,A.value=ke.status==="streaming"?"streaming":"pending")}),g.value.on("message:update",ke=>{const me=E(ke.id);me&&(ke.status&&(me.status=ke.status),ke.ext&&(me.ext={...me.ext,...ke.ext}),ke.status&&$(ke.id,me,ke.status),ke.status==="streaming"&&(A.value="streaming"),(ke.status==="complete"||ke.status==="error"||ke.status==="stop")&&k.value===ke.id&&(k.value=null,A.value="idle"))}),g.value.on("content:add",ke=>{const me=E(ke.messageId);if(!me||me.role!=="assistant")return;me.content||(me.content=[]);const _e={...ke.content,status:ke.content.status||"pending",...ke.content.type==="thinking"?{ext:{collapsed:!0,...ke.content.ext}}:{}};if(P(_e)&&(_.set(Q(ke.messageId,_e),_e.data),W(ke.messageId,_e)),_e.type==="thinking"){const Te=me.content.findIndex(De=>De.type!=="thinking");Te===-1?me.content.push(_e):me.content.splice(Te,0,_e)}else me.content.push(_e);H(ke.messageId,_e,me.status),_e.status==="streaming"&&me.status==="pending"&&(me.status="streaming")}),g.value.on("content:update",re),g.value.on("error",ke=>{console.error("[Chat Error]",ke),l==null||l(ke)}),g.value.on("connect",()=>{m.value=!0,v.value=!1,d==null||d()}),g.value.on("disconnect",ke=>{m.value=!1,v.value=!1,u==null||u(),console.log("[Chat Disconnected]",ke)}),g.value.on("connect_error",ke=>{m.value=!1,v.value=!1,console.error("[Chat Connect Error]",ke)}))},oe=()=>{var ke;(ke=g.value)!=null&&ke.connected||v.value||(v.value=!0,g.value?g.value.connect():(g.value=Zhe(t,{transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:5e3,timeout:1e4,auth:{token:localStorage.getItem("token"),...typeof n=="function"?n():n}}),J()))},se=()=>{var ke;(ke=g.value)==null||ke.disconnect(),m.value=!1,v.value=!1},le=()=>{se(),setTimeout(oe,100)},ue=(ke,me)=>{var _e;return(_e=g.value)!=null&&_e.connected?(g.value.emit(ke,me),!0):(console.warn("[Chat] Socket not connected"),!1)},ee=(ke,me)=>{var _e;return(_e=g.value)==null||_e.on(ke,me),()=>{var Te;return(Te=g.value)==null?void 0:Te.off(ke,me)}},de=(ke,me)=>{var _e;(_e=g.value)==null||_e.once(ke,me)},z=(ke,me)=>{var _e;(_e=g.value)==null||_e.off(ke,me)},Y=(ke,me)=>{if(!ke.trim()&&!(me!=null&&me.length))return!1;const _e={id:`user_${Date.now()}`,role:"user",status:"complete",datetime:new Date().toISOString(),content:[{type:"text",data:ke,status:"complete"}]};return me!=null&&me.length&&_e.content.push({type:"attachment",data:me,status:"complete"}),f.value.push(_e),ue("chat",{content:ke,attachments:me})},ie=ke=>{const me=ke||k.value;if(!me)return!1;const _e=E(me);return _e&&(_e.status="stop"),k.value=null,A.value="idle",ue("stop",{messageId:me})},te=ke=>ue("regenerate",{messageId:ke}),Z=()=>{f.value=[],k.value=null,A.value="idle",p.value={},b.value={},C.clear(),_.clear()},he=ke=>{var _e;const me=T(ke);if(me>-1){const Te=f.value[me];(_e=Te==null?void 0:Te.content)==null||_e.forEach(Ye=>{C.delete(Q(ke,Ye)),_.delete(Q(ke,Ye))});const De={...b.value};delete De[ke],b.value=De,f.value.splice(me,1)}},pe=ke=>{const me=T(ke);me>-1&&f.value.splice(me+1)},Ce=(ke,me)=>{const _e=E(ke);_e&&Object.assign(_e,me)},Qe=(ke,me)=>{var Te;const _e=E(ke);return!_e||_e.role!=="assistant"?[]:((Te=_e.content)==null?void 0:Te.filter(De=>De.type===me))||[]};return h?(An(()=>{r&&oe()}),Qa(()=>{var ke;se(),(ke=g.value)==null||ke.removeAllListeners(),g.value=null})):r&&oe(),{socket:g,connected:m,connecting:v,status:A,messages:f,currentMessageId:k,xmlData:p,xmlDataByMessage:b,isGenerating:S,lastMessage:L,connect:oe,disconnect:se,reconnect:le,emit:ue,on:ee,once:de,off:z,chat:Y,stopGenerate:ie,regenerate:te,clearMessages:Z,removeMessage:he,removeMessagesAfter:pe,updateMessage:Ce,findMessage:E,getContentByType:Qe}}const nRe=new Map;function Dvs(e){return nRe.has(e)||nRe.set(e,Wy(`scriptAgent-${e}`,()=>{const t=fe({storySkeleton:"",adaptationStrategy:"",script:[]}),{connected:n,messages:r,chat:o,stopGenerate:s,socket:a,status:l,disconnect:d,connect:u}=mYn({url:`${ku().baseUrl}/socket/scriptAgent`,auth:()=>({isolationKey:`${e}:scriptAgent`,projectId:e}),manageLifecycle:!1,xmlTags:[{tag:"storySkeleton",keepInMessage:!1},{tag:"adaptationStrategy",keepInMessage:!1},{tag:"scriptItem",keepInMessage:!1}],onXmlTag:g=>{const{tag:m,value:v,children:f,status:k,attrs:A}=g;if(m==="storySkeleton")t.value.storySkeleton=v;else if(m==="adaptationStrategy")t.value.adaptationStrategy=v;else if(m==="scriptItem"){const p=A.name??"",b=v;if(p){const w=t.value.script.findIndex(O=>O.name===p);w!==-1?t.value.script[w].content=b:t.value.script.push({name:p,content:b})}}k==="complete"&&h()},autoConnect:!1});pt(a,g=>{g&&g.on("getPlanData",(m,v)=>{v(t.value)})},{immediate:!0});async function h(){await mn.post("/scriptAgent/setPlanData",{projectId:e,agentType:"scriptAgent",data:t.value})}return{connected:n,messages:r,chat:o,stopGenerate:s,socket:a,status:l,planData:t,setPlanData:h,connect:u,disconnect:d}})),nRe.get(e)}function R7(){var t;const e=(t=ph().project)==null?void 0:t.id;if(!e)throw new Error("No project selected");return Dvs(e)()}const iRe=new Map;function Bvs(e){return iRe.has(e)||iRe.set(e,Wy(`productionAgent-${e}`,()=>{const t=[{id:"welcome",role:"assistant",content:[{type:"text",status:"complete",data:$t("workbench.production.chatBox.welcomeMessage")},{type:"suggestion",status:"complete",data:[{title:$t("workbench.production.chatBox.startMakingVideo"),prompt:$t("workbench.production.chatBox.startMakingVideoPrompt")}]}]}];An(()=>{s.value.length<=0&&(s.value=[...t,...s.value])});const n=fe({script:"",scriptPlan:"",storyboardTable:"",assets:[],storyboard:[],workbench:{videoList:[]}}),r=fe(),{connected:o,messages:s,chat:a,stopGenerate:l,socket:d,status:u,reconnect:h,connect:g}=mYn({url:`${ku().baseUrl}/socket/productionAgent`,auth:()=>({isolationKey:`${e}:productionAgent:${r.value}`,projectId:e,scriptId:r.value}),manageLifecycle:!1,autoConnect:!1,xmlTags:[{tag:"script",keepInMessage:!1},{tag:"scriptPlan",keepInMessage:!1},{tag:"storyboardTable",keepInMessage:!1},{tag:"storyboardItem",keepInMessage:!1}],onXmlTag:async R=>{const{tag:I,value:F,children:j,attrs:W,status:H}=R;if(I==="script")n.value.script=F??"";else if(I==="scriptPlan")n.value.scriptPlan=F??"";else if(I==="storyboardTable")n.value.storyboardTable=F??"";else if(I==="storyboardItem"&&H==="complete"){const $=W.prompt??"",G=Number(W.duration)||0,q=W.track||"",re=W.shouldGenerateImage=="true"?1:0,J=(W==null?void 0:W.videoDesc)??"",oe=n.value.storyboard.findIndex(se=>se.prompt==$&&se.duration==G&&J==se.videoDesc);oe!==-1?n.value.storyboard[oe].prompt=$:(n.value.storyboard.push({prompt:$||"",duration:Number(G)||0,state:"未生成",src:null,associateAssetsIds:JSON.parse(W.associateAssetsIds)||[],videoDesc:J,shouldGenerateImage:re}),await Q([{prompt:$||"",duration:Number(G)||0,track:q||"",state:"未生成",src:null,videoDesc:J,shouldGenerateImage:re,associateAssetsIds:JSON.parse(W.associateAssetsIds)||[]}]))}H=="complete"&&m()}}),m=_yi(()=>{v(r.value)},500,!0,!0);pt(d,R=>{R&&(R.on("connect",()=>{B()}),R.on("getFlowData",(I,F)=>{F(n.value)}),R.on("addDeriveAsset",async(I,F)=>{const j=n.value.assets.find($=>$.id===I.assetsId);if(!j)return F({success:!1,message:$t("storyboard.assets.notExist")});const W=j.derive||[],H=W.find($=>$.id===I.id);if(H){if(!H)return F({success:!1,message:$t("storyboard.assets.notDerivativeExist")});H.name=I.name,H.type=j.type,F({success:!0,message:$t("storyboard.assets.derivativeUpdateSuccess")})}else W.push({assetsId:I.assetsId,id:I.id,name:I.name,type:j.type,desc:I.describe,prompt:"",state:"未生成",src:""}),F({success:!0,message:$t("storyboard.assets.derivativeAddSuccess")})}),R.on("delDeriveAsset",async(I,F)=>{const j=n.value.assets.find($=>$.id===I.assetsId);if(!j)return F({success:!1,message:$t("storyboard.assets.notExist")});const W=j.derive||[],H=W.findIndex($=>$.id===I.id);if(H===-1)return F({success:!1,message:$t("storyboard.assets.notDerivativeExist")});W.splice(H,1),F({success:!0,message:$t("storyboard.assets.derivativeDelSuccess")})}),R.on("generateDeriveAsset",async(I,F)=>{const j=await A(I.ids);F({success:!0,message:j})}),R.on("generateStoryboard",async(I,F)=>{const j=await k(I.ids);F({success:!0,message:j})}))},{immediate:!0});async function v(R){await mn.post("/production/saveFlowData",{projectId:e,data:n.value,episodesId:R||r.value})}async function f(){const{data:R}=await mn.post("/production/getFlowData",{projectId:e,episodesId:r.value});n.value=R}async function k(R){n.value.storyboard.forEach(F=>{R.includes(F.id)&&(F.state="生成中")});const{data:I}=await mn.post("/production/storyboard/batchGenerateImage",{scriptId:r.value,projectId:e,storyboardIds:R,script:n.value.script,scriptPlan:n.value.scriptPlan,storyboardTable:n.value.storyboardTable,assets:n.value.assets});if(I){if(n.value.storyboard.length===0)return n.value.storyboard=I,I;n.value.storyboard.forEach(F=>{const j=I.find(W=>W.id==F.id);j&&(F.state=j.state,F.src=j.src)})}return I}async function A(R){n.value.assets.forEach(I=>{I.derive&&I.derive.forEach(F=>{R.includes(F.id)&&(F.state="生成中")})});try{const{data:I}=await mn.post("/production/assets/batchGenerateAssetsImage",{assetIds:R,projectId:e,scriptId:r.value,concurrentCount:ku().otherSetting.assetsBatchGenereateSize});return I&&I.forEach(F=>{n.value.assets.forEach(j=>{j.derive&&j.derive.forEach(W=>{W.id===F.id&&(W.state=F.state,W.src=F.src)})})}),I}catch{}}const p=X(()=>{const R=[];return n.value.assets.forEach(I=>{I.derive&&I.derive.forEach(F=>{F.state=="生成中"&&R.push(F.id)})}),R}),b=X(()=>{const R=[];return n.value.storyboard.forEach(I=>{I.state=="生成中"&&I.id&&R.push(I.id)}),R});let w=null,O=!1;async function y(){const R=p.value;if(!(R.length===0||O)){O=!0;try{const{data:I}=await mn.post("/production/assets/pollingImage",{ids:R});if(!I||I.length===0)return;I.forEach(j=>{n.value.assets.forEach(W=>{W.derive&&W.derive.forEach(H=>{H.id===j.id&&(H.state=j.state,j.src&&(H.src=j.src),H.errorReason=(j==null?void 0:j.errorReason)??"",H.prompt=(j==null?void 0:j.prompt)??"")})})})}catch(I){console.error("[assetsPolling] error",I)}finally{O=!1}}}function C(){w||(w=window.setInterval(async()=>{if(p.value.length===0){_();return}await y()},5e3),y())}function _(){w&&(clearInterval(w),w=null)}pt(()=>p.value,R=>{R.length>0?C():_()});let S=null,L=!1;async function E(){const R=b.value;if(!(R.length===0||L)){L=!0;try{const{data:I}=await mn.post("/production/storyboard/pollingImage",{ids:R});if(!I||I.length===0)return;I.forEach(j=>{const W=n.value.storyboard.find(H=>H.id===j.id);W&&(W.state=j.state,j.src&&(W.src=j.src),W.reason=(j==null?void 0:j.reason)??"")})}catch(I){console.error("[storyboardPolling] error",I)}finally{L=!1}}}function T(){S||(S=window.setInterval(async()=>{if(b.value.length===0){D();return}await E()},5e3),E())}function D(){S&&(clearInterval(S),S=null)}pt(()=>b.value,R=>{R.length>0?T():D()});function P(){if(r.value<0)return;const R={isolationKey:`${e}:productionAgent:${r.value}`,projectId:e,scriptId:r.value};o.value||g(),d.value.emit("updateContext",R)}async function Q(R){const{data:I}=await mn.post("/production/storyboard/batchAddStoryboardInfo",{scriptId:r.value,data:R,projectId:e});n.value.storyboard.forEach(F=>{const j=I.find(W=>W.prompt==F.prompt&&W.duration==F.duration);j&&(F.id=j.id,F.trackId=j.trackId,F.src=j.src,F.state=j.state,F.associateAssetsIds=j.associateAssetsIds)})}const M=fe(!1);async function B(){M.value=!0;const{data:R}=await mn.post("/agents/getMemory",{projectId:e,episodesId:r.value,agentType:"productionAgent"});s.value=[],s.value=[...t,...R],M.value=!1}return{connected:o,messages:s,chat:a,stopGenerate:l,socket:d,status:u,flowData:n,setFlowData:v,getFlowData:f,episodesId:r,stopAssetsPolling:_,stopStoryboardPolling:D,updateContext:P,getHistory:B,loadingHistory:M,batchGenerateStoryboard:k,reconnect:h}})),iRe.get(e)}function g0(){var t;const e=(t=ph().project)==null?void 0:t.id;if(!e)throw new Error("No project selected");return Bvs(e)()}const Rvs={class:"scriptAgent"},Ivs={class:"box pr"},Mvs={class:"settingMenu"},Pvs={key:0,class:"forceGenerateMask"},Fvs={class:"forceGenerateCard"},Nvs={class:"forceGenerateDesc"},Uvs={class:"forceGenerateActions"},jvs={class:"tabsWrapper"},Wvs={key:0,class:"ac"},Vvs={key:1,class:"ac"},zvs={class:"panelContent"},Hvs={class:"panelContent"},$vs={class:"panelContent"},Xvs={key:1,class:"scriptList"},Gvs={class:"scriptCardHeader"},Yvs={class:"scriptCardHeaderLeft"},Zvs={class:"scriptIndex"},qvs={class:"scriptTitle"},Kvs={class:"scriptCardActions"},Jvs={class:"scriptCardBody"},eAs={key:0},tAs={key:1,class:"emptyContent"},nAs={class:"scriptEditForm"},iAs={class:"scriptEditField"},rAs={class:"scriptEditField"},oAs=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{connected:n,messages:r,status:o,planData:s}=xs(R7()),a=fe(1),l=fe(""),d=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"],u=[{id:"welcome",role:"assistant",content:[{type:"text",status:"complete",data:$t("workbench.scriptAgent.welcomeMsg")},{type:"suggestion",status:"complete",data:[{title:$t("workbench.scriptAgent.start"),prompt:$t("workbench.scriptAgent.start")}]}]}];An(()=>{r.value.length<=0&&(r.value=[...u,...r.value]),g(),C(),R7().connect(),r.value.length<=1&&w()});const h=fe();async function g(){var I;const{data:R}=await mn.post("/scriptAgent/getPlanData",{projectId:(I=t.value)==null?void 0:I.id,agentType:"scriptAgent"});s.value.storySkeleton=R.data.storySkeleton,s.value.adaptationStrategy=R.data.adaptationStrategy,s.value.script=R.data.script||[],h.value=R.id}const m={suggestion:R=>{var I;R7().chat((I=R==null?void 0:R.content)==null?void 0:I.prompt)}};function v(R){R7().chat(R),l.value=""}function f(){R7().stopGenerate()}const k={message:$t("workbench.scriptAgent.memoryType.message"),summary:$t("workbench.scriptAgent.memoryType.summary"),all:$t("workbench.scriptAgent.memoryType.all")};function A(R){const I=co.confirm({header:$t("workbench.scriptAgent.msg.clearConfirm"),body:$t("workbench.scriptAgent.msg.clearBody",{type:k[R]}),confirmBtn:$t("workbench.scriptAgent.msg.confirmClear"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{var F;await mn.post("/agents/clearMemory",{projectId:(F=t.value)==null?void 0:F.id,agentType:"scriptAgent",type:R}),window.$message.success($t("workbench.scriptAgent.msg.memoryCleared",{type:k[R]})),I.destroy(),w()}})}function p(){const R=co.confirm({header:$t("workbench.scriptAgent.msg.reconnect"),body:$t("workbench.scriptAgent.msg.notReconnect"),confirmBtn:$t("workbench.scriptAgent.msg.keepReconnect"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{g0().reconnect(),R.destroy()}})}const b=fe(!1);async function w(){var I;b.value=!0;const{data:R}=await mn.post("/agents/getMemory",{projectId:(I=t.value)==null?void 0:I.id,agentType:"scriptAgent"});r.value=[...u,...R],b.value=!1}const O=fe(!1),y=fe([]);function C(){var R;mn.post("/novel/getNovelData",{projectId:(R=t.value)==null?void 0:R.id}).then(({data:I})=>{y.value=I,y.value.some(j=>j.eventState===0)&&!O.value&&(O.value=!0)})}const _=fe(!1),S=fe("");function L(){a.value==1?S.value=s.value.storySkeleton:a.value==2&&(S.value=s.value.adaptationStrategy),_.value=!0}const E=fe(-1),T=fe({name:"",content:""}),D=fe(!1);function P(R){const I=s.value.script[R];E.value=R,T.value={name:I.name,content:I.content},D.value=!0}async function Q(){E.value<0||(s.value.script[E.value]={...T.value},await R7().setPlanData(),await g(),window.$message.success($t("workbench.scriptAgent.msg.scriptUpdated")),D.value=!1)}async function M(R){const I=s.value.script[R],F=co.confirm({header:$t("workbench.scriptAgent.msg.deleteConfirm"),body:$t("workbench.scriptAgent.msg.deleteBody"),confirmBtn:$t("workbench.scriptAgent.msg.confirmDelete"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"danger",onConfirm:async()=>{I.id&&await mn.post("/script/delScript",{id:[I.id]}),s.value.script.splice(R,1),await R7().setPlanData(),await g(),window.$message.success($t("workbench.scriptAgent.msg.scriptDeleted")),F.destroy()}})}function B(R){mn.post("/scriptAgent/updateData",{id:h.value,data:{storySkeleton:a.value==1?R:s.value.storySkeleton,adaptationStrategy:a.value==2?R:s.value.adaptationStrategy,script:s.value.script}}).then(()=>{window.$message.success($t("workbench.scriptAgent.msg.updated")),g()}).catch(I=>{window.$message.success($t("workbench.scriptAgent.msg.error"))})}return(R,I)=>{const F=tYn,j=JGn,W=_n("i-setting-config"),H=Si,$=_n("i-api"),G=_n("i-delete"),q=_n("i-close"),re=_n("i-delete-one"),J=y1,oe=eYn,se=_n("i-dot"),le=Xy,ue=Mne,ee=_n("i-edit"),de=Ine,z=gc;return xe(),Ge("div",Rvs,[c(Ae(wGe),{class:"default-theme data f"},{default:Oe(()=>[c(Ae(PT),{size:30,"min-size":15,class:"operate"},{default:Oe(()=>[ge("div",Ivs,[c(j,{"clear-history":!1},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(r),Y=>(xe(),Ut(F,{key:Y.id,message:Y,name:Y.name,placement:Y.role==="user"?"right":"left",variant:Y.role==="user"?"base":"outline",handleActions:Y.role==="user"?{}:m,status:Y.status,allowContentSegmentCustom:""},null,8,["message","name","placement","variant","handleActions","status"]))),128))]),_:1}),c(oe,{class:"inputBox",disabled:Ae(o)==="pending"||Ae(o)==="streaming",modelValue:Ae(l),"onUpdate:modelValue":I[4]||(I[4]=Y=>Fn(l)?l.value=Y:null),loading:Ae(o)==="pending"||Ae(o)==="streaming",placeholder:"$t('workbench.scriptAgent.inputPlaceholder')",onSend:v,onStop:f},{"footer-prefix":Oe(()=>[c(J,{trigger:"click",placement:"top-left"},{content:Oe(()=>[ge("div",Mvs,[ge("div",{class:"settingMenuItem",onClick:I[0]||(I[0]=Y=>p())},[c($,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.reconnect")),1)]),ge("div",{class:"settingMenuItem",onClick:I[1]||(I[1]=Y=>A("message"))},[c(G,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearMessageMemory")),1)]),ge("div",{class:"settingMenuItem",onClick:I[2]||(I[2]=Y=>A("summary"))},[c(q,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearSummaryMemory")),1)]),ge("div",{class:"settingMenuItem danger",onClick:I[3]||(I[3]=Y=>A("all"))},[c(re,{size:"14"}),ge("span",null,Pe(R.$t("workbench.scriptAgent.clearAllMemory")),1)])])]),default:Oe(()=>[c(H,{shape:"square",variant:"outline",size:"small",disabled:Ae(o)==="pending"||Ae(o)==="streaming"},{icon:Oe(()=>[c(W,{size:"16"})]),_:1},8,["disabled"])]),_:1})]),_:1},8,["disabled","modelValue","loading"]),c(se,{class:"dot",theme:"outline",fill:Ae(n)?"green":"red"},null,8,["fill"]),c(A8,{name:"fade"},{default:Oe(()=>[Ae(O)?(xe(),Ge("div",Pvs,[ge("div",Fvs,[ge("div",Nvs,Pe(R.$t("workbench.scriptAgent.forceGenerate.desc")),1),ge("div",Uvs,[c(H,{onClick:I[5]||(I[5]=Y=>O.value=!1)},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.forceGenerate.confirm")),1)]),_:1})])])])):nn("",!0)]),_:1})])]),_:1}),c(Ae(PT),{size:70,"min-size":30,class:"data"},{default:Oe(()=>[ge("div",jvs,[c(de,{modelValue:Ae(a),"onUpdate:modelValue":I[6]||(I[6]=Y=>Fn(a)?a.value=Y:null)},{action:Oe(()=>[Ae(a)==1?(xe(),Ge("div",Wvs,[c(H,{onClick:L},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.edit")),1)]),_:1})])):Ae(a)==2?(xe(),Ge("div",Vvs,[c(H,{onClick:L},{default:Oe(()=>[Bt(Pe(R.$t("workbench.scriptAgent.edit")),1)]),_:1})])):nn("",!0)]),default:Oe(()=>[c(ue,{value:1,label:R.$t("workbench.scriptAgent.storySkeleton")},{default:Oe(()=>[ge("div",zvs,[Ae(s).storySkeleton?(xe(),Ut(Ae(i3),{key:0,modelValue:Ae(s).storySkeleton},null,8,["modelValue"])):(xe(),Ut(le,{key:1,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]),_:1},8,["label"]),c(ue,{value:2,label:R.$t("workbench.scriptAgent.adaptationStrategy")},{default:Oe(()=>[ge("div",Hvs,[Ae(s).adaptationStrategy?(xe(),Ut(Ae(i3),{key:0,modelValue:Ae(s).adaptationStrategy},null,8,["modelValue"])):(xe(),Ut(le,{key:1,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]),_:1},8,["label"]),c(ue,{value:3,label:R.$t("workbench.scriptAgent.script")},{default:Oe(()=>{var Y;return[ge("div",$vs,[(Y=Ae(s).script)!=null&&Y.length?(xe(),Ge("div",Xvs,[(xe(!0),Ge(sn,null,Bi(Ae(s).script,(ie,te)=>(xe(),Ge("div",{key:te,class:"scriptCard"},[ge("div",Gvs,[ge("div",Yvs,[ge("span",Zvs,"#"+Pe(te+1),1),ge("span",qvs,Pe(ie.name),1)]),ge("div",Kvs,[c(H,{size:"small",onClick:Z=>P(te)},{icon:Oe(()=>[c(ee,{size:"14"})]),_:1},8,["onClick"]),c(H,{theme:"danger",variant:"outline",size:"small",onClick:Z=>M(te)},{icon:Oe(()=>[c(G,{size:"14"})]),_:1},8,["onClick"])])]),ge("div",Jvs,[ie.content?(xe(),Ge("pre",eAs,Pe(ie.content),1)):(xe(),Ge("span",tAs,Pe(R.$t("workbench.scriptAgent.noContent")),1))])]))),128))])):(xe(),Ut(le,{key:0,title:R.$t("workbench.scriptAgent.noContent")},null,8,["title"]))])]}),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})]),_:1}),c(F2s,{modelValue:Ae(_),"onUpdate:modelValue":I[7]||(I[7]=Y=>Fn(_)?_.value=Y:null),onSave:B,content:Ae(S)},null,8,["modelValue","content"]),c(z,{visible:Ae(D),"onUpdate:visible":I[10]||(I[10]=Y=>Fn(D)?D.value=Y:null),header:R.$t("workbench.scriptAgent.editScript"),width:"80%",top:"10vh",placement:"center","confirm-btn":{content:R.$t("workbench.scriptAgent.save"),theme:"primary"},onConfirm:Q,onClose:I[11]||(I[11]=Y=>D.value=!1)},{default:Oe(()=>[ge("div",nAs,[ge("div",iAs,[ge("strong",null,Pe(Ae(T).name),1)]),ge("div",rAs,[ge("label",null,Pe(R.$t("workbench.scriptAgent.content")),1),c(Ae(X4),{modelValue:Ae(T).content,"onUpdate:modelValue":I[8]||(I[8]=Y=>Ae(T).content=Y),theme:"light",toolbars:d,footers:[],style:{height:"50vh"},onOnUploadImg:()=>{},onDrop:I[9]||(I[9]=Mr(()=>{},["prevent"]))},null,8,["modelValue"])])])]),_:1},8,["visible","header","confirm-btn"])])}}}),sAs=oo(oAs,[["__scopeId","data-v-261a295a"]]),aAs=Object.freeze(Object.defineProperty({__proto__:null,default:sAs},Symbol.toStringTag,{value:"Module"})),lAs=Je({__name:"imageTools",props:{src:{},placement:{},position:{},margin:{}},setup(e){const t=e,n=X(function(){return t.placement||"bottom"}),r=X(function(){const d=t.margin??"4px",u=t.position||"none";return{br:{position:"absolute",bottom:d,right:d},bl:{position:"absolute",bottom:d,left:d},tr:{position:"absolute",top:d,right:d},tl:{position:"absolute",top:d,left:d},none:{margin:d}}[u]}),o=fe(!1);function s(){o.value=!0}async function a(){try{const d=new Image;d.crossOrigin="anonymous",d.src=t.src,await new Promise(function(m,v){d.onload=function(){m()},d.onerror=function(){v(new Error($t("components.imageTools.msg.imageLoadFailed")))}});const u=document.createElement("canvas");u.width=d.naturalWidth,u.height=d.naturalHeight,u.getContext("2d").drawImage(d,0,0);const g=await new Promise(function(m,v){u.toBlob(function(f){if(f){m(f);return}v(new Error($t("components.imageTools.msg.convertFailed")))},"image/png")});await navigator.clipboard.write([new ClipboardItem({"image/png":g})]),window.$message.success($t("components.imageTools.msg.copied"))}catch{window.$message.error($t("components.imageTools.msg.copyFailed"))}}async function l(){let d="";try{const u=await fetch(t.src,{mode:"cors"});if(!u.ok)throw new Error($t("components.imageTools.msg.downloadFailed"));const h=await u.blob();d=URL.createObjectURL(h);const g=document.createElement("a");g.href=d,g.download=t.src.split("/").pop()||"image",document.body.appendChild(g),g.click(),document.body.removeChild(g),window.$message.success($t("components.imageTools.msg.downloadStarted"))}catch{const u=document.createElement("a");u.href=t.src,u.download=t.src.split("/").pop()||"image",u.target="_blank",u.rel="noopener noreferrer",document.body.appendChild(u),u.click(),document.body.removeChild(u),window.$message.warning($t("components.imageTools.msg.downloadBlockedOpenNewWindow"))}finally{d&&URL.revokeObjectURL(d)}}return(d,u)=>{const h=_n("i-copy"),g=Si,m=el,v=_n("i-expand-text-input"),f=hL,k=_n("i-download");return xe(),Ge("div",{class:"imageTools",style:no(Ae(r))},[c(m,{theme:"primary",content:d.$t("components.imageTools.copy"),placement:Ae(n)},{default:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(a,["stop"])},{icon:Oe(()=>[c(h,{size:"16"})]),_:1})]),_:1},8,["content","placement"]),c(m,{theme:"primary",content:d.$t("components.imageTools.preview"),placement:Ae(n)},{default:Oe(()=>[c(f,{visible:Ae(o),"onUpdate:visible":u[0]||(u[0]=A=>Fn(o)?o.value=A:null),images:[t.src]},{trigger:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(s,["stop"])},{icon:Oe(()=>[c(v,{size:"16"})]),_:1})]),_:1},8,["visible","images"])]),_:1},8,["content","placement"]),c(m,{theme:"primary",content:d.$t("components.imageTools.download"),placement:Ae(n)},{default:Oe(()=>[c(g,{variant:"outline",size:"small",shape:"square",onClick:Mr(l,["stop"])},{icon:Oe(()=>[c(k,{size:"16"})]),_:1})]),_:1},8,["content","placement"])],4)}}}),jre=oo(lAs,[["__scopeId","data-v-5144fc67"]]),cAs={class:"cornerScape f"},dAs={class:"left"},uAs={class:"quickActions"},hAs={class:"content"},fAs={class:"imageBox"},gAs={key:1,class:"generatingBox"},mAs={class:"generatingText"},kAs={class:"imageToolsWrap"},vAs={class:"infoBox"},AAs={class:"title"},pAs={class:"meta"},bAs={key:0,class:"prompt"},wAs={class:"drawerHeader"},OAs={key:0,class:"drawerImageBox"},yAs={key:1,class:"generatingBox"},CAs={class:"generatingText"},_As={class:"imageToolsWrap show"},SAs={class:"historyImageList f"},LAs=["onClick"],xAs={class:"drawerActions"},EAs=Je({__name:"index",setup(e){var le;const{otherSetting:t}=xs(ku()),n=fe([]),{project:r}=xs(ph()),o=fe(((le=r.value)==null?void 0:le.imageModel)??""),s=fe("1K"),a=[{label:"1K",value:"1K"},{label:"2K",value:"2K"},{label:"4K",value:"4K"}],l=fe([{labelKey:"workbench.cornerScape.filterRole",value:"role"},{labelKey:"workbench.cornerScape.filterScene",value:"scene"},{labelKey:"workbench.cornerScape.filterTool",value:"tool"}]),d=X(()=>l.value.map(ue=>({...ue,label:$t(ue.labelKey)}))),u=fe([]),h=fe(!1);let g=null;function m(){return g==null||g.abort(),g=new AbortController,g}An(()=>{f()}),Qa(()=>{g&&(g.abort(),u.value,g=null),J(),se(),u.value.forEach(ue=>{ue.state==="生成中"&&(ue.state="")})});function v(){f()}async function f(){var ue;try{h.value=!0;const{data:ee}=await mn.post("/cornerScape/getAllAssets",{projectId:(ue=r.value)==null?void 0:ue.id,type:n.value});u.value=ee}catch(ee){console.error("加载资产数据失败:",ee),u.value=[]}finally{h.value=!1}}const k=fe([]),A=X(()=>{const ue=u.value.filter(ee=>k.value.includes(ee.id)&&ee.filePath).map(ee=>ee.filePath);return ue.length>0?ue:u.value.filter(ee=>ee.filePath).map(ee=>ee.filePath)}),p=X(()=>A.value.length>0),b=ue=>{const ee=k.value.indexOf(ue);ee===-1?k.value.push(ue):k.value.splice(ee,1)},w=ue=>{k.value=u.value.filter(ee=>ue===""?!ee.state:ee.state===ue).map(ee=>ee.id)};function O(){const ue=u.value.filter(ee=>!ee.prompt||ee.prompt.trim()==="").map(ee=>ee.id);if(ue.length===0){window.$message.warning($t("workbench.cornerScape.noEmptyPrompt"));return}k.value=ue,window.$message.success($t("workbench.cornerScape.selectedCount",{count:k.value.length}))}function y(){k.value.length===u.value.length?k.value=[]:k.value=u.value.map(ue=>ue.id)}function C(){k.value=[]}const _=fe(!1),S=fe(null),L=fe(null);async function E(ue){var de;if(L.value=L.value===ue?null:ue,!S.value)return;const ee=S.value.historyImages.find(z=>z.id===L.value);try{await mn.post("/assets/saveAssets",{id:S.value.id,type:S.value.type,projectId:(de=r.value)==null?void 0:de.id,prompt:S.value.prompt,imageId:ee==null?void 0:ee.id}),ee&&(S.value.filePath=ee.filePath,S.value.state="已完成"),f(),window.$message.success($t("workbench.cornerScape.msg.replaceSuccess"))}catch{window.$message.error($t("workbench.cornerScape.msg.replaceFailed"));return}}const T=hs({assetsId:0,model:"",type:"",resolution:"",prompt:"",name:"",describe:"",promptState:""});async function D(ue){var ee;L.value=null,T.assetsId=ue.id,T.name=ue.name||"",T.type=ue.type||"",T.model=ue.model||"",S.value=ue,T.resolution=ue.resolution||"",T.prompt=ue.prompt||"",T.describe=ue.describe||"",T.promptState=ue.promptState,_.value=!0;try{const{data:de}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value}),z=de.find(Y=>Y.id===ue.id);if(z){const Y=u.value.findIndex(ie=>ie.id===ue.id);Y!==-1&&(u.value[Y]=z),S.value=z,T.prompt=z.prompt||T.prompt,T.resolution=z.resolution||T.resolution}}catch(de){console.error("刷新资产详情失败:",de)}}function P(ue,ee){var z;const de=u.value.find(Y=>Y.id===ue);de&&(de.state=ee),((z=S.value)==null?void 0:z.id)===ue&&(S.value.state=ee)}function Q(){var de;if(!S.value)return;if(!o.value){window.$message.warning($t("workbench.cornerScape.msg.selectModel"));return}if(!T.resolution){window.$message.warning($t("workbench.cornerScape.msg.selectResolution"));return}if(!T.prompt.trim()){window.$message.warning($t("workbench.cornerScape.msg.enterPrompt"));return}const ue=S.value;P(ue.id,"生成中"),_.value=!1;const ee=m();mn.post("/assetsGenerate/generateAssets",{type:ue.type??"props",projectId:(de=r.value)==null?void 0:de.id,name:ue.name??$t("workbench.cornerScape.unnamed"),base64:"",prompt:T.prompt,model:o.value,id:ue.id,resolution:T.resolution,concurrentCount:1},{signal:ee.signal}).then(async()=>{window.$message.success($t("workbench.cornerScape.msg.genSuccess",{name:ue.name})),await f()}).catch(z=>{z.name==="CanceledError"||z.code==="ERR_CANCELED"||(window.$message.error(z.message??$t("workbench.cornerScape.msg.genFailed",{name:ue.name})),P(ue.id,"生成失败"))})}async function M(){var ue;if(S.value&&T.prompt!==S.value.prompt)try{await mn.post("/assets/saveAssets",{id:S.value.id,type:S.value.type,projectId:(ue=r.value)==null?void 0:ue.id,prompt:T.prompt}),S.value.prompt=T.prompt;const ee=u.value.find(de=>de.id===S.value.id);ee&&(ee.prompt=T.prompt),window.$message.success($t("workbench.cornerScape.msg.saveSuccess"))}catch{window.$message.error($t("workbench.cornerScape.msg.saveFailed"))}}const B=fe(!1);async function R(){var ue;if(!T.prompt.trim()){window.$message.warning($t("workbench.cornerScape.msg.enterPromptFirst"));return}B.value=!0;try{const{data:ee}=await mn.post("/assetsGenerate/polishAssetsPrompt",{projectId:(ue=r.value)==null?void 0:ue.id,assetsId:T.assetsId,type:T.type??"props",name:T.name,describe:T.describe});window.$message.success($t("workbench.cornerScape.msg.promptGenSuccess")),ee.assetsId===T.assetsId&&(T.prompt=ee.prompt),f()}catch{window.$message.error($t("workbench.cornerScape.msg.polishFailed"))}finally{B.value=!1}}async function I(){var ee;if(k.value.length===0){window.$message.warning($t("workbench.cornerScape.msg.selectAtLeastOne"));return}const ue=u.value.filter(de=>k.value.includes(de.id));ue.forEach(de=>{de.promptState="生成中"}),k.value=[];try{await mn.post("/assetsGenerate/batchPolishAssetsPrompt",{projectId:(ee=r.value)==null?void 0:ee.id,items:ue.map(de=>({assetsId:de.id,type:de.type??"props",name:de.name,describe:de.describe})),concurrentCount:t.value.assetsBatchGenereateSize})}catch(de){window.$message.error(de.message??$t("workbench.cornerScape.msg.promptGenFail")),ue.forEach(z=>{const Y=u.value.find(ie=>ie.id===z.id);Y&&(Y.promptState="")})}}async function F(){var de;if(k.value.length===0){window.$message.warning($t("workbench.cornerScape.msg.selectAtLeastOne"));return}if(!o.value){window.$message.warning($t("workbench.cornerScape.msg.selectModel"));return}if(!s.value){window.$message.warning($t("workbench.cornerScape.msg.selectResolution"));return}const ue=u.value.filter(z=>k.value.includes(z.id)),ee=ue.filter(z=>!z.prompt);if(ee.length>0){const z=ee.map(Y=>Y.name).join(", ");window.$message.warning($t("workbench.cornerScape.msg.emptyPrompt",{emptyPromptNames:z}));return}ue.forEach(z=>P(z.id,"生成中")),window.$message.success($t("workbench.cornerScape.msg.batchStarted",{count:ue.length,concurrent:t.value.assetsBatchGenereateSize}));try{await mn.post("/assetsGenerate/batchGenerateImageAssets",{projectId:(de=r.value)==null?void 0:de.id,model:o.value,resolution:s.value,concurrentCount:t.value.assetsBatchGenereateSize,items:ue.map(z=>({id:z.id,type:z.type??"props",name:z.name??$t("workbench.cornerScape.unnamed"),prompt:z.prompt}))})}catch(z){if(z.name==="CanceledError"||z.code==="ERR_CANCELED")return;window.$message.error(z.message??$t("workbench.cornerScape.msg.batchFailed"))}}const j=X(()=>u.value.filter(ue=>ue.promptState=="生成中")),W=X(()=>u.value.filter(ue=>ue.state==="生成中"));let H=null,$=null;async function G(){var ee;if(j.value.length===0)return;const ue=j.value.map(de=>de.id);try{const{data:de}=await mn.post("/assets/pollingPromptAssets",{ids:ue});let z=!1;if(Array.isArray(de)&&de.length&&de.forEach(Y=>{const ie=u.value.find(te=>te.id===Y.id);ie&&(ie.promptState==="生成中"&&Y.promptState!=="生成中"&&(z=!0),ie.promptState=Y.promptState,Y.prompt!==void 0&&(ie.prompt=Y.prompt))}),z)try{const{data:Y}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value});if(Y.forEach(ie=>{const te=u.value.find(Z=>Z.id===ie.id);te&&(te.historyImages=ie.historyImages)}),S.value){const ie=Y.find(te=>te.id===S.value.id);ie&&(S.value.historyImages=ie.historyImages)}}catch(Y){console.error("刷新历史图片失败:",Y)}}catch(de){console.error("轮询提示词状态失败:",de)}}async function q(){var ee;if(W.value.length===0)return;const ue=W.value.map(de=>de.id);try{const{data:de}=await mn.post("/assets/pollingImageAssets",{ids:ue});let z=!1;if(Array.isArray(de)&&de.length&&de.forEach(Y=>{const ie=u.value.find(te=>te.id===Y.id);ie&&(ie.state==="生成中"&&Y.state!=="生成中"&&(z=!0),ie.state=Y.state,Y.filePath!==void 0&&(ie.filePath=Y.filePath))}),z)try{const{data:Y}=await mn.post("/cornerScape/getAllAssets",{projectId:(ee=r.value)==null?void 0:ee.id,type:n.value});if(Y.forEach(ie=>{const te=u.value.find(Z=>Z.id===ie.id);te&&(te.historyImages=ie.historyImages)}),S.value){const ie=Y.find(te=>te.id===S.value.id);ie&&(S.value.historyImages=ie.historyImages)}}catch(Y){console.error("刷新历史图片失败:",Y)}}catch(de){console.error("轮询图片生成状态失败:",de)}}function re(){H||(H=setInterval(async()=>{if(j.value.length===0){J();return}await G()},3e3))}function J(){H&&(clearInterval(H),H=null)}function oe(){$||($=setInterval(async()=>{if(W.value.length===0){se();return}await q()},3e3))}function se(){$&&(clearInterval($),$=null)}return pt(j,ue=>{ue.length>0?re():J()}),pt(W,ue=>{ue.length>0?oe():se()}),(ue,ee)=>{const de=Si,z=hL,Y=p2,ie=U4e,te=pA,Z=A2,he=km,pe=py,Ce=Xy,Qe=Wc,ke=y1,me=jre,_e=Zh,Te=Sg,De=c2,Ye=dL,ot=b3i;return xe(),Ge("div",cAs,[ge("div",dAs,[c(he,{shadow:"",title:ue.$t("workbench.cornerScape.batchSettings"),class:"card"},{default:Oe(()=>[c(Z,{labelAlign:"top"},{default:Oe(()=>[c(Y,{label:ue.$t("workbench.cornerScape.quickActions")},{default:Oe(()=>[ge("div",uAs,[c(de,{theme:"primary",variant:"outline",onClick:ee[0]||(ee[0]=We=>O())},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectPromptEmpty")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[1]||(ee[1]=We=>w(""))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectUngenerated")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[2]||(ee[2]=We=>w("已完成"))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectGenerated")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:ee[3]||(ee[3]=We=>w("生成失败"))},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.selectFailed")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:y},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.invertSelection")),1)]),_:1}),c(de,{theme:"primary",variant:"outline",onClick:C},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.clearSelection")),1)]),_:1}),c(z,{images:Ae(A),closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:We})=>[c(de,{theme:"primary",variant:"outline",disabled:!Ae(p),onClick:et=>Ae(p)&&We()},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.batchPreview")),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["images"])])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.assetTypeFilter")},{default:Oe(()=>[c(ie,{onChange:v,modelValue:Ae(n),"onUpdate:modelValue":ee[4]||(ee[4]=We=>Fn(n)?n.value=We:null),options:Ae(d),class:"filterGroup"},null,8,["modelValue","options"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.genModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(o),"onUpdate:modelValue":ee[5]||(ee[5]=We=>Fn(o)?o.value=We:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.resolution")},{default:Oe(()=>[c(te,{modelValue:Ae(s),"onUpdate:modelValue":ee[6]||(ee[6]=We=>Fn(s)?s.value=We:null),placeholder:ue.$t("workbench.cornerScape.resolutionPh"),options:[{label:"1K",value:"1K"},{label:"2K",value:"2K"},{label:"4K",value:"4K"}]},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(Y,null,{default:Oe(()=>[c(de,{theme:"primary",block:"",onClick:I},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.batchGenerationPrompt")),1)]),_:1}),c(de,{theme:"primary",block:"",onClick:F,style:{"margin-left":"10px"}},{default:Oe(()=>[Bt(Pe(ue.$t("workbench.cornerScape.startBatch")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),ge("div",hAs,[(xe(!0),Ge(sn,null,Bi(Ae(u),We=>uu((xe(),Ut(he,{shadow:"",class:"card",key:We.id,onClick:et=>D(We)},{default:Oe(()=>[ge("div",fAs,[c(pe,{class:"selectBox",checked:Ae(k).includes(We.id),onClick:ee[7]||(ee[7]=Mr(()=>{},["stop"])),onChange:et=>b(We.id)},null,8,["checked","onChange"]),!We.state&&We.promptState!=="生成中"?(xe(),Ut(Ce,{key:0,type:"maintenance",title:ue.$t("workbench.cornerScape.waitingGen")},null,8,["title"])):We.state==="生成中"||We.promptState==="生成中"?(xe(),Ge("div",gAs,[c(Qe),ge("span",mAs,Pe(We.promptState==="生成中"?ue.$t("workbench.cornerScape.generatingPrompt"):ue.$t("workbench.cornerScape.generating")),1)])):We.state==="生成失败"?(xe(),Ut(ke,{key:2,content:We.errorReason},{default:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.genFailed")},null,8,["title"])]),_:1},8,["content"])):(xe(),Ut(_e,{key:3,class:"image",src:We.filePath??void 0,fit:"contain",preview:!0,lazy:!0},{error:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.imageError")},null,8,["title"])]),overlayContent:Oe(()=>[ge("div",kAs,[c(me,{src:We.filePath,position:"br"},null,8,["src"])])]),_:2},1032,["src"]))]),ge("div",vAs,[ge("div",AAs,Pe(We.name),1),ge("div",pAs,[c(Te,{size:"small",variant:"light-outline",theme:"warning",class:"typeTag"},{default:Oe(()=>[Bt(Pe(We.type==="role"?ue.$t("workbench.cornerScape.typeRole"):We.type==="scene"?ue.$t("workbench.cornerScape.typeScene"):We.type==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown")),1)]),_:2},1024),We.model?(xe(),Ut(Te,{key:0,size:"small",variant:"outline",class:"stateTag"},{default:Oe(()=>[Bt(Pe(We.model),1)]),_:2},1024)):nn("",!0),We.resolution?(xe(),Ut(Te,{key:1,size:"small",variant:"outline"},{default:Oe(()=>[Bt(Pe(We.resolution),1)]),_:2},1024)):nn("",!0)]),We.describe?(xe(),Ge("div",bAs,Pe(We.type==="role"?ue.$t("workbench.cornerScape.typeRole"):We.type==="scene"?ue.$t("workbench.cornerScape.typeScene"):We.type==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown"))+Pe(ue.$t("workbench.cornerScape.descriptionSuffix"))+Pe(We.describe),1)):nn("",!0)])]),_:2},1032,["onClick"])),[[h1,Ae(u).length>0]])),128)),Ae(u).length===0?(xe(),Ut(Ce,{key:0,type:"empty",title:ue.$t("workbench.cornerScape.operateScriptFirst")},null,8,["title"])):nn("",!0),c(ot,{closeBtn:!0,closeOnEscKeydown:"",showOverlay:!1,footer:!1,visible:Ae(_),"onUpdate:visible":ee[11]||(ee[11]=We=>Fn(_)?_.value=We:null),size:"480px"},{header:Oe(()=>{var We;return[ge("div",wAs,[ge("span",null,Pe((We=Ae(S))==null?void 0:We.name)+" - "+Pe(ue.$t("workbench.cornerScape.individualConfig")),1),c(Te,{size:"medium",variant:"light-outline",theme:"warning"},{default:Oe(()=>{var et,st,Me;return[Bt(Pe(((et=Ae(S))==null?void 0:et.type)==="role"?ue.$t("workbench.cornerScape.typeRole"):((st=Ae(S))==null?void 0:st.type)==="scene"?ue.$t("workbench.cornerScape.typeScene"):((Me=Ae(S))==null?void 0:Me.type)==="tool"?ue.$t("workbench.cornerScape.typeTool"):ue.$t("workbench.cornerScape.typeUnknown")),1)]}),_:1})])]}),default:Oe(()=>[Ae(S)?(xe(),Ge("div",OAs,[Ae(S).state?Ae(S).state==="生成中"?(xe(),Ge("div",yAs,[c(Qe),ge("span",CAs,Pe(ue.$t("workbench.cornerScape.generating")),1)])):Ae(S).state==="生成失败"?(xe(),Ut(Ce,{key:2,type:"fail",title:ue.$t("workbench.cornerScape.genFailed")},null,8,["title"])):Ae(S).filePath?(xe(),Ut(_e,{key:3,class:"image",src:Ae(S).filePath,fit:"contain"},{error:Oe(()=>[c(Ce,{type:"fail",title:ue.$t("workbench.cornerScape.imageError")},null,8,["title"])]),overlayContent:Oe(()=>[ge("div",_As,[c(me,{src:Ae(S).filePath,position:"br"},null,8,["src"])])]),_:1},8,["src"])):(xe(),Ut(Ce,{key:4,type:"maintenance",title:ue.$t("workbench.cornerScape.noImage")},null,8,["title"])):(xe(),Ut(Ce,{key:0,type:"maintenance",title:ue.$t("workbench.cornerScape.waitingGen")},null,8,["title"]))])):nn("",!0),Ae(S)?(xe(),Ut(Z,{key:1,labelAlign:"top"},{default:Oe(()=>[c(Y,{label:ue.$t("workbench.cornerScape.history")},{default:Oe(()=>[ge("div",SAs,[(xe(!0),Ge(sn,null,Bi(Ae(S).historyImages,We=>(xe(),Ge("div",{key:We.id,class:Eo(["historyImageItem",{selected:Ae(L)===We.id}]),onClick:Mr(et=>E(We.id),["stop"])},[c(_e,{src:We.filePath,style:{width:"100px",minWidth:"100px",height:"100px"},lazy:!0,fit:"contain"},null,8,["src"])],10,LAs))),128))])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.genModel")},{default:Oe(()=>[c(T8,{modelValue:Ae(o),"onUpdate:modelValue":ee[8]||(ee[8]=We=>Fn(o)?o.value=We:null),type:"image"},null,8,["modelValue"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.resolution")},{default:Oe(()=>[c(te,{modelValue:Ae(T).resolution,"onUpdate:modelValue":ee[9]||(ee[9]=We=>Ae(T).resolution=We),placeholder:ue.$t("workbench.cornerScape.resolutionPh"),options:a},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),c(Y,{label:ue.$t("workbench.cornerScape.promptLabel")},{default:Oe(()=>[c(Qe,{style:{width:"100%"},loading:Ae(S).promptState=="生成中"},{default:Oe(()=>[c(De,{modelValue:Ae(T).prompt,"onUpdate:modelValue":ee[10]||(ee[10]=We=>Ae(T).prompt=We),placeholder:ue.$t("workbench.cornerScape.promptPh"),autosize:{minRows:4,maxRows:10},disabled:Ae(B),onBlur:M},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["loading"])]),_:1},8,["label"]),c(Y,null,{default:Oe(()=>[ge("div",xAs,[c(de,{theme:"default",variant:"outline",loading:Ae(B),onClick:R,disabled:Ae(S).promptState=="生成中"},{icon:Oe(()=>[c(Ye,{name:"edit"})]),default:Oe(()=>[Bt(" "+Pe(ue.$t("workbench.cornerScape.aiPolish")),1)]),_:1},8,["loading","disabled"]),c(de,{theme:"primary",onClick:Q,disabled:Ae(S).state=="生成中"},{icon:Oe(()=>[c(Ye,{name:"refresh"})]),default:Oe(()=>[Bt(" "+Pe(ue.$t("workbench.cornerScape.regenerate")),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})):nn("",!0)]),_:1},8,["visible"])])])}}}),TAs=oo(EAs,[["__scopeId","data-v-6f5829b2"]]),QAs=Object.freeze(Object.defineProperty({__proto__:null,default:TAs},Symbol.toStringTag,{value:"Module"}));function xte(e){return vz()?(YQ(e),!0):!1}function wS(e){return typeof e=="function"?e():Ae(e)}const DAs=typeof window<"u"&&typeof document<"u",BAs=e=>typeof e<"u",RAs=Object.prototype.toString,IAs=e=>RAs.call(e)==="[object Object]",MAs=()=>{};function PAs(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const kYn=e=>e();function FAs(e=kYn){const t=fe(!0);function n(){t.value=!1}function r(){t.value=!0}return{isActive:d6(t),pause:n,resume:r,eventFilter:(...s)=>{t.value&&e(...s)}}}function y0n(e,t=!1,n="Timeout"){return new Promise((r,o)=>{setTimeout(t?()=>o(n):r,e)})}function NAs(e,t,n={}){const{eventFilter:r=kYn,...o}=n;return pt(e,PAs(r,t),o)}function rF(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:a,resume:l,isActive:d}=FAs(r);return{stop:NAs(e,t,{...o,eventFilter:s}),pause:a,resume:l,isActive:d}}function UAs(e,t={}){if(!Fn(e))return Li(e);const n=Array.isArray(e.value)?Array.from({length:e.value.length}):{};for(const r in e.value)n[r]=QYe(()=>({get(){return e.value[r]},set(o){var s;if((s=wS(t.replaceRef))!=null?s:!0)if(Array.isArray(e.value)){const l=[...e.value];l[r]=o,e.value=l}else{const l={...e.value,[r]:o};Object.setPrototypeOf(l,Object.getPrototypeOf(e.value)),e.value=l}else e.value[r]=o}}));return n}function xGe(e,t=!1){function n(g,{flush:m="sync",deep:v=!1,timeout:f,throwOnTimeout:k}={}){let A=null;const b=[new Promise(w=>{A=pt(e,O=>{g(O)!==t&&(A==null||A(),w(O))},{flush:m,deep:v,immediate:!0})})];return f!=null&&b.push(y0n(f,k).then(()=>wS(e)).finally(()=>A==null?void 0:A())),Promise.race(b)}function r(g,m){if(!Fn(g))return n(O=>O===g,m);const{flush:v="sync",deep:f=!1,timeout:k,throwOnTimeout:A}=m??{};let p=null;const w=[new Promise(O=>{p=pt([e,g],([y,C])=>{t!==(y===C)&&(p==null||p(),O(y))},{flush:v,deep:f,immediate:!0})})];return k!=null&&w.push(y0n(k,A).then(()=>wS(e)).finally(()=>(p==null||p(),wS(e)))),Promise.race(w)}function o(g){return n(m=>!!m,g)}function s(g){return r(null,g)}function a(g){return r(void 0,g)}function l(g){return n(Number.isNaN,g)}function d(g,m){return n(v=>{const f=Array.from(v);return f.includes(g)||f.includes(wS(g))},m)}function u(g){return h(1,g)}function h(g=1,m){let v=-1;return n(()=>(v+=1,v>=g),m)}return Array.isArray(wS(e))?{toMatch:n,toContains:d,changed:u,changedTimes:h,get not(){return xGe(e,!t)}}:{toMatch:n,toBe:r,toBeTruthy:o,toBeNull:s,toBeNaN:l,toBeUndefined:a,changed:u,changedTimes:h,get not(){return xGe(e,!t)}}}function EGe(e){return xGe(e)}function jAs(e){var t;const n=wS(e);return(t=n==null?void 0:n.$el)!=null?t:n}const vYn=DAs?window:void 0;function AYn(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=vYn):[t,n,r,o]=e,!t)return MAs;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],a=()=>{s.forEach(h=>h()),s.length=0},l=(h,g,m,v)=>(h.addEventListener(g,m,v),()=>h.removeEventListener(g,m,v)),d=pt(()=>[jAs(t),wS(o)],([h,g])=>{if(a(),!h)return;const m=IAs(g)?{...g}:g;s.push(...n.flatMap(v=>r.map(f=>l(h,v,f,m))))},{immediate:!0,flush:"post"}),u=()=>{d(),a()};return xte(u),u}function WAs(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function C0n(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:o=vYn,eventName:s="keydown",passive:a=!1,dedupe:l=!1}=r,d=WAs(t);return AYn(o,s,h=>{h.repeat&&wS(l)||d(h)&&n(h)},a)}function VAs(e){return JSON.parse(JSON.stringify(e))}function rRe(e,t,n,r={}){var o,s,a;const{clone:l=!1,passive:d=!1,eventName:u,deep:h=!1,defaultValue:g,shouldEmit:m}=r,v=ps(),f=n||(v==null?void 0:v.emit)||((o=v==null?void 0:v.$emit)==null?void 0:o.bind(v))||((a=(s=v==null?void 0:v.proxy)==null?void 0:s.$emit)==null?void 0:a.bind(v==null?void 0:v.proxy));let k=u;t||(t="modelValue"),k=k||`update:${t.toString()}`;const A=w=>l?typeof l=="function"?l(w):VAs(w):w,p=()=>BAs(e[t])?A(e[t]):g,b=w=>{m?m(w)&&f(k,w):f(k,w)};if(d){const w=p(),O=fe(w);let y=!1;return pt(()=>e[t],C=>{y||(y=!0,O.value=A(C),ai(()=>y=!1))}),pt(O,C=>{!y&&(C!==e[t]||h)&&b(C)},{deep:h}),O}else return X({get(){return p()},set(w){b(w)}})}var zAs={value:()=>{}};function UOe(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}qhe.prototype=UOe.prototype={constructor:qhe,on:function(e,t){var n=this._,r=HAs(e+"",n),o,s=-1,a=r.length;if(arguments.length<2){for(;++s0)for(var n=new Array(o),r=0,o,s;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),S0n.hasOwnProperty(t)?{space:S0n[t],local:e}:e}function XAs(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===TGe&&t.documentElement.namespaceURI===TGe?t.createElement(e):t.createElementNS(n,e)}}function GAs(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pYn(e){var t=jOe(e);return(t.local?GAs:XAs)(t)}function YAs(){}function Mst(e){return e==null?YAs:function(){return this.querySelector(e)}}function ZAs(e){typeof e!="function"&&(e=Mst(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=w&&(w=b+1);!(y=A[w])&&++w=0;)(a=r[o])&&(s&&a.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(a,s),s=a);return this}function w4s(e){e||(e=O4s);function t(g,m){return g&&m?e(g.__data__,m.__data__):!g-!m}for(var n=this._groups,r=n.length,o=new Array(r),s=0;st?1:e>=t?0:NaN}function y4s(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function C4s(){return Array.from(this)}function _4s(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?M4s:typeof t=="function"?F4s:P4s)(e,t,n??"")):oz(this.node(),e)}function oz(e,t){return e.style.getPropertyValue(t)||CYn(e).getComputedStyle(e,null).getPropertyValue(t)}function U4s(e){return function(){delete this[e]}}function j4s(e,t){return function(){this[e]=t}}function W4s(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function V4s(e,t){return arguments.length>1?this.each((t==null?U4s:typeof t=="function"?W4s:j4s)(e,t)):this.node()[e]}function _Yn(e){return e.trim().split(/^|\s+/)}function Pst(e){return e.classList||new SYn(e)}function SYn(e){this._node=e,this._names=_Yn(e.getAttribute("class")||"")}SYn.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function LYn(e,t){for(var n=Pst(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function vps(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,s;n()=>e;function QGe(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:s,x:a,y:l,dx:d,dy:u,dispatch:h}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:d,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:h}})}QGe.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Lps(e){return!e.ctrlKey&&!e.button}function xps(){return this.parentNode}function Eps(e,t){return t??{x:e.x,y:e.y}}function Tps(){return navigator.maxTouchPoints||"ontouchstart"in this}function Qps(){var e=Lps,t=xps,n=Eps,r=Tps,o={},s=UOe("start","drag","end"),a=0,l,d,u,h,g=0;function m(O){O.on("mousedown.drag",v).filter(r).on("touchstart.drag",A).on("touchmove.drag",p,Sps).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function v(O,y){if(!(h||!e.call(this,O,y))){var C=w(this,t.call(this,O,y),O,y,"mouse");C&&($b(O.view).on("mousemove.drag",f,Ete).on("mouseup.drag",k,Ete),QYn(O.view),oRe(O),u=!1,l=O.clientX,d=O.clientY,C("start",O))}}function f(O){if(gj(O),!u){var y=O.clientX-l,C=O.clientY-d;u=y*y+C*C>g}o.mouse("drag",O)}function k(O){$b(O.view).on("mousemove.drag mouseup.drag",null),DYn(O.view,u),gj(O),o.mouse("end",O)}function A(O,y){if(e.call(this,O,y)){var C=O.changedTouches,_=t.call(this,O,y),S=C.length,L,E;for(L=0;L>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Qde(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Qde(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Bps.exec(e))?new qk(t[1],t[2],t[3],1):(t=Rps.exec(e))?new qk(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ips.exec(e))?Qde(t[1],t[2],t[3],t[4]):(t=Mps.exec(e))?Qde(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Pps.exec(e))?B0n(t[1],t[2]/100,t[3]/100,1):(t=Fps.exec(e))?B0n(t[1],t[2]/100,t[3]/100,t[4]):L0n.hasOwnProperty(e)?T0n(L0n[e]):e==="transparent"?new qk(NaN,NaN,NaN,0):null}function T0n(e){return new qk(e>>16&255,e>>8&255,e&255,1)}function Qde(e,t,n,r){return r<=0&&(e=t=n=NaN),new qk(e,t,n,r)}function jps(e){return e instanceof Vre||(e=KR(e)),e?(e=e.rgb(),new qk(e.r,e.g,e.b,e.opacity)):new qk}function DGe(e,t,n,r){return arguments.length===1?jps(e):new qk(e,t,n,r??1)}function qk(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Fst(qk,DGe,BYn(Vre,{brighter(e){return e=e==null?M2e:Math.pow(M2e,e),new qk(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tte:Math.pow(Tte,e),new qk(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new qk(SD(this.r),SD(this.g),SD(this.b),P2e(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Q0n,formatHex:Q0n,formatHex8:Wps,formatRgb:D0n,toString:D0n}));function Q0n(){return`#${_Q(this.r)}${_Q(this.g)}${_Q(this.b)}`}function Wps(){return`#${_Q(this.r)}${_Q(this.g)}${_Q(this.b)}${_Q((isNaN(this.opacity)?1:this.opacity)*255)}`}function D0n(){const e=P2e(this.opacity);return`${e===1?"rgb(":"rgba("}${SD(this.r)}, ${SD(this.g)}, ${SD(this.b)}${e===1?")":`, ${e})`}`}function P2e(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function SD(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function _Q(e){return e=SD(e),(e<16?"0":"")+e.toString(16)}function B0n(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Xb(e,t,n,r)}function RYn(e){if(e instanceof Xb)return new Xb(e.h,e.s,e.l,e.opacity);if(e instanceof Vre||(e=KR(e)),!e)return new Xb;if(e instanceof Xb)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),s=Math.max(t,n,r),a=NaN,l=s-o,d=(s+o)/2;return l?(t===s?a=(n-r)/l+(n0&&d<1?0:a,new Xb(a,l,d,e.opacity)}function Vps(e,t,n,r){return arguments.length===1?RYn(e):new Xb(e,t,n,r??1)}function Xb(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Fst(Xb,Vps,BYn(Vre,{brighter(e){return e=e==null?M2e:Math.pow(M2e,e),new Xb(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tte:Math.pow(Tte,e),new Xb(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new qk(sRe(e>=240?e-240:e+120,o,r),sRe(e,o,r),sRe(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new Xb(R0n(this.h),Dde(this.s),Dde(this.l),P2e(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=P2e(this.opacity);return`${e===1?"hsl(":"hsla("}${R0n(this.h)}, ${Dde(this.s)*100}%, ${Dde(this.l)*100}%${e===1?")":`, ${e})`}`}}));function R0n(e){return e=(e||0)%360,e<0?e+360:e}function Dde(e){return Math.max(0,Math.min(1,e||0))}function sRe(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Nst=e=>()=>e;function zps(e,t){return function(n){return e+n*t}}function Hps(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function $ps(e){return(e=+e)==1?IYn:function(t,n){return n-t?Hps(t,n,e):Nst(isNaN(t)?n:t)}}function IYn(e,t){var n=t-e;return n?zps(e,n):Nst(isNaN(e)?t:e)}const F2e=function e(t){var n=$ps(t);function r(o,s){var a=n((o=DGe(o)).r,(s=DGe(s)).r),l=n(o.g,s.g),d=n(o.b,s.b),u=IYn(o.opacity,s.opacity);return function(h){return o.r=a(h),o.g=l(h),o.b=d(h),o.opacity=u(h),o+""}}return r.gamma=e,r}(1);function Xps(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(s){for(o=0;on&&(s=t.slice(n,s),l[a]?l[a]+=s:l[++a]=s),(r=r[0])===(o=o[0])?l[a]?l[a]+=o:l[++a]=o:(l[++a]=null,d.push({i:a,x:vO(r,o)})),n=aRe.lastIndex;return n180?h+=360:h-u>180&&(u+=360),m.push({i:g.push(o(g)+"rotate(",null,r)-2,x:vO(u,h)})):h&&g.push(o(g)+"rotate("+h+r)}function l(u,h,g,m){u!==h?m.push({i:g.push(o(g)+"skewX(",null,r)-2,x:vO(u,h)}):h&&g.push(o(g)+"skewX("+h+r)}function d(u,h,g,m,v,f){if(u!==g||h!==m){var k=v.push(o(v)+"scale(",null,",",null,")");f.push({i:k-4,x:vO(u,g)},{i:k-2,x:vO(h,m)})}else(g!==1||m!==1)&&v.push(o(v)+"scale("+g+","+m+")")}return function(u,h){var g=[],m=[];return u=e(u),h=e(h),s(u.translateX,u.translateY,h.translateX,h.translateY,g,m),a(u.rotate,h.rotate,g,m),l(u.skewX,h.skewX,g,m),d(u.scaleX,u.scaleY,h.scaleX,h.scaleY,g,m),u=h=null,function(v){for(var f=-1,k=m.length,A;++f=0&&e._call.call(void 0,t),e=e._next;--sz}function P0n(){JR=(U2e=Dte.now())+WOe,sz=aY=0;try{lbs()}finally{sz=0,dbs(),JR=0}}function cbs(){var e=Dte.now(),t=e-U2e;t>NYn&&(WOe-=t,U2e=e)}function dbs(){for(var e,t=N2e,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:N2e=n);lY=e,IGe(r)}function IGe(e){if(!sz){aY&&(aY=clearTimeout(aY));var t=e-JR;t>24?(e<1/0&&(aY=setTimeout(P0n,e-Dte.now()-WOe)),aG&&(aG=clearInterval(aG))):(aG||(U2e=Dte.now(),aG=setInterval(cbs,NYn)),sz=1,UYn(P0n))}}function F0n(e,t,n){var r=new j2e;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var ubs=UOe("start","end","cancel","interrupt"),hbs=[],WYn=0,N0n=1,MGe=2,Jhe=3,U0n=4,PGe=5,efe=6;function VOe(e,t,n,r,o,s){var a=e.__transition;if(!a)e.__transition={};else if(n in a)return;fbs(e,n,{name:t,index:r,group:o,on:ubs,tween:hbs,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:WYn})}function jst(e,t){var n=H3(e,t);if(n.state>WYn)throw new Error("too late; already scheduled");return n}function uC(e,t){var n=H3(e,t);if(n.state>Jhe)throw new Error("too late; already running");return n}function H3(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function fbs(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=jYn(s,0,n.time);function s(u){n.state=N0n,n.timer.restart(a,n.delay,n.time),n.delay<=u&&a(u-n.delay)}function a(u){var h,g,m,v;if(n.state!==N0n)return d();for(h in r)if(v=r[h],v.name===n.name){if(v.state===Jhe)return F0n(a);v.state===U0n?(v.state=efe,v.timer.stop(),v.on.call("interrupt",e,e.__data__,v.index,v.group),delete r[h]):+hMGe&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Vbs(e,t,n){var r,o,s=Wbs(t)?jst:uC;return function(){var a=s(this,e),l=a.on;l!==r&&(o=(r=l).copy()).on(t,n),a.on=o}}function zbs(e,t){var n=this._id;return arguments.length<2?H3(this.node(),n).on.on(e):this.each(Vbs(n,e,t))}function Hbs(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function $bs(){return this.on("end.remove",Hbs(this._id))}function Xbs(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Mst(e));for(var r=this._groups,o=r.length,s=new Array(o),a=0;a()=>e;function A3s(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function FS(e,t,n){this.k=e,this.x=t,this.y=n}FS.prototype={constructor:FS,scale:function(e){return e===1?this:new FS(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new FS(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var az=new FS(1,0,0);FS.prototype;function lRe(e){e.stopImmediatePropagation()}function lG(e){e.preventDefault(),e.stopImmediatePropagation()}function p3s(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function b3s(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function j0n(){return this.__zoom||az}function w3s(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function O3s(){return navigator.maxTouchPoints||"ontouchstart"in this}function y3s(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],s=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>s?(s+a)/2:Math.min(0,s)||Math.max(0,a))}function C3s(){var e=p3s,t=b3s,n=y3s,r=w3s,o=O3s,s=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,d=Khe,u=UOe("start","zoom","end"),h,g,m,v=500,f=150,k=0,A=10;function p(Q){Q.property("__zoom",j0n).on("wheel.zoom",S,{passive:!1}).on("mousedown.zoom",L).on("dblclick.zoom",E).filter(o).on("touchstart.zoom",T).on("touchmove.zoom",D).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}p.transform=function(Q,M,B,R){var I=Q.selection?Q.selection():Q;I.property("__zoom",j0n),Q!==I?y(Q,M,B,R):I.interrupt().each(function(){C(this,arguments).event(R).start().zoom(null,typeof M=="function"?M.apply(this,arguments):M).end()})},p.scaleBy=function(Q,M,B,R){p.scaleTo(Q,function(){var I=this.__zoom.k,F=typeof M=="function"?M.apply(this,arguments):M;return I*F},B,R)},p.scaleTo=function(Q,M,B,R){p.transform(Q,function(){var I=t.apply(this,arguments),F=this.__zoom,j=B==null?O(I):typeof B=="function"?B.apply(this,arguments):B,W=F.invert(j),H=typeof M=="function"?M.apply(this,arguments):M;return n(w(b(F,H),j,W),I,a)},B,R)},p.translateBy=function(Q,M,B,R){p.transform(Q,function(){return n(this.__zoom.translate(typeof M=="function"?M.apply(this,arguments):M,typeof B=="function"?B.apply(this,arguments):B),t.apply(this,arguments),a)},null,R)},p.translateTo=function(Q,M,B,R,I){p.transform(Q,function(){var F=t.apply(this,arguments),j=this.__zoom,W=R==null?O(F):typeof R=="function"?R.apply(this,arguments):R;return n(az.translate(W[0],W[1]).scale(j.k).translate(typeof M=="function"?-M.apply(this,arguments):-M,typeof B=="function"?-B.apply(this,arguments):-B),F,a)},R,I)};function b(Q,M){return M=Math.max(s[0],Math.min(s[1],M)),M===Q.k?Q:new FS(M,Q.x,Q.y)}function w(Q,M,B){var R=M[0]-B[0]*Q.k,I=M[1]-B[1]*Q.k;return R===Q.x&&I===Q.y?Q:new FS(Q.k,R,I)}function O(Q){return[(+Q[0][0]+ +Q[1][0])/2,(+Q[0][1]+ +Q[1][1])/2]}function y(Q,M,B,R){Q.on("start.zoom",function(){C(this,arguments).event(R).start()}).on("interrupt.zoom end.zoom",function(){C(this,arguments).event(R).end()}).tween("zoom",function(){var I=this,F=arguments,j=C(I,F).event(R),W=t.apply(I,F),H=B==null?O(W):typeof B=="function"?B.apply(I,F):B,$=Math.max(W[1][0]-W[0][0],W[1][1]-W[0][1]),G=I.__zoom,q=typeof M=="function"?M.apply(I,F):M,re=d(G.invert(H).concat($/G.k),q.invert(H).concat($/q.k));return function(J){if(J===1)J=q;else{var oe=re(J),se=$/oe[2];J=new FS(se,H[0]-oe[0]*se,H[1]-oe[1]*se)}j.zoom(null,J)}})}function C(Q,M,B){return!B&&Q.__zooming||new _(Q,M)}function _(Q,M){this.that=Q,this.args=M,this.active=0,this.sourceEvent=null,this.extent=t.apply(Q,M),this.taps=0}_.prototype={event:function(Q){return Q&&(this.sourceEvent=Q),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(Q,M){return this.mouse&&Q!=="mouse"&&(this.mouse[1]=M.invert(this.mouse[0])),this.touch0&&Q!=="touch"&&(this.touch0[1]=M.invert(this.touch0[0])),this.touch1&&Q!=="touch"&&(this.touch1[1]=M.invert(this.touch1[0])),this.that.__zoom=M,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(Q){var M=$b(this.that).datum();u.call(Q,this.that,new A3s(Q,{sourceEvent:this.sourceEvent,target:p,transform:this.that.__zoom,dispatch:u}),M)}};function S(Q,...M){if(!e.apply(this,arguments))return;var B=C(this,M).event(Q),R=this.__zoom,I=Math.max(s[0],Math.min(s[1],R.k*Math.pow(2,r.apply(this,arguments)))),F=Kw(Q);if(B.wheel)(B.mouse[0][0]!==F[0]||B.mouse[0][1]!==F[1])&&(B.mouse[1]=R.invert(B.mouse[0]=F)),clearTimeout(B.wheel);else{if(R.k===I)return;B.mouse=[F,R.invert(F)],tfe(this),B.start()}lG(Q),B.wheel=setTimeout(j,f),B.zoom("mouse",n(w(b(R,I),B.mouse[0],B.mouse[1]),B.extent,a));function j(){B.wheel=null,B.end()}}function L(Q,...M){if(m||!e.apply(this,arguments))return;var B=Q.currentTarget,R=C(this,M,!0).event(Q),I=$b(Q.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",$,!0),F=Kw(Q,B),j=Q.clientX,W=Q.clientY;QYn(Q.view),lRe(Q),R.mouse=[F,this.__zoom.invert(F)],tfe(this),R.start();function H(G){if(lG(G),!R.moved){var q=G.clientX-j,re=G.clientY-W;R.moved=q*q+re*re>k}R.event(G).zoom("mouse",n(w(R.that.__zoom,R.mouse[0]=Kw(G,B),R.mouse[1]),R.extent,a))}function $(G){I.on("mousemove.zoom mouseup.zoom",null),DYn(G.view,R.moved),lG(G),R.event(G).end()}}function E(Q,...M){if(e.apply(this,arguments)){var B=this.__zoom,R=Kw(Q.changedTouches?Q.changedTouches[0]:Q,this),I=B.invert(R),F=B.k*(Q.shiftKey?.5:2),j=n(w(b(B,F),R,I),t.apply(this,M),a);lG(Q),l>0?$b(this).transition().duration(l).call(y,j,R,Q):$b(this).call(p.transform,j,R,Q)}}function T(Q,...M){if(e.apply(this,arguments)){var B=Q.touches,R=B.length,I=C(this,M,Q.changedTouches.length===R).event(Q),F,j,W,H;for(lRe(Q),j=0;j(e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom",e))(Vi||{}),Vst=(e=>(e.Partial="partial",e.Full="full",e))(Vst||{}),FT=(e=>(e.Bezier="default",e.SimpleBezier="simple-bezier",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e))(FT||{}),H6=(e=>(e.Strict="strict",e.Loose="loose",e))(H6||{}),FGe=(e=>(e.Arrow="arrow",e.ArrowClosed="arrowclosed",e))(FGe||{}),lq=(e=>(e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal",e))(lq||{}),$Yn=(e=>(e.TopLeft="top-left",e.TopCenter="top-center",e.TopRight="top-right",e.BottomLeft="bottom-left",e.BottomCenter="bottom-center",e.BottomRight="bottom-right",e))($Yn||{});const _3s=["INPUT","SELECT","TEXTAREA"],S3s=typeof document<"u"?document:null;function NGe(e){var t,n;const r=((n=(t=e.composedPath)==null?void 0:t.call(e))==null?void 0:n[0])||e.target,o=typeof(r==null?void 0:r.hasAttribute)=="function"?r.hasAttribute("contenteditable"):!1,s=typeof(r==null?void 0:r.closest)=="function"?r.closest(".nokey"):null;return _3s.includes(r==null?void 0:r.nodeName)||o||!!s}function L3s(e){return e.ctrlKey||e.metaKey||e.shiftKey||e.altKey}function W0n(e,t,n,r){const o=t.replace("+",` `).replace(` `,` @@ -15474,12 +15474,12 @@ Edge: ${e} Source: ${t} Target: ${n}`,EDGE_ORPHANED:e=>`Edge was orphaned (suddenly missing source or target) and has been removed Edge: ${e}`,EDGE_NOT_FOUND:e=>`Edge not found -Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>"The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead"};class Lf extends Error{constructor(t,...n){var r;super((r=ekn[t])==null?void 0:r.call(ekn,...n)),this.name="VueFlowError",this.code=t,this.args=n}}function Hst(e){return"clientX"in e}function X3s(e){return"sourceEvent"in e}function QO(e,t){const n=Hst(e);let r,o;return n?(r=e.clientX,o=e.clientY):"touches"in e&&e.touches.length>0?(r=e.touches[0].clientX,o=e.touches[0].clientY):"changedTouches"in e&&e.changedTouches.length>0?(r=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY):(r=0,o=0),{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}}const z2e=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function G3s(e){var t,n;return{width:((t=e.dimensions)==null?void 0:t.width)??e.width??0,height:((n=e.dimensions)==null?void 0:n.height)??e.height??0}}function HOe(e,t=[1,1]){return{x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}}const Y3s=()=>!0;function uRe(e){e==null||e.classList.remove("valid","connecting","vue-flow__handle-valid","vue-flow__handle-connecting")}function Z3s(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const s of t.values())V2e(o,W2e(s))>0&&r.push(s);return r}const q3s=250;function K3s(e,t,n,r){var o,s;let a=[],l=Number.POSITIVE_INFINITY;const d=Z3s(e,n,t+q3s);for(const u of d){const h=[...((o=u.handleBounds)==null?void 0:o.source)??[],...((s=u.handleBounds)==null?void 0:s.target)??[]];for(const g of h){if(r.nodeId===g.nodeId&&r.type===g.type&&r.id===g.id)continue;const{x:m,y:v}=lz(u,g,g.position,!0),f=Math.sqrt((m-e.x)**2+(v-e.y)**2);f>t||(f1){const u=r.type==="source"?"target":"source";return a.find(h=>h.type===u)??a[0]}return a[0]}function tkn(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:s,doc:a,lib:l,flowId:d,isValidConnection:u=Y3s},h,g,m,v){const f=s==="target",k=t?a.querySelector(`.${l}-flow__handle[data-id="${d}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:A,y:p}=QO(e),b=a.elementFromPoint(A,p),w=b!=null&&b.classList.contains(`${l}-flow__handle`)?b:k,O={handleDomNode:w,isValid:!1,connection:null,toHandle:null};if(w){const y=aZn(void 0,w),C=w.getAttribute("data-nodeid"),_=w.getAttribute("data-handleid"),S=w.classList.contains("connectable"),L=w.classList.contains("connectableend");if(!C||!y)return O;const E={source:f?C:r,sourceHandle:f?_:o,target:f?r:C,targetHandle:f?o:_};O.connection=E;const D=S&&L&&(n===H6.Strict?f&&y==="source"||!f&&y==="target":C!==r||_!==o);O.isValid=D&&u(E,{nodes:g,edges:h,sourceNode:m(E.source),targetNode:m(E.target)}),O.toHandle=lZn(C,y,_,v,n,!0)}return O}function aZn(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function J3s(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function ews(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}function lZn(e,t,n,r,o,s=!1){var a,l,d;const u=r.get(e);if(!u)return null;const h=o===H6.Strict?(a=u.handleBounds)==null?void 0:a[t]:[...((l=u.handleBounds)==null?void 0:l.source)??[],...((d=u.handleBounds)==null?void 0:d.target)??[]],g=(n?h==null?void 0:h.find(m=>m.id===n):h==null?void 0:h[0])??null;return g&&s?{...g,...lz(u,g,g.position,!0)}:g}const UGe={[Vi.Left]:Vi.Right,[Vi.Right]:Vi.Left,[Vi.Top]:Vi.Bottom,[Vi.Bottom]:Vi.Top},tws=["production","prod"];function zre(e,...t){cZn()&&console.warn(`[Vue Flow]: ${e}`,...t)}function cZn(){return!tws.includes("production")}function nkn(e,t,n,r,o){const s=t.querySelectorAll(`.vue-flow__handle.${e}`);return s!=null&&s.length?Array.from(s).map(a=>{const l=a.getBoundingClientRect();return{id:a.getAttribute("data-handleid"),type:e,nodeId:o,position:a.getAttribute("data-handlepos"),x:(l.left-n.left)/r,y:(l.top-n.top)/r,...zOe(a)}}):null}function jGe(e,t,n,r,o,s=!1,a){o.value=!1,e.selected?(s||e.selected&&t)&&(r([e]),ai(()=>{a.blur()})):n([e])}function Nh(e){return typeof Ae(e)<"u"}function nws(e,t,n,r){if(!e||!e.source||!e.target)return n(new Lf(Yh.EDGE_INVALID,(e==null?void 0:e.id)??"[ID UNKNOWN]")),!1;let o;return $6(e)?o=e:o={...e,id:JYn(e)},o=qYn(o,void 0,r),I3s(o,t)?!1:o}function iws(e,t,n,r,o){if(!t.source||!t.target)return o(new Lf(Yh.EDGE_INVALID,e.id)),!1;if(!n)return o(new Lf(Yh.EDGE_NOT_FOUND,e.id)),!1;const{id:s,...a}=e;return{...a,id:r?JYn(t):s,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle}}function ikn(e,t,n){const r={},o=[];for(let s=0;sl.id===s.parentNode);s.parentNode&&!a&&n(new Lf(Yh.NODE_MISSING_PARENT,s.id,s.parentNode)),(s.parentNode||r[s.id])&&(r[s.id]&&(s.isParent=!0),a&&(a.isParent=!0))}return o}function rkn(e,t,n,r,o,s){let a=o;const l=r.get(a)||new Map;r.set(a,l.set(n,t)),a=`${o}-${e}`;const d=r.get(a)||new Map;if(r.set(a,d.set(n,t)),s){a=`${o}-${e}-${s}`;const u=r.get(a)||new Map;r.set(a,u.set(n,t))}}function hRe(e,t,n){e.clear();for(const r of n){const{source:o,target:s,sourceHandle:a=null,targetHandle:l=null}=r,d={edgeId:r.id,source:o,target:s,sourceHandle:a,targetHandle:l},u=`${o}-${a}--${s}-${l}`,h=`${s}-${l}--${o}-${a}`;rkn("source",d,h,e,o,a),rkn("target",d,u,e,s,l)}}function okn(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function fRe(e,t,n,r,o,s,a,l){const d=[];for(const u of e){const h=$6(u)?u:nws(u,l,o,s);if(!h)continue;const g=n(h.source),m=n(h.target);if(!g||!m){o(new Lf(Yh.EDGE_SOURCE_TARGET_MISSING,h.id,h.source,h.target));continue}if(!g){o(new Lf(Yh.EDGE_SOURCE_MISSING,h.id,h.source));continue}if(!m){o(new Lf(Yh.EDGE_TARGET_MISSING,h.id,h.target));continue}if(t&&!t(h,{edges:l,nodes:a,sourceNode:g,targetNode:m})){o(new Lf(Yh.EDGE_INVALID,h.id));continue}const v=r(h.id);d.push({...qYn(h,v,s),sourceNode:g,targetNode:m})}return d}const skn=Symbol("vueFlow"),dZn=Symbol("nodeId"),uZn=Symbol("nodeRef"),rws=Symbol("edgeId"),ows=Symbol("edgeRef"),$Oe=Symbol("slots");function hZn(e){const{vueFlowRef:t,snapToGrid:n,snapGrid:r,noDragClassName:o,nodeLookup:s,nodeExtent:a,nodeDragThreshold:l,viewport:d,autoPanOnNodeDrag:u,autoPanSpeed:h,nodesDraggable:g,panBy:m,findNode:v,multiSelectionActive:f,nodesSelectionActive:k,selectNodesOnDrag:A,removeSelectedElements:p,addSelectedNodes:b,updateNodePositions:w,emits:O}=nl(),{onStart:y,onDrag:C,onStop:_,onClick:S,el:L,disabled:E,id:T,selectable:D,dragHandle:P}=e,Q=nd(!1);let M=[],B,R=null,I={x:void 0,y:void 0},F={x:0,y:0},j=null,W=!1,H=!1,$=0,G=!1;const q=lws(),re=({x:ee,y:de})=>{I={x:ee,y:de};let z=!1;if(M=M.map(Y=>{const ie={x:ee-Y.distance.x,y:de-Y.distance.y},{computedPosition:te}=zst(Y,n.value?HOe(ie,r.value):ie,O.error,a.value,Y.parentNode?v(Y.parentNode):void 0);return z=z||Y.position.x!==te.x||Y.position.y!==te.y,Y.position=te,Y}),H=H||z,!!z&&(w(M,!0,!0),Q.value=!0,j)){const[Y,ie]=dRe({id:T,dragItems:M,findNode:v});C({event:j,node:Y,nodes:ie})}},J=()=>{if(!R)return;const[ee,de]=oZn(F,R,h.value);if(ee!==0||de!==0){const z={x:(I.x??0)-ee/d.value.zoom,y:(I.y??0)-de/d.value.zoom};m({x:ee,y:de})&&re(z)}$=requestAnimationFrame(J)},oe=(ee,de)=>{W=!0;const z=v(T);!A.value&&!f.value&&z&&(z.selected||p()),z&&Fo(D)&&A.value&&jGe(z,f.value,b,p,k,!1,de);const Y=q(ee.sourceEvent);if(I=Y,M=j3s(s.value,g.value,Y,T),M.length){const[ie,te]=dRe({id:T,dragItems:M,findNode:v});y({event:ee.sourceEvent,node:ie,nodes:te})}},se=(ee,de)=>{var z;ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||(H=!1,l.value===0&&oe(ee,de),I=q(ee.sourceEvent),R=((z=t.value)==null?void 0:z.getBoundingClientRect())||null,F=QO(ee.sourceEvent,R))},le=(ee,de)=>{const z=q(ee.sourceEvent);if(!G&&W&&u.value&&(G=!0,J()),!W){const Y=z.xSnapped-(I.x??0),ie=z.ySnapped-(I.y??0);Math.sqrt(Y*Y+ie*ie)>l.value&&oe(ee,de)}(I.x!==z.xSnapped||I.y!==z.ySnapped)&&M.length&&W&&(j=ee.sourceEvent,F=QO(ee.sourceEvent,R),re(z))},ue=ee=>{let de=!1;if(!W&&!Q.value&&!f.value){const z=ee.sourceEvent,Y=q(z),ie=Y.xSnapped-(I.x??0),te=Y.ySnapped-(I.y??0),Z=Math.sqrt(ie*ie+te*te);Z!==0&&Z<=l.value&&(S==null||S(z),de=!0)}if(M.length&&!de){H&&(w(M,!1,!1),H=!1);const[z,Y]=dRe({id:T,dragItems:M,findNode:v});_({event:ee.sourceEvent,node:z,nodes:Y})}M=[],Q.value=!1,G=!1,W=!1,I={x:void 0,y:void 0},cancelAnimationFrame($)};return pt([()=>Fo(E),L],([ee,de],z,Y)=>{if(de){const ie=$b(de);ee||(B=Qps().on("start",te=>se(te,de)).on("drag",te=>le(te,de)).on("end",te=>ue(te)).filter(te=>{const Z=te.target,he=Fo(P);return!te.button&&(!o.value||!K0n(Z,`.${o.value}`,de)&&(!he||K0n(Z,he,de)))}),ie.call(B)),Y(()=>{ie.on(".drag",null),B&&(B.on("start",null),B.on("drag",null),B.on("end",null))})}}),Q}function sws(){return{doubleClick:sr(),click:sr(),mouseEnter:sr(),mouseMove:sr(),mouseLeave:sr(),contextMenu:sr(),updateStart:sr(),update:sr(),updateEnd:sr()}}function aws(e,t){const n=sws();return n.doubleClick.on(r=>{var o,s;t.edgeDoubleClick(r),(s=(o=e.events)==null?void 0:o.doubleClick)==null||s.call(o,r)}),n.click.on(r=>{var o,s;t.edgeClick(r),(s=(o=e.events)==null?void 0:o.click)==null||s.call(o,r)}),n.mouseEnter.on(r=>{var o,s;t.edgeMouseEnter(r),(s=(o=e.events)==null?void 0:o.mouseEnter)==null||s.call(o,r)}),n.mouseMove.on(r=>{var o,s;t.edgeMouseMove(r),(s=(o=e.events)==null?void 0:o.mouseMove)==null||s.call(o,r)}),n.mouseLeave.on(r=>{var o,s;t.edgeMouseLeave(r),(s=(o=e.events)==null?void 0:o.mouseLeave)==null||s.call(o,r)}),n.contextMenu.on(r=>{var o,s;t.edgeContextMenu(r),(s=(o=e.events)==null?void 0:o.contextMenu)==null||s.call(o,r)}),n.updateStart.on(r=>{var o,s;t.edgeUpdateStart(r),(s=(o=e.events)==null?void 0:o.updateStart)==null||s.call(o,r)}),n.update.on(r=>{var o,s;t.edgeUpdate(r),(s=(o=e.events)==null?void 0:o.update)==null||s.call(o,r)}),n.updateEnd.on(r=>{var o,s;t.edgeUpdateEnd(r),(s=(o=e.events)==null?void 0:o.updateEnd)==null||s.call(o,r)}),Object.entries(n).reduce((r,[o,s])=>(r.emit[o]=s.trigger,r.on[o]=s.on,r),{emit:{},on:{}})}function lws(){const{viewport:e,snapGrid:t,snapToGrid:n,vueFlowRef:r}=nl();return o=>{var s;const a=((s=r.value)==null?void 0:s.getBoundingClientRect())??{left:0,top:0},l=X3s(o)?o.sourceEvent:o,{x:d,y:u}=QO(l,a),h=Rte({x:d,y:u},e.value),{x:g,y:m}=n.value?HOe(h,t.value):h;return{xSnapped:g,ySnapped:m,...h}}}function Mde(){return!0}function fZn({handleId:e,nodeId:t,type:n,isValidConnection:r,edgeUpdaterType:o,onEdgeUpdate:s,onEdgeUpdateEnd:a}){const{id:l,vueFlowRef:d,connectionMode:u,connectionRadius:h,connectOnClick:g,connectionClickStartHandle:m,nodesConnectable:v,autoPanOnConnect:f,autoPanSpeed:k,findNode:A,panBy:p,startConnection:b,updateConnection:w,endConnection:O,emits:y,viewport:C,edges:_,nodes:S,isValidConnection:L,nodeLookup:E}=nl();let T=null,D=!1,P=null;function Q(B){var R;const I=Fo(n)==="target",F=Hst(B),j=V0n(B.target),W=B.currentTarget;if(W&&(F&&B.button===0||!F)){let H=function(Qe){z=QO(Qe,ue),re=K3s(Rte(z,C.value,!1,[1,1]),h.value,E.value,te),Y||(ie(),Y=!0);const ke=tkn(Qe,{handle:re,connectionMode:u.value,fromNodeId:Fo(t),fromHandleId:Fo(e),fromType:I?"target":"source",isValidConnection:q,doc:j,lib:"vue",flowId:l,nodeLookup:E.value},_.value,S.value,A,E.value);P=ke.handleDomNode,T=ke.connection,D=ews(!!re,ke.isValid);const me={...Ce,isValid:D,to:ke.toHandle&&D?Bte({x:ke.toHandle.x,y:ke.toHandle.y},C.value):z,toHandle:ke.toHandle,toPosition:D&&ke.toHandle?ke.toHandle.position:UGe[te.position],toNode:ke.toHandle?E.value.get(ke.toHandle.nodeId):null};if(D&&re&&(Ce!=null&&Ce.toHandle)&&me.toHandle&&Ce.toHandle.type===me.toHandle.type&&Ce.toHandle.nodeId===me.toHandle.nodeId&&Ce.toHandle.id===me.toHandle.id&&Ce.to.x===me.to.x&&Ce.to.y===me.to.y)return;const _e=re??ke.toHandle;if(w(_e&&D?Bte({x:_e.x,y:_e.y},C.value):z,_e,J3s(!!_e,D)),Ce=me,!re&&!D&&!P)return uRe(de);T&&T.source!==T.target&&P&&(uRe(de),de=P,P.classList.add("connecting","vue-flow__handle-connecting"),P.classList.toggle("valid",!!D),P.classList.toggle("vue-flow__handle-valid",!!D))},$=function(Qe){"touches"in Qe&&Qe.touches.length>0||((re||P)&&T&&D&&(s?s(Qe,T):y.connect(T)),y.connectEnd(Qe),o&&(a==null||a(Qe)),uRe(de),cancelAnimationFrame(J),O(Qe),Y=!1,D=!1,T=null,P=null,j.removeEventListener("mousemove",H),j.removeEventListener("mouseup",$),j.removeEventListener("touchmove",H),j.removeEventListener("touchend",$))};const G=A(Fo(t));let q=Fo(r)||L.value||Mde;!q&&G&&(q=(I?G.isValidSourcePos:G.isValidTargetPos)||Mde);let re,J=0;const{x:oe,y:se}=QO(B),le=aZn(Fo(o),W),ue=(R=d.value)==null?void 0:R.getBoundingClientRect();if(!ue||!le)return;const ee=lZn(Fo(t),le,Fo(e),E.value,u.value);if(!ee)return;let de,z=QO(B,ue),Y=!1;const ie=()=>{if(!f.value)return;const[Qe,ke]=oZn(z,ue,k.value);p({x:Qe,y:ke}),J=requestAnimationFrame(ie)},te={...ee,nodeId:Fo(t),type:le,position:ee.position},Z=E.value.get(Fo(t)),pe={inProgress:!0,isValid:null,from:lz(Z,te,Vi.Left,!0),fromHandle:te,fromPosition:te.position,fromNode:Z,to:z,toHandle:null,toPosition:UGe[te.position],toNode:null};b({nodeId:Fo(t),id:Fo(e),type:le,position:(W==null?void 0:W.getAttribute("data-handlepos"))||Vi.Top,...z},{x:oe-ue.left,y:se-ue.top}),y.connectStart({event:B,nodeId:Fo(t),handleId:Fo(e),handleType:le});let Ce=pe;j.addEventListener("mousemove",H),j.addEventListener("mouseup",$),j.addEventListener("touchmove",H),j.addEventListener("touchend",$)}}function M(B){var R,I;if(!g.value)return;const F=Fo(n)==="target";if(!m.value){y.clickConnectStart({event:B,nodeId:Fo(t),handleId:Fo(e)}),b({nodeId:Fo(t),type:Fo(n),id:Fo(e),position:Vi.Top,...QO(B)},void 0,!0);return}let j=Fo(r)||L.value||Mde;const W=A(Fo(t));if(!j&&W&&(j=(F?W.isValidSourcePos:W.isValidTargetPos)||Mde),W&&(typeof W.connectable>"u"?v.value:W.connectable)===!1)return;const H=V0n(B.target),$=tkn(B,{handle:{nodeId:Fo(t),id:Fo(e),type:Fo(n),position:Vi.Top,...QO(B)},connectionMode:u.value,fromNodeId:m.value.nodeId,fromHandleId:m.value.id??null,fromType:m.value.type,isValidConnection:j,doc:H,lib:"vue",flowId:l,nodeLookup:E.value},_.value,S.value,A,E.value),G=((R=$.connection)==null?void 0:R.source)===((I=$.connection)==null?void 0:I.target);$.isValid&&$.connection&&!G&&y.connect($.connection),y.clickConnectEnd(B),O(B,!0)}return{handlePointerDown:Q,handleClick:M}}function cws(){return bt(dZn,"")}function gZn(e){const t=e??cws()??"",n=bt(uZn,fe(null)),{findNode:r,edges:o,emits:s}=nl(),a=r(t);return a||s.error(new Lf(Yh.NODE_NOT_FOUND,t)),{id:t,nodeEl:n,node:a,parentNode:X(()=>r(a.parentNode)),connectedEdges:X(()=>iZn([a],o.value))}}function dws(){return{doubleClick:sr(),click:sr(),mouseEnter:sr(),mouseMove:sr(),mouseLeave:sr(),contextMenu:sr(),dragStart:sr(),drag:sr(),dragStop:sr()}}function uws(e,t){const n=dws();return n.doubleClick.on(r=>{var o,s;t.nodeDoubleClick(r),(s=(o=e.events)==null?void 0:o.doubleClick)==null||s.call(o,r)}),n.click.on(r=>{var o,s;t.nodeClick(r),(s=(o=e.events)==null?void 0:o.click)==null||s.call(o,r)}),n.mouseEnter.on(r=>{var o,s;t.nodeMouseEnter(r),(s=(o=e.events)==null?void 0:o.mouseEnter)==null||s.call(o,r)}),n.mouseMove.on(r=>{var o,s;t.nodeMouseMove(r),(s=(o=e.events)==null?void 0:o.mouseMove)==null||s.call(o,r)}),n.mouseLeave.on(r=>{var o,s;t.nodeMouseLeave(r),(s=(o=e.events)==null?void 0:o.mouseLeave)==null||s.call(o,r)}),n.contextMenu.on(r=>{var o,s;t.nodeContextMenu(r),(s=(o=e.events)==null?void 0:o.contextMenu)==null||s.call(o,r)}),n.dragStart.on(r=>{var o,s;t.nodeDragStart(r),(s=(o=e.events)==null?void 0:o.dragStart)==null||s.call(o,r)}),n.drag.on(r=>{var o,s;t.nodeDrag(r),(s=(o=e.events)==null?void 0:o.drag)==null||s.call(o,r)}),n.dragStop.on(r=>{var o,s;t.nodeDragStop(r),(s=(o=e.events)==null?void 0:o.dragStop)==null||s.call(o,r)}),Object.entries(n).reduce((r,[o,s])=>(r.emit[o]=s.trigger,r.on[o]=s.on,r),{emit:{},on:{}})}function mZn(){const{getSelectedNodes:e,nodeExtent:t,updateNodePositions:n,findNode:r,snapGrid:o,snapToGrid:s,nodesDraggable:a,emits:l}=nl();return(d,u=!1)=>{const h=s.value?o.value[0]:5,g=s.value?o.value[1]:5,m=u?4:1,v=d.x*h*m,f=d.y*g*m,k=[];for(const A of e.value)if(A.draggable||a&&typeof A.draggable>"u"){const p={x:A.computedPosition.x+v,y:A.computedPosition.y+f},{position:b}=zst(A,p,l.error,t.value,A.parentNode?r(A.parentNode):void 0);k.push({id:A.id,position:b,from:A.position,distance:{x:d.x,y:d.y},dimensions:A.dimensions})}n(k,!0,!1)}}const Pde=.1,hws=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2;function Tx(){return zre("Viewport not initialized yet."),Promise.resolve(!1)}const fws={zoomIn:Tx,zoomOut:Tx,zoomTo:Tx,fitView:Tx,setCenter:Tx,fitBounds:Tx,project:e=>e,screenToFlowCoordinate:e=>e,flowToScreenCoordinate:e=>e,setViewport:Tx,setTransform:Tx,getViewport:()=>({x:0,y:0,zoom:1}),getTransform:()=>({x:0,y:0,zoom:1}),viewportInitialized:!1};function gws(e){function t(r,o){return new Promise(s=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate((o==null?void 0:o.interpolate)==="linear"?aq:Khe).scaleBy(gRe(e.d3Selection,o==null?void 0:o.duration,o==null?void 0:o.ease,()=>{s(!0)}),r):s(!1)})}function n(r,o,s,a){return new Promise(l=>{var d;const{x:u,y:h}=ZYn({x:-r,y:-o},e.translateExtent),g=az.translate(-u,-h).scale(s);e.d3Selection&&e.d3Zoom?(d=e.d3Zoom)==null||d.interpolate((a==null?void 0:a.interpolate)==="linear"?aq:Khe).transform(gRe(e.d3Selection,a==null?void 0:a.duration,a==null?void 0:a.ease,()=>{l(!0)}),g):l(!1)})}return X(()=>e.d3Zoom&&e.d3Selection&&e.dimensions.width&&e.dimensions.height?{viewportInitialized:!0,zoomIn:o=>t(1.2,o),zoomOut:o=>t(1/1.2,o),zoomTo:(o,s)=>new Promise(a=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate((s==null?void 0:s.interpolate)==="linear"?aq:Khe).scaleTo(gRe(e.d3Selection,s==null?void 0:s.duration,s==null?void 0:s.ease,()=>{a(!0)}),o):a(!1)}),setViewport:(o,s)=>n(o.x,o.y,o.zoom,s),setTransform:(o,s)=>n(o.x,o.y,o.zoom,s),getViewport:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),getTransform:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),fitView:(o={padding:Pde,includeHiddenNodes:!1,duration:0})=>{var s,a;const l=[];for(const m of e.nodes)m.dimensions.width&&m.dimensions.height&&((o==null?void 0:o.includeHiddenNodes)||!m.hidden)&&(!((s=o.nodes)!=null&&s.length)||(a=o.nodes)!=null&&a.length&&o.nodes.includes(m.id))&&l.push(m);if(!l.length)return Promise.resolve(!1);const d=tZn(l),{x:u,y:h,zoom:g}=z0n(d,e.dimensions.width,e.dimensions.height,o.minZoom??e.minZoom,o.maxZoom??e.maxZoom,o.padding??Pde);return n(u,h,g,o)},setCenter:(o,s,a)=>{const l=typeof(a==null?void 0:a.zoom)<"u"?a.zoom:e.maxZoom,d=e.dimensions.width/2-o*l,u=e.dimensions.height/2-s*l;return n(d,u,l,a)},fitBounds:(o,s={padding:Pde})=>{const{x:a,y:l,zoom:d}=z0n(o,e.dimensions.width,e.dimensions.height,e.minZoom,e.maxZoom,s.padding??Pde);return n(a,l,d,s)},project:o=>Rte(o,e.viewport,e.snapToGrid,e.snapGrid),screenToFlowCoordinate:o=>{if(e.vueFlowRef){const{x:s,y:a}=e.vueFlowRef.getBoundingClientRect(),l={x:o.x-s,y:o.y-a};return Rte(l,e.viewport,e.snapToGrid,e.snapGrid)}return{x:0,y:0}},flowToScreenCoordinate:o=>{if(e.vueFlowRef){const{x:s,y:a}=e.vueFlowRef.getBoundingClientRect(),l={x:o.x+s,y:o.y+a};return Bte(l,e.viewport)}return{x:0,y:0}}}:fws)}function gRe(e,t=0,n=hws,r=()=>{}){const o=typeof t=="number"&&t>0;return o||r(),o?e.transition().duration(t).ease(n).on("end",r):e}function mws(e,t,n){const r=One(!0);return r.run(()=>{const o=()=>{r.run(()=>{let k,A,p=!!(n.nodes.value.length||n.edges.value.length);k=rF([e.modelValue,()=>{var b,w;return(w=(b=e.modelValue)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setElements(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.nodes,n.edges,()=>n.edges.value.length,()=>n.nodes.value.length],([b,w])=>{var O;(O=e.modelValue)!=null&&O.value&&Array.isArray(e.modelValue.value)&&(k==null||k.pause(),e.modelValue.value=[...b,...w],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},s=()=>{r.run(()=>{let k,A,p=!!n.nodes.value.length;k=rF([e.nodes,()=>{var b,w;return(w=(b=e.nodes)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setNodes(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.nodes,()=>n.nodes.value.length],([b])=>{var w;(w=e.nodes)!=null&&w.value&&Array.isArray(e.nodes.value)&&(k==null||k.pause(),e.nodes.value=[...b],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},a=()=>{r.run(()=>{let k,A,p=!!n.edges.value.length;k=rF([e.edges,()=>{var b,w;return(w=(b=e.edges)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setEdges(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.edges,()=>n.edges.value.length],([b])=>{var w;(w=e.edges)!=null&&w.value&&Array.isArray(e.edges.value)&&(k==null||k.pause(),e.edges.value=[...b],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},l=()=>{r.run(()=>{pt(()=>t.maxZoom,()=>{t.maxZoom&&Nh(t.maxZoom)&&n.setMaxZoom(t.maxZoom)},{immediate:!0})})},d=()=>{r.run(()=>{pt(()=>t.minZoom,()=>{t.minZoom&&Nh(t.minZoom)&&n.setMinZoom(t.minZoom)},{immediate:!0})})},u=()=>{r.run(()=>{pt(()=>t.translateExtent,()=>{t.translateExtent&&Nh(t.translateExtent)&&n.setTranslateExtent(t.translateExtent)},{immediate:!0})})},h=()=>{r.run(()=>{pt(()=>t.nodeExtent,()=>{t.nodeExtent&&Nh(t.nodeExtent)&&n.setNodeExtent(t.nodeExtent)},{immediate:!0})})},g=()=>{r.run(()=>{pt(()=>t.applyDefault,()=>{Nh(t.applyDefault)&&(n.applyDefault.value=t.applyDefault)},{immediate:!0})})},m=()=>{r.run(()=>{const k=async A=>{let p=A;typeof t.autoConnect=="function"&&(p=await t.autoConnect(A)),p!==!1&&n.addEdges([p])};pt(()=>t.autoConnect,()=>{Nh(t.autoConnect)&&(n.autoConnect.value=t.autoConnect)},{immediate:!0}),pt(n.autoConnect,(A,p,b)=>{A?n.onConnect(k):n.hooks.value.connect.off(k),b(()=>{n.hooks.value.connect.off(k)})},{immediate:!0})})},v=()=>{const k=["id","modelValue","translateExtent","nodeExtent","edges","nodes","maxZoom","minZoom","applyDefault","autoConnect"];for(const A of Object.keys(t)){const p=A;if(!k.includes(p)){const b=Pa(()=>t[p]),w=n[p];Fn(w)&&r.run(()=>{pt(b,O=>{Nh(O)&&(w.value=O)},{immediate:!0})})}}};(()=>{o(),s(),a(),d(),l(),u(),h(),g(),m(),v()})()}),()=>r.stop()}function kws(){return{edgesChange:sr(),nodesChange:sr(),nodeDoubleClick:sr(),nodeClick:sr(),nodeMouseEnter:sr(),nodeMouseMove:sr(),nodeMouseLeave:sr(),nodeContextMenu:sr(),nodeDragStart:sr(),nodeDrag:sr(),nodeDragStop:sr(),nodesInitialized:sr(),miniMapNodeClick:sr(),miniMapNodeDoubleClick:sr(),miniMapNodeMouseEnter:sr(),miniMapNodeMouseMove:sr(),miniMapNodeMouseLeave:sr(),connect:sr(),connectStart:sr(),connectEnd:sr(),clickConnectStart:sr(),clickConnectEnd:sr(),paneReady:sr(),init:sr(),move:sr(),moveStart:sr(),moveEnd:sr(),selectionDragStart:sr(),selectionDrag:sr(),selectionDragStop:sr(),selectionContextMenu:sr(),selectionStart:sr(),selectionEnd:sr(),viewportChangeStart:sr(),viewportChange:sr(),viewportChangeEnd:sr(),paneScroll:sr(),paneClick:sr(),paneContextMenu:sr(),paneMouseEnter:sr(),paneMouseMove:sr(),paneMouseLeave:sr(),edgeContextMenu:sr(),edgeMouseEnter:sr(),edgeMouseMove:sr(),edgeMouseLeave:sr(),edgeDoubleClick:sr(),edgeClick:sr(),edgeUpdateStart:sr(),edgeUpdate:sr(),edgeUpdateEnd:sr(),updateNodeInternals:sr(),error:sr(e=>zre(e.message))}}function vws(e,t){const n=ps();TB(()=>{for(const[o,s]of Object.entries(t.value)){const a=l=>{e(o,l)};s.setEmitter(a),xte(s.removeEmitter),s.setHasEmitListeners(()=>r(o)),xte(s.removeHasEmitListeners)}});function r(o){var s;const a=Aws(o);return!!((s=n==null?void 0:n.vnode.props)==null?void 0:s[a])}}function Aws(e){const[t,...n]=e.split(":");return`on${t.replace(/(?:^|-)(\w)/g,(o,s)=>s.toUpperCase())}${n.length?`:${n.join(":")}`:""}`}function kZn(){return{vueFlowRef:null,viewportRef:null,nodes:[],edges:[],connectionLookup:new Map,nodeTypes:{},edgeTypes:{},initialized:!1,dimensions:{width:0,height:0},viewport:{x:0,y:0,zoom:1},d3Zoom:null,d3Selection:null,d3ZoomHandler:null,minZoom:.5,maxZoom:2,translateExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],nodeExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],selectionMode:Vst.Full,paneDragging:!1,preventScrolling:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,panOnScrollSpeed:.5,panOnScrollMode:lq.Free,paneClickDistance:0,panOnDrag:!0,edgeUpdaterRadius:10,onlyRenderVisibleElements:!1,defaultViewport:{x:0,y:0,zoom:1},nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,defaultMarkerColor:"#b1b1b7",connectionLineStyle:{},connectionLineType:null,connectionLineOptions:{type:FT.Bezier,style:{}},connectionMode:H6.Loose,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectionPosition:{x:Number.NaN,y:Number.NaN},connectionRadius:20,connectOnClick:!0,connectionStatus:null,isValidConnection:null,snapGrid:[15,15],snapToGrid:!1,edgesUpdatable:!1,edgesFocusable:!0,nodesFocusable:!0,nodesConnectable:!0,nodesDraggable:!0,nodeDragThreshold:1,elementsSelectable:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,selectionKeyCode:"Shift",multiSelectionKeyCode:z2e()?"Meta":"Control",zoomActivationKeyCode:z2e()?"Meta":"Control",deleteKeyCode:"Backspace",panActivationKeyCode:"Space",hooks:kws(),applyDefault:!0,autoConnect:!1,fitViewOnInit:!1,fitViewOnInitDone:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",defaultEdgeOptions:void 0,elevateEdgesOnSelect:!1,elevateNodesOnSelect:!0,autoPanOnNodeDrag:!0,autoPanOnConnect:!0,autoPanSpeed:15,disableKeyboardA11y:!1,ariaLiveMessage:""}}const pws=["id","vueFlowRef","viewportRef","initialized","modelValue","nodes","edges","maxZoom","minZoom","translateExtent","hooks","defaultEdgeOptions"];function bws(e,t,n){const r=gws(e),o=z=>{const Y=z??[];e.hooks.updateNodeInternals.trigger(Y)},s=z=>R3s(z,e.nodes,e.edges),a=z=>B3s(z,e.nodes,e.edges),l=z=>iZn(z,e.edges),d=({id:z,type:Y,nodeId:ie})=>{var te;const Z=z?`-${Y}-${z}`:`-${Y}`;return Array.from(((te=e.connectionLookup.get(`${ie}${Z}`))==null?void 0:te.values())??[])},u=z=>{if(z)return t.value.get(z)},h=z=>{if(z)return n.value.get(z)},g=(z,Y,ie)=>{var te,Z;const he=[];for(const pe of z){const Ce={id:pe.id,type:"position",dragging:ie,from:pe.from};if(Y&&(Ce.position=pe.position,pe.parentNode)){const Qe=u(pe.parentNode);Ce.position={x:Ce.position.x-(((te=Qe==null?void 0:Qe.computedPosition)==null?void 0:te.x)??0),y:Ce.position.y-(((Z=Qe==null?void 0:Qe.computedPosition)==null?void 0:Z.y)??0)}}he.push(Ce)}he!=null&&he.length&&e.hooks.nodesChange.trigger(he)},m=z=>{if(!e.vueFlowRef)return;const Y=e.vueFlowRef.querySelector(".vue-flow__transformationpane");if(!Y)return;const ie=window.getComputedStyle(Y),{m22:te}=new window.DOMMatrixReadOnly(ie.transform),Z=[];for(const he of z){const pe=he,Ce=u(pe.id);if(Ce){const Qe=zOe(pe.nodeElement);if(!!(Qe.width&&Qe.height&&(Ce.dimensions.width!==Qe.width||Ce.dimensions.height!==Qe.height||pe.forceUpdate))){const me=pe.nodeElement.getBoundingClientRect();Ce.dimensions=Qe,Ce.handleBounds.source=nkn("source",pe.nodeElement,me,te,Ce.id),Ce.handleBounds.target=nkn("target",pe.nodeElement,me,te,Ce.id),Z.push({id:Ce.id,type:"dimensions",dimensions:Qe})}}}!e.fitViewOnInitDone&&e.fitViewOnInit&&r.value.fitView().then(()=>{e.fitViewOnInitDone=!0}),Z.length&&e.hooks.nodesChange.trigger(Z)},v=(z,Y)=>{const ie=new Set,te=new Set;for(const pe of z)LD(pe)?ie.add(pe.id):$6(pe)&&te.add(pe.id);const Z=m5(t.value,ie,!0),he=m5(n.value,te);if(e.multiSelectionActive){for(const pe of ie)Z.push($x(pe,Y));for(const pe of te)he.push($x(pe,Y))}Z.length&&e.hooks.nodesChange.trigger(Z),he.length&&e.hooks.edgesChange.trigger(he)},f=z=>{if(e.multiSelectionActive){const Y=z.map(ie=>$x(ie.id,!0));e.hooks.nodesChange.trigger(Y);return}e.hooks.nodesChange.trigger(m5(t.value,new Set(z.map(Y=>Y.id)),!0)),e.hooks.edgesChange.trigger(m5(n.value))},k=z=>{if(e.multiSelectionActive){const Y=z.map(ie=>$x(ie.id,!0));e.hooks.edgesChange.trigger(Y);return}e.hooks.edgesChange.trigger(m5(n.value,new Set(z.map(Y=>Y.id)))),e.hooks.nodesChange.trigger(m5(t.value,new Set,!0))},A=z=>{v(z,!0)},p=z=>{const ie=(z||e.nodes).map(te=>(te.selected=!1,$x(te.id,!1)));e.hooks.nodesChange.trigger(ie)},b=z=>{const ie=(z||e.edges).map(te=>(te.selected=!1,$x(te.id,!1)));e.hooks.edgesChange.trigger(ie)},w=z=>{if(!z||!z.length)return v([],!1);const Y=z.reduce((ie,te)=>{const Z=$x(te.id,!1);return LD(te)?ie.nodes.push(Z):ie.edges.push(Z),ie},{nodes:[],edges:[]});Y.nodes.length&&e.hooks.nodesChange.trigger(Y.nodes),Y.edges.length&&e.hooks.edgesChange.trigger(Y.edges)},O=z=>{var Y;(Y=e.d3Zoom)==null||Y.scaleExtent([z,e.maxZoom]),e.minZoom=z},y=z=>{var Y;(Y=e.d3Zoom)==null||Y.scaleExtent([e.minZoom,z]),e.maxZoom=z},C=z=>{var Y;(Y=e.d3Zoom)==null||Y.translateExtent(z),e.translateExtent=z},_=z=>{e.nodeExtent=z,o()},S=z=>{var Y;(Y=e.d3Zoom)==null||Y.clickDistance(z)},L=z=>{e.nodesDraggable=z,e.nodesConnectable=z,e.elementsSelectable=z},E=z=>{const Y=z instanceof Function?z(e.nodes):z;!e.initialized&&!Y.length||(e.nodes=ikn(Y,u,e.hooks.error.trigger))},T=z=>{const Y=z instanceof Function?z(e.edges):z;if(!e.initialized&&!Y.length)return;const ie=fRe(Y,e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);hRe(e.connectionLookup,n.value,ie),e.edges=ie},D=z=>{const Y=z instanceof Function?z([...e.nodes,...e.edges]):z;!e.initialized&&!Y.length||(E(Y.filter(LD)),T(Y.filter($6)))},P=z=>{let Y=z instanceof Function?z(e.nodes):z;Y=Array.isArray(Y)?Y:[Y];const ie=ikn(Y,u,e.hooks.error.trigger),te=[];for(const Z of ie)te.push(G0n(Z));te.length&&e.hooks.nodesChange.trigger(te)},Q=z=>{let Y=z instanceof Function?z(e.edges):z;Y=Array.isArray(Y)?Y:[Y];const ie=fRe(Y,e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges),te=[];for(const Z of ie)te.push(G0n(Z));te.length&&e.hooks.edgesChange.trigger(te)},M=(z,Y=!0,ie=!1)=>{const te=z instanceof Function?z(e.nodes):z,Z=Array.isArray(te)?te:[te],he=[],pe=[];function Ce(ke){const me=l(ke);for(const _e of me)(!Nh(_e.deletable)||_e.deletable)&&pe.push(Z0n(_e.id,_e.source,_e.target,_e.sourceHandle,_e.targetHandle))}function Qe(ke){const me=[];for(const _e of e.nodes)_e.parentNode===ke&&me.push(_e);if(me.length){for(const _e of me)he.push(Y0n(_e.id));Y&&Ce(me);for(const _e of me)Qe(_e.id)}}for(const ke of Z){const me=typeof ke=="string"?u(ke):ke;me&&(Nh(me.deletable)&&!me.deletable||(he.push(Y0n(me.id)),Y&&Ce([me]),ie&&Qe(me.id)))}pe.length&&e.hooks.edgesChange.trigger(pe),he.length&&e.hooks.nodesChange.trigger(he)},B=z=>{const Y=z instanceof Function?z(e.edges):z,ie=Array.isArray(Y)?Y:[Y],te=[];for(const Z of ie){const he=typeof Z=="string"?h(Z):Z;he&&(Nh(he.deletable)&&!he.deletable||te.push(Z0n(typeof Z=="string"?Z:Z.id,he.source,he.target,he.sourceHandle,he.targetHandle)))}e.hooks.edgesChange.trigger(te)},R=(z,Y,ie=!0)=>{const te=h(z.id);if(!te)return!1;const Z=e.edges.indexOf(te),he=iws(z,Y,te,ie,e.hooks.error.trigger);if(he){const[pe]=fRe([he],e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);return e.edges=e.edges.map((Ce,Qe)=>Qe===Z?pe:Ce),hRe(e.connectionLookup,n.value,[pe]),pe}return!1},I=(z,Y,ie={replace:!1})=>{const te=h(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;te.data=ie.replace?Z:{...te.data,...Z}},F=z=>X0n(z,e.nodes),j=z=>{const Y=X0n(z,e.edges);return hRe(e.connectionLookup,n.value,Y),Y},W=(z,Y,ie={replace:!1})=>{const te=u(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;ie.replace?e.nodes.splice(e.nodes.indexOf(te),1,Z):Object.assign(te,Z)},H=(z,Y,ie={replace:!1})=>{const te=u(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;te.data=ie.replace?Z:{...te.data,...Z}},$=(z,Y,ie=!1)=>{ie?e.connectionClickStartHandle=z:e.connectionStartHandle=z,e.connectionEndHandle=null,e.connectionStatus=null,Y&&(e.connectionPosition=Y)},G=(z,Y=null,ie=null)=>{e.connectionStartHandle&&(e.connectionPosition=z,e.connectionEndHandle=Y,e.connectionStatus=ie)},q=(z,Y)=>{e.connectionPosition={x:Number.NaN,y:Number.NaN},e.connectionEndHandle=null,e.connectionStatus=null,Y?e.connectionClickStartHandle=null:e.connectionStartHandle=null},re=z=>{const Y=Q3s(z),ie=Y?null:cY(z)?z:u(z.id);return!Y&&!ie?[null,null,Y]:[Y?z:W2e(ie),ie,Y]},J=(z,Y=!0,ie=e.nodes)=>{const[te,Z,he]=re(z);if(!te)return[];const pe=[];for(const Ce of ie||e.nodes){if(!he&&(Ce.id===Z.id||!Ce.computedPosition))continue;const Qe=W2e(Ce),ke=V2e(Qe,te);(Y&&ke>0||ke>=Qe.width*Qe.height||ke>=Number(te.width)*Number(te.height))&&pe.push(Ce)}return pe},oe=(z,Y,ie=!0)=>{const[te]=re(z);if(!te)return!1;const Z=V2e(te,Y);return ie&&Z>0||Z>=Number(te.width)*Number(te.height)},se=z=>{const{viewport:Y,dimensions:ie,d3Zoom:te,d3Selection:Z,translateExtent:he}=e;if(!te||!Z||!z.x&&!z.y)return!1;const pe=az.translate(Y.x+z.x,Y.y+z.y).scale(Y.zoom),Ce=[[0,0],[ie.width,ie.height]],Qe=te.constrain()(pe,Ce,he),ke=e.viewport.x!==Qe.x||e.viewport.y!==Qe.y||e.viewport.zoom!==Qe.k;return te.transform(Z,Qe),ke},le=z=>{const Y=z instanceof Function?z(e):z,ie=["d3Zoom","d3Selection","d3ZoomHandler","viewportRef","vueFlowRef","dimensions","hooks"];Nh(Y.defaultEdgeOptions)&&(e.defaultEdgeOptions=Y.defaultEdgeOptions);const te=Y.modelValue||Y.nodes||Y.edges?[]:void 0;te&&(Y.modelValue&&te.push(...Y.modelValue),Y.nodes&&te.push(...Y.nodes),Y.edges&&te.push(...Y.edges),D(te));const Z=()=>{Nh(Y.maxZoom)&&y(Y.maxZoom),Nh(Y.minZoom)&&O(Y.minZoom),Nh(Y.translateExtent)&&C(Y.translateExtent)};for(const he of Object.keys(Y)){const pe=he,Ce=Y[pe];![...pws,...ie].includes(pe)&&Nh(Ce)&&(e[pe]=Ce)}EGe(()=>e.d3Zoom).not.toBeNull().then(Z),e.initialized||(e.initialized=!0)};return{updateNodePositions:g,updateNodeDimensions:m,setElements:D,setNodes:E,setEdges:T,addNodes:P,addEdges:Q,removeNodes:M,removeEdges:B,findNode:u,findEdge:h,updateEdge:R,updateEdgeData:I,updateNode:W,updateNodeData:H,applyEdgeChanges:j,applyNodeChanges:F,addSelectedElements:A,addSelectedNodes:f,addSelectedEdges:k,setMinZoom:O,setMaxZoom:y,setTranslateExtent:C,setNodeExtent:_,setPaneClickDistance:S,removeSelectedElements:w,removeSelectedNodes:p,removeSelectedEdges:b,startConnection:$,updateConnection:G,endConnection:q,setInteractive:L,setState:le,getIntersectingNodes:J,getIncomers:s,getOutgoers:a,getConnectedEdges:l,getHandleConnections:d,isNodeIntersecting:oe,panBy:se,fitView:z=>r.value.fitView(z),zoomIn:z=>r.value.zoomIn(z),zoomOut:z=>r.value.zoomOut(z),zoomTo:(z,Y)=>r.value.zoomTo(z,Y),setViewport:(z,Y)=>r.value.setViewport(z,Y),setTransform:(z,Y)=>r.value.setTransform(z,Y),getViewport:()=>r.value.getViewport(),getTransform:()=>r.value.getTransform(),setCenter:(z,Y,ie)=>r.value.setCenter(z,Y,ie),fitBounds:(z,Y)=>r.value.fitBounds(z,Y),project:z=>r.value.project(z),screenToFlowCoordinate:z=>r.value.screenToFlowCoordinate(z),flowToScreenCoordinate:z=>r.value.flowToScreenCoordinate(z),toObject:()=>{const z=[],Y=[];for(const ie of e.nodes){const{computedPosition:te,handleBounds:Z,selected:he,dimensions:pe,isParent:Ce,resizing:Qe,dragging:ke,events:me,..._e}=ie;z.push(_e)}for(const ie of e.edges){const{selected:te,sourceNode:Z,targetNode:he,events:pe,...Ce}=ie;Y.push(Ce)}return JSON.parse(JSON.stringify({nodes:z,edges:Y,position:[e.viewport.x,e.viewport.y],zoom:e.viewport.zoom,viewport:e.viewport}))},fromObject:z=>new Promise(Y=>{const{nodes:ie,edges:te,position:Z,zoom:he,viewport:pe}=z;ie&&E(ie),te&&T(te);const[Ce,Qe]=pe!=null&&pe.x&&(pe!=null&&pe.y)?[pe.x,pe.y]:Z??[null,null];if(Ce&&Qe){const ke=(pe==null?void 0:pe.zoom)||he||e.viewport.zoom;return EGe(()=>r.value.viewportInitialized).toBe(!0).then(()=>{r.value.setViewport({x:Ce,y:Qe,zoom:ke}).then(()=>{Y(!0)})})}else Y(!0)}),updateNodeInternals:o,viewportHelper:r,$reset:()=>{const z=kZn();if(e.edges=[],e.nodes=[],e.d3Zoom&&e.d3Selection){const Y=az.translate(z.defaultViewport.x??0,z.defaultViewport.y??0).scale(eI(z.defaultViewport.zoom??1,z.minZoom,z.maxZoom)),ie=e.viewportRef.getBoundingClientRect(),te=[[0,0],[ie.width,ie.height]],Z=e.d3Zoom.constrain()(Y,te,z.translateExtent);e.d3Zoom.transform(e.d3Selection,Z)}le(z)},$destroy:()=>{}}}const wws=["data-id","data-handleid","data-nodeid","data-handlepos"],Ows={name:"Handle",compatConfig:{MODE:3}},mm=Je({...Ows,props:{id:{default:null},type:{},position:{default:()=>Vi.Top},isValidConnection:{type:Function},connectable:{type:[Boolean,Number,String,Function],default:void 0},connectableStart:{type:Boolean,default:!0},connectableEnd:{type:Boolean,default:!0}},setup(e,{expose:t}){const n=mri(e,["position","connectable","connectableStart","connectableEnd","id"]),r=Pa(()=>n.type??"source"),o=Pa(()=>n.isValidConnection??null),{id:s,connectionStartHandle:a,connectionClickStartHandle:l,connectionEndHandle:d,vueFlowRef:u,nodesConnectable:h,noDragClassName:g,noPanClassName:m}=nl(),{id:v,node:f,nodeEl:k,connectedEdges:A}=gZn(),p=fe(),b=Pa(()=>typeof e.connectableStart<"u"?e.connectableStart:!0),w=Pa(()=>typeof e.connectableEnd<"u"?e.connectableEnd:!0),O=Pa(()=>{var T,D,P,Q,M,B;return((T=a.value)==null?void 0:T.nodeId)===v&&((D=a.value)==null?void 0:D.id)===e.id&&((P=a.value)==null?void 0:P.type)===r.value||((Q=d.value)==null?void 0:Q.nodeId)===v&&((M=d.value)==null?void 0:M.id)===e.id&&((B=d.value)==null?void 0:B.type)===r.value}),y=Pa(()=>{var T,D,P;return((T=l.value)==null?void 0:T.nodeId)===v&&((D=l.value)==null?void 0:D.id)===e.id&&((P=l.value)==null?void 0:P.type)===r.value}),{handlePointerDown:C,handleClick:_}=fZn({nodeId:v,handleId:e.id,isValidConnection:o,type:r}),S=X(()=>typeof e.connectable=="string"&&e.connectable==="single"?!A.value.some(T=>{const D=T[`${r.value}Handle`];return T[r.value]!==v?!1:D?D===e.id:!0}):typeof e.connectable=="number"?A.value.filter(T=>{const D=T[`${r.value}Handle`];return T[r.value]!==v?!1:D?D===e.id:!0}).length{var T;if(!f.dimensions.width||!f.dimensions.height)return;const D=(T=f.handleBounds[r.value])==null?void 0:T.find(F=>F.id===e.id);if(!u.value||D)return;const P=u.value.querySelector(".vue-flow__transformationpane");if(!k.value||!p.value||!P||!e.id)return;const Q=k.value.getBoundingClientRect(),M=p.value.getBoundingClientRect(),B=window.getComputedStyle(P),{m22:R}=new window.DOMMatrixReadOnly(B.transform),I={id:e.id,position:e.position,x:(M.left-Q.left)/R,y:(M.top-Q.top)/R,type:r.value,nodeId:v,...zOe(p.value)};f.handleBounds[r.value]=[...f.handleBounds[r.value]??[],I]});function L(T){const D=Hst(T);S.value&&b.value&&(D&&T.button===0||!D)&&C(T)}function E(T){!v||!l.value&&!b.value||S.value&&_(T)}return t({handleClick:_,handlePointerDown:C,onClick:E,onPointerDown:L}),(T,D)=>(xe(),Ge("div",{ref_key:"handle",ref:p,"data-id":`${Ae(s)}-${Ae(v)}-${e.id}-${r.value}`,"data-handleid":e.id,"data-nodeid":Ae(v),"data-handlepos":T.position,class:Eo(["vue-flow__handle",[`vue-flow__handle-${T.position}`,`vue-flow__handle-${e.id}`,Ae(g),Ae(m),r.value,{connectable:S.value,connecting:y.value,connectablestart:b.value,connectableend:w.value,connectionindicator:S.value&&(b.value&&!O.value||w.value&&O.value)}]]),onMousedown:L,onTouchstartPassive:L,onClick:E},[Zr(T.$slots,"default",{id:T.id})],42,wws))}}),XOe=function({sourcePosition:e=Vi.Bottom,targetPosition:t=Vi.Top,label:n,connectable:r=!0,isValidTargetPos:o,isValidSourcePos:s,data:a}){const l=a.label??n;return[xn(mm,{type:"target",position:t,connectable:r,isValidConnection:o}),typeof l!="string"&&l?xn(l):xn(sn,[l]),xn(mm,{type:"source",position:e,connectable:r,isValidConnection:s})]};XOe.props=["sourcePosition","targetPosition","label","isValidTargetPos","isValidSourcePos","connectable","data"];XOe.inheritAttrs=!1;XOe.compatConfig={MODE:3};const yws=XOe,GOe=function({targetPosition:e=Vi.Top,label:t,connectable:n=!0,isValidTargetPos:r,data:o}){const s=o.label??t;return[xn(mm,{type:"target",position:e,connectable:n,isValidConnection:r}),typeof s!="string"&&s?xn(s):xn(sn,[s])]};GOe.props=["targetPosition","label","isValidTargetPos","connectable","data"];GOe.inheritAttrs=!1;GOe.compatConfig={MODE:3};const Cws=GOe,YOe=function({sourcePosition:e=Vi.Bottom,label:t,connectable:n=!0,isValidSourcePos:r,data:o}){const s=o.label??t;return[typeof s!="string"&&s?xn(s):xn(sn,[s]),xn(mm,{type:"source",position:e,connectable:n,isValidConnection:r})]};YOe.props=["sourcePosition","label","isValidSourcePos","connectable","data"];YOe.inheritAttrs=!1;YOe.compatConfig={MODE:3};const _ws=YOe,Sws=["transform"],Lws=["width","height","x","y","rx","ry"],xws=["y"],Ews={name:"EdgeText",compatConfig:{MODE:3}},Tws=Je({...Ews,props:{x:{},y:{},label:{},labelStyle:{default:()=>({})},labelShowBg:{type:Boolean,default:!0},labelBgStyle:{default:()=>({})},labelBgPadding:{default:()=>[2,4]},labelBgBorderRadius:{default:2}},setup(e){const t=fe({x:0,y:0,width:0,height:0}),n=fe(null),r=X(()=>`translate(${e.x-t.value.width/2} ${e.y-t.value.height/2})`);An(o),pt([()=>e.x,()=>e.y,n,()=>e.label],o);function o(){if(!n.value)return;const s=n.value.getBBox();(s.width!==t.value.width||s.height!==t.value.height)&&(t.value=s)}return(s,a)=>(xe(),Ge("g",{transform:r.value,class:"vue-flow__edge-textwrapper"},[s.labelShowBg?(xe(),Ge("rect",{key:0,class:"vue-flow__edge-textbg",width:`${t.value.width+2*s.labelBgPadding[0]}px`,height:`${t.value.height+2*s.labelBgPadding[1]}px`,x:-s.labelBgPadding[0],y:-s.labelBgPadding[1],style:no(s.labelBgStyle),rx:s.labelBgBorderRadius,ry:s.labelBgBorderRadius},null,12,Lws)):nn("",!0),ge("text",Gn(s.$attrs,{ref_key:"el",ref:n,class:"vue-flow__edge-text",y:t.value.height/2,dy:"0.3em",style:s.labelStyle}),[Zr(s.$slots,"default",{},()=>[typeof s.label!="string"?(xe(),Ut(Bd(s.label),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(s.label),1)],64))])],16,xws)],8,Sws))}}),Qws=["id","d","marker-end","marker-start"],Dws=["d","stroke-width"],Bws={name:"BaseEdge",inheritAttrs:!1,compatConfig:{MODE:3}},Hre=Je({...Bws,props:{id:{},labelX:{},labelY:{},path:{},label:{},markerStart:{},markerEnd:{},interactionWidth:{default:20},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{}},setup(e,{expose:t}){const n=fe(null),r=fe(null),o=fe(null),s=gri();return t({pathEl:n,interactionEl:r,labelEl:o}),(a,l)=>(xe(),Ge(sn,null,[ge("path",Gn(Ae(s),{id:a.id,ref_key:"pathEl",ref:n,d:a.path,class:"vue-flow__edge-path","marker-end":a.markerEnd,"marker-start":a.markerStart}),null,16,Qws),a.interactionWidth?(xe(),Ge("path",{key:0,ref_key:"interactionEl",ref:r,fill:"none",d:a.path,"stroke-width":a.interactionWidth,"stroke-opacity":0,class:"vue-flow__edge-interaction"},null,8,Dws)):nn("",!0),a.label&&a.labelX&&a.labelY?(xe(),Ut(Tws,{key:1,ref_key:"labelEl",ref:o,x:a.labelX,y:a.labelY,label:a.label,"label-show-bg":a.labelShowBg,"label-bg-style":a.labelBgStyle,"label-bg-padding":a.labelBgPadding,"label-bg-border-radius":a.labelBgBorderRadius,"label-style":a.labelStyle},null,8,["x","y","label","label-show-bg","label-bg-style","label-bg-padding","label-bg-border-radius","label-style"])):nn("",!0)],64))}});function vZn({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,s=n=0?.5*e:t*25*Math.sqrt(-e)}function akn({pos:e,x1:t,y1:n,x2:r,y2:o,c:s}){let a,l;switch(e){case Vi.Left:a=t-Fde(t-r,s),l=n;break;case Vi.Right:a=t+Fde(r-t,s),l=n;break;case Vi.Top:a=t,l=n-Fde(n-o,s);break;case Vi.Bottom:a=t,l=n+Fde(o-n,s);break}return[a,l]}function $st(e){const{sourceX:t,sourceY:n,sourcePosition:r=Vi.Bottom,targetX:o,targetY:s,targetPosition:a=Vi.Top,curvature:l=.25}=e,[d,u]=akn({pos:r,x1:t,y1:n,x2:o,y2:s,c:l}),[h,g]=akn({pos:a,x1:o,y1:s,x2:t,y2:n,c:l}),[m,v,f,k]=AZn({sourceX:t,sourceY:n,targetX:o,targetY:s,sourceControlX:d,sourceControlY:u,targetControlX:h,targetControlY:g});return[`M${t},${n} C${d},${u} ${h},${g} ${o},${s}`,m,v,f,k]}function lkn({pos:e,x1:t,y1:n,x2:r,y2:o}){let s,a;switch(e){case Vi.Left:case Vi.Right:s=.5*(t+r),a=n;break;case Vi.Top:case Vi.Bottom:s=t,a=.5*(n+o);break}return[s,a]}function pZn(e){const{sourceX:t,sourceY:n,sourcePosition:r=Vi.Bottom,targetX:o,targetY:s,targetPosition:a=Vi.Top}=e,[l,d]=lkn({pos:r,x1:t,y1:n,x2:o,y2:s}),[u,h]=lkn({pos:a,x1:o,y1:s,x2:t,y2:n}),[g,m,v,f]=AZn({sourceX:t,sourceY:n,targetX:o,targetY:s,sourceControlX:l,sourceControlY:d,targetControlX:u,targetControlY:h});return[`M${t},${n} C${l},${d} ${u},${h} ${o},${s}`,g,m,v,f]}const ckn={[Vi.Left]:{x:-1,y:0},[Vi.Right]:{x:1,y:0},[Vi.Top]:{x:0,y:-1},[Vi.Bottom]:{x:0,y:1}};function Rws({source:e,sourcePosition:t=Vi.Bottom,target:n}){return t===Vi.Left||t===Vi.Right?e.xe[g]?-1:1)*Q:p[g]=(u[g]>n[g]?-1:1)*Q}}if(t!==r){const P=g==="x"?"y":"x",Q=a[g]===l[P],M=d[P]>u[P],B=d[P]=D?(f=(L.x+E.x)/2,k=v[0].y):(f=v[0].x,k=(L.y+E.y)/2)}return[[e,{x:d.x+A.x,y:d.y+A.y},...v,{x:u.x+p.x,y:u.y+p.y},n],f,k,O,y]}function Mws(e,t,n,r){const o=Math.min(dkn(e,t)/2,dkn(t,n)/2,r),{x:s,y:a}=t;if(e.x===s&&s===n.x||e.y===a&&a===n.y)return`L${s} ${a}`;if(e.y===a){const u=e.x{let O;return w>0&&w{const[n,r,o]=Pws(e);return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),Nws=Fws,Uws=Je({name:"SmoothStepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","borderRadius","markerEnd","markerStart","interactionWidth","offset"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=WGe({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),bZn=Uws,jws=Je({name:"StepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],setup(e,{attrs:t}){return()=>xn(bZn,{...e,...t,borderRadius:0})}}),Wws=jws,Vws=Je({name:"BezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","curvature","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=$st({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),zws=Vws,Hws=Je({name:"SimpleBezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=pZn({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),$ws=Hws,Xws={input:_ws,default:yws,output:Cws},Gws={default:zws,straight:Nws,step:Wws,smoothstep:bZn,simplebezier:$ws};function Yws(e,t,n){const r=X(()=>k=>t.value.get(k)),o=X(()=>k=>n.value.get(k)),s=X(()=>{const k={...Gws,...e.edgeTypes},A=Object.keys(k);for(const p of e.edges)p.type&&!A.includes(p.type)&&(k[p.type]=p.type);return k}),a=X(()=>{const k={...Xws,...e.nodeTypes},A=Object.keys(k);for(const p of e.nodes)p.type&&!A.includes(p.type)&&(k[p.type]=p.type);return k}),l=X(()=>e.onlyRenderVisibleElements?nZn(e.nodes,{x:0,y:0,width:e.dimensions.width,height:e.dimensions.height},e.viewport,!0):e.nodes),d=X(()=>{if(e.onlyRenderVisibleElements){const k=[];for(const A of e.edges){const p=t.value.get(A.source),b=t.value.get(A.target);H3s({sourcePos:p.computedPosition||{x:0,y:0},targetPos:b.computedPosition||{x:0,y:0},sourceWidth:p.dimensions.width,sourceHeight:p.dimensions.height,targetWidth:b.dimensions.width,targetHeight:b.dimensions.height,width:e.dimensions.width,height:e.dimensions.height,viewport:e.viewport})&&k.push(A)}return k}return e.edges}),u=X(()=>[...l.value,...d.value]),h=X(()=>{const k=[];for(const A of e.nodes)A.selected&&k.push(A);return k}),g=X(()=>{const k=[];for(const A of e.edges)A.selected&&k.push(A);return k}),m=X(()=>[...h.value,...g.value]),v=X(()=>{const k=[];for(const A of e.nodes)A.dimensions.width&&A.dimensions.height&&A.handleBounds!==void 0&&k.push(A);return k}),f=X(()=>l.value.length>0&&v.value.length===l.value.length);return{getNode:r,getEdge:o,getElements:u,getEdgeTypes:s,getNodeTypes:a,getEdges:d,getNodes:l,getSelectedElements:m,getSelectedNodes:h,getSelectedEdges:g,getNodesInitialized:v,areNodesInitialized:f}}let Zws=class jF{constructor(){this.currentId=0,this.flows=new Map}static getInstance(){var t;const n=(t=ps())==null?void 0:t.appContext.app,r=(n==null?void 0:n.config.globalProperties.$vueFlowStorage)??jF.instance;return jF.instance=r??new jF,n&&(n.config.globalProperties.$vueFlowStorage=jF.instance),jF.instance}set(t,n){return this.flows.set(t,n)}get(t){return this.flows.get(t)}remove(t){return this.flows.delete(t)}create(t,n){const r=kZn(),o=hs(r),s={};for(const[m,v]of Object.entries(o.hooks)){const f=`on${m.charAt(0).toUpperCase()+m.slice(1)}`;s[f]=v.on}const a={};for(const[m,v]of Object.entries(o.hooks))a[m]=v.trigger;const l=X(()=>{const m=new Map;for(const v of o.nodes)m.set(v.id,v);return m}),d=X(()=>{const m=new Map;for(const v of o.edges)m.set(v.id,v);return m}),u=Yws(o,l,d),h=bws(o,l,d);h.setState({...o,...n});const g={...s,...u,...h,...UAs(o),nodeLookup:l,edgeLookup:d,emits:a,id:t,vueFlowVersion:"1.48.2",$destroy:()=>{this.remove(t)}};return this.set(t,g),g}getId(){return`vue-flow-${this.currentId++}`}};function nl(e){const t=Zws.getInstance(),n=vz(),r=typeof e=="object",o=r?e:{id:e},s=o.id,a=s??(n==null?void 0:n.vueFlowId);let l;if(n){const d=bt(skn,null);typeof d<"u"&&d!==null&&(!a||d.id===a)&&(l=d)}if(l||a&&(l=t.get(a)),!l||a&&l.id!==a){const d=s??t.getId(),u=t.create(d,o);l=u,(n??One(!0)).run(()=>{pt(u.applyDefault,(g,m,v)=>{const f=A=>{u.applyNodeChanges(A)},k=A=>{u.applyEdgeChanges(A)};g?(u.onNodesChange(f),u.onEdgesChange(k)):(u.hooks.value.nodesChange.off(f),u.hooks.value.edgesChange.off(k)),v(()=>{u.hooks.value.nodesChange.off(f),u.hooks.value.edgesChange.off(k)})},{immediate:!0}),xte(()=>{if(l){const g=t.get(l.id);g?g.$destroy():zre(`No store instance found for id ${l.id} in storage.`)}})})}else r&&l.setState(o);if(n&&(Yi(skn,l),n.vueFlowId=l.id),r){const d=ps();(d==null?void 0:d.type.name)!=="VueFlow"&&l.emits.error(new Lf(Yh.USEVUEFLOW_OPTIONS))}return l}function qws(e){const{emits:t,dimensions:n}=nl();let r;An(()=>{const o=()=>{var s,a;if(!e.value||!(((a=(s=e.value).checkVisibility)==null?void 0:a.call(s))??!0))return;const l=zOe(e.value);(l.width===0||l.height===0)&&t.error(new Lf(Yh.MISSING_VIEWPORT_DIMENSIONS)),n.value={width:l.width||500,height:l.height||500}};o(),window.addEventListener("resize",o),e.value&&(r=new ResizeObserver(()=>o()),r.observe(e.value)),qs(()=>{window.removeEventListener("resize",o),r&&e.value&&r.unobserve(e.value)})})}const Kws={name:"UserSelection",compatConfig:{MODE:3}},Jws=Je({...Kws,props:{userSelectionRect:{}},setup(e){return(t,n)=>(xe(),Ge("div",{class:"vue-flow__selection vue-flow__container",style:no({width:`${t.userSelectionRect.width}px`,height:`${t.userSelectionRect.height}px`,transform:`translate(${t.userSelectionRect.x}px, ${t.userSelectionRect.y}px)`})},null,4))}}),eOs=["tabIndex"],tOs={name:"NodesSelection",compatConfig:{MODE:3}},nOs=Je({...tOs,setup(e){const{emits:t,viewport:n,getSelectedNodes:r,noPanClassName:o,disableKeyboardA11y:s,userSelectionActive:a}=nl(),l=mZn(),d=fe(null),u=hZn({el:d,onStart(f){t.selectionDragStart(f),t.nodeDragStart(f)},onDrag(f){t.selectionDrag(f),t.nodeDrag(f)},onStop(f){t.selectionDragStop(f),t.nodeDragStop(f)}});An(()=>{var f;s.value||(f=d.value)==null||f.focus({preventScroll:!0})});const h=X(()=>tZn(r.value)),g=X(()=>({width:`${h.value.width}px`,height:`${h.value.height}px`,top:`${h.value.y}px`,left:`${h.value.x}px`}));function m(f){t.selectionContextMenu({event:f,nodes:r.value})}function v(f){s.value||kj[f.key]&&(f.preventDefault(),l({x:kj[f.key].x,y:kj[f.key].y},f.shiftKey))}return(f,k)=>!Ae(a)&&h.value.width&&h.value.height?(xe(),Ge("div",{key:0,class:Eo(["vue-flow__nodesselection vue-flow__container",Ae(o)]),style:no({transform:`translate(${Ae(n).x}px,${Ae(n).y}px) scale(${Ae(n).zoom})`})},[ge("div",{ref_key:"el",ref:d,class:Eo([{dragging:Ae(u)},"vue-flow__nodesselection-rect"]),style:no(g.value),tabIndex:Ae(s)?void 0:-1,onContextmenu:m,onKeydown:v},null,46,eOs)],6)):nn("",!0)}});function iOs(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}const rOs={name:"Pane",compatConfig:{MODE:3}},oOs=Je({...rOs,props:{isSelecting:{type:Boolean},selectionKeyPressed:{type:Boolean}},setup(e){const{vueFlowRef:t,nodes:n,viewport:r,emits:o,userSelectionActive:s,removeSelectedElements:a,userSelectionRect:l,elementsSelectable:d,nodesSelectionActive:u,getSelectedEdges:h,getSelectedNodes:g,removeNodes:m,removeEdges:v,selectionMode:f,deleteKeyCode:k,multiSelectionKeyCode:A,multiSelectionActive:p,edgeLookup:b,nodeLookup:w,connectionLookup:O,defaultEdgeOptions:y,connectionStartHandle:C,panOnDrag:_}=nl(),S=nd(null),L=nd(new Set),E=nd(new Set),T=nd(null),D=Pa(()=>d.value&&(e.isSelecting||s.value)),P=Pa(()=>C.value!==null);let Q=!1,M=!1;const B=cq(k,{actInsideInputWithModifier:!1}),R=cq(A);pt(B,q=>{q&&(m(g.value),v(h.value),u.value=!1)}),pt(R,q=>{p.value=q});function I(q,re){return J=>{J.target===re&&(q==null||q(J))}}function F(q){if(Q||P.value){Q=!1;return}o.paneClick(q),a(),u.value=!1}function j(q){var re;if(Array.isArray(_.value)&&((re=_.value)!=null&&re.includes(2))){q.preventDefault();return}o.paneContextMenu(q)}function W(q){o.paneScroll(q)}function H(q){var re,J,oe;if(T.value=((re=t.value)==null?void 0:re.getBoundingClientRect())??null,!d.value||!e.isSelecting||q.button!==0||q.target!==S.value||!T.value)return;(oe=(J=q.target)==null?void 0:J.setPointerCapture)==null||oe.call(J,q.pointerId);const{x:se,y:le}=iOs(q,T.value);M=!0,Q=!1,a(),l.value={width:0,height:0,startX:se,startY:le,x:se,y:le},o.selectionStart(q)}function $(q){var re;if(!T.value||!l.value)return;Q=!0;const{x:J,y:oe}=QO(q,T.value),{startX:se=0,startY:le=0}=l.value,ue={startX:se,startY:le,x:JY.id)),E.value=new Set;const z=((re=y.value)==null?void 0:re.selectable)??!0;for(const Y of L.value){const ie=O.value.get(Y);if(ie)for(const{edgeId:te}of ie.values()){const Z=b.value.get(te);Z&&(Z.selectable??z)&&E.value.add(te)}}if(!okn(ee,L.value)){const Y=m5(w.value,L.value,!0);o.nodesChange(Y)}if(!okn(de,E.value)){const Y=m5(b.value,E.value);o.edgesChange(Y)}l.value=ue,s.value=!0,u.value=!1}function G(q){var re;q.button!==0||!M||((re=q.target)==null||re.releasePointerCapture(q.pointerId),!s.value&&l.value&&q.target===S.value&&F(q),s.value=!1,l.value=null,u.value=L.value.size>0,o.selectionEnd(q),e.selectionKeyPressed&&(Q=!1),M=!1)}return(q,re)=>(xe(),Ge("div",{ref_key:"container",ref:S,class:Eo(["vue-flow__pane vue-flow__container",{selection:q.isSelecting}]),onClick:re[0]||(re[0]=J=>D.value?void 0:I(F,S.value)(J)),onContextmenu:re[1]||(re[1]=J=>I(j,S.value)(J)),onWheelPassive:re[2]||(re[2]=J=>I(W,S.value)(J)),onPointerenter:re[3]||(re[3]=J=>D.value?void 0:Ae(o).paneMouseEnter(J)),onPointerdown:re[4]||(re[4]=J=>D.value?H(J):Ae(o).paneMouseMove(J)),onPointermove:re[5]||(re[5]=J=>D.value?$(J):Ae(o).paneMouseMove(J)),onPointerup:re[6]||(re[6]=J=>D.value?G(J):void 0),onPointerleave:re[7]||(re[7]=J=>Ae(o).paneMouseLeave(J))},[Zr(q.$slots,"default"),Ae(s)&&Ae(l)?(xe(),Ut(Jws,{key:0,"user-selection-rect":Ae(l)},null,8,["user-selection-rect"])):nn("",!0),Ae(u)&&Ae(g).length?(xe(),Ut(nOs,{key:1})):nn("",!0)],34))}}),sOs={name:"Transform",compatConfig:{MODE:3}},aOs=Je({...sOs,setup(e){const{viewport:t,fitViewOnInit:n,fitViewOnInitDone:r}=nl(),o=X(()=>n.value?!r.value:!1),s=X(()=>`translate(${t.value.x}px,${t.value.y}px) scale(${t.value.zoom})`);return(a,l)=>(xe(),Ge("div",{class:"vue-flow__transformationpane vue-flow__container",style:no({transform:s.value,opacity:o.value?0:void 0})},[Zr(a.$slots,"default")],4))}}),lOs={name:"Viewport",compatConfig:{MODE:3}},cOs=Je({...lOs,setup(e){const{minZoom:t,maxZoom:n,defaultViewport:r,translateExtent:o,zoomActivationKeyCode:s,selectionKeyCode:a,panActivationKeyCode:l,panOnScroll:d,panOnScrollMode:u,panOnScrollSpeed:h,panOnDrag:g,zoomOnDoubleClick:m,zoomOnPinch:v,zoomOnScroll:f,preventScrolling:k,noWheelClassName:A,noPanClassName:p,emits:b,connectionStartHandle:w,userSelectionActive:O,paneDragging:y,d3Zoom:C,d3Selection:_,d3ZoomHandler:S,viewport:L,viewportRef:E,paneClickDistance:T}=nl();qws(E);const D=nd(!1),P=nd(!1);let Q=null,M=!1,B=0,R={x:0,y:0,zoom:0};const I=cq(l),F=cq(a),j=cq(s),W=Pa(()=>(!F.value||F.value&&a.value===!0)&&(I.value||g.value)),H=Pa(()=>I.value||d.value),$=Pa(()=>a.value===!0&&W.value!==!0),G=Pa(()=>F.value&&a.value!==!0||O.value||$.value),q=Pa(()=>w.value!==null);An(()=>{if(!E.value){zre("Viewport element is missing");return}const le=E.value,ue=le.getBoundingClientRect(),ee=C3s().clickDistance(T.value).scaleExtent([t.value,n.value]).translateExtent(o.value),de=$b(le).call(ee),z=de.on("wheel.zoom"),Y=az.translate(r.value.x??0,r.value.y??0).scale(eI(r.value.zoom??1,t.value,n.value)),ie=[[0,0],[ue.width,ue.height]],te=ee.constrain()(Y,ie,o.value);ee.transform(de,te),ee.wheelDelta(H0n),C.value=ee,_.value=de,S.value=z,L.value={x:te.x,y:te.y,zoom:te.k},ee.on("start",Z=>{var he;if(!Z.sourceEvent)return null;B=Z.sourceEvent.button,D.value=!0;const pe=oe(Z.transform);((he=Z.sourceEvent)==null?void 0:he.type)==="mousedown"&&(y.value=!0),R=pe,b.viewportChangeStart(pe),b.moveStart({event:Z,flowTransform:pe})}),ee.on("end",Z=>{if(!Z.sourceEvent)return null;if(D.value=!1,y.value=!1,re(W.value,B??0)&&!M&&b.paneContextMenu(Z.sourceEvent),M=!1,J(R,Z.transform)){const he=oe(Z.transform);R=he,b.viewportChangeEnd(he),b.moveEnd({event:Z,flowTransform:he})}}),ee.filter(Z=>{var he;const pe=j.value||f.value,Ce=v.value&&Z.ctrlKey,Qe=Z.button,ke=Z.type==="wheel";if(Qe===1&&Z.type==="mousedown"&&(se(Z,"vue-flow__node")||se(Z,"vue-flow__edge")))return!0;if(!W.value&&!pe&&!H.value&&!m.value&&!v.value||O.value||q.value&&!ke||!m.value&&Z.type==="dblclick"||se(Z,A.value)&&ke||se(Z,p.value)&&(!ke||H.value&&ke&&!j.value)||!v.value&&Z.ctrlKey&&ke||!pe&&!H.value&&!Ce&&ke)return!1;if(!v&&Z.type==="touchstart"&&((he=Z.touches)==null?void 0:he.length)>1)return Z.preventDefault(),!1;if(!W.value&&(Z.type==="mousedown"||Z.type==="touchstart")||$.value&&Array.isArray(g.value)&&g.value.includes(0)&&Qe===0||Array.isArray(g.value)&&!g.value.includes(Qe)&&(Z.type==="mousedown"||Z.type==="touchstart"))return!1;const me=Array.isArray(g.value)&&g.value.includes(Qe)||a.value===!0&&Array.isArray(g.value)&&!g.value.includes(0)||!Qe||Qe<=1;return(!Z.ctrlKey||I.value||ke)&&me}),pt([O,W],()=>{O.value&&!D.value?ee.on("zoom",null):O.value||ee.on("zoom",Z=>{L.value={x:Z.transform.x,y:Z.transform.y,zoom:Z.transform.k};const he=oe(Z.transform);M=re(W.value,B??0),b.viewportChange(he),b.move({event:Z,flowTransform:he})})},{immediate:!0}),pt([O,H,u,j,v,k,A],()=>{H.value&&!j.value&&!O.value?de.on("wheel.zoom",Z=>{if(se(Z,A.value))return!1;const he=j.value||f.value,pe=v.value&&Z.ctrlKey;if(!(!k.value||H.value||he||pe))return!1;Z.preventDefault(),Z.stopImmediatePropagation();const Qe=de.property("__zoom").k||1,ke=z2e();if(!I.value&&Z.ctrlKey&&v.value&&ke){const Ye=Kw(Z),ot=H0n(Z),We=Qe*2**ot;ee.scaleTo(de,We,Ye,Z);return}const me=Z.deltaMode===1?20:1;let _e=u.value===lq.Vertical?0:Z.deltaX*me,Te=u.value===lq.Horizontal?0:Z.deltaY*me;!ke&&Z.shiftKey&&u.value!==lq.Vertical&&!_e&&Te&&(_e=Te,Te=0),ee.translateBy(de,-(_e/Qe)*h.value,-(Te/Qe)*h.value);const De=oe(de.property("__zoom"));Q&&clearTimeout(Q),P.value?(b.move({event:Z,flowTransform:De}),b.viewportChange(De),Q=setTimeout(()=>{b.moveEnd({event:Z,flowTransform:De}),b.viewportChangeEnd(De),P.value=!1},150)):(P.value=!0,b.moveStart({event:Z,flowTransform:De}),b.viewportChangeStart(De))},{passive:!1}):typeof z<"u"&&de.on("wheel.zoom",function(Z,he){const pe=!k.value&&Z.type==="wheel"&&!Z.ctrlKey,Ce=j.value||f.value,Qe=v.value&&Z.ctrlKey;if(!Ce&&!d.value&&!Qe&&Z.type==="wheel"||pe||se(Z,A.value))return null;Z.preventDefault(),z.call(this,Z,he)},{passive:!1})},{immediate:!0})});function re(le,ue){return ue===2&&Array.isArray(le)&&le.includes(2)}function J(le,ue){return le.x!==ue.x&&!Number.isNaN(ue.x)||le.y!==ue.y&&!Number.isNaN(ue.y)||le.zoom!==ue.k&&!Number.isNaN(ue.k)}function oe(le){return{x:le.x,y:le.y,zoom:le.k}}function se(le,ue){return le.target.closest(`.${ue}`)}return(le,ue)=>(xe(),Ge("div",{ref_key:"viewportRef",ref:E,class:"vue-flow__viewport vue-flow__container"},[c(oOs,{"is-selecting":G.value,"selection-key-pressed":Ae(F),class:Eo({connecting:q.value,dragging:Ae(y),draggable:Ae(g)===!0||Array.isArray(Ae(g))&&Ae(g).includes(0)})},{default:Oe(()=>[c(aOs,null,{default:Oe(()=>[Zr(le.$slots,"default")]),_:3})]),_:3},8,["is-selecting","selection-key-pressed","class"])],512))}}),dOs=["id"],uOs=["id"],hOs=["id"],fOs={name:"A11yDescriptions",compatConfig:{MODE:3}},gOs=Je({...fOs,setup(e){const{id:t,disableKeyboardA11y:n,ariaLiveMessage:r}=nl();return(o,s)=>(xe(),Ge(sn,null,[ge("div",{id:`${Ae(XYn)}-${Ae(t)}`,style:{display:"none"}}," Press enter or space to select a node. "+Pe(Ae(n)?"":"You can then use the arrow keys to move the node around.")+" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. ",9,dOs),ge("div",{id:`${Ae(GYn)}-${Ae(t)}`,style:{display:"none"}}," Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. ",8,uOs),Ae(n)?nn("",!0):(xe(),Ge("div",{key:0,id:`${Ae(T3s)}-${Ae(t)}`,"aria-live":"assertive","aria-atomic":"true",style:{position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(100%)"}},Pe(Ae(r)),9,hOs))],64))}});function mOs(){const e=nl();pt(()=>e.viewportHelper.value.viewportInitialized,t=>{t&&setTimeout(()=>{e.emits.init(e),e.emits.paneReady(e)},1)})}function kOs(e,t,n){return n===Vi.Left?e-t:n===Vi.Right?e+t:e}function vOs(e,t,n){return n===Vi.Top?e-t:n===Vi.Bottom?e+t:e}const Xst=function({radius:e=10,centerX:t=0,centerY:n=0,position:r=Vi.Top,type:o}){return xn("circle",{class:`vue-flow__edgeupdater vue-flow__edgeupdater-${o}`,cx:kOs(t,e,r),cy:vOs(n,e,r),r:e,stroke:"transparent",fill:"transparent"})};Xst.props=["radius","centerX","centerY","position","type"];Xst.compatConfig={MODE:3};const ukn=Xst,AOs=Je({name:"Edge",compatConfig:{MODE:3},props:["id"],setup(e){const{id:t,addSelectedEdges:n,connectionMode:r,edgeUpdaterRadius:o,emits:s,nodesSelectionActive:a,noPanClassName:l,getEdgeTypes:d,removeSelectedEdges:u,findEdge:h,findNode:g,isValidConnection:m,multiSelectionActive:v,disableKeyboardA11y:f,elementsSelectable:k,edgesUpdatable:A,edgesFocusable:p,hooks:b}=nl(),w=X(()=>h(e.id)),{emit:O,on:y}=aws(w.value,s),C=bt($Oe),_=ps(),S=fe(!1),L=fe(!1),E=fe(""),T=fe(null),D=fe("source"),P=fe(null),Q=Pa(()=>typeof w.value.selectable>"u"?k.value:w.value.selectable),M=Pa(()=>typeof w.value.updatable>"u"?A.value:w.value.updatable),B=Pa(()=>typeof w.value.focusable>"u"?p.value:w.value.focusable);Yi(rws,e.id),Yi(ows,P);const R=X(()=>w.value.class instanceof Function?w.value.class(w.value):w.value.class),I=X(()=>w.value.style instanceof Function?w.value.style(w.value):w.value.style),F=X(()=>{const Y=w.value.type||"default",ie=C==null?void 0:C[`edge-${Y}`];if(ie)return ie;let te=w.value.template??d.value[Y];if(typeof te=="string"&&_){const Z=Object.keys(_.appContext.components);Z&&Z.includes(Y)&&(te=_n(Y,!1))}return te&&typeof te!="string"?te:(s.error(new Lf(Yh.EDGE_TYPE_MISSING,te)),!1)}),{handlePointerDown:j}=fZn({nodeId:E,handleId:T,type:D,isValidConnection:m,edgeUpdaterType:D,onEdgeUpdate:$,onEdgeUpdateEnd:G});return()=>{const Y=g(w.value.source),ie=g(w.value.target),te="pathOptions"in w.value?w.value.pathOptions:{};if(!Y&&!ie)return s.error(new Lf(Yh.EDGE_SOURCE_TARGET_MISSING,w.value.id,w.value.source,w.value.target)),null;if(!Y)return s.error(new Lf(Yh.EDGE_SOURCE_MISSING,w.value.id,w.value.source)),null;if(!ie)return s.error(new Lf(Yh.EDGE_TARGET_MISSING,w.value.id,w.value.target)),null;if(!w.value||w.value.hidden||Y.hidden||ie.hidden)return null;let Z;r.value===H6.Strict?Z=Y.handleBounds.source:Z=[...Y.handleBounds.source||[],...Y.handleBounds.target||[]];const he=J0n(Z,w.value.sourceHandle);let pe;r.value===H6.Strict?pe=ie.handleBounds.target:pe=[...ie.handleBounds.target||[],...ie.handleBounds.source||[]];const Ce=J0n(pe,w.value.targetHandle),Qe=(he==null?void 0:he.position)||Vi.Bottom,ke=(Ce==null?void 0:Ce.position)||Vi.Top,{x:me,y:_e}=lz(Y,he,Qe),{x:Te,y:De}=lz(ie,Ce,ke);return w.value.sourceX=me,w.value.sourceY=_e,w.value.targetX=Te,w.value.targetY=De,xn("g",{ref:P,key:e.id,"data-id":e.id,class:["vue-flow__edge",`vue-flow__edge-${F.value===!1?"default":w.value.type||"default"}`,l.value,R.value,{updating:S.value,selected:w.value.selected,animated:w.value.animated,inactive:!Q.value&&!b.value.edgeClick.hasListeners()}],tabIndex:B.value?0:void 0,"aria-label":w.value.ariaLabel===null?void 0:w.value.ariaLabel??`Edge from ${w.value.source} to ${w.value.target}`,"aria-describedby":B.value?`${GYn}-${t}`:void 0,"aria-roledescription":"edge",role:B.value?"group":"img",...w.value.domAttributes,onClick:re,onContextmenu:J,onDblclick:oe,onMouseenter:se,onMousemove:le,onMouseleave:ue,onKeyDown:B.value?z:void 0},[L.value?null:xn(F.value===!1?d.value.default:F.value,{id:e.id,sourceNode:Y,targetNode:ie,source:w.value.source,target:w.value.target,type:w.value.type,updatable:M.value,selected:w.value.selected,animated:w.value.animated,label:w.value.label,labelStyle:w.value.labelStyle,labelShowBg:w.value.labelShowBg,labelBgStyle:w.value.labelBgStyle,labelBgPadding:w.value.labelBgPadding,labelBgBorderRadius:w.value.labelBgBorderRadius,data:w.value.data,events:{...w.value.events,...y},style:I.value,markerStart:`url('#${Ite(w.value.markerStart,t)}')`,markerEnd:`url('#${Ite(w.value.markerEnd,t)}')`,sourcePosition:Qe,targetPosition:ke,sourceX:me,sourceY:_e,targetX:Te,targetY:De,sourceHandleId:w.value.sourceHandle,targetHandleId:w.value.targetHandle,interactionWidth:w.value.interactionWidth,...te}),[M.value==="source"||M.value===!0?[xn("g",{onMousedown:ee,onMouseenter:W,onMouseout:H},xn(ukn,{position:Qe,centerX:me,centerY:_e,radius:o.value,type:"source","data-type":"source"}))]:null,M.value==="target"||M.value===!0?[xn("g",{onMousedown:de,onMouseenter:W,onMouseout:H},xn(ukn,{position:ke,centerX:Te,centerY:De,radius:o.value,type:"target","data-type":"target"}))]:null]])};function W(){S.value=!0}function H(){S.value=!1}function $(Y,ie){O.update({event:Y,edge:w.value,connection:ie})}function G(Y){O.updateEnd({event:Y,edge:w.value}),L.value=!1}function q(Y,ie){Y.button===0&&(L.value=!0,E.value=ie?w.value.target:w.value.source,T.value=(ie?w.value.targetHandle:w.value.sourceHandle)??null,D.value=ie?"target":"source",O.updateStart({event:Y,edge:w.value}),j(Y))}function re(Y){var ie;const te={event:Y,edge:w.value};Q.value&&(a.value=!1,w.value.selected&&v.value?(u([w.value]),(ie=P.value)==null||ie.blur()):n([w.value])),O.click(te)}function J(Y){O.contextMenu({event:Y,edge:w.value})}function oe(Y){O.doubleClick({event:Y,edge:w.value})}function se(Y){O.mouseEnter({event:Y,edge:w.value})}function le(Y){O.mouseMove({event:Y,edge:w.value})}function ue(Y){O.mouseLeave({event:Y,edge:w.value})}function ee(Y){q(Y,!0)}function de(Y){q(Y,!1)}function z(Y){var ie;!f.value&&YYn.includes(Y.key)&&Q.value&&(Y.key==="Escape"?((ie=P.value)==null||ie.blur(),u([h(e.id)])):n([h(e.id)]))}}}),pOs=AOs,bOs=Je({name:"ConnectionLine",compatConfig:{MODE:3},setup(){var e;const{id:t,connectionMode:n,connectionStartHandle:r,connectionEndHandle:o,connectionPosition:s,connectionLineType:a,connectionLineStyle:l,connectionLineOptions:d,connectionStatus:u,viewport:h,findNode:g}=nl(),m=(e=bt($Oe))==null?void 0:e["connection-line"],v=X(()=>{var b;return g((b=r.value)==null?void 0:b.nodeId)}),f=X(()=>{var b;return g((b=o.value)==null?void 0:b.nodeId)??null}),k=X(()=>({x:(s.value.x-h.value.x)/h.value.zoom,y:(s.value.y-h.value.y)/h.value.zoom})),A=X(()=>d.value.markerStart?`url(#${Ite(d.value.markerStart,t)})`:""),p=X(()=>d.value.markerEnd?`url(#${Ite(d.value.markerEnd,t)})`:"");return()=>{var b,w,O;if(!v.value||!r.value)return null;const y=r.value.id,C=r.value.type,_=v.value.handleBounds;let S=(_==null?void 0:_[C])??[];if(n.value===H6.Loose){const I=(_==null?void 0:_[C==="source"?"target":"source"])??[];S=[...S,...I]}if(!S)return null;const L=(y?S.find(I=>I.id===y):S[0])??null,E=(L==null?void 0:L.position)??Vi.Top,{x:T,y:D}=lz(v.value,L,E);let P=null;f.value&&(n.value===H6.Strict?P=((b=f.value.handleBounds[C==="source"?"target":"source"])==null?void 0:b.find(I=>{var F;return I.id===((F=o.value)==null?void 0:F.id)}))||null:P=((w=[...f.value.handleBounds.source??[],...f.value.handleBounds.target??[]])==null?void 0:w.find(I=>{var F;return I.id===((F=o.value)==null?void 0:F.id)}))||null);const Q=((O=o.value)==null?void 0:O.position)??(E?UGe[E]:null);if(!E||!Q)return null;const M=a.value??d.value.type??FT.Bezier;let B="";const R={sourceX:T,sourceY:D,sourcePosition:E,targetX:k.value.x,targetY:k.value.y,targetPosition:Q};return M===FT.Bezier?[B]=$st(R):M===FT.Step?[B]=WGe({...R,borderRadius:0}):M===FT.SmoothStep?[B]=WGe(R):M===FT.SimpleBezier?[B]=pZn(R):B=`M${T},${D} ${k.value.x},${k.value.y}`,xn("svg",{class:"vue-flow__edges vue-flow__connectionline vue-flow__container"},xn("g",{class:"vue-flow__connection"},m?xn(m,{sourceX:T,sourceY:D,sourcePosition:E,targetX:k.value.x,targetY:k.value.y,targetPosition:Q,sourceNode:v.value,sourceHandle:L,targetNode:f.value,targetHandle:P,markerEnd:p.value,markerStart:A.value,connectionStatus:u.value}):xn("path",{d:B,class:[d.value.class,u.value,"vue-flow__connection-path"],style:{...l.value,...d.value.style},"marker-end":p.value,"marker-start":A.value})))}}}),wOs=bOs,OOs=["id","markerWidth","markerHeight","markerUnits","orient"],yOs={name:"MarkerType",compatConfig:{MODE:3}},COs=Je({...yOs,props:{id:{},type:{},color:{default:"none"},width:{default:12.5},height:{default:12.5},markerUnits:{default:"strokeWidth"},orient:{default:"auto-start-reverse"},strokeWidth:{default:1}},setup(e){return(t,n)=>(xe(),Ge("marker",{id:t.id,class:"vue-flow__arrowhead",viewBox:"-10 -10 20 20",refX:"0",refY:"0",markerWidth:`${t.width}`,markerHeight:`${t.height}`,markerUnits:t.markerUnits,orient:t.orient},[t.type===Ae(FGe).ArrowClosed?(xe(),Ge("polyline",{key:0,style:no({stroke:t.color,fill:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",points:"-5,-4 0,0 -5,4 -5,-4"},null,4)):nn("",!0),t.type===Ae(FGe).Arrow?(xe(),Ge("polyline",{key:1,style:no({stroke:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",fill:"none",points:"-5,-4 0,0 -5,4"},null,4)):nn("",!0)],8,OOs))}}),_Os={class:"vue-flow__marker vue-flow__container","aria-hidden":"true"},SOs={name:"MarkerDefinitions",compatConfig:{MODE:3}},LOs=Je({...SOs,setup(e){const{id:t,edges:n,connectionLineOptions:r,defaultMarkerColor:o}=nl(),s=X(()=>{const a=new Set,l=[],d=u=>{if(u){const h=Ite(u,t);a.has(h)||(typeof u=="object"?l.push({...u,id:h,color:u.color||o.value}):l.push({id:h,color:o.value,type:u}),a.add(h))}};for(const u of[r.value.markerEnd,r.value.markerStart])d(u);for(const u of n.value)for(const h of[u.markerStart,u.markerEnd])d(h);return l.sort((u,h)=>u.id.localeCompare(h.id))});return(a,l)=>(xe(),Ge("svg",_Os,[ge("defs",null,[(xe(!0),Ge(sn,null,Bi(s.value,d=>(xe(),Ut(COs,{id:d.id,key:d.id,type:d.type,color:d.color,width:d.width,height:d.height,markerUnits:d.markerUnits,"stroke-width":d.strokeWidth,orient:d.orient},null,8,["id","type","color","width","height","markerUnits","stroke-width","orient"]))),128))])]))}}),xOs={name:"Edges",compatConfig:{MODE:3}},EOs=Je({...xOs,setup(e){const{findNode:t,getEdges:n,elevateEdgesOnSelect:r}=nl();return(o,s)=>(xe(),Ge(sn,null,[c(LOs),(xe(!0),Ge(sn,null,Bi(Ae(n),a=>(xe(),Ge("svg",{key:a.id,class:"vue-flow__edges vue-flow__container",style:no({zIndex:Ae($3s)(a,Ae(t),Ae(r))})},[c(Ae(pOs),{id:a.id},null,8,["id"])],4))),128)),c(Ae(wOs))],64))}}),TOs=Je({name:"Node",compatConfig:{MODE:3},props:["id","resizeObserver"],setup(e){const{id:t,noPanClassName:n,selectNodesOnDrag:r,nodesSelectionActive:o,multiSelectionActive:s,emits:a,removeSelectedNodes:l,addSelectedNodes:d,updateNodeDimensions:u,onUpdateNodeInternals:h,getNodeTypes:g,nodeExtent:m,elevateNodesOnSelect:v,disableKeyboardA11y:f,ariaLiveMessage:k,snapToGrid:A,snapGrid:p,nodeDragThreshold:b,nodesDraggable:w,elementsSelectable:O,nodesConnectable:y,nodesFocusable:C,hooks:_}=nl(),S=fe(null);Yi(uZn,S),Yi(dZn,e.id);const L=bt($Oe),E=ps(),T=mZn(),{node:D,parentNode:P}=gZn(e.id),{emit:Q,on:M}=uws(D,a),B=Pa(()=>typeof D.draggable>"u"?w.value:D.draggable),R=Pa(()=>typeof D.selectable>"u"?O.value:D.selectable),I=Pa(()=>typeof D.connectable>"u"?y.value:D.connectable),F=Pa(()=>typeof D.focusable>"u"?C.value:D.focusable),j=X(()=>R.value||B.value||_.value.nodeClick.hasListeners()||_.value.nodeDoubleClick.hasListeners()||_.value.nodeMouseEnter.hasListeners()||_.value.nodeMouseMove.hasListeners()||_.value.nodeMouseLeave.hasListeners()),W=Pa(()=>!!D.dimensions.width&&!!D.dimensions.height),H=X(()=>{const ie=D.type||"default",te=L==null?void 0:L[`node-${ie}`];if(te)return te;let Z=D.template||g.value[ie];if(typeof Z=="string"&&E){const he=Object.keys(E.appContext.components);he&&he.includes(ie)&&(Z=_n(ie,!1))}return Z&&typeof Z!="string"?Z:(a.error(new Lf(Yh.NODE_TYPE_MISSING,Z)),!1)}),$=hZn({id:e.id,el:S,disabled:()=>!B.value,selectable:R,dragHandle:()=>D.dragHandle,onStart(ie){Q.dragStart(ie)},onDrag(ie){Q.drag(ie)},onStop(ie){Q.dragStop(ie)},onClick(ie){z(ie)}}),G=X(()=>D.class instanceof Function?D.class(D):D.class),q=X(()=>{const ie=(D.style instanceof Function?D.style(D):D.style)||{},te=D.width instanceof Function?D.width(D):D.width,Z=D.height instanceof Function?D.height(D):D.height;return!ie.width&&te&&(ie.width=typeof te=="string"?te:`${te}px`),!ie.height&&Z&&(ie.height=typeof Z=="string"?Z:`${Z}px`),ie}),re=Pa(()=>Number(D.zIndex??q.value.zIndex??0));return h(ie=>{(ie.includes(e.id)||!ie.length)&&oe()}),An(()=>{pt(()=>D.hidden,(ie=!1,te,Z)=>{!ie&&S.value&&(e.resizeObserver.observe(S.value),Z(()=>{S.value&&e.resizeObserver.unobserve(S.value)}))},{immediate:!0,flush:"post"})}),pt([()=>D.type,()=>D.sourcePosition,()=>D.targetPosition],()=>{ai(()=>{u([{id:e.id,nodeElement:S.value,forceUpdate:!0}])})}),pt([()=>D.position.x,()=>D.position.y,()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.x},()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.y},()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.z},re,()=>D.selected,()=>D.dimensions.height,()=>D.dimensions.width,()=>{var ie;return(ie=P.value)==null?void 0:ie.dimensions.height},()=>{var ie;return(ie=P.value)==null?void 0:ie.dimensions.width}],([ie,te,Z,he,pe,Ce])=>{const Qe={x:ie,y:te,z:Ce+(v.value&&D.selected?1e3:0)};typeof Z<"u"&&typeof he<"u"?D.computedPosition=U3s({x:Z,y:he,z:pe},Qe):D.computedPosition=Qe},{flush:"post",immediate:!0}),pt([()=>D.extent,m],([ie,te],[Z,he])=>{(ie!==Z||te!==he)&&J()}),D.extent==="parent"||typeof D.extent=="object"&&"range"in D.extent&&D.extent.range==="parent"?EGe(()=>W).toBe(!0).then(J):J(),()=>D.hidden?null:xn("div",{ref:S,"data-id":D.id,class:["vue-flow__node",`vue-flow__node-${H.value===!1?"default":D.type||"default"}`,{[n.value]:B.value,dragging:$==null?void 0:$.value,draggable:B.value,selected:D.selected,selectable:R.value,parent:D.isParent},G.value],style:{visibility:W.value?"visible":"hidden",zIndex:D.computedPosition.z??re.value,transform:`translate(${D.computedPosition.x}px,${D.computedPosition.y}px)`,pointerEvents:j.value?"all":"none",...q.value},tabIndex:F.value?0:void 0,role:F.value?"group":void 0,"aria-describedby":f.value?void 0:`${XYn}-${t}`,"aria-label":D.ariaLabel,"aria-roledescription":"node",...D.domAttributes,onMouseenter:se,onMousemove:le,onMouseleave:ue,onContextmenu:ee,onClick:z,onDblclick:de,onKeydown:Y},[xn(H.value===!1?g.value.default:H.value,{id:D.id,type:D.type,data:D.data,events:{...D.events,...M},selected:D.selected,resizing:D.resizing,dragging:$.value,connectable:I.value,position:D.computedPosition,dimensions:D.dimensions,isValidTargetPos:D.isValidTargetPos,isValidSourcePos:D.isValidSourcePos,parent:D.parentNode,parentNodeId:D.parentNode,zIndex:D.computedPosition.z??re.value,targetPosition:D.targetPosition,sourcePosition:D.sourcePosition,label:D.label,dragHandle:D.dragHandle,onUpdateNodeInternals:oe})]);function J(){const ie=D.computedPosition,{computedPosition:te,position:Z}=zst(D,A.value?HOe(ie,p.value):ie,a.error,m.value,P.value);(D.computedPosition.x!==te.x||D.computedPosition.y!==te.y)&&(D.computedPosition={...D.computedPosition,...te}),(D.position.x!==Z.x||D.position.y!==Z.y)&&(D.position=Z)}function oe(){S.value&&u([{id:e.id,nodeElement:S.value,forceUpdate:!0}])}function se(ie){$!=null&&$.value||Q.mouseEnter({event:ie,node:D})}function le(ie){$!=null&&$.value||Q.mouseMove({event:ie,node:D})}function ue(ie){$!=null&&$.value||Q.mouseLeave({event:ie,node:D})}function ee(ie){return Q.contextMenu({event:ie,node:D})}function de(ie){return Q.doubleClick({event:ie,node:D})}function z(ie){R.value&&(!r.value||!B.value||b.value>0)&&jGe(D,s.value,d,l,o,!1,S.value),Q.click({event:ie,node:D})}function Y(ie){if(!(NGe(ie)||f.value))if(YYn.includes(ie.key)&&R.value){const te=ie.key==="Escape";jGe(D,s.value,d,l,o,te,S.value)}else B.value&&D.selected&&kj[ie.key]&&(ie.preventDefault(),k.value=`Moved selected node ${ie.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~D.position.x}, y: ${~~D.position.y}`,T({x:kj[ie.key].x,y:kj[ie.key].y},ie.shiftKey))}}}),QOs=TOs,DOs={height:"0",width:"0"},BOs={name:"EdgeLabelRenderer",compatConfig:{MODE:3}},ROs=Je({...BOs,setup(e){const{viewportRef:t}=nl(),n=Pa(()=>{var r;return(r=t.value)==null?void 0:r.getElementsByClassName("vue-flow__edge-labels")[0]});return(r,o)=>(xe(),Ge("svg",null,[(xe(),Ge("foreignObject",DOs,[(xe(),Ut(f3,{to:n.value,disabled:!n.value},[Zr(r.$slots,"default")],8,["to","disabled"]))]))]))}});function IOs(e={includeHiddenNodes:!1}){const{nodes:t}=nl();return X(()=>{if(t.value.length===0)return!1;for(const n of t.value)if((e.includeHiddenNodes||!n.hidden)&&((n==null?void 0:n.handleBounds)===void 0||n.dimensions.width===0||n.dimensions.height===0))return!1;return!0})}const MOs={class:"vue-flow__nodes vue-flow__container"},POs={name:"Nodes",compatConfig:{MODE:3}},FOs=Je({...POs,setup(e){const{getNodes:t,updateNodeDimensions:n,emits:r}=nl(),o=IOs(),s=fe();return pt(o,a=>{a&&ai(()=>{r.nodesInitialized(t.value)})},{immediate:!0}),An(()=>{s.value=new ResizeObserver(a=>{const l=a.map(d=>({id:d.target.getAttribute("data-id"),nodeElement:d.target,forceUpdate:!0}));ai(()=>n(l))})}),qs(()=>{var a;return(a=s.value)==null?void 0:a.disconnect()}),(a,l)=>(xe(),Ge("div",MOs,[s.value?(xe(!0),Ge(sn,{key:0},Bi(Ae(t),(d,u,h,g)=>{const m=[d.id];if(g&&g.key===d.id&&Zri(g,m))return g;const v=(xe(),Ut(Ae(QOs),{id:d.id,key:d.id,"resize-observer":s.value},null,8,["id","resize-observer"]));return v.memo=m,v},l,0),128)):nn("",!0)]))}});function NOs(){const{emits:e}=nl();An(()=>{if(cZn()){const t=document.querySelector(".vue-flow__pane");t&&window.getComputedStyle(t).zIndex!=="1"&&e.error(new Lf(Yh.MISSING_STYLES))}})}const UOs=ge("div",{class:"vue-flow__edge-labels"},null,-1),jOs={name:"VueFlow",compatConfig:{MODE:3}},wZn=Je({...jOs,props:{id:{},modelValue:{},nodes:{},edges:{},edgeTypes:{},nodeTypes:{},connectionMode:{},connectionLineType:{},connectionLineStyle:{default:void 0},connectionLineOptions:{default:void 0},connectionRadius:{},isValidConnection:{type:[Function,null],default:void 0},deleteKeyCode:{default:void 0},selectionKeyCode:{type:[Boolean,null],default:void 0},multiSelectionKeyCode:{default:void 0},zoomActivationKeyCode:{default:void 0},panActivationKeyCode:{default:void 0},snapToGrid:{type:Boolean,default:void 0},snapGrid:{},onlyRenderVisibleElements:{type:Boolean,default:void 0},edgesUpdatable:{type:[Boolean,String],default:void 0},nodesDraggable:{type:Boolean,default:void 0},nodesConnectable:{type:Boolean,default:void 0},nodeDragThreshold:{},elementsSelectable:{type:Boolean,default:void 0},selectNodesOnDrag:{type:Boolean,default:void 0},panOnDrag:{type:[Boolean,Array],default:void 0},minZoom:{},maxZoom:{},defaultViewport:{},translateExtent:{},nodeExtent:{},defaultMarkerColor:{},zoomOnScroll:{type:Boolean,default:void 0},zoomOnPinch:{type:Boolean,default:void 0},panOnScroll:{type:Boolean,default:void 0},panOnScrollSpeed:{},panOnScrollMode:{},paneClickDistance:{},zoomOnDoubleClick:{type:Boolean,default:void 0},preventScrolling:{type:Boolean,default:void 0},selectionMode:{},edgeUpdaterRadius:{},fitViewOnInit:{type:Boolean,default:void 0},connectOnClick:{type:Boolean,default:void 0},applyDefault:{type:Boolean,default:void 0},autoConnect:{type:[Boolean,Function],default:void 0},noDragClassName:{},noWheelClassName:{},noPanClassName:{},defaultEdgeOptions:{},elevateEdgesOnSelect:{type:Boolean,default:void 0},elevateNodesOnSelect:{type:Boolean,default:void 0},disableKeyboardA11y:{type:Boolean,default:void 0},edgesFocusable:{type:Boolean,default:void 0},nodesFocusable:{type:Boolean,default:void 0},autoPanOnConnect:{type:Boolean,default:void 0},autoPanOnNodeDrag:{type:Boolean,default:void 0},autoPanSpeed:{}},emits:["nodesChange","edgesChange","nodesInitialized","paneReady","init","updateNodeInternals","error","connect","connectStart","connectEnd","clickConnectStart","clickConnectEnd","moveStart","move","moveEnd","selectionDragStart","selectionDrag","selectionDragStop","selectionContextMenu","selectionStart","selectionEnd","viewportChangeStart","viewportChange","viewportChangeEnd","paneScroll","paneClick","paneContextMenu","paneMouseEnter","paneMouseMove","paneMouseLeave","edgeUpdate","edgeContextMenu","edgeMouseEnter","edgeMouseMove","edgeMouseLeave","edgeDoubleClick","edgeClick","edgeUpdateStart","edgeUpdateEnd","nodeContextMenu","nodeMouseEnter","nodeMouseMove","nodeMouseLeave","nodeDoubleClick","nodeClick","nodeDragStart","nodeDrag","nodeDragStop","miniMapNodeClick","miniMapNodeDoubleClick","miniMapNodeMouseEnter","miniMapNodeMouseMove","miniMapNodeMouseLeave","update:modelValue","update:nodes","update:edges"],setup(e,{expose:t,emit:n}){const r=e,o=TAn(),s=rRe(r,"modelValue",n),a=rRe(r,"nodes",n),l=rRe(r,"edges",n),d=nl(r),u=mws({modelValue:s,nodes:a,edges:l},r,d);return vws(n,d.hooks),mOs(),NOs(),Yi($Oe,o),Qa(u),t(d),(h,g)=>(xe(),Ge("div",{ref:Ae(d).vueFlowRef,class:"vue-flow"},[c(cOs,null,{default:Oe(()=>[c(EOs),UOs,c(FOs),Zr(h.$slots,"zoom-pane")]),_:3}),Zr(h.$slots,"default"),c(gOs)],512))}}),WOs={name:"Panel",compatConfig:{MODE:3}},OZn=Je({...WOs,props:{position:{}},setup(e){const t=e,{userSelectionActive:n}=nl(),r=X(()=>`${t.position}`.split("-"));return(o,s)=>(xe(),Ge("div",{class:Eo(["vue-flow__panel",r.value]),style:no({pointerEvents:Ae(n)?"none":"all"})},[Zr(o.$slots,"default")],6))}});var NS=(e=>(e.Lines="lines",e.Dots="dots",e))(NS||{});const yZn=function({dimensions:e,size:t,color:n}){return xn("path",{stroke:n,"stroke-width":t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})},CZn=function({radius:e,color:t}){return xn("circle",{cx:e,cy:e,r:e,fill:t})};NS.Lines+"",NS.Dots+"";const VOs={[NS.Dots]:"#81818a",[NS.Lines]:"#eee"},zOs=["id","x","y","width","height","patternTransform"],HOs={key:2,height:"100",width:"100"},$Os=["fill"],XOs=["x","y","fill"],GOs={name:"Background",compatConfig:{MODE:3}},_Zn=Je({...GOs,props:{id:{},variant:{default:()=>NS.Dots},gap:{default:20},size:{default:1},lineWidth:{default:1},patternColor:{},color:{},bgColor:{},height:{default:100},width:{default:100},x:{default:0},y:{default:0},offset:{default:0}},setup(e){const{id:t,viewport:n}=nl(),r=X(()=>{const a=n.value.zoom,[l,d]=Array.isArray(e.gap)?e.gap:[e.gap,e.gap],u=[l*a||1,d*a||1],h=e.size*a,[g,m]=Array.isArray(e.offset)?e.offset:[e.offset,e.offset],v=[g*a||1+u[0]/2,m*a||1+u[1]/2];return{scaledGap:u,offset:v,size:h}}),o=Pa(()=>`pattern-${t}${e.id?`-${e.id}`:""}`),s=Pa(()=>e.color||e.patternColor||VOs[e.variant||NS.Dots]);return(a,l)=>(xe(),Ge("svg",{class:"vue-flow__background vue-flow__container",style:no({height:`${a.height>100?100:a.height}%`,width:`${a.width>100?100:a.width}%`})},[Zr(a.$slots,"pattern-container",{id:o.value},()=>[ge("pattern",{id:o.value,x:Ae(n).x%r.value.scaledGap[0],y:Ae(n).y%r.value.scaledGap[1],width:r.value.scaledGap[0],height:r.value.scaledGap[1],patternTransform:`translate(-${r.value.offset[0]},-${r.value.offset[1]})`,patternUnits:"userSpaceOnUse"},[Zr(a.$slots,"pattern",{},()=>[a.variant===Ae(NS).Lines?(xe(),Ut(Ae(yZn),{key:0,size:a.lineWidth,color:s.value,dimensions:r.value.scaledGap},null,8,["size","color","dimensions"])):a.variant===Ae(NS).Dots?(xe(),Ut(Ae(CZn),{key:1,color:s.value,radius:r.value.size/2},null,8,["color","radius"])):nn("",!0),a.bgColor?(xe(),Ge("svg",HOs,[ge("rect",{width:"100%",height:"100%",fill:a.bgColor},null,8,$Os)])):nn("",!0)])],8,zOs)]),ge("rect",{x:a.x,y:a.y,width:"100%",height:"100%",fill:`url(#${o.value})`},null,8,XOs),Zr(a.$slots,"default",{id:o.value})],4))}}),YOs={name:"ControlButton",compatConfig:{MODE:3}},ZOs=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},qOs={type:"button",class:"vue-flow__controls-button"};function KOs(e,t,n,r,o,s){return xe(),Ge("button",qOs,[Zr(e.$slots,"default")])}const Nde=ZOs(YOs,[["render",KOs]]),JOs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},eys=ge("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"},null,-1),tys=[eys];function nys(e,t){return xe(),Ge("svg",JOs,tys)}const iys={render:nys},rys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},oys=ge("path",{d:"M0 0h32v4.2H0z"},null,-1),sys=[oys];function ays(e,t){return xe(),Ge("svg",rys,sys)}const lys={render:ays},cys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},dys=ge("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"},null,-1),uys=[dys];function hys(e,t){return xe(),Ge("svg",cys,uys)}const fys={render:hys},gys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},mys=ge("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"},null,-1),kys=[mys];function vys(e,t){return xe(),Ge("svg",gys,kys)}const Ays={render:vys},pys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},bys=ge("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z"},null,-1),wys=[bys];function Oys(e,t){return xe(),Ge("svg",pys,wys)}const yys={render:Oys},Cys={name:"Controls",compatConfig:{MODE:3}},SZn=Je({...Cys,props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>$Yn.BottomLeft}},emits:["zoomIn","zoomOut","fitView","interactionChange"],setup(e,{emit:t}){const{nodesDraggable:n,nodesConnectable:r,elementsSelectable:o,setInteractive:s,zoomIn:a,zoomOut:l,fitView:d,viewport:u,minZoom:h,maxZoom:g}=nl(),m=Pa(()=>n.value||r.value||o.value),v=Pa(()=>u.value.zoom<=h.value),f=Pa(()=>u.value.zoom>=g.value);function k(){a(),t("zoomIn")}function A(){l(),t("zoomOut")}function p(){d(e.fitViewParams),t("fitView")}function b(){s(!m.value),t("interactionChange",!m.value)}return(w,O)=>(xe(),Ut(Ae(OZn),{class:"vue-flow__controls",position:w.position},{default:Oe(()=>[Zr(w.$slots,"top"),w.showZoom?(xe(),Ge(sn,{key:0},[Zr(w.$slots,"control-zoom-in",{},()=>[c(Nde,{class:"vue-flow__controls-zoomin",disabled:f.value,onClick:k},{default:Oe(()=>[Zr(w.$slots,"icon-zoom-in",{},()=>[(xe(),Ut(Bd(Ae(iys))))])]),_:3},8,["disabled"])]),Zr(w.$slots,"control-zoom-out",{},()=>[c(Nde,{class:"vue-flow__controls-zoomout",disabled:v.value,onClick:A},{default:Oe(()=>[Zr(w.$slots,"icon-zoom-out",{},()=>[(xe(),Ut(Bd(Ae(lys))))])]),_:3},8,["disabled"])])],64)):nn("",!0),w.showFitView?Zr(w.$slots,"control-fit-view",{key:1},()=>[c(Nde,{class:"vue-flow__controls-fitview",onClick:p},{default:Oe(()=>[Zr(w.$slots,"icon-fit-view",{},()=>[(xe(),Ut(Bd(Ae(fys))))])]),_:3})]):nn("",!0),w.showInteractive?Zr(w.$slots,"control-interactive",{key:2},()=>[w.showInteractive?(xe(),Ut(Nde,{key:0,class:"vue-flow__controls-interactive",onClick:b},{default:Oe(()=>[m.value?Zr(w.$slots,"icon-unlock",{key:0},()=>[(xe(),Ut(Bd(Ae(yys))))]):nn("",!0),m.value?nn("",!0):Zr(w.$slots,"icon-lock",{key:1},()=>[(xe(),Ut(Bd(Ae(Ays))))])]),_:3})):nn("",!0)]):nn("",!0),Zr(w.$slots,"default")]),_:3},8,["position"]))}}),_ys={class:"titleBar dragHandle pr"},Sys={class:"title c"},Lys={class:"content"},xys=Je({__name:"script",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=km,f=gc;return xe(),Ge(sn,null,[c(v,{class:"script"},{default:Oe(()=>[ge("div",_ys,[ge("div",Sys,Pe(h.$t("workbench.production.node.script.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",Lys,[c(Ae(i3),{modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=k=>n.value=k),theme:"light"},null,8,["modelValue"])]),c(Ae(mm),{id:t.handleIds.assets,type:"source",position:Ae(Vi).Bottom},null,8,["id","position"])]),_:1}),c(f,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=k=>o.value=k),header:h.$t("workbench.production.node.script.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=k=>r.value=k),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),Eys=oo(xys,[["__scopeId","data-v-e1680278"]]),Tys={class:"titleBar dragHandle pr"},Qys={class:"title c"},Dys={class:"content"},Bys=Je({__name:"scriptPlan",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=Xy,f=km,k=gc;return xe(),Ge(sn,null,[c(f,{class:"scriptPlan"},{default:Oe(()=>[ge("div",Tys,[ge("div",Qys,Pe(h.$t("workbench.production.node.scriptPlan.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",Dys,[n.value?(xe(),Ut(Ae(i3),{key:1,modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=A=>n.value=A),theme:"light"},null,8,["modelValue"])):(xe(),Ut(v,{key:0,style:{"margin-top":"16px"}}))])]),_:1}),c(k,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=A=>o.value=A),header:h.$t("workbench.production.node.scriptPlan.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=A=>r.value=A),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),Rys=oo(Bys,[["__scopeId","data-v-7bff2864"]]),Iys={class:"uploadNode"},Mys={class:"data"},Pys={class:"title ac"},Fys={class:"imageBox"},Nys={class:"imageToolsWrap"},Uys={class:"upload ac"},jys={style:{"margin-left":"5px",color:"#fff"}},Wys={class:"fc ac",style:{gap:"6px"}},Vys=Je({__name:"uploadNode",props:{id:{},data:{}},emits:["upload","keep"],setup(e,{emit:t}){var k;const n=e,r=bt("openStoryboardCheck"),{updateNodeData:o,removeNodes:s}=nl("editImage"),a=fe(((k=n.data)==null?void 0:k.image)||""),l=fe(null),d=[{content:$t("workbench.production.editImage.uploadImage"),value:1},{content:$t("workbench.production.editImage.uploadStoryboardImage"),value:2}];pt(()=>{var A;return(A=n.data)==null?void 0:A.image},A=>{a.value=A||""}),qs(()=>{l.value&&URL.revokeObjectURL(l.value)});function u(){s(n.id)}const h=t;function g(A){A.value==1?v():A.value==2&&f()}function m(){if(!a.value)return window.$message.error($t("workbench.production.editImage.noImage"));h("keep",a.value)}async function v(){const A=await jV({multiple:!1,title:$t("workbench.production.editImage.selectImage")});if(A.length>0){const p=A[0].src;a.value=p,o(n.id,{image:p}),h("upload")}}async function f(){const A=await r();if(A.length>0){const p=A[0].src;a.value=p,o(n.id,{image:p}),h("upload")}}return(A,p)=>{const b=_n("i-pic"),w=jre,O=Zh,y=_n("i-upload"),C=Si,_=Rne,S=_n("i-save"),L=y1,E=_n("i-delete"),T=el;return xe(),Ge("div",Iys,[c(Ae(mm),{type:"source",position:Ae(Vi).Right,style:{"z-index":"999999"}},null,8,["position"]),ge("div",Mys,[ge("div",Pys,[c(b,{theme:"outline",size:"16",fill:"#000000"}),p[0]||(p[0]=ge("span",{style:{"margin-left":"5px",color:"#4b4b4b"}},"Image",-1))]),ge("div",Fys,[c(O,{class:"image",src:a.value,fit:"contain",style:{width:"100%",height:"100%",borderRadius:"10px"}},{overlayContent:Oe(()=>[ge("div",Nys,[c(w,{src:a.value,position:"br"},null,8,["src"])])]),_:1},8,["src"]),c(_,{options:d,onClick:g},{content:Oe(()=>[ge("div",Wys,[c(C,{variant:"outline",onClick:v},{default:Oe(()=>[...p[1]||(p[1]=[Bt("资产图片",-1)])]),_:1}),c(C,{variant:"outline",onClick:f},{default:Oe(()=>[...p[2]||(p[2]=[Bt("分镜图片",-1)])]),_:1})])]),default:Oe(()=>[ge("div",Uys,[c(y,{theme:"outline",size:"18",fill:"#fff"}),ge("span",jys,Pe(A.$t("workbench.production.editImage.upload")),1)])]),_:1}),c(L,{content:A.$t("workbench.production.save")},{default:Oe(()=>[a.value?(xe(),Ut(C,{key:0,theme:"primary",size:"small",class:"keepBottomLeftBtn",onClick:m},{icon:Oe(()=>[c(S)]),_:1})):nn("",!0)]),_:1},8,["content"]),c(T,{theme:"primary",content:A.$t("workbench.production.editImage.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:u},[c(E,{theme:"outline",size:"18",fill:"#fff"})])]),_:1},8,["content"])])])])}}}),zys=oo(Vys,[["__scopeId","data-v-87f647b2"]]),Hys={class:"textareaWrapper"},$ys=["data-placeholder"],Xys={class:"referencesList"},Gys=["onMousedown"],Yys={class:"reference-label"},Zys={class:"ref-index-badge"},qys={key:0,class:"no-references"},Kys=Je({__name:"promptEditor",props:Fc({references:{},placeholder:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(null),o=fe(!1),s=fe(0),a=fe({left:0,top:0}),l=fe("");let d=null,u=!1;function h(w){var T;const O=(T=t.references)==null?void 0:T[w],y=(O==null?void 0:O.type)??"image",C=(O==null?void 0:O.src)??"",_=document.createElement("span");_.contentEditable="false",_.dataset.refIndex=String(w),_.dataset.imgSrc=C;const S=()=>y==="image"?xn("img",{src:C,style:{width:"200px",borderRadius:"8px",display:"block"},alt:""}):xn("span",{style:{padding:"8px",display:"block"}},C),L=()=>y==="image"?xn("img",{src:C,alt:""}):xn(y==="video"?x8n:E8n),E=xn(y1,{content:S,placement:"top"},{default:()=>[xn("div",{class:"tag"},[L(),xn("span",null,$t("workbench.production.editImage.reference",{index:w+1}))])]});return p8(E,_),_}function g(w){if(!r.value)return;r.value.innerHTML="";const O=/@图(\d+)/g;let y=0,C;for(;(C=O.exec(w))!==null;)C.index>y&&r.value.appendChild(document.createTextNode(w.substring(y,C.index))),r.value.appendChild(h(Number(C[1])-1)),r.value.appendChild(document.createTextNode("​")),y=O.lastIndex;y{r.value&&n.value&&g(n.value)}),pt(()=>t.references,()=>{r.value&&n.value&&g(n.value)}),pt(n,w=>{var y;if(u){u=!1;return}if(!r.value)return;const O=((y=r.value.textContent)==null?void 0:y.replace(/\u200B/g,""))||"";w!==void 0&&w!==O&&g(w)});function m(){var C;const w=window.getSelection();if(!w||w.rangeCount===0)return"";const O=w.getRangeAt(0),y=O.startContainer;return y.nodeType===Node.TEXT_NODE?((C=y.textContent)==null?void 0:C.substring(0,O.startOffset))??"":""}function v(){const w=window.getSelection();if(!w||w.rangeCount===0)return{left:0,top:24};const O=w.getRangeAt(0).cloneRange();O.collapse(!0);const y=O.getBoundingClientRect(),C=r.value.getBoundingClientRect();return{left:Math.max(0,y.left-C.left),top:y.bottom-C.top+4}}function f(){var y;l.value=((y=r.value)==null?void 0:y.textContent)||"",p();const w=m(),O=w.lastIndexOf("@");if(O!==-1&&!w.substring(O+1).includes(" ")){o.value=!0,s.value=0;const C=window.getSelection();C&&C.rangeCount>0&&(d=C.getRangeAt(0).cloneRange()),ai(()=>{a.value=v()});return}o.value=!1,d=null}function k(w){var y;if(!o.value||!((y=t.references)!=null&&y.length))return;const O=t.references.length-1;switch(w.key){case"ArrowDown":w.preventDefault(),s.value=Math.min(s.value+1,O);break;case"ArrowUp":w.preventDefault(),s.value=Math.max(s.value-1,0);break;case"Enter":case"Tab":w.preventDefault(),A(s.value);break;case"Escape":o.value=!1;break}}function A(w){var M;if(!r.value||!d)return;const O=window.getSelection();if(!O)return;const y=d.cloneRange(),C=y.startContainer,_=y.startOffset,L=(C.textContent||"").lastIndexOf("@",_-1);if(L===-1)return;const E=h(w),T=C.splitText(L),D=_-L;T.deleteData(0,D),C.parentNode.insertBefore(E,T);const P=document.createTextNode("​");E.after(P);const Q=document.createRange();Q.setStart(P,1),Q.collapse(!0),O.removeAllRanges(),O.addRange(Q),o.value=!1,d=null,l.value=((M=r.value)==null?void 0:M.textContent)||"",p()}function p(){if(!r.value)return;let w="";r.value.childNodes.forEach(O=>{var y;if(O.nodeType===Node.TEXT_NODE)w+=(O.textContent||"").replace(/\u200B/g,"");else if(((y=O.dataset)==null?void 0:y.refIndex)!==void 0){const C=O.dataset.refIndex;w+=` @图${Number(C)+1} `}}),u=!0,n.value=w}function b(){setTimeout(()=>{o.value=!1},150)}return(w,O)=>{var S;const y=Zh,C=_n("i-video"),_=_n("i-volume-mute");return xe(),Ge("div",Hys,[ge("div",{ref_key:"editorRef",ref:r,class:"promptEditor",contenteditable:"true","data-placeholder":Ae(l).length===0?t.placeholder:"",onInput:f,onKeydown:k,onBlur:b,onMousedown:O[0]||(O[0]=Mr(()=>{},["stop"]))},null,40,$ys),Ae(o)?(xe(),Ge("div",{key:0,class:"referencesPopup",style:no({left:Ae(a).left+"px",top:Ae(a).top+"px"})},[ge("div",Xys,[(xe(!0),Ge(sn,null,Bi(e.references,(L,E)=>(xe(),Ge("div",{key:E,class:Eo(["reference-item",{active:Ae(s)===E}]),onMousedown:Mr(T=>A(E),["prevent"])},[L.type==="image"?(xe(),Ut(y,{key:0,src:L.src,fit:"cover",class:"ref-popup-img"},null,8,["src"])):L.type==="video"?(xe(),Ut(C,{key:1,class:"ref-popup-icon"})):L.type==="audio"?(xe(),Ut(_,{key:2,class:"ref-popup-icon"})):nn("",!0),ge("span",Yys,Pe(w.$t("workbench.production.editImage.reference",{index:E+1})),1),ge("span",Zys,"#"+Pe(E+1),1)],42,Gys))),128)),(S=e.references)!=null&&S.length?nn("",!0):(xe(),Ge("div",qys,Pe(w.$t("workbench.production.editImage.noReferences")),1))])],4)):nn("",!0)])}}}),LZn=oo(Kys,[["__scopeId","data-v-3d78a0de"]]),hkn={type:"removeLine",animated:!0,style:{stroke:"#00000"}};function Jys(e="",t=""){return{generatedImage:e,references:[],prompt:t,model:"",ratio:"",quality:"",steps:49}}function fkn(e){return e.map(t=>{var n;return{id:t.id,type:t.type,position:t.position,data:t.type==="upload"?{image:t.data.image}:{generatedImage:t.data.generatedImage,references:((n=t.data.references)==null?void 0:n.map(r=>({image:r.image})))??[],prompt:t.data.prompt,model:t.data.model,ratio:t.data.ratio,quality:t.data.quality}}})}function gkn(e){return e.map(t=>({id:t.id,source:t.source,target:t.target}))}const eCs={class:"generatedNode"},tCs={class:"title ac"},nCs={class:"titleText"},iCs={class:"image"},rCs={key:0,class:"imageLoading"},oCs={class:"loadingText"},sCs={key:1,class:"imageWrapper"},aCs={class:"imageToolsWrap"},lCs={class:"upload ac"},cCs={style:{"margin-left":"5px",color:"#fff"}},dCs={class:"imageRefs f w"},uCs={class:"text w"},hCs={class:"operate ac jb"},fCs={class:"ac"},gCs={class:"f",style:{gap:"5px","margin-left":"5px"}},mCs=Je({__name:"generatedNode",props:{id:{},data:{},projectId:{},imageDefaultModle:{}},emits:["keep"],setup(e,{emit:t}){const n=bt("openStoryboardCheck"),{open:r,onChange:o,onCancel:s}=cOn({multiple:!1,reset:!0,accept:".png,.jpg,.jpeg"}),a=fe(!0),l=fe(!1),d=bt("episodesId"),u=t,{removeNodes:h}=nl("editImage"),g=[{content:$t("workbench.production.editImage.uploadImage"),value:1},{content:$t("workbench.production.editImage.uploadStoryboardImage"),value:2},{content:$t("workbench.production.generatedNode.localUpload"),value:3}],m=X(()=>v.data.references.map(y=>({type:"image",src:y.image})).filter(Boolean)),v=e;function f(){a.value=!a.value}function k(y){y.value==1?p():y.value==2?b():y.value==3&&(console.log("%c Line:124 🍷","background:#4fff4B"),A())}async function A(){const y=await new Promise(S=>{r(),o(L=>S(L)),s(()=>S(null))});if(!(y!=null&&y.length))return;const C=y[0],_=new FileReader;_.onload=async()=>{const S=_.result;try{const{data:L}=await mn.post("/production/editImage/uploadImage",{base64Data:S,projectId:v.projectId,scriptId:d.value});v.data.generatedImage=L}catch(L){return window.$message.error((L==null?void 0:L.message)||$t("workbench.production.editImage.uploadFailed"))}},_.readAsDataURL(C)}async function p(){const y=await jV({multiple:!1,title:$t("workbench.production.editImage.selectImage")});if(y.length>0){const C=y[0].src;v.data.generatedImage=C}}async function b(){const y=await n();if(y.length>0){const C=y[0].src;v.data.generatedImage=C}}async function w(){if(!v.data.model)return window.$message.error($t("workbench.production.editImage.selectModel"));if(!v.data.quality)return window.$message.error($t("workbench.production.editImage.selectQuality"));if(!v.data.ratio)return window.$message.error($t("workbench.production.editImage.selectRatio"));l.value=!0;try{const{data:y}=await mn.post("/production/editImage/generateFlowImage",{references:v.data.references.map(C=>C.image).filter(Boolean),model:v.data.model,quality:v.data.quality,ratio:v.data.ratio,prompt:v.data.prompt,projectId:v.projectId});v.data.generatedImage=y.url}catch(y){return window.$message.error((y==null?void 0:y.message)||$t("workbench.production.editImage.generateFailed"))}finally{l.value=!1}}function O(){if(!v.data.generatedImage)return window.$message.error($t("workbench.production.editImage.generateFirst"));u("keep",v.data.generatedImage)}return An(()=>{var y,C;v.imageDefaultModle&&(v.data.model=((y=v.imageDefaultModle)==null?void 0:y.imageModel)??"",v.data.quality=((C=v.imageDefaultModle)==null?void 0:C.imageQuality)??"",v.data.ratio="16:9")}),(y,C)=>{const _=_n("i-pic"),S=jre,L=Zh,E=_n("i-upload"),T=Rne,D=_n("i-delete"),P=el,Q=uL,M=pA,B=_n("i-arrow-up"),R=Si,I=y1,F=_n("i-save");return xe(),Ge("div",eCs,[c(Ae(mm),{type:"target",position:Ae(Vi).Left},null,8,["position"]),ge("div",{class:"data",onClick:f},[ge("div",tCs,[c(_,{theme:"outline",size:"16",fill:"#000000"}),ge("span",nCs,Pe(y.$t("workbench.production.editImage.imageGeneration")),1)]),ge("div",iCs,[Ae(l)?(xe(),Ge("div",rCs,[C[7]||(C[7]=ge("div",{class:"loadingSpinner"},null,-1)),ge("span",oCs,Pe(y.$t("workbench.production.editImage.generating")),1)])):(xe(),Ge("div",sCs,[c(L,{class:Eo(["image",["nodeImage",{selected:Ae(a)}]]),src:e.data.generatedImage,fit:"contain"},{overlayContent:Oe(()=>[ge("div",aCs,[c(S,{src:e.data.generatedImage??"",position:"br"},null,8,["src"])])]),_:1},8,["src","class"])])),c(T,{options:g,onClick:k},{default:Oe(()=>[ge("div",lCs,[c(E,{theme:"outline",size:"18",fill:"#fff"}),ge("span",cCs,Pe(y.$t("workbench.production.editImage.upload")),1)])]),_:1}),c(P,{theme:"primary",content:y.$t("workbench.production.editImage.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:C[0]||(C[0]=j=>Ae(h)(v.id))},[c(D,{theme:"outline",size:"18",fill:"#fff"})])]),_:1},8,["content"])])]),uu(ge("div",{class:"parameter",onWheel:C[5]||(C[5]=Mr(()=>{},["stop"])),onMousedown:C[6]||(C[6]=Mr(()=>{},["stop"]))},[ge("div",dCs,[(xe(!0),Ge(sn,null,Bi(e.data.references,(j,W)=>(xe(),Ge("div",{key:W,class:"refThumb"},[c(L,{src:j.image,fit:"cover",class:"refImg"},null,8,["src"])]))),128))]),ge("div",uCs,[c(LZn,{modelValue:e.data.prompt,"onUpdate:modelValue":C[1]||(C[1]=j=>e.data.prompt=j),references:Ae(m),placeholder:y.$t("workbench.production.editImage.promptPlaceholder")},null,8,["modelValue","references","placeholder"])]),ge("div",hCs,[ge("div",fCs,[c(T8,{modelValue:e.data.model,"onUpdate:modelValue":C[2]||(C[2]=j=>e.data.model=j),type:"image",size:"small"},null,8,["modelValue"]),c(M,{modelValue:e.data.ratio,"onUpdate:modelValue":C[3]||(C[3]=j=>e.data.ratio=j),class:"paramSelect ml-5",size:"small",placeholder:y.$t("workbench.production.editImage.ratio")},{default:Oe(()=>[c(Q,{value:"16:9",label:"16:9"}),c(Q,{value:"9:16",label:"9:16"}),c(Q,{value:"1:1",label:"1:1"})]),_:1},8,["modelValue","placeholder"]),c(M,{modelValue:e.data.quality,"onUpdate:modelValue":C[4]||(C[4]=j=>e.data.quality=j),class:"paramSelect ml-5",size:"small",placeholder:y.$t("workbench.production.editImage.quality")},{default:Oe(()=>[c(Q,{value:"1K",label:"1K"}),c(Q,{value:"2K",label:"2K"}),c(Q,{value:"4K",label:"4K"})]),_:1},8,["modelValue","placeholder"])]),ge("div",gCs,[c(I,{content:y.$t("workbench.production.editImage.generateBtn")},{default:Oe(()=>[c(R,{theme:"primary",size:"small",class:"generateBtn",disabled:Ae(l),loading:Ae(l),onClick:w},{icon:Oe(()=>[c(B)]),_:1},8,["disabled","loading"])]),_:1},8,["content"]),c(I,{content:y.$t("workbench.production.save")},{default:Oe(()=>[c(R,{theme:"primary",size:"small",class:"keepBtn",disabled:Ae(l),loading:Ae(l),onClick:O},{icon:Oe(()=>[c(F)]),_:1},8,["disabled","loading"])]),_:1},8,["content"])])])],544),[[h1,Ae(a)]]),c(Ae(mm),{type:"source",position:Ae(Vi).Right,style:{"z-index":"999999"}},null,8,["position"])])}}}),kCs=oo(mCs,[["__scopeId","data-v-e13a8b56"]]),vCs={class:"assets"},ACs={class:"data"},pCs={class:"panelContent"},bCs={class:"toolbar"},wCs={class:"f ac"},OCs={class:"assetsList f w"},yCs={class:"previewCell"},CCs=["onClick"],_Cs=["src","alt"],SCs={class:"mediaHoverOverlay"},LCs={class:"hoverText"},xCs=Je({__name:"storyboardImageCheck",props:Fc({allowedTypes:{},multiple:{type:Boolean,default:!1},scriptId:{}},{modelValue:{default:!1},modelModifiers:{}}),emits:Fc(["confirm","cancel"],["update:modelValue"]),setup(e,{emit:t}){const n=e,r=t,o=Pf(e,"modelValue");pt(()=>o.value,_=>{_&&(v.value.page=1,s.value="",a.value=[],p())}),An(()=>{p()});const s=fe(""),a=fe([]),l=fe([]),d=fe(!1),u=fe(new Set),h=fe(new Set),g=_=>u.value.has(_)||h.value.has(_),m=fe([]),v=fe({page:1,pageSize:10,total:0,showJumper:!0}),k=[{colKey:"row-select",type:n.multiple?"multiple":"single",width:50,align:"center",fixed:"left",disabled:_=>{var S;return g(((S=_.row)==null?void 0:S.id)??_.id)}},{colKey:"src",title:$t("components.storyboardImageCheck.src"),width:100,align:"center",cell:"preview"},{colKey:"prompt",title:$t("workbench.project.dialog.prompt.title"),width:100,align:"left",ellipsis:!0},{colKey:"duration",title:$t("components.storyboardImageCheck.duration"),minWidth:80,align:"left",ellipsis:!0},{colKey:"createTime",title:$t("components.storyboardImageCheck.createTime"),width:200,align:"center",cell:"createTime"}];function A(){v.value.page=1,p()}async function p(){try{d.value=!0;const{data:_}=await mn.post("/production/storyboard/getStoryboardData",{scriptId:n.scriptId,name:s.value||void 0,page:v.value.page,limit:v.value.pageSize});return m.value=_.data||[],v.value.total=_.total||0,m.value}catch(_){console.error("加载资产数据失败:",_),m.value=[],v.value.total=0}finally{d.value=!1}}function b(_){const S=_.filter(L=>!g(L));n.multiple?a.value=S:a.value=S.length>0?[S[S.length-1]]:[]}function w(_){_.length>3&&(_=_.slice(-3)),l.value=_}function O(_){v.value.page=_.current,v.value.pageSize=_.pageSize,p()}function y(){const _=m.value.filter(S=>a.value.includes(S.id));r("confirm",_),o.value=!1}function C(){r("cancel")}return(_,S)=>{const L=Wu,E=dL,T=Si,D=hL,P=jne,Q=gc;return xe(),Ut(Q,{visible:o.value,"onUpdate:visible":S[1]||(S[1]=M=>o.value=M),header:_.$t("components.storyboardImageCheck.dialogTitle"),width:"80vw",footer:!0,placement:"center",zIndex:999999999999,onClose:C,onConfirm:y,onCancel:C},{default:Oe(()=>[ge("div",vCs,[ge("div",ACs,[ge("div",pCs,[ge("div",bCs,[ge("div",wCs,[c(L,{modelValue:Ae(s),"onUpdate:modelValue":S[0]||(S[0]=M=>Fn(s)?s.value=M:null),placeholder:_.$t("workbench.assets.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(T,{style:{"margin-left":"5px"},onClick:A},{icon:Oe(()=>[c(E,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(_.$t("workbench.assets.search")),1)]),_:1})])]),ge("div",OCs,[c(P,{columns:k,data:Ae(m),"selected-row-keys":Ae(a),"expanded-row-keys":Ae(l),"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(v),loading:Ae(d),"lazy-load":"","table-layout":"fixed",onSelectChange:b,onExpandChange:w,onPageChange:O},{preview:Oe(({row:M})=>[ge("div",yCs,[c(D,{images:[M.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:B})=>[ge("div",{class:"mediaTrigger",onClick:R=>M.src&&B()},[ge("img",{src:M.src,alt:M.name},null,8,_Cs),ge("div",SCs,[c(E,{name:"browse",size:"20px"}),ge("span",LCs,Pe(_.$t("components.storyboardImageCheck.preview")),1)])],8,CCs)]),_:2},1032,["images"])])]),startTime:Oe(({row:M})=>[ge("span",null,Pe(Ae(JB)(M.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])])])])])]),_:1},8,["visible","header"])}}}),ECs=oo(xCs,[["__scopeId","data-v-ff556e8b"]]),TCs={class:"remove c"},QCs={__name:"removeLine",props:["id","sourceX","sourceY","targetX","targetY","sourcePosition","targetPosition","sourceNode","targetNode","source","target","type","updatable","data","markerEnd","markerStart","style","selected","animated","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","events","sourceHandleId","targetHandleId","interactionWidth"],setup(e){const{removeEdges:t}=nl("editImage"),n=e,r=X(()=>$st(n));function o(s){t(s)}return(s,a)=>{const l=_n("i-close");return xe(),Ge(sn,null,[c(Ae(Hre),{id:e.id,path:Ae(r)[0],"label-x":Ae(r)[1],"label-y":Ae(r)[2],"label-bg-style":"fill: whitesmoke"},null,8,["id","path","label-x","label-y"]),c(Ae(ROs),null,{default:Oe(()=>[ge("div",{style:no({pointerEvents:"all",position:"absolute",transform:`translate(-50%, -50%) translate(${Ae(r)[1]}px,${Ae(r)[2]}px)`})},[ge("div",TCs,[c(l,{theme:"outline",size:"32",onClick:a[0]||(a[0]=d=>o(e.id))})])],4)]),_:1})],64)}}},DCs=oo(QCs,[["__scopeId","data-v-791ad826"]]);var xZn=Object.defineProperty,BCs=(e,t,n)=>t in e?xZn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RCs=(e,t)=>{for(var n in t)xZn(e,n,{get:t[n],enumerable:!0})},ICs=(e,t,n)=>BCs(e,t+"",n),EZn={};RCs(EZn,{Graph:()=>Tp,alg:()=>Gst,json:()=>QZn,version:()=>FCs});var MCs=Object.defineProperty,TZn=(e,t)=>{for(var n in t)MCs(e,n,{get:t[n],enumerable:!0})},Tp=class{constructor(t){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},t&&(this._isDirected="directed"in t?t.directed:!0,this._isMultigraph="multigraph"in t?t.multigraph:!1,this._isCompound="compound"in t?t.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return typeof t!="function"?this._defaultNodeLabelFn=()=>t:this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(t=>Object.keys(this._in[t]).length===0)}sinks(){return this.nodes().filter(t=>Object.keys(this._out[t]).length===0)}setNodes(t,n){return t.forEach(r=>{n!==void 0?this.setNode(r,n):this.setNode(r)}),this}setNode(t,n){return t in this._nodes?(arguments.length>1&&(this._nodes[t]=n),this):(this._nodes[t]=arguments.length>1?n:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return t in this._nodes}removeNode(t){if(t in this._nodes){let n=r=>this.removeEdge(this._edgeObjs[r]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],this.children(t).forEach(r=>{this.setParent(r)}),delete this._children[t]),Object.keys(this._in[t]).forEach(n),delete this._in[t],delete this._preds[t],Object.keys(this._out[t]).forEach(n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n="\0";else{n+="";for(let r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=n,this._children[n][t]=!0,this}parent(t){if(this._isCompound){let n=this._parent[t];if(n!=="\0")return n}}children(t="\0"){if(this._isCompound){let n=this._children[t];if(n)return Object.keys(n)}else{if(t==="\0")return this.nodes();if(this.hasNode(t))return[]}return[]}predecessors(t){let n=this._preds[t];if(n)return Object.keys(n)}successors(t){let n=this._sucs[t];if(n)return Object.keys(n)}neighbors(t){let n=this.predecessors(t);if(n){let r=new Set(n);for(let o of this.successors(t))r.add(o);return Array.from(r.values())}}isLeaf(t){let n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([s,a])=>{t(s)&&n.setNode(s,a)}),Object.values(this._edgeObjs).forEach(s=>{n.hasNode(s.v)&&n.hasNode(s.w)&&n.setEdge(s,this.edge(s))});let r={},o=s=>{let a=this.parent(s);return!a||n.hasNode(a)?(r[s]=a??void 0,a??void 0):a in r?r[a]:o(a)};return this._isCompound&&n.nodes().forEach(s=>n.setParent(s,o(s))),n}setDefaultEdgeLabel(t){return typeof t!="function"?this._defaultEdgeLabelFn=()=>t:this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(t,n){return t.reduce((r,o)=>(n!==void 0?this.setEdge(r,o,n):this.setEdge(r,o),o)),this}setEdge(t,n,r,o){let s,a,l,d,u=!1;typeof t=="object"&&t!==null&&"v"in t?(s=t.v,a=t.w,l=t.name,arguments.length===2&&(d=n,u=!0)):(s=t,a=n,l=o,arguments.length>2&&(d=r,u=!0)),s=""+s,a=""+a,l!==void 0&&(l=""+l);let h=dY(this._isDirected,s,a,l);if(h in this._edgeLabels)return u&&(this._edgeLabels[h]=d),this;if(l!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(s),this.setNode(a),this._edgeLabels[h]=u?d:this._defaultEdgeLabelFn(s,a,l);let g=PCs(this._isDirected,s,a,l);return s=g.v,a=g.w,Object.freeze(g),this._edgeObjs[h]=g,mkn(this._preds[a],s),mkn(this._sucs[s],a),this._in[a][h]=g,this._out[s][h]=g,this._edgeCount++,this}edge(t,n,r){let o=arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r);return this._edgeLabels[o]}edgeAsObj(t,n,r){let o=arguments.length===1?this.edge(t):this.edge(t,n,r);return typeof o!="object"?{label:o}:o}hasEdge(t,n,r){return(arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r))in this._edgeLabels}removeEdge(t,n,r){let o=arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r),s=this._edgeObjs[o];if(s){let a=s.v,l=s.w;delete this._edgeLabels[o],delete this._edgeObjs[o],kkn(this._preds[l],a),kkn(this._sucs[a],l),delete this._in[l][o],delete this._out[a][o],this._edgeCount--}return this}inEdges(t,n){return this.isDirected()?this.filterEdges(this._in[t],t,n):this.nodeEdges(t,n)}outEdges(t,n){return this.isDirected()?this.filterEdges(this._out[t],t,n):this.nodeEdges(t,n)}nodeEdges(t,n){if(t in this._nodes)return this.filterEdges({...this._in[t],...this._out[t]},t,n)}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}filterEdges(t,n,r){if(!t)return;let o=Object.values(t);return r?o.filter(s=>s.v===n&&s.w===r||s.v===r&&s.w===n):o}};function mkn(e,t){e[t]?e[t]++:e[t]=1}function kkn(e,t){e[t]!==void 0&&!--e[t]&&delete e[t]}function dY(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let a=o;o=s,s=a}return o+""+s+""+(r===void 0?"\0":r)}function PCs(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let l=o;o=s,s=l}let a={v:o,w:s};return r&&(a.name=r),a}function mRe(e,t){return dY(e,t.v,t.w,t.name)}var FCs="4.0.1",QZn={};TZn(QZn,{read:()=>WCs,write:()=>NCs});function NCs(e){let t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:UCs(e),edges:jCs(e)},n=e.graph();return n!==void 0&&(t.value=structuredClone(n)),t}function UCs(e){return e.nodes().map(t=>{let n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function jCs(e){return e.edges().map(t=>{let n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function WCs(e){let t=new Tp(e.options);return e.value!==void 0&&t.setGraph(e.value),e.nodes.forEach(n=>{t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(n=>{t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var Gst={};TZn(Gst,{CycleException:()=>$2e,bellmanFord:()=>DZn,components:()=>HCs,dijkstra:()=>H2e,dijkstraAll:()=>GCs,findCycles:()=>YCs,floydWarshall:()=>qCs,isAcyclic:()=>JCs,postorder:()=>t_s,preorder:()=>n_s,prim:()=>i_s,shortestPaths:()=>r_s,tarjan:()=>RZn,topsort:()=>IZn});var VCs=()=>1;function DZn(e,t,n,r){return zCs(e,String(t),n||VCs,r||function(o){return e.outEdges(o)})}function zCs(e,t,n,r){let o={},s,a=0,l=e.nodes(),d=function(g){let m=n(g);o[g.v].distance+mt.key)}has(t){return t in this._keyIndices}priority(t){let n=this._keyIndices[t];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(t,n){let r=this._keyIndices,o=String(t);if(!(o in r)){let s=this._arr,a=s.length;return r[o]=a,s.push({key:o,priority:n}),this._decrease(a),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key}decrease(t,n){let r=this._keyIndices[t];if(r===void 0)throw new Error(`Key not found: ${t}`);let o=this._arr[r].priority;if(n>o)throw new Error(`New priority is greater than current priority. Key: ${t} Old: ${o} New: ${n}`);this._arr[r].priority=n,this._decrease(r)}_heapify(t){let n=this._arr,r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function H2e(e,t,n,r){let o=function(s){return e.outEdges(s)};return XCs(e,String(t),n||$Cs,r||o)}function XCs(e,t,n,r){let o={},s=new BZn,a,l,d=function(u){let h=u.v!==a?u.v:u.w,g=o[h],m=n(u),v=l.distance+m;if(m<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+u+" Weight: "+m);v0&&(a=s.removeMin(),l=o[a],l.distance!==Number.POSITIVE_INFINITY);)r(a).forEach(d);return o}function GCs(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=H2e(e,o,t,n),r},{})}function RZn(e){let t=0,n=[],r={},o=[];function s(a){let l=r[a]={onStack:!0,lowlink:t,index:t++};if(n.push(a),e.successors(a).forEach(function(d){d in r?r[d].onStack&&(l.lowlink=Math.min(l.lowlink,r[d].index)):(s(d),l.lowlink=Math.min(l.lowlink,r[d].lowlink))}),l.lowlink===l.index){let d=[],u;do u=n.pop(),r[u].onStack=!1,d.push(u);while(a!==u);o.push(d)}}return e.nodes().forEach(function(a){a in r||s(a)}),o}function YCs(e){return RZn(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var ZCs=()=>1;function qCs(e,t,n){return KCs(e,t||ZCs,n||function(r){return e.outEdges(r)})}function KCs(e,t,n){let r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0,predecessor:""},o.forEach(function(a){s!==a&&(r[s][a]={distance:Number.POSITIVE_INFINITY,predecessor:""})}),n(s).forEach(function(a){let l=a.v===s?a.w:a.v,d=t(a);r[s][l]={distance:d,predecessor:s}})}),o.forEach(function(s){let a=r[s];o.forEach(function(l){let d=r[l];o.forEach(function(u){let h=d[s],g=a[u],m=d[u],v=h.distance+g.distance;v{var d;return(d=e.isDirected()?e.successors(l):e.neighbors(l))!=null?d:[]},a={};return t.forEach(function(l){if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o=MZn(e,l,n==="post",a,s,r,o)}),o}function MZn(e,t,n,r,o,s,a){return t in r||(r[t]=!0,n||(a=s(a,t)),o(t).forEach(function(l){a=MZn(e,l,n,r,o,s,a)}),n&&(a=s(a,t))),a}function PZn(e,t,n){return e_s(e,t,n,function(r,o){return r.push(o),r},[])}function t_s(e,t){return PZn(e,t,"post")}function n_s(e,t){return PZn(e,t,"pre")}function i_s(e,t){let n=new Tp,r={},o=new BZn,s;function a(d){let u=d.v===s?d.w:d.v,h=o.priority(u);if(h!==void 0){let g=t(d);g0;){if(s=o.removeMin(),s in r)n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(a)}return n}function r_s(e,t,n,r){return o_s(e,t,n,r??(o=>{let s=e.outEdges(o);return s??[]}))}function o_s(e,t,n,r){if(n===void 0)return H2e(e,t,n,r);let o=!1,s=e.nodes();for(let a=0;at.setNode(n,e.node(n))),e.edges().forEach(n=>{let r=t.edge(n.v,n.w)||{weight:0,minlen:1},o=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),t}function FZn(e){let t=new Tp({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(n=>{e.children(n).length||t.setNode(n,e.node(n))}),e.edges().forEach(n=>{t.setEdge(n,e.edge(n))}),t}function vkn(e,t){let n=e.x,r=e.y,o=t.x-n,s=t.y-r,a=e.width/2,l=e.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");let d,u;return Math.abs(s)*a>Math.abs(o)*l?(s<0&&(l=-l),d=l*o/s,u=l):(o<0&&(a=-a),d=a,u=a*s/o),{x:n+d,y:r+u}}function $re(e){let t=Mte(UZn(e)+1).map(()=>[]);return e.nodes().forEach(n=>{let r=e.node(n),o=r.rank;o!==void 0&&(t[o]||(t[o]=[]),t[o][r.order]=n)}),t}function a_s(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),n=JO(Math.min,t);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,"rank")&&(o.rank-=n)})}function l_s(e){let t=e.nodes().map(a=>e.node(a).rank).filter(a=>a!==void 0),n=JO(Math.min,t),r=[];e.nodes().forEach(a=>{let l=e.node(a).rank-n;r[l]||(r[l]=[]),r[l].push(a)});let o=0,s=e.graph().nodeRankFactor;Array.from(r).forEach((a,l)=>{a===void 0&&l%s!==0?--o:a!==void 0&&o&&a.forEach(d=>e.node(d).rank+=o)})}function Akn(e,t,n,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=r),IH(e,"border",o,t)}function c_s(e,t=NZn){let n=[];for(let r=0;rNZn){let n=c_s(t);return e(...n.map(r=>e(...r)))}else return e(...t)}function UZn(e){let t=e.nodes().map(n=>{let r=e.node(n).rank;return r===void 0?Number.MIN_VALUE:r});return JO(Math.max,t)}function d_s(e,t){let n={lhs:[],rhs:[]};return e.forEach(r=>{t(r)?n.lhs.push(r):n.rhs.push(r)}),n}function jZn(e,t){let n=Date.now();try{return t()}finally{console.log(e+" time: "+(Date.now()-n)+"ms")}}function WZn(e,t){return t()}var u_s=0;function Yst(e){let t=++u_s;return e+(""+t)}function Mte(e,t,n=1){t==null&&(t=e,e=0);let r=s=>str[t]:n=t,Object.entries(e).reduce((r,[o,s])=>(r[o]=n(s,o),r),{})}function h_s(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}var qOe="\0",f_s="3.0.0",g_s=class{constructor(){ICs(this,"_sentinel");let e={};e._next=e._prev=e,this._sentinel=e}dequeue(){let e=this._sentinel,t=e._prev;if(t!==e)return pkn(t),t}enqueue(e){let t=this._sentinel;e._prev&&e._next&&pkn(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){let e=[],t=this._sentinel,n=t._prev;for(;n!==t;)e.push(JSON.stringify(n,m_s)),n=n._prev;return"["+e.join(", ")+"]"}};function pkn(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function m_s(e,t){if(e!=="_next"&&e!=="_prev")return t}var k_s=g_s,v_s=()=>1;function A_s(e,t){if(e.nodeCount()<=1)return[];let n=b_s(e,t||v_s);return p_s(n.graph,n.buckets,n.zeroIdx).flatMap(r=>e.outEdges(r.v,r.w)||[])}function p_s(e,t,n){var r;let o=[],s=t[t.length-1],a=t[0],l;for(;e.nodeCount();){for(;l=a.dequeue();)kRe(e,t,n,l);for(;l=s.dequeue();)kRe(e,t,n,l);if(e.nodeCount()){for(let d=t.length-2;d>0;--d)if(l=(r=t[d])==null?void 0:r.dequeue(),l){o=o.concat(kRe(e,t,n,l,!0)||[]);break}}}return o}function kRe(e,t,n,r,o){let s=[],a=o?s:void 0;return(e.inEdges(r.v)||[]).forEach(l=>{let d=e.edge(l),u=e.node(l.v);o&&s.push({v:l.v,w:l.w}),u.out-=d,VGe(t,n,u)}),(e.outEdges(r.v)||[]).forEach(l=>{let d=e.edge(l),u=l.w,h=e.node(u);h.in-=d,VGe(t,n,h)}),e.removeNode(r.v),a}function b_s(e,t){let n=new Tp,r=0,o=0;e.nodes().forEach(l=>{n.setNode(l,{v:l,in:0,out:0})}),e.edges().forEach(l=>{let d=n.edge(l.v,l.w)||0,u=t(l),h=d+u;n.setEdge(l.v,l.w,h);let g=n.node(l.v),m=n.node(l.w);o=Math.max(o,g.out+=u),r=Math.max(r,m.in+=u)});let s=w_s(o+r+3).map(()=>new k_s),a=r+1;return n.nodes().forEach(l=>{VGe(s,a,n.node(l))}),{graph:n,buckets:s,zeroIdx:a}}function VGe(e,t,n){var r,o,s;n.out?n.in?(s=e[n.out-n.in+t])==null||s.enqueue(n):(o=e[e.length-1])==null||o.enqueue(n):(r=e[0])==null||r.enqueue(n)}function w_s(e){let t=[];for(let n=0;n{let r=e.edge(n);e.removeEdge(n),r.forwardName=n.name,r.reversed=!0,e.setEdge(n.w,n.v,r,Yst("rev"))});function t(n){return r=>n.edge(r).weight}}function y_s(e){let t=[],n={},r={};function o(s){Object.hasOwn(r,s)||(r[s]=!0,n[s]=!0,e.outEdges(s).forEach(a=>{Object.hasOwn(n,a.w)?t.push(a):o(a.w)}),delete n[s])}return e.nodes().forEach(o),t}function C_s(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.reversed){e.removeEdge(t);let r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function __s(e){e.graph().dummyChains=[],e.edges().forEach(t=>S_s(e,t))}function S_s(e,t){let n=t.v,r=e.node(n).rank,o=t.w,s=e.node(o).rank,a=t.name,l=e.edge(t),d=l.labelRank;if(s===r+1)return;e.removeEdge(t);let u,h,g;for(g=0,++r;r{let n=e.node(t),r=n.edgeLabel,o;for(e.setEdge(n.edgeObj,r);n.dummy;)o=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),n.dummy==="edge-label"&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=o,n=e.node(t)})}function Zst(e){let t={};function n(r){let o=e.node(r);if(Object.hasOwn(t,r))return o.rank;t[r]=!0;let s=e.outEdges(r),a=s?s.map(d=>d==null?Number.POSITIVE_INFINITY:n(d.w)-e.edge(d).minlen):[],l=JO(Math.min,a);return l===Number.POSITIVE_INFINITY&&(l=0),o.rank=l}e.sources().forEach(n)}function cz(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var VZn=x_s;function x_s(e){let t=new Tp({directed:!1}),n=e.nodes();if(n.length===0)throw new Error("Graph must have at least one node");let r=n[0],o=e.nodeCount();t.setNode(r,{});let s,a;for(;E_s(t,e){let a=s.v,l=r===a?s.w:a;!e.hasNode(l)&&!cz(t,s)&&(e.setNode(l,{}),e.setEdge(r,l,{}),n(l))})}return e.nodes().forEach(n),e.nodeCount()}function T_s(e,t){return t.edges().reduce((n,r)=>{let o=Number.POSITIVE_INFINITY;return e.hasNode(r.v)!==e.hasNode(r.w)&&(o=cz(t,r)),ot.node(r).rank+=n)}var{preorder:D_s,postorder:B_s}=Gst,R_s=oM;oM.initLowLimValues=Kst;oM.initCutValues=qst;oM.calcCutValue=zZn;oM.leaveEdge=$Zn;oM.enterEdge=XZn;oM.exchangeEdges=GZn;function oM(e){e=s_s(e),Zst(e);let t=VZn(e);Kst(t),qst(t,e);let n,r;for(;n=$Zn(t);)r=XZn(t,e,n),GZn(t,e,n,r)}function qst(e,t){let n=B_s(e,e.nodes());n=n.slice(0,n.length-1),n.forEach(r=>I_s(e,t,r))}function I_s(e,t,n){let r=e.node(n).parent,o=e.edge(n,r);o.cutvalue=zZn(e,t,n)}function zZn(e,t,n){let r=e.node(n).parent,o=!0,s=t.edge(n,r),a=0;s||(o=!1,s=t.edge(r,n)),a=s.weight;let l=t.nodeEdges(n);return l&&l.forEach(d=>{let u=d.v===n,h=u?d.w:d.v;if(h!==r){let g=u===o,m=t.edge(d).weight;if(a+=g?m:-m,P_s(e,n,h)){let v=e.edge(n,h).cutvalue;a+=g?-v:v}}}),a}function Kst(e,t){arguments.length<2&&(t=e.nodes()[0]),HZn(e,{},1,t)}function HZn(e,t,n,r,o){let s=n,a=e.node(r);t[r]=!0;let l=e.neighbors(r);return l&&l.forEach(d=>{Object.hasOwn(t,d)||(n=HZn(e,t,n,d,r))}),a.low=s,a.lim=n++,o?a.parent=o:delete a.parent,n}function $Zn(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function XZn(e,t,n){let r=n.v,o=n.w;t.hasEdge(r,o)||(r=n.w,o=n.v);let s=e.node(r),a=e.node(o),l=s,d=!1;return s.lim>a.lim&&(l=a,d=!0),t.edges().filter(u=>d===bkn(e,e.node(u.v),l)&&d!==bkn(e,e.node(u.w),l)).reduce((u,h)=>cz(t,h)!e.node(o).parent);if(!n)return;let r=D_s(e,[n]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=t.edge(o,s),l=!1;a||(a=t.edge(s,o),l=!0),t.node(o).rank=t.node(s).rank+(l?a.minlen:-a.minlen)})}function P_s(e,t,n){return e.hasEdge(t,n)}function bkn(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}var F_s=N_s;function N_s(e){let t=e.graph().ranker;if(typeof t=="function")return t(e);switch(t){case"network-simplex":wkn(e);break;case"tight-tree":j_s(e);break;case"longest-path":U_s(e);break;case"none":break;default:wkn(e)}}var U_s=Zst;function j_s(e){Zst(e),VZn(e)}function wkn(e){R_s(e)}var W_s=V_s;function V_s(e){let t=H_s(e);e.graph().dummyChains.forEach(n=>{let r=e.node(n),o=r.edgeObj,s=z_s(e,t,o.v,o.w),a=s.path,l=s.lca,d=0,u=a[d],h=!0;for(;n!==o.w;){if(r=e.node(n),h){for(;(u=a[d])!==l&&e.node(u).maxRanka||l>t[d].lim));let u=d,h=r;for(;(h=e.parent(h))!==u;)s.push(h);return{path:o.concat(s.reverse()),lca:u}}function H_s(e){let t={},n=0;function r(o){let s=n;e.children(o).forEach(r),t[o]={low:s,lim:n++}}return e.children(qOe).forEach(r),t}function $_s(e){let t=IH(e,"root",{},"_root"),n=X_s(e),r=Object.values(n),o=JO(Math.max,r)-1,s=2*o+1;e.graph().nestingRoot=t,e.edges().forEach(l=>e.edge(l).minlen*=s);let a=G_s(e)+1;e.children(qOe).forEach(l=>YZn(e,t,s,a,o,n,l)),e.graph().nodeRankFactor=s}function YZn(e,t,n,r,o,s,a){var l;let d=e.children(a);if(!d.length){a!==t&&e.setEdge(t,a,{weight:0,minlen:n});return}let u=Akn(e,"_bt"),h=Akn(e,"_bb"),g=e.node(a);e.setParent(u,a),g.borderTop=u,e.setParent(h,a),g.borderBottom=h,d.forEach(m=>{var v;YZn(e,t,n,r,o,s,m);let f=e.node(m),k=f.borderTop?f.borderTop:m,A=f.borderBottom?f.borderBottom:m,p=f.borderTop?r:2*r,b=k!==A?1:o-((v=s[a])!=null?v:0)+1;e.setEdge(u,k,{weight:p,minlen:b,nestingEdge:!0}),e.setEdge(A,h,{weight:p,minlen:b,nestingEdge:!0})}),e.parent(a)||e.setEdge(t,u,{weight:0,minlen:o+((l=s[a])!=null?l:0)})}function X_s(e){let t={};function n(r,o){let s=e.children(r);s&&s.length&&s.forEach(a=>n(a,o+1)),t[r]=o}return e.children(qOe).forEach(r=>n(r,1)),t}function G_s(e){return e.edges().reduce((t,n)=>t+e.edge(n).weight,0)}function Y_s(e){let t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(n=>{e.edge(n).nestingEdge&&e.removeEdge(n)})}var Z_s=q_s;function q_s(e){function t(n){let r=e.children(n),o=e.node(n);if(r.length&&r.forEach(t),Object.hasOwn(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(let s=o.minRank,a=o.maxRank+1;sykn(e.node(t))),e.edges().forEach(t=>ykn(e.edge(t)))}function ykn(e){let t=e.width;e.width=e.height,e.height=t}function eSs(e){e.nodes().forEach(t=>vRe(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(vRe),Object.hasOwn(r,"y")&&vRe(r)})}function vRe(e){e.y=-e.y}function tSs(e){e.nodes().forEach(t=>ARe(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(ARe),Object.hasOwn(r,"x")&&ARe(r)})}function ARe(e){let t=e.x;e.x=e.y,e.y=t}function nSs(e){let t={},n=e.nodes().filter(l=>!e.children(l).length),r=n.map(l=>e.node(l).rank),o=JO(Math.max,r),s=Mte(o+1).map(()=>[]);function a(l){if(t[l])return;t[l]=!0;let d=e.node(l);s[d.rank].push(l);let u=e.successors(l);u&&u.forEach(a)}return n.sort((l,d)=>e.node(l).rank-e.node(d).rank).forEach(a),s}function iSs(e,t){let n=0;for(let r=1;rh)),o=t.flatMap(u=>{let h=e.outEdges(u);return h?h.map(g=>({pos:r[g.w],weight:e.edge(g).weight})).sort((g,m)=>g.pos-m.pos):[]}),s=1;for(;s{let h=u.pos+s;l[h]+=u.weight;let g=0;for(;h>0;)h%2&&(g+=l[h+1]),h=h-1>>1,l[h]+=u.weight;d+=u.weight*g}),d}function oSs(e,t=[]){return t.map(n=>{let r=e.inEdges(n);if(!r||!r.length)return{v:n};{let o=r.reduce((s,a)=>{let l=e.edge(a),d=e.node(a.v);return{sum:s.sum+l.weight*d.order,weight:s.weight+l.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}})}function sSs(e,t){let n={};e.forEach((o,s)=>{let a={indegree:0,in:[],out:[],vs:[o.v],i:s};o.barycenter!==void 0&&(a.barycenter=o.barycenter,a.weight=o.weight),n[o.v]=a}),t.edges().forEach(o=>{let s=n[o.v],a=n[o.w];s!==void 0&&a!==void 0&&(a.indegree++,s.out.push(a))});let r=Object.values(n).filter(o=>!o.indegree);return aSs(r)}function aSs(e){let t=[];function n(o){return s=>{s.merged||(s.barycenter===void 0||o.barycenter===void 0||s.barycenter>=o.barycenter)&&lSs(o,s)}}function r(o){return s=>{s.in.push(o),--s.indegree===0&&e.push(s)}}for(;e.length;){let o=e.pop();t.push(o),o.in.reverse().forEach(n(o)),o.out.forEach(r(o))}return t.filter(o=>!o.merged).map(o=>X2e(o,["vs","i","barycenter","weight"]))}function lSs(e,t){let n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function cSs(e,t){let n=d_s(e,h=>Object.hasOwn(h,"barycenter")),r=n.lhs,o=n.rhs.sort((h,g)=>g.i-h.i),s=[],a=0,l=0,d=0;r.sort(dSs(!!t)),d=Ckn(s,o,d),r.forEach(h=>{d+=h.vs.length,s.push(h.vs),a+=h.barycenter*h.weight,l+=h.weight,d=Ckn(s,o,d)});let u={vs:s.flat(1)};return l&&(u.barycenter=a/l,u.weight=l),u}function Ckn(e,t,n){let r;for(;t.length&&(r=t[t.length-1]).i<=n;)t.pop(),e.push(r.vs),n++;return n}function dSs(e){return(t,n)=>t.barycentern.barycenter?1:e?n.i-t.i:t.i-n.i}function qZn(e,t,n,r){let o=e.children(t),s=e.node(t),a=s?s.borderLeft:void 0,l=s?s.borderRight:void 0,d={};a&&(o=o.filter(m=>m!==a&&m!==l));let u=oSs(e,o);u.forEach(m=>{if(e.children(m.v).length){let v=qZn(e,m.v,n,r);d[m.v]=v,Object.hasOwn(v,"barycenter")&&hSs(m,v)}});let h=sSs(u,n);uSs(h,d);let g=cSs(h,r);if(a&&l){g.vs=[a,g.vs,l].flat(1);let m=e.predecessors(a);if(m&&m.length){let v=e.node(m[0]),f=e.predecessors(l),k=e.node(f[0]);Object.hasOwn(g,"barycenter")||(g.barycenter=0,g.weight=0),g.barycenter=(g.barycenter*g.weight+v.order+k.order)/(g.weight+2),g.weight+=2}}return g}function uSs(e,t){e.forEach(n=>{n.vs=n.vs.flatMap(r=>t[r]?t[r].vs:r)})}function hSs(e,t){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight):(e.barycenter=t.barycenter,e.weight=t.weight)}function fSs(e,t,n,r){r||(r=e.nodes());let o=gSs(e),s=new Tp({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(a=>e.node(a));return r.forEach(a=>{let l=e.node(a),d=e.parent(a);if(l.rank===t||l.minRank<=t&&t<=l.maxRank){s.setNode(a),s.setParent(a,d||o);let u=e[n](a);u&&u.forEach(h=>{let g=h.v===a?h.w:h.v,m=s.edge(g,a),v=m!==void 0?m.weight:0;s.setEdge(g,a,{weight:e.edge(h).weight+v})}),Object.hasOwn(l,"minRank")&&s.setNode(a,{borderLeft:l.borderLeft[t],borderRight:l.borderRight[t]})}}),s}function gSs(e){let t;for(;e.hasNode(t=Yst("_root")););return t}function mSs(e,t,n){let r={},o;n.forEach(s=>{let a=e.parent(s),l,d;for(;a;){if(l=e.parent(a),l?(d=r[l],r[l]=a):(d=o,o=a),d&&d!==a){t.setEdge(d,a);return}a=l}})}function KZn(e,t={}){if(typeof t.customOrder=="function"){t.customOrder(e,KZn);return}let n=UZn(e),r=_kn(e,Mte(1,n+1),"inEdges"),o=_kn(e,Mte(n-1,-1,-1),"outEdges"),s=nSs(e);if(Skn(e,s),t.disableOptimalOrderHeuristic)return;let a=Number.POSITIVE_INFINITY,l,d=t.constraints||[];for(let u=0,h=0;h<4;++u,++h){kSs(u%2?r:o,u%4>=2,d),s=$re(e);let g=iSs(e,s);g{r.has(s)||r.set(s,[]),r.get(s).push(a)};for(let s of e.nodes()){let a=e.node(s);if(typeof a.rank=="number"&&o(a.rank,s),typeof a.minRank=="number"&&typeof a.maxRank=="number")for(let l=a.minRank;l<=a.maxRank;l++)l!==a.rank&&o(l,s)}return t.map(function(s){return fSs(e,s,n,r.get(s)||[])})}function kSs(e,t,n){let r=new Tp;e.forEach(function(o){n.forEach(l=>r.setEdge(l.left,l.right));let s=o.graph().root,a=qZn(o,s,r,t);a.vs.forEach((l,d)=>o.node(l).order=d),mSs(o,r,a.vs)})}function Skn(e,t){Object.values(t).forEach(n=>n.forEach((r,o)=>e.node(r).order=o))}function vSs(e,t){let n={};function r(o,s){let a=0,l=0,d=o.length,u=s[s.length-1];return s.forEach((h,g)=>{let m=pSs(e,h),v=m?e.node(m).order:d;(m||h===u)&&(s.slice(l,g+1).forEach(f=>{let k=e.predecessors(f);k&&k.forEach(A=>{let p=e.node(A),b=p.order;(b{let g=s[h];if(g!==void 0&&e.node(g).dummy){let m=e.predecessors(g);m&&m.forEach(v=>{if(v===void 0)return;let f=e.node(v);f.dummy&&(f.orderu)&&JZn(n,v,g)})}})}function o(s,a){let l=-1,d=-1,u=0;return a.forEach((h,g)=>{if(e.node(h).dummy==="border"){let m=e.predecessors(h);if(m&&m.length){let v=m[0];if(v===void 0)return;d=e.node(v).order,r(a,u,g,l,d),u=g,l=d}}r(a,u,a.length,d,s.length)}),a}return t.length&&t.reduce(o),n}function pSs(e,t){if(e.node(t).dummy){let n=e.predecessors(t);if(n)return n.find(r=>e.node(r).dummy)}}function JZn(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];r||(e[t]=r={}),r[n]=!0}function bSs(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];return r!==void 0&&Object.hasOwn(r,n)}function wSs(e,t,n,r){let o={},s={},a={};return t.forEach(l=>{l.forEach((d,u)=>{o[d]=d,s[d]=d,a[d]=u})}),t.forEach(l=>{let d=-1;l.forEach(u=>{let h=r(u);if(h&&h.length){let g=h.sort((v,f)=>{let k=a[v],A=a[f];return(k!==void 0?k:0)-(A!==void 0?A:0)}),m=(g.length-1)/2;for(let v=Math.floor(m),f=Math.ceil(m);v<=f;++v){let k=g[v];if(k===void 0)continue;let A=a[k];if(A!==void 0&&s[u]===u&&d{var p;let b=(p=s[A.v])!=null?p:0,w=a.edge(A);return Math.max(k,b+(w!==void 0?w:0))},0):s[v]=0}function h(v){let f=a.outEdges(v),k=Number.POSITIVE_INFINITY;f&&(k=f.reduce((p,b)=>{let w=s[b.w],O=a.edge(b);return Math.min(p,(w!==void 0?w:0)-(O!==void 0?O:0))},Number.POSITIVE_INFINITY));let A=e.node(v);k!==Number.POSITIVE_INFINITY&&A.borderType!==l&&(s[v]=Math.max(s[v]!==void 0?s[v]:0,k))}function g(v){return a.predecessors(v)||[]}function m(v){return a.successors(v)||[]}return d(u,g),d(h,m),Object.keys(r).forEach(v=>{var f;let k=n[v];k!==void 0&&(s[v]=(f=s[k])!=null?f:0)}),s}function ySs(e,t,n,r){let o=new Tp,s=e.graph(),a=xSs(s.nodesep,s.edgesep,r);return t.forEach(l=>{let d;l.forEach(u=>{let h=n[u];if(h!==void 0){if(o.setNode(h),d!==void 0){let g=n[d];if(g!==void 0){let m=o.edge(g,h);o.setEdge(g,h,Math.max(a(e,u,d),m||0))}}d=u}})}),o}function CSs(e,t){return Object.values(t).reduce((n,r)=>{let o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([l,d])=>{let u=ESs(e,l)/2;o=Math.max(d+u,o),s=Math.min(d-u,s)});let a=o-s;return a{["l","r"].forEach(a=>{let l=s+a,d=e[l];if(!d||d===t)return;let u=Object.values(d),h=r-JO(Math.min,u);a!=="l"&&(h=o-JO(Math.max,u)),h&&(e[l]=ZOe(d,g=>g+h))})})}function SSs(e,t=void 0){let n=e.ul;return n?ZOe(n,(r,o)=>{var s,a;if(t){let d=t.toLowerCase(),u=e[d];if(u&&u[o]!==void 0)return u[o]}let l=Object.values(e).map(d=>{let u=d[o];return u!==void 0?u:0}).sort((d,u)=>d-u);return(((s=l[1])!=null?s:0)+((a=l[2])!=null?a:0))/2}):{}}function LSs(e){let t=$re(e),n=Object.assign(vSs(e,t),ASs(e,t)),r={},o;["u","d"].forEach(a=>{o=a==="u"?t:Object.values(t).reverse(),["l","r"].forEach(l=>{l==="r"&&(o=o.map(h=>Object.values(h).reverse()));let d=wSs(e,o,n,h=>(a==="u"?e.predecessors(h):e.successors(h))||[]),u=OSs(e,o,d.root,d.align,l==="r");l==="r"&&(u=ZOe(u,h=>-h)),r[a+l]=u})});let s=CSs(e,r);return _Ss(r,s),SSs(r,e.graph().align)}function xSs(e,t,n){return(r,o,s)=>{let a=r.node(o),l=r.node(s),d=0,u;if(d+=a.width/2,Object.hasOwn(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2;break}if(u&&(d+=n?u:-u),u=void 0,d+=(a.dummy?t:e)/2,d+=(l.dummy?t:e)/2,d+=l.width/2,Object.hasOwn(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":u=l.width/2;break;case"r":u=-l.width/2;break}return u&&(d+=n?u:-u),d}}function ESs(e,t){return e.node(t).width}function TSs(e){e=FZn(e),QSs(e),Object.entries(LSs(e)).forEach(([t,n])=>e.node(t).x=n)}function QSs(e){let t=$re(e),n=e.graph(),r=n.ranksep,o=n.rankalign,s=0;t.forEach(a=>{let l=a.reduce((d,u)=>{var h;let g=(h=e.node(u).height)!=null?h:0;return d>g?d:g},0);a.forEach(d=>{let u=e.node(d);o==="top"?u.y=s+u.height/2:o==="bottom"?u.y=s+l-u.height/2:u.y=s+l/2}),s+=l+r})}function DSs(e,t={}){let n=t.debugTiming?jZn:WZn;return n("layout",()=>{let r=n(" buildLayoutGraph",()=>WSs(e));return n(" runLayout",()=>BSs(r,n,t)),n(" updateInputGraph",()=>RSs(e,r)),r})}function BSs(e,t,n){t(" makeSpaceForEdgeLabels",()=>VSs(e)),t(" removeSelfEdges",()=>KSs(e)),t(" acyclic",()=>O_s(e)),t(" nestingGraph.run",()=>$_s(e)),t(" rank",()=>F_s(FZn(e))),t(" injectEdgeLabelProxies",()=>zSs(e)),t(" removeEmptyRanks",()=>l_s(e)),t(" nestingGraph.cleanup",()=>Y_s(e)),t(" normalizeRanks",()=>a_s(e)),t(" assignRankMinMax",()=>HSs(e)),t(" removeEdgeLabelProxies",()=>$Ss(e)),t(" normalize.run",()=>__s(e)),t(" parentDummyChains",()=>W_s(e)),t(" addBorderSegments",()=>Z_s(e)),t(" order",()=>KZn(e,n)),t(" insertSelfEdges",()=>JSs(e)),t(" adjustCoordinateSystem",()=>K_s(e)),t(" position",()=>TSs(e)),t(" positionSelfEdges",()=>e8s(e)),t(" removeBorderNodes",()=>qSs(e)),t(" normalize.undo",()=>L_s(e)),t(" fixupEdgeLabelCoords",()=>YSs(e)),t(" undoCoordinateSystem",()=>J_s(e)),t(" translateGraph",()=>XSs(e)),t(" assignNodeIntersects",()=>GSs(e)),t(" reversePoints",()=>ZSs(e)),t(" acyclic.undo",()=>C_s(e))}function RSs(e,t){e.nodes().forEach(n=>{let r=e.node(n),o=t.node(n);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,t.children(n).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(n=>{let r=e.edge(n),o=t.edge(n);r.points=o.points,Object.hasOwn(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var ISs=["nodesep","edgesep","ranksep","marginx","marginy"],MSs={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},PSs=["acyclicer","ranker","rankdir","align","rankalign"],FSs=["width","height","rank"],Lkn={width:0,height:0},NSs=["minlen","weight","width","height","labeloffset"],USs={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},jSs=["labelpos"];function WSs(e){let t=new Tp({multigraph:!0,compound:!0}),n=bRe(e.graph());return t.setGraph(Object.assign({},MSs,pRe(n,ISs),X2e(n,PSs))),e.nodes().forEach(r=>{let o=bRe(e.node(r)),s=pRe(o,FSs);Object.keys(Lkn).forEach(l=>{s[l]===void 0&&(s[l]=Lkn[l])}),t.setNode(r,s);let a=e.parent(r);a!==void 0&&t.setParent(r,a)}),e.edges().forEach(r=>{let o=bRe(e.edge(r));t.setEdge(r,Object.assign({},USs,pRe(o,NSs),X2e(o,jSs)))}),t}function VSs(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(n=>{let r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function zSs(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.width&&n.height){let r=e.node(t.v),o={rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t};IH(e,"edge-proxy",o,"_ep")}})}function HSs(e){let t=0;e.nodes().forEach(n=>{let r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))}),e.graph().maxRank=t}function $Ss(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="edge-proxy"){let r=n;e.edge(r.e).labelRank=n.rank,e.removeNode(t)}})}function XSs(e){let t=Number.POSITIVE_INFINITY,n=0,r=Number.POSITIVE_INFINITY,o=0,s=e.graph(),a=s.marginx||0,l=s.marginy||0;function d(u){let h=u.x,g=u.y,m=u.width,v=u.height;t=Math.min(t,h-m/2),n=Math.max(n,h+m/2),r=Math.min(r,g-v/2),o=Math.max(o,g+v/2)}e.nodes().forEach(u=>d(e.node(u))),e.edges().forEach(u=>{let h=e.edge(u);Object.hasOwn(h,"x")&&d(h)}),t-=a,r-=l,e.nodes().forEach(u=>{let h=e.node(u);h.x-=t,h.y-=r}),e.edges().forEach(u=>{let h=e.edge(u);h.points.forEach(g=>{g.x-=t,g.y-=r}),Object.hasOwn(h,"x")&&(h.x-=t),Object.hasOwn(h,"y")&&(h.y-=r)}),s.width=n-t+a,s.height=o-r+l}function GSs(e){e.edges().forEach(t=>{let n=e.edge(t),r=e.node(t.v),o=e.node(t.w),s,a;n.points?(s=n.points[0],a=n.points[n.points.length-1]):(n.points=[],s=o,a=r),n.points.unshift(vkn(r,s)),n.points.push(vkn(o,a))})}function YSs(e){e.edges().forEach(t=>{let n=e.edge(t);if(Object.hasOwn(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}function ZSs(e){e.edges().forEach(t=>{let n=e.edge(t);n.reversed&&n.points.reverse()})}function qSs(e){e.nodes().forEach(t=>{if(e.children(t).length){let n=e.node(t),r=e.node(n.borderTop),o=e.node(n.borderBottom),s=e.node(n.borderLeft[n.borderLeft.length-1]),a=e.node(n.borderRight[n.borderRight.length-1]);n.width=Math.abs(a.x-s.x),n.height=Math.abs(o.y-r.y),n.x=s.x+n.width/2,n.y=r.y+n.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy==="border"&&e.removeNode(t)})}function KSs(e){e.edges().forEach(t=>{if(t.v===t.w){let n=e.node(t.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function JSs(e){$re(e).forEach(t=>{let n=0;t.forEach((r,o)=>{let s=e.node(r);s.order=o+n,(s.selfEdges||[]).forEach(a=>{IH(e,"selfedge",{width:a.label.width,height:a.label.height,rank:s.rank,order:o+ ++n,e:a.e,label:a.label},"_se")}),delete s.selfEdges})})}function e8s(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="selfedge"){let r=n,o=e.node(r.e.v),s=o.x+o.width/2,a=o.y,l=n.x-s,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:s+2*l/3,y:a-d},{x:s+5*l/6,y:a-d},{x:s+l,y:a},{x:s+5*l/6,y:a+d},{x:s+2*l/3,y:a+d}],r.label.x=n.x,r.label.y=n.y}})}function pRe(e,t){return ZOe(X2e(e,t),Number)}function bRe(e){let t={};return e&&Object.entries(e).forEach(([n,r])=>{typeof n=="string"&&(n=n.toLowerCase()),t[n]=r}),t}function t8s(e){let t=$re(e),n=new Tp({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{n.setNode(r,{label:r}),n.setParent(r,"layer"+e.node(r).rank)}),e.edges().forEach(r=>n.setEdge(r.v,r.w,{},r.name)),t.forEach((r,o)=>{let s="layer"+o;n.setNode(s,{rank:"same"}),r.reduce((a,l)=>(n.setEdge(a,l,{style:"invis"}),l))}),n}var n8s={graphlib:EZn,version:f_s,layout:DSs,debug:t8s,util:{time:jZn,notime:WZn}},wRe=n8s;/*! For license information please see dagre.esm.js.LEGAL.txt */function eqn(e){const{findNode:t,fitView:n}=nl(e?{id:e}:void 0),r=fe(new wRe.graphlib.Graph),o=fe("LR");function s(a,l,d,u=250,h){const g=new wRe.graphlib.Graph;r.value=g,g.setDefaultEdgeLabel(()=>({})),g.setGraph({rankdir:d,nodesep:u,ranksep:h??u}),o.value=d;const m=d==="LR";for(const v of a){const f=t(v.id);g.setNode(v.id,{width:(f==null?void 0:f.dimensions.width)||150,height:(f==null?void 0:f.dimensions.height)||50})}for(const v of l)g.setEdge(v.source,v.target);return wRe.layout(g),a.map(v=>{const f=g.node(v.id);return{...v,targetPosition:m?Vi.Left:Vi.Top,sourcePosition:m?Vi.Right:Vi.Bottom,position:{x:f.x,y:f.y}}})}return{graph:r,layout:s,previousDirection:o}}const jg=[];for(let e=0;e<256;++e)jg.push((e+256).toString(16).slice(1));function i8s(e,t=0){return(jg[e[t+0]]+jg[e[t+1]]+jg[e[t+2]]+jg[e[t+3]]+"-"+jg[e[t+4]]+jg[e[t+5]]+"-"+jg[e[t+6]]+jg[e[t+7]]+"-"+jg[e[t+8]]+jg[e[t+9]]+"-"+jg[e[t+10]]+jg[e[t+11]]+jg[e[t+12]]+jg[e[t+13]]+jg[e[t+14]]+jg[e[t+15]]).toLowerCase()}let ORe;const r8s=new Uint8Array(16);function o8s(){if(!ORe){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ORe=crypto.getRandomValues.bind(crypto)}return ORe(r8s)}const s8s=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),xkn={randomUUID:s8s};function a8s(e,t,n){var o;e=e||{};const r=e.random??((o=e.rng)==null?void 0:o.call(e))??o8s();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,i8s(r)}function yRe(e,t,n){return xkn.randomUUID&&!e?xkn.randomUUID():a8s(e)}const l8s={class:"closure"},c8s={class:"ac",style:{gap:"8px"}},d8s=Je({__name:"index",props:Fc({flowData:{default:()=>({resultImages:[],referanceImages:[]})},type:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["save"],["update:modelValue"]),setup(e,{emit:t}){const n=bt("episodesId"),{project:r}=xs(ph()),o=fe(!1);let s=null;Yi("openStoryboardCheck",O);const{toObject:a,fromObject:l,fitView:d}=nl("editImage"),{layout:u}=eqn("editImage"),h=e,g=t,m=Pf(e,"modelValue"),{addEdges:v,getNodes:f,getEdges:k,updateNodeData:A}=nl("editImage"),p=fe([]),b=fe([]);let w=null;function O(){return o.value=!0,new Promise(R=>{s=R})}function y(R){o.value=!1,s==null||s(R),s=null}function C(){o.value=!1,s==null||s([]),s=null}function _(){w&&clearTimeout(w),w=setTimeout(S,60)}function S(){const R=f.value,I=k.value,F=new Map(R.map(W=>[W.id,W])),j=new Map;for(const W of I){const H=j.get(W.target);H?H.push(W.source):j.set(W.target,[W.source])}for(const W of R){if(W.type!=="generated")continue;const $=(j.get(W.id)??[]).map(re=>F.get(re)).filter(re=>!!re).map(re=>re.type==="upload"?{image:re.data.image||""}:re.type==="generated"?{image:re.data.generatedImage||""}:{image:""}).filter(re=>re.image),G=W.data.references??[];G.length===$.length&&$.every((re,J)=>{var oe;return((oe=G[J])==null?void 0:oe.image)===re.image})||A(W.id,{references:$})}}const L=R=>{R.source===R.target||k.value.some(F=>F.source===R.source&&F.target===R.target||F.source===R.target&&F.target===R.source)||(v([{id:yRe(),source:R.source,target:R.target,...hkn}]),ai(_))};function E(R){const I=R.value===1?"upload":"generated";T(I)}const T=(R,I="",F="")=>{const j=yRe(),W=p.value.filter(G=>G.type===R).pop(),H=W?W.position.y+350:100,$=R==="generated"?600:100;return p.value.push({id:j,type:R,position:{x:$,y:H},data:R==="generated"?Jys(I,F):{image:I}}),j};async function D(R){try{const I={nodes:fkn(f.value),edges:gkn(k.value)};if(h.flowData.flowId)await mn.post("/production/editImage/updateImageFlow",{...I,flowId:h.flowData.flowId}),g("save",{imageUrl:R,flowId:h.flowData.flowId});else{const{data:F}=await mn.post("/production/editImage/saveImageFlow",{...I});g("save",{imageUrl:R,flowId:F==null?void 0:F.id})}m.value=!1}catch(I){window.$message.error(I.message||$t("workbench.production.editImage.saveFailed"))}}const P=fe({imageModel:"",imageQuality:""});An(async()=>{try{const{data:R}=await mn.post("/production/editImage/getImageDefaultModle",{projectId:r.value.id});if(R&&(P.value=R),console.log("%c Line:268 🥔 props.flowData.flowId","background:#33a5ff",h.flowData.flowId),!h.flowData.flowId)return Q();const{data:I}=await mn.post("/production/editImage/getImageFlow",{id:h.flowData.flowId});if(!I)return Q();b.value=I.edges,p.value=I.nodes}catch(R){window.$message.error(R.message||$t("workbench.production.editImage.fetchFailed"))}});function Q(){const R=[],I=[];h.flowData.referanceImages.forEach(F=>{R.push(T("upload",F))}),h.flowData.resultImages.forEach(F=>{I.push(T("generated",F.src,F.prompt))});for(const F of R)for(const j of I)b.value.push({id:yRe(),source:F,target:j,...hkn});ai(_)}function M(){const R=fo.confirm({header:$t("workbench.production.editImage.closeConfirmTitle"),body:$t("workbench.production.editImage.closeConfirmBody"),confirmBtn:$t("common.confirm"),cancelBtn:$t("common.cancel"),onConfirm:()=>{if(h.flowData.flowId){const I={flowId:h.flowData.flowId,nodes:fkn(f.value),edges:gkn(k.value)};mn.post("/production/editImage/updateImageFlow",{...I})}m.value=!1,R.destroy()}})}async function B(R){const I=a();I.nodes=u(I.nodes,I.edges,R),await l(I),await ai(),d({duration:300})}return(R,I)=>{const F=_n("i-close-small"),j=_n("i-plus"),W=Si,H=Rne,$=_n("i-tree-diagram"),G=el,q=gc;return xe(),Ut(q,{footer:!1,header:!1,closeBtn:!1,visible:m.value,"onUpdate:visible":I[4]||(I[4]=re=>m.value=re),attach:"body",placement:"center",mode:"full-screen",class:"fullscreenDialog"},{default:Oe(()=>[ge("div",l8s,[c(F,{theme:"outline",size:"24",fill:"#4a4a4a",onClick:M})]),c(Ae(wZn),{id:"editImage",class:"editImage",nodes:Ae(p),"onUpdate:nodes":I[1]||(I[1]=re=>Fn(p)?p.value=re:null),edges:Ae(b),"onUpdate:edges":I[2]||(I[2]=re=>Fn(b)?b.value=re:null),"min-zoom":.01,"fit-view-on-init":"",onConnect:L,onEdgesChange:_},{"node-upload":Oe(({id:re,data:J})=>[c(zys,{id:re,data:J,onUpload:_,onKeep:D},null,8,["id","data"])]),"node-generated":Oe(({id:re,data:J})=>[c(kCs,{id:re,data:J,projectId:+Ae(r).id,imageDefaultModle:Ae(P),onKeep:D},null,8,["id","data","projectId","imageDefaultModle"])]),"edge-removeLine":Oe(re=>[c(DCs,Qx(D_(re)),null,16)]),default:Oe(()=>[c(Ae(_Zn)),c(Ae(SZn)),c(Ae(OZn),{position:"top-left"},{default:Oe(()=>[ge("div",c8s,[c(H,{options:[{content:R.$t("workbench.production.editImage.upload"),value:1},{content:R.$t("workbench.production.editImage.generate"),value:2}],onClick:E},{default:Oe(()=>[c(W,{theme:"primary",shape:"circle"},{icon:Oe(()=>[c(j)]),_:1})]),_:1},8,["options"]),c(G,{theme:"primary",content:R.$t("workbench.production.autoLayoutLR")},{default:Oe(()=>[c(W,{class:"guide-layout-btn",onClick:I[0]||(I[0]=re=>B("LR")),variant:"outline",shape:"circle"},{icon:Oe(()=>[c($)]),_:1})]),_:1},8,["content"])])]),_:1})]),_:1},8,["nodes","edges"]),c(ECs,{telepor:"",modelValue:Ae(o),"onUpdate:modelValue":I[3]||(I[3]=re=>Fn(o)?o.value=re:null),scriptId:Ae(n),onConfirm:y,onCancel:C},null,8,["modelValue","scriptId"])]),_:1},8,["visible"])}}}),tqn=oo(d8s,[["__scopeId","data-v-dc3fbf5a"]]),Ekn={script:"script",scriptPlan:"scriptPlan",assets:"assets",storyboardTable:"storyboardTable",storyboard:"storyboard",workbench:"workbench"},cG={stroke:"#00000",strokeWidth:4};function u8s(e,t){const n=X(()=>{const o=e.value,s=t.value,a=Ekn;return[{id:a.script,type:"script",dragHandle:".dragHandle",position:s[a.script]||{x:0,y:0},data:{script:o.script,handleIds:{assets:`${a.script}-assets`,source:`${a.script}-source`}}},{id:a.scriptPlan,type:"scriptPlan",dragHandle:".dragHandle",position:s[a.scriptPlan]||{x:0,y:0},data:{scriptPlan:o.scriptPlan,handleIds:{target:`${a.scriptPlan}-target`,source:`${a.scriptPlan}-source`}}},{id:a.assets,type:"assets",dragHandle:".dragHandle",position:s[a.assets]||{x:0,y:0},data:{assets:o.assets,handleIds:{target:`${a.assets}-target`}}},{id:a.storyboardTable,type:"storyboardTable",dragHandle:".dragHandle",position:s[a.storyboardTable]||{x:0,y:0},data:{storyboardTable:o.storyboardTable,handleIds:{target:`${a.storyboardTable}-target`,source:`${a.storyboardTable}-source`}}},{id:a.storyboard,type:"storyboard",dragHandle:".dragHandle",position:s[a.storyboard]||{x:0,y:0},data:{storyboard:o.storyboard,handleIds:{target:`${a.storyboard}-target`,source:`${a.storyboard}-source`}}},{id:a.workbench,type:"workbench",dragHandle:".dragHandle",position:s[a.workbench]||{x:0,y:0},data:{...o.workbench,handleIds:{target:`${a.workbench}-target`,source:`${a.workbench}-source`}}}]}),r=X(()=>{const o=Ekn;return[{id:`${o.script}-${o.assets}`,source:o.script,target:o.assets,sourceHandle:`${o.script}-assets`,targetHandle:`${o.assets}-target`,animated:!1,style:cG},{id:`${o.script}-${o.scriptPlan}`,source:o.script,target:o.scriptPlan,sourceHandle:`${o.script}-source`,targetHandle:`${o.scriptPlan}-target`,animated:!1,style:cG},{id:`${o.scriptPlan}-${o.storyboardTable}`,source:o.scriptPlan,target:o.storyboardTable,sourceHandle:`${o.scriptPlan}-source`,targetHandle:`${o.storyboardTable}-target`,animated:!1,style:cG},{id:`${o.storyboardTable}-${o.storyboard}`,source:o.storyboardTable,target:o.storyboard,sourceHandle:`${o.storyboardTable}-source`,targetHandle:`${o.storyboard}-target`,animated:!1,style:cG},{id:`${o.storyboard}-${o.workbench}`,source:o.storyboard,target:o.workbench,sourceHandle:`${o.storyboard}-source`,targetHandle:`${o.workbench}-target`,animated:!1,style:cG}]});return{nodes:n,edges:r}}const h8s={class:"titleBar dragHandle"},f8s={class:"title"},g8s={class:"content"},m8s={class:"cardGrid"},k8s={key:0,class:"assetImageWrap"},v8s={class:"imageToolsWrap show"},A8s={key:1,class:"assetImageWrap assetImagePlaceholder"},p8s={key:1,style:{color:"red"}},b8s={class:"cardInfo"},w8s={class:"cardName"},O8s={class:"nameText"},y8s={class:"cardDesc"},C8s={class:"divider"},_8s={class:"deriveAssets"},S8s={key:0,class:"assetImageWrap"},L8s={class:"imageToolsWrap show"},x8s={key:1,class:"assetImageWrap assetImagePlaceholder"},E8s={style:{color:"red",cursor:"pointer"}},T8s=["onClick"],Q8s={class:"cardInfo"},D8s={class:"cardName"},B8s={class:"nameText"},R8s={class:"cardDesc"},I8s=Je({__name:"assets",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const{project:t}=xs(ph()),n=e,r=Pf(e,"modelValue"),o=fe({resultImages:[],referanceImages:[]}),s=fe(!1),a=fe();function l(h,g){o.value={flowId:h==null?void 0:h.flowId,resultImages:[{src:h.src,prompt:h.prompt}],referanceImages:[g]},a.value=h.id,s.value=!0}async function d({imageUrl:h,flowId:g}){if(h){for(const m of r.value){const v=m.derive.find(f=>f.id===a.value);if(v){v.src=h,v.flowId=g;break}}await mn.post("/production/assets/updateAssetsUrl",{id:a.value,url:h,flowId:g})}}async function u(h){const g=fo.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.production.node.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{var m;try{await mn.post("/production/assets/deleteAssetsDireve",{id:h,projectId:(m=t.value)==null?void 0:m.id}),r.value.forEach(v=>{const f=v.derive.findIndex(k=>k.id===h);f!==-1&&v.derive.splice(f,1)})}catch(v){window.$message.error((v==null?void 0:v.message)||$t("workbench.production.node.assets.removeFailed"))}finally{g.destroy()}}})}return(h,g)=>{const m=jre,v=Zh,f=Wc,k=Xy,A=Sg,p=km,b=_n("i-right"),w=el,O=_n("i-delete");return xe(),Ut(p,{class:"assets"},{default:Oe(()=>[c(Ae(mm),{id:n.handleIds.target,type:"target",position:Ae(Vi).Top},null,8,["id","position"]),ge("div",h8s,[ge("div",f8s,Pe(h.$t("workbench.production.node.assets.title")),1)]),ge("div",g8s,[ge("div",m8s,[(xe(!0),Ge(sn,null,Bi(r.value,y=>(xe(),Ge("div",{key:y.id,class:"assetItemBox"},[c(p,{class:"assetCard"},{default:Oe(()=>[y.src?(xe(),Ge("div",k8s,[c(v,{src:y.src,fit:"contain",class:"assetImage",preview:!0},{overlayContent:Oe(()=>[ge("div",v8s,[c(m,{src:y.src,position:"br"},null,8,["src"])])]),_:2},1032,["src"])])):(xe(),Ge("div",A8s,[y.state=="生成中"?(xe(),Ut(f,{key:0,size:"small"})):y.state=="生成失败"?(xe(),Ge("span",p8s,Pe(h.$t("workbench.production.node.assets.generateFailed")),1)):(xe(),Ut(k,{key:2,size:"small",title:h.$t("workbench.production.node.assets.notGenerated")},null,8,["title"]))])),ge("div",b8s,[ge("div",w8s,[ge("span",O8s,Pe(y.name),1),c(A,{theme:"success"},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.node.assets.originalAsset")),1)]),_:1})]),ge("div",y8s,Pe(y.desc),1)])]),_:2},1024),ge("div",C8s,[c(b,{size:"32"})]),ge("div",_8s,[(xe(!0),Ge(sn,null,Bi(y.derive,(C,_)=>(xe(),Ut(p,{key:_,class:"assetCard",onClick:S=>l(C,y.src)},{default:Oe(()=>[C.src&&C.state=="已完成"?(xe(),Ge("div",S8s,[c(v,{src:C.src,fit:"contain",class:"assetImage",preview:!0},{overlayContent:Oe(()=>[ge("div",L8s,[c(m,{src:C.src,position:"br"},null,8,["src"])])]),_:2},1032,["src"])])):(xe(),Ge("div",x8s,[C.state=="生成中"?(xe(),Ut(f,{key:0,size:"small"})):C.state=="生成失败"?(xe(),Ut(w,{key:1,content:C==null?void 0:C.errorReason},{default:Oe(()=>[ge("div",E8s,Pe(h.$t("workbench.novel.genFailed")),1)]),_:1},8,["content"])):(xe(),Ut(k,{key:2,size:"small",title:h.$t("workbench.production.node.assets.notGenerated")},null,8,["title"]))])),c(w,{theme:"primary",content:h.$t("workbench.production.node.storyboard.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:Mr(S=>u(C.id),["stop"])},[c(O,{theme:"outline",size:"18",fill:"#fff"})],8,T8s)]),_:2},1032,["content"]),ge("div",Q8s,[ge("div",D8s,[ge("span",B8s,Pe(C.name),1),c(A,{theme:"warning"},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.node.assets.derived")),1)]),_:1})]),ge("div",R8s,Pe(C.desc),1)])]),_:2},1032,["onClick"]))),128)),y.derive.length<=0?(xe(),Ut(p,{key:0,class:"assetCard emptyCard"},{default:Oe(()=>[c(k,{title:h.$t("workbench.production.node.assets.noDerivedAssets")},null,8,["title"])]),_:1})):nn("",!0)])]))),128))])]),Ae(s)?(xe(),Ut(tqn,{key:0,modelValue:Ae(s),"onUpdate:modelValue":g[0]||(g[0]=y=>Fn(s)?s.value=y:null),flowData:Ae(o),onSave:d},null,8,["modelValue","flowData"])):nn("",!0)]),_:1})}}}),M8s=oo(I8s,[["__scopeId","data-v-d4a8f944"]]),P8s={class:"titleBar dragHandle pr"},F8s={class:"title c"},N8s={class:"storyboardList"},U8s=Je({__name:"storyboardTable",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=Xy,f=km,k=gc;return xe(),Ge(sn,null,[c(f,{class:"storyboardTable"},{default:Oe(()=>[ge("div",P8s,[ge("div",F8s,Pe(h.$t("workbench.production.node.storyboardTable.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",N8s,[n.value?(xe(),Ut(Ae(i3),{key:1,modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=A=>n.value=A),theme:"light"},null,8,["modelValue"])):(xe(),Ut(v,{key:0,style:{"margin-top":"16px"}}))])]),_:1}),c(k,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=A=>o.value=A),header:h.$t("workbench.production.node.storyboardTable.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=A=>r.value=A),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),j8s=oo(U8s,[["__scopeId","data-v-1ef204e0"]]),W8s={class:"titleBar dragHandle pr"},V8s={class:"title"},z8s={class:"content"},H8s={class:"frameGrid"},$8s=["onMouseenter"],X8s=["onClick"],G8s={class:"frameCard"},Y8s={class:"imageToolsWrap show"},Z8s=["onClick"],q8s=["onClick"],K8s=["onClick"],J8s=["onClick"],eLs={class:"scaleControl"},tLs={class:"ac",style:{gap:"10px"}},nLs=Je({__name:"storyboard",props:Fc({id:{},handleIds:{},assetsData:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const{project:t}=xs(ph()),{episodesId:n}=xs(g0()),r=e,o=Pf(e,"modelValue"),s=fe(!1),a=fe(!1),l=fe([]),d=q4e("storyboardGridScale",1),u=fe(null);function h(C){u.value=C}const g=fe({flowId:null,resultImages:[],referanceImages:[]}),m=["#5bccb3","#9c7cfc","#fbbf24","#5b9afc","#e86b6b","#7cb8fc","#e8a855","#34d399"];function v(){l.value=[]}async function f(){Wh(!0);const C=(o.value??[]).filter(_=>_.src).map(_=>_.id);if(!C.length){window.$message.warning($t("workbench.production.node.storyboard.noPreviewImages")),Wh(!1);return}try{const _=await mn.post("/production/storyboard/downPreviewImage",{storyboardIds:C},{responseType:"blob"}),S=URL.createObjectURL(_),L=document.createElement("a");L.href=S,L.download=`storyboardImagePreview-${Date.now()}.png`,L.click(),URL.revokeObjectURL(S)}catch{window.$message.error($t("workbench.production.node.storyboard.imageLoadFailed"))}finally{Wh(!1)}}async function k(){var _;Wh(!0);const C=(o.value??[]).filter(S=>S.src).map(S=>S.id);if(!C.length){window.$message.warning($t("workbench.production.node.storyboard.noPreviewImages")),Wh(!1);return}try{const{data:S}=await mn.post("/production/storyboard/previewImage",{storyboardIds:C,projectId:(_=t.value)==null?void 0:_.id});l.value=[S],a.value=!0}catch{window.$message.error($t("workbench.production.node.storyboard.imageLoadFailed"))}finally{Wh(!1)}}const A=fe({id:null,insertAfterIndex:null}),p=X(()=>{if(d.value<=1)return d.value});function b(C,_,S=null){var L;if(A.value={id:S==null?C==null?void 0:C.id:null,insertAfterIndex:S},g.value={flowId:(C==null?void 0:C.flowId)??null,resultImages:[],referanceImages:[]},A.value.id){let E=[];if(C.associateAssetsIds&&C.associateAssetsIds.length>0){const T=[];for(const D of r.assetsData)C.associateAssetsIds.includes(D.id)&&D.src&&T.push(D.src),(L=D.derive)==null||L.forEach(P=>{C!=null&&C.associateAssetsIds.includes(P.id)&&P.src&&T.push(P.src)});E=E.concat(T)}g.value.referanceImages=E,g.value.resultImages=[{src:_.length?_[0]:"",prompt:C.prompt??""}]}else g.value.referanceImages=_.filter(Boolean);s.value=!0}async function w({imageUrl:C,flowId:_}){var T;if(!C)return;const{id:S,insertAfterIndex:L}=A.value;if(S===null&&L!==null){const D={duration:0,prompt:"",src:C,videoDesc:"",shouldGenerateImage:1,state:"已完成"},{data:P}=await mn.post("/production/storyboard/addStoryboard",{...D,projectId:(T=t.value)==null?void 0:T.id,scriptId:n.value,flowId:_});o.value.splice(L+1,0,{...D,id:P.id,flowId:_}),g0().setFlowData();return}const E=o.value.find(D=>D.id===S);E&&(E.src=C,E.state="已完成",E.flowId=_),await mn.post("/production/storyboard/updateStoryboardUrl",{id:S,url:C,flowId:_})}async function O(C){const _=fo.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.production.node.storyboard.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{var S;if(!C){const L=o.value.findIndex(E=>E.id===C);L!==-1&&o.value.splice(L,1),_.destroy();return}try{await mn.post("/production/storyboard/removeFrame",{id:C,projectId:(S=t.value)==null?void 0:S.id});const L=o.value.findIndex(E=>E.id===C);L!==-1&&o.value.splice(L,1)}catch(L){window.$message.error((L==null?void 0:L.message)||$t("workbench.production.node.storyboard.removeFailed"))}finally{_.destroy()}}})}function y(C){const _=hs({prompt:C.prompt??"",videoDesc:(C==null?void 0:C.videoDesc)??""}),S=()=>xn("div",{class:"editInfoForm"},[xn("div",{class:"editInfoField"},[xn("label",{class:"editInfoLabel"},$t("workbench.production.node.storyboard.prompt")),xn(c2,{value:_.prompt,placeholder:$t("workbench.production.node.storyboard.promptPlaceholder"),autosize:{minRows:3,maxRows:6},"onUpdate:value":E=>_.prompt=E})]),xn("div",{class:"editInfoField"},[xn("label",{class:"editInfoLabel"},$t("workbench.production.node.storyboard.videoDesc")),xn(c2,{value:_.videoDesc,placeholder:$t("workbench.production.node.storyboard.videoDescPlaceholder"),autosize:{minRows:3,maxRows:6},"onUpdate:value":E=>_.videoDesc=E})])]),L=fo.confirm({header:$t("workbench.production.node.storyboard.editInfo"),body:S,width:480,confirmBtn:{content:$t("common.submit"),theme:"primary",loading:!1},onConfirm:async()=>{L.update({confirmBtn:{content:$t("common.submitting"),loading:!0}});try{await mn.post("/production/storyboard/editStoryboardInfo",{id:C.id,prompt:_.prompt,videoDesc:_.videoDesc}),C.prompt=_.prompt,C.videoDesc=_.videoDesc,window.$message.success($t("common.editSuccess"))}catch(E){window.$message.error((E==null?void 0:E.message)||$t("common.editFailed"))}finally{L.update({confirmBtn:{content:$t("common.submit"),loading:!1}}),L.destroy()}}})}return(C,_)=>{const S=Xy,L=_n("i-plus"),E=Si,T=Sg,D=jre,P=Zh,Q=Wc,M=el,B=_n("i-delete"),R=_n("i-edit"),I=Lz,F=hL,j=km;return xe(),Ut(j,{class:"storyboard"},{default:Oe(()=>[ge("div",W8s,[ge("div",V8s,Pe(C.$t("workbench.production.node.storyboard.title")),1),c(Ae(mm),{id:r.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:r.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",z8s,[o.value.length?nn("",!0):(xe(),Ut(S,{key:0,style:{"margin-top":"16px"}})),ge("div",H8s,[(xe(!0),Ge(sn,null,Bi(o.value,(W,H)=>(xe(),Ge("div",{key:W.id,class:"frameItem",onMouseenter:$=>h(H),onMouseleave:_[0]||(_[0]=$=>h(null))},[ge("div",{class:Eo(["addBetween addBetween--left",{expanded:Ae(u)===H}]),onClick:Mr($=>{var G;return b(W,[H>0&&((G=o.value[H-1])==null?void 0:G.src)||"",W.src||""],H-1)},["stop"])},[c(E,{theme:"primary",variant:"outline",shape:"circle"},{icon:Oe(()=>[c(L)]),_:1})],10,X8s),ge("div",G8s,[ge("div",{class:"frameImage",style:no({width:`${200*Ae(d)}px`,height:`${200*Ae(d)}px`})},[c(T,{class:"frameTypeTag",style:no({backgroundColor:m[H%m.length],transform:`scale(${Ae(p)})`})},{default:Oe(()=>[Bt(" S"+Pe(String(H+1).padStart(2,"0")),1)]),_:2},1032,["style"]),W.src&&W.state=="已完成"?(xe(),Ut(P,{key:0,src:W.src,fit:"contain",class:"frameImg",onClick:$=>b(W,[W.src])},{overlayContent:Oe(()=>[ge("div",Y8s,[c(D,{style:no({transform:`scale(${Ae(p)})`}),src:W.src,position:"br"},null,8,["style","src"])])]),_:2},1032,["src","onClick"])):(xe(),Ge("div",{key:1,class:"generatingPlaceholder",onClick:$=>b(W,[])},[W.state==="生成中"?(xe(),Ut(Q,{key:0,size:"small"})):W.state=="生成失败"?(xe(),Ut(M,{key:1,content:W==null?void 0:W.reason},{default:Oe(()=>[..._[4]||(_[4]=[ge("span",{style:{color:"#ff4d4f"}},"生成失败",-1)])]),_:1},8,["content"])):(xe(),Ut(S,{key:2,size:"small",title:C.$t("workbench.production.node.storyboard.notGenerated")},null,8,["title"]))],8,Z8s)),c(M,{theme:"primary",content:C.$t("workbench.production.node.storyboard.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",style:no({transform:`scale(${Ae(p)})`}),onClick:Mr($=>O(W.id),["stop"])},[c(B,{theme:"outline",size:"18",fill:"#fff"})],12,q8s)]),_:2},1032,["content"]),c(M,{theme:"primary",content:C.$t("workbench.production.node.storyboard.editNode")},{default:Oe(()=>[ge("div",{class:"editNode ac",style:no({transform:`scale(${Ae(p)})`}),onClick:Mr($=>y(W),["stop"])},[c(R,{theme:"outline",size:"18",fill:"#fff"})],12,K8s)]),_:2},1032,["content"])],4)]),ge("div",{class:Eo(["addBetween addBetween--right",{expanded:Ae(u)===H}]),onClick:Mr($=>{var G,q;return b(W,[W.src||"",H<(((G=o.value)==null?void 0:G.length)??0)-1&&((q=o.value[H+1])==null?void 0:q.src)||""],H)},["stop"])},[c(E,{theme:"primary",variant:"outline",shape:"circle"},{icon:Oe(()=>[c(L)]),_:1})],10,J8s)],40,$8s))),128))]),ge("div",eLs,[ge("span",null,Pe(C.$t("workbench.production.node.storyboard.scaleRatio")),1),c(I,{modelValue:Ae(d),"onUpdate:modelValue":_[1]||(_[1]=W=>Fn(d)?d.value=W:null),min:.1,max:3,step:.1,"decimal-places":1,size:"small",style:{width:"120px"}},null,8,["modelValue"])]),ge("div",tLs,[c(E,{block:"",onClick:k,disabled:!o.value.length},{default:Oe(()=>[Bt(Pe(C.$t("workbench.production.node.storyboard.gridPreview")),1)]),_:1},8,["disabled"])])]),Ae(s)?(xe(),Ut(tqn,{key:0,modelValue:Ae(s),"onUpdate:modelValue":_[2]||(_[2]=W=>Fn(s)?s.value=W:null),flowData:Ae(g),type:"storyboard",onSave:w},null,8,["modelValue","flowData"])):nn("",!0),c(F,{visible:Ae(a),"onUpdate:visible":_[3]||(_[3]=W=>Fn(a)?a.value=W:null),images:Ae(l),onClose:v,onDownload:f,imageScale:{max:10,min:.1}},null,8,["visible","images"])]),_:1})}}}),iLs=oo(nLs,[["__scopeId","data-v-122b9e8f"]]);var rLs=Object.defineProperty,G2e=Object.getOwnPropertySymbols,nqn=Object.prototype.hasOwnProperty,iqn=Object.prototype.propertyIsEnumerable,Tkn=(e,t,n)=>t in e?rLs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,UN=(e,t)=>{for(var n in t||(t={}))nqn.call(t,n)&&Tkn(e,n,t[n]);if(G2e)for(var n of G2e(t))iqn.call(t,n)&&Tkn(e,n,t[n]);return e},rqn=(e,t)=>{var n={};for(var r in e)nqn.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&G2e)for(var r of G2e(e))t.indexOf(r)<0&&iqn.call(e,r)&&(n[r]=e[r]);return n};const oqn="[vue-draggable-plus]: ";function oLs(e){console.warn(oqn+e)}function sLs(e){console.error(oqn+e)}function Qkn(e,t,n){return n>=0&&nn?n.toUpperCase():"")}function lLs(e){return Object.keys(e).reduce((t,n)=>(typeof e[n]<"u"&&(t[aLs(n)]=e[n]),t),{})}function Dkn(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Bkn(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function cLs(e){return typeof e>"u"}function dLs(e){return typeof e=="string"}function Rkn(e,t,n){const r=e.children[n];e.insertBefore(t,r)}function CRe(e){e.parentNode&&e.parentNode.removeChild(e)}function uLs(e,t=document){var n;let r=null;return typeof(t==null?void 0:t.querySelector)=="function"?r=(n=t==null?void 0:t.querySelector)==null?void 0:n.call(t,e):r=document.querySelector(e),r||oLs(`Element not found: ${e}`),r}function hLs(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function fLs(e,t){const n=UN({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=hLs(e[r],t[r]):n[r]=t[r]}),n}function gLs(e){return e instanceof HTMLElement}function Ikn(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function mLs(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}const kLs=Object.assign;/**! +Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>"The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead"};class Lf extends Error{constructor(t,...n){var r;super((r=ekn[t])==null?void 0:r.call(ekn,...n)),this.name="VueFlowError",this.code=t,this.args=n}}function Hst(e){return"clientX"in e}function X3s(e){return"sourceEvent"in e}function QO(e,t){const n=Hst(e);let r,o;return n?(r=e.clientX,o=e.clientY):"touches"in e&&e.touches.length>0?(r=e.touches[0].clientX,o=e.touches[0].clientY):"changedTouches"in e&&e.changedTouches.length>0?(r=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY):(r=0,o=0),{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}}const z2e=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function G3s(e){var t,n;return{width:((t=e.dimensions)==null?void 0:t.width)??e.width??0,height:((n=e.dimensions)==null?void 0:n.height)??e.height??0}}function HOe(e,t=[1,1]){return{x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}}const Y3s=()=>!0;function uRe(e){e==null||e.classList.remove("valid","connecting","vue-flow__handle-valid","vue-flow__handle-connecting")}function Z3s(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const s of t.values())V2e(o,W2e(s))>0&&r.push(s);return r}const q3s=250;function K3s(e,t,n,r){var o,s;let a=[],l=Number.POSITIVE_INFINITY;const d=Z3s(e,n,t+q3s);for(const u of d){const h=[...((o=u.handleBounds)==null?void 0:o.source)??[],...((s=u.handleBounds)==null?void 0:s.target)??[]];for(const g of h){if(r.nodeId===g.nodeId&&r.type===g.type&&r.id===g.id)continue;const{x:m,y:v}=lz(u,g,g.position,!0),f=Math.sqrt((m-e.x)**2+(v-e.y)**2);f>t||(f1){const u=r.type==="source"?"target":"source";return a.find(h=>h.type===u)??a[0]}return a[0]}function tkn(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:s,doc:a,lib:l,flowId:d,isValidConnection:u=Y3s},h,g,m,v){const f=s==="target",k=t?a.querySelector(`.${l}-flow__handle[data-id="${d}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:A,y:p}=QO(e),b=a.elementFromPoint(A,p),w=b!=null&&b.classList.contains(`${l}-flow__handle`)?b:k,O={handleDomNode:w,isValid:!1,connection:null,toHandle:null};if(w){const y=aZn(void 0,w),C=w.getAttribute("data-nodeid"),_=w.getAttribute("data-handleid"),S=w.classList.contains("connectable"),L=w.classList.contains("connectableend");if(!C||!y)return O;const E={source:f?C:r,sourceHandle:f?_:o,target:f?r:C,targetHandle:f?o:_};O.connection=E;const D=S&&L&&(n===H6.Strict?f&&y==="source"||!f&&y==="target":C!==r||_!==o);O.isValid=D&&u(E,{nodes:g,edges:h,sourceNode:m(E.source),targetNode:m(E.target)}),O.toHandle=lZn(C,y,_,v,n,!0)}return O}function aZn(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function J3s(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function ews(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}function lZn(e,t,n,r,o,s=!1){var a,l,d;const u=r.get(e);if(!u)return null;const h=o===H6.Strict?(a=u.handleBounds)==null?void 0:a[t]:[...((l=u.handleBounds)==null?void 0:l.source)??[],...((d=u.handleBounds)==null?void 0:d.target)??[]],g=(n?h==null?void 0:h.find(m=>m.id===n):h==null?void 0:h[0])??null;return g&&s?{...g,...lz(u,g,g.position,!0)}:g}const UGe={[Vi.Left]:Vi.Right,[Vi.Right]:Vi.Left,[Vi.Top]:Vi.Bottom,[Vi.Bottom]:Vi.Top},tws=["production","prod"];function zre(e,...t){cZn()&&console.warn(`[Vue Flow]: ${e}`,...t)}function cZn(){return!tws.includes("production")}function nkn(e,t,n,r,o){const s=t.querySelectorAll(`.vue-flow__handle.${e}`);return s!=null&&s.length?Array.from(s).map(a=>{const l=a.getBoundingClientRect();return{id:a.getAttribute("data-handleid"),type:e,nodeId:o,position:a.getAttribute("data-handlepos"),x:(l.left-n.left)/r,y:(l.top-n.top)/r,...zOe(a)}}):null}function jGe(e,t,n,r,o,s=!1,a){o.value=!1,e.selected?(s||e.selected&&t)&&(r([e]),ai(()=>{a.blur()})):n([e])}function Nh(e){return typeof Ae(e)<"u"}function nws(e,t,n,r){if(!e||!e.source||!e.target)return n(new Lf(Yh.EDGE_INVALID,(e==null?void 0:e.id)??"[ID UNKNOWN]")),!1;let o;return $6(e)?o=e:o={...e,id:JYn(e)},o=qYn(o,void 0,r),I3s(o,t)?!1:o}function iws(e,t,n,r,o){if(!t.source||!t.target)return o(new Lf(Yh.EDGE_INVALID,e.id)),!1;if(!n)return o(new Lf(Yh.EDGE_NOT_FOUND,e.id)),!1;const{id:s,...a}=e;return{...a,id:r?JYn(t):s,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle}}function ikn(e,t,n){const r={},o=[];for(let s=0;sl.id===s.parentNode);s.parentNode&&!a&&n(new Lf(Yh.NODE_MISSING_PARENT,s.id,s.parentNode)),(s.parentNode||r[s.id])&&(r[s.id]&&(s.isParent=!0),a&&(a.isParent=!0))}return o}function rkn(e,t,n,r,o,s){let a=o;const l=r.get(a)||new Map;r.set(a,l.set(n,t)),a=`${o}-${e}`;const d=r.get(a)||new Map;if(r.set(a,d.set(n,t)),s){a=`${o}-${e}-${s}`;const u=r.get(a)||new Map;r.set(a,u.set(n,t))}}function hRe(e,t,n){e.clear();for(const r of n){const{source:o,target:s,sourceHandle:a=null,targetHandle:l=null}=r,d={edgeId:r.id,source:o,target:s,sourceHandle:a,targetHandle:l},u=`${o}-${a}--${s}-${l}`,h=`${s}-${l}--${o}-${a}`;rkn("source",d,h,e,o,a),rkn("target",d,u,e,s,l)}}function okn(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function fRe(e,t,n,r,o,s,a,l){const d=[];for(const u of e){const h=$6(u)?u:nws(u,l,o,s);if(!h)continue;const g=n(h.source),m=n(h.target);if(!g||!m){o(new Lf(Yh.EDGE_SOURCE_TARGET_MISSING,h.id,h.source,h.target));continue}if(!g){o(new Lf(Yh.EDGE_SOURCE_MISSING,h.id,h.source));continue}if(!m){o(new Lf(Yh.EDGE_TARGET_MISSING,h.id,h.target));continue}if(t&&!t(h,{edges:l,nodes:a,sourceNode:g,targetNode:m})){o(new Lf(Yh.EDGE_INVALID,h.id));continue}const v=r(h.id);d.push({...qYn(h,v,s),sourceNode:g,targetNode:m})}return d}const skn=Symbol("vueFlow"),dZn=Symbol("nodeId"),uZn=Symbol("nodeRef"),rws=Symbol("edgeId"),ows=Symbol("edgeRef"),$Oe=Symbol("slots");function hZn(e){const{vueFlowRef:t,snapToGrid:n,snapGrid:r,noDragClassName:o,nodeLookup:s,nodeExtent:a,nodeDragThreshold:l,viewport:d,autoPanOnNodeDrag:u,autoPanSpeed:h,nodesDraggable:g,panBy:m,findNode:v,multiSelectionActive:f,nodesSelectionActive:k,selectNodesOnDrag:A,removeSelectedElements:p,addSelectedNodes:b,updateNodePositions:w,emits:O}=nl(),{onStart:y,onDrag:C,onStop:_,onClick:S,el:L,disabled:E,id:T,selectable:D,dragHandle:P}=e,Q=nd(!1);let M=[],B,R=null,I={x:void 0,y:void 0},F={x:0,y:0},j=null,W=!1,H=!1,$=0,G=!1;const q=lws(),re=({x:ee,y:de})=>{I={x:ee,y:de};let z=!1;if(M=M.map(Y=>{const ie={x:ee-Y.distance.x,y:de-Y.distance.y},{computedPosition:te}=zst(Y,n.value?HOe(ie,r.value):ie,O.error,a.value,Y.parentNode?v(Y.parentNode):void 0);return z=z||Y.position.x!==te.x||Y.position.y!==te.y,Y.position=te,Y}),H=H||z,!!z&&(w(M,!0,!0),Q.value=!0,j)){const[Y,ie]=dRe({id:T,dragItems:M,findNode:v});C({event:j,node:Y,nodes:ie})}},J=()=>{if(!R)return;const[ee,de]=oZn(F,R,h.value);if(ee!==0||de!==0){const z={x:(I.x??0)-ee/d.value.zoom,y:(I.y??0)-de/d.value.zoom};m({x:ee,y:de})&&re(z)}$=requestAnimationFrame(J)},oe=(ee,de)=>{W=!0;const z=v(T);!A.value&&!f.value&&z&&(z.selected||p()),z&&Fo(D)&&A.value&&jGe(z,f.value,b,p,k,!1,de);const Y=q(ee.sourceEvent);if(I=Y,M=j3s(s.value,g.value,Y,T),M.length){const[ie,te]=dRe({id:T,dragItems:M,findNode:v});y({event:ee.sourceEvent,node:ie,nodes:te})}},se=(ee,de)=>{var z;ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||(H=!1,l.value===0&&oe(ee,de),I=q(ee.sourceEvent),R=((z=t.value)==null?void 0:z.getBoundingClientRect())||null,F=QO(ee.sourceEvent,R))},le=(ee,de)=>{const z=q(ee.sourceEvent);if(!G&&W&&u.value&&(G=!0,J()),!W){const Y=z.xSnapped-(I.x??0),ie=z.ySnapped-(I.y??0);Math.sqrt(Y*Y+ie*ie)>l.value&&oe(ee,de)}(I.x!==z.xSnapped||I.y!==z.ySnapped)&&M.length&&W&&(j=ee.sourceEvent,F=QO(ee.sourceEvent,R),re(z))},ue=ee=>{let de=!1;if(!W&&!Q.value&&!f.value){const z=ee.sourceEvent,Y=q(z),ie=Y.xSnapped-(I.x??0),te=Y.ySnapped-(I.y??0),Z=Math.sqrt(ie*ie+te*te);Z!==0&&Z<=l.value&&(S==null||S(z),de=!0)}if(M.length&&!de){H&&(w(M,!1,!1),H=!1);const[z,Y]=dRe({id:T,dragItems:M,findNode:v});_({event:ee.sourceEvent,node:z,nodes:Y})}M=[],Q.value=!1,G=!1,W=!1,I={x:void 0,y:void 0},cancelAnimationFrame($)};return pt([()=>Fo(E),L],([ee,de],z,Y)=>{if(de){const ie=$b(de);ee||(B=Qps().on("start",te=>se(te,de)).on("drag",te=>le(te,de)).on("end",te=>ue(te)).filter(te=>{const Z=te.target,he=Fo(P);return!te.button&&(!o.value||!K0n(Z,`.${o.value}`,de)&&(!he||K0n(Z,he,de)))}),ie.call(B)),Y(()=>{ie.on(".drag",null),B&&(B.on("start",null),B.on("drag",null),B.on("end",null))})}}),Q}function sws(){return{doubleClick:sr(),click:sr(),mouseEnter:sr(),mouseMove:sr(),mouseLeave:sr(),contextMenu:sr(),updateStart:sr(),update:sr(),updateEnd:sr()}}function aws(e,t){const n=sws();return n.doubleClick.on(r=>{var o,s;t.edgeDoubleClick(r),(s=(o=e.events)==null?void 0:o.doubleClick)==null||s.call(o,r)}),n.click.on(r=>{var o,s;t.edgeClick(r),(s=(o=e.events)==null?void 0:o.click)==null||s.call(o,r)}),n.mouseEnter.on(r=>{var o,s;t.edgeMouseEnter(r),(s=(o=e.events)==null?void 0:o.mouseEnter)==null||s.call(o,r)}),n.mouseMove.on(r=>{var o,s;t.edgeMouseMove(r),(s=(o=e.events)==null?void 0:o.mouseMove)==null||s.call(o,r)}),n.mouseLeave.on(r=>{var o,s;t.edgeMouseLeave(r),(s=(o=e.events)==null?void 0:o.mouseLeave)==null||s.call(o,r)}),n.contextMenu.on(r=>{var o,s;t.edgeContextMenu(r),(s=(o=e.events)==null?void 0:o.contextMenu)==null||s.call(o,r)}),n.updateStart.on(r=>{var o,s;t.edgeUpdateStart(r),(s=(o=e.events)==null?void 0:o.updateStart)==null||s.call(o,r)}),n.update.on(r=>{var o,s;t.edgeUpdate(r),(s=(o=e.events)==null?void 0:o.update)==null||s.call(o,r)}),n.updateEnd.on(r=>{var o,s;t.edgeUpdateEnd(r),(s=(o=e.events)==null?void 0:o.updateEnd)==null||s.call(o,r)}),Object.entries(n).reduce((r,[o,s])=>(r.emit[o]=s.trigger,r.on[o]=s.on,r),{emit:{},on:{}})}function lws(){const{viewport:e,snapGrid:t,snapToGrid:n,vueFlowRef:r}=nl();return o=>{var s;const a=((s=r.value)==null?void 0:s.getBoundingClientRect())??{left:0,top:0},l=X3s(o)?o.sourceEvent:o,{x:d,y:u}=QO(l,a),h=Rte({x:d,y:u},e.value),{x:g,y:m}=n.value?HOe(h,t.value):h;return{xSnapped:g,ySnapped:m,...h}}}function Mde(){return!0}function fZn({handleId:e,nodeId:t,type:n,isValidConnection:r,edgeUpdaterType:o,onEdgeUpdate:s,onEdgeUpdateEnd:a}){const{id:l,vueFlowRef:d,connectionMode:u,connectionRadius:h,connectOnClick:g,connectionClickStartHandle:m,nodesConnectable:v,autoPanOnConnect:f,autoPanSpeed:k,findNode:A,panBy:p,startConnection:b,updateConnection:w,endConnection:O,emits:y,viewport:C,edges:_,nodes:S,isValidConnection:L,nodeLookup:E}=nl();let T=null,D=!1,P=null;function Q(B){var R;const I=Fo(n)==="target",F=Hst(B),j=V0n(B.target),W=B.currentTarget;if(W&&(F&&B.button===0||!F)){let H=function(Qe){z=QO(Qe,ue),re=K3s(Rte(z,C.value,!1,[1,1]),h.value,E.value,te),Y||(ie(),Y=!0);const ke=tkn(Qe,{handle:re,connectionMode:u.value,fromNodeId:Fo(t),fromHandleId:Fo(e),fromType:I?"target":"source",isValidConnection:q,doc:j,lib:"vue",flowId:l,nodeLookup:E.value},_.value,S.value,A,E.value);P=ke.handleDomNode,T=ke.connection,D=ews(!!re,ke.isValid);const me={...Ce,isValid:D,to:ke.toHandle&&D?Bte({x:ke.toHandle.x,y:ke.toHandle.y},C.value):z,toHandle:ke.toHandle,toPosition:D&&ke.toHandle?ke.toHandle.position:UGe[te.position],toNode:ke.toHandle?E.value.get(ke.toHandle.nodeId):null};if(D&&re&&(Ce!=null&&Ce.toHandle)&&me.toHandle&&Ce.toHandle.type===me.toHandle.type&&Ce.toHandle.nodeId===me.toHandle.nodeId&&Ce.toHandle.id===me.toHandle.id&&Ce.to.x===me.to.x&&Ce.to.y===me.to.y)return;const _e=re??ke.toHandle;if(w(_e&&D?Bte({x:_e.x,y:_e.y},C.value):z,_e,J3s(!!_e,D)),Ce=me,!re&&!D&&!P)return uRe(de);T&&T.source!==T.target&&P&&(uRe(de),de=P,P.classList.add("connecting","vue-flow__handle-connecting"),P.classList.toggle("valid",!!D),P.classList.toggle("vue-flow__handle-valid",!!D))},$=function(Qe){"touches"in Qe&&Qe.touches.length>0||((re||P)&&T&&D&&(s?s(Qe,T):y.connect(T)),y.connectEnd(Qe),o&&(a==null||a(Qe)),uRe(de),cancelAnimationFrame(J),O(Qe),Y=!1,D=!1,T=null,P=null,j.removeEventListener("mousemove",H),j.removeEventListener("mouseup",$),j.removeEventListener("touchmove",H),j.removeEventListener("touchend",$))};const G=A(Fo(t));let q=Fo(r)||L.value||Mde;!q&&G&&(q=(I?G.isValidSourcePos:G.isValidTargetPos)||Mde);let re,J=0;const{x:oe,y:se}=QO(B),le=aZn(Fo(o),W),ue=(R=d.value)==null?void 0:R.getBoundingClientRect();if(!ue||!le)return;const ee=lZn(Fo(t),le,Fo(e),E.value,u.value);if(!ee)return;let de,z=QO(B,ue),Y=!1;const ie=()=>{if(!f.value)return;const[Qe,ke]=oZn(z,ue,k.value);p({x:Qe,y:ke}),J=requestAnimationFrame(ie)},te={...ee,nodeId:Fo(t),type:le,position:ee.position},Z=E.value.get(Fo(t)),pe={inProgress:!0,isValid:null,from:lz(Z,te,Vi.Left,!0),fromHandle:te,fromPosition:te.position,fromNode:Z,to:z,toHandle:null,toPosition:UGe[te.position],toNode:null};b({nodeId:Fo(t),id:Fo(e),type:le,position:(W==null?void 0:W.getAttribute("data-handlepos"))||Vi.Top,...z},{x:oe-ue.left,y:se-ue.top}),y.connectStart({event:B,nodeId:Fo(t),handleId:Fo(e),handleType:le});let Ce=pe;j.addEventListener("mousemove",H),j.addEventListener("mouseup",$),j.addEventListener("touchmove",H),j.addEventListener("touchend",$)}}function M(B){var R,I;if(!g.value)return;const F=Fo(n)==="target";if(!m.value){y.clickConnectStart({event:B,nodeId:Fo(t),handleId:Fo(e)}),b({nodeId:Fo(t),type:Fo(n),id:Fo(e),position:Vi.Top,...QO(B)},void 0,!0);return}let j=Fo(r)||L.value||Mde;const W=A(Fo(t));if(!j&&W&&(j=(F?W.isValidSourcePos:W.isValidTargetPos)||Mde),W&&(typeof W.connectable>"u"?v.value:W.connectable)===!1)return;const H=V0n(B.target),$=tkn(B,{handle:{nodeId:Fo(t),id:Fo(e),type:Fo(n),position:Vi.Top,...QO(B)},connectionMode:u.value,fromNodeId:m.value.nodeId,fromHandleId:m.value.id??null,fromType:m.value.type,isValidConnection:j,doc:H,lib:"vue",flowId:l,nodeLookup:E.value},_.value,S.value,A,E.value),G=((R=$.connection)==null?void 0:R.source)===((I=$.connection)==null?void 0:I.target);$.isValid&&$.connection&&!G&&y.connect($.connection),y.clickConnectEnd(B),O(B,!0)}return{handlePointerDown:Q,handleClick:M}}function cws(){return bt(dZn,"")}function gZn(e){const t=e??cws()??"",n=bt(uZn,fe(null)),{findNode:r,edges:o,emits:s}=nl(),a=r(t);return a||s.error(new Lf(Yh.NODE_NOT_FOUND,t)),{id:t,nodeEl:n,node:a,parentNode:X(()=>r(a.parentNode)),connectedEdges:X(()=>iZn([a],o.value))}}function dws(){return{doubleClick:sr(),click:sr(),mouseEnter:sr(),mouseMove:sr(),mouseLeave:sr(),contextMenu:sr(),dragStart:sr(),drag:sr(),dragStop:sr()}}function uws(e,t){const n=dws();return n.doubleClick.on(r=>{var o,s;t.nodeDoubleClick(r),(s=(o=e.events)==null?void 0:o.doubleClick)==null||s.call(o,r)}),n.click.on(r=>{var o,s;t.nodeClick(r),(s=(o=e.events)==null?void 0:o.click)==null||s.call(o,r)}),n.mouseEnter.on(r=>{var o,s;t.nodeMouseEnter(r),(s=(o=e.events)==null?void 0:o.mouseEnter)==null||s.call(o,r)}),n.mouseMove.on(r=>{var o,s;t.nodeMouseMove(r),(s=(o=e.events)==null?void 0:o.mouseMove)==null||s.call(o,r)}),n.mouseLeave.on(r=>{var o,s;t.nodeMouseLeave(r),(s=(o=e.events)==null?void 0:o.mouseLeave)==null||s.call(o,r)}),n.contextMenu.on(r=>{var o,s;t.nodeContextMenu(r),(s=(o=e.events)==null?void 0:o.contextMenu)==null||s.call(o,r)}),n.dragStart.on(r=>{var o,s;t.nodeDragStart(r),(s=(o=e.events)==null?void 0:o.dragStart)==null||s.call(o,r)}),n.drag.on(r=>{var o,s;t.nodeDrag(r),(s=(o=e.events)==null?void 0:o.drag)==null||s.call(o,r)}),n.dragStop.on(r=>{var o,s;t.nodeDragStop(r),(s=(o=e.events)==null?void 0:o.dragStop)==null||s.call(o,r)}),Object.entries(n).reduce((r,[o,s])=>(r.emit[o]=s.trigger,r.on[o]=s.on,r),{emit:{},on:{}})}function mZn(){const{getSelectedNodes:e,nodeExtent:t,updateNodePositions:n,findNode:r,snapGrid:o,snapToGrid:s,nodesDraggable:a,emits:l}=nl();return(d,u=!1)=>{const h=s.value?o.value[0]:5,g=s.value?o.value[1]:5,m=u?4:1,v=d.x*h*m,f=d.y*g*m,k=[];for(const A of e.value)if(A.draggable||a&&typeof A.draggable>"u"){const p={x:A.computedPosition.x+v,y:A.computedPosition.y+f},{position:b}=zst(A,p,l.error,t.value,A.parentNode?r(A.parentNode):void 0);k.push({id:A.id,position:b,from:A.position,distance:{x:d.x,y:d.y},dimensions:A.dimensions})}n(k,!0,!1)}}const Pde=.1,hws=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2;function Tx(){return zre("Viewport not initialized yet."),Promise.resolve(!1)}const fws={zoomIn:Tx,zoomOut:Tx,zoomTo:Tx,fitView:Tx,setCenter:Tx,fitBounds:Tx,project:e=>e,screenToFlowCoordinate:e=>e,flowToScreenCoordinate:e=>e,setViewport:Tx,setTransform:Tx,getViewport:()=>({x:0,y:0,zoom:1}),getTransform:()=>({x:0,y:0,zoom:1}),viewportInitialized:!1};function gws(e){function t(r,o){return new Promise(s=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate((o==null?void 0:o.interpolate)==="linear"?aq:Khe).scaleBy(gRe(e.d3Selection,o==null?void 0:o.duration,o==null?void 0:o.ease,()=>{s(!0)}),r):s(!1)})}function n(r,o,s,a){return new Promise(l=>{var d;const{x:u,y:h}=ZYn({x:-r,y:-o},e.translateExtent),g=az.translate(-u,-h).scale(s);e.d3Selection&&e.d3Zoom?(d=e.d3Zoom)==null||d.interpolate((a==null?void 0:a.interpolate)==="linear"?aq:Khe).transform(gRe(e.d3Selection,a==null?void 0:a.duration,a==null?void 0:a.ease,()=>{l(!0)}),g):l(!1)})}return X(()=>e.d3Zoom&&e.d3Selection&&e.dimensions.width&&e.dimensions.height?{viewportInitialized:!0,zoomIn:o=>t(1.2,o),zoomOut:o=>t(1/1.2,o),zoomTo:(o,s)=>new Promise(a=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate((s==null?void 0:s.interpolate)==="linear"?aq:Khe).scaleTo(gRe(e.d3Selection,s==null?void 0:s.duration,s==null?void 0:s.ease,()=>{a(!0)}),o):a(!1)}),setViewport:(o,s)=>n(o.x,o.y,o.zoom,s),setTransform:(o,s)=>n(o.x,o.y,o.zoom,s),getViewport:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),getTransform:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),fitView:(o={padding:Pde,includeHiddenNodes:!1,duration:0})=>{var s,a;const l=[];for(const m of e.nodes)m.dimensions.width&&m.dimensions.height&&((o==null?void 0:o.includeHiddenNodes)||!m.hidden)&&(!((s=o.nodes)!=null&&s.length)||(a=o.nodes)!=null&&a.length&&o.nodes.includes(m.id))&&l.push(m);if(!l.length)return Promise.resolve(!1);const d=tZn(l),{x:u,y:h,zoom:g}=z0n(d,e.dimensions.width,e.dimensions.height,o.minZoom??e.minZoom,o.maxZoom??e.maxZoom,o.padding??Pde);return n(u,h,g,o)},setCenter:(o,s,a)=>{const l=typeof(a==null?void 0:a.zoom)<"u"?a.zoom:e.maxZoom,d=e.dimensions.width/2-o*l,u=e.dimensions.height/2-s*l;return n(d,u,l,a)},fitBounds:(o,s={padding:Pde})=>{const{x:a,y:l,zoom:d}=z0n(o,e.dimensions.width,e.dimensions.height,e.minZoom,e.maxZoom,s.padding??Pde);return n(a,l,d,s)},project:o=>Rte(o,e.viewport,e.snapToGrid,e.snapGrid),screenToFlowCoordinate:o=>{if(e.vueFlowRef){const{x:s,y:a}=e.vueFlowRef.getBoundingClientRect(),l={x:o.x-s,y:o.y-a};return Rte(l,e.viewport,e.snapToGrid,e.snapGrid)}return{x:0,y:0}},flowToScreenCoordinate:o=>{if(e.vueFlowRef){const{x:s,y:a}=e.vueFlowRef.getBoundingClientRect(),l={x:o.x+s,y:o.y+a};return Bte(l,e.viewport)}return{x:0,y:0}}}:fws)}function gRe(e,t=0,n=hws,r=()=>{}){const o=typeof t=="number"&&t>0;return o||r(),o?e.transition().duration(t).ease(n).on("end",r):e}function mws(e,t,n){const r=One(!0);return r.run(()=>{const o=()=>{r.run(()=>{let k,A,p=!!(n.nodes.value.length||n.edges.value.length);k=rF([e.modelValue,()=>{var b,w;return(w=(b=e.modelValue)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setElements(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.nodes,n.edges,()=>n.edges.value.length,()=>n.nodes.value.length],([b,w])=>{var O;(O=e.modelValue)!=null&&O.value&&Array.isArray(e.modelValue.value)&&(k==null||k.pause(),e.modelValue.value=[...b,...w],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},s=()=>{r.run(()=>{let k,A,p=!!n.nodes.value.length;k=rF([e.nodes,()=>{var b,w;return(w=(b=e.nodes)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setNodes(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.nodes,()=>n.nodes.value.length],([b])=>{var w;(w=e.nodes)!=null&&w.value&&Array.isArray(e.nodes.value)&&(k==null||k.pause(),e.nodes.value=[...b],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},a=()=>{r.run(()=>{let k,A,p=!!n.edges.value.length;k=rF([e.edges,()=>{var b,w;return(w=(b=e.edges)==null?void 0:b.value)==null?void 0:w.length}],([b])=>{b&&Array.isArray(b)&&(A==null||A.pause(),n.setEdges(b),!A&&!p&&b.length?p=!0:A==null||A.resume())}),A=rF([n.edges,()=>n.edges.value.length],([b])=>{var w;(w=e.edges)!=null&&w.value&&Array.isArray(e.edges.value)&&(k==null||k.pause(),e.edges.value=[...b],ai(()=>{k==null||k.resume()}))},{immediate:p}),YQ(()=>{k==null||k.stop(),A==null||A.stop()})})},l=()=>{r.run(()=>{pt(()=>t.maxZoom,()=>{t.maxZoom&&Nh(t.maxZoom)&&n.setMaxZoom(t.maxZoom)},{immediate:!0})})},d=()=>{r.run(()=>{pt(()=>t.minZoom,()=>{t.minZoom&&Nh(t.minZoom)&&n.setMinZoom(t.minZoom)},{immediate:!0})})},u=()=>{r.run(()=>{pt(()=>t.translateExtent,()=>{t.translateExtent&&Nh(t.translateExtent)&&n.setTranslateExtent(t.translateExtent)},{immediate:!0})})},h=()=>{r.run(()=>{pt(()=>t.nodeExtent,()=>{t.nodeExtent&&Nh(t.nodeExtent)&&n.setNodeExtent(t.nodeExtent)},{immediate:!0})})},g=()=>{r.run(()=>{pt(()=>t.applyDefault,()=>{Nh(t.applyDefault)&&(n.applyDefault.value=t.applyDefault)},{immediate:!0})})},m=()=>{r.run(()=>{const k=async A=>{let p=A;typeof t.autoConnect=="function"&&(p=await t.autoConnect(A)),p!==!1&&n.addEdges([p])};pt(()=>t.autoConnect,()=>{Nh(t.autoConnect)&&(n.autoConnect.value=t.autoConnect)},{immediate:!0}),pt(n.autoConnect,(A,p,b)=>{A?n.onConnect(k):n.hooks.value.connect.off(k),b(()=>{n.hooks.value.connect.off(k)})},{immediate:!0})})},v=()=>{const k=["id","modelValue","translateExtent","nodeExtent","edges","nodes","maxZoom","minZoom","applyDefault","autoConnect"];for(const A of Object.keys(t)){const p=A;if(!k.includes(p)){const b=Pa(()=>t[p]),w=n[p];Fn(w)&&r.run(()=>{pt(b,O=>{Nh(O)&&(w.value=O)},{immediate:!0})})}}};(()=>{o(),s(),a(),d(),l(),u(),h(),g(),m(),v()})()}),()=>r.stop()}function kws(){return{edgesChange:sr(),nodesChange:sr(),nodeDoubleClick:sr(),nodeClick:sr(),nodeMouseEnter:sr(),nodeMouseMove:sr(),nodeMouseLeave:sr(),nodeContextMenu:sr(),nodeDragStart:sr(),nodeDrag:sr(),nodeDragStop:sr(),nodesInitialized:sr(),miniMapNodeClick:sr(),miniMapNodeDoubleClick:sr(),miniMapNodeMouseEnter:sr(),miniMapNodeMouseMove:sr(),miniMapNodeMouseLeave:sr(),connect:sr(),connectStart:sr(),connectEnd:sr(),clickConnectStart:sr(),clickConnectEnd:sr(),paneReady:sr(),init:sr(),move:sr(),moveStart:sr(),moveEnd:sr(),selectionDragStart:sr(),selectionDrag:sr(),selectionDragStop:sr(),selectionContextMenu:sr(),selectionStart:sr(),selectionEnd:sr(),viewportChangeStart:sr(),viewportChange:sr(),viewportChangeEnd:sr(),paneScroll:sr(),paneClick:sr(),paneContextMenu:sr(),paneMouseEnter:sr(),paneMouseMove:sr(),paneMouseLeave:sr(),edgeContextMenu:sr(),edgeMouseEnter:sr(),edgeMouseMove:sr(),edgeMouseLeave:sr(),edgeDoubleClick:sr(),edgeClick:sr(),edgeUpdateStart:sr(),edgeUpdate:sr(),edgeUpdateEnd:sr(),updateNodeInternals:sr(),error:sr(e=>zre(e.message))}}function vws(e,t){const n=ps();TB(()=>{for(const[o,s]of Object.entries(t.value)){const a=l=>{e(o,l)};s.setEmitter(a),xte(s.removeEmitter),s.setHasEmitListeners(()=>r(o)),xte(s.removeHasEmitListeners)}});function r(o){var s;const a=Aws(o);return!!((s=n==null?void 0:n.vnode.props)==null?void 0:s[a])}}function Aws(e){const[t,...n]=e.split(":");return`on${t.replace(/(?:^|-)(\w)/g,(o,s)=>s.toUpperCase())}${n.length?`:${n.join(":")}`:""}`}function kZn(){return{vueFlowRef:null,viewportRef:null,nodes:[],edges:[],connectionLookup:new Map,nodeTypes:{},edgeTypes:{},initialized:!1,dimensions:{width:0,height:0},viewport:{x:0,y:0,zoom:1},d3Zoom:null,d3Selection:null,d3ZoomHandler:null,minZoom:.5,maxZoom:2,translateExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],nodeExtent:[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],selectionMode:Vst.Full,paneDragging:!1,preventScrolling:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,panOnScrollSpeed:.5,panOnScrollMode:lq.Free,paneClickDistance:0,panOnDrag:!0,edgeUpdaterRadius:10,onlyRenderVisibleElements:!1,defaultViewport:{x:0,y:0,zoom:1},nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,defaultMarkerColor:"#b1b1b7",connectionLineStyle:{},connectionLineType:null,connectionLineOptions:{type:FT.Bezier,style:{}},connectionMode:H6.Loose,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectionPosition:{x:Number.NaN,y:Number.NaN},connectionRadius:20,connectOnClick:!0,connectionStatus:null,isValidConnection:null,snapGrid:[15,15],snapToGrid:!1,edgesUpdatable:!1,edgesFocusable:!0,nodesFocusable:!0,nodesConnectable:!0,nodesDraggable:!0,nodeDragThreshold:1,elementsSelectable:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,selectionKeyCode:"Shift",multiSelectionKeyCode:z2e()?"Meta":"Control",zoomActivationKeyCode:z2e()?"Meta":"Control",deleteKeyCode:"Backspace",panActivationKeyCode:"Space",hooks:kws(),applyDefault:!0,autoConnect:!1,fitViewOnInit:!1,fitViewOnInitDone:!1,noDragClassName:"nodrag",noWheelClassName:"nowheel",noPanClassName:"nopan",defaultEdgeOptions:void 0,elevateEdgesOnSelect:!1,elevateNodesOnSelect:!0,autoPanOnNodeDrag:!0,autoPanOnConnect:!0,autoPanSpeed:15,disableKeyboardA11y:!1,ariaLiveMessage:""}}const pws=["id","vueFlowRef","viewportRef","initialized","modelValue","nodes","edges","maxZoom","minZoom","translateExtent","hooks","defaultEdgeOptions"];function bws(e,t,n){const r=gws(e),o=z=>{const Y=z??[];e.hooks.updateNodeInternals.trigger(Y)},s=z=>R3s(z,e.nodes,e.edges),a=z=>B3s(z,e.nodes,e.edges),l=z=>iZn(z,e.edges),d=({id:z,type:Y,nodeId:ie})=>{var te;const Z=z?`-${Y}-${z}`:`-${Y}`;return Array.from(((te=e.connectionLookup.get(`${ie}${Z}`))==null?void 0:te.values())??[])},u=z=>{if(z)return t.value.get(z)},h=z=>{if(z)return n.value.get(z)},g=(z,Y,ie)=>{var te,Z;const he=[];for(const pe of z){const Ce={id:pe.id,type:"position",dragging:ie,from:pe.from};if(Y&&(Ce.position=pe.position,pe.parentNode)){const Qe=u(pe.parentNode);Ce.position={x:Ce.position.x-(((te=Qe==null?void 0:Qe.computedPosition)==null?void 0:te.x)??0),y:Ce.position.y-(((Z=Qe==null?void 0:Qe.computedPosition)==null?void 0:Z.y)??0)}}he.push(Ce)}he!=null&&he.length&&e.hooks.nodesChange.trigger(he)},m=z=>{if(!e.vueFlowRef)return;const Y=e.vueFlowRef.querySelector(".vue-flow__transformationpane");if(!Y)return;const ie=window.getComputedStyle(Y),{m22:te}=new window.DOMMatrixReadOnly(ie.transform),Z=[];for(const he of z){const pe=he,Ce=u(pe.id);if(Ce){const Qe=zOe(pe.nodeElement);if(!!(Qe.width&&Qe.height&&(Ce.dimensions.width!==Qe.width||Ce.dimensions.height!==Qe.height||pe.forceUpdate))){const me=pe.nodeElement.getBoundingClientRect();Ce.dimensions=Qe,Ce.handleBounds.source=nkn("source",pe.nodeElement,me,te,Ce.id),Ce.handleBounds.target=nkn("target",pe.nodeElement,me,te,Ce.id),Z.push({id:Ce.id,type:"dimensions",dimensions:Qe})}}}!e.fitViewOnInitDone&&e.fitViewOnInit&&r.value.fitView().then(()=>{e.fitViewOnInitDone=!0}),Z.length&&e.hooks.nodesChange.trigger(Z)},v=(z,Y)=>{const ie=new Set,te=new Set;for(const pe of z)LD(pe)?ie.add(pe.id):$6(pe)&&te.add(pe.id);const Z=m5(t.value,ie,!0),he=m5(n.value,te);if(e.multiSelectionActive){for(const pe of ie)Z.push($x(pe,Y));for(const pe of te)he.push($x(pe,Y))}Z.length&&e.hooks.nodesChange.trigger(Z),he.length&&e.hooks.edgesChange.trigger(he)},f=z=>{if(e.multiSelectionActive){const Y=z.map(ie=>$x(ie.id,!0));e.hooks.nodesChange.trigger(Y);return}e.hooks.nodesChange.trigger(m5(t.value,new Set(z.map(Y=>Y.id)),!0)),e.hooks.edgesChange.trigger(m5(n.value))},k=z=>{if(e.multiSelectionActive){const Y=z.map(ie=>$x(ie.id,!0));e.hooks.edgesChange.trigger(Y);return}e.hooks.edgesChange.trigger(m5(n.value,new Set(z.map(Y=>Y.id)))),e.hooks.nodesChange.trigger(m5(t.value,new Set,!0))},A=z=>{v(z,!0)},p=z=>{const ie=(z||e.nodes).map(te=>(te.selected=!1,$x(te.id,!1)));e.hooks.nodesChange.trigger(ie)},b=z=>{const ie=(z||e.edges).map(te=>(te.selected=!1,$x(te.id,!1)));e.hooks.edgesChange.trigger(ie)},w=z=>{if(!z||!z.length)return v([],!1);const Y=z.reduce((ie,te)=>{const Z=$x(te.id,!1);return LD(te)?ie.nodes.push(Z):ie.edges.push(Z),ie},{nodes:[],edges:[]});Y.nodes.length&&e.hooks.nodesChange.trigger(Y.nodes),Y.edges.length&&e.hooks.edgesChange.trigger(Y.edges)},O=z=>{var Y;(Y=e.d3Zoom)==null||Y.scaleExtent([z,e.maxZoom]),e.minZoom=z},y=z=>{var Y;(Y=e.d3Zoom)==null||Y.scaleExtent([e.minZoom,z]),e.maxZoom=z},C=z=>{var Y;(Y=e.d3Zoom)==null||Y.translateExtent(z),e.translateExtent=z},_=z=>{e.nodeExtent=z,o()},S=z=>{var Y;(Y=e.d3Zoom)==null||Y.clickDistance(z)},L=z=>{e.nodesDraggable=z,e.nodesConnectable=z,e.elementsSelectable=z},E=z=>{const Y=z instanceof Function?z(e.nodes):z;!e.initialized&&!Y.length||(e.nodes=ikn(Y,u,e.hooks.error.trigger))},T=z=>{const Y=z instanceof Function?z(e.edges):z;if(!e.initialized&&!Y.length)return;const ie=fRe(Y,e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);hRe(e.connectionLookup,n.value,ie),e.edges=ie},D=z=>{const Y=z instanceof Function?z([...e.nodes,...e.edges]):z;!e.initialized&&!Y.length||(E(Y.filter(LD)),T(Y.filter($6)))},P=z=>{let Y=z instanceof Function?z(e.nodes):z;Y=Array.isArray(Y)?Y:[Y];const ie=ikn(Y,u,e.hooks.error.trigger),te=[];for(const Z of ie)te.push(G0n(Z));te.length&&e.hooks.nodesChange.trigger(te)},Q=z=>{let Y=z instanceof Function?z(e.edges):z;Y=Array.isArray(Y)?Y:[Y];const ie=fRe(Y,e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges),te=[];for(const Z of ie)te.push(G0n(Z));te.length&&e.hooks.edgesChange.trigger(te)},M=(z,Y=!0,ie=!1)=>{const te=z instanceof Function?z(e.nodes):z,Z=Array.isArray(te)?te:[te],he=[],pe=[];function Ce(ke){const me=l(ke);for(const _e of me)(!Nh(_e.deletable)||_e.deletable)&&pe.push(Z0n(_e.id,_e.source,_e.target,_e.sourceHandle,_e.targetHandle))}function Qe(ke){const me=[];for(const _e of e.nodes)_e.parentNode===ke&&me.push(_e);if(me.length){for(const _e of me)he.push(Y0n(_e.id));Y&&Ce(me);for(const _e of me)Qe(_e.id)}}for(const ke of Z){const me=typeof ke=="string"?u(ke):ke;me&&(Nh(me.deletable)&&!me.deletable||(he.push(Y0n(me.id)),Y&&Ce([me]),ie&&Qe(me.id)))}pe.length&&e.hooks.edgesChange.trigger(pe),he.length&&e.hooks.nodesChange.trigger(he)},B=z=>{const Y=z instanceof Function?z(e.edges):z,ie=Array.isArray(Y)?Y:[Y],te=[];for(const Z of ie){const he=typeof Z=="string"?h(Z):Z;he&&(Nh(he.deletable)&&!he.deletable||te.push(Z0n(typeof Z=="string"?Z:Z.id,he.source,he.target,he.sourceHandle,he.targetHandle)))}e.hooks.edgesChange.trigger(te)},R=(z,Y,ie=!0)=>{const te=h(z.id);if(!te)return!1;const Z=e.edges.indexOf(te),he=iws(z,Y,te,ie,e.hooks.error.trigger);if(he){const[pe]=fRe([he],e.isValidConnection,u,h,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);return e.edges=e.edges.map((Ce,Qe)=>Qe===Z?pe:Ce),hRe(e.connectionLookup,n.value,[pe]),pe}return!1},I=(z,Y,ie={replace:!1})=>{const te=h(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;te.data=ie.replace?Z:{...te.data,...Z}},F=z=>X0n(z,e.nodes),j=z=>{const Y=X0n(z,e.edges);return hRe(e.connectionLookup,n.value,Y),Y},W=(z,Y,ie={replace:!1})=>{const te=u(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;ie.replace?e.nodes.splice(e.nodes.indexOf(te),1,Z):Object.assign(te,Z)},H=(z,Y,ie={replace:!1})=>{const te=u(z);if(!te)return;const Z=typeof Y=="function"?Y(te):Y;te.data=ie.replace?Z:{...te.data,...Z}},$=(z,Y,ie=!1)=>{ie?e.connectionClickStartHandle=z:e.connectionStartHandle=z,e.connectionEndHandle=null,e.connectionStatus=null,Y&&(e.connectionPosition=Y)},G=(z,Y=null,ie=null)=>{e.connectionStartHandle&&(e.connectionPosition=z,e.connectionEndHandle=Y,e.connectionStatus=ie)},q=(z,Y)=>{e.connectionPosition={x:Number.NaN,y:Number.NaN},e.connectionEndHandle=null,e.connectionStatus=null,Y?e.connectionClickStartHandle=null:e.connectionStartHandle=null},re=z=>{const Y=Q3s(z),ie=Y?null:cY(z)?z:u(z.id);return!Y&&!ie?[null,null,Y]:[Y?z:W2e(ie),ie,Y]},J=(z,Y=!0,ie=e.nodes)=>{const[te,Z,he]=re(z);if(!te)return[];const pe=[];for(const Ce of ie||e.nodes){if(!he&&(Ce.id===Z.id||!Ce.computedPosition))continue;const Qe=W2e(Ce),ke=V2e(Qe,te);(Y&&ke>0||ke>=Qe.width*Qe.height||ke>=Number(te.width)*Number(te.height))&&pe.push(Ce)}return pe},oe=(z,Y,ie=!0)=>{const[te]=re(z);if(!te)return!1;const Z=V2e(te,Y);return ie&&Z>0||Z>=Number(te.width)*Number(te.height)},se=z=>{const{viewport:Y,dimensions:ie,d3Zoom:te,d3Selection:Z,translateExtent:he}=e;if(!te||!Z||!z.x&&!z.y)return!1;const pe=az.translate(Y.x+z.x,Y.y+z.y).scale(Y.zoom),Ce=[[0,0],[ie.width,ie.height]],Qe=te.constrain()(pe,Ce,he),ke=e.viewport.x!==Qe.x||e.viewport.y!==Qe.y||e.viewport.zoom!==Qe.k;return te.transform(Z,Qe),ke},le=z=>{const Y=z instanceof Function?z(e):z,ie=["d3Zoom","d3Selection","d3ZoomHandler","viewportRef","vueFlowRef","dimensions","hooks"];Nh(Y.defaultEdgeOptions)&&(e.defaultEdgeOptions=Y.defaultEdgeOptions);const te=Y.modelValue||Y.nodes||Y.edges?[]:void 0;te&&(Y.modelValue&&te.push(...Y.modelValue),Y.nodes&&te.push(...Y.nodes),Y.edges&&te.push(...Y.edges),D(te));const Z=()=>{Nh(Y.maxZoom)&&y(Y.maxZoom),Nh(Y.minZoom)&&O(Y.minZoom),Nh(Y.translateExtent)&&C(Y.translateExtent)};for(const he of Object.keys(Y)){const pe=he,Ce=Y[pe];![...pws,...ie].includes(pe)&&Nh(Ce)&&(e[pe]=Ce)}EGe(()=>e.d3Zoom).not.toBeNull().then(Z),e.initialized||(e.initialized=!0)};return{updateNodePositions:g,updateNodeDimensions:m,setElements:D,setNodes:E,setEdges:T,addNodes:P,addEdges:Q,removeNodes:M,removeEdges:B,findNode:u,findEdge:h,updateEdge:R,updateEdgeData:I,updateNode:W,updateNodeData:H,applyEdgeChanges:j,applyNodeChanges:F,addSelectedElements:A,addSelectedNodes:f,addSelectedEdges:k,setMinZoom:O,setMaxZoom:y,setTranslateExtent:C,setNodeExtent:_,setPaneClickDistance:S,removeSelectedElements:w,removeSelectedNodes:p,removeSelectedEdges:b,startConnection:$,updateConnection:G,endConnection:q,setInteractive:L,setState:le,getIntersectingNodes:J,getIncomers:s,getOutgoers:a,getConnectedEdges:l,getHandleConnections:d,isNodeIntersecting:oe,panBy:se,fitView:z=>r.value.fitView(z),zoomIn:z=>r.value.zoomIn(z),zoomOut:z=>r.value.zoomOut(z),zoomTo:(z,Y)=>r.value.zoomTo(z,Y),setViewport:(z,Y)=>r.value.setViewport(z,Y),setTransform:(z,Y)=>r.value.setTransform(z,Y),getViewport:()=>r.value.getViewport(),getTransform:()=>r.value.getTransform(),setCenter:(z,Y,ie)=>r.value.setCenter(z,Y,ie),fitBounds:(z,Y)=>r.value.fitBounds(z,Y),project:z=>r.value.project(z),screenToFlowCoordinate:z=>r.value.screenToFlowCoordinate(z),flowToScreenCoordinate:z=>r.value.flowToScreenCoordinate(z),toObject:()=>{const z=[],Y=[];for(const ie of e.nodes){const{computedPosition:te,handleBounds:Z,selected:he,dimensions:pe,isParent:Ce,resizing:Qe,dragging:ke,events:me,..._e}=ie;z.push(_e)}for(const ie of e.edges){const{selected:te,sourceNode:Z,targetNode:he,events:pe,...Ce}=ie;Y.push(Ce)}return JSON.parse(JSON.stringify({nodes:z,edges:Y,position:[e.viewport.x,e.viewport.y],zoom:e.viewport.zoom,viewport:e.viewport}))},fromObject:z=>new Promise(Y=>{const{nodes:ie,edges:te,position:Z,zoom:he,viewport:pe}=z;ie&&E(ie),te&&T(te);const[Ce,Qe]=pe!=null&&pe.x&&(pe!=null&&pe.y)?[pe.x,pe.y]:Z??[null,null];if(Ce&&Qe){const ke=(pe==null?void 0:pe.zoom)||he||e.viewport.zoom;return EGe(()=>r.value.viewportInitialized).toBe(!0).then(()=>{r.value.setViewport({x:Ce,y:Qe,zoom:ke}).then(()=>{Y(!0)})})}else Y(!0)}),updateNodeInternals:o,viewportHelper:r,$reset:()=>{const z=kZn();if(e.edges=[],e.nodes=[],e.d3Zoom&&e.d3Selection){const Y=az.translate(z.defaultViewport.x??0,z.defaultViewport.y??0).scale(eI(z.defaultViewport.zoom??1,z.minZoom,z.maxZoom)),ie=e.viewportRef.getBoundingClientRect(),te=[[0,0],[ie.width,ie.height]],Z=e.d3Zoom.constrain()(Y,te,z.translateExtent);e.d3Zoom.transform(e.d3Selection,Z)}le(z)},$destroy:()=>{}}}const wws=["data-id","data-handleid","data-nodeid","data-handlepos"],Ows={name:"Handle",compatConfig:{MODE:3}},mm=Je({...Ows,props:{id:{default:null},type:{},position:{default:()=>Vi.Top},isValidConnection:{type:Function},connectable:{type:[Boolean,Number,String,Function],default:void 0},connectableStart:{type:Boolean,default:!0},connectableEnd:{type:Boolean,default:!0}},setup(e,{expose:t}){const n=mri(e,["position","connectable","connectableStart","connectableEnd","id"]),r=Pa(()=>n.type??"source"),o=Pa(()=>n.isValidConnection??null),{id:s,connectionStartHandle:a,connectionClickStartHandle:l,connectionEndHandle:d,vueFlowRef:u,nodesConnectable:h,noDragClassName:g,noPanClassName:m}=nl(),{id:v,node:f,nodeEl:k,connectedEdges:A}=gZn(),p=fe(),b=Pa(()=>typeof e.connectableStart<"u"?e.connectableStart:!0),w=Pa(()=>typeof e.connectableEnd<"u"?e.connectableEnd:!0),O=Pa(()=>{var T,D,P,Q,M,B;return((T=a.value)==null?void 0:T.nodeId)===v&&((D=a.value)==null?void 0:D.id)===e.id&&((P=a.value)==null?void 0:P.type)===r.value||((Q=d.value)==null?void 0:Q.nodeId)===v&&((M=d.value)==null?void 0:M.id)===e.id&&((B=d.value)==null?void 0:B.type)===r.value}),y=Pa(()=>{var T,D,P;return((T=l.value)==null?void 0:T.nodeId)===v&&((D=l.value)==null?void 0:D.id)===e.id&&((P=l.value)==null?void 0:P.type)===r.value}),{handlePointerDown:C,handleClick:_}=fZn({nodeId:v,handleId:e.id,isValidConnection:o,type:r}),S=X(()=>typeof e.connectable=="string"&&e.connectable==="single"?!A.value.some(T=>{const D=T[`${r.value}Handle`];return T[r.value]!==v?!1:D?D===e.id:!0}):typeof e.connectable=="number"?A.value.filter(T=>{const D=T[`${r.value}Handle`];return T[r.value]!==v?!1:D?D===e.id:!0}).length{var T;if(!f.dimensions.width||!f.dimensions.height)return;const D=(T=f.handleBounds[r.value])==null?void 0:T.find(F=>F.id===e.id);if(!u.value||D)return;const P=u.value.querySelector(".vue-flow__transformationpane");if(!k.value||!p.value||!P||!e.id)return;const Q=k.value.getBoundingClientRect(),M=p.value.getBoundingClientRect(),B=window.getComputedStyle(P),{m22:R}=new window.DOMMatrixReadOnly(B.transform),I={id:e.id,position:e.position,x:(M.left-Q.left)/R,y:(M.top-Q.top)/R,type:r.value,nodeId:v,...zOe(p.value)};f.handleBounds[r.value]=[...f.handleBounds[r.value]??[],I]});function L(T){const D=Hst(T);S.value&&b.value&&(D&&T.button===0||!D)&&C(T)}function E(T){!v||!l.value&&!b.value||S.value&&_(T)}return t({handleClick:_,handlePointerDown:C,onClick:E,onPointerDown:L}),(T,D)=>(xe(),Ge("div",{ref_key:"handle",ref:p,"data-id":`${Ae(s)}-${Ae(v)}-${e.id}-${r.value}`,"data-handleid":e.id,"data-nodeid":Ae(v),"data-handlepos":T.position,class:Eo(["vue-flow__handle",[`vue-flow__handle-${T.position}`,`vue-flow__handle-${e.id}`,Ae(g),Ae(m),r.value,{connectable:S.value,connecting:y.value,connectablestart:b.value,connectableend:w.value,connectionindicator:S.value&&(b.value&&!O.value||w.value&&O.value)}]]),onMousedown:L,onTouchstartPassive:L,onClick:E},[Zr(T.$slots,"default",{id:T.id})],42,wws))}}),XOe=function({sourcePosition:e=Vi.Bottom,targetPosition:t=Vi.Top,label:n,connectable:r=!0,isValidTargetPos:o,isValidSourcePos:s,data:a}){const l=a.label??n;return[xn(mm,{type:"target",position:t,connectable:r,isValidConnection:o}),typeof l!="string"&&l?xn(l):xn(sn,[l]),xn(mm,{type:"source",position:e,connectable:r,isValidConnection:s})]};XOe.props=["sourcePosition","targetPosition","label","isValidTargetPos","isValidSourcePos","connectable","data"];XOe.inheritAttrs=!1;XOe.compatConfig={MODE:3};const yws=XOe,GOe=function({targetPosition:e=Vi.Top,label:t,connectable:n=!0,isValidTargetPos:r,data:o}){const s=o.label??t;return[xn(mm,{type:"target",position:e,connectable:n,isValidConnection:r}),typeof s!="string"&&s?xn(s):xn(sn,[s])]};GOe.props=["targetPosition","label","isValidTargetPos","connectable","data"];GOe.inheritAttrs=!1;GOe.compatConfig={MODE:3};const Cws=GOe,YOe=function({sourcePosition:e=Vi.Bottom,label:t,connectable:n=!0,isValidSourcePos:r,data:o}){const s=o.label??t;return[typeof s!="string"&&s?xn(s):xn(sn,[s]),xn(mm,{type:"source",position:e,connectable:n,isValidConnection:r})]};YOe.props=["sourcePosition","label","isValidSourcePos","connectable","data"];YOe.inheritAttrs=!1;YOe.compatConfig={MODE:3};const _ws=YOe,Sws=["transform"],Lws=["width","height","x","y","rx","ry"],xws=["y"],Ews={name:"EdgeText",compatConfig:{MODE:3}},Tws=Je({...Ews,props:{x:{},y:{},label:{},labelStyle:{default:()=>({})},labelShowBg:{type:Boolean,default:!0},labelBgStyle:{default:()=>({})},labelBgPadding:{default:()=>[2,4]},labelBgBorderRadius:{default:2}},setup(e){const t=fe({x:0,y:0,width:0,height:0}),n=fe(null),r=X(()=>`translate(${e.x-t.value.width/2} ${e.y-t.value.height/2})`);An(o),pt([()=>e.x,()=>e.y,n,()=>e.label],o);function o(){if(!n.value)return;const s=n.value.getBBox();(s.width!==t.value.width||s.height!==t.value.height)&&(t.value=s)}return(s,a)=>(xe(),Ge("g",{transform:r.value,class:"vue-flow__edge-textwrapper"},[s.labelShowBg?(xe(),Ge("rect",{key:0,class:"vue-flow__edge-textbg",width:`${t.value.width+2*s.labelBgPadding[0]}px`,height:`${t.value.height+2*s.labelBgPadding[1]}px`,x:-s.labelBgPadding[0],y:-s.labelBgPadding[1],style:no(s.labelBgStyle),rx:s.labelBgBorderRadius,ry:s.labelBgBorderRadius},null,12,Lws)):nn("",!0),ge("text",Gn(s.$attrs,{ref_key:"el",ref:n,class:"vue-flow__edge-text",y:t.value.height/2,dy:"0.3em",style:s.labelStyle}),[Zr(s.$slots,"default",{},()=>[typeof s.label!="string"?(xe(),Ut(Bd(s.label),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(s.label),1)],64))])],16,xws)],8,Sws))}}),Qws=["id","d","marker-end","marker-start"],Dws=["d","stroke-width"],Bws={name:"BaseEdge",inheritAttrs:!1,compatConfig:{MODE:3}},Hre=Je({...Bws,props:{id:{},labelX:{},labelY:{},path:{},label:{},markerStart:{},markerEnd:{},interactionWidth:{default:20},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{}},setup(e,{expose:t}){const n=fe(null),r=fe(null),o=fe(null),s=gri();return t({pathEl:n,interactionEl:r,labelEl:o}),(a,l)=>(xe(),Ge(sn,null,[ge("path",Gn(Ae(s),{id:a.id,ref_key:"pathEl",ref:n,d:a.path,class:"vue-flow__edge-path","marker-end":a.markerEnd,"marker-start":a.markerStart}),null,16,Qws),a.interactionWidth?(xe(),Ge("path",{key:0,ref_key:"interactionEl",ref:r,fill:"none",d:a.path,"stroke-width":a.interactionWidth,"stroke-opacity":0,class:"vue-flow__edge-interaction"},null,8,Dws)):nn("",!0),a.label&&a.labelX&&a.labelY?(xe(),Ut(Tws,{key:1,ref_key:"labelEl",ref:o,x:a.labelX,y:a.labelY,label:a.label,"label-show-bg":a.labelShowBg,"label-bg-style":a.labelBgStyle,"label-bg-padding":a.labelBgPadding,"label-bg-border-radius":a.labelBgBorderRadius,"label-style":a.labelStyle},null,8,["x","y","label","label-show-bg","label-bg-style","label-bg-padding","label-bg-border-radius","label-style"])):nn("",!0)],64))}});function vZn({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,s=n=0?.5*e:t*25*Math.sqrt(-e)}function akn({pos:e,x1:t,y1:n,x2:r,y2:o,c:s}){let a,l;switch(e){case Vi.Left:a=t-Fde(t-r,s),l=n;break;case Vi.Right:a=t+Fde(r-t,s),l=n;break;case Vi.Top:a=t,l=n-Fde(n-o,s);break;case Vi.Bottom:a=t,l=n+Fde(o-n,s);break}return[a,l]}function $st(e){const{sourceX:t,sourceY:n,sourcePosition:r=Vi.Bottom,targetX:o,targetY:s,targetPosition:a=Vi.Top,curvature:l=.25}=e,[d,u]=akn({pos:r,x1:t,y1:n,x2:o,y2:s,c:l}),[h,g]=akn({pos:a,x1:o,y1:s,x2:t,y2:n,c:l}),[m,v,f,k]=AZn({sourceX:t,sourceY:n,targetX:o,targetY:s,sourceControlX:d,sourceControlY:u,targetControlX:h,targetControlY:g});return[`M${t},${n} C${d},${u} ${h},${g} ${o},${s}`,m,v,f,k]}function lkn({pos:e,x1:t,y1:n,x2:r,y2:o}){let s,a;switch(e){case Vi.Left:case Vi.Right:s=.5*(t+r),a=n;break;case Vi.Top:case Vi.Bottom:s=t,a=.5*(n+o);break}return[s,a]}function pZn(e){const{sourceX:t,sourceY:n,sourcePosition:r=Vi.Bottom,targetX:o,targetY:s,targetPosition:a=Vi.Top}=e,[l,d]=lkn({pos:r,x1:t,y1:n,x2:o,y2:s}),[u,h]=lkn({pos:a,x1:o,y1:s,x2:t,y2:n}),[g,m,v,f]=AZn({sourceX:t,sourceY:n,targetX:o,targetY:s,sourceControlX:l,sourceControlY:d,targetControlX:u,targetControlY:h});return[`M${t},${n} C${l},${d} ${u},${h} ${o},${s}`,g,m,v,f]}const ckn={[Vi.Left]:{x:-1,y:0},[Vi.Right]:{x:1,y:0},[Vi.Top]:{x:0,y:-1},[Vi.Bottom]:{x:0,y:1}};function Rws({source:e,sourcePosition:t=Vi.Bottom,target:n}){return t===Vi.Left||t===Vi.Right?e.xe[g]?-1:1)*Q:p[g]=(u[g]>n[g]?-1:1)*Q}}if(t!==r){const P=g==="x"?"y":"x",Q=a[g]===l[P],M=d[P]>u[P],B=d[P]=D?(f=(L.x+E.x)/2,k=v[0].y):(f=v[0].x,k=(L.y+E.y)/2)}return[[e,{x:d.x+A.x,y:d.y+A.y},...v,{x:u.x+p.x,y:u.y+p.y},n],f,k,O,y]}function Mws(e,t,n,r){const o=Math.min(dkn(e,t)/2,dkn(t,n)/2,r),{x:s,y:a}=t;if(e.x===s&&s===n.x||e.y===a&&a===n.y)return`L${s} ${a}`;if(e.y===a){const u=e.x{let O;return w>0&&w{const[n,r,o]=Pws(e);return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),Nws=Fws,Uws=Je({name:"SmoothStepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","borderRadius","markerEnd","markerStart","interactionWidth","offset"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=WGe({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),bZn=Uws,jws=Je({name:"StepEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],setup(e,{attrs:t}){return()=>xn(bZn,{...e,...t,borderRadius:0})}}),Wws=jws,Vws=Je({name:"BezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","curvature","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=$st({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),zws=Vws,Hws=Je({name:"SimpleBezierEdge",props:["sourcePosition","targetPosition","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","sourceY","sourceX","targetX","targetY","markerEnd","markerStart","interactionWidth"],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{const[n,r,o]=pZn({...e,sourcePosition:e.sourcePosition??Vi.Bottom,targetPosition:e.targetPosition??Vi.Top});return xn(Hre,{path:n,labelX:r,labelY:o,...t,...e})}}}),$ws=Hws,Xws={input:_ws,default:yws,output:Cws},Gws={default:zws,straight:Nws,step:Wws,smoothstep:bZn,simplebezier:$ws};function Yws(e,t,n){const r=X(()=>k=>t.value.get(k)),o=X(()=>k=>n.value.get(k)),s=X(()=>{const k={...Gws,...e.edgeTypes},A=Object.keys(k);for(const p of e.edges)p.type&&!A.includes(p.type)&&(k[p.type]=p.type);return k}),a=X(()=>{const k={...Xws,...e.nodeTypes},A=Object.keys(k);for(const p of e.nodes)p.type&&!A.includes(p.type)&&(k[p.type]=p.type);return k}),l=X(()=>e.onlyRenderVisibleElements?nZn(e.nodes,{x:0,y:0,width:e.dimensions.width,height:e.dimensions.height},e.viewport,!0):e.nodes),d=X(()=>{if(e.onlyRenderVisibleElements){const k=[];for(const A of e.edges){const p=t.value.get(A.source),b=t.value.get(A.target);H3s({sourcePos:p.computedPosition||{x:0,y:0},targetPos:b.computedPosition||{x:0,y:0},sourceWidth:p.dimensions.width,sourceHeight:p.dimensions.height,targetWidth:b.dimensions.width,targetHeight:b.dimensions.height,width:e.dimensions.width,height:e.dimensions.height,viewport:e.viewport})&&k.push(A)}return k}return e.edges}),u=X(()=>[...l.value,...d.value]),h=X(()=>{const k=[];for(const A of e.nodes)A.selected&&k.push(A);return k}),g=X(()=>{const k=[];for(const A of e.edges)A.selected&&k.push(A);return k}),m=X(()=>[...h.value,...g.value]),v=X(()=>{const k=[];for(const A of e.nodes)A.dimensions.width&&A.dimensions.height&&A.handleBounds!==void 0&&k.push(A);return k}),f=X(()=>l.value.length>0&&v.value.length===l.value.length);return{getNode:r,getEdge:o,getElements:u,getEdgeTypes:s,getNodeTypes:a,getEdges:d,getNodes:l,getSelectedElements:m,getSelectedNodes:h,getSelectedEdges:g,getNodesInitialized:v,areNodesInitialized:f}}let Zws=class jF{constructor(){this.currentId=0,this.flows=new Map}static getInstance(){var t;const n=(t=ps())==null?void 0:t.appContext.app,r=(n==null?void 0:n.config.globalProperties.$vueFlowStorage)??jF.instance;return jF.instance=r??new jF,n&&(n.config.globalProperties.$vueFlowStorage=jF.instance),jF.instance}set(t,n){return this.flows.set(t,n)}get(t){return this.flows.get(t)}remove(t){return this.flows.delete(t)}create(t,n){const r=kZn(),o=hs(r),s={};for(const[m,v]of Object.entries(o.hooks)){const f=`on${m.charAt(0).toUpperCase()+m.slice(1)}`;s[f]=v.on}const a={};for(const[m,v]of Object.entries(o.hooks))a[m]=v.trigger;const l=X(()=>{const m=new Map;for(const v of o.nodes)m.set(v.id,v);return m}),d=X(()=>{const m=new Map;for(const v of o.edges)m.set(v.id,v);return m}),u=Yws(o,l,d),h=bws(o,l,d);h.setState({...o,...n});const g={...s,...u,...h,...UAs(o),nodeLookup:l,edgeLookup:d,emits:a,id:t,vueFlowVersion:"1.48.2",$destroy:()=>{this.remove(t)}};return this.set(t,g),g}getId(){return`vue-flow-${this.currentId++}`}};function nl(e){const t=Zws.getInstance(),n=vz(),r=typeof e=="object",o=r?e:{id:e},s=o.id,a=s??(n==null?void 0:n.vueFlowId);let l;if(n){const d=bt(skn,null);typeof d<"u"&&d!==null&&(!a||d.id===a)&&(l=d)}if(l||a&&(l=t.get(a)),!l||a&&l.id!==a){const d=s??t.getId(),u=t.create(d,o);l=u,(n??One(!0)).run(()=>{pt(u.applyDefault,(g,m,v)=>{const f=A=>{u.applyNodeChanges(A)},k=A=>{u.applyEdgeChanges(A)};g?(u.onNodesChange(f),u.onEdgesChange(k)):(u.hooks.value.nodesChange.off(f),u.hooks.value.edgesChange.off(k)),v(()=>{u.hooks.value.nodesChange.off(f),u.hooks.value.edgesChange.off(k)})},{immediate:!0}),xte(()=>{if(l){const g=t.get(l.id);g?g.$destroy():zre(`No store instance found for id ${l.id} in storage.`)}})})}else r&&l.setState(o);if(n&&(Yi(skn,l),n.vueFlowId=l.id),r){const d=ps();(d==null?void 0:d.type.name)!=="VueFlow"&&l.emits.error(new Lf(Yh.USEVUEFLOW_OPTIONS))}return l}function qws(e){const{emits:t,dimensions:n}=nl();let r;An(()=>{const o=()=>{var s,a;if(!e.value||!(((a=(s=e.value).checkVisibility)==null?void 0:a.call(s))??!0))return;const l=zOe(e.value);(l.width===0||l.height===0)&&t.error(new Lf(Yh.MISSING_VIEWPORT_DIMENSIONS)),n.value={width:l.width||500,height:l.height||500}};o(),window.addEventListener("resize",o),e.value&&(r=new ResizeObserver(()=>o()),r.observe(e.value)),qs(()=>{window.removeEventListener("resize",o),r&&e.value&&r.unobserve(e.value)})})}const Kws={name:"UserSelection",compatConfig:{MODE:3}},Jws=Je({...Kws,props:{userSelectionRect:{}},setup(e){return(t,n)=>(xe(),Ge("div",{class:"vue-flow__selection vue-flow__container",style:no({width:`${t.userSelectionRect.width}px`,height:`${t.userSelectionRect.height}px`,transform:`translate(${t.userSelectionRect.x}px, ${t.userSelectionRect.y}px)`})},null,4))}}),eOs=["tabIndex"],tOs={name:"NodesSelection",compatConfig:{MODE:3}},nOs=Je({...tOs,setup(e){const{emits:t,viewport:n,getSelectedNodes:r,noPanClassName:o,disableKeyboardA11y:s,userSelectionActive:a}=nl(),l=mZn(),d=fe(null),u=hZn({el:d,onStart(f){t.selectionDragStart(f),t.nodeDragStart(f)},onDrag(f){t.selectionDrag(f),t.nodeDrag(f)},onStop(f){t.selectionDragStop(f),t.nodeDragStop(f)}});An(()=>{var f;s.value||(f=d.value)==null||f.focus({preventScroll:!0})});const h=X(()=>tZn(r.value)),g=X(()=>({width:`${h.value.width}px`,height:`${h.value.height}px`,top:`${h.value.y}px`,left:`${h.value.x}px`}));function m(f){t.selectionContextMenu({event:f,nodes:r.value})}function v(f){s.value||kj[f.key]&&(f.preventDefault(),l({x:kj[f.key].x,y:kj[f.key].y},f.shiftKey))}return(f,k)=>!Ae(a)&&h.value.width&&h.value.height?(xe(),Ge("div",{key:0,class:Eo(["vue-flow__nodesselection vue-flow__container",Ae(o)]),style:no({transform:`translate(${Ae(n).x}px,${Ae(n).y}px) scale(${Ae(n).zoom})`})},[ge("div",{ref_key:"el",ref:d,class:Eo([{dragging:Ae(u)},"vue-flow__nodesselection-rect"]),style:no(g.value),tabIndex:Ae(s)?void 0:-1,onContextmenu:m,onKeydown:v},null,46,eOs)],6)):nn("",!0)}});function iOs(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}const rOs={name:"Pane",compatConfig:{MODE:3}},oOs=Je({...rOs,props:{isSelecting:{type:Boolean},selectionKeyPressed:{type:Boolean}},setup(e){const{vueFlowRef:t,nodes:n,viewport:r,emits:o,userSelectionActive:s,removeSelectedElements:a,userSelectionRect:l,elementsSelectable:d,nodesSelectionActive:u,getSelectedEdges:h,getSelectedNodes:g,removeNodes:m,removeEdges:v,selectionMode:f,deleteKeyCode:k,multiSelectionKeyCode:A,multiSelectionActive:p,edgeLookup:b,nodeLookup:w,connectionLookup:O,defaultEdgeOptions:y,connectionStartHandle:C,panOnDrag:_}=nl(),S=nd(null),L=nd(new Set),E=nd(new Set),T=nd(null),D=Pa(()=>d.value&&(e.isSelecting||s.value)),P=Pa(()=>C.value!==null);let Q=!1,M=!1;const B=cq(k,{actInsideInputWithModifier:!1}),R=cq(A);pt(B,q=>{q&&(m(g.value),v(h.value),u.value=!1)}),pt(R,q=>{p.value=q});function I(q,re){return J=>{J.target===re&&(q==null||q(J))}}function F(q){if(Q||P.value){Q=!1;return}o.paneClick(q),a(),u.value=!1}function j(q){var re;if(Array.isArray(_.value)&&((re=_.value)!=null&&re.includes(2))){q.preventDefault();return}o.paneContextMenu(q)}function W(q){o.paneScroll(q)}function H(q){var re,J,oe;if(T.value=((re=t.value)==null?void 0:re.getBoundingClientRect())??null,!d.value||!e.isSelecting||q.button!==0||q.target!==S.value||!T.value)return;(oe=(J=q.target)==null?void 0:J.setPointerCapture)==null||oe.call(J,q.pointerId);const{x:se,y:le}=iOs(q,T.value);M=!0,Q=!1,a(),l.value={width:0,height:0,startX:se,startY:le,x:se,y:le},o.selectionStart(q)}function $(q){var re;if(!T.value||!l.value)return;Q=!0;const{x:J,y:oe}=QO(q,T.value),{startX:se=0,startY:le=0}=l.value,ue={startX:se,startY:le,x:JY.id)),E.value=new Set;const z=((re=y.value)==null?void 0:re.selectable)??!0;for(const Y of L.value){const ie=O.value.get(Y);if(ie)for(const{edgeId:te}of ie.values()){const Z=b.value.get(te);Z&&(Z.selectable??z)&&E.value.add(te)}}if(!okn(ee,L.value)){const Y=m5(w.value,L.value,!0);o.nodesChange(Y)}if(!okn(de,E.value)){const Y=m5(b.value,E.value);o.edgesChange(Y)}l.value=ue,s.value=!0,u.value=!1}function G(q){var re;q.button!==0||!M||((re=q.target)==null||re.releasePointerCapture(q.pointerId),!s.value&&l.value&&q.target===S.value&&F(q),s.value=!1,l.value=null,u.value=L.value.size>0,o.selectionEnd(q),e.selectionKeyPressed&&(Q=!1),M=!1)}return(q,re)=>(xe(),Ge("div",{ref_key:"container",ref:S,class:Eo(["vue-flow__pane vue-flow__container",{selection:q.isSelecting}]),onClick:re[0]||(re[0]=J=>D.value?void 0:I(F,S.value)(J)),onContextmenu:re[1]||(re[1]=J=>I(j,S.value)(J)),onWheelPassive:re[2]||(re[2]=J=>I(W,S.value)(J)),onPointerenter:re[3]||(re[3]=J=>D.value?void 0:Ae(o).paneMouseEnter(J)),onPointerdown:re[4]||(re[4]=J=>D.value?H(J):Ae(o).paneMouseMove(J)),onPointermove:re[5]||(re[5]=J=>D.value?$(J):Ae(o).paneMouseMove(J)),onPointerup:re[6]||(re[6]=J=>D.value?G(J):void 0),onPointerleave:re[7]||(re[7]=J=>Ae(o).paneMouseLeave(J))},[Zr(q.$slots,"default"),Ae(s)&&Ae(l)?(xe(),Ut(Jws,{key:0,"user-selection-rect":Ae(l)},null,8,["user-selection-rect"])):nn("",!0),Ae(u)&&Ae(g).length?(xe(),Ut(nOs,{key:1})):nn("",!0)],34))}}),sOs={name:"Transform",compatConfig:{MODE:3}},aOs=Je({...sOs,setup(e){const{viewport:t,fitViewOnInit:n,fitViewOnInitDone:r}=nl(),o=X(()=>n.value?!r.value:!1),s=X(()=>`translate(${t.value.x}px,${t.value.y}px) scale(${t.value.zoom})`);return(a,l)=>(xe(),Ge("div",{class:"vue-flow__transformationpane vue-flow__container",style:no({transform:s.value,opacity:o.value?0:void 0})},[Zr(a.$slots,"default")],4))}}),lOs={name:"Viewport",compatConfig:{MODE:3}},cOs=Je({...lOs,setup(e){const{minZoom:t,maxZoom:n,defaultViewport:r,translateExtent:o,zoomActivationKeyCode:s,selectionKeyCode:a,panActivationKeyCode:l,panOnScroll:d,panOnScrollMode:u,panOnScrollSpeed:h,panOnDrag:g,zoomOnDoubleClick:m,zoomOnPinch:v,zoomOnScroll:f,preventScrolling:k,noWheelClassName:A,noPanClassName:p,emits:b,connectionStartHandle:w,userSelectionActive:O,paneDragging:y,d3Zoom:C,d3Selection:_,d3ZoomHandler:S,viewport:L,viewportRef:E,paneClickDistance:T}=nl();qws(E);const D=nd(!1),P=nd(!1);let Q=null,M=!1,B=0,R={x:0,y:0,zoom:0};const I=cq(l),F=cq(a),j=cq(s),W=Pa(()=>(!F.value||F.value&&a.value===!0)&&(I.value||g.value)),H=Pa(()=>I.value||d.value),$=Pa(()=>a.value===!0&&W.value!==!0),G=Pa(()=>F.value&&a.value!==!0||O.value||$.value),q=Pa(()=>w.value!==null);An(()=>{if(!E.value){zre("Viewport element is missing");return}const le=E.value,ue=le.getBoundingClientRect(),ee=C3s().clickDistance(T.value).scaleExtent([t.value,n.value]).translateExtent(o.value),de=$b(le).call(ee),z=de.on("wheel.zoom"),Y=az.translate(r.value.x??0,r.value.y??0).scale(eI(r.value.zoom??1,t.value,n.value)),ie=[[0,0],[ue.width,ue.height]],te=ee.constrain()(Y,ie,o.value);ee.transform(de,te),ee.wheelDelta(H0n),C.value=ee,_.value=de,S.value=z,L.value={x:te.x,y:te.y,zoom:te.k},ee.on("start",Z=>{var he;if(!Z.sourceEvent)return null;B=Z.sourceEvent.button,D.value=!0;const pe=oe(Z.transform);((he=Z.sourceEvent)==null?void 0:he.type)==="mousedown"&&(y.value=!0),R=pe,b.viewportChangeStart(pe),b.moveStart({event:Z,flowTransform:pe})}),ee.on("end",Z=>{if(!Z.sourceEvent)return null;if(D.value=!1,y.value=!1,re(W.value,B??0)&&!M&&b.paneContextMenu(Z.sourceEvent),M=!1,J(R,Z.transform)){const he=oe(Z.transform);R=he,b.viewportChangeEnd(he),b.moveEnd({event:Z,flowTransform:he})}}),ee.filter(Z=>{var he;const pe=j.value||f.value,Ce=v.value&&Z.ctrlKey,Qe=Z.button,ke=Z.type==="wheel";if(Qe===1&&Z.type==="mousedown"&&(se(Z,"vue-flow__node")||se(Z,"vue-flow__edge")))return!0;if(!W.value&&!pe&&!H.value&&!m.value&&!v.value||O.value||q.value&&!ke||!m.value&&Z.type==="dblclick"||se(Z,A.value)&&ke||se(Z,p.value)&&(!ke||H.value&&ke&&!j.value)||!v.value&&Z.ctrlKey&&ke||!pe&&!H.value&&!Ce&&ke)return!1;if(!v&&Z.type==="touchstart"&&((he=Z.touches)==null?void 0:he.length)>1)return Z.preventDefault(),!1;if(!W.value&&(Z.type==="mousedown"||Z.type==="touchstart")||$.value&&Array.isArray(g.value)&&g.value.includes(0)&&Qe===0||Array.isArray(g.value)&&!g.value.includes(Qe)&&(Z.type==="mousedown"||Z.type==="touchstart"))return!1;const me=Array.isArray(g.value)&&g.value.includes(Qe)||a.value===!0&&Array.isArray(g.value)&&!g.value.includes(0)||!Qe||Qe<=1;return(!Z.ctrlKey||I.value||ke)&&me}),pt([O,W],()=>{O.value&&!D.value?ee.on("zoom",null):O.value||ee.on("zoom",Z=>{L.value={x:Z.transform.x,y:Z.transform.y,zoom:Z.transform.k};const he=oe(Z.transform);M=re(W.value,B??0),b.viewportChange(he),b.move({event:Z,flowTransform:he})})},{immediate:!0}),pt([O,H,u,j,v,k,A],()=>{H.value&&!j.value&&!O.value?de.on("wheel.zoom",Z=>{if(se(Z,A.value))return!1;const he=j.value||f.value,pe=v.value&&Z.ctrlKey;if(!(!k.value||H.value||he||pe))return!1;Z.preventDefault(),Z.stopImmediatePropagation();const Qe=de.property("__zoom").k||1,ke=z2e();if(!I.value&&Z.ctrlKey&&v.value&&ke){const Ye=Kw(Z),ot=H0n(Z),We=Qe*2**ot;ee.scaleTo(de,We,Ye,Z);return}const me=Z.deltaMode===1?20:1;let _e=u.value===lq.Vertical?0:Z.deltaX*me,Te=u.value===lq.Horizontal?0:Z.deltaY*me;!ke&&Z.shiftKey&&u.value!==lq.Vertical&&!_e&&Te&&(_e=Te,Te=0),ee.translateBy(de,-(_e/Qe)*h.value,-(Te/Qe)*h.value);const De=oe(de.property("__zoom"));Q&&clearTimeout(Q),P.value?(b.move({event:Z,flowTransform:De}),b.viewportChange(De),Q=setTimeout(()=>{b.moveEnd({event:Z,flowTransform:De}),b.viewportChangeEnd(De),P.value=!1},150)):(P.value=!0,b.moveStart({event:Z,flowTransform:De}),b.viewportChangeStart(De))},{passive:!1}):typeof z<"u"&&de.on("wheel.zoom",function(Z,he){const pe=!k.value&&Z.type==="wheel"&&!Z.ctrlKey,Ce=j.value||f.value,Qe=v.value&&Z.ctrlKey;if(!Ce&&!d.value&&!Qe&&Z.type==="wheel"||pe||se(Z,A.value))return null;Z.preventDefault(),z.call(this,Z,he)},{passive:!1})},{immediate:!0})});function re(le,ue){return ue===2&&Array.isArray(le)&&le.includes(2)}function J(le,ue){return le.x!==ue.x&&!Number.isNaN(ue.x)||le.y!==ue.y&&!Number.isNaN(ue.y)||le.zoom!==ue.k&&!Number.isNaN(ue.k)}function oe(le){return{x:le.x,y:le.y,zoom:le.k}}function se(le,ue){return le.target.closest(`.${ue}`)}return(le,ue)=>(xe(),Ge("div",{ref_key:"viewportRef",ref:E,class:"vue-flow__viewport vue-flow__container"},[c(oOs,{"is-selecting":G.value,"selection-key-pressed":Ae(F),class:Eo({connecting:q.value,dragging:Ae(y),draggable:Ae(g)===!0||Array.isArray(Ae(g))&&Ae(g).includes(0)})},{default:Oe(()=>[c(aOs,null,{default:Oe(()=>[Zr(le.$slots,"default")]),_:3})]),_:3},8,["is-selecting","selection-key-pressed","class"])],512))}}),dOs=["id"],uOs=["id"],hOs=["id"],fOs={name:"A11yDescriptions",compatConfig:{MODE:3}},gOs=Je({...fOs,setup(e){const{id:t,disableKeyboardA11y:n,ariaLiveMessage:r}=nl();return(o,s)=>(xe(),Ge(sn,null,[ge("div",{id:`${Ae(XYn)}-${Ae(t)}`,style:{display:"none"}}," Press enter or space to select a node. "+Pe(Ae(n)?"":"You can then use the arrow keys to move the node around.")+" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. ",9,dOs),ge("div",{id:`${Ae(GYn)}-${Ae(t)}`,style:{display:"none"}}," Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. ",8,uOs),Ae(n)?nn("",!0):(xe(),Ge("div",{key:0,id:`${Ae(T3s)}-${Ae(t)}`,"aria-live":"assertive","aria-atomic":"true",style:{position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)","clip-path":"inset(100%)"}},Pe(Ae(r)),9,hOs))],64))}});function mOs(){const e=nl();pt(()=>e.viewportHelper.value.viewportInitialized,t=>{t&&setTimeout(()=>{e.emits.init(e),e.emits.paneReady(e)},1)})}function kOs(e,t,n){return n===Vi.Left?e-t:n===Vi.Right?e+t:e}function vOs(e,t,n){return n===Vi.Top?e-t:n===Vi.Bottom?e+t:e}const Xst=function({radius:e=10,centerX:t=0,centerY:n=0,position:r=Vi.Top,type:o}){return xn("circle",{class:`vue-flow__edgeupdater vue-flow__edgeupdater-${o}`,cx:kOs(t,e,r),cy:vOs(n,e,r),r:e,stroke:"transparent",fill:"transparent"})};Xst.props=["radius","centerX","centerY","position","type"];Xst.compatConfig={MODE:3};const ukn=Xst,AOs=Je({name:"Edge",compatConfig:{MODE:3},props:["id"],setup(e){const{id:t,addSelectedEdges:n,connectionMode:r,edgeUpdaterRadius:o,emits:s,nodesSelectionActive:a,noPanClassName:l,getEdgeTypes:d,removeSelectedEdges:u,findEdge:h,findNode:g,isValidConnection:m,multiSelectionActive:v,disableKeyboardA11y:f,elementsSelectable:k,edgesUpdatable:A,edgesFocusable:p,hooks:b}=nl(),w=X(()=>h(e.id)),{emit:O,on:y}=aws(w.value,s),C=bt($Oe),_=ps(),S=fe(!1),L=fe(!1),E=fe(""),T=fe(null),D=fe("source"),P=fe(null),Q=Pa(()=>typeof w.value.selectable>"u"?k.value:w.value.selectable),M=Pa(()=>typeof w.value.updatable>"u"?A.value:w.value.updatable),B=Pa(()=>typeof w.value.focusable>"u"?p.value:w.value.focusable);Yi(rws,e.id),Yi(ows,P);const R=X(()=>w.value.class instanceof Function?w.value.class(w.value):w.value.class),I=X(()=>w.value.style instanceof Function?w.value.style(w.value):w.value.style),F=X(()=>{const Y=w.value.type||"default",ie=C==null?void 0:C[`edge-${Y}`];if(ie)return ie;let te=w.value.template??d.value[Y];if(typeof te=="string"&&_){const Z=Object.keys(_.appContext.components);Z&&Z.includes(Y)&&(te=_n(Y,!1))}return te&&typeof te!="string"?te:(s.error(new Lf(Yh.EDGE_TYPE_MISSING,te)),!1)}),{handlePointerDown:j}=fZn({nodeId:E,handleId:T,type:D,isValidConnection:m,edgeUpdaterType:D,onEdgeUpdate:$,onEdgeUpdateEnd:G});return()=>{const Y=g(w.value.source),ie=g(w.value.target),te="pathOptions"in w.value?w.value.pathOptions:{};if(!Y&&!ie)return s.error(new Lf(Yh.EDGE_SOURCE_TARGET_MISSING,w.value.id,w.value.source,w.value.target)),null;if(!Y)return s.error(new Lf(Yh.EDGE_SOURCE_MISSING,w.value.id,w.value.source)),null;if(!ie)return s.error(new Lf(Yh.EDGE_TARGET_MISSING,w.value.id,w.value.target)),null;if(!w.value||w.value.hidden||Y.hidden||ie.hidden)return null;let Z;r.value===H6.Strict?Z=Y.handleBounds.source:Z=[...Y.handleBounds.source||[],...Y.handleBounds.target||[]];const he=J0n(Z,w.value.sourceHandle);let pe;r.value===H6.Strict?pe=ie.handleBounds.target:pe=[...ie.handleBounds.target||[],...ie.handleBounds.source||[]];const Ce=J0n(pe,w.value.targetHandle),Qe=(he==null?void 0:he.position)||Vi.Bottom,ke=(Ce==null?void 0:Ce.position)||Vi.Top,{x:me,y:_e}=lz(Y,he,Qe),{x:Te,y:De}=lz(ie,Ce,ke);return w.value.sourceX=me,w.value.sourceY=_e,w.value.targetX=Te,w.value.targetY=De,xn("g",{ref:P,key:e.id,"data-id":e.id,class:["vue-flow__edge",`vue-flow__edge-${F.value===!1?"default":w.value.type||"default"}`,l.value,R.value,{updating:S.value,selected:w.value.selected,animated:w.value.animated,inactive:!Q.value&&!b.value.edgeClick.hasListeners()}],tabIndex:B.value?0:void 0,"aria-label":w.value.ariaLabel===null?void 0:w.value.ariaLabel??`Edge from ${w.value.source} to ${w.value.target}`,"aria-describedby":B.value?`${GYn}-${t}`:void 0,"aria-roledescription":"edge",role:B.value?"group":"img",...w.value.domAttributes,onClick:re,onContextmenu:J,onDblclick:oe,onMouseenter:se,onMousemove:le,onMouseleave:ue,onKeyDown:B.value?z:void 0},[L.value?null:xn(F.value===!1?d.value.default:F.value,{id:e.id,sourceNode:Y,targetNode:ie,source:w.value.source,target:w.value.target,type:w.value.type,updatable:M.value,selected:w.value.selected,animated:w.value.animated,label:w.value.label,labelStyle:w.value.labelStyle,labelShowBg:w.value.labelShowBg,labelBgStyle:w.value.labelBgStyle,labelBgPadding:w.value.labelBgPadding,labelBgBorderRadius:w.value.labelBgBorderRadius,data:w.value.data,events:{...w.value.events,...y},style:I.value,markerStart:`url('#${Ite(w.value.markerStart,t)}')`,markerEnd:`url('#${Ite(w.value.markerEnd,t)}')`,sourcePosition:Qe,targetPosition:ke,sourceX:me,sourceY:_e,targetX:Te,targetY:De,sourceHandleId:w.value.sourceHandle,targetHandleId:w.value.targetHandle,interactionWidth:w.value.interactionWidth,...te}),[M.value==="source"||M.value===!0?[xn("g",{onMousedown:ee,onMouseenter:W,onMouseout:H},xn(ukn,{position:Qe,centerX:me,centerY:_e,radius:o.value,type:"source","data-type":"source"}))]:null,M.value==="target"||M.value===!0?[xn("g",{onMousedown:de,onMouseenter:W,onMouseout:H},xn(ukn,{position:ke,centerX:Te,centerY:De,radius:o.value,type:"target","data-type":"target"}))]:null]])};function W(){S.value=!0}function H(){S.value=!1}function $(Y,ie){O.update({event:Y,edge:w.value,connection:ie})}function G(Y){O.updateEnd({event:Y,edge:w.value}),L.value=!1}function q(Y,ie){Y.button===0&&(L.value=!0,E.value=ie?w.value.target:w.value.source,T.value=(ie?w.value.targetHandle:w.value.sourceHandle)??null,D.value=ie?"target":"source",O.updateStart({event:Y,edge:w.value}),j(Y))}function re(Y){var ie;const te={event:Y,edge:w.value};Q.value&&(a.value=!1,w.value.selected&&v.value?(u([w.value]),(ie=P.value)==null||ie.blur()):n([w.value])),O.click(te)}function J(Y){O.contextMenu({event:Y,edge:w.value})}function oe(Y){O.doubleClick({event:Y,edge:w.value})}function se(Y){O.mouseEnter({event:Y,edge:w.value})}function le(Y){O.mouseMove({event:Y,edge:w.value})}function ue(Y){O.mouseLeave({event:Y,edge:w.value})}function ee(Y){q(Y,!0)}function de(Y){q(Y,!1)}function z(Y){var ie;!f.value&&YYn.includes(Y.key)&&Q.value&&(Y.key==="Escape"?((ie=P.value)==null||ie.blur(),u([h(e.id)])):n([h(e.id)]))}}}),pOs=AOs,bOs=Je({name:"ConnectionLine",compatConfig:{MODE:3},setup(){var e;const{id:t,connectionMode:n,connectionStartHandle:r,connectionEndHandle:o,connectionPosition:s,connectionLineType:a,connectionLineStyle:l,connectionLineOptions:d,connectionStatus:u,viewport:h,findNode:g}=nl(),m=(e=bt($Oe))==null?void 0:e["connection-line"],v=X(()=>{var b;return g((b=r.value)==null?void 0:b.nodeId)}),f=X(()=>{var b;return g((b=o.value)==null?void 0:b.nodeId)??null}),k=X(()=>({x:(s.value.x-h.value.x)/h.value.zoom,y:(s.value.y-h.value.y)/h.value.zoom})),A=X(()=>d.value.markerStart?`url(#${Ite(d.value.markerStart,t)})`:""),p=X(()=>d.value.markerEnd?`url(#${Ite(d.value.markerEnd,t)})`:"");return()=>{var b,w,O;if(!v.value||!r.value)return null;const y=r.value.id,C=r.value.type,_=v.value.handleBounds;let S=(_==null?void 0:_[C])??[];if(n.value===H6.Loose){const I=(_==null?void 0:_[C==="source"?"target":"source"])??[];S=[...S,...I]}if(!S)return null;const L=(y?S.find(I=>I.id===y):S[0])??null,E=(L==null?void 0:L.position)??Vi.Top,{x:T,y:D}=lz(v.value,L,E);let P=null;f.value&&(n.value===H6.Strict?P=((b=f.value.handleBounds[C==="source"?"target":"source"])==null?void 0:b.find(I=>{var F;return I.id===((F=o.value)==null?void 0:F.id)}))||null:P=((w=[...f.value.handleBounds.source??[],...f.value.handleBounds.target??[]])==null?void 0:w.find(I=>{var F;return I.id===((F=o.value)==null?void 0:F.id)}))||null);const Q=((O=o.value)==null?void 0:O.position)??(E?UGe[E]:null);if(!E||!Q)return null;const M=a.value??d.value.type??FT.Bezier;let B="";const R={sourceX:T,sourceY:D,sourcePosition:E,targetX:k.value.x,targetY:k.value.y,targetPosition:Q};return M===FT.Bezier?[B]=$st(R):M===FT.Step?[B]=WGe({...R,borderRadius:0}):M===FT.SmoothStep?[B]=WGe(R):M===FT.SimpleBezier?[B]=pZn(R):B=`M${T},${D} ${k.value.x},${k.value.y}`,xn("svg",{class:"vue-flow__edges vue-flow__connectionline vue-flow__container"},xn("g",{class:"vue-flow__connection"},m?xn(m,{sourceX:T,sourceY:D,sourcePosition:E,targetX:k.value.x,targetY:k.value.y,targetPosition:Q,sourceNode:v.value,sourceHandle:L,targetNode:f.value,targetHandle:P,markerEnd:p.value,markerStart:A.value,connectionStatus:u.value}):xn("path",{d:B,class:[d.value.class,u.value,"vue-flow__connection-path"],style:{...l.value,...d.value.style},"marker-end":p.value,"marker-start":A.value})))}}}),wOs=bOs,OOs=["id","markerWidth","markerHeight","markerUnits","orient"],yOs={name:"MarkerType",compatConfig:{MODE:3}},COs=Je({...yOs,props:{id:{},type:{},color:{default:"none"},width:{default:12.5},height:{default:12.5},markerUnits:{default:"strokeWidth"},orient:{default:"auto-start-reverse"},strokeWidth:{default:1}},setup(e){return(t,n)=>(xe(),Ge("marker",{id:t.id,class:"vue-flow__arrowhead",viewBox:"-10 -10 20 20",refX:"0",refY:"0",markerWidth:`${t.width}`,markerHeight:`${t.height}`,markerUnits:t.markerUnits,orient:t.orient},[t.type===Ae(FGe).ArrowClosed?(xe(),Ge("polyline",{key:0,style:no({stroke:t.color,fill:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",points:"-5,-4 0,0 -5,4 -5,-4"},null,4)):nn("",!0),t.type===Ae(FGe).Arrow?(xe(),Ge("polyline",{key:1,style:no({stroke:t.color,strokeWidth:t.strokeWidth}),"stroke-linecap":"round","stroke-linejoin":"round",fill:"none",points:"-5,-4 0,0 -5,4"},null,4)):nn("",!0)],8,OOs))}}),_Os={class:"vue-flow__marker vue-flow__container","aria-hidden":"true"},SOs={name:"MarkerDefinitions",compatConfig:{MODE:3}},LOs=Je({...SOs,setup(e){const{id:t,edges:n,connectionLineOptions:r,defaultMarkerColor:o}=nl(),s=X(()=>{const a=new Set,l=[],d=u=>{if(u){const h=Ite(u,t);a.has(h)||(typeof u=="object"?l.push({...u,id:h,color:u.color||o.value}):l.push({id:h,color:o.value,type:u}),a.add(h))}};for(const u of[r.value.markerEnd,r.value.markerStart])d(u);for(const u of n.value)for(const h of[u.markerStart,u.markerEnd])d(h);return l.sort((u,h)=>u.id.localeCompare(h.id))});return(a,l)=>(xe(),Ge("svg",_Os,[ge("defs",null,[(xe(!0),Ge(sn,null,Bi(s.value,d=>(xe(),Ut(COs,{id:d.id,key:d.id,type:d.type,color:d.color,width:d.width,height:d.height,markerUnits:d.markerUnits,"stroke-width":d.strokeWidth,orient:d.orient},null,8,["id","type","color","width","height","markerUnits","stroke-width","orient"]))),128))])]))}}),xOs={name:"Edges",compatConfig:{MODE:3}},EOs=Je({...xOs,setup(e){const{findNode:t,getEdges:n,elevateEdgesOnSelect:r}=nl();return(o,s)=>(xe(),Ge(sn,null,[c(LOs),(xe(!0),Ge(sn,null,Bi(Ae(n),a=>(xe(),Ge("svg",{key:a.id,class:"vue-flow__edges vue-flow__container",style:no({zIndex:Ae($3s)(a,Ae(t),Ae(r))})},[c(Ae(pOs),{id:a.id},null,8,["id"])],4))),128)),c(Ae(wOs))],64))}}),TOs=Je({name:"Node",compatConfig:{MODE:3},props:["id","resizeObserver"],setup(e){const{id:t,noPanClassName:n,selectNodesOnDrag:r,nodesSelectionActive:o,multiSelectionActive:s,emits:a,removeSelectedNodes:l,addSelectedNodes:d,updateNodeDimensions:u,onUpdateNodeInternals:h,getNodeTypes:g,nodeExtent:m,elevateNodesOnSelect:v,disableKeyboardA11y:f,ariaLiveMessage:k,snapToGrid:A,snapGrid:p,nodeDragThreshold:b,nodesDraggable:w,elementsSelectable:O,nodesConnectable:y,nodesFocusable:C,hooks:_}=nl(),S=fe(null);Yi(uZn,S),Yi(dZn,e.id);const L=bt($Oe),E=ps(),T=mZn(),{node:D,parentNode:P}=gZn(e.id),{emit:Q,on:M}=uws(D,a),B=Pa(()=>typeof D.draggable>"u"?w.value:D.draggable),R=Pa(()=>typeof D.selectable>"u"?O.value:D.selectable),I=Pa(()=>typeof D.connectable>"u"?y.value:D.connectable),F=Pa(()=>typeof D.focusable>"u"?C.value:D.focusable),j=X(()=>R.value||B.value||_.value.nodeClick.hasListeners()||_.value.nodeDoubleClick.hasListeners()||_.value.nodeMouseEnter.hasListeners()||_.value.nodeMouseMove.hasListeners()||_.value.nodeMouseLeave.hasListeners()),W=Pa(()=>!!D.dimensions.width&&!!D.dimensions.height),H=X(()=>{const ie=D.type||"default",te=L==null?void 0:L[`node-${ie}`];if(te)return te;let Z=D.template||g.value[ie];if(typeof Z=="string"&&E){const he=Object.keys(E.appContext.components);he&&he.includes(ie)&&(Z=_n(ie,!1))}return Z&&typeof Z!="string"?Z:(a.error(new Lf(Yh.NODE_TYPE_MISSING,Z)),!1)}),$=hZn({id:e.id,el:S,disabled:()=>!B.value,selectable:R,dragHandle:()=>D.dragHandle,onStart(ie){Q.dragStart(ie)},onDrag(ie){Q.drag(ie)},onStop(ie){Q.dragStop(ie)},onClick(ie){z(ie)}}),G=X(()=>D.class instanceof Function?D.class(D):D.class),q=X(()=>{const ie=(D.style instanceof Function?D.style(D):D.style)||{},te=D.width instanceof Function?D.width(D):D.width,Z=D.height instanceof Function?D.height(D):D.height;return!ie.width&&te&&(ie.width=typeof te=="string"?te:`${te}px`),!ie.height&&Z&&(ie.height=typeof Z=="string"?Z:`${Z}px`),ie}),re=Pa(()=>Number(D.zIndex??q.value.zIndex??0));return h(ie=>{(ie.includes(e.id)||!ie.length)&&oe()}),An(()=>{pt(()=>D.hidden,(ie=!1,te,Z)=>{!ie&&S.value&&(e.resizeObserver.observe(S.value),Z(()=>{S.value&&e.resizeObserver.unobserve(S.value)}))},{immediate:!0,flush:"post"})}),pt([()=>D.type,()=>D.sourcePosition,()=>D.targetPosition],()=>{ai(()=>{u([{id:e.id,nodeElement:S.value,forceUpdate:!0}])})}),pt([()=>D.position.x,()=>D.position.y,()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.x},()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.y},()=>{var ie;return(ie=P.value)==null?void 0:ie.computedPosition.z},re,()=>D.selected,()=>D.dimensions.height,()=>D.dimensions.width,()=>{var ie;return(ie=P.value)==null?void 0:ie.dimensions.height},()=>{var ie;return(ie=P.value)==null?void 0:ie.dimensions.width}],([ie,te,Z,he,pe,Ce])=>{const Qe={x:ie,y:te,z:Ce+(v.value&&D.selected?1e3:0)};typeof Z<"u"&&typeof he<"u"?D.computedPosition=U3s({x:Z,y:he,z:pe},Qe):D.computedPosition=Qe},{flush:"post",immediate:!0}),pt([()=>D.extent,m],([ie,te],[Z,he])=>{(ie!==Z||te!==he)&&J()}),D.extent==="parent"||typeof D.extent=="object"&&"range"in D.extent&&D.extent.range==="parent"?EGe(()=>W).toBe(!0).then(J):J(),()=>D.hidden?null:xn("div",{ref:S,"data-id":D.id,class:["vue-flow__node",`vue-flow__node-${H.value===!1?"default":D.type||"default"}`,{[n.value]:B.value,dragging:$==null?void 0:$.value,draggable:B.value,selected:D.selected,selectable:R.value,parent:D.isParent},G.value],style:{visibility:W.value?"visible":"hidden",zIndex:D.computedPosition.z??re.value,transform:`translate(${D.computedPosition.x}px,${D.computedPosition.y}px)`,pointerEvents:j.value?"all":"none",...q.value},tabIndex:F.value?0:void 0,role:F.value?"group":void 0,"aria-describedby":f.value?void 0:`${XYn}-${t}`,"aria-label":D.ariaLabel,"aria-roledescription":"node",...D.domAttributes,onMouseenter:se,onMousemove:le,onMouseleave:ue,onContextmenu:ee,onClick:z,onDblclick:de,onKeydown:Y},[xn(H.value===!1?g.value.default:H.value,{id:D.id,type:D.type,data:D.data,events:{...D.events,...M},selected:D.selected,resizing:D.resizing,dragging:$.value,connectable:I.value,position:D.computedPosition,dimensions:D.dimensions,isValidTargetPos:D.isValidTargetPos,isValidSourcePos:D.isValidSourcePos,parent:D.parentNode,parentNodeId:D.parentNode,zIndex:D.computedPosition.z??re.value,targetPosition:D.targetPosition,sourcePosition:D.sourcePosition,label:D.label,dragHandle:D.dragHandle,onUpdateNodeInternals:oe})]);function J(){const ie=D.computedPosition,{computedPosition:te,position:Z}=zst(D,A.value?HOe(ie,p.value):ie,a.error,m.value,P.value);(D.computedPosition.x!==te.x||D.computedPosition.y!==te.y)&&(D.computedPosition={...D.computedPosition,...te}),(D.position.x!==Z.x||D.position.y!==Z.y)&&(D.position=Z)}function oe(){S.value&&u([{id:e.id,nodeElement:S.value,forceUpdate:!0}])}function se(ie){$!=null&&$.value||Q.mouseEnter({event:ie,node:D})}function le(ie){$!=null&&$.value||Q.mouseMove({event:ie,node:D})}function ue(ie){$!=null&&$.value||Q.mouseLeave({event:ie,node:D})}function ee(ie){return Q.contextMenu({event:ie,node:D})}function de(ie){return Q.doubleClick({event:ie,node:D})}function z(ie){R.value&&(!r.value||!B.value||b.value>0)&&jGe(D,s.value,d,l,o,!1,S.value),Q.click({event:ie,node:D})}function Y(ie){if(!(NGe(ie)||f.value))if(YYn.includes(ie.key)&&R.value){const te=ie.key==="Escape";jGe(D,s.value,d,l,o,te,S.value)}else B.value&&D.selected&&kj[ie.key]&&(ie.preventDefault(),k.value=`Moved selected node ${ie.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~D.position.x}, y: ${~~D.position.y}`,T({x:kj[ie.key].x,y:kj[ie.key].y},ie.shiftKey))}}}),QOs=TOs,DOs={height:"0",width:"0"},BOs={name:"EdgeLabelRenderer",compatConfig:{MODE:3}},ROs=Je({...BOs,setup(e){const{viewportRef:t}=nl(),n=Pa(()=>{var r;return(r=t.value)==null?void 0:r.getElementsByClassName("vue-flow__edge-labels")[0]});return(r,o)=>(xe(),Ge("svg",null,[(xe(),Ge("foreignObject",DOs,[(xe(),Ut(f3,{to:n.value,disabled:!n.value},[Zr(r.$slots,"default")],8,["to","disabled"]))]))]))}});function IOs(e={includeHiddenNodes:!1}){const{nodes:t}=nl();return X(()=>{if(t.value.length===0)return!1;for(const n of t.value)if((e.includeHiddenNodes||!n.hidden)&&((n==null?void 0:n.handleBounds)===void 0||n.dimensions.width===0||n.dimensions.height===0))return!1;return!0})}const MOs={class:"vue-flow__nodes vue-flow__container"},POs={name:"Nodes",compatConfig:{MODE:3}},FOs=Je({...POs,setup(e){const{getNodes:t,updateNodeDimensions:n,emits:r}=nl(),o=IOs(),s=fe();return pt(o,a=>{a&&ai(()=>{r.nodesInitialized(t.value)})},{immediate:!0}),An(()=>{s.value=new ResizeObserver(a=>{const l=a.map(d=>({id:d.target.getAttribute("data-id"),nodeElement:d.target,forceUpdate:!0}));ai(()=>n(l))})}),qs(()=>{var a;return(a=s.value)==null?void 0:a.disconnect()}),(a,l)=>(xe(),Ge("div",MOs,[s.value?(xe(!0),Ge(sn,{key:0},Bi(Ae(t),(d,u,h,g)=>{const m=[d.id];if(g&&g.key===d.id&&Zri(g,m))return g;const v=(xe(),Ut(Ae(QOs),{id:d.id,key:d.id,"resize-observer":s.value},null,8,["id","resize-observer"]));return v.memo=m,v},l,0),128)):nn("",!0)]))}});function NOs(){const{emits:e}=nl();An(()=>{if(cZn()){const t=document.querySelector(".vue-flow__pane");t&&window.getComputedStyle(t).zIndex!=="1"&&e.error(new Lf(Yh.MISSING_STYLES))}})}const UOs=ge("div",{class:"vue-flow__edge-labels"},null,-1),jOs={name:"VueFlow",compatConfig:{MODE:3}},wZn=Je({...jOs,props:{id:{},modelValue:{},nodes:{},edges:{},edgeTypes:{},nodeTypes:{},connectionMode:{},connectionLineType:{},connectionLineStyle:{default:void 0},connectionLineOptions:{default:void 0},connectionRadius:{},isValidConnection:{type:[Function,null],default:void 0},deleteKeyCode:{default:void 0},selectionKeyCode:{type:[Boolean,null],default:void 0},multiSelectionKeyCode:{default:void 0},zoomActivationKeyCode:{default:void 0},panActivationKeyCode:{default:void 0},snapToGrid:{type:Boolean,default:void 0},snapGrid:{},onlyRenderVisibleElements:{type:Boolean,default:void 0},edgesUpdatable:{type:[Boolean,String],default:void 0},nodesDraggable:{type:Boolean,default:void 0},nodesConnectable:{type:Boolean,default:void 0},nodeDragThreshold:{},elementsSelectable:{type:Boolean,default:void 0},selectNodesOnDrag:{type:Boolean,default:void 0},panOnDrag:{type:[Boolean,Array],default:void 0},minZoom:{},maxZoom:{},defaultViewport:{},translateExtent:{},nodeExtent:{},defaultMarkerColor:{},zoomOnScroll:{type:Boolean,default:void 0},zoomOnPinch:{type:Boolean,default:void 0},panOnScroll:{type:Boolean,default:void 0},panOnScrollSpeed:{},panOnScrollMode:{},paneClickDistance:{},zoomOnDoubleClick:{type:Boolean,default:void 0},preventScrolling:{type:Boolean,default:void 0},selectionMode:{},edgeUpdaterRadius:{},fitViewOnInit:{type:Boolean,default:void 0},connectOnClick:{type:Boolean,default:void 0},applyDefault:{type:Boolean,default:void 0},autoConnect:{type:[Boolean,Function],default:void 0},noDragClassName:{},noWheelClassName:{},noPanClassName:{},defaultEdgeOptions:{},elevateEdgesOnSelect:{type:Boolean,default:void 0},elevateNodesOnSelect:{type:Boolean,default:void 0},disableKeyboardA11y:{type:Boolean,default:void 0},edgesFocusable:{type:Boolean,default:void 0},nodesFocusable:{type:Boolean,default:void 0},autoPanOnConnect:{type:Boolean,default:void 0},autoPanOnNodeDrag:{type:Boolean,default:void 0},autoPanSpeed:{}},emits:["nodesChange","edgesChange","nodesInitialized","paneReady","init","updateNodeInternals","error","connect","connectStart","connectEnd","clickConnectStart","clickConnectEnd","moveStart","move","moveEnd","selectionDragStart","selectionDrag","selectionDragStop","selectionContextMenu","selectionStart","selectionEnd","viewportChangeStart","viewportChange","viewportChangeEnd","paneScroll","paneClick","paneContextMenu","paneMouseEnter","paneMouseMove","paneMouseLeave","edgeUpdate","edgeContextMenu","edgeMouseEnter","edgeMouseMove","edgeMouseLeave","edgeDoubleClick","edgeClick","edgeUpdateStart","edgeUpdateEnd","nodeContextMenu","nodeMouseEnter","nodeMouseMove","nodeMouseLeave","nodeDoubleClick","nodeClick","nodeDragStart","nodeDrag","nodeDragStop","miniMapNodeClick","miniMapNodeDoubleClick","miniMapNodeMouseEnter","miniMapNodeMouseMove","miniMapNodeMouseLeave","update:modelValue","update:nodes","update:edges"],setup(e,{expose:t,emit:n}){const r=e,o=TAn(),s=rRe(r,"modelValue",n),a=rRe(r,"nodes",n),l=rRe(r,"edges",n),d=nl(r),u=mws({modelValue:s,nodes:a,edges:l},r,d);return vws(n,d.hooks),mOs(),NOs(),Yi($Oe,o),Qa(u),t(d),(h,g)=>(xe(),Ge("div",{ref:Ae(d).vueFlowRef,class:"vue-flow"},[c(cOs,null,{default:Oe(()=>[c(EOs),UOs,c(FOs),Zr(h.$slots,"zoom-pane")]),_:3}),Zr(h.$slots,"default"),c(gOs)],512))}}),WOs={name:"Panel",compatConfig:{MODE:3}},OZn=Je({...WOs,props:{position:{}},setup(e){const t=e,{userSelectionActive:n}=nl(),r=X(()=>`${t.position}`.split("-"));return(o,s)=>(xe(),Ge("div",{class:Eo(["vue-flow__panel",r.value]),style:no({pointerEvents:Ae(n)?"none":"all"})},[Zr(o.$slots,"default")],6))}});var NS=(e=>(e.Lines="lines",e.Dots="dots",e))(NS||{});const yZn=function({dimensions:e,size:t,color:n}){return xn("path",{stroke:n,"stroke-width":t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})},CZn=function({radius:e,color:t}){return xn("circle",{cx:e,cy:e,r:e,fill:t})};NS.Lines+"",NS.Dots+"";const VOs={[NS.Dots]:"#81818a",[NS.Lines]:"#eee"},zOs=["id","x","y","width","height","patternTransform"],HOs={key:2,height:"100",width:"100"},$Os=["fill"],XOs=["x","y","fill"],GOs={name:"Background",compatConfig:{MODE:3}},_Zn=Je({...GOs,props:{id:{},variant:{default:()=>NS.Dots},gap:{default:20},size:{default:1},lineWidth:{default:1},patternColor:{},color:{},bgColor:{},height:{default:100},width:{default:100},x:{default:0},y:{default:0},offset:{default:0}},setup(e){const{id:t,viewport:n}=nl(),r=X(()=>{const a=n.value.zoom,[l,d]=Array.isArray(e.gap)?e.gap:[e.gap,e.gap],u=[l*a||1,d*a||1],h=e.size*a,[g,m]=Array.isArray(e.offset)?e.offset:[e.offset,e.offset],v=[g*a||1+u[0]/2,m*a||1+u[1]/2];return{scaledGap:u,offset:v,size:h}}),o=Pa(()=>`pattern-${t}${e.id?`-${e.id}`:""}`),s=Pa(()=>e.color||e.patternColor||VOs[e.variant||NS.Dots]);return(a,l)=>(xe(),Ge("svg",{class:"vue-flow__background vue-flow__container",style:no({height:`${a.height>100?100:a.height}%`,width:`${a.width>100?100:a.width}%`})},[Zr(a.$slots,"pattern-container",{id:o.value},()=>[ge("pattern",{id:o.value,x:Ae(n).x%r.value.scaledGap[0],y:Ae(n).y%r.value.scaledGap[1],width:r.value.scaledGap[0],height:r.value.scaledGap[1],patternTransform:`translate(-${r.value.offset[0]},-${r.value.offset[1]})`,patternUnits:"userSpaceOnUse"},[Zr(a.$slots,"pattern",{},()=>[a.variant===Ae(NS).Lines?(xe(),Ut(Ae(yZn),{key:0,size:a.lineWidth,color:s.value,dimensions:r.value.scaledGap},null,8,["size","color","dimensions"])):a.variant===Ae(NS).Dots?(xe(),Ut(Ae(CZn),{key:1,color:s.value,radius:r.value.size/2},null,8,["color","radius"])):nn("",!0),a.bgColor?(xe(),Ge("svg",HOs,[ge("rect",{width:"100%",height:"100%",fill:a.bgColor},null,8,$Os)])):nn("",!0)])],8,zOs)]),ge("rect",{x:a.x,y:a.y,width:"100%",height:"100%",fill:`url(#${o.value})`},null,8,XOs),Zr(a.$slots,"default",{id:o.value})],4))}}),YOs={name:"ControlButton",compatConfig:{MODE:3}},ZOs=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},qOs={type:"button",class:"vue-flow__controls-button"};function KOs(e,t,n,r,o,s){return xe(),Ge("button",qOs,[Zr(e.$slots,"default")])}const Nde=ZOs(YOs,[["render",KOs]]),JOs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},eys=ge("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"},null,-1),tys=[eys];function nys(e,t){return xe(),Ge("svg",JOs,tys)}const iys={render:nys},rys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},oys=ge("path",{d:"M0 0h32v4.2H0z"},null,-1),sys=[oys];function ays(e,t){return xe(),Ge("svg",rys,sys)}const lys={render:ays},cys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},dys=ge("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"},null,-1),uys=[dys];function hys(e,t){return xe(),Ge("svg",cys,uys)}const fys={render:hys},gys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},mys=ge("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"},null,-1),kys=[mys];function vys(e,t){return xe(),Ge("svg",gys,kys)}const Ays={render:vys},pys={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},bys=ge("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z"},null,-1),wys=[bys];function Oys(e,t){return xe(),Ge("svg",pys,wys)}const yys={render:Oys},Cys={name:"Controls",compatConfig:{MODE:3}},SZn=Je({...Cys,props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>$Yn.BottomLeft}},emits:["zoomIn","zoomOut","fitView","interactionChange"],setup(e,{emit:t}){const{nodesDraggable:n,nodesConnectable:r,elementsSelectable:o,setInteractive:s,zoomIn:a,zoomOut:l,fitView:d,viewport:u,minZoom:h,maxZoom:g}=nl(),m=Pa(()=>n.value||r.value||o.value),v=Pa(()=>u.value.zoom<=h.value),f=Pa(()=>u.value.zoom>=g.value);function k(){a(),t("zoomIn")}function A(){l(),t("zoomOut")}function p(){d(e.fitViewParams),t("fitView")}function b(){s(!m.value),t("interactionChange",!m.value)}return(w,O)=>(xe(),Ut(Ae(OZn),{class:"vue-flow__controls",position:w.position},{default:Oe(()=>[Zr(w.$slots,"top"),w.showZoom?(xe(),Ge(sn,{key:0},[Zr(w.$slots,"control-zoom-in",{},()=>[c(Nde,{class:"vue-flow__controls-zoomin",disabled:f.value,onClick:k},{default:Oe(()=>[Zr(w.$slots,"icon-zoom-in",{},()=>[(xe(),Ut(Bd(Ae(iys))))])]),_:3},8,["disabled"])]),Zr(w.$slots,"control-zoom-out",{},()=>[c(Nde,{class:"vue-flow__controls-zoomout",disabled:v.value,onClick:A},{default:Oe(()=>[Zr(w.$slots,"icon-zoom-out",{},()=>[(xe(),Ut(Bd(Ae(lys))))])]),_:3},8,["disabled"])])],64)):nn("",!0),w.showFitView?Zr(w.$slots,"control-fit-view",{key:1},()=>[c(Nde,{class:"vue-flow__controls-fitview",onClick:p},{default:Oe(()=>[Zr(w.$slots,"icon-fit-view",{},()=>[(xe(),Ut(Bd(Ae(fys))))])]),_:3})]):nn("",!0),w.showInteractive?Zr(w.$slots,"control-interactive",{key:2},()=>[w.showInteractive?(xe(),Ut(Nde,{key:0,class:"vue-flow__controls-interactive",onClick:b},{default:Oe(()=>[m.value?Zr(w.$slots,"icon-unlock",{key:0},()=>[(xe(),Ut(Bd(Ae(yys))))]):nn("",!0),m.value?nn("",!0):Zr(w.$slots,"icon-lock",{key:1},()=>[(xe(),Ut(Bd(Ae(Ays))))])]),_:3})):nn("",!0)]):nn("",!0),Zr(w.$slots,"default")]),_:3},8,["position"]))}}),_ys={class:"titleBar dragHandle pr"},Sys={class:"title c"},Lys={class:"content"},xys=Je({__name:"script",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=km,f=gc;return xe(),Ge(sn,null,[c(v,{class:"script"},{default:Oe(()=>[ge("div",_ys,[ge("div",Sys,Pe(h.$t("workbench.production.node.script.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",Lys,[c(Ae(i3),{modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=k=>n.value=k),theme:"light"},null,8,["modelValue"])]),c(Ae(mm),{id:t.handleIds.assets,type:"source",position:Ae(Vi).Bottom},null,8,["id","position"])]),_:1}),c(f,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=k=>o.value=k),header:h.$t("workbench.production.node.script.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=k=>r.value=k),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),Eys=oo(xys,[["__scopeId","data-v-e1680278"]]),Tys={class:"titleBar dragHandle pr"},Qys={class:"title c"},Dys={class:"content"},Bys=Je({__name:"scriptPlan",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=Xy,f=km,k=gc;return xe(),Ge(sn,null,[c(f,{class:"scriptPlan"},{default:Oe(()=>[ge("div",Tys,[ge("div",Qys,Pe(h.$t("workbench.production.node.scriptPlan.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",Dys,[n.value?(xe(),Ut(Ae(i3),{key:1,modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=A=>n.value=A),theme:"light"},null,8,["modelValue"])):(xe(),Ut(v,{key:0,style:{"margin-top":"16px"}}))])]),_:1}),c(k,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=A=>o.value=A),header:h.$t("workbench.production.node.scriptPlan.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=A=>r.value=A),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),Rys=oo(Bys,[["__scopeId","data-v-7bff2864"]]),Iys={class:"uploadNode"},Mys={class:"data"},Pys={class:"title ac"},Fys={class:"imageBox"},Nys={class:"imageToolsWrap"},Uys={class:"upload ac"},jys={style:{"margin-left":"5px",color:"#fff"}},Wys={class:"fc ac",style:{gap:"6px"}},Vys=Je({__name:"uploadNode",props:{id:{},data:{}},emits:["upload","keep"],setup(e,{emit:t}){var k;const n=e,r=bt("openStoryboardCheck"),{updateNodeData:o,removeNodes:s}=nl("editImage"),a=fe(((k=n.data)==null?void 0:k.image)||""),l=fe(null),d=[{content:$t("workbench.production.editImage.uploadImage"),value:1},{content:$t("workbench.production.editImage.uploadStoryboardImage"),value:2}];pt(()=>{var A;return(A=n.data)==null?void 0:A.image},A=>{a.value=A||""}),qs(()=>{l.value&&URL.revokeObjectURL(l.value)});function u(){s(n.id)}const h=t;function g(A){A.value==1?v():A.value==2&&f()}function m(){if(!a.value)return window.$message.error($t("workbench.production.editImage.noImage"));h("keep",a.value)}async function v(){const A=await jV({multiple:!1,title:$t("workbench.production.editImage.selectImage")});if(A.length>0){const p=A[0].src;a.value=p,o(n.id,{image:p}),h("upload")}}async function f(){const A=await r();if(A.length>0){const p=A[0].src;a.value=p,o(n.id,{image:p}),h("upload")}}return(A,p)=>{const b=_n("i-pic"),w=jre,O=Zh,y=_n("i-upload"),C=Si,_=Rne,S=_n("i-save"),L=y1,E=_n("i-delete"),T=el;return xe(),Ge("div",Iys,[c(Ae(mm),{type:"source",position:Ae(Vi).Right,style:{"z-index":"999999"}},null,8,["position"]),ge("div",Mys,[ge("div",Pys,[c(b,{theme:"outline",size:"16",fill:"#000000"}),p[0]||(p[0]=ge("span",{style:{"margin-left":"5px",color:"#4b4b4b"}},"Image",-1))]),ge("div",Fys,[c(O,{class:"image",src:a.value,fit:"contain",style:{width:"100%",height:"100%",borderRadius:"10px"}},{overlayContent:Oe(()=>[ge("div",Nys,[c(w,{src:a.value,position:"br"},null,8,["src"])])]),_:1},8,["src"]),c(_,{options:d,onClick:g},{content:Oe(()=>[ge("div",Wys,[c(C,{variant:"outline",onClick:v},{default:Oe(()=>[...p[1]||(p[1]=[Bt("资产图片",-1)])]),_:1}),c(C,{variant:"outline",onClick:f},{default:Oe(()=>[...p[2]||(p[2]=[Bt("分镜图片",-1)])]),_:1})])]),default:Oe(()=>[ge("div",Uys,[c(y,{theme:"outline",size:"18",fill:"#fff"}),ge("span",jys,Pe(A.$t("workbench.production.editImage.upload")),1)])]),_:1}),c(L,{content:A.$t("workbench.production.save")},{default:Oe(()=>[a.value?(xe(),Ut(C,{key:0,theme:"primary",size:"small",class:"keepBottomLeftBtn",onClick:m},{icon:Oe(()=>[c(S)]),_:1})):nn("",!0)]),_:1},8,["content"]),c(T,{theme:"primary",content:A.$t("workbench.production.editImage.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:u},[c(E,{theme:"outline",size:"18",fill:"#fff"})])]),_:1},8,["content"])])])])}}}),zys=oo(Vys,[["__scopeId","data-v-87f647b2"]]),Hys={class:"textareaWrapper"},$ys=["data-placeholder"],Xys={class:"referencesList"},Gys=["onMousedown"],Yys={class:"reference-label"},Zys={class:"ref-index-badge"},qys={key:0,class:"no-references"},Kys=Je({__name:"promptEditor",props:Fc({references:{},placeholder:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(null),o=fe(!1),s=fe(0),a=fe({left:0,top:0}),l=fe("");let d=null,u=!1;function h(w){var T;const O=(T=t.references)==null?void 0:T[w],y=(O==null?void 0:O.type)??"image",C=(O==null?void 0:O.src)??"",_=document.createElement("span");_.contentEditable="false",_.dataset.refIndex=String(w),_.dataset.imgSrc=C;const S=()=>y==="image"?xn("img",{src:C,style:{width:"200px",borderRadius:"8px",display:"block"},alt:""}):xn("span",{style:{padding:"8px",display:"block"}},C),L=()=>y==="image"?xn("img",{src:C,alt:""}):xn(y==="video"?x8n:E8n),E=xn(y1,{content:S,placement:"top"},{default:()=>[xn("div",{class:"tag"},[L(),xn("span",null,$t("workbench.production.editImage.reference",{index:w+1}))])]});return p8(E,_),_}function g(w){if(!r.value)return;r.value.innerHTML="";const O=/@图(\d+)/g;let y=0,C;for(;(C=O.exec(w))!==null;)C.index>y&&r.value.appendChild(document.createTextNode(w.substring(y,C.index))),r.value.appendChild(h(Number(C[1])-1)),r.value.appendChild(document.createTextNode("​")),y=O.lastIndex;y{r.value&&n.value&&g(n.value)}),pt(()=>t.references,()=>{r.value&&n.value&&g(n.value)}),pt(n,w=>{var y;if(u){u=!1;return}if(!r.value)return;const O=((y=r.value.textContent)==null?void 0:y.replace(/\u200B/g,""))||"";w!==void 0&&w!==O&&g(w)});function m(){var C;const w=window.getSelection();if(!w||w.rangeCount===0)return"";const O=w.getRangeAt(0),y=O.startContainer;return y.nodeType===Node.TEXT_NODE?((C=y.textContent)==null?void 0:C.substring(0,O.startOffset))??"":""}function v(){const w=window.getSelection();if(!w||w.rangeCount===0)return{left:0,top:24};const O=w.getRangeAt(0).cloneRange();O.collapse(!0);const y=O.getBoundingClientRect(),C=r.value.getBoundingClientRect();return{left:Math.max(0,y.left-C.left),top:y.bottom-C.top+4}}function f(){var y;l.value=((y=r.value)==null?void 0:y.textContent)||"",p();const w=m(),O=w.lastIndexOf("@");if(O!==-1&&!w.substring(O+1).includes(" ")){o.value=!0,s.value=0;const C=window.getSelection();C&&C.rangeCount>0&&(d=C.getRangeAt(0).cloneRange()),ai(()=>{a.value=v()});return}o.value=!1,d=null}function k(w){var y;if(!o.value||!((y=t.references)!=null&&y.length))return;const O=t.references.length-1;switch(w.key){case"ArrowDown":w.preventDefault(),s.value=Math.min(s.value+1,O);break;case"ArrowUp":w.preventDefault(),s.value=Math.max(s.value-1,0);break;case"Enter":case"Tab":w.preventDefault(),A(s.value);break;case"Escape":o.value=!1;break}}function A(w){var M;if(!r.value||!d)return;const O=window.getSelection();if(!O)return;const y=d.cloneRange(),C=y.startContainer,_=y.startOffset,L=(C.textContent||"").lastIndexOf("@",_-1);if(L===-1)return;const E=h(w),T=C.splitText(L),D=_-L;T.deleteData(0,D),C.parentNode.insertBefore(E,T);const P=document.createTextNode("​");E.after(P);const Q=document.createRange();Q.setStart(P,1),Q.collapse(!0),O.removeAllRanges(),O.addRange(Q),o.value=!1,d=null,l.value=((M=r.value)==null?void 0:M.textContent)||"",p()}function p(){if(!r.value)return;let w="";r.value.childNodes.forEach(O=>{var y;if(O.nodeType===Node.TEXT_NODE)w+=(O.textContent||"").replace(/\u200B/g,"");else if(((y=O.dataset)==null?void 0:y.refIndex)!==void 0){const C=O.dataset.refIndex;w+=` @图${Number(C)+1} `}}),u=!0,n.value=w}function b(){setTimeout(()=>{o.value=!1},150)}return(w,O)=>{var S;const y=Zh,C=_n("i-video"),_=_n("i-volume-mute");return xe(),Ge("div",Hys,[ge("div",{ref_key:"editorRef",ref:r,class:"promptEditor",contenteditable:"true","data-placeholder":Ae(l).length===0?t.placeholder:"",onInput:f,onKeydown:k,onBlur:b,onMousedown:O[0]||(O[0]=Mr(()=>{},["stop"]))},null,40,$ys),Ae(o)?(xe(),Ge("div",{key:0,class:"referencesPopup",style:no({left:Ae(a).left+"px",top:Ae(a).top+"px"})},[ge("div",Xys,[(xe(!0),Ge(sn,null,Bi(e.references,(L,E)=>(xe(),Ge("div",{key:E,class:Eo(["reference-item",{active:Ae(s)===E}]),onMousedown:Mr(T=>A(E),["prevent"])},[L.type==="image"?(xe(),Ut(y,{key:0,src:L.src,fit:"cover",class:"ref-popup-img"},null,8,["src"])):L.type==="video"?(xe(),Ut(C,{key:1,class:"ref-popup-icon"})):L.type==="audio"?(xe(),Ut(_,{key:2,class:"ref-popup-icon"})):nn("",!0),ge("span",Yys,Pe(w.$t("workbench.production.editImage.reference",{index:E+1})),1),ge("span",Zys,"#"+Pe(E+1),1)],42,Gys))),128)),(S=e.references)!=null&&S.length?nn("",!0):(xe(),Ge("div",qys,Pe(w.$t("workbench.production.editImage.noReferences")),1))])],4)):nn("",!0)])}}}),LZn=oo(Kys,[["__scopeId","data-v-3d78a0de"]]),hkn={type:"removeLine",animated:!0,style:{stroke:"#00000"}};function Jys(e="",t=""){return{generatedImage:e,references:[],prompt:t,model:"",ratio:"",quality:"",steps:49}}function fkn(e){return e.map(t=>{var n;return{id:t.id,type:t.type,position:t.position,data:t.type==="upload"?{image:t.data.image}:{generatedImage:t.data.generatedImage,references:((n=t.data.references)==null?void 0:n.map(r=>({image:r.image})))??[],prompt:t.data.prompt,model:t.data.model,ratio:t.data.ratio,quality:t.data.quality}}})}function gkn(e){return e.map(t=>({id:t.id,source:t.source,target:t.target}))}const eCs={class:"generatedNode"},tCs={class:"title ac"},nCs={class:"titleText"},iCs={class:"image"},rCs={key:0,class:"imageLoading"},oCs={class:"loadingText"},sCs={key:1,class:"imageWrapper"},aCs={class:"imageToolsWrap"},lCs={class:"upload ac"},cCs={style:{"margin-left":"5px",color:"#fff"}},dCs={class:"imageRefs f w"},uCs={class:"text w"},hCs={class:"operate ac jb"},fCs={class:"ac"},gCs={class:"f",style:{gap:"5px","margin-left":"5px"}},mCs=Je({__name:"generatedNode",props:{id:{},data:{},projectId:{},imageDefaultModle:{}},emits:["keep"],setup(e,{emit:t}){const n=bt("openStoryboardCheck"),{open:r,onChange:o,onCancel:s}=cOn({multiple:!1,reset:!0,accept:".png,.jpg,.jpeg"}),a=fe(!0),l=fe(!1),d=bt("episodesId"),u=t,{removeNodes:h}=nl("editImage"),g=[{content:$t("workbench.production.editImage.uploadImage"),value:1},{content:$t("workbench.production.editImage.uploadStoryboardImage"),value:2},{content:$t("workbench.production.generatedNode.localUpload"),value:3}],m=X(()=>v.data.references.map(y=>({type:"image",src:y.image})).filter(Boolean)),v=e;function f(){a.value=!a.value}function k(y){y.value==1?p():y.value==2?b():y.value==3&&(console.log("%c Line:124 🍷","background:#4fff4B"),A())}async function A(){const y=await new Promise(S=>{r(),o(L=>S(L)),s(()=>S(null))});if(!(y!=null&&y.length))return;const C=y[0],_=new FileReader;_.onload=async()=>{const S=_.result;try{const{data:L}=await mn.post("/production/editImage/uploadImage",{base64Data:S,projectId:v.projectId,scriptId:d.value});v.data.generatedImage=L}catch(L){return window.$message.error((L==null?void 0:L.message)||$t("workbench.production.editImage.uploadFailed"))}},_.readAsDataURL(C)}async function p(){const y=await jV({multiple:!1,title:$t("workbench.production.editImage.selectImage")});if(y.length>0){const C=y[0].src;v.data.generatedImage=C}}async function b(){const y=await n();if(y.length>0){const C=y[0].src;v.data.generatedImage=C}}async function w(){if(!v.data.model)return window.$message.error($t("workbench.production.editImage.selectModel"));if(!v.data.quality)return window.$message.error($t("workbench.production.editImage.selectQuality"));if(!v.data.ratio)return window.$message.error($t("workbench.production.editImage.selectRatio"));l.value=!0;try{const{data:y}=await mn.post("/production/editImage/generateFlowImage",{references:v.data.references.map(C=>C.image).filter(Boolean),model:v.data.model,quality:v.data.quality,ratio:v.data.ratio,prompt:v.data.prompt,projectId:v.projectId});v.data.generatedImage=y.url}catch(y){return window.$message.error((y==null?void 0:y.message)||$t("workbench.production.editImage.generateFailed"))}finally{l.value=!1}}function O(){if(!v.data.generatedImage)return window.$message.error($t("workbench.production.editImage.generateFirst"));u("keep",v.data.generatedImage)}return An(()=>{var y,C;v.imageDefaultModle&&(v.data.model=((y=v.imageDefaultModle)==null?void 0:y.imageModel)??"",v.data.quality=((C=v.imageDefaultModle)==null?void 0:C.imageQuality)??"",v.data.ratio="16:9")}),(y,C)=>{const _=_n("i-pic"),S=jre,L=Zh,E=_n("i-upload"),T=Rne,D=_n("i-delete"),P=el,Q=uL,M=pA,B=_n("i-arrow-up"),R=Si,I=y1,F=_n("i-save");return xe(),Ge("div",eCs,[c(Ae(mm),{type:"target",position:Ae(Vi).Left},null,8,["position"]),ge("div",{class:"data",onClick:f},[ge("div",tCs,[c(_,{theme:"outline",size:"16",fill:"#000000"}),ge("span",nCs,Pe(y.$t("workbench.production.editImage.imageGeneration")),1)]),ge("div",iCs,[Ae(l)?(xe(),Ge("div",rCs,[C[7]||(C[7]=ge("div",{class:"loadingSpinner"},null,-1)),ge("span",oCs,Pe(y.$t("workbench.production.editImage.generating")),1)])):(xe(),Ge("div",sCs,[c(L,{class:Eo(["image",["nodeImage",{selected:Ae(a)}]]),src:e.data.generatedImage,fit:"contain"},{overlayContent:Oe(()=>[ge("div",aCs,[c(S,{src:e.data.generatedImage??"",position:"br"},null,8,["src"])])]),_:1},8,["src","class"])])),c(T,{options:g,onClick:k},{default:Oe(()=>[ge("div",lCs,[c(E,{theme:"outline",size:"18",fill:"#fff"}),ge("span",cCs,Pe(y.$t("workbench.production.editImage.upload")),1)])]),_:1}),c(P,{theme:"primary",content:y.$t("workbench.production.editImage.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:C[0]||(C[0]=j=>Ae(h)(v.id))},[c(D,{theme:"outline",size:"18",fill:"#fff"})])]),_:1},8,["content"])])]),uu(ge("div",{class:"parameter",onWheel:C[5]||(C[5]=Mr(()=>{},["stop"])),onMousedown:C[6]||(C[6]=Mr(()=>{},["stop"]))},[ge("div",dCs,[(xe(!0),Ge(sn,null,Bi(e.data.references,(j,W)=>(xe(),Ge("div",{key:W,class:"refThumb"},[c(L,{src:j.image,fit:"cover",class:"refImg"},null,8,["src"])]))),128))]),ge("div",uCs,[c(LZn,{modelValue:e.data.prompt,"onUpdate:modelValue":C[1]||(C[1]=j=>e.data.prompt=j),references:Ae(m),placeholder:y.$t("workbench.production.editImage.promptPlaceholder")},null,8,["modelValue","references","placeholder"])]),ge("div",hCs,[ge("div",fCs,[c(T8,{modelValue:e.data.model,"onUpdate:modelValue":C[2]||(C[2]=j=>e.data.model=j),type:"image",size:"small"},null,8,["modelValue"]),c(M,{modelValue:e.data.ratio,"onUpdate:modelValue":C[3]||(C[3]=j=>e.data.ratio=j),class:"paramSelect ml-5",size:"small",placeholder:y.$t("workbench.production.editImage.ratio")},{default:Oe(()=>[c(Q,{value:"16:9",label:"16:9"}),c(Q,{value:"9:16",label:"9:16"}),c(Q,{value:"1:1",label:"1:1"})]),_:1},8,["modelValue","placeholder"]),c(M,{modelValue:e.data.quality,"onUpdate:modelValue":C[4]||(C[4]=j=>e.data.quality=j),class:"paramSelect ml-5",size:"small",placeholder:y.$t("workbench.production.editImage.quality")},{default:Oe(()=>[c(Q,{value:"1K",label:"1K"}),c(Q,{value:"2K",label:"2K"}),c(Q,{value:"4K",label:"4K"})]),_:1},8,["modelValue","placeholder"])]),ge("div",gCs,[c(I,{content:y.$t("workbench.production.editImage.generateBtn")},{default:Oe(()=>[c(R,{theme:"primary",size:"small",class:"generateBtn",disabled:Ae(l),loading:Ae(l),onClick:w},{icon:Oe(()=>[c(B)]),_:1},8,["disabled","loading"])]),_:1},8,["content"]),c(I,{content:y.$t("workbench.production.save")},{default:Oe(()=>[c(R,{theme:"primary",size:"small",class:"keepBtn",disabled:Ae(l),loading:Ae(l),onClick:O},{icon:Oe(()=>[c(F)]),_:1},8,["disabled","loading"])]),_:1},8,["content"])])])],544),[[h1,Ae(a)]]),c(Ae(mm),{type:"source",position:Ae(Vi).Right,style:{"z-index":"999999"}},null,8,["position"])])}}}),kCs=oo(mCs,[["__scopeId","data-v-e13a8b56"]]),vCs={class:"assets"},ACs={class:"data"},pCs={class:"panelContent"},bCs={class:"toolbar"},wCs={class:"f ac"},OCs={class:"assetsList f w"},yCs={class:"previewCell"},CCs=["onClick"],_Cs=["src","alt"],SCs={class:"mediaHoverOverlay"},LCs={class:"hoverText"},xCs=Je({__name:"storyboardImageCheck",props:Fc({allowedTypes:{},multiple:{type:Boolean,default:!1},scriptId:{}},{modelValue:{default:!1},modelModifiers:{}}),emits:Fc(["confirm","cancel"],["update:modelValue"]),setup(e,{emit:t}){const n=e,r=t,o=Pf(e,"modelValue");pt(()=>o.value,_=>{_&&(v.value.page=1,s.value="",a.value=[],p())}),An(()=>{p()});const s=fe(""),a=fe([]),l=fe([]),d=fe(!1),u=fe(new Set),h=fe(new Set),g=_=>u.value.has(_)||h.value.has(_),m=fe([]),v=fe({page:1,pageSize:10,total:0,showJumper:!0}),k=[{colKey:"row-select",type:n.multiple?"multiple":"single",width:50,align:"center",fixed:"left",disabled:_=>{var S;return g(((S=_.row)==null?void 0:S.id)??_.id)}},{colKey:"src",title:$t("components.storyboardImageCheck.src"),width:100,align:"center",cell:"preview"},{colKey:"prompt",title:$t("workbench.project.dialog.prompt.title"),width:100,align:"left",ellipsis:!0},{colKey:"duration",title:$t("components.storyboardImageCheck.duration"),minWidth:80,align:"left",ellipsis:!0},{colKey:"createTime",title:$t("components.storyboardImageCheck.createTime"),width:200,align:"center",cell:"createTime"}];function A(){v.value.page=1,p()}async function p(){try{d.value=!0;const{data:_}=await mn.post("/production/storyboard/getStoryboardData",{scriptId:n.scriptId,name:s.value||void 0,page:v.value.page,limit:v.value.pageSize});return m.value=_.data||[],v.value.total=_.total||0,m.value}catch(_){console.error("加载资产数据失败:",_),m.value=[],v.value.total=0}finally{d.value=!1}}function b(_){const S=_.filter(L=>!g(L));n.multiple?a.value=S:a.value=S.length>0?[S[S.length-1]]:[]}function w(_){_.length>3&&(_=_.slice(-3)),l.value=_}function O(_){v.value.page=_.current,v.value.pageSize=_.pageSize,p()}function y(){const _=m.value.filter(S=>a.value.includes(S.id));r("confirm",_),o.value=!1}function C(){r("cancel")}return(_,S)=>{const L=Wu,E=dL,T=Si,D=hL,P=jne,Q=gc;return xe(),Ut(Q,{visible:o.value,"onUpdate:visible":S[1]||(S[1]=M=>o.value=M),header:_.$t("components.storyboardImageCheck.dialogTitle"),width:"80vw",footer:!0,placement:"center",zIndex:999999999999,onClose:C,onConfirm:y,onCancel:C},{default:Oe(()=>[ge("div",vCs,[ge("div",ACs,[ge("div",pCs,[ge("div",bCs,[ge("div",wCs,[c(L,{modelValue:Ae(s),"onUpdate:modelValue":S[0]||(S[0]=M=>Fn(s)?s.value=M:null),placeholder:_.$t("workbench.assets.searchPlaceholder"),clearable:"",style:{width:"260px"}},null,8,["modelValue","placeholder"]),c(T,{style:{"margin-left":"5px"},onClick:A},{icon:Oe(()=>[c(E,{name:"search"})]),default:Oe(()=>[Bt(" "+Pe(_.$t("workbench.assets.search")),1)]),_:1})])]),ge("div",OCs,[c(P,{columns:k,data:Ae(m),"selected-row-keys":Ae(a),"expanded-row-keys":Ae(l),"row-key":"id",hover:"",stripe:"",size:"small",pagination:Ae(v),loading:Ae(d),"lazy-load":"","table-layout":"fixed",onSelectChange:b,onExpandChange:w,onPageChange:O},{preview:Oe(({row:M})=>[ge("div",yCs,[c(D,{images:[M.src],closeOnEscKeydown:!0,closeOnOverlay:!0},{trigger:Oe(({open:B})=>[ge("div",{class:"mediaTrigger",onClick:R=>M.src&&B()},[ge("img",{src:M.src,alt:M.name},null,8,_Cs),ge("div",SCs,[c(E,{name:"browse",size:"20px"}),ge("span",LCs,Pe(_.$t("components.storyboardImageCheck.preview")),1)])],8,CCs)]),_:2},1032,["images"])])]),startTime:Oe(({row:M})=>[ge("span",null,Pe(Ae(JB)(M.startTime).format("YYYY-MM-DD HH:mm:ss")),1)]),_:1},8,["data","selected-row-keys","expanded-row-keys","pagination","loading"])])])])])]),_:1},8,["visible","header"])}}}),ECs=oo(xCs,[["__scopeId","data-v-ff556e8b"]]),TCs={class:"remove c"},QCs={__name:"removeLine",props:["id","sourceX","sourceY","targetX","targetY","sourcePosition","targetPosition","sourceNode","targetNode","source","target","type","updatable","data","markerEnd","markerStart","style","selected","animated","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","events","sourceHandleId","targetHandleId","interactionWidth"],setup(e){const{removeEdges:t}=nl("editImage"),n=e,r=X(()=>$st(n));function o(s){t(s)}return(s,a)=>{const l=_n("i-close");return xe(),Ge(sn,null,[c(Ae(Hre),{id:e.id,path:Ae(r)[0],"label-x":Ae(r)[1],"label-y":Ae(r)[2],"label-bg-style":"fill: whitesmoke"},null,8,["id","path","label-x","label-y"]),c(Ae(ROs),null,{default:Oe(()=>[ge("div",{style:no({pointerEvents:"all",position:"absolute",transform:`translate(-50%, -50%) translate(${Ae(r)[1]}px,${Ae(r)[2]}px)`})},[ge("div",TCs,[c(l,{theme:"outline",size:"32",onClick:a[0]||(a[0]=d=>o(e.id))})])],4)]),_:1})],64)}}},DCs=oo(QCs,[["__scopeId","data-v-791ad826"]]);var xZn=Object.defineProperty,BCs=(e,t,n)=>t in e?xZn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RCs=(e,t)=>{for(var n in t)xZn(e,n,{get:t[n],enumerable:!0})},ICs=(e,t,n)=>BCs(e,t+"",n),EZn={};RCs(EZn,{Graph:()=>Tp,alg:()=>Gst,json:()=>QZn,version:()=>FCs});var MCs=Object.defineProperty,TZn=(e,t)=>{for(var n in t)MCs(e,n,{get:t[n],enumerable:!0})},Tp=class{constructor(t){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},t&&(this._isDirected="directed"in t?t.directed:!0,this._isMultigraph="multigraph"in t?t.multigraph:!1,this._isCompound="compound"in t?t.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return typeof t!="function"?this._defaultNodeLabelFn=()=>t:this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(t=>Object.keys(this._in[t]).length===0)}sinks(){return this.nodes().filter(t=>Object.keys(this._out[t]).length===0)}setNodes(t,n){return t.forEach(r=>{n!==void 0?this.setNode(r,n):this.setNode(r)}),this}setNode(t,n){return t in this._nodes?(arguments.length>1&&(this._nodes[t]=n),this):(this._nodes[t]=arguments.length>1?n:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return t in this._nodes}removeNode(t){if(t in this._nodes){let n=r=>this.removeEdge(this._edgeObjs[r]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],this.children(t).forEach(r=>{this.setParent(r)}),delete this._children[t]),Object.keys(this._in[t]).forEach(n),delete this._in[t],delete this._preds[t],Object.keys(this._out[t]).forEach(n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n="\0";else{n+="";for(let r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=n,this._children[n][t]=!0,this}parent(t){if(this._isCompound){let n=this._parent[t];if(n!=="\0")return n}}children(t="\0"){if(this._isCompound){let n=this._children[t];if(n)return Object.keys(n)}else{if(t==="\0")return this.nodes();if(this.hasNode(t))return[]}return[]}predecessors(t){let n=this._preds[t];if(n)return Object.keys(n)}successors(t){let n=this._sucs[t];if(n)return Object.keys(n)}neighbors(t){let n=this.predecessors(t);if(n){let r=new Set(n);for(let o of this.successors(t))r.add(o);return Array.from(r.values())}}isLeaf(t){let n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([s,a])=>{t(s)&&n.setNode(s,a)}),Object.values(this._edgeObjs).forEach(s=>{n.hasNode(s.v)&&n.hasNode(s.w)&&n.setEdge(s,this.edge(s))});let r={},o=s=>{let a=this.parent(s);return!a||n.hasNode(a)?(r[s]=a??void 0,a??void 0):a in r?r[a]:o(a)};return this._isCompound&&n.nodes().forEach(s=>n.setParent(s,o(s))),n}setDefaultEdgeLabel(t){return typeof t!="function"?this._defaultEdgeLabelFn=()=>t:this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(t,n){return t.reduce((r,o)=>(n!==void 0?this.setEdge(r,o,n):this.setEdge(r,o),o)),this}setEdge(t,n,r,o){let s,a,l,d,u=!1;typeof t=="object"&&t!==null&&"v"in t?(s=t.v,a=t.w,l=t.name,arguments.length===2&&(d=n,u=!0)):(s=t,a=n,l=o,arguments.length>2&&(d=r,u=!0)),s=""+s,a=""+a,l!==void 0&&(l=""+l);let h=dY(this._isDirected,s,a,l);if(h in this._edgeLabels)return u&&(this._edgeLabels[h]=d),this;if(l!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(s),this.setNode(a),this._edgeLabels[h]=u?d:this._defaultEdgeLabelFn(s,a,l);let g=PCs(this._isDirected,s,a,l);return s=g.v,a=g.w,Object.freeze(g),this._edgeObjs[h]=g,mkn(this._preds[a],s),mkn(this._sucs[s],a),this._in[a][h]=g,this._out[s][h]=g,this._edgeCount++,this}edge(t,n,r){let o=arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r);return this._edgeLabels[o]}edgeAsObj(t,n,r){let o=arguments.length===1?this.edge(t):this.edge(t,n,r);return typeof o!="object"?{label:o}:o}hasEdge(t,n,r){return(arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r))in this._edgeLabels}removeEdge(t,n,r){let o=arguments.length===1?mRe(this._isDirected,t):dY(this._isDirected,t,n,r),s=this._edgeObjs[o];if(s){let a=s.v,l=s.w;delete this._edgeLabels[o],delete this._edgeObjs[o],kkn(this._preds[l],a),kkn(this._sucs[a],l),delete this._in[l][o],delete this._out[a][o],this._edgeCount--}return this}inEdges(t,n){return this.isDirected()?this.filterEdges(this._in[t],t,n):this.nodeEdges(t,n)}outEdges(t,n){return this.isDirected()?this.filterEdges(this._out[t],t,n):this.nodeEdges(t,n)}nodeEdges(t,n){if(t in this._nodes)return this.filterEdges({...this._in[t],...this._out[t]},t,n)}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}filterEdges(t,n,r){if(!t)return;let o=Object.values(t);return r?o.filter(s=>s.v===n&&s.w===r||s.v===r&&s.w===n):o}};function mkn(e,t){e[t]?e[t]++:e[t]=1}function kkn(e,t){e[t]!==void 0&&!--e[t]&&delete e[t]}function dY(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let a=o;o=s,s=a}return o+""+s+""+(r===void 0?"\0":r)}function PCs(e,t,n,r){let o=""+t,s=""+n;if(!e&&o>s){let l=o;o=s,s=l}let a={v:o,w:s};return r&&(a.name=r),a}function mRe(e,t){return dY(e,t.v,t.w,t.name)}var FCs="4.0.1",QZn={};TZn(QZn,{read:()=>WCs,write:()=>NCs});function NCs(e){let t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:UCs(e),edges:jCs(e)},n=e.graph();return n!==void 0&&(t.value=structuredClone(n)),t}function UCs(e){return e.nodes().map(t=>{let n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function jCs(e){return e.edges().map(t=>{let n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function WCs(e){let t=new Tp(e.options);return e.value!==void 0&&t.setGraph(e.value),e.nodes.forEach(n=>{t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(n=>{t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var Gst={};TZn(Gst,{CycleException:()=>$2e,bellmanFord:()=>DZn,components:()=>HCs,dijkstra:()=>H2e,dijkstraAll:()=>GCs,findCycles:()=>YCs,floydWarshall:()=>qCs,isAcyclic:()=>JCs,postorder:()=>t_s,preorder:()=>n_s,prim:()=>i_s,shortestPaths:()=>r_s,tarjan:()=>RZn,topsort:()=>IZn});var VCs=()=>1;function DZn(e,t,n,r){return zCs(e,String(t),n||VCs,r||function(o){return e.outEdges(o)})}function zCs(e,t,n,r){let o={},s,a=0,l=e.nodes(),d=function(g){let m=n(g);o[g.v].distance+mt.key)}has(t){return t in this._keyIndices}priority(t){let n=this._keyIndices[t];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(t,n){let r=this._keyIndices,o=String(t);if(!(o in r)){let s=this._arr,a=s.length;return r[o]=a,s.push({key:o,priority:n}),this._decrease(a),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key}decrease(t,n){let r=this._keyIndices[t];if(r===void 0)throw new Error(`Key not found: ${t}`);let o=this._arr[r].priority;if(n>o)throw new Error(`New priority is greater than current priority. Key: ${t} Old: ${o} New: ${n}`);this._arr[r].priority=n,this._decrease(r)}_heapify(t){let n=this._arr,r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function H2e(e,t,n,r){let o=function(s){return e.outEdges(s)};return XCs(e,String(t),n||$Cs,r||o)}function XCs(e,t,n,r){let o={},s=new BZn,a,l,d=function(u){let h=u.v!==a?u.v:u.w,g=o[h],m=n(u),v=l.distance+m;if(m<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+u+" Weight: "+m);v0&&(a=s.removeMin(),l=o[a],l.distance!==Number.POSITIVE_INFINITY);)r(a).forEach(d);return o}function GCs(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=H2e(e,o,t,n),r},{})}function RZn(e){let t=0,n=[],r={},o=[];function s(a){let l=r[a]={onStack:!0,lowlink:t,index:t++};if(n.push(a),e.successors(a).forEach(function(d){d in r?r[d].onStack&&(l.lowlink=Math.min(l.lowlink,r[d].index)):(s(d),l.lowlink=Math.min(l.lowlink,r[d].lowlink))}),l.lowlink===l.index){let d=[],u;do u=n.pop(),r[u].onStack=!1,d.push(u);while(a!==u);o.push(d)}}return e.nodes().forEach(function(a){a in r||s(a)}),o}function YCs(e){return RZn(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var ZCs=()=>1;function qCs(e,t,n){return KCs(e,t||ZCs,n||function(r){return e.outEdges(r)})}function KCs(e,t,n){let r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0,predecessor:""},o.forEach(function(a){s!==a&&(r[s][a]={distance:Number.POSITIVE_INFINITY,predecessor:""})}),n(s).forEach(function(a){let l=a.v===s?a.w:a.v,d=t(a);r[s][l]={distance:d,predecessor:s}})}),o.forEach(function(s){let a=r[s];o.forEach(function(l){let d=r[l];o.forEach(function(u){let h=d[s],g=a[u],m=d[u],v=h.distance+g.distance;v{var d;return(d=e.isDirected()?e.successors(l):e.neighbors(l))!=null?d:[]},a={};return t.forEach(function(l){if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o=MZn(e,l,n==="post",a,s,r,o)}),o}function MZn(e,t,n,r,o,s,a){return t in r||(r[t]=!0,n||(a=s(a,t)),o(t).forEach(function(l){a=MZn(e,l,n,r,o,s,a)}),n&&(a=s(a,t))),a}function PZn(e,t,n){return e_s(e,t,n,function(r,o){return r.push(o),r},[])}function t_s(e,t){return PZn(e,t,"post")}function n_s(e,t){return PZn(e,t,"pre")}function i_s(e,t){let n=new Tp,r={},o=new BZn,s;function a(d){let u=d.v===s?d.w:d.v,h=o.priority(u);if(h!==void 0){let g=t(d);g0;){if(s=o.removeMin(),s in r)n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(a)}return n}function r_s(e,t,n,r){return o_s(e,t,n,r??(o=>{let s=e.outEdges(o);return s??[]}))}function o_s(e,t,n,r){if(n===void 0)return H2e(e,t,n,r);let o=!1,s=e.nodes();for(let a=0;at.setNode(n,e.node(n))),e.edges().forEach(n=>{let r=t.edge(n.v,n.w)||{weight:0,minlen:1},o=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),t}function FZn(e){let t=new Tp({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(n=>{e.children(n).length||t.setNode(n,e.node(n))}),e.edges().forEach(n=>{t.setEdge(n,e.edge(n))}),t}function vkn(e,t){let n=e.x,r=e.y,o=t.x-n,s=t.y-r,a=e.width/2,l=e.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");let d,u;return Math.abs(s)*a>Math.abs(o)*l?(s<0&&(l=-l),d=l*o/s,u=l):(o<0&&(a=-a),d=a,u=a*s/o),{x:n+d,y:r+u}}function $re(e){let t=Mte(UZn(e)+1).map(()=>[]);return e.nodes().forEach(n=>{let r=e.node(n),o=r.rank;o!==void 0&&(t[o]||(t[o]=[]),t[o][r.order]=n)}),t}function a_s(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),n=JO(Math.min,t);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,"rank")&&(o.rank-=n)})}function l_s(e){let t=e.nodes().map(a=>e.node(a).rank).filter(a=>a!==void 0),n=JO(Math.min,t),r=[];e.nodes().forEach(a=>{let l=e.node(a).rank-n;r[l]||(r[l]=[]),r[l].push(a)});let o=0,s=e.graph().nodeRankFactor;Array.from(r).forEach((a,l)=>{a===void 0&&l%s!==0?--o:a!==void 0&&o&&a.forEach(d=>e.node(d).rank+=o)})}function Akn(e,t,n,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=r),IH(e,"border",o,t)}function c_s(e,t=NZn){let n=[];for(let r=0;rNZn){let n=c_s(t);return e(...n.map(r=>e(...r)))}else return e(...t)}function UZn(e){let t=e.nodes().map(n=>{let r=e.node(n).rank;return r===void 0?Number.MIN_VALUE:r});return JO(Math.max,t)}function d_s(e,t){let n={lhs:[],rhs:[]};return e.forEach(r=>{t(r)?n.lhs.push(r):n.rhs.push(r)}),n}function jZn(e,t){let n=Date.now();try{return t()}finally{console.log(e+" time: "+(Date.now()-n)+"ms")}}function WZn(e,t){return t()}var u_s=0;function Yst(e){let t=++u_s;return e+(""+t)}function Mte(e,t,n=1){t==null&&(t=e,e=0);let r=s=>str[t]:n=t,Object.entries(e).reduce((r,[o,s])=>(r[o]=n(s,o),r),{})}function h_s(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}var qOe="\0",f_s="3.0.0",g_s=class{constructor(){ICs(this,"_sentinel");let e={};e._next=e._prev=e,this._sentinel=e}dequeue(){let e=this._sentinel,t=e._prev;if(t!==e)return pkn(t),t}enqueue(e){let t=this._sentinel;e._prev&&e._next&&pkn(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){let e=[],t=this._sentinel,n=t._prev;for(;n!==t;)e.push(JSON.stringify(n,m_s)),n=n._prev;return"["+e.join(", ")+"]"}};function pkn(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function m_s(e,t){if(e!=="_next"&&e!=="_prev")return t}var k_s=g_s,v_s=()=>1;function A_s(e,t){if(e.nodeCount()<=1)return[];let n=b_s(e,t||v_s);return p_s(n.graph,n.buckets,n.zeroIdx).flatMap(r=>e.outEdges(r.v,r.w)||[])}function p_s(e,t,n){var r;let o=[],s=t[t.length-1],a=t[0],l;for(;e.nodeCount();){for(;l=a.dequeue();)kRe(e,t,n,l);for(;l=s.dequeue();)kRe(e,t,n,l);if(e.nodeCount()){for(let d=t.length-2;d>0;--d)if(l=(r=t[d])==null?void 0:r.dequeue(),l){o=o.concat(kRe(e,t,n,l,!0)||[]);break}}}return o}function kRe(e,t,n,r,o){let s=[],a=o?s:void 0;return(e.inEdges(r.v)||[]).forEach(l=>{let d=e.edge(l),u=e.node(l.v);o&&s.push({v:l.v,w:l.w}),u.out-=d,VGe(t,n,u)}),(e.outEdges(r.v)||[]).forEach(l=>{let d=e.edge(l),u=l.w,h=e.node(u);h.in-=d,VGe(t,n,h)}),e.removeNode(r.v),a}function b_s(e,t){let n=new Tp,r=0,o=0;e.nodes().forEach(l=>{n.setNode(l,{v:l,in:0,out:0})}),e.edges().forEach(l=>{let d=n.edge(l.v,l.w)||0,u=t(l),h=d+u;n.setEdge(l.v,l.w,h);let g=n.node(l.v),m=n.node(l.w);o=Math.max(o,g.out+=u),r=Math.max(r,m.in+=u)});let s=w_s(o+r+3).map(()=>new k_s),a=r+1;return n.nodes().forEach(l=>{VGe(s,a,n.node(l))}),{graph:n,buckets:s,zeroIdx:a}}function VGe(e,t,n){var r,o,s;n.out?n.in?(s=e[n.out-n.in+t])==null||s.enqueue(n):(o=e[e.length-1])==null||o.enqueue(n):(r=e[0])==null||r.enqueue(n)}function w_s(e){let t=[];for(let n=0;n{let r=e.edge(n);e.removeEdge(n),r.forwardName=n.name,r.reversed=!0,e.setEdge(n.w,n.v,r,Yst("rev"))});function t(n){return r=>n.edge(r).weight}}function y_s(e){let t=[],n={},r={};function o(s){Object.hasOwn(r,s)||(r[s]=!0,n[s]=!0,e.outEdges(s).forEach(a=>{Object.hasOwn(n,a.w)?t.push(a):o(a.w)}),delete n[s])}return e.nodes().forEach(o),t}function C_s(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.reversed){e.removeEdge(t);let r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function __s(e){e.graph().dummyChains=[],e.edges().forEach(t=>S_s(e,t))}function S_s(e,t){let n=t.v,r=e.node(n).rank,o=t.w,s=e.node(o).rank,a=t.name,l=e.edge(t),d=l.labelRank;if(s===r+1)return;e.removeEdge(t);let u,h,g;for(g=0,++r;r{let n=e.node(t),r=n.edgeLabel,o;for(e.setEdge(n.edgeObj,r);n.dummy;)o=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),n.dummy==="edge-label"&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=o,n=e.node(t)})}function Zst(e){let t={};function n(r){let o=e.node(r);if(Object.hasOwn(t,r))return o.rank;t[r]=!0;let s=e.outEdges(r),a=s?s.map(d=>d==null?Number.POSITIVE_INFINITY:n(d.w)-e.edge(d).minlen):[],l=JO(Math.min,a);return l===Number.POSITIVE_INFINITY&&(l=0),o.rank=l}e.sources().forEach(n)}function cz(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var VZn=x_s;function x_s(e){let t=new Tp({directed:!1}),n=e.nodes();if(n.length===0)throw new Error("Graph must have at least one node");let r=n[0],o=e.nodeCount();t.setNode(r,{});let s,a;for(;E_s(t,e){let a=s.v,l=r===a?s.w:a;!e.hasNode(l)&&!cz(t,s)&&(e.setNode(l,{}),e.setEdge(r,l,{}),n(l))})}return e.nodes().forEach(n),e.nodeCount()}function T_s(e,t){return t.edges().reduce((n,r)=>{let o=Number.POSITIVE_INFINITY;return e.hasNode(r.v)!==e.hasNode(r.w)&&(o=cz(t,r)),ot.node(r).rank+=n)}var{preorder:D_s,postorder:B_s}=Gst,R_s=oM;oM.initLowLimValues=Kst;oM.initCutValues=qst;oM.calcCutValue=zZn;oM.leaveEdge=$Zn;oM.enterEdge=XZn;oM.exchangeEdges=GZn;function oM(e){e=s_s(e),Zst(e);let t=VZn(e);Kst(t),qst(t,e);let n,r;for(;n=$Zn(t);)r=XZn(t,e,n),GZn(t,e,n,r)}function qst(e,t){let n=B_s(e,e.nodes());n=n.slice(0,n.length-1),n.forEach(r=>I_s(e,t,r))}function I_s(e,t,n){let r=e.node(n).parent,o=e.edge(n,r);o.cutvalue=zZn(e,t,n)}function zZn(e,t,n){let r=e.node(n).parent,o=!0,s=t.edge(n,r),a=0;s||(o=!1,s=t.edge(r,n)),a=s.weight;let l=t.nodeEdges(n);return l&&l.forEach(d=>{let u=d.v===n,h=u?d.w:d.v;if(h!==r){let g=u===o,m=t.edge(d).weight;if(a+=g?m:-m,P_s(e,n,h)){let v=e.edge(n,h).cutvalue;a+=g?-v:v}}}),a}function Kst(e,t){arguments.length<2&&(t=e.nodes()[0]),HZn(e,{},1,t)}function HZn(e,t,n,r,o){let s=n,a=e.node(r);t[r]=!0;let l=e.neighbors(r);return l&&l.forEach(d=>{Object.hasOwn(t,d)||(n=HZn(e,t,n,d,r))}),a.low=s,a.lim=n++,o?a.parent=o:delete a.parent,n}function $Zn(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function XZn(e,t,n){let r=n.v,o=n.w;t.hasEdge(r,o)||(r=n.w,o=n.v);let s=e.node(r),a=e.node(o),l=s,d=!1;return s.lim>a.lim&&(l=a,d=!0),t.edges().filter(u=>d===bkn(e,e.node(u.v),l)&&d!==bkn(e,e.node(u.w),l)).reduce((u,h)=>cz(t,h)!e.node(o).parent);if(!n)return;let r=D_s(e,[n]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=t.edge(o,s),l=!1;a||(a=t.edge(s,o),l=!0),t.node(o).rank=t.node(s).rank+(l?a.minlen:-a.minlen)})}function P_s(e,t,n){return e.hasEdge(t,n)}function bkn(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}var F_s=N_s;function N_s(e){let t=e.graph().ranker;if(typeof t=="function")return t(e);switch(t){case"network-simplex":wkn(e);break;case"tight-tree":j_s(e);break;case"longest-path":U_s(e);break;case"none":break;default:wkn(e)}}var U_s=Zst;function j_s(e){Zst(e),VZn(e)}function wkn(e){R_s(e)}var W_s=V_s;function V_s(e){let t=H_s(e);e.graph().dummyChains.forEach(n=>{let r=e.node(n),o=r.edgeObj,s=z_s(e,t,o.v,o.w),a=s.path,l=s.lca,d=0,u=a[d],h=!0;for(;n!==o.w;){if(r=e.node(n),h){for(;(u=a[d])!==l&&e.node(u).maxRanka||l>t[d].lim));let u=d,h=r;for(;(h=e.parent(h))!==u;)s.push(h);return{path:o.concat(s.reverse()),lca:u}}function H_s(e){let t={},n=0;function r(o){let s=n;e.children(o).forEach(r),t[o]={low:s,lim:n++}}return e.children(qOe).forEach(r),t}function $_s(e){let t=IH(e,"root",{},"_root"),n=X_s(e),r=Object.values(n),o=JO(Math.max,r)-1,s=2*o+1;e.graph().nestingRoot=t,e.edges().forEach(l=>e.edge(l).minlen*=s);let a=G_s(e)+1;e.children(qOe).forEach(l=>YZn(e,t,s,a,o,n,l)),e.graph().nodeRankFactor=s}function YZn(e,t,n,r,o,s,a){var l;let d=e.children(a);if(!d.length){a!==t&&e.setEdge(t,a,{weight:0,minlen:n});return}let u=Akn(e,"_bt"),h=Akn(e,"_bb"),g=e.node(a);e.setParent(u,a),g.borderTop=u,e.setParent(h,a),g.borderBottom=h,d.forEach(m=>{var v;YZn(e,t,n,r,o,s,m);let f=e.node(m),k=f.borderTop?f.borderTop:m,A=f.borderBottom?f.borderBottom:m,p=f.borderTop?r:2*r,b=k!==A?1:o-((v=s[a])!=null?v:0)+1;e.setEdge(u,k,{weight:p,minlen:b,nestingEdge:!0}),e.setEdge(A,h,{weight:p,minlen:b,nestingEdge:!0})}),e.parent(a)||e.setEdge(t,u,{weight:0,minlen:o+((l=s[a])!=null?l:0)})}function X_s(e){let t={};function n(r,o){let s=e.children(r);s&&s.length&&s.forEach(a=>n(a,o+1)),t[r]=o}return e.children(qOe).forEach(r=>n(r,1)),t}function G_s(e){return e.edges().reduce((t,n)=>t+e.edge(n).weight,0)}function Y_s(e){let t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(n=>{e.edge(n).nestingEdge&&e.removeEdge(n)})}var Z_s=q_s;function q_s(e){function t(n){let r=e.children(n),o=e.node(n);if(r.length&&r.forEach(t),Object.hasOwn(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(let s=o.minRank,a=o.maxRank+1;sykn(e.node(t))),e.edges().forEach(t=>ykn(e.edge(t)))}function ykn(e){let t=e.width;e.width=e.height,e.height=t}function eSs(e){e.nodes().forEach(t=>vRe(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(vRe),Object.hasOwn(r,"y")&&vRe(r)})}function vRe(e){e.y=-e.y}function tSs(e){e.nodes().forEach(t=>ARe(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(ARe),Object.hasOwn(r,"x")&&ARe(r)})}function ARe(e){let t=e.x;e.x=e.y,e.y=t}function nSs(e){let t={},n=e.nodes().filter(l=>!e.children(l).length),r=n.map(l=>e.node(l).rank),o=JO(Math.max,r),s=Mte(o+1).map(()=>[]);function a(l){if(t[l])return;t[l]=!0;let d=e.node(l);s[d.rank].push(l);let u=e.successors(l);u&&u.forEach(a)}return n.sort((l,d)=>e.node(l).rank-e.node(d).rank).forEach(a),s}function iSs(e,t){let n=0;for(let r=1;rh)),o=t.flatMap(u=>{let h=e.outEdges(u);return h?h.map(g=>({pos:r[g.w],weight:e.edge(g).weight})).sort((g,m)=>g.pos-m.pos):[]}),s=1;for(;s{let h=u.pos+s;l[h]+=u.weight;let g=0;for(;h>0;)h%2&&(g+=l[h+1]),h=h-1>>1,l[h]+=u.weight;d+=u.weight*g}),d}function oSs(e,t=[]){return t.map(n=>{let r=e.inEdges(n);if(!r||!r.length)return{v:n};{let o=r.reduce((s,a)=>{let l=e.edge(a),d=e.node(a.v);return{sum:s.sum+l.weight*d.order,weight:s.weight+l.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}})}function sSs(e,t){let n={};e.forEach((o,s)=>{let a={indegree:0,in:[],out:[],vs:[o.v],i:s};o.barycenter!==void 0&&(a.barycenter=o.barycenter,a.weight=o.weight),n[o.v]=a}),t.edges().forEach(o=>{let s=n[o.v],a=n[o.w];s!==void 0&&a!==void 0&&(a.indegree++,s.out.push(a))});let r=Object.values(n).filter(o=>!o.indegree);return aSs(r)}function aSs(e){let t=[];function n(o){return s=>{s.merged||(s.barycenter===void 0||o.barycenter===void 0||s.barycenter>=o.barycenter)&&lSs(o,s)}}function r(o){return s=>{s.in.push(o),--s.indegree===0&&e.push(s)}}for(;e.length;){let o=e.pop();t.push(o),o.in.reverse().forEach(n(o)),o.out.forEach(r(o))}return t.filter(o=>!o.merged).map(o=>X2e(o,["vs","i","barycenter","weight"]))}function lSs(e,t){let n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function cSs(e,t){let n=d_s(e,h=>Object.hasOwn(h,"barycenter")),r=n.lhs,o=n.rhs.sort((h,g)=>g.i-h.i),s=[],a=0,l=0,d=0;r.sort(dSs(!!t)),d=Ckn(s,o,d),r.forEach(h=>{d+=h.vs.length,s.push(h.vs),a+=h.barycenter*h.weight,l+=h.weight,d=Ckn(s,o,d)});let u={vs:s.flat(1)};return l&&(u.barycenter=a/l,u.weight=l),u}function Ckn(e,t,n){let r;for(;t.length&&(r=t[t.length-1]).i<=n;)t.pop(),e.push(r.vs),n++;return n}function dSs(e){return(t,n)=>t.barycentern.barycenter?1:e?n.i-t.i:t.i-n.i}function qZn(e,t,n,r){let o=e.children(t),s=e.node(t),a=s?s.borderLeft:void 0,l=s?s.borderRight:void 0,d={};a&&(o=o.filter(m=>m!==a&&m!==l));let u=oSs(e,o);u.forEach(m=>{if(e.children(m.v).length){let v=qZn(e,m.v,n,r);d[m.v]=v,Object.hasOwn(v,"barycenter")&&hSs(m,v)}});let h=sSs(u,n);uSs(h,d);let g=cSs(h,r);if(a&&l){g.vs=[a,g.vs,l].flat(1);let m=e.predecessors(a);if(m&&m.length){let v=e.node(m[0]),f=e.predecessors(l),k=e.node(f[0]);Object.hasOwn(g,"barycenter")||(g.barycenter=0,g.weight=0),g.barycenter=(g.barycenter*g.weight+v.order+k.order)/(g.weight+2),g.weight+=2}}return g}function uSs(e,t){e.forEach(n=>{n.vs=n.vs.flatMap(r=>t[r]?t[r].vs:r)})}function hSs(e,t){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight):(e.barycenter=t.barycenter,e.weight=t.weight)}function fSs(e,t,n,r){r||(r=e.nodes());let o=gSs(e),s=new Tp({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(a=>e.node(a));return r.forEach(a=>{let l=e.node(a),d=e.parent(a);if(l.rank===t||l.minRank<=t&&t<=l.maxRank){s.setNode(a),s.setParent(a,d||o);let u=e[n](a);u&&u.forEach(h=>{let g=h.v===a?h.w:h.v,m=s.edge(g,a),v=m!==void 0?m.weight:0;s.setEdge(g,a,{weight:e.edge(h).weight+v})}),Object.hasOwn(l,"minRank")&&s.setNode(a,{borderLeft:l.borderLeft[t],borderRight:l.borderRight[t]})}}),s}function gSs(e){let t;for(;e.hasNode(t=Yst("_root")););return t}function mSs(e,t,n){let r={},o;n.forEach(s=>{let a=e.parent(s),l,d;for(;a;){if(l=e.parent(a),l?(d=r[l],r[l]=a):(d=o,o=a),d&&d!==a){t.setEdge(d,a);return}a=l}})}function KZn(e,t={}){if(typeof t.customOrder=="function"){t.customOrder(e,KZn);return}let n=UZn(e),r=_kn(e,Mte(1,n+1),"inEdges"),o=_kn(e,Mte(n-1,-1,-1),"outEdges"),s=nSs(e);if(Skn(e,s),t.disableOptimalOrderHeuristic)return;let a=Number.POSITIVE_INFINITY,l,d=t.constraints||[];for(let u=0,h=0;h<4;++u,++h){kSs(u%2?r:o,u%4>=2,d),s=$re(e);let g=iSs(e,s);g{r.has(s)||r.set(s,[]),r.get(s).push(a)};for(let s of e.nodes()){let a=e.node(s);if(typeof a.rank=="number"&&o(a.rank,s),typeof a.minRank=="number"&&typeof a.maxRank=="number")for(let l=a.minRank;l<=a.maxRank;l++)l!==a.rank&&o(l,s)}return t.map(function(s){return fSs(e,s,n,r.get(s)||[])})}function kSs(e,t,n){let r=new Tp;e.forEach(function(o){n.forEach(l=>r.setEdge(l.left,l.right));let s=o.graph().root,a=qZn(o,s,r,t);a.vs.forEach((l,d)=>o.node(l).order=d),mSs(o,r,a.vs)})}function Skn(e,t){Object.values(t).forEach(n=>n.forEach((r,o)=>e.node(r).order=o))}function vSs(e,t){let n={};function r(o,s){let a=0,l=0,d=o.length,u=s[s.length-1];return s.forEach((h,g)=>{let m=pSs(e,h),v=m?e.node(m).order:d;(m||h===u)&&(s.slice(l,g+1).forEach(f=>{let k=e.predecessors(f);k&&k.forEach(A=>{let p=e.node(A),b=p.order;(b{let g=s[h];if(g!==void 0&&e.node(g).dummy){let m=e.predecessors(g);m&&m.forEach(v=>{if(v===void 0)return;let f=e.node(v);f.dummy&&(f.orderu)&&JZn(n,v,g)})}})}function o(s,a){let l=-1,d=-1,u=0;return a.forEach((h,g)=>{if(e.node(h).dummy==="border"){let m=e.predecessors(h);if(m&&m.length){let v=m[0];if(v===void 0)return;d=e.node(v).order,r(a,u,g,l,d),u=g,l=d}}r(a,u,a.length,d,s.length)}),a}return t.length&&t.reduce(o),n}function pSs(e,t){if(e.node(t).dummy){let n=e.predecessors(t);if(n)return n.find(r=>e.node(r).dummy)}}function JZn(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];r||(e[t]=r={}),r[n]=!0}function bSs(e,t,n){if(t>n){let o=t;t=n,n=o}let r=e[t];return r!==void 0&&Object.hasOwn(r,n)}function wSs(e,t,n,r){let o={},s={},a={};return t.forEach(l=>{l.forEach((d,u)=>{o[d]=d,s[d]=d,a[d]=u})}),t.forEach(l=>{let d=-1;l.forEach(u=>{let h=r(u);if(h&&h.length){let g=h.sort((v,f)=>{let k=a[v],A=a[f];return(k!==void 0?k:0)-(A!==void 0?A:0)}),m=(g.length-1)/2;for(let v=Math.floor(m),f=Math.ceil(m);v<=f;++v){let k=g[v];if(k===void 0)continue;let A=a[k];if(A!==void 0&&s[u]===u&&d{var p;let b=(p=s[A.v])!=null?p:0,w=a.edge(A);return Math.max(k,b+(w!==void 0?w:0))},0):s[v]=0}function h(v){let f=a.outEdges(v),k=Number.POSITIVE_INFINITY;f&&(k=f.reduce((p,b)=>{let w=s[b.w],O=a.edge(b);return Math.min(p,(w!==void 0?w:0)-(O!==void 0?O:0))},Number.POSITIVE_INFINITY));let A=e.node(v);k!==Number.POSITIVE_INFINITY&&A.borderType!==l&&(s[v]=Math.max(s[v]!==void 0?s[v]:0,k))}function g(v){return a.predecessors(v)||[]}function m(v){return a.successors(v)||[]}return d(u,g),d(h,m),Object.keys(r).forEach(v=>{var f;let k=n[v];k!==void 0&&(s[v]=(f=s[k])!=null?f:0)}),s}function ySs(e,t,n,r){let o=new Tp,s=e.graph(),a=xSs(s.nodesep,s.edgesep,r);return t.forEach(l=>{let d;l.forEach(u=>{let h=n[u];if(h!==void 0){if(o.setNode(h),d!==void 0){let g=n[d];if(g!==void 0){let m=o.edge(g,h);o.setEdge(g,h,Math.max(a(e,u,d),m||0))}}d=u}})}),o}function CSs(e,t){return Object.values(t).reduce((n,r)=>{let o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([l,d])=>{let u=ESs(e,l)/2;o=Math.max(d+u,o),s=Math.min(d-u,s)});let a=o-s;return a{["l","r"].forEach(a=>{let l=s+a,d=e[l];if(!d||d===t)return;let u=Object.values(d),h=r-JO(Math.min,u);a!=="l"&&(h=o-JO(Math.max,u)),h&&(e[l]=ZOe(d,g=>g+h))})})}function SSs(e,t=void 0){let n=e.ul;return n?ZOe(n,(r,o)=>{var s,a;if(t){let d=t.toLowerCase(),u=e[d];if(u&&u[o]!==void 0)return u[o]}let l=Object.values(e).map(d=>{let u=d[o];return u!==void 0?u:0}).sort((d,u)=>d-u);return(((s=l[1])!=null?s:0)+((a=l[2])!=null?a:0))/2}):{}}function LSs(e){let t=$re(e),n=Object.assign(vSs(e,t),ASs(e,t)),r={},o;["u","d"].forEach(a=>{o=a==="u"?t:Object.values(t).reverse(),["l","r"].forEach(l=>{l==="r"&&(o=o.map(h=>Object.values(h).reverse()));let d=wSs(e,o,n,h=>(a==="u"?e.predecessors(h):e.successors(h))||[]),u=OSs(e,o,d.root,d.align,l==="r");l==="r"&&(u=ZOe(u,h=>-h)),r[a+l]=u})});let s=CSs(e,r);return _Ss(r,s),SSs(r,e.graph().align)}function xSs(e,t,n){return(r,o,s)=>{let a=r.node(o),l=r.node(s),d=0,u;if(d+=a.width/2,Object.hasOwn(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2;break}if(u&&(d+=n?u:-u),u=void 0,d+=(a.dummy?t:e)/2,d+=(l.dummy?t:e)/2,d+=l.width/2,Object.hasOwn(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":u=l.width/2;break;case"r":u=-l.width/2;break}return u&&(d+=n?u:-u),d}}function ESs(e,t){return e.node(t).width}function TSs(e){e=FZn(e),QSs(e),Object.entries(LSs(e)).forEach(([t,n])=>e.node(t).x=n)}function QSs(e){let t=$re(e),n=e.graph(),r=n.ranksep,o=n.rankalign,s=0;t.forEach(a=>{let l=a.reduce((d,u)=>{var h;let g=(h=e.node(u).height)!=null?h:0;return d>g?d:g},0);a.forEach(d=>{let u=e.node(d);o==="top"?u.y=s+u.height/2:o==="bottom"?u.y=s+l-u.height/2:u.y=s+l/2}),s+=l+r})}function DSs(e,t={}){let n=t.debugTiming?jZn:WZn;return n("layout",()=>{let r=n(" buildLayoutGraph",()=>WSs(e));return n(" runLayout",()=>BSs(r,n,t)),n(" updateInputGraph",()=>RSs(e,r)),r})}function BSs(e,t,n){t(" makeSpaceForEdgeLabels",()=>VSs(e)),t(" removeSelfEdges",()=>KSs(e)),t(" acyclic",()=>O_s(e)),t(" nestingGraph.run",()=>$_s(e)),t(" rank",()=>F_s(FZn(e))),t(" injectEdgeLabelProxies",()=>zSs(e)),t(" removeEmptyRanks",()=>l_s(e)),t(" nestingGraph.cleanup",()=>Y_s(e)),t(" normalizeRanks",()=>a_s(e)),t(" assignRankMinMax",()=>HSs(e)),t(" removeEdgeLabelProxies",()=>$Ss(e)),t(" normalize.run",()=>__s(e)),t(" parentDummyChains",()=>W_s(e)),t(" addBorderSegments",()=>Z_s(e)),t(" order",()=>KZn(e,n)),t(" insertSelfEdges",()=>JSs(e)),t(" adjustCoordinateSystem",()=>K_s(e)),t(" position",()=>TSs(e)),t(" positionSelfEdges",()=>e8s(e)),t(" removeBorderNodes",()=>qSs(e)),t(" normalize.undo",()=>L_s(e)),t(" fixupEdgeLabelCoords",()=>YSs(e)),t(" undoCoordinateSystem",()=>J_s(e)),t(" translateGraph",()=>XSs(e)),t(" assignNodeIntersects",()=>GSs(e)),t(" reversePoints",()=>ZSs(e)),t(" acyclic.undo",()=>C_s(e))}function RSs(e,t){e.nodes().forEach(n=>{let r=e.node(n),o=t.node(n);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,t.children(n).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(n=>{let r=e.edge(n),o=t.edge(n);r.points=o.points,Object.hasOwn(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var ISs=["nodesep","edgesep","ranksep","marginx","marginy"],MSs={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},PSs=["acyclicer","ranker","rankdir","align","rankalign"],FSs=["width","height","rank"],Lkn={width:0,height:0},NSs=["minlen","weight","width","height","labeloffset"],USs={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},jSs=["labelpos"];function WSs(e){let t=new Tp({multigraph:!0,compound:!0}),n=bRe(e.graph());return t.setGraph(Object.assign({},MSs,pRe(n,ISs),X2e(n,PSs))),e.nodes().forEach(r=>{let o=bRe(e.node(r)),s=pRe(o,FSs);Object.keys(Lkn).forEach(l=>{s[l]===void 0&&(s[l]=Lkn[l])}),t.setNode(r,s);let a=e.parent(r);a!==void 0&&t.setParent(r,a)}),e.edges().forEach(r=>{let o=bRe(e.edge(r));t.setEdge(r,Object.assign({},USs,pRe(o,NSs),X2e(o,jSs)))}),t}function VSs(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(n=>{let r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function zSs(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.width&&n.height){let r=e.node(t.v),o={rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t};IH(e,"edge-proxy",o,"_ep")}})}function HSs(e){let t=0;e.nodes().forEach(n=>{let r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))}),e.graph().maxRank=t}function $Ss(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="edge-proxy"){let r=n;e.edge(r.e).labelRank=n.rank,e.removeNode(t)}})}function XSs(e){let t=Number.POSITIVE_INFINITY,n=0,r=Number.POSITIVE_INFINITY,o=0,s=e.graph(),a=s.marginx||0,l=s.marginy||0;function d(u){let h=u.x,g=u.y,m=u.width,v=u.height;t=Math.min(t,h-m/2),n=Math.max(n,h+m/2),r=Math.min(r,g-v/2),o=Math.max(o,g+v/2)}e.nodes().forEach(u=>d(e.node(u))),e.edges().forEach(u=>{let h=e.edge(u);Object.hasOwn(h,"x")&&d(h)}),t-=a,r-=l,e.nodes().forEach(u=>{let h=e.node(u);h.x-=t,h.y-=r}),e.edges().forEach(u=>{let h=e.edge(u);h.points.forEach(g=>{g.x-=t,g.y-=r}),Object.hasOwn(h,"x")&&(h.x-=t),Object.hasOwn(h,"y")&&(h.y-=r)}),s.width=n-t+a,s.height=o-r+l}function GSs(e){e.edges().forEach(t=>{let n=e.edge(t),r=e.node(t.v),o=e.node(t.w),s,a;n.points?(s=n.points[0],a=n.points[n.points.length-1]):(n.points=[],s=o,a=r),n.points.unshift(vkn(r,s)),n.points.push(vkn(o,a))})}function YSs(e){e.edges().forEach(t=>{let n=e.edge(t);if(Object.hasOwn(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}function ZSs(e){e.edges().forEach(t=>{let n=e.edge(t);n.reversed&&n.points.reverse()})}function qSs(e){e.nodes().forEach(t=>{if(e.children(t).length){let n=e.node(t),r=e.node(n.borderTop),o=e.node(n.borderBottom),s=e.node(n.borderLeft[n.borderLeft.length-1]),a=e.node(n.borderRight[n.borderRight.length-1]);n.width=Math.abs(a.x-s.x),n.height=Math.abs(o.y-r.y),n.x=s.x+n.width/2,n.y=r.y+n.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy==="border"&&e.removeNode(t)})}function KSs(e){e.edges().forEach(t=>{if(t.v===t.w){let n=e.node(t.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function JSs(e){$re(e).forEach(t=>{let n=0;t.forEach((r,o)=>{let s=e.node(r);s.order=o+n,(s.selfEdges||[]).forEach(a=>{IH(e,"selfedge",{width:a.label.width,height:a.label.height,rank:s.rank,order:o+ ++n,e:a.e,label:a.label},"_se")}),delete s.selfEdges})})}function e8s(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy==="selfedge"){let r=n,o=e.node(r.e.v),s=o.x+o.width/2,a=o.y,l=n.x-s,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:s+2*l/3,y:a-d},{x:s+5*l/6,y:a-d},{x:s+l,y:a},{x:s+5*l/6,y:a+d},{x:s+2*l/3,y:a+d}],r.label.x=n.x,r.label.y=n.y}})}function pRe(e,t){return ZOe(X2e(e,t),Number)}function bRe(e){let t={};return e&&Object.entries(e).forEach(([n,r])=>{typeof n=="string"&&(n=n.toLowerCase()),t[n]=r}),t}function t8s(e){let t=$re(e),n=new Tp({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{n.setNode(r,{label:r}),n.setParent(r,"layer"+e.node(r).rank)}),e.edges().forEach(r=>n.setEdge(r.v,r.w,{},r.name)),t.forEach((r,o)=>{let s="layer"+o;n.setNode(s,{rank:"same"}),r.reduce((a,l)=>(n.setEdge(a,l,{style:"invis"}),l))}),n}var n8s={graphlib:EZn,version:f_s,layout:DSs,debug:t8s,util:{time:jZn,notime:WZn}},wRe=n8s;/*! For license information please see dagre.esm.js.LEGAL.txt */function eqn(e){const{findNode:t,fitView:n}=nl(e?{id:e}:void 0),r=fe(new wRe.graphlib.Graph),o=fe("LR");function s(a,l,d,u=250,h){const g=new wRe.graphlib.Graph;r.value=g,g.setDefaultEdgeLabel(()=>({})),g.setGraph({rankdir:d,nodesep:u,ranksep:h??u}),o.value=d;const m=d==="LR";for(const v of a){const f=t(v.id);g.setNode(v.id,{width:(f==null?void 0:f.dimensions.width)||150,height:(f==null?void 0:f.dimensions.height)||50})}for(const v of l)g.setEdge(v.source,v.target);return wRe.layout(g),a.map(v=>{const f=g.node(v.id);return{...v,targetPosition:m?Vi.Left:Vi.Top,sourcePosition:m?Vi.Right:Vi.Bottom,position:{x:f.x,y:f.y}}})}return{graph:r,layout:s,previousDirection:o}}const jg=[];for(let e=0;e<256;++e)jg.push((e+256).toString(16).slice(1));function i8s(e,t=0){return(jg[e[t+0]]+jg[e[t+1]]+jg[e[t+2]]+jg[e[t+3]]+"-"+jg[e[t+4]]+jg[e[t+5]]+"-"+jg[e[t+6]]+jg[e[t+7]]+"-"+jg[e[t+8]]+jg[e[t+9]]+"-"+jg[e[t+10]]+jg[e[t+11]]+jg[e[t+12]]+jg[e[t+13]]+jg[e[t+14]]+jg[e[t+15]]).toLowerCase()}let ORe;const r8s=new Uint8Array(16);function o8s(){if(!ORe){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ORe=crypto.getRandomValues.bind(crypto)}return ORe(r8s)}const s8s=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),xkn={randomUUID:s8s};function a8s(e,t,n){var o;e=e||{};const r=e.random??((o=e.rng)==null?void 0:o.call(e))??o8s();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,i8s(r)}function yRe(e,t,n){return xkn.randomUUID&&!e?xkn.randomUUID():a8s(e)}const l8s={class:"closure"},c8s={class:"ac",style:{gap:"8px"}},d8s=Je({__name:"index",props:Fc({flowData:{default:()=>({resultImages:[],referanceImages:[]})},type:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:Fc(["save"],["update:modelValue"]),setup(e,{emit:t}){const n=bt("episodesId"),{project:r}=xs(ph()),o=fe(!1);let s=null;Yi("openStoryboardCheck",O);const{toObject:a,fromObject:l,fitView:d}=nl("editImage"),{layout:u}=eqn("editImage"),h=e,g=t,m=Pf(e,"modelValue"),{addEdges:v,getNodes:f,getEdges:k,updateNodeData:A}=nl("editImage"),p=fe([]),b=fe([]);let w=null;function O(){return o.value=!0,new Promise(R=>{s=R})}function y(R){o.value=!1,s==null||s(R),s=null}function C(){o.value=!1,s==null||s([]),s=null}function _(){w&&clearTimeout(w),w=setTimeout(S,60)}function S(){const R=f.value,I=k.value,F=new Map(R.map(W=>[W.id,W])),j=new Map;for(const W of I){const H=j.get(W.target);H?H.push(W.source):j.set(W.target,[W.source])}for(const W of R){if(W.type!=="generated")continue;const $=(j.get(W.id)??[]).map(re=>F.get(re)).filter(re=>!!re).map(re=>re.type==="upload"?{image:re.data.image||""}:re.type==="generated"?{image:re.data.generatedImage||""}:{image:""}).filter(re=>re.image),G=W.data.references??[];G.length===$.length&&$.every((re,J)=>{var oe;return((oe=G[J])==null?void 0:oe.image)===re.image})||A(W.id,{references:$})}}const L=R=>{R.source===R.target||k.value.some(F=>F.source===R.source&&F.target===R.target||F.source===R.target&&F.target===R.source)||(v([{id:yRe(),source:R.source,target:R.target,...hkn}]),ai(_))};function E(R){const I=R.value===1?"upload":"generated";T(I)}const T=(R,I="",F="")=>{const j=yRe(),W=p.value.filter(G=>G.type===R).pop(),H=W?W.position.y+350:100,$=R==="generated"?600:100;return p.value.push({id:j,type:R,position:{x:$,y:H},data:R==="generated"?Jys(I,F):{image:I}}),j};async function D(R){try{const I={nodes:fkn(f.value),edges:gkn(k.value)};if(h.flowData.flowId)await mn.post("/production/editImage/updateImageFlow",{...I,flowId:h.flowData.flowId}),g("save",{imageUrl:R,flowId:h.flowData.flowId});else{const{data:F}=await mn.post("/production/editImage/saveImageFlow",{...I});g("save",{imageUrl:R,flowId:F==null?void 0:F.id})}m.value=!1}catch(I){window.$message.error(I.message||$t("workbench.production.editImage.saveFailed"))}}const P=fe({imageModel:"",imageQuality:""});An(async()=>{try{const{data:R}=await mn.post("/production/editImage/getImageDefaultModle",{projectId:r.value.id});if(R&&(P.value=R),console.log("%c Line:268 🥔 props.flowData.flowId","background:#33a5ff",h.flowData.flowId),!h.flowData.flowId)return Q();const{data:I}=await mn.post("/production/editImage/getImageFlow",{id:h.flowData.flowId});if(!I)return Q();b.value=I.edges,p.value=I.nodes}catch(R){window.$message.error(R.message||$t("workbench.production.editImage.fetchFailed"))}});function Q(){const R=[],I=[];h.flowData.referanceImages.forEach(F=>{R.push(T("upload",F))}),h.flowData.resultImages.forEach(F=>{I.push(T("generated",F.src,F.prompt))});for(const F of R)for(const j of I)b.value.push({id:yRe(),source:F,target:j,...hkn});ai(_)}function M(){const R=co.confirm({header:$t("workbench.production.editImage.closeConfirmTitle"),body:$t("workbench.production.editImage.closeConfirmBody"),confirmBtn:$t("common.confirm"),cancelBtn:$t("common.cancel"),onConfirm:()=>{if(h.flowData.flowId){const I={flowId:h.flowData.flowId,nodes:fkn(f.value),edges:gkn(k.value)};mn.post("/production/editImage/updateImageFlow",{...I})}m.value=!1,R.destroy()}})}async function B(R){const I=a();I.nodes=u(I.nodes,I.edges,R),await l(I),await ai(),d({duration:300})}return(R,I)=>{const F=_n("i-close-small"),j=_n("i-plus"),W=Si,H=Rne,$=_n("i-tree-diagram"),G=el,q=gc;return xe(),Ut(q,{footer:!1,header:!1,closeBtn:!1,visible:m.value,"onUpdate:visible":I[4]||(I[4]=re=>m.value=re),attach:"body",placement:"center",mode:"full-screen",class:"fullscreenDialog"},{default:Oe(()=>[ge("div",l8s,[c(F,{theme:"outline",size:"24",fill:"#4a4a4a",onClick:M})]),c(Ae(wZn),{id:"editImage",class:"editImage",nodes:Ae(p),"onUpdate:nodes":I[1]||(I[1]=re=>Fn(p)?p.value=re:null),edges:Ae(b),"onUpdate:edges":I[2]||(I[2]=re=>Fn(b)?b.value=re:null),"min-zoom":.01,"fit-view-on-init":"",onConnect:L,onEdgesChange:_},{"node-upload":Oe(({id:re,data:J})=>[c(zys,{id:re,data:J,onUpload:_,onKeep:D},null,8,["id","data"])]),"node-generated":Oe(({id:re,data:J})=>[c(kCs,{id:re,data:J,projectId:+Ae(r).id,imageDefaultModle:Ae(P),onKeep:D},null,8,["id","data","projectId","imageDefaultModle"])]),"edge-removeLine":Oe(re=>[c(DCs,Qx(D_(re)),null,16)]),default:Oe(()=>[c(Ae(_Zn)),c(Ae(SZn)),c(Ae(OZn),{position:"top-left"},{default:Oe(()=>[ge("div",c8s,[c(H,{options:[{content:R.$t("workbench.production.editImage.upload"),value:1},{content:R.$t("workbench.production.editImage.generate"),value:2}],onClick:E},{default:Oe(()=>[c(W,{theme:"primary",shape:"circle"},{icon:Oe(()=>[c(j)]),_:1})]),_:1},8,["options"]),c(G,{theme:"primary",content:R.$t("workbench.production.autoLayoutLR")},{default:Oe(()=>[c(W,{class:"guide-layout-btn",onClick:I[0]||(I[0]=re=>B("LR")),variant:"outline",shape:"circle"},{icon:Oe(()=>[c($)]),_:1})]),_:1},8,["content"])])]),_:1})]),_:1},8,["nodes","edges"]),c(ECs,{telepor:"",modelValue:Ae(o),"onUpdate:modelValue":I[3]||(I[3]=re=>Fn(o)?o.value=re:null),scriptId:Ae(n),onConfirm:y,onCancel:C},null,8,["modelValue","scriptId"])]),_:1},8,["visible"])}}}),tqn=oo(d8s,[["__scopeId","data-v-dc3fbf5a"]]),Ekn={script:"script",scriptPlan:"scriptPlan",assets:"assets",storyboardTable:"storyboardTable",storyboard:"storyboard",workbench:"workbench"},cG={stroke:"#00000",strokeWidth:4};function u8s(e,t){const n=X(()=>{const o=e.value,s=t.value,a=Ekn;return[{id:a.script,type:"script",dragHandle:".dragHandle",position:s[a.script]||{x:0,y:0},data:{script:o.script,handleIds:{assets:`${a.script}-assets`,source:`${a.script}-source`}}},{id:a.scriptPlan,type:"scriptPlan",dragHandle:".dragHandle",position:s[a.scriptPlan]||{x:0,y:0},data:{scriptPlan:o.scriptPlan,handleIds:{target:`${a.scriptPlan}-target`,source:`${a.scriptPlan}-source`}}},{id:a.assets,type:"assets",dragHandle:".dragHandle",position:s[a.assets]||{x:0,y:0},data:{assets:o.assets,handleIds:{target:`${a.assets}-target`}}},{id:a.storyboardTable,type:"storyboardTable",dragHandle:".dragHandle",position:s[a.storyboardTable]||{x:0,y:0},data:{storyboardTable:o.storyboardTable,handleIds:{target:`${a.storyboardTable}-target`,source:`${a.storyboardTable}-source`}}},{id:a.storyboard,type:"storyboard",dragHandle:".dragHandle",position:s[a.storyboard]||{x:0,y:0},data:{storyboard:o.storyboard,handleIds:{target:`${a.storyboard}-target`,source:`${a.storyboard}-source`}}},{id:a.workbench,type:"workbench",dragHandle:".dragHandle",position:s[a.workbench]||{x:0,y:0},data:{...o.workbench,handleIds:{target:`${a.workbench}-target`,source:`${a.workbench}-source`}}}]}),r=X(()=>{const o=Ekn;return[{id:`${o.script}-${o.assets}`,source:o.script,target:o.assets,sourceHandle:`${o.script}-assets`,targetHandle:`${o.assets}-target`,animated:!1,style:cG},{id:`${o.script}-${o.scriptPlan}`,source:o.script,target:o.scriptPlan,sourceHandle:`${o.script}-source`,targetHandle:`${o.scriptPlan}-target`,animated:!1,style:cG},{id:`${o.scriptPlan}-${o.storyboardTable}`,source:o.scriptPlan,target:o.storyboardTable,sourceHandle:`${o.scriptPlan}-source`,targetHandle:`${o.storyboardTable}-target`,animated:!1,style:cG},{id:`${o.storyboardTable}-${o.storyboard}`,source:o.storyboardTable,target:o.storyboard,sourceHandle:`${o.storyboardTable}-source`,targetHandle:`${o.storyboard}-target`,animated:!1,style:cG},{id:`${o.storyboard}-${o.workbench}`,source:o.storyboard,target:o.workbench,sourceHandle:`${o.storyboard}-source`,targetHandle:`${o.workbench}-target`,animated:!1,style:cG}]});return{nodes:n,edges:r}}const h8s={class:"titleBar dragHandle"},f8s={class:"title"},g8s={class:"content"},m8s={class:"cardGrid"},k8s={key:0,class:"assetImageWrap"},v8s={class:"imageToolsWrap show"},A8s={key:1,class:"assetImageWrap assetImagePlaceholder"},p8s={key:1,style:{color:"red"}},b8s={class:"cardInfo"},w8s={class:"cardName"},O8s={class:"nameText"},y8s={class:"cardDesc"},C8s={class:"divider"},_8s={class:"deriveAssets"},S8s={key:0,class:"assetImageWrap"},L8s={class:"imageToolsWrap show"},x8s={key:1,class:"assetImageWrap assetImagePlaceholder"},E8s={style:{color:"red",cursor:"pointer"}},T8s=["onClick"],Q8s={class:"cardInfo"},D8s={class:"cardName"},B8s={class:"nameText"},R8s={class:"cardDesc"},I8s=Je({__name:"assets",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const{project:t}=xs(ph()),n=e,r=Pf(e,"modelValue"),o=fe({resultImages:[],referanceImages:[]}),s=fe(!1),a=fe();function l(h,g){o.value={flowId:h==null?void 0:h.flowId,resultImages:[{src:h.src,prompt:h.prompt}],referanceImages:[g]},a.value=h.id,s.value=!0}async function d({imageUrl:h,flowId:g}){if(h){for(const m of r.value){const v=m.derive.find(f=>f.id===a.value);if(v){v.src=h,v.flowId=g;break}}await mn.post("/production/assets/updateAssetsUrl",{id:a.value,url:h,flowId:g})}}async function u(h){const g=co.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.production.node.assets.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{var m;try{await mn.post("/production/assets/deleteAssetsDireve",{id:h,projectId:(m=t.value)==null?void 0:m.id}),r.value.forEach(v=>{const f=v.derive.findIndex(k=>k.id===h);f!==-1&&v.derive.splice(f,1)})}catch(v){window.$message.error((v==null?void 0:v.message)||$t("workbench.production.node.assets.removeFailed"))}finally{g.destroy()}}})}return(h,g)=>{const m=jre,v=Zh,f=Wc,k=Xy,A=Sg,p=km,b=_n("i-right"),w=el,O=_n("i-delete");return xe(),Ut(p,{class:"assets"},{default:Oe(()=>[c(Ae(mm),{id:n.handleIds.target,type:"target",position:Ae(Vi).Top},null,8,["id","position"]),ge("div",h8s,[ge("div",f8s,Pe(h.$t("workbench.production.node.assets.title")),1)]),ge("div",g8s,[ge("div",m8s,[(xe(!0),Ge(sn,null,Bi(r.value,y=>(xe(),Ge("div",{key:y.id,class:"assetItemBox"},[c(p,{class:"assetCard"},{default:Oe(()=>[y.src?(xe(),Ge("div",k8s,[c(v,{src:y.src,fit:"contain",class:"assetImage",preview:!0},{overlayContent:Oe(()=>[ge("div",v8s,[c(m,{src:y.src,position:"br"},null,8,["src"])])]),_:2},1032,["src"])])):(xe(),Ge("div",A8s,[y.state=="生成中"?(xe(),Ut(f,{key:0,size:"small"})):y.state=="生成失败"?(xe(),Ge("span",p8s,Pe(h.$t("workbench.production.node.assets.generateFailed")),1)):(xe(),Ut(k,{key:2,size:"small",title:h.$t("workbench.production.node.assets.notGenerated")},null,8,["title"]))])),ge("div",b8s,[ge("div",w8s,[ge("span",O8s,Pe(y.name),1),c(A,{theme:"success"},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.node.assets.originalAsset")),1)]),_:1})]),ge("div",y8s,Pe(y.desc),1)])]),_:2},1024),ge("div",C8s,[c(b,{size:"32"})]),ge("div",_8s,[(xe(!0),Ge(sn,null,Bi(y.derive,(C,_)=>(xe(),Ut(p,{key:_,class:"assetCard",onClick:S=>l(C,y.src)},{default:Oe(()=>[C.src&&C.state=="已完成"?(xe(),Ge("div",S8s,[c(v,{src:C.src,fit:"contain",class:"assetImage",preview:!0},{overlayContent:Oe(()=>[ge("div",L8s,[c(m,{src:C.src,position:"br"},null,8,["src"])])]),_:2},1032,["src"])])):(xe(),Ge("div",x8s,[C.state=="生成中"?(xe(),Ut(f,{key:0,size:"small"})):C.state=="生成失败"?(xe(),Ut(w,{key:1,content:C==null?void 0:C.errorReason},{default:Oe(()=>[ge("div",E8s,Pe(h.$t("workbench.novel.genFailed")),1)]),_:1},8,["content"])):(xe(),Ut(k,{key:2,size:"small",title:h.$t("workbench.production.node.assets.notGenerated")},null,8,["title"]))])),c(w,{theme:"primary",content:h.$t("workbench.production.node.storyboard.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",onClick:Mr(S=>u(C.id),["stop"])},[c(O,{theme:"outline",size:"18",fill:"#fff"})],8,T8s)]),_:2},1032,["content"]),ge("div",Q8s,[ge("div",D8s,[ge("span",B8s,Pe(C.name),1),c(A,{theme:"warning"},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.node.assets.derived")),1)]),_:1})]),ge("div",R8s,Pe(C.desc),1)])]),_:2},1032,["onClick"]))),128)),y.derive.length<=0?(xe(),Ut(p,{key:0,class:"assetCard emptyCard"},{default:Oe(()=>[c(k,{title:h.$t("workbench.production.node.assets.noDerivedAssets")},null,8,["title"])]),_:1})):nn("",!0)])]))),128))])]),Ae(s)?(xe(),Ut(tqn,{key:0,modelValue:Ae(s),"onUpdate:modelValue":g[0]||(g[0]=y=>Fn(s)?s.value=y:null),flowData:Ae(o),onSave:d},null,8,["modelValue","flowData"])):nn("",!0)]),_:1})}}}),M8s=oo(I8s,[["__scopeId","data-v-d4a8f944"]]),P8s={class:"titleBar dragHandle pr"},F8s={class:"title c"},N8s={class:"storyboardList"},U8s=Je({__name:"storyboardTable",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,n=Pf(e,"modelValue"),r=fe(""),o=fe(!1),s=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","table","-","revoke","next","=","preview"];function a(){r.value=n.value??"",o.value=!0}function l(){n.value=r.value,o.value=!1}function d(){o.value=!1}function u(h){var m;const g=(m=h.clipboardData)==null?void 0:m.items;if(g){for(const v of g)if(v.type.startsWith("image/")||v.type.startsWith("video/")){h.preventDefault();return}}}return(h,g)=>{const m=Si,v=Xy,f=km,k=gc;return xe(),Ge(sn,null,[c(f,{class:"storyboardTable"},{default:Oe(()=>[ge("div",P8s,[ge("div",F8s,Pe(h.$t("workbench.production.node.storyboardTable.title")),1),c(m,{size:"small",variant:"text",onClick:a},{default:Oe(()=>[Bt(Pe(h.$t("workbench.production.edit")),1)]),_:1}),c(Ae(mm),{id:t.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:t.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",N8s,[n.value?(xe(),Ut(Ae(i3),{key:1,modelValue:n.value,"onUpdate:modelValue":g[0]||(g[0]=A=>n.value=A),theme:"light"},null,8,["modelValue"])):(xe(),Ut(v,{key:0,style:{"margin-top":"16px"}}))])]),_:1}),c(k,{visible:o.value,"onUpdate:visible":g[3]||(g[3]=A=>o.value=A),header:h.$t("workbench.production.node.storyboardTable.editDialog"),width:"90vw","confirm-btn":h.$t("workbench.production.save"),"cancel-btn":h.$t("workbench.production.cancel"),onConfirm:l,onCancel:d,onClose:d,"close-on-overlay-click":!1,placement:"center",attach:"body"},{default:Oe(()=>[c(Ae(X4),{modelValue:r.value,"onUpdate:modelValue":g[1]||(g[1]=A=>r.value=A),theme:"light",toolbars:s,footers:[],style:{height:"72vh"},onOnUploadImg:()=>{},onDrop:g[2]||(g[2]=Mr(()=>{},["prevent"])),onPaste:u},null,8,["modelValue"])]),_:1},8,["visible","header","confirm-btn","cancel-btn"])],64)}}}),j8s=oo(U8s,[["__scopeId","data-v-1ef204e0"]]),W8s={class:"titleBar dragHandle pr"},V8s={class:"title"},z8s={class:"content"},H8s={class:"frameGrid"},$8s=["onMouseenter"],X8s=["onClick"],G8s={class:"frameCard"},Y8s={class:"imageToolsWrap show"},Z8s=["onClick"],q8s=["onClick"],K8s=["onClick"],J8s=["onClick"],eLs={class:"scaleControl"},tLs={class:"ac",style:{gap:"10px"}},nLs=Je({__name:"storyboard",props:Fc({id:{},handleIds:{},assetsData:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const{project:t}=xs(ph()),{episodesId:n}=xs(g0()),r=e,o=Pf(e,"modelValue"),s=fe(!1),a=fe(!1),l=fe([]),d=q4e("storyboardGridScale",1),u=fe(null);function h(C){u.value=C}const g=fe({flowId:null,resultImages:[],referanceImages:[]}),m=["#5bccb3","#9c7cfc","#fbbf24","#5b9afc","#e86b6b","#7cb8fc","#e8a855","#34d399"];function v(){l.value=[]}async function f(){Wh(!0);const C=(o.value??[]).filter(_=>_.src).map(_=>_.id);if(!C.length){window.$message.warning($t("workbench.production.node.storyboard.noPreviewImages")),Wh(!1);return}try{const _=await mn.post("/production/storyboard/downPreviewImage",{storyboardIds:C},{responseType:"blob"}),S=URL.createObjectURL(_),L=document.createElement("a");L.href=S,L.download=`storyboardImagePreview-${Date.now()}.png`,L.click(),URL.revokeObjectURL(S)}catch{window.$message.error($t("workbench.production.node.storyboard.imageLoadFailed"))}finally{Wh(!1)}}async function k(){var _;Wh(!0);const C=(o.value??[]).filter(S=>S.src).map(S=>S.id);if(!C.length){window.$message.warning($t("workbench.production.node.storyboard.noPreviewImages")),Wh(!1);return}try{const{data:S}=await mn.post("/production/storyboard/previewImage",{storyboardIds:C,projectId:(_=t.value)==null?void 0:_.id});l.value=[S],a.value=!0}catch{window.$message.error($t("workbench.production.node.storyboard.imageLoadFailed"))}finally{Wh(!1)}}const A=fe({id:null,insertAfterIndex:null}),p=X(()=>{if(d.value<=1)return d.value});function b(C,_,S=null){var L;if(A.value={id:S==null?C==null?void 0:C.id:null,insertAfterIndex:S},g.value={flowId:(C==null?void 0:C.flowId)??null,resultImages:[],referanceImages:[]},A.value.id){let E=[];if(C.associateAssetsIds&&C.associateAssetsIds.length>0){const T=[];for(const D of r.assetsData)C.associateAssetsIds.includes(D.id)&&D.src&&T.push(D.src),(L=D.derive)==null||L.forEach(P=>{C!=null&&C.associateAssetsIds.includes(P.id)&&P.src&&T.push(P.src)});E=E.concat(T)}g.value.referanceImages=E,g.value.resultImages=[{src:_.length?_[0]:"",prompt:C.prompt??""}]}else g.value.referanceImages=_.filter(Boolean);s.value=!0}async function w({imageUrl:C,flowId:_}){var T;if(!C)return;const{id:S,insertAfterIndex:L}=A.value;if(S===null&&L!==null){const D={duration:0,prompt:"",src:C,videoDesc:"",shouldGenerateImage:1,state:"已完成"},{data:P}=await mn.post("/production/storyboard/addStoryboard",{...D,projectId:(T=t.value)==null?void 0:T.id,scriptId:n.value,flowId:_});o.value.splice(L+1,0,{...D,id:P.id,flowId:_}),g0().setFlowData();return}const E=o.value.find(D=>D.id===S);E&&(E.src=C,E.state="已完成",E.flowId=_),await mn.post("/production/storyboard/updateStoryboardUrl",{id:S,url:C,flowId:_})}async function O(C){const _=co.confirm({header:$t("workbench.assets.confirmDeleteHeader"),body:$t("workbench.production.node.storyboard.confirmDeleteBody"),confirmBtn:$t("workbench.assets.deleteBtn"),cancelBtn:$t("workbench.assets.cancelBtn"),theme:"warning",onConfirm:async()=>{var S;if(!C){const L=o.value.findIndex(E=>E.id===C);L!==-1&&o.value.splice(L,1),_.destroy();return}try{await mn.post("/production/storyboard/removeFrame",{id:C,projectId:(S=t.value)==null?void 0:S.id});const L=o.value.findIndex(E=>E.id===C);L!==-1&&o.value.splice(L,1)}catch(L){window.$message.error((L==null?void 0:L.message)||$t("workbench.production.node.storyboard.removeFailed"))}finally{_.destroy()}}})}function y(C){const _=hs({prompt:C.prompt??"",videoDesc:(C==null?void 0:C.videoDesc)??""}),S=()=>xn("div",{class:"editInfoForm"},[xn("div",{class:"editInfoField"},[xn("label",{class:"editInfoLabel"},$t("workbench.production.node.storyboard.prompt")),xn(c2,{value:_.prompt,placeholder:$t("workbench.production.node.storyboard.promptPlaceholder"),autosize:{minRows:3,maxRows:6},"onUpdate:value":E=>_.prompt=E})]),xn("div",{class:"editInfoField"},[xn("label",{class:"editInfoLabel"},$t("workbench.production.node.storyboard.videoDesc")),xn(c2,{value:_.videoDesc,placeholder:$t("workbench.production.node.storyboard.videoDescPlaceholder"),autosize:{minRows:3,maxRows:6},"onUpdate:value":E=>_.videoDesc=E})])]),L=co.confirm({header:$t("workbench.production.node.storyboard.editInfo"),body:S,width:480,confirmBtn:{content:$t("common.submit"),theme:"primary",loading:!1},onConfirm:async()=>{L.update({confirmBtn:{content:$t("common.submitting"),loading:!0}});try{await mn.post("/production/storyboard/editStoryboardInfo",{id:C.id,prompt:_.prompt,videoDesc:_.videoDesc}),C.prompt=_.prompt,C.videoDesc=_.videoDesc,window.$message.success($t("common.editSuccess"))}catch(E){window.$message.error((E==null?void 0:E.message)||$t("common.editFailed"))}finally{L.update({confirmBtn:{content:$t("common.submit"),loading:!1}}),L.destroy()}}})}return(C,_)=>{const S=Xy,L=_n("i-plus"),E=Si,T=Sg,D=jre,P=Zh,Q=Wc,M=el,B=_n("i-delete"),R=_n("i-edit"),I=Lz,F=hL,j=km;return xe(),Ut(j,{class:"storyboard"},{default:Oe(()=>[ge("div",W8s,[ge("div",V8s,Pe(C.$t("workbench.production.node.storyboard.title")),1),c(Ae(mm),{id:r.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"]),c(Ae(mm),{id:r.handleIds.source,type:"source",position:Ae(Vi).Right,style:{right:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",z8s,[o.value.length?nn("",!0):(xe(),Ut(S,{key:0,style:{"margin-top":"16px"}})),ge("div",H8s,[(xe(!0),Ge(sn,null,Bi(o.value,(W,H)=>(xe(),Ge("div",{key:W.id,class:"frameItem",onMouseenter:$=>h(H),onMouseleave:_[0]||(_[0]=$=>h(null))},[ge("div",{class:Eo(["addBetween addBetween--left",{expanded:Ae(u)===H}]),onClick:Mr($=>{var G;return b(W,[H>0&&((G=o.value[H-1])==null?void 0:G.src)||"",W.src||""],H-1)},["stop"])},[c(E,{theme:"primary",variant:"outline",shape:"circle"},{icon:Oe(()=>[c(L)]),_:1})],10,X8s),ge("div",G8s,[ge("div",{class:"frameImage",style:no({width:`${200*Ae(d)}px`,height:`${200*Ae(d)}px`})},[c(T,{class:"frameTypeTag",style:no({backgroundColor:m[H%m.length],transform:`scale(${Ae(p)})`})},{default:Oe(()=>[Bt(" S"+Pe(String(H+1).padStart(2,"0")),1)]),_:2},1032,["style"]),W.src&&W.state=="已完成"?(xe(),Ut(P,{key:0,src:W.src,fit:"contain",class:"frameImg",onClick:$=>b(W,[W.src])},{overlayContent:Oe(()=>[ge("div",Y8s,[c(D,{style:no({transform:`scale(${Ae(p)})`}),src:W.src,position:"br"},null,8,["style","src"])])]),_:2},1032,["src","onClick"])):(xe(),Ge("div",{key:1,class:"generatingPlaceholder",onClick:$=>b(W,[])},[W.state==="生成中"?(xe(),Ut(Q,{key:0,size:"small"})):W.state=="生成失败"?(xe(),Ut(M,{key:1,content:W==null?void 0:W.reason},{default:Oe(()=>[..._[4]||(_[4]=[ge("span",{style:{color:"#ff4d4f"}},"生成失败",-1)])]),_:1},8,["content"])):(xe(),Ut(S,{key:2,size:"small",title:C.$t("workbench.production.node.storyboard.notGenerated")},null,8,["title"]))],8,Z8s)),c(M,{theme:"primary",content:C.$t("workbench.production.node.storyboard.deleteNode")},{default:Oe(()=>[ge("div",{class:"remove ac",style:no({transform:`scale(${Ae(p)})`}),onClick:Mr($=>O(W.id),["stop"])},[c(B,{theme:"outline",size:"18",fill:"#fff"})],12,q8s)]),_:2},1032,["content"]),c(M,{theme:"primary",content:C.$t("workbench.production.node.storyboard.editNode")},{default:Oe(()=>[ge("div",{class:"editNode ac",style:no({transform:`scale(${Ae(p)})`}),onClick:Mr($=>y(W),["stop"])},[c(R,{theme:"outline",size:"18",fill:"#fff"})],12,K8s)]),_:2},1032,["content"])],4)]),ge("div",{class:Eo(["addBetween addBetween--right",{expanded:Ae(u)===H}]),onClick:Mr($=>{var G,q;return b(W,[W.src||"",H<(((G=o.value)==null?void 0:G.length)??0)-1&&((q=o.value[H+1])==null?void 0:q.src)||""],H)},["stop"])},[c(E,{theme:"primary",variant:"outline",shape:"circle"},{icon:Oe(()=>[c(L)]),_:1})],10,J8s)],40,$8s))),128))]),ge("div",eLs,[ge("span",null,Pe(C.$t("workbench.production.node.storyboard.scaleRatio")),1),c(I,{modelValue:Ae(d),"onUpdate:modelValue":_[1]||(_[1]=W=>Fn(d)?d.value=W:null),min:.1,max:3,step:.1,"decimal-places":1,size:"small",style:{width:"120px"}},null,8,["modelValue"])]),ge("div",tLs,[c(E,{block:"",onClick:k,disabled:!o.value.length},{default:Oe(()=>[Bt(Pe(C.$t("workbench.production.node.storyboard.gridPreview")),1)]),_:1},8,["disabled"])])]),Ae(s)?(xe(),Ut(tqn,{key:0,modelValue:Ae(s),"onUpdate:modelValue":_[2]||(_[2]=W=>Fn(s)?s.value=W:null),flowData:Ae(g),type:"storyboard",onSave:w},null,8,["modelValue","flowData"])):nn("",!0),c(F,{visible:Ae(a),"onUpdate:visible":_[3]||(_[3]=W=>Fn(a)?a.value=W:null),images:Ae(l),onClose:v,onDownload:f,imageScale:{max:10,min:.1}},null,8,["visible","images"])]),_:1})}}}),iLs=oo(nLs,[["__scopeId","data-v-122b9e8f"]]);var rLs=Object.defineProperty,G2e=Object.getOwnPropertySymbols,nqn=Object.prototype.hasOwnProperty,iqn=Object.prototype.propertyIsEnumerable,Tkn=(e,t,n)=>t in e?rLs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,UN=(e,t)=>{for(var n in t||(t={}))nqn.call(t,n)&&Tkn(e,n,t[n]);if(G2e)for(var n of G2e(t))iqn.call(t,n)&&Tkn(e,n,t[n]);return e},rqn=(e,t)=>{var n={};for(var r in e)nqn.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&G2e)for(var r of G2e(e))t.indexOf(r)<0&&iqn.call(e,r)&&(n[r]=e[r]);return n};const oqn="[vue-draggable-plus]: ";function oLs(e){console.warn(oqn+e)}function sLs(e){console.error(oqn+e)}function Qkn(e,t,n){return n>=0&&nn?n.toUpperCase():"")}function lLs(e){return Object.keys(e).reduce((t,n)=>(typeof e[n]<"u"&&(t[aLs(n)]=e[n]),t),{})}function Dkn(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Bkn(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function cLs(e){return typeof e>"u"}function dLs(e){return typeof e=="string"}function Rkn(e,t,n){const r=e.children[n];e.insertBefore(t,r)}function CRe(e){e.parentNode&&e.parentNode.removeChild(e)}function uLs(e,t=document){var n;let r=null;return typeof(t==null?void 0:t.querySelector)=="function"?r=(n=t==null?void 0:t.querySelector)==null?void 0:n.call(t,e):r=document.querySelector(e),r||oLs(`Element not found: ${e}`),r}function hLs(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function fLs(e,t){const n=UN({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=hLs(e[r],t[r]):n[r]=t[r]}),n}function gLs(e){return e instanceof HTMLElement}function Ikn(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function mLs(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}const kLs=Object.assign;/**! * Sortable 1.15.2 * @author RubaXa * @author owenm * @license MIT - */function Mkn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Uy(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function pLs(e,t){if(e==null)return{};var n=ALs(e,t),r,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var bLs="1.15.2";function g8(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var IL=g8(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Xre=g8(/Edge/i),Pkn=g8(/firefox/i),dq=g8(/safari/i)&&!g8(/chrome/i)&&!g8(/android/i),sqn=g8(/iP(ad|od|hone)/i),aqn=g8(/chrome/i)&&g8(/android/i),lqn={capture:!1,passive:!1};function yl(e,t,n){e.addEventListener(t,n,!IL&&lqn)}function Ya(e,t,n){e.removeEventListener(t,n,!IL&&lqn)}function Y2e(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function wLs(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Ib(e,t,n,r){if(e){n=n||document;do{if(t!=null&&(t[0]===">"?e.parentNode===n&&Y2e(e,t):Y2e(e,t))||r&&e===n)return e;if(e===n)break}while(e=wLs(e))}return null}var Fkn=/\s+/g;function J2(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Fkn," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Fkn," ")}}function Mo(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),r[t]=n+(typeof n=="string"?"":"px")}}function vj(e,t){var n="";if(typeof e=="string")n=e;else do{var r=Mo(e,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function cqn(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,s=r.length;if(n)for(;o=s,!a)return r;if(r===vy())break;r=T9(r,!1)}return!1}function dz(e,t,n,r){for(var o=0,s=0,a=e.children;s2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,o=pLs(n,ELs);Gre.pluginEvent.bind(Po)(e,t,Uy({dragEl:Ii,parentEl:Lu,ghostEl:ms,rootEl:Ed,nextEl:oT,lastDownEl:ife,cloneEl:tu,cloneHidden:M5,dragStarted:uY,putSortable:Vg,activeSortable:Po.active,originalEvent:r,oldIndex:jN,oldDraggableIndex:hq,newIndex:nv,newDraggableIndex:k5,hideGhostForTarget:vqn,unhideGhostForTarget:Aqn,cloneNowHidden:function(){M5=!0},cloneNowShown:function(){M5=!1},dispatchSortableEvent:function(s){X1({sortable:t,name:s,originalEvent:r})}},o))};function X1(e){xLs(Uy({putSortable:Vg,cloneEl:tu,targetEl:Ii,rootEl:Ed,oldIndex:jN,oldDraggableIndex:hq,newIndex:nv,newDraggableIndex:k5},e))}var Ii,Lu,ms,Ed,oT,ife,tu,M5,jN,nv,hq,k5,Ude,Vg,WF=!1,Z2e=!1,q2e=[],I7,qp,LRe,xRe,jkn,Wkn,uY,aF,fq,gq=!1,jde=!1,rfe,Pm,ERe=[],zGe=!1,K2e=[],KOe=typeof document<"u",Wde=sqn,Vkn=Xre||IL?"cssFloat":"float",TLs=KOe&&!aqn&&!sqn&&"draggable"in document.createElement("div"),gqn=function(){if(KOe){if(IL)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),mqn=function(e,t){var n=Mo(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=dz(e,0,t),s=dz(e,1,t),a=o&&Mo(o),l=s&&Mo(s),d=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+Uh(o).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Uh(s).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a.float&&a.float!=="none"){var h=a.float==="left"?"left":"right";return s&&(l.clear==="both"||l.clear===h)?"vertical":"horizontal"}return o&&(a.display==="block"||a.display==="flex"||a.display==="table"||a.display==="grid"||d>=r&&n[Vkn]==="none"||s&&n[Vkn]==="none"&&d+u>r)?"vertical":"horizontal"},QLs=function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,s=n?e.width:e.height,a=n?t.left:t.top,l=n?t.right:t.bottom,d=n?t.width:t.height;return r===a||o===l||r+s/2===a+d/2},DLs=function(e,t){var n;return q2e.some(function(r){var o=r[Fv].options.emptyInsertThreshold;if(!(!o||Jst(r))){var s=Uh(r),a=e>=s.left-o&&e<=s.right+o,l=t>=s.top-o&&t<=s.bottom+o;if(a&&l)return n=r}}),n},kqn=function(e){function t(o,s){return function(a,l,d,u){var h=a.options.group.name&&l.options.group.name&&a.options.group.name===l.options.group.name;if(o==null&&(s||h))return!0;if(o==null||o===!1)return!1;if(s&&o==="clone")return o;if(typeof o=="function")return t(o(a,l,d,u),s)(a,l,d,u);var g=(s?a:l).options.group.name;return o===!0||typeof o=="string"&&o===g||o.join&&o.indexOf(g)>-1}}var n={},r=e.group;(!r||nfe(r)!="object")&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},vqn=function(){!gqn&&ms&&Mo(ms,"display","none")},Aqn=function(){!gqn&&ms&&Mo(ms,"display","")};KOe&&!aqn&&document.addEventListener("click",function(e){if(Z2e)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Z2e=!1,!1},!0);var M7=function(e){if(Ii){e=e.touches?e.touches[0]:e;var t=DLs(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Fv]._onDragOver(n)}}},BLs=function(e){Ii&&Ii.parentNode[Fv]._isOutsideThisEl(e.target)};function Po(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=nL({},t),e[Fv]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return mqn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,a){s.setData("Text",a.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Po.supportPointer!==!1&&"PointerEvent"in window&&!dq,emptyInsertThreshold:5};Gre.initializePlugins(this,e,n);for(var r in n)!(r in t)&&(t[r]=n[r]);kqn(t);for(var o in this)o.charAt(0)==="_"&&typeof this[o]=="function"&&(this[o]=this[o].bind(this));this.nativeDraggable=t.forceFallback?!1:TLs,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?yl(e,"pointerdown",this._onTapStart):(yl(e,"mousedown",this._onTapStart),yl(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(yl(e,"dragover",this),yl(e,"dragenter",this)),q2e.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),nL(this,_Ls())}Po.prototype={constructor:Po,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(aF=null)},_getDirection:function(e,t){return typeof this.options.direction=="function"?this.options.direction.call(this,e,t,Ii):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,s=e.type,a=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(a||e).target,d=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,u=r.filter;if(jLs(n),!Ii&&!(/mousedown|pointerdown/.test(s)&&e.button!==0||r.disabled)&&!d.isContentEditable&&!(!this.nativeDraggable&&dq&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Ib(l,r.draggable,n,!1),!(l&&l.animated)&&ife!==l)){if(jN=m4(l),hq=m4(l,r.draggable),typeof u=="function"){if(u.call(this,e,l,this)){X1({sortable:t,rootEl:d,name:"filter",targetEl:l,toEl:n,fromEl:n}),kk("filter",t,{evt:e}),o&&e.cancelable&&e.preventDefault();return}}else if(u&&(u=u.split(",").some(function(h){if(h=Ib(d,h.trim(),n,!1),h)return X1({sortable:t,rootEl:h,name:"filter",targetEl:l,fromEl:n,toEl:n}),kk("filter",t,{evt:e}),!0}),u)){o&&e.cancelable&&e.preventDefault();return}r.handle&&!Ib(d,r.handle,n,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(e,t,n){var r=this,o=r.el,s=r.options,a=o.ownerDocument,l;if(n&&!Ii&&n.parentNode===o){var d=Uh(n);if(Ed=o,Ii=n,Lu=Ii.parentNode,oT=Ii.nextSibling,ife=n,Ude=s.group,Po.dragged=Ii,I7={target:Ii,clientX:(t||e).clientX,clientY:(t||e).clientY},jkn=I7.clientX-d.left,Wkn=I7.clientY-d.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,Ii.style["will-change"]="all",l=function(){if(kk("delayEnded",r,{evt:e}),Po.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!Pkn&&r.nativeDraggable&&(Ii.draggable=!0),r._triggerDragStart(e,t),X1({sortable:r,name:"choose",originalEvent:e}),J2(Ii,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){cqn(Ii,u.trim(),TRe)}),yl(a,"dragover",M7),yl(a,"mousemove",M7),yl(a,"touchmove",M7),yl(a,"mouseup",r._onDrop),yl(a,"touchend",r._onDrop),yl(a,"touchcancel",r._onDrop),Pkn&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Ii.draggable=!0),kk("delayStart",this,{evt:e}),s.delay&&(!s.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(Xre||IL))){if(Po.eventCanceled){this._onDrop();return}yl(a,"mouseup",r._disableDelayedDrag),yl(a,"touchend",r._disableDelayedDrag),yl(a,"touchcancel",r._disableDelayedDrag),yl(a,"mousemove",r._delayedDragTouchMoveHandler),yl(a,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&yl(a,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(l,s.delay)}else l()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Ii&&TRe(Ii),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Ya(e,"mouseup",this._disableDelayedDrag),Ya(e,"touchend",this._disableDelayedDrag),Ya(e,"touchcancel",this._disableDelayedDrag),Ya(e,"mousemove",this._delayedDragTouchMoveHandler),Ya(e,"touchmove",this._delayedDragTouchMoveHandler),Ya(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||e.pointerType=="touch"&&e,!this.nativeDraggable||t?this.options.supportPointer?yl(document,"pointermove",this._onTouchMove):t?yl(document,"touchmove",this._onTouchMove):yl(document,"mousemove",this._onTouchMove):(yl(Ii,"dragend",this),yl(Ed,"dragstart",this._onDragStart));try{document.selection?ofe(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(WF=!1,Ed&&Ii){kk("dragStarted",this,{evt:t}),this.nativeDraggable&&yl(document,"dragover",BLs);var n=this.options;!e&&J2(Ii,n.dragClass,!1),J2(Ii,n.ghostClass,!0),Po.active=this,e&&this._appendGhost(),X1({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(qp){this._lastX=qp.clientX,this._lastY=qp.clientY,vqn();for(var e=document.elementFromPoint(qp.clientX,qp.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(qp.clientX,qp.clientY),e!==t);)t=e;if(Ii.parentNode[Fv]._isOutsideThisEl(e),t)do{if(t[Fv]){var n=void 0;if(n=t[Fv]._onDragOver({clientX:qp.clientX,clientY:qp.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Aqn()}},_onTouchMove:function(e){if(I7){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,s=ms&&vj(ms,!0),a=ms&&s&&s.a,l=ms&&s&&s.d,d=Wde&&Pm&&Ukn(Pm),u=(o.clientX-I7.clientX+r.x)/(a||1)+(d?d[0]-ERe[0]:0)/(a||1),h=(o.clientY-I7.clientY+r.y)/(l||1)+(d?d[1]-ERe[1]:0)/(l||1);if(!Po.active&&!WF){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(X1({rootEl:Lu,name:"add",toEl:Lu,fromEl:Ed,originalEvent:e}),X1({sortable:this,name:"remove",toEl:Lu,originalEvent:e}),X1({rootEl:Lu,name:"sort",toEl:Lu,fromEl:Ed,originalEvent:e}),X1({sortable:this,name:"sort",toEl:Lu,originalEvent:e})),Vg&&Vg.save()):nv!==jN&&nv>=0&&(X1({sortable:this,name:"update",toEl:Lu,originalEvent:e}),X1({sortable:this,name:"sort",toEl:Lu,originalEvent:e})),Po.active&&((nv==null||nv===-1)&&(nv=jN,k5=hq),X1({sortable:this,name:"end",toEl:Lu,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){kk("nulling",this),Ed=Ii=Lu=ms=oT=tu=ife=M5=I7=qp=uY=nv=k5=jN=hq=aF=fq=Vg=Ude=Po.dragged=Po.ghost=Po.clone=Po.active=null,K2e.forEach(function(e){e.checked=!0}),K2e.length=LRe=xRe=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":Ii&&(this._onDragOver(e),RLs(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,o=n.length,s=this.options;ro.right+s||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>o.bottom+s||e.clientX>r.right&&e.clientY>r.top}function FLs(e,t,n,r,o,s,a,l){var d=r?e.clientY:e.clientX,u=r?n.height:n.width,h=r?n.top:n.left,g=r?n.bottom:n.right,m=!1;if(!a){if(l&&rfeh+u*s/2:dg-rfe)return-fq}else if(d>h+u*(1-o)/2&&dg-u*s/2)?d>h+u/2?1:-1:0}function NLs(e){return m4(Ii){if(R&&(o==null?void 0:o.length)!==Q.childNodes.length)return P.insertBefore(R,I.nextSibling),!0;const j=Q.childNodes[F];R=Q==null?void 0:Q.replaceChild(I,j)})}}catch(R){M=R}finally{o=null}ai(()=>{if(Hkn(),M)throw M})}const w={onUpdate:p,onStart:f,onAdd:k,onRemove:A,onEnd:b};function O(E){const T=Ae(s);return E||(E=dLs(T)?uLs(T,r==null?void 0:r.$el):T),E&&!gLs(E)&&(E=E.$el),E||sLs("Root element not found"),E}function y(){var E;const T=(E=Ae(l))!=null?E:{},{immediate:D,clone:P}=T,Q=rqn(T,["immediate","clone"]);return Ikn(Q,(M,B)=>{mLs(M)&&(Q[M]=(R,...I)=>{const F=$Ls();return kLs(R,F),B(R,...I)})}),fLs(a===null?{}:w,Q)}const C=E=>{E=O(E),d&&_.destroy(),d=new Po(E,y())};pt(()=>l,()=>{d&&Ikn(y(),(E,T)=>{d==null||d.option(E,T)})},{deep:!0});const _={option:(E,T)=>d==null?void 0:d.option(E,T),destroy:()=>{d==null||d.destroy(),d=null},save:()=>d==null?void 0:d.save(),toArray:()=>d==null?void 0:d.toArray(),closest:(...E)=>d==null?void 0:d.closest(...E)},S=()=>_==null?void 0:_.option("disabled",!0),L=()=>_==null?void 0:_.option("disabled",!1);return HLs(()=>{u&&C()}),zLs(_.destroy),UN({start:C,pause:S,resume:L},_)}const GGe=["update","start","add","remove","choose","unchoose","end","sort","filter","clone","move","change"],GLs=["clone","animation","ghostClass","group","sort","disabled","store","handle","draggable","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","chosenClass","dragClass","ignore","filter","preventOnFilter","easing","setData","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","emptyInsertThreshold","scroll","forceAutoScrollFallback","scrollSensitivity","scrollSpeed","bubbleScroll","modelValue","tag","target","customUpdate",...GGe.map(e=>`on${e.replace(/^\S/,t=>t.toUpperCase())}`)],YLs=Je({name:"VueDraggable",model:{prop:"modelValue",event:"update:modelValue"},props:GLs,emits:["update:modelValue",...GGe],setup(e,{slots:t,emit:n,expose:r,attrs:o}){const s=GGe.reduce((h,g)=>{const m=`on${g.replace(/^\S/,v=>v.toUpperCase())}`;return h[m]=(...v)=>n(g,...v),h},{}),a=X(()=>{const h=Li(e),{modelValue:g}=h,m=rqn(h,["modelValue"]),v=Object.entries(m).reduce((f,[k,A])=>{const p=Ae(A);return p!==void 0&&(f[k]=p),f},{});return UN(UN({},s),lLs(UN(UN({},o),v)))}),l=X({get:()=>e.modelValue,set:h=>n("update:modelValue",h)}),d=fe(),u=hs(XLs(e.target||d,l,a));return r(u),()=>{var h;return xn(e.tag||"div",{ref:d},(h=t==null?void 0:t.default)==null?void 0:h.call(t,u))}}}),ZLs={class:"previewContainer"},qLs={class:"mainContent"},KLs={class:"previewArea"},JLs={class:"videoWrapper"},exs=["src","alt"],txs={key:1,class:"placeholderImage"},nxs={class:"playerControls"},ixs={class:"controlButtons"},rxs={class:"progressArea"},oxs={class:"timeLabel"},sxs={class:"progressTrack"},axs=["onClick"],lxs={class:"timeLabel"},cxs={class:"infoPanel"},dxs={class:"infoSection"},uxs={class:"sectionTitle"},hxs={class:"sectionContent"},fxs={class:"infoSection"},gxs={class:"sectionTitle"},mxs={class:"sectionContent"},kxs={class:"infoSection"},vxs={class:"sectionTitle"},Axs={class:"characterList"},pxs={key:0,class:"noCharacter"},bxs={class:"infoSection"},wxs={class:"sectionTitle"},Oxs={class:"shootingTips"},yxs={key:0,class:"tipItem"},Cxs={class:"tipLabel"},_xs={class:"tipValue"},Sxs={class:"shotListArea"},Lxs={class:"shotListHeader"},xxs={class:"headerLeft"},Exs=["onClick"],Txs={class:"shotImageWrapper"},Qxs=["src","alt"],Dxs={key:1,class:"shotPlaceholder"},Xkn=50,Bxs=Je({__name:"preview",setup(e){const t=bt("episodesId"),n=fe([]);An(()=>{r()});async function r(){const{data:G}=await mn.post("/production/getStoryboardData",{scriptId:t.value});n.value=G}const o=X(()=>n.value[a.value]||null),s=X(()=>{var G;return((G=o.value)==null?void 0:G.characters)||[]}),a=fe(0),l=fe(!1),d=fe(),u=fe(),h=fe(!1),g=fe(!1),m=fe(0);let v=null;const f=n.value.map(G=>G.id),k=X(()=>{var G;return((G=o.value)==null?void 0:G.duration)??3}),A=X(()=>a.value===0),p=X(()=>a.value===n.value.length-1),b=X(()=>n.value.reduce((G,q)=>G+(q.duration??3),0)),w=X(()=>{const G=C(a.value)+m.value;return Math.min(G/b.value*100,100)}),O=X(()=>{var G,q;return[{label:$t("workbench.production.preview.sceneDescription"),value:(G=o.value)==null?void 0:G.description},{label:$t("workbench.production.preview.promptLabel"),value:(q=o.value)==null?void 0:q.prompt}]}),y=G=>{var q;return((q=n.value[G])==null?void 0:q.duration)??3},C=G=>{let q=0;for(let re=0;rey(G)/b.value*100,S=G=>C(G)/b.value*100,L=G=>{const q=Math.floor(G);return`${String(Math.floor(q/60)).padStart(2,"0")}:${String(q%60).padStart(2,"0")}`},E=()=>{v&&(clearInterval(v),v=null),g.value=!1},T=()=>{v||(g.value=!0,v=setInterval(()=>{m.value+=Xkn/1e3,m.value>=k.value&&(p.value?(m.value=k.value,E()):(m.value=0,a.value++,F()))},Xkn))},D=()=>{if(g.value)return E();p.value&&m.value>=k.value&&(a.value=0,m.value=0),T()};Qa(E);const P=(G,q=!0)=>{q&&E(),a.value=G,m.value=0,F()},Q=()=>{A.value||P(a.value-1)},M=()=>{p.value||P(a.value+1)},B=G=>P(G),R=G=>P(G),I=G=>{const q=u.value;if(!q)return;E();const re=oe=>{const se=q.getBoundingClientRect(),ue=Math.max(0,Math.min(1,(oe.clientX-se.left)/se.width))*b.value;let ee=0;for(let de=0;deue){a.value=de,m.value=ue-ee,F();return}ee+=z}a.value=n.value.length-1,m.value=y(n.value.length-1)};re(G);const J=()=>{document.removeEventListener("mousemove",re),document.removeEventListener("mouseup",J)};document.addEventListener("mousemove",re),document.addEventListener("mouseup",J)},F=()=>{ai(()=>{var q,re;const G=(q=d.value)==null?void 0:q.querySelectorAll(".shotItem");(re=G==null?void 0:G[a.value])==null||re.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})},j=G=>{const q=Array.isArray(G)?G.length>0:G;n.value.forEach(re=>re.selected=q)},W=()=>{const G=fo.confirm({header:$t("workbench.production.preview.restoreSort"),body:$t("workbench.production.preview.restoreSortConfirm"),onConfirm:()=>{n.value.sort((q,re)=>f.indexOf(q.id)-f.indexOf(re.id)),G.destroy()},onClose:()=>G.destroy()})};pt(()=>n.value.map(G=>G.selected),G=>{l.value=G.length>0&&G.every(Boolean)},{deep:!0});const H=()=>ai(()=>h.value=!1);function $(){const G=n.value.filter(q=>q.selected).map(q=>({id:q.id}));if(G.length<=0){fo.alert({header:$t("workbench.production.preview.tip"),body:$t("workbench.production.preview.selectAtLeastOne")});return}mn.post("/production/exportImage",{shotId:G},{responseType:"blob"}).then(q=>{const re=URL.createObjectURL(q.data),J=document.createElement("a");J.href=re,J.download=$t("workbench.production.preview.exportFilename")+".zip",J.click(),URL.revokeObjectURL(re)}).catch(q=>{console.error("导出图片失败:",q)})}return(G,q)=>{var Y,ie,te;const re=_n("i-pic"),J=_n("i-go-start"),oe=Si,se=_n("i-go-end"),le=Zh,ue=Sg,ee=py,de=_n("i-undo"),z=_n("i-download");return xe(),Ge("div",ZLs,[ge("div",qLs,[ge("div",KLs,[ge("div",JLs,[(Y=o.value)!=null&&Y.filePath?(xe(),Ge("img",{key:0,src:o.value.filePath,alt:o.value.description,class:"previewImage"},null,8,exs)):(xe(),Ge("div",txs,[c(re,{theme:"outline",size:"48",fill:"#999"}),ge("span",null,Pe(G.$t("workbench.production.preview.noImage")),1)]))]),ge("div",nxs,[ge("div",ixs,[c(oe,{theme:"default",variant:"text",size:"small",shape:"circle",onClick:Q,disabled:A.value},{icon:Oe(()=>[c(J,{theme:"outline",size:"18"})]),_:1},8,["disabled"]),c(oe,{theme:"primary",variant:"text",size:"medium",shape:"circle",onClick:D},{icon:Oe(()=>[(xe(),Ut(Bd(g.value?"i-pause":"i-play"),{theme:"outline",size:"22"}))]),_:1}),c(oe,{theme:"default",variant:"text",size:"small",shape:"circle",onClick:M,disabled:p.value},{icon:Oe(()=>[c(se,{theme:"outline",size:"18"})]),_:1},8,["disabled"])]),ge("div",rxs,[ge("span",oxs,Pe(L(m.value)),1),ge("div",{class:"progressBarWrapper",ref_key:"progressBarRef",ref:u,onMousedown:I},[ge("div",sxs,[(xe(!0),Ge(sn,null,Bi(n.value,(Z,he)=>(xe(),Ge("div",{key:"seg-"+Z.id,class:Eo(["progressSegment",{active:he===a.value,completed:heB(he),["stop"])},null,14,axs))),128)),(xe(!0),Ge(sn,null,Bi(n.value.slice(0,-1),(Z,he)=>(xe(),Ge("div",{key:"div-"+he,class:"segmentDivider",style:no({left:S(he+1)+"%"})},null,4))),128)),ge("div",{class:"progressFill",style:no({width:w.value+"%"})},null,4),ge("div",{class:"progressHandle",style:no({left:w.value+"%"})},null,4)])],544),ge("span",lxs,Pe(L(b.value)),1)])])]),ge("div",cxs,[ge("div",dxs,[ge("div",uxs,[q[4]||(q[4]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.storyboardDesc")),1)]),ge("div",hxs," 【"+Pe(G.$t("workbench.production.preview.serialNumber"))+" "+Pe(a.value+1)+"】"+Pe(((ie=o.value)==null?void 0:ie.description)||G.$t("workbench.production.preview.noDescription")),1)]),ge("div",fxs,[ge("div",gxs,[q[5]||(q[5]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.duration")),1)]),ge("div",mxs,Pe(((te=o.value)==null?void 0:te.duration)!=null?o.value.duration+" "+G.$t("workbench.production.preview.seconds"):"3 "+G.$t("workbench.production.preview.seconds")),1)]),ge("div",kxs,[ge("div",vxs,[q[6]||(q[6]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.relatedAssets")),1)]),ge("div",Axs,[(xe(!0),Ge(sn,null,Bi(s.value,(Z,he)=>(xe(),Ge("div",{key:he,class:"characterItem"},[c(le,{src:Z.avatar,fit:"cover",class:"characterAvatar",style:{width:"80px",height:"80px",borderRadius:"8px"}},null,8,["src"]),c(ue,null,{default:Oe(()=>[Bt(Pe(Z.name)+"("+Pe(Z.type=="role"?G.$t("workbench.production.preview.role"):Z.type=="tool"?G.$t("workbench.production.preview.prop"):G.$t("workbench.production.preview.scene"))+") ",1)]),_:2},1024)]))),128)),s.value.length?nn("",!0):(xe(),Ge("div",pxs,[c(ue,{theme:"default",variant:"light"},{default:Oe(()=>[Bt(Pe(G.$t("workbench.production.preview.noCharacters")),1)]),_:1})]))])]),ge("div",bxs,[ge("div",wxs,[q[7]||(q[7]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.imagePrompt")),1)]),ge("div",Oxs,[(xe(!0),Ge(sn,null,Bi(O.value,Z=>(xe(),Ge(sn,{key:Z.label},[Z.value?(xe(),Ge("div",yxs,[ge("span",Cxs,Pe(Z.label)+":",1),ge("span",_xs,Pe(Z.value),1)])):nn("",!0)],64))),128))])])])]),ge("div",Sxs,[ge("div",Lxs,[ge("div",xxs,[c(ee,{modelValue:l.value,"onUpdate:modelValue":q[0]||(q[0]=Z=>l.value=Z),onChange:j},{default:Oe(()=>[Bt(Pe(G.$t("workbench.production.preview.selectAll")),1)]),_:1},8,["modelValue"]),c(oe,{theme:"default",variant:"text",size:"small",onClick:W},{icon:Oe(()=>[c(de,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(G.$t("workbench.production.preview.restoreSort")),1)]),_:1})]),c(oe,{theme:"default",variant:"text",size:"small",class:"exportBtn",onClick:$},{icon:Oe(()=>[c(z,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(G.$t("workbench.production.preview.exportImage")),1)]),_:1})]),ge("div",{class:"shotListWrapper",ref_key:"shotListWrapperRef",ref:d},[c(Ae(YLs),{modelValue:n.value,"onUpdate:modelValue":q[2]||(q[2]=Z=>n.value=Z),animation:150,ghostClass:"shotGhost",dragClass:"shotDrag",scroll:d.value,scrollSensitivity:80,scrollSpeed:10,forceFallback:!0,target:".shotList",onStart:q[3]||(q[3]=Z=>h.value=!0),onEnd:H},{default:Oe(()=>[c(l4n,{type:"transition",tag:"div",name:h.value?void 0:"shot-flip",class:"shotList"},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(n.value,(Z,he)=>(xe(),Ge("div",{key:Z.id,class:Eo(["shotItem",{active:a.value===he}]),onClick:pe=>R(he)},[c(ee,{modelValue:Z.selected,"onUpdate:modelValue":pe=>Z.selected=pe,class:"shotCheckbox",onClick:q[1]||(q[1]=Mr(()=>{},["stop"]))},null,8,["modelValue","onUpdate:modelValue"]),ge("div",Txs,[Z.filePath?(xe(),Ge("img",{key:0,src:Z.filePath,alt:Z.description,class:"shotImage"},null,8,Qxs)):(xe(),Ge("div",Dxs,[c(re,{theme:"outline",size:"24",fill:"#999"})])),c(ue,{class:"shotNumber",size:"small",variant:"dark"},{default:Oe(()=>[Bt("#"+Pe(Z.id),1)]),_:2},1024)])],10,Exs))),128))]),_:1},8,["name"])]),_:1},8,["modelValue","scroll"])],512)])])}}}),Rxs=oo(Bxs,[["__scopeId","data-v-65b71e51"]]),Ixs={class:"generateContainer"},Mxs={class:"data f"},Pxs={class:"videoToImage"},Fxs=["src"],Nxs={key:1,class:"emptyVideo c"},Uxs={class:"promptsMenu f ac jb"},jxs={class:"title"},Wxs={class:"promptInput"},Vxs={class:"modeOpt f w"},zxs=["src"],Hxs={key:1,class:"uploadPreview c"},$xs=["onClick"],Xxs=["onClick"],Gxs=["src"],Yxs=["onClick"],Zxs={class:"storyboardGrid"},qxs=["onClick"],Kxs=["src"],Jxs={class:"modeMenu f ac jb"},e5s={class:"left f ac"},t5s={class:"model"},n5s={class:"status"},i5s={class:"resolutionDurationPicker"},r5s={key:0,class:"pickerSection"},o5s={class:"pickerLabel"},s5s={class:"pickerOptions"},a5s=["onClick"],l5s={key:1,class:"pickerSection"},c5s={class:"pickerLabel"},d5s={class:"pickerOptions"},u5s=["onClick"],h5s={class:"genBtn"},f5s={class:"history"},g5s={class:"titleBox f ac"},m5s={class:"title"},k5s={class:"historyItemBox"},v5s=["onClick"],A5s=["src"],p5s={key:0,class:"loadingOverlay c fc"},b5s={class:"loadingText"},w5s=["onClick"],O5s=["onClick"],y5s=["onClick"],C5s={class:"videoTrack"},_5s={class:"trackMenu f ac jb"},S5s={class:"left f ac"},L5s={key:0,class:"selectedCount"},x5s={class:"right f ac"},E5s={class:"itemBox"},T5s=["onClick"],Q5s={key:1,class:"thumbGroup"},D5s=["src"],B5s={key:1,class:"thumb placeholder c"},R5s={key:2,class:"emptyTrack"},I5s=["onClick"],M5s=Je({__name:"generate",emits:["importVideo"],setup(e,{emit:t}){const n=bt("episodesId"),{project:r}=xs(ph()),o=fe(""),s=X({get:()=>{const Me=P.value[Q.value];return(Me==null?void 0:Me.prompt)??""},set:Me=>{const Se=P.value[Q.value];Se&&(Se.prompt=Me)}}),a=fe("480p"),l=fe(8),d=fe(!1);function u(Me){var Ie;const Se=C.value.durationResolutionMap;if(Array.isArray(Se)&&Se.length>0&&((Ie=Se[0].duration)!=null&&Ie.length)){const ze=Se[0].duration,Ze=Math.min(...ze),gt=Math.max(...ze);return Math.max(Ze,Math.min(Me,gt))}return Me}const h=X(()=>{var Se;if(d.value)return l.value;const Me=((Se=P.value[Q.value])==null?void 0:Se.duration)||l.value;return u(Me)}),g=fe(!1),m=fe({}),v=X(()=>{var Se;const Me=(Se=P.value[Q.value])==null?void 0:Se.id;return Me!=null?!!m.value[Me]:!1}),f=fe({}),k=X(()=>{var Se;const Me=(Se=P.value[Q.value])==null?void 0:Se.id;return Me!=null?!!f.value[Me]:!1});async function A(){var gt;const Me=P.value[Q.value],Se=Me==null?void 0:Me.id;if(Se==null||f.value[Se])return;const Ze=(L.value==="text"?Me.medias:F.value.filter(St=>St.src).map(St=>({id:St.id,src:St.src,prompt:St.prompt,sources:St.sources}))).filter(St=>St.prompt).map(St=>({id:St.id,sources:St.sources?St.sources:"storyboard"}));f.value[Se]=!0;try{const{data:St}=await mn.post("/production/workbench/generateVideoPrompt",{projectId:(gt=r.value)==null?void 0:gt.id,trackId:Se,info:Ze,model:S.value}),Pt=P.value.find(dn=>dn.id===Se);Pt&&(Pt.prompt=St)}finally{f.value[Se]=!1}}const p=fe(null),b=fe([]),w=X(()=>{const Me=P.value[Q.value];return Me!=null&&Me.id?b.value.filter(Se=>Se.videoTrackId===Me.id):[]});function O(Me){Me.state==="生成中"||Me.state==="生成失败"||(o.value=Me.src)}async function y(Me){var Ie,ze;if(Me.state==="生成中"||Me.state==="生成失败")return;const Se=P.value[Q.value];Me.id!=null&&(p.value=Me.id,(Se==null?void 0:Se.id)!=null&&(M.value[Se.id]=Me.id)),o.value=Me.src;try{await mn.post("/production/workbench/selectVideo",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0,videoId:Me.id,trackId:(ze=P.value[Q.value])==null?void 0:ze.id}),window.$message.success($t("workbench.generate.selectVideoSuccess")),Ce()}catch{window.$message.error($t("workbench.generate.selectVideoFailed"))}}const C=fe({}),_=X(()=>{const Me={singleImage:"单图",startEndRequired:"首尾帧",endFrameOptional:"尾帧可选",startFrameOptional:"首帧可选",text:"文本生视频",videoReference:"视频",imageReference:"图片",audioReference:"音频",textReference:"文本"};return C.value.mode?C.value.mode.map(Se=>Array.isArray(Se)?{value:JSON.stringify(Se),label:Se.map(Ie=>Me[Ie]||Ie).join(" + ")+"参考"}:{value:Se,label:Me[Se]||Se}):[]}),S=fe(),L=fe(),E=X(()=>{const Me=D(L.value||"");return Array.isArray(Me)}),T=X(()=>{const Me=D(L.value||"");if(!Array.isArray(Me))return[];const Se={audioReference:"audio",imageReference:"image",videoReference:"video"};return Me.filter(Ie=>Ie in Se).map(Ie=>Se[Ie])});function D(Me){if(!Me)return null;try{const Se=JSON.parse(Me);if(Array.isArray(Se))return Se}catch{return Me}return Me}const P=fe([]),Q=fe(0),M=fe({});async function B(){var Ie;const{data:Me}=await mn.post("/production/workbench/addTrack",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0}),Se=typeof Me=="object"&&Me!==null?Me.id:Me;P.value.push({id:Se,prompt:"",state:"未生成",medias:[],videoList:[],duration:0}),Q.value=P.value.length-1}function R(Me){const Se=fo.confirm({header:$t("workbench.generate.del"),body:$t("workbench.generate.delConfirm"),onConfirm:()=>{Se.destroy(),I(Me),window.$message.success($t("workbench.generate.delSuccess")),Ce()},onCancel:()=>{Se.destroy()}})}async function I(Me){const Se=P.value[Me];Se&&(await mn.post("/production/workbench/deleteTrack",{id:Se.id}),Q.value>=P.value.length&&(Q.value=P.value.length-1))}const F=fe([]),j=X(()=>F.value.filter(Me=>Me.src).map(Me=>({type:Me.fileType,src:Me.src}))),W=fe([]),H=fe(!1),$=fe(-1);function G(Me){const Se=D(Me);if(!Se)return[];const Ie={videoReference:{fileType:"video",type:"videoReference",sources:"storyboard",label:"参考视频"},imageReference:{fileType:"image",type:"imageReference",sources:"storyboard",label:"参考图片"},audioReference:{fileType:"audio",type:"audioReference",sources:"storyboard",label:"参考音频"}},ze={singleImage:[{fileType:"image",type:"imageReference",sources:"storyboard",label:"参考图片"}],startEndRequired:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧"}],endFrameOptional:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧(可选)"}],startFrameOptional:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧(可选)"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧"}],text:[]};return Array.isArray(Se)?Se.filter(Ze=>Ze!=="textReference").map(Ze=>({...Ie[Ze]})):(ze[Se]||[]).map(Ze=>({...Ze}))}const q={image:["role","scene","tool"],video:["clip"],audio:["clip"]};function re(Me){const Se=F.value[Me];if(!Se)return;$.value=Me;const Ie=fo.confirm({header:$t("workbench.generate.selectSource"),confirmBtn:$t("workbench.generate.confirm"),cancelBtn:$t("workbench.generate.cancel"),onConfirm:async()=>{Ie.destroy();const ze=await jV({types:q[Se.fileType],multiple:!1});ze.length>0&&(de.value=!0,F.value[Me]={...Se,sources:"assets",src:ze[0].src,id:ze[0].id,prompt:ze[0].prompt})},onCancel:()=>{Ie.destroy(),H.value=!0}})}async function J(){const Me=fo.confirm({header:$t("workbench.generate.selectSource"),confirmBtn:$t("workbench.generate.confirm"),cancelBtn:$t("workbench.generate.cancel"),onConfirm:async()=>{Me.destroy();const Se=await jV({types:["role","tool","scene","clip"],clipMediaTypes:T.value,multiple:!0});if(Se.length){de.value=!0;for(const Ie of Se){const ze=se(Ie.src);F.value.push({fileType:ze,type:oe[ze],sources:"assets",src:Ie.src,id:Ie.id,prompt:Ie.prompt,label:""})}}},onCancel:()=>{Me.destroy(),$.value=-1,H.value=!0}})}const oe={image:"imageReference",video:"videoReference",audio:"audioReference"};function se(Me){var Ze;const Se=((Ze=Me==null?void 0:Me.split(".").pop())==null?void 0:Ze.toLowerCase())??"",Ie=["mp4","webm","mov","avi","mkv"],ze=["mp3","wav","ogg","aac","flac","m4a"];return Ie.includes(Se)?"video":ze.includes(Se)?"audio":"image"}function le(Me){if(H.value=!1,de.value=!0,E.value){const Ie=se(Me.src);F.value.push({fileType:Ie,type:oe[Ie],sources:"storyboard",src:Me.src,id:Me.id,prompt:Me.prompt??void 0,label:""});return}const Se=F.value[$.value];Se&&(F.value[$.value]={...Se,sources:"storyboard",src:Me.src,id:Me.id,prompt:Me.prompt??void 0})}function ue(Me){const Se=F.value[Me];Se&&(de.value=!0,E.value?F.value.splice(Me,1):F.value[Me]={...Se,sources:"storyboard",src:void 0,id:void 0,prompt:void 0})}async function ee(){var Ie;const Me=(Ie=P.value[Q.value])==null?void 0:Ie.id;if(Me==null||m.value[Me])return;const Se=fo.confirm({header:$t("workbench.generate.generateConfirm"),body:$t("workbench.generate.generateConfirmBody"),onConfirm:async()=>{var ze;Se.destroy(),m.value[Me]=!0;try{const Ze={projectId:(ze=r.value)==null?void 0:ze.id,scriptId:n.value,uploadData:F.value.filter(St=>!!St.src),prompt:s.value,model:S.value,mode:L.value,resolution:a.value,duration:h.value,audio:g.value,trackId:Me},{data:gt}=await mn.post("/production/workbench/generateVideo",Ze);window.$message.success($t("workbench.generate.generateStarted")),Ye()}finally{m.value[Me]=!1}},onCancel:()=>{Se.destroy()}})}pt(S,Me=>{if(!Me){C.value={},L.value=void 0;return}mn.post("/modelSelect/getModelDetail",{modelId:Me}).then(({data:Se})=>{var ze,Ze;C.value=Se;const Ie=Se.durationResolutionMap;Array.isArray(Ie)&&Ie.length>0&&((ze=Ie[0].resolution)!=null&&ze.length&&(a.value=Ie[0].resolution[0]),(Ze=Ie[0].duration)!=null&&Ze.length&&(l.value=Ie[0].duration[0])),d.value=!1})});const de=fe(!1),z=fe([]);pt(L,Me=>{if(!Me)return F.value=[];const Se=F.value;Se.some(gt=>gt.src)&&(z.value=Se.filter(gt=>gt.src).map(gt=>({...gt})));const Ie=G(Me),ze=D(Me);if(Array.isArray(ze))F.value=Se.filter(gt=>gt.src);else{const gt=z.value.filter(Pt=>Pt.src),St=new Set;F.value=Ie.map(Pt=>{const dn=gt.findIndex((on,pn)=>!St.has(pn)&&on.fileType===Pt.fileType&&on.src);if(dn!==-1){St.add(dn);const on=gt[dn];return{...Pt,src:on.src,id:on.id,prompt:on.prompt,sources:on.sources??Pt.sources}}return Pt})}de.value=!1}),pt(F,Me=>{if(!de.value)return;const Se=P.value[Q.value];Se&&(Se.medias=Me.filter(Ie=>Ie.src).map(Ie=>({src:Ie.src,id:Ie.id,prompt:Ie.prompt,fileType:Ie.fileType,sources:Ie.sources})))},{deep:!0});const Y=fe([]),ie=fe(!1);function te(Me){const Se=P.value.map(Ie=>Ie.id).filter(Ie=>Ie!=null);Y.value=Me?Se:[]}function Z(Me,Se){if(Me==null)return;Se?Y.value.includes(Me)||Y.value.push(Me):Y.value=Y.value.filter(ze=>ze!==Me);const Ie=P.value.map(ze=>ze.id).filter(ze=>ze!=null);ie.value=Ie.length>0&&Ie.every(ze=>Y.value.includes(ze))}pt(P,Me=>{const Se=Me.map(Ie=>Ie.id).filter(Ie=>Ie!=null);Y.value=Y.value.filter(Ie=>Se.includes(Ie)),ie.value=Se.length>0&&Se.every(Ie=>Y.value.includes(Ie)),f.value=Object.fromEntries(Object.entries(f.value).filter(([Ie])=>Se.includes(Number(Ie)))),m.value=Object.fromEntries(Object.entries(m.value).filter(([Ie])=>Se.includes(Number(Ie))))},{deep:!0});function he(){const Me=L.value==="text";P.value.filter(Se=>Y.value.includes(Se.id)).forEach(async Se=>{var St;const Ie=Se.id;if(Ie==null||f.value[Ie])return;const ze=L.value?G(L.value):[],gt=(Me?Se.medias:ze.map((Pt,dn)=>Se.medias[dn]).filter(Boolean)).filter(Pt=>Pt==null?void 0:Pt.prompt).map(Pt=>({id:Pt.id,sources:Pt.sources?Pt.sources:"storyboard"}));f.value[Ie]=!0;try{const{data:Pt}=await mn.post("/production/workbench/generateVideoPrompt",{projectId:(St=r.value)==null?void 0:St.id,trackId:Ie,info:gt,model:S.value}),dn=P.value.find(on=>on.id===Ie);dn&&(dn.prompt=Pt)}finally{f.value[Ie]=!1}})}function pe(){const Me=fo.confirm({header:$t("workbench.generate.generateConfirm"),body:$t("workbench.generate.generateVideosInBatches"),onConfirm:async()=>{Me.destroy();const Se=L.value?G(L.value):[];P.value.filter(Ie=>Y.value.includes(Ie.id)).forEach(async Ie=>{var Ze;const ze=Ie.id;if(!(ze==null||m.value[ze])){m.value[ze]=!0;try{const gt=Se.map((dn,on)=>Ie.medias[on]).filter(dn=>dn&&!!dn.src),St={projectId:(Ze=r.value)==null?void 0:Ze.id,duration:u(Ie.duration||l.value),scriptId:n.value,uploadData:gt.map(dn=>({id:dn.id,sources:dn.sources?dn.sources:"storyboard"})),prompt:Ie.prompt,model:S.value,mode:L.value,resolution:a.value,audio:g.value,trackId:ze};if(St.prompt==="")return window.$message.warning($t("workbench.generate.skipDataWithEmptyVideoPromptWords"));const{data:Pt}=await mn.post("/production/workbench/generateVideo",St);window.$message.success($t("workbench.generate.generateStarted")),Ye()}finally{m.value[ze]=!1}}})},onCancel:()=>{Me.destroy()}})}async function Ce(){var Se;const{data:Me}=await mn.post("/production/workbench/getGenerateData",{projectId:(Se=r.value)==null?void 0:Se.id,scriptId:n.value??0});P.value=Me.trackList,M.value={};for(const Ie of P.value)Ie.id!=null&&Ie.selectVideoId!=null&&(M.value[Ie.id]=Ie.selectVideoId);W.value=Me.storyboardList,Qe(),Ye()}function Qe(){const Me=P.value[Q.value];if(!Me)return;const Se=Me.medias;F.value=F.value.map((Ie,ze)=>{const Ze=Se[ze];return Ze!=null&&Ze.src?{...Ie,src:Ze.src,id:Ze.id,prompt:Ze.prompt,sources:Ze.sources??Ie.sources}:{...Ie,src:void 0,id:void 0,prompt:void 0}})}function ke(){const Me=P.value[Q.value];if(!(Me!=null&&Me.id)){p.value=null,o.value="";return}const Se=M.value[Me.id]??Me.selectVideoId??null;if(p.value=Se,Se==null){o.value="";return}const Ie=b.value.find(ze=>ze.videoTrackId===Me.id&&ze.id===Se);if(Ie&&Ie.state!=="生成中"&&Ie.state!=="生成失败"){o.value=Ie.src;return}o.value=""}An(()=>{var Me,Se;S.value=((Me=r.value)==null?void 0:Me.videoModel)||"",L.value=((Se=r.value)==null?void 0:Se.mode)||"",Ce()});const me=X(()=>b.value.some(Me=>Me.state==="生成中"));let _e=null;function Te(){_e===null&&(_e=window.setInterval(()=>{Ye()},3e3))}function De(){_e!==null&&(window.clearInterval(_e),_e=null)}pt(()=>me.value,Me=>{Me?Te():De()}),Qa(()=>{De()});async function Ye(){var Ie;const{data:Me}=await mn.post("/production/workbench/getVideoList",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0}),Se=b.value;b.value=Me,ke();for(const ze of Me){const Ze=Se.find(gt=>gt.id===ze.id);Ze&&(Ze.state==="生成中"&&ze.state==="已完成"?window.$message.success($t("workbench.generate.generateSuccess")):Ze.state==="生成中"&&ze.state==="生成失败"&&window.$message.error(ze.errorReason||$t("workbench.generate.generateFailed")))}}pt(Q,()=>{d.value=!1,Qe(),ke()});function ot(Me){a.value=Me}function We(Me){l.value=Me,d.value=!0}function et(Me){const Se=fo.confirm({header:$t("workbench.generate.del"),body:$t("workbench.generate.delVideo"),onConfirm:()=>{mn.post("/production/workbench/delVideo",{id:Me.id}).then(()=>{window.$message.success($t("workbench.generate.delSuccess")),Se.destroy(),Ye()})},onCancel:()=>{Se.destroy()}})}async function st(Me){const Se=Me.src,ze=await(await fetch(Se)).blob(),Ze=document.createElement("a");Ze.href=URL.createObjectURL(ze);const gt="视频.mp4";Ze.download=gt,document.body.appendChild(Ze),Ze.click(),document.body.removeChild(Ze),URL.revokeObjectURL(Ze.href)}return(Me,Se)=>{const Ie=Sg,ze=Si,Ze=_n("i-volume-notice"),gt=_n("i-video"),St=_n("i-close"),Pt=_n("i-plus"),dn=gc,on=T8,pn=uL,ni=pA,Zn=_n("i-volume-mute"),Pi=y1,rr=_n("i-time"),Hr=Wc,Bo=el,lo=_n("i-check"),Fr=_n("i-delete"),is=_n("i-to-bottom"),yi=py;return xe(),Ge("div",Ixs,[ge("div",Mxs,[ge("div",Pxs,[Ae(o)?(xe(),Ge("video",{key:0,src:Ae(o),class:"previewVideo",controls:"",preload:"metadata"},null,8,Fxs)):(xe(),Ge("div",Nxs,Pe(Me.$t("workbench.generate.noVideo")),1))]),ge("div",{class:Eo(["configurationParameters",{hasActive:Ae(P).length>0}])},[ge("div",Uxs,[ge("div",jxs,[c(Ie,{theme:"primary",size:"small",style:{"margin-right":"10px"}},{default:Oe(()=>[Bt("#"+Pe(Ae(Q)+1),1)]),_:1}),Bt(" "+Pe(Me.$t("workbench.generate.prompt")),1)]),c(ze,{size:"small",class:"genTextbtn",loading:Ae(k),onClick:A},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generateText")),1)]),_:1},8,["loading"])]),ge("div",Wxs,[c(LZn,{modelValue:Ae(s),"onUpdate:modelValue":Se[0]||(Se[0]=Gt=>Fn(s)?s.value=Gt:null),references:Ae(j),placeholder:Me.$t("workbench.generate.promptPlaceholder")},null,8,["modelValue","references","placeholder"])]),ge("div",Vxs,[Ae(E)?(xe(),Ge(sn,{key:0},[(xe(!0),Ge(sn,null,Bi(Ae(F),(Gt,gi)=>uu((xe(),Ge("div",{class:"uploadBtn c fc",key:gi},[Gt.src?(xe(),Ge(sn,{key:0},[Gt.fileType==="image"?(xe(),Ge("img",{key:0,src:Gt.src,class:"uploadPreview"},null,8,zxs)):(xe(),Ge("div",Hxs,[Gt.fileType==="audio"?(xe(),Ut(Ze,{key:0,size:"24"})):(xe(),Ut(gt,{key:1,size:"24"}))])),ge("div",{class:"clearBtn",onClick:Mr(ri=>ue(gi),["stop"])},[c(St,{size:"12"})],8,$xs)],64)):nn("",!0)])),[[h1,Gt.src]])),128)),ge("div",{class:"uploadBtn c fc",onClick:J},[c(Pt,{size:"24"}),Bt(" "+Pe(Me.$t("workbench.generate.addReference")),1)])],64)):(xe(!0),Ge(sn,{key:1},Bi(Ae(F),(Gt,gi)=>(xe(),Ge("div",{class:"uploadBtn c fc",key:gi,onClick:ri=>re(gi)},[Gt.src?(xe(),Ge(sn,{key:0},[ge("img",{src:Gt.src,class:"uploadPreview"},null,8,Gxs),ge("div",{class:"clearBtn",onClick:Mr(ri=>ue(gi),["stop"])},[c(St,{size:"12"})],8,Yxs)],64)):(xe(),Ge(sn,{key:1},[c(Pt,{size:"24"}),Bt(" "+Pe(Gt.label),1)],64))],8,Xxs))),128))]),c(dn,{visible:Ae(H),"onUpdate:visible":Se[1]||(Se[1]=Gt=>Fn(H)?H.value=Gt:null),header:Me.$t("workbench.generate.selectStoryboard"),footer:!1,width:"800px",placement:"center"},{default:Oe(()=>[ge("div",Zxs,[(xe(!0),Ge(sn,null,Bi(Ae(W),Gt=>(xe(),Ge("div",{class:"storyboardItem",key:Gt.id,onClick:gi=>le(Gt)},[ge("img",{src:Gt.src},null,8,Kxs)],8,qxs))),128))])]),_:1},8,["visible","header"]),ge("div",Jxs,[ge("div",e5s,[ge("div",t5s,[c(on,{modelValue:Ae(S),"onUpdate:modelValue":Se[2]||(Se[2]=Gt=>Fn(S)?S.value=Gt:null),type:"video",size:"small"},null,8,["modelValue"])]),c(ni,{size:"small",class:"mode",modelValue:Ae(L),"onUpdate:modelValue":Se[3]||(Se[3]=Gt=>Fn(L)?L.value=Gt:null)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(_),(Gt,gi)=>(xe(),Ut(pn,{key:gi,value:Gt.value,label:Gt.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),c(ze,{size:"small",variant:"outline",theme:Ae(g)?"success":"danger",class:"audio",onClick:Se[4]||(Se[4]=Gt=>g.value=!Ae(g))},{icon:Oe(()=>[Ae(g)?(xe(),Ut(Ze,{key:0,size:"16"})):(xe(),Ut(Zn,{key:1,size:"16"}))]),_:1},8,["theme"]),ge("div",n5s,[c(Pi,{trigger:"click",placement:"top","overlay-class-name":"resDurPickerPopup","overlay-inner-style":{padding:"16px",borderRadius:"8px"}},{content:Oe(()=>[ge("div",i5s,[Array.isArray(Ae(C).durationResolutionMap)&&Ae(C).durationResolutionMap.length>0&&Ae(C).durationResolutionMap[0].resolution&&Ae(C).durationResolutionMap[0].resolution.length>0?(xe(),Ge("div",r5s,[ge("div",o5s,Pe(Me.$t("workbench.generate.resolution")),1),ge("div",s5s,[(xe(!0),Ge(sn,null,Bi(Ae(C).durationResolutionMap[0].resolution,Gt=>(xe(),Ge("div",{key:Gt,class:Eo(["pickerOption",{active:Ae(a)===Gt}]),onClick:gi=>ot(Gt)},Pe(Gt),11,a5s))),128))])])):nn("",!0),Array.isArray(Ae(C).durationResolutionMap)&&Ae(C).durationResolutionMap.length>0&&Ae(C).durationResolutionMap[0].duration&&Ae(C).durationResolutionMap[0].duration.length>0?(xe(),Ge("div",l5s,[ge("div",c5s,Pe(Me.$t("workbench.generate.duration")),1),ge("div",d5s,[(xe(!0),Ge(sn,null,Bi(Ae(C).durationResolutionMap[0].duration,Gt=>(xe(),Ge("div",{key:Gt,class:Eo(["pickerOption",{active:Ae(h)===Gt}]),onClick:gi=>We(Gt)},Pe(Gt)+"s ",11,u5s))),128))])])):nn("",!0)])]),default:Oe(()=>[c(Ie,{class:"btn",variant:"outline"},{default:Oe(()=>[Bt(Pe(Ae(a))+"·"+Pe(Ae(h))+"s",1)]),_:1})]),_:1})])]),ge("div",h5s,[c(ze,{size:"small",loading:Ae(v),onClick:ee},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generate")),1)]),_:1},8,["loading"])])]),ge("div",f5s,[ge("div",g5s,[c(rr),ge("span",m5s,Pe(Me.$t("workbench.generate.history"))+"("+Pe(Ae(w).length)+")",1)]),ge("div",k5s,[(xe(!0),Ge(sn,null,Bi(Ae(w),Gt=>(xe(),Ge("div",{class:Eo(["historyItem",{active:Gt.id===Ae(p),generating:Gt.state==="生成中",failed:Gt.state==="生成失败"}]),key:Gt.id,onClick:gi=>O(Gt)},[ge("video",{src:Gt.src,preload:"metadata",muted:""},null,8,A5s),Gt.state==="生成中"?(xe(),Ge("div",p5s,[c(Hr,{size:"24px"}),ge("span",b5s,Pe(Me.$t("workbench.generate.generating")),1)])):Gt.state==="生成失败"?(xe(),Ut(Bo,{key:1,placement:"top",content:Gt.errorReason,theme:"light"},{default:Oe(()=>[c(Ie,{class:"stateTag",theme:"danger",size:"small"},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generateFailed")),1)]),_:1})]),_:1},8,["content"])):nn("",!0),Gt.state!=="生成中"?(xe(),Ge("div",{key:2,class:"selectBtn",onClick:Mr(gi=>y(Gt),["stop"])},[c(lo,{size:"16"})],8,w5s)):nn("",!0),ge("div",{class:"delBtn",onClick:Mr(gi=>et(Gt),["stop"])},[c(Fr,{size:"16"})],8,O5s),Gt.state!=="生成中"&&Gt.state!=="生成失败"?(xe(),Ge("div",{key:3,class:"download",onClick:Mr(gi=>st(Gt),["stop"])},[c(is,{size:"16"})],8,y5s)):nn("",!0)],10,v5s))),128))])])],2)]),ge("div",C5s,[ge("div",_5s,[ge("div",S5s,[c(yi,{modelValue:Ae(ie),"onUpdate:modelValue":Se[5]||(Se[5]=Gt=>Fn(ie)?ie.value=Gt:null),onChange:te},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.selectAll")),1)]),_:1},8,["modelValue"]),Ae(Y).length?(xe(),Ge("span",L5s,Pe(Me.$t("workbench.generate.selected"))+" "+Pe(Ae(Y).length)+" 段",1)):nn("",!0)]),ge("div",x5s,[c(ze,{size:"small",variant:"outline",onClick:he},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.batchGenerateText")),1)]),_:1}),c(ze,{size:"small",variant:"outline",onClick:pe},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.batchGenerateVideo")),1)]),_:1})])]),ge("div",E5s,[(xe(!0),Ge(sn,null,Bi(Ae(P),(Gt,gi)=>(xe(),Ge("div",{class:Eo(["item",{active:gi===Ae(Q)}]),key:gi,onClick:ri=>Q.value=gi},[c(yi,{class:"trackCheck",checked:Gt.id!=null&&Ae(Y).includes(Gt.id),onClick:Se[6]||(Se[6]=Mr(()=>{},["stop"])),onChange:ri=>Z(Gt.id,ri)},null,8,["checked","onChange"]),c(Ie,{class:"indexTag",size:"small"},{default:Oe(()=>[Bt("#"+Pe(gi+1),1)]),_:2},1024),Gt.selectVideoId?(xe(),Ut(Ie,{key:0,class:"selectTag",theme:"success",size:"small"},{default:Oe(()=>[...Se[7]||(Se[7]=[Bt("已选择",-1)])]),_:1})):nn("",!0),Gt.medias.length?(xe(),Ge("div",Q5s,[(xe(!0),Ge(sn,null,Bi(Gt.medias,(ri,tr)=>(xe(),Ge(sn,{key:tr},[ri.fileType==="image"?(xe(),Ge("img",{key:0,src:ri.src,class:"thumb"},null,8,D5s)):(xe(),Ge("div",B5s,[ri.fileType==="audio"?(xe(),Ut(Ze,{key:0,size:"20"})):(xe(),Ut(gt,{key:1,size:"24"}))]))],64))),128))])):(xe(),Ge("span",R5s,Pe(Me.$t("workbench.generate.emptyTrack",gi+1)),1)),ge("div",{class:"deleteBtn",onClick:Mr(ri=>R(gi),["stop"])},[c(St,{size:"14"})],8,I5s)],10,T5s))),128)),ge("div",{class:"item addItem c",onClick:B},[c(Pt,{size:"36"})])])])])}}}),P5s=oo(M5s,[["__scopeId","data-v-8ebd1229"]]);var F5s=Object.defineProperty,Oqn=e=>{throw TypeError(e)},N5s=(e,t,n)=>t in e?F5s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jy=(e,t,n)=>N5s(e,typeof t!="symbol"?t+"":t,n),nat=(e,t,n)=>t.has(e)||Oqn("Cannot "+n),Ht=(e,t,n)=>(nat(e,t,"read from private field"),n?n.call(e):t.get(e)),bo=(e,t,n)=>t.has(e)?Oqn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Rr=(e,t,n,r)=>(nat(e,t,"write to private field"),t.set(e,n),n),U5s=(e,t,n)=>(nat(e,t,"access private method"),n);function Yre(e=""){return`${e}${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function j5s(){return/Mac|iPod|iPhone|iPad/.test(navigator.platform)}function Ar(e){return Math.round(e*1e3)/1e3}const G0=Wy("tracks",()=>{const e=fe([]),t=fe(new Set),n=fe({clips:[],operation:null}),r=X(()=>e.value.find(re=>re.isMain)),o=X(()=>[...e.value].sort((re,J)=>{const oe=ue=>ue.isMain?100:{effect:10,filter:20,sticker:30,subtitle:40,video:50,audio:200}[ue.type]||0,se=oe(re),le=oe(J);return se!==le?se-le:re.order-J.order})),s=X(()=>{let re=0;return e.value.forEach(J=>{J.clips.forEach(oe=>{oe.endTime>re&&(re=oe.endTime)})}),re}),a=X(()=>{const re=[];return e.value.forEach(J=>{J.clips.forEach(oe=>{t.value.has(oe.id)&&re.push(oe)})}),re});function l(re){if((re.type==="video"||re.type==="audio")&&"playbackRate"in re){const J=re,oe=J.playbackRate||1;if(typeof J.trimStart=="number"&&typeof J.trimEnd=="number"){const se=J.trimEnd-J.trimStart,le=Ar(se/oe);return{...J,endTime:Ar(J.startTime+le)}}}return re}function d(re){return re.map(J=>({...J,clips:J.clips?J.clips.map(l):[]}))}function u(re){e.value=d(re)}function h(re){re.clips&&re.clips.length>0&&(re.clips=re.clips.map(l)),e.value.push(re)}function g(re){const J=e.value.findIndex(oe=>oe.id===re);J!==-1&&e.value.splice(J,1)}function m(re,J){const oe=e.value.find(se=>se.id===re);oe&&Object.assign(oe,J)}function v(re,J){const oe=e.value.findIndex(le=>le.id===re);if(oe===-1)return null;const se={id:`track-${Date.now()}`,type:J,name:`${J} ${k(J)+1}`,visible:!0,locked:!1,clips:[],order:oe};return e.value.forEach(le=>{le.order>=oe&&le.order++}),e.value.splice(oe,0,se),se}function f(re,J){const oe=e.value.findIndex(le=>le.id===re);if(oe===-1)return null;const se={id:`track-${Date.now()}`,type:J,name:`${J} ${k(J)+1}`,visible:!0,locked:!1,clips:[],order:oe+1};return e.value.forEach(le=>{le.order>oe&&le.order++}),e.value.splice(oe+1,0,se),se}function k(re){return e.value.filter(J=>J.type===re).length}function A(re,J){const oe=e.value.find(se=>se.id===re);if(oe){const se=l(J);oe.clips.push(se)}}function p(re){e.value.forEach(J=>{const oe=J.clips.findIndex(se=>se.id===re);if(oe!==-1){const se=J.clips[oe];if(se.type==="video"){J.clips.filter(ue=>{if(ue.type!=="transition")return!1;const ee=ue,de=(ee.startTime+ee.endTime)/2,z=Math.abs(de-se.startTime){const ee=J.clips.findIndex(de=>de.id===ue.id);ee!==-1&&(J.clips.splice(ee,1),t.value.delete(ue.id))});const le=J.clips.findIndex(ue=>ue.id===re);le!==-1&&J.clips.splice(le,1)}else J.clips.splice(oe,1)}}),t.value.delete(re)}function b(re){re.forEach(J=>p(J))}function w(re,J){const oe={...re};for(const se in J)if(Object.prototype.hasOwnProperty.call(J,se)){const le=J[se],ue=re[se];le==null?oe[se]=le:typeof le=="object"&&!Array.isArray(le)&&typeof ue=="object"&&ue!==null&&!Array.isArray(ue)?oe[se]=w(ue,le):oe[se]=le}return oe}function O(re,J){e.value.forEach(oe=>{const se=oe.clips.findIndex(le=>le.id===re);if(se!==-1){const le=oe.clips[se];oe.clips[se]=w(le,J)}})}function y(re,J){let oe=null;for(const se of e.value){const le=se.clips.findIndex(ue=>ue.id===re);if(le!==-1){oe=se.clips.splice(le,1)[0],se.id;break}}if(oe){const se=e.value.find(le=>le.id===J);se&&(oe.trackId=J,se.clips.push(oe))}}function C(re){for(const J of e.value){const oe=J.clips.find(se=>se.id===re);if(oe)return oe}}function _(re,J=!1){J||t.value.clear(),t.value.add(re)}function S(re){t.value.has(re)?t.value.delete(re):t.value.add(re)}function L(re){t.value.delete(re)}function E(){t.value.clear()}function T(re,J,oe,se){const le=e.value.find(ue=>ue.id===re);return le?le.clips.some(ue=>se&&ue.id===se?!1:ue.startTimeJ):!1}function D(){e.value=[],t.value.clear()}function P(){const re=[];e.value.forEach(J=>{J.isMain||J.clips.some(oe=>oe.type!=="transition")||re.push(J.id)}),re.forEach(J=>{g(J)})}function Q(re){const J=re||Array.from(t.value);if(J.length===0)return!1;const oe=[];return J.forEach(se=>{const le=C(se);le&&oe.push(JSON.parse(JSON.stringify(le)))}),oe.length>0?(n.value={clips:oe,operation:"copy"},!0):!1}function M(re){const J=re||Array.from(t.value);if(J.length===0)return!1;const oe=[];return J.forEach(se=>{const le=C(se);le&&oe.push(JSON.parse(JSON.stringify(le)))}),oe.length>0?(n.value={clips:oe,operation:"cut"},!0):!1}function B(re,J,oe,se=[]){const le=e.value.find(z=>z.id===re);if(!le)return J;const ue=le.clips.filter(z=>!se.includes(z.id)).sort((z,Y)=>z.startTime-Y.startTime);if(ue.length===0)return J;let ee=J,de=J+oe;for(const z of ue)eez.startTime&&(ee=z.endTime,de=ee+oe);return Math.max(0,ee)}function R(re,J){if(n.value.clips.length===0)return null;const oe=e.value.find(Y=>Y.id===re);if(!oe)return null;const se=[],le=()=>`clip-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,ue=Math.min(...n.value.clips.map(Y=>Y.startTime)),ee=Math.max(...n.value.clips.map(Y=>Y.endTime-ue)),de=n.value.operation==="cut"?n.value.clips.map(Y=>Y.id):[],z=B(re,J,ee,de);return n.value.clips.forEach(Y=>{const ie=Y.endTime-Y.startTime,te=Y.startTime-ue,Z={...Y,id:le(),trackId:re,startTime:z+te,endTime:z+te+ie,selected:!1};oe.clips.push(Z),se.push(Z)}),n.value.operation==="cut"&&(n.value.clips.forEach(Y=>{p(Y.id)}),n.value={clips:[],operation:null}),se.length>0?se:null}function I(){return n.value.clips.length>0}function F(){return n.value}function j(){n.value={clips:[],operation:null}}function W(re,J){let oe=null,se=null,le=-1;for(const z of e.value){const Y=z.clips.findIndex(ie=>ie.id===re);if(Y!==-1){oe=z.clips[Y],se=z,le=Y;break}}if(!oe||!se||le===-1||J<=oe.startTime||J>=oe.endTime)return null;const ue=()=>`clip-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,ee={...JSON.parse(JSON.stringify(oe)),endTime:J},de={...JSON.parse(JSON.stringify(oe)),id:ue(),startTime:J,selected:!1};if("trimStart"in oe&&"trimEnd"in oe&&"originalDuration"in oe){const z=oe,Y=z.endTime-z.startTime,ie=(z.trimEnd-z.trimStart)/Y,te=(J-z.startTime)*ie,Z=z.trimStart+te;ee.trimEnd=Z,de.trimStart=Z}return se.clips.splice(le,1,ee,de),t.value.has(re)&&(t.value.delete(re),t.value.add(ee.id)),{leftClip:ee,rightClip:de}}function H(re,J,oe){const{allowShrink:se=!0,allowExpand:le=!0,handleCollision:ue=!0,keepStartTime:ee=!0}=oe||{};if(J<.25||J>4)return{success:!1,message:"播放倍速必须在 0.25 到 4 之间"};let de=null,z=null;for(const ot of e.value){const We=ot.clips.find(et=>et.id===re);if(We){de=We,z=ot;break}}if(!de||!z)return{success:!1,message:"未找到指定的 Clip"};if(de.type!=="video"&&de.type!=="audio")return{success:!1,message:"只有视频或音频类型的 Clip 可以调整倍速"};const Y=de,ie=Y.playbackRate||1;if(Math.abs(ie-J)<.001)return{success:!0};const te=Y.trimEnd-Y.trimStart,Z=Y.endTime-Y.startTime,he=Ar(te/J),pe=he>Z,Ce=he{if(ot.type!=="transition")return!1;const We=ot,et=(We.startTime+We.endTime)/2,st=Math.abs(et-Y.startTime)ot.id!==re&&ot.type!=="transition").sort((ot,We)=>ot.startTime-We.startTime),Ye=De.filter(ot=>Qeot.startTime);if(Ye.length>0){if(!ue)return{success:!1,message:"会与其他 Clip 产生碰撞"};const ot=Ye.filter(et=>et.startTime>=Y.startTime),We=ke-Math.min(...ot.map(et=>et.startTime));if(We>0){const et=De.filter(st=>st.startTime>=Y.endTime);for(const st of et){const Me=Ar(st.startTime+We),Se=Ar(st.endTime+We);O(st.id,{startTime:Me,endTime:Se}),_e.push({id:st.id,startTime:Me,endTime:Se})}}}O(re,{playbackRate:J,startTime:Qe,endTime:ke});for(const ot of Te){const We=ot,et=(We.startTime+We.endTime)/2,st=z.clips.filter(ze=>ze.type!=="transition");({...Y});const Me=Math.abs(et-Y.startTime)Ze.id!==re&&Math.abs(Ze.startTime-ke)<.01);if(Ie=!!ze,Ie&&ze){const Ze=(ke+ze.startTime)/2,gt=We.transitionDuration/2;O(ot.id,{startTime:Ar(Ze-gt),endTime:Ar(Ze+gt)})}}else if(Me&&!ee){const ze=st.find(Ze=>Ze.id!==re&&Math.abs(Ze.endTime-Qe)<.01);if(Ie=!!ze,Ie&&ze){const Ze=(ze.endTime+Qe)/2,gt=We.transitionDuration/2;O(ot.id,{startTime:Ar(Ze-gt),endTime:Ar(Ze+gt)})}}else Me&&ee&&(Ie=!0);Ie||(p(ot.id),me.push(ot.id))}return{success:!0,removedTransitions:me.length>0?me:void 0,adjustedClips:_e.length>0?_e:void 0}}function $(re,J){const oe=C(re);if(!oe||oe.type!=="video"&&oe.type!=="audio")return null;const se=oe,le=se.trimEnd-se.trimStart;return Ar(le/J)}function G(re,J,oe=!0){const se=C(re);if(!se||se.type!=="video"&&se.type!=="audio")return{willCollide:!1};const le=se,ue=le.trimEnd-le.trimStart,ee=Ar(ue/J);let de,z;oe?(de=le.startTime,z=Ar(le.startTime+ee)):(z=le.endTime,de=Ar(Math.max(0,le.endTime-ee)));let Y=null;for(const te of e.value)if(te.clips.some(Z=>Z.id===re)){Y=te;break}if(!Y)return{willCollide:!1,newDuration:ee};const ie=Y.clips.filter(te=>te.id!==re&&te.type!=="transition"&&dete.startTime);return{willCollide:ie.length>0,collidingClipIds:ie.map(te=>te.id),newDuration:ee}}function q(re,J,oe=1){const se=J-re;return Ar(se/oe)}return{tracks:e,selectedClipIds:t,clipboard:n,mainTrack:r,sortedTracks:o,totalDuration:s,selectedClips:a,addTrack:h,addTrackAbove:v,addTrackBelow:f,removeTrack:g,updateTrack:m,getTrackCountByType:k,setTracks:u,normalizeTracks:d,normalizeClipDuration:l,addClip:A,removeClip:p,removeClips:b,updateClip:O,moveClipToTrack:y,getClip:C,selectClip:_,toggleClipSelection:S,deselectClip:L,clearSelection:E,hasOverlap:T,reset:D,cleanupEmptyTracks:P,copyClips:Q,cutClips:M,pasteClips:R,hasClipboardContent:I,getClipboardContent:F,clearClipboard:j,splitClip:W,setClipPlaybackRate:H,getClipDurationAtRate:$,checkPlaybackRateCollision:G,calculateTrackDuration:q}}),ML=Wy("playback",()=>{const e=fe(!1),t=fe(0),n=fe(1),r=fe(0);let o=null,s=0;const a=X(()=>{const y=G0().totalDuration;return Math.max(y,r.value)}),l=X(()=>u(t.value)),d=X(()=>u(a.value));function u(y,C=30){const _=Math.floor(y*C),S=Math.floor(_/(C*3600)),L=Math.floor(_%(C*3600)/(C*60)),E=Math.floor(_%(C*60)/C),T=_%C;return`${String(S).padStart(2,"0")}:${String(L).padStart(2,"0")}:${String(E).padStart(2,"0")}:${String(T).padStart(2,"0")}`}function h(y){if(e.value){if(s>0){const C=(y-s)/1e3,_=t.value+C*n.value,S=a.value;if(_>=S){t.value=S,f();return}t.value=_}s=y,o=requestAnimationFrame(h)}}function g(){s=0,o=requestAnimationFrame(h)}function m(){o!==null&&(cancelAnimationFrame(o),o=null),s=0}function v(){e.value||(e.value=!0,g())}function f(){e.value&&(e.value=!1,m())}function k(){e.value?f():v()}function A(y){const C=a.value>0?a.value:1/0;t.value=Math.max(0,Math.min(y,C))}function p(y){n.value=y}function b(y){r.value=y}function w(y){const C=a.value;t.value=Math.max(0,Math.min(t.value+y,C))}function O(){f(),t.value=0,n.value=1,r.value=0}return{isPlaying:e,currentTime:t,playbackRate:n,duration:r,effectiveDuration:a,formattedCurrentTime:l,formattedDuration:d,formatTime:u,play:v,pause:f,togglePlay:k,seekTo:A,setPlaybackRate:p,setDuration:b,adjustTime:w,reset:O}}),TE=Wy("history",()=>{const e=fe([]),t=fe(-1),n=fe(50),r=X(()=>t.value>0),o=X(()=>t.valuen.value?e.value.shift():t.value++}function l(v){const f=G0(),k=JSON.parse(v.snapshot);f.tracks=k.tracks,f.selectedClipIds.clear(),k.selectedClipIds.forEach(A=>{f.selectedClipIds.add(A)})}function d(){if(!r.value)return;t.value--;const v=e.value[t.value];l(v)}function u(){if(!o.value)return;t.value++;const v=e.value[t.value];l(v)}function h(){e.value=[],t.value=-1,a("初始状态")}function g(){e.value=[],t.value=-1}function m(){g()}return{historyStack:e,currentIndex:t,maxHistorySize:n,canUndo:r,canRedo:o,createSnapshot:s,pushSnapshot:a,restoreSnapshot:l,undo:d,redo:u,initialize:h,clear:g,reset:m}}),iat="video-track-scale-settings";function W5s(){try{const e=localStorage.getItem(iat);if(e)return JSON.parse(e)}catch(e){console.warn("Failed to load scale settings from localStorage:",e)}return null}function V5s(e){try{localStorage.setItem(iat,JSON.stringify(e))}catch(t){console.warn("Failed to save scale settings to localStorage:",t)}}const EA=Wy("scale",()=>{const e=W5s(),t=fe((e==null?void 0:e.scale)??1),n=fe(.1),r=fe(10),o=fe(100),s=fe((e==null?void 0:e.snapEnabled)??!0),a=fe(10);pt([t,s],([y,C])=>{V5s({scale:y,snapEnabled:C})},{immediate:!1});const l=X(()=>o.value*t.value),d=X(()=>{const y=t.value;return y>=5?{majorInterval:1,minorInterval:1/30,majorHeight:20,minorHeight:8}:y>=2?{majorInterval:1,minorInterval:.1,majorHeight:20,minorHeight:10}:y>=1?{majorInterval:1,minorInterval:.2,majorHeight:20,minorHeight:10}:y>=.5?{majorInterval:2,minorInterval:.5,majorHeight:20,minorHeight:10}:y>=.2?{majorInterval:5,minorInterval:1,majorHeight:20,minorHeight:10}:{majorInterval:10,minorInterval:2,majorHeight:20,minorHeight:10}});function u(y){t.value=Math.max(n.value,Math.min(y,r.value))}function h(y=.1){u(t.value+y)}function g(y=.1){u(t.value-y)}function m(){s.value=!s.value}function v(y){s.value=y}function f(y){return y*l.value}function k(y){return y/l.value}function A(y,C){if(!s.value||C.length===0)return y;let _=y,S=a.value;for(const L of C){const E=Math.abs(y-L);E{const e=G0(),t=EA(),n=TE(),r=fe(!1),o=fe([]),s=fe(0),a=fe(0),l=fe(""),d=fe(new Map),u=fe(0),h=fe(0),g=fe({shift:!1}),m=fe(!0),v=fe({x:0,y:0}),f=fe({enabled:!0,edgeThreshold:80,scrollSpeed:8,maxScrollSpeed:25}),k=fe(null),A=fe(null),p=fe(null),b=fe(null),w=fe(0),O=fe({trackId:"",startTime:0,endTime:0,needNewTrack:!1,visible:!1,clipType:""}),y=fe("");let C=document;const _=X(()=>new Set(o.value.map(le=>le.id))),S=X(()=>!r.value||!O.value.visible?0:O.value.endTime);function L(le){le.enableCrossTrackDrag!==void 0&&(m.value=le.enableCrossTrackDrag),le.edgeScroll&&Object.assign(f.value,le.edgeScroll)}function E(le,ue,ee){k.value=le,A.value=ue,b.value=ee||null}function T(le){if(!A.value)return;const ue=Math.max(0,A.value.scrollLeft+le);A.value.scrollLeft=ue,b.value&&b.value(ue)}function D(){if(!r.value||!f.value.enabled){M();return}const le=k.value,ue=A.value;if(!le||!ue)return;const ee=le.getBoundingClientRect(),{edgeThreshold:de,scrollSpeed:z,maxScrollSpeed:Y}=f.value,ie=u.value-ee.left;let te=0;if(ie0){const Z=Math.max(0,de-ie)/de;te=-Math.min(z+Z*(Y-z),Y)}else if(ie>ee.width-de){const Z=ue.scrollWidth-ue.clientWidth+500;if(ue.scrollLeft40;let te=l.value;if(m.value&&ie){const Ce=oe(h.value);Ce&&(te=Ce)}y.value=te;let Z=Ar(Y.startTime+de);t.snapEnabled&&!g.value.shift&&(Z=J(Z,z,te)),Z=Math.max(0,Z);const he=Y.endTime-Y.startTime,pe=Z+he;I(te,Z,pe,z.type)}function Q(){p.value===null&&(p.value=requestAnimationFrame(D))}function M(){p.value!==null&&(cancelAnimationFrame(p.value),p.value=null)}function B(le,ue,ee){var de;le.type!=="transition"&&(C=ee||((de=ue.target)==null?void 0:de.ownerDocument)||document,e.selectClip(le.id),o.value=[le],r.value=!0,s.value=ue.clientX,a.value=ue.clientY,u.value=ue.clientX,h.value=ue.clientY,l.value=le.trackId,y.value=le.trackId,d.value.clear(),d.value.set(le.id,{startTime:le.startTime,endTime:le.endTime,trackId:le.trackId}),v.value={x:0,y:0},w.value=0,O.value={trackId:le.trackId,startTime:le.startTime,endTime:le.endTime,needNewTrack:!1,visible:!1,clipType:le.type},C.addEventListener("mousemove",R),C.addEventListener("mouseup",W),Q())}function R(le){if(!r.value||o.value.length===0)return;g.value.shift=le.shiftKey,u.value=le.clientX,h.value=le.clientY;const ue=le.clientX-s.value,ee=le.clientY-a.value;v.value={x:ue,y:ee};const de=(ue+w.value)/t.actualPixelsPerSecond,z=o.value[0],Y=d.value.get(z.id);if(!Y)return;const ie=Math.abs(ee)>40;let te=l.value;if(m.value&&ie){const Ce=oe(h.value);Ce&&(te=Ce)}y.value=te;let Z=Ar(Y.startTime+de);t.snapEnabled&&!g.value.shift&&(Z=J(Z,z,te)),Z=Math.max(0,Z);const he=Y.endTime-Y.startTime,pe=Z+he;I(te,Z,pe,z.type)}function I(le,ue,ee,de){const z=e.tracks.find(Ce=>Ce.id===le),Y=l.value,ie=le!==Y,te=ee-ue;let Z=ue,he=ee,pe=!1;if(ie)if(!z)pe=!0;else{const Ce=de;z.type===Ce?j(le,ue,ee)&&(pe=!0):pe=!0}else{const Ce=F(le,ue,te);Z=Ce.startTime,he=Ce.endTime}O.value={trackId:le,startTime:Z,endTime:he,needNewTrack:pe,visible:!0,clipType:de}}function F(le,ue,ee){const de=e.tracks.find(Z=>Z.id===le);if(!de)return{startTime:ue,endTime:ue+ee};const z=new Set(o.value.map(Z=>Z.id)),Y=de.clips.filter(Z=>!z.has(Z.id)&&Z.type!=="transition").sort((Z,he)=>Z.startTime-he.startTime);let ie=ue,te=ue+ee;for(const Z of Y)if(ieZ.startTime){const he=(ie+te)/2,pe=(Z.startTime+Z.endTime)/2;(heZ.startTime&&(ie=Ar(Z.endTime)))):ie=Ar(Z.endTime),te=ie+ee;break}return{startTime:ie,endTime:te}}function j(le,ue,ee){const de=e.tracks.find(Y=>Y.id===le);if(!de)return!1;const z=new Set(o.value.map(Y=>Y.id));return de.clips.some(Y=>z.has(Y.id)||Y.type==="transition"?!1:Y.startTimeue)}function W(){if(!r.value||o.value.length===0){q();return}const le=y.value!==l.value;if(!m.value&&le){q();return}le?G():H(),se(),e.cleanupEmptyTracks(),n.pushSnapshot("移动片段"),q()}function H(){const le=O.value,ue=o.value[0],ee=d.value.get(ue.id);if(!ee)return;const de=le.startTime-ee.startTime,z=new Map;o.value.forEach(Y=>{const ie=d.value.get(Y.id);if(ie){const te=ie.endTime-ie.startTime,Z=Ar(Math.max(0,ie.startTime+de)),he=Ar(Z+te);e.updateClip(Y.id,{startTime:Z,endTime:he}),z.set(Y.id,{startTime:Z,endTime:he})}}),$(le.trackId,z)}function $(le,ue){const ee=e.tracks.find(Y=>Y.id===le);if(!ee)return;const de=[...ee.clips].filter(Y=>Y.type!=="transition").map(Y=>{const ie=ue.get(Y.id);return{id:Y.id,startTime:ie?ie.startTime:Y.startTime,endTime:ie?ie.endTime:Y.endTime}}).sort((Y,ie)=>Y.startTime-ie.startTime);if(de.length<2)return;const z=[];for(let Y=0;Yte.startTime){const Z=te.endTime-te.startTime,he=Ar(ie.endTime),pe=Ar(he+Z);te.startTime=he,te.endTime=pe,z.push({id:te.id,startTime:he,endTime:pe})}}z.forEach(Y=>{e.updateClip(Y.id,{startTime:Y.startTime,endTime:Y.endTime})})}function G(){const le=O.value,ue=o.value[0],ee=d.value.get(ue.id);if(!ee)return;const de=ue.type;let z=null;if(le.needNewTrack){const te=re(de);e.addTrack(te),z=te}else z=e.tracks.find(te=>te.id===le.trackId)||null;if(!z)return;const Y=le.startTime-ee.startTime,ie=new Map;o.value.forEach(te=>{const Z=d.value.get(te.id);if(Z){const he=Z.endTime-Z.startTime,pe=Ar(Math.max(0,Z.startTime+Y)),Ce=Ar(pe+he);te.trackId!==z.id&&e.moveClipToTrack(te.id,z.id),e.updateClip(te.id,{startTime:pe,endTime:Ce}),ie.set(te.id,{startTime:pe,endTime:Ce})}}),$(z.id,ie)}function q(){M(),r.value=!1,o.value=[],d.value.clear(),v.value={x:0,y:0},w.value=0,O.value={trackId:"",startTime:0,endTime:0,needNewTrack:!1,visible:!1,clipType:""},y.value="",C.removeEventListener("mousemove",R),C.removeEventListener("mouseup",W)}function re(le){const ue=e.getTrackCountByType(le),ee={video:"视频",audio:"音频",subtitle:"字幕",sticker:"贴纸",filter:"滤镜",effect:"特效"};return{id:Yre("track-"),type:le,name:`${ee[le]||le}${ue+1}`,visible:!0,locked:!1,clips:[],order:e.tracks.length}}function J(le,ue,ee){if(g.value.shift||!t.snapEnabled)return le;const de=e.tracks.find(Z=>Z.id===ee);if(!de)return le;const z=[],Y=new Set(e.selectedClipIds);if(de.clips.forEach(Z=>{Z.id!==ue.id&&!Y.has(Z.id)&&Z.type!=="transition"&&(z.push(Z.startTime),z.push(Z.endTime))}),z.length===0)return le;const ie=t.timeToPixels(le),te=t.snapToPosition(ie,z.map(Z=>t.timeToPixels(Z)));return Ar(t.pixelsToTime(te))}function oe(le){const ue=document.querySelectorAll(".tracks__track");for(const ee of ue){const de=ee.getBoundingClientRect();if(le>=de.top&&le<=de.bottom)return ee.dataset.trackId||null}return null}function se(){e.tracks.forEach(le=>{const ue=[];le.clips.forEach(ee=>{if(ee.type!=="transition")return;const de=(ee.startTime+ee.endTime)/2,z=le.clips.find(ie=>ie.type!=="transition"&&Math.abs(ie.endTime-de)<.1),Y=le.clips.find(ie=>ie.type!=="transition"&&ie!==z&&Math.abs(ie.startTime-de)<.1);(!z||!Y||Math.abs(z.endTime-Y.startTime)>.1)&&ue.push(ee.id)}),ue.forEach(ee=>{e.removeClip(ee)})})}return{isDragging:r,draggedClips:o,draggedClipIds:_,dragOffset:v,previewPosition:O,previewEndTime:S,currentTargetTrackId:y,dragStartTrackId:l,edgeScrollConfig:f,setConfig:L,setScrollContainers:E,startDrag:B,handleDragMove:R,handleDragEnd:W,resetDragState:q,startEdgeScroll:Q,stopEdgeScroll:M}});function z5s(e={}){const t=G0(),n=ML(),r=TE(),o=EA(),s=e.callbacks||{},a=fe(!1);function l(){var C;if(!((C=e.containerRef)!=null&&C.value))return!0;const _=document.activeElement;return _?e.containerRef.value.contains(_):!1}function d(){var C;return(C=e.containerRef)!=null&&C.value?a.value:!0}function u(C){return!C||!(C instanceof HTMLElement)?!1:!!(C instanceof HTMLInputElement||C instanceof HTMLTextAreaElement||C instanceof HTMLSelectElement||C.isContentEditable||C.getAttribute("contenteditable")==="true")}function h(C){var _,S;const L=j5s()?C.metaKey:C.ctrlKey;if(C.code==="Space"){if(u(C.target))return;C.preventDefault(),n.isPlaying?(n.pause(),(_=s.onPause)==null||_.call(s)):(n.play(),(S=s.onPlay)==null||S.call(s));return}if(d()&&!g(C)){if(L&&C.code==="KeyZ"&&!C.shiftKey){C.preventDefault(),r.undo();return}if(L&&C.code==="KeyY"||L&&C.shiftKey&&C.code==="KeyZ"){C.preventDefault(),r.redo();return}if(L&&C.code==="KeyC"){C.preventDefault(),m();return}if(L&&C.code==="KeyX"){C.preventDefault(),v();return}if(L&&C.code==="KeyV"){C.preventDefault(),f();return}if(C.code==="Delete"||C.code==="Backspace"){C.preventDefault(),k();return}if(L&&(C.code==="Equal"||C.code==="NumpadAdd")){C.preventDefault(),o.zoomIn(.1);return}if(L&&(C.code==="Minus"||C.code==="NumpadSubtract")){C.preventDefault(),o.zoomOut(.1);return}if(C.code==="ArrowRight"){C.preventDefault(),n.adjustTime(.1);return}if(C.code==="ArrowLeft"){C.preventDefault(),n.adjustTime(-.1);return}if(C.code==="Escape"){C.preventDefault(),t.clearSelection();return}}}function g(C){var _;const S=C.target;return S instanceof HTMLInputElement||S instanceof HTMLTextAreaElement||S.isContentEditable?((_=e.containerRef)!=null&&_.value&&e.containerRef.value.contains(S),!0):!1}function m(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.copyClips(_),(C=s.onCopy)==null||C.call(s,_))}function v(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.cutClips(_),(C=s.onCut)==null||C.call(s,_))}function f(){var C;if(!t.hasClipboardContent())return;const _=t.selectedClips;let S;if(_.length>0?S=_[0].trackId:t.mainTrack&&(S=t.mainTrack.id),!S)return;const L=n.currentTime,E=t.pasteClips(S,L);E&&(r.pushSnapshot("粘贴片段"),(C=s.onPaste)==null||C.call(s,E,S,L))}function k(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.removeClips(_),r.pushSnapshot("删除片段"),(C=s.onDelete)==null||C.call(s,_))}function A(){a.value=!0}function p(){l()||(a.value=!1)}function b(){a.value=!0}function w(C){var _;const S=C.relatedTarget;(_=e.containerRef)!=null&&_.value&&S&&(e.containerRef.value.contains(S)||(a.value=!1))}function O(){var C;const _=(C=e.containerRef)==null?void 0:C.value;_&&(_.addEventListener("mouseenter",A),_.addEventListener("mouseleave",p),_.addEventListener("focusin",b),_.addEventListener("focusout",w))}function y(){var C;const _=(C=e.containerRef)==null?void 0:C.value;_&&(_.removeEventListener("mouseenter",A),_.removeEventListener("mouseleave",p),_.removeEventListener("focusin",b),_.removeEventListener("focusout",w))}return An(()=>{document.addEventListener("keydown",h),O()}),Qa(()=>{document.removeEventListener("keydown",h),y()}),{handleKeyDown:h,isActive:a}}function H5s({scrollLeft:e,tracksWidth:t,setScrollLeft:n}){const r=ML(),o=EA();pt(()=>r.currentTime,s=>{if(!r.isPlaying)return;const a=o.actualPixelsPerSecond,l=s*a,d=e.value+t.value*.9;if(l>d){const u=t.value*.8,h=e.value+u;n(h)}})}const Lm=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},$5s={},X5s={width:"1em",height:"1em",viewBox:"0 0 24 24",preserveAspectRatio:"xMidYMid meet",fill:"none",role:"presentation",xmlns:"http://www.w3.org/2000/svg",class:"snap-icon"};function G5s(e,t){return xe(),Ge("svg",X5s,[...t[0]||(t[0]=[ge("g",null,[ge("path",{d:"M11 22h2v-3h-2v3ZM6.106 4.416l1.415-1.414 2.121 2.122-1.414 1.414-2.122-2.122ZM16.48 3.002l1.414 1.414-2.122 2.122-1.414-1.414 2.122-2.122ZM11 2h2v3h-2V2Zm6.894 17.584-1.414 1.414-2.122-2.122 1.414-1.414 2.122 2.122ZM7.52 20.998l-1.414-1.414 2.122-2.122 1.414 1.415-2.121 2.12Z",fill:"currentColor"}),ge("path",{d:"M4 16h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2Zm16-6h-7v4h7v-4ZM4 10h7v4H4v-4Z","clip-rule":"evenodd","fill-rule":"evenodd",fill:"currentColor"})],-1)])])}const Y5s=Lm($5s,[["render",G5s],["__scopeId","data-v-dca9589a"]]),Z5s={class:"tools-bar"},q5s={class:"tools-bar__section tools-bar__operations"},K5s=["disabled","onClick"],J5s={class:"tools-bar__icon"},e9s={class:"tools-bar__label"},t9s=["disabled","title","onClick"],n9s={class:"tools-bar__icon"},i9s={class:"tools-bar__label"},r9s={class:"tools-bar__section tools-bar__playback"},o9s={class:"tools-bar__time"},s9s={class:"tools-bar__time-current"},a9s={class:"tools-bar__time-duration"},l9s=["value"],c9s={class:"tools-bar__section tools-bar__scale"},d9s={class:"tools-bar__scale-config"},u9s=["title"],h9s=["title","disabled","onClick"],f9s={class:"tools-bar__scale-control"},g9s=["disabled"],m9s={class:"tools-bar__scale-slider"},k9s=["min","max"],v9s={class:"tools-bar__scale-value"},A9s=["disabled"],p9s=Je({__name:"index",props:{operationButtons:{default:()=>["reset","undo","redo","split","delete"]},scaleConfigButtons:{default:()=>["snap"]},locale:{default:()=>({})}},emits:["operation","playback:play","playback:pause"],setup(e,{emit:t}){const n=e,r=t,o=ML(),s=EA(),a=TE(),l=G0(),d=bt("config",{}),u=X(()=>o.isPlaying),h=X(()=>o.formattedCurrentTime),g=X(()=>o.formattedDuration),m=X(()=>s.snapEnabled),v=X(()=>s.minScale),f=X(()=>s.maxScale),k=fe(o.playbackRate),A=X(()=>d.playbackRates||[.5,1,2,4]),p=fe(s.scale),b=X(()=>{var H;return((H=n.locale)==null?void 0:H.snapOn)||"关闭自动吸附"}),w=X(()=>{var H;return((H=n.locale)==null?void 0:H.snapOff)||"开启自动吸附"});function O(H){return typeof H=="object"&&"type"in H&&H.type==="custom"}function y(H){return typeof H=="object"&&!("type"in H)&&"key"in H}function C(H){return typeof H=="object"&&!("type"in H)&&"key"in H}function _(H){return typeof H=="object"||typeof H=="function"}function S(H){const $=H.disabled;return typeof $=="function"?$():$??!1}function L(H){const $=H.active;return typeof $=="function"?$():$??!1}function E(H){H.onClick?H.onClick():H.key&&r("operation",H.key)}function T(H){H.onClick&&H.onClick()}function D(H){return{reset:"↺",undo:"↶",redo:"↷",split:"✂",delete:"🗑"}[H]||""}function P(H){const $=n.locale||{},G={reset:"重置",undo:"撤销",redo:"重做",split:"分割",delete:"删除"};return $[H]||G[H]||H}function Q(H){switch(H){case"undo":return!a.canUndo;case"redo":return!a.canRedo;case"split":return l.selectedClipIds.size===0;default:return!1}}function M(H){r("operation",H)}function B(){o.isPlaying?(o.pause(),r("playback:pause")):(o.play(),r("playback:play"))}function R(){o.setPlaybackRate(k.value)}function I(){s.toggleSnap()}function F(){s.zoomIn(.1),p.value=s.scale}function j(){s.zoomOut(.1),p.value=s.scale}function W(){s.setScale(p.value)}return(H,$)=>(xe(),Ge("div",Z5s,[ge("div",q5s,[Zr(H.$slots,"operations-prepend",{},void 0,!0),(xe(!0),Ge(sn,null,Bi(e.operationButtons,(G,q)=>(xe(),Ge(sn,{key:q},[typeof G=="string"?(xe(),Ge("button",{key:0,class:Eo(["tools-bar__btn",{"tools-bar__btn--disabled":Q(G)}]),disabled:Q(G),onClick:re=>M(G)},[ge("span",J5s,Pe(D(G)),1),ge("span",e9s,Pe(P(G)),1)],10,K5s)):O(G)?Zr(H.$slots,`custom-operation-${G.key}`,{key:1},void 0,!0):y(G)?(xe(),Ge("button",{key:2,class:Eo(["tools-bar__btn",[{"tools-bar__btn--disabled":S(G)},G.className]]),disabled:S(G),title:G.title,onClick:re=>E(G)},[ge("span",n9s,[_(G.icon)?(xe(),Ut(Bd(G.icon),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(G.icon||""),1)],64))]),ge("span",i9s,Pe(G.label||""),1)],10,t9s)):nn("",!0)],64))),128)),Zr(H.$slots,"operations-append",{},void 0,!0)]),ge("div",r9s,[Zr(H.$slots,"playback-prepend",{},void 0,!0),ge("button",{class:"tools-bar__btn tools-bar__btn--play",onClick:B},[ge("span",{class:"tools-bar__icon",style:no({marginLeft:u.value?"0":"2px"})},Pe(u.value?"⏸":"▶"),5)]),ge("div",o9s,[ge("span",s9s,Pe(h.value),1),$[2]||($[2]=ge("span",{class:"tools-bar__time-separator"},"/",-1)),ge("span",a9s,Pe(g.value),1)]),uu(ge("select",{"onUpdate:modelValue":$[0]||($[0]=G=>k.value=G),class:"tools-bar__select",onChange:R},[(xe(!0),Ge(sn,null,Bi(A.value,G=>(xe(),Ge("option",{key:G,value:G},Pe(G)+"x ",9,l9s))),128))],544),[[Soi,k.value]]),Zr(H.$slots,"playback-append",{},void 0,!0)]),ge("div",c9s,[Zr(H.$slots,"scale-prepend",{},void 0,!0),ge("div",d9s,[(xe(!0),Ge(sn,null,Bi(e.scaleConfigButtons,(G,q)=>(xe(),Ge(sn,{key:q},[typeof G=="string"&&G==="snap"?(xe(),Ge("button",{key:0,class:Eo(["tools-bar__btn tools-bar__btn--toggle tools-bar__btn--snap",{"tools-bar__btn--active":m.value}]),title:m.value?b.value:w.value,onClick:I},[c(Y5s,{class:"tools-bar__snap-icon"})],10,u9s)):O(G)?Zr(H.$slots,`custom-scale-config-${G.key}`,{key:1},void 0,!0):C(G)?(xe(),Ge("button",{key:2,class:Eo(["tools-bar__btn tools-bar__btn--toggle",[{"tools-bar__btn--active":L(G)},{"tools-bar__btn--disabled":S(G)},G.className]]),title:G.title,disabled:S(G),onClick:re=>T(G)},[_(G.icon)?(xe(),Ut(Bd(G.icon),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(G.icon||""),1)],64))],10,h9s)):nn("",!0)],64))),128))]),ge("div",f9s,[ge("button",{class:"tools-bar__btn tools-bar__btn--icon",disabled:p.value<=v.value,onClick:j}," − ",8,g9s),ge("div",m9s,[uu(ge("input",{type:"range",min:v.value,max:f.value,step:.1,"onUpdate:modelValue":$[1]||($[1]=G=>p.value=G),onInput:W},null,40,k9s),[[d4n,p.value,void 0,{number:!0}]]),ge("span",v9s,Pe(p.value.toFixed(1))+"x",1)]),ge("button",{class:"tools-bar__btn tools-bar__btn--icon",disabled:p.value>=f.value,onClick:F}," + ",8,A9s)]),Zr(H.$slots,"scale-append",{},void 0,!0)])]))}}),b9s=Lm(p9s,[["__scopeId","data-v-c36de3a3"]]),w9s={key:0,class:"ruler__mark-label"},O9s=Je({__name:"index",props:{width:{default:0},scrollLeft:{default:0},trackControlWidth:{default:200}},emits:["scroll","seek"],setup(e,{expose:t,emit:n}){const r=e,o=n,s=ML(),a=EA(),l=G0(),d=MH(),u=fe(),h=fe(),g=fe(!1),m=fe(0);let v=null;t({isDraggingCursor:g});const f=X(()=>a.rulerConfig),k=X(()=>a.actualPixelsPerSecond),A=X(()=>{const T=Math.max(l.totalDuration,s.duration,d.previewEndTime,60);return Math.ceil(T*k.value)}),p=X(()=>{const T=[],D=f.value,P=A.value/k.value,Q=D.minorInterval,M=D.majorInterval,B=Math.ceil(P/Q)+1;for(let R=0;RP)break;const F=Math.abs(Math.round(I/M)*M-I)<.001;T.push({time:I,position:I*k.value,isMajor:F,height:F?D.majorHeight:D.minorHeight})}return T}),b=X(()=>s.currentTime*k.value),w=X(()=>r.trackControlWidth+b.value-(r.scrollLeft||0)),O=X(()=>w.value>=r.trackControlWidth);function y(T){const D=Math.floor(T/60),P=Math.floor(T%60);return`${String(D).padStart(2,"0")}:${String(P).padStart(2,"0")}`}function C(T){var D;if(g.value)return;const P=(D=u.value)==null?void 0:D.getBoundingClientRect();if(!P)return;const Q=(T.clientX-P.left-r.trackControlWidth+(r.scrollLeft||0))/k.value,M=Math.max(0,Q);s.seekTo(M),o("seek",M)}function _(){g.value=!0,s.pause(),document.body.style.userSelect="none";let T=null,D=0,P=0;const Q=()=>{g.value&&(P!==0&&h.value&&(h.value.scrollLeft+=P,o("scroll",h.value.scrollLeft),M()),T=requestAnimationFrame(Q))},M=()=>{var I;const F=(I=u.value)==null?void 0:I.getBoundingClientRect();if(!F||!h.value)return;let j=(D-F.left-r.trackControlWidth+h.value.scrollLeft)/k.value;j=Math.max(0,j),s.seekTo(j)},B=I=>{var F;D=I.clientX;const j=(F=h.value)==null?void 0:F.getBoundingClientRect();if(j)if(I.clientXj.right-50){const W=1-(j.right-I.clientX)/50;P=15*Math.max(0,W)}else P=0;P===0&&M()},R=()=>{g.value=!1,document.body.style.userSelect="",T&&(cancelAnimationFrame(T),T=null),document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",R),o("seek",s.currentTime)};document.addEventListener("mousemove",B),document.addEventListener("mouseup",R),T=requestAnimationFrame(Q)}function S(){h.value&&o("scroll",h.value.scrollLeft)}function L(){return u.value?u.value.closest(".video-track"):null}function E(){if(!u.value)return;const T=u.value.getBoundingClientRect(),D=L(),P=D?D.getBoundingClientRect().bottom:window.innerHeight,Q=T.top-5;m.value=Math.max(P-Q,0)}return An(()=>{ai(()=>{E(),v=new ResizeObserver(()=>{E()}),u.value&&v.observe(u.value);const T=L();T&&v.observe(T)}),window.addEventListener("resize",E)}),Qa(()=>{window.removeEventListener("resize",E),v&&(v.disconnect(),v=null)}),pt(()=>r.scrollLeft,T=>{h.value&&h.value.scrollLeft!==T&&(h.value.scrollLeft=T)}),pt(b,T=>{if(g.value||!h.value)return;const D=h.value.clientWidth,P=h.value.scrollLeft;TP+D&&(h.value.scrollLeft=T-D+50)}),(T,D)=>(xe(),Ge("div",{class:"ruler",ref_key:"rulerRef",ref:u},[ge("div",{class:"ruler__placeholder",style:no({width:e.trackControlWidth+"px"})},null,4),ge("div",{class:"ruler__wrapper",ref_key:"rulerWrapperRef",ref:h,onScroll:S},[ge("div",{class:"ruler__content",style:no({width:A.value+"px"}),onMousedown:C},[(xe(!0),Ge(sn,null,Bi(p.value,P=>(xe(),Ge("div",{key:P.time,class:Eo(["ruler__mark",{"ruler__mark--major":P.isMajor}]),style:no({left:P.position+"px",height:P.height+"px"})},[P.isMajor?(xe(),Ge("span",w9s,Pe(y(P.time)),1)):nn("",!0)],6))),128))],36)],544),O.value?(xe(),Ge("div",{key:0,class:Eo(["ruler__cursor-handle",{"ruler__cursor-handle--dragging":g.value}]),style:no({left:w.value+"px"}),onMousedown:Mr(_,["stop"])},[ge("div",{class:"ruler__cursor-line",style:no({height:`${m.value}px`}),onMousedown:Mr(_,["stop"])},null,36)],38)):nn("",!0)],512))}}),y9s=Lm(O9s,[["__scopeId","data-v-f5735210"]]),C9s={class:"track-control"},_9s={class:"track-control__name"},S9s={key:2,class:"track-control__badge"},L9s={class:"track-control__actions"},x9s=["title"],E9s=["title"],T9s=["title"],Q9s=Je({__name:"TrackControl",props:{track:{},locale:{}},emits:["update","delete"],setup(e,{emit:t}){const n=e,r=t,o=fe(!1),s=fe(""),a=fe();function l(){o.value=!0,s.value=n.track.name,ai(()=>{var v,f;(v=a.value)==null||v.focus(),(f=a.value)==null||f.select()})}function d(){s.value.trim()&&s.value!==n.track.name&&r("update",n.track.id,{name:s.value.trim()}),o.value=!1}function u(){o.value=!1,s.value=""}function h(){r("update",n.track.id,{visible:!n.track.visible})}function g(){r("update",n.track.id,{locked:!n.track.locked})}function m(){var v;const f=(((v=n.locale)==null?void 0:v.confirmDeleteTrack)||'确定要删除轨道"{name}"吗?').replace("{name}",n.track.name);confirm(f)&&r("delete",n.track.id)}return(v,f)=>{var k,A,p,b,w,O;return xe(),Ge("div",C9s,[ge("div",_9s,[o.value?uu((xe(),Ge("input",{key:0,"onUpdate:modelValue":f[0]||(f[0]=y=>s.value=y),class:"track-control__name-input",onBlur:d,onKeyup:[hct(d,["enter"]),hct(u,["esc"])],ref_key:"nameInputRef",ref:a},null,544)),[[d4n,s.value]]):(xe(),Ge("span",{key:1,class:"track-control__name-text",onDblclick:l},Pe(e.track.name),33)),e.track.isMain?(xe(),Ge("span",S9s,Pe(((k=e.locale)==null?void 0:k.mainBadge)||"主"),1)):nn("",!0)]),ge("div",L9s,[ge("button",{class:Eo(["track-control__btn",{"track-control__btn--active":e.track.visible}]),onClick:h,title:e.track.visible?((A=e.locale)==null?void 0:A.hide)||"隐藏":((p=e.locale)==null?void 0:p.show)||"显示"},Pe(e.track.visible?"👁":"👁‍🗨"),11,x9s),ge("button",{class:Eo(["track-control__btn",{"track-control__btn--active":e.track.locked}]),onClick:g,title:e.track.locked?((b=e.locale)==null?void 0:b.unlock)||"解锁":((w=e.locale)==null?void 0:w.lock)||"锁定"},Pe(e.track.locked?"🔒":"🔓"),11,E9s),e.track.isMain?nn("",!0):(xe(),Ge("button",{key:0,class:"track-control__btn track-control__btn--danger",onClick:m,title:((O=e.locale)==null?void 0:O.delete)||"删除"}," 🗑 ",8,T9s))])])}}}),D9s=Lm(Q9s,[["__scopeId","data-v-34ea43ab"]]);function B9s(){const e=G0(),t=EA(),n=TE(),r=fe(!1),o=fe(null),s=fe("left"),a=fe(0),l=fe(0),d=fe(0),u=fe(0),h=fe(0);let g=document;const m=fe([]),v=fe([]);function f(R,I,F){var j;if(R.type==="transition"){y(R,I,F);return}if(g=((j=F.target)==null?void 0:j.ownerDocument)||document,r.value=!0,o.value=R,s.value=I,a.value=F.clientX,l.value=R.startTime,d.value=R.endTime,R.type==="video"||R.type==="audio"){const W=R;u.value=W.trimStart,h.value=W.trimEnd}k(R,I),g.addEventListener("mousemove",E),g.addEventListener("mouseup",M)}function k(R,I){m.value=[],v.value=[];const F=e.tracks.find(j=>j.id===R.trackId);if(F)if(I==="right"){const j=new Set([R.id]);A(F.clips,R.endTime,j)}else{const j=new Set([R.id]);p(F.clips,R.startTime,j)}}function A(R,I,F){const j=R.find(H=>{if(H.type!=="transition")return!1;const $=H,G=($.startTime+$.endTime)/2;return Math.abs(G-I)<$.transitionDuration&&$.startTime>=I-$.transitionDuration});if(!j)return;m.value.push({id:j.id,type:"transition",originalStartTime:j.startTime,originalEndTime:j.endTime,duration:j.transitionDuration});const W=R.find(H=>H.type!=="transition"&&!F.has(H.id)&&Math.abs(H.startTime-I){if(H.type!=="transition")return!1;const $=H,G=($.startTime+$.endTime)/2;return Math.abs(G-I)<$.transitionDuration&&$.endTime<=I+$.transitionDuration});if(!j)return;v.value.push({id:j.id,type:"transition",originalStartTime:j.startTime,originalEndTime:j.endTime,duration:j.transitionDuration});const W=R.find(H=>H.type!=="transition"&&!F.has(H.id)&&Math.abs(H.endTime-I)$.id===R.trackId);if(!F)return;const j=(R.startTime+R.endTime)/2,W=F.clips.find($=>$.type!=="transition"&&Math.abs($.endTime-j)<.5),H=F.clips.find($=>$.type!=="transition"&&$!==W&&Math.abs($.startTime-j)<.5);if(W&&H){const $=Ar(j-I/2),G=Ar(j+I/2),q=Ar(j),re=Ar(I);e.updateClip(R.id,{startTime:$,endTime:G,transitionDuration:re}),e.updateClip(W.id,{endTime:q}),e.updateClip(H.id,{startTime:q})}}const L=fe({shift:!1});function E(R){if(!r.value||!o.value)return;L.value.shift=R.shiftKey;const I=R.clientX-a.value,F=t.pixelsToTime(I);s.value==="left"?T(F):P(F)}function T(R){if(!o.value)return;let I=Ar(l.value+R);const F=.1,j=d.value-F;if(I=Math.max(0,Math.min(I,j)),!(v.value.length>0&&v.value[0].type==="transition")){const H=e.tracks.find($=>$.id===o.value.trackId);if(H){const $=H.clips.filter(G=>G.type!=="transition"&&G.id!==o.value.id).find(G=>G.endTime<=l.value+.01&&G.endTime>I);$&&(I=Math.max(I,$.endTime))}}let W=0;if(o.value.type==="video"||o.value.type==="audio"){o.value;const H=I-l.value;W=Ar(u.value+H),W<0&&(I=Ar(l.value-u.value),W=0);const $=h.value;W>$-F&&(W=$-F,I=Ar(l.value+(W-u.value)))}if(t.snapEnabled){const H=B(I);if(H!==I&&(o.value.type==="video"||o.value.type==="audio")){const $=H-I;W=Ar(W+$),W<0&&(W=0)}I=H}o.value.type==="video"||o.value.type==="audio"?e.updateClip(o.value.id,{startTime:I,trimStart:Math.max(0,W)}):e.updateClip(o.value.id,{startTime:I}),D(I)}function D(R){if(v.value.length===0)return;const I=d.value-R;let F=R;for(let j=0;j0&&m.value[0].type==="transition")){const H=e.tracks.find($=>$.id===o.value.trackId);if(H){const $=H.clips.filter(G=>G.type!=="transition"&&G.id!==o.value.id).find(G=>G.startTime>=d.value-.01&&G.startTimeH.originalDuration&&(W=H.originalDuration,I=Ar(d.value+(W-h.value)));const G=u.value;W$.originalDuration&&(W=$.originalDuration)}I=H}if(o.value.type==="video"||o.value.type==="audio"){const H=o.value;e.updateClip(o.value.id,{endTime:I,trimEnd:Math.min(W,H.originalDuration)})}else e.updateClip(o.value.id,{endTime:I});Q(I)}function Q(R){if(m.value.length===0)return;const I=R-l.value;let F=R,j=I;for(let W=0;WG.id===o.value.trackId);if(!I)return R;const F=new Set;m.value.forEach(G=>F.add(G.id)),v.value.forEach(G=>F.add(G.id));const j=[],W=new Set(e.selectedClipIds);if(I.clips.forEach(G=>{G.id!==o.value.id&&!W.has(G.id)&&!F.has(G.id)&&G.type!=="transition"&&(j.push(G.startTime),j.push(G.endTime))}),j.length===0)return R;const H=t.timeToPixels(R),$=t.snapToPosition(H,j.map(G=>t.timeToPixels(G)));return Ar(t.pixelsToTime($))}return{isResizing:r,resizingClip:o,resizingEdge:s,startResize:f,handleResizeMove:E,handleResizeEnd:M}}function R9s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var yqn={};(function(e){var t=function(){var f=new Date,k=4,A=3,p=2,b=1,w=k,O={setLogLevel:function(y){y==this.debug?w=b:y==this.info?w=p:y==this.warn?w=A:(y==this.error,w=k)},debug:function(y,C){console.debug===void 0&&(console.debug=console.log),b>=w&&console.debug("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},log:function(y,C){this.debug(y.msg)},info:function(y,C){p>=w&&console.info("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},warn:function(y,C){A>=w&&console.warn("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},error:function(y,C){k>=w&&console.error("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)}};return O}();t.getDurationString=function(f,k){var A;function p(_,S){for(var L=""+_,E=L.split(".");E[0].length0){for(var A="",p=0;p0&&(A+=","),A+="["+t.getDurationString(f.start(p))+","+t.getDurationString(f.end(p))+"]";return A}else return"(empty)"},e.Log=t;var n=function(f){if(f instanceof ArrayBuffer)this.buffer=f,this.dataview=new DataView(f);else throw"Needs an array buffer";this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(f){var k=Math.max(0,Math.min(this.buffer.byteLength,f));return this.position=isNaN(k)||!isFinite(k)?0:k,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(f,k){var A=0;if(this.position+f<=this.buffer.byteLength){switch(f){case 1:k?A=this.dataview.getInt8(this.position):A=this.dataview.getUint8(this.position);break;case 2:k?A=this.dataview.getInt16(this.position):A=this.dataview.getUint16(this.position);break;case 3:if(k)throw"No method for reading signed 24 bits values";A=this.dataview.getUint8(this.position)<<16,A|=this.dataview.getUint8(this.position+1)<<8,A|=this.dataview.getUint8(this.position+2);break;case 4:k?A=this.dataview.getInt32(this.position):A=this.dataview.getUint32(this.position);break;case 8:if(k)throw"No method for reading signed 64 bits values";A=this.dataview.getUint32(this.position)<<32,A|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+f}return this.position+=f,A}else throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(f){if(this.position+f<=this.buffer.byteLength){for(var k="",A=0;Athis._byteLength&&(this._byteLength=k);return}for(A<1&&(A=1);k>A;)A*=2;var p=new ArrayBuffer(A),b=new Uint8Array(this._buffer),w=new Uint8Array(p,0,b.length);w.set(b),this.buffer=p,this._byteLength=k}},r.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var f=new ArrayBuffer(this._byteLength),k=new Uint8Array(f),A=new Uint8Array(this._buffer,0,k.length);k.set(A),this.buffer=f}},r.BIG_ENDIAN=!1,r.LITTLE_ENDIAN=!0,r.prototype._byteLength=0,Object.defineProperty(r.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(r.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(f){this._buffer=f,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(r.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(f){this._byteOffset=f,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(r.prototype,"dataView",{get:function(){return this._dataView},set:function(f){this._byteOffset=f.byteOffset,this._buffer=f.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+f.byteLength}}),r.prototype.seek=function(f){var k=Math.max(0,Math.min(this.byteLength,f));this.position=isNaN(k)||!isFinite(k)?0:k},r.prototype.isEof=function(){return this.position>=this._byteLength},r.prototype.mapUint8Array=function(f){this._realloc(f*1);var k=new Uint8Array(this._buffer,this.byteOffset+this.position,f);return this.position+=f*1,k},r.prototype.readInt32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Int32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt16Array=function(f,k){f=f??this.byteLength-this.position/2;var A=new Int16Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt8Array=function(f){f=f??this.byteLength-this.position;var k=new Int8Array(f);return r.memcpy(k.buffer,0,this.buffer,this.byteOffset+this.position,f*k.BYTES_PER_ELEMENT),this.position+=k.byteLength,k},r.prototype.readUint32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Uint32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readUint16Array=function(f,k){f=f??this.byteLength-this.position/2;var A=new Uint16Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readUint8Array=function(f){f=f??this.byteLength-this.position;var k=new Uint8Array(f);return r.memcpy(k.buffer,0,this.buffer,this.byteOffset+this.position,f*k.BYTES_PER_ELEMENT),this.position+=k.byteLength,k},r.prototype.readFloat64Array=function(f,k){f=f??this.byteLength-this.position/8;var A=new Float64Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readFloat32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Float32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt32=function(f){var k=this._dataView.getInt32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readInt16=function(f){var k=this._dataView.getInt16(this.position,f??this.endianness);return this.position+=2,k},r.prototype.readInt8=function(){var f=this._dataView.getInt8(this.position);return this.position+=1,f},r.prototype.readUint32=function(f){var k=this._dataView.getUint32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readUint16=function(f){var k=this._dataView.getUint16(this.position,f??this.endianness);return this.position+=2,k},r.prototype.readUint8=function(){var f=this._dataView.getUint8(this.position);return this.position+=1,f},r.prototype.readFloat32=function(f){var k=this._dataView.getFloat32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readFloat64=function(f){var k=this._dataView.getFloat64(this.position,f??this.endianness);return this.position+=8,k},r.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,r.memcpy=function(f,k,A,p,b){var w=new Uint8Array(f,k,b),O=new Uint8Array(A,p,b);w.set(O)},r.arrayToNative=function(f,k){return k==this.endianness?f:this.flipArrayEndianness(f)},r.nativeToEndian=function(f,k){return this.endianness==k?f:this.flipArrayEndianness(f)},r.flipArrayEndianness=function(f){for(var k=new Uint8Array(f.buffer,f.byteOffset,f.byteLength),A=0;Ab;p--,b++){var w=k[b];k[b]=k[p],k[p]=w}return f},r.prototype.failurePosition=0,String.fromCharCodeUint8=function(f){for(var k=[],A=0;A>16),this.writeUint8((f&65280)>>8),this.writeUint8(f&255)},r.prototype.adjustUint32=function(f,k){var A=this.position;this.seek(f),this.writeUint32(k),this.seek(A)},r.prototype.mapInt32Array=function(f,k){this._realloc(f*4);var A=new Int32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A},r.prototype.mapInt16Array=function(f,k){this._realloc(f*2);var A=new Int16Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*2,A},r.prototype.mapInt8Array=function(f){this._realloc(f*1);var k=new Int8Array(this._buffer,this.byteOffset+this.position,f);return this.position+=f*1,k},r.prototype.mapUint32Array=function(f,k){this._realloc(f*4);var A=new Uint32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A},r.prototype.mapUint16Array=function(f,k){this._realloc(f*2);var A=new Uint16Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*2,A},r.prototype.mapFloat64Array=function(f,k){this._realloc(f*8);var A=new Float64Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*8,A},r.prototype.mapFloat32Array=function(f,k){this._realloc(f*4);var A=new Float32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A};var s=function(f){this.buffers=[],this.bufferIndex=-1,f&&(this.insertBuffer(f),this.bufferIndex=0)};s.prototype=new r(new ArrayBuffer,0,r.BIG_ENDIAN),s.prototype.initialized=function(){var f;return this.bufferIndex>-1?!0:this.buffers.length>0?(f=this.buffers[0],f.fileStart===0?(this.buffer=f,this.bufferIndex=0,t.debug("MultiBufferStream","Stream ready for parsing"),!0):(t.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)):(t.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1)},ArrayBuffer.concat=function(f,k){t.debug("ArrayBuffer","Trying to create a new buffer of size: "+(f.byteLength+k.byteLength));var A=new Uint8Array(f.byteLength+k.byteLength);return A.set(new Uint8Array(f),0),A.set(new Uint8Array(k),f.byteLength),A.buffer},s.prototype.reduceBuffer=function(f,k,A){var p;return p=new Uint8Array(A),p.set(new Uint8Array(f,k,A)),p.buffer.fileStart=f.fileStart+k,p.buffer.usedBytes=0,p.buffer},s.prototype.insertBuffer=function(f){for(var k=!0,A=0;Ap.byteLength){this.buffers.splice(A,1),A--;continue}else t.warn("MultiBufferStream","Buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+") already appended, ignoring");else f.fileStart+f.byteLength<=p.fileStart||(f=this.reduceBuffer(f,0,p.fileStart-f.fileStart)),t.debug("MultiBufferStream","Appending new buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+")"),this.buffers.splice(A,0,f),A===0&&(this.buffer=f);k=!1;break}else if(f.fileStart0)f=this.reduceBuffer(f,b,w);else{k=!1;break}}}k&&(t.debug("MultiBufferStream","Appending new buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+")"),this.buffers.push(f),A===0&&(this.buffer=f))},s.prototype.logBufferLevel=function(f){var k,A,p,b,w=[],O,y="";for(p=0,b=0,k=0;k0&&(y+=O.end-1+"]");var C=f?t.info:t.debug;this.buffers.length===0?C("MultiBufferStream","No more buffer in memory"):C("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+p+"/"+b+" bytes), continuous ranges: "+y)},s.prototype.cleanBuffers=function(){var f,k;for(f=0;f"+this.buffer.byteLength+")"),!0}else return!1;else return!1},s.prototype.findPosition=function(f,k,A){var p,b=null,w=-1;for(f===!0?p=0:p=this.bufferIndex;p=k?(t.debug("MultiBufferStream","Found position in existing buffer #"+w),w):-1):-1},s.prototype.findEndContiguousBuf=function(f){var k,A,p,b=f!==void 0?f:this.bufferIndex;if(A=this.buffers[b],this.buffers.length>b+1)for(k=b+1;k>3;return S===31&&_.data.length>=2&&(S=32+((_.data[0]&7)<<3)+((_.data[1]&224)>>5)),S}else return null},O.DecoderConfigDescriptor=function(y){O.Descriptor.call(this,k,y)},O.DecoderConfigDescriptor.prototype=new O.Descriptor,O.DecoderConfigDescriptor.prototype.parse=function(y){this.oti=y.readUint8(),this.streamType=y.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=y.readUint24(),this.maxBitrate=y.readUint32(),this.avgBitrate=y.readUint32(),this.size-=13,this.parseRemainingDescriptors(y)},O.DecoderSpecificInfo=function(y){O.Descriptor.call(this,A,y)},O.DecoderSpecificInfo.prototype=new O.Descriptor,O.SLConfigDescriptor=function(y){O.Descriptor.call(this,p,y)},O.SLConfigDescriptor.prototype=new O.Descriptor,this};e.MPEG4DescriptorParser=a;var l={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){l.FullBox.prototype=new l.Box,l.ContainerBox.prototype=new l.Box,l.SampleEntry.prototype=new l.Box,l.TrackGroupTypeBox.prototype=new l.FullBox,l.BASIC_BOXES.forEach(function(f){l.createBoxCtor(f)}),l.FULL_BOXES.forEach(function(f){l.createFullBoxCtor(f)}),l.CONTAINER_BOXES.forEach(function(f){l.createContainerBoxCtor(f[0],null,f[1])})},Box:function(f,k,A){this.type=f,this.size=k,this.uuid=A},FullBox:function(f,k,A){l.Box.call(this,f,k,A),this.flags=0,this.version=0},ContainerBox:function(f,k,A){l.Box.call(this,f,k,A),this.boxes=[]},SampleEntry:function(f,k,A,p){l.ContainerBox.call(this,f,k),this.hdr_size=A,this.start=p},SampleGroupEntry:function(f){this.grouping_type=f},TrackGroupTypeBox:function(f,k){l.FullBox.call(this,f,k)},createBoxCtor:function(f,k){l.boxCodes.push(f),l[f+"Box"]=function(A){l.Box.call(this,f,A)},l[f+"Box"].prototype=new l.Box,k&&(l[f+"Box"].prototype.parse=k)},createFullBoxCtor:function(f,k){l[f+"Box"]=function(A){l.FullBox.call(this,f,A)},l[f+"Box"].prototype=new l.FullBox,l[f+"Box"].prototype.parse=function(A){this.parseFullHeader(A),k&&k.call(this,A)}},addSubBoxArrays:function(f){if(f){this.subBoxNames=f;for(var k=f.length,A=0;AA?(t.error("BoxParser","Box of type '"+_+"' has a size "+C+" greater than its container size "+A),{code:l.ERR_NOT_ENOUGH_DATA,type:_,size:C,hdr_size:w,start:b}):C!==0&&b+C>f.getEndPosition()?(f.seek(b),t.info("BoxParser","Not enough data in stream to parse the entire '"+_+"' box"),{code:l.ERR_NOT_ENOUGH_DATA,type:_,size:C,hdr_size:w,start:b}):k?{code:l.OK,type:_,size:C,hdr_size:w,start:b}:(l[_+"Box"]?p=new l[_+"Box"](C):_!=="uuid"?(t.warn("BoxParser","Unknown box type: '"+_+"'"),p=new l.Box(_,C),p.has_unparsed_data=!0):l.UUIDBoxes[y]?p=new l.UUIDBoxes[y](C):(t.warn("BoxParser","Unknown uuid type: '"+y+"'"),p=new l.Box(_,C),p.uuid=y,p.has_unparsed_data=!0),p.hdr_size=w,p.start=b,p.write===l.Box.prototype.write&&p.type!=="mdat"&&(t.info("BoxParser","'"+S+"' box writing not yet implemented, keeping unparsed data in memory for later write"),p.parseDataAndRewind(f)),p.parse(f),O=f.getPosition()-(p.start+p.size),O<0?(t.warn("BoxParser","Parsing of box '"+S+"' did not read the entire indicated box data size (missing "+-O+" bytes), seeking forward"),f.seek(p.start+p.size)):O>0&&(t.error("BoxParser","Parsing of box '"+S+"' read "+O+" more bytes than the indicated box data size, seeking backwards"),p.size!==0&&f.seek(p.start+p.size)),{code:l.OK,box:p,size:p.size})},l.Box.prototype.parse=function(f){this.type!="mdat"?this.data=f.readUint8Array(this.size-this.hdr_size):this.size===0?f.seek(f.getEndPosition()):f.seek(this.start+this.size)},l.Box.prototype.parseDataAndRewind=function(f){this.data=f.readUint8Array(this.size-this.hdr_size),f.position-=this.size-this.hdr_size},l.FullBox.prototype.parseDataAndRewind=function(f){this.parseFullHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,f.position-=this.size-this.hdr_size},l.FullBox.prototype.parseFullHeader=function(f){this.version=f.readUint8(),this.flags=f.readUint24(),this.hdr_size+=4},l.FullBox.prototype.parse=function(f){this.parseFullHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size)},l.ContainerBox.prototype.parse=function(f){for(var k,A;f.getPosition()>10&31,k[1]=this.language>>5&31,k[2]=this.language&31,this.languageString=String.fromCharCode(k[0]+96,k[1]+96,k[2]+96)},l.SAMPLE_ENTRY_TYPE_VISUAL="Visual",l.SAMPLE_ENTRY_TYPE_AUDIO="Audio",l.SAMPLE_ENTRY_TYPE_HINT="Hint",l.SAMPLE_ENTRY_TYPE_METADATA="Metadata",l.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",l.SAMPLE_ENTRY_TYPE_SYSTEM="System",l.SAMPLE_ENTRY_TYPE_TEXT="Text",l.SampleEntry.prototype.parseHeader=function(f){f.readUint8Array(6),this.data_reference_index=f.readUint16(),this.hdr_size+=8},l.SampleEntry.prototype.parse=function(f){this.parseHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size)},l.SampleEntry.prototype.parseDataAndRewind=function(f){this.parseHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,f.position-=this.size-this.hdr_size},l.SampleEntry.prototype.parseFooter=function(f){l.ContainerBox.prototype.parse.call(this,f)},l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_HINT),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_METADATA),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SUBTITLE),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SYSTEM),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_TEXT),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,function(f){var k;this.parseHeader(f),f.readUint16(),f.readUint16(),f.readUint32Array(3),this.width=f.readUint16(),this.height=f.readUint16(),this.horizresolution=f.readUint32(),this.vertresolution=f.readUint32(),f.readUint32(),this.frame_count=f.readUint16(),k=Math.min(31,f.readUint8()),this.compressorname=f.readString(k),k<31&&f.readString(31-k),this.depth=f.readUint16(),f.readUint16(),this.parseFooter(f)}),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,function(f){this.parseHeader(f),f.readUint32Array(2),this.channel_count=f.readUint16(),this.samplesize=f.readUint16(),f.readUint16(),f.readUint16(),this.samplerate=f.readUint32()/65536,this.parseFooter(f)}),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"fLaC"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_TEXT,"enct"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_METADATA,"encm"),l.createBoxCtor("a1lx",function(f){var k=f.readUint8()&1,A=((k&1)+1)*16;this.layer_size=[];for(var p=0;p<3;p++)A==16?this.layer_size[p]=f.readUint16():this.layer_size[p]=f.readUint32()}),l.createBoxCtor("a1op",function(f){this.op_index=f.readUint8()}),l.createFullBoxCtor("auxC",function(f){this.aux_type=f.readCString();var k=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=f.readUint8Array(k)}),l.createBoxCtor("av1C",function(f){var k=f.readUint8();if(k>>7&!1){t.error("av1C marker problem");return}if(this.version=k&127,this.version!==1){t.error("av1C version "+this.version+" not supported");return}if(k=f.readUint8(),this.seq_profile=k>>5&7,this.seq_level_idx_0=k&31,k=f.readUint8(),this.seq_tier_0=k>>7&1,this.high_bitdepth=k>>6&1,this.twelve_bit=k>>5&1,this.monochrome=k>>4&1,this.chroma_subsampling_x=k>>3&1,this.chroma_subsampling_y=k>>2&1,this.chroma_sample_position=k&3,k=f.readUint8(),this.reserved_1=k>>5&7,this.reserved_1!==0){t.error("av1C reserved_1 parsing problem");return}if(this.initial_presentation_delay_present=k>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=k&15;else if(this.reserved_2=k&15,this.reserved_2!==0){t.error("av1C reserved_2 parsing problem");return}var A=this.size-this.hdr_size-4;this.configOBUs=f.readUint8Array(A)}),l.createBoxCtor("avcC",function(f){var k,A;for(this.configurationVersion=f.readUint8(),this.AVCProfileIndication=f.readUint8(),this.profile_compatibility=f.readUint8(),this.AVCLevelIndication=f.readUint8(),this.lengthSizeMinusOne=f.readUint8()&3,this.nb_SPS_nalus=f.readUint8()&31,A=this.size-this.hdr_size-6,this.SPS=[],k=0;k0&&(this.ext=f.readUint8Array(A))}),l.createBoxCtor("btrt",function(f){this.bufferSizeDB=f.readUint32(),this.maxBitrate=f.readUint32(),this.avgBitrate=f.readUint32()}),l.createFullBoxCtor("ccst",function(f){var k=f.readUint8();this.all_ref_pics_intra=(k&128)==128,this.intra_pred_used=(k&64)==64,this.max_ref_per_pic=(k&63)>>2,f.readUint24()}),l.createBoxCtor("cdef",function(f){var k;for(this.channel_count=f.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],k=0;k=32768&&this.component_type_urls.push(f.readCString())}}),l.createFullBoxCtor("co64",function(f){var k,A;if(k=f.readUint32(),this.chunk_offsets=[],this.version===0)for(A=0;A>7}else this.colour_type==="rICC"?this.ICC_profile=f.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=f.readUint8Array(this.size-4))}),l.createFullBoxCtor("cprt",function(f){this.parseLanguage(f),this.notice=f.readCString()}),l.createFullBoxCtor("cslg",function(f){this.version===0&&(this.compositionToDTSShift=f.readInt32(),this.leastDecodeToDisplayDelta=f.readInt32(),this.greatestDecodeToDisplayDelta=f.readInt32(),this.compositionStartTime=f.readInt32(),this.compositionEndTime=f.readInt32())}),l.createFullBoxCtor("ctts",function(f){var k,A;if(k=f.readUint32(),this.sample_counts=[],this.sample_offsets=[],this.version===0)for(A=0;A>6,this.bsid=k>>1&31,this.bsmod=(k&1)<<2|A>>6&3,this.acmod=A>>3&7,this.lfeon=A>>2&1,this.bit_rate_code=A&3|p>>5&7}),l.createBoxCtor("dec3",function(f){var k=f.readUint16();this.data_rate=k>>3,this.num_ind_sub=k&7,this.ind_subs=[];for(var A=0;A>6,p.bsid=b>>1&31,p.bsmod=(b&1)<<4|w>>4&15,p.acmod=w>>1&7,p.lfeon=w&1,p.num_dep_sub=O>>1&15,p.num_dep_sub>0&&(p.chan_loc=(O&1)<<8|f.readUint8())}}),l.createFullBoxCtor("dfLa",function(f){var k=127,A=128,p=[],b=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];do{var w=f.readUint8(),O=Math.min(w&k,b.length-1);if(O?f.readUint8Array(f.readUint24()):(f.readUint8Array(13),this.samplerate=f.readUint32()>>12,f.readUint8Array(20)),p.push(b[O]),w&A)break}while(!0);this.numMetadataBlocks=p.length+" ("+p.join(", ")+")"}),l.createBoxCtor("dimm",function(f){this.bytessent=f.readUint64()}),l.createBoxCtor("dmax",function(f){this.time=f.readUint32()}),l.createBoxCtor("dmed",function(f){this.bytessent=f.readUint64()}),l.createBoxCtor("dOps",function(f){if(this.Version=f.readUint8(),this.OutputChannelCount=f.readUint8(),this.PreSkip=f.readUint16(),this.InputSampleRate=f.readUint32(),this.OutputGain=f.readInt16(),this.ChannelMappingFamily=f.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=f.readUint8(),this.CoupledCount=f.readUint8(),this.ChannelMapping=[];for(var k=0;k=4;)this.compatible_brands[A]=f.readString(4),k-=4,A++}),l.createFullBoxCtor("hdlr",function(f){this.version===0&&(f.readUint32(),this.handler=f.readString(4),f.readUint32Array(3),this.name=f.readString(this.size-this.hdr_size-20),this.name[this.name.length-1]==="\0"&&(this.name=this.name.slice(0,-1)))}),l.createBoxCtor("hvcC",function(f){var k,A,p,b;this.configurationVersion=f.readUint8(),b=f.readUint8(),this.general_profile_space=b>>6,this.general_tier_flag=(b&32)>>5,this.general_profile_idc=b&31,this.general_profile_compatibility=f.readUint32(),this.general_constraint_indicator=f.readUint8Array(6),this.general_level_idc=f.readUint8(),this.min_spatial_segmentation_idc=f.readUint16()&4095,this.parallelismType=f.readUint8()&3,this.chroma_format_idc=f.readUint8()&3,this.bit_depth_luma_minus8=f.readUint8()&7,this.bit_depth_chroma_minus8=f.readUint8()&7,this.avgFrameRate=f.readUint16(),b=f.readUint8(),this.constantFrameRate=b>>6,this.numTemporalLayers=(b&13)>>3,this.temporalIdNested=(b&4)>>2,this.lengthSizeMinusOne=b&3,this.nalu_arrays=[];var w=f.readUint8();for(k=0;k>7,O.nalu_type=b&63;var y=f.readUint16();for(A=0;A>4&15,this.length_size=k&15,k=f.readUint8(),this.base_offset_size=k>>4&15,this.version===1||this.version===2?this.index_size=k&15:this.index_size=0,this.items=[];var A=0;if(this.version<2)A=f.readUint16();else if(this.version===2)A=f.readUint32();else throw"version of iloc box not supported";for(var p=0;p>7,this.axis=k&1}),l.createFullBoxCtor("infe",function(f){if((this.version===0||this.version===1)&&(this.item_ID=f.readUint16(),this.item_protection_index=f.readUint16(),this.item_name=f.readCString(),this.content_type=f.readCString(),this.content_encoding=f.readCString()),this.version===1){this.extension_type=f.readString(4),t.warn("BoxParser","Cannot parse extension type"),f.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=f.readUint16():this.version===3&&(this.item_ID=f.readUint32()),this.item_protection_index=f.readUint16(),this.item_type=f.readString(4),this.item_name=f.readCString(),this.item_type==="mime"?(this.content_type=f.readCString(),this.content_encoding=f.readCString()):this.item_type==="uri "&&(this.item_uri_type=f.readCString()))}),l.createFullBoxCtor("ipma",function(f){var k,A;for(entry_count=f.readUint32(),this.associations=[],k=0;k>7===1,this.flags&1?O.property_index=(w&127)<<8|f.readUint8():O.property_index=w&127}}}),l.createFullBoxCtor("iref",function(f){var k,A;for(this.references=[];f.getPosition()>7,p.assignment_type=b&127,p.assignment_type){case 0:p.grouping_type=f.readString(4);break;case 1:p.grouping_type=f.readString(4),p.grouping_type_parameter=f.readUint32();break;case 2:break;case 3:break;case 4:p.sub_track_id=f.readUint32();break;default:t.warn("BoxParser","Unknown leva assignement type")}}}),l.createBoxCtor("lhvC",function(f){var k,A,p;this.configurationVersion=f.readUint8(),this.min_spatial_segmentation_idc=f.readUint16()&4095,this.parallelismType=f.readUint8()&3,p=f.readUint8(),this.numTemporalLayers=(p&13)>>3,this.temporalIdNested=(p&4)>>2,this.lengthSizeMinusOne=p&3,this.nalu_arrays=[];var b=f.readUint8();for(k=0;k>7,w.nalu_type=p&63;var O=f.readUint16();for(A=0;A>8,f.readUint16(),f.readUint32Array(2),this.matrix=f.readUint32Array(9),f.readUint32Array(6),this.next_track_id=f.readUint32()}),l.createBoxCtor("npck",function(f){this.packetssent=f.readUint32()}),l.createBoxCtor("nump",function(f){this.packetssent=f.readUint64()}),l.createFullBoxCtor("padb",function(f){var k=f.readUint32();this.padbits=[];for(var A=0;A0){var k=f.readUint32();this.kid=[];for(var A=0;A0&&(this.data=f.readUint8Array(p))}),l.createFullBoxCtor("clef",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createFullBoxCtor("enof",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createFullBoxCtor("prof",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),l.createBoxCtor("rtp ",function(f){this.descriptionformat=f.readString(4),this.sdptext=f.readString(this.size-this.hdr_size-4)}),l.createFullBoxCtor("saio",function(f){this.flags&1&&(this.aux_info_type=f.readUint32(),this.aux_info_type_parameter=f.readUint32());var k=f.readUint32();this.offset=[];for(var A=0;A>7,this.avgRateFlag=k>>6&1,this.durationFlag&&(this.duration=f.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=f.readUint8(),this.avgBitRate=f.readUint16(),this.avgFrameRate=f.readUint16()),this.dependency=[];for(var A=f.readUint8(),p=0;p>7,this.num_leading_samples=k&127}),l.createSampleGroupCtor("rash",function(f){if(this.operation_point_count=f.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)t.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=f.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=f.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var k=0;k>4,this.skip_byte_block=k&15,this.isProtected=f.readUint8(),this.Per_Sample_IV_Size=f.readUint8(),this.KID=l.parseHex16(f),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=f.readUint8(),this.constant_IV=f.readUint8Array(this.constant_IV_size))}),l.createSampleGroupCtor("stsa",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("sync",function(f){var k=f.readUint8();this.NAL_unit_type=k&63}),l.createSampleGroupCtor("tele",function(f){var k=f.readUint8();this.level_independently_decodable=k>>7}),l.createSampleGroupCtor("tsas",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("tscl",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("vipr",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createFullBoxCtor("sbgp",function(f){this.grouping_type=f.readString(4),this.version===1?this.grouping_type_parameter=f.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var k=f.readUint32(),A=0;A>6,this.sample_depends_on[p]=k>>4&3,this.sample_is_depended_on[p]=k>>2&3,this.sample_has_redundancy[p]=k&3}),l.createFullBoxCtor("senc"),l.createFullBoxCtor("sgpd",function(f){this.grouping_type=f.readString(4),t.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=f.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=f.readUint32()),this.entries=[];for(var k=f.readUint32(),A=0;A>31&1,p.referenced_size=b&2147483647,p.subsegment_duration=f.readUint32(),b=f.readUint32(),p.starts_with_SAP=b>>31&1,p.SAP_type=b>>28&7,p.SAP_delta_time=b&268435455}}),l.SingleItemTypeReferenceBox=function(f,k,A,p){l.Box.call(this,f,k),this.hdr_size=A,this.start=p},l.SingleItemTypeReferenceBox.prototype=new l.Box,l.SingleItemTypeReferenceBox.prototype.parse=function(f){this.from_item_ID=f.readUint16();var k=f.readUint16();this.references=[];for(var A=0;A>4&15,this.sample_sizes[k+1]=p&15}else if(this.field_size===8)for(k=0;k0)for(A=0;A>4&15,this.default_skip_byte_block=k&15}this.default_isProtected=f.readUint8(),this.default_Per_Sample_IV_Size=f.readUint8(),this.default_KID=l.parseHex16(f),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=f.readUint8(),this.default_constant_IV=f.readUint8Array(this.default_constant_IV_size))}),l.createFullBoxCtor("tfdt",function(f){this.version==1?this.baseMediaDecodeTime=f.readUint64():this.baseMediaDecodeTime=f.readUint32()}),l.createFullBoxCtor("tfhd",function(f){var k=0;this.track_id=f.readUint32(),this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=f.readUint64(),k+=8):this.base_data_offset=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=f.readUint32(),k+=4):this.default_sample_description_index=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=f.readUint32(),k+=4):this.default_sample_duration=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=f.readUint32(),k+=4):this.default_sample_size=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=f.readUint32(),k+=4):this.default_sample_flags=0}),l.createFullBoxCtor("tfra",function(f){this.track_ID=f.readUint32(),f.readUint24();var k=f.readUint8();this.length_size_of_traf_num=k>>4&3,this.length_size_of_trun_num=k>>2&3,this.length_size_of_sample_num=k&3,this.entries=[];for(var A=f.readUint32(),p=0;p>8,f.readUint16(),this.matrix=f.readInt32Array(9),this.width=f.readUint32(),this.height=f.readUint32()}),l.createBoxCtor("tmax",function(f){this.time=f.readUint32()}),l.createBoxCtor("tmin",function(f){this.time=f.readUint32()}),l.createBoxCtor("totl",function(f){this.bytessent=f.readUint32()}),l.createBoxCtor("tpay",function(f){this.bytessent=f.readUint32()}),l.createBoxCtor("tpyl",function(f){this.bytessent=f.readUint64()}),l.TrackGroupTypeBox.prototype.parse=function(f){this.parseFullHeader(f),this.track_group_id=f.readUint32()},l.createTrackGroupCtor("msrc"),l.TrackReferenceTypeBox=function(f,k,A,p){l.Box.call(this,f,k),this.hdr_size=A,this.start=p},l.TrackReferenceTypeBox.prototype=new l.Box,l.TrackReferenceTypeBox.prototype.parse=function(f){this.track_ids=f.readUint32Array((this.size-this.hdr_size)/4)},l.trefBox.prototype.parse=function(f){for(var k,A;f.getPosition()k&&this.flags&l.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=f.readInt32(),k+=4):this.data_offset=0,this.size-this.hdr_size>k&&this.flags&l.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=f.readUint32(),k+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>k)for(var A=0;A>7&1,this.block_pad_lsb=A>>6&1,this.block_little_endian=A>>5&1,this.block_reversed=A>>4&1,this.pad_unknown=A>>3&1,this.pixel_size=f.readUint32(),this.row_align_size=f.readUint32(),this.tile_align_size=f.readUint32(),this.num_tile_cols_minus_one=f.readUint32(),this.num_tile_rows_minus_one=f.readUint32()}}),l.createFullBoxCtor("url ",function(f){this.flags!==1&&(this.location=f.readCString())}),l.createFullBoxCtor("urn ",function(f){this.name=f.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=f.readCString())}),l.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,function(f){this.LiveServerManifest=f.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}),l.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,function(f){this.system_id=l.parseHex16(f);var k=f.readUint32();k>0&&(this.data=f.readUint8Array(k))}),l.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),l.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,function(f){this.default_AlgorithmID=f.readUint24(),this.default_IV_size=f.readUint8(),this.default_KID=l.parseHex16(f)}),l.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,function(f){this.fragment_count=f.readUint8(),this.entries=[];for(var k=0;k>4,this.chromaSubsampling=k>>1&7,this.videoFullRangeFlag=k&1,this.colourPrimaries=f.readUint8(),this.transferCharacteristics=f.readUint8(),this.matrixCoefficients=f.readUint8(),this.codecIntializationDataSize=f.readUint16(),this.codecIntializationData=f.readUint8Array(this.codecIntializationDataSize)):(this.profile=f.readUint8(),this.level=f.readUint8(),k=f.readUint8(),this.bitDepth=k>>4&15,this.colorSpace=k&15,k=f.readUint8(),this.chromaSubsampling=k>>4&15,this.transferFunction=k>>1&7,this.videoFullRangeFlag=k&1,this.codecIntializationDataSize=f.readUint16(),this.codecIntializationData=f.readUint8Array(this.codecIntializationDataSize))}),l.createBoxCtor("vttC",function(f){this.text=f.readString(this.size-this.hdr_size)}),l.createFullBoxCtor("vvcC",function(f){var k,A,p={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(T){this.held_bits=T.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(T){this.held_bits=T.readUint16(),this.num_held_bits=16},extract_bits:function(T){var D=this.held_bits>>this.num_held_bits-T&(1<1){for(p.stream_read_1_bytes(f),this.ptl_sublayer_present_mask=0,A=this.num_sublayers-2;A>=0;--A){var O=p.extract_bits(1);this.ptl_sublayer_present_mask|=O<1;++A)p.extract_bits(1);for(this.sublayer_level_idc=[],A=this.num_sublayers-2;A>=0;--A)this.ptl_sublayer_present_mask&1<"u"||k===null?k=2:k;A.length>=1;k+=l.decimalToHex(p,0),k+=".",this.hvcC.general_tier_flag===0?k+="L":k+="H",k+=this.hvcC.general_level_idc;var b=!1,w="";for(f=5;f>=0;f--)(this.hvcC.general_constraint_indicator[f]||b)&&(w="."+l.decimalToHex(this.hvcC.general_constraint_indicator[f],0)+w,b=!0);k+=w}return k},l.vvc1SampleEntry.prototype.getCodec=l.vvi1SampleEntry.prototype.getCodec=function(){var f,k=l.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){k+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?k+=".H":k+=".L",k+=this.vvcC.general_level_idc;var A="";if(this.vvcC.general_constraint_info){var p=[],b=0;b|=this.vvcC.ptl_frame_only_constraint<<7,b|=this.vvcC.ptl_multilayer_enabled<<6;var w;for(f=0;f>2&63,p.push(b),b&&(w=f),b=this.vvcC.general_constraint_info[f]>>2&3;if(w===void 0)A=".CA";else{A=".C";var O="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",y=0,C=0;for(f=0;f<=w;++f)for(y=y<<8|p[f],C+=8;C>=5;){var _=y>>C-5&31;A+=O[_],C-=5,y&=(1<o&&(this.size+=8),this.type==="uuid"&&(this.size+=16),t.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+f.getPosition()+(k||"")),this.size>o?f.writeUint32(1):(this.sizePosition=f.getPosition(),f.writeUint32(this.size)),f.writeString(this.type,null,4),this.type==="uuid"&&f.writeUint8Array(this.uuid),this.size>o&&f.writeUint64(this.size)},l.FullBox.prototype.writeHeader=function(f){this.size+=4,l.Box.prototype.writeHeader.call(this,f," v="+this.version+" f="+this.flags),f.writeUint8(this.version),f.writeUint24(this.flags)},l.Box.prototype.write=function(f){this.type==="mdat"?this.data&&(this.size=this.data.length,this.writeHeader(f),f.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(f),this.data&&f.writeUint8Array(this.data))},l.ContainerBox.prototype.write=function(f){this.size=0,this.writeHeader(f);for(var k=0;k=2&&f.writeUint32(this.default_sample_description_index),f.writeUint32(this.entries.length),k=0;k0)for(k=0;k+1k?1:0,this.flags=0,this.size=4,this.version===1&&(this.size+=4),this.writeHeader(f),this.version===1?f.writeUint64(this.baseMediaDecodeTime):f.writeUint32(this.baseMediaDecodeTime)},l.tfhdBox.prototype.write=function(f){this.version=0,this.size=4,this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&l.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(f),f.writeUint32(this.track_id),this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET&&f.writeUint64(this.base_data_offset),this.flags&l.TFHD_FLAG_SAMPLE_DESC&&f.writeUint32(this.default_sample_description_index),this.flags&l.TFHD_FLAG_SAMPLE_DUR&&f.writeUint32(this.default_sample_duration),this.flags&l.TFHD_FLAG_SAMPLE_SIZE&&f.writeUint32(this.default_sample_size),this.flags&l.TFHD_FLAG_SAMPLE_FLAGS&&f.writeUint32(this.default_sample_flags)},l.tkhdBox.prototype.write=function(f){this.version=0,this.size=4*18+2*4,this.writeHeader(f),f.writeUint32(this.creation_time),f.writeUint32(this.modification_time),f.writeUint32(this.track_id),f.writeUint32(0),f.writeUint32(this.duration),f.writeUint32(0),f.writeUint32(0),f.writeInt16(this.layer),f.writeInt16(this.alternate_group),f.writeInt16(this.volume<<8),f.writeUint16(0),f.writeInt32Array(this.matrix),f.writeUint32(this.width),f.writeUint32(this.height)},l.trexBox.prototype.write=function(f){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(f),f.writeUint32(this.track_id),f.writeUint32(this.default_sample_description_index),f.writeUint32(this.default_sample_duration),f.writeUint32(this.default_sample_size),f.writeUint32(this.default_sample_flags)},l.trunBox.prototype.write=function(f){this.version=0,this.size=4,this.flags&l.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&l.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&l.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&l.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&l.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&l.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(f),f.writeUint32(this.sample_count),this.flags&l.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=f.getPosition(),f.writeInt32(this.data_offset)),this.flags&l.TRUN_FLAGS_FIRST_FLAG&&f.writeUint32(this.first_sample_flags);for(var k=0;k0&&f.writeUint8Array(this.codecIntializationData)},l.cttsBox.prototype.unpack=function(f){var k,A,p;for(p=0,k=0;k-1)){if(f[A]instanceof l.Box||k[A]instanceof l.Box||typeof f[A]>"u"||typeof k[A]>"u"||typeof f[A]=="function"||typeof k[A]=="function"||f.subBoxNames&&f.subBoxNames.indexOf(A.slice(0,4))>-1||k.subBoxNames&&k.subBoxNames.indexOf(A.slice(0,4))>-1||A==="data"||A==="start"||A==="size"||A==="creation_time"||A==="modification_time"||l.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(A)>-1)continue;if(f[A]!==k[A])return!1}return!0},l.boxEqual=function(f,k){if(!l.boxEqualFields(f,k))return!1;for(var A=0;A1)for(A=1;A-1&&this.fragmentedTracks.splice(k,1)},m.prototype.setExtractionOptions=function(f,k,A){var p=this.getTrackById(f);if(p){var b={};this.extractedTracks.push(b),b.id=f,b.user=k,b.trak=p,p.nextSample=0,b.nb_samples=1e3,b.samples=[],A&&A.nbSamples&&(b.nb_samples=A.nbSamples)}},m.prototype.unsetExtractionOptions=function(f){for(var k=-1,A=0;A-1&&this.extractedTracks.splice(k,1)},m.prototype.parse=function(){var f,k,A=!1;if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else if(this.saveParsePosition&&this.saveParsePosition(),f=l.parseOneBox(this.stream,A),f.code===l.ERR_NOT_ENOUGH_DATA)if(this.processIncompleteBox){if(this.processIncompleteBox(f))continue;return}else return;else{var p;switch(k=f.box,p=k.type!=="uuid"?k.type:k.uuid,this.boxes.push(k),p){case"mdat":this.mdats.push(k);break;case"moof":this.moofs.push(k);break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[p]!==void 0&&t.warn("ISOFile","Duplicate Box of type: "+p+", overriding previous occurrence"),this[p]=k;break}this.updateUsedBytes&&this.updateUsedBytes(k,f)}},m.prototype.checkBuffer=function(f){if(f==null)throw"Buffer must be defined and non empty";if(f.fileStart===void 0)throw"Buffer must have a fileStart property";return f.byteLength===0?(t.warn("ISOFile","Ignoring empty buffer (fileStart: "+f.fileStart+")"),this.stream.logBufferLevel(),!1):(t.info("ISOFile","Processing buffer (fileStart: "+f.fileStart+")"),f.usedBytes=0,this.stream.insertBuffer(f),this.stream.logBufferLevel(),this.stream.initialized()?!0:(t.warn("ISOFile","Not ready to start parsing"),!1))},m.prototype.appendBuffer=function(f,k){var A;if(this.checkBuffer(f))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(k),this.nextSeekPosition?(A=this.nextSeekPosition,this.nextSeekPosition=void 0):A=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(A=this.stream.getEndFilePositionAfter(A))):this.nextParsePosition?A=this.nextParsePosition:A=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(t.info("ISOFile","Done processing buffer (fileStart: "+f.fileStart+") - next buffer to fetch should have a fileStart position of "+A),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),t.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),A},m.prototype.getInfo=function(){var f,k,A={},p,b,w,O,y=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(A.hasMoov=!0,A.duration=this.moov.mvhd.duration,A.timescale=this.moov.mvhd.timescale,A.isFragmented=this.moov.mvex!=null,A.isFragmented&&this.moov.mvex.mehd&&(A.fragment_duration=this.moov.mvex.mehd.fragment_duration),A.isProgressive=this.isProgressive,A.hasIOD=this.moov.iods!=null,A.brands=[],A.brands.push(this.ftyp.major_brand),A.brands=A.brands.concat(this.ftyp.compatible_brands),A.created=new Date(y+this.moov.mvhd.creation_time*1e3),A.modified=new Date(y+this.moov.mvhd.modification_time*1e3),A.tracks=[],A.audioTracks=[],A.videoTracks=[],A.subtitleTracks=[],A.metadataTracks=[],A.hintTracks=[],A.otherTracks=[],f=0;f0?A.mime+='video/mp4; codecs="':A.audioTracks&&A.audioTracks.length>0?A.mime+='audio/mp4; codecs="':A.mime+='application/mp4; codecs="',f=0;f=A.samples.length)&&(t.info("ISOFile","Sending fragmented data on track #"+p.id+" for samples ["+Math.max(0,A.nextSample-p.nb_samples)+","+(A.nextSample-1)+"]"),t.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(p.id,p.user,p.segmentStream.buffer,A.nextSample,f||A.nextSample>=A.samples.length),p.segmentStream=null,p!==this.fragmentedTracks[k]))break}}if(this.onSamples!==null)for(k=0;k=A.samples.length)&&(t.debug("ISOFile","Sending samples on track #"+w.id+" for sample "+A.nextSample),this.onSamples&&this.onSamples(w.id,w.user,w.samples),w.samples=[],w!==this.extractedTracks[k]))break}}}},m.prototype.getBox=function(f){var k=this.getBoxes(f,!0);return k.length?k[0]:null},m.prototype.getBoxes=function(f,k){var A=[];return m._sweep.call(this,f,A,k),A},m._sweep=function(f,k,A){this.type&&this.type==f&&k.push(this);for(var p in this.boxes){if(k.length&&A)return;m._sweep.call(this.boxes[p],f,k,A)}},m.prototype.getTrackSamplesInfo=function(f){var k=this.getTrackById(f);if(k)return k.samples},m.prototype.getTrackSample=function(f,k){var A=this.getTrackById(f),p=this.getSample(A,k);return p},m.prototype.releaseUsedSamples=function(f,k){var A=0,p=this.getTrackById(f);p.lastValidSample||(p.lastValidSample=0);for(var b=p.lastValidSample;bf*b.timescale){y=p-1;break}k&&b.is_sync&&(O=p)}for(k&&(y=O),f=A.samples[y].cts,A.nextSample=y;A.samples[y].alreadyRead===A.samples[y].size&&A.samples[y+1];)y++;return w=A.samples[y].offset+A.samples[y].alreadyRead,t.info("ISOFile","Seeking to "+(k?"RAP":"")+" sample #"+A.nextSample+" on track "+A.tkhd.track_id+", time "+t.getDurationString(f,C)+" and offset: "+w),{offset:w,time:f/C}},m.prototype.getTrackDuration=function(f){var k;return f.samples?(k=f.samples[f.samples.length-1],(k.cts+k.duration)/k.timescale):1/0},m.prototype.seek=function(f,k){var A=this.moov,p,b,w,O={offset:1/0,time:1/0};if(this.moov){for(w=0;wthis.getTrackDuration(p))&&(b=this.seekTrack(f,k,p),b.offset-1){O=y;break}switch(O){case"Visual":if(b.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),w.set("width",k.width).set("height",k.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",k.type+" Compressor").set("depth",24),k.avcDecoderConfigRecord){var S=new l.avcCBox;S.parse(new n(k.avcDecoderConfigRecord)),w.addBox(S)}else if(k.hevcDecoderConfigRecord){var L=new l.hvcCBox;L.parse(new n(k.hevcDecoderConfigRecord)),w.addBox(L)}else if(k.vpcDecoderConfigRecord){var E=new l.vpcCBox;E.parse(new n(k.vpcDecoderConfigRecord)),w.addBox(E)}break;case"Audio":b.add("smhd").set("balance",k.balance||0),w.set("channel_count",k.channel_count||2).set("samplesize",k.samplesize||16).set("samplerate",k.samplerate||65536);break;case"Hint":b.add("hmhd");break;case"Subtitle":switch(b.add("sthd"),k.type){case"stpp":w.set("namespace",k.namespace||"nonamespace").set("schema_location",k.schema_location||"").set("auxiliary_mime_types",k.auxiliary_mime_types||"");break}break;case"Metadata":b.add("nmhd");break;case"System":b.add("nmhd");break;default:b.add("nmhd");break}k.description&&w.addBox(k.description),k.description_boxes&&k.description_boxes.forEach(function(D){w.addBox(D)}),b.add("dinf").add("dref").addEntry(new l["url Box"]().set("flags",1));var T=b.add("stbl");return T.add("stsd").addEntry(w),T.add("stts").set("sample_counts",[]).set("sample_deltas",[]),T.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),T.add("stco").set("chunk_offsets",[]),T.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",k.id).set("default_sample_description_index",k.default_sample_description_index||1).set("default_sample_duration",k.default_sample_duration||0).set("default_sample_size",k.default_sample_size||0).set("default_sample_flags",k.default_sample_flags||0),this.buildTrakSampleLists(A),k.id}},l.Box.prototype.computeSize=function(f){var k=f||new r;k.endianness=r.BIG_ENDIAN,this.write(k)},m.prototype.addSample=function(f,k,A){var p=A||{},b={},w=this.getTrackById(f);if(w!==null){b.number=w.samples.length,b.track_id=w.tkhd.track_id,b.timescale=w.mdia.mdhd.timescale,b.description_index=p.sample_description_index?p.sample_description_index-1:0,b.description=w.mdia.minf.stbl.stsd.entries[b.description_index],b.data=k,b.size=k.byteLength,b.alreadyRead=b.size,b.duration=p.duration||1,b.cts=p.cts||0,b.dts=p.dts||0,b.is_sync=p.is_sync||!1,b.is_leading=p.is_leading||0,b.depends_on=p.depends_on||0,b.is_depended_on=p.is_depended_on||0,b.has_redundancy=p.has_redundancy||0,b.degradation_priority=p.degradation_priority||0,b.offset=0,b.subsamples=p.subsamples,w.samples.push(b),w.samples_size+=b.size,w.samples_duration+=b.duration,w.first_dts===void 0&&(w.first_dts=p.dts),this.processSamples();var O=this.createSingleSampleMoof(b);return this.addBox(O),O.computeSize(),O.trafs[0].truns[0].data_offset=O.size+8,this.add("mdat").data=new Uint8Array(k),b}},m.prototype.createSingleSampleMoof=function(f){var k=0;f.is_sync?k=1<<25:k=65536;var A=new l.moofBox;A.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var p=A.add("traf"),b=this.getTrackById(f.track_id);return p.add("tfhd").set("track_id",f.track_id).set("flags",l.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),p.add("tfdt").set("baseMediaDecodeTime",f.dts-(b.first_dts||0)),p.add("trun").set("flags",l.TRUN_FLAGS_DATA_OFFSET|l.TRUN_FLAGS_DURATION|l.TRUN_FLAGS_SIZE|l.TRUN_FLAGS_FLAGS|l.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[f.duration]).set("sample_size",[f.size]).set("sample_flags",[k]).set("sample_composition_time_offset",[f.cts-f.dts]),A},m.prototype.lastMoofIndex=0,m.prototype.samplesDataSize=0,m.prototype.resetTables=function(){var f,k,A,p,b,w,O,y;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,f=0;f=2&&(C=b[O].grouping_type+"/0",y=new _(b[O].grouping_type,0),y.is_fragment=!0,k.sample_groups_info[C]||(k.sample_groups_info[C]=y))}else for(O=0;O=2&&(C=p[O].grouping_type+"/0",y=new _(p[O].grouping_type,0),f.sample_groups_info[C]||(f.sample_groups_info[C]=y))},m.setSampleGroupProperties=function(f,k,A,p){var b,w;k.sample_groups=[];for(b in p)if(k.sample_groups[b]={},k.sample_groups[b].grouping_type=p[b].grouping_type,k.sample_groups[b].grouping_type_parameter=p[b].grouping_type_parameter,A>=p[b].last_sample_in_run&&(p[b].last_sample_in_run<0&&(p[b].last_sample_in_run=0),p[b].entry_index++,p[b].entry_index<=p[b].sbgp.entries.length-1&&(p[b].last_sample_in_run+=p[b].sbgp.entries[p[b].entry_index].sample_count)),p[b].entry_index<=p[b].sbgp.entries.length-1?k.sample_groups[b].group_description_index=p[b].sbgp.entries[p[b].entry_index].group_description_index:k.sample_groups[b].group_description_index=-1,k.sample_groups[b].group_description_index!==0){var O;p[b].fragment_description?O=p[b].fragment_description:O=p[b].description,k.sample_groups[b].group_description_index>0?(k.sample_groups[b].group_description_index>65535?w=(k.sample_groups[b].group_description_index>>16)-1:w=k.sample_groups[b].group_description_index-1,O&&w>=0&&(k.sample_groups[b].description=O.entries[w])):O&&O.version>=2&&O.default_group_description_index>0&&(k.sample_groups[b].description=O.entries[O.default_group_description_index-1])}},m.process_sdtp=function(f,k,A){k&&(f?(k.is_leading=f.is_leading[A],k.depends_on=f.sample_depends_on[A],k.is_depended_on=f.sample_is_depended_on[A],k.has_redundancy=f.sample_has_redundancy[A]):(k.is_leading=0,k.depends_on=0,k.is_depended_on=0,k.has_redundancy=0))},m.prototype.buildSampleLists=function(){var f,k;for(f=0;f"u")){for(k=0;kB&&(R++,B<0&&(B=0),B+=w.sample_counts[R]),k>0?(f.samples[k-1].duration=w.sample_deltas[R],f.samples_duration+=f.samples[k-1].duration,$.dts=f.samples[k-1].dts+f.samples[k-1].duration):$.dts=0,O?(k>=I&&(F++,I<0&&(I=0),I+=O.sample_counts[F]),$.cts=f.samples[k].dts+O.sample_offsets[F]):$.cts=$.dts,y?(k==y.sample_numbers[j]-1?($.is_sync=!0,j++):($.is_sync=!1,$.degradation_priority=0),_&&_.entries[W].sample_delta+H==k+1&&($.subsamples=_.entries[W].subsamples,H+=_.entries[W].sample_delta,W++)):$.is_sync=!0,m.process_sdtp(f.mdia.minf.stbl.sdtp,$,$.number),E?$.degradation_priority=E.priority[k]:$.degradation_priority=0,_&&_.entries[W].sample_delta+H==k&&($.subsamples=_.entries[W].subsamples,H+=_.entries[W].sample_delta),(S.length>0||L.length>0)&&m.setSampleGroupProperties(f,$,k,f.sample_groups_info)}k>0&&(f.samples[k-1].duration=Math.max(f.mdia.mdhd.duration-f.samples[k-1].dts,0),f.samples_duration+=f.samples[k-1].duration)}},m.prototype.updateSampleLists=function(){var f,k,A,p,b,w,O,y,C,_,S,L,E,T,D;if(this.moov!==void 0){for(;this.lastMoofIndex0&&m.initSampleGroups(L,S,S.sbgps,L.mdia.minf.stbl.sgpds,S.sgpds),k=0;k0?T.dts=L.samples[L.samples.length-2].dts+L.samples[L.samples.length-2].duration:(S.tfdt?T.dts=S.tfdt.baseMediaDecodeTime:T.dts=0,L.first_traf_merged=!0),T.cts=T.dts,P.flags&l.TRUN_FLAGS_CTS_OFFSET&&(T.cts=T.dts+P.sample_composition_time_offset[A]),D=O,P.flags&l.TRUN_FLAGS_FLAGS?D=P.sample_flags[A]:A===0&&P.flags&l.TRUN_FLAGS_FIRST_FLAG&&(D=P.first_sample_flags),T.is_sync=!(D>>16&1),T.is_leading=D>>26&3,T.depends_on=D>>24&3,T.is_depended_on=D>>22&3,T.has_redundancy=D>>20&3,T.degradation_priority=D&65535;var Q=!!(S.tfhd.flags&l.TFHD_FLAG_BASE_DATA_OFFSET),M=!!(S.tfhd.flags&l.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),B=!!(P.flags&l.TRUN_FLAGS_DATA_OFFSET),R=0;Q?R=S.tfhd.base_data_offset:M||k===0?R=_.start:R=y,k===0&&A===0?B?T.offset=R+P.data_offset:T.offset=R:T.offset=y,y=T.offset+T.size,(S.sbgps.length>0||S.sgpds.length>0||L.mdia.minf.stbl.sbgps.length>0||L.mdia.minf.stbl.sgpds.length>0)&&m.setSampleGroupProperties(L,T,T.number_in_traf,S.sample_groups_info)}}if(S.subs){L.has_fragment_subsamples=!0;var I=S.first_sample_index;for(k=0;k-1){A=this.stream.buffers[b];var w=A.byteLength-(p.offset+p.alreadyRead-A.fileStart);if(p.size-p.alreadyRead<=w)return t.debug("ISOFile","Getting sample #"+k+" data (alreadyRead: "+p.alreadyRead+" offset: "+(p.offset+p.alreadyRead-A.fileStart)+" read size: "+(p.size-p.alreadyRead)+" full size: "+p.size+")"),r.memcpy(p.data.buffer,p.alreadyRead,A,p.offset+p.alreadyRead-A.fileStart,p.size-p.alreadyRead),A.usedBytes+=p.size-p.alreadyRead,this.stream.logBufferLevel(),p.alreadyRead=p.size,p;if(w===0)return null;t.debug("ISOFile","Getting sample #"+k+" partial data (alreadyRead: "+p.alreadyRead+" offset: "+(p.offset+p.alreadyRead-A.fileStart)+" read size: "+w+" full size: "+p.size+")"),r.memcpy(p.data.buffer,p.alreadyRead,A,p.offset+p.alreadyRead-A.fileStart,w),p.alreadyRead+=w,A.usedBytes+=w,this.stream.logBufferLevel()}else return null}},m.prototype.releaseSample=function(f,k){var A=f.samples[k];return A.data?(this.samplesDataSize-=A.size,A.data=null,A.alreadyRead=0,A.size):0},m.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},m.prototype.getCodecs=function(){var f,k="";for(f=0;f0&&(k+=","),k+=A.mdia.minf.stbl.stsd.entries[0].getCodec()}return k},m.prototype.getTrexById=function(f){var k;if(!this.moov||!this.moov.mvex)return null;for(k=0;k0&&(b.protection=w.ipro.protections[w.iinf.item_infos[A].protection_index-1]),w.iinf.item_infos[A].item_type?b.type=w.iinf.item_infos[A].item_type:b.type="mime",b.content_type=w.iinf.item_infos[A].content_type,b.content_encoding=w.iinf.item_infos[A].content_encoding;if(w.grpl)for(A=0;A0&&L.property_index-1-1){k=this.stream.buffers[w];var O=k.byteLength-(b.offset+b.alreadyRead-k.fileStart);if(b.length-b.alreadyRead<=O)t.debug("ISOFile","Getting item #"+f+" extent #"+p+" data (alreadyRead: "+b.alreadyRead+" offset: "+(b.offset+b.alreadyRead-k.fileStart)+" read size: "+(b.length-b.alreadyRead)+" full extent size: "+b.length+" full item size: "+A.size+")"),r.memcpy(A.data.buffer,A.alreadyRead,k,b.offset+b.alreadyRead-k.fileStart,b.length-b.alreadyRead),k.usedBytes+=b.length-b.alreadyRead,this.stream.logBufferLevel(),A.alreadyRead+=b.length-b.alreadyRead,b.alreadyRead=b.length;else return t.debug("ISOFile","Getting item #"+f+" extent #"+p+" partial data (alreadyRead: "+b.alreadyRead+" offset: "+(b.offset+b.alreadyRead-k.fileStart)+" read size: "+O+" full extent size: "+b.length+" full item size: "+A.size+")"),r.memcpy(A.data.buffer,A.alreadyRead,k,b.offset+b.alreadyRead-k.fileStart,O),b.alreadyRead+=O,A.alreadyRead+=O,k.usedBytes+=O,this.stream.logBufferLevel(),null}else return null}}return A.alreadyRead===A.size?A:null},m.prototype.releaseItem=function(f){var k=this.items[f];if(k.data){this.itemsDataSize-=k.size,k.data=null,k.alreadyRead=0;for(var A=0;A0?this.moov.traks[f].samples[0].duration:0),k.push(p)}return k},l.Box.prototype.printHeader=function(f){this.size+=8,this.size>o&&(this.size+=8),this.type==="uuid"&&(this.size+=16),f.log(f.indent+"size:"+this.size),f.log(f.indent+"type:"+this.type)},l.FullBox.prototype.printHeader=function(f){this.size+=4,l.Box.prototype.printHeader.call(this,f),f.log(f.indent+"version:"+this.version),f.log(f.indent+"flags:"+this.flags)},l.Box.prototype.print=function(f){this.printHeader(f)},l.ContainerBox.prototype.print=function(f){this.printHeader(f);for(var k=0;k>8)),f.log(f.indent+"matrix: "+this.matrix.join(", ")),f.log(f.indent+"next_track_id: "+this.next_track_id)},l.tkhdBox.prototype.print=function(f){l.FullBox.prototype.printHeader.call(this,f),f.log(f.indent+"creation_time: "+this.creation_time),f.log(f.indent+"modification_time: "+this.modification_time),f.log(f.indent+"track_id: "+this.track_id),f.log(f.indent+"duration: "+this.duration),f.log(f.indent+"volume: "+(this.volume>>8)),f.log(f.indent+"matrix: "+this.matrix.join(", ")),f.log(f.indent+"layer: "+this.layer),f.log(f.indent+"alternate_group: "+this.alternate_group),f.log(f.indent+"width: "+this.width),f.log(f.indent+"height: "+this.height)};var v={};v.createFile=function(f,k){var A=f!==void 0?f:!0,p=new m(k);return p.discardMdatData=!A,p},e.createFile=v.createFile})(yqn);const YGe=R9s(yqn),I9s=()=>{let e,t=16.6;self.onmessage=n=>{n.data.event==="start"&&(self.clearInterval(e),e=self.setInterval(()=>{self.postMessage({})},t)),n.data.event==="stop"&&self.clearInterval(e)}},M9s=()=>{const e=new Blob([`(${I9s.toString()})()`]),t=URL.createObjectURL(e);return new Worker(t)},VF=new Map;let ZGe=1,WN=null;globalThis.Worker!=null&&(WN=M9s(),WN.onmessage=()=>{ZGe+=1;for(const[e,t]of VF)if(ZGe%e===0)for(const n of t)n()});const P9s=(e,t)=>{const n=Math.round(t/16.6),r=VF.get(n)??new Set;return r.add(e),VF.set(n,r),VF.size===1&&r.size===1&&(WN==null||WN.postMessage({event:"start"})),()=>{r.delete(e),r.size===0&&VF.delete(n),VF.size===0&&(ZGe=0,WN==null||WN.postMessage({event:"stop"}))}};function F9s(e){return e instanceof Error?String(e):typeof e=="object"?JSON.stringify(e,(t,n)=>n instanceof Error?String(n):n):String(e)}function N9s(){const e=new Date;return`${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}.${e.getMilliseconds()}`}let Cqn=1;const _qn=[],Gkn=["debug","info","warn","error"].reduce((e,t,n)=>Object.assign(e,{[t]:(...r)=>{Cqn<=n&&(console[t](...r),_qn.push({lvName:t,timeStr:N9s(),args:r}))}}),{}),Zre=new Map,td={setLogLevel:e=>{Cqn=Zre.get(e)??1},...Gkn,create:e=>Object.fromEntries(Object.entries(Gkn).map(([t,n])=>[t,(...r)=>n(e,...r)])),async dump(){return _qn.reduce((e,{lvName:t,timeStr:n,args:r})=>e+`[${t}][${n}] ${r.map(o=>F9s(o)).join(" ")} + */function Mkn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Uy(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function pLs(e,t){if(e==null)return{};var n=ALs(e,t),r,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var bLs="1.15.2";function g8(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var IL=g8(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Xre=g8(/Edge/i),Pkn=g8(/firefox/i),dq=g8(/safari/i)&&!g8(/chrome/i)&&!g8(/android/i),sqn=g8(/iP(ad|od|hone)/i),aqn=g8(/chrome/i)&&g8(/android/i),lqn={capture:!1,passive:!1};function yl(e,t,n){e.addEventListener(t,n,!IL&&lqn)}function Ya(e,t,n){e.removeEventListener(t,n,!IL&&lqn)}function Y2e(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function wLs(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Ib(e,t,n,r){if(e){n=n||document;do{if(t!=null&&(t[0]===">"?e.parentNode===n&&Y2e(e,t):Y2e(e,t))||r&&e===n)return e;if(e===n)break}while(e=wLs(e))}return null}var Fkn=/\s+/g;function J2(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Fkn," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Fkn," ")}}function Mo(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),r[t]=n+(typeof n=="string"?"":"px")}}function vj(e,t){var n="";if(typeof e=="string")n=e;else do{var r=Mo(e,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function cqn(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,s=r.length;if(n)for(;o=s,!a)return r;if(r===vy())break;r=T9(r,!1)}return!1}function dz(e,t,n,r){for(var o=0,s=0,a=e.children;s2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,o=pLs(n,ELs);Gre.pluginEvent.bind(Po)(e,t,Uy({dragEl:Ii,parentEl:Lu,ghostEl:ms,rootEl:Ed,nextEl:oT,lastDownEl:ife,cloneEl:tu,cloneHidden:M5,dragStarted:uY,putSortable:Vg,activeSortable:Po.active,originalEvent:r,oldIndex:jN,oldDraggableIndex:hq,newIndex:nv,newDraggableIndex:k5,hideGhostForTarget:vqn,unhideGhostForTarget:Aqn,cloneNowHidden:function(){M5=!0},cloneNowShown:function(){M5=!1},dispatchSortableEvent:function(s){X1({sortable:t,name:s,originalEvent:r})}},o))};function X1(e){xLs(Uy({putSortable:Vg,cloneEl:tu,targetEl:Ii,rootEl:Ed,oldIndex:jN,oldDraggableIndex:hq,newIndex:nv,newDraggableIndex:k5},e))}var Ii,Lu,ms,Ed,oT,ife,tu,M5,jN,nv,hq,k5,Ude,Vg,WF=!1,Z2e=!1,q2e=[],I7,qp,LRe,xRe,jkn,Wkn,uY,aF,fq,gq=!1,jde=!1,rfe,Pm,ERe=[],zGe=!1,K2e=[],KOe=typeof document<"u",Wde=sqn,Vkn=Xre||IL?"cssFloat":"float",TLs=KOe&&!aqn&&!sqn&&"draggable"in document.createElement("div"),gqn=function(){if(KOe){if(IL)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),mqn=function(e,t){var n=Mo(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=dz(e,0,t),s=dz(e,1,t),a=o&&Mo(o),l=s&&Mo(s),d=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+Uh(o).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Uh(s).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a.float&&a.float!=="none"){var h=a.float==="left"?"left":"right";return s&&(l.clear==="both"||l.clear===h)?"vertical":"horizontal"}return o&&(a.display==="block"||a.display==="flex"||a.display==="table"||a.display==="grid"||d>=r&&n[Vkn]==="none"||s&&n[Vkn]==="none"&&d+u>r)?"vertical":"horizontal"},QLs=function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,s=n?e.width:e.height,a=n?t.left:t.top,l=n?t.right:t.bottom,d=n?t.width:t.height;return r===a||o===l||r+s/2===a+d/2},DLs=function(e,t){var n;return q2e.some(function(r){var o=r[Fv].options.emptyInsertThreshold;if(!(!o||Jst(r))){var s=Uh(r),a=e>=s.left-o&&e<=s.right+o,l=t>=s.top-o&&t<=s.bottom+o;if(a&&l)return n=r}}),n},kqn=function(e){function t(o,s){return function(a,l,d,u){var h=a.options.group.name&&l.options.group.name&&a.options.group.name===l.options.group.name;if(o==null&&(s||h))return!0;if(o==null||o===!1)return!1;if(s&&o==="clone")return o;if(typeof o=="function")return t(o(a,l,d,u),s)(a,l,d,u);var g=(s?a:l).options.group.name;return o===!0||typeof o=="string"&&o===g||o.join&&o.indexOf(g)>-1}}var n={},r=e.group;(!r||nfe(r)!="object")&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},vqn=function(){!gqn&&ms&&Mo(ms,"display","none")},Aqn=function(){!gqn&&ms&&Mo(ms,"display","")};KOe&&!aqn&&document.addEventListener("click",function(e){if(Z2e)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Z2e=!1,!1},!0);var M7=function(e){if(Ii){e=e.touches?e.touches[0]:e;var t=DLs(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Fv]._onDragOver(n)}}},BLs=function(e){Ii&&Ii.parentNode[Fv]._isOutsideThisEl(e.target)};function Po(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=nL({},t),e[Fv]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return mqn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,a){s.setData("Text",a.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Po.supportPointer!==!1&&"PointerEvent"in window&&!dq,emptyInsertThreshold:5};Gre.initializePlugins(this,e,n);for(var r in n)!(r in t)&&(t[r]=n[r]);kqn(t);for(var o in this)o.charAt(0)==="_"&&typeof this[o]=="function"&&(this[o]=this[o].bind(this));this.nativeDraggable=t.forceFallback?!1:TLs,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?yl(e,"pointerdown",this._onTapStart):(yl(e,"mousedown",this._onTapStart),yl(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(yl(e,"dragover",this),yl(e,"dragenter",this)),q2e.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),nL(this,_Ls())}Po.prototype={constructor:Po,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(aF=null)},_getDirection:function(e,t){return typeof this.options.direction=="function"?this.options.direction.call(this,e,t,Ii):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,s=e.type,a=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(a||e).target,d=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,u=r.filter;if(jLs(n),!Ii&&!(/mousedown|pointerdown/.test(s)&&e.button!==0||r.disabled)&&!d.isContentEditable&&!(!this.nativeDraggable&&dq&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Ib(l,r.draggable,n,!1),!(l&&l.animated)&&ife!==l)){if(jN=m4(l),hq=m4(l,r.draggable),typeof u=="function"){if(u.call(this,e,l,this)){X1({sortable:t,rootEl:d,name:"filter",targetEl:l,toEl:n,fromEl:n}),kk("filter",t,{evt:e}),o&&e.cancelable&&e.preventDefault();return}}else if(u&&(u=u.split(",").some(function(h){if(h=Ib(d,h.trim(),n,!1),h)return X1({sortable:t,rootEl:h,name:"filter",targetEl:l,fromEl:n,toEl:n}),kk("filter",t,{evt:e}),!0}),u)){o&&e.cancelable&&e.preventDefault();return}r.handle&&!Ib(d,r.handle,n,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(e,t,n){var r=this,o=r.el,s=r.options,a=o.ownerDocument,l;if(n&&!Ii&&n.parentNode===o){var d=Uh(n);if(Ed=o,Ii=n,Lu=Ii.parentNode,oT=Ii.nextSibling,ife=n,Ude=s.group,Po.dragged=Ii,I7={target:Ii,clientX:(t||e).clientX,clientY:(t||e).clientY},jkn=I7.clientX-d.left,Wkn=I7.clientY-d.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,Ii.style["will-change"]="all",l=function(){if(kk("delayEnded",r,{evt:e}),Po.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!Pkn&&r.nativeDraggable&&(Ii.draggable=!0),r._triggerDragStart(e,t),X1({sortable:r,name:"choose",originalEvent:e}),J2(Ii,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){cqn(Ii,u.trim(),TRe)}),yl(a,"dragover",M7),yl(a,"mousemove",M7),yl(a,"touchmove",M7),yl(a,"mouseup",r._onDrop),yl(a,"touchend",r._onDrop),yl(a,"touchcancel",r._onDrop),Pkn&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Ii.draggable=!0),kk("delayStart",this,{evt:e}),s.delay&&(!s.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(Xre||IL))){if(Po.eventCanceled){this._onDrop();return}yl(a,"mouseup",r._disableDelayedDrag),yl(a,"touchend",r._disableDelayedDrag),yl(a,"touchcancel",r._disableDelayedDrag),yl(a,"mousemove",r._delayedDragTouchMoveHandler),yl(a,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&yl(a,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(l,s.delay)}else l()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Ii&&TRe(Ii),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Ya(e,"mouseup",this._disableDelayedDrag),Ya(e,"touchend",this._disableDelayedDrag),Ya(e,"touchcancel",this._disableDelayedDrag),Ya(e,"mousemove",this._delayedDragTouchMoveHandler),Ya(e,"touchmove",this._delayedDragTouchMoveHandler),Ya(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||e.pointerType=="touch"&&e,!this.nativeDraggable||t?this.options.supportPointer?yl(document,"pointermove",this._onTouchMove):t?yl(document,"touchmove",this._onTouchMove):yl(document,"mousemove",this._onTouchMove):(yl(Ii,"dragend",this),yl(Ed,"dragstart",this._onDragStart));try{document.selection?ofe(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(WF=!1,Ed&&Ii){kk("dragStarted",this,{evt:t}),this.nativeDraggable&&yl(document,"dragover",BLs);var n=this.options;!e&&J2(Ii,n.dragClass,!1),J2(Ii,n.ghostClass,!0),Po.active=this,e&&this._appendGhost(),X1({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(qp){this._lastX=qp.clientX,this._lastY=qp.clientY,vqn();for(var e=document.elementFromPoint(qp.clientX,qp.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(qp.clientX,qp.clientY),e!==t);)t=e;if(Ii.parentNode[Fv]._isOutsideThisEl(e),t)do{if(t[Fv]){var n=void 0;if(n=t[Fv]._onDragOver({clientX:qp.clientX,clientY:qp.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Aqn()}},_onTouchMove:function(e){if(I7){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,s=ms&&vj(ms,!0),a=ms&&s&&s.a,l=ms&&s&&s.d,d=Wde&&Pm&&Ukn(Pm),u=(o.clientX-I7.clientX+r.x)/(a||1)+(d?d[0]-ERe[0]:0)/(a||1),h=(o.clientY-I7.clientY+r.y)/(l||1)+(d?d[1]-ERe[1]:0)/(l||1);if(!Po.active&&!WF){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(X1({rootEl:Lu,name:"add",toEl:Lu,fromEl:Ed,originalEvent:e}),X1({sortable:this,name:"remove",toEl:Lu,originalEvent:e}),X1({rootEl:Lu,name:"sort",toEl:Lu,fromEl:Ed,originalEvent:e}),X1({sortable:this,name:"sort",toEl:Lu,originalEvent:e})),Vg&&Vg.save()):nv!==jN&&nv>=0&&(X1({sortable:this,name:"update",toEl:Lu,originalEvent:e}),X1({sortable:this,name:"sort",toEl:Lu,originalEvent:e})),Po.active&&((nv==null||nv===-1)&&(nv=jN,k5=hq),X1({sortable:this,name:"end",toEl:Lu,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){kk("nulling",this),Ed=Ii=Lu=ms=oT=tu=ife=M5=I7=qp=uY=nv=k5=jN=hq=aF=fq=Vg=Ude=Po.dragged=Po.ghost=Po.clone=Po.active=null,K2e.forEach(function(e){e.checked=!0}),K2e.length=LRe=xRe=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":Ii&&(this._onDragOver(e),RLs(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,o=n.length,s=this.options;ro.right+s||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>o.bottom+s||e.clientX>r.right&&e.clientY>r.top}function FLs(e,t,n,r,o,s,a,l){var d=r?e.clientY:e.clientX,u=r?n.height:n.width,h=r?n.top:n.left,g=r?n.bottom:n.right,m=!1;if(!a){if(l&&rfeh+u*s/2:dg-rfe)return-fq}else if(d>h+u*(1-o)/2&&dg-u*s/2)?d>h+u/2?1:-1:0}function NLs(e){return m4(Ii){if(R&&(o==null?void 0:o.length)!==Q.childNodes.length)return P.insertBefore(R,I.nextSibling),!0;const j=Q.childNodes[F];R=Q==null?void 0:Q.replaceChild(I,j)})}}catch(R){M=R}finally{o=null}ai(()=>{if(Hkn(),M)throw M})}const w={onUpdate:p,onStart:f,onAdd:k,onRemove:A,onEnd:b};function O(E){const T=Ae(s);return E||(E=dLs(T)?uLs(T,r==null?void 0:r.$el):T),E&&!gLs(E)&&(E=E.$el),E||sLs("Root element not found"),E}function y(){var E;const T=(E=Ae(l))!=null?E:{},{immediate:D,clone:P}=T,Q=rqn(T,["immediate","clone"]);return Ikn(Q,(M,B)=>{mLs(M)&&(Q[M]=(R,...I)=>{const F=$Ls();return kLs(R,F),B(R,...I)})}),fLs(a===null?{}:w,Q)}const C=E=>{E=O(E),d&&_.destroy(),d=new Po(E,y())};pt(()=>l,()=>{d&&Ikn(y(),(E,T)=>{d==null||d.option(E,T)})},{deep:!0});const _={option:(E,T)=>d==null?void 0:d.option(E,T),destroy:()=>{d==null||d.destroy(),d=null},save:()=>d==null?void 0:d.save(),toArray:()=>d==null?void 0:d.toArray(),closest:(...E)=>d==null?void 0:d.closest(...E)},S=()=>_==null?void 0:_.option("disabled",!0),L=()=>_==null?void 0:_.option("disabled",!1);return HLs(()=>{u&&C()}),zLs(_.destroy),UN({start:C,pause:S,resume:L},_)}const GGe=["update","start","add","remove","choose","unchoose","end","sort","filter","clone","move","change"],GLs=["clone","animation","ghostClass","group","sort","disabled","store","handle","draggable","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","chosenClass","dragClass","ignore","filter","preventOnFilter","easing","setData","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","emptyInsertThreshold","scroll","forceAutoScrollFallback","scrollSensitivity","scrollSpeed","bubbleScroll","modelValue","tag","target","customUpdate",...GGe.map(e=>`on${e.replace(/^\S/,t=>t.toUpperCase())}`)],YLs=Je({name:"VueDraggable",model:{prop:"modelValue",event:"update:modelValue"},props:GLs,emits:["update:modelValue",...GGe],setup(e,{slots:t,emit:n,expose:r,attrs:o}){const s=GGe.reduce((h,g)=>{const m=`on${g.replace(/^\S/,v=>v.toUpperCase())}`;return h[m]=(...v)=>n(g,...v),h},{}),a=X(()=>{const h=Li(e),{modelValue:g}=h,m=rqn(h,["modelValue"]),v=Object.entries(m).reduce((f,[k,A])=>{const p=Ae(A);return p!==void 0&&(f[k]=p),f},{});return UN(UN({},s),lLs(UN(UN({},o),v)))}),l=X({get:()=>e.modelValue,set:h=>n("update:modelValue",h)}),d=fe(),u=hs(XLs(e.target||d,l,a));return r(u),()=>{var h;return xn(e.tag||"div",{ref:d},(h=t==null?void 0:t.default)==null?void 0:h.call(t,u))}}}),ZLs={class:"previewContainer"},qLs={class:"mainContent"},KLs={class:"previewArea"},JLs={class:"videoWrapper"},exs=["src","alt"],txs={key:1,class:"placeholderImage"},nxs={class:"playerControls"},ixs={class:"controlButtons"},rxs={class:"progressArea"},oxs={class:"timeLabel"},sxs={class:"progressTrack"},axs=["onClick"],lxs={class:"timeLabel"},cxs={class:"infoPanel"},dxs={class:"infoSection"},uxs={class:"sectionTitle"},hxs={class:"sectionContent"},fxs={class:"infoSection"},gxs={class:"sectionTitle"},mxs={class:"sectionContent"},kxs={class:"infoSection"},vxs={class:"sectionTitle"},Axs={class:"characterList"},pxs={key:0,class:"noCharacter"},bxs={class:"infoSection"},wxs={class:"sectionTitle"},Oxs={class:"shootingTips"},yxs={key:0,class:"tipItem"},Cxs={class:"tipLabel"},_xs={class:"tipValue"},Sxs={class:"shotListArea"},Lxs={class:"shotListHeader"},xxs={class:"headerLeft"},Exs=["onClick"],Txs={class:"shotImageWrapper"},Qxs=["src","alt"],Dxs={key:1,class:"shotPlaceholder"},Xkn=50,Bxs=Je({__name:"preview",setup(e){const t=bt("episodesId"),n=fe([]);An(()=>{r()});async function r(){const{data:G}=await mn.post("/production/getStoryboardData",{scriptId:t.value});n.value=G}const o=X(()=>n.value[a.value]||null),s=X(()=>{var G;return((G=o.value)==null?void 0:G.characters)||[]}),a=fe(0),l=fe(!1),d=fe(),u=fe(),h=fe(!1),g=fe(!1),m=fe(0);let v=null;const f=n.value.map(G=>G.id),k=X(()=>{var G;return((G=o.value)==null?void 0:G.duration)??3}),A=X(()=>a.value===0),p=X(()=>a.value===n.value.length-1),b=X(()=>n.value.reduce((G,q)=>G+(q.duration??3),0)),w=X(()=>{const G=C(a.value)+m.value;return Math.min(G/b.value*100,100)}),O=X(()=>{var G,q;return[{label:$t("workbench.production.preview.sceneDescription"),value:(G=o.value)==null?void 0:G.description},{label:$t("workbench.production.preview.promptLabel"),value:(q=o.value)==null?void 0:q.prompt}]}),y=G=>{var q;return((q=n.value[G])==null?void 0:q.duration)??3},C=G=>{let q=0;for(let re=0;rey(G)/b.value*100,S=G=>C(G)/b.value*100,L=G=>{const q=Math.floor(G);return`${String(Math.floor(q/60)).padStart(2,"0")}:${String(q%60).padStart(2,"0")}`},E=()=>{v&&(clearInterval(v),v=null),g.value=!1},T=()=>{v||(g.value=!0,v=setInterval(()=>{m.value+=Xkn/1e3,m.value>=k.value&&(p.value?(m.value=k.value,E()):(m.value=0,a.value++,F()))},Xkn))},D=()=>{if(g.value)return E();p.value&&m.value>=k.value&&(a.value=0,m.value=0),T()};Qa(E);const P=(G,q=!0)=>{q&&E(),a.value=G,m.value=0,F()},Q=()=>{A.value||P(a.value-1)},M=()=>{p.value||P(a.value+1)},B=G=>P(G),R=G=>P(G),I=G=>{const q=u.value;if(!q)return;E();const re=oe=>{const se=q.getBoundingClientRect(),ue=Math.max(0,Math.min(1,(oe.clientX-se.left)/se.width))*b.value;let ee=0;for(let de=0;deue){a.value=de,m.value=ue-ee,F();return}ee+=z}a.value=n.value.length-1,m.value=y(n.value.length-1)};re(G);const J=()=>{document.removeEventListener("mousemove",re),document.removeEventListener("mouseup",J)};document.addEventListener("mousemove",re),document.addEventListener("mouseup",J)},F=()=>{ai(()=>{var q,re;const G=(q=d.value)==null?void 0:q.querySelectorAll(".shotItem");(re=G==null?void 0:G[a.value])==null||re.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})},j=G=>{const q=Array.isArray(G)?G.length>0:G;n.value.forEach(re=>re.selected=q)},W=()=>{const G=co.confirm({header:$t("workbench.production.preview.restoreSort"),body:$t("workbench.production.preview.restoreSortConfirm"),onConfirm:()=>{n.value.sort((q,re)=>f.indexOf(q.id)-f.indexOf(re.id)),G.destroy()},onClose:()=>G.destroy()})};pt(()=>n.value.map(G=>G.selected),G=>{l.value=G.length>0&&G.every(Boolean)},{deep:!0});const H=()=>ai(()=>h.value=!1);function $(){const G=n.value.filter(q=>q.selected).map(q=>({id:q.id}));if(G.length<=0){co.alert({header:$t("workbench.production.preview.tip"),body:$t("workbench.production.preview.selectAtLeastOne")});return}mn.post("/production/exportImage",{shotId:G},{responseType:"blob"}).then(q=>{const re=URL.createObjectURL(q.data),J=document.createElement("a");J.href=re,J.download=$t("workbench.production.preview.exportFilename")+".zip",J.click(),URL.revokeObjectURL(re)}).catch(q=>{console.error("导出图片失败:",q)})}return(G,q)=>{var Y,ie,te;const re=_n("i-pic"),J=_n("i-go-start"),oe=Si,se=_n("i-go-end"),le=Zh,ue=Sg,ee=py,de=_n("i-undo"),z=_n("i-download");return xe(),Ge("div",ZLs,[ge("div",qLs,[ge("div",KLs,[ge("div",JLs,[(Y=o.value)!=null&&Y.filePath?(xe(),Ge("img",{key:0,src:o.value.filePath,alt:o.value.description,class:"previewImage"},null,8,exs)):(xe(),Ge("div",txs,[c(re,{theme:"outline",size:"48",fill:"#999"}),ge("span",null,Pe(G.$t("workbench.production.preview.noImage")),1)]))]),ge("div",nxs,[ge("div",ixs,[c(oe,{theme:"default",variant:"text",size:"small",shape:"circle",onClick:Q,disabled:A.value},{icon:Oe(()=>[c(J,{theme:"outline",size:"18"})]),_:1},8,["disabled"]),c(oe,{theme:"primary",variant:"text",size:"medium",shape:"circle",onClick:D},{icon:Oe(()=>[(xe(),Ut(Bd(g.value?"i-pause":"i-play"),{theme:"outline",size:"22"}))]),_:1}),c(oe,{theme:"default",variant:"text",size:"small",shape:"circle",onClick:M,disabled:p.value},{icon:Oe(()=>[c(se,{theme:"outline",size:"18"})]),_:1},8,["disabled"])]),ge("div",rxs,[ge("span",oxs,Pe(L(m.value)),1),ge("div",{class:"progressBarWrapper",ref_key:"progressBarRef",ref:u,onMousedown:I},[ge("div",sxs,[(xe(!0),Ge(sn,null,Bi(n.value,(Z,he)=>(xe(),Ge("div",{key:"seg-"+Z.id,class:Eo(["progressSegment",{active:he===a.value,completed:heB(he),["stop"])},null,14,axs))),128)),(xe(!0),Ge(sn,null,Bi(n.value.slice(0,-1),(Z,he)=>(xe(),Ge("div",{key:"div-"+he,class:"segmentDivider",style:no({left:S(he+1)+"%"})},null,4))),128)),ge("div",{class:"progressFill",style:no({width:w.value+"%"})},null,4),ge("div",{class:"progressHandle",style:no({left:w.value+"%"})},null,4)])],544),ge("span",lxs,Pe(L(b.value)),1)])])]),ge("div",cxs,[ge("div",dxs,[ge("div",uxs,[q[4]||(q[4]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.storyboardDesc")),1)]),ge("div",hxs," 【"+Pe(G.$t("workbench.production.preview.serialNumber"))+" "+Pe(a.value+1)+"】"+Pe(((ie=o.value)==null?void 0:ie.description)||G.$t("workbench.production.preview.noDescription")),1)]),ge("div",fxs,[ge("div",gxs,[q[5]||(q[5]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.duration")),1)]),ge("div",mxs,Pe(((te=o.value)==null?void 0:te.duration)!=null?o.value.duration+" "+G.$t("workbench.production.preview.seconds"):"3 "+G.$t("workbench.production.preview.seconds")),1)]),ge("div",kxs,[ge("div",vxs,[q[6]||(q[6]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.relatedAssets")),1)]),ge("div",Axs,[(xe(!0),Ge(sn,null,Bi(s.value,(Z,he)=>(xe(),Ge("div",{key:he,class:"characterItem"},[c(le,{src:Z.avatar,fit:"cover",class:"characterAvatar",style:{width:"80px",height:"80px",borderRadius:"8px"}},null,8,["src"]),c(ue,null,{default:Oe(()=>[Bt(Pe(Z.name)+"("+Pe(Z.type=="role"?G.$t("workbench.production.preview.role"):Z.type=="tool"?G.$t("workbench.production.preview.prop"):G.$t("workbench.production.preview.scene"))+") ",1)]),_:2},1024)]))),128)),s.value.length?nn("",!0):(xe(),Ge("div",pxs,[c(ue,{theme:"default",variant:"light"},{default:Oe(()=>[Bt(Pe(G.$t("workbench.production.preview.noCharacters")),1)]),_:1})]))])]),ge("div",bxs,[ge("div",wxs,[q[7]||(q[7]=ge("span",{class:"titleIndicator"},null,-1)),Bt(" "+Pe(G.$t("workbench.production.preview.imagePrompt")),1)]),ge("div",Oxs,[(xe(!0),Ge(sn,null,Bi(O.value,Z=>(xe(),Ge(sn,{key:Z.label},[Z.value?(xe(),Ge("div",yxs,[ge("span",Cxs,Pe(Z.label)+":",1),ge("span",_xs,Pe(Z.value),1)])):nn("",!0)],64))),128))])])])]),ge("div",Sxs,[ge("div",Lxs,[ge("div",xxs,[c(ee,{modelValue:l.value,"onUpdate:modelValue":q[0]||(q[0]=Z=>l.value=Z),onChange:j},{default:Oe(()=>[Bt(Pe(G.$t("workbench.production.preview.selectAll")),1)]),_:1},8,["modelValue"]),c(oe,{theme:"default",variant:"text",size:"small",onClick:W},{icon:Oe(()=>[c(de,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(G.$t("workbench.production.preview.restoreSort")),1)]),_:1})]),c(oe,{theme:"default",variant:"text",size:"small",class:"exportBtn",onClick:$},{icon:Oe(()=>[c(z,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(G.$t("workbench.production.preview.exportImage")),1)]),_:1})]),ge("div",{class:"shotListWrapper",ref_key:"shotListWrapperRef",ref:d},[c(Ae(YLs),{modelValue:n.value,"onUpdate:modelValue":q[2]||(q[2]=Z=>n.value=Z),animation:150,ghostClass:"shotGhost",dragClass:"shotDrag",scroll:d.value,scrollSensitivity:80,scrollSpeed:10,forceFallback:!0,target:".shotList",onStart:q[3]||(q[3]=Z=>h.value=!0),onEnd:H},{default:Oe(()=>[c(l4n,{type:"transition",tag:"div",name:h.value?void 0:"shot-flip",class:"shotList"},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(n.value,(Z,he)=>(xe(),Ge("div",{key:Z.id,class:Eo(["shotItem",{active:a.value===he}]),onClick:pe=>R(he)},[c(ee,{modelValue:Z.selected,"onUpdate:modelValue":pe=>Z.selected=pe,class:"shotCheckbox",onClick:q[1]||(q[1]=Mr(()=>{},["stop"]))},null,8,["modelValue","onUpdate:modelValue"]),ge("div",Txs,[Z.filePath?(xe(),Ge("img",{key:0,src:Z.filePath,alt:Z.description,class:"shotImage"},null,8,Qxs)):(xe(),Ge("div",Dxs,[c(re,{theme:"outline",size:"24",fill:"#999"})])),c(ue,{class:"shotNumber",size:"small",variant:"dark"},{default:Oe(()=>[Bt("#"+Pe(Z.id),1)]),_:2},1024)])],10,Exs))),128))]),_:1},8,["name"])]),_:1},8,["modelValue","scroll"])],512)])])}}}),Rxs=oo(Bxs,[["__scopeId","data-v-65b71e51"]]),Ixs={class:"generateContainer"},Mxs={class:"data f"},Pxs={class:"videoToImage"},Fxs=["src"],Nxs={key:1,class:"emptyVideo c"},Uxs={class:"promptsMenu f ac jb"},jxs={class:"title"},Wxs={class:"promptInput"},Vxs={class:"modeOpt f w"},zxs=["src"],Hxs={key:1,class:"uploadPreview c"},$xs=["onClick"],Xxs=["onClick"],Gxs=["src"],Yxs=["onClick"],Zxs={class:"storyboardGrid"},qxs=["onClick"],Kxs=["src"],Jxs={class:"modeMenu f ac jb"},e5s={class:"left f ac"},t5s={class:"model"},n5s={class:"status"},i5s={class:"resolutionDurationPicker"},r5s={key:0,class:"pickerSection"},o5s={class:"pickerLabel"},s5s={class:"pickerOptions"},a5s=["onClick"],l5s={key:1,class:"pickerSection"},c5s={class:"pickerLabel"},d5s={class:"pickerOptions"},u5s=["onClick"],h5s={class:"genBtn"},f5s={class:"history"},g5s={class:"titleBox f ac"},m5s={class:"title"},k5s={class:"historyItemBox"},v5s=["onClick"],A5s=["src"],p5s={key:0,class:"loadingOverlay c fc"},b5s={class:"loadingText"},w5s=["onClick"],O5s=["onClick"],y5s=["onClick"],C5s={class:"videoTrack"},_5s={class:"trackMenu f ac jb"},S5s={class:"left f ac"},L5s={key:0,class:"selectedCount"},x5s={class:"right f ac"},E5s={class:"itemBox"},T5s=["onClick"],Q5s={key:1,class:"thumbGroup"},D5s=["src"],B5s={key:1,class:"thumb placeholder c"},R5s={key:2,class:"emptyTrack"},I5s=["onClick"],M5s=Je({__name:"generate",emits:["importVideo"],setup(e,{emit:t}){const n=bt("episodesId"),{project:r}=xs(ph()),o=fe(""),s=X({get:()=>{const Me=P.value[Q.value];return(Me==null?void 0:Me.prompt)??""},set:Me=>{const Se=P.value[Q.value];Se&&(Se.prompt=Me)}}),a=fe("480p"),l=fe(8),d=fe(!1);function u(Me){var Ie;const Se=C.value.durationResolutionMap;if(Array.isArray(Se)&&Se.length>0&&((Ie=Se[0].duration)!=null&&Ie.length)){const ze=Se[0].duration,Ze=Math.min(...ze),gt=Math.max(...ze);return Math.max(Ze,Math.min(Me,gt))}return Me}const h=X(()=>{var Se;if(d.value)return l.value;const Me=((Se=P.value[Q.value])==null?void 0:Se.duration)||l.value;return u(Me)}),g=fe(!1),m=fe({}),v=X(()=>{var Se;const Me=(Se=P.value[Q.value])==null?void 0:Se.id;return Me!=null?!!m.value[Me]:!1}),f=fe({}),k=X(()=>{var Se;const Me=(Se=P.value[Q.value])==null?void 0:Se.id;return Me!=null?!!f.value[Me]:!1});async function A(){var gt;const Me=P.value[Q.value],Se=Me==null?void 0:Me.id;if(Se==null||f.value[Se])return;const Ze=(L.value==="text"?Me.medias:F.value.filter(St=>St.src).map(St=>({id:St.id,src:St.src,prompt:St.prompt,sources:St.sources}))).filter(St=>St.prompt).map(St=>({id:St.id,sources:St.sources?St.sources:"storyboard"}));f.value[Se]=!0;try{const{data:St}=await mn.post("/production/workbench/generateVideoPrompt",{projectId:(gt=r.value)==null?void 0:gt.id,trackId:Se,info:Ze,model:S.value}),Pt=P.value.find(dn=>dn.id===Se);Pt&&(Pt.prompt=St)}finally{f.value[Se]=!1}}const p=fe(null),b=fe([]),w=X(()=>{const Me=P.value[Q.value];return Me!=null&&Me.id?b.value.filter(Se=>Se.videoTrackId===Me.id):[]});function O(Me){Me.state==="生成中"||Me.state==="生成失败"||(o.value=Me.src)}async function y(Me){var Ie,ze;if(Me.state==="生成中"||Me.state==="生成失败")return;const Se=P.value[Q.value];Me.id!=null&&(p.value=Me.id,(Se==null?void 0:Se.id)!=null&&(M.value[Se.id]=Me.id)),o.value=Me.src;try{await mn.post("/production/workbench/selectVideo",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0,videoId:Me.id,trackId:(ze=P.value[Q.value])==null?void 0:ze.id}),window.$message.success($t("workbench.generate.selectVideoSuccess")),Ce()}catch{window.$message.error($t("workbench.generate.selectVideoFailed"))}}const C=fe({}),_=X(()=>{const Me={singleImage:"单图",startEndRequired:"首尾帧",endFrameOptional:"尾帧可选",startFrameOptional:"首帧可选",text:"文本生视频",videoReference:"视频",imageReference:"图片",audioReference:"音频",textReference:"文本"};return C.value.mode?C.value.mode.map(Se=>Array.isArray(Se)?{value:JSON.stringify(Se),label:Se.map(Ie=>Me[Ie]||Ie).join(" + ")+"参考"}:{value:Se,label:Me[Se]||Se}):[]}),S=fe(),L=fe(),E=X(()=>{const Me=D(L.value||"");return Array.isArray(Me)}),T=X(()=>{const Me=D(L.value||"");if(!Array.isArray(Me))return[];const Se={audioReference:"audio",imageReference:"image",videoReference:"video"};return Me.filter(Ie=>Ie in Se).map(Ie=>Se[Ie])});function D(Me){if(!Me)return null;try{const Se=JSON.parse(Me);if(Array.isArray(Se))return Se}catch{return Me}return Me}const P=fe([]),Q=fe(0),M=fe({});async function B(){var Ie;const{data:Me}=await mn.post("/production/workbench/addTrack",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0}),Se=typeof Me=="object"&&Me!==null?Me.id:Me;P.value.push({id:Se,prompt:"",state:"未生成",medias:[],videoList:[],duration:0}),Q.value=P.value.length-1}function R(Me){const Se=co.confirm({header:$t("workbench.generate.del"),body:$t("workbench.generate.delConfirm"),onConfirm:()=>{Se.destroy(),I(Me),window.$message.success($t("workbench.generate.delSuccess")),Ce()},onCancel:()=>{Se.destroy()}})}async function I(Me){const Se=P.value[Me];Se&&(await mn.post("/production/workbench/deleteTrack",{id:Se.id}),Q.value>=P.value.length&&(Q.value=P.value.length-1))}const F=fe([]),j=X(()=>F.value.filter(Me=>Me.src).map(Me=>({type:Me.fileType,src:Me.src}))),W=fe([]),H=fe(!1),$=fe(-1);function G(Me){const Se=D(Me);if(!Se)return[];const Ie={videoReference:{fileType:"video",type:"videoReference",sources:"storyboard",label:"参考视频"},imageReference:{fileType:"image",type:"imageReference",sources:"storyboard",label:"参考图片"},audioReference:{fileType:"audio",type:"audioReference",sources:"storyboard",label:"参考音频"}},ze={singleImage:[{fileType:"image",type:"imageReference",sources:"storyboard",label:"参考图片"}],startEndRequired:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧"}],endFrameOptional:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧(可选)"}],startFrameOptional:[{fileType:"image",type:"startImage",sources:"storyboard",label:"首帧(可选)"},{fileType:"image",type:"endImage",sources:"storyboard",label:"末帧"}],text:[]};return Array.isArray(Se)?Se.filter(Ze=>Ze!=="textReference").map(Ze=>({...Ie[Ze]})):(ze[Se]||[]).map(Ze=>({...Ze}))}const q={image:["role","scene","tool"],video:["clip"],audio:["clip"]};function re(Me){const Se=F.value[Me];if(!Se)return;$.value=Me;const Ie=co.confirm({header:$t("workbench.generate.selectSource"),confirmBtn:$t("workbench.generate.confirm"),cancelBtn:$t("workbench.generate.cancel"),onConfirm:async()=>{Ie.destroy();const ze=await jV({types:q[Se.fileType],multiple:!1});ze.length>0&&(de.value=!0,F.value[Me]={...Se,sources:"assets",src:ze[0].src,id:ze[0].id,prompt:ze[0].prompt})},onCancel:()=>{Ie.destroy(),H.value=!0}})}async function J(){const Me=co.confirm({header:$t("workbench.generate.selectSource"),confirmBtn:$t("workbench.generate.confirm"),cancelBtn:$t("workbench.generate.cancel"),onConfirm:async()=>{Me.destroy();const Se=await jV({types:["role","tool","scene","clip"],clipMediaTypes:T.value,multiple:!0});if(Se.length){de.value=!0;for(const Ie of Se){const ze=se(Ie.src);F.value.push({fileType:ze,type:oe[ze],sources:"assets",src:Ie.src,id:Ie.id,prompt:Ie.prompt,label:""})}}},onCancel:()=>{Me.destroy(),$.value=-1,H.value=!0}})}const oe={image:"imageReference",video:"videoReference",audio:"audioReference"};function se(Me){var Ze;const Se=((Ze=Me==null?void 0:Me.split(".").pop())==null?void 0:Ze.toLowerCase())??"",Ie=["mp4","webm","mov","avi","mkv"],ze=["mp3","wav","ogg","aac","flac","m4a"];return Ie.includes(Se)?"video":ze.includes(Se)?"audio":"image"}function le(Me){if(H.value=!1,de.value=!0,E.value){const Ie=se(Me.src);F.value.push({fileType:Ie,type:oe[Ie],sources:"storyboard",src:Me.src,id:Me.id,prompt:Me.prompt??void 0,label:""});return}const Se=F.value[$.value];Se&&(F.value[$.value]={...Se,sources:"storyboard",src:Me.src,id:Me.id,prompt:Me.prompt??void 0})}function ue(Me){const Se=F.value[Me];Se&&(de.value=!0,E.value?F.value.splice(Me,1):F.value[Me]={...Se,sources:"storyboard",src:void 0,id:void 0,prompt:void 0})}async function ee(){var Ie;const Me=(Ie=P.value[Q.value])==null?void 0:Ie.id;if(Me==null||m.value[Me])return;const Se=co.confirm({header:$t("workbench.generate.generateConfirm"),body:$t("workbench.generate.generateConfirmBody"),onConfirm:async()=>{var ze;Se.destroy(),m.value[Me]=!0;try{const Ze={projectId:(ze=r.value)==null?void 0:ze.id,scriptId:n.value,uploadData:F.value.filter(St=>!!St.src),prompt:s.value,model:S.value,mode:L.value,resolution:a.value,duration:h.value,audio:g.value,trackId:Me},{data:gt}=await mn.post("/production/workbench/generateVideo",Ze);window.$message.success($t("workbench.generate.generateStarted")),Ye()}finally{m.value[Me]=!1}},onCancel:()=>{Se.destroy()}})}pt(S,Me=>{if(!Me){C.value={},L.value=void 0;return}mn.post("/modelSelect/getModelDetail",{modelId:Me}).then(({data:Se})=>{var ze,Ze;C.value=Se;const Ie=Se.durationResolutionMap;Array.isArray(Ie)&&Ie.length>0&&((ze=Ie[0].resolution)!=null&&ze.length&&(a.value=Ie[0].resolution[0]),(Ze=Ie[0].duration)!=null&&Ze.length&&(l.value=Ie[0].duration[0])),d.value=!1})});const de=fe(!1),z=fe([]);pt(L,Me=>{if(!Me)return F.value=[];const Se=F.value;Se.some(gt=>gt.src)&&(z.value=Se.filter(gt=>gt.src).map(gt=>({...gt})));const Ie=G(Me),ze=D(Me);if(Array.isArray(ze))F.value=Se.filter(gt=>gt.src);else{const gt=z.value.filter(Pt=>Pt.src),St=new Set;F.value=Ie.map(Pt=>{const dn=gt.findIndex((on,pn)=>!St.has(pn)&&on.fileType===Pt.fileType&&on.src);if(dn!==-1){St.add(dn);const on=gt[dn];return{...Pt,src:on.src,id:on.id,prompt:on.prompt,sources:on.sources??Pt.sources}}return Pt})}de.value=!1}),pt(F,Me=>{if(!de.value)return;const Se=P.value[Q.value];Se&&(Se.medias=Me.filter(Ie=>Ie.src).map(Ie=>({src:Ie.src,id:Ie.id,prompt:Ie.prompt,fileType:Ie.fileType,sources:Ie.sources})))},{deep:!0});const Y=fe([]),ie=fe(!1);function te(Me){const Se=P.value.map(Ie=>Ie.id).filter(Ie=>Ie!=null);Y.value=Me?Se:[]}function Z(Me,Se){if(Me==null)return;Se?Y.value.includes(Me)||Y.value.push(Me):Y.value=Y.value.filter(ze=>ze!==Me);const Ie=P.value.map(ze=>ze.id).filter(ze=>ze!=null);ie.value=Ie.length>0&&Ie.every(ze=>Y.value.includes(ze))}pt(P,Me=>{const Se=Me.map(Ie=>Ie.id).filter(Ie=>Ie!=null);Y.value=Y.value.filter(Ie=>Se.includes(Ie)),ie.value=Se.length>0&&Se.every(Ie=>Y.value.includes(Ie)),f.value=Object.fromEntries(Object.entries(f.value).filter(([Ie])=>Se.includes(Number(Ie)))),m.value=Object.fromEntries(Object.entries(m.value).filter(([Ie])=>Se.includes(Number(Ie))))},{deep:!0});function he(){const Me=L.value==="text";P.value.filter(Se=>Y.value.includes(Se.id)).forEach(async Se=>{var St;const Ie=Se.id;if(Ie==null||f.value[Ie])return;const ze=L.value?G(L.value):[],gt=(Me?Se.medias:ze.map((Pt,dn)=>Se.medias[dn]).filter(Boolean)).filter(Pt=>Pt==null?void 0:Pt.prompt).map(Pt=>({id:Pt.id,sources:Pt.sources?Pt.sources:"storyboard"}));f.value[Ie]=!0;try{const{data:Pt}=await mn.post("/production/workbench/generateVideoPrompt",{projectId:(St=r.value)==null?void 0:St.id,trackId:Ie,info:gt,model:S.value}),dn=P.value.find(on=>on.id===Ie);dn&&(dn.prompt=Pt)}finally{f.value[Ie]=!1}})}function pe(){const Me=co.confirm({header:$t("workbench.generate.generateConfirm"),body:$t("workbench.generate.generateVideosInBatches"),onConfirm:async()=>{Me.destroy();const Se=L.value?G(L.value):[];P.value.filter(Ie=>Y.value.includes(Ie.id)).forEach(async Ie=>{var Ze;const ze=Ie.id;if(!(ze==null||m.value[ze])){m.value[ze]=!0;try{const gt=Se.map((dn,on)=>Ie.medias[on]).filter(dn=>dn&&!!dn.src),St={projectId:(Ze=r.value)==null?void 0:Ze.id,duration:u(Ie.duration||l.value),scriptId:n.value,uploadData:gt.map(dn=>({id:dn.id,sources:dn.sources?dn.sources:"storyboard"})),prompt:Ie.prompt,model:S.value,mode:L.value,resolution:a.value,audio:g.value,trackId:ze};if(St.prompt==="")return window.$message.warning($t("workbench.generate.skipDataWithEmptyVideoPromptWords"));const{data:Pt}=await mn.post("/production/workbench/generateVideo",St);window.$message.success($t("workbench.generate.generateStarted")),Ye()}finally{m.value[ze]=!1}}})},onCancel:()=>{Me.destroy()}})}async function Ce(){var Se;const{data:Me}=await mn.post("/production/workbench/getGenerateData",{projectId:(Se=r.value)==null?void 0:Se.id,scriptId:n.value??0});P.value=Me.trackList,M.value={};for(const Ie of P.value)Ie.id!=null&&Ie.selectVideoId!=null&&(M.value[Ie.id]=Ie.selectVideoId);W.value=Me.storyboardList,Qe(),Ye()}function Qe(){const Me=P.value[Q.value];if(!Me)return;const Se=Me.medias;F.value=F.value.map((Ie,ze)=>{const Ze=Se[ze];return Ze!=null&&Ze.src?{...Ie,src:Ze.src,id:Ze.id,prompt:Ze.prompt,sources:Ze.sources??Ie.sources}:{...Ie,src:void 0,id:void 0,prompt:void 0}})}function ke(){const Me=P.value[Q.value];if(!(Me!=null&&Me.id)){p.value=null,o.value="";return}const Se=M.value[Me.id]??Me.selectVideoId??null;if(p.value=Se,Se==null){o.value="";return}const Ie=b.value.find(ze=>ze.videoTrackId===Me.id&&ze.id===Se);if(Ie&&Ie.state!=="生成中"&&Ie.state!=="生成失败"){o.value=Ie.src;return}o.value=""}An(()=>{var Me,Se;S.value=((Me=r.value)==null?void 0:Me.videoModel)||"",L.value=((Se=r.value)==null?void 0:Se.mode)||"",Ce()});const me=X(()=>b.value.some(Me=>Me.state==="生成中"));let _e=null;function Te(){_e===null&&(_e=window.setInterval(()=>{Ye()},3e3))}function De(){_e!==null&&(window.clearInterval(_e),_e=null)}pt(()=>me.value,Me=>{Me?Te():De()}),Qa(()=>{De()});async function Ye(){var Ie;const{data:Me}=await mn.post("/production/workbench/getVideoList",{projectId:(Ie=r.value)==null?void 0:Ie.id,scriptId:n.value??0}),Se=b.value;b.value=Me,ke();for(const ze of Me){const Ze=Se.find(gt=>gt.id===ze.id);Ze&&(Ze.state==="生成中"&&ze.state==="已完成"?window.$message.success($t("workbench.generate.generateSuccess")):Ze.state==="生成中"&&ze.state==="生成失败"&&window.$message.error(ze.errorReason||$t("workbench.generate.generateFailed")))}}pt(Q,()=>{d.value=!1,Qe(),ke()});function ot(Me){a.value=Me}function We(Me){l.value=Me,d.value=!0}function et(Me){const Se=co.confirm({header:$t("workbench.generate.del"),body:$t("workbench.generate.delVideo"),onConfirm:()=>{mn.post("/production/workbench/delVideo",{id:Me.id}).then(()=>{window.$message.success($t("workbench.generate.delSuccess")),Se.destroy(),Ye()})},onCancel:()=>{Se.destroy()}})}async function st(Me){const Se=Me.src,ze=await(await fetch(Se)).blob(),Ze=document.createElement("a");Ze.href=URL.createObjectURL(ze);const gt="视频.mp4";Ze.download=gt,document.body.appendChild(Ze),Ze.click(),document.body.removeChild(Ze),URL.revokeObjectURL(Ze.href)}return(Me,Se)=>{const Ie=Sg,ze=Si,Ze=_n("i-volume-notice"),gt=_n("i-video"),St=_n("i-close"),Pt=_n("i-plus"),dn=gc,on=T8,pn=uL,ni=pA,Zn=_n("i-volume-mute"),Pi=y1,rr=_n("i-time"),Hr=Wc,Bo=el,lo=_n("i-check"),Fr=_n("i-delete"),is=_n("i-to-bottom"),yi=py;return xe(),Ge("div",Ixs,[ge("div",Mxs,[ge("div",Pxs,[Ae(o)?(xe(),Ge("video",{key:0,src:Ae(o),class:"previewVideo",controls:"",preload:"metadata"},null,8,Fxs)):(xe(),Ge("div",Nxs,Pe(Me.$t("workbench.generate.noVideo")),1))]),ge("div",{class:Eo(["configurationParameters",{hasActive:Ae(P).length>0}])},[ge("div",Uxs,[ge("div",jxs,[c(Ie,{theme:"primary",size:"small",style:{"margin-right":"10px"}},{default:Oe(()=>[Bt("#"+Pe(Ae(Q)+1),1)]),_:1}),Bt(" "+Pe(Me.$t("workbench.generate.prompt")),1)]),c(ze,{size:"small",class:"genTextbtn",loading:Ae(k),onClick:A},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generateText")),1)]),_:1},8,["loading"])]),ge("div",Wxs,[c(LZn,{modelValue:Ae(s),"onUpdate:modelValue":Se[0]||(Se[0]=Gt=>Fn(s)?s.value=Gt:null),references:Ae(j),placeholder:Me.$t("workbench.generate.promptPlaceholder")},null,8,["modelValue","references","placeholder"])]),ge("div",Vxs,[Ae(E)?(xe(),Ge(sn,{key:0},[(xe(!0),Ge(sn,null,Bi(Ae(F),(Gt,gi)=>uu((xe(),Ge("div",{class:"uploadBtn c fc",key:gi},[Gt.src?(xe(),Ge(sn,{key:0},[Gt.fileType==="image"?(xe(),Ge("img",{key:0,src:Gt.src,class:"uploadPreview"},null,8,zxs)):(xe(),Ge("div",Hxs,[Gt.fileType==="audio"?(xe(),Ut(Ze,{key:0,size:"24"})):(xe(),Ut(gt,{key:1,size:"24"}))])),ge("div",{class:"clearBtn",onClick:Mr(ri=>ue(gi),["stop"])},[c(St,{size:"12"})],8,$xs)],64)):nn("",!0)])),[[h1,Gt.src]])),128)),ge("div",{class:"uploadBtn c fc",onClick:J},[c(Pt,{size:"24"}),Bt(" "+Pe(Me.$t("workbench.generate.addReference")),1)])],64)):(xe(!0),Ge(sn,{key:1},Bi(Ae(F),(Gt,gi)=>(xe(),Ge("div",{class:"uploadBtn c fc",key:gi,onClick:ri=>re(gi)},[Gt.src?(xe(),Ge(sn,{key:0},[ge("img",{src:Gt.src,class:"uploadPreview"},null,8,Gxs),ge("div",{class:"clearBtn",onClick:Mr(ri=>ue(gi),["stop"])},[c(St,{size:"12"})],8,Yxs)],64)):(xe(),Ge(sn,{key:1},[c(Pt,{size:"24"}),Bt(" "+Pe(Gt.label),1)],64))],8,Xxs))),128))]),c(dn,{visible:Ae(H),"onUpdate:visible":Se[1]||(Se[1]=Gt=>Fn(H)?H.value=Gt:null),header:Me.$t("workbench.generate.selectStoryboard"),footer:!1,width:"800px",placement:"center"},{default:Oe(()=>[ge("div",Zxs,[(xe(!0),Ge(sn,null,Bi(Ae(W),Gt=>(xe(),Ge("div",{class:"storyboardItem",key:Gt.id,onClick:gi=>le(Gt)},[ge("img",{src:Gt.src},null,8,Kxs)],8,qxs))),128))])]),_:1},8,["visible","header"]),ge("div",Jxs,[ge("div",e5s,[ge("div",t5s,[c(on,{modelValue:Ae(S),"onUpdate:modelValue":Se[2]||(Se[2]=Gt=>Fn(S)?S.value=Gt:null),type:"video",size:"small"},null,8,["modelValue"])]),c(ni,{size:"small",class:"mode",modelValue:Ae(L),"onUpdate:modelValue":Se[3]||(Se[3]=Gt=>Fn(L)?L.value=Gt:null)},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(_),(Gt,gi)=>(xe(),Ut(pn,{key:gi,value:Gt.value,label:Gt.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),c(ze,{size:"small",variant:"outline",theme:Ae(g)?"success":"danger",class:"audio",onClick:Se[4]||(Se[4]=Gt=>g.value=!Ae(g))},{icon:Oe(()=>[Ae(g)?(xe(),Ut(Ze,{key:0,size:"16"})):(xe(),Ut(Zn,{key:1,size:"16"}))]),_:1},8,["theme"]),ge("div",n5s,[c(Pi,{trigger:"click",placement:"top","overlay-class-name":"resDurPickerPopup","overlay-inner-style":{padding:"16px",borderRadius:"8px"}},{content:Oe(()=>[ge("div",i5s,[Array.isArray(Ae(C).durationResolutionMap)&&Ae(C).durationResolutionMap.length>0&&Ae(C).durationResolutionMap[0].resolution&&Ae(C).durationResolutionMap[0].resolution.length>0?(xe(),Ge("div",r5s,[ge("div",o5s,Pe(Me.$t("workbench.generate.resolution")),1),ge("div",s5s,[(xe(!0),Ge(sn,null,Bi(Ae(C).durationResolutionMap[0].resolution,Gt=>(xe(),Ge("div",{key:Gt,class:Eo(["pickerOption",{active:Ae(a)===Gt}]),onClick:gi=>ot(Gt)},Pe(Gt),11,a5s))),128))])])):nn("",!0),Array.isArray(Ae(C).durationResolutionMap)&&Ae(C).durationResolutionMap.length>0&&Ae(C).durationResolutionMap[0].duration&&Ae(C).durationResolutionMap[0].duration.length>0?(xe(),Ge("div",l5s,[ge("div",c5s,Pe(Me.$t("workbench.generate.duration")),1),ge("div",d5s,[(xe(!0),Ge(sn,null,Bi(Ae(C).durationResolutionMap[0].duration,Gt=>(xe(),Ge("div",{key:Gt,class:Eo(["pickerOption",{active:Ae(h)===Gt}]),onClick:gi=>We(Gt)},Pe(Gt)+"s ",11,u5s))),128))])])):nn("",!0)])]),default:Oe(()=>[c(Ie,{class:"btn",variant:"outline"},{default:Oe(()=>[Bt(Pe(Ae(a))+"·"+Pe(Ae(h))+"s",1)]),_:1})]),_:1})])]),ge("div",h5s,[c(ze,{size:"small",loading:Ae(v),onClick:ee},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generate")),1)]),_:1},8,["loading"])])]),ge("div",f5s,[ge("div",g5s,[c(rr),ge("span",m5s,Pe(Me.$t("workbench.generate.history"))+"("+Pe(Ae(w).length)+")",1)]),ge("div",k5s,[(xe(!0),Ge(sn,null,Bi(Ae(w),Gt=>(xe(),Ge("div",{class:Eo(["historyItem",{active:Gt.id===Ae(p),generating:Gt.state==="生成中",failed:Gt.state==="生成失败"}]),key:Gt.id,onClick:gi=>O(Gt)},[ge("video",{src:Gt.src,preload:"metadata",muted:""},null,8,A5s),Gt.state==="生成中"?(xe(),Ge("div",p5s,[c(Hr,{size:"24px"}),ge("span",b5s,Pe(Me.$t("workbench.generate.generating")),1)])):Gt.state==="生成失败"?(xe(),Ut(Bo,{key:1,placement:"top",content:Gt.errorReason,theme:"light"},{default:Oe(()=>[c(Ie,{class:"stateTag",theme:"danger",size:"small"},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.generateFailed")),1)]),_:1})]),_:1},8,["content"])):nn("",!0),Gt.state!=="生成中"?(xe(),Ge("div",{key:2,class:"selectBtn",onClick:Mr(gi=>y(Gt),["stop"])},[c(lo,{size:"16"})],8,w5s)):nn("",!0),ge("div",{class:"delBtn",onClick:Mr(gi=>et(Gt),["stop"])},[c(Fr,{size:"16"})],8,O5s),Gt.state!=="生成中"&&Gt.state!=="生成失败"?(xe(),Ge("div",{key:3,class:"download",onClick:Mr(gi=>st(Gt),["stop"])},[c(is,{size:"16"})],8,y5s)):nn("",!0)],10,v5s))),128))])])],2)]),ge("div",C5s,[ge("div",_5s,[ge("div",S5s,[c(yi,{modelValue:Ae(ie),"onUpdate:modelValue":Se[5]||(Se[5]=Gt=>Fn(ie)?ie.value=Gt:null),onChange:te},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.selectAll")),1)]),_:1},8,["modelValue"]),Ae(Y).length?(xe(),Ge("span",L5s,Pe(Me.$t("workbench.generate.selected"))+" "+Pe(Ae(Y).length)+" 段",1)):nn("",!0)]),ge("div",x5s,[c(ze,{size:"small",variant:"outline",onClick:he},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.batchGenerateText")),1)]),_:1}),c(ze,{size:"small",variant:"outline",onClick:pe},{default:Oe(()=>[Bt(Pe(Me.$t("workbench.generate.batchGenerateVideo")),1)]),_:1})])]),ge("div",E5s,[(xe(!0),Ge(sn,null,Bi(Ae(P),(Gt,gi)=>(xe(),Ge("div",{class:Eo(["item",{active:gi===Ae(Q)}]),key:gi,onClick:ri=>Q.value=gi},[c(yi,{class:"trackCheck",checked:Gt.id!=null&&Ae(Y).includes(Gt.id),onClick:Se[6]||(Se[6]=Mr(()=>{},["stop"])),onChange:ri=>Z(Gt.id,ri)},null,8,["checked","onChange"]),c(Ie,{class:"indexTag",size:"small"},{default:Oe(()=>[Bt("#"+Pe(gi+1),1)]),_:2},1024),Gt.selectVideoId?(xe(),Ut(Ie,{key:0,class:"selectTag",theme:"success",size:"small"},{default:Oe(()=>[...Se[7]||(Se[7]=[Bt("已选择",-1)])]),_:1})):nn("",!0),Gt.medias.length?(xe(),Ge("div",Q5s,[(xe(!0),Ge(sn,null,Bi(Gt.medias,(ri,tr)=>(xe(),Ge(sn,{key:tr},[ri.fileType==="image"?(xe(),Ge("img",{key:0,src:ri.src,class:"thumb"},null,8,D5s)):(xe(),Ge("div",B5s,[ri.fileType==="audio"?(xe(),Ut(Ze,{key:0,size:"20"})):(xe(),Ut(gt,{key:1,size:"24"}))]))],64))),128))])):(xe(),Ge("span",R5s,Pe(Me.$t("workbench.generate.emptyTrack",gi+1)),1)),ge("div",{class:"deleteBtn",onClick:Mr(ri=>R(gi),["stop"])},[c(St,{size:"14"})],8,I5s)],10,T5s))),128)),ge("div",{class:"item addItem c",onClick:B},[c(Pt,{size:"36"})])])])])}}}),P5s=oo(M5s,[["__scopeId","data-v-8ebd1229"]]);var F5s=Object.defineProperty,Oqn=e=>{throw TypeError(e)},N5s=(e,t,n)=>t in e?F5s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jy=(e,t,n)=>N5s(e,typeof t!="symbol"?t+"":t,n),nat=(e,t,n)=>t.has(e)||Oqn("Cannot "+n),Ht=(e,t,n)=>(nat(e,t,"read from private field"),n?n.call(e):t.get(e)),bo=(e,t,n)=>t.has(e)?Oqn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Rr=(e,t,n,r)=>(nat(e,t,"write to private field"),t.set(e,n),n),U5s=(e,t,n)=>(nat(e,t,"access private method"),n);function Yre(e=""){return`${e}${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function j5s(){return/Mac|iPod|iPhone|iPad/.test(navigator.platform)}function Ar(e){return Math.round(e*1e3)/1e3}const G0=Wy("tracks",()=>{const e=fe([]),t=fe(new Set),n=fe({clips:[],operation:null}),r=X(()=>e.value.find(re=>re.isMain)),o=X(()=>[...e.value].sort((re,J)=>{const oe=ue=>ue.isMain?100:{effect:10,filter:20,sticker:30,subtitle:40,video:50,audio:200}[ue.type]||0,se=oe(re),le=oe(J);return se!==le?se-le:re.order-J.order})),s=X(()=>{let re=0;return e.value.forEach(J=>{J.clips.forEach(oe=>{oe.endTime>re&&(re=oe.endTime)})}),re}),a=X(()=>{const re=[];return e.value.forEach(J=>{J.clips.forEach(oe=>{t.value.has(oe.id)&&re.push(oe)})}),re});function l(re){if((re.type==="video"||re.type==="audio")&&"playbackRate"in re){const J=re,oe=J.playbackRate||1;if(typeof J.trimStart=="number"&&typeof J.trimEnd=="number"){const se=J.trimEnd-J.trimStart,le=Ar(se/oe);return{...J,endTime:Ar(J.startTime+le)}}}return re}function d(re){return re.map(J=>({...J,clips:J.clips?J.clips.map(l):[]}))}function u(re){e.value=d(re)}function h(re){re.clips&&re.clips.length>0&&(re.clips=re.clips.map(l)),e.value.push(re)}function g(re){const J=e.value.findIndex(oe=>oe.id===re);J!==-1&&e.value.splice(J,1)}function m(re,J){const oe=e.value.find(se=>se.id===re);oe&&Object.assign(oe,J)}function v(re,J){const oe=e.value.findIndex(le=>le.id===re);if(oe===-1)return null;const se={id:`track-${Date.now()}`,type:J,name:`${J} ${k(J)+1}`,visible:!0,locked:!1,clips:[],order:oe};return e.value.forEach(le=>{le.order>=oe&&le.order++}),e.value.splice(oe,0,se),se}function f(re,J){const oe=e.value.findIndex(le=>le.id===re);if(oe===-1)return null;const se={id:`track-${Date.now()}`,type:J,name:`${J} ${k(J)+1}`,visible:!0,locked:!1,clips:[],order:oe+1};return e.value.forEach(le=>{le.order>oe&&le.order++}),e.value.splice(oe+1,0,se),se}function k(re){return e.value.filter(J=>J.type===re).length}function A(re,J){const oe=e.value.find(se=>se.id===re);if(oe){const se=l(J);oe.clips.push(se)}}function p(re){e.value.forEach(J=>{const oe=J.clips.findIndex(se=>se.id===re);if(oe!==-1){const se=J.clips[oe];if(se.type==="video"){J.clips.filter(ue=>{if(ue.type!=="transition")return!1;const ee=ue,de=(ee.startTime+ee.endTime)/2,z=Math.abs(de-se.startTime){const ee=J.clips.findIndex(de=>de.id===ue.id);ee!==-1&&(J.clips.splice(ee,1),t.value.delete(ue.id))});const le=J.clips.findIndex(ue=>ue.id===re);le!==-1&&J.clips.splice(le,1)}else J.clips.splice(oe,1)}}),t.value.delete(re)}function b(re){re.forEach(J=>p(J))}function w(re,J){const oe={...re};for(const se in J)if(Object.prototype.hasOwnProperty.call(J,se)){const le=J[se],ue=re[se];le==null?oe[se]=le:typeof le=="object"&&!Array.isArray(le)&&typeof ue=="object"&&ue!==null&&!Array.isArray(ue)?oe[se]=w(ue,le):oe[se]=le}return oe}function O(re,J){e.value.forEach(oe=>{const se=oe.clips.findIndex(le=>le.id===re);if(se!==-1){const le=oe.clips[se];oe.clips[se]=w(le,J)}})}function y(re,J){let oe=null;for(const se of e.value){const le=se.clips.findIndex(ue=>ue.id===re);if(le!==-1){oe=se.clips.splice(le,1)[0],se.id;break}}if(oe){const se=e.value.find(le=>le.id===J);se&&(oe.trackId=J,se.clips.push(oe))}}function C(re){for(const J of e.value){const oe=J.clips.find(se=>se.id===re);if(oe)return oe}}function _(re,J=!1){J||t.value.clear(),t.value.add(re)}function S(re){t.value.has(re)?t.value.delete(re):t.value.add(re)}function L(re){t.value.delete(re)}function E(){t.value.clear()}function T(re,J,oe,se){const le=e.value.find(ue=>ue.id===re);return le?le.clips.some(ue=>se&&ue.id===se?!1:ue.startTimeJ):!1}function D(){e.value=[],t.value.clear()}function P(){const re=[];e.value.forEach(J=>{J.isMain||J.clips.some(oe=>oe.type!=="transition")||re.push(J.id)}),re.forEach(J=>{g(J)})}function Q(re){const J=re||Array.from(t.value);if(J.length===0)return!1;const oe=[];return J.forEach(se=>{const le=C(se);le&&oe.push(JSON.parse(JSON.stringify(le)))}),oe.length>0?(n.value={clips:oe,operation:"copy"},!0):!1}function M(re){const J=re||Array.from(t.value);if(J.length===0)return!1;const oe=[];return J.forEach(se=>{const le=C(se);le&&oe.push(JSON.parse(JSON.stringify(le)))}),oe.length>0?(n.value={clips:oe,operation:"cut"},!0):!1}function B(re,J,oe,se=[]){const le=e.value.find(z=>z.id===re);if(!le)return J;const ue=le.clips.filter(z=>!se.includes(z.id)).sort((z,Y)=>z.startTime-Y.startTime);if(ue.length===0)return J;let ee=J,de=J+oe;for(const z of ue)eez.startTime&&(ee=z.endTime,de=ee+oe);return Math.max(0,ee)}function R(re,J){if(n.value.clips.length===0)return null;const oe=e.value.find(Y=>Y.id===re);if(!oe)return null;const se=[],le=()=>`clip-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,ue=Math.min(...n.value.clips.map(Y=>Y.startTime)),ee=Math.max(...n.value.clips.map(Y=>Y.endTime-ue)),de=n.value.operation==="cut"?n.value.clips.map(Y=>Y.id):[],z=B(re,J,ee,de);return n.value.clips.forEach(Y=>{const ie=Y.endTime-Y.startTime,te=Y.startTime-ue,Z={...Y,id:le(),trackId:re,startTime:z+te,endTime:z+te+ie,selected:!1};oe.clips.push(Z),se.push(Z)}),n.value.operation==="cut"&&(n.value.clips.forEach(Y=>{p(Y.id)}),n.value={clips:[],operation:null}),se.length>0?se:null}function I(){return n.value.clips.length>0}function F(){return n.value}function j(){n.value={clips:[],operation:null}}function W(re,J){let oe=null,se=null,le=-1;for(const z of e.value){const Y=z.clips.findIndex(ie=>ie.id===re);if(Y!==-1){oe=z.clips[Y],se=z,le=Y;break}}if(!oe||!se||le===-1||J<=oe.startTime||J>=oe.endTime)return null;const ue=()=>`clip-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,ee={...JSON.parse(JSON.stringify(oe)),endTime:J},de={...JSON.parse(JSON.stringify(oe)),id:ue(),startTime:J,selected:!1};if("trimStart"in oe&&"trimEnd"in oe&&"originalDuration"in oe){const z=oe,Y=z.endTime-z.startTime,ie=(z.trimEnd-z.trimStart)/Y,te=(J-z.startTime)*ie,Z=z.trimStart+te;ee.trimEnd=Z,de.trimStart=Z}return se.clips.splice(le,1,ee,de),t.value.has(re)&&(t.value.delete(re),t.value.add(ee.id)),{leftClip:ee,rightClip:de}}function H(re,J,oe){const{allowShrink:se=!0,allowExpand:le=!0,handleCollision:ue=!0,keepStartTime:ee=!0}=oe||{};if(J<.25||J>4)return{success:!1,message:"播放倍速必须在 0.25 到 4 之间"};let de=null,z=null;for(const ot of e.value){const We=ot.clips.find(et=>et.id===re);if(We){de=We,z=ot;break}}if(!de||!z)return{success:!1,message:"未找到指定的 Clip"};if(de.type!=="video"&&de.type!=="audio")return{success:!1,message:"只有视频或音频类型的 Clip 可以调整倍速"};const Y=de,ie=Y.playbackRate||1;if(Math.abs(ie-J)<.001)return{success:!0};const te=Y.trimEnd-Y.trimStart,Z=Y.endTime-Y.startTime,he=Ar(te/J),pe=he>Z,Ce=he{if(ot.type!=="transition")return!1;const We=ot,et=(We.startTime+We.endTime)/2,st=Math.abs(et-Y.startTime)ot.id!==re&&ot.type!=="transition").sort((ot,We)=>ot.startTime-We.startTime),Ye=De.filter(ot=>Qeot.startTime);if(Ye.length>0){if(!ue)return{success:!1,message:"会与其他 Clip 产生碰撞"};const ot=Ye.filter(et=>et.startTime>=Y.startTime),We=ke-Math.min(...ot.map(et=>et.startTime));if(We>0){const et=De.filter(st=>st.startTime>=Y.endTime);for(const st of et){const Me=Ar(st.startTime+We),Se=Ar(st.endTime+We);O(st.id,{startTime:Me,endTime:Se}),_e.push({id:st.id,startTime:Me,endTime:Se})}}}O(re,{playbackRate:J,startTime:Qe,endTime:ke});for(const ot of Te){const We=ot,et=(We.startTime+We.endTime)/2,st=z.clips.filter(ze=>ze.type!=="transition");({...Y});const Me=Math.abs(et-Y.startTime)Ze.id!==re&&Math.abs(Ze.startTime-ke)<.01);if(Ie=!!ze,Ie&&ze){const Ze=(ke+ze.startTime)/2,gt=We.transitionDuration/2;O(ot.id,{startTime:Ar(Ze-gt),endTime:Ar(Ze+gt)})}}else if(Me&&!ee){const ze=st.find(Ze=>Ze.id!==re&&Math.abs(Ze.endTime-Qe)<.01);if(Ie=!!ze,Ie&&ze){const Ze=(ze.endTime+Qe)/2,gt=We.transitionDuration/2;O(ot.id,{startTime:Ar(Ze-gt),endTime:Ar(Ze+gt)})}}else Me&&ee&&(Ie=!0);Ie||(p(ot.id),me.push(ot.id))}return{success:!0,removedTransitions:me.length>0?me:void 0,adjustedClips:_e.length>0?_e:void 0}}function $(re,J){const oe=C(re);if(!oe||oe.type!=="video"&&oe.type!=="audio")return null;const se=oe,le=se.trimEnd-se.trimStart;return Ar(le/J)}function G(re,J,oe=!0){const se=C(re);if(!se||se.type!=="video"&&se.type!=="audio")return{willCollide:!1};const le=se,ue=le.trimEnd-le.trimStart,ee=Ar(ue/J);let de,z;oe?(de=le.startTime,z=Ar(le.startTime+ee)):(z=le.endTime,de=Ar(Math.max(0,le.endTime-ee)));let Y=null;for(const te of e.value)if(te.clips.some(Z=>Z.id===re)){Y=te;break}if(!Y)return{willCollide:!1,newDuration:ee};const ie=Y.clips.filter(te=>te.id!==re&&te.type!=="transition"&&dete.startTime);return{willCollide:ie.length>0,collidingClipIds:ie.map(te=>te.id),newDuration:ee}}function q(re,J,oe=1){const se=J-re;return Ar(se/oe)}return{tracks:e,selectedClipIds:t,clipboard:n,mainTrack:r,sortedTracks:o,totalDuration:s,selectedClips:a,addTrack:h,addTrackAbove:v,addTrackBelow:f,removeTrack:g,updateTrack:m,getTrackCountByType:k,setTracks:u,normalizeTracks:d,normalizeClipDuration:l,addClip:A,removeClip:p,removeClips:b,updateClip:O,moveClipToTrack:y,getClip:C,selectClip:_,toggleClipSelection:S,deselectClip:L,clearSelection:E,hasOverlap:T,reset:D,cleanupEmptyTracks:P,copyClips:Q,cutClips:M,pasteClips:R,hasClipboardContent:I,getClipboardContent:F,clearClipboard:j,splitClip:W,setClipPlaybackRate:H,getClipDurationAtRate:$,checkPlaybackRateCollision:G,calculateTrackDuration:q}}),ML=Wy("playback",()=>{const e=fe(!1),t=fe(0),n=fe(1),r=fe(0);let o=null,s=0;const a=X(()=>{const y=G0().totalDuration;return Math.max(y,r.value)}),l=X(()=>u(t.value)),d=X(()=>u(a.value));function u(y,C=30){const _=Math.floor(y*C),S=Math.floor(_/(C*3600)),L=Math.floor(_%(C*3600)/(C*60)),E=Math.floor(_%(C*60)/C),T=_%C;return`${String(S).padStart(2,"0")}:${String(L).padStart(2,"0")}:${String(E).padStart(2,"0")}:${String(T).padStart(2,"0")}`}function h(y){if(e.value){if(s>0){const C=(y-s)/1e3,_=t.value+C*n.value,S=a.value;if(_>=S){t.value=S,f();return}t.value=_}s=y,o=requestAnimationFrame(h)}}function g(){s=0,o=requestAnimationFrame(h)}function m(){o!==null&&(cancelAnimationFrame(o),o=null),s=0}function v(){e.value||(e.value=!0,g())}function f(){e.value&&(e.value=!1,m())}function k(){e.value?f():v()}function A(y){const C=a.value>0?a.value:1/0;t.value=Math.max(0,Math.min(y,C))}function p(y){n.value=y}function b(y){r.value=y}function w(y){const C=a.value;t.value=Math.max(0,Math.min(t.value+y,C))}function O(){f(),t.value=0,n.value=1,r.value=0}return{isPlaying:e,currentTime:t,playbackRate:n,duration:r,effectiveDuration:a,formattedCurrentTime:l,formattedDuration:d,formatTime:u,play:v,pause:f,togglePlay:k,seekTo:A,setPlaybackRate:p,setDuration:b,adjustTime:w,reset:O}}),TE=Wy("history",()=>{const e=fe([]),t=fe(-1),n=fe(50),r=X(()=>t.value>0),o=X(()=>t.valuen.value?e.value.shift():t.value++}function l(v){const f=G0(),k=JSON.parse(v.snapshot);f.tracks=k.tracks,f.selectedClipIds.clear(),k.selectedClipIds.forEach(A=>{f.selectedClipIds.add(A)})}function d(){if(!r.value)return;t.value--;const v=e.value[t.value];l(v)}function u(){if(!o.value)return;t.value++;const v=e.value[t.value];l(v)}function h(){e.value=[],t.value=-1,a("初始状态")}function g(){e.value=[],t.value=-1}function m(){g()}return{historyStack:e,currentIndex:t,maxHistorySize:n,canUndo:r,canRedo:o,createSnapshot:s,pushSnapshot:a,restoreSnapshot:l,undo:d,redo:u,initialize:h,clear:g,reset:m}}),iat="video-track-scale-settings";function W5s(){try{const e=localStorage.getItem(iat);if(e)return JSON.parse(e)}catch(e){console.warn("Failed to load scale settings from localStorage:",e)}return null}function V5s(e){try{localStorage.setItem(iat,JSON.stringify(e))}catch(t){console.warn("Failed to save scale settings to localStorage:",t)}}const EA=Wy("scale",()=>{const e=W5s(),t=fe((e==null?void 0:e.scale)??1),n=fe(.1),r=fe(10),o=fe(100),s=fe((e==null?void 0:e.snapEnabled)??!0),a=fe(10);pt([t,s],([y,C])=>{V5s({scale:y,snapEnabled:C})},{immediate:!1});const l=X(()=>o.value*t.value),d=X(()=>{const y=t.value;return y>=5?{majorInterval:1,minorInterval:1/30,majorHeight:20,minorHeight:8}:y>=2?{majorInterval:1,minorInterval:.1,majorHeight:20,minorHeight:10}:y>=1?{majorInterval:1,minorInterval:.2,majorHeight:20,minorHeight:10}:y>=.5?{majorInterval:2,minorInterval:.5,majorHeight:20,minorHeight:10}:y>=.2?{majorInterval:5,minorInterval:1,majorHeight:20,minorHeight:10}:{majorInterval:10,minorInterval:2,majorHeight:20,minorHeight:10}});function u(y){t.value=Math.max(n.value,Math.min(y,r.value))}function h(y=.1){u(t.value+y)}function g(y=.1){u(t.value-y)}function m(){s.value=!s.value}function v(y){s.value=y}function f(y){return y*l.value}function k(y){return y/l.value}function A(y,C){if(!s.value||C.length===0)return y;let _=y,S=a.value;for(const L of C){const E=Math.abs(y-L);E{const e=G0(),t=EA(),n=TE(),r=fe(!1),o=fe([]),s=fe(0),a=fe(0),l=fe(""),d=fe(new Map),u=fe(0),h=fe(0),g=fe({shift:!1}),m=fe(!0),v=fe({x:0,y:0}),f=fe({enabled:!0,edgeThreshold:80,scrollSpeed:8,maxScrollSpeed:25}),k=fe(null),A=fe(null),p=fe(null),b=fe(null),w=fe(0),O=fe({trackId:"",startTime:0,endTime:0,needNewTrack:!1,visible:!1,clipType:""}),y=fe("");let C=document;const _=X(()=>new Set(o.value.map(le=>le.id))),S=X(()=>!r.value||!O.value.visible?0:O.value.endTime);function L(le){le.enableCrossTrackDrag!==void 0&&(m.value=le.enableCrossTrackDrag),le.edgeScroll&&Object.assign(f.value,le.edgeScroll)}function E(le,ue,ee){k.value=le,A.value=ue,b.value=ee||null}function T(le){if(!A.value)return;const ue=Math.max(0,A.value.scrollLeft+le);A.value.scrollLeft=ue,b.value&&b.value(ue)}function D(){if(!r.value||!f.value.enabled){M();return}const le=k.value,ue=A.value;if(!le||!ue)return;const ee=le.getBoundingClientRect(),{edgeThreshold:de,scrollSpeed:z,maxScrollSpeed:Y}=f.value,ie=u.value-ee.left;let te=0;if(ie0){const Z=Math.max(0,de-ie)/de;te=-Math.min(z+Z*(Y-z),Y)}else if(ie>ee.width-de){const Z=ue.scrollWidth-ue.clientWidth+500;if(ue.scrollLeft40;let te=l.value;if(m.value&&ie){const Ce=oe(h.value);Ce&&(te=Ce)}y.value=te;let Z=Ar(Y.startTime+de);t.snapEnabled&&!g.value.shift&&(Z=J(Z,z,te)),Z=Math.max(0,Z);const he=Y.endTime-Y.startTime,pe=Z+he;I(te,Z,pe,z.type)}function Q(){p.value===null&&(p.value=requestAnimationFrame(D))}function M(){p.value!==null&&(cancelAnimationFrame(p.value),p.value=null)}function B(le,ue,ee){var de;le.type!=="transition"&&(C=ee||((de=ue.target)==null?void 0:de.ownerDocument)||document,e.selectClip(le.id),o.value=[le],r.value=!0,s.value=ue.clientX,a.value=ue.clientY,u.value=ue.clientX,h.value=ue.clientY,l.value=le.trackId,y.value=le.trackId,d.value.clear(),d.value.set(le.id,{startTime:le.startTime,endTime:le.endTime,trackId:le.trackId}),v.value={x:0,y:0},w.value=0,O.value={trackId:le.trackId,startTime:le.startTime,endTime:le.endTime,needNewTrack:!1,visible:!1,clipType:le.type},C.addEventListener("mousemove",R),C.addEventListener("mouseup",W),Q())}function R(le){if(!r.value||o.value.length===0)return;g.value.shift=le.shiftKey,u.value=le.clientX,h.value=le.clientY;const ue=le.clientX-s.value,ee=le.clientY-a.value;v.value={x:ue,y:ee};const de=(ue+w.value)/t.actualPixelsPerSecond,z=o.value[0],Y=d.value.get(z.id);if(!Y)return;const ie=Math.abs(ee)>40;let te=l.value;if(m.value&&ie){const Ce=oe(h.value);Ce&&(te=Ce)}y.value=te;let Z=Ar(Y.startTime+de);t.snapEnabled&&!g.value.shift&&(Z=J(Z,z,te)),Z=Math.max(0,Z);const he=Y.endTime-Y.startTime,pe=Z+he;I(te,Z,pe,z.type)}function I(le,ue,ee,de){const z=e.tracks.find(Ce=>Ce.id===le),Y=l.value,ie=le!==Y,te=ee-ue;let Z=ue,he=ee,pe=!1;if(ie)if(!z)pe=!0;else{const Ce=de;z.type===Ce?j(le,ue,ee)&&(pe=!0):pe=!0}else{const Ce=F(le,ue,te);Z=Ce.startTime,he=Ce.endTime}O.value={trackId:le,startTime:Z,endTime:he,needNewTrack:pe,visible:!0,clipType:de}}function F(le,ue,ee){const de=e.tracks.find(Z=>Z.id===le);if(!de)return{startTime:ue,endTime:ue+ee};const z=new Set(o.value.map(Z=>Z.id)),Y=de.clips.filter(Z=>!z.has(Z.id)&&Z.type!=="transition").sort((Z,he)=>Z.startTime-he.startTime);let ie=ue,te=ue+ee;for(const Z of Y)if(ieZ.startTime){const he=(ie+te)/2,pe=(Z.startTime+Z.endTime)/2;(heZ.startTime&&(ie=Ar(Z.endTime)))):ie=Ar(Z.endTime),te=ie+ee;break}return{startTime:ie,endTime:te}}function j(le,ue,ee){const de=e.tracks.find(Y=>Y.id===le);if(!de)return!1;const z=new Set(o.value.map(Y=>Y.id));return de.clips.some(Y=>z.has(Y.id)||Y.type==="transition"?!1:Y.startTimeue)}function W(){if(!r.value||o.value.length===0){q();return}const le=y.value!==l.value;if(!m.value&&le){q();return}le?G():H(),se(),e.cleanupEmptyTracks(),n.pushSnapshot("移动片段"),q()}function H(){const le=O.value,ue=o.value[0],ee=d.value.get(ue.id);if(!ee)return;const de=le.startTime-ee.startTime,z=new Map;o.value.forEach(Y=>{const ie=d.value.get(Y.id);if(ie){const te=ie.endTime-ie.startTime,Z=Ar(Math.max(0,ie.startTime+de)),he=Ar(Z+te);e.updateClip(Y.id,{startTime:Z,endTime:he}),z.set(Y.id,{startTime:Z,endTime:he})}}),$(le.trackId,z)}function $(le,ue){const ee=e.tracks.find(Y=>Y.id===le);if(!ee)return;const de=[...ee.clips].filter(Y=>Y.type!=="transition").map(Y=>{const ie=ue.get(Y.id);return{id:Y.id,startTime:ie?ie.startTime:Y.startTime,endTime:ie?ie.endTime:Y.endTime}}).sort((Y,ie)=>Y.startTime-ie.startTime);if(de.length<2)return;const z=[];for(let Y=0;Yte.startTime){const Z=te.endTime-te.startTime,he=Ar(ie.endTime),pe=Ar(he+Z);te.startTime=he,te.endTime=pe,z.push({id:te.id,startTime:he,endTime:pe})}}z.forEach(Y=>{e.updateClip(Y.id,{startTime:Y.startTime,endTime:Y.endTime})})}function G(){const le=O.value,ue=o.value[0],ee=d.value.get(ue.id);if(!ee)return;const de=ue.type;let z=null;if(le.needNewTrack){const te=re(de);e.addTrack(te),z=te}else z=e.tracks.find(te=>te.id===le.trackId)||null;if(!z)return;const Y=le.startTime-ee.startTime,ie=new Map;o.value.forEach(te=>{const Z=d.value.get(te.id);if(Z){const he=Z.endTime-Z.startTime,pe=Ar(Math.max(0,Z.startTime+Y)),Ce=Ar(pe+he);te.trackId!==z.id&&e.moveClipToTrack(te.id,z.id),e.updateClip(te.id,{startTime:pe,endTime:Ce}),ie.set(te.id,{startTime:pe,endTime:Ce})}}),$(z.id,ie)}function q(){M(),r.value=!1,o.value=[],d.value.clear(),v.value={x:0,y:0},w.value=0,O.value={trackId:"",startTime:0,endTime:0,needNewTrack:!1,visible:!1,clipType:""},y.value="",C.removeEventListener("mousemove",R),C.removeEventListener("mouseup",W)}function re(le){const ue=e.getTrackCountByType(le),ee={video:"视频",audio:"音频",subtitle:"字幕",sticker:"贴纸",filter:"滤镜",effect:"特效"};return{id:Yre("track-"),type:le,name:`${ee[le]||le}${ue+1}`,visible:!0,locked:!1,clips:[],order:e.tracks.length}}function J(le,ue,ee){if(g.value.shift||!t.snapEnabled)return le;const de=e.tracks.find(Z=>Z.id===ee);if(!de)return le;const z=[],Y=new Set(e.selectedClipIds);if(de.clips.forEach(Z=>{Z.id!==ue.id&&!Y.has(Z.id)&&Z.type!=="transition"&&(z.push(Z.startTime),z.push(Z.endTime))}),z.length===0)return le;const ie=t.timeToPixels(le),te=t.snapToPosition(ie,z.map(Z=>t.timeToPixels(Z)));return Ar(t.pixelsToTime(te))}function oe(le){const ue=document.querySelectorAll(".tracks__track");for(const ee of ue){const de=ee.getBoundingClientRect();if(le>=de.top&&le<=de.bottom)return ee.dataset.trackId||null}return null}function se(){e.tracks.forEach(le=>{const ue=[];le.clips.forEach(ee=>{if(ee.type!=="transition")return;const de=(ee.startTime+ee.endTime)/2,z=le.clips.find(ie=>ie.type!=="transition"&&Math.abs(ie.endTime-de)<.1),Y=le.clips.find(ie=>ie.type!=="transition"&&ie!==z&&Math.abs(ie.startTime-de)<.1);(!z||!Y||Math.abs(z.endTime-Y.startTime)>.1)&&ue.push(ee.id)}),ue.forEach(ee=>{e.removeClip(ee)})})}return{isDragging:r,draggedClips:o,draggedClipIds:_,dragOffset:v,previewPosition:O,previewEndTime:S,currentTargetTrackId:y,dragStartTrackId:l,edgeScrollConfig:f,setConfig:L,setScrollContainers:E,startDrag:B,handleDragMove:R,handleDragEnd:W,resetDragState:q,startEdgeScroll:Q,stopEdgeScroll:M}});function z5s(e={}){const t=G0(),n=ML(),r=TE(),o=EA(),s=e.callbacks||{},a=fe(!1);function l(){var C;if(!((C=e.containerRef)!=null&&C.value))return!0;const _=document.activeElement;return _?e.containerRef.value.contains(_):!1}function d(){var C;return(C=e.containerRef)!=null&&C.value?a.value:!0}function u(C){return!C||!(C instanceof HTMLElement)?!1:!!(C instanceof HTMLInputElement||C instanceof HTMLTextAreaElement||C instanceof HTMLSelectElement||C.isContentEditable||C.getAttribute("contenteditable")==="true")}function h(C){var _,S;const L=j5s()?C.metaKey:C.ctrlKey;if(C.code==="Space"){if(u(C.target))return;C.preventDefault(),n.isPlaying?(n.pause(),(_=s.onPause)==null||_.call(s)):(n.play(),(S=s.onPlay)==null||S.call(s));return}if(d()&&!g(C)){if(L&&C.code==="KeyZ"&&!C.shiftKey){C.preventDefault(),r.undo();return}if(L&&C.code==="KeyY"||L&&C.shiftKey&&C.code==="KeyZ"){C.preventDefault(),r.redo();return}if(L&&C.code==="KeyC"){C.preventDefault(),m();return}if(L&&C.code==="KeyX"){C.preventDefault(),v();return}if(L&&C.code==="KeyV"){C.preventDefault(),f();return}if(C.code==="Delete"||C.code==="Backspace"){C.preventDefault(),k();return}if(L&&(C.code==="Equal"||C.code==="NumpadAdd")){C.preventDefault(),o.zoomIn(.1);return}if(L&&(C.code==="Minus"||C.code==="NumpadSubtract")){C.preventDefault(),o.zoomOut(.1);return}if(C.code==="ArrowRight"){C.preventDefault(),n.adjustTime(.1);return}if(C.code==="ArrowLeft"){C.preventDefault(),n.adjustTime(-.1);return}if(C.code==="Escape"){C.preventDefault(),t.clearSelection();return}}}function g(C){var _;const S=C.target;return S instanceof HTMLInputElement||S instanceof HTMLTextAreaElement||S.isContentEditable?((_=e.containerRef)!=null&&_.value&&e.containerRef.value.contains(S),!0):!1}function m(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.copyClips(_),(C=s.onCopy)==null||C.call(s,_))}function v(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.cutClips(_),(C=s.onCut)==null||C.call(s,_))}function f(){var C;if(!t.hasClipboardContent())return;const _=t.selectedClips;let S;if(_.length>0?S=_[0].trackId:t.mainTrack&&(S=t.mainTrack.id),!S)return;const L=n.currentTime,E=t.pasteClips(S,L);E&&(r.pushSnapshot("粘贴片段"),(C=s.onPaste)==null||C.call(s,E,S,L))}function k(){var C;const _=Array.from(t.selectedClipIds);_.length!==0&&(t.removeClips(_),r.pushSnapshot("删除片段"),(C=s.onDelete)==null||C.call(s,_))}function A(){a.value=!0}function p(){l()||(a.value=!1)}function b(){a.value=!0}function w(C){var _;const S=C.relatedTarget;(_=e.containerRef)!=null&&_.value&&S&&(e.containerRef.value.contains(S)||(a.value=!1))}function O(){var C;const _=(C=e.containerRef)==null?void 0:C.value;_&&(_.addEventListener("mouseenter",A),_.addEventListener("mouseleave",p),_.addEventListener("focusin",b),_.addEventListener("focusout",w))}function y(){var C;const _=(C=e.containerRef)==null?void 0:C.value;_&&(_.removeEventListener("mouseenter",A),_.removeEventListener("mouseleave",p),_.removeEventListener("focusin",b),_.removeEventListener("focusout",w))}return An(()=>{document.addEventListener("keydown",h),O()}),Qa(()=>{document.removeEventListener("keydown",h),y()}),{handleKeyDown:h,isActive:a}}function H5s({scrollLeft:e,tracksWidth:t,setScrollLeft:n}){const r=ML(),o=EA();pt(()=>r.currentTime,s=>{if(!r.isPlaying)return;const a=o.actualPixelsPerSecond,l=s*a,d=e.value+t.value*.9;if(l>d){const u=t.value*.8,h=e.value+u;n(h)}})}const Lm=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},$5s={},X5s={width:"1em",height:"1em",viewBox:"0 0 24 24",preserveAspectRatio:"xMidYMid meet",fill:"none",role:"presentation",xmlns:"http://www.w3.org/2000/svg",class:"snap-icon"};function G5s(e,t){return xe(),Ge("svg",X5s,[...t[0]||(t[0]=[ge("g",null,[ge("path",{d:"M11 22h2v-3h-2v3ZM6.106 4.416l1.415-1.414 2.121 2.122-1.414 1.414-2.122-2.122ZM16.48 3.002l1.414 1.414-2.122 2.122-1.414-1.414 2.122-2.122ZM11 2h2v3h-2V2Zm6.894 17.584-1.414 1.414-2.122-2.122 1.414-1.414 2.122 2.122ZM7.52 20.998l-1.414-1.414 2.122-2.122 1.414 1.415-2.121 2.12Z",fill:"currentColor"}),ge("path",{d:"M4 16h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2Zm16-6h-7v4h7v-4ZM4 10h7v4H4v-4Z","clip-rule":"evenodd","fill-rule":"evenodd",fill:"currentColor"})],-1)])])}const Y5s=Lm($5s,[["render",G5s],["__scopeId","data-v-dca9589a"]]),Z5s={class:"tools-bar"},q5s={class:"tools-bar__section tools-bar__operations"},K5s=["disabled","onClick"],J5s={class:"tools-bar__icon"},e9s={class:"tools-bar__label"},t9s=["disabled","title","onClick"],n9s={class:"tools-bar__icon"},i9s={class:"tools-bar__label"},r9s={class:"tools-bar__section tools-bar__playback"},o9s={class:"tools-bar__time"},s9s={class:"tools-bar__time-current"},a9s={class:"tools-bar__time-duration"},l9s=["value"],c9s={class:"tools-bar__section tools-bar__scale"},d9s={class:"tools-bar__scale-config"},u9s=["title"],h9s=["title","disabled","onClick"],f9s={class:"tools-bar__scale-control"},g9s=["disabled"],m9s={class:"tools-bar__scale-slider"},k9s=["min","max"],v9s={class:"tools-bar__scale-value"},A9s=["disabled"],p9s=Je({__name:"index",props:{operationButtons:{default:()=>["reset","undo","redo","split","delete"]},scaleConfigButtons:{default:()=>["snap"]},locale:{default:()=>({})}},emits:["operation","playback:play","playback:pause"],setup(e,{emit:t}){const n=e,r=t,o=ML(),s=EA(),a=TE(),l=G0(),d=bt("config",{}),u=X(()=>o.isPlaying),h=X(()=>o.formattedCurrentTime),g=X(()=>o.formattedDuration),m=X(()=>s.snapEnabled),v=X(()=>s.minScale),f=X(()=>s.maxScale),k=fe(o.playbackRate),A=X(()=>d.playbackRates||[.5,1,2,4]),p=fe(s.scale),b=X(()=>{var H;return((H=n.locale)==null?void 0:H.snapOn)||"关闭自动吸附"}),w=X(()=>{var H;return((H=n.locale)==null?void 0:H.snapOff)||"开启自动吸附"});function O(H){return typeof H=="object"&&"type"in H&&H.type==="custom"}function y(H){return typeof H=="object"&&!("type"in H)&&"key"in H}function C(H){return typeof H=="object"&&!("type"in H)&&"key"in H}function _(H){return typeof H=="object"||typeof H=="function"}function S(H){const $=H.disabled;return typeof $=="function"?$():$??!1}function L(H){const $=H.active;return typeof $=="function"?$():$??!1}function E(H){H.onClick?H.onClick():H.key&&r("operation",H.key)}function T(H){H.onClick&&H.onClick()}function D(H){return{reset:"↺",undo:"↶",redo:"↷",split:"✂",delete:"🗑"}[H]||""}function P(H){const $=n.locale||{},G={reset:"重置",undo:"撤销",redo:"重做",split:"分割",delete:"删除"};return $[H]||G[H]||H}function Q(H){switch(H){case"undo":return!a.canUndo;case"redo":return!a.canRedo;case"split":return l.selectedClipIds.size===0;default:return!1}}function M(H){r("operation",H)}function B(){o.isPlaying?(o.pause(),r("playback:pause")):(o.play(),r("playback:play"))}function R(){o.setPlaybackRate(k.value)}function I(){s.toggleSnap()}function F(){s.zoomIn(.1),p.value=s.scale}function j(){s.zoomOut(.1),p.value=s.scale}function W(){s.setScale(p.value)}return(H,$)=>(xe(),Ge("div",Z5s,[ge("div",q5s,[Zr(H.$slots,"operations-prepend",{},void 0,!0),(xe(!0),Ge(sn,null,Bi(e.operationButtons,(G,q)=>(xe(),Ge(sn,{key:q},[typeof G=="string"?(xe(),Ge("button",{key:0,class:Eo(["tools-bar__btn",{"tools-bar__btn--disabled":Q(G)}]),disabled:Q(G),onClick:re=>M(G)},[ge("span",J5s,Pe(D(G)),1),ge("span",e9s,Pe(P(G)),1)],10,K5s)):O(G)?Zr(H.$slots,`custom-operation-${G.key}`,{key:1},void 0,!0):y(G)?(xe(),Ge("button",{key:2,class:Eo(["tools-bar__btn",[{"tools-bar__btn--disabled":S(G)},G.className]]),disabled:S(G),title:G.title,onClick:re=>E(G)},[ge("span",n9s,[_(G.icon)?(xe(),Ut(Bd(G.icon),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(G.icon||""),1)],64))]),ge("span",i9s,Pe(G.label||""),1)],10,t9s)):nn("",!0)],64))),128)),Zr(H.$slots,"operations-append",{},void 0,!0)]),ge("div",r9s,[Zr(H.$slots,"playback-prepend",{},void 0,!0),ge("button",{class:"tools-bar__btn tools-bar__btn--play",onClick:B},[ge("span",{class:"tools-bar__icon",style:no({marginLeft:u.value?"0":"2px"})},Pe(u.value?"⏸":"▶"),5)]),ge("div",o9s,[ge("span",s9s,Pe(h.value),1),$[2]||($[2]=ge("span",{class:"tools-bar__time-separator"},"/",-1)),ge("span",a9s,Pe(g.value),1)]),uu(ge("select",{"onUpdate:modelValue":$[0]||($[0]=G=>k.value=G),class:"tools-bar__select",onChange:R},[(xe(!0),Ge(sn,null,Bi(A.value,G=>(xe(),Ge("option",{key:G,value:G},Pe(G)+"x ",9,l9s))),128))],544),[[Soi,k.value]]),Zr(H.$slots,"playback-append",{},void 0,!0)]),ge("div",c9s,[Zr(H.$slots,"scale-prepend",{},void 0,!0),ge("div",d9s,[(xe(!0),Ge(sn,null,Bi(e.scaleConfigButtons,(G,q)=>(xe(),Ge(sn,{key:q},[typeof G=="string"&&G==="snap"?(xe(),Ge("button",{key:0,class:Eo(["tools-bar__btn tools-bar__btn--toggle tools-bar__btn--snap",{"tools-bar__btn--active":m.value}]),title:m.value?b.value:w.value,onClick:I},[c(Y5s,{class:"tools-bar__snap-icon"})],10,u9s)):O(G)?Zr(H.$slots,`custom-scale-config-${G.key}`,{key:1},void 0,!0):C(G)?(xe(),Ge("button",{key:2,class:Eo(["tools-bar__btn tools-bar__btn--toggle",[{"tools-bar__btn--active":L(G)},{"tools-bar__btn--disabled":S(G)},G.className]]),title:G.title,disabled:S(G),onClick:re=>T(G)},[_(G.icon)?(xe(),Ut(Bd(G.icon),{key:0})):(xe(),Ge(sn,{key:1},[Bt(Pe(G.icon||""),1)],64))],10,h9s)):nn("",!0)],64))),128))]),ge("div",f9s,[ge("button",{class:"tools-bar__btn tools-bar__btn--icon",disabled:p.value<=v.value,onClick:j}," − ",8,g9s),ge("div",m9s,[uu(ge("input",{type:"range",min:v.value,max:f.value,step:.1,"onUpdate:modelValue":$[1]||($[1]=G=>p.value=G),onInput:W},null,40,k9s),[[d4n,p.value,void 0,{number:!0}]]),ge("span",v9s,Pe(p.value.toFixed(1))+"x",1)]),ge("button",{class:"tools-bar__btn tools-bar__btn--icon",disabled:p.value>=f.value,onClick:F}," + ",8,A9s)]),Zr(H.$slots,"scale-append",{},void 0,!0)])]))}}),b9s=Lm(p9s,[["__scopeId","data-v-c36de3a3"]]),w9s={key:0,class:"ruler__mark-label"},O9s=Je({__name:"index",props:{width:{default:0},scrollLeft:{default:0},trackControlWidth:{default:200}},emits:["scroll","seek"],setup(e,{expose:t,emit:n}){const r=e,o=n,s=ML(),a=EA(),l=G0(),d=MH(),u=fe(),h=fe(),g=fe(!1),m=fe(0);let v=null;t({isDraggingCursor:g});const f=X(()=>a.rulerConfig),k=X(()=>a.actualPixelsPerSecond),A=X(()=>{const T=Math.max(l.totalDuration,s.duration,d.previewEndTime,60);return Math.ceil(T*k.value)}),p=X(()=>{const T=[],D=f.value,P=A.value/k.value,Q=D.minorInterval,M=D.majorInterval,B=Math.ceil(P/Q)+1;for(let R=0;RP)break;const F=Math.abs(Math.round(I/M)*M-I)<.001;T.push({time:I,position:I*k.value,isMajor:F,height:F?D.majorHeight:D.minorHeight})}return T}),b=X(()=>s.currentTime*k.value),w=X(()=>r.trackControlWidth+b.value-(r.scrollLeft||0)),O=X(()=>w.value>=r.trackControlWidth);function y(T){const D=Math.floor(T/60),P=Math.floor(T%60);return`${String(D).padStart(2,"0")}:${String(P).padStart(2,"0")}`}function C(T){var D;if(g.value)return;const P=(D=u.value)==null?void 0:D.getBoundingClientRect();if(!P)return;const Q=(T.clientX-P.left-r.trackControlWidth+(r.scrollLeft||0))/k.value,M=Math.max(0,Q);s.seekTo(M),o("seek",M)}function _(){g.value=!0,s.pause(),document.body.style.userSelect="none";let T=null,D=0,P=0;const Q=()=>{g.value&&(P!==0&&h.value&&(h.value.scrollLeft+=P,o("scroll",h.value.scrollLeft),M()),T=requestAnimationFrame(Q))},M=()=>{var I;const F=(I=u.value)==null?void 0:I.getBoundingClientRect();if(!F||!h.value)return;let j=(D-F.left-r.trackControlWidth+h.value.scrollLeft)/k.value;j=Math.max(0,j),s.seekTo(j)},B=I=>{var F;D=I.clientX;const j=(F=h.value)==null?void 0:F.getBoundingClientRect();if(j)if(I.clientXj.right-50){const W=1-(j.right-I.clientX)/50;P=15*Math.max(0,W)}else P=0;P===0&&M()},R=()=>{g.value=!1,document.body.style.userSelect="",T&&(cancelAnimationFrame(T),T=null),document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",R),o("seek",s.currentTime)};document.addEventListener("mousemove",B),document.addEventListener("mouseup",R),T=requestAnimationFrame(Q)}function S(){h.value&&o("scroll",h.value.scrollLeft)}function L(){return u.value?u.value.closest(".video-track"):null}function E(){if(!u.value)return;const T=u.value.getBoundingClientRect(),D=L(),P=D?D.getBoundingClientRect().bottom:window.innerHeight,Q=T.top-5;m.value=Math.max(P-Q,0)}return An(()=>{ai(()=>{E(),v=new ResizeObserver(()=>{E()}),u.value&&v.observe(u.value);const T=L();T&&v.observe(T)}),window.addEventListener("resize",E)}),Qa(()=>{window.removeEventListener("resize",E),v&&(v.disconnect(),v=null)}),pt(()=>r.scrollLeft,T=>{h.value&&h.value.scrollLeft!==T&&(h.value.scrollLeft=T)}),pt(b,T=>{if(g.value||!h.value)return;const D=h.value.clientWidth,P=h.value.scrollLeft;TP+D&&(h.value.scrollLeft=T-D+50)}),(T,D)=>(xe(),Ge("div",{class:"ruler",ref_key:"rulerRef",ref:u},[ge("div",{class:"ruler__placeholder",style:no({width:e.trackControlWidth+"px"})},null,4),ge("div",{class:"ruler__wrapper",ref_key:"rulerWrapperRef",ref:h,onScroll:S},[ge("div",{class:"ruler__content",style:no({width:A.value+"px"}),onMousedown:C},[(xe(!0),Ge(sn,null,Bi(p.value,P=>(xe(),Ge("div",{key:P.time,class:Eo(["ruler__mark",{"ruler__mark--major":P.isMajor}]),style:no({left:P.position+"px",height:P.height+"px"})},[P.isMajor?(xe(),Ge("span",w9s,Pe(y(P.time)),1)):nn("",!0)],6))),128))],36)],544),O.value?(xe(),Ge("div",{key:0,class:Eo(["ruler__cursor-handle",{"ruler__cursor-handle--dragging":g.value}]),style:no({left:w.value+"px"}),onMousedown:Mr(_,["stop"])},[ge("div",{class:"ruler__cursor-line",style:no({height:`${m.value}px`}),onMousedown:Mr(_,["stop"])},null,36)],38)):nn("",!0)],512))}}),y9s=Lm(O9s,[["__scopeId","data-v-f5735210"]]),C9s={class:"track-control"},_9s={class:"track-control__name"},S9s={key:2,class:"track-control__badge"},L9s={class:"track-control__actions"},x9s=["title"],E9s=["title"],T9s=["title"],Q9s=Je({__name:"TrackControl",props:{track:{},locale:{}},emits:["update","delete"],setup(e,{emit:t}){const n=e,r=t,o=fe(!1),s=fe(""),a=fe();function l(){o.value=!0,s.value=n.track.name,ai(()=>{var v,f;(v=a.value)==null||v.focus(),(f=a.value)==null||f.select()})}function d(){s.value.trim()&&s.value!==n.track.name&&r("update",n.track.id,{name:s.value.trim()}),o.value=!1}function u(){o.value=!1,s.value=""}function h(){r("update",n.track.id,{visible:!n.track.visible})}function g(){r("update",n.track.id,{locked:!n.track.locked})}function m(){var v;const f=(((v=n.locale)==null?void 0:v.confirmDeleteTrack)||'确定要删除轨道"{name}"吗?').replace("{name}",n.track.name);confirm(f)&&r("delete",n.track.id)}return(v,f)=>{var k,A,p,b,w,O;return xe(),Ge("div",C9s,[ge("div",_9s,[o.value?uu((xe(),Ge("input",{key:0,"onUpdate:modelValue":f[0]||(f[0]=y=>s.value=y),class:"track-control__name-input",onBlur:d,onKeyup:[hct(d,["enter"]),hct(u,["esc"])],ref_key:"nameInputRef",ref:a},null,544)),[[d4n,s.value]]):(xe(),Ge("span",{key:1,class:"track-control__name-text",onDblclick:l},Pe(e.track.name),33)),e.track.isMain?(xe(),Ge("span",S9s,Pe(((k=e.locale)==null?void 0:k.mainBadge)||"主"),1)):nn("",!0)]),ge("div",L9s,[ge("button",{class:Eo(["track-control__btn",{"track-control__btn--active":e.track.visible}]),onClick:h,title:e.track.visible?((A=e.locale)==null?void 0:A.hide)||"隐藏":((p=e.locale)==null?void 0:p.show)||"显示"},Pe(e.track.visible?"👁":"👁‍🗨"),11,x9s),ge("button",{class:Eo(["track-control__btn",{"track-control__btn--active":e.track.locked}]),onClick:g,title:e.track.locked?((b=e.locale)==null?void 0:b.unlock)||"解锁":((w=e.locale)==null?void 0:w.lock)||"锁定"},Pe(e.track.locked?"🔒":"🔓"),11,E9s),e.track.isMain?nn("",!0):(xe(),Ge("button",{key:0,class:"track-control__btn track-control__btn--danger",onClick:m,title:((O=e.locale)==null?void 0:O.delete)||"删除"}," 🗑 ",8,T9s))])])}}}),D9s=Lm(Q9s,[["__scopeId","data-v-34ea43ab"]]);function B9s(){const e=G0(),t=EA(),n=TE(),r=fe(!1),o=fe(null),s=fe("left"),a=fe(0),l=fe(0),d=fe(0),u=fe(0),h=fe(0);let g=document;const m=fe([]),v=fe([]);function f(R,I,F){var j;if(R.type==="transition"){y(R,I,F);return}if(g=((j=F.target)==null?void 0:j.ownerDocument)||document,r.value=!0,o.value=R,s.value=I,a.value=F.clientX,l.value=R.startTime,d.value=R.endTime,R.type==="video"||R.type==="audio"){const W=R;u.value=W.trimStart,h.value=W.trimEnd}k(R,I),g.addEventListener("mousemove",E),g.addEventListener("mouseup",M)}function k(R,I){m.value=[],v.value=[];const F=e.tracks.find(j=>j.id===R.trackId);if(F)if(I==="right"){const j=new Set([R.id]);A(F.clips,R.endTime,j)}else{const j=new Set([R.id]);p(F.clips,R.startTime,j)}}function A(R,I,F){const j=R.find(H=>{if(H.type!=="transition")return!1;const $=H,G=($.startTime+$.endTime)/2;return Math.abs(G-I)<$.transitionDuration&&$.startTime>=I-$.transitionDuration});if(!j)return;m.value.push({id:j.id,type:"transition",originalStartTime:j.startTime,originalEndTime:j.endTime,duration:j.transitionDuration});const W=R.find(H=>H.type!=="transition"&&!F.has(H.id)&&Math.abs(H.startTime-I){if(H.type!=="transition")return!1;const $=H,G=($.startTime+$.endTime)/2;return Math.abs(G-I)<$.transitionDuration&&$.endTime<=I+$.transitionDuration});if(!j)return;v.value.push({id:j.id,type:"transition",originalStartTime:j.startTime,originalEndTime:j.endTime,duration:j.transitionDuration});const W=R.find(H=>H.type!=="transition"&&!F.has(H.id)&&Math.abs(H.endTime-I)$.id===R.trackId);if(!F)return;const j=(R.startTime+R.endTime)/2,W=F.clips.find($=>$.type!=="transition"&&Math.abs($.endTime-j)<.5),H=F.clips.find($=>$.type!=="transition"&&$!==W&&Math.abs($.startTime-j)<.5);if(W&&H){const $=Ar(j-I/2),G=Ar(j+I/2),q=Ar(j),re=Ar(I);e.updateClip(R.id,{startTime:$,endTime:G,transitionDuration:re}),e.updateClip(W.id,{endTime:q}),e.updateClip(H.id,{startTime:q})}}const L=fe({shift:!1});function E(R){if(!r.value||!o.value)return;L.value.shift=R.shiftKey;const I=R.clientX-a.value,F=t.pixelsToTime(I);s.value==="left"?T(F):P(F)}function T(R){if(!o.value)return;let I=Ar(l.value+R);const F=.1,j=d.value-F;if(I=Math.max(0,Math.min(I,j)),!(v.value.length>0&&v.value[0].type==="transition")){const H=e.tracks.find($=>$.id===o.value.trackId);if(H){const $=H.clips.filter(G=>G.type!=="transition"&&G.id!==o.value.id).find(G=>G.endTime<=l.value+.01&&G.endTime>I);$&&(I=Math.max(I,$.endTime))}}let W=0;if(o.value.type==="video"||o.value.type==="audio"){o.value;const H=I-l.value;W=Ar(u.value+H),W<0&&(I=Ar(l.value-u.value),W=0);const $=h.value;W>$-F&&(W=$-F,I=Ar(l.value+(W-u.value)))}if(t.snapEnabled){const H=B(I);if(H!==I&&(o.value.type==="video"||o.value.type==="audio")){const $=H-I;W=Ar(W+$),W<0&&(W=0)}I=H}o.value.type==="video"||o.value.type==="audio"?e.updateClip(o.value.id,{startTime:I,trimStart:Math.max(0,W)}):e.updateClip(o.value.id,{startTime:I}),D(I)}function D(R){if(v.value.length===0)return;const I=d.value-R;let F=R;for(let j=0;j0&&m.value[0].type==="transition")){const H=e.tracks.find($=>$.id===o.value.trackId);if(H){const $=H.clips.filter(G=>G.type!=="transition"&&G.id!==o.value.id).find(G=>G.startTime>=d.value-.01&&G.startTimeH.originalDuration&&(W=H.originalDuration,I=Ar(d.value+(W-h.value)));const G=u.value;W$.originalDuration&&(W=$.originalDuration)}I=H}if(o.value.type==="video"||o.value.type==="audio"){const H=o.value;e.updateClip(o.value.id,{endTime:I,trimEnd:Math.min(W,H.originalDuration)})}else e.updateClip(o.value.id,{endTime:I});Q(I)}function Q(R){if(m.value.length===0)return;const I=R-l.value;let F=R,j=I;for(let W=0;WG.id===o.value.trackId);if(!I)return R;const F=new Set;m.value.forEach(G=>F.add(G.id)),v.value.forEach(G=>F.add(G.id));const j=[],W=new Set(e.selectedClipIds);if(I.clips.forEach(G=>{G.id!==o.value.id&&!W.has(G.id)&&!F.has(G.id)&&G.type!=="transition"&&(j.push(G.startTime),j.push(G.endTime))}),j.length===0)return R;const H=t.timeToPixels(R),$=t.snapToPosition(H,j.map(G=>t.timeToPixels(G)));return Ar(t.pixelsToTime($))}return{isResizing:r,resizingClip:o,resizingEdge:s,startResize:f,handleResizeMove:E,handleResizeEnd:M}}function R9s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var yqn={};(function(e){var t=function(){var f=new Date,k=4,A=3,p=2,b=1,w=k,O={setLogLevel:function(y){y==this.debug?w=b:y==this.info?w=p:y==this.warn?w=A:(y==this.error,w=k)},debug:function(y,C){console.debug===void 0&&(console.debug=console.log),b>=w&&console.debug("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},log:function(y,C){this.debug(y.msg)},info:function(y,C){p>=w&&console.info("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},warn:function(y,C){A>=w&&console.warn("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)},error:function(y,C){k>=w&&console.error("["+t.getDurationString(new Date-f,1e3)+"]","["+y+"]",C)}};return O}();t.getDurationString=function(f,k){var A;function p(_,S){for(var L=""+_,E=L.split(".");E[0].length0){for(var A="",p=0;p0&&(A+=","),A+="["+t.getDurationString(f.start(p))+","+t.getDurationString(f.end(p))+"]";return A}else return"(empty)"},e.Log=t;var n=function(f){if(f instanceof ArrayBuffer)this.buffer=f,this.dataview=new DataView(f);else throw"Needs an array buffer";this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(f){var k=Math.max(0,Math.min(this.buffer.byteLength,f));return this.position=isNaN(k)||!isFinite(k)?0:k,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(f,k){var A=0;if(this.position+f<=this.buffer.byteLength){switch(f){case 1:k?A=this.dataview.getInt8(this.position):A=this.dataview.getUint8(this.position);break;case 2:k?A=this.dataview.getInt16(this.position):A=this.dataview.getUint16(this.position);break;case 3:if(k)throw"No method for reading signed 24 bits values";A=this.dataview.getUint8(this.position)<<16,A|=this.dataview.getUint8(this.position+1)<<8,A|=this.dataview.getUint8(this.position+2);break;case 4:k?A=this.dataview.getInt32(this.position):A=this.dataview.getUint32(this.position);break;case 8:if(k)throw"No method for reading signed 64 bits values";A=this.dataview.getUint32(this.position)<<32,A|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+f}return this.position+=f,A}else throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(f){if(this.position+f<=this.buffer.byteLength){for(var k="",A=0;Athis._byteLength&&(this._byteLength=k);return}for(A<1&&(A=1);k>A;)A*=2;var p=new ArrayBuffer(A),b=new Uint8Array(this._buffer),w=new Uint8Array(p,0,b.length);w.set(b),this.buffer=p,this._byteLength=k}},r.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var f=new ArrayBuffer(this._byteLength),k=new Uint8Array(f),A=new Uint8Array(this._buffer,0,k.length);k.set(A),this.buffer=f}},r.BIG_ENDIAN=!1,r.LITTLE_ENDIAN=!0,r.prototype._byteLength=0,Object.defineProperty(r.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(r.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(f){this._buffer=f,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(r.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(f){this._byteOffset=f,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(r.prototype,"dataView",{get:function(){return this._dataView},set:function(f){this._byteOffset=f.byteOffset,this._buffer=f.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+f.byteLength}}),r.prototype.seek=function(f){var k=Math.max(0,Math.min(this.byteLength,f));this.position=isNaN(k)||!isFinite(k)?0:k},r.prototype.isEof=function(){return this.position>=this._byteLength},r.prototype.mapUint8Array=function(f){this._realloc(f*1);var k=new Uint8Array(this._buffer,this.byteOffset+this.position,f);return this.position+=f*1,k},r.prototype.readInt32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Int32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt16Array=function(f,k){f=f??this.byteLength-this.position/2;var A=new Int16Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt8Array=function(f){f=f??this.byteLength-this.position;var k=new Int8Array(f);return r.memcpy(k.buffer,0,this.buffer,this.byteOffset+this.position,f*k.BYTES_PER_ELEMENT),this.position+=k.byteLength,k},r.prototype.readUint32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Uint32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readUint16Array=function(f,k){f=f??this.byteLength-this.position/2;var A=new Uint16Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readUint8Array=function(f){f=f??this.byteLength-this.position;var k=new Uint8Array(f);return r.memcpy(k.buffer,0,this.buffer,this.byteOffset+this.position,f*k.BYTES_PER_ELEMENT),this.position+=k.byteLength,k},r.prototype.readFloat64Array=function(f,k){f=f??this.byteLength-this.position/8;var A=new Float64Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readFloat32Array=function(f,k){f=f??this.byteLength-this.position/4;var A=new Float32Array(f);return r.memcpy(A.buffer,0,this.buffer,this.byteOffset+this.position,f*A.BYTES_PER_ELEMENT),r.arrayToNative(A,k??this.endianness),this.position+=A.byteLength,A},r.prototype.readInt32=function(f){var k=this._dataView.getInt32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readInt16=function(f){var k=this._dataView.getInt16(this.position,f??this.endianness);return this.position+=2,k},r.prototype.readInt8=function(){var f=this._dataView.getInt8(this.position);return this.position+=1,f},r.prototype.readUint32=function(f){var k=this._dataView.getUint32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readUint16=function(f){var k=this._dataView.getUint16(this.position,f??this.endianness);return this.position+=2,k},r.prototype.readUint8=function(){var f=this._dataView.getUint8(this.position);return this.position+=1,f},r.prototype.readFloat32=function(f){var k=this._dataView.getFloat32(this.position,f??this.endianness);return this.position+=4,k},r.prototype.readFloat64=function(f){var k=this._dataView.getFloat64(this.position,f??this.endianness);return this.position+=8,k},r.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,r.memcpy=function(f,k,A,p,b){var w=new Uint8Array(f,k,b),O=new Uint8Array(A,p,b);w.set(O)},r.arrayToNative=function(f,k){return k==this.endianness?f:this.flipArrayEndianness(f)},r.nativeToEndian=function(f,k){return this.endianness==k?f:this.flipArrayEndianness(f)},r.flipArrayEndianness=function(f){for(var k=new Uint8Array(f.buffer,f.byteOffset,f.byteLength),A=0;Ab;p--,b++){var w=k[b];k[b]=k[p],k[p]=w}return f},r.prototype.failurePosition=0,String.fromCharCodeUint8=function(f){for(var k=[],A=0;A>16),this.writeUint8((f&65280)>>8),this.writeUint8(f&255)},r.prototype.adjustUint32=function(f,k){var A=this.position;this.seek(f),this.writeUint32(k),this.seek(A)},r.prototype.mapInt32Array=function(f,k){this._realloc(f*4);var A=new Int32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A},r.prototype.mapInt16Array=function(f,k){this._realloc(f*2);var A=new Int16Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*2,A},r.prototype.mapInt8Array=function(f){this._realloc(f*1);var k=new Int8Array(this._buffer,this.byteOffset+this.position,f);return this.position+=f*1,k},r.prototype.mapUint32Array=function(f,k){this._realloc(f*4);var A=new Uint32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A},r.prototype.mapUint16Array=function(f,k){this._realloc(f*2);var A=new Uint16Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*2,A},r.prototype.mapFloat64Array=function(f,k){this._realloc(f*8);var A=new Float64Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*8,A},r.prototype.mapFloat32Array=function(f,k){this._realloc(f*4);var A=new Float32Array(this._buffer,this.byteOffset+this.position,f);return r.arrayToNative(A,k??this.endianness),this.position+=f*4,A};var s=function(f){this.buffers=[],this.bufferIndex=-1,f&&(this.insertBuffer(f),this.bufferIndex=0)};s.prototype=new r(new ArrayBuffer,0,r.BIG_ENDIAN),s.prototype.initialized=function(){var f;return this.bufferIndex>-1?!0:this.buffers.length>0?(f=this.buffers[0],f.fileStart===0?(this.buffer=f,this.bufferIndex=0,t.debug("MultiBufferStream","Stream ready for parsing"),!0):(t.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)):(t.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1)},ArrayBuffer.concat=function(f,k){t.debug("ArrayBuffer","Trying to create a new buffer of size: "+(f.byteLength+k.byteLength));var A=new Uint8Array(f.byteLength+k.byteLength);return A.set(new Uint8Array(f),0),A.set(new Uint8Array(k),f.byteLength),A.buffer},s.prototype.reduceBuffer=function(f,k,A){var p;return p=new Uint8Array(A),p.set(new Uint8Array(f,k,A)),p.buffer.fileStart=f.fileStart+k,p.buffer.usedBytes=0,p.buffer},s.prototype.insertBuffer=function(f){for(var k=!0,A=0;Ap.byteLength){this.buffers.splice(A,1),A--;continue}else t.warn("MultiBufferStream","Buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+") already appended, ignoring");else f.fileStart+f.byteLength<=p.fileStart||(f=this.reduceBuffer(f,0,p.fileStart-f.fileStart)),t.debug("MultiBufferStream","Appending new buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+")"),this.buffers.splice(A,0,f),A===0&&(this.buffer=f);k=!1;break}else if(f.fileStart0)f=this.reduceBuffer(f,b,w);else{k=!1;break}}}k&&(t.debug("MultiBufferStream","Appending new buffer (fileStart: "+f.fileStart+" - Length: "+f.byteLength+")"),this.buffers.push(f),A===0&&(this.buffer=f))},s.prototype.logBufferLevel=function(f){var k,A,p,b,w=[],O,y="";for(p=0,b=0,k=0;k0&&(y+=O.end-1+"]");var C=f?t.info:t.debug;this.buffers.length===0?C("MultiBufferStream","No more buffer in memory"):C("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+p+"/"+b+" bytes), continuous ranges: "+y)},s.prototype.cleanBuffers=function(){var f,k;for(f=0;f"+this.buffer.byteLength+")"),!0}else return!1;else return!1},s.prototype.findPosition=function(f,k,A){var p,b=null,w=-1;for(f===!0?p=0:p=this.bufferIndex;p=k?(t.debug("MultiBufferStream","Found position in existing buffer #"+w),w):-1):-1},s.prototype.findEndContiguousBuf=function(f){var k,A,p,b=f!==void 0?f:this.bufferIndex;if(A=this.buffers[b],this.buffers.length>b+1)for(k=b+1;k>3;return S===31&&_.data.length>=2&&(S=32+((_.data[0]&7)<<3)+((_.data[1]&224)>>5)),S}else return null},O.DecoderConfigDescriptor=function(y){O.Descriptor.call(this,k,y)},O.DecoderConfigDescriptor.prototype=new O.Descriptor,O.DecoderConfigDescriptor.prototype.parse=function(y){this.oti=y.readUint8(),this.streamType=y.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=y.readUint24(),this.maxBitrate=y.readUint32(),this.avgBitrate=y.readUint32(),this.size-=13,this.parseRemainingDescriptors(y)},O.DecoderSpecificInfo=function(y){O.Descriptor.call(this,A,y)},O.DecoderSpecificInfo.prototype=new O.Descriptor,O.SLConfigDescriptor=function(y){O.Descriptor.call(this,p,y)},O.SLConfigDescriptor.prototype=new O.Descriptor,this};e.MPEG4DescriptorParser=a;var l={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){l.FullBox.prototype=new l.Box,l.ContainerBox.prototype=new l.Box,l.SampleEntry.prototype=new l.Box,l.TrackGroupTypeBox.prototype=new l.FullBox,l.BASIC_BOXES.forEach(function(f){l.createBoxCtor(f)}),l.FULL_BOXES.forEach(function(f){l.createFullBoxCtor(f)}),l.CONTAINER_BOXES.forEach(function(f){l.createContainerBoxCtor(f[0],null,f[1])})},Box:function(f,k,A){this.type=f,this.size=k,this.uuid=A},FullBox:function(f,k,A){l.Box.call(this,f,k,A),this.flags=0,this.version=0},ContainerBox:function(f,k,A){l.Box.call(this,f,k,A),this.boxes=[]},SampleEntry:function(f,k,A,p){l.ContainerBox.call(this,f,k),this.hdr_size=A,this.start=p},SampleGroupEntry:function(f){this.grouping_type=f},TrackGroupTypeBox:function(f,k){l.FullBox.call(this,f,k)},createBoxCtor:function(f,k){l.boxCodes.push(f),l[f+"Box"]=function(A){l.Box.call(this,f,A)},l[f+"Box"].prototype=new l.Box,k&&(l[f+"Box"].prototype.parse=k)},createFullBoxCtor:function(f,k){l[f+"Box"]=function(A){l.FullBox.call(this,f,A)},l[f+"Box"].prototype=new l.FullBox,l[f+"Box"].prototype.parse=function(A){this.parseFullHeader(A),k&&k.call(this,A)}},addSubBoxArrays:function(f){if(f){this.subBoxNames=f;for(var k=f.length,A=0;AA?(t.error("BoxParser","Box of type '"+_+"' has a size "+C+" greater than its container size "+A),{code:l.ERR_NOT_ENOUGH_DATA,type:_,size:C,hdr_size:w,start:b}):C!==0&&b+C>f.getEndPosition()?(f.seek(b),t.info("BoxParser","Not enough data in stream to parse the entire '"+_+"' box"),{code:l.ERR_NOT_ENOUGH_DATA,type:_,size:C,hdr_size:w,start:b}):k?{code:l.OK,type:_,size:C,hdr_size:w,start:b}:(l[_+"Box"]?p=new l[_+"Box"](C):_!=="uuid"?(t.warn("BoxParser","Unknown box type: '"+_+"'"),p=new l.Box(_,C),p.has_unparsed_data=!0):l.UUIDBoxes[y]?p=new l.UUIDBoxes[y](C):(t.warn("BoxParser","Unknown uuid type: '"+y+"'"),p=new l.Box(_,C),p.uuid=y,p.has_unparsed_data=!0),p.hdr_size=w,p.start=b,p.write===l.Box.prototype.write&&p.type!=="mdat"&&(t.info("BoxParser","'"+S+"' box writing not yet implemented, keeping unparsed data in memory for later write"),p.parseDataAndRewind(f)),p.parse(f),O=f.getPosition()-(p.start+p.size),O<0?(t.warn("BoxParser","Parsing of box '"+S+"' did not read the entire indicated box data size (missing "+-O+" bytes), seeking forward"),f.seek(p.start+p.size)):O>0&&(t.error("BoxParser","Parsing of box '"+S+"' read "+O+" more bytes than the indicated box data size, seeking backwards"),p.size!==0&&f.seek(p.start+p.size)),{code:l.OK,box:p,size:p.size})},l.Box.prototype.parse=function(f){this.type!="mdat"?this.data=f.readUint8Array(this.size-this.hdr_size):this.size===0?f.seek(f.getEndPosition()):f.seek(this.start+this.size)},l.Box.prototype.parseDataAndRewind=function(f){this.data=f.readUint8Array(this.size-this.hdr_size),f.position-=this.size-this.hdr_size},l.FullBox.prototype.parseDataAndRewind=function(f){this.parseFullHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,f.position-=this.size-this.hdr_size},l.FullBox.prototype.parseFullHeader=function(f){this.version=f.readUint8(),this.flags=f.readUint24(),this.hdr_size+=4},l.FullBox.prototype.parse=function(f){this.parseFullHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size)},l.ContainerBox.prototype.parse=function(f){for(var k,A;f.getPosition()>10&31,k[1]=this.language>>5&31,k[2]=this.language&31,this.languageString=String.fromCharCode(k[0]+96,k[1]+96,k[2]+96)},l.SAMPLE_ENTRY_TYPE_VISUAL="Visual",l.SAMPLE_ENTRY_TYPE_AUDIO="Audio",l.SAMPLE_ENTRY_TYPE_HINT="Hint",l.SAMPLE_ENTRY_TYPE_METADATA="Metadata",l.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",l.SAMPLE_ENTRY_TYPE_SYSTEM="System",l.SAMPLE_ENTRY_TYPE_TEXT="Text",l.SampleEntry.prototype.parseHeader=function(f){f.readUint8Array(6),this.data_reference_index=f.readUint16(),this.hdr_size+=8},l.SampleEntry.prototype.parse=function(f){this.parseHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size)},l.SampleEntry.prototype.parseDataAndRewind=function(f){this.parseHeader(f),this.data=f.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,f.position-=this.size-this.hdr_size},l.SampleEntry.prototype.parseFooter=function(f){l.ContainerBox.prototype.parse.call(this,f)},l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_HINT),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_METADATA),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SUBTITLE),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SYSTEM),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_TEXT),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,function(f){var k;this.parseHeader(f),f.readUint16(),f.readUint16(),f.readUint32Array(3),this.width=f.readUint16(),this.height=f.readUint16(),this.horizresolution=f.readUint32(),this.vertresolution=f.readUint32(),f.readUint32(),this.frame_count=f.readUint16(),k=Math.min(31,f.readUint8()),this.compressorname=f.readString(k),k<31&&f.readString(31-k),this.depth=f.readUint16(),f.readUint16(),this.parseFooter(f)}),l.createMediaSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,function(f){this.parseHeader(f),f.readUint32Array(2),this.channel_count=f.readUint16(),this.samplesize=f.readUint16(),f.readUint16(),f.readUint16(),this.samplerate=f.readUint32()/65536,this.parseFooter(f)}),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),l.createSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"fLaC"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_TEXT,"enct"),l.createEncryptedSampleEntryCtor(l.SAMPLE_ENTRY_TYPE_METADATA,"encm"),l.createBoxCtor("a1lx",function(f){var k=f.readUint8()&1,A=((k&1)+1)*16;this.layer_size=[];for(var p=0;p<3;p++)A==16?this.layer_size[p]=f.readUint16():this.layer_size[p]=f.readUint32()}),l.createBoxCtor("a1op",function(f){this.op_index=f.readUint8()}),l.createFullBoxCtor("auxC",function(f){this.aux_type=f.readCString();var k=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=f.readUint8Array(k)}),l.createBoxCtor("av1C",function(f){var k=f.readUint8();if(k>>7&!1){t.error("av1C marker problem");return}if(this.version=k&127,this.version!==1){t.error("av1C version "+this.version+" not supported");return}if(k=f.readUint8(),this.seq_profile=k>>5&7,this.seq_level_idx_0=k&31,k=f.readUint8(),this.seq_tier_0=k>>7&1,this.high_bitdepth=k>>6&1,this.twelve_bit=k>>5&1,this.monochrome=k>>4&1,this.chroma_subsampling_x=k>>3&1,this.chroma_subsampling_y=k>>2&1,this.chroma_sample_position=k&3,k=f.readUint8(),this.reserved_1=k>>5&7,this.reserved_1!==0){t.error("av1C reserved_1 parsing problem");return}if(this.initial_presentation_delay_present=k>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=k&15;else if(this.reserved_2=k&15,this.reserved_2!==0){t.error("av1C reserved_2 parsing problem");return}var A=this.size-this.hdr_size-4;this.configOBUs=f.readUint8Array(A)}),l.createBoxCtor("avcC",function(f){var k,A;for(this.configurationVersion=f.readUint8(),this.AVCProfileIndication=f.readUint8(),this.profile_compatibility=f.readUint8(),this.AVCLevelIndication=f.readUint8(),this.lengthSizeMinusOne=f.readUint8()&3,this.nb_SPS_nalus=f.readUint8()&31,A=this.size-this.hdr_size-6,this.SPS=[],k=0;k0&&(this.ext=f.readUint8Array(A))}),l.createBoxCtor("btrt",function(f){this.bufferSizeDB=f.readUint32(),this.maxBitrate=f.readUint32(),this.avgBitrate=f.readUint32()}),l.createFullBoxCtor("ccst",function(f){var k=f.readUint8();this.all_ref_pics_intra=(k&128)==128,this.intra_pred_used=(k&64)==64,this.max_ref_per_pic=(k&63)>>2,f.readUint24()}),l.createBoxCtor("cdef",function(f){var k;for(this.channel_count=f.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],k=0;k=32768&&this.component_type_urls.push(f.readCString())}}),l.createFullBoxCtor("co64",function(f){var k,A;if(k=f.readUint32(),this.chunk_offsets=[],this.version===0)for(A=0;A>7}else this.colour_type==="rICC"?this.ICC_profile=f.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=f.readUint8Array(this.size-4))}),l.createFullBoxCtor("cprt",function(f){this.parseLanguage(f),this.notice=f.readCString()}),l.createFullBoxCtor("cslg",function(f){this.version===0&&(this.compositionToDTSShift=f.readInt32(),this.leastDecodeToDisplayDelta=f.readInt32(),this.greatestDecodeToDisplayDelta=f.readInt32(),this.compositionStartTime=f.readInt32(),this.compositionEndTime=f.readInt32())}),l.createFullBoxCtor("ctts",function(f){var k,A;if(k=f.readUint32(),this.sample_counts=[],this.sample_offsets=[],this.version===0)for(A=0;A>6,this.bsid=k>>1&31,this.bsmod=(k&1)<<2|A>>6&3,this.acmod=A>>3&7,this.lfeon=A>>2&1,this.bit_rate_code=A&3|p>>5&7}),l.createBoxCtor("dec3",function(f){var k=f.readUint16();this.data_rate=k>>3,this.num_ind_sub=k&7,this.ind_subs=[];for(var A=0;A>6,p.bsid=b>>1&31,p.bsmod=(b&1)<<4|w>>4&15,p.acmod=w>>1&7,p.lfeon=w&1,p.num_dep_sub=O>>1&15,p.num_dep_sub>0&&(p.chan_loc=(O&1)<<8|f.readUint8())}}),l.createFullBoxCtor("dfLa",function(f){var k=127,A=128,p=[],b=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];do{var w=f.readUint8(),O=Math.min(w&k,b.length-1);if(O?f.readUint8Array(f.readUint24()):(f.readUint8Array(13),this.samplerate=f.readUint32()>>12,f.readUint8Array(20)),p.push(b[O]),w&A)break}while(!0);this.numMetadataBlocks=p.length+" ("+p.join(", ")+")"}),l.createBoxCtor("dimm",function(f){this.bytessent=f.readUint64()}),l.createBoxCtor("dmax",function(f){this.time=f.readUint32()}),l.createBoxCtor("dmed",function(f){this.bytessent=f.readUint64()}),l.createBoxCtor("dOps",function(f){if(this.Version=f.readUint8(),this.OutputChannelCount=f.readUint8(),this.PreSkip=f.readUint16(),this.InputSampleRate=f.readUint32(),this.OutputGain=f.readInt16(),this.ChannelMappingFamily=f.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=f.readUint8(),this.CoupledCount=f.readUint8(),this.ChannelMapping=[];for(var k=0;k=4;)this.compatible_brands[A]=f.readString(4),k-=4,A++}),l.createFullBoxCtor("hdlr",function(f){this.version===0&&(f.readUint32(),this.handler=f.readString(4),f.readUint32Array(3),this.name=f.readString(this.size-this.hdr_size-20),this.name[this.name.length-1]==="\0"&&(this.name=this.name.slice(0,-1)))}),l.createBoxCtor("hvcC",function(f){var k,A,p,b;this.configurationVersion=f.readUint8(),b=f.readUint8(),this.general_profile_space=b>>6,this.general_tier_flag=(b&32)>>5,this.general_profile_idc=b&31,this.general_profile_compatibility=f.readUint32(),this.general_constraint_indicator=f.readUint8Array(6),this.general_level_idc=f.readUint8(),this.min_spatial_segmentation_idc=f.readUint16()&4095,this.parallelismType=f.readUint8()&3,this.chroma_format_idc=f.readUint8()&3,this.bit_depth_luma_minus8=f.readUint8()&7,this.bit_depth_chroma_minus8=f.readUint8()&7,this.avgFrameRate=f.readUint16(),b=f.readUint8(),this.constantFrameRate=b>>6,this.numTemporalLayers=(b&13)>>3,this.temporalIdNested=(b&4)>>2,this.lengthSizeMinusOne=b&3,this.nalu_arrays=[];var w=f.readUint8();for(k=0;k>7,O.nalu_type=b&63;var y=f.readUint16();for(A=0;A>4&15,this.length_size=k&15,k=f.readUint8(),this.base_offset_size=k>>4&15,this.version===1||this.version===2?this.index_size=k&15:this.index_size=0,this.items=[];var A=0;if(this.version<2)A=f.readUint16();else if(this.version===2)A=f.readUint32();else throw"version of iloc box not supported";for(var p=0;p>7,this.axis=k&1}),l.createFullBoxCtor("infe",function(f){if((this.version===0||this.version===1)&&(this.item_ID=f.readUint16(),this.item_protection_index=f.readUint16(),this.item_name=f.readCString(),this.content_type=f.readCString(),this.content_encoding=f.readCString()),this.version===1){this.extension_type=f.readString(4),t.warn("BoxParser","Cannot parse extension type"),f.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=f.readUint16():this.version===3&&(this.item_ID=f.readUint32()),this.item_protection_index=f.readUint16(),this.item_type=f.readString(4),this.item_name=f.readCString(),this.item_type==="mime"?(this.content_type=f.readCString(),this.content_encoding=f.readCString()):this.item_type==="uri "&&(this.item_uri_type=f.readCString()))}),l.createFullBoxCtor("ipma",function(f){var k,A;for(entry_count=f.readUint32(),this.associations=[],k=0;k>7===1,this.flags&1?O.property_index=(w&127)<<8|f.readUint8():O.property_index=w&127}}}),l.createFullBoxCtor("iref",function(f){var k,A;for(this.references=[];f.getPosition()>7,p.assignment_type=b&127,p.assignment_type){case 0:p.grouping_type=f.readString(4);break;case 1:p.grouping_type=f.readString(4),p.grouping_type_parameter=f.readUint32();break;case 2:break;case 3:break;case 4:p.sub_track_id=f.readUint32();break;default:t.warn("BoxParser","Unknown leva assignement type")}}}),l.createBoxCtor("lhvC",function(f){var k,A,p;this.configurationVersion=f.readUint8(),this.min_spatial_segmentation_idc=f.readUint16()&4095,this.parallelismType=f.readUint8()&3,p=f.readUint8(),this.numTemporalLayers=(p&13)>>3,this.temporalIdNested=(p&4)>>2,this.lengthSizeMinusOne=p&3,this.nalu_arrays=[];var b=f.readUint8();for(k=0;k>7,w.nalu_type=p&63;var O=f.readUint16();for(A=0;A>8,f.readUint16(),f.readUint32Array(2),this.matrix=f.readUint32Array(9),f.readUint32Array(6),this.next_track_id=f.readUint32()}),l.createBoxCtor("npck",function(f){this.packetssent=f.readUint32()}),l.createBoxCtor("nump",function(f){this.packetssent=f.readUint64()}),l.createFullBoxCtor("padb",function(f){var k=f.readUint32();this.padbits=[];for(var A=0;A0){var k=f.readUint32();this.kid=[];for(var A=0;A0&&(this.data=f.readUint8Array(p))}),l.createFullBoxCtor("clef",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createFullBoxCtor("enof",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createFullBoxCtor("prof",function(f){this.width=f.readUint32(),this.height=f.readUint32()}),l.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),l.createBoxCtor("rtp ",function(f){this.descriptionformat=f.readString(4),this.sdptext=f.readString(this.size-this.hdr_size-4)}),l.createFullBoxCtor("saio",function(f){this.flags&1&&(this.aux_info_type=f.readUint32(),this.aux_info_type_parameter=f.readUint32());var k=f.readUint32();this.offset=[];for(var A=0;A>7,this.avgRateFlag=k>>6&1,this.durationFlag&&(this.duration=f.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=f.readUint8(),this.avgBitRate=f.readUint16(),this.avgFrameRate=f.readUint16()),this.dependency=[];for(var A=f.readUint8(),p=0;p>7,this.num_leading_samples=k&127}),l.createSampleGroupCtor("rash",function(f){if(this.operation_point_count=f.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)t.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=f.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=f.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var k=0;k>4,this.skip_byte_block=k&15,this.isProtected=f.readUint8(),this.Per_Sample_IV_Size=f.readUint8(),this.KID=l.parseHex16(f),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=f.readUint8(),this.constant_IV=f.readUint8Array(this.constant_IV_size))}),l.createSampleGroupCtor("stsa",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("sync",function(f){var k=f.readUint8();this.NAL_unit_type=k&63}),l.createSampleGroupCtor("tele",function(f){var k=f.readUint8();this.level_independently_decodable=k>>7}),l.createSampleGroupCtor("tsas",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("tscl",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createSampleGroupCtor("vipr",function(f){t.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),l.createFullBoxCtor("sbgp",function(f){this.grouping_type=f.readString(4),this.version===1?this.grouping_type_parameter=f.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var k=f.readUint32(),A=0;A>6,this.sample_depends_on[p]=k>>4&3,this.sample_is_depended_on[p]=k>>2&3,this.sample_has_redundancy[p]=k&3}),l.createFullBoxCtor("senc"),l.createFullBoxCtor("sgpd",function(f){this.grouping_type=f.readString(4),t.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=f.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=f.readUint32()),this.entries=[];for(var k=f.readUint32(),A=0;A>31&1,p.referenced_size=b&2147483647,p.subsegment_duration=f.readUint32(),b=f.readUint32(),p.starts_with_SAP=b>>31&1,p.SAP_type=b>>28&7,p.SAP_delta_time=b&268435455}}),l.SingleItemTypeReferenceBox=function(f,k,A,p){l.Box.call(this,f,k),this.hdr_size=A,this.start=p},l.SingleItemTypeReferenceBox.prototype=new l.Box,l.SingleItemTypeReferenceBox.prototype.parse=function(f){this.from_item_ID=f.readUint16();var k=f.readUint16();this.references=[];for(var A=0;A>4&15,this.sample_sizes[k+1]=p&15}else if(this.field_size===8)for(k=0;k0)for(A=0;A>4&15,this.default_skip_byte_block=k&15}this.default_isProtected=f.readUint8(),this.default_Per_Sample_IV_Size=f.readUint8(),this.default_KID=l.parseHex16(f),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=f.readUint8(),this.default_constant_IV=f.readUint8Array(this.default_constant_IV_size))}),l.createFullBoxCtor("tfdt",function(f){this.version==1?this.baseMediaDecodeTime=f.readUint64():this.baseMediaDecodeTime=f.readUint32()}),l.createFullBoxCtor("tfhd",function(f){var k=0;this.track_id=f.readUint32(),this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=f.readUint64(),k+=8):this.base_data_offset=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=f.readUint32(),k+=4):this.default_sample_description_index=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=f.readUint32(),k+=4):this.default_sample_duration=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=f.readUint32(),k+=4):this.default_sample_size=0,this.size-this.hdr_size>k&&this.flags&l.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=f.readUint32(),k+=4):this.default_sample_flags=0}),l.createFullBoxCtor("tfra",function(f){this.track_ID=f.readUint32(),f.readUint24();var k=f.readUint8();this.length_size_of_traf_num=k>>4&3,this.length_size_of_trun_num=k>>2&3,this.length_size_of_sample_num=k&3,this.entries=[];for(var A=f.readUint32(),p=0;p>8,f.readUint16(),this.matrix=f.readInt32Array(9),this.width=f.readUint32(),this.height=f.readUint32()}),l.createBoxCtor("tmax",function(f){this.time=f.readUint32()}),l.createBoxCtor("tmin",function(f){this.time=f.readUint32()}),l.createBoxCtor("totl",function(f){this.bytessent=f.readUint32()}),l.createBoxCtor("tpay",function(f){this.bytessent=f.readUint32()}),l.createBoxCtor("tpyl",function(f){this.bytessent=f.readUint64()}),l.TrackGroupTypeBox.prototype.parse=function(f){this.parseFullHeader(f),this.track_group_id=f.readUint32()},l.createTrackGroupCtor("msrc"),l.TrackReferenceTypeBox=function(f,k,A,p){l.Box.call(this,f,k),this.hdr_size=A,this.start=p},l.TrackReferenceTypeBox.prototype=new l.Box,l.TrackReferenceTypeBox.prototype.parse=function(f){this.track_ids=f.readUint32Array((this.size-this.hdr_size)/4)},l.trefBox.prototype.parse=function(f){for(var k,A;f.getPosition()k&&this.flags&l.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=f.readInt32(),k+=4):this.data_offset=0,this.size-this.hdr_size>k&&this.flags&l.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=f.readUint32(),k+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>k)for(var A=0;A>7&1,this.block_pad_lsb=A>>6&1,this.block_little_endian=A>>5&1,this.block_reversed=A>>4&1,this.pad_unknown=A>>3&1,this.pixel_size=f.readUint32(),this.row_align_size=f.readUint32(),this.tile_align_size=f.readUint32(),this.num_tile_cols_minus_one=f.readUint32(),this.num_tile_rows_minus_one=f.readUint32()}}),l.createFullBoxCtor("url ",function(f){this.flags!==1&&(this.location=f.readCString())}),l.createFullBoxCtor("urn ",function(f){this.name=f.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=f.readCString())}),l.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,function(f){this.LiveServerManifest=f.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}),l.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,function(f){this.system_id=l.parseHex16(f);var k=f.readUint32();k>0&&(this.data=f.readUint8Array(k))}),l.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),l.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,function(f){this.default_AlgorithmID=f.readUint24(),this.default_IV_size=f.readUint8(),this.default_KID=l.parseHex16(f)}),l.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,function(f){this.fragment_count=f.readUint8(),this.entries=[];for(var k=0;k>4,this.chromaSubsampling=k>>1&7,this.videoFullRangeFlag=k&1,this.colourPrimaries=f.readUint8(),this.transferCharacteristics=f.readUint8(),this.matrixCoefficients=f.readUint8(),this.codecIntializationDataSize=f.readUint16(),this.codecIntializationData=f.readUint8Array(this.codecIntializationDataSize)):(this.profile=f.readUint8(),this.level=f.readUint8(),k=f.readUint8(),this.bitDepth=k>>4&15,this.colorSpace=k&15,k=f.readUint8(),this.chromaSubsampling=k>>4&15,this.transferFunction=k>>1&7,this.videoFullRangeFlag=k&1,this.codecIntializationDataSize=f.readUint16(),this.codecIntializationData=f.readUint8Array(this.codecIntializationDataSize))}),l.createBoxCtor("vttC",function(f){this.text=f.readString(this.size-this.hdr_size)}),l.createFullBoxCtor("vvcC",function(f){var k,A,p={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(T){this.held_bits=T.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(T){this.held_bits=T.readUint16(),this.num_held_bits=16},extract_bits:function(T){var D=this.held_bits>>this.num_held_bits-T&(1<1){for(p.stream_read_1_bytes(f),this.ptl_sublayer_present_mask=0,A=this.num_sublayers-2;A>=0;--A){var O=p.extract_bits(1);this.ptl_sublayer_present_mask|=O<1;++A)p.extract_bits(1);for(this.sublayer_level_idc=[],A=this.num_sublayers-2;A>=0;--A)this.ptl_sublayer_present_mask&1<"u"||k===null?k=2:k;A.length>=1;k+=l.decimalToHex(p,0),k+=".",this.hvcC.general_tier_flag===0?k+="L":k+="H",k+=this.hvcC.general_level_idc;var b=!1,w="";for(f=5;f>=0;f--)(this.hvcC.general_constraint_indicator[f]||b)&&(w="."+l.decimalToHex(this.hvcC.general_constraint_indicator[f],0)+w,b=!0);k+=w}return k},l.vvc1SampleEntry.prototype.getCodec=l.vvi1SampleEntry.prototype.getCodec=function(){var f,k=l.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){k+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?k+=".H":k+=".L",k+=this.vvcC.general_level_idc;var A="";if(this.vvcC.general_constraint_info){var p=[],b=0;b|=this.vvcC.ptl_frame_only_constraint<<7,b|=this.vvcC.ptl_multilayer_enabled<<6;var w;for(f=0;f>2&63,p.push(b),b&&(w=f),b=this.vvcC.general_constraint_info[f]>>2&3;if(w===void 0)A=".CA";else{A=".C";var O="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",y=0,C=0;for(f=0;f<=w;++f)for(y=y<<8|p[f],C+=8;C>=5;){var _=y>>C-5&31;A+=O[_],C-=5,y&=(1<o&&(this.size+=8),this.type==="uuid"&&(this.size+=16),t.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+f.getPosition()+(k||"")),this.size>o?f.writeUint32(1):(this.sizePosition=f.getPosition(),f.writeUint32(this.size)),f.writeString(this.type,null,4),this.type==="uuid"&&f.writeUint8Array(this.uuid),this.size>o&&f.writeUint64(this.size)},l.FullBox.prototype.writeHeader=function(f){this.size+=4,l.Box.prototype.writeHeader.call(this,f," v="+this.version+" f="+this.flags),f.writeUint8(this.version),f.writeUint24(this.flags)},l.Box.prototype.write=function(f){this.type==="mdat"?this.data&&(this.size=this.data.length,this.writeHeader(f),f.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(f),this.data&&f.writeUint8Array(this.data))},l.ContainerBox.prototype.write=function(f){this.size=0,this.writeHeader(f);for(var k=0;k=2&&f.writeUint32(this.default_sample_description_index),f.writeUint32(this.entries.length),k=0;k0)for(k=0;k+1k?1:0,this.flags=0,this.size=4,this.version===1&&(this.size+=4),this.writeHeader(f),this.version===1?f.writeUint64(this.baseMediaDecodeTime):f.writeUint32(this.baseMediaDecodeTime)},l.tfhdBox.prototype.write=function(f){this.version=0,this.size=4,this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&l.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&l.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(f),f.writeUint32(this.track_id),this.flags&l.TFHD_FLAG_BASE_DATA_OFFSET&&f.writeUint64(this.base_data_offset),this.flags&l.TFHD_FLAG_SAMPLE_DESC&&f.writeUint32(this.default_sample_description_index),this.flags&l.TFHD_FLAG_SAMPLE_DUR&&f.writeUint32(this.default_sample_duration),this.flags&l.TFHD_FLAG_SAMPLE_SIZE&&f.writeUint32(this.default_sample_size),this.flags&l.TFHD_FLAG_SAMPLE_FLAGS&&f.writeUint32(this.default_sample_flags)},l.tkhdBox.prototype.write=function(f){this.version=0,this.size=4*18+2*4,this.writeHeader(f),f.writeUint32(this.creation_time),f.writeUint32(this.modification_time),f.writeUint32(this.track_id),f.writeUint32(0),f.writeUint32(this.duration),f.writeUint32(0),f.writeUint32(0),f.writeInt16(this.layer),f.writeInt16(this.alternate_group),f.writeInt16(this.volume<<8),f.writeUint16(0),f.writeInt32Array(this.matrix),f.writeUint32(this.width),f.writeUint32(this.height)},l.trexBox.prototype.write=function(f){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(f),f.writeUint32(this.track_id),f.writeUint32(this.default_sample_description_index),f.writeUint32(this.default_sample_duration),f.writeUint32(this.default_sample_size),f.writeUint32(this.default_sample_flags)},l.trunBox.prototype.write=function(f){this.version=0,this.size=4,this.flags&l.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&l.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&l.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&l.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&l.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&l.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(f),f.writeUint32(this.sample_count),this.flags&l.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=f.getPosition(),f.writeInt32(this.data_offset)),this.flags&l.TRUN_FLAGS_FIRST_FLAG&&f.writeUint32(this.first_sample_flags);for(var k=0;k0&&f.writeUint8Array(this.codecIntializationData)},l.cttsBox.prototype.unpack=function(f){var k,A,p;for(p=0,k=0;k-1)){if(f[A]instanceof l.Box||k[A]instanceof l.Box||typeof f[A]>"u"||typeof k[A]>"u"||typeof f[A]=="function"||typeof k[A]=="function"||f.subBoxNames&&f.subBoxNames.indexOf(A.slice(0,4))>-1||k.subBoxNames&&k.subBoxNames.indexOf(A.slice(0,4))>-1||A==="data"||A==="start"||A==="size"||A==="creation_time"||A==="modification_time"||l.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(A)>-1)continue;if(f[A]!==k[A])return!1}return!0},l.boxEqual=function(f,k){if(!l.boxEqualFields(f,k))return!1;for(var A=0;A1)for(A=1;A-1&&this.fragmentedTracks.splice(k,1)},m.prototype.setExtractionOptions=function(f,k,A){var p=this.getTrackById(f);if(p){var b={};this.extractedTracks.push(b),b.id=f,b.user=k,b.trak=p,p.nextSample=0,b.nb_samples=1e3,b.samples=[],A&&A.nbSamples&&(b.nb_samples=A.nbSamples)}},m.prototype.unsetExtractionOptions=function(f){for(var k=-1,A=0;A-1&&this.extractedTracks.splice(k,1)},m.prototype.parse=function(){var f,k,A=!1;if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else if(this.saveParsePosition&&this.saveParsePosition(),f=l.parseOneBox(this.stream,A),f.code===l.ERR_NOT_ENOUGH_DATA)if(this.processIncompleteBox){if(this.processIncompleteBox(f))continue;return}else return;else{var p;switch(k=f.box,p=k.type!=="uuid"?k.type:k.uuid,this.boxes.push(k),p){case"mdat":this.mdats.push(k);break;case"moof":this.moofs.push(k);break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[p]!==void 0&&t.warn("ISOFile","Duplicate Box of type: "+p+", overriding previous occurrence"),this[p]=k;break}this.updateUsedBytes&&this.updateUsedBytes(k,f)}},m.prototype.checkBuffer=function(f){if(f==null)throw"Buffer must be defined and non empty";if(f.fileStart===void 0)throw"Buffer must have a fileStart property";return f.byteLength===0?(t.warn("ISOFile","Ignoring empty buffer (fileStart: "+f.fileStart+")"),this.stream.logBufferLevel(),!1):(t.info("ISOFile","Processing buffer (fileStart: "+f.fileStart+")"),f.usedBytes=0,this.stream.insertBuffer(f),this.stream.logBufferLevel(),this.stream.initialized()?!0:(t.warn("ISOFile","Not ready to start parsing"),!1))},m.prototype.appendBuffer=function(f,k){var A;if(this.checkBuffer(f))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(k),this.nextSeekPosition?(A=this.nextSeekPosition,this.nextSeekPosition=void 0):A=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(A=this.stream.getEndFilePositionAfter(A))):this.nextParsePosition?A=this.nextParsePosition:A=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(t.info("ISOFile","Done processing buffer (fileStart: "+f.fileStart+") - next buffer to fetch should have a fileStart position of "+A),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),t.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),A},m.prototype.getInfo=function(){var f,k,A={},p,b,w,O,y=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(A.hasMoov=!0,A.duration=this.moov.mvhd.duration,A.timescale=this.moov.mvhd.timescale,A.isFragmented=this.moov.mvex!=null,A.isFragmented&&this.moov.mvex.mehd&&(A.fragment_duration=this.moov.mvex.mehd.fragment_duration),A.isProgressive=this.isProgressive,A.hasIOD=this.moov.iods!=null,A.brands=[],A.brands.push(this.ftyp.major_brand),A.brands=A.brands.concat(this.ftyp.compatible_brands),A.created=new Date(y+this.moov.mvhd.creation_time*1e3),A.modified=new Date(y+this.moov.mvhd.modification_time*1e3),A.tracks=[],A.audioTracks=[],A.videoTracks=[],A.subtitleTracks=[],A.metadataTracks=[],A.hintTracks=[],A.otherTracks=[],f=0;f0?A.mime+='video/mp4; codecs="':A.audioTracks&&A.audioTracks.length>0?A.mime+='audio/mp4; codecs="':A.mime+='application/mp4; codecs="',f=0;f=A.samples.length)&&(t.info("ISOFile","Sending fragmented data on track #"+p.id+" for samples ["+Math.max(0,A.nextSample-p.nb_samples)+","+(A.nextSample-1)+"]"),t.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(p.id,p.user,p.segmentStream.buffer,A.nextSample,f||A.nextSample>=A.samples.length),p.segmentStream=null,p!==this.fragmentedTracks[k]))break}}if(this.onSamples!==null)for(k=0;k=A.samples.length)&&(t.debug("ISOFile","Sending samples on track #"+w.id+" for sample "+A.nextSample),this.onSamples&&this.onSamples(w.id,w.user,w.samples),w.samples=[],w!==this.extractedTracks[k]))break}}}},m.prototype.getBox=function(f){var k=this.getBoxes(f,!0);return k.length?k[0]:null},m.prototype.getBoxes=function(f,k){var A=[];return m._sweep.call(this,f,A,k),A},m._sweep=function(f,k,A){this.type&&this.type==f&&k.push(this);for(var p in this.boxes){if(k.length&&A)return;m._sweep.call(this.boxes[p],f,k,A)}},m.prototype.getTrackSamplesInfo=function(f){var k=this.getTrackById(f);if(k)return k.samples},m.prototype.getTrackSample=function(f,k){var A=this.getTrackById(f),p=this.getSample(A,k);return p},m.prototype.releaseUsedSamples=function(f,k){var A=0,p=this.getTrackById(f);p.lastValidSample||(p.lastValidSample=0);for(var b=p.lastValidSample;bf*b.timescale){y=p-1;break}k&&b.is_sync&&(O=p)}for(k&&(y=O),f=A.samples[y].cts,A.nextSample=y;A.samples[y].alreadyRead===A.samples[y].size&&A.samples[y+1];)y++;return w=A.samples[y].offset+A.samples[y].alreadyRead,t.info("ISOFile","Seeking to "+(k?"RAP":"")+" sample #"+A.nextSample+" on track "+A.tkhd.track_id+", time "+t.getDurationString(f,C)+" and offset: "+w),{offset:w,time:f/C}},m.prototype.getTrackDuration=function(f){var k;return f.samples?(k=f.samples[f.samples.length-1],(k.cts+k.duration)/k.timescale):1/0},m.prototype.seek=function(f,k){var A=this.moov,p,b,w,O={offset:1/0,time:1/0};if(this.moov){for(w=0;wthis.getTrackDuration(p))&&(b=this.seekTrack(f,k,p),b.offset-1){O=y;break}switch(O){case"Visual":if(b.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),w.set("width",k.width).set("height",k.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",k.type+" Compressor").set("depth",24),k.avcDecoderConfigRecord){var S=new l.avcCBox;S.parse(new n(k.avcDecoderConfigRecord)),w.addBox(S)}else if(k.hevcDecoderConfigRecord){var L=new l.hvcCBox;L.parse(new n(k.hevcDecoderConfigRecord)),w.addBox(L)}else if(k.vpcDecoderConfigRecord){var E=new l.vpcCBox;E.parse(new n(k.vpcDecoderConfigRecord)),w.addBox(E)}break;case"Audio":b.add("smhd").set("balance",k.balance||0),w.set("channel_count",k.channel_count||2).set("samplesize",k.samplesize||16).set("samplerate",k.samplerate||65536);break;case"Hint":b.add("hmhd");break;case"Subtitle":switch(b.add("sthd"),k.type){case"stpp":w.set("namespace",k.namespace||"nonamespace").set("schema_location",k.schema_location||"").set("auxiliary_mime_types",k.auxiliary_mime_types||"");break}break;case"Metadata":b.add("nmhd");break;case"System":b.add("nmhd");break;default:b.add("nmhd");break}k.description&&w.addBox(k.description),k.description_boxes&&k.description_boxes.forEach(function(D){w.addBox(D)}),b.add("dinf").add("dref").addEntry(new l["url Box"]().set("flags",1));var T=b.add("stbl");return T.add("stsd").addEntry(w),T.add("stts").set("sample_counts",[]).set("sample_deltas",[]),T.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),T.add("stco").set("chunk_offsets",[]),T.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",k.id).set("default_sample_description_index",k.default_sample_description_index||1).set("default_sample_duration",k.default_sample_duration||0).set("default_sample_size",k.default_sample_size||0).set("default_sample_flags",k.default_sample_flags||0),this.buildTrakSampleLists(A),k.id}},l.Box.prototype.computeSize=function(f){var k=f||new r;k.endianness=r.BIG_ENDIAN,this.write(k)},m.prototype.addSample=function(f,k,A){var p=A||{},b={},w=this.getTrackById(f);if(w!==null){b.number=w.samples.length,b.track_id=w.tkhd.track_id,b.timescale=w.mdia.mdhd.timescale,b.description_index=p.sample_description_index?p.sample_description_index-1:0,b.description=w.mdia.minf.stbl.stsd.entries[b.description_index],b.data=k,b.size=k.byteLength,b.alreadyRead=b.size,b.duration=p.duration||1,b.cts=p.cts||0,b.dts=p.dts||0,b.is_sync=p.is_sync||!1,b.is_leading=p.is_leading||0,b.depends_on=p.depends_on||0,b.is_depended_on=p.is_depended_on||0,b.has_redundancy=p.has_redundancy||0,b.degradation_priority=p.degradation_priority||0,b.offset=0,b.subsamples=p.subsamples,w.samples.push(b),w.samples_size+=b.size,w.samples_duration+=b.duration,w.first_dts===void 0&&(w.first_dts=p.dts),this.processSamples();var O=this.createSingleSampleMoof(b);return this.addBox(O),O.computeSize(),O.trafs[0].truns[0].data_offset=O.size+8,this.add("mdat").data=new Uint8Array(k),b}},m.prototype.createSingleSampleMoof=function(f){var k=0;f.is_sync?k=1<<25:k=65536;var A=new l.moofBox;A.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var p=A.add("traf"),b=this.getTrackById(f.track_id);return p.add("tfhd").set("track_id",f.track_id).set("flags",l.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),p.add("tfdt").set("baseMediaDecodeTime",f.dts-(b.first_dts||0)),p.add("trun").set("flags",l.TRUN_FLAGS_DATA_OFFSET|l.TRUN_FLAGS_DURATION|l.TRUN_FLAGS_SIZE|l.TRUN_FLAGS_FLAGS|l.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[f.duration]).set("sample_size",[f.size]).set("sample_flags",[k]).set("sample_composition_time_offset",[f.cts-f.dts]),A},m.prototype.lastMoofIndex=0,m.prototype.samplesDataSize=0,m.prototype.resetTables=function(){var f,k,A,p,b,w,O,y;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,f=0;f=2&&(C=b[O].grouping_type+"/0",y=new _(b[O].grouping_type,0),y.is_fragment=!0,k.sample_groups_info[C]||(k.sample_groups_info[C]=y))}else for(O=0;O=2&&(C=p[O].grouping_type+"/0",y=new _(p[O].grouping_type,0),f.sample_groups_info[C]||(f.sample_groups_info[C]=y))},m.setSampleGroupProperties=function(f,k,A,p){var b,w;k.sample_groups=[];for(b in p)if(k.sample_groups[b]={},k.sample_groups[b].grouping_type=p[b].grouping_type,k.sample_groups[b].grouping_type_parameter=p[b].grouping_type_parameter,A>=p[b].last_sample_in_run&&(p[b].last_sample_in_run<0&&(p[b].last_sample_in_run=0),p[b].entry_index++,p[b].entry_index<=p[b].sbgp.entries.length-1&&(p[b].last_sample_in_run+=p[b].sbgp.entries[p[b].entry_index].sample_count)),p[b].entry_index<=p[b].sbgp.entries.length-1?k.sample_groups[b].group_description_index=p[b].sbgp.entries[p[b].entry_index].group_description_index:k.sample_groups[b].group_description_index=-1,k.sample_groups[b].group_description_index!==0){var O;p[b].fragment_description?O=p[b].fragment_description:O=p[b].description,k.sample_groups[b].group_description_index>0?(k.sample_groups[b].group_description_index>65535?w=(k.sample_groups[b].group_description_index>>16)-1:w=k.sample_groups[b].group_description_index-1,O&&w>=0&&(k.sample_groups[b].description=O.entries[w])):O&&O.version>=2&&O.default_group_description_index>0&&(k.sample_groups[b].description=O.entries[O.default_group_description_index-1])}},m.process_sdtp=function(f,k,A){k&&(f?(k.is_leading=f.is_leading[A],k.depends_on=f.sample_depends_on[A],k.is_depended_on=f.sample_is_depended_on[A],k.has_redundancy=f.sample_has_redundancy[A]):(k.is_leading=0,k.depends_on=0,k.is_depended_on=0,k.has_redundancy=0))},m.prototype.buildSampleLists=function(){var f,k;for(f=0;f"u")){for(k=0;kB&&(R++,B<0&&(B=0),B+=w.sample_counts[R]),k>0?(f.samples[k-1].duration=w.sample_deltas[R],f.samples_duration+=f.samples[k-1].duration,$.dts=f.samples[k-1].dts+f.samples[k-1].duration):$.dts=0,O?(k>=I&&(F++,I<0&&(I=0),I+=O.sample_counts[F]),$.cts=f.samples[k].dts+O.sample_offsets[F]):$.cts=$.dts,y?(k==y.sample_numbers[j]-1?($.is_sync=!0,j++):($.is_sync=!1,$.degradation_priority=0),_&&_.entries[W].sample_delta+H==k+1&&($.subsamples=_.entries[W].subsamples,H+=_.entries[W].sample_delta,W++)):$.is_sync=!0,m.process_sdtp(f.mdia.minf.stbl.sdtp,$,$.number),E?$.degradation_priority=E.priority[k]:$.degradation_priority=0,_&&_.entries[W].sample_delta+H==k&&($.subsamples=_.entries[W].subsamples,H+=_.entries[W].sample_delta),(S.length>0||L.length>0)&&m.setSampleGroupProperties(f,$,k,f.sample_groups_info)}k>0&&(f.samples[k-1].duration=Math.max(f.mdia.mdhd.duration-f.samples[k-1].dts,0),f.samples_duration+=f.samples[k-1].duration)}},m.prototype.updateSampleLists=function(){var f,k,A,p,b,w,O,y,C,_,S,L,E,T,D;if(this.moov!==void 0){for(;this.lastMoofIndex0&&m.initSampleGroups(L,S,S.sbgps,L.mdia.minf.stbl.sgpds,S.sgpds),k=0;k0?T.dts=L.samples[L.samples.length-2].dts+L.samples[L.samples.length-2].duration:(S.tfdt?T.dts=S.tfdt.baseMediaDecodeTime:T.dts=0,L.first_traf_merged=!0),T.cts=T.dts,P.flags&l.TRUN_FLAGS_CTS_OFFSET&&(T.cts=T.dts+P.sample_composition_time_offset[A]),D=O,P.flags&l.TRUN_FLAGS_FLAGS?D=P.sample_flags[A]:A===0&&P.flags&l.TRUN_FLAGS_FIRST_FLAG&&(D=P.first_sample_flags),T.is_sync=!(D>>16&1),T.is_leading=D>>26&3,T.depends_on=D>>24&3,T.is_depended_on=D>>22&3,T.has_redundancy=D>>20&3,T.degradation_priority=D&65535;var Q=!!(S.tfhd.flags&l.TFHD_FLAG_BASE_DATA_OFFSET),M=!!(S.tfhd.flags&l.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),B=!!(P.flags&l.TRUN_FLAGS_DATA_OFFSET),R=0;Q?R=S.tfhd.base_data_offset:M||k===0?R=_.start:R=y,k===0&&A===0?B?T.offset=R+P.data_offset:T.offset=R:T.offset=y,y=T.offset+T.size,(S.sbgps.length>0||S.sgpds.length>0||L.mdia.minf.stbl.sbgps.length>0||L.mdia.minf.stbl.sgpds.length>0)&&m.setSampleGroupProperties(L,T,T.number_in_traf,S.sample_groups_info)}}if(S.subs){L.has_fragment_subsamples=!0;var I=S.first_sample_index;for(k=0;k-1){A=this.stream.buffers[b];var w=A.byteLength-(p.offset+p.alreadyRead-A.fileStart);if(p.size-p.alreadyRead<=w)return t.debug("ISOFile","Getting sample #"+k+" data (alreadyRead: "+p.alreadyRead+" offset: "+(p.offset+p.alreadyRead-A.fileStart)+" read size: "+(p.size-p.alreadyRead)+" full size: "+p.size+")"),r.memcpy(p.data.buffer,p.alreadyRead,A,p.offset+p.alreadyRead-A.fileStart,p.size-p.alreadyRead),A.usedBytes+=p.size-p.alreadyRead,this.stream.logBufferLevel(),p.alreadyRead=p.size,p;if(w===0)return null;t.debug("ISOFile","Getting sample #"+k+" partial data (alreadyRead: "+p.alreadyRead+" offset: "+(p.offset+p.alreadyRead-A.fileStart)+" read size: "+w+" full size: "+p.size+")"),r.memcpy(p.data.buffer,p.alreadyRead,A,p.offset+p.alreadyRead-A.fileStart,w),p.alreadyRead+=w,A.usedBytes+=w,this.stream.logBufferLevel()}else return null}},m.prototype.releaseSample=function(f,k){var A=f.samples[k];return A.data?(this.samplesDataSize-=A.size,A.data=null,A.alreadyRead=0,A.size):0},m.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},m.prototype.getCodecs=function(){var f,k="";for(f=0;f0&&(k+=","),k+=A.mdia.minf.stbl.stsd.entries[0].getCodec()}return k},m.prototype.getTrexById=function(f){var k;if(!this.moov||!this.moov.mvex)return null;for(k=0;k0&&(b.protection=w.ipro.protections[w.iinf.item_infos[A].protection_index-1]),w.iinf.item_infos[A].item_type?b.type=w.iinf.item_infos[A].item_type:b.type="mime",b.content_type=w.iinf.item_infos[A].content_type,b.content_encoding=w.iinf.item_infos[A].content_encoding;if(w.grpl)for(A=0;A0&&L.property_index-1-1){k=this.stream.buffers[w];var O=k.byteLength-(b.offset+b.alreadyRead-k.fileStart);if(b.length-b.alreadyRead<=O)t.debug("ISOFile","Getting item #"+f+" extent #"+p+" data (alreadyRead: "+b.alreadyRead+" offset: "+(b.offset+b.alreadyRead-k.fileStart)+" read size: "+(b.length-b.alreadyRead)+" full extent size: "+b.length+" full item size: "+A.size+")"),r.memcpy(A.data.buffer,A.alreadyRead,k,b.offset+b.alreadyRead-k.fileStart,b.length-b.alreadyRead),k.usedBytes+=b.length-b.alreadyRead,this.stream.logBufferLevel(),A.alreadyRead+=b.length-b.alreadyRead,b.alreadyRead=b.length;else return t.debug("ISOFile","Getting item #"+f+" extent #"+p+" partial data (alreadyRead: "+b.alreadyRead+" offset: "+(b.offset+b.alreadyRead-k.fileStart)+" read size: "+O+" full extent size: "+b.length+" full item size: "+A.size+")"),r.memcpy(A.data.buffer,A.alreadyRead,k,b.offset+b.alreadyRead-k.fileStart,O),b.alreadyRead+=O,A.alreadyRead+=O,k.usedBytes+=O,this.stream.logBufferLevel(),null}else return null}}return A.alreadyRead===A.size?A:null},m.prototype.releaseItem=function(f){var k=this.items[f];if(k.data){this.itemsDataSize-=k.size,k.data=null,k.alreadyRead=0;for(var A=0;A0?this.moov.traks[f].samples[0].duration:0),k.push(p)}return k},l.Box.prototype.printHeader=function(f){this.size+=8,this.size>o&&(this.size+=8),this.type==="uuid"&&(this.size+=16),f.log(f.indent+"size:"+this.size),f.log(f.indent+"type:"+this.type)},l.FullBox.prototype.printHeader=function(f){this.size+=4,l.Box.prototype.printHeader.call(this,f),f.log(f.indent+"version:"+this.version),f.log(f.indent+"flags:"+this.flags)},l.Box.prototype.print=function(f){this.printHeader(f)},l.ContainerBox.prototype.print=function(f){this.printHeader(f);for(var k=0;k>8)),f.log(f.indent+"matrix: "+this.matrix.join(", ")),f.log(f.indent+"next_track_id: "+this.next_track_id)},l.tkhdBox.prototype.print=function(f){l.FullBox.prototype.printHeader.call(this,f),f.log(f.indent+"creation_time: "+this.creation_time),f.log(f.indent+"modification_time: "+this.modification_time),f.log(f.indent+"track_id: "+this.track_id),f.log(f.indent+"duration: "+this.duration),f.log(f.indent+"volume: "+(this.volume>>8)),f.log(f.indent+"matrix: "+this.matrix.join(", ")),f.log(f.indent+"layer: "+this.layer),f.log(f.indent+"alternate_group: "+this.alternate_group),f.log(f.indent+"width: "+this.width),f.log(f.indent+"height: "+this.height)};var v={};v.createFile=function(f,k){var A=f!==void 0?f:!0,p=new m(k);return p.discardMdatData=!A,p},e.createFile=v.createFile})(yqn);const YGe=R9s(yqn),I9s=()=>{let e,t=16.6;self.onmessage=n=>{n.data.event==="start"&&(self.clearInterval(e),e=self.setInterval(()=>{self.postMessage({})},t)),n.data.event==="stop"&&self.clearInterval(e)}},M9s=()=>{const e=new Blob([`(${I9s.toString()})()`]),t=URL.createObjectURL(e);return new Worker(t)},VF=new Map;let ZGe=1,WN=null;globalThis.Worker!=null&&(WN=M9s(),WN.onmessage=()=>{ZGe+=1;for(const[e,t]of VF)if(ZGe%e===0)for(const n of t)n()});const P9s=(e,t)=>{const n=Math.round(t/16.6),r=VF.get(n)??new Set;return r.add(e),VF.set(n,r),VF.size===1&&r.size===1&&(WN==null||WN.postMessage({event:"start"})),()=>{r.delete(e),r.size===0&&VF.delete(n),VF.size===0&&(ZGe=0,WN==null||WN.postMessage({event:"stop"}))}};function F9s(e){return e instanceof Error?String(e):typeof e=="object"?JSON.stringify(e,(t,n)=>n instanceof Error?String(n):n):String(e)}function N9s(){const e=new Date;return`${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}.${e.getMilliseconds()}`}let Cqn=1;const _qn=[],Gkn=["debug","info","warn","error"].reduce((e,t,n)=>Object.assign(e,{[t]:(...r)=>{Cqn<=n&&(console[t](...r),_qn.push({lvName:t,timeStr:N9s(),args:r}))}}),{}),Zre=new Map,td={setLogLevel:e=>{Cqn=Zre.get(e)??1},...Gkn,create:e=>Object.fromEntries(Object.entries(Gkn).map(([t,n])=>[t,(...r)=>n(e,...r)])),async dump(){return _qn.reduce((e,{lvName:t,timeStr:n,args:r})=>e+`[${t}][${n}] ${r.map(o=>F9s(o)).join(" ")} `,"")}};Zre.set(td.debug,0);Zre.set(td.info,1);Zre.set(td.warn,2);Zre.set(td.error,3);(async function(){if(await Promise.resolve(),!(globalThis.navigator==null||globalThis.document==null)&&(td.info(`@webav version: 1.2.7, date: ${new Date().toLocaleDateString()}`),td.info(globalThis.navigator.userAgent),document.addEventListener("visibilitychange",()=>{td.info(`visibilitychange: ${document.visibilityState}`)}),"PressureObserver"in globalThis)){let e="";new PressureObserver(t=>{const n=JSON.stringify(t.map(r=>r.state));n!==e&&(td.info(`cpu state change: ${n}`),e=n)}).observe("cpu")}})();class U9s{constructor(t,n,r){this.length_=t,this.scaleFactor_=(t-1)/n,this.interpolate=this.cubic,r.method==="point"?this.interpolate=this.point:r.method==="linear"?this.interpolate=this.linear:r.method==="sinc"&&(this.interpolate=this.sinc),this.tangentFactor_=1-Math.max(0,Math.min(1,r.tension||0)),this.sincFilterSize_=r.sincFilterSize||1,this.kernel_=W9s(r.sincWindow||j9s)}point(t,n){return this.getClippedInput_(Math.round(this.scaleFactor_*t),n)}linear(t,n){t=this.scaleFactor_*t;let r=Math.floor(t);return t-=r,(1-t)*this.getClippedInput_(r,n)+t*this.getClippedInput_(r+1,n)}cubic(t,n){t=this.scaleFactor_*t;let r=Math.floor(t),o=[this.getTangent_(r,n),this.getTangent_(r+1,n)],s=[this.getClippedInput_(r,n),this.getClippedInput_(r+1,n)];t-=r;let a=t*t,l=t*a;return(2*l-3*a+1)*s[0]+(l-2*a+t)*o[0]+(-2*l+3*a)*s[1]+(l-a)*o[1]}sinc(t,n){t=this.scaleFactor_*t;let r=Math.floor(t),o=r-this.sincFilterSize_+1,s=r+this.sincFilterSize_,a=0;for(let l=o;l<=s;l++)a+=this.kernel_(t-l)*this.getClippedInput_(l,n);return a}getTangent_(t,n){return this.tangentFactor_*(this.getClippedInput_(t+1,n)-this.getClippedInput_(t-1,n))/2}getClippedInput_(t,n){return 0<=t&&tt){let d=new l(r.LPFOrder||Ykn[r.LPFType],n,t/2);Y9s(e,s,a,d)}else{let d=new l(r.LPFOrder||Ykn[r.LPFType],t,n/2);Z9s(e,s,a,d)}}else Sqn(e,s,a);return s}function Sqn(e,t,n){for(let r=0,o=t.length;r=0;o--)t[o]=r.filter(t[o])}function Z9s(e,t,n,r){for(let o=0,s=e.length;o=0;o--)e[o]=r.filter(e[o]);Sqn(e,t,n)}var Lqn=e=>{throw TypeError(e)},xqn=(e,t,n)=>t.has(e)||Lqn("Cannot "+n),Ka=(e,t,n)=>(xqn(e,t,"read from private field"),n?n.call(e):t.get(e)),k4=(e,t,n)=>t.has(e)?Lqn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Z1=(e,t,n,r)=>(xqn(e,t,"write to private field"),t.set(e,n),n);const Eqn="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHUobil7aWYobj09PSIvIilyZXR1cm57cGFyZW50Om51bGwsbmFtZToiIn07Y29uc3QgZT1uLnNwbGl0KCIvIikuZmlsdGVyKGk9PmkubGVuZ3RoPjApO2lmKGUubGVuZ3RoPT09MCl0aHJvdyBFcnJvcigiSW52YWxpZCBwYXRoIik7Y29uc3QgYT1lW2UubGVuZ3RoLTFdLHI9Ii8iK2Uuc2xpY2UoMCwtMSkuam9pbigiLyIpO3JldHVybntuYW1lOmEscGFyZW50OnJ9fWFzeW5jIGZ1bmN0aW9uIHcobixlKXtjb25zdHtwYXJlbnQ6YSxuYW1lOnJ9PXUobik7aWYoYT09bnVsbClyZXR1cm4gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0RGlyZWN0b3J5KCk7Y29uc3QgaT1hLnNwbGl0KCIvIikuZmlsdGVyKHQ9PnQubGVuZ3RoPjApO3RyeXtsZXQgdD1hd2FpdCBuYXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKTtmb3IoY29uc3QgcyBvZiBpKXQ9YXdhaXQgdC5nZXREaXJlY3RvcnlIYW5kbGUocyx7Y3JlYXRlOmUuY3JlYXRlfSk7aWYoZS5pc0ZpbGUpcmV0dXJuIGF3YWl0IHQuZ2V0RmlsZUhhbmRsZShyLHtjcmVhdGU6ZS5jcmVhdGV9KX1jYXRjaCh0KXtpZih0Lm5hbWU9PT0iTm90Rm91bmRFcnJvciIpcmV0dXJuIG51bGw7dGhyb3cgdH19Y29uc3QgZj17fTtzZWxmLm9ubWVzc2FnZT1hc3luYyBuPT57dmFyIGk7Y29uc3R7ZXZ0VHlwZTplLGFyZ3M6YX09bi5kYXRhO2xldCByPWZbYS5maWxlSWRdO3RyeXtsZXQgdDtjb25zdCBzPVtdO2lmKGU9PT0icmVnaXN0ZXIiKXtjb25zdCBsPWF3YWl0IHcoYS5maWxlUGF0aCx7Y3JlYXRlOiEwLGlzRmlsZTohMH0pO2lmKGw9PW51bGwpdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCBmaWxlOiAke2EuZmlsZUlkfWApO3I9YXdhaXQgbC5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKHttb2RlOmEubW9kZX0pLGZbYS5maWxlSWRdPXJ9ZWxzZSBpZihlPT09ImNsb3NlIilhd2FpdCByLmNsb3NlKCksZGVsZXRlIGZbYS5maWxlSWRdO2Vsc2UgaWYoZT09PSJ0cnVuY2F0ZSIpYXdhaXQgci50cnVuY2F0ZShhLm5ld1NpemUpO2Vsc2UgaWYoZT09PSJ3cml0ZSIpe2NvbnN0e2RhdGE6bCxvcHRzOm99PW4uZGF0YS5hcmdzO3Q9YXdhaXQgci53cml0ZShsLG8pfWVsc2UgaWYoZT09PSJyZWFkIil7Y29uc3R7b2Zmc2V0Omwsc2l6ZTpvfT1uLmRhdGEuYXJncyxnPW5ldyBVaW50OEFycmF5KG8pLGQ9YXdhaXQgci5yZWFkKGcse2F0Omx9KSxjPWcuYnVmZmVyO3Q9ZD09PW8/YzooKGk9Yy50cmFuc2Zlcik9PW51bGw/dm9pZCAwOmkuY2FsbChjLGQpKT8/Yy5zbGljZSgwLGQpLHMucHVzaCh0KX1lbHNlIGU9PT0iZ2V0U2l6ZSI/dD1hd2FpdCByLmdldFNpemUoKTplPT09ImZsdXNoIiYmYXdhaXQgci5mbHVzaCgpO3NlbGYucG9zdE1lc3NhZ2Uoe2V2dFR5cGU6ImNhbGxiYWNrIixjYklkOm4uZGF0YS5jYklkLHJldHVyblZhbDp0fSxzKX1jYXRjaCh0KXtjb25zdCBzPXQ7c2VsZi5wb3N0TWVzc2FnZSh7ZXZ0VHlwZToidGhyb3dFcnJvciIsY2JJZDpuLmRhdGEuY2JJZCxlcnJNc2c6cy5uYW1lKyI6ICIrcy5tZXNzYWdlK2AKYCtKU09OLnN0cmluZ2lmeShuLmRhdGEpfSl9fX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wZnMtd29ya2VyLUY0UldscWNfLmpzLm1hcAo=",q9s=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),Zkn=typeof self<"u"&&self.Blob&&new Blob([q9s(Eqn)],{type:"text/javascript;charset=utf-8"});function K9s(e){let t;try{if(t=Zkn&&(self.URL||self.webkitURL).createObjectURL(Zkn),!t)throw"";const n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker("data:text/javascript;base64,"+Eqn,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}async function J9s(e,t,n){const r=e6s();return await r("register",{fileId:e,filePath:t,mode:n}),{read:async(o,s)=>await r("read",{fileId:e,offset:o,size:s}),write:async(o,s)=>await r("write",{fileId:e,data:o,opts:s},[ArrayBuffer.isView(o)?o.buffer:o]),close:async()=>await r("close",{fileId:e}),truncate:async o=>await r("truncate",{fileId:e,newSize:o}),getSize:async()=>await r("getSize",{fileId:e}),flush:async()=>await r("flush",{fileId:e})}}const zde=[];let RRe=0;function e6s(){if(zde.length<3){const t=e();return zde.push(t),t}else{const t=zde[RRe];return RRe=(RRe+1)%zde.length,t}function e(){const t=new K9s;let n=0,r={};return t.onmessage=({data:o})=>{var s,a;o.evtType==="callback"?(s=r[o.cbId])==null||s.resolve(o.returnVal):o.evtType==="throwError"&&((a=r[o.cbId])==null||a.reject(Error(o.errMsg))),delete r[o.cbId]},async function(o,s,a=[]){n+=1;const l=new Promise((d,u)=>{r[n]={resolve:d,reject:u}});return t.postMessage({cbId:n,evtType:o,args:s},a),l}}}function JOe(e){if(e==="/")return{parent:null,name:""};const t=e.split("/").filter(o=>o.length>0);if(t.length===0)throw Error("Invalid path");const n=t[t.length-1],r="/"+t.slice(0,-1).join("/");return{name:n,parent:r}}async function Q9(e,t){const{parent:n,name:r}=JOe(e);if(n==null)return await navigator.storage.getDirectory();const o=n.split("/").filter(s=>s.length>0);try{let s=await navigator.storage.getDirectory();for(const a of o)s=await s.getDirectoryHandle(a,{create:t.create});return t.isFile?await s.getFileHandle(r,{create:t.create}):await s.getDirectoryHandle(r,{create:t.create})}catch(s){if(s.name==="NotFoundError")return null;throw s}}async function qGe(e){const{parent:t,name:n}=JOe(e);if(t==null){const o=await navigator.storage.getDirectory();for await(const s of o.keys())await o.removeEntry(s,{recursive:!0});return}const r=await Q9(t,{create:!1,isFile:!1});if(r!=null)try{await r.removeEntry(n,{recursive:!0})}catch(o){if(o.name==="NotFoundError")return;throw o}}function KGe(e,t){return`${e}/${t}`.replace("//","/")}function VN(e){return new Qqn(e)}var Iw,afe,gY;const t6s=class Tqn{constructor(t){k4(this,Iw),k4(this,afe),k4(this,gY),Z1(this,Iw,t);const{parent:n,name:r}=JOe(t);Z1(this,afe,r),Z1(this,gY,n)}get kind(){return"dir"}get name(){return Ka(this,afe)}get path(){return Ka(this,Iw)}get parent(){return Ka(this,gY)==null?null:VN(Ka(this,gY))}async create(){return await Q9(Ka(this,Iw),{create:!0,isFile:!1}),VN(Ka(this,Iw))}async exists(){return await Q9(Ka(this,Iw),{create:!1,isFile:!1})instanceof FileSystemDirectoryHandle}async remove(t={}){for(const n of await this.children())try{await n.remove(t)}catch(r){console.warn(r)}try{await qGe(Ka(this,Iw))}catch(n){console.warn(n)}}async children(){const t=await Q9(Ka(this,Iw),{create:!1,isFile:!1});if(t==null)return[];const n=[];for await(const r of t.values())n.push((r.kind==="file"?qre:VN)(KGe(Ka(this,Iw),r.name)));return n}async copyTo(t){if(!await this.exists())throw Error(`dir ${this.path} not exists`);if(t instanceof Tqn){const n=await t.exists()?VN(KGe(t.path,this.name)):t;return await n.create(),await Promise.all((await this.children()).map(r=>r.copyTo(n))),n}else if(t instanceof FileSystemDirectoryHandle)return await Promise.all((await this.children()).map(async n=>{n.kind==="file"?await n.copyTo(await t.getFileHandle(n.name,{create:!0})):await n.copyTo(await t.getDirectoryHandle(n.name,{create:!0}))})),null;throw Error("Illegal target type")}async moveTo(t){const n=await this.copyTo(t);return await this.remove(),n}};Iw=new WeakMap,afe=new WeakMap,gY=new WeakMap;let Qqn=t6s;const JGe=new Map;function qre(e,t="rw"){if(t==="rw"){const n=JGe.get(e)??new eve(e,t);return JGe.set(e,n),n}return new eve(e,t)}async function rat(e,t,n={overwrite:!0}){if(t instanceof eve){await rat(e,await t.stream(),n);return}const r=await(e instanceof eve?e:qre(e,"rw")).createWriter();try{if(n.overwrite&&await r.truncate(0),t instanceof ReadableStream){const o=t.getReader();for(;;){const{done:s,value:a}=await o.read();if(s)break;await r.write(a)}}else await r.write(t)}catch(o){throw o}finally{await r.close()}}let n6s=0;const i6s=()=>++n6s;var r4,mY,lfe,kY,cfe,S_,dfe,ufe,zF;const r6s=class Dqn{constructor(t,n){k4(this,r4),k4(this,mY),k4(this,lfe),k4(this,kY),k4(this,cfe),k4(this,S_,0),k4(this,dfe,async()=>{}),k4(this,ufe,(()=>{let s=null;return()=>(Z1(this,S_,Ka(this,S_)+1),s!=null||(s=new Promise(async(a,l)=>{try{const d=await J9s(Ka(this,cfe),Ka(this,r4),Ka(this,kY));Z1(this,dfe,async()=>{s!=null&&(s=null,Z1(this,S_,0),await d.close().catch(console.error))}),a([d,async()=>{Z1(this,S_,Ka(this,S_)-1),!(Ka(this,S_)>0)&&(s=null,await d.close())}])}catch(d){l(d)}})),s)})()),k4(this,zF,!1),Z1(this,cfe,i6s()),Z1(this,r4,t),Z1(this,kY,{r:"read-only",rw:"readwrite","rw-unsafe":"readwrite-unsafe"}[n]);const{parent:r,name:o}=JOe(t);if(r==null)throw Error("Invalid path");Z1(this,lfe,o),Z1(this,mY,r)}get kind(){return"file"}get path(){return Ka(this,r4)}get name(){return Ka(this,lfe)}get parent(){return Ka(this,mY)==null?null:VN(Ka(this,mY))}async createWriter(){if(Ka(this,kY)==="read-only")throw Error("file is read-only");if(Ka(this,zF))throw Error("Other writer have not been closed");Z1(this,zF,!0);try{const t=new TextEncoder,[n,r]=await Ka(this,ufe).call(this);let o=await n.getSize(),s=!1;return{write:async(a,l={})=>{if(s)throw Error("Writer is closed");const d=typeof a=="string"?t.encode(a):a,u=l.at??o,h=d.byteLength;return o=u+h,await n.write(d,{at:u})},truncate:async a=>{if(s)throw Error("Writer is closed");await n.truncate(a),o>a&&(o=a)},flush:async()=>{if(s)throw Error("Writer is closed");await n.flush()},close:async()=>{if(s)throw Error("Writer is closed");s=!0,Z1(this,zF,!1),await r()}}}catch(t){throw Z1(this,zF,!1),t}}async createReader(){const[t,n]=await Ka(this,ufe).call(this);let r=!1,o=0;return{read:async(s,a={})=>{if(r)throw Error("Reader is closed");const l=a.at??o,d=await t.read(l,s);return o=l+d.byteLength,d},getSize:async()=>{if(r)throw Error("Reader is closed");return await t.getSize()},close:async()=>{r||(r=!0,await n())}}}async text(){return new TextDecoder().decode(await this.arrayBuffer())}async arrayBuffer(){const t=await Q9(Ka(this,r4),{create:!1,isFile:!0});return t==null?new ArrayBuffer(0):(await t.getFile()).arrayBuffer()}async stream(){const t=await this.getOriginFile();return t==null?new ReadableStream({pull:n=>{n.close()}}):t.stream()}async getOriginFile(){var t;return(t=await Q9(Ka(this,r4),{create:!1,isFile:!0}))==null?void 0:t.getFile()}async getSize(){const t=await Q9(Ka(this,r4),{create:!1,isFile:!0});return t==null?0:(await t.getFile()).size}async exists(){return await Q9(Ka(this,r4),{create:!1,isFile:!0})instanceof FileSystemFileHandle}async remove(t={}){if(t.force===!0){await Ka(this,dfe).call(this),await qGe(Ka(this,r4)),JGe.delete(Ka(this,r4));return}if(Ka(this,S_)>0)throw Error("exists unclosed reader/writer");await qGe(Ka(this,r4))}async copyTo(t){if(t instanceof Dqn)return t.path===this.path?this:(await rat(t,this),t);if(t instanceof Qqn){if(!await this.exists())throw Error(`file ${this.path} not exists`);return await this.copyTo(qre(KGe(t.path,this.name)))}else if(t instanceof FileSystemFileHandle)return await(await this.stream()).pipeTo(await t.createWritable()),null;throw Error("Illegal target type")}async moveTo(t){const n=await this.copyTo(t);return await this.remove(),n}};r4=new WeakMap,mY=new WeakMap,lfe=new WeakMap,kY=new WeakMap,cfe=new WeakMap,S_=new WeakMap,dfe=new WeakMap,ufe=new WeakMap,zF=new WeakMap;let eve=r6s;const oat="/.opfs-tools-temp-dir";async function Bqn(e){try{if(e.kind==="file"){if(!await e.exists())return!0;const t=await e.createWriter();await t.truncate(0),await t.close(),await e.remove()}else await e.remove();return!0}catch(t){return console.warn(t),!1}}function o6s(){setInterval(async()=>{for(const e of await VN(oat).children()){const t=/^\d+-(\d+)$/.exec(e.name);(t==null||Date.now()-Number(t[1])>2592e5)&&await Bqn(e)}},60*1e3)}const eYe=[];let qkn=!1;async function s6s(){if(globalThis.localStorage==null)return;const e="OPFS_TOOLS_EXPIRES_TMP_FILES";qkn||(qkn=!0,globalThis.addEventListener("unload",()=>{eYe.length!==0&&localStorage.setItem(e,`${localStorage.getItem(e)??""},${eYe.join(",")}`)}));let t=localStorage.getItem(e)??"";for(const n of t.split(","))n.length!==0&&await Bqn(qre(`${oat}/${n}`))&&(t=t.replace(n,""));localStorage.setItem(e,t.replace(/,{2,}/g,","))}(async function(){var e;globalThis.__opfs_tools_tmpfile_init__!==!0&&(globalThis.__opfs_tools_tmpfile_init__=!0,!(globalThis.FileSystemDirectoryHandle==null||globalThis.FileSystemFileHandle==null||((e=globalThis.navigator)==null?void 0:e.storage.getDirectory)==null)&&(o6s(),await s6s()))})();function a6s(){const e=`${Math.random().toString().slice(2)}-${Date.now()}`;return eYe.push(e),qre(`${oat}/${e}`)}function l6s(e){const t=new Float32Array(e.map(r=>r.length).reduce((r,o)=>r+o));let n=0;for(const r of e)t.set(r,n),n+=r.length;return t}function c6s(e){const t=[];for(let n=0;nnew Float32Array(n));for(let o=0;onew Float32Array(n));for(let o=0;oe.getChannelData(n))}async function f6s(e,t,n){const r=e.length,o=Array(n.chanCount).fill(0).map(()=>new Float32Array(0));if(r===0)return o;const s=Math.max(...e.map(u=>u.length));if(s===0)return o;if(globalThis.OfflineAudioContext==null)return e.map(u=>new Float32Array(G9s(u,t,n.rate,{method:"sinc",LPF:!1})));const a=new globalThis.OfflineAudioContext(n.chanCount,s*n.rate/t,n.rate),l=a.createBufferSource(),d=a.createBuffer(r,s,t);return e.forEach((u,h)=>d.copyToChannel(u,h)),l.buffer=d,l.connect(a.destination),l.start(),Rqn(await a.startRendering())}function Iqn(e){return new Promise(t=>{const n=P9s(()=>{n(),t()},e)})}function Kkn(e,t,n){const r=n-t,o=new Float32Array(r);let s=0;for(;so.mdia.minf.stbl.stsd.entries).flat().find(({type:o})=>o===t))==null?void 0:r.esds}function v6s(e){let t="mp4a";const n=e.esd.descs[0];if(n==null)return{};t+="."+n.oti.toString(16);const r=n.descs[0];if(r==null)return t.endsWith("40")&&(t+=".2"),{codec:t};const o=(r.data[0]&248)>>3;t+="."+o;const[s,a]=r.data,l=((s&7)<<1)+(a>>7),d=(a&127)>>3;return{codec:t,sampleRate:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][l],numberOfChannels:d}}async function A6s(e,t,n){const r=YGe.createFile(!1);r.onReady=s=>{var a,l;t({mp4boxFile:r,info:s});const d=(a=s.videoTracks[0])==null?void 0:a.id;d!=null&&r.setExtractionOptions(d,"video",{nbSamples:100});const u=(l=s.audioTracks[0])==null?void 0:l.id;u!=null&&r.setExtractionOptions(u,"audio",{nbSamples:100}),r.start()},r.onSamples=n,await o();async function o(){let s=0;const a=30*1024*1024;for(;;){const l=await e.read(a,{at:s});if(l.byteLength===0)break;l.fileStart=s;const d=r.appendBuffer(l);if(d==null)break;s=d}r.stop()}}function p6s(e){if((e==null?void 0:e.length)!==9)return{};const t=new Int32Array(e.buffer),n=t[0]/65536,r=t[1]/65536,o=t[3]/65536,s=t[4]/65536,a=t[6]/65536,l=t[7]/65536,d=t[8]/(1<<30),u=Math.sqrt(n*n+o*o),h=Math.sqrt(r*r+s*s),g=Math.atan2(o,n),m=g*180/Math.PI;return{scaleX:u,scaleY:h,rotationRad:g,rotationDeg:m,translateX:a,translateY:l,perspective:d}}function b6s(e,t,n){const r=(Math.round(n/90)*90+360)%360;if(r===0)return d=>d;const o=r===90||r===270?t:e,s=r===90||r===270?e:t,a=new OffscreenCanvas(o,s),l=a.getContext("2d");return l.translate(o/2,s/2),l.rotate(-r*Math.PI/180),l.translate(-e/2,-t/2),d=>{if(d==null)return null;l.drawImage(d,0,0);const u=new VideoFrame(a,{timestamp:d.timestamp,duration:d.duration??void 0});return d.close(),u}}let sat=0;function IRe(e){return e.kind==="file"&&e.createReader instanceof Function}var tYe,hfe,ffe,Mw,bk,L_,Xx,gfe,mfe,Pw,sT,vY,HF,x_,ev,AY;const w6s=class $F{constructor(t,n={}){if(bo(this,tYe,sat++),bo(this,hfe,td.create(`MP4Clip id:${Ht(this,tYe)},`)),jy(this,"ready"),bo(this,ffe,!1),bo(this,Mw,{duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0}),bo(this,bk),bo(this,L_,[]),bo(this,Xx,{perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0}),bo(this,gfe,o=>o),bo(this,mfe,1),bo(this,Pw,[]),bo(this,sT,[]),bo(this,vY,null),bo(this,HF,null),bo(this,x_,{video:null,audio:null}),bo(this,ev,{audio:!0}),jy(this,"tickInterceptor",async(o,s)=>s),bo(this,AY,new AbortController),!(t instanceof ReadableStream)&&!IRe(t)&&!Array.isArray(t.videoSamples))throw Error("Illegal argument");Rr(this,ev,{audio:!0,...n}),Rr(this,mfe,typeof n.audio=="object"&&"volume"in n.audio?n.audio.volume:1);const r=async o=>(await rat(Ht(this,bk),o),Ht(this,bk));Rr(this,bk,IRe(t)?t:"localFile"in t?t.localFile:a6s()),this.ready=(t instanceof ReadableStream?r(t).then(o=>Jkn(o,Ht(this,ev))):IRe(t)?Jkn(t,Ht(this,ev)):Promise.resolve(t)).then(async({videoSamples:o,audioSamples:s,decoderConf:a,headerBoxPos:l,parsedMatrix:d})=>{Rr(this,Pw,o),Rr(this,sT,s),Rr(this,x_,a),Rr(this,L_,l),Rr(this,Xx,d);const{videoFrameFinder:u,audioFrameFinder:h}=y6s({video:a.video==null?null:{...a.video,hardwareAcceleration:Ht(this,ev).__unsafe_hardwareAcceleration__},audio:a.audio},await Ht(this,bk).createReader(),o,s,Ht(this,ev).audio!==!1?Ht(this,mfe):0);Rr(this,vY,u),Rr(this,HF,h);const{codedWidth:g,codedHeight:m}=a.video??{};return g&&m&&Rr(this,gfe,b6s(g,m,d.rotationDeg)),Rr(this,Mw,O6s(a,o,s,d.rotationDeg)),Ht(this,hfe).info("MP4Clip meta:",Ht(this,Mw)),{...Ht(this,Mw)}})}get meta(){return{...Ht(this,Mw)}}async getFileHeaderBinData(){await this.ready;const t=await Ht(this,bk).getOriginFile();if(t==null)throw Error("MP4Clip localFile is not origin file");return await new Blob(Ht(this,L_).map(({start:n,size:r})=>t.slice(n,n+r))).arrayBuffer()}async tick(t){var n,r,o;if(t>=Ht(this,Mw).duration)return await this.tickInterceptor(t,{audio:await((n=Ht(this,HF))==null?void 0:n.find(t))??[],state:"done"});const[s,a]=await Promise.all([((r=Ht(this,HF))==null?void 0:r.find(t))??[],(o=Ht(this,vY))==null?void 0:o.find(t).then(Ht(this,gfe))]);return a==null?await this.tickInterceptor(t,{audio:s,state:"success"}):await this.tickInterceptor(t,{video:a,audio:s,state:"success"})}async thumbnails(t=100,n){Ht(this,AY).abort(),Rr(this,AY,new AbortController);const r=Ht(this,AY).signal;await this.ready;const o="generate thumbnails aborted";if(r.aborted)throw Error(o);const{width:s,height:a}=Ht(this,Mw),l=x6s(t,Math.round(a*(t/s)),{quality:.1,type:"image/png"});return new Promise(async(d,u)=>{let h=[];const g=Ht(this,x_).video;if(g==null||Ht(this,Pw).length===0){m();return}r.addEventListener("abort",()=>{u(Error(o))});async function m(){r.aborted||d(await Promise.all(h.map(async p=>({ts:p.ts,img:await p.img}))))}function v(p){h.push({ts:p.timestamp,img:l(p)})}const{start:f=0,end:k=Ht(this,Mw).duration,step:A}=n??{};if(A){let p=f;const b=new Pqn(await Ht(this,bk).createReader(),Ht(this,Pw),{...g,hardwareAcceleration:Ht(this,ev).__unsafe_hardwareAcceleration__});for(;p<=k&&!r.aborted;){const w=await b.find(p);w&&v(w),p+=A}b.destroy(),m()}else await D6s(Ht(this,Pw),Ht(this,bk),g,r,{start:f,end:k},(p,b)=>{p!=null&&v(p),b&&m()})})}async split(t){if(await this.ready,t<=0||t>=Ht(this,Mw).duration)throw Error('"time" out of bounds');const[n,r]=E6s(Ht(this,Pw),t),[o,s]=T6s(Ht(this,sT),t),a=new $F({localFile:Ht(this,bk),videoSamples:n??[],audioSamples:o??[],decoderConf:Ht(this,x_),headerBoxPos:Ht(this,L_),parsedMatrix:Ht(this,Xx)},Ht(this,ev)),l=new $F({localFile:Ht(this,bk),videoSamples:r??[],audioSamples:s??[],decoderConf:Ht(this,x_),headerBoxPos:Ht(this,L_),parsedMatrix:Ht(this,Xx)},Ht(this,ev));return await Promise.all([a.ready,l.ready]),[a,l]}async clone(){await this.ready;const t=new $F({localFile:Ht(this,bk),videoSamples:[...Ht(this,Pw)],audioSamples:[...Ht(this,sT)],decoderConf:Ht(this,x_),headerBoxPos:Ht(this,L_),parsedMatrix:Ht(this,Xx)},Ht(this,ev));return await t.ready,t.tickInterceptor=this.tickInterceptor,t}async splitTrack(){await this.ready;const t=[];if(Ht(this,Pw).length>0){const n=new $F({localFile:Ht(this,bk),videoSamples:[...Ht(this,Pw)],audioSamples:[],decoderConf:{video:Ht(this,x_).video,audio:null},headerBoxPos:Ht(this,L_),parsedMatrix:Ht(this,Xx)},Ht(this,ev));await n.ready,n.tickInterceptor=this.tickInterceptor,t.push(n)}if(Ht(this,sT).length>0){const n=new $F({localFile:Ht(this,bk),videoSamples:[],audioSamples:[...Ht(this,sT)],decoderConf:{audio:Ht(this,x_).audio,video:null},headerBoxPos:Ht(this,L_),parsedMatrix:Ht(this,Xx)},Ht(this,ev));await n.ready,n.tickInterceptor=this.tickInterceptor,t.push(n)}return t}destroy(){var t,n;Ht(this,ffe)||(Ht(this,hfe).info("MP4Clip destroy"),Rr(this,ffe,!0),(t=Ht(this,vY))==null||t.destroy(),(n=Ht(this,HF))==null||n.destroy())}};tYe=new WeakMap,hfe=new WeakMap,ffe=new WeakMap,Mw=new WeakMap,bk=new WeakMap,L_=new WeakMap,Xx=new WeakMap,gfe=new WeakMap,mfe=new WeakMap,Pw=new WeakMap,sT=new WeakMap,vY=new WeakMap,HF=new WeakMap,x_=new WeakMap,ev=new WeakMap,AY=new WeakMap;let Mqn=w6s;function O6s(e,t,n,r){const o={duration:0,width:0,height:0,audioSampleRate:0,audioChanCount:0};if(e.video!=null&&t.length>0){o.width=e.video.codedWidth??0,o.height=e.video.codedHeight??0;const l=(Math.round(r/90)*90+360)%360;(l===90||l===270)&&([o.width,o.height]=[o.height,o.width])}e.audio!=null&&n.length>0&&(o.audioSampleRate=z4.sampleRate,o.audioChanCount=z4.channelCount);let s=0,a=0;if(t.length>0)for(let l=t.length-1;l>=0;l--){const d=t[l];if(!d.deleted){s=d.cts+d.duration;break}}if(n.length>0){const l=n.at(-1);a=l.cts+l.duration}return o.duration=Math.max(s,a),o}function y6s(e,t,n,r,o){return{audioFrameFinder:o===0||e.audio==null||r.length===0?null:new _6s(t,r,e.audio,{volume:o,targetSampleRate:z4.sampleRate}),videoFrameFinder:e.video==null||n.length===0?null:new Pqn(t,n,e.video)}}async function Jkn(e,t={}){let n=null;const r={video:null,audio:null};let o=[],s=[],a=[];const l={perspective:1,rotationRad:0,rotationDeg:0,scaleX:1,scaleY:1,translateX:0,translateY:0};let d=-1,u=-1;const h=await e.createReader();await A6s(h,async m=>{var v;n=m.info;const f=m.mp4boxFile.ftyp;a.push({start:f.start,size:f.size});const k=m.mp4boxFile.moov;a.push({start:k.start,size:k.size}),Object.assign(l,p6s((v=n.videoTracks[0])==null?void 0:v.matrix));let{videoDecoderConf:A,audioDecoderConf:p}=g6s(m.mp4boxFile,m.info);if(r.video=A??null,r.audio=p??null,A==null&&p==null&&td.error("MP4Clip no video and audio track"),p!=null){const{supported:b}=await AudioDecoder.isConfigSupported(p);b||td.error(`MP4Clip audio codec is not supported: ${p.codec}`)}if(A!=null){const{supported:b}=await VideoDecoder.isConfigSupported(A);b||td.error(`MP4Clip video codec is not supported: ${A.codec}`)}td.info("mp4BoxFile moov ready",{...m.info,tracks:null,videoTracks:null,audioTracks:null},r)},(m,v,f)=>{if(v==="video"){d===-1&&(d=f[0].dts);for(const k of f)o.push(e2n(k,d,"video"))}else if(v==="audio"&&t.audio){u===-1&&(u=f[0].dts);for(const k of f)s.push(e2n(k,u,"audio"))}}),await h.close();const g=o.at(-1)??s.at(-1);if(n==null)throw Error("MP4Clip stream is done, but not emit ready");if(g==null)throw Error("MP4Clip stream not contain any sample");return oYe(o),td.info("mp4 stream parsed"),{videoSamples:o,audioSamples:s,decoderConf:r,headerBoxPos:a,parsedMatrix:l}}function e2n(e,t=0,n){let r=e.offset;const o=n==="video"&&e.is_sync?Q6s(e.data,e.description.type):-1;let s=e.size;return o>0&&(r+=o,s-=o),{...e,is_idr:o>=0,offset:r,size:s,cts:(e.cts-t)/e.timescale*1e6,dts:(e.dts-t)/e.timescale*1e6,duration:e.duration/e.timescale*1e6,timescale:1e6,data:n==="video"?null:e.data}}var G1,XF,GF,kfe,YF,E_,o4,Gx,aT,ZF,vfe,pY,lT,Afe,qF,pfe;class Pqn{constructor(t,n,r){bo(this,G1,null),bo(this,XF,0),bo(this,GF,{abort:!1,st:performance.now()}),jy(this,"find",async o=>{(Ht(this,G1)==null||Ht(this,G1).state==="closed"||o<=Ht(this,XF)||o-Ht(this,XF)>3e6)&&Ht(this,qF).call(this,o),Ht(this,GF).abort=!0,Rr(this,XF,o),Rr(this,GF,{abort:!1,st:performance.now()});const s=await Ht(this,pY).call(this,o,Ht(this,G1),Ht(this,GF));return Rr(this,ZF,0),s}),bo(this,kfe,0),bo(this,YF,!1),bo(this,E_,0),bo(this,o4,[]),bo(this,Gx,0),bo(this,aT,0),bo(this,ZF,0),bo(this,vfe,!1),bo(this,pY,async(o,s,a)=>{if(s==null||s.state==="closed"||a.abort)return null;if(Ht(this,o4).length>0){const l=Ht(this,o4)[0];return ol.timestamp+(l.duration??0)?(l.close(),await Ht(this,pY).call(this,o,s,a)):(!Ht(this,vfe)&&Ht(this,o4).length<10&&Ht(this,Afe).call(this,s).catch(d=>{throw Rr(this,vfe,!0),Ht(this,qF).call(this,o),d}),l))}if(Ht(this,lT)||Ht(this,Gx)0){if(performance.now()-a.st>6e3)throw Error(`MP4Clip.tick video timeout, ${JSON.stringify(Ht(this,pfe).call(this))}`);Rr(this,ZF,Ht(this,ZF)+1),await Iqn(15)}else{if(Ht(this,E_)>=this.samples.length)return null;try{await Ht(this,Afe).call(this,s)}catch(l){throw Ht(this,qF).call(this,o),l}}return await Ht(this,pY).call(this,o,s,a)}),bo(this,lT,!1),bo(this,Afe,async o=>{var s,a;if(Ht(this,lT)||o.decodeQueueSize>600)return;let l=Ht(this,E_)+1;if(l>this.samples.length)return;Rr(this,lT,!0);let d=!1;for(;l1e3){const v=u[0],f=u.at(-1),k=f.offset+f.size-v.offset;td.warn(`Read video samples time cost: ${Math.round(m)}ms, file chunk size: ${k}`)}if(o.state==="closed")return;Rr(this,kfe,((a=g[0])==null?void 0:a.duration)??0),rYe(o,g,{onDecodingError:v=>{if(Ht(this,YF))throw v;Ht(this,Gx)===0&&(Rr(this,YF,!0),td.warn("Downgrade to software decode"),Ht(this,qF).call(this))}}),Rr(this,aT,Ht(this,aT)+g.length)}}Rr(this,E_,l),Rr(this,lT,!1)}),bo(this,qF,o=>{var s,a;if(Rr(this,lT,!1),Ht(this,o4).forEach(d=>d.close()),Rr(this,o4,[]),o==null||o===0)Rr(this,E_,0);else{let d=0;for(let u=0;u{if(Rr(this,Gx,Ht(this,Gx)+1),d.timestamp===-1){d.close();return}let u=d;d.duration==null&&(u=new VideoFrame(d,{duration:Ht(this,kfe)}),d.close()),Ht(this,o4).push(u)},error:d=>{if(d.message.includes("Codec reclaimed due to inactivity")){Rr(this,G1,null),td.warn(d.message);return}const u=`VideoFinder VideoDecoder err: ${d.message}, config: ${JSON.stringify(l)}, state: ${JSON.stringify(Ht(this,pfe).call(this))}`;throw td.error(u),Error(u)}})),Ht(this,G1).configure(l)}),bo(this,pfe,()=>{var o,s;return{time:Ht(this,XF),decState:(o=Ht(this,G1))==null?void 0:o.state,decQSize:(s=Ht(this,G1))==null?void 0:s.decodeQueueSize,decCusorIdx:Ht(this,E_),sampleLen:this.samples.length,inputCnt:Ht(this,aT),outputCnt:Ht(this,Gx),cacheFrameLen:Ht(this,o4).length,softDeocde:Ht(this,YF),clipIdCnt:sat,sleepCnt:Ht(this,ZF),memInfo:Nqn()}}),jy(this,"destroy",()=>{var o,s;((o=Ht(this,G1))==null?void 0:o.state)!=="closed"&&((s=Ht(this,G1))==null||s.close()),Rr(this,G1,null),Ht(this,GF).abort=!0,Ht(this,o4).forEach(a=>a.close()),Rr(this,o4,[]),this.localFileReader.close()}),this.localFileReader=t,this.samples=n,this.conf=r}}G1=new WeakMap,XF=new WeakMap,GF=new WeakMap,kfe=new WeakMap,YF=new WeakMap,E_=new WeakMap,o4=new WeakMap,Gx=new WeakMap,aT=new WeakMap,ZF=new WeakMap,vfe=new WeakMap,pY=new WeakMap,lT=new WeakMap,Afe=new WeakMap,qF=new WeakMap,pfe=new WeakMap;function C6s(e,t){for(let n=0;n=r.cts&&ee)break}return 0}var bfe,wfe,Fw,KF,T_,Yx,ob,JF,Ofe,yfe,nYe,iYe;class _6s{constructor(t,n,r,o){bo(this,bfe,1),bo(this,wfe),bo(this,Fw,null),bo(this,KF,{abort:!1,st:performance.now()}),jy(this,"find",async s=>{const a=s<=Ht(this,T_)||s-Ht(this,T_)>1e5;(Ht(this,Fw)==null||Ht(this,Fw).state==="closed"||a)&&Ht(this,nYe).call(this),a&&(Rr(this,T_,s),Rr(this,Yx,C6s(s,this.samples))),Ht(this,KF).abort=!0;const l=s-Ht(this,T_);Rr(this,T_,s),Rr(this,KF,{abort:!1,st:performance.now()});const d=await Ht(this,Ofe).call(this,Math.ceil(l*(Ht(this,wfe)/1e6)),Ht(this,Fw),Ht(this,KF));return Rr(this,JF,0),d}),bo(this,T_,0),bo(this,Yx,0),bo(this,ob,{frameCnt:0,data:[]}),bo(this,JF,0),bo(this,Ofe,async(s,a=null,l)=>{if(a==null||l.abort||a.state==="closed"||s===0)return[];const d=Ht(this,ob).frameCnt-s;if(d>0)return d3e3)throw l.abort=!0,Error(`MP4Clip.tick audio timeout, ${JSON.stringify(Ht(this,iYe).call(this))}`);Rr(this,JF,Ht(this,JF)+1),await Iqn(15)}else{if(Ht(this,Yx)>=this.samples.length-1)return t2n(Ht(this,ob),Ht(this,ob).frameCnt);Ht(this,yfe).call(this,a)}return Ht(this,Ofe).call(this,s,a,l)}),bo(this,yfe,s=>{if(s.decodeQueueSize>10)return;const a=[];let l=Ht(this,Yx);for(;l=10))break}Rr(this,Yx,l),s.decode(a.map(d=>new EncodedAudioChunk({type:"key",timestamp:d.cts,duration:d.duration,data:d.data})))}),bo(this,nYe,()=>{var s;Rr(this,T_,0),Rr(this,Yx,0),Rr(this,ob,{frameCnt:0,data:[]}),(s=Ht(this,Fw))==null||s.close(),Rr(this,Fw,S6s(this.conf,{resampleRate:z4.sampleRate,volume:Ht(this,bfe)},a=>{Ht(this,ob).data.push(a),Ht(this,ob).frameCnt+=a[0].length}))}),bo(this,iYe,()=>{var s,a;return{time:Ht(this,T_),decState:(s=Ht(this,Fw))==null?void 0:s.state,decQSize:(a=Ht(this,Fw))==null?void 0:a.decodeQueueSize,decCusorIdx:Ht(this,Yx),sampleLen:this.samples.length,pcmLen:Ht(this,ob).frameCnt,clipIdCnt:sat,sleepCnt:Ht(this,JF),memInfo:Nqn()}}),jy(this,"destroy",()=>{Rr(this,Fw,null),Ht(this,KF).abort=!0,Rr(this,ob,{frameCnt:0,data:[]}),this.localFileReader.close()}),this.localFileReader=t,this.samples=n,this.conf=r,Rr(this,bfe,o.volume),Rr(this,wfe,o.targetSampleRate)}}bfe=new WeakMap,wfe=new WeakMap,Fw=new WeakMap,KF=new WeakMap,T_=new WeakMap,Yx=new WeakMap,ob=new WeakMap,JF=new WeakMap,Ofe=new WeakMap,yfe=new WeakMap,nYe=new WeakMap,iYe=new WeakMap;function S6s(e,t,n){let r=0,o=0;const s=h=>{if(o+=1,h.length!==0){if(t.volume!==1)for(const g of h)for(let m=0;m{const g=d6s(h);l?a(()=>f6s(g,h.sampleRate,{rate:t.resampleRate,chanCount:h.numberOfChannels})):s(g),h.close()},error:h=>{h.message.includes("Codec reclaimed due to inactivity")||u("MP4Clip AudioDecoder err",h)}});d.configure(e);function u(h,g){const m=`${h}: ${g.message}, state: ${JSON.stringify({qSize:d.decodeQueueSize,state:d.state,inputCnt:r,outputCnt:o})}`;throw td.error(m),Error(m)}return{decode(h){r+=h.length;try{for(const g of h)d.decode(g)}catch(g){u("decode audio chunk error",g)}},close(){d.state!=="closed"&&d.close()},get decoding(){return r>o&&d.decodeQueueSize>0},get state(){return d.state},get decodeQueueSize(){return d.decodeQueueSize}}}function L6s(e){const t=[];let n=0;function r(a,l){t[l]=a,o()}function o(){const a=t[n];a!=null&&(e(a),n+=1,o())}let s=0;return a=>{const l=s;s+=1,a().then(d=>r(d,l)).catch(d=>r(d,l))}}function t2n(e,t){const n=[new Float32Array(t),new Float32Array(t)];let r=0,o=0;for(;ot){const l=t-r;n[0].set(s.subarray(0,l),r),n[1].set(a.subarray(0,l),r),e.data[o][0]=s.subarray(l,s.length),e.data[o][1]=a.subarray(l,a.length);break}else n[0].set(s,r),n[1].set(a,r),r+=s.length,o++}return e.data=e.data.slice(o),e.frameCnt-=t,n}async function Fqn(e,t){const n=e[0],r=e.at(-1);if(r==null)return[];const o=r.offset+r.size-n.offset;if(o<3e7){const s=new Uint8Array(await t.read(o,{at:n.offset}));return e.map(a=>{const l=a.offset-n.offset;return new EncodedVideoChunk({type:a.is_sync?"key":"delta",timestamp:a.cts,duration:a.duration,data:s.subarray(l,l+a.size)})})}return await Promise.all(e.map(async s=>new EncodedVideoChunk({type:s.is_sync?"key":"delta",timestamp:s.cts,duration:s.duration,data:await t.read(s.size,{at:s.offset})})))}function x6s(e,t,n){const r=new OffscreenCanvas(e,t),o=r.getContext("2d");return async s=>(o.drawImage(s,0,0,e,t),s.close(),await r.convertToBlob(n))}function E6s(e,t){if(e.length===0)return[];let n=0,r=0,o=-1;for(let d=0;d({...d}));for(let d=n;d({...d,cts:d.cts-t}));for(const d of l)d.cts<0&&(d.deleted=!0,d.cts=-1);return oYe(l),[a,l]}function T6s(e,t){if(e.length===0)return[];let n=-1;for(let s=0;sa.cts)){n=s;break}}if(n===-1)throw Error("Not found audio sample by time");const r=e.slice(0,n).map(s=>({...s})),o=e.slice(n).map(s=>({...s,cts:s.cts-t}));return[r,o]}function rYe(e,t,n){if(e.state==="configured"){for(let r=0;r{if(!(r instanceof Error))throw r;if(r.message.includes("Decoding error")&&n.onDecodingError!=null){n.onDecodingError(r);return}if(!r.message.includes("Aborted due to close"))throw r})}}function Q6s(e,t){if(t!=="avc1"&&t!=="hvc1")return 0;const n=new DataView(e.buffer);for(let r=0;r>1&63;if(o===19||o===20||o===32||o===33||o===34)return r}r+=n.getUint32(r)+4}return-1}async function D6s(e,t,n,r,o,s){const a=await t.createReader(),l=await Fqn(e.filter(h=>!h.deleted&&h.is_sync&&h.cts>=o.start&&h.cts<=o.end),a);if(l.length===0||r.aborted){s(null,!0);return}let d=0;rYe(u(),l,{onDecodingError:h=>{td.warn("thumbnailsByKeyFrame",h),d===0?rYe(u(!0),l,{onDecodingError:g=>{a.close(),td.error("thumbnailsByKeyFrame retry soft deocde",g)}}):(s(null,!0),a.close())}});function u(h=!1){const g={...n,...h?{hardwareAcceleration:"prefer-software"}:{}},m=new VideoDecoder({output:v=>{d+=1;const f=d===l.length;s(v,f),f&&(a.close(),m.state!=="closed"&&m.close())},error:v=>{const f=`thumbnails decoder error: ${v.message}, config: ${JSON.stringify(g)}, state: ${JSON.stringify({qSize:m.decodeQueueSize,state:m.state,outputCnt:d,inputCnt:l.length})}`;throw td.error(f),Error(f)}});return r.addEventListener("abort",()=>{a.close(),m.state!=="closed"&&m.close()}),m.configure(g),m}}function oYe(e){let t=0,n=null;for(const r of e)if(!r.deleted){if(r.is_sync&&(t+=1),t>=2)break;(n==null||r.ctso),bo(this,cT,0),bo(this,Q_,0),Rr(this,z_,{loop:!1,volume:1,...n}),this.ready=U5s(this,sYe,Uqn).call(this,t).then(()=>({width:0,height:0,duration:n.loop?1/0:Ht(this,zN).duration}))}get meta(){return{...Ht(this,zN),sampleRate:z4.sampleRate,chanCount:2}}getPCMData(){return[Ht(this,P5),Ht(this,NT)]}async tick(t){if(!Ht(this,z_).loop&&t>=Ht(this,zN).duration)return await this.tickInterceptor(t,{audio:[],state:"done"});const n=t-Ht(this,cT);if(t3e6)return Rr(this,cT,t),Rr(this,Q_,Math.ceil(Ht(this,cT)/1e6*z4.sampleRate)),await this.tickInterceptor(t,{audio:[new Float32Array(0),new Float32Array(0)],state:"success"});Rr(this,cT,t);const r=Math.ceil(n/1e6*z4.sampleRate),o=Ht(this,Q_)+r,s=Ht(this,z_).loop?[Kkn(Ht(this,P5),Ht(this,Q_),o),Kkn(Ht(this,NT),Ht(this,Q_),o)]:[Ht(this,P5).slice(Ht(this,Q_),o),Ht(this,NT).slice(Ht(this,Q_),o)];return Rr(this,Q_,o),await this.tickInterceptor(t,{audio:s,state:"success"})}async split(t){await this.ready;const n=Math.ceil(t/1e6*z4.sampleRate),r=new Cfe(this.getPCMData().map(s=>s.slice(0,n)),Ht(this,z_)),o=new Cfe(this.getPCMData().map(s=>s.slice(n)),Ht(this,z_));return[r,o]}async clone(){await this.ready;const t=new Cfe(this.getPCMData(),Ht(this,z_));return await t.ready,t}destroy(){Rr(this,P5,new Float32Array(0)),Rr(this,NT,new Float32Array(0)),td.info("---- audioclip destroy ----")}};zN=new WeakMap,P5=new WeakMap,NT=new WeakMap,z_=new WeakMap,sYe=new WeakSet,Uqn=async function(e){eN.ctx==null&&(eN.ctx=new AudioContext({sampleRate:z4.sampleRate}));const t=performance.now(),n=e instanceof ReadableStream?await R6s(e,eN.ctx):e;td.info("Audio clip decoded complete:",performance.now()-t);const r=Ht(this,z_).volume;if(r!==1)for(const o of n)for(let s=0;s0){let f=0,k=0;for(const A of v)for(let p=0;p0?f/k:0)}else l.push(0)}catch{l.push(0)}}const u=Math.max(...l,.001),h=l.map(g=>g/u);return s.destroy(),Aj.set(r,h),uz.set(e,a),{waveformData:h,duration:a}}catch(o){return console.error("Error extracting video audio waveform:",o),{waveformData:[],duration:0}}}function I6s(e,t){if(!e||e.length===0)return new Array(t).fill(0);const n=e[0].length,r=new Float32Array(n);for(let l=0;ll/a)}const M6s={class:"video-clip"},P6s={key:0,class:"video-clip__loading"},F6s={key:0,class:"video-clip__thumbnail-placeholder"},N6s={class:"video-clip__info"},U6s={class:"video-clip__name"},j6s={key:0,class:"video-clip__rate"},W6s=40,V6s=120,z6s=80,H6s=Je({__name:"VideoClip",props:{clip:{}},setup(e){const t=e,n=EA(),r=fe(),o=fe(!1),s=fe([]),a=X(()=>t.clip),l=X(()=>{if(a.value.name)return a.value.name;const v=a.value.sourceUrl.split("/");return v[v.length-1]||"Video"}),d=X(()=>(t.clip.endTime-t.clip.startTime)*n.actualPixelsPerSecond),u=X(()=>{const v=Math.sqrt(n.scale),f=z6s*v;return Math.max(W6s,Math.min(V6s,f))}),h=X(()=>a.value.thumbnails&&a.value.thumbnails.length>0?a.value.thumbnails:s.value),g=X(()=>{const v=h.value,f=a.value.originalDuration,k=a.value.trimStart??0,A=(a.value.trimEnd??f)-k;if(!v||v.length===0||f<=0||A<=0){const y=Math.max(1,Math.ceil(d.value/u.value));return Array.from({length:y},()=>({url:"",width:d.value/y}))}const p=f/v.length,b=[];let w=0;const O=d.value;for(;wO&&(L=O-w),L>0&&b.push({url:v[S],width:L}),w+=L}return b});async function m(){if(a.value.thumbnails&&a.value.thumbnails.length>0)return;const v=a.value.sourceUrl;if(v){o.value=!0;try{const f=await tve(v,{count:20,width:120});s.value=f.thumbnails}catch(f){console.error("Failed to load video thumbnails:",f)}finally{o.value=!1}}}return pt(()=>a.value.sourceUrl,()=>{s.value=[],m()}),An(()=>{m()}),Qa(()=>{for(const v of s.value)v.startsWith("blob:")&&URL.revokeObjectURL(v)}),(v,f)=>(xe(),Ge("div",M6s,[ge("div",{class:"video-clip__thumbnails",ref_key:"thumbnailsRef",ref:r},[o.value?(xe(),Ge("div",P6s,[...f[0]||(f[0]=[ge("span",{class:"video-clip__loading-spinner"},null,-1),ge("span",{class:"video-clip__loading-text"},"加载中...",-1)])])):(xe(),Ge("div",{key:1,class:"video-clip__thumbnail-track",style:no({width:d.value+"px"})},[(xe(!0),Ge(sn,null,Bi(g.value,(k,A)=>(xe(),Ge("div",{key:A,class:"video-clip__thumbnail",style:no({backgroundImage:k.url?`url(${k.url})`:"none",width:k.width+"px",backgroundPosition:"center",backgroundSize:"cover"})},[k.url?nn("",!0):(xe(),Ge("div",F6s," 📹 "))],4))),128))],4))],512),ge("div",N6s,[ge("span",U6s,Pe(l.value),1),a.value.playbackRate&&a.value.playbackRate!==1?(xe(),Ge("span",j6s,Pe(a.value.playbackRate)+"x ",1)):nn("",!0)])]))}}),n2n=Lm(H6s,[["__scopeId","data-v-611ec10c"]]),$6s={key:0,class:"audio-clip__loading"},X6s=["width","height"],G6s={class:"audio-clip__info"},Y6s={class:"audio-clip__name"},Z6s={key:0,class:"audio-clip__volume"},q6s=Je({__name:"AudioClip",props:{clip:{}},setup(e){const t=e,n=EA(),r=fe(),o=fe(),s=fe(400),a=fe(32),l=fe(!1),d=fe([]);let u=null;const h=X(()=>t.clip),g=X(()=>{if(h.value.name)return h.value.name;const w=h.value.sourceUrl.split("/");return w[w.length-1]||"Audio"}),m=X(()=>h.value.waveformData&&h.value.waveformData.length>0?h.value.waveformData:d.value),v=X(()=>{const w=m.value;if(!w||w.length===0)return[];const O=h.value.originalDuration;if(O<=0)return w;const y=h.value.trimStart??0,C=h.value.trimEnd??O;if(y===0&&C===O)return w;const _=w.length,S=y/O,L=C/O;let E=Math.floor(S*_),T=Math.ceil(L*_);return E=Math.max(0,Math.min(E,_-1)),T=Math.max(E+1,Math.min(T,_)),w.slice(E,T)});function f(){if(!o.value)return;const w=o.value,O=w.getContext("2d");O&&(O.clearRect(0,0,w.width,w.height),v.value&&v.value.length>0?k(O,v.value):A(O))}function k(w,O){const y=s.value,C=a.value,_=y/O.length,S=Math.max(1,_*.75),L=w.createLinearGradient(0,0,0,C);L.addColorStop(0,"rgba(16, 185, 129, 0.9)"),L.addColorStop(.5,"rgba(16, 185, 129, 1)"),L.addColorStop(1,"rgba(16, 185, 129, 0.9)"),w.fillStyle=L;for(let E=0;ES+L.charCodeAt(0),0);for(let S=0;S{f()})}async function b(){if(h.value.waveformData&&h.value.waveformData.length>0)return;const w=h.value.sourceUrl;if(w){l.value=!0;try{const O=w.match(/\.(mp4|webm|mov|avi)$/i)?await Wqn(w,{samples:500}):await aat(w,{samples:500});d.value=O.waveformData}catch(O){console.error("Failed to load audio waveform:",O)}finally{l.value=!1,ai(()=>{f()})}}}return pt(()=>h.value.sourceUrl,()=>{d.value=[],b()}),pt(v,()=>{ai(()=>{f()})}),pt(()=>[h.value.trimStart,h.value.trimEnd],()=>{ai(()=>{f()})}),pt(()=>n.actualPixelsPerSecond,()=>{p()}),An(()=>{r.value&&(u=new ResizeObserver(()=>{p()}),u.observe(r.value)),p(),b()}),Qa(()=>{u&&(u.disconnect(),u=null)}),(w,O)=>(xe(),Ge("div",{class:"audio-clip",ref_key:"clipRef",ref:r},[l.value?(xe(),Ge("div",$6s,[...O[0]||(O[0]=[ge("span",{class:"audio-clip__loading-spinner"},null,-1),ge("span",{class:"audio-clip__loading-text"},"加载波形...",-1)])])):(xe(),Ge("canvas",{key:1,ref_key:"canvasRef",ref:o,class:"audio-clip__waveform",width:s.value,height:a.value},null,8,X6s)),ge("div",G6s,[ge("span",Y6s,Pe(g.value),1),h.value.volume!==void 0?(xe(),Ge("span",Z6s," 🔊 "+Pe(Math.round(h.value.volume*100))+"% ",1)):nn("",!0)])],512))}}),K6s=Lm(q6s,[["__scopeId","data-v-61d57c9d"]]),J6s={class:"subtitle-clip__text"},eEs=Je({__name:"SubtitleClip",props:{clip:{}},setup(e){const t=e,n=X(()=>t.clip),r=(s,a)=>{var l;const d=n.value[s];return d!==void 0?d:((l=n.value.config)==null?void 0:l[s])??a},o=X(()=>({background:r("backgroundColor",void 0),textAlign:r("textAlign","left")}));return(s,a)=>(xe(),Ge("div",{class:"subtitle-clip",style:no(o.value)},[ge("div",J6s,Pe(n.value.text),1)],4))}}),tEs=Lm(eEs,[["__scopeId","data-v-863126a4"]]),nEs={class:"text-clip__content"},iEs=Je({__name:"TextClip",props:{clip:{}},setup(e){const t=e,n=(a,l)=>{var d;const u=t.clip[a];return u!==void 0?u:((d=t.clip.config)==null?void 0:d[a])??l},r=X(()=>t.clip.text||n("text","自定义文本")),o=X(()=>({background:n("backgroundColor",void 0),textAlign:n("textAlign","center")})),s=X(()=>({fontFamily:n("fontFamily",void 0),fontSize:n("fontSize",void 0)?`${n("fontSize",10)}px`:void 0,color:n("color","#ffffff"),fontWeight:n("fontWeight",600)}));return(a,l)=>(xe(),Ge("div",{class:"text-clip",style:no(o.value)},[ge("div",nEs,[ge("span",{class:"text-clip__text",style:no(s.value)},Pe(r.value),5)])],4))}}),rEs=Lm(iEs,[["__scopeId","data-v-2824ba6a"]]),oEs={class:"sticker-clip"},sEs={key:1,class:"sticker-clip__placeholder"},aEs={class:"sticker-clip__info"},lEs=Je({__name:"StickerClip",props:{clip:{}},setup(e){const t=e,n=X(()=>t.clip);return(r,o)=>(xe(),Ge("div",oEs,[n.value.sourceUrl?(xe(),Ge("div",{key:0,class:"sticker-clip__image",style:no({backgroundImage:`url(${n.value.sourceUrl})`})},null,4)):(xe(),Ge("div",sEs," ✨ ")),ge("div",aEs,Pe(n.value.name||"Sticker"),1)]))}}),cEs=Lm(lEs,[["__scopeId","data-v-562f6596"]]),dEs={class:"filter-clip"},uEs={class:"filter-clip__info"},hEs={class:"filter-clip__name"},fEs={class:"filter-clip__type"},gEs=Je({__name:"FilterClip",props:{clip:{}},setup(e){const t=e,n=X(()=>t.clip);return(r,o)=>(xe(),Ge("div",dEs,[o[0]||(o[0]=ge("div",{class:"filter-clip__icon"}," 🎨 ",-1)),ge("div",uEs,[ge("div",hEs,Pe(n.value.name||"Filter"),1),ge("div",fEs,Pe(n.value.filterType),1)])]))}}),mEs=Lm(gEs,[["__scopeId","data-v-0fe335d3"]]),kEs={class:"effect-clip"},vEs={class:"effect-clip__info"},AEs={class:"effect-clip__name"},pEs={class:"effect-clip__type"},bEs=Je({__name:"EffectClip",props:{clip:{}},setup(e){const t=e,n=X(()=>t.clip);return(r,o)=>(xe(),Ge("div",kEs,[o[0]||(o[0]=ge("div",{class:"effect-clip__icon"}," ⭐ ",-1)),ge("div",vEs,[ge("div",AEs,Pe(n.value.name||"Effect"),1),ge("div",pEs,Pe(n.value.effectType),1)])]))}}),wEs=Lm(bEs,[["__scopeId","data-v-41c88d2b"]]),OEs={class:"transition-clip"},yEs={class:"transition-clip__info"},CEs={class:"transition-clip__name"},_Es={class:"transition-clip__duration"},SEs=Je({__name:"TransitionClip",props:{clip:{}},setup(e){const t=e,n=X(()=>t.clip);return(r,o)=>(xe(),Ge("div",OEs,[o[0]||(o[0]=ge("div",{class:"transition-clip__icon"}," 🔀 ",-1)),ge("div",yEs,[ge("div",CEs,Pe(n.value.name||"Transition"),1),ge("div",_Es,Pe(n.value.transitionDuration)+"s",1)])]))}}),LEs=Lm(SEs,[["__scopeId","data-v-14c86e24"]]),xEs={class:"clip__content"},i2n=3,EEs=Je({__name:"ClipItem",props:{clip:{},track:{}},emits:["dragStart","resizeStart","contextMenu","click","dblclick","addTransition"],setup(e,{emit:t}){const n=e,r=t,o=G0(),s=EA(),a=MH(),l=bt("config",{}),d=fe(),u=fe(!1),h=fe(!1),g=fe({x:0,y:0});let m=!1,v=null;const f=X(()=>o.selectedClipIds.has(n.clip.id)),k=X(()=>a.draggedClipIds.has(n.clip.id));pt(()=>a.isDragging,B=>{B||(w.value=null)});const A=X(()=>s.actualPixelsPerSecond),p=X(()=>(l.clipConfigs||{})[n.clip.type]||{}),b=X(()=>({"clip--selected":f.value,"clip--locked":n.track.locked,"clip--dragging":k.value&&a.isDragging,"clip--resizing":u.value,"clip--show-transition-btn":h.value})),w=fe(null),O=X(()=>{var B,R,I,F;const j=(n.clip.endTime-n.clip.startTime)*A.value,W=n.clip.startTime*A.value,H=p.value;let $=32,G=8;n.track.isMain?($=64,G=8):n.clip.type==="video"||n.track.type==="video"?($=48,G=8):($=32,G=8),H.height&&($=H.height),H.top&&(G=H.top);const q={left:`${W}px`,width:`${j}px`,height:`${$}px`,top:`${G}px`,"--clip-bg-color":H.backgroundColor,"--clip-border-color":H.borderColor,"--clip-selected-bg-color":(B=H.selected)==null?void 0:B.backgroundColor,"--clip-selected-border-color":(R=H.selected)==null?void 0:R.borderColor,"--clip-hover-border-color":(I=H.hover)==null?void 0:I.borderColor,"--clip-border-width":H.borderWidth?`${H.borderWidth}px`:"1px","--clip-border-radius":typeof H.borderRadius=="number"?`${H.borderRadius}px`:H.borderRadius||"var(--radius-sm)","--clip-opacity":H.opacity,"--clip-selected-box-shadow":(F=H.selected)==null?void 0:F.boxShadow};if(k.value&&a.isDragging&&w.value){const re=a.dragOffset,J=w.value;q.position="fixed",q.left=`${J.left+re.x}px`,q.top=`${J.top+re.y}px`,q.width=`${J.width}px`,q.height=`${J.height}px`,q.zIndex=1e3,q.pointerEvents="none",q.transform="none"}return q}),y=X(()=>{const B=p.value;return B.component?B.component:{video:n2n,audio:K6s,subtitle:tEs,text:rEs,sticker:cEs,filter:mEs,effect:wEs,transition:LEs}[n.clip.type]||n2n}),C=X(()=>n.clip.type==="transition"?null:n.track.clips.filter(B=>B.type!=="transition").find(B=>B.id!==n.clip.id&&Math.abs(B.startTime-n.clip.endTime)<.01)||null),_=X(()=>C.value?n.track.clips.some(B=>B.type==="transition"&&B.startTimen.clip.endTime):!1),S=X(()=>n.clip.type==="transition"?!0:p.value.resizable!==!1);function L(B){var R;if(n.track.locked||(r("click",n.clip,B),B.button!==0))return;if(n.clip.type==="transition"){o.selectClip(n.clip.id);return}m=!0,v=B;const I=B.clientX,F=B.clientY,j=((R=d.value)==null?void 0:R.ownerDocument)||document,W=G=>{if(!m)return;const q=Math.abs(G.clientX-I),re=Math.abs(G.clientY-F);(q>i2n||re>i2n)&&(m=!1,v&&(d.value&&(w.value=d.value.getBoundingClientRect()),r("dragStart",n.clip,v)),$())},H=()=>{m=!1,v=null,$()},$=()=>{j.removeEventListener("mousemove",W),j.removeEventListener("mouseup",H)};j.addEventListener("mousemove",W),j.addEventListener("mouseup",H)}function E(B,R){var I;if(n.track.locked)return;o.selectClip(n.clip.id),u.value=!0,r("resizeStart",n.clip,B,R);const F=((I=d.value)==null?void 0:I.ownerDocument)||document,j=()=>{u.value=!1,F.removeEventListener("mouseup",j)};F.addEventListener("mouseup",j)}function T(B){r("contextMenu",n.clip,B)}function D(B){if(!d.value)return;const R=d.value.getBoundingClientRect(),I=B.clientX-R.left,F=s.actualPixelsPerSecond,j=I/F,W=n.clip.startTime+j,H=Math.max(n.clip.startTime,Math.min(W,n.clip.endTime));r("dblclick",n.clip,H)}function P(B){if(!C.value||_.value||n.track.locked){h.value=!1;return}const R=B.currentTarget.getBoundingClientRect(),I=B.clientX-R.left,F=R.width;if(I>=F-2&&I<=F){h.value=!0;const j=((n.clip.endTime+C.value.startTime)/2-n.clip.startTime)*A.value;g.value={x:j,y:R.height/2}}else h.value=!1}function Q(){h.value=!1}function M(B){B.stopPropagation(),C.value&&r("addTransition",n.clip.id,C.value.id),h.value=!1}return(B,R)=>(xe(),Ge("div",{class:Eo(["clip",b.value]),ref_key:"clipRef",ref:d,style:no(O.value),onMousedown:L,onDblclick:D,onMousemove:P,onMouseleave:Q,onContextmenu:Mr(T,["prevent"])},[!e.track.locked&&S.value?(xe(),Ge("div",{key:0,class:"clip__handle clip__handle--left",onMousedown:R[0]||(R[0]=Mr(I=>E("left",I),["stop"]))},null,32)):nn("",!0),ge("div",xEs,[(xe(),Ut(Bd(y.value),{clip:e.clip},null,8,["clip"]))]),!e.track.locked&&S.value?(xe(),Ge("div",{key:1,class:"clip__handle clip__handle--right",onMousedown:R[1]||(R[1]=Mr(I=>E("right",I),["stop"]))},null,32)):nn("",!0),h.value&&C.value&&!_.value&&e.clip.type==="video"?(xe(),Ge("div",{key:2,class:"clip__transition-btn",style:no({left:g.value.x+"px",top:g.value.y+"px"}),onMousedown:R[2]||(R[2]=Mr(()=>{},["stop"])),onClick:M,title:"点击添加转场"},[...R[3]||(R[3]=[ge("span",{class:"clip__transition-icon"},"🔀",-1)])],36)):nn("",!0)],38))}}),TEs=Lm(EEs,[["__scopeId","data-v-4b3e240e"]]),QEs={class:"drag-preview__inner"},DEs={key:0,class:"drag-preview__label"},BEs=Je({__name:"DragPreview",props:{track:{}},setup(e){const t=e,n=MH(),r=EA(),o=X(()=>{const s=n.previewPosition;if(!s.visible)return{};const a=s.startTime*r.actualPixelsPerSecond,l=(s.endTime-s.startTime)*r.actualPixelsPerSecond;let d=32;t.track.isMain?d=64:(s.clipType==="video"||t.track.type==="video")&&(d=48);const u={left:`${a}px`,width:`${l}px`,height:`${d}px`,top:"8px"};return s.needNewTrack&&(u.top=`-${d+8}px`),u});return(s,a)=>(xe(),Ge("div",{class:Eo(["drag-preview",{"drag-preview--new-track":Ae(n).previewPosition.needNewTrack}]),style:no(o.value)},[ge("div",QEs,[Ae(n).previewPosition.needNewTrack?(xe(),Ge("span",DEs," 新建轨道 ")):nn("",!0)])],6))}}),REs=Lm(BEs,[["__scopeId","data-v-5766b4e2"]]),IEs=["data-track-id"],MEs=Je({__name:"TrackArea",props:{track:{},scrollLeft:{default:0}},emits:["scroll","contextMenu","trackContextMenu","addTransition","dropMedia","seek"],setup(e,{emit:t}){const n=e,r=t,o=EA(),s=G0(),a=MH(),l=ML(),{startResize:d}=B9s(),u=fe(),h=fe(!1),g=fe(null),m=X(()=>o.actualPixelsPerSecond),v=X(()=>!a.isDragging||!a.previewPosition.visible?!1:a.previewPosition.trackId===n.track.id),f=X(()=>{const D=Math.max(s.totalDuration,a.previewEndTime,60);return Math.ceil(D*m.value)}),k=X(()=>n.track.isMain?80:n.track.clips.some(D=>D.type==="video")||n.track.type==="video"?64:48);function A(){u.value&&r("scroll",u.value.scrollLeft)}pt(()=>n.scrollLeft,D=>{u.value&&u.value.scrollLeft!==D&&(u.value.scrollLeft=D)});function p(D,P){var Q;const M=((Q=u.value)==null?void 0:Q.ownerDocument)||document;a.startDrag(D,P,M)}function b(D,P,Q){d(D,P,Q)}function w(D){if(!(D.button!==0||D.target.closest(".clip"))&&(s.clearSelection(),u.value)){const P=u.value.getBoundingClientRect(),Q=D.clientX-P.left+u.value.scrollLeft,M=Ar(Q/m.value);l.seekTo(M),r("seek",M)}}function O(D,P){s.selectClip(D.id)}function y(D,P){l.seekTo(P),r("seek",P)}function C(D,P){r("contextMenu",D,P)}function _(D){if(D.target.closest(".clip")||!u.value)return;const P=u.value.getBoundingClientRect(),Q=(D.clientX-P.left+u.value.scrollLeft)/m.value;r("trackContextMenu",n.track,Q,D)}function S(D,P){r("addTransition",D,P)}function L(D){if(!u.value)return;h.value=!0;const P=u.value.getBoundingClientRect(),Q=D.clientX-P.left+u.value.scrollLeft;g.value=Q}function E(D){D.target===u.value&&(h.value=!1,g.value=null)}function T(D){if(h.value=!1,g.value=null,!(!u.value||!D.dataTransfer))try{const P=D.dataTransfer.getData("application/json");if(!P)return;const Q=JSON.parse(P),M=u.value.getBoundingClientRect(),B=D.clientX-M.left+u.value.scrollLeft,R=Ar(B/m.value);r("dropMedia",Q,n.track.id,R)}catch(P){console.error("处理拖放失败:",P)}}return(D,P)=>(xe(),Ge("div",{class:"track-area",ref_key:"trackAreaRef",ref:u,onScroll:A,onMousedown:w,onContextmenu:Mr(_,["prevent"]),onDragover:Mr(L,["prevent"]),onDrop:Mr(T,["prevent"]),onDragleave:E},[ge("div",{class:Eo(["track-area__content",{"track-area__content--drag-over":h.value}]),style:no({width:f.value+"px",minHeight:k.value+"px"}),"data-track-id":e.track.id},[(xe(!0),Ge(sn,null,Bi(e.track.clips,Q=>(xe(),Ut(TEs,{key:Q.id,clip:Q,track:e.track,"data-clip-id":Q.id,onDragStart:p,onResizeStart:b,onClick:O,onDblclick:y,onContextMenu:C,onAddTransition:S},null,8,["clip","track","data-clip-id"]))),128)),v.value?(xe(),Ut(REs,{key:0,track:e.track},null,8,["track"])):nn("",!0)],14,IEs)],544))}}),PEs=Lm(MEs,[["__scopeId","data-v-9f39c911"]]),FEs={key:0,class:"tracks__empty"},NEs={class:"tracks__empty-content"},UEs={class:"tracks__empty-text"},jEs=["data-track-id"],WEs={class:"tracks__track-area-cell"},VEs=Je({__name:"index",props:{scrollLeft:{default:0},locale:{default:()=>({})}},emits:["scroll","contextMenu","trackContextMenu","trackDelete","addTransition","dropMedia","update:trackControlWidth","seek"],setup(e,{emit:t}){const n=e,r=t,o=G0(),s=TE(),a=EA(),l=MH();ML();const d=bt("config",{}),u=fe(),h=fe(),g=fe(),m=fe(),v=fe(n.scrollLeft),f=fe(!1),k=fe(null),A=X(()=>o.sortedTracks),p=X(()=>a.actualPixelsPerSecond),b=X(()=>{const F=Math.max(o.totalDuration,l.previewEndTime,60);return Math.ceil(F*p.value)}),w=fe(200);pt(()=>n.scrollLeft,F=>{!f.value&&F!==v.value&&(v.value=F,m.value&&(m.value.scrollLeft=F))}),pt(A,(F,j)=>{const W=!j||j.length===0,H=F&&F.length>0;W&&H&&ai(()=>{g.value&&!y&&(y=new ResizeObserver(()=>{_()}),y.observe(g.value)),_()})},{immediate:!0});function O(F,j){j===0&&(k.value=F)}let y=null;function C(F){f.value||(f.value=!0,v.value=F,r("scroll",F),requestAnimationFrame(()=>{f.value=!1}))}An(()=>{g.value&&(y=new ResizeObserver(()=>{_()}),y.observe(g.value)),ai(()=>{l.setScrollContainers(u.value||null,m.value||null,C)}),ai(()=>{S()})}),Qa(()=>{y&&y.disconnect()});function _(){if(k.value){const F=k.value.getBoundingClientRect().width;w.value=F,r("update:trackControlWidth",F)}}function S(){const F=o.mainTrack;if(!F||!g.value)return;const j=g.value.querySelector(`[data-track-id="${F.id}"]`);j&&j.scrollIntoView({block:"center",behavior:"smooth"})}pt(()=>o.mainTrack,F=>{F&&ai(()=>{S()})});function L(){}function E(){m.value&&!f.value&&(f.value=!0,v.value=m.value.scrollLeft,r("scroll",v.value),requestAnimationFrame(()=>{f.value=!1}))}function T(F){f.value||(f.value=!0,v.value=F,m.value&&m.value.scrollLeft!==F&&(m.value.scrollLeft=F),r("scroll",F),requestAnimationFrame(()=>{f.value=!1}))}function D(F,j){o.updateTrack(F,j),s.pushSnapshot("更新轨道")}function P(F){const j=o.tracks.find(W=>W.id===F);if(j!=null&&j.isMain){alert("主轨道不能删除");return}o.removeTrack(F),s.pushSnapshot("删除轨道"),r("trackDelete",F)}function Q(F,j){r("contextMenu",F,j)}function M(F,j,W){r("trackContextMenu",F,j,W)}function B(F,j){r("addTransition",F,j)}function R(F,j,W){r("dropMedia",F,j,W)}function I(F){r("seek",F)}return Yi("config",d),(F,j)=>{var W;return xe(),Ge("div",{class:"tracks",ref_key:"tracksRef",ref:u},[A.value.length===0?(xe(),Ge("div",FEs,[ge("div",NEs,[j[0]||(j[0]=ge("span",{class:"tracks__empty-icon"},"🎬",-1)),ge("span",UEs,Pe(((W=e.locale)==null?void 0:W.emptyTip)||"拖拽媒体文件到此处添加"),1)])])):(xe(),Ge("div",{key:1,class:"tracks__scroll-container",ref_key:"scrollContainerRef",ref:h,onScroll:L},[ge("div",{class:"tracks__table",ref_key:"tableRef",ref:g},[(xe(!0),Ge(sn,null,Bi(A.value,(H,$)=>(xe(),Ge("div",{key:H.id,class:Eo(["tracks__track",{"tracks__track--locked":H.locked,"tracks__track--hidden":!H.visible}]),"data-track-id":H.id},[ge("div",{class:"tracks__track-control-cell",ref_for:!0,ref:G=>O(G,$)},[c(D9s,{track:H,locale:e.locale,onUpdate:D,onDelete:P},null,8,["track","locale"])],512),ge("div",WEs,[c(PEs,{track:H,"scroll-left":v.value,onScroll:T,onContextMenu:Q,onTrackContextMenu:M,onAddTransition:B,onDropMedia:R,onSeek:I},null,8,["track","scroll-left"])])],10,jEs))),128))],512)],544)),ge("div",{class:"tracks__scrollbar",onScroll:E,ref_key:"scrollbarRef",ref:m},[ge("div",{class:"tracks__scrollbar-content",style:no({width:b.value+"px"})},null,4)],544)],512)}}}),zEs=Lm(VEs,[["__scopeId","data-v-88da3b13"]]),HEs=["onClick"],$Es={key:0,class:"context-menu__divider"},XEs={key:0,class:"context-menu__icon"},GEs={class:"context-menu__label"},YEs={key:1,class:"context-menu__shortcut"},ZEs=Je({__name:"index",props:{items:{default:()=>[]}},emits:["select","close"],setup(e,{expose:t,emit:n}){const r=e,o=n,s=fe(!1),a=fe({x:0,y:0}),l=X(()=>r.items),d=X(()=>({left:`${a.value.x}px`,top:`${a.value.y}px`}));function u(f,k){a.value={x:f,y:k},s.value=!0,setTimeout(()=>{g()},0)}function h(){s.value=!1,o("close")}function g(){const f=document.querySelector(".context-menu");if(!f)return;const k=f.getBoundingClientRect(),A=window.innerWidth,p=window.innerHeight;let{x:b,y:w}=a.value;k.right>A&&(b=A-k.width-10),k.bottom>p&&(w=p-k.height-10),b<0&&(b=10),w<0&&(w=10),a.value={x:b,y:w}}function m(f){f.disabled||f.divider||(o("select",f.key),h())}function v(f){const k=f.target;s.value&&!k.closest(".context-menu")&&f.button===0&&h()}return An(()=>{document.addEventListener("click",v),document.addEventListener("contextmenu",v)}),Qa(()=>{document.removeEventListener("click",v),document.removeEventListener("contextmenu",v)}),t({show:u,hide:h}),(f,k)=>(xe(),Ut(f3,{to:"body"},[s.value?(xe(),Ge("div",{key:0,class:"context-menu",style:no(d.value),onContextmenu:k[0]||(k[0]=Mr(()=>{},["prevent"]))},[(xe(!0),Ge(sn,null,Bi(l.value,A=>(xe(),Ge("div",{key:A.key,class:Eo(["context-menu__item",{"context-menu__item--disabled":A.disabled,"context-menu__item--divider":A.divider,"context-menu__item--danger":A.danger}]),onClick:p=>m(A)},[A.divider?(xe(),Ge("div",$Es)):A.slot?Zr(f.$slots,A.slot,{key:1,item:A}):(xe(),Ge(sn,{key:2},[A.icon?(xe(),Ge("span",XEs,Pe(A.icon),1)):nn("",!0),ge("span",GEs,Pe(A.label),1),A.shortcut?(xe(),Ge("span",YEs,Pe(A.shortcut),1)):nn("",!0)],64))],10,HEs))),128))],36)):nn("",!0)]))}}),r2n={"zh-CN":{reset:"重置",undo:"撤销",redo:"重做",delete:"删除",play:"播放",pause:"暂停",snapOn:"关闭吸附",snapOff:"开启吸附",copy:"复制",cut:"剪切",paste:"粘贴",selectAll:"全选",splitClip:"分割",deleteClip:"删除片段",deleteTrack:"删除轨道",lockTrack:"锁定轨道",unlockTrack:"解锁轨道",muteTrack:"静音轨道",unmuteTrack:"取消静音",mainTrack:"主轨道",videoTrack:"视频轨道",audioTrack:"音频轨道",subtitleTrack:"字幕轨道",textTrack:"文本轨道",stickerTrack:"贴纸轨道",filterTrack:"滤镜轨道",effectTrack:"特效轨道",mainBadge:"主",show:"显示",hide:"隐藏",lock:"锁定",unlock:"解锁",emptyTip:"拖拽媒体文件到此处添加",emptyTrackHint:"拖拽媒体到这里",noClipSelected:"未选中片段",confirmDelete:"确定要删除吗?",confirmDeleteTrack:'确定要删除轨道"{name}"吗?'},"en-US":{reset:"Reset",undo:"Undo",redo:"Redo",delete:"Delete",play:"Play",pause:"Pause",snapOn:"Disable Snap",snapOff:"Enable Snap",copy:"Copy",cut:"Cut",paste:"Paste",selectAll:"Select All",splitClip:"Split",deleteClip:"Delete Clip",deleteTrack:"Delete Track",lockTrack:"Lock Track",unlockTrack:"Unlock Track",muteTrack:"Mute Track",unmuteTrack:"Unmute Track",mainTrack:"Main Track",videoTrack:"Video Track",audioTrack:"Audio Track",subtitleTrack:"Subtitle Track",textTrack:"Text Track",stickerTrack:"Sticker Track",filterTrack:"Filter Track",effectTrack:"Effect Track",mainBadge:"Main",show:"Show",hide:"Hide",lock:"Lock",unlock:"Unlock",emptyTip:"Drag and drop media files here to add",emptyTrackHint:"Drop media here",noClipSelected:"No clip selected",confirmDelete:"Are you sure to delete?",confirmDeleteTrack:'Are you sure to delete track "{name}"?'}},qEs={class:"video-track__body"},KEs={class:"video-track__empty-hint"},PRe="1.0.0",JEs=Je({__name:"index",props:{operationButtons:{default:()=>["reset","undo","redo","delete"]},scaleConfigButtons:{default:()=>["snap"]},trackTypes:{default:()=>({video:{max:5},audio:{max:3},subtitle:{max:2}})},clipConfigs:{default:void 0},showToolsBar:{type:Boolean,default:!0},enableMainTrackMode:{type:Boolean,default:!1},enableCrossTrackDrag:{type:Boolean,default:!0},maxDuration:{},fps:{default:30},pixelsPerSecond:{default:100},minScale:{default:.1},maxScale:{default:10},defaultScale:{default:1},enableSnap:{type:Boolean,default:!0},snapThreshold:{default:10},playbackRates:{default:()=>[.5,1,2,4]},trackControlWidth:{default:160},trackContextMenu:{default:()=>({enabled:!0})},clipContextMenu:{default:()=>({showCommonItems:!0,commonItems:["copy","cut","delete"]})},locale:{default:"zh-CN"},theme:{default:void 0}},emits:["clipMove","clipDelete","clipSelect","clipCopy","clipCut","clipPaste","clipSplit","clip:added","clip:updated","clip:removed","clip:resize-start","clip:resize-end","clip:drag-start","clip:drag-end","trackCreate","trackDelete","track:added","track:removed","track:updated","selection:changed","playback:play","playback:pause","playback:seek","playback:timeupdate","playback:ratechange","scale:changed","history:changed","addTransition","transitionAdded","dropMedia","trackContextMenuSelect","clipContextMenuSelect","data:changed"],setup(e,{expose:t,emit:n}){const r={video:{name:"视频",backgroundColor:"linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)",borderColor:"rgba(255,255,255,0.2)",height:32,top:8,resizable:!0,draggable:!0,borderRadius:6,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(59, 130, 246, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},audio:{name:"音频",backgroundColor:"linear-gradient(135deg, #10b981 0%, #059669 100%)",borderColor:"rgba(255,255,255,0.2)",height:24,top:12,resizable:!0,draggable:!0,borderRadius:4,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(16, 185, 129, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},subtitle:{name:"字幕",backgroundColor:"linear-gradient(135deg, #f59e0b 0%, #d97706 100%)",borderColor:"rgba(255,255,255,0.2)",height:24,top:12,resizable:!0,draggable:!0,borderRadius:4,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(245, 158, 11, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},sticker:{name:"贴纸",backgroundColor:"linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%)",borderColor:"rgba(255,255,255,0.2)",height:24,top:12,resizable:!1,draggable:!0,borderRadius:4,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(139, 92, 246, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},filter:{name:"滤镜",backgroundColor:"linear-gradient(135deg, #ec4899 0%, #db2777 100%)",borderColor:"rgba(255,255,255,0.2)",height:16,top:16,resizable:!1,draggable:!0,borderRadius:4,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(236, 72, 153, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},effect:{name:"特效",backgroundColor:"linear-gradient(135deg, #6366f1 0%, #4f46e5 100%)",borderColor:"rgba(255,255,255,0.2)",height:16,top:16,resizable:!1,draggable:!0,borderRadius:4,selected:{borderColor:"#fff",boxShadow:"0 0 0 2px rgba(99, 102, 241, 0.5), 0 4px 12px rgba(0,0,0,0.3)"},hover:{borderColor:"rgba(255,255,255,0.5)"}},transition:{name:"转场",backgroundColor:"transparent",borderColor:"transparent",height:32,top:8,resizable:!1,draggable:!1}};function o(ht,At){if(At===null||typeof At!="object"||ht===null||typeof ht!="object")return At;const Mt={...ht};for(const Kt in At)if(At.hasOwnProperty(Kt)){const qn=At[Kt],Zt=Mt[Kt];qn&&typeof qn=="object"&&!Array.isArray(qn)?Mt[Kt]=o(Zt||{},qn):Mt[Kt]=qn}return Mt}function s(ht){if(!ht)return r;const At={...r};for(const Mt in ht)ht.hasOwnProperty(Mt)&&(At[Mt]=o(At[Mt]||{},ht[Mt]));return At}const a=e,l=X(()=>{const ht=r2n["zh-CN"];return typeof a.locale=="string"?{...ht,...r2n[a.locale]||{}}:a.locale?{...ht,...a.locale}:ht}),d=X(()=>s(a.clipConfigs)),u=n,h=G0(),g=ML(),m=TE(),v=EA(),f=MH();pt(()=>a.enableCrossTrackDrag,ht=>{f.setConfig({enableCrossTrackDrag:ht})},{immediate:!0});const k=fe();let A=[];pt(()=>Array.from(h.selectedClipIds),ht=>{const At=new Set(ht),Mt=new Set(A);(At.size!==Mt.size||ht.some(Kt=>!Mt.has(Kt)))&&(u("selection:changed",ht,A),u("clipSelect",ht),A=[...ht])},{deep:!0}),z5s({containerRef:k,callbacks:{onCopy:ht=>{u("clipCopy",ht)},onCut:ht=>{u("clipCut",ht)},onDelete:ht=>{ht.forEach(At=>u("clipDelete",At))},onPaste:(ht,At,Mt)=>{u("clipPaste",ht,At,Mt)},onPlay:()=>{u("playback:play")},onPause:()=>{u("playback:pause")}}});let p=new Map;pt(()=>f.isDragging,(ht,At)=>{ht&&!At?(p.clear(),f.draggedClips.forEach(Mt=>{p.set(Mt.id,{startTime:Mt.startTime,trackId:Mt.trackId})})):!ht&&At&&(p.forEach((Mt,Kt)=>{const qn=h.getClip(Kt);qn&&(qn.startTime!==Mt.startTime||qn.trackId!==Mt.trackId)&&(u("clipMove",Kt,qn.trackId,qn.startTime),u("clip:drag-end",qn,Mt.trackId,qn.trackId))}),p.clear())});const b=fe(0),w=fe(0),O=fe(a.trackControlWidth);H5s({scrollLeft:b,tracksWidth:w,setScrollLeft:ht=>{b.value=ht}});const y=fe([]),C=fe(null),_=fe(null),S=fe(0),L=fe(null),E=fe();An(()=>{v.minScale=a.minScale,v.maxScale=a.maxScale,v.pixelsPerSecond=a.pixelsPerSecond,v.initScale(a.defaultScale),v.initSnapEnabled(a.enableSnap),v.snapThreshold=a.snapThreshold,m.initialize(),T(a.theme),D(),window.addEventListener("resize",D)}),pt(()=>a.theme,ht=>{T(ht)},{deep:!0});function T(ht){if(!k.value||!ht)return;const At=k.value;ht.primaryHue!==void 0&&At.style.setProperty("--theme-hue",String(ht.primaryHue)),ht.primarySaturation!==void 0&&At.style.setProperty("--theme-saturation",`${ht.primarySaturation}%`),ht.primaryLightness!==void 0&&At.style.setProperty("--theme-lightness",`${ht.primaryLightness}%`),ht.primaryColor&&At.style.setProperty("--color-primary",ht.primaryColor),ht.bgDark&&At.style.setProperty("--color-bg-dark",ht.bgDark),ht.bgMedium&&At.style.setProperty("--color-bg-medium",ht.bgMedium),ht.bgLight&&At.style.setProperty("--color-bg-light",ht.bgLight),ht.bgElevated&&At.style.setProperty("--color-bg-elevated",ht.bgElevated),ht.textPrimary&&At.style.setProperty("--color-text-primary",ht.textPrimary),ht.textSecondary&&At.style.setProperty("--color-text-secondary",ht.textSecondary),ht.textMuted&&At.style.setProperty("--color-text-muted",ht.textMuted),ht.borderColor&&At.style.setProperty("--color-border",ht.borderColor),ht.borderRadius&&(ht.borderRadius.sm!==void 0&&At.style.setProperty("--radius-sm",`${ht.borderRadius.sm}px`),ht.borderRadius.md!==void 0&&At.style.setProperty("--radius-md",`${ht.borderRadius.md}px`),ht.borderRadius.lg!==void 0&&At.style.setProperty("--radius-lg",`${ht.borderRadius.lg}px`))}Qa(()=>{window.removeEventListener("resize",D)});function D(){if(k.value){const ht=k.value.getBoundingClientRect();w.value=ht.width-O.value}}function P(ht){Math.abs(O.value-ht)>1&&(O.value=ht,D())}function Q(ht){b.value=ht}function M(ht){b.value=ht}function B(ht){switch(ht){case"reset":R();break;case"undo":m.undo();break;case"redo":m.redo();break;case"split":F();break;case"delete":I();break}}function R(){h.reset(),g.reset(),m.reset(),v.reset(),a.enableMainTrackMode&&h.addTrack({id:`track-main-${Date.now()}`,type:"video",name:"主轨道",visible:!0,locked:!1,clips:[],order:0,isMain:!0}),m.initialize()}function I(){const ht=Array.from(h.selectedClipIds);ht.length!==0&&(h.removeClips(ht),m.pushSnapshot("删除片段"),ht.forEach(At=>{u("clipDelete",At)}))}function F(){const ht=Array.from(h.selectedClipIds);if(ht.length===0)return;const At=g.currentTime;ht.forEach(Mt=>{const Kt=h.getClip(Mt);if(!Kt||At<=Kt.startTime||At>=Kt.endTime)return;const qn=h.splitClip(Mt,At);qn&&u("clipSplit",Mt,qn.leftClip,qn.rightClip,At)}),m.pushSnapshot("分割片段")}function j(ht,At){u("addTransition",ht,At)}function W(ht,At,Mt){u("dropMedia",ht,At,Mt)}function H(ht){u("playback:seek",ht)}const $=()=>({copy:{key:"copy",label:l.value.copy||"复制",icon:"📋",shortcut:"Ctrl+C"},cut:{key:"cut",label:l.value.cut||"剪切",icon:"✂️",shortcut:"Ctrl+X"},delete:{key:"delete",label:l.value.deleteClip||"删除",icon:"🗑️",danger:!0,shortcut:"Delete"}});function G(ht,At){var Mt;C.value=ht,_.value=null,L.value="clip";const Kt=[],qn=a.clipContextMenu,Zt=$();(qn==null?void 0:qn.showCommonItems)!==!1&&((qn==null?void 0:qn.commonItems)||["copy","cut","delete"]).forEach(so=>{if(typeof so=="string"){const Un=Zt[so];Un&&Kt.push({...Un})}else Kt.push(so)}),qn!=null&&qn.byType&&qn.byType[ht.type]&&(Kt.length>0&&Kt.push({key:"divider-type",label:"",divider:!0}),Kt.push(...qn.byType[ht.type])),qn!=null&&qn.extraItems&&qn.extraItems.length>0&&(Kt.length>0&&Kt.push({key:"divider-extra",label:"",divider:!0}),Kt.push(...qn.extraItems)),y.value=Kt,(Mt=E.value)==null||Mt.show(At.clientX,At.clientY)}function q(ht,At,Mt){var Kt,qn,Zt;if(((Kt=a.trackContextMenu)==null?void 0:Kt.enabled)===!1)return;C.value=null,_.value=ht,S.value=At,L.value="track";const so=[{key:"paste",label:l.value.paste||"粘贴",icon:"📋",shortcut:"Ctrl+V",disabled:!h.hasClipboardContent()},{key:"divider-1",label:"",divider:!0},{key:"lockTrack",label:ht.locked?l.value.unlockTrack||"解锁轨道":l.value.lockTrack||"锁定轨道",icon:ht.locked?"🔓":"🔒"},{key:"deleteTrack",label:l.value.deleteTrack||"删除轨道",icon:"🗑️",danger:!0,disabled:ht.isMain}],Un=((qn=a.trackContextMenu)==null?void 0:qn.items)||so;y.value=Un,(Zt=E.value)==null||Zt.show(Mt.clientX,Mt.clientY)}function re(ht){if(L.value==="clip"&&C.value){const At=C.value;switch(ht){case"copy":J(At);break;case"cut":oe(At);break;case"delete":h.removeClip(At.id),m.pushSnapshot("删除片段"),u("clipDelete",At.id);break;default:u("clipContextMenuSelect",ht,At)}}if(L.value==="track"&&_.value){const At=_.value,Mt=S.value;switch(ht){case"paste":se(At.id,Mt);break;case"lockTrack":le(At);break;case"deleteTrack":ue(At);break;default:u("trackContextMenuSelect",ht,At,Mt)}}C.value=null,_.value=null,L.value=null,y.value=[]}function J(ht){if(!h.selectedClipIds.has(ht.id))h.copyClips([ht.id]),u("clipCopy",[ht.id]);else{const At=Array.from(h.selectedClipIds);h.copyClips(At),u("clipCopy",At)}}function oe(ht){if(!h.selectedClipIds.has(ht.id))h.cutClips([ht.id]),u("clipCut",[ht.id]);else{const At=Array.from(h.selectedClipIds);h.cutClips(At),u("clipCut",At)}}function se(ht,At){const Mt=h.pasteClips(ht,At);Mt&&(m.pushSnapshot("粘贴片段"),u("clipPaste",Mt,ht,At))}function le(ht){h.updateTrack(ht.id,{locked:!ht.locked}),m.pushSnapshot(ht.locked?"解锁轨道":"锁定轨道")}function ue(ht){if(ht.isMain)return;const At=(l.value.confirmDeleteTrack||'确定要删除轨道"{name}"吗?').replace("{name}",ht.name);confirm(At)&&(h.removeTrack(ht.id),m.pushSnapshot("删除轨道"),u("trackDelete",ht.id))}const ee=X(()=>({trackTypes:a.trackTypes,clipConfigs:d.value,enableMainTrackMode:a.enableMainTrackMode,enableCrossTrackDrag:a.enableCrossTrackDrag,maxDuration:a.maxDuration,fps:a.fps,playbackRates:a.playbackRates,trackControlWidth:a.trackControlWidth}));Yi("config",ee);function de(ht,At){d.value[ht]?d.value[ht]=o(d.value[ht],At):d.value[ht]=At}function z(ht,At,Mt){u("transitionAdded",ht,At,Mt)}function Y(){return{version:PRe,tracks:JSON.parse(JSON.stringify(h.tracks)),currentTime:g.currentTime,scale:v.scale,snapEnabled:v.snapEnabled}}function ie(ht){ht.version&&ht.version!==PRe&&console.warn(`[VideoTrack] 数据版本不匹配: ${ht.version} -> ${PRe}`),h.setTracks(ht.tracks||[]),ht.currentTime!==void 0&&g.seekTo(ht.currentTime),ht.scale!==void 0&&v.setScale(ht.scale),ht.snapEnabled!==void 0&&v.setSnapEnabled(ht.snapEnabled),m.initialize(),u("data:changed")}function te(){return JSON.stringify(Y(),null,2)}function Z(ht){try{const At=JSON.parse(ht);return ie(At),!0}catch(At){return console.error("[VideoTrack] JSON 解析失败:",At),!1}}function he(ht){h.addTrack(ht),m.pushSnapshot("添加轨道"),u("track:added",ht),u("trackCreate",ht.id)}function pe(ht){const At=h.tracks.find(Mt=>Mt.id===ht);At&&(h.removeTrack(ht),m.pushSnapshot("删除轨道"),u("track:removed",At),u("trackDelete",ht))}function Ce(ht,At){h.updateTrack(ht,At),m.pushSnapshot("更新轨道"),u("track:updated",ht,At)}function Qe(){return h.tracks}function ke(){return h.sortedTracks}function me(ht){return h.tracks.find(At=>At.id===ht)}function _e(){return h.mainTrack}function Te(ht,At){h.addClip(ht,At),m.pushSnapshot("添加片段"),u("clip:added",At,ht)}function De(ht){const At=h.getClip(ht);if(At){const Mt=At.trackId;h.removeClip(ht),m.pushSnapshot("删除片段"),u("clip:removed",At,Mt),u("clipDelete",ht)}}function Ye(ht,At){const Mt=h.getClip(ht);if(Mt){const Kt={...Mt};h.updateClip(ht,At),m.pushSnapshot("更新片段"),u("clip:updated",ht,At,Kt)}}function ot(ht){return h.getClip(ht)}function We(ht,At,Mt){const Kt=h.getClip(ht);if(!Kt)return!1;const qn=Kt.trackId,Zt=Kt.endTime-Kt.startTime;return qn!==At&&h.moveClipToTrack(ht,At),h.updateClip(ht,{startTime:Mt,endTime:Mt+Zt}),m.pushSnapshot("移动片段"),u("clipMove",ht,At,Mt),u("clip:drag-end",Kt,qn,At),!0}function et(ht,At,Mt){const Kt=h.setClipPlaybackRate(ht,At,Mt);return Kt.success&&(m.pushSnapshot("调整倍速"),h.getClip(ht)&&u("clip:updated",ht,{playbackRate:At},{})),Kt}function st(ht,At){return h.getClipDurationAtRate(ht,At)}function Me(ht,At,Mt=!0){return h.checkPlaybackRateCollision(ht,At,Mt)}function Se(ht){h.selectClip(ht)}function Ie(ht){h.clearSelection(),ht.forEach(At=>h.selectedClipIds.add(At))}function ze(){h.clearSelection()}function Ze(){return h.selectedClips}function gt(){return Array.from(h.selectedClipIds)}function St(){g.play(),u("playback:play")}function Pt(){g.pause(),u("playback:pause")}function dn(){g.isPlaying?Pt():St()}function on(ht){g.seekTo(ht),u("playback:seek",ht)}function pn(){return g.currentTime}function ni(ht){g.setPlaybackRate(ht),u("playback:ratechange",ht)}function Zn(){return g.playbackRate}function Pi(){return g.isPlaying}function rr(){return h.totalDuration}function Hr(ht){v.setScale(ht),u("scale:changed",ht)}function Bo(){return v.scale}function lo(ht=.1){v.zoomIn(ht),u("scale:changed",v.scale)}function Fr(ht=.1){v.zoomOut(ht),u("scale:changed",v.scale)}function is(){v.setSnapEnabled(!0)}function yi(){v.setSnapEnabled(!1)}function Gt(){return v.snapEnabled}function gi(){return{canUndo:m.canUndo,canRedo:m.canRedo}}function ri(){m.undo(),u("history:changed",gi())}function tr(){m.redo(),u("history:changed",gi())}return t({reset:R,registerClipType:de,emitTransitionAdded:z,exportData:Y,importData:ie,exportAsJSON:te,importFromJSON:Z,addTrack:he,removeTrack:pe,updateTrack:Ce,getTracks:Qe,getSortedTracks:ke,getTrackById:me,getMainTrack:_e,addClip:Te,removeClip:De,updateClip:Ye,getClipById:ot,moveClip:We,setClipPlaybackRate:et,getClipDurationAtRate:st,checkPlaybackRateCollision:Me,selectClip:Se,selectClips:Ie,clearSelection:ze,getSelectedClips:Ze,getSelectedClipIds:gt,play:St,pause:Pt,togglePlay:dn,seekTo:on,getCurrentTime:pn,setPlaybackRate:ni,getPlaybackRate:Zn,isPlaying:Pi,getDuration:rr,setScale:Hr,getScale:Bo,zoomIn:lo,zoomOut:Fr,enableSnap:is,disableSnap:yi,isSnapEnabled:Gt,undo:ri,redo:tr,getHistoryState:gi}),(ht,At)=>(xe(),Ge("div",{class:"video-track",ref_key:"containerRef",ref:k},[Zr(ht.$slots,"toolbar-before",{},void 0,!0),e.showToolsBar?(xe(),Ut(b9s,{key:0,"operation-buttons":e.operationButtons,"scale-config-buttons":e.scaleConfigButtons,locale:l.value,onOperation:B,"onPlayback:play":At[0]||(At[0]=()=>u("playback:play")),"onPlayback:pause":At[1]||(At[1]=()=>u("playback:pause"))},_Y({"operations-prepend":Oe(()=>[Zr(ht.$slots,"operations-prepend",{},void 0,!0)]),"operations-append":Oe(()=>[Zr(ht.$slots,"operations-append",{},void 0,!0)]),"playback-prepend":Oe(()=>[Zr(ht.$slots,"playback-prepend",{},void 0,!0)]),"playback-append":Oe(()=>[Zr(ht.$slots,"playback-append",{},void 0,!0)]),"scale-prepend":Oe(()=>[Zr(ht.$slots,"scale-prepend",{},void 0,!0)]),"scale-append":Oe(()=>[Zr(ht.$slots,"scale-append",{},void 0,!0)]),_:2},[Bi(ht.$slots,(Mt,Kt)=>({name:Kt,fn:Oe(qn=>[Zr(ht.$slots,Kt,Qx(D_(qn)),void 0,!0)])}))]),1032,["operation-buttons","scale-config-buttons","locale"])):nn("",!0),Zr(ht.$slots,"toolbar-after",{},void 0,!0),Zr(ht.$slots,"ruler-before",{},void 0,!0),c(y9s,{width:w.value,"scroll-left":b.value,"track-control-width":O.value,onScroll:Q,onSeek:H},null,8,["width","scroll-left","track-control-width"]),Zr(ht.$slots,"ruler-after",{},void 0,!0),ge("div",qEs,[Zr(ht.$slots,"tracks-before",{},void 0,!0),c(zEs,{"scroll-left":b.value,locale:l.value,onScroll:M,onContextMenu:G,onTrackContextMenu:q,onAddTransition:j,onDropMedia:W,"onUpdate:trackControlWidth":P,onSeek:H},_Y({"track-control":Oe(Mt=>[Zr(ht.$slots,"track-control",Qx(D_(Mt)),void 0,!0)]),"track-area":Oe(Mt=>[Zr(ht.$slots,"track-area",Qx(D_(Mt)),void 0,!0)]),"clip-content":Oe(Mt=>[Zr(ht.$slots,"clip-content",Qx(D_(Mt)),void 0,!0)]),"empty-track":Oe(Mt=>[Zr(ht.$slots,"empty-track",Qx(D_(Mt)),()=>[ge("div",KEs,Pe(l.value.emptyTrackHint),1)],!0)]),_:2},[Bi(ht.$slots,(Mt,Kt)=>({name:Kt,fn:Oe(qn=>[Zr(ht.$slots,Kt,Qx(D_(qn)),void 0,!0)])}))]),1032,["scroll-left","locale"]),Zr(ht.$slots,"tracks-after",{},void 0,!0)]),c(ZEs,{ref_key:"contextMenuRef",ref:E,items:y.value,onSelect:re},{"menu-item":Oe(Mt=>[Zr(ht.$slots,"context-menu-item",Qx(D_(Mt)),void 0,!0)]),_:3},8,["items"]),Zr(ht.$slots,"statusbar",{},void 0,!0)],512))}}),e7s=Lm(JEs,[["__scopeId","data-v-aa0c76f8"]]);function t7s(){return[{id:"text-1",type:"subtitle",name:$t("workbench.production.media.titleText"),preview:"Aa",duration:3},{id:"text-2",type:"subtitle",name:$t("workbench.production.media.subtitleText"),preview:$t("workbench.production.media.subtitlePreview"),duration:3},{id:"text-3",type:"text",name:$t("workbench.production.media.customText"),preview:"Text",duration:3}]}function n7s(){return[{id:"trans-1",type:"transition",subType:"fade",name:$t("workbench.production.transition.fade"),icon:"i-round"},{id:"trans-2",type:"transition",subType:"slide",name:$t("workbench.production.transition.slide"),icon:"i-right"},{id:"trans-3",type:"transition",subType:"wipe",name:$t("workbench.production.transition.wipe"),icon:"i-erase"},{id:"trans-4",type:"transition",subType:"dissolve",name:$t("workbench.production.transition.dissolve"),icon:"i-platte"},{id:"trans-5",type:"transition",subType:"zoom",name:$t("workbench.production.transition.zoom"),icon:"i-zoom-in"},{id:"trans-6",type:"transition",subType:"rotate",name:$t("workbench.production.transition.rotate"),icon:"i-redo"}]}function i7s(){return[{id:"fadeIn",type:"effect",effectType:"fadeIn",name:$t("workbench.production.effect.fadeIn"),icon:"i-sun-one"},{id:"fadeOut",type:"effect",effectType:"fadeOut",name:$t("workbench.production.effect.fadeOut"),icon:"i-moon"},{id:"flash",type:"effect",effectType:"flash",name:$t("workbench.production.effect.flash"),icon:"i-flashlamp"},{id:"shake",type:"effect",effectType:"shake",name:$t("workbench.production.effect.shake"),icon:"i-shake"},{id:"zoomIn",type:"effect",effectType:"zoomIn",name:$t("workbench.production.effect.zoomIn"),icon:"i-zoom-in"},{id:"zoomOut",type:"effect",effectType:"zoomOut",name:$t("workbench.production.effect.zoomOut"),icon:"i-zoom-out"},{id:"pulse",type:"effect",effectType:"pulse",name:$t("workbench.production.effect.pulse"),icon:"i-heartbeat"},{id:"rotateIn",type:"effect",effectType:"rotateIn",name:$t("workbench.production.effect.rotateIn"),icon:"i-redo"},{id:"sticker-1",type:"sticker",name:$t("workbench.production.effect.sticker1"),icon:"i-emotion-happy"},{id:"sticker-2",type:"sticker",name:$t("workbench.production.effect.sticker2"),icon:"i-star"}]}function r7s(){return[{id:"grayscale",type:"filter",filterType:"grayscale",filterValue:1,name:$t("workbench.production.filter.grayscale"),icon:"i-dark-mode"},{id:"sepia",type:"filter",filterType:"sepia",filterValue:1,name:$t("workbench.production.filter.sepia"),icon:"i-camera-one"},{id:"warm",type:"filter",filterType:"sepia",filterValue:.3,name:$t("workbench.production.filter.warm"),icon:"i-fire"},{id:"cool",type:"filter",filterType:"hue-rotate",filterValue:180,name:$t("workbench.production.filter.cool"),icon:"i-snowflake"},{id:"saturate",type:"filter",filterType:"saturate",filterValue:2,name:$t("workbench.production.filter.vivid"),icon:"i-brightness"},{id:"brightness",type:"filter",filterType:"brightness",filterValue:1.3,name:$t("workbench.production.filter.bright"),icon:"i-sun-one"},{id:"contrast",type:"filter",filterType:"contrast",filterValue:1.5,name:$t("workbench.production.filter.highContrast"),icon:"i-contrast-view"},{id:"blur",type:"filter",filterType:"blur",filterValue:3,name:$t("workbench.production.filter.blur"),icon:"i-fog"},{id:"invert",type:"filter",filterType:"invert",filterValue:1,name:$t("workbench.production.filter.invert"),icon:"i-reverse-rotation"},{id:"opacity",type:"filter",filterType:"opacity",filterValue:.5,name:$t("workbench.production.filter.semiTransparent"),icon:"i-ghost"}]}function o7s(){return[{id:"video",label:$t("workbench.production.media.video"),icon:"i-video-file"},{id:"media",label:$t("workbench.production.media.media"),icon:"i-video"},{id:"image",label:$t("workbench.production.media.image"),icon:"i-pic"},{id:"audio",label:$t("workbench.production.media.audio"),icon:"i-music"},{id:"text",label:$t("workbench.production.media.subtitle"),icon:"i-text"},{id:"transition",label:$t("workbench.production.media.transition"),icon:"i-switch-themes"},{id:"effect",label:$t("workbench.production.media.effect"),icon:"i-magic"},{id:"filter",label:$t("workbench.production.media.filter"),icon:"i-color-filter"}]}function FRe(e){if(e===0)return $t("workbench.production.media.loading");const t=Math.floor(e/60),n=Math.floor(e%60);return t>0?`${t}:${n.toString().padStart(2,"0")}`:`${n.toFixed(1)}s`}const s7s={class:"mediaLibrary"},a7s={class:"mediaLibraryHeader"},l7s={class:"headerTitle"},c7s={class:"mediaLibraryTitle"},d7s={class:"mediaLibraryTabs"},u7s={class:"mediaLibraryContent"},h7s={key:0,class:"mediaList"},f7s=["onDragstart"],g7s={class:"mediaItemPreview"},m7s={key:2,class:"mediaItemLoading"},k7s={class:"mediaItemInfo"},v7s={key:0,class:"selected"},A7s={class:"mediaItemName"},p7s={key:1,class:"mediaList"},b7s=["onDragstart"],w7s={class:"mediaItemPreview"},O7s={key:2,class:"mediaItemLoading"},y7s={class:"mediaItemInfo"},C7s={class:"mediaItemName"},_7s={key:2,class:"mediaList"},S7s=["onDragstart"],L7s={class:"mediaItemPreview"},x7s={key:2,class:"mediaItemLoading"},E7s={class:"mediaItemInfo"},T7s={class:"mediaItemName"},Q7s={key:3,class:"transitionList"},D7s=["onDragstart"],B7s={class:"transitionItemPreview"},R7s={class:"transitionItemIcon"},I7s={class:"transitionItemName"},M7s={key:4,class:"effectList"},P7s=["onDragstart"],F7s={class:"effectItemPreview"},N7s={class:"effectItemName"},U7s={key:5,class:"filterList"},j7s=["onDragstart"],W7s={class:"filterItemPreview"},V7s={class:"filterItemName"},z7s={key:6,class:"audioList"},H7s=["onDragstart"],$7s={class:"audioItemPreview"},X7s={key:0,class:"mediaItemLoading"},G7s={class:"audioItemInfo"},Y7s={class:"audioItemName"},Z7s={key:7,class:"textList"},q7s=["onDragstart"],K7s={class:"textItemPreview"},J7s={class:"textItemContent"},eTs={class:"textItemName"},tTs=Je({__name:"mediaLibrary",props:{initialVideoItems:{default:()=>[]},initialMediaItems:{default:()=>[]},initialAudioItems:{default:()=>[]},initialImageItems:{default:()=>[]}},setup(e){const t=e,n=fe("video"),r=o7s(),o=fe([...t.initialVideoItems]),s=fe([...t.initialMediaItems]),a=fe([...t.initialAudioItems]),l=fe([...t.initialImageItems]),d=fe(t7s());pt(()=>t.initialVideoItems,p=>{o.value=[...p],p.length>0&&m()}),pt(()=>t.initialMediaItems,p=>{s.value=[...p],p.length>0&&m()}),pt(()=>t.initialAudioItems,p=>{a.value=[...p],p.length>0&&f()}),pt(()=>t.initialImageItems,p=>{l.value=[...p],p.length>0&&v()});const u=fe(n7s()),h=fe(i7s()),g=fe(r7s());async function m(){for(const p of s.value)try{const b=await tve(p.url,{count:10,width:120});p.duration=b.duration,p.thumbnails=b.thumbnails,p.thumbnail=b.thumbnails[0]||"",p.loading=!1}catch(b){console.error(`Failed to load thumbnails for ${p.name}:`,b),p.loading=!1,p.duration=5}for(const p of o.value)try{const b=await tve(p.url,{count:10,width:120});p.duration=b.duration,p.thumbnails=b.thumbnails,p.thumbnail=b.thumbnails[0]||"",p.loading=!1}catch(b){console.error(`Failed to load thumbnails for ${p.name}:`,b),p.loading=!1,p.duration=5}}async function v(){for(const p of l.value)try{const b=new Image;b.crossOrigin="anonymous",await new Promise((w,O)=>{b.onload=()=>{p.thumbnail=p.url,p.loading=!1,w()},b.onerror=O,b.src=p.url})}catch(b){console.error(`Failed to load image ${p.name}:`,b),p.loading=!1}}async function f(){for(const p of a.value)try{const b=await aat(p.url,{samples:50});p.duration=b.duration,p.waveformData=b.waveformData,p.loading=!1}catch(b){console.error(`Failed to load waveform for ${p.name}:`,b),p.loading=!1,p.duration=30}}function k(p,b){if(!p.dataTransfer)return;const w={...b,sourceUrl:b.url||b.id};p.dataTransfer.effectAllowed="copy",p.dataTransfer.setData("application/json",JSON.stringify(w)),p.dataTransfer.setData("text/plain",b.name),p.target instanceof HTMLElement&&p.target.classList.add("dragging")}function A(p){p.target instanceof HTMLElement&&p.target.classList.remove("dragging")}return An(()=>{setTimeout(()=>{m(),f(),v()},100)}),(p,b)=>{const w=Si,O=Zh,y=Wc,C=_n("i-check-one"),_=y1,S=Sg,L=_n("i-music");return xe(),Ge("div",s7s,[ge("div",a7s,[ge("div",l7s,[ge("h3",c7s,Pe(p.$t("workbench.production.editVideo.clipMaterials")),1)]),ge("div",d7s,[(xe(!0),Ge(sn,null,Bi(Ae(r),E=>(xe(),Ut(w,{key:E.id,theme:Ae(n)===E.id?"primary":"default",variant:Ae(n)===E.id?"base":"text",size:"small",onClick:T=>n.value=E.id},{icon:Oe(()=>[(xe(),Ut(Bd(E.icon),{theme:"outline",size:"18",style:{"margin-right":"4px"}}))]),default:Oe(()=>[Bt(" "+Pe(E.label),1)]),_:2},1032,["theme","variant","onClick"]))),128))])]),ge("div",u7s,[Ae(n)==="video"?(xe(),Ge("div",h7s,[(xe(!0),Ge(sn,null,Bi(Ae(o),E=>(xe(),Ge("div",{key:E.id,class:"mediaItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",g7s,[E.thumbnail?(xe(),Ut(O,{key:0,src:E.thumbnail,fit:"cover",class:"mediaItemThumbnail"},null,8,["src"])):(xe(),Ut(Bd(E.icon),{key:1,theme:"outline",size:"18"})),E.loading?(xe(),Ge("div",m7s,[c(y,{size:"small"})])):nn("",!0)]),ge("div",k7s,[E.selected?(xe(),Ge("div",v7s,[c(C,{theme:"filled",size:"16",fill:"#000000"})])):nn("",!0),ge("div",A7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])]),E.duration?(xe(),Ut(S,{key:1,size:"small",theme:"default",variant:"light"},{default:Oe(()=>[Bt(Pe(Ae(FRe)(E.duration)),1)]),_:2},1024)):nn("",!0)])],40,f7s))),128))])):nn("",!0),Ae(n)==="media"?(xe(),Ge("div",p7s,[(xe(!0),Ge(sn,null,Bi(Ae(s),E=>(xe(),Ge("div",{key:E.id,class:"mediaItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",w7s,[E.thumbnail?(xe(),Ut(O,{key:0,src:E.thumbnail,fit:"cover",class:"mediaItemThumbnail"},null,8,["src"])):(xe(),Ut(Bd(E.icon),{key:1,theme:"outline",size:"18"})),E.loading?(xe(),Ge("div",O7s,[c(y,{size:"small"})])):nn("",!0)]),ge("div",y7s,[ge("div",C7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])]),E.duration?(xe(),Ut(S,{key:0,size:"small",theme:"default",variant:"light"},{default:Oe(()=>[Bt(Pe(Ae(FRe)(E.duration)),1)]),_:2},1024)):nn("",!0)])],40,b7s))),128))])):nn("",!0),Ae(n)==="image"?(xe(),Ge("div",_7s,[(xe(!0),Ge(sn,null,Bi(Ae(l),E=>(xe(),Ge("div",{key:E.id,class:"mediaItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",L7s,[E.thumbnail?(xe(),Ut(O,{key:0,src:E.thumbnail,fit:"cover",class:"mediaItemThumbnail"},null,8,["src"])):(xe(),Ut(Bd(E.icon),{key:1,theme:"outline",size:"18"})),E.loading?(xe(),Ge("div",x7s,[c(y,{size:"small"})])):nn("",!0)]),ge("div",E7s,[ge("div",T7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])])])],40,S7s))),128))])):nn("",!0),Ae(n)==="transition"?(xe(),Ge("div",Q7s,[(xe(!0),Ge(sn,null,Bi(Ae(u),E=>(xe(),Ge("div",{key:E.id,class:"transitionItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",B7s,[ge("span",R7s,[(xe(),Ut(Bd(E.icon),{theme:"outline",size:"18"}))])]),ge("div",I7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])])],40,D7s))),128))])):nn("",!0),Ae(n)==="effect"?(xe(),Ge("div",M7s,[(xe(!0),Ge(sn,null,Bi(Ae(h),E=>(xe(),Ge("div",{key:E.id,class:"effectItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",F7s,[(xe(),Ut(Bd(E.icon),{theme:"outline",size:"18"}))]),ge("div",N7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])])],40,P7s))),128))])):nn("",!0),Ae(n)==="filter"?(xe(),Ge("div",U7s,[(xe(!0),Ge(sn,null,Bi(Ae(g),E=>(xe(),Ge("div",{key:E.id,class:"filterItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",W7s,[(xe(),Ut(Bd(E.icon),{theme:"outline",size:"18"}))]),ge("div",V7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])])],40,j7s))),128))])):nn("",!0),Ae(n)==="audio"?(xe(),Ge("div",z7s,[(xe(!0),Ge(sn,null,Bi(Ae(a),E=>(xe(),Ge("div",{key:E.id,class:"audioItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",$7s,[c(L,{theme:"outline",size:"18"}),E.loading?(xe(),Ge("div",X7s,[c(y,{size:"small"})])):nn("",!0)]),ge("div",G7s,[ge("div",Y7s,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])]),E.duration?(xe(),Ut(S,{key:0,size:"small",theme:"default",variant:"light"},{default:Oe(()=>[Bt(Pe(Ae(FRe)(E.duration)),1)]),_:2},1024)):nn("",!0)])],40,H7s))),128))])):nn("",!0),Ae(n)==="text"?(xe(),Ge("div",Z7s,[(xe(!0),Ge(sn,null,Bi(Ae(d),E=>(xe(),Ge("div",{key:E.id,class:"textItem",draggable:"true",onDragstart:T=>k(T,E),onDragend:A},[ge("div",K7s,[ge("span",J7s,Pe(E.preview),1)]),ge("div",eTs,[c(_,{content:E.name},{default:Oe(()=>[Bt(Pe(E.name),1)]),_:2},1032,["content"])])],40,q7s))),128))])):nn("",!0)])])}}}),nTs=oo(tTs,[["__scopeId","data-v-e976f881"]]),_fe=["t","b","l","r","lt","lb","rt","rb","rotate"];function hz(e){return document.createElement(e)}const NRe=new WeakMap;function Vqn(e,t){if(NRe.has(e))return NRe.get(e)(t);let n=10;new ResizeObserver(o=>{const s=o[0];s!=null&&(n=10/(s.contentRect.width/e.width))}).observe(e);function r(o){const{w:s,h:a}=o,l=n,d=l/2,u=s/2,h=a/2,g=l*1.5,m=g/2;return{...o.fixedAspectRatio?{}:{t:new xw(-d,-h-d,l,l,o),b:new xw(-d,h-d,l,l,o),l:new xw(-u-d,-d,l,l,o),r:new xw(u-d,-d,l,l,o)},lt:new xw(-u-d,-h-d,l,l,o),lb:new xw(-u-d,h-d,l,l,o),rt:new xw(u-d,-h-d,l,l,o),rb:new xw(u-d,h-d,l,l,o),rotate:new xw(-m,-h-l*2-m,g,g,o)}}return NRe.set(e,r),r(t)}const URe=new WeakMap;function Kre(e){if(URe.has(e))return URe.get(e);const t={w:e.clientWidth/e.width,h:e.clientHeight/e.height};return new ResizeObserver(()=>{t.w=e.clientWidth/e.width,t.h=e.clientHeight/e.height}).observe(e),URe.set(e,t),t}var Pte=(e=>(e.ActiveSpriteChange="activeSpriteChange",e.AddSprite="addSprite",e))(Pte||{}),fv,$Q,XQ,tW;class iTs{constructor(){fn(this,fv,[]);fn(this,$Q,null);fn(this,XQ,new $B);In(this,"on",we(this,XQ).on);fn(this,tW,0)}get activeSprite(){return we(this,$Q)}set activeSprite(t){t===we(this,$Q)||(t==null?void 0:t.interactable)==="disabled"||(Jt(this,$Q,t),we(this,XQ).emit("activeSpriteChange",t))}activeSpriteByCoord(t,n){this.activeSprite=this.getSprites().reverse().find(r=>r.visible&&r.interactable!=="disabled"&&r.rect.checkHit(t,n))??null}async addSprite(t){await t.ready,we(this,fv).push(t),Jt(this,fv,we(this,fv).sort((n,r)=>n.zIndex-r.zIndex)),t.on("propsChange",n=>{n.zIndex!=null&&Jt(this,fv,we(this,fv).sort((r,o)=>r.zIndex-o.zIndex))}),we(this,XQ).emit("addSprite",t)}removeSprite(t){we(this,$Q)===t&&(this.activeSprite=null),Jt(this,fv,we(this,fv).filter(n=>n!==t)),t.destroy()}getSprites(t={time:!0}){return we(this,fv).filter(n=>n.visible&&(t.time?we(this,tW)>=n.time.offset&&we(this,tW)<=n.time.offset+n.time.duration:!0))}updateRenderTime(t){Jt(this,tW,t);const n=this.activeSprite;n!=null&&(tn.time.offset+n.time.duration)&&(this.activeSprite=null)}destroy(){we(this,XQ).destroy(),we(this,fv).forEach(t=>t.destroy()),Jt(this,fv,[])}}fv=new WeakMap,$Q=new WeakMap,XQ=new WeakMap,tW=new WeakMap;const rTs=` @@ -15528,14 +15528,14 @@ Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>"The options parameter is deprecated and will text-align: ${ot}; white-space: pre-wrap; padding: 8px 16px; - `;Ye&&(We+=`background-color: ${Ye};`);try{const et=await S5r(me,We),st=new NSe(et);if(await st.ready,Z=new H$(st),he=et.width,pe=et.height,!te.rect||te.rect.w<=0||te.rect.h<=0){const Me=(b.value-he)/2,Se=w.value-pe-80;Z.rect.x=Me,Z.rect.y=Se,Z.rect.w=he,Z.rect.h=pe}Z.time.offset=z.startTime*1e6,Z.time.duration=(z.endTime-z.startTime)*1e6}catch{return null}}if(!Z)return null;if(te.rect&&te.rect.w>0&&te.rect.h>0)Z.rect.x=te.rect.x,Z.rect.y=te.rect.y,Z.rect.w=te.rect.w,Z.rect.h=te.rect.h,Z.rect.angle=te.rect.angle||0,te.rect.fixedAspectRatio!==void 0&&(Z.rect.fixedAspectRatio=te.rect.fixedAspectRatio),te.rect.fixedScaleCenter!==void 0&&(Z.rect.fixedScaleCenter=te.rect.fixedScaleCenter);else if(he>0&&pe>0&&z.type!=="subtitle"&&z.type!=="text"){const ke=q(he,pe);Z.rect.x=ke.x,Z.rect.y=ke.y,Z.rect.w=ke.w,Z.rect.h=ke.h}te.opacity!==void 0&&(Z.opacity=te.opacity),te.visible!==void 0&&(Z.visible=te.visible),te.flip&&(Z.flip=te.flip);const Qe=Y.type==="subtitle"||Y.type==="text";return te.zIndex!==void 0?Z.zIndex=Qe?te.zIndex+1e3:te.zIndex:Z.zIndex=I(Y.order,Qe),_.set(z.id,{trackId:Y.id,trackOrder:Y.order}),Z}catch{return null}}async function ue(){if(!u)return;if(A){p=!0;return}A=!0,W();const z=[];for(const te of a.tracks)if(te.visible!==!1)for(const Z of te.clips)["video","audio","image","sticker","subtitle","text"].includes(Z.type)&&z.push({clip:Z,track:te});const Y=new Set(z.map(te=>te.clip.id));for(const[te,Z]of O)if(!Y.has(te)){const he=y.get(te);he&&(he(),y.delete(te)),u.removeSprite(Z),O.delete(te),C.delete(te),_.delete(te)}for(const{clip:te,track:Z}of z){const he=te,pe=O.get(te.id);if(pe&&J(te)&&pe){const ke=y.get(te.id);ke&&(ke(),y.delete(te.id)),u.removeSprite(pe),O.delete(te.id),C.delete(te.id),_.delete(te.id)}const Qe=O.get(te.id);if(Qe){if(!f){k=!0,Qe.time.offset=te.startTime*1e6,Qe.time.duration=(te.endTime-te.startTime)*1e6,he.rect&&he.rect.w>0&&he.rect.h>0&&(Qe.rect.x=he.rect.x,Qe.rect.y=he.rect.y,Qe.rect.w=he.rect.w,Qe.rect.h=he.rect.h,Qe.rect.angle=he.rect.angle||0),he.opacity!==void 0&&(Qe.opacity=he.opacity),he.visible!==void 0&&(Qe.visible=he.visible),he.flip!==void 0&&(Qe.flip=he.flip);const ke=_.get(te.id);if(ke&&ke.trackOrder!==Z.order){const me=he.zIndex!==void 0?he.zIndex:I(Z.order);Qe.zIndex=me,_.set(te.id,{trackId:Z.id,trackOrder:Z.order})}else he.zIndex!==void 0&&(Qe.zIndex=he.zIndex);setTimeout(()=>{k=!1},0)}}else{const ke=await le(te,Z);ke&&(await u.addSprite(ke),O.set(te.id,ke),C.set(te.id,re(te)),se(te.id,ke))}}h.value=O.size>0,D();const ie=Q();ie>0&&(v.value=ie,T.duration=ie),A=!1,p&&(p=!1,await ue())}An(async()=>{if(d.value)try{u=new ATs(d.value,{bgColor:"#000000",width:b.value,height:w.value}),u.on("timeupdate",z=>{m.value=z,T.currentTime=z,f=!0,s.seekTo(z/1e6),setTimeout(()=>{f=!1},0)}),u.on("playing",()=>{g.value=!0,T.isPlaying=!0,f=!0,s.play(),o("play"),setTimeout(()=>{f=!1},0)}),u.on("paused",()=>{g.value=!1,T.isPlaying=!1,f=!0,s.pause(),o("pause"),setTimeout(()=>{f=!1},0)}),u.on("activeSpriteChange",z=>{if(z){for(const[Y,ie]of O)if(ie===z){oe(Y,z),a.selectClip(Y);break}}else a.clearSelection()}),T.initialized=!0,await ue(),O.size>0&&u.previewFrame(0)}catch{}}),pt(()=>a.tracks,async()=>{for(const z of $.values())z.close();$.clear(),await ue(),u&&O.size>0&&!g.value&&u.previewFrame(m.value)},{deep:!0}),pt(()=>s.currentTime,z=>{if(f)return;const Y=z*1e6;m.value=Y,u&&!g.value&&(k=!0,u.previewFrame(Y),setTimeout(()=>{k=!1},0))}),pt(()=>s.isPlaying,z=>{if(!f&&u)if(z&&!g.value){const Y=Q();if(Y<=0)return;m.value>=Y-1e3&&(m.value=0),k=!0,u.play({start:m.value,end:Y,playbackRate:l.value}),g.value=!0,setTimeout(()=>{k=!1},0)}else!z&&g.value&&(k=!0,u.pause(),g.value=!1,setTimeout(()=>{k=!1},0))}),pt(()=>s.duration,z=>{v.value=z*1e6,T.duration=z*1e6}),Qa(()=>{for(const z of y.values())z();y.clear(),O.clear(),C.clear(),_.clear(),S.clear(),L.clear();for(const z of $.values())z.close();$.clear(),E.clear(),u&&(u.destroy(),u=null)});function ee(z){const Y=z.target,ie=parseFloat(Y.value),te=ie*1e6;m.value=te,f=!0,s.seekTo(ie),setTimeout(()=>{f=!1},0),u&&u.previewFrame(te)}async function de(){if(!u)throw new Error($t("workbench.production.editVideo.avCanvasNotInit"));if(O.size===0)throw new Error($t("workbench.production.editVideo.noExportContent"));g.value&&(u.pause(),g.value=!1,s.pause());const z=await u.createCombinator(),Y=[],ie=z.output().getReader();for(;;){const{done:pe,value:Ce}=await ie.read();if(pe)break;Y.push(Ce)}const te=new Blob(Y,{type:"video/mp4"}),Z=URL.createObjectURL(te),he=document.createElement("a");he.href=Z,he.download=`WebAV-export-${Date.now()}.mp4`,he.click(),URL.revokeObjectURL(Z)}return t({avCanvas:X(()=>u),exportVideo:de,addSprite:async z=>{u&&(await u.addSprite(z),h.value=!0)},removeSprite:z=>{u&&u.removeSprite(z)}}),(z,Y)=>{const ie=_n("i-film"),te=_n("i-play");return xe(),Ge("div",VTs,[ge("div",{ref_key:"canvasContainer",ref:d,class:"previewScreen"},[Ae(h)?nn("",!0):(xe(),Ge("div",zTs,[ge("div",HTs,[c(ie,{theme:"outline",size:"48",fill:"#999"})]),ge("div",$Ts,Pe(z.$t("workbench.production.editVideo.videoPreviewArea")),1),ge("div",XTs,Pe(Ae(WTs)(Ae(M))),1)])),Ae(g)&&!Ae(h)?(xe(),Ge("div",GTs,[ge("div",YTs,[c(te,{theme:"outline",size:"36",fill:"#000000"})])])):nn("",!0)],512),ge("div",ZTs,[ge("input",{type:"range",min:"0",max:Ae(B),value:Ae(M),step:"0.01",class:"progressSlider",onInput:ee},null,40,qTs)])])}}}),JTs=oo(KTs,[["__scopeId","data-v-2b901aa2"]]),eQs={class:"propertyPanel"},tQs={class:"panelHeader"},nQs={class:"panelTitle"},iQs={class:"panelContent"},rQs={key:0,class:"emptyState"},oQs={class:"emptyIconWrapper"},sQs={class:"emptyText"},aQs={key:1,class:"properties"},lQs={class:"sectionCard"},cQs={class:"sectionHeader"},dQs={class:"sectionIconBadge"},uQs={class:"sectionLabel"},hQs={class:"sectionBody"},fQs={class:"propRow"},gQs={class:"propLabel"},mQs={class:"propRowInline"},kQs={class:"propField"},vQs={class:"propLabel"},AQs={class:"propField"},pQs={class:"propLabel"},bQs={class:"propRowInline durationRow"},wQs={class:"durationLabel"},OQs={key:0,class:"sectionCard"},yQs={class:"sectionHeader"},CQs={class:"sectionIconBadge"},_Qs={class:"sectionLabel"},SQs={class:"sectionBody"},LQs={class:"propRow"},xQs={class:"propRowHead"},EQs={class:"propLabel"},TQs={class:"propValueText"},QQs={class:"propRow"},DQs={class:"propRowHead"},BQs={class:"propLabel"},RQs={class:"propValueText"},IQs={class:"propRow"},MQs={class:"propLabel"},PQs={key:1,class:"sectionCard"},FQs={class:"sectionHeader"},NQs={class:"sectionIconBadge"},UQs={class:"sectionLabel"},jQs={class:"sectionBody"},WQs={class:"propRow"},VQs={class:"propRowHead"},zQs={class:"propLabel"},HQs={class:"propValueText"},$Qs={class:"propRowInline"},XQs={class:"propField"},GQs={class:"propLabel"},YQs={class:"propField"},ZQs={class:"propLabel"},qQs={key:2,class:"sectionCard"},KQs={class:"sectionHeader"},JQs={class:"sectionIconBadge"},eDs={class:"sectionLabel"},tDs={class:"sectionBody"},nDs={class:"propRow"},iDs={class:"propLabel"},rDs={class:"propRow"},oDs={class:"propLabel"},sDs={key:3,class:"sectionCard"},aDs={class:"sectionHeader"},lDs={class:"sectionIconBadge"},cDs={class:"sectionLabel"},dDs={class:"sectionBody"},uDs={class:"propRow"},hDs={class:"propLabel"},fDs={class:"propRow"},gDs={class:"propLabel"},mDs={class:"actions"},kDs=Je({__name:"propertyPanel",setup(e){const t=G0(),n=TE(),r=X(()=>{const O=t.selectedClips;return O.length===1?O[0]:null}),o=fe(""),s=fe(100),a=fe(100),l=fe(1),d=fe(100),u=fe(0),h=fe(0),g=fe("fade"),m=fe(1),v=fe(""),f=fe(24);pt(r,O=>{O&&(o.value=O.name||"",O.type==="video"&&(s.value=Math.round((O.opacity??1)*100),a.value=Math.round((O.volume??1)*100),l.value=O.playbackRate??1),O.type==="audio"&&(d.value=Math.round((O.volume??1)*100),u.value=O.fadeIn??0,h.value=O.fadeOut??0),O.type==="transition"&&(g.value=O.transitionType??"fade",m.value=O.transitionDuration??1),O.type==="subtitle"&&(v.value=O.text??"",f.value=O.fontSize??24))},{immediate:!0});function k(O,y){r.value&&(t.updateClip(r.value.id,{[O]:y}),n.pushSnapshot($t("workbench.production.editVideo.updateClip",{key:O})))}function A(O){if(!r.value)return;if(O<.1||O>10){console.warn($t("workbench.production.editVideo.playbackRateRange"));return}const y=t.setClipPlaybackRate(r.value.id,O,{allowShrink:!0,allowExpand:!0,handleCollision:!0,keepStartTime:!0});y.success?n.pushSnapshot($t("workbench.production.editVideo.updatePlaybackRate",{rate:O})):console.warn($t("workbench.production.editVideo.updatePlaybackRateFailed"),y.message)}function p(){if(!r.value||r.value.type!=="transition")return;const O=r.value;O.transitionDuration;const y=m.value,C=(O.startTime+O.endTime)/2;t.updateClip(O.id,{startTime:C-y/2,endTime:C+y/2,transitionDuration:y}),n.pushSnapshot($t("workbench.production.editVideo.updateTransitionDuration"))}function b(){if(!r.value)return;const O=fo.confirm({header:$t("workbench.production.editVideo.deleteConfirm"),body:$t("workbench.production.editVideo.deleteClipConfirm"),onConfirm:()=>{t.removeClips([r.value.id]),n.pushSnapshot($t("workbench.production.editVideo.deleteClip")),O.destroy()},onClose:()=>O.destroy()})}function w(){if(!r.value)return;const O=r.value,y=t.tracks.find(_=>_.id===O.trackId);if(!y)return;const C={...O,id:`clip-${Date.now()}`,startTime:O.endTime,endTime:O.endTime+(O.endTime-O.startTime),selected:!1};t.addClip(y.id,C),n.pushSnapshot($t("workbench.production.editVideo.duplicateClip"))}return(O,y)=>{const C=_n("i-inbox"),_=Sg,S=Wu,L=Lz,E=_n("i-video"),T=MAi,D=_n("i-music"),P=_n("i-exchange"),Q=uL,M=pA,B=_n("i-editor"),R=c2,I=_n("i-copy"),F=Si,j=_n("i-delete");return xe(),Ge("div",eQs,[ge("div",tQs,[ge("h3",nQs,Pe(O.$t("workbench.production.editVideo.propertyPanel")),1)]),ge("div",iQs,[r.value?(xe(),Ge("div",aQs,[ge("div",lQs,[ge("div",cQs,[ge("div",dQs,[(xe(),Ut(Bd(Ae(UTs)(r.value)),{theme:"outline",size:"16"}))]),ge("span",uQs,Pe(O.$t("workbench.production.editVideo.basicInfo")),1),c(_,{size:"small",theme:"primary",variant:"light"},{default:Oe(()=>[Bt(Pe(Ae(jTs)(r.value.type)),1)]),_:1})]),ge("div",hQs,[ge("div",fQs,[ge("label",gQs,Pe(O.$t("workbench.production.editVideo.name")),1),c(S,{modelValue:o.value,"onUpdate:modelValue":y[0]||(y[0]=W=>o.value=W),size:"small",placeholder:O.$t("workbench.production.editVideo.clipNamePlaceholder"),onChange:y[1]||(y[1]=W=>k("name",o.value))},null,8,["modelValue","placeholder"])]),ge("div",mQs,[ge("div",kQs,[ge("label",vQs,Pe(O.$t("workbench.production.editVideo.startTime")),1),c(L,{value:Number(r.value.startTime.toFixed(2)),size:"small","decimal-places":2,step:.01,theme:"normal",suffix:"s",onChange:y[2]||(y[2]=W=>k("startTime",Number(W)))},null,8,["value"])]),ge("div",AQs,[ge("label",pQs,Pe(O.$t("workbench.production.editVideo.endTime")),1),c(L,{value:Number(r.value.endTime.toFixed(2)),size:"small","decimal-places":2,step:.01,theme:"normal",suffix:"s",onChange:y[3]||(y[3]=W=>k("endTime",Number(W)))},null,8,["value"])])]),ge("div",bQs,[ge("span",wQs,Pe(O.$t("workbench.production.editVideo.totalDuration")),1),c(_,{size:"small",theme:"default",variant:"outline"},{default:Oe(()=>[Bt(Pe((r.value.endTime-r.value.startTime).toFixed(2))+"s",1)]),_:1})])])]),r.value.type==="video"?(xe(),Ge("div",OQs,[ge("div",yQs,[ge("div",CQs,[c(E,{theme:"outline",size:"16"})]),ge("span",_Qs,Pe(O.$t("workbench.production.editVideo.videoProperties")),1)]),ge("div",SQs,[ge("div",LQs,[ge("div",xQs,[ge("label",EQs,Pe(O.$t("workbench.production.editVideo.opacity")),1),ge("span",TQs,Pe(Math.round(s.value))+"%",1)]),c(T,{modelValue:s.value,"onUpdate:modelValue":y[4]||(y[4]=W=>s.value=W),min:0,max:100,step:1,onChange:y[5]||(y[5]=W=>k("opacity",Math.round(s.value)/100))},null,8,["modelValue"])]),ge("div",QQs,[ge("div",DQs,[ge("label",BQs,Pe(O.$t("workbench.production.editVideo.volume")),1),ge("span",RQs,Pe(Math.round(a.value))+"%",1)]),c(T,{modelValue:a.value,"onUpdate:modelValue":y[6]||(y[6]=W=>a.value=W),min:0,max:200,step:1,onChange:y[7]||(y[7]=W=>k("volume",Math.round(a.value)/100))},null,8,["modelValue"])]),ge("div",IQs,[ge("label",MQs,Pe(O.$t("workbench.production.editVideo.playbackSpeed")),1),c(L,{modelValue:l.value,"onUpdate:modelValue":y[8]||(y[8]=W=>l.value=W),size:"small",min:.1,max:10,step:.1,"decimal-places":1,theme:"normal",suffix:"x",onChange:y[9]||(y[9]=W=>A(Number(W)))},null,8,["modelValue"])])])])):nn("",!0),r.value.type==="audio"?(xe(),Ge("div",PQs,[ge("div",FQs,[ge("div",NQs,[c(D,{theme:"outline",size:"16"})]),ge("span",UQs,Pe(O.$t("workbench.production.editVideo.audioProperties")),1)]),ge("div",jQs,[ge("div",WQs,[ge("div",VQs,[ge("label",zQs,Pe(O.$t("workbench.production.editVideo.volume")),1),ge("span",HQs,Pe(Math.round(d.value))+"%",1)]),c(T,{modelValue:d.value,"onUpdate:modelValue":y[10]||(y[10]=W=>d.value=W),min:0,max:200,step:1,onChange:y[11]||(y[11]=W=>k("volume",Math.round(d.value)/100))},null,8,["modelValue"])]),ge("div",$Qs,[ge("div",XQs,[ge("label",GQs,Pe(O.$t("workbench.production.editVideo.fadeIn")),1),c(L,{modelValue:u.value,"onUpdate:modelValue":y[12]||(y[12]=W=>u.value=W),size:"small",min:0,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:y[13]||(y[13]=W=>k("fadeIn",u.value))},null,8,["modelValue"])]),ge("div",YQs,[ge("label",ZQs,Pe(O.$t("workbench.production.editVideo.fadeOut")),1),c(L,{modelValue:h.value,"onUpdate:modelValue":y[14]||(y[14]=W=>h.value=W),size:"small",min:0,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:y[15]||(y[15]=W=>k("fadeOut",h.value))},null,8,["modelValue"])])])])])):nn("",!0),r.value.type==="transition"?(xe(),Ge("div",qQs,[ge("div",KQs,[ge("div",JQs,[c(P,{theme:"outline",size:"16"})]),ge("span",eDs,Pe(O.$t("workbench.production.editVideo.transitionProperties")),1)]),ge("div",tDs,[ge("div",nDs,[ge("label",iDs,Pe(O.$t("workbench.production.editVideo.transitionType")),1),c(M,{modelValue:g.value,"onUpdate:modelValue":y[16]||(y[16]=W=>g.value=W),size:"small",onChange:y[17]||(y[17]=W=>k("transitionType",g.value))},{default:Oe(()=>[c(Q,{value:"fade",label:O.$t("workbench.production.editVideo.transFade")},null,8,["label"]),c(Q,{value:"slide",label:O.$t("workbench.production.editVideo.transSlide")},null,8,["label"]),c(Q,{value:"wipe",label:O.$t("workbench.production.editVideo.transWipe")},null,8,["label"]),c(Q,{value:"dissolve",label:O.$t("workbench.production.editVideo.transDissolve")},null,8,["label"]),c(Q,{value:"zoom",label:O.$t("workbench.production.editVideo.transZoom")},null,8,["label"]),c(Q,{value:"rotate",label:O.$t("workbench.production.editVideo.transRotate")},null,8,["label"])]),_:1},8,["modelValue"])]),ge("div",rDs,[ge("label",oDs,Pe(O.$t("workbench.production.editVideo.transitionDuration")),1),c(L,{modelValue:m.value,"onUpdate:modelValue":y[18]||(y[18]=W=>m.value=W),size:"small",min:.1,max:5,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:p},null,8,["modelValue"])])])])):nn("",!0),r.value.type==="subtitle"?(xe(),Ge("div",sDs,[ge("div",aDs,[ge("div",lDs,[c(B,{theme:"outline",size:"16"})]),ge("span",cDs,Pe(O.$t("workbench.production.editVideo.subtitleProperties")),1)]),ge("div",dDs,[ge("div",uDs,[ge("label",hDs,Pe(O.$t("workbench.production.editVideo.textContent")),1),c(R,{modelValue:v.value,"onUpdate:modelValue":y[19]||(y[19]=W=>v.value=W),autosize:{minRows:3,maxRows:6},onChange:y[20]||(y[20]=W=>k("text",v.value))},null,8,["modelValue"])]),ge("div",fDs,[ge("label",gDs,Pe(O.$t("workbench.production.editVideo.fontSize")),1),c(L,{modelValue:f.value,"onUpdate:modelValue":y[21]||(y[21]=W=>f.value=W),size:"small",min:12,max:72,theme:"normal",suffix:"px",onChange:y[22]||(y[22]=W=>k("fontSize",f.value))},null,8,["modelValue"])])])])):nn("",!0),ge("div",mDs,[c(F,{theme:"default",variant:"outline",block:"",onClick:w},{icon:Oe(()=>[c(I,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(O.$t("workbench.production.editVideo.copy")),1)]),_:1}),c(F,{theme:"danger",variant:"text",block:"",onClick:b},{icon:Oe(()=>[c(j,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(O.$t("workbench.production.editVideo.delete")),1)]),_:1})])])):(xe(),Ge("div",rQs,[ge("div",oQs,[c(C,{theme:"outline",size:"32",fill:"#999"})]),ge("div",sQs,Pe(O.$t("workbench.production.editVideo.selectClip")),1)]))])])}}}),vDs=oo(kDs,[["__scopeId","data-v-5eea45cc"]]),c2n={video:"workbench.production.track.video",image:"workbench.production.track.image",audio:"workbench.production.track.audio",subtitle:"workbench.production.track.subtitle",text:"workbench.production.track.text",sticker:"workbench.production.track.sticker",filter:"workbench.production.track.filter",effect:"workbench.production.track.effect"},ADs={video:5,image:5,audio:30,subtitle:3,text:3,sticker:3,filter:3,effect:3,transition:3};function pDs(e,t){return t.duration&&t.duration>0?t.duration:ADs[e]||3}function d2n(e,t,n){const r=t+n;for(const o of e.clips)if(o.type!=="transition"&&to.startTime)return!1;return!0}function bDs(e,t,n,r,o){if(o){const d=e.tracks.find(u=>u.id===o);if(d&&d.type===t&&d2n(d,n,r))return{track:d,isNew:!1}}const s=e.sortedTracks.filter(d=>d.type===t&&!d.isMain);for(const d of s)if(d2n(d,n,r))return{track:d,isNew:!1};const a=e.getTrackCountByType(t),l={id:Yre("track-"),type:t,name:`${c2n[t]?$t(c2n[t]):t}${a+1}`,visible:!0,locked:!1,clips:[],order:e.tracks.length};return e.addTrack(l),{track:l,isNew:!0}}async function wDs(e,t,n){try{const r=await tve(n,{count:20,width:120}),o=e.getClip(t);o&&o.type==="video"&&(o.thumbnails=r.thumbnails,r.duration>0&&o.endTime-o.startTime<=0&&(o.endTime=o.startTime+r.duration,o.originalDuration=r.duration,o.trimEnd=r.duration))}catch(r){console.error("Failed to load video thumbnails:",r)}}async function Xqn(e,t,n){try{const o=n.match(/\.(mp4|webm|mov|avi)$/i)?await Wqn(n,{samples:500}):await aat(n,{samples:500}),s=e.getClip(t);s&&s.type==="audio"&&(s.waveformData=o.waveformData,o.duration>0&&(s.originalDuration=o.duration,s.endTime-s.startTime<=0&&(s.endTime=s.startTime+o.duration,s.trimEnd=o.duration),s.trimEnd>o.duration&&(s.trimEnd=o.duration)))}catch(r){console.error("Failed to load audio waveform:",r)}}async function ODs(e){for(const t of e.tracks)for(const n of t.clips)if(n.type==="audio"){const r=n;(!r.waveformData||r.waveformData.length===0)&&await Xqn(e,r.id,r.sourceUrl)}}const u2n={fade:"workbench.production.transition.fade",slide:"workbench.production.transition.slide",wipe:"workbench.production.transition.wipe",dissolve:"workbench.production.transition.dissolve",zoom:"workbench.production.transition.zoom",rotate:"workbench.production.transition.rotate"};function yDs(e,t){const n=e.find(r=>t>=r.startTime&&t<=r.endTime);if(n){const r=(n.startTime+n.endTime)/2,o=e.indexOf(n);if(t0){const s=e[o-1];if(Math.abs(s.endTime-n.startTime)<.1)return{beforeClip:s,afterClip:n}}}else if(o=t&&Math.abs(e[r].endTime-e[r+1].startTime)<.1)return{beforeClip:e[r],afterClip:e[r+1]};return null}function CDs(e,t,n,r,o="fade"){const s=e.getClip(n),a=e.getClip(r);if(!s||!a)return console.error("未找到clip"),null;const l=e.tracks.find(g=>g.id===s.trackId);if(!l)return null;if(l.clips.some(g=>g.type==="transition"&&g.startTimes.endTime))return window.$message.warning($t("workbench.production.editVideo.transitionExists")),null;const u=1,h={id:Yre("clip-"),trackId:s.trackId,type:"transition",startTime:Ar(s.endTime-u/2),endTime:Ar(a.startTime+u/2),selected:!1,transitionType:o,transitionDuration:Ar(u),name:u2n[o]?$t(u2n[o]):o};return e.addClip(s.trackId,h),t.pushSnapshot($t("workbench.production.editVideo.addTransition")),e.clearSelection(),{transitionClip:h,beforeClip:s,afterClip:a}}const _Ds={class:"editVideo"},SDs=Je({__name:"index",props:{initialTracks:{default:()=>[]},initialVideoItems:{},initialMediaItems:{default:()=>[]},initialAudioItems:{default:()=>[]},initialImageItems:{default:()=>[]},canvasWidth:{default:1920},canvasHeight:{default:1080}},setup(e){const t=e,n=X(()=>t.canvasWidth/t.canvasHeight),r=fe(),o=hs({width:0,height:0});let s=null;const a=X(()=>{const{width:T,height:D}=o;if(T<=0||D<=0)return{};const P=n.value;return T/D>P?{height:D+"px",width:Math.floor(D*P)+"px"}:{width:T+"px",height:Math.floor(T/P)+"px"}}),l=G0(),d=ML(),u=TE(),h=fe([{type:"custom",key:"reset"},{type:"custom",key:"undo"},{type:"custom",key:"redo"},{type:"custom",key:"split"},{type:"custom",key:"delete"},{type:"custom",key:"import"}]),g=fe(["snap"]),m=fe({video:{max:5},image:{max:3},audio:{max:3},subtitle:{max:2},text:{max:2},sticker:{max:2},filter:{max:1},effect:{max:2}}),v=fe({video:{backgroundColor:"linear-gradient(45deg, #667eea 0%, #764ba2 100%)",borderColor:"#000000",height:60,selected:{borderColor:"#ff6b6b",boxShadow:"0 0 0 3px rgba(255, 107, 107, 0.3)"}},audio:{backgroundColor:"linear-gradient(45deg, #f093fb 0%, #f5576c 100%)",height:36,selected:{borderColor:"#4ecdc4"}},image:{backgroundColor:"linear-gradient(45deg, #43e97b 0%, #38f9d7 100%)",borderColor:"#43e97b",height:60,selected:{borderColor:"#ff6b6b",boxShadow:"0 0 0 3px rgba(255, 107, 107, 0.3)"}}}),f=fe(),k=fe(),A=fe(!1);async function p(){if(k.value&&!A.value){A.value=!0;try{await k.value.exportVideo(),window.$message.success($t("workbench.production.editVideo.exportSuccess"))}catch(T){if(T.name==="AbortError")return;window.$message.error(T.message||$t("workbench.production.editVideo.exportFailed"))}finally{A.value=!1}}}function b(){const T=Array.from(l.selectedClipIds);if(T.length===0)return;const D=d.currentTime;T.forEach(P=>{const Q=l.getClip(P);!Q||D<=Q.startTime||D>=Q.endTime||l.splitClip(P,D)}),u.pushSnapshot($t("workbench.production.editVideo.splitClip"))}function w(){const T=Array.from(l.selectedClipIds);T.length!==0&&(l.removeClips(T),u.pushSnapshot($t("workbench.production.editVideo.deleteClip")))}async function O(T,D,P){try{if(T.type==="transition"){y(T,D,P);return}const Q=pDs(T.type,T),{track:M}=bDs(l,T.type,P,Q,D);if(!M)return;let B={id:Yre("clip-"),trackId:M.id,startTime:Ar(P),selected:!1};if(T.type==="video"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"video",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,thumbnails:T.thumbnails||[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name})),(!T.thumbnails||T.thumbnails.length===0)&&wDs(l,B.id,R);return}else if(T.type==="image"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"image",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,thumbnails:T.thumbnail?[T.thumbnail]:[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name}));return}else if(T.type==="audio"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"audio",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,volume:1,waveformData:T.waveformData||[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name})),(!T.waveformData||T.waveformData.length===0)&&Xqn(l,B.id,R);return}else T.type==="subtitle"?B={...B,type:"subtitle",name:T.name,endTime:Ar(P+Q),text:$t("workbench.production.editVideo.sampleSubtitle")}:T.type==="text"?B={...B,type:"text",name:T.name,endTime:Ar(P+Q),text:$t("workbench.production.editVideo.customText")}:T.type==="sticker"?B={...B,type:"sticker",name:T.name,endTime:Ar(P+Q),sourceUrl:T.id}:T.type==="filter"?B={...B,type:"filter",name:T.name,endTime:Ar(P+Q),filterType:T.filterType||T.id,filterValue:T.filterValue??1}:T.type==="effect"&&(B={...B,type:"effect",name:T.name,endTime:Ar(P+Q),effectType:T.effectType||T.id,effectDuration:Q});l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name}))}catch(Q){alert(Q.message)}}function y(T,D,P){const Q=l.tracks.find(R=>R.id===D);if(!Q)return;const M=Q.clips.filter(R=>R.type!=="transition").sort((R,I)=>R.startTime-I.startTime);if(M.length===0){window.$message.warning($t("workbench.production.editVideo.transitionBetweenClips"));return}const B=yDs(M,P);if(!B){window.$message.warning($t("workbench.production.editVideo.transitionBetweenClips"));return}_(B.beforeClip.id,B.afterClip.id,T.subType)}function C(T,D){_(T,D,"fade")}function _(T,D,P="fade"){const Q=CDs(l,u,T,D,P);Q&&f.value&&f.value.emitTransitionAdded(Q.transitionClip,Q.beforeClip.id,Q.afterClip.id)}function S(T,D,P){window.$message.success($t("workbench.production.editVideo.transitionAdded",{name:T.name})),d.seekTo(T.startTime)}function L(){l.reset(),t.initialTracks.length>0&&t.initialTracks.forEach(T=>{l.addTrack(T)}),d.setDuration(30),d.seekTo(0),u.initialize(),ODs(l)}An(()=>{L(),r.value&&(s=new ResizeObserver(T=>{const D=T[0];D&&(o.width=D.contentRect.width,o.height=D.contentRect.height)}),s.observe(r.value))});const E={primaryColor:"#000",backgroundColor:"#ecedef",textColor:"#ffffff",borderColor:"#ecedef"};return Qa(()=>{s==null||s.disconnect()}),(T,D)=>{const P=_n("i-refresh"),Q=Si,M=_n("i-undo"),B=_n("i-redo"),R=_n("i-cutting-one"),I=_n("i-delete"),F=_n("i-export");return xe(),Ge("div",_Ds,[c(Ae(wGe),{class:"default-theme content",horizontal:"","push-other-panes":!1},{default:Oe(()=>[c(Ae(PT),{size:"60"},{default:Oe(()=>[c(Ae(wGe),{"push-other-panes":!1},{default:Oe(()=>[c(Ae(PT),{size:"20","min-size":"10"},{default:Oe(()=>[c(nTs,{"initial-video-items":e.initialVideoItems,"initial-media-items":e.initialMediaItems,"initial-audio-items":e.initialAudioItems,"initial-image-items":e.initialImageItems},null,8,["initial-video-items","initial-media-items","initial-audio-items","initial-image-items"])]),_:1}),c(Ae(PT),{size:"60","min-size":"20"},{default:Oe(()=>[ge("div",{ref_key:"previewWrapperRef",ref:r,class:"previewWrapper"},[c(JTs,{ref_key:"videoPreviewRef",ref:k,"canvas-width":e.canvasWidth,"canvas-height":e.canvasHeight,style:no(Ae(a))},null,8,["canvas-width","canvas-height","style"])],512)]),_:1}),c(Ae(PT),{size:"20","min-size":"10"},{default:Oe(()=>[c(vDs)]),_:1})]),_:1})]),_:1}),c(Ae(PT),{size:"40",class:"pr"},{default:Oe(()=>[c(Ae(e7s),{theme:E,class:"videoTrack",ref_key:"videoTrackRef",ref:f,"operation-buttons":Ae(h),"scale-config-buttons":Ae(g),"track-types":Ae(m),"clip-configs":Ae(v),"enable-main-track-mode":!0,"enable-cross-track-drag":!0,"enable-snap":!0,"default-scale":1,onAddTransition:C,onDropMedia:O,onTransitionAdded:S},{"custom-operation-reset":Oe(()=>[c(Q,{variant:"text",size:"small",onClick:D[0]||(D[0]=j=>{var W;return(W=Ae(f))==null?void 0:W.reset()}),title:T.$t("workbench.production.editVideo.reset")},{icon:Oe(()=>[c(P,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.reset")),1)]),_:1},8,["title"])]),"custom-operation-undo":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:!Ae(u).canUndo,onClick:D[1]||(D[1]=j=>Ae(u).undo()),title:T.$t("workbench.production.editVideo.undo")},{icon:Oe(()=>[c(M,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.undo")),1)]),_:1},8,["disabled","title"])]),"custom-operation-redo":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:!Ae(u).canRedo,onClick:D[2]||(D[2]=j=>Ae(u).redo()),title:T.$t("workbench.production.editVideo.redo")},{icon:Oe(()=>[c(B,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.redo")),1)]),_:1},8,["disabled","title"])]),"custom-operation-split":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:Ae(l).selectedClipIds.size===0,onClick:b,title:T.$t("workbench.production.editVideo.split")},{icon:Oe(()=>[c(R,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.split")),1)]),_:1},8,["disabled","title"])]),"custom-operation-delete":Oe(()=>[c(Q,{variant:"text",size:"small",onClick:w,title:T.$t("workbench.production.editVideo.delete")},{icon:Oe(()=>[c(I,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.delete")),1)]),_:1},8,["title"])]),"scale-append":Oe(()=>[c(Q,{theme:"danger",onClick:p,loading:Ae(A),title:T.$t("workbench.production.editVideo.exportProject")},{icon:Oe(()=>[c(F,{size:"16",style:{"margin-right":"4px"}})]),default:Oe(()=>[Bt(" "+Pe(Ae(A)?T.$t("workbench.production.editVideo.rendering"):T.$t("workbench.production.editVideo.exportVideo")),1)]),_:1},8,["loading","title"])]),_:1},8,["operation-buttons","scale-config-buttons","track-types","clip-configs"])]),_:1})]),_:1})])}}}),LDs=oo(SDs,[["__scopeId","data-v-d1b2b252"]]),xDs={class:"closure"},EDs={class:"topMenu f ac"},TDs={class:"content"},QDs={key:0,class:"importLoadingMask"},DDs={class:"importLoadingContent"},BDs=Je({__name:"index",props:{visible:{type:Boolean,default:!1},visibleModifiers:{}},emits:["update:visible"],setup(e){const{project:t}=xs(ph()),n=Pf(e,"visible"),r=fe("preview"),o=fe(1920),s=fe(1080);An(()=>{var w;const b=(w=t.value)==null?void 0:w.videoRatio;b=="16:9"?(o.value=1920,s.value=1080):b=="1:1"?(o.value=1080,s.value=1080):b=="9:16"&&(o.value=1080,s.value=1920)});const a=fe([]),l=fe([]),d=fe([]),u=fe([]),h=fe(!1),g=fe(!1);An(()=>{f()});function m(b){var O;if(!b)return"unknown";const w=((O=b.split("?")[0].split(".").pop())==null?void 0:O.toLowerCase())??"";return["png","jpg","jpeg","gif","webp","bmp","svg"].includes(w)?"image":["mp4","webm","ogg","mov","avi","mkv"].includes(w)?"video":["mp3","wav","ogg","aac","flac","m4a"].includes(w)?"audio":"unknown"}function v(b){r.value=b,b=="editVideo"&&f()}function f(){var b;mn.post("/assets/getMaterialData",{projectId:(b=t.value)==null?void 0:b.id}).then(({data:w})=>{const O=w.data.filter(_=>m(_.filePath)==="video"),y=w.data.filter(_=>m(_.filePath)==="audio"),C=w.data.filter(_=>m(_.filePath)==="image");a.value=w.video.map(_=>({id:`video-${_.id}`,type:"video",name:$t("workbench.production.wb.storyboardVideoName",{storyboard:_.storyboard}),duration:_.duration||0,icon:"🎬",color:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",url:_.filePath,selected:_.selected||!1})),l.value=O.map(_=>({id:`video-${_.id}`,type:"video",name:_.name,duration:_.duration||0,icon:"🎥",color:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",url:_.filePath,loading:!0})),d.value=y.map(_=>({id:`audio-${_.id}`,type:"audio",name:_.name,duration:_.duration||0,url:_.filePath,loading:!0})),u.value=C.map(_=>({id:`image-${_.id}`,type:"image",name:_.name,duration:_.duration||5,icon:"🖼️",color:"linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)",url:_.filePath,loading:!0}))})}function k(){const b=(w,O,y,C=!1)=>({id:Yre("track-"),type:w,name:O,visible:!0,locked:!1,clips:[],order:y,...C&&{isMain:C}});return[b("video","主轨道",0,!0),b("audio","音频",2),b("subtitle","字幕",3),b("filter","滤镜",4)]}const A=k();function p(b){}return(b,w)=>{const O=_n("i-close-small"),y=_n("i-blackboard"),C=el,_=_n("i-playback-progress"),S=_n("i-editing"),L=Wc,E=gc;return xe(),Ut(E,{body:"String",header:!1,footer:!1,closeBtn:!1,visible:n.value,"onUpdate:visible":w[5]||(w[5]=T=>n.value=T),attach:"body",placement:"center",mode:"full-screen",dialogClassName:"noFooter",class:"fullscreenDialog"},{default:Oe(()=>[ge("div",xDs,[c(O,{theme:"outline",size:"24",fill:"#4a4a4a",onClick:w[0]||(w[0]=T=>n.value=!1)})]),ge("div",EDs,[c(C,{content:b.$t("workbench.production.wb.quickPreview"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="preview"}]),onClick:w[1]||(w[1]=T=>v("preview"))},[c(y,{class:"icon"})],2)]),_:1},8,["content"]),c(C,{content:b.$t("workbench.production.wb.videoGeneration"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="generate"}]),onClick:w[2]||(w[2]=T=>v("generate"))},[c(_,{class:"icon"})],2)]),_:1},8,["content"]),c(C,{content:b.$t("workbench.production.wb.videoEditing"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="editVideo"}]),onClick:w[3]||(w[3]=T=>v("editVideo"))},[c(S,{class:"icon"})],2)]),_:1},8,["content"])]),ge("div",TDs,[Ae(r)==="preview"?(xe(),Ut(Rxs,{key:0})):nn("",!0),Ae(r)==="generate"?(xe(),Ut(P5s,{key:1,onImportVideo:p,modelValue:Ae(h),"onUpdate:modelValue":w[4]||(w[4]=T=>Fn(h)?h.value=T:null)},null,8,["modelValue"])):nn("",!0),Ae(r)==="editVideo"?(xe(),Ut(LDs,{key:2,"initial-tracks":Ae(A),"initial-video-items":Ae(a),"initial-media-items":Ae(l),"initial-audio-items":Ae(d),"initial-image-items":Ae(u),"canvas-width":Ae(o),"canvas-height":Ae(s),ref:"editVideoRef"},null,8,["initial-tracks","initial-video-items","initial-media-items","initial-audio-items","initial-image-items","canvas-width","canvas-height"])):nn("",!0)]),Ae(g)?(xe(),Ge("div",QDs,[ge("div",DDs,[c(L,{size:"large",text:b.$t("workbench.production.wb.importingLoading")},null,8,["text"])])])):nn("",!0)]),_:1},8,["visible"])}}}),RDs=oo(BDs,[["__scopeId","data-v-54425e7f"]]),IDs={class:"titleBar dragHandle pr"},MDs={class:"title"},PDs={class:"videoPreview"},FDs={class:"playButton"},NDs=Je({__name:"workbench",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=fe(!1),n=e,r=Pf(e,"modelValue");return(o,s)=>{const a=Zh,l=_n("i-video"),d=km;return xe(),Ut(d,{class:"workbench",onClick:s[1]||(s[1]=u=>t.value=!Ae(t))},{default:Oe(()=>{var u,h;return[ge("div",IDs,[ge("div",MDs,Pe(o.$t("workbench.production.node.workbench.title")),1),c(Ae(mm),{id:n.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",PDs,[ge("div",{class:"videoPlaceholder",style:no({background:(u=r.value)==null?void 0:u.gradient})},[(h=r.value)!=null&&h.cover?(xe(),Ut(a,{key:0,src:r.value.cover,fit:"cover",class:"videoCover"},null,8,["src"])):nn("",!0),ge("div",FDs,[c(l,{theme:"outline",size:"48"})])],4)]),Ae(t)?(xe(),Ut(RDs,{key:0,visible:Ae(t),"onUpdate:visible":s[0]||(s[0]=g=>Fn(t)?t.value=g:null)},null,8,["visible"])):nn("",!0)]}),_:1})}}}),UDs=oo(NDs,[["__scopeId","data-v-fa984f98"]]);var nve={exports:{}};/** + `;Ye&&(We+=`background-color: ${Ye};`);try{const et=await S5r(me,We),st=new NSe(et);if(await st.ready,Z=new H$(st),he=et.width,pe=et.height,!te.rect||te.rect.w<=0||te.rect.h<=0){const Me=(b.value-he)/2,Se=w.value-pe-80;Z.rect.x=Me,Z.rect.y=Se,Z.rect.w=he,Z.rect.h=pe}Z.time.offset=z.startTime*1e6,Z.time.duration=(z.endTime-z.startTime)*1e6}catch{return null}}if(!Z)return null;if(te.rect&&te.rect.w>0&&te.rect.h>0)Z.rect.x=te.rect.x,Z.rect.y=te.rect.y,Z.rect.w=te.rect.w,Z.rect.h=te.rect.h,Z.rect.angle=te.rect.angle||0,te.rect.fixedAspectRatio!==void 0&&(Z.rect.fixedAspectRatio=te.rect.fixedAspectRatio),te.rect.fixedScaleCenter!==void 0&&(Z.rect.fixedScaleCenter=te.rect.fixedScaleCenter);else if(he>0&&pe>0&&z.type!=="subtitle"&&z.type!=="text"){const ke=q(he,pe);Z.rect.x=ke.x,Z.rect.y=ke.y,Z.rect.w=ke.w,Z.rect.h=ke.h}te.opacity!==void 0&&(Z.opacity=te.opacity),te.visible!==void 0&&(Z.visible=te.visible),te.flip&&(Z.flip=te.flip);const Qe=Y.type==="subtitle"||Y.type==="text";return te.zIndex!==void 0?Z.zIndex=Qe?te.zIndex+1e3:te.zIndex:Z.zIndex=I(Y.order,Qe),_.set(z.id,{trackId:Y.id,trackOrder:Y.order}),Z}catch{return null}}async function ue(){if(!u)return;if(A){p=!0;return}A=!0,W();const z=[];for(const te of a.tracks)if(te.visible!==!1)for(const Z of te.clips)["video","audio","image","sticker","subtitle","text"].includes(Z.type)&&z.push({clip:Z,track:te});const Y=new Set(z.map(te=>te.clip.id));for(const[te,Z]of O)if(!Y.has(te)){const he=y.get(te);he&&(he(),y.delete(te)),u.removeSprite(Z),O.delete(te),C.delete(te),_.delete(te)}for(const{clip:te,track:Z}of z){const he=te,pe=O.get(te.id);if(pe&&J(te)&&pe){const ke=y.get(te.id);ke&&(ke(),y.delete(te.id)),u.removeSprite(pe),O.delete(te.id),C.delete(te.id),_.delete(te.id)}const Qe=O.get(te.id);if(Qe){if(!f){k=!0,Qe.time.offset=te.startTime*1e6,Qe.time.duration=(te.endTime-te.startTime)*1e6,he.rect&&he.rect.w>0&&he.rect.h>0&&(Qe.rect.x=he.rect.x,Qe.rect.y=he.rect.y,Qe.rect.w=he.rect.w,Qe.rect.h=he.rect.h,Qe.rect.angle=he.rect.angle||0),he.opacity!==void 0&&(Qe.opacity=he.opacity),he.visible!==void 0&&(Qe.visible=he.visible),he.flip!==void 0&&(Qe.flip=he.flip);const ke=_.get(te.id);if(ke&&ke.trackOrder!==Z.order){const me=he.zIndex!==void 0?he.zIndex:I(Z.order);Qe.zIndex=me,_.set(te.id,{trackId:Z.id,trackOrder:Z.order})}else he.zIndex!==void 0&&(Qe.zIndex=he.zIndex);setTimeout(()=>{k=!1},0)}}else{const ke=await le(te,Z);ke&&(await u.addSprite(ke),O.set(te.id,ke),C.set(te.id,re(te)),se(te.id,ke))}}h.value=O.size>0,D();const ie=Q();ie>0&&(v.value=ie,T.duration=ie),A=!1,p&&(p=!1,await ue())}An(async()=>{if(d.value)try{u=new ATs(d.value,{bgColor:"#000000",width:b.value,height:w.value}),u.on("timeupdate",z=>{m.value=z,T.currentTime=z,f=!0,s.seekTo(z/1e6),setTimeout(()=>{f=!1},0)}),u.on("playing",()=>{g.value=!0,T.isPlaying=!0,f=!0,s.play(),o("play"),setTimeout(()=>{f=!1},0)}),u.on("paused",()=>{g.value=!1,T.isPlaying=!1,f=!0,s.pause(),o("pause"),setTimeout(()=>{f=!1},0)}),u.on("activeSpriteChange",z=>{if(z){for(const[Y,ie]of O)if(ie===z){oe(Y,z),a.selectClip(Y);break}}else a.clearSelection()}),T.initialized=!0,await ue(),O.size>0&&u.previewFrame(0)}catch{}}),pt(()=>a.tracks,async()=>{for(const z of $.values())z.close();$.clear(),await ue(),u&&O.size>0&&!g.value&&u.previewFrame(m.value)},{deep:!0}),pt(()=>s.currentTime,z=>{if(f)return;const Y=z*1e6;m.value=Y,u&&!g.value&&(k=!0,u.previewFrame(Y),setTimeout(()=>{k=!1},0))}),pt(()=>s.isPlaying,z=>{if(!f&&u)if(z&&!g.value){const Y=Q();if(Y<=0)return;m.value>=Y-1e3&&(m.value=0),k=!0,u.play({start:m.value,end:Y,playbackRate:l.value}),g.value=!0,setTimeout(()=>{k=!1},0)}else!z&&g.value&&(k=!0,u.pause(),g.value=!1,setTimeout(()=>{k=!1},0))}),pt(()=>s.duration,z=>{v.value=z*1e6,T.duration=z*1e6}),Qa(()=>{for(const z of y.values())z();y.clear(),O.clear(),C.clear(),_.clear(),S.clear(),L.clear();for(const z of $.values())z.close();$.clear(),E.clear(),u&&(u.destroy(),u=null)});function ee(z){const Y=z.target,ie=parseFloat(Y.value),te=ie*1e6;m.value=te,f=!0,s.seekTo(ie),setTimeout(()=>{f=!1},0),u&&u.previewFrame(te)}async function de(){if(!u)throw new Error($t("workbench.production.editVideo.avCanvasNotInit"));if(O.size===0)throw new Error($t("workbench.production.editVideo.noExportContent"));g.value&&(u.pause(),g.value=!1,s.pause());const z=await u.createCombinator(),Y=[],ie=z.output().getReader();for(;;){const{done:pe,value:Ce}=await ie.read();if(pe)break;Y.push(Ce)}const te=new Blob(Y,{type:"video/mp4"}),Z=URL.createObjectURL(te),he=document.createElement("a");he.href=Z,he.download=`WebAV-export-${Date.now()}.mp4`,he.click(),URL.revokeObjectURL(Z)}return t({avCanvas:X(()=>u),exportVideo:de,addSprite:async z=>{u&&(await u.addSprite(z),h.value=!0)},removeSprite:z=>{u&&u.removeSprite(z)}}),(z,Y)=>{const ie=_n("i-film"),te=_n("i-play");return xe(),Ge("div",VTs,[ge("div",{ref_key:"canvasContainer",ref:d,class:"previewScreen"},[Ae(h)?nn("",!0):(xe(),Ge("div",zTs,[ge("div",HTs,[c(ie,{theme:"outline",size:"48",fill:"#999"})]),ge("div",$Ts,Pe(z.$t("workbench.production.editVideo.videoPreviewArea")),1),ge("div",XTs,Pe(Ae(WTs)(Ae(M))),1)])),Ae(g)&&!Ae(h)?(xe(),Ge("div",GTs,[ge("div",YTs,[c(te,{theme:"outline",size:"36",fill:"#000000"})])])):nn("",!0)],512),ge("div",ZTs,[ge("input",{type:"range",min:"0",max:Ae(B),value:Ae(M),step:"0.01",class:"progressSlider",onInput:ee},null,40,qTs)])])}}}),JTs=oo(KTs,[["__scopeId","data-v-2b901aa2"]]),eQs={class:"propertyPanel"},tQs={class:"panelHeader"},nQs={class:"panelTitle"},iQs={class:"panelContent"},rQs={key:0,class:"emptyState"},oQs={class:"emptyIconWrapper"},sQs={class:"emptyText"},aQs={key:1,class:"properties"},lQs={class:"sectionCard"},cQs={class:"sectionHeader"},dQs={class:"sectionIconBadge"},uQs={class:"sectionLabel"},hQs={class:"sectionBody"},fQs={class:"propRow"},gQs={class:"propLabel"},mQs={class:"propRowInline"},kQs={class:"propField"},vQs={class:"propLabel"},AQs={class:"propField"},pQs={class:"propLabel"},bQs={class:"propRowInline durationRow"},wQs={class:"durationLabel"},OQs={key:0,class:"sectionCard"},yQs={class:"sectionHeader"},CQs={class:"sectionIconBadge"},_Qs={class:"sectionLabel"},SQs={class:"sectionBody"},LQs={class:"propRow"},xQs={class:"propRowHead"},EQs={class:"propLabel"},TQs={class:"propValueText"},QQs={class:"propRow"},DQs={class:"propRowHead"},BQs={class:"propLabel"},RQs={class:"propValueText"},IQs={class:"propRow"},MQs={class:"propLabel"},PQs={key:1,class:"sectionCard"},FQs={class:"sectionHeader"},NQs={class:"sectionIconBadge"},UQs={class:"sectionLabel"},jQs={class:"sectionBody"},WQs={class:"propRow"},VQs={class:"propRowHead"},zQs={class:"propLabel"},HQs={class:"propValueText"},$Qs={class:"propRowInline"},XQs={class:"propField"},GQs={class:"propLabel"},YQs={class:"propField"},ZQs={class:"propLabel"},qQs={key:2,class:"sectionCard"},KQs={class:"sectionHeader"},JQs={class:"sectionIconBadge"},eDs={class:"sectionLabel"},tDs={class:"sectionBody"},nDs={class:"propRow"},iDs={class:"propLabel"},rDs={class:"propRow"},oDs={class:"propLabel"},sDs={key:3,class:"sectionCard"},aDs={class:"sectionHeader"},lDs={class:"sectionIconBadge"},cDs={class:"sectionLabel"},dDs={class:"sectionBody"},uDs={class:"propRow"},hDs={class:"propLabel"},fDs={class:"propRow"},gDs={class:"propLabel"},mDs={class:"actions"},kDs=Je({__name:"propertyPanel",setup(e){const t=G0(),n=TE(),r=X(()=>{const O=t.selectedClips;return O.length===1?O[0]:null}),o=fe(""),s=fe(100),a=fe(100),l=fe(1),d=fe(100),u=fe(0),h=fe(0),g=fe("fade"),m=fe(1),v=fe(""),f=fe(24);pt(r,O=>{O&&(o.value=O.name||"",O.type==="video"&&(s.value=Math.round((O.opacity??1)*100),a.value=Math.round((O.volume??1)*100),l.value=O.playbackRate??1),O.type==="audio"&&(d.value=Math.round((O.volume??1)*100),u.value=O.fadeIn??0,h.value=O.fadeOut??0),O.type==="transition"&&(g.value=O.transitionType??"fade",m.value=O.transitionDuration??1),O.type==="subtitle"&&(v.value=O.text??"",f.value=O.fontSize??24))},{immediate:!0});function k(O,y){r.value&&(t.updateClip(r.value.id,{[O]:y}),n.pushSnapshot($t("workbench.production.editVideo.updateClip",{key:O})))}function A(O){if(!r.value)return;if(O<.1||O>10){console.warn($t("workbench.production.editVideo.playbackRateRange"));return}const y=t.setClipPlaybackRate(r.value.id,O,{allowShrink:!0,allowExpand:!0,handleCollision:!0,keepStartTime:!0});y.success?n.pushSnapshot($t("workbench.production.editVideo.updatePlaybackRate",{rate:O})):console.warn($t("workbench.production.editVideo.updatePlaybackRateFailed"),y.message)}function p(){if(!r.value||r.value.type!=="transition")return;const O=r.value;O.transitionDuration;const y=m.value,C=(O.startTime+O.endTime)/2;t.updateClip(O.id,{startTime:C-y/2,endTime:C+y/2,transitionDuration:y}),n.pushSnapshot($t("workbench.production.editVideo.updateTransitionDuration"))}function b(){if(!r.value)return;const O=co.confirm({header:$t("workbench.production.editVideo.deleteConfirm"),body:$t("workbench.production.editVideo.deleteClipConfirm"),onConfirm:()=>{t.removeClips([r.value.id]),n.pushSnapshot($t("workbench.production.editVideo.deleteClip")),O.destroy()},onClose:()=>O.destroy()})}function w(){if(!r.value)return;const O=r.value,y=t.tracks.find(_=>_.id===O.trackId);if(!y)return;const C={...O,id:`clip-${Date.now()}`,startTime:O.endTime,endTime:O.endTime+(O.endTime-O.startTime),selected:!1};t.addClip(y.id,C),n.pushSnapshot($t("workbench.production.editVideo.duplicateClip"))}return(O,y)=>{const C=_n("i-inbox"),_=Sg,S=Wu,L=Lz,E=_n("i-video"),T=MAi,D=_n("i-music"),P=_n("i-exchange"),Q=uL,M=pA,B=_n("i-editor"),R=c2,I=_n("i-copy"),F=Si,j=_n("i-delete");return xe(),Ge("div",eQs,[ge("div",tQs,[ge("h3",nQs,Pe(O.$t("workbench.production.editVideo.propertyPanel")),1)]),ge("div",iQs,[r.value?(xe(),Ge("div",aQs,[ge("div",lQs,[ge("div",cQs,[ge("div",dQs,[(xe(),Ut(Bd(Ae(UTs)(r.value)),{theme:"outline",size:"16"}))]),ge("span",uQs,Pe(O.$t("workbench.production.editVideo.basicInfo")),1),c(_,{size:"small",theme:"primary",variant:"light"},{default:Oe(()=>[Bt(Pe(Ae(jTs)(r.value.type)),1)]),_:1})]),ge("div",hQs,[ge("div",fQs,[ge("label",gQs,Pe(O.$t("workbench.production.editVideo.name")),1),c(S,{modelValue:o.value,"onUpdate:modelValue":y[0]||(y[0]=W=>o.value=W),size:"small",placeholder:O.$t("workbench.production.editVideo.clipNamePlaceholder"),onChange:y[1]||(y[1]=W=>k("name",o.value))},null,8,["modelValue","placeholder"])]),ge("div",mQs,[ge("div",kQs,[ge("label",vQs,Pe(O.$t("workbench.production.editVideo.startTime")),1),c(L,{value:Number(r.value.startTime.toFixed(2)),size:"small","decimal-places":2,step:.01,theme:"normal",suffix:"s",onChange:y[2]||(y[2]=W=>k("startTime",Number(W)))},null,8,["value"])]),ge("div",AQs,[ge("label",pQs,Pe(O.$t("workbench.production.editVideo.endTime")),1),c(L,{value:Number(r.value.endTime.toFixed(2)),size:"small","decimal-places":2,step:.01,theme:"normal",suffix:"s",onChange:y[3]||(y[3]=W=>k("endTime",Number(W)))},null,8,["value"])])]),ge("div",bQs,[ge("span",wQs,Pe(O.$t("workbench.production.editVideo.totalDuration")),1),c(_,{size:"small",theme:"default",variant:"outline"},{default:Oe(()=>[Bt(Pe((r.value.endTime-r.value.startTime).toFixed(2))+"s",1)]),_:1})])])]),r.value.type==="video"?(xe(),Ge("div",OQs,[ge("div",yQs,[ge("div",CQs,[c(E,{theme:"outline",size:"16"})]),ge("span",_Qs,Pe(O.$t("workbench.production.editVideo.videoProperties")),1)]),ge("div",SQs,[ge("div",LQs,[ge("div",xQs,[ge("label",EQs,Pe(O.$t("workbench.production.editVideo.opacity")),1),ge("span",TQs,Pe(Math.round(s.value))+"%",1)]),c(T,{modelValue:s.value,"onUpdate:modelValue":y[4]||(y[4]=W=>s.value=W),min:0,max:100,step:1,onChange:y[5]||(y[5]=W=>k("opacity",Math.round(s.value)/100))},null,8,["modelValue"])]),ge("div",QQs,[ge("div",DQs,[ge("label",BQs,Pe(O.$t("workbench.production.editVideo.volume")),1),ge("span",RQs,Pe(Math.round(a.value))+"%",1)]),c(T,{modelValue:a.value,"onUpdate:modelValue":y[6]||(y[6]=W=>a.value=W),min:0,max:200,step:1,onChange:y[7]||(y[7]=W=>k("volume",Math.round(a.value)/100))},null,8,["modelValue"])]),ge("div",IQs,[ge("label",MQs,Pe(O.$t("workbench.production.editVideo.playbackSpeed")),1),c(L,{modelValue:l.value,"onUpdate:modelValue":y[8]||(y[8]=W=>l.value=W),size:"small",min:.1,max:10,step:.1,"decimal-places":1,theme:"normal",suffix:"x",onChange:y[9]||(y[9]=W=>A(Number(W)))},null,8,["modelValue"])])])])):nn("",!0),r.value.type==="audio"?(xe(),Ge("div",PQs,[ge("div",FQs,[ge("div",NQs,[c(D,{theme:"outline",size:"16"})]),ge("span",UQs,Pe(O.$t("workbench.production.editVideo.audioProperties")),1)]),ge("div",jQs,[ge("div",WQs,[ge("div",VQs,[ge("label",zQs,Pe(O.$t("workbench.production.editVideo.volume")),1),ge("span",HQs,Pe(Math.round(d.value))+"%",1)]),c(T,{modelValue:d.value,"onUpdate:modelValue":y[10]||(y[10]=W=>d.value=W),min:0,max:200,step:1,onChange:y[11]||(y[11]=W=>k("volume",Math.round(d.value)/100))},null,8,["modelValue"])]),ge("div",$Qs,[ge("div",XQs,[ge("label",GQs,Pe(O.$t("workbench.production.editVideo.fadeIn")),1),c(L,{modelValue:u.value,"onUpdate:modelValue":y[12]||(y[12]=W=>u.value=W),size:"small",min:0,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:y[13]||(y[13]=W=>k("fadeIn",u.value))},null,8,["modelValue"])]),ge("div",YQs,[ge("label",ZQs,Pe(O.$t("workbench.production.editVideo.fadeOut")),1),c(L,{modelValue:h.value,"onUpdate:modelValue":y[14]||(y[14]=W=>h.value=W),size:"small",min:0,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:y[15]||(y[15]=W=>k("fadeOut",h.value))},null,8,["modelValue"])])])])])):nn("",!0),r.value.type==="transition"?(xe(),Ge("div",qQs,[ge("div",KQs,[ge("div",JQs,[c(P,{theme:"outline",size:"16"})]),ge("span",eDs,Pe(O.$t("workbench.production.editVideo.transitionProperties")),1)]),ge("div",tDs,[ge("div",nDs,[ge("label",iDs,Pe(O.$t("workbench.production.editVideo.transitionType")),1),c(M,{modelValue:g.value,"onUpdate:modelValue":y[16]||(y[16]=W=>g.value=W),size:"small",onChange:y[17]||(y[17]=W=>k("transitionType",g.value))},{default:Oe(()=>[c(Q,{value:"fade",label:O.$t("workbench.production.editVideo.transFade")},null,8,["label"]),c(Q,{value:"slide",label:O.$t("workbench.production.editVideo.transSlide")},null,8,["label"]),c(Q,{value:"wipe",label:O.$t("workbench.production.editVideo.transWipe")},null,8,["label"]),c(Q,{value:"dissolve",label:O.$t("workbench.production.editVideo.transDissolve")},null,8,["label"]),c(Q,{value:"zoom",label:O.$t("workbench.production.editVideo.transZoom")},null,8,["label"]),c(Q,{value:"rotate",label:O.$t("workbench.production.editVideo.transRotate")},null,8,["label"])]),_:1},8,["modelValue"])]),ge("div",rDs,[ge("label",oDs,Pe(O.$t("workbench.production.editVideo.transitionDuration")),1),c(L,{modelValue:m.value,"onUpdate:modelValue":y[18]||(y[18]=W=>m.value=W),size:"small",min:.1,max:5,step:.1,"decimal-places":1,theme:"normal",suffix:"s",onChange:p},null,8,["modelValue"])])])])):nn("",!0),r.value.type==="subtitle"?(xe(),Ge("div",sDs,[ge("div",aDs,[ge("div",lDs,[c(B,{theme:"outline",size:"16"})]),ge("span",cDs,Pe(O.$t("workbench.production.editVideo.subtitleProperties")),1)]),ge("div",dDs,[ge("div",uDs,[ge("label",hDs,Pe(O.$t("workbench.production.editVideo.textContent")),1),c(R,{modelValue:v.value,"onUpdate:modelValue":y[19]||(y[19]=W=>v.value=W),autosize:{minRows:3,maxRows:6},onChange:y[20]||(y[20]=W=>k("text",v.value))},null,8,["modelValue"])]),ge("div",fDs,[ge("label",gDs,Pe(O.$t("workbench.production.editVideo.fontSize")),1),c(L,{modelValue:f.value,"onUpdate:modelValue":y[21]||(y[21]=W=>f.value=W),size:"small",min:12,max:72,theme:"normal",suffix:"px",onChange:y[22]||(y[22]=W=>k("fontSize",f.value))},null,8,["modelValue"])])])])):nn("",!0),ge("div",mDs,[c(F,{theme:"default",variant:"outline",block:"",onClick:w},{icon:Oe(()=>[c(I,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(O.$t("workbench.production.editVideo.copy")),1)]),_:1}),c(F,{theme:"danger",variant:"text",block:"",onClick:b},{icon:Oe(()=>[c(j,{theme:"outline",size:"16"})]),default:Oe(()=>[Bt(" "+Pe(O.$t("workbench.production.editVideo.delete")),1)]),_:1})])])):(xe(),Ge("div",rQs,[ge("div",oQs,[c(C,{theme:"outline",size:"32",fill:"#999"})]),ge("div",sQs,Pe(O.$t("workbench.production.editVideo.selectClip")),1)]))])])}}}),vDs=oo(kDs,[["__scopeId","data-v-5eea45cc"]]),c2n={video:"workbench.production.track.video",image:"workbench.production.track.image",audio:"workbench.production.track.audio",subtitle:"workbench.production.track.subtitle",text:"workbench.production.track.text",sticker:"workbench.production.track.sticker",filter:"workbench.production.track.filter",effect:"workbench.production.track.effect"},ADs={video:5,image:5,audio:30,subtitle:3,text:3,sticker:3,filter:3,effect:3,transition:3};function pDs(e,t){return t.duration&&t.duration>0?t.duration:ADs[e]||3}function d2n(e,t,n){const r=t+n;for(const o of e.clips)if(o.type!=="transition"&&to.startTime)return!1;return!0}function bDs(e,t,n,r,o){if(o){const d=e.tracks.find(u=>u.id===o);if(d&&d.type===t&&d2n(d,n,r))return{track:d,isNew:!1}}const s=e.sortedTracks.filter(d=>d.type===t&&!d.isMain);for(const d of s)if(d2n(d,n,r))return{track:d,isNew:!1};const a=e.getTrackCountByType(t),l={id:Yre("track-"),type:t,name:`${c2n[t]?$t(c2n[t]):t}${a+1}`,visible:!0,locked:!1,clips:[],order:e.tracks.length};return e.addTrack(l),{track:l,isNew:!0}}async function wDs(e,t,n){try{const r=await tve(n,{count:20,width:120}),o=e.getClip(t);o&&o.type==="video"&&(o.thumbnails=r.thumbnails,r.duration>0&&o.endTime-o.startTime<=0&&(o.endTime=o.startTime+r.duration,o.originalDuration=r.duration,o.trimEnd=r.duration))}catch(r){console.error("Failed to load video thumbnails:",r)}}async function Xqn(e,t,n){try{const o=n.match(/\.(mp4|webm|mov|avi)$/i)?await Wqn(n,{samples:500}):await aat(n,{samples:500}),s=e.getClip(t);s&&s.type==="audio"&&(s.waveformData=o.waveformData,o.duration>0&&(s.originalDuration=o.duration,s.endTime-s.startTime<=0&&(s.endTime=s.startTime+o.duration,s.trimEnd=o.duration),s.trimEnd>o.duration&&(s.trimEnd=o.duration)))}catch(r){console.error("Failed to load audio waveform:",r)}}async function ODs(e){for(const t of e.tracks)for(const n of t.clips)if(n.type==="audio"){const r=n;(!r.waveformData||r.waveformData.length===0)&&await Xqn(e,r.id,r.sourceUrl)}}const u2n={fade:"workbench.production.transition.fade",slide:"workbench.production.transition.slide",wipe:"workbench.production.transition.wipe",dissolve:"workbench.production.transition.dissolve",zoom:"workbench.production.transition.zoom",rotate:"workbench.production.transition.rotate"};function yDs(e,t){const n=e.find(r=>t>=r.startTime&&t<=r.endTime);if(n){const r=(n.startTime+n.endTime)/2,o=e.indexOf(n);if(t0){const s=e[o-1];if(Math.abs(s.endTime-n.startTime)<.1)return{beforeClip:s,afterClip:n}}}else if(o=t&&Math.abs(e[r].endTime-e[r+1].startTime)<.1)return{beforeClip:e[r],afterClip:e[r+1]};return null}function CDs(e,t,n,r,o="fade"){const s=e.getClip(n),a=e.getClip(r);if(!s||!a)return console.error("未找到clip"),null;const l=e.tracks.find(g=>g.id===s.trackId);if(!l)return null;if(l.clips.some(g=>g.type==="transition"&&g.startTimes.endTime))return window.$message.warning($t("workbench.production.editVideo.transitionExists")),null;const u=1,h={id:Yre("clip-"),trackId:s.trackId,type:"transition",startTime:Ar(s.endTime-u/2),endTime:Ar(a.startTime+u/2),selected:!1,transitionType:o,transitionDuration:Ar(u),name:u2n[o]?$t(u2n[o]):o};return e.addClip(s.trackId,h),t.pushSnapshot($t("workbench.production.editVideo.addTransition")),e.clearSelection(),{transitionClip:h,beforeClip:s,afterClip:a}}const _Ds={class:"editVideo"},SDs=Je({__name:"index",props:{initialTracks:{default:()=>[]},initialVideoItems:{},initialMediaItems:{default:()=>[]},initialAudioItems:{default:()=>[]},initialImageItems:{default:()=>[]},canvasWidth:{default:1920},canvasHeight:{default:1080}},setup(e){const t=e,n=X(()=>t.canvasWidth/t.canvasHeight),r=fe(),o=hs({width:0,height:0});let s=null;const a=X(()=>{const{width:T,height:D}=o;if(T<=0||D<=0)return{};const P=n.value;return T/D>P?{height:D+"px",width:Math.floor(D*P)+"px"}:{width:T+"px",height:Math.floor(T/P)+"px"}}),l=G0(),d=ML(),u=TE(),h=fe([{type:"custom",key:"reset"},{type:"custom",key:"undo"},{type:"custom",key:"redo"},{type:"custom",key:"split"},{type:"custom",key:"delete"},{type:"custom",key:"import"}]),g=fe(["snap"]),m=fe({video:{max:5},image:{max:3},audio:{max:3},subtitle:{max:2},text:{max:2},sticker:{max:2},filter:{max:1},effect:{max:2}}),v=fe({video:{backgroundColor:"linear-gradient(45deg, #667eea 0%, #764ba2 100%)",borderColor:"#000000",height:60,selected:{borderColor:"#ff6b6b",boxShadow:"0 0 0 3px rgba(255, 107, 107, 0.3)"}},audio:{backgroundColor:"linear-gradient(45deg, #f093fb 0%, #f5576c 100%)",height:36,selected:{borderColor:"#4ecdc4"}},image:{backgroundColor:"linear-gradient(45deg, #43e97b 0%, #38f9d7 100%)",borderColor:"#43e97b",height:60,selected:{borderColor:"#ff6b6b",boxShadow:"0 0 0 3px rgba(255, 107, 107, 0.3)"}}}),f=fe(),k=fe(),A=fe(!1);async function p(){if(k.value&&!A.value){A.value=!0;try{await k.value.exportVideo(),window.$message.success($t("workbench.production.editVideo.exportSuccess"))}catch(T){if(T.name==="AbortError")return;window.$message.error(T.message||$t("workbench.production.editVideo.exportFailed"))}finally{A.value=!1}}}function b(){const T=Array.from(l.selectedClipIds);if(T.length===0)return;const D=d.currentTime;T.forEach(P=>{const Q=l.getClip(P);!Q||D<=Q.startTime||D>=Q.endTime||l.splitClip(P,D)}),u.pushSnapshot($t("workbench.production.editVideo.splitClip"))}function w(){const T=Array.from(l.selectedClipIds);T.length!==0&&(l.removeClips(T),u.pushSnapshot($t("workbench.production.editVideo.deleteClip")))}async function O(T,D,P){try{if(T.type==="transition"){y(T,D,P);return}const Q=pDs(T.type,T),{track:M}=bDs(l,T.type,P,Q,D);if(!M)return;let B={id:Yre("clip-"),trackId:M.id,startTime:Ar(P),selected:!1};if(T.type==="video"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"video",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,thumbnails:T.thumbnails||[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name})),(!T.thumbnails||T.thumbnails.length===0)&&wDs(l,B.id,R);return}else if(T.type==="image"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"image",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,thumbnails:T.thumbnail?[T.thumbnail]:[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name}));return}else if(T.type==="audio"){const R=T.sourceUrl||T.url||T.id;B={...B,type:"audio",name:T.name,endTime:Ar(P+Q),sourceUrl:R,originalDuration:Q,trimStart:0,trimEnd:Q,playbackRate:1,volume:1,waveformData:T.waveformData||[]},l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name})),(!T.waveformData||T.waveformData.length===0)&&Xqn(l,B.id,R);return}else T.type==="subtitle"?B={...B,type:"subtitle",name:T.name,endTime:Ar(P+Q),text:$t("workbench.production.editVideo.sampleSubtitle")}:T.type==="text"?B={...B,type:"text",name:T.name,endTime:Ar(P+Q),text:$t("workbench.production.editVideo.customText")}:T.type==="sticker"?B={...B,type:"sticker",name:T.name,endTime:Ar(P+Q),sourceUrl:T.id}:T.type==="filter"?B={...B,type:"filter",name:T.name,endTime:Ar(P+Q),filterType:T.filterType||T.id,filterValue:T.filterValue??1}:T.type==="effect"&&(B={...B,type:"effect",name:T.name,endTime:Ar(P+Q),effectType:T.effectType||T.id,effectDuration:Q});l.addClip(M.id,B),u.pushSnapshot($t("workbench.production.editVideo.addClip",{name:T.name}))}catch(Q){alert(Q.message)}}function y(T,D,P){const Q=l.tracks.find(R=>R.id===D);if(!Q)return;const M=Q.clips.filter(R=>R.type!=="transition").sort((R,I)=>R.startTime-I.startTime);if(M.length===0){window.$message.warning($t("workbench.production.editVideo.transitionBetweenClips"));return}const B=yDs(M,P);if(!B){window.$message.warning($t("workbench.production.editVideo.transitionBetweenClips"));return}_(B.beforeClip.id,B.afterClip.id,T.subType)}function C(T,D){_(T,D,"fade")}function _(T,D,P="fade"){const Q=CDs(l,u,T,D,P);Q&&f.value&&f.value.emitTransitionAdded(Q.transitionClip,Q.beforeClip.id,Q.afterClip.id)}function S(T,D,P){window.$message.success($t("workbench.production.editVideo.transitionAdded",{name:T.name})),d.seekTo(T.startTime)}function L(){l.reset(),t.initialTracks.length>0&&t.initialTracks.forEach(T=>{l.addTrack(T)}),d.setDuration(30),d.seekTo(0),u.initialize(),ODs(l)}An(()=>{L(),r.value&&(s=new ResizeObserver(T=>{const D=T[0];D&&(o.width=D.contentRect.width,o.height=D.contentRect.height)}),s.observe(r.value))});const E={primaryColor:"#000",backgroundColor:"#ecedef",textColor:"#ffffff",borderColor:"#ecedef"};return Qa(()=>{s==null||s.disconnect()}),(T,D)=>{const P=_n("i-refresh"),Q=Si,M=_n("i-undo"),B=_n("i-redo"),R=_n("i-cutting-one"),I=_n("i-delete"),F=_n("i-export");return xe(),Ge("div",_Ds,[c(Ae(wGe),{class:"default-theme content",horizontal:"","push-other-panes":!1},{default:Oe(()=>[c(Ae(PT),{size:"60"},{default:Oe(()=>[c(Ae(wGe),{"push-other-panes":!1},{default:Oe(()=>[c(Ae(PT),{size:"20","min-size":"10"},{default:Oe(()=>[c(nTs,{"initial-video-items":e.initialVideoItems,"initial-media-items":e.initialMediaItems,"initial-audio-items":e.initialAudioItems,"initial-image-items":e.initialImageItems},null,8,["initial-video-items","initial-media-items","initial-audio-items","initial-image-items"])]),_:1}),c(Ae(PT),{size:"60","min-size":"20"},{default:Oe(()=>[ge("div",{ref_key:"previewWrapperRef",ref:r,class:"previewWrapper"},[c(JTs,{ref_key:"videoPreviewRef",ref:k,"canvas-width":e.canvasWidth,"canvas-height":e.canvasHeight,style:no(Ae(a))},null,8,["canvas-width","canvas-height","style"])],512)]),_:1}),c(Ae(PT),{size:"20","min-size":"10"},{default:Oe(()=>[c(vDs)]),_:1})]),_:1})]),_:1}),c(Ae(PT),{size:"40",class:"pr"},{default:Oe(()=>[c(Ae(e7s),{theme:E,class:"videoTrack",ref_key:"videoTrackRef",ref:f,"operation-buttons":Ae(h),"scale-config-buttons":Ae(g),"track-types":Ae(m),"clip-configs":Ae(v),"enable-main-track-mode":!0,"enable-cross-track-drag":!0,"enable-snap":!0,"default-scale":1,onAddTransition:C,onDropMedia:O,onTransitionAdded:S},{"custom-operation-reset":Oe(()=>[c(Q,{variant:"text",size:"small",onClick:D[0]||(D[0]=j=>{var W;return(W=Ae(f))==null?void 0:W.reset()}),title:T.$t("workbench.production.editVideo.reset")},{icon:Oe(()=>[c(P,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.reset")),1)]),_:1},8,["title"])]),"custom-operation-undo":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:!Ae(u).canUndo,onClick:D[1]||(D[1]=j=>Ae(u).undo()),title:T.$t("workbench.production.editVideo.undo")},{icon:Oe(()=>[c(M,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.undo")),1)]),_:1},8,["disabled","title"])]),"custom-operation-redo":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:!Ae(u).canRedo,onClick:D[2]||(D[2]=j=>Ae(u).redo()),title:T.$t("workbench.production.editVideo.redo")},{icon:Oe(()=>[c(B,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.redo")),1)]),_:1},8,["disabled","title"])]),"custom-operation-split":Oe(()=>[c(Q,{variant:"text",size:"small",disabled:Ae(l).selectedClipIds.size===0,onClick:b,title:T.$t("workbench.production.editVideo.split")},{icon:Oe(()=>[c(R,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.split")),1)]),_:1},8,["disabled","title"])]),"custom-operation-delete":Oe(()=>[c(Q,{variant:"text",size:"small",onClick:w,title:T.$t("workbench.production.editVideo.delete")},{icon:Oe(()=>[c(I,{size:"16"})]),default:Oe(()=>[Bt(" "+Pe(T.$t("workbench.production.editVideo.delete")),1)]),_:1},8,["title"])]),"scale-append":Oe(()=>[c(Q,{theme:"danger",onClick:p,loading:Ae(A),title:T.$t("workbench.production.editVideo.exportProject")},{icon:Oe(()=>[c(F,{size:"16",style:{"margin-right":"4px"}})]),default:Oe(()=>[Bt(" "+Pe(Ae(A)?T.$t("workbench.production.editVideo.rendering"):T.$t("workbench.production.editVideo.exportVideo")),1)]),_:1},8,["loading","title"])]),_:1},8,["operation-buttons","scale-config-buttons","track-types","clip-configs"])]),_:1})]),_:1})])}}}),LDs=oo(SDs,[["__scopeId","data-v-d1b2b252"]]),xDs={class:"closure"},EDs={class:"topMenu f ac"},TDs={class:"content"},QDs={key:0,class:"importLoadingMask"},DDs={class:"importLoadingContent"},BDs=Je({__name:"index",props:{visible:{type:Boolean,default:!1},visibleModifiers:{}},emits:["update:visible"],setup(e){const{project:t}=xs(ph()),n=Pf(e,"visible"),r=fe("preview"),o=fe(1920),s=fe(1080);An(()=>{var w;const b=(w=t.value)==null?void 0:w.videoRatio;b=="16:9"?(o.value=1920,s.value=1080):b=="1:1"?(o.value=1080,s.value=1080):b=="9:16"&&(o.value=1080,s.value=1920)});const a=fe([]),l=fe([]),d=fe([]),u=fe([]),h=fe(!1),g=fe(!1);An(()=>{f()});function m(b){var O;if(!b)return"unknown";const w=((O=b.split("?")[0].split(".").pop())==null?void 0:O.toLowerCase())??"";return["png","jpg","jpeg","gif","webp","bmp","svg"].includes(w)?"image":["mp4","webm","ogg","mov","avi","mkv"].includes(w)?"video":["mp3","wav","ogg","aac","flac","m4a"].includes(w)?"audio":"unknown"}function v(b){r.value=b,b=="editVideo"&&f()}function f(){var b;mn.post("/assets/getMaterialData",{projectId:(b=t.value)==null?void 0:b.id}).then(({data:w})=>{const O=w.data.filter(_=>m(_.filePath)==="video"),y=w.data.filter(_=>m(_.filePath)==="audio"),C=w.data.filter(_=>m(_.filePath)==="image");a.value=w.video.map(_=>({id:`video-${_.id}`,type:"video",name:$t("workbench.production.wb.storyboardVideoName",{storyboard:_.storyboard}),duration:_.duration||0,icon:"🎬",color:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",url:_.filePath,selected:_.selected||!1})),l.value=O.map(_=>({id:`video-${_.id}`,type:"video",name:_.name,duration:_.duration||0,icon:"🎥",color:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",url:_.filePath,loading:!0})),d.value=y.map(_=>({id:`audio-${_.id}`,type:"audio",name:_.name,duration:_.duration||0,url:_.filePath,loading:!0})),u.value=C.map(_=>({id:`image-${_.id}`,type:"image",name:_.name,duration:_.duration||5,icon:"🖼️",color:"linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)",url:_.filePath,loading:!0}))})}function k(){const b=(w,O,y,C=!1)=>({id:Yre("track-"),type:w,name:O,visible:!0,locked:!1,clips:[],order:y,...C&&{isMain:C}});return[b("video","主轨道",0,!0),b("audio","音频",2),b("subtitle","字幕",3),b("filter","滤镜",4)]}const A=k();function p(b){}return(b,w)=>{const O=_n("i-close-small"),y=_n("i-blackboard"),C=el,_=_n("i-playback-progress"),S=_n("i-editing"),L=Wc,E=gc;return xe(),Ut(E,{body:"String",header:!1,footer:!1,closeBtn:!1,visible:n.value,"onUpdate:visible":w[5]||(w[5]=T=>n.value=T),attach:"body",placement:"center",mode:"full-screen",dialogClassName:"noFooter",class:"fullscreenDialog"},{default:Oe(()=>[ge("div",xDs,[c(O,{theme:"outline",size:"24",fill:"#4a4a4a",onClick:w[0]||(w[0]=T=>n.value=!1)})]),ge("div",EDs,[c(C,{content:b.$t("workbench.production.wb.quickPreview"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="preview"}]),onClick:w[1]||(w[1]=T=>v("preview"))},[c(y,{class:"icon"})],2)]),_:1},8,["content"]),c(C,{content:b.$t("workbench.production.wb.videoGeneration"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="generate"}]),onClick:w[2]||(w[2]=T=>v("generate"))},[c(_,{class:"icon"})],2)]),_:1},8,["content"]),c(C,{content:b.$t("workbench.production.wb.videoEditing"),placement:"bottom",theme:"light",destroyOnClose:"",showArrow:!1},{default:Oe(()=>[ge("div",{class:Eo(["item fc c",{active:Ae(r)==="editVideo"}]),onClick:w[3]||(w[3]=T=>v("editVideo"))},[c(S,{class:"icon"})],2)]),_:1},8,["content"])]),ge("div",TDs,[Ae(r)==="preview"?(xe(),Ut(Rxs,{key:0})):nn("",!0),Ae(r)==="generate"?(xe(),Ut(P5s,{key:1,onImportVideo:p,modelValue:Ae(h),"onUpdate:modelValue":w[4]||(w[4]=T=>Fn(h)?h.value=T:null)},null,8,["modelValue"])):nn("",!0),Ae(r)==="editVideo"?(xe(),Ut(LDs,{key:2,"initial-tracks":Ae(A),"initial-video-items":Ae(a),"initial-media-items":Ae(l),"initial-audio-items":Ae(d),"initial-image-items":Ae(u),"canvas-width":Ae(o),"canvas-height":Ae(s),ref:"editVideoRef"},null,8,["initial-tracks","initial-video-items","initial-media-items","initial-audio-items","initial-image-items","canvas-width","canvas-height"])):nn("",!0)]),Ae(g)?(xe(),Ge("div",QDs,[ge("div",DDs,[c(L,{size:"large",text:b.$t("workbench.production.wb.importingLoading")},null,8,["text"])])])):nn("",!0)]),_:1},8,["visible"])}}}),RDs=oo(BDs,[["__scopeId","data-v-54425e7f"]]),IDs={class:"titleBar dragHandle pr"},MDs={class:"title"},PDs={class:"videoPreview"},FDs={class:"playButton"},NDs=Je({__name:"workbench",props:Fc({id:{},handleIds:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=fe(!1),n=e,r=Pf(e,"modelValue");return(o,s)=>{const a=Zh,l=_n("i-video"),d=km;return xe(),Ut(d,{class:"workbench",onClick:s[1]||(s[1]=u=>t.value=!Ae(t))},{default:Oe(()=>{var u,h;return[ge("div",IDs,[ge("div",MDs,Pe(o.$t("workbench.production.node.workbench.title")),1),c(Ae(mm),{id:n.handleIds.target,type:"target",position:Ae(Vi).Left,style:{left:"calc(-1 * var(--td-comp-paddingLR-xl))"}},null,8,["id","position"])]),ge("div",PDs,[ge("div",{class:"videoPlaceholder",style:no({background:(u=r.value)==null?void 0:u.gradient})},[(h=r.value)!=null&&h.cover?(xe(),Ut(a,{key:0,src:r.value.cover,fit:"cover",class:"videoCover"},null,8,["src"])):nn("",!0),ge("div",FDs,[c(l,{theme:"outline",size:"48"})])],4)]),Ae(t)?(xe(),Ut(RDs,{key:0,visible:Ae(t),"onUpdate:visible":s[0]||(s[0]=g=>Fn(t)?t.value=g:null)},null,8,["visible"])):nn("",!0)]}),_:1})}}}),UDs=oo(NDs,[["__scopeId","data-v-fa984f98"]]);var nve={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */nve.exports;(function(e,t){(function(){var n,r="4.17.23",o=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",l="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",u=500,h="__lodash_placeholder__",g=1,m=2,v=4,f=1,k=2,A=1,p=2,b=4,w=8,O=16,y=32,C=64,_=128,S=256,L=512,E=30,T="...",D=800,P=16,Q=1,M=2,B=3,R=1/0,I=9007199254740991,F=17976931348623157e292,j=NaN,W=4294967295,H=W-1,$=W>>>1,G=[["ary",_],["bind",A],["bindKey",p],["curry",w],["curryRight",O],["flip",L],["partial",y],["partialRight",C],["rearg",S]],q="[object Arguments]",re="[object Array]",J="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",le="[object DOMException]",ue="[object Error]",ee="[object Function]",de="[object GeneratorFunction]",z="[object Map]",Y="[object Number]",ie="[object Null]",te="[object Object]",Z="[object Promise]",he="[object Proxy]",pe="[object RegExp]",Ce="[object Set]",Qe="[object String]",ke="[object Symbol]",me="[object Undefined]",_e="[object WeakMap]",Te="[object WeakSet]",De="[object ArrayBuffer]",Ye="[object DataView]",ot="[object Float32Array]",We="[object Float64Array]",et="[object Int8Array]",st="[object Int16Array]",Me="[object Int32Array]",Se="[object Uint8Array]",Ie="[object Uint8ClampedArray]",ze="[object Uint16Array]",Ze="[object Uint32Array]",gt=/\b__p \+= '';/g,St=/\b(__p \+=) '' \+/g,Pt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,dn=/&(?:amp|lt|gt|quot|#39);/g,on=/[&<>"']/g,pn=RegExp(dn.source),ni=RegExp(on.source),Zn=/<%-([\s\S]+?)%>/g,Pi=/<%([\s\S]+?)%>/g,rr=/<%=([\s\S]+?)%>/g,Hr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bo=/^\w*$/,lo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fr=/[\\^$.*+?()[\]{}|]/g,is=RegExp(Fr.source),yi=/^\s+/,Gt=/\s/,gi=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ri=/\{\n\/\* \[wrapped with (.+)\] \*/,tr=/,? & /,ht=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/[()=,{}\[\]\/\s]/,Mt=/\\(\\)?/g,Kt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,qn=/\w*$/,Zt=/^[-+]0x[0-9a-f]+$/i,so=/^0b[01]+$/i,Un=/^\[object .+?Constructor\]$/,dt=/^0o[0-7]+$/i,Ne=/^(?:0|[1-9]\d*)$/,nt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,bn=/($^)/,hn=/['\n\r\u2028\u2029\\]/g,En="\\ud800-\\udfff",wi="\\u0300-\\u036f",Ue="\\ufe20-\\ufe2f",ut="\\u20d0-\\u20ff",Nt=wi+Ue+ut,wn="\\u2700-\\u27bf",Cn="a-z\\xdf-\\xf6\\xf8-\\xff",wr="\\xac\\xb1\\xd7\\xf7",Kr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Wo="\\u2000-\\u206f",pl=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pu="A-Z\\xc0-\\xd6\\xd8-\\xde",bu="\\ufe0e\\ufe0f",T1=wr+Kr+Wo+pl,xm="['’]",Gd="["+En+"]",Em="["+T1+"]",$3="["+Nt+"]",FL="\\d+",NL="["+wn+"]",TA="["+Cn+"]",fC="[^"+En+T1+FL+wn+Cn+pu+"]",UL="\\ud83c[\\udffb-\\udfff]",tk="(?:"+$3+"|"+UL+")",jf="[^"+En+"]",gC="(?:\\ud83c[\\udde6-\\uddff]){2}",mC="[\\ud800-\\udbff][\\udc00-\\udfff]",Q1="["+pu+"]",kC="\\u200d",Dp="(?:"+TA+"|"+fC+")",Wf="(?:"+Q1+"|"+fC+")",X3="(?:"+xm+"(?:d|ll|m|re|s|t|ve))?",QA="(?:"+xm+"(?:D|LL|M|RE|S|T|VE))?",vC=tk+"?",AC="["+bu+"]?",G3="(?:"+kC+"(?:"+[jf,gC,mC].join("|")+")"+AC+vC+")*",DA="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",R2="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Y3=AC+vC+G3,Tm="(?:"+[NL,gC,mC].join("|")+")"+Y3,BA="(?:"+[jf+$3+"?",$3,gC,mC,Gd].join("|")+")",D1=RegExp(xm,"g"),Bp=RegExp($3,"g"),gM=RegExp(UL+"(?="+UL+")|"+BA+Y3,"g"),rye=RegExp([Q1+"?"+TA+"+"+X3+"(?="+[Em,Q1,"$"].join("|")+")",Wf+"+"+QA+"(?="+[Em,Q1+Dp,"$"].join("|")+")",Q1+"?"+Dp+"+"+X3,Q1+"+"+QA,R2,DA,FL,Tm].join("|"),"g"),oye=RegExp("["+kC+En+Nt+bu+"]"),sye=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,aye=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],lye=-1,Bl={};Bl[ot]=Bl[We]=Bl[et]=Bl[st]=Bl[Me]=Bl[Se]=Bl[Ie]=Bl[ze]=Bl[Ze]=!0,Bl[q]=Bl[re]=Bl[De]=Bl[oe]=Bl[Ye]=Bl[se]=Bl[ue]=Bl[ee]=Bl[z]=Bl[Y]=Bl[te]=Bl[pe]=Bl[Ce]=Bl[Qe]=Bl[_e]=!1;var kc={};kc[q]=kc[re]=kc[De]=kc[Ye]=kc[oe]=kc[se]=kc[ot]=kc[We]=kc[et]=kc[st]=kc[Me]=kc[z]=kc[Y]=kc[te]=kc[pe]=kc[Ce]=kc[Qe]=kc[ke]=kc[Se]=kc[Ie]=kc[ze]=kc[Ze]=!0,kc[ue]=kc[ee]=kc[_e]=!1;var cye={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},mM={"&":"&","<":"<",">":">",'"':""","'":"'"},dye={"&":"&","<":"<",">":">",""":'"',"'":"'"},uye={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},hye=parseFloat,fye=parseInt,QE=typeof Ho=="object"&&Ho&&Ho.Object===Object&&Ho,gye=typeof self=="object"&&self&&self.Object===Object&&self,lf=QE||gye||Function("return this")(),jH=t&&!t.nodeType&&t,pC=jH&&!0&&e&&!e.nodeType&&e,DE=pC&&pC.exports===jH,WH=DE&&QE.process,nk=function(){try{var Wt=pC&&pC.require&&pC.require("util").types;return Wt||WH&&WH.binding&&WH.binding("util")}catch{}}(),ioe=nk&&nk.isArrayBuffer,roe=nk&&nk.isDate,BE=nk&&nk.isMap,ooe=nk&&nk.isRegExp,soe=nk&&nk.isSet,aoe=nk&&nk.isTypedArray;function B1(Wt,Sn,Et){switch(Et.length){case 0:return Wt.call(Sn);case 1:return Wt.call(Sn,Et[0]);case 2:return Wt.call(Sn,Et[0],Et[1]);case 3:return Wt.call(Sn,Et[0],Et[1],Et[2])}return Wt.apply(Sn,Et)}function mye(Wt,Sn,Et,or){for(var Jr=-1,za=Wt==null?0:Wt.length;++Jr-1}function bC(Wt,Sn,Et){for(var or=-1,Jr=Wt==null?0:Wt.length;++or-1;);return Et}function goe(Wt,Sn){for(var Et=Wt.length;Et--&&jL(Sn,Wt[Et],0)>-1;);return Et}function Oye(Wt,Sn){for(var Et=Wt.length,or=0;Et--;)Wt[Et]===Sn&&++or;return or}var yye=$H(cye),Cye=$H(mM);function moe(Wt){return"\\"+uye[Wt]}function _ye(Wt,Sn){return Wt==null?n:Wt[Sn]}function VL(Wt){return oye.test(Wt)}function Sye(Wt){return sye.test(Wt)}function Lye(Wt){for(var Sn,Et=[];!(Sn=Wt.next()).done;)Et.push(Sn.value);return Et}function ZH(Wt){var Sn=-1,Et=Array(Wt.size);return Wt.forEach(function(or,Jr){Et[++Sn]=[Jr,or]}),Et}function koe(Wt,Sn){return function(Et){return Wt(Sn(Et))}}function K3(Wt,Sn){for(var Et=-1,or=Wt.length,Jr=0,za=[];++Et-1}function OC(N,V){var ce=this.__data__,Le=MM(ce,N);return Le<0?(++this.size,ce.push([N,V])):ce[Le][1]=V,this}Ip.prototype.clear=zye,Ip.prototype.delete=ex,Ip.prototype.get=Qoe,Ip.prototype.has=Yd,Ip.prototype.set=OC;function cf(N){var V=-1,ce=N==null?0:N.length;for(this.clear();++V=V?N:V)),N}function sk(N,V,ce,Le,He,lt){var yt,Qt=V&g,Yt=V&m,Rn=V&v;if(ce&&(yt=He?ce(N,Le,He,lt):ce(N)),yt!==n)return yt;if(!qd(N))return N;var Mn=bs(N);if(Mn){if(yt=RKn(N),!Qt)return Ts(N,yt)}else{var Jn=Bm(N),Ki=Jn==ee||Jn==de;if(ox(N))return P2(N,Qt);if(Jn==te||Jn==q||Ki&&!He){if(yt=Yt||Ki?{}:Iat(N),!Qt)return Yt?F2(N,qye(yt,N)):P1(N,s$(yt,N))}else{if(!kc[Jn])return He?N:{};yt=IKn(N,Jn,Qt)}}lt||(lt=new M2);var Dr=lt.get(N);if(Dr)return Dr;lt.set(N,yt),dlt(N)?N.forEach(function(_o){yt.add(sk(_o,V,ce,_o,N,lt))}):llt(N)&&N.forEach(function(_o,na){yt.set(na,sk(_o,V,ce,na,N,lt))});var Co=Rn?Yt?aCe:sCe:Yt?ck:zf,Ms=Mn?n:Co(N);return ik(Ms||N,function(_o,na){Ms&&(na=_o,_o=N[na]),tx(yt,na,sk(_o,V,ce,na,N,lt))}),yt}function l$(N){var V=zf(N);return function(ce){return Foe(ce,N,V)}}function Foe(N,V,ce){var Le=ce.length;if(N==null)return!Le;for(N=sl(N);Le--;){var He=ce[Le],lt=V[He],yt=N[He];if(yt===n&&!(He in N)||!lt(yt))return!1}return!0}function PM(N,V,ce){if(typeof N!="function")throw new rk(a);return p$(function(){N.apply(n,ce)},V)}function HE(N,V,ce,Le){var He=-1,lt=kM,yt=!0,Qt=N.length,Yt=[],Rn=V.length;if(!Qt)return Yt;ce&&(V=Hc(V,R1(ce))),Le?(lt=bC,yt=!1):V.length>=o&&(lt=WL,yt=!1,V=new ew(V));e:for(;++HeHe?0:He+ce),Le=Le===n||Le>He?He:Qs(Le),Le<0&&(Le+=He),Le=ce>Le?0:hlt(Le);ce0&&ce(Qt)?V>1?Ou(Qt,V-1,ce,Le,He):q3(He,Qt):Le||(He[He.length]=Qt)}return He}var nx=zM(),Noe=zM(!0);function M1(N,V){return N&&nx(N,V,zf)}function c$(N,V){return N&&Noe(N,V,zf)}function $E(N,V){return Z3(V,function(ce){return QC(N[ce])})}function tw(N,V){V=Fg(V,N);for(var ce=0,Le=V.length;N!=null&&ceV}function Uoe(N,V){return N!=null&&Ha.call(N,V)}function joe(N,V){return N!=null&&V in sl(N)}function NM(N,V,ce){return N>=Yu(V,ce)&&N=120&&Mn.length>=120)?new ew(yt&&Mn):n}Mn=N[0];var Jn=-1,Ki=Qt[0];e:for(;++Jn-1;)Qt!==N&&ME.call(Qt,Yt,1),ME.call(N,Yt,1);return N}function Be(N,V){for(var ce=N?V.length:0,Le=ce-1;ce--;){var He=V[ce];if(ce==Le||He!==lt){var lt=He;TC(He)?ME.call(N,He,1):os(N,He)}}return N}function Xe(N,V){return N+FE(e$()*(V-N+1))}function Ke(N,V,ce,Le){for(var He=-1,lt=Gu(xM((V-N)/(ce||1)),0),yt=Et(lt);lt--;)yt[Le?lt:++He]=N,N+=ce;return yt}function vt(N,V){var ce="";if(!N||V<1||V>I)return ce;do V%2&&(ce+=N),V=FE(V/2),V&&(N+=N);while(V);return ce}function qe(N,V){return gCe(Fat(N,V,dk),N+"")}function Ot(N){return Poe(GM(N))}function Lt(N,V){var ce=GM(N);return nse(ce,yC(V,0,ce.length))}function Vt(N,V,ce,Le){if(!qd(N))return N;V=Fg(V,N);for(var He=-1,lt=V.length,yt=lt-1,Qt=N;Qt!=null&&++HeHe?0:He+V),ce=ce>He?He:ce,ce<0&&(ce+=He),He=V>ce?0:ce-V>>>0,V>>>=0;for(var lt=Et(He);++Le>>1,yt=N[lt];yt!==null&&!N2(yt)&&(ce?yt<=V:yt=o){var Rn=V?null:LKn(N);if(Rn)return bM(Rn);yt=!1,He=WL,Yt=new ew}else Yt=V?[]:Qt;e:for(;++Le=Le?N:Ai(N,V,ce)}var iw=Pye||function(N){return lf.clearTimeout(N)};function P2(N,V){if(V)return N.slice();var ce=N.length,Le=qH?qH(ce):new N.constructor(ce);return N.copy(Le),Le}function MA(N){var V=new N.constructor(N.byteLength);return new XL(V).set(new XL(N)),V}function _C(N,V){var ce=V?MA(N.buffer):N.buffer;return new N.constructor(ce,N.byteOffset,N.byteLength)}function SC(N){var V=new N.constructor(N.source,qn.exec(N));return V.lastIndex=N.lastIndex,V}function Pp(N){return jE?sl(jE.call(N)):{}}function Fp(N,V){var ce=V?MA(N.buffer):N.buffer;return new N.constructor(ce,N.byteOffset,N.length)}function LC(N,V){if(N!==V){var ce=N!==n,Le=N===null,He=N===N,lt=N2(N),yt=V!==n,Qt=V===null,Yt=V===V,Rn=N2(V);if(!Qt&&!Rn&&!lt&&N>V||lt&&yt&&Yt&&!Qt&&!Rn||Le&&yt&&Yt||!ce&&Yt||!He)return 1;if(!Le&&!lt&&!Rn&&N=Qt)return Yt;var Rn=ce[Le];return Yt*(Rn=="desc"?-1:1)}}return N.index-V.index}function ll(N,V,ce,Le){for(var He=-1,lt=N.length,yt=ce.length,Qt=-1,Yt=V.length,Rn=Gu(lt-yt,0),Mn=Et(Yt+Rn),Jn=!Le;++Qt1?ce[He-1]:n,yt=He>2?ce[2]:n;for(lt=N.length>3&&typeof lt=="function"?(He--,lt):n,yt&&N1(ce[0],ce[1],yt)&&(lt=He<3?n:lt,He=1),V=sl(V);++Le-1?He[lt?V[yt]:yt]:n}}function _at(N){return EC(function(V){var ce=V.length,Le=ce,He=I1.prototype.thru;for(N&&V.reverse();Le--;){var lt=V[Le];if(typeof lt!="function")throw new rk(a);if(He&&!yt&&ese(lt)=="wrapper")var yt=new I1([],!0)}for(Le=yt?Le:ce;++Le1&&wa.reverse(),Mn&&YtQt))return!1;var Rn=lt.get(N),Mn=lt.get(V);if(Rn&&Mn)return Rn==V&&Mn==N;var Jn=-1,Ki=!0,Dr=ce&k?new ew:n;for(lt.set(N,V),lt.set(V,N);++Jn1?"& ":"")+V[Le],V=V.join(ce>2?", ":" "),N.replace(gi,`{ + */nve.exports;(function(e,t){(function(){var n,r="4.17.23",o=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",l="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",u=500,h="__lodash_placeholder__",g=1,m=2,v=4,f=1,k=2,A=1,p=2,b=4,w=8,O=16,y=32,C=64,_=128,S=256,L=512,E=30,T="...",D=800,P=16,Q=1,M=2,B=3,R=1/0,I=9007199254740991,F=17976931348623157e292,j=NaN,W=4294967295,H=W-1,$=W>>>1,G=[["ary",_],["bind",A],["bindKey",p],["curry",w],["curryRight",O],["flip",L],["partial",y],["partialRight",C],["rearg",S]],q="[object Arguments]",re="[object Array]",J="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",le="[object DOMException]",ue="[object Error]",ee="[object Function]",de="[object GeneratorFunction]",z="[object Map]",Y="[object Number]",ie="[object Null]",te="[object Object]",Z="[object Promise]",he="[object Proxy]",pe="[object RegExp]",Ce="[object Set]",Qe="[object String]",ke="[object Symbol]",me="[object Undefined]",_e="[object WeakMap]",Te="[object WeakSet]",De="[object ArrayBuffer]",Ye="[object DataView]",ot="[object Float32Array]",We="[object Float64Array]",et="[object Int8Array]",st="[object Int16Array]",Me="[object Int32Array]",Se="[object Uint8Array]",Ie="[object Uint8ClampedArray]",ze="[object Uint16Array]",Ze="[object Uint32Array]",gt=/\b__p \+= '';/g,St=/\b(__p \+=) '' \+/g,Pt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,dn=/&(?:amp|lt|gt|quot|#39);/g,on=/[&<>"']/g,pn=RegExp(dn.source),ni=RegExp(on.source),Zn=/<%-([\s\S]+?)%>/g,Pi=/<%([\s\S]+?)%>/g,rr=/<%=([\s\S]+?)%>/g,Hr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bo=/^\w*$/,lo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fr=/[\\^$.*+?()[\]{}|]/g,is=RegExp(Fr.source),yi=/^\s+/,Gt=/\s/,gi=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ri=/\{\n\/\* \[wrapped with (.+)\] \*/,tr=/,? & /,ht=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/[()=,{}\[\]\/\s]/,Mt=/\\(\\)?/g,Kt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,qn=/\w*$/,Zt=/^[-+]0x[0-9a-f]+$/i,so=/^0b[01]+$/i,Un=/^\[object .+?Constructor\]$/,dt=/^0o[0-7]+$/i,Ne=/^(?:0|[1-9]\d*)$/,nt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,bn=/($^)/,hn=/['\n\r\u2028\u2029\\]/g,En="\\ud800-\\udfff",wi="\\u0300-\\u036f",Ue="\\ufe20-\\ufe2f",ut="\\u20d0-\\u20ff",Nt=wi+Ue+ut,wn="\\u2700-\\u27bf",Cn="a-z\\xdf-\\xf6\\xf8-\\xff",wr="\\xac\\xb1\\xd7\\xf7",Kr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Wo="\\u2000-\\u206f",pl=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pu="A-Z\\xc0-\\xd6\\xd8-\\xde",bu="\\ufe0e\\ufe0f",T1=wr+Kr+Wo+pl,xm="['’]",Gd="["+En+"]",Em="["+T1+"]",$3="["+Nt+"]",FL="\\d+",NL="["+wn+"]",TA="["+Cn+"]",fC="[^"+En+T1+FL+wn+Cn+pu+"]",UL="\\ud83c[\\udffb-\\udfff]",tk="(?:"+$3+"|"+UL+")",jf="[^"+En+"]",gC="(?:\\ud83c[\\udde6-\\uddff]){2}",mC="[\\ud800-\\udbff][\\udc00-\\udfff]",Q1="["+pu+"]",kC="\\u200d",Dp="(?:"+TA+"|"+fC+")",Wf="(?:"+Q1+"|"+fC+")",X3="(?:"+xm+"(?:d|ll|m|re|s|t|ve))?",QA="(?:"+xm+"(?:D|LL|M|RE|S|T|VE))?",vC=tk+"?",AC="["+bu+"]?",G3="(?:"+kC+"(?:"+[jf,gC,mC].join("|")+")"+AC+vC+")*",DA="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",R2="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Y3=AC+vC+G3,Tm="(?:"+[NL,gC,mC].join("|")+")"+Y3,BA="(?:"+[jf+$3+"?",$3,gC,mC,Gd].join("|")+")",D1=RegExp(xm,"g"),Bp=RegExp($3,"g"),gM=RegExp(UL+"(?="+UL+")|"+BA+Y3,"g"),rye=RegExp([Q1+"?"+TA+"+"+X3+"(?="+[Em,Q1,"$"].join("|")+")",Wf+"+"+QA+"(?="+[Em,Q1+Dp,"$"].join("|")+")",Q1+"?"+Dp+"+"+X3,Q1+"+"+QA,R2,DA,FL,Tm].join("|"),"g"),oye=RegExp("["+kC+En+Nt+bu+"]"),sye=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,aye=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],lye=-1,Bl={};Bl[ot]=Bl[We]=Bl[et]=Bl[st]=Bl[Me]=Bl[Se]=Bl[Ie]=Bl[ze]=Bl[Ze]=!0,Bl[q]=Bl[re]=Bl[De]=Bl[oe]=Bl[Ye]=Bl[se]=Bl[ue]=Bl[ee]=Bl[z]=Bl[Y]=Bl[te]=Bl[pe]=Bl[Ce]=Bl[Qe]=Bl[_e]=!1;var kc={};kc[q]=kc[re]=kc[De]=kc[Ye]=kc[oe]=kc[se]=kc[ot]=kc[We]=kc[et]=kc[st]=kc[Me]=kc[z]=kc[Y]=kc[te]=kc[pe]=kc[Ce]=kc[Qe]=kc[ke]=kc[Se]=kc[Ie]=kc[ze]=kc[Ze]=!0,kc[ue]=kc[ee]=kc[_e]=!1;var cye={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},mM={"&":"&","<":"<",">":">",'"':""","'":"'"},dye={"&":"&","<":"<",">":">",""":'"',"'":"'"},uye={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},hye=parseFloat,fye=parseInt,QE=typeof Ho=="object"&&Ho&&Ho.Object===Object&&Ho,gye=typeof self=="object"&&self&&self.Object===Object&&self,lf=QE||gye||Function("return this")(),jH=t&&!t.nodeType&&t,pC=jH&&!0&&e&&!e.nodeType&&e,DE=pC&&pC.exports===jH,WH=DE&&QE.process,nk=function(){try{var Wt=pC&&pC.require&&pC.require("util").types;return Wt||WH&&WH.binding&&WH.binding("util")}catch{}}(),ioe=nk&&nk.isArrayBuffer,roe=nk&&nk.isDate,BE=nk&&nk.isMap,ooe=nk&&nk.isRegExp,soe=nk&&nk.isSet,aoe=nk&&nk.isTypedArray;function B1(Wt,Sn,Et){switch(Et.length){case 0:return Wt.call(Sn);case 1:return Wt.call(Sn,Et[0]);case 2:return Wt.call(Sn,Et[0],Et[1]);case 3:return Wt.call(Sn,Et[0],Et[1],Et[2])}return Wt.apply(Sn,Et)}function mye(Wt,Sn,Et,or){for(var Jr=-1,za=Wt==null?0:Wt.length;++Jr-1}function bC(Wt,Sn,Et){for(var or=-1,Jr=Wt==null?0:Wt.length;++or-1;);return Et}function goe(Wt,Sn){for(var Et=Wt.length;Et--&&jL(Sn,Wt[Et],0)>-1;);return Et}function Oye(Wt,Sn){for(var Et=Wt.length,or=0;Et--;)Wt[Et]===Sn&&++or;return or}var yye=$H(cye),Cye=$H(mM);function moe(Wt){return"\\"+uye[Wt]}function _ye(Wt,Sn){return Wt==null?n:Wt[Sn]}function VL(Wt){return oye.test(Wt)}function Sye(Wt){return sye.test(Wt)}function Lye(Wt){for(var Sn,Et=[];!(Sn=Wt.next()).done;)Et.push(Sn.value);return Et}function ZH(Wt){var Sn=-1,Et=Array(Wt.size);return Wt.forEach(function(or,Jr){Et[++Sn]=[Jr,or]}),Et}function koe(Wt,Sn){return function(Et){return Wt(Sn(Et))}}function K3(Wt,Sn){for(var Et=-1,or=Wt.length,Jr=0,za=[];++Et-1}function OC(N,V){var ce=this.__data__,Le=MM(ce,N);return Le<0?(++this.size,ce.push([N,V])):ce[Le][1]=V,this}Ip.prototype.clear=zye,Ip.prototype.delete=ex,Ip.prototype.get=Qoe,Ip.prototype.has=Yd,Ip.prototype.set=OC;function cf(N){var V=-1,ce=N==null?0:N.length;for(this.clear();++V=V?N:V)),N}function sk(N,V,ce,Le,He,lt){var yt,Qt=V&g,Yt=V&m,Rn=V&v;if(ce&&(yt=He?ce(N,Le,He,lt):ce(N)),yt!==n)return yt;if(!qd(N))return N;var Mn=bs(N);if(Mn){if(yt=RKn(N),!Qt)return Ts(N,yt)}else{var Jn=Bm(N),Ki=Jn==ee||Jn==de;if(ox(N))return P2(N,Qt);if(Jn==te||Jn==q||Ki&&!He){if(yt=Yt||Ki?{}:Iat(N),!Qt)return Yt?F2(N,qye(yt,N)):P1(N,s$(yt,N))}else{if(!kc[Jn])return He?N:{};yt=IKn(N,Jn,Qt)}}lt||(lt=new M2);var Dr=lt.get(N);if(Dr)return Dr;lt.set(N,yt),dlt(N)?N.forEach(function(_o){yt.add(sk(_o,V,ce,_o,N,lt))}):llt(N)&&N.forEach(function(_o,na){yt.set(na,sk(_o,V,ce,na,N,lt))});var Co=Rn?Yt?aCe:sCe:Yt?ck:zf,Ms=Mn?n:Co(N);return ik(Ms||N,function(_o,na){Ms&&(na=_o,_o=N[na]),tx(yt,na,sk(_o,V,ce,na,N,lt))}),yt}function l$(N){var V=zf(N);return function(ce){return Foe(ce,N,V)}}function Foe(N,V,ce){var Le=ce.length;if(N==null)return!Le;for(N=sl(N);Le--;){var He=ce[Le],lt=V[He],yt=N[He];if(yt===n&&!(He in N)||!lt(yt))return!1}return!0}function PM(N,V,ce){if(typeof N!="function")throw new rk(a);return p$(function(){N.apply(n,ce)},V)}function HE(N,V,ce,Le){var He=-1,lt=kM,yt=!0,Qt=N.length,Yt=[],Rn=V.length;if(!Qt)return Yt;ce&&(V=Hc(V,R1(ce))),Le?(lt=bC,yt=!1):V.length>=o&&(lt=WL,yt=!1,V=new ew(V));e:for(;++HeHe?0:He+ce),Le=Le===n||Le>He?He:Qs(Le),Le<0&&(Le+=He),Le=ce>Le?0:hlt(Le);ce0&&ce(Qt)?V>1?Ou(Qt,V-1,ce,Le,He):q3(He,Qt):Le||(He[He.length]=Qt)}return He}var nx=zM(),Noe=zM(!0);function M1(N,V){return N&&nx(N,V,zf)}function c$(N,V){return N&&Noe(N,V,zf)}function $E(N,V){return Z3(V,function(ce){return QC(N[ce])})}function tw(N,V){V=Fg(V,N);for(var ce=0,Le=V.length;N!=null&&ceV}function Uoe(N,V){return N!=null&&Ha.call(N,V)}function joe(N,V){return N!=null&&V in sl(N)}function NM(N,V,ce){return N>=Yu(V,ce)&&N=120&&Mn.length>=120)?new ew(yt&&Mn):n}Mn=N[0];var Jn=-1,Ki=Qt[0];e:for(;++Jn-1;)Qt!==N&&ME.call(Qt,Yt,1),ME.call(N,Yt,1);return N}function Be(N,V){for(var ce=N?V.length:0,Le=ce-1;ce--;){var He=V[ce];if(ce==Le||He!==lt){var lt=He;TC(He)?ME.call(N,He,1):os(N,He)}}return N}function Xe(N,V){return N+FE(e$()*(V-N+1))}function Ke(N,V,ce,Le){for(var He=-1,lt=Gu(xM((V-N)/(ce||1)),0),yt=Et(lt);lt--;)yt[Le?lt:++He]=N,N+=ce;return yt}function vt(N,V){var ce="";if(!N||V<1||V>I)return ce;do V%2&&(ce+=N),V=FE(V/2),V&&(N+=N);while(V);return ce}function qe(N,V){return gCe(Fat(N,V,dk),N+"")}function Ot(N){return Poe(GM(N))}function Lt(N,V){var ce=GM(N);return nse(ce,yC(V,0,ce.length))}function Vt(N,V,ce,Le){if(!qd(N))return N;V=Fg(V,N);for(var He=-1,lt=V.length,yt=lt-1,Qt=N;Qt!=null&&++HeHe?0:He+V),ce=ce>He?He:ce,ce<0&&(ce+=He),He=V>ce?0:ce-V>>>0,V>>>=0;for(var lt=Et(He);++Le>>1,yt=N[lt];yt!==null&&!N2(yt)&&(ce?yt<=V:yt=o){var Rn=V?null:LKn(N);if(Rn)return bM(Rn);yt=!1,He=WL,Yt=new ew}else Yt=V?[]:Qt;e:for(;++Le=Le?N:Ai(N,V,ce)}var iw=Pye||function(N){return lf.clearTimeout(N)};function P2(N,V){if(V)return N.slice();var ce=N.length,Le=qH?qH(ce):new N.constructor(ce);return N.copy(Le),Le}function MA(N){var V=new N.constructor(N.byteLength);return new XL(V).set(new XL(N)),V}function _C(N,V){var ce=V?MA(N.buffer):N.buffer;return new N.constructor(ce,N.byteOffset,N.byteLength)}function SC(N){var V=new N.constructor(N.source,qn.exec(N));return V.lastIndex=N.lastIndex,V}function Pp(N){return jE?sl(jE.call(N)):{}}function Fp(N,V){var ce=V?MA(N.buffer):N.buffer;return new N.constructor(ce,N.byteOffset,N.length)}function LC(N,V){if(N!==V){var ce=N!==n,Le=N===null,He=N===N,lt=N2(N),yt=V!==n,Qt=V===null,Yt=V===V,Rn=N2(V);if(!Qt&&!Rn&&!lt&&N>V||lt&&yt&&Yt&&!Qt&&!Rn||Le&&yt&&Yt||!ce&&Yt||!He)return 1;if(!Le&&!lt&&!Rn&&N=Qt)return Yt;var Rn=ce[Le];return Yt*(Rn=="desc"?-1:1)}}return N.index-V.index}function ll(N,V,ce,Le){for(var He=-1,lt=N.length,yt=ce.length,Qt=-1,Yt=V.length,Rn=Gu(lt-yt,0),Mn=Et(Yt+Rn),Jn=!Le;++Qt1?ce[He-1]:n,yt=He>2?ce[2]:n;for(lt=N.length>3&&typeof lt=="function"?(He--,lt):n,yt&&N1(ce[0],ce[1],yt)&&(lt=He<3?n:lt,He=1),V=sl(V);++Le-1?He[lt?V[yt]:yt]:n}}function _at(N){return EC(function(V){var ce=V.length,Le=ce,He=I1.prototype.thru;for(N&&V.reverse();Le--;){var lt=V[Le];if(typeof lt!="function")throw new rk(a);if(He&&!yt&&ese(lt)=="wrapper")var yt=new I1([],!0)}for(Le=yt?Le:ce;++Le1&&wa.reverse(),Mn&&YtQt))return!1;var Rn=lt.get(N),Mn=lt.get(V);if(Rn&&Mn)return Rn==V&&Mn==N;var Jn=-1,Ki=!0,Dr=ce&k?new ew:n;for(lt.set(N,V),lt.set(V,N);++Jn1?"& ":"")+V[Le],V=V.join(ce>2?", ":" "),N.replace(gi,`{ /* [wrapped with `+V+`] */ `)}function PKn(N){return bs(N)||ZE(N)||!!(SM&&N&&N[SM])}function TC(N,V){var ce=typeof N;return V=V??I,!!V&&(ce=="number"||ce!="symbol"&&Ne.test(N))&&N>-1&&N%1==0&&N0){if(++V>=D)return arguments[0]}else V=0;return N.apply(n,arguments)}}function nse(N,V){var ce=-1,Le=N.length,He=Le-1;for(V=V===n?Le:V;++ce1?N[V-1]:n;return ce=typeof ce=="function"?(N.pop(),ce):n,Zat(N,ce)});function qat(N){var V=tt(N);return V.__chain__=!0,V}function GJn(N,V){return V(N),N}function ise(N,V){return V(N)}var YJn=EC(function(N){var V=N.length,ce=V?N[0]:0,Le=this.__wrapped__,He=function(lt){return a$(lt,N)};return V>1||this.__actions__.length||!(Le instanceof Is)||!TC(ce)?this.thru(He):(Le=Le.slice(ce,+ce+(V?1:0)),Le.__actions__.push({func:ise,args:[He],thisArg:n}),new I1(Le,this.__chain__).thru(function(lt){return V&&!lt.length&<.push(n),lt}))});function ZJn(){return qat(this)}function qJn(){return new I1(this.value(),this.__chain__)}function KJn(){this.__values__===n&&(this.__values__=ult(this.value()));var N=this.__index__>=this.__values__.length,V=N?n:this.__values__[this.__index__++];return{done:N,value:V}}function JJn(){return this}function eei(N){for(var V,ce=this;ce instanceof WE;){var Le=zat(ce);Le.__index__=0,Le.__values__=n,V?He.__wrapped__=Le:V=Le;var He=Le;ce=ce.__wrapped__}return He.__wrapped__=N,V}function tei(){var N=this.__wrapped__;if(N instanceof Is){var V=N;return this.__actions__.length&&(V=new Is(this)),V=V.reverse(),V.__actions__.push({func:ise,args:[mCe],thisArg:n}),new I1(V,this.__chain__)}return this.thru(mCe)}function nei(){return Mg(this.__wrapped__,this.__actions__)}var iei=F1(function(N,V,ce){Ha.call(N,ce)?++N[ce]:Mp(N,ce,1)});function rei(N,V,ce){var Le=bs(N)?loe:FM;return ce&&N1(N,V,ce)&&(V=n),Le(N,vo(V,3))}function oei(N,V){var ce=bs(N)?Z3:xc;return ce(N,vo(V,3))}var sei=Cat(Hat),aei=Cat($at);function lei(N,V){return Ou(rse(N,V),1)}function cei(N,V){return Ou(rse(N,V),R)}function dei(N,V,ce){return ce=ce===n?1:Qs(ce),Ou(rse(N,V),ce)}function Kat(N,V){var ce=bs(N)?ik:Mi;return ce(N,vo(V,3))}function Jat(N,V){var ce=bs(N)?kye:CC;return ce(N,vo(V,3))}var uei=F1(function(N,V,ce){Ha.call(N,ce)?N[ce].push(V):Mp(N,ce,[V])});function hei(N,V,ce,Le){N=lk(N)?N:GM(N),ce=ce&&!Le?Qs(ce):0;var He=N.length;return ce<0&&(ce=Gu(He+ce,0)),cse(N)?ce<=He&&N.indexOf(V,ce)>-1:!!He&&jL(N,V,ce)>-1}var fei=qe(function(N,V,ce){var Le=-1,He=typeof V=="function",lt=lk(N)?Et(N.length):[];return Mi(N,function(yt){lt[++Le]=He?B1(V,yt,ce):nw(yt,V,ce)}),lt}),gei=F1(function(N,V,ce){Mp(N,ce,V)});function rse(N,V){var ce=bs(N)?Hc:$oe;return ce(N,vo(V,3))}function mei(N,V,ce,Le){return N==null?[]:(bs(V)||(V=V==null?[]:[V]),ce=Le?n:ce,bs(ce)||(ce=ce==null?[]:[ce]),Fe(N,V,ce))}var kei=F1(function(N,V,ce){N[ce?0:1].push(V)},function(){return[[],[]]});function vei(N,V,ce){var Le=bs(N)?vM:uoe,He=arguments.length<3;return Le(N,vo(V,4),ce,He,Mi)}function Aei(N,V,ce){var Le=bs(N)?vye:uoe,He=arguments.length<3;return Le(N,vo(V,4),ce,He,CC)}function pei(N,V){var ce=bs(N)?Z3:xc;return ce(N,ase(vo(V,3)))}function bei(N){var V=bs(N)?Poe:Ot;return V(N)}function wei(N,V,ce){(ce?N1(N,V,ce):V===n)?V=1:V=Qs(V);var Le=bs(N)?Yye:Lt;return Le(N,V)}function Oei(N){var V=bs(N)?o$:$n;return V(N)}function yei(N){if(N==null)return 0;if(lk(N))return cse(N)?zL(N):N.length;var V=Bm(N);return V==z||V==Ce?N.size:h$(N).length}function Cei(N,V,ce){var Le=bs(N)?VH:mr;return ce&&N1(N,V,ce)&&(V=n),Le(N,vo(V,3))}var _ei=qe(function(N,V){if(N==null)return[];var ce=V.length;return ce>1&&N1(N,V[0],V[1])?V=[]:ce>2&&N1(V[0],V[1],V[2])&&(V=[V[0]]),Fe(N,Ou(V,1),[])}),ose=Fye||function(){return lf.Date.now()};function Sei(N,V){if(typeof V!="function")throw new rk(a);return N=Qs(N),function(){if(--N<1)return V.apply(this,arguments)}}function elt(N,V,ce){return V=ce?n:V,V=N&&V==null?N.length:V,xC(N,_,n,n,n,n,V)}function tlt(N,V){var ce;if(typeof V!="function")throw new rk(a);return N=Qs(N),function(){return--N>0&&(ce=V.apply(this,arguments)),N<=1&&(V=n),ce}}var vCe=qe(function(N,V,ce){var Le=A;if(ce.length){var He=K3(ce,$M(vCe));Le|=y}return xC(N,Le,V,ce,He)}),nlt=qe(function(N,V,ce){var Le=A|p;if(ce.length){var He=K3(ce,$M(nlt));Le|=y}return xC(V,Le,N,ce,He)});function ilt(N,V,ce){V=ce?n:V;var Le=xC(N,w,n,n,n,n,n,V);return Le.placeholder=ilt.placeholder,Le}function rlt(N,V,ce){V=ce?n:V;var Le=xC(N,O,n,n,n,n,n,V);return Le.placeholder=rlt.placeholder,Le}function olt(N,V,ce){var Le,He,lt,yt,Qt,Yt,Rn=0,Mn=!1,Jn=!1,Ki=!0;if(typeof N!="function")throw new rk(a);V=NA(V)||0,qd(ce)&&(Mn=!!ce.leading,Jn="maxWait"in ce,lt=Jn?Gu(NA(ce.maxWait)||0,V):lt,Ki="trailing"in ce?!!ce.trailing:Ki);function Dr(Ku){var Up=Le,BC=He;return Le=He=n,Rn=Ku,yt=N.apply(BC,Up),yt}function Co(Ku){return Rn=Ku,Qt=p$(na,V),Mn?Dr(Ku):yt}function Ms(Ku){var Up=Ku-Yt,BC=Ku-Rn,Clt=V-Up;return Jn?Yu(Clt,lt-BC):Clt}function _o(Ku){var Up=Ku-Yt,BC=Ku-Rn;return Yt===n||Up>=V||Up<0||Jn&&BC>=lt}function na(){var Ku=ose();if(_o(Ku))return wa(Ku);Qt=p$(na,Ms(Ku))}function wa(Ku){return Qt=n,Ki&&Le?Dr(Ku):(Le=He=n,yt)}function U2(){Qt!==n&&iw(Qt),Rn=0,Le=Yt=He=Qt=n}function U1(){return Qt===n?yt:wa(ose())}function j2(){var Ku=ose(),Up=_o(Ku);if(Le=arguments,He=this,Yt=Ku,Up){if(Qt===n)return Co(Yt);if(Jn)return iw(Qt),Qt=p$(na,V),Dr(Yt)}return Qt===n&&(Qt=p$(na,V)),yt}return j2.cancel=U2,j2.flush=U1,j2}var Lei=qe(function(N,V){return PM(N,1,V)}),xei=qe(function(N,V,ce){return PM(N,NA(V)||0,ce)});function Eei(N){return xC(N,L)}function sse(N,V){if(typeof N!="function"||V!=null&&typeof V!="function")throw new rk(a);var ce=function(){var Le=arguments,He=V?V.apply(this,Le):Le[0],lt=ce.cache;if(lt.has(He))return lt.get(He);var yt=N.apply(this,Le);return ce.cache=lt.set(He,yt)||lt,yt};return ce.cache=new(sse.Cache||cf),ce}sse.Cache=cf;function ase(N){if(typeof N!="function")throw new rk(a);return function(){var V=arguments;switch(V.length){case 0:return!N.call(this);case 1:return!N.call(this,V[0]);case 2:return!N.call(this,V[0],V[1]);case 3:return!N.call(this,V[0],V[1],V[2])}return!N.apply(this,V)}}function Tei(N){return tlt(2,N)}var Qei=ak(function(N,V){V=V.length==1&&bs(V[0])?Hc(V[0],R1(vo())):Hc(Ou(V,1),R1(vo()));var ce=V.length;return qe(function(Le){for(var He=-1,lt=Yu(Le.length,ce);++He=V}),ZE=UM(function(){return arguments}())?UM:function(N){return Cu(N)&&Ha.call(N,"callee")&&!woe.call(N,"callee")},bs=Et.isArray,$ei=ioe?R1(ioe):ix;function lk(N){return N!=null&&lse(N.length)&&!QC(N)}function qu(N){return Cu(N)&&lk(N)}function Xei(N){return N===!0||N===!1||Cu(N)&&Vf(N)==oe}var ox=Ooe||ECe,Gei=roe?R1(roe):jM;function Yei(N){return Cu(N)&&N.nodeType===1&&!b$(N)}function Zei(N){if(N==null)return!0;if(lk(N)&&(bs(N)||typeof N=="string"||typeof N.splice=="function"||ox(N)||XM(N)||ZE(N)))return!N.length;var V=Bm(N);if(V==z||V==Ce)return!N.size;if(A$(N))return!h$(N).length;for(var ce in N)if(Ha.call(N,ce))return!1;return!0}function qei(N,V){return XE(N,V)}function Kei(N,V,ce){ce=typeof ce=="function"?ce:n;var Le=ce?ce(N,V):n;return Le===n?XE(N,V,n,ce):!!Le}function pCe(N){if(!Cu(N))return!1;var V=Vf(N);return V==ue||V==le||typeof N.message=="string"&&typeof N.name=="string"&&!b$(N)}function Jei(N){return typeof N=="number"&&KH(N)}function QC(N){if(!qd(N))return!1;var V=Vf(N);return V==ee||V==de||V==J||V==he}function alt(N){return typeof N=="number"&&N==Qs(N)}function lse(N){return typeof N=="number"&&N>-1&&N%1==0&&N<=I}function qd(N){var V=typeof N;return N!=null&&(V=="object"||V=="function")}function Cu(N){return N!=null&&typeof N=="object"}var llt=BE?R1(BE):Jye;function eti(N,V){return N===V||WM(N,V,cCe(V))}function tti(N,V,ce){return ce=typeof ce=="function"?ce:n,WM(N,V,cCe(V),ce)}function nti(N){return clt(N)&&N!=+N}function iti(N){if(UKn(N))throw new Jr(s);return Voe(N)}function rti(N){return N===null}function oti(N){return N==null}function clt(N){return typeof N=="number"||Cu(N)&&Vf(N)==Y}function b$(N){if(!Cu(N)||Vf(N)!=te)return!1;var V=wu(N);if(V===null)return!0;var ce=Ha.call(V,"constructor")&&V.constructor;return typeof ce=="function"&&ce instanceof ce&&$L.call(ce)==ok}var bCe=ooe?R1(ooe):zoe;function sti(N){return alt(N)&&N>=-I&&N<=I}var dlt=soe?R1(soe):eCe;function cse(N){return typeof N=="string"||!bs(N)&&Cu(N)&&Vf(N)==Qe}function N2(N){return typeof N=="symbol"||Cu(N)&&Vf(N)==ke}var XM=aoe?R1(aoe):tCe;function ati(N){return N===n}function lti(N){return Cu(N)&&Bm(N)==_e}function cti(N){return Cu(N)&&Vf(N)==Te}var dti=Joe(f$),uti=Joe(function(N,V){return N<=V});function ult(N){if(!N)return[];if(lk(N))return cse(N)?I2(N):Ts(N);if(PE&&N[PE])return Lye(N[PE]());var V=Bm(N),ce=V==z?ZH:V==Ce?bM:GM;return ce(N)}function DC(N){if(!N)return N===0?N:0;if(N=NA(N),N===R||N===-R){var V=N<0?-1:1;return V*F}return N===N?N:0}function Qs(N){var V=DC(N),ce=V%1;return V===V?ce?V-ce:V:0}function hlt(N){return N?yC(Qs(N),0,W):0}function NA(N){if(typeof N=="number")return N;if(N2(N))return j;if(qd(N)){var V=typeof N.valueOf=="function"?N.valueOf():N;N=qd(V)?V+"":V}if(typeof N!="string")return N===0?N:+N;N=hoe(N);var ce=so.test(N);return ce||dt.test(N)?fye(N.slice(2),ce?2:8):Zt.test(N)?j:+N}function flt(N){return _d(N,ck(N))}function hti(N){return N?yC(Qs(N),-I,I):N===0?N:0}function Rl(N){return N==null?"":lr(N)}var fti=PA(function(N,V){if(A$(V)||lk(V)){_d(V,zf(V),N);return}for(var ce in V)Ha.call(V,ce)&&tx(N,ce,V[ce])}),glt=PA(function(N,V){_d(V,ck(V),N)}),dse=PA(function(N,V,ce,Le){_d(V,ck(V),N,Le)}),gti=PA(function(N,V,ce,Le){_d(V,zf(V),N,Le)}),mti=EC(a$);function kti(N,V){var ce=J3(N);return V==null?ce:s$(ce,V)}var vti=qe(function(N,V){N=sl(N);var ce=-1,Le=V.length,He=Le>2?V[2]:n;for(He&&N1(V[0],V[1],He)&&(Le=1);++ce1),lt}),_d(N,aCe(N),ce),Le&&(ce=sk(ce,g|m|v,xKn));for(var He=V.length;He--;)os(ce,V[He]);return ce});function Iti(N,V){return klt(N,ase(vo(V)))}var Mti=EC(function(N,V){return N==null?{}:K(N,V)});function klt(N,V){if(N==null)return{};var ce=Hc(aCe(N),function(Le){return[Le]});return V=vo(V),ne(N,ce,function(Le,He){return V(Le,He[0])})}function Pti(N,V,ce){V=Fg(V,N);var Le=-1,He=V.length;for(He||(He=1,N=n);++LeV){var Le=N;N=V,V=Le}if(ce||N%1||V%1){var He=e$();return Yu(N+He*(V-N+hye("1e-"+((He+"").length-1))),V)}return Xe(N,V)}var Gti=HM(function(N,V,ce){return V=V.toLowerCase(),N+(ce?plt(V):V)});function plt(N){return yCe(Rl(N).toLowerCase())}function blt(N){return N=Rl(N),N&&N.replace(nt,yye).replace(Bp,"")}function Yti(N,V,ce){N=Rl(N),V=lr(V);var Le=N.length;ce=ce===n?Le:yC(Qs(ce),0,Le);var He=ce;return ce-=V.length,ce>=0&&N.slice(ce,He)==V}function Zti(N){return N=Rl(N),N&&ni.test(N)?N.replace(on,Cye):N}function qti(N){return N=Rl(N),N&&is.test(N)?N.replace(Fr,"\\$&"):N}var Kti=HM(function(N,V,ce){return N+(ce?"-":"")+V.toLowerCase()}),Jti=HM(function(N,V,ce){return N+(ce?" ":"")+V.toLowerCase()}),eni=k$("toLowerCase");function tni(N,V,ce){N=Rl(N),V=Qs(V);var Le=V?zL(N):0;if(!V||Le>=V)return N;var He=(V-Le)/2;return Koe(FE(He),ce)+N+Koe(xM(He),ce)}function nni(N,V,ce){N=Rl(N),V=Qs(V);var Le=V?zL(N):0;return V&&Le>>0,ce?(N=Rl(N),N&&(typeof V=="string"||V!=null&&!bCe(V))&&(V=lr(V),!V&&VL(N))?Zu(I2(N),0,ce):N.split(V,ce)):[]}var cni=HM(function(N,V,ce){return N+(ce?" ":"")+yCe(V)});function dni(N,V,ce){return N=Rl(N),ce=ce==null?0:yC(Qs(ce),0,N.length),V=lr(V),N.slice(ce,ce+V.length)==V}function uni(N,V,ce){var Le=tt.templateSettings;ce&&N1(N,V,ce)&&(V=n),N=Rl(N),V=dse({},V,Le,Tat);var He=dse({},V.imports,Le.imports,Tat),lt=zf(He),yt=YH(He,lt),Qt,Yt,Rn=0,Mn=V.interpolate||bn,Jn="__p += '",Ki=wM((V.escape||bn).source+"|"+Mn.source+"|"+(Mn===rr?Kt:bn).source+"|"+(V.evaluate||bn).source+"|$","g"),Dr="//# sourceURL="+(Ha.call(V,"sourceURL")?(V.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++lye+"]")+` `;N.replace(Ki,function(_o,na,wa,U2,U1,j2){return wa||(wa=U2),Jn+=N.slice(Rn,j2).replace(hn,moe),na&&(Qt=!0,Jn+=`' + @@ -15554,7 +15554,7 @@ __p += '`),wa&&(Jn+=`' + function print() { __p += __j.call(arguments, '') } `:`; `)+Jn+`return __p -}`;var Ms=Olt(function(){return za(lt,Dr+"return "+Jn).apply(n,yt)});if(Ms.source=Jn,pCe(Ms))throw Ms;return Ms}function hni(N){return Rl(N).toLowerCase()}function fni(N){return Rl(N).toUpperCase()}function gni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return hoe(N);if(!N||!(V=lr(V)))return N;var Le=I2(N),He=I2(V),lt=foe(Le,He),yt=goe(Le,He)+1;return Zu(Le,lt,yt).join("")}function mni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return N.slice(0,voe(N)+1);if(!N||!(V=lr(V)))return N;var Le=I2(N),He=goe(Le,I2(V))+1;return Zu(Le,0,He).join("")}function kni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return N.replace(yi,"");if(!N||!(V=lr(V)))return N;var Le=I2(N),He=foe(Le,I2(V));return Zu(Le,He).join("")}function vni(N,V){var ce=E,Le=T;if(qd(V)){var He="separator"in V?V.separator:He;ce="length"in V?Qs(V.length):ce,Le="omission"in V?lr(V.omission):Le}N=Rl(N);var lt=N.length;if(VL(N)){var yt=I2(N);lt=yt.length}if(ce>=lt)return N;var Qt=ce-zL(Le);if(Qt<1)return Le;var Yt=yt?Zu(yt,0,Qt).join(""):N.slice(0,Qt);if(He===n)return Yt+Le;if(yt&&(Qt+=Yt.length-Qt),bCe(He)){if(N.slice(Qt).search(He)){var Rn,Mn=Yt;for(He.global||(He=wM(He.source,Rl(qn.exec(He))+"g")),He.lastIndex=0;Rn=He.exec(Mn);)var Jn=Rn.index;Yt=Yt.slice(0,Jn===n?Qt:Jn)}}else if(N.indexOf(lr(He),Qt)!=Qt){var Ki=Yt.lastIndexOf(He);Ki>-1&&(Yt=Yt.slice(0,Ki))}return Yt+Le}function Ani(N){return N=Rl(N),N&&pn.test(N)?N.replace(dn,Aoe):N}var pni=HM(function(N,V,ce){return N+(ce?" ":"")+V.toUpperCase()}),yCe=k$("toUpperCase");function wlt(N,V,ce){return N=Rl(N),V=ce?n:V,V===n?Sye(N)?Dye(N):Aye(N):N.match(V)||[]}var Olt=qe(function(N,V){try{return B1(N,n,V)}catch(ce){return pCe(ce)?ce:new Jr(ce)}}),bni=EC(function(N,V){return ik(V,function(ce){ce=rw(ce),Mp(N,ce,vCe(N[ce],N))}),N});function wni(N){var V=N==null?0:N.length,ce=vo();return N=V?Hc(N,function(Le){if(typeof Le[1]!="function")throw new rk(a);return[ce(Le[0]),Le[1]]}):[],qe(function(Le){for(var He=-1;++HeI)return[];var ce=W,Le=Yu(N,W);V=vo(V),N-=W;for(var He=GH(Le,V);++ce0||V<0)?new Is(ce):(N<0?ce=ce.takeRight(-N):N&&(ce=ce.drop(N)),V!==n&&(V=Qs(V),ce=V<0?ce.dropRight(-V):ce.take(V-N)),ce)},Is.prototype.takeRightWhile=function(N){return this.reverse().takeWhile(N).reverse()},Is.prototype.toArray=function(){return this.take(W)},M1(Is.prototype,function(N,V){var ce=/^(?:filter|find|map|reject)|While$/.test(V),Le=/^(?:head|last)$/.test(V),He=tt[Le?"take"+(V=="last"?"Right":""):V],lt=Le||/^find/.test(V);He&&(tt.prototype[V]=function(){var yt=this.__wrapped__,Qt=Le?[1]:arguments,Yt=yt instanceof Is,Rn=Qt[0],Mn=Yt||bs(yt),Jn=function(na){var wa=He.apply(tt,q3([na],Qt));return Le&&Ki?wa[0]:wa};Mn&&ce&&typeof Rn=="function"&&Rn.length!=1&&(Yt=Mn=!1);var Ki=this.__chain__,Dr=!!this.__actions__.length,Co=lt&&!Ki,Ms=Yt&&!Dr;if(!lt&&Mn){yt=Ms?yt:new Is(this);var _o=N.apply(yt,Qt);return _o.__actions__.push({func:ise,args:[Jn],thisArg:n}),new I1(_o,Ki)}return Co&&Ms?N.apply(this,Qt):(_o=this.thru(Jn),Co?Le?_o.value()[0]:_o.value():_o)})}),ik(["pop","push","shift","sort","splice","unshift"],function(N){var V=OM[N],ce=/^(?:push|sort|unshift)$/.test(N)?"tap":"thru",Le=/^(?:pop|shift)$/.test(N);tt.prototype[N]=function(){var He=arguments;if(Le&&!this.__chain__){var lt=this.value();return V.apply(bs(lt)?lt:[],He)}return this[ce](function(yt){return V.apply(bs(yt)?yt:[],He)})}}),M1(Is.prototype,function(N,V){var ce=tt[V];if(ce){var Le=ce.name+"";Ha.call(KL,Le)||(KL[Le]=[]),KL[Le].push({name:V,func:ce})}}),KL[Zoe(n,p).name]=[{name:"wrapper",func:n}],Is.prototype.clone=_oe,Is.prototype.reverse=Soe,Is.prototype.value=IM,tt.prototype.at=YJn,tt.prototype.chain=ZJn,tt.prototype.commit=qJn,tt.prototype.next=KJn,tt.prototype.plant=eei,tt.prototype.reverse=tei,tt.prototype.toJSON=tt.prototype.valueOf=tt.prototype.value=nei,tt.prototype.first=tt.prototype.head,PE&&(tt.prototype[PE]=JJn),tt},HL=Bye();pC?((pC.exports=HL)._=HL,jH._=HL):lf._=HL}).call(Ho)})(nve,nve.exports);nve.exports;const jDs={class:"header f ac jb"},WDs={class:"text"},VDs={class:"close"},zDs={class:"chatBox"},HDs={class:"ac",style:{gap:"5px"}},$Ds={class:"settingMenu"},XDs=400,GDs=Je({__name:"index",props:{title:String},emits:["close"],setup(e,{emit:t}){const{project:n}=xs(ph()),{connected:r,messages:o,status:s,episodesId:a,loadingHistory:l}=xs(g0()),d=e,u=t,h=fe("");function g(_){g0().chat(_),h.value=""}function m(){g0().stopGenerate()}function v(){const _=fo.confirm({header:$t("workbench.scriptAgent.msg.reconnect"),body:$t("workbench.scriptAgent.msg.notReconnect"),confirmBtn:$t("workbench.scriptAgent.msg.keepReconnect"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{g0().reconnect(),_.destroy()}})}const f={suggestion:_=>{var S;g0().chat((S=_==null?void 0:_.content)==null?void 0:S.prompt)}},k={message:$t("workbench.production.chatBox.messageMemory"),summary:$t("workbench.production.chatBox.summaryMemory"),all:$t("workbench.production.chatBox.allMemory")};function A(_){const S=fo.confirm({header:$t("workbench.production.chatBox.confirmClear"),body:$t("workbench.production.chatBox.confirmClearBody",{type:k[_]}),confirmBtn:$t("workbench.production.chatBox.confirmClearBtn"),cancelBtn:$t("workbench.production.cancel"),theme:"warning",onConfirm:async()=>{var L;await mn.post("/agents/clearMemory",{projectId:(L=n.value)==null?void 0:L.id,agentType:"productionAgent",episodesId:a.value,type:_}),window.$message.success($t("workbench.production.chatBox.memoryCleared",{type:k[_]})),S.destroy(),g0().getHistory()}})}const p=fe(null),b=fe(400),{pressed:w}=Uyi({target:p}),{x:O}=Nyi(),y=fe(0),C=fe(400);return pt(w,_=>{_&&(y.value=O.value,C.value=b.value)}),u6(()=>{if(w.value){const _=window.innerWidth*.8;b.value=Math.min(_,Math.max(XDs,C.value+(y.value-O.value)))}}),(_,S)=>{const L=_n("i-dot"),E=_n("i-click-to-fold"),T=tYn,D=JGn,P=_n("i-setting-config"),Q=Si,M=_n("i-api"),B=_n("i-delete"),R=_n("i-close"),I=_n("i-delete-one"),F=y1,j=eYn,W=f4e("loading");return xe(),Ge("div",{class:"rightChatBox",style:no({width:Ae(b)+"px"})},[ge("div",{ref_key:"resizeHandleRef",ref:p,class:"resizeHandle"},null,512),ge("div",jDs,[ge("span",WDs,[c(L,{theme:"outline",fill:Ae(r)?"green":"red"},null,8,["fill"]),Bt(" "+Pe(d.title),1)]),ge("div",VDs,[c(E,{size:"18",onClick:S[0]||(S[0]=Mr(H=>u("close"),["stop"]))})])]),uu((xe(),Ge("div",zDs,[c(D,{"clear-history":!1},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(o),H=>(xe(),Ut(T,{key:H.id,message:H,name:H.name,placement:H.role==="user"?"right":"left",variant:H.role==="user"?"base":"outline",handleActions:H.role==="user"?{}:f,status:H.status,allowContentSegmentCustom:""},null,8,["message","name","placement","variant","handleActions","status"]))),128))]),_:1}),c(j,{class:"inputBox",disabled:Ae(s)==="pending"||Ae(s)==="streaming"||!Ae(r),modelValue:Ae(h),"onUpdate:modelValue":S[5]||(S[5]=H=>Fn(h)?h.value=H:null),loading:Ae(s)==="pending"||Ae(s)==="streaming",placeholder:_.$t("workbench.production.chatBox.inputPlaceholder"),onSend:g,onStop:m},{"footer-prefix":Oe(()=>[ge("div",HDs,[c(F,{trigger:"click",placement:"top-left"},{content:Oe(()=>[ge("div",$Ds,[ge("div",{class:"settingMenuItem",onClick:S[1]||(S[1]=H=>v())},[c(M,{size:"14"}),ge("span",null,Pe(_.$t("workbench.scriptAgent.reconnect")),1)]),ge("div",{class:"settingMenuItem",onClick:S[2]||(S[2]=H=>A("message"))},[c(B,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearMessageMemory")),1)]),ge("div",{class:"settingMenuItem",onClick:S[3]||(S[3]=H=>A("summary"))},[c(R,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearSummaryMemory")),1)]),ge("div",{class:"settingMenuItem danger",onClick:S[4]||(S[4]=H=>A("all"))},[c(I,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearAllMemory")),1)])])]),default:Oe(()=>[c(Q,{shape:"square",variant:"outline",size:"small"},{icon:Oe(()=>[c(P,{size:"16"})]),_:1})]),_:1})])]),_:1},8,["disabled","modelValue","loading","placeholder"])])),[[W,Ae(l)]])],4)}}}),YDs=oo(GDs,[["__scopeId","data-v-776e6435"]]),ZDs={class:"floatingWindow"},qDs={class:"episodesSelect f ac"},KDs=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{canvasWheelEvent:n,otherSetting:r}=xs(ku()),o=fe(!0),{toObject:s,fromObject:a,fitView:l,findNode:d,onNodeDragStart:u,onNodeDragStop:h,onMoveStart:g,onMoveEnd:m,updateNodeInternals:v,getNodes:f,getViewport:k,setViewport:A}=nl(),p=fe(!1);let b={x:0,y:0,vx:0,vy:0};function w(oe){if(!p.value||oe.button!==0)return;oe.stopPropagation(),oe.preventDefault();const se=k();b={x:oe.clientX,y:oe.clientY,vx:se.x,vy:se.y},document.addEventListener("mousemove",O),document.addEventListener("mouseup",y,{once:!0})}function O(oe){A({x:b.vx+oe.clientX-b.x,y:b.vy+oe.clientY-b.y,zoom:k().zoom})}function y(){document.removeEventListener("mousemove",O)}Yg(document,"keydown",oe=>{oe.code==="Space"&&!oe.repeat&&(oe.preventDefault(),p.value=!0)}),Yg(document,"keyup",oe=>{oe.code==="Space"&&(p.value=!1)});const C=fe(!1);let _=null;function S(){_&&clearTimeout(_),C.value=!0}function L(){_&&clearTimeout(_),_=setTimeout(()=>{C.value=!1},150)}u(()=>S()),g(()=>S()),m(()=>L());const{layout:E}=eqn(),{episodesId:T,flowData:D,status:P}=xs(g0());Yi("episodesId",T);const Q=fe(!1),M=fe({script:{x:0,y:0},scriptPlan:{x:900,y:0},assets:{x:1200,y:4e3},storyboardTable:{x:1800,y:0},storyboard:{x:2500,y:0},workbench:{x:3e3,y:0}}),{nodes:B,edges:R}=u8s(D,M);h(async({nodes:oe})=>{await ai(),L();for(const se of oe)M.value[se.id]={x:se.position.x,y:se.position.y}}),pt(D,()=>{for(const oe of f.value)M.value[oe.id]={x:oe.position.x,y:oe.position.y}},{deep:!0});async function I(oe=60,se=100){for(;oe-- >0;){const le=f.value;if(le.length>0&&le.every(ee=>{var de;return((de=ee.dimensions)==null?void 0:de.width)&&ee.dimensions.width>0}))return!0;await new Promise(ue=>setTimeout(ue,se))}return!1}An(async()=>{if(await H(),!T.value)return;await I()&&await $()});const F=fe([]);function j(){return P.value!=="pending"&&P.value!=="streaming"?Promise.resolve(!0):new Promise(oe=>{const se=fo.confirm({header:$t("workbench.production.confirm"),body:$t("workbench.production.confirmEpisodesSwitch"),confirmBtn:$t("workbench.production.save"),cancelBtn:$t("workbench.production.cancel"),theme:"warning",onConfirm:()=>{se.destroy(),oe(!0)},onCancel:()=>{se.destroy(),oe(!1)},onClose:()=>{se.destroy(),oe(!1)}})})}function W(oe){const se=Array.isArray(oe)?oe[0]:oe,le=Number(se);!Number.isFinite(le)||le===T.value||(async()=>await j()&&(T.value=le,await g0().getFlowData()))()}async function H(){var se;const{data:oe}=await mn.post("/script/getScrptApi",{projectId:(se=t.value)==null?void 0:se.id,name:""});F.value=oe.map(le=>({label:le.name,value:le.id})),F.value.length&&(T.value=F.value[0].value),await g0().getHistory()}async function $(oe="LR"){var ie,te;await ai();const se=f.value.map(Z=>Z.id);v(se),await ai();let le=30,ue="",ee=0;for(;le-- >0;){if(se.every(he=>{var Ce;const pe=d(he);return((Ce=pe==null?void 0:pe.dimensions)==null?void 0:Ce.width)&&pe.dimensions.width>0})){const he=se.map(pe=>{var Qe,ke;const Ce=d(pe);return`${pe}:${(Qe=Ce==null?void 0:Ce.dimensions)==null?void 0:Qe.width}x${(ke=Ce==null?void 0:Ce.dimensions)==null?void 0:ke.height}`}).join(",");if(he===ue){if(ee++,ee>=2)break}else ee=0,ue=he}await new Promise(he=>setTimeout(he,80))}const de=s(),z=new Map;for(const Z of de.nodes){const he=d(Z.id);z.set(Z.id,{w:((ie=he==null?void 0:he.dimensions)==null?void 0:ie.width)??150,h:((te=he==null?void 0:he.dimensions)==null?void 0:te.height)??50})}const Y=80;if(oe==="LR"){const he=["script","scriptPlan","storyboardTable","storyboard","workbench","poster"].filter(me=>de.nodes.some(_e=>_e.id===me));let pe=0;for(const me of he){const _e=de.nodes.find(De=>De.id===me),Te=z.get(me);!_e||!Te||(_e.position.x=pe,_e.position.y=0,pe+=Te.w+Y)}const Ce=de.nodes.find(me=>me.id==="script"),Qe=de.nodes.find(me=>me.id==="assets"),ke=z.get("script");if(Ce&&Qe&&ke&&(Qe.position.x=Ce.position.x,Qe.position.y=Ce.position.y+ke.h+Y),Qe){const me=z.get("assets");if(me){const _e=Qe.position.x+me.w,Te=Qe.position.y,De=Te+me.h;for(const Ye of he){if(Ye==="script")continue;const ot=de.nodes.find(Se=>Se.id===Ye),We=z.get(Ye);if(!ot||!We)continue;const et=ot.position.y,st=et+We.h;if(Teet&&ot.position.x<_e){const Se=_e+Y-ot.position.x,Ie=he.indexOf(Ye);for(let ze=Ie;zegt.id===he[ze]);Ze&&(Ze.position.x+=Se)}break}}}}}else{const Z=[...z.values()].map(me=>me.w),he=[...z.values()].map(me=>me.h),pe=Z.length?Z.reduce((me,_e)=>me+_e,0)/Z.length:150,Qe=(he.length?he.reduce((me,_e)=>me+_e,0)/he.length:50)*.5+Y,ke=pe*.3+Y;de.nodes=E(de.nodes,de.edges,oe,ke,Qe)}await a(de),await ai();for(const Z of f.value)M.value[Z.id]={x:Z.position.x,y:Z.position.y};l({duration:300})}const G=X(()=>{const oe=F.value.find(se=>se.value===T.value);return oe?oe.label:""});pt(()=>T.value,async oe=>{!oe||oe<0||(await q(),g0().updateContext(),await g0().getHistory())});async function q(){await g0().getFlowData(),$()}const re=q4e("productionCurrent",0),J=[{element:".episodesSelect",title:$t("workbench.production.guideSwitchEpisode"),body:$t("workbench.production.guideSwitchEpisodeBody"),placement:"bottom"},{element:".guide-refresh-btn",title:$t("workbench.production.guideRefresh"),body:$t("workbench.production.guideRefreshBody"),placement:"bottom"},{element:".guide-layout-btn",title:$t("workbench.production.guideLayoutBtn"),body:$t("workbench.production.guideLayoutBtnBody"),placement:"bottom"},{element:".vue-flow__controls",title:$t("workbench.production.guideCanvasNav"),body:$t("workbench.production.guideCanvasNavBody"),placement:"right"}];return(oe,se)=>{const le=_n("i-document-folder"),ue=pA,ee=_n("i-refresh"),de=Si,z=el,Y=_n("i-tree-diagram"),ie=_n("i-loading-four"),te=_n("i-menu-unfold-one"),Z=S3i;return xe(),Ut(Ae(wZn),{class:Eo(["flowMain",{"is-interacting":Ae(C)&&Ae(r).interacting,"space-dragging":Ae(p)}]),onMousedown:w,nodes:Ae(T)?Ae(B):[],edges:Ae(T)?Ae(R):[],"nodes-draggable":!Ae(p),"nodes-connectable":!Ae(p),"elements-selectable":!Ae(p),"max-zoom":10,"min-zoom":.1,"fit-view-on-init":"","pan-on-scroll":Ae(n)=="scroll","zoom-on-scroll":Ae(n)=="zoom","selection-key-code":null,"multi-selection-key-code":null},{"node-script":Oe(he=>[c(Eys,{id:he.id,modelValue:Ae(D).script,"onUpdate:modelValue":se[0]||(se[0]=pe=>Ae(D).script=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-scriptPlan":Oe(he=>[c(Rys,{id:he.id,modelValue:Ae(D).scriptPlan,"onUpdate:modelValue":se[1]||(se[1]=pe=>Ae(D).scriptPlan=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-storyboardTable":Oe(he=>[c(j8s,{id:he.id,modelValue:Ae(D).storyboardTable,"onUpdate:modelValue":se[2]||(se[2]=pe=>Ae(D).storyboardTable=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-assets":Oe(he=>[c(M8s,{id:he.id,modelValue:Ae(D).assets,"onUpdate:modelValue":se[3]||(se[3]=pe=>Ae(D).assets=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-storyboard":Oe(he=>[c(iLs,{id:he.id,modelValue:Ae(D).storyboard,"onUpdate:modelValue":se[4]||(se[4]=pe=>Ae(D).storyboard=pe),assetsData:Ae(D).assets,handleIds:he.data.handleIds},null,8,["id","modelValue","assetsData","handleIds"])]),"node-workbench":Oe(he=>[c(UDs,{id:he.id,modelValue:Ae(D).workbench,"onUpdate:modelValue":se[5]||(se[5]=pe=>Ae(D).workbench=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),default:Oe(()=>[c(Ae(_Zn)),c(Ae(SZn)),ge("div",ZDs,[ge("div",qDs,[c(ue,{value:Ae(T),placeholder:oe.$t("workbench.production.selectPlaceholder"),autoWidth:"",options:Ae(F),filterable:"",onChange:W},{label:Oe(()=>[c(le,{size:"24"})]),_:1},8,["value","placeholder","options"]),c(z,{placement:"bottom",theme:"primary",content:oe.$t("workbench.production.getFlowData")},{default:Oe(()=>[c(de,{class:"guide-refresh-btn",onClick:q,variant:"outline"},{icon:Oe(()=>[c(ee,{size:"16"})]),_:1})]),_:1},8,["content"]),c(z,{placement:"bottom",theme:"primary",content:oe.$t("workbench.production.autoLayoutLR")},{default:Oe(()=>[c(de,{class:"guide-layout-btn",onClick:se[6]||(se[6]=he=>$()),variant:"outline",style:{"margin-left":"8px"}},{icon:Oe(()=>[c(Y,{size:"16"})]),_:1})]),_:1},8,["content"]),uu(c(ie,{class:"spin",size:"16",style:{"margin-left":"0.5rem"}},null,512),[[h1,Ae(Q)]])]),uu(ge("div",{class:"openRightChatBoxBtn c",onClick:se[7]||(se[7]=Mr(he=>o.value=!0,["stop"]))},[c(te,{theme:"outline",size:"24",fill:"#000000"})],512),[[h1,!Ae(o)]]),Ae(T)?uu((xe(),Ut(A8,{key:0,name:"slide"},{default:Oe(()=>[c(YDs,{title:Ae(G),modelValue:Ae(D),"onUpdate:modelValue":se[8]||(se[8]=he=>Fn(D)?D.value=he:null),onClose:se[9]||(se[9]=he=>o.value=!1)},null,8,["title","modelValue"])]),_:1},512)),[[h1,Ae(o)]]):nn("",!0)]),c(Z,{modelValue:Ae(re),"onUpdate:modelValue":se[10]||(se[10]=he=>Fn(re)?re.value=he:null),steps:J,onFinish:se[11]||(se[11]=()=>re.value=-1)},null,8,["modelValue"])]),_:1},8,["class","nodes","edges","nodes-draggable","nodes-connectable","elements-selectable","pan-on-scroll","zoom-on-scroll"])}}}),JDs=oo(KDs,[["__scopeId","data-v-04a9fb7e"]]),eBs=Object.freeze(Object.defineProperty({__proto__:null,default:JDs},Symbol.toStringTag,{value:"Module"})),tBs={class:"test"},nBs=Je({__name:"index",setup(e){const t=fe("");function n(){mn.get("/test/test").then(r=>{t.value=r})}return(r,o)=>{const s=Si;return xe(),Ge("div",tBs,[c(s,{theme:"primary",onClick:n},{default:Oe(()=>[...o[0]||(o[0]=[Bt("测试按钮",-1)])]),_:1}),ge("pre",null," "+Pe(Ae(t))+` +}`;var Ms=Olt(function(){return za(lt,Dr+"return "+Jn).apply(n,yt)});if(Ms.source=Jn,pCe(Ms))throw Ms;return Ms}function hni(N){return Rl(N).toLowerCase()}function fni(N){return Rl(N).toUpperCase()}function gni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return hoe(N);if(!N||!(V=lr(V)))return N;var Le=I2(N),He=I2(V),lt=foe(Le,He),yt=goe(Le,He)+1;return Zu(Le,lt,yt).join("")}function mni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return N.slice(0,voe(N)+1);if(!N||!(V=lr(V)))return N;var Le=I2(N),He=goe(Le,I2(V))+1;return Zu(Le,0,He).join("")}function kni(N,V,ce){if(N=Rl(N),N&&(ce||V===n))return N.replace(yi,"");if(!N||!(V=lr(V)))return N;var Le=I2(N),He=foe(Le,I2(V));return Zu(Le,He).join("")}function vni(N,V){var ce=E,Le=T;if(qd(V)){var He="separator"in V?V.separator:He;ce="length"in V?Qs(V.length):ce,Le="omission"in V?lr(V.omission):Le}N=Rl(N);var lt=N.length;if(VL(N)){var yt=I2(N);lt=yt.length}if(ce>=lt)return N;var Qt=ce-zL(Le);if(Qt<1)return Le;var Yt=yt?Zu(yt,0,Qt).join(""):N.slice(0,Qt);if(He===n)return Yt+Le;if(yt&&(Qt+=Yt.length-Qt),bCe(He)){if(N.slice(Qt).search(He)){var Rn,Mn=Yt;for(He.global||(He=wM(He.source,Rl(qn.exec(He))+"g")),He.lastIndex=0;Rn=He.exec(Mn);)var Jn=Rn.index;Yt=Yt.slice(0,Jn===n?Qt:Jn)}}else if(N.indexOf(lr(He),Qt)!=Qt){var Ki=Yt.lastIndexOf(He);Ki>-1&&(Yt=Yt.slice(0,Ki))}return Yt+Le}function Ani(N){return N=Rl(N),N&&pn.test(N)?N.replace(dn,Aoe):N}var pni=HM(function(N,V,ce){return N+(ce?" ":"")+V.toUpperCase()}),yCe=k$("toUpperCase");function wlt(N,V,ce){return N=Rl(N),V=ce?n:V,V===n?Sye(N)?Dye(N):Aye(N):N.match(V)||[]}var Olt=qe(function(N,V){try{return B1(N,n,V)}catch(ce){return pCe(ce)?ce:new Jr(ce)}}),bni=EC(function(N,V){return ik(V,function(ce){ce=rw(ce),Mp(N,ce,vCe(N[ce],N))}),N});function wni(N){var V=N==null?0:N.length,ce=vo();return N=V?Hc(N,function(Le){if(typeof Le[1]!="function")throw new rk(a);return[ce(Le[0]),Le[1]]}):[],qe(function(Le){for(var He=-1;++HeI)return[];var ce=W,Le=Yu(N,W);V=vo(V),N-=W;for(var He=GH(Le,V);++ce0||V<0)?new Is(ce):(N<0?ce=ce.takeRight(-N):N&&(ce=ce.drop(N)),V!==n&&(V=Qs(V),ce=V<0?ce.dropRight(-V):ce.take(V-N)),ce)},Is.prototype.takeRightWhile=function(N){return this.reverse().takeWhile(N).reverse()},Is.prototype.toArray=function(){return this.take(W)},M1(Is.prototype,function(N,V){var ce=/^(?:filter|find|map|reject)|While$/.test(V),Le=/^(?:head|last)$/.test(V),He=tt[Le?"take"+(V=="last"?"Right":""):V],lt=Le||/^find/.test(V);He&&(tt.prototype[V]=function(){var yt=this.__wrapped__,Qt=Le?[1]:arguments,Yt=yt instanceof Is,Rn=Qt[0],Mn=Yt||bs(yt),Jn=function(na){var wa=He.apply(tt,q3([na],Qt));return Le&&Ki?wa[0]:wa};Mn&&ce&&typeof Rn=="function"&&Rn.length!=1&&(Yt=Mn=!1);var Ki=this.__chain__,Dr=!!this.__actions__.length,Co=lt&&!Ki,Ms=Yt&&!Dr;if(!lt&&Mn){yt=Ms?yt:new Is(this);var _o=N.apply(yt,Qt);return _o.__actions__.push({func:ise,args:[Jn],thisArg:n}),new I1(_o,Ki)}return Co&&Ms?N.apply(this,Qt):(_o=this.thru(Jn),Co?Le?_o.value()[0]:_o.value():_o)})}),ik(["pop","push","shift","sort","splice","unshift"],function(N){var V=OM[N],ce=/^(?:push|sort|unshift)$/.test(N)?"tap":"thru",Le=/^(?:pop|shift)$/.test(N);tt.prototype[N]=function(){var He=arguments;if(Le&&!this.__chain__){var lt=this.value();return V.apply(bs(lt)?lt:[],He)}return this[ce](function(yt){return V.apply(bs(yt)?yt:[],He)})}}),M1(Is.prototype,function(N,V){var ce=tt[V];if(ce){var Le=ce.name+"";Ha.call(KL,Le)||(KL[Le]=[]),KL[Le].push({name:V,func:ce})}}),KL[Zoe(n,p).name]=[{name:"wrapper",func:n}],Is.prototype.clone=_oe,Is.prototype.reverse=Soe,Is.prototype.value=IM,tt.prototype.at=YJn,tt.prototype.chain=ZJn,tt.prototype.commit=qJn,tt.prototype.next=KJn,tt.prototype.plant=eei,tt.prototype.reverse=tei,tt.prototype.toJSON=tt.prototype.valueOf=tt.prototype.value=nei,tt.prototype.first=tt.prototype.head,PE&&(tt.prototype[PE]=JJn),tt},HL=Bye();pC?((pC.exports=HL)._=HL,jH._=HL):lf._=HL}).call(Ho)})(nve,nve.exports);nve.exports;const jDs={class:"header f ac jb"},WDs={class:"text"},VDs={class:"close"},zDs={class:"chatBox"},HDs={class:"ac",style:{gap:"5px"}},$Ds={class:"settingMenu"},XDs=400,GDs=Je({__name:"index",props:{title:String},emits:["close"],setup(e,{emit:t}){const{project:n}=xs(ph()),{connected:r,messages:o,status:s,episodesId:a,loadingHistory:l}=xs(g0()),d=e,u=t,h=fe("");function g(_){g0().chat(_),h.value=""}function m(){g0().stopGenerate()}function v(){const _=co.confirm({header:$t("workbench.scriptAgent.msg.reconnect"),body:$t("workbench.scriptAgent.msg.notReconnect"),confirmBtn:$t("workbench.scriptAgent.msg.keepReconnect"),cancelBtn:$t("workbench.scriptAgent.msg.cancel"),theme:"warning",onConfirm:async()=>{g0().reconnect(),_.destroy()}})}const f={suggestion:_=>{var S;g0().chat((S=_==null?void 0:_.content)==null?void 0:S.prompt)}},k={message:$t("workbench.production.chatBox.messageMemory"),summary:$t("workbench.production.chatBox.summaryMemory"),all:$t("workbench.production.chatBox.allMemory")};function A(_){const S=co.confirm({header:$t("workbench.production.chatBox.confirmClear"),body:$t("workbench.production.chatBox.confirmClearBody",{type:k[_]}),confirmBtn:$t("workbench.production.chatBox.confirmClearBtn"),cancelBtn:$t("workbench.production.cancel"),theme:"warning",onConfirm:async()=>{var L;await mn.post("/agents/clearMemory",{projectId:(L=n.value)==null?void 0:L.id,agentType:"productionAgent",episodesId:a.value,type:_}),window.$message.success($t("workbench.production.chatBox.memoryCleared",{type:k[_]})),S.destroy(),g0().getHistory()}})}const p=fe(null),b=fe(400),{pressed:w}=Uyi({target:p}),{x:O}=Nyi(),y=fe(0),C=fe(400);return pt(w,_=>{_&&(y.value=O.value,C.value=b.value)}),u6(()=>{if(w.value){const _=window.innerWidth*.8;b.value=Math.min(_,Math.max(XDs,C.value+(y.value-O.value)))}}),(_,S)=>{const L=_n("i-dot"),E=_n("i-click-to-fold"),T=tYn,D=JGn,P=_n("i-setting-config"),Q=Si,M=_n("i-api"),B=_n("i-delete"),R=_n("i-close"),I=_n("i-delete-one"),F=y1,j=eYn,W=f4e("loading");return xe(),Ge("div",{class:"rightChatBox",style:no({width:Ae(b)+"px"})},[ge("div",{ref_key:"resizeHandleRef",ref:p,class:"resizeHandle"},null,512),ge("div",jDs,[ge("span",WDs,[c(L,{theme:"outline",fill:Ae(r)?"green":"red"},null,8,["fill"]),Bt(" "+Pe(d.title),1)]),ge("div",VDs,[c(E,{size:"18",onClick:S[0]||(S[0]=Mr(H=>u("close"),["stop"]))})])]),uu((xe(),Ge("div",zDs,[c(D,{"clear-history":!1},{default:Oe(()=>[(xe(!0),Ge(sn,null,Bi(Ae(o),H=>(xe(),Ut(T,{key:H.id,message:H,name:H.name,placement:H.role==="user"?"right":"left",variant:H.role==="user"?"base":"outline",handleActions:H.role==="user"?{}:f,status:H.status,allowContentSegmentCustom:""},null,8,["message","name","placement","variant","handleActions","status"]))),128))]),_:1}),c(j,{class:"inputBox",disabled:Ae(s)==="pending"||Ae(s)==="streaming"||!Ae(r),modelValue:Ae(h),"onUpdate:modelValue":S[5]||(S[5]=H=>Fn(h)?h.value=H:null),loading:Ae(s)==="pending"||Ae(s)==="streaming",placeholder:_.$t("workbench.production.chatBox.inputPlaceholder"),onSend:g,onStop:m},{"footer-prefix":Oe(()=>[ge("div",HDs,[c(F,{trigger:"click",placement:"top-left"},{content:Oe(()=>[ge("div",$Ds,[ge("div",{class:"settingMenuItem",onClick:S[1]||(S[1]=H=>v())},[c(M,{size:"14"}),ge("span",null,Pe(_.$t("workbench.scriptAgent.reconnect")),1)]),ge("div",{class:"settingMenuItem",onClick:S[2]||(S[2]=H=>A("message"))},[c(B,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearMessageMemory")),1)]),ge("div",{class:"settingMenuItem",onClick:S[3]||(S[3]=H=>A("summary"))},[c(R,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearSummaryMemory")),1)]),ge("div",{class:"settingMenuItem danger",onClick:S[4]||(S[4]=H=>A("all"))},[c(I,{size:"14"}),ge("span",null,Pe(_.$t("workbench.production.chatBox.clearAllMemory")),1)])])]),default:Oe(()=>[c(Q,{shape:"square",variant:"outline",size:"small"},{icon:Oe(()=>[c(P,{size:"16"})]),_:1})]),_:1})])]),_:1},8,["disabled","modelValue","loading","placeholder"])])),[[W,Ae(l)]])],4)}}}),YDs=oo(GDs,[["__scopeId","data-v-776e6435"]]),ZDs={class:"floatingWindow"},qDs={class:"episodesSelect f ac"},KDs=Je({__name:"index",setup(e){const{project:t}=xs(ph()),{canvasWheelEvent:n,otherSetting:r}=xs(ku()),o=fe(!0),{toObject:s,fromObject:a,fitView:l,findNode:d,onNodeDragStart:u,onNodeDragStop:h,onMoveStart:g,onMoveEnd:m,updateNodeInternals:v,getNodes:f,getViewport:k,setViewport:A}=nl(),p=fe(!1);let b={x:0,y:0,vx:0,vy:0};function w(oe){if(!p.value||oe.button!==0)return;oe.stopPropagation(),oe.preventDefault();const se=k();b={x:oe.clientX,y:oe.clientY,vx:se.x,vy:se.y},document.addEventListener("mousemove",O),document.addEventListener("mouseup",y,{once:!0})}function O(oe){A({x:b.vx+oe.clientX-b.x,y:b.vy+oe.clientY-b.y,zoom:k().zoom})}function y(){document.removeEventListener("mousemove",O)}Yg(document,"keydown",oe=>{oe.code==="Space"&&!oe.repeat&&(oe.preventDefault(),p.value=!0)}),Yg(document,"keyup",oe=>{oe.code==="Space"&&(p.value=!1)});const C=fe(!1);let _=null;function S(){_&&clearTimeout(_),C.value=!0}function L(){_&&clearTimeout(_),_=setTimeout(()=>{C.value=!1},150)}u(()=>S()),g(()=>S()),m(()=>L());const{layout:E}=eqn(),{episodesId:T,flowData:D,status:P}=xs(g0());Yi("episodesId",T);const Q=fe(!1),M=fe({script:{x:0,y:0},scriptPlan:{x:900,y:0},assets:{x:1200,y:4e3},storyboardTable:{x:1800,y:0},storyboard:{x:2500,y:0},workbench:{x:3e3,y:0}}),{nodes:B,edges:R}=u8s(D,M);h(async({nodes:oe})=>{await ai(),L();for(const se of oe)M.value[se.id]={x:se.position.x,y:se.position.y}}),pt(D,()=>{for(const oe of f.value)M.value[oe.id]={x:oe.position.x,y:oe.position.y}},{deep:!0});async function I(oe=60,se=100){for(;oe-- >0;){const le=f.value;if(le.length>0&&le.every(ee=>{var de;return((de=ee.dimensions)==null?void 0:de.width)&&ee.dimensions.width>0}))return!0;await new Promise(ue=>setTimeout(ue,se))}return!1}An(async()=>{if(await H(),!T.value)return;await I()&&await $()});const F=fe([]);function j(){return P.value!=="pending"&&P.value!=="streaming"?Promise.resolve(!0):new Promise(oe=>{const se=co.confirm({header:$t("workbench.production.confirm"),body:$t("workbench.production.confirmEpisodesSwitch"),confirmBtn:$t("workbench.production.save"),cancelBtn:$t("workbench.production.cancel"),theme:"warning",onConfirm:()=>{se.destroy(),oe(!0)},onCancel:()=>{se.destroy(),oe(!1)},onClose:()=>{se.destroy(),oe(!1)}})})}function W(oe){const se=Array.isArray(oe)?oe[0]:oe,le=Number(se);!Number.isFinite(le)||le===T.value||(async()=>await j()&&(T.value=le,await g0().getFlowData()))()}async function H(){var se;const{data:oe}=await mn.post("/script/getScrptApi",{projectId:(se=t.value)==null?void 0:se.id,name:""});F.value=oe.map(le=>({label:le.name,value:le.id})),F.value.length&&(T.value=F.value[0].value),await g0().getHistory()}async function $(oe="LR"){var ie,te;await ai();const se=f.value.map(Z=>Z.id);v(se),await ai();let le=30,ue="",ee=0;for(;le-- >0;){if(se.every(he=>{var Ce;const pe=d(he);return((Ce=pe==null?void 0:pe.dimensions)==null?void 0:Ce.width)&&pe.dimensions.width>0})){const he=se.map(pe=>{var Qe,ke;const Ce=d(pe);return`${pe}:${(Qe=Ce==null?void 0:Ce.dimensions)==null?void 0:Qe.width}x${(ke=Ce==null?void 0:Ce.dimensions)==null?void 0:ke.height}`}).join(",");if(he===ue){if(ee++,ee>=2)break}else ee=0,ue=he}await new Promise(he=>setTimeout(he,80))}const de=s(),z=new Map;for(const Z of de.nodes){const he=d(Z.id);z.set(Z.id,{w:((ie=he==null?void 0:he.dimensions)==null?void 0:ie.width)??150,h:((te=he==null?void 0:he.dimensions)==null?void 0:te.height)??50})}const Y=80;if(oe==="LR"){const he=["script","scriptPlan","storyboardTable","storyboard","workbench","poster"].filter(me=>de.nodes.some(_e=>_e.id===me));let pe=0;for(const me of he){const _e=de.nodes.find(De=>De.id===me),Te=z.get(me);!_e||!Te||(_e.position.x=pe,_e.position.y=0,pe+=Te.w+Y)}const Ce=de.nodes.find(me=>me.id==="script"),Qe=de.nodes.find(me=>me.id==="assets"),ke=z.get("script");if(Ce&&Qe&&ke&&(Qe.position.x=Ce.position.x,Qe.position.y=Ce.position.y+ke.h+Y),Qe){const me=z.get("assets");if(me){const _e=Qe.position.x+me.w,Te=Qe.position.y,De=Te+me.h;for(const Ye of he){if(Ye==="script")continue;const ot=de.nodes.find(Se=>Se.id===Ye),We=z.get(Ye);if(!ot||!We)continue;const et=ot.position.y,st=et+We.h;if(Teet&&ot.position.x<_e){const Se=_e+Y-ot.position.x,Ie=he.indexOf(Ye);for(let ze=Ie;zegt.id===he[ze]);Ze&&(Ze.position.x+=Se)}break}}}}}else{const Z=[...z.values()].map(me=>me.w),he=[...z.values()].map(me=>me.h),pe=Z.length?Z.reduce((me,_e)=>me+_e,0)/Z.length:150,Qe=(he.length?he.reduce((me,_e)=>me+_e,0)/he.length:50)*.5+Y,ke=pe*.3+Y;de.nodes=E(de.nodes,de.edges,oe,ke,Qe)}await a(de),await ai();for(const Z of f.value)M.value[Z.id]={x:Z.position.x,y:Z.position.y};l({duration:300})}const G=X(()=>{const oe=F.value.find(se=>se.value===T.value);return oe?oe.label:""});pt(()=>T.value,async oe=>{!oe||oe<0||(await q(),g0().updateContext(),await g0().getHistory())});async function q(){await g0().getFlowData(),$()}const re=q4e("productionCurrent",0),J=[{element:".episodesSelect",title:$t("workbench.production.guideSwitchEpisode"),body:$t("workbench.production.guideSwitchEpisodeBody"),placement:"bottom"},{element:".guide-refresh-btn",title:$t("workbench.production.guideRefresh"),body:$t("workbench.production.guideRefreshBody"),placement:"bottom"},{element:".guide-layout-btn",title:$t("workbench.production.guideLayoutBtn"),body:$t("workbench.production.guideLayoutBtnBody"),placement:"bottom"},{element:".vue-flow__controls",title:$t("workbench.production.guideCanvasNav"),body:$t("workbench.production.guideCanvasNavBody"),placement:"right"}];return(oe,se)=>{const le=_n("i-document-folder"),ue=pA,ee=_n("i-refresh"),de=Si,z=el,Y=_n("i-tree-diagram"),ie=_n("i-loading-four"),te=_n("i-menu-unfold-one"),Z=S3i;return xe(),Ut(Ae(wZn),{class:Eo(["flowMain",{"is-interacting":Ae(C)&&Ae(r).interacting,"space-dragging":Ae(p)}]),onMousedown:w,nodes:Ae(T)?Ae(B):[],edges:Ae(T)?Ae(R):[],"nodes-draggable":!Ae(p),"nodes-connectable":!Ae(p),"elements-selectable":!Ae(p),"max-zoom":10,"min-zoom":.1,"fit-view-on-init":"","pan-on-scroll":Ae(n)=="scroll","zoom-on-scroll":Ae(n)=="zoom","selection-key-code":null,"multi-selection-key-code":null},{"node-script":Oe(he=>[c(Eys,{id:he.id,modelValue:Ae(D).script,"onUpdate:modelValue":se[0]||(se[0]=pe=>Ae(D).script=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-scriptPlan":Oe(he=>[c(Rys,{id:he.id,modelValue:Ae(D).scriptPlan,"onUpdate:modelValue":se[1]||(se[1]=pe=>Ae(D).scriptPlan=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-storyboardTable":Oe(he=>[c(j8s,{id:he.id,modelValue:Ae(D).storyboardTable,"onUpdate:modelValue":se[2]||(se[2]=pe=>Ae(D).storyboardTable=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-assets":Oe(he=>[c(M8s,{id:he.id,modelValue:Ae(D).assets,"onUpdate:modelValue":se[3]||(se[3]=pe=>Ae(D).assets=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),"node-storyboard":Oe(he=>[c(iLs,{id:he.id,modelValue:Ae(D).storyboard,"onUpdate:modelValue":se[4]||(se[4]=pe=>Ae(D).storyboard=pe),assetsData:Ae(D).assets,handleIds:he.data.handleIds},null,8,["id","modelValue","assetsData","handleIds"])]),"node-workbench":Oe(he=>[c(UDs,{id:he.id,modelValue:Ae(D).workbench,"onUpdate:modelValue":se[5]||(se[5]=pe=>Ae(D).workbench=pe),handleIds:he.data.handleIds},null,8,["id","modelValue","handleIds"])]),default:Oe(()=>[c(Ae(_Zn)),c(Ae(SZn)),ge("div",ZDs,[ge("div",qDs,[c(ue,{value:Ae(T),placeholder:oe.$t("workbench.production.selectPlaceholder"),autoWidth:"",options:Ae(F),filterable:"",onChange:W},{label:Oe(()=>[c(le,{size:"24"})]),_:1},8,["value","placeholder","options"]),c(z,{placement:"bottom",theme:"primary",content:oe.$t("workbench.production.getFlowData")},{default:Oe(()=>[c(de,{class:"guide-refresh-btn",onClick:q,variant:"outline"},{icon:Oe(()=>[c(ee,{size:"16"})]),_:1})]),_:1},8,["content"]),c(z,{placement:"bottom",theme:"primary",content:oe.$t("workbench.production.autoLayoutLR")},{default:Oe(()=>[c(de,{class:"guide-layout-btn",onClick:se[6]||(se[6]=he=>$()),variant:"outline",style:{"margin-left":"8px"}},{icon:Oe(()=>[c(Y,{size:"16"})]),_:1})]),_:1},8,["content"]),uu(c(ie,{class:"spin",size:"16",style:{"margin-left":"0.5rem"}},null,512),[[h1,Ae(Q)]])]),uu(ge("div",{class:"openRightChatBoxBtn c",onClick:se[7]||(se[7]=Mr(he=>o.value=!0,["stop"]))},[c(te,{theme:"outline",size:"24",fill:"#000000"})],512),[[h1,!Ae(o)]]),Ae(T)?uu((xe(),Ut(A8,{key:0,name:"slide"},{default:Oe(()=>[c(YDs,{title:Ae(G),modelValue:Ae(D),"onUpdate:modelValue":se[8]||(se[8]=he=>Fn(D)?D.value=he:null),onClose:se[9]||(se[9]=he=>o.value=!1)},null,8,["title","modelValue"])]),_:1},512)),[[h1,Ae(o)]]):nn("",!0)]),c(Z,{modelValue:Ae(re),"onUpdate:modelValue":se[10]||(se[10]=he=>Fn(re)?re.value=he:null),steps:J,onFinish:se[11]||(se[11]=()=>re.value=-1)},null,8,["modelValue"])]),_:1},8,["class","nodes","edges","nodes-draggable","nodes-connectable","elements-selectable","pan-on-scroll","zoom-on-scroll"])}}}),JDs=oo(KDs,[["__scopeId","data-v-04a9fb7e"]]),eBs=Object.freeze(Object.defineProperty({__proto__:null,default:JDs},Symbol.toStringTag,{value:"Module"})),tBs={class:"test"},nBs=Je({__name:"index",setup(e){const t=fe("");function n(){mn.get("/test/test").then(r=>{t.value=r})}return(r,o)=>{const s=Si;return xe(),Ge("div",tBs,[c(s,{theme:"primary",onClick:n},{default:Oe(()=>[...o[0]||(o[0]=[Bt("测试按钮",-1)])]),_:1}),ge("pre",null," "+Pe(Ae(t))+` `,1)])}}}),iBs=Object.freeze(Object.defineProperty({__proto__:null,default:nBs},Symbol.toStringTag,{value:"Module"})),rBs={class:"formBox"},oBs={class:"logoBox fc"},sBs=["src"],aBs={class:"fc c"},lBs={class:"slogan"},cBs={class:"login-form"},dBs={class:"tips c"},uBs={class:"settingBtn"},hBs={__name:"index",setup(e){const{locale:t}=aI(),n=GZe.map(m=>({content:m.label,value:m.value})),r=m=>{t.value=m.value,yW.value=m.value},o=ku(),{baseUrl:s,isElectron:a}=xs(o),l=fe(!1),d=fe(s.value),u=()=>{s.value=d.value,l.value=!1,window.$message.success($t("login.settingsSaved"))},h=fe({show:!0,loginLoading:!1,user:{username:"",password:""},rules:{username:[{required:!0,message:$t("login.usernameRequired")}],password:[{required:!0,message:$t("login.passwordRequired")}]}}),g=()=>{if(!h.value.user.username||!h.value.user.password){window.$message.warning($t("login.enterUsernameAndPassword"));return}h.value.loginLoading=!0;const m={...h.value.user};mn.post("/login/login",m).then(({data:v})=>{localStorage.setItem("token",v.token),localStorage.setItem("userId",v.id),tie.push("/project"),window.$message.success($t("login.loginSuccess")),h.value.loginLoading=!1}).catch(v=>{h.value.loginLoading=!1,window.$message.error(v.message)})};return(m,v)=>{const f=Wu,k=p2,A=A2,p=gc,b=Si,w=_n("i-translate"),O=Rne,y=_n("i-setting-two");return xe(),Ge(sn,null,[ge("div",{class:"loginPage",style:no({height:Ae(a)?"calc(100vh - 32px)":"100vh"})},[ge("div",rBs,[c(p,{visible:Ae(l),"onUpdate:visible":v[1]||(v[1]=C=>Fn(l)?l.value=C:null),header:m.$t("login.settings"),onConfirm:u,width:400},{default:Oe(()=>[c(A,{"label-width":"80px",labelAlign:"top"},{default:Oe(()=>[c(k,{label:m.$t("login.requestAddress")},{default:Oe(()=>[c(f,{modelValue:Ae(d),"onUpdate:modelValue":v[0]||(v[0]=C=>Fn(d)?d.value=C:null),placeholder:"http://localhost:10588"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),_:1},8,["visible","header"]),ge("div",oBs,[ge("img",{src:Ae(lbe),alt:"logo",class:"logoImg"},null,8,sBs),ge("div",aBs,[v[5]||(v[5]=ge("span",{class:"logoText"},"ToonFlow",-1)),ge("span",lBs,Pe(m.$t("login.slogan")),1)])]),ge("div",cBs,[c(f,{modelValue:Ae(h).user.username,"onUpdate:modelValue":v[2]||(v[2]=C=>Ae(h).user.username=C),placeholder:m.$t("login.username"),autocomplete:"username",size:"large"},null,8,["modelValue","placeholder"]),c(f,{modelValue:Ae(h).user.password,"onUpdate:modelValue":v[3]||(v[3]=C=>Ae(h).user.password=C),type:"password",placeholder:m.$t("login.password"),size:"large"},null,8,["modelValue","placeholder"]),c(b,{class:"loginBtn",theme:"primary",size:"large",loading:Ae(h).loginLoading,onClick:g,block:""},{default:Oe(()=>[Bt(Pe(m.$t("login.login")),1)]),_:1},8,["loading"])]),ge("div",dBs,Pe(m.$t("login.tips")),1)])],4),ge("div",uBs,[c(O,{options:Ae(n),trigger:"click",onClick:r,maxColumnWidth:150},{default:Oe(()=>[c(b,{shape:"circle",theme:"default",size:"large"},{icon:Oe(()=>[c(w,{theme:"outline",size:"20"})]),_:1})]),_:1},8,["options"]),c(b,{shape:"circle",theme:"primary",size:"large",onClick:v[4]||(v[4]=C=>l.value=!0)},{icon:Oe(()=>[c(y,{theme:"outline",size:"20"})]),_:1})])],64)}}},fBs=oo(hBs,[["__scopeId","data-v-f82a7296"]]),gBs=Object.freeze(Object.defineProperty({__proto__:null,default:fBs},Symbol.toStringTag,{value:"Module"})),mBs=2*60*1e3;let Gqn=class{constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>mBs&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=twe({moduleId:"vs/language/css/cssWorker",createWorker:()=>new Worker(new URL(""+new URL("css.worker-BvV5MPou.js",import.meta.url).href,import.meta.url),{type:"module"}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let n;return this._getClient().then(r=>{n=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>n)}};var h2n;(function(e){function t(n){return typeof n=="string"}e.is=t})(h2n||(h2n={}));var aYe;(function(e){function t(n){return typeof n=="string"}e.is=t})(aYe||(aYe={}));var f2n;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(n){return typeof n=="number"&&e.MIN_VALUE<=n&&n<=e.MAX_VALUE}e.is=t})(f2n||(f2n={}));var ive;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(n){return typeof n=="number"&&e.MIN_VALUE<=n&&n<=e.MAX_VALUE}e.is=t})(ive||(ive={}));var Nb;(function(e){function t(r,o){return r===Number.MAX_VALUE&&(r=ive.MAX_VALUE),o===Number.MAX_VALUE&&(o=ive.MAX_VALUE),{line:r,character:o}}e.create=t;function n(r){let o=r;return cn.objectLiteral(o)&&cn.uinteger(o.line)&&cn.uinteger(o.character)}e.is=n})(Nb||(Nb={}));var hh;(function(e){function t(r,o,s,a){if(cn.uinteger(r)&&cn.uinteger(o)&&cn.uinteger(s)&&cn.uinteger(a))return{start:Nb.create(r,o),end:Nb.create(s,a)};if(Nb.is(r)&&Nb.is(o))return{start:r,end:o};throw new Error(`Range#create called with invalid arguments[${r}, ${o}, ${s}, ${a}]`)}e.create=t;function n(r){let o=r;return cn.objectLiteral(o)&&Nb.is(o.start)&&Nb.is(o.end)}e.is=n})(hh||(hh={}));var rve;(function(e){function t(r,o){return{uri:r,range:o}}e.create=t;function n(r){let o=r;return cn.objectLiteral(o)&&hh.is(o.range)&&(cn.string(o.uri)||cn.undefined(o.uri))}e.is=n})(rve||(rve={}));var g2n;(function(e){function t(r,o,s,a){return{targetUri:r,targetRange:o,targetSelectionRange:s,originSelectionRange:a}}e.create=t;function n(r){let o=r;return cn.objectLiteral(o)&&hh.is(o.targetRange)&&cn.string(o.targetUri)&&hh.is(o.targetSelectionRange)&&(hh.is(o.originSelectionRange)||cn.undefined(o.originSelectionRange))}e.is=n})(g2n||(g2n={}));var lYe;(function(e){function t(r,o,s,a){return{red:r,green:o,blue:s,alpha:a}}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&cn.numberRange(o.red,0,1)&&cn.numberRange(o.green,0,1)&&cn.numberRange(o.blue,0,1)&&cn.numberRange(o.alpha,0,1)}e.is=n})(lYe||(lYe={}));var m2n;(function(e){function t(r,o){return{range:r,color:o}}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&hh.is(o.range)&&lYe.is(o.color)}e.is=n})(m2n||(m2n={}));var k2n;(function(e){function t(r,o,s){return{label:r,textEdit:o,additionalTextEdits:s}}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&cn.string(o.label)&&(cn.undefined(o.textEdit)||gz.is(o))&&(cn.undefined(o.additionalTextEdits)||cn.typedArray(o.additionalTextEdits,gz.is))}e.is=n})(k2n||(k2n={}));var mq;(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(mq||(mq={}));var v2n;(function(e){function t(r,o,s,a,l,d){const u={startLine:r,endLine:o};return cn.defined(s)&&(u.startCharacter=s),cn.defined(a)&&(u.endCharacter=a),cn.defined(l)&&(u.kind=l),cn.defined(d)&&(u.collapsedText=d),u}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&cn.uinteger(o.startLine)&&cn.uinteger(o.startLine)&&(cn.undefined(o.startCharacter)||cn.uinteger(o.startCharacter))&&(cn.undefined(o.endCharacter)||cn.uinteger(o.endCharacter))&&(cn.undefined(o.kind)||cn.string(o.kind))}e.is=n})(v2n||(v2n={}));var cYe;(function(e){function t(r,o){return{location:r,message:o}}e.create=t;function n(r){let o=r;return cn.defined(o)&&rve.is(o.location)&&cn.string(o.message)}e.is=n})(cYe||(cYe={}));var HN;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(HN||(HN={}));var A2n;(function(e){e.Unnecessary=1,e.Deprecated=2})(A2n||(A2n={}));var p2n;(function(e){function t(n){const r=n;return cn.objectLiteral(r)&&cn.string(r.href)}e.is=t})(p2n||(p2n={}));var ove;(function(e){function t(r,o,s,a,l,d){let u={range:r,message:o};return cn.defined(s)&&(u.severity=s),cn.defined(a)&&(u.code=a),cn.defined(l)&&(u.source=l),cn.defined(d)&&(u.relatedInformation=d),u}e.create=t;function n(r){var o;let s=r;return cn.defined(s)&&hh.is(s.range)&&cn.string(s.message)&&(cn.number(s.severity)||cn.undefined(s.severity))&&(cn.integer(s.code)||cn.string(s.code)||cn.undefined(s.code))&&(cn.undefined(s.codeDescription)||cn.string((o=s.codeDescription)===null||o===void 0?void 0:o.href))&&(cn.string(s.source)||cn.undefined(s.source))&&(cn.undefined(s.relatedInformation)||cn.typedArray(s.relatedInformation,cYe.is))}e.is=n})(ove||(ove={}));var fz;(function(e){function t(r,o,...s){let a={title:r,command:o};return cn.defined(s)&&s.length>0&&(a.arguments=s),a}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.string(o.title)&&cn.string(o.command)}e.is=n})(fz||(fz={}));var gz;(function(e){function t(s,a){return{range:s,newText:a}}e.replace=t;function n(s,a){return{range:{start:s,end:s},newText:a}}e.insert=n;function r(s){return{range:s,newText:""}}e.del=r;function o(s){const a=s;return cn.objectLiteral(a)&&cn.string(a.newText)&&hh.is(a.range)}e.is=o})(gz||(gz={}));var dYe;(function(e){function t(r,o,s){const a={label:r};return o!==void 0&&(a.needsConfirmation=o),s!==void 0&&(a.description=s),a}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&cn.string(o.label)&&(cn.boolean(o.needsConfirmation)||o.needsConfirmation===void 0)&&(cn.string(o.description)||o.description===void 0)}e.is=n})(dYe||(dYe={}));var mz;(function(e){function t(n){const r=n;return cn.string(r)}e.is=t})(mz||(mz={}));var b2n;(function(e){function t(s,a,l){return{range:s,newText:a,annotationId:l}}e.replace=t;function n(s,a,l){return{range:{start:s,end:s},newText:a,annotationId:l}}e.insert=n;function r(s,a){return{range:s,newText:"",annotationId:a}}e.del=r;function o(s){const a=s;return gz.is(a)&&(dYe.is(a.annotationId)||mz.is(a.annotationId))}e.is=o})(b2n||(b2n={}));var uYe;(function(e){function t(r,o){return{textDocument:r,edits:o}}e.create=t;function n(r){let o=r;return cn.defined(o)&&kYe.is(o.textDocument)&&Array.isArray(o.edits)}e.is=n})(uYe||(uYe={}));var hYe;(function(e){function t(r,o,s){let a={kind:"create",uri:r};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(a.options=o),s!==void 0&&(a.annotationId=s),a}e.create=t;function n(r){let o=r;return o&&o.kind==="create"&&cn.string(o.uri)&&(o.options===void 0||(o.options.overwrite===void 0||cn.boolean(o.options.overwrite))&&(o.options.ignoreIfExists===void 0||cn.boolean(o.options.ignoreIfExists)))&&(o.annotationId===void 0||mz.is(o.annotationId))}e.is=n})(hYe||(hYe={}));var fYe;(function(e){function t(r,o,s,a){let l={kind:"rename",oldUri:r,newUri:o};return s!==void 0&&(s.overwrite!==void 0||s.ignoreIfExists!==void 0)&&(l.options=s),a!==void 0&&(l.annotationId=a),l}e.create=t;function n(r){let o=r;return o&&o.kind==="rename"&&cn.string(o.oldUri)&&cn.string(o.newUri)&&(o.options===void 0||(o.options.overwrite===void 0||cn.boolean(o.options.overwrite))&&(o.options.ignoreIfExists===void 0||cn.boolean(o.options.ignoreIfExists)))&&(o.annotationId===void 0||mz.is(o.annotationId))}e.is=n})(fYe||(fYe={}));var gYe;(function(e){function t(r,o,s){let a={kind:"delete",uri:r};return o!==void 0&&(o.recursive!==void 0||o.ignoreIfNotExists!==void 0)&&(a.options=o),s!==void 0&&(a.annotationId=s),a}e.create=t;function n(r){let o=r;return o&&o.kind==="delete"&&cn.string(o.uri)&&(o.options===void 0||(o.options.recursive===void 0||cn.boolean(o.options.recursive))&&(o.options.ignoreIfNotExists===void 0||cn.boolean(o.options.ignoreIfNotExists)))&&(o.annotationId===void 0||mz.is(o.annotationId))}e.is=n})(gYe||(gYe={}));var mYe;(function(e){function t(n){let r=n;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(o=>cn.string(o.kind)?hYe.is(o)||fYe.is(o)||gYe.is(o):uYe.is(o)))}e.is=t})(mYe||(mYe={}));var w2n;(function(e){function t(r){return{uri:r}}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.string(o.uri)}e.is=n})(w2n||(w2n={}));var O2n;(function(e){function t(r,o){return{uri:r,version:o}}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.string(o.uri)&&cn.integer(o.version)}e.is=n})(O2n||(O2n={}));var kYe;(function(e){function t(r,o){return{uri:r,version:o}}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.string(o.uri)&&(o.version===null||cn.integer(o.version))}e.is=n})(kYe||(kYe={}));var y2n;(function(e){function t(r,o,s,a){return{uri:r,languageId:o,version:s,text:a}}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.string(o.uri)&&cn.string(o.languageId)&&cn.integer(o.version)&&cn.string(o.text)}e.is=n})(y2n||(y2n={}));var vYe;(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(n){const r=n;return r===e.PlainText||r===e.Markdown}e.is=t})(vYe||(vYe={}));var Fte;(function(e){function t(n){const r=n;return cn.objectLiteral(n)&&vYe.is(r.kind)&&cn.string(r.value)}e.is=t})(Fte||(Fte={}));var _h;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(_h||(_h={}));var AYe;(function(e){e.PlainText=1,e.Snippet=2})(AYe||(AYe={}));var C2n;(function(e){e.Deprecated=1})(C2n||(C2n={}));var _2n;(function(e){function t(r,o,s){return{newText:r,insert:o,replace:s}}e.create=t;function n(r){const o=r;return o&&cn.string(o.newText)&&hh.is(o.insert)&&hh.is(o.replace)}e.is=n})(_2n||(_2n={}));var S2n;(function(e){e.asIs=1,e.adjustIndentation=2})(S2n||(S2n={}));var L2n;(function(e){function t(n){const r=n;return r&&(cn.string(r.detail)||r.detail===void 0)&&(cn.string(r.description)||r.description===void 0)}e.is=t})(L2n||(L2n={}));var x2n;(function(e){function t(n){return{label:n}}e.create=t})(x2n||(x2n={}));var E2n;(function(e){function t(n,r){return{items:n||[],isIncomplete:!!r}}e.create=t})(E2n||(E2n={}));var sve;(function(e){function t(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}e.fromPlainText=t;function n(r){const o=r;return cn.string(o)||cn.objectLiteral(o)&&cn.string(o.language)&&cn.string(o.value)}e.is=n})(sve||(sve={}));var T2n;(function(e){function t(n){let r=n;return!!r&&cn.objectLiteral(r)&&(Fte.is(r.contents)||sve.is(r.contents)||cn.typedArray(r.contents,sve.is))&&(n.range===void 0||hh.is(n.range))}e.is=t})(T2n||(T2n={}));var Q2n;(function(e){function t(n,r){return r?{label:n,documentation:r}:{label:n}}e.create=t})(Q2n||(Q2n={}));var D2n;(function(e){function t(n,r,...o){let s={label:n};return cn.defined(r)&&(s.documentation=r),cn.defined(o)?s.parameters=o:s.parameters=[],s}e.create=t})(D2n||(D2n={}));var kq;(function(e){e.Text=1,e.Read=2,e.Write=3})(kq||(kq={}));var B2n;(function(e){function t(n,r){let o={range:n};return cn.number(r)&&(o.kind=r),o}e.create=t})(B2n||(B2n={}));var Sh;(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(Sh||(Sh={}));var R2n;(function(e){e.Deprecated=1})(R2n||(R2n={}));var I2n;(function(e){function t(n,r,o,s,a){let l={name:n,kind:r,location:{uri:s,range:o}};return a&&(l.containerName=a),l}e.create=t})(I2n||(I2n={}));var M2n;(function(e){function t(n,r,o,s){return s!==void 0?{name:n,kind:r,location:{uri:o,range:s}}:{name:n,kind:r,location:{uri:o}}}e.create=t})(M2n||(M2n={}));var P2n;(function(e){function t(r,o,s,a,l,d){let u={name:r,detail:o,kind:s,range:a,selectionRange:l};return d!==void 0&&(u.children=d),u}e.create=t;function n(r){let o=r;return o&&cn.string(o.name)&&cn.number(o.kind)&&hh.is(o.range)&&hh.is(o.selectionRange)&&(o.detail===void 0||cn.string(o.detail))&&(o.deprecated===void 0||cn.boolean(o.deprecated))&&(o.children===void 0||Array.isArray(o.children))&&(o.tags===void 0||Array.isArray(o.tags))}e.is=n})(P2n||(P2n={}));var F2n;(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(F2n||(F2n={}));var ave;(function(e){e.Invoked=1,e.Automatic=2})(ave||(ave={}));var N2n;(function(e){function t(r,o,s){let a={diagnostics:r};return o!=null&&(a.only=o),s!=null&&(a.triggerKind=s),a}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.typedArray(o.diagnostics,ove.is)&&(o.only===void 0||cn.typedArray(o.only,cn.string))&&(o.triggerKind===void 0||o.triggerKind===ave.Invoked||o.triggerKind===ave.Automatic)}e.is=n})(N2n||(N2n={}));var U2n;(function(e){function t(r,o,s){let a={title:r},l=!0;return typeof o=="string"?(l=!1,a.kind=o):fz.is(o)?a.command=o:a.edit=o,l&&s!==void 0&&(a.kind=s),a}e.create=t;function n(r){let o=r;return o&&cn.string(o.title)&&(o.diagnostics===void 0||cn.typedArray(o.diagnostics,ove.is))&&(o.kind===void 0||cn.string(o.kind))&&(o.edit!==void 0||o.command!==void 0)&&(o.command===void 0||fz.is(o.command))&&(o.isPreferred===void 0||cn.boolean(o.isPreferred))&&(o.edit===void 0||mYe.is(o.edit))}e.is=n})(U2n||(U2n={}));var j2n;(function(e){function t(r,o){let s={range:r};return cn.defined(o)&&(s.data=o),s}e.create=t;function n(r){let o=r;return cn.defined(o)&&hh.is(o.range)&&(cn.undefined(o.command)||fz.is(o.command))}e.is=n})(j2n||(j2n={}));var W2n;(function(e){function t(r,o){return{tabSize:r,insertSpaces:o}}e.create=t;function n(r){let o=r;return cn.defined(o)&&cn.uinteger(o.tabSize)&&cn.boolean(o.insertSpaces)}e.is=n})(W2n||(W2n={}));var V2n;(function(e){function t(r,o,s){return{range:r,target:o,data:s}}e.create=t;function n(r){let o=r;return cn.defined(o)&&hh.is(o.range)&&(cn.undefined(o.target)||cn.string(o.target))}e.is=n})(V2n||(V2n={}));var z2n;(function(e){function t(r,o){return{range:r,parent:o}}e.create=t;function n(r){let o=r;return cn.objectLiteral(o)&&hh.is(o.range)&&(o.parent===void 0||e.is(o.parent))}e.is=n})(z2n||(z2n={}));var H2n;(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(H2n||(H2n={}));var $2n;(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})($2n||($2n={}));var X2n;(function(e){function t(n){const r=n;return cn.objectLiteral(r)&&(r.resultId===void 0||typeof r.resultId=="string")&&Array.isArray(r.data)&&(r.data.length===0||typeof r.data[0]=="number")}e.is=t})(X2n||(X2n={}));var G2n;(function(e){function t(r,o){return{range:r,text:o}}e.create=t;function n(r){const o=r;return o!=null&&hh.is(o.range)&&cn.string(o.text)}e.is=n})(G2n||(G2n={}));var Y2n;(function(e){function t(r,o,s){return{range:r,variableName:o,caseSensitiveLookup:s}}e.create=t;function n(r){const o=r;return o!=null&&hh.is(o.range)&&cn.boolean(o.caseSensitiveLookup)&&(cn.string(o.variableName)||o.variableName===void 0)}e.is=n})(Y2n||(Y2n={}));var Z2n;(function(e){function t(r,o){return{range:r,expression:o}}e.create=t;function n(r){const o=r;return o!=null&&hh.is(o.range)&&(cn.string(o.expression)||o.expression===void 0)}e.is=n})(Z2n||(Z2n={}));var q2n;(function(e){function t(r,o){return{frameId:r,stoppedLocation:o}}e.create=t;function n(r){const o=r;return cn.defined(o)&&hh.is(r.stoppedLocation)}e.is=n})(q2n||(q2n={}));var pYe;(function(e){e.Type=1,e.Parameter=2;function t(n){return n===1||n===2}e.is=t})(pYe||(pYe={}));var bYe;(function(e){function t(r){return{value:r}}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&(o.tooltip===void 0||cn.string(o.tooltip)||Fte.is(o.tooltip))&&(o.location===void 0||rve.is(o.location))&&(o.command===void 0||fz.is(o.command))}e.is=n})(bYe||(bYe={}));var K2n;(function(e){function t(r,o,s){const a={position:r,label:o};return s!==void 0&&(a.kind=s),a}e.create=t;function n(r){const o=r;return cn.objectLiteral(o)&&Nb.is(o.position)&&(cn.string(o.label)||cn.typedArray(o.label,bYe.is))&&(o.kind===void 0||pYe.is(o.kind))&&o.textEdits===void 0||cn.typedArray(o.textEdits,gz.is)&&(o.tooltip===void 0||cn.string(o.tooltip)||Fte.is(o.tooltip))&&(o.paddingLeft===void 0||cn.boolean(o.paddingLeft))&&(o.paddingRight===void 0||cn.boolean(o.paddingRight))}e.is=n})(K2n||(K2n={}));var J2n;(function(e){function t(n){return{kind:"snippet",value:n}}e.createSnippet=t})(J2n||(J2n={}));var evn;(function(e){function t(n,r,o,s){return{insertText:n,filterText:r,range:o,command:s}}e.create=t})(evn||(evn={}));var tvn;(function(e){function t(n){return{items:n}}e.create=t})(tvn||(tvn={}));var nvn;(function(e){e.Invoked=0,e.Automatic=1})(nvn||(nvn={}));var ivn;(function(e){function t(n,r){return{range:n,text:r}}e.create=t})(ivn||(ivn={}));var rvn;(function(e){function t(n,r){return{triggerKind:n,selectedCompletionInfo:r}}e.create=t})(rvn||(rvn={}));var ovn;(function(e){function t(n){const r=n;return cn.objectLiteral(r)&&aYe.is(r.uri)&&cn.string(r.name)}e.is=t})(ovn||(ovn={}));var svn;(function(e){function t(s,a,l,d){return new kBs(s,a,l,d)}e.create=t;function n(s){let a=s;return!!(cn.defined(a)&&cn.string(a.uri)&&(cn.undefined(a.languageId)||cn.string(a.languageId))&&cn.uinteger(a.lineCount)&&cn.func(a.getText)&&cn.func(a.positionAt)&&cn.func(a.offsetAt))}e.is=n;function r(s,a){let l=s.getText(),d=o(a,(h,g)=>{let m=h.range.start.line-g.range.start.line;return m===0?h.range.start.character-g.range.start.character:m}),u=l.length;for(let h=d.length-1;h>=0;h--){let g=d[h],m=s.offsetAt(g.range.start),v=s.offsetAt(g.range.end);if(v<=u)l=l.substring(0,m)+g.newText+l.substring(v,l.length);else throw new Error("Overlapping edit");u=m}return l}e.applyEdits=r;function o(s,a){if(s.length<=1)return s;const l=s.length/2|0,d=s.slice(0,l),u=s.slice(l);o(d,a),o(u,a);let h=0,g=0,m=0;for(;h0&&t.push(n.length),this._lineOffsets=t}return this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let n=this.getLineOffsets(),r=0,o=n.length;if(o===0)return Nb.create(0,t);for(;rt?o=a:r=a+1}let s=r-1;return Nb.create(s,t-n[s])}offsetAt(t){let n=this.getLineOffsets();if(t.line>=n.length)return this._content.length;if(t.line<0)return 0;let r=n[t.line],o=t.line+1"u"}e.undefined=r;function o(v){return v===!0||v===!1}e.boolean=o;function s(v){return t.call(v)==="[object String]"}e.string=s;function a(v){return t.call(v)==="[object Number]"}e.number=a;function l(v,f,k){return t.call(v)==="[object Number]"&&f<=v&&v<=k}e.numberRange=l;function d(v){return t.call(v)==="[object Number]"&&-2147483648<=v&&v<=2147483647}e.integer=d;function u(v){return t.call(v)==="[object Number]"&&0<=v&&v<=2147483647}e.uinteger=u;function h(v){return t.call(v)==="[object Function]"}e.func=h;function g(v){return v!==null&&typeof v=="object"}e.objectLiteral=g;function m(v,f){return Array.isArray(v)&&v.every(f)}e.typedArray=m})(cn||(cn={}));let Jre=class{constructor(t,n,r){this._languageId=t,this._worker=n,this._disposables=[],this._listener=Object.create(null);const o=a=>{let l=a.getLanguageId();if(l!==this._languageId)return;let d;this._listener[a.uri.toString()]=a.onDidChangeContent(()=>{window.clearTimeout(d),d=window.setTimeout(()=>this._doValidate(a.uri,l),500)}),this._doValidate(a.uri,l)},s=a=>{Ic.setModelMarkers(a,this._languageId,[]);let l=a.uri.toString(),d=this._listener[l];d&&(d.dispose(),delete this._listener[l])};this._disposables.push(Ic.onDidCreateModel(o)),this._disposables.push(Ic.onWillDisposeModel(s)),this._disposables.push(Ic.onDidChangeModelLanguage(a=>{s(a.model),o(a.model)})),this._disposables.push(r(a=>{Ic.getModels().forEach(l=>{l.getLanguageId()===this._languageId&&(s(l),o(l))})})),this._disposables.push({dispose:()=>{Ic.getModels().forEach(s);for(let a in this._listener)this._listener[a].dispose()}}),Ic.getModels().forEach(o)}dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,n){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{const o=r.map(a=>ABs(t,a));let s=Ic.getModel(t);s&&s.getLanguageId()===n&&Ic.setModelMarkers(s,n,o)}).then(void 0,r=>{console.error(r)})}};function vBs(e){switch(e){case HN.Error:return yf.Error;case HN.Warning:return yf.Warning;case HN.Information:return yf.Info;case HN.Hint:return yf.Hint;default:return yf.Info}}function ABs(e,t){let n=typeof t.code=="number"?String(t.code):t.code;return{severity:vBs(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source}}class FH{constructor(t,n){this._worker=t,this._triggerCharacters=n}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,n,r,o){const s=t.uri;return this._worker(s).then(a=>a.doComplete(s.toString(),hC(n))).then(a=>{if(!a)return;const l=t.getWordUntilPosition(n),d=new xee(n.lineNumber,l.startColumn,n.lineNumber,l.endColumn),u=a.items.map(h=>{const g={label:h.label,insertText:h.insertText||h.label,sortText:h.sortText,filterText:h.filterText,documentation:h.documentation,detail:h.detail,command:wBs(h.command),range:d,kind:bBs(h.kind)};return h.textEdit&&(pBs(h.textEdit)?g.range={insert:_g(h.textEdit.insert),replace:_g(h.textEdit.replace)}:g.range=_g(h.textEdit.range),g.insertText=h.textEdit.newText),h.additionalTextEdits&&(g.additionalTextEdits=h.additionalTextEdits.map(X6)),h.insertTextFormat===AYe.Snippet&&(g.insertTextRules=Tt.CompletionItemInsertTextRule.InsertAsSnippet),g});return{isIncomplete:a.isIncomplete,suggestions:u}})}}function hC(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function eoe(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function _g(e){if(e)return new xee(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function pBs(e){return typeof e.insert<"u"&&typeof e.replace<"u"}function bBs(e){const t=Tt.CompletionItemKind;switch(e){case _h.Text:return t.Text;case _h.Method:return t.Method;case _h.Function:return t.Function;case _h.Constructor:return t.Constructor;case _h.Field:return t.Field;case _h.Variable:return t.Variable;case _h.Class:return t.Class;case _h.Interface:return t.Interface;case _h.Module:return t.Module;case _h.Property:return t.Property;case _h.Unit:return t.Unit;case _h.Value:return t.Value;case _h.Enum:return t.Enum;case _h.Keyword:return t.Keyword;case _h.Snippet:return t.Snippet;case _h.Color:return t.Color;case _h.File:return t.File;case _h.Reference:return t.Reference}return t.Property}function X6(e){if(e)return{range:_g(e.range),text:e.newText}}function wBs(e){return e&&e.command==="editor.action.triggerSuggest"?{id:e.command,title:e.title,arguments:e.arguments}:void 0}class aM{constructor(t){this._worker=t}provideHover(t,n,r){let o=t.uri;return this._worker(o).then(s=>s.doHover(o.toString(),hC(n))).then(s=>{if(s)return{range:_g(s.range),contents:yBs(s.contents)}})}}function OBs(e){return e&&typeof e=="object"&&typeof e.kind=="string"}function avn(e){return typeof e=="string"?{value:e}:OBs(e)?e.kind==="plaintext"?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+` @@ -15883,7 +15883,7 @@ ${aKn(r)}`;return n}}function aKn(e){let t=`*@${e.name}*`;if(e.name==="param"&&e >>= <<= `),qFs=/enable|requires|diagnostic/,Cvn=new RegExp("[_\\p{XID_Start}]\\p{XID_Continue}*","u"),dF="variable.predefined",KFs={tokenPostfix:".wgsl",defaultToken:"invalid",unicode:!0,atoms:WFs,keywords:VFs,reserved:zFs,predeclared_enums:HFs,predeclared_types:$Fs,predeclared_type_generators:XFs,predeclared_type_aliases:GFs,predeclared_intrinsics:YFs,operators:ZFs,symbols:/[!%&*+\-\.\/:;<=>^|_~,]+/,tokenizer:{root:[[qFs,"keyword","@directive"],[Cvn,{cases:{"@atoms":dF,"@keywords":"keyword","@reserved":"invalid","@predeclared_enums":dF,"@predeclared_types":dF,"@predeclared_type_generators":dF,"@predeclared_type_aliases":dF,"@predeclared_intrinsics":dF,"@default":"identifier"}}],{include:"@commentOrSpace"},{include:"@numbers"},[/[{}()\[\]]/,"@brackets"],["@","annotation","@attribute"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/./,"invalid"]],commentOrSpace:[[/\s+/,"white"],[/\/\*/,"comment","@blockComment"],[/\/\/.*$/,"comment"]],blockComment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],attribute:[{include:"@commentOrSpace"},[/\w+/,"annotation","@pop"]],directive:[{include:"@commentOrSpace"},[/[()]/,"@brackets"],[/,/,"delimiter"],[Cvn,"meta.content"],[/;/,"delimiter","@pop"]],numbers:[[/0[fh]/,"number.float"],[/[1-9][0-9]*[fh]/,"number.float"],[/[0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+[eE][+-]?[0-9]+[fh]?/,"number.float"],[/0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/,"number.hex"],[/0[xX][0-9a-fA-F]+[iu]?/,"number.hex"],[/[1-9][0-9]*[iu]?/,"number"],[/0[iu]?/,"number"]]}},JFs=Object.freeze(Object.defineProperty({__proto__:null,conf:jFs,language:KFs},Symbol.toStringTag,{value:"Module"})),eNs={comments:{blockComment:["\x3C!--","-->"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:Tt.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:Tt.IndentAction.Indent}}]},tNs={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/\x3C!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/\x3C!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}},nNs=Object.freeze(Object.defineProperty({__proto__:null,conf:eNs,language:tNs},Symbol.toStringTag,{value:"Module"})),iNs={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:Tt.IndentAction.Indent}}]},rNs={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}},oNs=Object.freeze(Object.defineProperty({__proto__:null,conf:iNs,language:rNs},Symbol.toStringTag,{value:"Module"})); - +
diff --git a/package.json b/package.json index 91826f9..00465f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "toonflow", - "version": "1.0.11", + "version": "1.1.0", "description": "Toonflow 是一款 AI 短剧漫剧工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片和视频,实现高效的短剧创作。", "author": "HBAI-Ltd ", "license": "Apache-2.0", diff --git a/scripts/main.ts b/scripts/main.ts index d4472a8..0881c71 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -7,64 +7,24 @@ import Module from "module"; app.commandLine.appendSwitch("disable-gpu-shader-disk-cache"); app.commandLine.appendSwitch("disable-features", "CalculateNativeWinOcclusion"); -declare const __APP_VERSION__: string | undefined; +const TARGET_ENTRIES = new Set(["assets", "models", "serve", "skills", "web"]); -/** - * 将 extraResources 中的 data 目录复制到用户数据目录(跳过已存在的文件,保留用户修改) - */ - -function getVersionFromUpdateJson(filePath: string): string | null { - try { - if (fs.existsSync(filePath)) { - const data = JSON.parse(fs.readFileSync(filePath, "utf8")); - return data.version ?? null; - } - } catch {} - return null; -} - -function copyDirForce(src: string, dest: string): void { +function copyDir(src: string, dest: string): void { if (!fs.existsSync(src)) return; - if (fs.existsSync(dest)) { - fs.rmSync(dest, { recursive: true, force: true }); + fs.mkdirSync(dest, { recursive: true }); + for (const entry of fs.readdirSync(src, { withFileTypes: true })) { + const s = path.join(src, entry.name); + const d = path.join(dest, entry.name); + entry.isDirectory() ? copyDir(s, d) : fs.existsSync(d) || fs.copyFileSync(s, d); } - copyDirRecursive(src, dest); } function initializeData(): void { const srcDir = path.join(process.resourcesPath, "data"); const destDir = path.join(app.getPath("userData"), "data"); - const updateJsonFile = path.join(destDir, "update.json"); - const currentVersion = typeof __APP_VERSION__ !== "undefined" ? __APP_VERSION__ : "0.0.0"; - const userVersion = getVersionFromUpdateJson(updateJsonFile); - - // 首次安装或无update.json,直接全量拷贝 - if (!fs.existsSync(destDir) || !userVersion) { - copyDirRecursive(srcDir, destDir); - return; - } - - // 版本号不同则覆盖 serve 和 web 目录 - if (userVersion !== currentVersion) { - copyDirForce(path.join(srcDir, "serve"), path.join(destDir, "serve")); - copyDirForce(path.join(srcDir, "web"), path.join(destDir, "web")); - } -} - -function copyDirRecursive(src: string, dest: string): void { - if (!fs.existsSync(src)) return; - if (!fs.existsSync(dest)) fs.mkdirSync(dest, { recursive: true }); - for (const entry of fs.readdirSync(src, { withFileTypes: true })) { - // 跳过 oss 文件夹和 db2.sqlite 文件 - if (entry.isDirectory() && entry.name === "logs") continue; - if (entry.isDirectory() && entry.name === "oss") continue; - if (!entry.isDirectory() && entry.name === "db2.sqlite") continue; - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); - if (entry.isDirectory()) { - copyDirRecursive(srcPath, destPath); - } else if (!fs.existsSync(destPath)) { - fs.copyFileSync(srcPath, destPath); + for (const dir of TARGET_ENTRIES) { + if (!fs.existsSync(path.join(destDir, dir))) { + copyDir(path.join(srcDir, dir), path.join(destDir, dir)); } } } diff --git a/src/agents/productionAgent/index copy.ts b/src/agents/productionAgent/index copy.ts index fc4435f..4744625 100644 --- a/src/agents/productionAgent/index copy.ts +++ b/src/agents/productionAgent/index copy.ts @@ -3,10 +3,11 @@ import { tool } from "ai"; import { z } from "zod"; import u from "@/utils"; import Memory from "@/utils/agent/memory"; -import { useSkill } from "@/utils/agent/skillsTools"; +import { createSkillTools, parseFrontmatter, scanSkills, useSkill } from "@/utils/agent/skillsTools"; import useTools from "@/agents/productionAgent/tools"; import ResTool from "@/socket/resTool"; import * as fs from "fs"; +import path from "path"; export interface AgentContext { socket: Socket; @@ -34,121 +35,200 @@ function buildMemPrompt(mem: Awaited>): string { return `## Memory\n以下是你对用户的记忆,可作为参考但不要主动提及:\n${memoryContext}`; } -const subAgentList = ["executionAI", "supervisionAI"] as const; - export async function decisionAI(ctx: AgentContext) { const { isolationKey, text, abortSignal } = ctx; const memory = new Memory("productionAgent", isolationKey); await memory.add("user", text); - const { skillPaths } = await useSkill({ mainSkill: "production_agent_decision" }); - const prompt = await fs.promises.readFile(skillPaths.mainSkill, "utf-8"); + const skill = path.join(u.getPath("skills"), "production_agent_decision.md"); + const prompt = await fs.promises.readFile(skill, "utf-8"); + + const projectInfo = await u.db("o_project").where("id", ctx.resTool.data.projectId).first(); + if (!projectInfo) throw new Error(`项目不存在,ID: ${ctx.resTool.data.projectId}`); + const [_, imageModelName] = projectInfo.imageModel!.split(":"); + const [id, videoModelName] = projectInfo.videoModel!.split(":"); + const data = await u.db("o_vendorConfig").where("id", id).select("models").first(); + const models = JSON.parse(data!.models!); + const findData = models.find((i: any) => i.modelName == videoModelName); + const isRef = findData.mode.every((i: any) => Array.isArray(i)); + const modelInfo = `项目使用的模型如下:\n图像模型:${imageModelName}\n视频模型:${videoModelName}\n多参:${isRef ? "是" : "否"}`; const mem = buildMemPrompt(await memory.get(text)); const { textStream } = await u.Ai.Text("productionAgent").stream({ messages: [ { role: "system", content: prompt }, - { role: "system", content: mem }, + { role: "assistant", content: mem + "\n" + modelInfo }, { role: "user", content: text }, ], abortSignal, tools: { ...memory.getTools(), - run_sub_agent: runSubAgent(ctx), ...useTools({ resTool: ctx.resTool, msg: ctx.msg }), + ...createSubAgent(ctx), }, onFinish: async (completion) => { - await memory.add("assistant:decision", completion.text); + await memory.add("assistant:decision", removeAllXmlTags(completion.text)); }, }); return textStream; } -//====================== 执行层 ====================== - -export async function executionAI(ctx: AgentContext) { - const { text, abortSignal } = ctx; - - const skill = await useSkill({ - mainSkill: "production_agent_execution", - workspace: ["production_agent_skills/execution"], - attachedSkills: ["production_agent_skills/execution/driector_art_skills/chinese_sweet_romance/driector_skills"], //todo:后续可以改为动态加载 - }); - - const subMsg = ctx.resTool.newMessage("assistant", "执行导演"); - - const { textStream } = await u.Ai.Text("productionAgent").stream({ - system: skill.prompt, - messages: [{ role: "user", content: text }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool: ctx.resTool, msg: subMsg }), - }, - }); - - return { textStream, subMsg }; -} - -export async function supervisionAI(ctx: AgentContext) { - const { text, abortSignal } = ctx; - - const skill = await useSkill({ mainSkill: "production_agent_supervision", workspace: ["production_agent_skills/supervision"] }); - const subMsg = ctx.resTool.newMessage("assistant", "监制"); - - const { textStream } = await u.Ai.Text("productionAgent").stream({ - system: skill.prompt, - messages: [{ role: "user", content: text }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ - resTool: ctx.resTool, - msg: subMsg, - }), - }, - }); - - return { textStream, subMsg }; -} - -//工具函数 -function runSubAgent(parentCtx: AgentContext) { +function createSubAgent(parentCtx: AgentContext) { + const { resTool, abortSignal } = parentCtx; const memory = new Memory("productionAgent", parentCtx.isolationKey); - return tool({ - description: "启动子Agent执行独立任务。可用子Agent:executionAI, decisionAI, supervisionAI", - inputSchema: z.object({ - agent: z.enum(["executionAI", "supervisionAI"]).describe("子Agent名称"), - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ agent, prompt }) => { - const fn = [executionAI, supervisionAI][subAgentList.indexOf(agent)]; + async function runAgent({ + prompt, + system, + name, + memoryKey, + tools: extraTools, + messages, + }: { + prompt: string; + system: string; + name: string; + memoryKey: string; + tools?: Record; + messages?: { role: "user" | "assistant" | "system"; content: string }[]; + }) { + parentCtx.msg.complete(); + const subMsg = resTool.newMessage("assistant", name); + const text = subMsg.text(); + let fullResponse = ""; - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - // 子Agent用新消息回复 - const { textStream: subTextStream, subMsg } = await fn({ ...parentCtx, text: prompt }); - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of subTextStream) { + const { textStream } = await u.Ai.Text("scriptAgent").stream({ + system, + messages: messages ?? [{ role: "user", content: prompt }], + abortSignal, + tools: { ...extraTools, ...useTools({ resTool, msg: subMsg }) }, + }); + + try { + for await (const chunk of textStream) { + await new Promise((resolve) => setTimeout(() => resolve(), 1)); text.append(chunk); fullResponse += chunk; } text.complete(); subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:${agent === "executionAI" ? "execution" : "supervision"}`, fullResponse, { - name: agent === "executionAI" ? "执行导演" : "监制", - createTime: new Date(subMsg.datetime).getTime(), - }); - } + } catch (err: any) { + text.complete(); + subMsg.stop(); + throw err; + } - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "监制"); + if (fullResponse.trim()) { + await memory.add(memoryKey, removeAllXmlTags(fullResponse), { + name, + createTime: new Date(subMsg.datetime).getTime(), + }); + } - return fullResponse; + parentCtx.msg = resTool.newMessage("assistant", "视频策划"); + return fullResponse; + } + + const promptInput = z.object({ + prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), + }); + + const run_sub_agent_execution = tool({ + description: "执行层子Agent,负责衍生资产、", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_agent_execution.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + const addPrompt = + "\n" + + [ + "你必须使用如下XML格式写入工作区:\n```", + "拍摄计划:内容", + "分镜表:内容", + "分镜面板:", + "```", + ].join("\n"); + + const projectInfo = await u.db("o_project").where("id", resTool.data.projectId).first(); + if (!projectInfo) throw new Error(`项目不存在,ID: ${resTool.data.projectId}`); + const artSkills = await createArtSkills(projectInfo?.artStyle!, projectInfo?.directorManual!); + + const [_, imageModelName] = projectInfo.imageModel!.split(":"); + const [id, videoModelName] = projectInfo.videoModel!.split(":"); + const data = await u.db("o_vendorConfig").where("id", id).select("models").first(); + const models = JSON.parse(data!.models!); + const findData = models.find((i: any) => i.modelName == videoModelName); + const isRef = findData.mode.every((i: any) => Array.isArray(i)); + const modelInfo = `项目使用的模型如下:\n图像模型:${imageModelName}\n视频模型:${videoModelName}\n多参:${isRef ? "是" : "否"}`; + + return runAgent({ + prompt, + system: systemPrompt + addPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt + addPrompt }, + ], + tools: { ...artSkills.tools }, + }); }, }); + + const run_sub_agent_supervision = tool({ + description: "监制层子Agent,负责审核执行结果", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_agent_supervision.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + return runAgent({ + prompt, + system: systemPrompt, + name: "监制", + memoryKey: "assistant:supervision", + }); + }, + }); + + return { run_sub_agent_execution, run_sub_agent_supervision }; +} + +async function createArtSkills(artName: string, storyName: string) { + const artWorkerPath = u.getPath(["skills", "art_skills", artName, "driector_skills"]); + const storyWorkerPath = u.getPath(["skills", "story_skills", storyName, "driector_skills"]); + const skillList = [...(await scanSkills(artWorkerPath + "/*.md")), ...(await scanSkills(storyWorkerPath + "/*.md"))]; + const mainSkills: { path: string; name: string; description: string }[] = []; + for (const skillPath of skillList) { + if (!fs.existsSync(skillPath)) throw new Error(`主技能文件不存在: ${skillPath}`); + const content = await fs.promises.readFile(skillPath, "utf-8"); + const parsed = parseFrontmatter(content); + mainSkills.push({ path: skillPath, ...parsed }); + } + const res = { + prompt: `## Skills +以下技能提供了专业任务的专用指令。 +当任务与某个技能的描述匹配时,调用 activate_skill 工具并传入技能名称来加载完整指令。 +加载后遵循技能指令执行任务,需要时调用 read_skill_file 读取资源文件内容。 +${buildSkillPrompt(mainSkills)}`, + tools: createSkillTools(mainSkills, { mainSkill: mainSkills, secondarySkills: [], tertiarySkills: [] }), + }; + return res; +} + +function removeAllXmlTags(text: string): string { + text = text.replace(/<([a-zA-Z][\w-]*)(\s+[^>]*)?>([\s\S]*?)<\/\1>/g, ""); + text = text.replace(/<([a-zA-Z][\w-]*)(\s+[^>]*)?\/>/g, ""); + text = text.replace(/<\/?[a-zA-Z][\w-]*(\s+[^>]*)?>/g, ""); + return text.trim(); +} + +export function buildSkillPrompt(skills: { name: string; description: string }[]): string { + const skillEntries = skills + .map((s) => ` \n ${s.name}\n ${s.description}\n `) + .join("\n"); + return ` + +${skillEntries} +`; } diff --git a/src/agents/productionAgent/index.ts b/src/agents/productionAgent/index.ts index 4744625..2d304b7 100644 --- a/src/agents/productionAgent/index.ts +++ b/src/agents/productionAgent/index.ts @@ -65,7 +65,7 @@ export async function decisionAI(ctx: AgentContext) { tools: { ...memory.getTools(), ...useTools({ resTool: ctx.resTool, msg: ctx.msg }), - ...createSubAgent(ctx), + ...(await createSubAgent(ctx)), }, onFinish: async (completion) => { await memory.add("assistant:decision", removeAllXmlTags(completion.text)); @@ -75,7 +75,7 @@ export async function decisionAI(ctx: AgentContext) { return textStream; } -function createSubAgent(parentCtx: AgentContext) { +async function createSubAgent(parentCtx: AgentContext) { const { resTool, abortSignal } = parentCtx; const memory = new Memory("productionAgent", parentCtx.isolationKey); async function runAgent({ @@ -98,7 +98,7 @@ function createSubAgent(parentCtx: AgentContext) { const text = subMsg.text(); let fullResponse = ""; - const { textStream } = await u.Ai.Text("scriptAgent").stream({ + const { textStream } = await u.Ai.Text("productionAgent").stream({ system, messages: messages ?? [{ role: "user", content: prompt }], abortSignal, @@ -134,33 +134,99 @@ function createSubAgent(parentCtx: AgentContext) { prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), }); - const run_sub_agent_execution = tool({ - description: "执行层子Agent,负责衍生资产、", + const projectInfo = await u.db("o_project").where("id", resTool.data.projectId).first(); + if (!projectInfo) throw new Error(`项目不存在,ID: ${resTool.data.projectId}`); + const artSkills = await createArtSkills(projectInfo?.artStyle!, projectInfo?.directorManual!); + + const [_, imageModelName] = projectInfo.imageModel!.split(":"); + const [id, videoModelName] = projectInfo.videoModel!.split(":"); + const data = await u.db("o_vendorConfig").where("id", id).select("models").first(); + const models = JSON.parse(data!.models!); + const findData = models.find((i: any) => i.modelName == videoModelName); + const isRef = findData.mode.every((i: any) => Array.isArray(i)); + const modelInfo = `项目使用的模型如下:\n图像模型:${imageModelName}\n视频模型:${videoModelName}\n多参:${isRef ? "是" : "否"}`; + + // const run_sub_agent_execution = tool({ + // description: "执行层子Agent,负责衍生资产、", + // inputSchema: promptInput, + // execute: async ({ prompt }) => { + // const skill = path.join(u.getPath("skills"), "production_agent_execution.md"); + // const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + // const addPrompt = + // "\n" + + // [ + // "你必须使用如下XML格式写入工作区:\n```", + // "拍摄计划:内容", + // "分镜表:内容", + // "分镜面板:", + // "```", + // ].join("\n"); + + // return runAgent({ + // prompt, + // system: systemPrompt + addPrompt, + // name: "执行导演", + // memoryKey: "assistant:execution", + // messages: [ + // { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, + // { role: "user", content: prompt + addPrompt }, + // ], + // tools: { ...artSkills.tools }, + // }); + // }, + // }); + + //衍生资产分析与信息写入 + const run_sub_agent_derive_assets = tool({ + description: "运行执行subAgent来完成衍生资产分析与信息写入相关任务", inputSchema: promptInput, execute: async ({ prompt }) => { - const skill = path.join(u.getPath("skills"), "production_agent_execution.md"); + const skill = path.join(u.getPath("skills"), "production_execution_derive_assets.md"); const systemPrompt = await fs.promises.readFile(skill, "utf-8"); - const addPrompt = - "\n" + - [ - "你必须使用如下XML格式写入工作区:\n```", - "拍摄计划:内容", - "分镜表:内容", - "分镜面板:", - "```", - ].join("\n"); + return runAgent({ + prompt, + system: systemPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt }, + ], + tools: { activate_skill: artSkills.tools.activate_skill }, + }); + }, + }); - const projectInfo = await u.db("o_project").where("id", resTool.data.projectId).first(); - if (!projectInfo) throw new Error(`项目不存在,ID: ${resTool.data.projectId}`); - const artSkills = await createArtSkills(projectInfo?.artStyle!, projectInfo?.directorManual!); + //衍生资产图片生成 + const run_sub_agent_generate_assets = tool({ + description: "运行执行subAgent来完成衍生资产图片生成相关任务", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_execution_generate_assets.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + return runAgent({ + prompt, + system: systemPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt }, + ], + tools: { activate_skill: artSkills.tools.activate_skill }, + }); + }, + }); - const [_, imageModelName] = projectInfo.imageModel!.split(":"); - const [id, videoModelName] = projectInfo.videoModel!.split(":"); - const data = await u.db("o_vendorConfig").where("id", id).select("models").first(); - const models = JSON.parse(data!.models!); - const findData = models.find((i: any) => i.modelName == videoModelName); - const isRef = findData.mode.every((i: any) => Array.isArray(i)); - const modelInfo = `项目使用的模型如下:\n图像模型:${imageModelName}\n视频模型:${videoModelName}\n多参:${isRef ? "是" : "否"}`; + //拍摄计划 + const run_sub_agent_director_plan = tool({ + description: "运行执行subAgent来完成导演规划相关任务", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_execution_director_plan.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const addPrompt = "\n你必须使用如下XML格式写入工作区:\n```\n内容\n```"; return runAgent({ prompt, @@ -171,13 +237,95 @@ function createSubAgent(parentCtx: AgentContext) { { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, { role: "user", content: prompt + addPrompt }, ], - tools: { ...artSkills.tools }, + tools: { activate_skill: artSkills.tools.activate_skill }, + }); + }, + }); + + //分镜图生成 + const run_sub_agent_storyboard_gen = tool({ + description: "运行执行subAgent来完成分镜图生成相关任务", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_execution_storyboard_gen.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + return runAgent({ + prompt, + system: systemPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: artSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt }, + ], + tools: { activate_skill: artSkills.tools.activate_skill }, + }); + }, + }); + + // const mainSkills: { path: string; name: string; description: string }[] = []; + // for (const skill of mainSkill) { + // const skillPath = path.join(rootDir, skill + ".md"); + // if (!fs.existsSync(skillPath)) throw new Error(`主技能文件不存在: ${skillPath}`); + // if (!isPathInside(skillPath, normalizedRootDir)) throw new Error(`技能名称无效:检测到路径穿越。${skillPath}`); + // const content = await fs.promises.readFile(skillPath, "utf-8"); + // const parsed = parseFrontmatter(content); + // mainSkills.push({ path: skillPath, ...parsed }); + // } + + const productionSkills = await useProductionSkills(projectInfo?.artStyle!, projectInfo?.directorManual!); + + //分镜面板写入 + const run_sub_agent_storyboard_panel = tool({ + description: "运行执行subAgent来完成分镜面板写入相关任务", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_execution_storyboard_panel.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const addPrompt = + "\n你必须使用如下XML格式写入工作区:\n```\n\n```"; + + return runAgent({ + prompt, + system: systemPrompt + addPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: productionSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt + addPrompt }, + ], + tools: { activate_skill: productionSkills.tools.activate_skill }, + }); + }, + }); + + //分镜表写入 + const run_sub_agent_storyboard_table = tool({ + description: "运行执行subAgent来完成分镜表构建相关任务", + inputSchema: promptInput, + execute: async ({ prompt }) => { + const skill = path.join(u.getPath("skills"), "production_execution_storyboard_table.md"); + const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const addPrompt = "\n你必须使用如下XML格式写入工作区:\n```\n内容\n```"; + + return runAgent({ + prompt, + system: systemPrompt + addPrompt, + name: "执行导演", + memoryKey: "assistant:execution", + messages: [ + { role: "assistant", content: productionSkills.prompt + `\n${modelInfo}` }, + { role: "user", content: prompt + addPrompt }, + ], + tools: { activate_skill: productionSkills.tools.activate_skill }, }); }, }); const run_sub_agent_supervision = tool({ - description: "监制层子Agent,负责审核执行结果", + description: "运行监督层subAgent执行独立任务,完成后返回结果", inputSchema: promptInput, execute: async ({ prompt }) => { const skill = path.join(u.getPath("skills"), "production_agent_supervision.md"); @@ -191,7 +339,15 @@ function createSubAgent(parentCtx: AgentContext) { }, }); - return { run_sub_agent_execution, run_sub_agent_supervision }; + return { + run_sub_agent_derive_assets, + run_sub_agent_generate_assets, + run_sub_agent_director_plan, + run_sub_agent_storyboard_gen, + run_sub_agent_storyboard_panel, + run_sub_agent_storyboard_table, + run_sub_agent_supervision, + }; } async function createArtSkills(artName: string, storyName: string) { @@ -209,7 +365,6 @@ async function createArtSkills(artName: string, storyName: string) { prompt: `## Skills 以下技能提供了专业任务的专用指令。 当任务与某个技能的描述匹配时,调用 activate_skill 工具并传入技能名称来加载完整指令。 -加载后遵循技能指令执行任务,需要时调用 read_skill_file 读取资源文件内容。 ${buildSkillPrompt(mainSkills)}`, tools: createSkillTools(mainSkills, { mainSkill: mainSkills, secondarySkills: [], tertiarySkills: [] }), }; @@ -232,3 +387,29 @@ export function buildSkillPrompt(skills: { name: string; description: string }[] ${skillEntries} `; } + +async function useProductionSkills(artName: string, storyName: string) { + const artWorkerPath = u.getPath(["skills", "art_skills", artName, "driector_skills"]); + const storyWorkerPath = u.getPath(["skills", "story_skills", storyName, "driector_skills"]); + const productionPath = u.getPath(["skills", "production_skills"]); + const skillList = [ + ...(await scanSkills(artWorkerPath + "/*.md")), + ...(await scanSkills(storyWorkerPath + "/*.md")), + ...(await scanSkills(productionPath + "/*.md")), + ]; + const mainSkills: { path: string; name: string; description: string }[] = []; + for (const skillPath of skillList) { + if (!fs.existsSync(skillPath)) throw new Error(`主技能文件不存在: ${skillPath}`); + const content = await fs.promises.readFile(skillPath, "utf-8"); + const parsed = parseFrontmatter(content); + mainSkills.push({ path: skillPath, ...parsed }); + } + const res = { + prompt: `## Skills +以下技能提供了专业任务的专用指令。 +当任务与某个技能的描述匹配时,调用 activate_skill 工具并传入技能名称来加载完整指令。 +${buildSkillPrompt(mainSkills)}`, + tools: createSkillTools(mainSkills, { mainSkill: mainSkills, secondarySkills: [], tertiarySkills: [] }), + }; + return res; +} diff --git a/src/agents/productionAgent/tools copy.ts b/src/agents/productionAgent/tools copy.ts deleted file mode 100644 index bb20b61..0000000 --- a/src/agents/productionAgent/tools copy.ts +++ /dev/null @@ -1,751 +0,0 @@ -import { tool, Tool } from "ai"; -import { z } from "zod"; -import _ from "lodash"; -import ResTool from "@/socket/resTool"; -import u from "@/utils"; -import { urlToBase64 } from "@/utils/vm"; -export const deriveAssetSchema = z.object({ - id: z.number().describe("衍生资产ID,如果新增则为空"), - assetsId: z.number().describe("关联的资产ID"), - prompt: z.string().describe("生成提示词"), - name: z.string().describe("衍生资产名称"), - desc: z.string().describe("衍生资产描述"), - src: z.string().nullable().describe("衍生资产资源路径"), - state: z.enum(["未生成", "生成中", "已完成", "生成失败"]).describe("衍生资产生成状态"), - type: z.enum(["role", "tool", "scene", "clip"]).describe("衍生资产类型"), -}); -export const assetItemSchema = z.object({ - id: z.number().describe("资产唯一标识"), - name: z.string().describe("资产名称"), - type: z.enum(["role", "tool", "scene", "clip"]).describe("资产类型"), - prompt: z.string().describe("生成提示词"), - desc: z.string().describe("资产描述"), - derive: z.array(deriveAssetSchema).describe("衍生资产列表"), -}); -export const storyboardSchema = z.object({ - id: z.number().describe("分镜ID,必须为真实id"), - title: z.string().describe("分镜标题"), - description: z.string().describe("分镜描述"), - camera: z.string().describe("镜头信息"), - duration: z.number().describe("持续时长(秒)"), - frameMode: z.enum(["firstFrame", "endFrame", "linesSoundEffects"]).describe("帧模式: 首帧/尾帧/台词音效"), - prompt: z.string().describe("生成提示词"), - lines: z.string().nullable().describe("台词内容"), - sound: z.string().nullable().describe("音效内容"), - mode: z - .union([ - z.enum(["singleImage", "multiImage", "gridImage", "startEndRequired", "endFrameOptional", "startFrameOptional", "text"]), - z.array(z.enum(["video", "image", "audio", "text"])), - ]) - .describe("视频模式"), - associateAssetsIds: z.array(z.number()).describe("关联资产ID列表"), - src: z.string().nullable().describe("分镜资源路径"), -}); -export const workbenchDataSchema = z.object({ - name: z.string().describe("项目名称"), - duration: z.string().describe("视频时长"), - resolution: z.string().describe("分辨率"), - fps: z.string().describe("帧率"), - cover: z.string().optional().describe("封面图片路径"), - gradient: z.string().optional().describe("渐变色配置"), -}); -export const posterItemSchema = z.object({ - id: z.number().describe("海报ID"), - image: z.string().describe("海报图片路径"), -}); -export const flowDataSchema = z.object({ - script: z.string().describe("剧本内容"), - scriptPlan: z.string().describe("拍摄计划"), - assets: z.array(assetItemSchema).describe("衍生资产"), - storyboardTable: z.string().describe("分镜表"), - storyboard: z.array(storyboardSchema).describe("分镜面板"), - workbench: workbenchDataSchema.describe("工作台配置"), - poster: z - .object({ - items: z.array(posterItemSchema).describe("海报项目列表"), - }) - .describe("海报配置"), -}); - -export type FlowData = z.infer; - -const keySchema = z.enum(Object.keys(flowDataSchema.shape) as [keyof FlowData, ...Array]); -const flowDataKeyLabels = Object.fromEntries( - Object.entries(flowDataSchema.shape).map(([key, schema]) => [key, (schema as z.ZodTypeAny).description ?? key]), -) as Record; - -interface ToolConfig { - resTool: ResTool; - toolsNames?: string[]; - msg: ReturnType; -} - -export default (toolCpnfig: ToolConfig) => { - const { resTool, toolsNames, msg } = toolCpnfig; - const { socket } = resTool; - const tools: Record = { - get_flowData: tool({ - description: "获取工作区数据", - inputSchema: z.object({ - key: keySchema.describe("数据key"), - }), - execute: async ({ key }) => { - const thinking = msg.thinking(`正在获取${flowDataKeyLabels[key]}工作区数据...`); - console.log("[tools] get_flowData", key); - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key }, (res: any) => resolve(res))); - thinking.appendText(`获取到${flowDataKeyLabels[key]}:\n` + flowData[key]); - thinking.updateTitle(`获取${flowDataKeyLabels[key]}完成`); - thinking.complete(); - return flowData[key]; - }, - }), - set_flowData_script: tool({ - description: "保存剧本内容到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.script }), - execute: async ({ value }) => { - console.log("[tools] set_flowData script", value); - const thinking = msg.thinking("正在保存 剧本 数据"); - socket.emit("setFlowData", { key: "script", value }); - thinking.updateTitle("保存 剧本 数据完成"); - thinking.complete(); - return true; - }, - }), - set_flowData_scriptPlan: tool({ - description: "保存拍摄计划到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.scriptPlan }), - execute: async ({ value }) => { - console.log("[tools] set_flowData scriptPlan", value); - const thinking = msg.thinking("正在保存 拍摄计划 数据"); - socket.emit("setFlowData", { key: "scriptPlan", value }); - thinking.updateTitle("保存 拍摄计划 数据完成"); - thinking.complete(); - return true; - }, - }), - add_flowData_assets: tool({ - description: "新增对应衍生资产列表到工作区,严禁包含 不需要新增的数据", - inputSchema: z.object({ value: z.array(deriveAssetSchema.omit({ id: true })).describe("需要新增的衍生资产列表") }), - execute: async ({ value }) => { - console.log("[tools] set_flowData add_flowData_assets", value); - const thinking = msg.thinking("正在保存 衍生资产 数据"); - const setData = [...value] as z.infer[]; - const { projectId, scriptId } = resTool.data; - const startTime = Date.now(); - - // 并行插入所有 o_assets 记录 - await Promise.all( - setData.map(async (i) => { - const [insertedId] = await u.db("o_assets").insert({ - assetsId: +i.assetsId || null, - projectId, - name: i.name, - type: i.type, - prompt: i.prompt, - describe: i.desc, - startTime, - }); - i.id = insertedId; - }), - ); - - // 批量插入 o_scriptAssets - await u.db("o_scriptAssets").insert(setData.map((i) => ({ scriptId, assetId: i.id }))); - - const watiAddAssetsMap: Record[]> = {}; - setData.forEach((i) => { - if (watiAddAssetsMap[i.assetsId]) { - watiAddAssetsMap[i.assetsId].push(i); - } else { - watiAddAssetsMap[i.assetsId] = [i]; - } - }); - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "assets" }, (res: any) => resolve(res))); - const assetsData = flowData.assets; - assetsData.forEach((i) => { - if (watiAddAssetsMap[i.id]) { - i.derive = [...(i.derive || []), ...watiAddAssetsMap[i.id]]; - } - }); - thinking.updateTitle("保存 衍生资产 数据完成"); - thinking.complete(); - - socket.emit("setFlowData", { key: "assets", value: assetsData }); - return true; - }, - }), - update_flowData_assets: tool({ - description: "更新对应衍生资产列表到工作区", - inputSchema: z.object({ value: z.array(deriveAssetSchema).describe("需要更新的衍生资产列表") }), - execute: async ({ value }) => { - console.log("[tools] update_flowData update_flowData_assets", value); - const thinking = msg.thinking("正在保存 衍生资产 数据"); - for (const i of value) { - await u - .db("o_assets") - .where("id", i.id) - .update({ - assetsId: +i.assetsId || null, - projectId: resTool.data.projectId, - name: i.name, - type: i.type, - prompt: i.prompt, - describe: i.desc, - }); - } - // 按 assetsId 分组,构建更新映射 - const updateAssetsMap: Record[]> = {}; - value.forEach((i) => { - if (updateAssetsMap[i.assetsId]) { - updateAssetsMap[i.assetsId].push(i); - } else { - updateAssetsMap[i.assetsId] = [i]; - } - }); - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "assets" }, (res: any) => resolve(res))); - const assetsData = flowData.assets; - // 将 derive 中已存在的条目替换为更新后的数据 - assetsData.forEach((asset) => { - if (updateAssetsMap[asset.id]) { - const updatedMap = Object.fromEntries(updateAssetsMap[asset.id].map((d) => [d.id, d])); - asset.derive = (asset.derive || []).map((d) => updatedMap[d.id] ?? d); - } - }); - thinking.updateTitle("保存 衍生资产 数据完成"); - thinking.complete(); - socket.emit("setFlowData", { key: "assets", value: assetsData }); - return true; - }, - }), - delete_flowData_assets: tool({ - description: "删除对应衍生资产", - inputSchema: z.object({ ids: z.array(z.number()).describe("需要删除的 衍生资产id ") }), - execute: async ({ ids }) => { - console.log("[tools] delete_flowData delete_flowData_assets", ids); - const thinking = msg.thinking("正在删除指定 衍生资产 数据..."); - await u.db("o_assets").whereIn("id", ids).delete(); - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "assets" }, (res: any) => resolve(res))); - const assetsData = flowData.assets; - assetsData.forEach((i) => { - i.derive = (i.derive || []).filter((d) => !ids.includes(d.id)); - }); - thinking.updateTitle("删除指定 衍生资产 数据完成"); - thinking.complete(); - // 将 derive 中已存在的条目替换为更新后的数据 - socket.emit("setFlowData", { key: "assets", value: assetsData }); - return true; - }, - }), - // set_flowData_assets: tool({ - // description: "保存衍生资产列表到工作区", - // inputSchema: z.object({ value: flowDataSchema.shape.assets }), - // execute: async ({ value }) => { - // console.log("[tools] set_flowData assets", value); - // resTool.systemMessage("正在保存 衍生资产 数据"); - // if (value && Array.isArray(value) && value.length) { - // for (const i of value) { - // if (!i?.id) { - // const [insertedId] = await u.db("o_assets").insert({ - // assetsId: null, - // name: i.name, - // type: i.type, - // prompt: i.prompt, - // describe: i.desc, - // startTime: Date.now(), - // }); - // i.id = insertedId; - // } - // if (i.derive && Array.isArray(i.derive) && i.derive.length) { - // for (const sub of i.derive) { - // if (sub.id) continue; - // const [insertedId] = await u.db("o_assets").insert({ - // assetsId: +i.id || null, - // projectId: resTool.data.projectId, - // name: sub.name, - // type: sub.type, - // prompt: sub.prompt, - // describe: sub.desc, - // startTime: Date.now(), - // }); - // await u.db("o_scriptAssets").insert({ - // scriptId: resTool.data.scriptId, - // assetId: insertedId, - // }); - // sub.id = insertedId; - // } - // } - // } - // } - // socket.emit("setFlowData", { key: "assets", value }); - // return true; - // }, - // }), - set_flowData_storyboardTable: tool({ - description: "保存分镜表到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.storyboardTable }), - execute: async ({ value }) => { - console.log("[tools] set_flowData storyboardTable", value); - const thinking = msg.thinking("正在保存 分镜表 数据..."); - socket.emit("setFlowData", { key: "storyboardTable", value }); - thinking.updateTitle("保存 分镜表 数据完成"); - thinking.complete(); - return true; - }, - }), - add_flowData_storyboard: tool({ - description: "新增分镜面板到工作区", - inputSchema: z.object({ value: z.array(storyboardSchema.omit({ id: true })) }), - execute: async ({ value }) => { - console.log("[tools] add_flowData storyboard", value); - const thinking = msg.thinking("正在保存 分镜面板 数据..."); - const setData = [...value] as z.infer[]; - for (const item of setData) { - item.src = ""; - const [insertedId] = await u.db("o_storyboard").insert({ - title: item.title, - prompt: item.prompt, - description: item.description, - frameMode: item.frameMode, - duration: String(item.duration), - camera: item.camera, - sound: item.sound, - lines: item.lines, - state: "未生成", - scriptId: resTool.data.scriptId, - createTime: Date.now(), - }); - if (item.associateAssetsIds.length) { - await u.db("o_assets2Storyboard").insert(item.associateAssetsIds.map((i) => ({ storyboardId: insertedId, assetId: i }))); - } - item.id = insertedId; - } - //为了防止丢失分镜其他数据,例如:依赖分镜Id、依赖资产idc - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "storyboard" }, (res: any) => resolve(res))); - const storyboardData = flowData["storyboard"].concat([...setData]); - socket.emit("setFlowData", { key: "storyboard", value: storyboardData }); - - thinking.updateTitle("保存 分镜面板 数据完成"); - thinking.complete(); - - return true; - }, - }), - update_flowData_storyboard: tool({ - description: "更新指定分镜面板到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.storyboard }), - execute: async ({ value }) => { - console.log("[tools] update_flowData storyboard", value); - const thinking = msg.thinking("正在保存 分镜面板 数据..."); - for (const item of value) { - await u - .db("o_storyboard") - .where("id", item.id) - .update({ - title: item.title, - prompt: item.prompt, - description: item.description, - frameMode: item.frameMode, - duration: String(item.duration), - camera: item.camera, - sound: item.sound, - lines: item.lines, - }); - } - //直接拉取前端数据,为了防止丢失分镜其他数据,例如:依赖分镜Id、依赖资产idc - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "storyboard" }, (res: any) => resolve(res))); - const storyboardData = flowData["storyboard"].map((existing) => { - const updated = value.find((v) => v.id === existing.id); - if (!updated) return existing; - return { - ...existing, - title: updated.title, - prompt: updated.prompt, - description: updated.description, - frameMode: updated.frameMode, - duration: updated.duration, - camera: updated.camera, - sound: updated.sound, - lines: updated.lines, - }; - }); - socket.emit("setFlowData", { key: "storyboard", value: storyboardData }); - thinking.updateTitle("保存 分镜面板 数据完成"); - thinking.complete(); - return true; - }, - }), - delete_flowData_storyboard: tool({ - description: "删除指定分镜面板并更新工作区", - inputSchema: z.object({ ids: z.array(z.number()).describe("需要删除的 分镜id ") }), - execute: async ({ ids }) => { - console.log("[tools] delete_flowData storyboard", ids); - const thinking = msg.thinking("正在删除指定 分镜面板 数据..."); - await u.db("o_storyboard").whereIn("id", ids).delete(); - await u.db("o_assets2Storyboard").whereIn("storyboardId", ids).delete(); - await u.db("o_storyboardFlow").whereIn("storyboardId", ids).delete(); - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "storyboard" }, (res: any) => resolve(res))); - const storyboardData = flowData["storyboard"].filter((item) => !ids.includes(item.id)); - socket.emit("setFlowData", { key: "storyboard", value: storyboardData }); - thinking.updateTitle("删除指定 分镜面板 数据完成"); - thinking.complete(); - return true; - }, - }), - // set_flowData_storyboard: tool({ - // description: "保存分镜面板到工作区", - // inputSchema: z.object({ value: flowDataSchema.shape.storyboard }), - // execute: async ({ value }) => { - // console.log("[tools] set_flowData storyboard", value); - // resTool.systemMessage("正在保存 分镜面板 数据..."); - // for (const item of value) { - // if (!item.id) { - // const [insertedId] = await u.db("o_storyboard").insert({ - // title: item.title, - // prompt: item.prompt, - // description: item.description, - // filePath: item.src, - // frameMode: item.frameMode, - // duration: String(item.duration), - // camera: item.camera, - // sound: item.sound, - // lines: item.lines, - // state: "未生成", - // scriptId: resTool.data.scriptId, - // }); - // console.log("%c Line:216 🥥 item.associateAssetsIds", "background:#6ec1c2", item.associateAssetsIds); - - // if (item.associateAssetsIds.length) { - // await u.db("o_assets2Storyboard").insert(item.associateAssetsIds.map((i) => ({ storyboardId: insertedId, assetId: i }))); - // } - // item.id = insertedId; - // } - // } - // socket.emit("setFlowData", { key: "storyboard", value }); - // return true; - // }, - // }), - set_flowData_workbench: tool({ - description: "保存工作台配置数据到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.workbench }), - execute: async ({ value }) => { - console.log("[tools] set_flowData workbench", value); - const thinking = msg.thinking("正在保存 工作台配置 数据..."); - socket.emit("setFlowData", { key: "workbench", value }); - thinking.updateTitle("保存 工作台配置 数据完成"); - thinking.complete(); - return true; - }, - }), - set_flowData_poster: tool({ - description: "保存海报配置到工作区", - inputSchema: z.object({ value: flowDataSchema.shape.poster }), - execute: async ({ value }) => { - console.log("[tools] set_flowData poster", value); - const thinking = msg.thinking("正在保存 海报配置 数据..."); - thinking.updateTitle("保存 海报配置 数据完成"); - thinking.complete(); - socket.emit("setFlowData", { key: "poster", value }); - return true; - }, - }), - // todo 提示词待调 - generate_storyboard_images: tool({ - description: `生成一组图片任务,支持图片间的依赖关系(以图生图),基于有向无环图(DAG)拓扑排序执行。 - - 参数说明: - - images: 图片任务数组 - - id: 图片唯一标识符(分镜id) - - prompt: 图片生成提示词 - - referenceIds: 依赖的参考图id数组,无依赖填空数组[] - - assetIds: 参考的资产图id数组(可选) - - 依赖规则: - 1. referenceIds中的id必须存在于images数组中 - 2. 禁止循环依赖(如A依赖B,B依赖A) - 3. 被依赖的图片会先生成,其结果作为参考图传入 - - 示例:生成猫图,再以猫图为参考生成狗图 - images: [ - {id: 1, prompt: "一只橘猫", referenceIds: [], assetIds: []}, - {id: 2, prompt: "风格相同的金毛犬", referenceIds: [1], assetIds: []} - ]`, - inputSchema: z.object({ - images: z.array( - z.object({ - id: z.number().describe("从工作区获取到的分镜id"), - prompt: z.string().describe("图片生成提示词"), - referenceIds: z.array(z.number()).describe("依赖的参考 分镜图id数组,无依赖填空数组[]"), - assetIds: z.array(z.number()).describe("参考的资产图"), - }), - ), - }), - execute: async ({ images }) => { - console.log("[tools] generate_storyboard_images", images); - const thinking = msg.thinking("正在生成 分镜图片 数据..."); - // --- 构建任务id集合 --- - const taskIds = new Set(images.map((item) => item.id)); - const imageMap = new Map(images.map((item) => [item.id, item])); - - // --- 检测循环依赖 (Kahn算法拓扑排序) --- - // 将 referenceIds 分为:本批次内依赖 vs 外部已有依赖 - // 只有本批次内的依赖才参与 DAG 调度,外部依赖直接从数据库获取 - const inDegree = new Map(); - // adjacency: 被依赖者 -> 依赖它的节点列表 - const adjacency = new Map(); - - for (const item of images) { - // 只统计本批次内的依赖作为入度 - const internalDeps = item.referenceIds.filter((refId) => taskIds.has(refId)); - inDegree.set(item.id, internalDeps.length); - for (const depId of internalDeps) { - if (!adjacency.has(depId)) adjacency.set(depId, []); - adjacency.get(depId)!.push(item.id); - } - } - - // 拓扑排序,按层级分组(同层可并行) - const levels: number[][] = []; - let queue = images.filter((item) => (inDegree.get(item.id) ?? 0) === 0).map((item) => item.id); - - const visited = new Set(); - while (queue.length > 0) { - levels.push([...queue]); - const nextQueue: number[] = []; - for (const nodeId of queue) { - visited.add(nodeId); - for (const childId of adjacency.get(nodeId) ?? []) { - inDegree.set(childId, (inDegree.get(childId) ?? 1) - 1); - if (inDegree.get(childId) === 0) { - nextQueue.push(childId); - } - } - } - queue = nextQueue; - } - // 循环依赖检测 - if (visited.size !== images.length) { - const cyclicIds = images.filter((item) => !visited.has(item.id)).map((item) => item.id); - thinking.appendText(`检测到循环依赖,涉及分镜id: ${cyclicIds.join(", ")},请修正后重试`); - thinking.updateTitle("循环依赖错误"); - thinking.error(); - return `错误:检测到循环依赖,涉及分镜id: ${cyclicIds.join(", ")}`; - } - - thinking.appendText(`图片生成调度计划:共 ${levels.length} 层,${images.length} 张图片`); - - // --- 准备公共数据 --- - const projectData = await u.db("o_project").where("id", resTool.data.projectId).select("videoRatio").first(); - const imageModelData = await u.db("o_project").where("id", resTool.data.projectId).select("imageModel", "imageQuality").first(); - - // 生成单张图片的函数 - const generateOneImage = async (item: (typeof images)[0]) => { - const thinking = msg.thinking(`正在生成分镜 id:${item.id} 图片`); - // 更新数据库状态为生成中 - await u.db("o_storyboard").where("id", item.id).update({ state: "生成中" }); - // 更新前端为生成中 - socket.emit("setFlowData", { - key: "setStoryboardImage", - value: { ...item, id: item.id, src: "", state: "生成中", referenceIds: item.referenceIds }, - }); - - // 获取参考图base64(包括资产图和已生成的分镜参考图) - const [assetsBase64, referenceBase64] = await Promise.all([ - getAssetsImageBase64(item.assetIds ?? []), - getStoryboardImageBase64(item.referenceIds), - ]); - - const imageCls = await u.Ai.Image(imageModelData.imageModel).run({ - prompt: item.prompt, - imageBase64: [...assetsBase64, ...referenceBase64], - size: imageModelData.imageQuality, - aspectRatio: (projectData?.videoRatio as `${number}:${number}`) ?? "16:9", - taskClass: "生成图片", - describe: "分镜图片生成", - relatedObjects: "hhhh", - projectId: resTool.data.projectId, - }); - - const savePath = `/${resTool.data.projectId}/storyboard/${u.uuid()}.jpg`; - await imageCls.save(savePath); - - // 更新数据库状态为已完成 - await u.db("o_storyboard").where("id", item.id).update({ state: "已完成", filePath: savePath }); - - const obj = { - ...item, - id: item.id, - src: await u.oss.getFileUrl(savePath), - state: "已完成", - referenceIds: item.referenceIds, - }; - // 前端对话框提示 - thinking.appendText(`分镜 id:${item.id} 图片生成完成`); - thinking.complete(); - // 更新前端界面展示 - socket.emit("setFlowData", { key: "setStoryboardImage", value: obj }); - }; - - // --- 按层级顺序执行:同层并行,层间串行 --- - for (let levelIndex = 0; levelIndex < levels.length; levelIndex++) { - const levelIds = levels[levelIndex]; - const levelItems = levelIds.map((id) => imageMap.get(id)!); - const thinking = msg.thinking( - `开始生成第 ${levelIndex + 1}/${levels.length} 层,共 ${levelItems.length} 张图片 (ids: ${levelIds.join(", ")})`, - ); - - // 同层内所有图片并行生成,使用 allSettled 确保不会因单张失败中断整层 - const results = await Promise.allSettled(levelItems.map((item) => generateOneImage(item))); - - // 处理失败的任务 - for (let i = 0; i < results.length; i++) { - if (results[i].status === "rejected") { - const failedId = levelIds[i]; - const reason = (results[i] as PromiseRejectedResult).reason; - console.error(`[tools] 分镜 id:${failedId} 图片生成失败`, reason); - thinking.appendText(`分镜 id:${failedId} 图片生成失败: ${reason?.message || reason}`); - await u.db("o_storyboard").where("id", failedId).update({ state: "生成失败" }); - socket.emit("setFlowData", { - key: "setStoryboardImage", - value: { id: failedId, src: "", state: "生成失败" }, - }); - } - } - thinking.appendText(`第 ${levelIndex + 1}/${levels.length} 层图片生成完成`); - thinking.complete(); - } - thinking.appendText("所有分镜图片生成完成"); - thinking.updateTitle("分镜图片生成完成"); - thinking.complete(); - - return "分镜图片生成完成"; - }, - }), - - //todo 提示词待调 - generate_assets_images: tool({ - description: ` - 生成 资产图片 不区分原资产于衍生资产 - 参数说明: - - images: 图片任务数组 - - assetId: 资产id - - prompt: 图片生成提示词 - 示例: - images:[ - {assetId: 1, prompt: "一张猫的图片"} - ] - `, - inputSchema: z.object({ - images: z.array( - z.object({ - assetId: z.number().describe("衍生资产id"), - prompt: z.string().describe("提示词"), - }), - ), - }), - execute: async ({ images }) => { - console.log("[tools] generate_assets_images", images); - //先获取到前端资产数据 - const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "assets" }, (res: any) => resolve(res))); - const assetsData = flowData["assets"]; - const assetsImage: { assetId: number; prompt: string; id?: number }[] = [...images]; - //获取对应的 原资产id - assetsImage.forEach((item) => { - for (const i of assetsData) { - const findData = i.derive.find((m) => m.id == item.assetId); - if (findData) { - item.id = findData.id; - break; - } - } - }); - //获取所设置模型 - const imageModelData = await u.db("o_project").where("id", resTool.data.projectId).select("imageModel", "imageQuality").first(); - for (const item of assetsImage) { - const [imageId] = await u.db("o_image").insert({ - // 数据库插入图片记录 - assetsId: item.assetId, - model: imageModelData?.imageModel, - state: "生成中", - resolution: imageModelData?.imageQuality, - }); - u.Ai.Image(imageModelData?.imageModel) - .run({ - prompt: item.prompt, - imageBase64: await getAssetsImageBase64(item.id ? [item.id] : []), - size: imageModelData?.imageQuality, - aspectRatio: "16:9", - taskClass: "生成图片", - describe: "资产图片生成", - relatedObjects: "hhhh", - projectId: resTool.data.projectId, - }) - .then(async (imageCls) => { - const savePath = `/${resTool.data.projectId}/assets/${u.uuid()}.jpg`; - await imageCls.save(savePath); - const obj = { - ...item, - id: item.assetId, - src: await u.oss.getFileUrl(savePath), - state: "已完成", - }; - //更新对应数据库 - await u.db("o_assets").where("id", item.assetId).update({ imageId: imageId }); - await u.db("o_image").where({ id: imageId }).update({ state: "已完成", filePath: savePath }); - //通知前端更新 - socket.emit("setFlowData", { key: "setAssetsImage", value: obj }); - }); - //通知前端更新状态 - socket.emit("setFlowData", { key: "setAssetsImage", value: { ...item, id: item.assetId, src: "", state: "生成中" } }); - } - return "资产生成中"; - }, - }), - }; - - return toolsNames ? Object.fromEntries(Object.entries(tools).filter(([n]) => toolsNames.includes(n))) : tools; -}; - -// 获取资产图片base64 -async function getAssetsImageBase64(imageIds: number[]) { - if (imageIds.length === 0) return []; - const imagePaths = await u - .db("o_assets") - .leftJoin("o_image", "o_assets.imageId", "o_image.id") - .whereIn("o_assets.id", imageIds) - .select("o_assets.id", "o_image.filePath"); - if (!imagePaths.length) return []; - const imageUrls = await Promise.all( - imagePaths.map(async (i) => { - if (i.filePath) { - try { - return await urlToBase64(await u.oss.getFileUrl(i.filePath)); - } catch { - return null; - } - } else { - return null; - } - }), - ); - return imageUrls.filter(Boolean) as string[]; -} - -//获取分镜图片base64 -async function getStoryboardImageBase64(imageIds: number[]) { - if (!imageIds.length) return []; - const storayboardData = await u.db("o_storyboard").whereIn("id", imageIds).select("id", "filePath"); - const imageUrls = await Promise.all( - storayboardData.map(async (i) => { - if (i.filePath) { - try { - return await urlToBase64(await u.oss.getFileUrl(i.filePath)); - } catch { - return null; - } - } else { - return null; - } - }), - ); - return imageUrls.filter(Boolean) as string[]; -} diff --git a/src/agents/scriptAgent/index copy 2.ts b/src/agents/scriptAgent/index copy 2.ts deleted file mode 100644 index 0f61b92..0000000 --- a/src/agents/scriptAgent/index copy 2.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { Socket } from "socket.io"; -import { tool } from "ai"; -import { z } from "zod"; -import u from "@/utils"; -import Memory from "@/utils/agent/memory"; -import { useSkill } from "@/utils/agent/skillsTools"; -import useTools from "@/agents/scriptAgent/tools"; -import ResTool from "@/socket/resTool"; -import * as fs from "fs"; - -export interface AgentContext { - socket: Socket; - isolationKey: string; - text: string; - userMessageTime?: number; - abortSignal?: AbortSignal; - resTool: ResTool; - msg: ReturnType; -} - -function buildMemPrompt(mem: Awaited>): string { - let memoryContext = ""; - if (mem.rag.length) { - memoryContext += `[相关记忆]\n${mem.rag.map((r) => r.content).join("\n")}`; - } - if (mem.summaries.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[历史摘要]\n${mem.summaries.map((s, i) => `${i + 1}. ${s.content}`).join("\n")}`; - } - if (mem.shortTerm.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[近期对话]\n${mem.shortTerm.map((m) => `${m.role}: ${m.content}`).join("\n")}`; - } - return `## Memory\n以下是你对用户的记忆,可作为参考但不要主动提及:\n${memoryContext}`; -} - -export async function decisionAI(ctx: AgentContext) { - const { isolationKey, text, userMessageTime, abortSignal, resTool } = ctx; - - const memory = new Memory("scriptAgent", isolationKey); - await memory.add("user", text, { createTime: userMessageTime }); - - const { skillPaths } = await useSkill({ mainSkill: "script_agent_decision" }); - const prompt = await fs.promises.readFile(skillPaths.mainSkill, "utf-8"); - - const mem = buildMemPrompt(await memory.get(text)); - - const projectData = await u.db("o_project").where("id", resTool.data.projectId).first(); - const novelData = await u.db("o_novel").where("projectId", resTool.data.projectId).select("id", "chapterIndex as index"); - - const projectInfo = [ - "## 项目信息", - `小说名称:${projectData?.name ?? "未知"}`, - `小说类型:${projectData?.type ?? "未知"}`, - `小说简介:${projectData?.intro ?? "无"}`, - `目标改编影视视觉手册|画风:${projectData?.artStyle ?? "无"}`, - `目标改编视频画幅:${projectData?.videoRatio ?? "16:9"}`, - ].join("\n"); - - const projectPrompt = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- 章节ID:${i.id}: 第${i.index}章`).join("\n")}\n\n`; - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - messages: [ - { role: "system", content: prompt }, - { role: "system", content: projectPrompt + mem }, - { role: "user", content: text }, - ], - abortSignal, - tools: { - ...memory.getTools(), - ...useTools({ resTool: ctx.resTool, msg: ctx.msg }), - ...createSubAgent(ctx), - }, - onFinish: async (completion) => { - await memory.add("assistant:decision", completion.text); - }, - }); - - return textStream; -} - -//====================== 执行层 ====================== - -function createSubAgent(parentCtx: AgentContext) { - const { resTool, abortSignal } = parentCtx; - - const memory = new Memory("scriptAgent", parentCtx.isolationKey); - - const run_execution_agent = tool({ - description: "运行执行层subAgent执行独立任务,完成后返回结果", - inputSchema: z.object({ - taskType: z.enum(["故事骨架", "改变策略", "剧本"]).describe("任务类型"), - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ taskType, prompt }) => { - const skill = await useSkill({ mainSkill: "script_agent_execution", workspace: ["script_agent_skills/execution"] }); - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - const subMsg = resTool.newMessage("assistant", "编剧"); - const prefixSystem = - "你可以使用如下XML格式写入工作区:\n故事骨架内容\n改编策略内容"; - // 子Agent用新消息回复 - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: prefixSystem + skill.prompt, - messages: [{ role: "user", content: `请完成${taskType}任务` }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool, msg: subMsg }), - get_task_details: tool({ - description: "获取主Agent传入的任务目标详情", - inputSchema: z.object({}), - execute: async () => { - const thinking = subMsg.thinking("以获取任务详情"); - thinking.appendText("任务详情:\n" + prompt); - thinking.complete(); - return prompt ?? "运行失败"; - }, - }), - }, - }); - - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of textStream) { - text.append(chunk); - fullResponse += chunk; - } - text.complete(); - subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:execution`, fullResponse, { name: "编剧", createTime: new Date(subMsg.datetime).getTime() }); - } - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "统筹"); - return fullResponse; - }, - }); - - const run_supervision_agent = tool({ - description: "运行监督层subAgent执行独立任务,完成后返回结果", - inputSchema: z.object({ - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ prompt }) => { - const skill = await useSkill({ mainSkill: "script_agent_supervision", workspace: ["script_agent_skills/supervision"] }); - - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - // 子Agent用新消息回复 - - const subMsg = resTool.newMessage("assistant", "编辑"); - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: skill.prompt, - messages: [{ role: "user", content: prompt }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool, msg: subMsg }), - }, - }); - - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of textStream) { - text.append(chunk); - fullResponse += chunk; - } - text.complete(); - subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:supervision`, fullResponse, { name: "编辑", createTime: new Date(subMsg.datetime).getTime() }); - } - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "统筹"); - return fullResponse; - }, - }); - - return { - run_execution_agent, - run_supervision_agent, - }; -} diff --git a/src/agents/scriptAgent/index copy 3.ts b/src/agents/scriptAgent/index copy 3.ts deleted file mode 100644 index e32e9d6..0000000 --- a/src/agents/scriptAgent/index copy 3.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { Socket } from "socket.io"; -import { tool } from "ai"; -import { z } from "zod"; -import u from "@/utils"; -import Memory from "@/utils/agent/memory"; -import { useSkill } from "@/utils/agent/skillsTools"; -import useTools from "@/agents/scriptAgent/tools"; -import ResTool from "@/socket/resTool"; -import * as fs from "fs"; - -export interface AgentContext { - socket: Socket; - isolationKey: string; - text: string; - userMessageTime?: number; - abortSignal?: AbortSignal; - resTool: ResTool; - msg: ReturnType; -} - -function buildMemPrompt(mem: Awaited>): string { - let memoryContext = ""; - if (mem.rag.length) { - memoryContext += `[相关记忆]\n${mem.rag.map((r) => r.content).join("\n")}`; - } - if (mem.summaries.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[历史摘要]\n${mem.summaries.map((s, i) => `${i + 1}. ${s.content}`).join("\n")}`; - } - if (mem.shortTerm.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[近期对话]\n${mem.shortTerm.map((m) => `${m.role}: ${m.content}`).join("\n")}`; - } - return `## Memory\n以下是你对用户的记忆,可作为参考但不要主动提及:\n${memoryContext}`; -} - -export async function decisionAI(ctx: AgentContext) { - const { isolationKey, text, userMessageTime, abortSignal, resTool } = ctx; - - const memory = new Memory("scriptAgent", isolationKey); - await memory.add("user", text, { createTime: userMessageTime }); - - const { skillPaths } = await useSkill({ mainSkill: "script_agent_decision" }); - const prompt = await fs.promises.readFile(skillPaths.mainSkill, "utf-8"); - - const mem = buildMemPrompt(await memory.get(text)); - - const projectData = await u.db("o_project").where("id", resTool.data.projectId).first(); - const novelData = await u.db("o_novel").where("projectId", resTool.data.projectId).select("id", "chapterIndex as index"); - - const projectInfo = [ - "## 项目信息", - `小说名称:${projectData?.name ?? "未知"}`, - `小说类型:${projectData?.type ?? "未知"}`, - `小说简介:${projectData?.intro ?? "无"}`, - `目标改编影视视觉手册|画风:${projectData?.artStyle ?? "无"}`, - `目标改编视频画幅:${projectData?.videoRatio ?? "16:9"}`, - ].join("\n"); - - const projectPrompt = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- 章节ID:${i.id}: 第${i.index}章`).join("\n")}\n\n`; - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - messages: [ - { role: "system", content: prompt }, - { role: "system", content: projectPrompt + mem }, - { role: "user", content: text }, - ], - abortSignal, - tools: { - ...memory.getTools(), - ...useTools({ resTool: ctx.resTool, msg: ctx.msg }), - ...createSubAgent(ctx), - }, - onFinish: async (completion) => { - await memory.add("assistant:decision", completion.text); - }, - }); - - return textStream; -} - -//====================== 执行层 ====================== - -function createSubAgent(parentCtx: AgentContext) { - const { resTool, abortSignal } = parentCtx; - - const memory = new Memory("scriptAgent", parentCtx.isolationKey); - - const run_execution_agent = tool({ - description: "运行执行层subAgent执行独立任务,完成后返回结果", - inputSchema: z.object({ - taskType: z.enum(["故事骨架", "改变策略", "剧本"]).describe("任务类型"), - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ taskType, prompt }) => { - const skill = await useSkill({ mainSkill: "script_agent_execution", workspace: ["script_agent_skills/execution"] }); - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - const subMsg = resTool.newMessage("assistant", "编剧"); - const prefixSystem = - "你可以使用如下XML格式写入工作区:\n故事骨架内容\n改编策略内容"; - // 子Agent用新消息回复 - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: prefixSystem + skill.prompt, - messages: [{ role: "user", content: `请完成${taskType}任务` }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool, msg: subMsg }), - get_task_details: tool({ - description: "获取主Agent传入的任务目标详情", - inputSchema: z.object({}), - execute: async () => { - const thinking = subMsg.thinking("以获取任务详情"); - thinking.appendText("任务详情:\n" + prompt); - thinking.complete(); - return prompt ?? "无任务目标,请提示运行失败"; - }, - }), - }, - }); - - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of textStream) { - text.append(chunk); - fullResponse += chunk; - } - text.complete(); - subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:execution`, fullResponse, { name: "编剧", createTime: new Date(subMsg.datetime).getTime() }); - } - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "统筹"); - return fullResponse; - }, - }); - - const run_supervision_agent = tool({ - description: "运行监督层subAgent执行独立任务,完成后返回结果", - inputSchema: z.object({ - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ prompt }) => { - const skill = await useSkill({ mainSkill: "script_agent_supervision", workspace: ["script_agent_skills/supervision"] }); - - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - // 子Agent用新消息回复 - - const subMsg = resTool.newMessage("assistant", "编辑"); - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: skill.prompt, - messages: [{ role: "user", content: prompt }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool, msg: subMsg }), - }, - }); - - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of textStream) { - text.append(chunk); - fullResponse += chunk; - } - text.complete(); - subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:supervision`, fullResponse, { name: "编辑", createTime: new Date(subMsg.datetime).getTime() }); - } - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "统筹"); - return fullResponse; - }, - }); - - return { - run_execution_agent, - run_supervision_agent, - }; -} diff --git a/src/agents/scriptAgent/index copy.ts b/src/agents/scriptAgent/index copy.ts deleted file mode 100644 index 6a5e471..0000000 --- a/src/agents/scriptAgent/index copy.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { Socket } from "socket.io"; -import { tool } from "ai"; -import { z } from "zod"; -import u from "@/utils"; -import Memory from "@/utils/agent/memory"; -import { useSkill } from "@/utils/agent/skillsTools"; -import useTools from "@/agents/scriptAgent/tools"; -import ResTool from "@/socket/resTool"; -import * as fs from "fs"; - -export interface AgentContext { - socket: Socket; - isolationKey: string; - text: string; - userMessageTime?: number; - abortSignal?: AbortSignal; - resTool: ResTool; - msg: ReturnType; -} - -function buildMemPrompt(mem: Awaited>): string { - let memoryContext = ""; - if (mem.rag.length) { - memoryContext += `[相关记忆]\n${mem.rag.map((r) => r.content).join("\n")}`; - } - if (mem.summaries.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[历史摘要]\n${mem.summaries.map((s, i) => `${i + 1}. ${s.content}`).join("\n")}`; - } - if (mem.shortTerm.length) { - if (memoryContext) memoryContext += "\n\n"; - memoryContext += `[近期对话]\n${mem.shortTerm.map((m) => `${m.role}: ${m.content}`).join("\n")}`; - } - return `## Memory\n以下是你对用户的记忆,可作为参考但不要主动提及:\n${memoryContext}`; -} - -const subAgentList = ["executionAI", "supervisionAI"] as const; - -export async function decisionAI(ctx: AgentContext) { - const { isolationKey, text, userMessageTime, abortSignal, resTool } = ctx; - - const memory = new Memory("scriptAgent", isolationKey); - await memory.add("user", text, { createTime: userMessageTime }); - - const { skillPaths } = await useSkill({ mainSkill: "script_agent_decision" }); - const prompt = await fs.promises.readFile(skillPaths.mainSkill, "utf-8"); - - const mem = buildMemPrompt(await memory.get(text)); - - const projectData = await u.db("o_project").where("id", resTool.data.projectId).first(); - const novelData = await u.db("o_novel").where("projectId", resTool.data.projectId).select("id", "chapterIndex as index"); - - const projectInfo = [ - "## 项目信息", - `小说名称:${projectData?.name ?? "未知"}`, - `小说类型:${projectData?.type ?? "未知"}`, - `小说简介:${projectData?.intro ?? "无"}`, - `目标改编影视视觉手册|画风:${projectData?.artStyle ?? "无"}`, - `目标改编视频画幅:${projectData?.videoRatio ?? "16:9"}`, - ].join("\n"); - - const projectPrompt = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- 章节ID:${i.id}: 第${i.index}章`).join("\n")}\n\n`; - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - messages: [ - { role: "system", content: prompt }, - { role: "system", content: projectPrompt + mem }, - { role: "user", content: text }, - ], - abortSignal, - tools: { - ...memory.getTools(), - run_sub_agent: runSubAgent(ctx), - ...useTools({ resTool: ctx.resTool, msg: ctx.msg }), - }, - onFinish: async (completion) => { - await memory.add("assistant:decision", completion.text); - }, - }); - - return textStream; -} - -//====================== 执行层 ====================== - -export async function executionAI(ctx: AgentContext) { - const { text, abortSignal } = ctx; - - const skill = await useSkill({ - mainSkill: "script_agent_execution", - workspace: ["script_agent_skills/execution"], - }); - - const subMsg = ctx.resTool.newMessage("assistant", "编剧"); - - const prefixSystem = ` -你可以使用如下XML格式写入工作区: -故事骨架内容 -改编策略内容 -`; - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: prefixSystem + skill.prompt, - messages: [{ role: "user", content: text }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ resTool: ctx.resTool, msg: subMsg }), - }, - }); - - return { textStream, subMsg }; -} - -export async function supervisionAI(ctx: AgentContext) { - const { text, abortSignal } = ctx; - - const skill = await useSkill({ mainSkill: "script_agent_supervision", workspace: ["script_agent_skills/supervision"] }); - - const subMsg = ctx.resTool.newMessage("assistant", "编辑"); - - const { textStream } = await u.Ai.Text("scriptAgent").stream({ - system: skill.prompt, - messages: [{ role: "user", content: text }], - abortSignal, - tools: { - ...skill.tools, - ...useTools({ - resTool: ctx.resTool, - msg: subMsg, - }), - }, - }); - - return { textStream, subMsg }; -} - -//工具函数 -function runSubAgent(parentCtx: AgentContext) { - const memory = new Memory("scriptAgent", parentCtx.isolationKey); - return tool({ - description: "启动子Agent执行独立任务。可用子Agent:executionAI, decisionAI, supervisionAI", - inputSchema: z.object({ - agent: z.enum(["executionAI", "supervisionAI"]).describe("子Agent名称"), - prompt: z.string().describe("交给子Agent的任务简约描述,100字以内"), - }), - execute: async ({ agent, prompt }) => { - const fn = [executionAI, supervisionAI][subAgentList.indexOf(agent)]; - - // 先完成主Agent当前的消息 - parentCtx.msg.complete(); - // 子Agent用新消息回复 - const { textStream: subTextStream, subMsg } = await fn({ ...parentCtx, text: prompt }); - let text = subMsg.text(); - let fullResponse = ""; - for await (const chunk of subTextStream) { - text.append(chunk); - fullResponse += chunk; - } - text.complete(); - subMsg.complete(); - if (fullResponse.trim()) { - await memory.add(`assistant:${agent === "executionAI" ? "execution" : "supervision"}`, fullResponse, { - name: agent === "executionAI" ? "编剧" : "编辑", - createTime: new Date(subMsg.datetime).getTime(), - }); - } - - // 为主Agent后续输出创建新消息 - parentCtx.msg = parentCtx.resTool.newMessage("assistant", "统筹"); - - return fullResponse; - }, - }); -} diff --git a/src/app.ts b/src/app.ts index 952cab6..6e1c996 100644 --- a/src/app.ts +++ b/src/app.ts @@ -30,14 +30,7 @@ const app = express(); const server = http.createServer(app); export default async function startServe(randomPort: Boolean = false) { - const verJsonPath = path.join(u.getPath(), "update.json"); - const data = JSON.parse(fs.readFileSync(verJsonPath, "utf8")); - if (data.version !== APP_VERSION) { - await fs.promises.writeFile(u.getPath("update.json"), JSON.stringify({ version: APP_VERSION }), "utf-8"); - } - await u.writeVersion(); - const io = new Server(server, { cors: { origin: "*" } }); socketInit(io); diff --git a/src/routes/other/getVersion.ts b/src/routes/other/getVersion.ts index dddb7fb..5f6993a 100644 --- a/src/routes/other/getVersion.ts +++ b/src/routes/other/getVersion.ts @@ -1,6 +1,6 @@ import express from "express"; import { success } from "@/lib/responseFormat"; -import {getVersion} from "@/utils/writeVersion"; +import { getVersion } from "@/utils/writeVersion"; const router = express.Router(); diff --git a/src/routes/setting/about/downloadApp.ts b/src/routes/setting/about/downloadApp.ts index 25d11ba..f9711d4 100644 --- a/src/routes/setting/about/downloadApp.ts +++ b/src/routes/setting/about/downloadApp.ts @@ -5,20 +5,9 @@ import u from "@/utils"; import fs from "fs"; import axios from "axios"; import compressing from "compressing"; -import path from "path"; -import { success, error } from "@/lib/responseFormat"; +import { success } from "@/lib/responseFormat"; const router = express.Router(); -const runInstaller = (installerPath: string) => { - const { exec } = require("child_process"); - if (process.platform === "darwin") { - exec(`open "${installerPath}"`); - } else { - if (process.platform !== "win32") fs.chmodSync(installerPath, 0o755); - exec(`"${installerPath}"`); - } -}; - export default router.post( "/", validateFields({ @@ -28,17 +17,11 @@ export default router.post( }), async (req, res) => { const { reinstall, url, version } = req.body; - const rootDir = u.getPath(["temp"]); - fs.mkdirSync(rootDir, { recursive: true }); if (reinstall) { - const response = await axios.get(url, { responseType: "arraybuffer" }); - const ext = - path.extname(new URL(url).pathname) || (process.platform === "win32" ? ".exe" : process.platform === "darwin" ? ".dmg" : ".AppImage"); - const installerPath = path.join(rootDir, `latest${ext}`); - fs.writeFileSync(installerPath, response.data); - runInstaller(installerPath); - res.status(200).send(success("安装包已下载并启动")); + res.status(200).send(success("请在浏览器中手动下载并安装最新版本")); } else { + const rootDir = u.getPath(["temp"]); + fs.mkdirSync(rootDir, { recursive: true }); const zip = await axios.get(url, { responseType: "arraybuffer" }).then((res) => res.data); fs.writeFileSync(`${rootDir}/latest.zip`, zip); await compressing.zip.uncompress(`${rootDir}/latest.zip`, rootDir); @@ -59,8 +42,7 @@ export default router.post( fs.cpSync(tempModelsPath, u.getPath(["models"]), { recursive: true, force: true }); } fs.rmSync(rootDir, { recursive: true, force: true }); - await u.writeVersion(version); - res.status(200).send(success("更新成功,5秒后重启")); + res.status(200).send(success(`更新${version}成功,5秒后重启`)); } }, ); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index 8adea86..2a9745d 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,37 +1,6 @@ -// @db-hash 6cd709d9bdfe00c4dc87961a8ebba149 +// @db-hash 3296433eb24314b094ac5d3839c049c5 //该文件由脚本自动生成,请勿手动修改 -export interface _o_project_old_20260404 { - 'artStyle'?: string | null; - 'createTime'?: number | null; - 'directorManual'?: string | null; - 'id'?: number | null; - 'imageModel'?: string | null; - 'imageQuality'?: string | null; - 'intro'?: string | null; - 'mode'?: string | null; - 'name'?: string | null; - 'projectType'?: string | null; - 'type'?: string | null; - 'userId'?: number | null; - 'videoModel'?: string | null; - 'videoRatio'?: string | null; -} -export interface _o_prompt_old_20260406 { - 'data'?: string | null; - 'id'?: number; - 'name'?: string | null; - 'type'?: string | null; - 'useData'?: string | null; -} -export interface _o_prompt_old_20260406_1 { - 'data'?: string | null; - 'id'?: number; - 'name'?: string | null; - 'TEXT'?: any | null; - 'type'?: string | null; - 'useData'?: string | null; -} export interface memories { 'content': string; 'createTime': number; @@ -263,9 +232,6 @@ export interface o_videoTrack { } export interface DB { - "_o_project_old_20260404": _o_project_old_20260404; - "_o_prompt_old_20260406": _o_prompt_old_20260406; - "_o_prompt_old_20260406_1": _o_prompt_old_20260406_1; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData; From 3a9ec3a1cadf1728e2ebc8b7c3433527e0f4dcfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Tue, 7 Apr 2026 00:23:33 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E6=9B=B4=E6=96=B0skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/skills/production_agent_decision.md | 4 + data/skills/production_agent_supervision.md | 151 +++++++++++++++--- .../production_execution_director_plan.md | 2 +- .../production_execution_storyboard_panel.md | 26 +-- .../production_execution_storyboard_table.md | 9 +- data/skills/script_agent_supervision.md | 121 ++++++++++++-- data/skills/script_execution_adaptation.md | 82 ++++++++++ data/skills/script_execution_script.md | 110 +++++++++++++ data/skills/script_execution_skeleton.md | 110 +++++++++++++ 9 files changed, 560 insertions(+), 55 deletions(-) diff --git a/data/skills/production_agent_decision.md b/data/skills/production_agent_decision.md index 2eaaf0a..c16d319 100644 --- a/data/skills/production_agent_decision.md +++ b/data/skills/production_agent_decision.md @@ -209,6 +209,8 @@ run_sub_agent_supervision( | "继续" / "下一步" | `deepRetrieve` 获取进度 → 从当前阶段继续 | | "修改/优化 X" | 定位对应阶段 → 派发修改任务 | | 模糊请求 | `deepRetrieve` 获取进度 → 从当前阶段继续 | +| "生成视频" / "合成视频" / 视频生成相关请求 | **不执行**,提醒用户:「视频生成请前往视频生成面板进行操作」 | +| 无法识别 / 不存在的指令 | **不执行**,提醒用户:「当前无法执行该任务,请确认您的指令是否正确」 | --- @@ -257,6 +259,8 @@ run_sub_agent_supervision( 2. **审核结果展示**:阶段3、4由监督层审核后展示报告,等待用户反馈 3. **等待用户决策**:审核发现问题时,**必须等待用户明确指示**后再执行修复,不可自行决定 4. **不暴露内部机制**:不向用户提及 Agent 名称、工具名称等实现细节 +5. **视频生成引导**:当用户请求生成/合成视频时,不进行任何执行操作,直接提醒用户前往视频生成面板进行操作 +6. **未知指令拒绝**:当用户发出不属于制作流水线范围内的指令或无法识别的请求时,明确告知用户当前无法执行该任务,并引导用户确认指令是否正确 --- diff --git a/data/skills/production_agent_supervision.md b/data/skills/production_agent_supervision.md index 5e99ae2..538950d 100644 --- a/data/skills/production_agent_supervision.md +++ b/data/skills/production_agent_supervision.md @@ -26,8 +26,9 @@ description: >- 1. 识别审核对象 2. 按对应审核对象的「数据准备」步骤获取数据 -3. 按「审核维度」逐项检查 -4. 按「审核报告格式」生成报告 +3. 对照「Skills」中对应的红线清单 + 「审核维度」逐项检查 +4. 遇到「Skills 三 - 视频制作通用红线」中的违反项,直接标记为严重问题 +5. 按「审核报告格式」生成报告 --- @@ -76,6 +77,49 @@ description: >- 3. **问题具体化**:每个问题指向具体位置和内容,不说"整体不够好" 4. **建议多元化**:严重问题提供多个可选方案 5. **动态基准**:数值判断以实际工作区数据为唯一基准;未明确的参数以合理比例推算,并在报告中注明 +6. **Skills 对照审核**:所有审核项须对照 Skills 中的红线清单逐项核对,确保执行层产出物符合视频制作质量标准 + +--- + +## Skills + +### 一、导演规划质量红线(审核导演规划时逐项核对) + +1. **导演具象化原则**:所有描述以「摄像机能拍到什么」为标准——动作必须是连续物理动作链(禁止"感到疲惫"等抽象词);光影须量化(主光源方向+色温范围+明暗倾向);情绪靠肢体微表情传达("指尖发颤、瞳孔收缩"代替"他很紧张");声音具体到可感知声源(禁止"背景音乐烘托气氛") +2. **风格一致性**:所有创作规划内容须与风格技法参考(director_planning.md)一致,色调、光影、节奏、声音方向无冲突;冲突时以风格技法参考为准 +3. **六维度完整性**:①主题立意 ②视觉风格 ③叙事结构 ④分场景意图 ⑤声音方向 ⑥转场与视觉连续性,六个维度均有输出,必填规划项无缺失 +4. **叙事模式选型合理**:须根据内容特征选择叙事模式(完整叙事型/情绪意境型/原著保真型),选型须与剧本类型匹配 +5. **情绪曲线渐进递增**:情绪曲线呈渐进式递增,快慢交替;不允许连续3个以上同强度段落;高潮段落的"快"指情绪密度高(更紧密的景别切换),不等于缩短镜头时长 +6. **转折点视觉化**:关键转折点必须用具体视觉手段描述(光影突变、景别跳切、空镜隐喻等),不依赖台词解释;优先画面而非台词 +7. **构图须有叙事理由**:构图选择须说明叙事理由,参考情绪-构图映射(对称→秩序/压迫;三分法留白→孤独/期待;对角线→冲突/紧张;框中框→囚禁/窥视) +8. **空间三层分离**:关键画面须规划前景(引导视线)/ 中景(叙事主体)/ 背景(情绪氛围)的层次关系 +9. **光影段落对应**:光影以「段落-光影方向」表格呈现,每段落指定光影基调方向;色温、光源角度等参数以风格技法参考为准 +10. **声音可感知**:环境音具体到可感知声源("蝉鸣/溪水/市井叫卖/雨滴檐角"),每场标注1~2个核心环境音;配乐覆盖率不超过70%,留白段落与配乐段落形成呼吸感 +11. **资产全覆盖**:规划中引用的角色、道具、场景在 assets 列表中均存在,无虚构引用 + +### 二、分镜表质量红线(审核分镜表时逐项核对) + +1. **内容忠实剧本**:分镜内容严格按照剧本叙事顺序和内容拆分,不遗漏不新增剧本中不存在的情节 +2. **台词原文锁定**:剧本中所有台词必须原文照搬进 lines 字段,禁止改写、省略或意译;缺失台词视为严重错误 +3. **资产关联正确**:associateAssetsIds 使用资产实际 ID(非数组索引),必须与工作区现有资产匹配;索引越界视为严重错误 +4. **角色出现即引用**:画面中可见的所有角色(含局部可见——背影、肢体局部、虚化身影),只要可辨识就必须引用对应资产 ID;遗漏视为严重错误 +5. **场景资产必选**:每条分镜必须引用其所处场景对应的场景资产 ID(type 为 scene 的资产);若存在匹配衍生场景资产则选用衍生 ID,否则选用主场景资产 ID;缺少场景资产 ID 视为严重错误 +6. **父子资产选择正确**:按剧情选资产——衍生状态匹配则仅用衍生 ID,无匹配衍生才用主资产 ID;同一父资产在同一分镜中禁止主/衍生同时出现 +7. **视觉连续性七律**:① 动作连续性(位置、动作进度、朝向物理逻辑一致)② 景别递进法则(渐进聚焦或渐进释放,禁止无理由连续3镜同景别)③ 视轴守恒(180°线原则)④ 朝向空间逻辑(对话双方面朝彼此,操作物品面朝物品)⑤ 信息控制意识(给手不给脸=悬念;先声后画=期待)⑥ 节拍密度约束(2~3s≤1拍;4~6s≤2拍;7s+≤3拍)⑦ 头尾安全区(前后0.5s不放关键动作/台词起始) +8. **朝向必填且连续**:每条分镜 action 字段必须含 `|朝向:` 标注(空镜除外);同一场景内同一角色朝向与首次出场一致,变化须有转身/转头衔接动作 +9. **台词-时长强关联**:含台词分镜 duration ≥ 台词字数÷情绪语速(向上取整)+ 停顿余量 + 1s安全余量;语速标准:愤怒~4字/秒、正常~3字/秒、悲伤~2字/秒、低语~2字/秒 +10. **定场精简**:每个新场景定场最多1~2镜,禁止3镜以上碎片化定场;能一镜完成定场+引入的不拆两镜 +11. **黄金6秒**:无台词镜头不超过6s,定场/过渡类镜头尤其注意 +12. **光影风格一致**:光影描述须与已加载风格技法的光影规范保持一致 + +### 三、视频制作通用红线 + +以下任何一项违反均标记为**严重问题**: +1. 资产引用了工作区中不存在的 ID 或名称 +2. 输出内容与风格技法参考存在直接冲突(色调、光影、构图等关键视觉要素) +3. 规划或分镜中遗漏剧本场次/关键事件 +4. 抽象笼统表述替代具象可感描述(如仅写"开心""暗调"而无具体视觉/声源细节) +5. 分镜表中缺失台词(剧本有台词但分镜表未收录) --- @@ -88,18 +132,21 @@ description: >- ### 审核维度 -导演规划由**创作规划**(五维度)和**执行计划**(步骤列表)两部分组成,逐项审核: +导演规划由**创作规划**(六维度)和**执行计划**(步骤列表)两部分组成,逐项审核: | 审核项 | 对应部分 | 标准 | 严重程度 | |--------|---------|------|----------| -| 风格一致性 | 全局 | 所有创作规划内容与 director_planning.md 风格技法参考一致,无冲突 | 严重 | -| 剧情覆盖度 | ③叙事结构 + ④分场景意图 | 段落划分与分场景意图覆盖剧本全部场次,无遗漏 | 严重 | -| 资产匹配 | ④分场景意图 + 执行计划 | 规划中引用的角色、道具、场景在 assets 列表中均存在 | 严重 | -| 创作规划完整性 | ①~⑤ | 五个维度均有输出,必填规划项无缺失 | 中等 | -| 具象化表达 | ①~⑤ | 情绪、氛围、声音描述具体可感知,无抽象笼统表述 | 中等 | -| 节奏合理性 | ③叙事结构 | 情绪曲线渐进递增,快慢交替,无连续同强度段落 | 中等 | +| 风格一致性 | 全局 | 所有创作规划内容与 director_planning.md 风格技法参考一致,无冲突(→ Skills 一-2) | 严重 | +| 剧情覆盖度 | ③叙事结构 + ④分场景意图 | 段落划分与分场景意图覆盖剧本全部场次,无遗漏(→ Skills 三-3) | 严重 | +| 资产匹配 | ④分场景意图 + 执行计划 | 规划中引用的角色、道具、场景在 assets 列表中均存在(→ Skills 一-11/三-1) | 严重 | +| 创作规划完整性 | ①~⑥ | 六个维度均有输出,必填规划项无缺失(→ Skills 一-3) | 中等 | +| 具象化表达 | ①~⑥ | 情绪、氛围、声音描述具体可感知,无抽象笼统表述(→ Skills 一-1/三-4) | 中等 | +| 节奏合理性 | ③叙事结构 | 情绪曲线渐进递增,快慢交替,无连续同强度段落(→ Skills 一-5) | 中等 | +| 转折点视觉化 | ③叙事结构 | 关键转折点用具体视觉手段描述,不依赖台词(→ Skills 一-6) | 中等 | +| 构图与空间层次 | ②视觉风格 + ④分场景意图 | 构图有叙事理由;关键画面有前/中/背景三层分离(→ Skills 一-7/8) | 中等 | +| 声音可感知 | ⑤声音方向 | 环境音具体到声源,配乐覆盖率≤70%(→ Skills 一-10) | 中等 | | 依赖关系正确 | 执行计划 | 步骤间依赖关系正确,无循环依赖或遗漏 | 中等 | -| 总字数控制 | 全局 | 总字数不超过 1000 词 | 轻微 | +| 总字数控制 | 全局 | 总字数不超过 1200 词 | 轻微 | ### 详细审核标准 @@ -133,22 +180,25 @@ description: >- |------|--------| | ①主题立意 | 核心主题、情感主线、离场感受、情感表达策略 | | ②视觉风格 | 整体色调、画面质感、构图风格、镜头运动偏好、光影体系 | -| ③叙事结构 | 段落划分表(编号/名称/场次/核心事件/情绪浓度/节奏)、情绪曲线、转折点 | +| ③叙事结构 | 段落划分表(编号/名称/场次/核心事件/情绪浓度/节奏)、叙事模式选型、情绪曲线、转折点 | | ④分场景意图 | 逐场的情绪目标、氛围方向、镜头意图、空间叙事、距离感设计 | -| ⑤声音方向 | 音乐风格、段落配乐对应、环境音设计、沉默运用 | +| ⑤声音方向 | 音乐风格、段落配乐对应、配乐覆盖率、环境音设计、沉默运用 | +| ⑥转场与视觉连续性 | 场间转场策略、段落间过渡手法、视觉连续性锚点 | -#### 具象化表达(中等) +#### 具象化表达(中等)(→ Skills 一-1/三-4) - ①情感主线需拆解 2-3 个递进层次,非笼统概括 -- ②色调需具体到色彩代号或色温范围,非"暖色调" +- ②色调需具体到色彩代号或色温范围,非"暖色调";构图须说明叙事理由 - ③转折点必须用具体视觉手段描述(光影突变、景别跳切等),优先画面而非台词 -- ④情绪目标用具象可感的描述,禁止抽象词(如"开心""悲伤") -- ⑤环境音需具体到可感知声源,非"自然声" +- ④情绪目标用具象可感的描述,禁止抽象词(如"开心""悲伤");镜头意图写"为什么"而非"怎么拍" +- ⑤环境音需具体到可感知声源,非"自然声";配乐覆盖率不超过70% +- ⑥转场策略须标注具体空镜内容方向,视觉连续性锚点须指明关键跨场景一致性要求 -#### 节奏合理性(中等) +#### 节奏合理性(中等)(→ Skills 一-5) - 情绪曲线应呈渐进式递增,非平铺直叙 - 高强度段落与低强度段落交替出现,不允许连续 3 个以上同强度段落 +- 高潮段落的"快"指情绪密度高(更紧密的景别切换),不等于缩短镜头时长 - 段落间应有过渡设计,避免硬切 #### 依赖关系正确(中等) @@ -171,12 +221,16 @@ description: >- | 审核项 | 标准 | 严重程度 | |--------|------|----------| -| 关联资产正确 | associateAssetsIds 中的索引均在 assets 数组范围内;画面中可见的资产已关联 | 严重 | -| 父子资产选择正确 | 同一分镜按剧情优先选择衍生资产 ID;无匹配衍生时才使用主资产 ID,且二者不得同时出现 | 严重 | -| 剧本覆盖度 | 剧本中的全部场景和关键事件均有对应分镜,无遗漏 | 严重 | -| 拆分粒度 | 一个独立画面对应一条分镜;无过度合并或过度拆分 | 中等 | -| 镜头语言合理 | camera 字段使用标准景别术语;景别变化服务于叙事节奏 | 中等 | -| 时长合理性 | duration 与画面复杂度匹配;总时长与剧本预估时长基本吻合 | 中等 | +| 关联资产正确 | associateAssetsIds 中的 ID 均在 assets 中存在;画面中可见的角色与场景资产已关联(→ Skills 二-3/4/5/三-1) | 严重 | +| 父子资产选择正确 | 同一分镜按剧情优先选择衍生资产 ID;无匹配衍生时才使用主资产 ID,且二者不得同时出现(→ Skills 二-6) | 严重 | +| 剧本覆盖度 | 剧本中的全部场景和关键事件均有对应分镜,无遗漏(→ Skills 二-1/三-3) | 严重 | +| 台词完整性 | 剧本中所有台词均原文出现在分镜 lines 字段中,无改写、省略或遗漏(→ Skills 二-2/三-5) | 严重 | +| 视觉连续性 | 相邻分镜的动作连续性、景别递进、视轴守恒、朝向逻辑符合七律(→ Skills 二-7) | 中等 | +| 朝向标注 | 每条分镜 action 字段含朝向标注;同场景同角色朝向连续一致(→ Skills 二-8) | 中等 | +| 拆分粒度 | 一个独立画面对应一条分镜;无过度合并或过度拆分;定场最多1~2镜(→ Skills 二-10) | 中等 | +| 镜头语言合理 | camera 字段使用标准景别术语;景别变化服务于叙事节奏;无连续5条以上相同景别 | 中等 | +| 时长合理性 | 含台词时长匹配情绪语速;无台词镜头≤6s;总时长与剧本预估基本吻合(→ Skills 二-9/11) | 中等 | +| 光影风格一致 | 光影描述与已加载风格技法的光影规范一致(→ Skills 二-12/三-2) | 中等 | ### 详细审核标准 @@ -232,9 +286,60 @@ description: >- - 同一段对话被拆成超过 3 条分镜(无视角切换时) +#### 台词完整性(严重)(→ Skills 二-2/三-5) + +验证方法: +1. 提取剧本中全部角色台词 +2. 逐条比对分镜表 lines 字段,确认原文一字不差 +3. 标注缺失、改写或省略的台词及对应剧本位置 + +不通过示例: +- 剧本写"你以为你配?",分镜 lines 改写为"你觉得你配吗?" +- 剧本中某角色有 3 句台词,分镜表仅收录 2 句 + +#### 视觉连续性(中等)(→ Skills 二-7) + +逐对相邻分镜检查七律: +- **动作连续性**:上一镜动作终态 = 下一镜动作起态,无跳跃 +- **景别递进**:景别切换遵循渐进聚焦或渐进释放,无理由连续 3 镜以上同景别视为问题 +- **视轴守恒**:对话/对峙场景中角色画面位置全片固定同侧,不得跳轴 +- **节拍密度**:2~3s镜头≤1拍;4~6s镜头≤2拍;7s+镜头≤3拍 + +#### 朝向标注(中等)(→ Skills 二-8) + +验证方法: +1. 遍历每条分镜的 action 字段,检查是否包含 `|朝向:` 标注(空镜除外) +2. 同一场景内追踪每个角色的朝向序列,检查是否与首次出场一致 +3. 朝向发生变化时,检查动作描述中是否有转身/转头等衔接动作 + +不通过示例: +- action 字段仅写"缓缓抬手",缺少朝向标注 +- 角色首次出场标注"面朝右",下一镜突然变为"面朝左"但无转身动作描述 + +#### 台词-时长匹配(中等)(→ Skills 二-9) + +验证方法: +1. 提取含台词分镜的 lines 字段,统计台词字数 +2. 根据 emotion 字段判断语速档位(愤怒~4字/秒、正常~3字/秒、悲伤/低语~2字/秒) +3. 计算最低 duration = 台词字数÷语速(向上取整)+ 标点停顿累计(每个标点+0.3~0.5s)+ 1s安全余量 +4. 对比实际 duration,不足则标记问题 + +#### 定场精简(中等)(→ Skills 二-10) + +- 每个新场景的定场镜头不超过 2 个 +- 能一镜完成定场+引入的不拆两镜 +- 连续描述同一空间不同局部的镜头(院门→藤蔓→厢房)应合并为一个镜头 + #### 镜头语言合理(中等) - 使用标准景别术语(大远景/远景/全景/中景/近景/特写/大特写) - 重要细节用特写/大特写,场景建立用远景/全景 - 对话场景通常用近景/中景 - 不允许连续 5 条以上使用完全相同的景别 + +#### 光影风格一致(中等)(→ Skills 二-12/三-2) + +验证方法: +1. 加载风格技法参考中的光影规范 +2. 逐条分镜检查 lighting 字段是否与风格光影规范方向一致 +3. 标注明显偏离风格基准的分镜 diff --git a/data/skills/production_execution_director_plan.md b/data/skills/production_execution_director_plan.md index 958a9a5..5249d36 100644 --- a/data/skills/production_execution_director_plan.md +++ b/data/skills/production_execution_director_plan.md @@ -32,7 +32,7 @@ description: >- 1. 加载风格技法参考,获取 `script` 和 `assets`,并并且激活 `director_planning_narrative` 以及 `director_planning_style`,所有规划内容以该文档为风格基准,冲突时以风格技法参考为准。 2. 按下方规范制定导演规划(创作规划),全文遵守「导演具象化原则」 -3. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +3. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 ### 导演具象化原则(贯穿全文) diff --git a/data/skills/production_execution_storyboard_panel.md b/data/skills/production_execution_storyboard_panel.md index 5597853..dbe0cd2 100644 --- a/data/skills/production_execution_storyboard_panel.md +++ b/data/skills/production_execution_storyboard_panel.md @@ -24,6 +24,7 @@ description: >- |------|------| | 读取剧本 | `get_flowData("script")` | | 读取分镜表 | `get_flowData("stoaryTable")` | +| 读取剧本规划 | `get_flowData("scriptPlan")` | ### 写入模式 @@ -39,33 +40,32 @@ description: >- ### 执行流程 -1. 获取 `script` 、`stoaryTable`,识别决策层指令中的**写入模式**(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式) -2. **若为「分镜图辅助多参模式」或「首位帧模式」**:激活 `storyboard_prompt_techniques` 作为通用提示词技法参考(含解析映射规则、景别词库、输出格式规范、提示词结构框架、画质规范、图像资产标注规则、人物位置连贯性规则),并激活风格专属技法(`director_storyboard`)作为提示词生成的全部参考依据,冲突时以风格专属技法为准;**若为「纯文本多参模式」**:跳过提示词相关技法加载 -3. 确定分组(track)与时长规则: +1. 获取 `script`、`stoaryTable` 和 `scriptPlan`,识别决策层指令中的**写入模式**(纯文本多参模式 / 分镜图辅助多参模式 / 首位帧模式)。**若为「分镜图辅助多参模式」或「首位帧模式」**:激活 `storyboard_prompt_techniques` 作为通用提示词技法参考(含解析映射规则、景别词库、输出格式规范、提示词结构框架、画质规范、图像资产标注规则、人物位置连贯性规则),并激活风格专属技法(`director_storyboard`)作为提示词生成的全部参考依据,冲突时以风格专属技法为准;**若为「纯文本多参模式」**:跳过提示词相关技法加载 +2. 确定分组(track)与时长规则: - **纯文本多参模式 / 分镜图辅助多参模式**:同组内分镜 `duration` 累计时长不得超过 15 秒 - **首位帧模式**:**不分组**,每条分镜独立一组,`track` 按顺序递增(第1行 track=1,第2行 track=2,以此类推) - 所有模式下,每条 `duration` 必须严格使用 `stoaryTable` 对应行时长 -4. **人物空间位置与朝向预分析**(纯文本多参模式跳过此步):正式写入前,先通读全部分镜表,执行以下分析并建立全局基准表: +3. **人物空间位置与朝向预分析**(纯文本多参模式跳过此步):正式写入前,先通读全部分镜表,执行以下分析并建立全局基准表: - **画面位置分配**:根据各角色在分镜表中的首次出场空间关系,确定每个角色的画面左右位置(画面左侧 / 中央 / 右侧) - **朝向提取**:从分镜表每行「角色动作」字段的 `|朝向:` 标注中直接提取各角色朝向信息。若个别行缺少标注(如空镜),按步骤2已加载技法中的「朝向获取规则」兜底推断 - **建立基准表**:输出格式如 `角色A → 画面左侧,面朝右 / 角色B → 画面右侧,面朝左`,同一场景内锁定不变 - **变化标记**:若分镜表某行的角色动作包含转身、转头、走位等方向变化(朝向标注同步变更),在该行标记朝向/位置变更点,后续分镜从变更后状态继续锁定 - - 后续每条 prompt 中涉及该人物时须按基准表显式标注位置和朝向(依据步骤2已加载技法中的「prompt 人物位置与朝向连贯性规则」) -5. **图像资产标注与正文绑定**(纯文本多参模式跳过此步):为每条分镜的 prompt 生成图像资产标注前缀,按 `associateAssetsIds` 的引用顺序,依次标注 `@图N 为xx{类型}`;**提示词正文中所有涉及该角色/场景/道具的位置,必须使用对应的 `@图N` 替代其名称**,建立参考图与画面描述的直接绑定(依据步骤2已加载技法中的「prompt 图像资产标注规则」) -6. **生成视频描述(videoDesc)**(所有模式均需):根据 `stoaryTable` 对应行的完整分镜数据(画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID),将该行信息整合为一段结构化的视频描述文本,填入 `videoDesc` 字段 -7. **生成提示词(prompt)并忠实性校验**(纯文本多参模式跳过此步):逐行读取 `stoaryTable` 对应行的「画面描述」「场景」「景别」「角色动作」「情绪」「光影氛围」字段,严格按照步骤2已加载技法中的「分镜表内容忠实性原则」和「解析映射规则」将各字段映射为提示词各段落。**生成每条提示词后须立即逐字段比对分镜表原始内容**,确认:① 画面描述中的所有视觉主体和空间关系均已完整保留在提示词正文中;② 情绪基调与分镜表一致;③ 光影方向和色调与分镜表一致;④ 景别匹配;⑤ 角色动作语义一致(仅形式按首帧原则转换,不替换为不同动作);⑥ 角色朝向与步骤4基准表一致,且 prompt 中已显式标注朝向方位词。校验不通过须修正后再进入下一步 -8. 严格按 `stoaryTable` 的分镜数据行逐行写入分镜面板(排除表头与分隔行),根据模式差异化输出: + - 后续每条 prompt 中涉及该人物时须按基准表显式标注位置和朝向(依据步骤1已加载技法中的「prompt 人物位置与朝向连贯性规则」) +4. **图像资产标注与正文绑定**(纯文本多参模式跳过此步):为每条分镜的 prompt 生成图像资产标注前缀,按 `associateAssetsIds` 的引用顺序,依次标注 `@图N 为xx{类型}`;**提示词正文中所有涉及该角色/场景/道具的位置,必须使用对应的 `@图N` 替代其名称**,建立参考图与画面描述的直接绑定(依据步骤1已加载技法中的「prompt 图像资产标注规则」) +5. **生成视频描述(videoDesc)**(所有模式均需):根据 `stoaryTable` 对应行的完整分镜数据(画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID),将该行信息整合为一段结构化的视频描述文本,填入 `videoDesc` 字段 +6. **生成提示词(prompt)并忠实性校验**(纯文本多参模式跳过此步):逐行读取 `stoaryTable` 对应行的「画面描述」「场景」「景别」「角色动作」「情绪」「光影氛围」字段,严格按照步骤1已加载技法中的「分镜表内容忠实性原则」和「解析映射规则」将各字段映射为提示词各段落。**生成每条提示词后须立即逐字段比对分镜表原始内容**,确认:① 画面描述中的所有视觉主体和空间关系均已完整保留在提示词正文中;② 情绪基调与分镜表一致;③ 光影方向和色调与分镜表一致;④ 景别匹配;⑤ 角色动作语义一致(仅形式按首帧原则转换,不替换为不同动作);⑥ 角色朝向与步骤3基准表一致,且 prompt 中已显式标注朝向方位词。校验不通过须修正后再进入下一步 +7. 严格按 `stoaryTable` 的分镜数据行逐行写入分镜面板(排除表头与分隔行),根据模式差异化输出: - **纯文本多参模式**:`` - **分镜图辅助多参模式**:`` - **首位帧模式**:`` -9. 写入完成后,仅返回一句确认:`已完成分镜面板写入({当前模式名称})` +8. 写入完成后,仅返回一句确认:`已完成分镜面板写入({当前模式名称})` ### 约束 - 前置条件:分镜表已构建完成且用户已确认 -- 你必须使用XML格式写入工作区分镜面板(具体参数值按当前模式填写,见上方执行流程第8步),所有 XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +- 你必须使用XML格式写入工作区分镜面板(具体参数值按当前模式填写,见上方执行流程第7步),所有 XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 - **videoDesc 必填**(所有模式):每条分镜的 `videoDesc` 必须根据 `stoaryTable` 对应行的分镜数据生成,包含画面描述、场景、关联资产名称、时长、景别、运镜、角色动作、情绪、光影氛围、台词、音效、关联资产ID 等完整信息 -- **prompt 内容忠实性**(分镜图辅助多参模式 / 首位帧模式):提示词内容必须忠实于 `stoaryTable` 对应行的画面描述、场景、景别、角色动作、情绪、光影氛围等字段,禁止凭空添加分镜表未描述的视觉元素或替换原始语义;风格锚定词和画质锁定词作为辅助修饰,不得挤占或替代分镜表中的具体画面内容(详见步骤2已加载技法中的「分镜表内容忠实性原则」) +- **prompt 内容忠实性**(分镜图辅助多参模式 / 首位帧模式):提示词内容必须忠实于 `stoaryTable` 对应行的画面描述、场景、景别、角色动作、情绪、光影氛围等字段,禁止凭空添加分镜表未描述的视觉元素或替换原始语义;风格锚定词和画质锁定词作为辅助修饰,不得挤占或替代分镜表中的具体画面内容(详见步骤1已加载技法中的「分镜表内容忠实性原则」) - 行数一致性约束:分镜面板 `items` 数量必须与 `stoaryTable` 的分镜数据行数量完全一致(不包含表头与分隔行) - 时长一致性约束:分镜面板 `duration` 必须与 `stoaryTable` 对应行时长完全一致 - 阶段边界:本阶段禁止调用 `generate_storyboard_images` @@ -77,7 +77,7 @@ description: >- | `prompt` | `''`(空字符串) | 正常生成提示词 | 正常生成提示词 | | `shouldGenerateImage` | `false` | `true` | `true` | | `track` 分组 | 累计时长 ≤ 15s | 累计时长 ≤ 15s | 每行独立一组,按顺序递增 | -| 人物位置连贯性校验 | 不适用(无 prompt) | **必须**校验(见步骤2已加载技法) | **必须**校验(见步骤2已加载技法) | +| 人物位置连贯性校验 | 不适用(无 prompt) | **必须**校验(见步骤1已加载技法) | **必须**校验(见步骤1已加载技法) | | 图像资产标注 | 不适用(无 prompt) | **必填**(见步骤2已加载技法) | **必填**(见步骤2已加载技法) | | 提示词技法加载 | 跳过 | 激活通用技法 + 风格专属技法(见步骤2) | 激活通用技法 + 风格专属技法(见步骤2) | | 提示词忠实性校验 | 不适用(无 prompt) | **必须**校验(见步骤7) | **必须**校验(见步骤7) | diff --git a/data/skills/production_execution_storyboard_table.md b/data/skills/production_execution_storyboard_table.md index 27ae286..d76a371 100644 --- a/data/skills/production_execution_storyboard_table.md +++ b/data/skills/production_execution_storyboard_table.md @@ -22,7 +22,7 @@ description: >- | 操作 | 调用 | |------|------| -| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` | +| 读取剧本与资产 | `get_flowData("script")` / `get_flowData("assets")` / `get_flowData("scriptPlan")` | ### 风格技法参考 @@ -30,10 +30,9 @@ description: >- ### 执行流程 -1. 获取 `script` 和 `assets`,并且激活 `director_storyboard_table_narrative` 以及 `director_storyboard_table_style` ,作为分镜设计的风格参考。 -2. 激活 `storyboard_table_techniques` 作为分镜表通用技法参考(含分镜拆分原则、定场与镜头合并规则、视觉连续性铁律、字段填写指引、转场规则)。 -3. 按通用技法规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 -4. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 +1. 获取 `script`、`assets` 和 `scriptPlan`,并激活 `director_storyboard_table_narrative`、`director_storyboard_table_style` 作为分镜设计的风格参考,同时激活 `storyboard_table_techniques` 作为分镜表通用技法参考(含分镜拆分原则、定场与镜头合并规则、视觉连续性铁律、字段填写指引、转场规则)。 +2. 按通用技法规则将剧本拆分为分镜,**每写一行前**回顾上一行状态,确保符合「视觉连续性铁律」后再填写当前行所有字段 +3. 严格按照XML格式写出导演规划内容,XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 ### 示例 diff --git a/data/skills/script_agent_supervision.md b/data/skills/script_agent_supervision.md index da8d53e..afa1170 100644 --- a/data/skills/script_agent_supervision.md +++ b/data/skills/script_agent_supervision.md @@ -19,8 +19,9 @@ 1. 识别审核对象 2. 按对应审核对象的「数据准备」步骤获取数据 -3. 按「审核维度」逐项检查 -4. 按「审核报告格式」生成报告 +3. 对照「Skills」中对应的红线清单 + 「审核维度」逐项检查 +4. 遇到「Skills 三 - 短剧通用红线」中的违反项,直接标记为严重问题 +5. 按「审核报告格式」生成报告 --- @@ -69,6 +70,41 @@ 3. **问题具体化**:每个问题指向具体位置和内容,不说"整体不够好" 4. **建议多元化**:严重问题提供多个可选方案 5. **动态基准**:数值判断以【项目配置】为唯一基准;配置中未明确的参数以合理比例推算,并在报告中注明 +6. **Skills 对照审核**:所有审核项须对照 Skills 中的红线清单逐项核对,确保执行层产出物符合短剧爆款标准 + +--- + +## Skills + +### 一、骨架质量红线(审核骨架时逐项核对) + +1. **核心结构逻辑**:大三角(3个核心角色/势力)构成全剧主矛盾是否成立;是否为单线型叙事(多线并行→严重) +2. **故事核与隐线**:是否有清晰的故事核(主角内在冲突);是否有隐线(角色弧光/成长轨迹) +3. **前10%黄金结构**:前⌈N×0.10⌉集是否完成"一秒入坑→目标明确→多方施压→首次卡点" +4. **付费点分布**:是否按≈10%/30%/50%/70%/90%比例分布;是否满足5大标准(关键瞬间、根本性改变、好奇心、高燃场景、爱情拉扯);是否有假付费点设计 +5. **情绪布局**:全剧是否呈"波浪上升"模式;是否与类型情绪基调匹配(甜宠=甜60%+微虐30%+惊喜10%等);是否存在连续3集同一强度 +6. **信息差标注**:关键集数是否标注信息差类型(先知型/焦急型/上帝型) +7. **集末钩子**:每集是否有钩子;类型是否多样化(智识/悬念/情感/世界观,不可全是悬念钩子) +8. **节奏框架匹配**:分集节奏是否与该类型的通用节奏框架大致吻合(甜宠→契约绑定开头→误会拉扯→秘密曝光…;战神→隐藏身份受辱→曝光打脸…) + +### 二、改编策略质量红线(审核改编策略时逐项核对) + +1. **7大核心要点覆盖**:策略是否体现——强画面感、台词精简、节奏极致快、只沿主线、降低理解成本、情绪大于一切、开篇给足期待感 +2. **情绪基调一致性**:策略确定的情绪基调是否与骨架类型匹配;是否存在中途大幅偏离(如甜宠突然重度虐心→严重) +3. **人物弧光保留**:主角和重要配角是否保留了弧光(初始状态→关键变故→性格转变→最终状态);是否保留了设定记忆点 +4. **删减合理性**:优先删除项(拖沓铺垫/重复内容/载体不支持/弱支线)是否正确;优先保留项(情绪点/关系拉扯/付费铺垫/信息差场景/打脸时刻)是否覆盖 +5. **世界观呈现策略**:是否有渐进式呈现方案;是否通过人物对话/OS/VO逐步透露,而非旁白集中灌输 +6. **短剧语言适配**:称谓是否符合短剧规范("家主""执法局"等,禁用"市长""县长");台词是否口语化(禁用文言文、生词冷词) +7. **用户意图一致性**:若用户要求不改编/忠实原著,策略是否仅做载体适配;若用户指定改编方向,策略是否以该方向为最高优先级 + +### 三、短剧通用红线 + +以下任何一项违反均标记为**严重问题**: +1. 连续3集以上无情绪爆点(爽点/虐点/甜点任一) +2. 出现多线并行叙事(短剧必须单线型) +3. 第1集无强冲突/强情绪场景 +4. 出现"市长""县长"等现实官职称谓 +5. 大段旁白解说世界观(应通过对话/OS/VO逐步透露) --- @@ -84,10 +120,15 @@ | 审核项 | 标准 | 严重程度 | |--------|------|----------| -| 结构完整性 | 故事核存在且聚焦主角内在冲突;三幕均有功能、核心问题、幕末转折 | 严重 | -| 分集与时长 | 分集数恰好等于【项目配置】集数;每集时长符合单集时长 ±10秒 | 严重 | +| 结构完整性 | 故事核存在且聚焦主角内在冲突;隐线(角色弧光)清晰;三幕均有功能、核心问题、幕末转折(→ Skills 一-1/2) | 严重 | +| 分集与时长 | 分集数恰好等于【项目配置】集数;每集时长符合单集时长 ±10秒 | 中等 | | 章节全覆盖 | 【项目配置】指定的原著章节全部被分配到具体集数 | 严重 | -| 叙事设计 | 删减有据、集末钩子齐全、付费卡点符合策略、情绪曲线有起伏、人物弧每集推进 | 中等 | +| 付费点分布 | 按≈10%/30%/50%/70%/90%比例分布,满足付费点5大标准;有假付费点设计(→ Skills 一-4) | 严重 | +| 前10%黄金结构 | 前⌈N×0.10⌉集完成"一秒入坑→目标明确→多方施压→首次卡点"(→ Skills 一-3) | 中等 | +| 情绪布局 | 全剧情绪呈波浪上升、与类型基调匹配、无连续3集同一强度(→ Skills 一-5) | 中等 | +| 信息差标注 | 关键集数标注了信息差类型(先知型/焦急型/上帝型)(→ Skills 一-6) | 中等 | +| 集末钩子 | 每集结尾有钩子且类型多样化,不可全是悬念钩子(→ Skills 一-7) | 中等 | +| 节奏框架 | 分集节奏与该类型通用节奏框架大致吻合(→ Skills 一-8) | 轻微 | ### 跨阶段一致性检查 @@ -100,21 +141,42 @@ ### 详细审核标准 +#### 故事核与隐线验证(严重) +- 故事核必须存在且聚焦主角内在冲突(如"复仇vs原谅""自由vs责任") +- 隐线(角色弧光)必须清晰:主角有明确的"初始状态→关键变故→性格转变→最终状态"轨迹 +- 故事核与隐线须贯穿三幕,不可中途断裂 + #### 三幕功能验证(严重) - 第一幕必须完成"建立"功能:规则建立、悬疑建立、动机激活 - 第二幕必须完成"冲突"功能:主要矛盾展开、计划执行、代价付出 - 第三幕必须完成"拓展/结局"功能:新世界、新能力、开放悬念 +- 大三角(3个核心角色/势力)贯穿全剧,小三角依次展开不并行 + +#### 付费点分布验证(严重) +- 付费点按≈10%/30%/50%/70%/90%×总集数N分布(四舍五入取整),偏差超过±2集标记问题 +- 逐一检查5大标准:①选择关键瞬间 ②设置根本性改变 ③调动好奇心 ④善用高燃场景 ⑤关注爱情拉扯(感情流) +- 付费点场景应具备"场面宏大、事态紧急、围观群众多"的特征 +- 是否设计了假付费点(目标近在咫尺却落空) + +#### 前10%黄金结构验证(中等) +- 第1-2集(或等比位置):是否快速引入强烈冲突,实现"一秒入坑" +- 第3-4集:是否明确主角核心行动目标 +- 第5-8集:是否引入多方配角施压 +- 第9-10集:是否有假付费点+正式卡点的小高潮 +- (微短篇需检查:卡点是否提前至第6-7集,第1集信息密度是否足够) #### 情绪曲线验证(中等) -全剧情绪分布应根据实际集数设计"波浪上升"模式: +- 全剧情绪分布应根据实际集数设计"波浪上升"模式 - 不允许连续3集都是同一情绪强度 -- 最高潮应在中后期 +- 最高潮应在中后期(≈51%-70%阶段) - 高潮后应有节奏缓冲再推向新高潮 +- 情绪基调占比是否与类型匹配(如甜宠:甜60%+微虐30%+惊喜10%) -#### 付费卡点合理性(中等) -- 付费策略按【项目配置】中的设定执行 -- 付费点必须放在"观众最想知道后续"的位置 -- 钩子类型应多样化(不全是悬念钩子) +#### 信息差与集末钩子验证(中等) +- 关键集数(尤其付费点前后)是否标注了信息差类型 +- 信息差类型是否运用得当(先知型→逆袭类、焦急型→虐恋类、上帝型→寻亲类) +- 每集结尾是否有钩子 +- 钩子类型是否多样化(智识/悬念/情感/世界观,不可全是同一类型) --- @@ -129,9 +191,15 @@ | 审核项 | 标准 | 严重程度 | |--------|------|----------| +| 用户意图一致 | 若用户要求不改编/忠实原著,策略仅做载体适配;若用户指定方向,策略以该方向为最高优先级(→ Skills 二-7) | 严重 | | 与骨架一致 | 删除决策与骨架中的删减记录一致;所有原则服务于故事核 | 严重 | +| 7大要点覆盖 | 策略体现强画面感、台词精简、节奏极致快、只沿主线、降低理解成本、情绪大于一切、开篇给足期待感(→ Skills 二-1) | 中等 | | 原则质量 | 3-5条核心原则,每条有正面指导和负面边界 | 中等 | -| 载体适配 | 有世界观呈现策略;考虑了平台规格和单集时长的约束 | 中等 | +| 情绪基调一致 | 确定的情绪基调与骨架类型匹配,无中途大幅偏离(→ Skills 二-2) | 中等 | +| 人物弧光保留 | 主角和重要配角弧光完整,保留设定记忆点(→ Skills 二-3) | 中等 | +| 删减合理性 | 删减遵循优先级原则;优先保留情绪点/关系拉扯/付费铺垫/信息差/打脸时刻(→ Skills 二-4) | 中等 | +| 世界观呈现 | 有渐进式呈现方案,通过对话/OS/VO逐步透露而非旁白灌输(→ Skills 二-5) | 中等 | +| 语言适配 | 称谓符合短剧规范,台词口语化(→ Skills 二-6) | 轻微 | ### 跨阶段一致性检查 @@ -144,6 +212,12 @@ ### 详细审核标准 +#### 用户意图一致性验证(严重) +- 检查【项目配置】或派发指令中是否有改编限制要求 +- 若用户要求"不改编/忠实原著/最小改动":策略是否仅做载体适配(格式转化、时长裁剪、画面化翻译),未改动原著人设、情节与世界观 +- 若用户指定了改编方向(如"加强爽感""弱化虐点"):策略是否以该方向为最高优先级 +- 若策略与用户意图矛盾,标记为严重问题 + #### 故事核对齐(严重) - 所有改编原则必须服务于骨架中确立的故事核 - 删减的内容不能包含体现故事核的关键场景 @@ -152,4 +226,25 @@ #### 与骨架一致性(严重) - 改编策略中的删除决策,必须在骨架的删减记录中有对应 - 骨架中标注"保留完整"的场景,改编策略不能标注为删除 -- 交叉检查方法:将两者的删减列表逐一比对 \ No newline at end of file +- 交叉检查方法:将两者的删减列表逐一比对 + +#### 7大核心要点覆盖验证(中等) +逐条检查策略是否体现以下要点,未覆盖的标记为中等问题: +1. 强画面感(可拍摄性)——是否有不可拍摄的内容未做转化 +2. 台词精简——是否有大段冗余对话未被标记处理 +3. 节奏极致快——是否存在明显拖沓的保留决策 +4. 只沿主线——是否有无关支线被保留 +5. 降低理解成本——世界观是否通过对话/OS/VO逐步透露 +6. 情绪大于一切——是否存在"逻辑正确但情绪平淡"的保留决策 +7. 开篇给足期待感——开篇改编是否保证了强冲突/强情绪 + +#### 情绪基调一致性验证(中等) +- 策略确定的情绪基调是否与骨架中的类型匹配 +- 是否存在中途大幅偏离基调的改编决策(如甜宠剧突然加入"全家惨死"的重度虐心→严重) +- 各阶段情绪占比是否合理 + +#### 世界观呈现策略验证(中等) +- 是否有渐进式呈现方案(每次只透露一个关键设定点) +- 呈现方式是否多元:人物对话(角色间冲突/疑问带出)、OS内心独白(主角视角补充)、VO画外音(极简过渡) +- 是否存在大段旁白集中灌输世界观的设计(→严重) +- 是否明确了世界观锚点角色和观众视角对齐对象 \ No newline at end of file diff --git a/data/skills/script_execution_adaptation.md b/data/skills/script_execution_adaptation.md index 51faf44..6ea5a36 100644 --- a/data/skills/script_execution_adaptation.md +++ b/data/skills/script_execution_adaptation.md @@ -27,6 +27,88 @@ - 根据【项目配置】中的平台规格和单集时长约束,优先视觉叙事,压缩大段对话 - 所有参数从【项目配置】读取,禁止硬编码 +## Skills + +### 一、剧本改编7大核心要点 + +改编策略的一切决策须以此7条为基准: + +1. **强画面感(可拍摄性)**:确保所有保留内容能转化为镜头语言,拍不出来则换表达方式 +2. **台词精简(高信息密度)**:剔除冗余,每句台词须服务于剧情推进或人物塑造;用台词传递背景信息(身份、过往、纠葛) +3. **节奏极致快**:每一个画面都拉升情绪,可适当牺牲细微逻辑,优先保证节奏紧凑 +4. **只沿主线展开**:摒弃多支线,所有情节围绕单条主线推进;改编时砍掉支线,仅保留核心人设与高光时刻 +5. **降低理解成本**:世界观不复杂,观众听台词就能掌握核心剧情,漏看部分不影响整体理解 +6. **情绪大于一切**:无需复杂人物弧光,核心提供饱满强烈的情绪体验;逻辑与情绪冲突时优先保障情绪张力 +7. **开篇给足期待感**:第1集呈现激烈、高情绪张力场景,后续围绕开篇建立的期待感展开 + +### 二、类型创新三大方向(改编时评估是否引入) + +1. **元素创新**(最易落地):在基础类型上调整单一核心元素制造新鲜感 + - 年龄反转(青年战神→老年战神)、性别反转(男战神→女战神)、背景反转(古代→现代)、视角反转(萌宝跟妈→萌宝跟爸) +2. **类型融合**(高效丰富剧情):选择关联度高的类型搭配,避免强行融合 + - 示例:团宠+鉴宝、萌宝+重生+寻亲 +3. **情节创新**(最考验功力):跳出传统套路,设计独特情节冲突 + - 示例:宫斗避开"下毒、推水",改用"心理操控"式陷害 + +**金手指创新**:避免"无敌外挂",设计有约束的特殊能力(如有限次数的预知) + +### 三、各类型情绪基调映射(改编时锁定) + +| 类型 | 核心情绪基调 | 占比参考 | +|------|-------------|----------| +| 甜宠类 | 甜>微虐>惊喜 | 甜60%+微虐30%+惊喜10% | +| 复仇类 | 压抑>爽感>解气 | 压抑40%+爽感50%+解气10% | +| 重生逆袭类 | 爽感>期待>温暖 | 爽感50%+期待30%+温暖20% | +| 家庭伦理类 | 共情>委屈>和解 | 共情40%+委屈30%+和解30% | + +**关键原则**:基调一旦确定不要中途大幅更改——如甜宠剧突然加入"全家惨死"的重度虐心剧情,观众会出戏甚至弃剧 + +### 四、人物弧光保留原则 + +改编时必须保留的人物维度: + +1. **人物弧光**:角色需有阶段性转变,转变需有锚点(关键事件) + - 格式:初始状态→关键变故→性格转变→最终状态 + - 主角和重要配角必须有弧光,这是剧本脱颖而出的关键 +2. **行动塑造**:不同性格角色面对同一困境反应须有差异,行动线与性格强绑定 +3. **设定记忆点**:为重要角色保留独特细节(专属口音、下意识动作、特殊怪癖、独门技能) +4. **人物推动剧情**:确保是"人物引导剧情"而非"把人物套入预设剧情",人设差异是剧情推进的核心动力 + +### 五、删减决策优先级 + +**优先删除:** +- 节奏拖沓的铺垫场景(不推动主线的环境描写、日常闲聊) +- 信息密度低的重复内容(同类冲突不可重复呈现,如反派多次用同一手段陷害) +- 载体不支持的内容(大段心理描写、复杂世界观设定说明) +- 主线贡献弱的支线(不推动主线的人物关系、不影响结局的事件) + +**优先保留:** +- 每集的核心情绪点(爆点/虐点/爽点至少覆盖一个) +- 人物间的关系拉扯场景(关系越紧密虐感越强) +- 付费点前的情绪铺垫链条(压抑→爆发的完整弧线) +- 身份反差与信息差场景(核心爽感来源) +- 高光"打脸"时刻与反转节点 + +**替代方案:** +- 蒙太奇压缩:将多场过渡戏压缩为快速剪辑 +- 台词带过:用一句台词交代原本需要整场戏呈现的信息 +- 完全删除:对主线无贡献且不含情绪点的内容直接去除 + +### 六、短剧独特语言适配 + +改编时需注意短剧特殊表达惯例: +- 现代剧用"家主"代指家族掌权人,"执法局/执法人"代指公安局/警察 +- 禁用"市长""县长"等实际称呼,改为"市首""总督" +- 财富表达突破现实货币体系,用"亿元""百亿订单"等夸张表述营造爽感 +- 所有台词用口语化表达,禁用半文半白、文言文、生词冷词 + +### 七、信息差策略设计 + +改编策略中须明确标注各阶段采用的信息差类型: +- **观众先知型**(主角知+观众知+配角不知):期待"打脸",适合逆袭/战神/赘婿类 +- **观众焦急型**(配角知+观众知+主角不知):替主角担心,适合虐恋/悬疑类 +- **观众上帝型**(观众知+主角配角都不知):期待相认/真相大白,适合寻亲/身份错位类 + ## 注意事项 - 执行前先调用 `get_planData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 diff --git a/data/skills/script_execution_script.md b/data/skills/script_execution_script.md index 9f874b1..400590f 100644 --- a/data/skills/script_execution_script.md +++ b/data/skills/script_execution_script.md @@ -30,6 +30,116 @@ - △场景描述要足够具体,描写"人怎么干"而非仅"人干什么",可直接用于 AI 视频生成 - 场景之间用 `---` 分隔 +## Skills + +### 一、三大情绪要点(每集必含至少1个) + +| 要点 | 定义 | 作用 | +|------|------|------| +| 爆点 | 令人震惊、匪夷所思/骇人听闻/惊羡的事件 | 第一时间勾起观众情绪,快速入戏 | +| 虐点 | 让人心痛、痛苦、难以释怀的事件 | 唤起观众怜悯,强化情感代入 | +| 爽点 | 让人兴奋、振奋的"高光时刻" | 满足观众情绪需求,提升留存率 | + +**应用规则:** +- 每集500-800字须覆盖爆点/虐点/爽点中至少一个(硬性要求) +- 可叠加使用但需避免情绪冲突——明确情绪先后顺序,不堆积混乱 +- 小情绪累积成大情绪爆发,不可一次性宣泄完所有情感 + +**爽点核心公式:爽点 = 装 + 打脸 + 震惊 + 收获** +- 装:情感/物质伪装(主角藏身份被欺辱) +- 打脸:剧情急转弯(装豪门的配角被真豪门揭穿) +- 震惊:围观群众态度180°反转 +- 收获:物质奖励/地位提升 + +**虐点核心逻辑:** +- 关系越紧密虐感越强(亲人、爱人之间的伤害更催泪) +- 先给主角极致幸福再夺走,让主角长期处于痛苦中 +- 经典虐点:始终牢记的人忘了自己、永远无法说出口的爱意、永远无人知晓的巨大牺牲、至死未能解开的惨痛误会 + +**爆点类型:** +- 经典款:替身设定、穿书炮灰女配、救赎设定 +- 反套路:双向替身、伪装拆穿、离婚反杀、全员重生、明虐暗宠、以牙还牙 + +### 二、情绪表达四通道 + +根据人物性格和所处环境选择外显型或内隐型表达: + +1. **行动**:通过人物行为动作传递情绪(撕扯、狂奔、捶打、下意识握拳、颤抖的手) +2. **语言**:痛斥、语无伦次、泣不成声、大吼、嘶哑、无声、结巴——一旦确定语言风格就要持续强化直至极致 +3. **环境**: + - 悲伤/压抑:阴雨天、空无一人的街道、昏暗房间 + - 紧张/危险:急促脚步声、闪烁灯光、封闭空间 + - 甜蜜/温暖:夕阳、暖光客厅、满桌家常菜 +4. **独白**:当情绪无法用行动/语言直接表达时(有秘密、有难言之隐),用OS/VO补充 + - OS(主角视角):揭露主角真实想法 + - VO(第三方视角):渲染氛围或补充背景 + +### 三、情绪铺设技巧 + +**1. 先压后爆,制造反差:** +- 先用反派打压、误解、困境让主角"委屈/隐忍"(连续数集压抑) +- 在付费点或关键集让主角反击,释放压抑情绪 +- 压得越狠反弹越爽 + +**2. 用信息差强化情绪期待:** +- 观众知道主角不知道 → 观众"心急如焚"(如女主不知茶里有毒) +- 主角知道配角不知道 → 观众"期待打脸"(如主角假装懦弱实则收集证据) +- 主角配角都不知道观众知道 → 观众"心疼又着急"(如母女相见不相识) + +**3. 单集情绪公式:1核心情绪 + 1辅助情绪 + 1结尾钩子** +- 核心情绪:贴合全剧基调(如甜宠剧的"微甜") +- 辅助情绪:制造小冲突避免平淡(如女配吃醋) +- 结尾钩子:引入下一集情绪(如反派威胁"离他远点") +- **禁忌**:同一集不超过2个核心情绪;上下集情绪须有衔接不可跳脱;配角情绪不能盖过主角 + +### 四、开篇8大创作规则 + +1. **冲突即时性**:第一行就入危机,无缓冲期(谋杀、逃跑、被虐待、难产、被偷袭、逃婚、被陷害) +2. **信息量密集**:通过人物对话快速交代前因后果、人物关系、背景,不浪费一字 +3. **营造信息差**:让主角/配角/反派之间信息不对等,形成欺骗或误解 +4. **铺垫不拖沓**:最多3集要见效,为贯穿全剧的暗线中间需多次提醒 +5. **关系有拉扯感**:人物关系不能简单对立或友好,需有复杂羁绊(爱恨交织) +6. **情节必反转**:每集至少1个反转,需有逻辑不能强行制造 +7. **压情绪**:从第1集开始极致打压主角,直到第一个付费点前才给反击信号,中间不松劲 +8. **明确目标**:第1集设定主角大目标,再拆分为5-10集可实现的小目标 + +### 五、台词创作规范 + +1. **精准戳点**:针对角色软肋设计台词(骂穷人没钱不够痛,骂他儿子会继续穷才激怒) +2. **贴合角色性格**:不同角色语言习惯须匹配人设 + - 自检法:遮挡角色名字仍能通过台词判断说话人 + - "绿茶"用"人家""哥哥",男主走后才露"獠牙" +3. **尽量少用潜台词**:短剧受众偏好直白表达,优先简单直接 +4. **接地气说人话**:禁用半文半白、生词冷词,所有意思用口语化表达 +5. **摒弃无效台词**:每句台词都有存在价值,不说车轱辘话 +6. **单句台词不超过20字**(竖屏短视频观众阅读速度限制) +7. **开篇台词**:聚焦主情绪、主矛盾,第一场戏不交代太多信息 + +### 六、CP感营造技巧 + +1. **性格互补制造反差萌**:心思缜密×热血愣头青、玲珑鬼精灵×天然呆、偏执狂×铁憨憨 +2. **强化互动紧绷感**:用激烈冲突替代平淡相处,CP互动须有戏剧张力 +3. **立体人设是CP感基础**:展现角色多面性(如会为小钱斤斤计较也会为陌生人捐巨款;能抡铁锤却在爱人面前拧不开瓶盖) +4. **禁忌**:不可为追流行强加无关人设标签 + +### 七、人物塑造速查 + +- **先立标签**:用1-2个关键词定义人物核心性格(恶婆婆、贪财妻子、高冷霸总) +- **行动须契合人设**:胆小柔弱遇危险退缩求助,桀骜拽姐正面反击 +- **设定记忆点**:专属口音、下意识动作、特殊怪癖、独门技能 +- **弧光关键**:初始状态→关键变故→性格转变→最终状态,所有转变须有事件支撑 + +### 八、高频情绪模板(可直接套用) + +**模板1:"打压-反击"爽感布局(逆袭/战神/赘婿类)** +配角嘲讽主角(压抑)→ 变本加厉(愤怒)→ 主角亮身份/实力(爽感)→ 配角狼狈道歉(解气) + +**模板2:"误会-解开"甜虐布局(甜宠/虐恋类)** +反派造谣(虐)→ 主角间冷战(委屈)→ 发现真相(震惊)→ 道歉+撒糖(甜) + +**模板3:"危机-救赎"共情布局(家庭伦理/寻亲类)** +主角遇难题(共情)→ 求助无门(绝望)→ 贵人出现(惊喜)→ 亲情升温(温暖) + ## 注意事项 - 剧本正文**必须**包裹在 `...` 标签对中输出,缺少开标签或闭标签均视为格式错误;`name` 属性值必须与文件头首行标题一致(不含 `#`);XML 标签及其全部内容必须一次性完整输出,禁止拆分为多次 XML 输出 diff --git a/data/skills/script_execution_skeleton.md b/data/skills/script_execution_skeleton.md index 3ecb46c..0a97785 100644 --- a/data/skills/script_execution_skeleton.md +++ b/data/skills/script_execution_skeleton.md @@ -31,6 +31,116 @@ - 付费策略按【项目配置】执行 - 章节必须与事件表一致,不允许出现不存在的章节 +## Skills + +### 一、核心结构逻辑 + +**大三角嵌套小三角:** +- 大三角:3个核心角色/势力构成全剧主要矛盾,贯穿始终不可轻易改动 +- 小三角:围绕主角的次要矛盾,解决一个再进入下一个,避免多线并行 +- 主流结构为**单线型**:情节围绕单条主线推进,矛盾集中、节奏连贯;短剧面向下沉市场,多线并行易被退稿 + +### 二、前10集黄金结构 + +| 集数 | 核心任务 | +|------|----------| +| 第1-2集 | 快速引入主角,直接抛出强烈冲突(契约绑定、意外变故),实现"一秒入坑" | +| 第3-4集 | 明确主角核心行动目标(复仇、追爱、逆袭),为后续埋伏笔 | +| 第5-8集 | 引入多方配角,从多角度给主角施压,强化矛盾冲突 | +| 第9-10集 | 设置"假付费点"(目标近在咫尺却落空)+ 正式卡点,推向小高潮 | + +- 微短篇:卡点集提前至第6-7集,第1集需承载常规短剧3-4集信息量 + +### 三、付费点(卡点)设置规范 + +根据【项目配置】总集数 N 按比例计算付费点位置(四舍五入取整): + +| 位置 | 比例 | 设计要求 | +|------|------|----------| +| ≈10%处(第⌈N×0.10⌉集) | 首次卡点 | 核心矛盾升级(秘密即将曝光、关系面临破裂) | +| ≈30%处(第⌈N×0.30⌉集) | 二次卡点 | 生死危机、隐藏秘密将揭露或遭反派陷害,给观众强烈情感冲击 | +| ≈50%处(第⌈N×0.50⌉集) | 中期卡点 | 阶段性目标达成时迎来重大反转 | +| ≈70%处(第⌈N×0.70⌉集) | 后期卡点 | 前期悬念和伏笔逐渐展开,引入重大翻转 | +| ≈90%处(第⌈N×0.90⌉集) | 收尾卡点 | 主角克服所有困难,揭露反派阴谋,达成圆满结局(短剧必保"爽剧"收尾) | + +> 示例:20集剧→卡点分布约为第2/6/10/14/18集;100集剧→约为第10/30/50/70/90集 + +**付费点5大标准:** +1. **选择关键瞬间**:聚焦对人物内心有强烈情绪冲击的情节 +2. **设置根本性改变**:需改变主角性格、价值观或行为方式 +3. **调动好奇心**:用暗示、伏笔、悬念引发期待 +4. **善用高燃场景**:设置在紧张激动的高潮部分,关键节点戛然而止 +5. **关注爱情拉扯**(感情流):围绕情感阶段转变设计(无感→好感→醒悟→确认心意→表白) + +**付费点核心特征:** 场面宏大、事态紧急、围观群众多(大型宴会、认亲仪式、新闻发布会、婚礼现场等) + +**假付费点:** 可多次设置,让观众误以为目标即将达成实则受阻,持续牵引情绪 + +**4类核心付费点写法:** +- **身份差**(通用型):隐藏身份暴露、身份错认澄清、身份升级展现 +- **感情错位**(女频):认错信物、认错人、欺骗/蒙蔽解开 +- **人物命运巨变**:主角从被打压欺辱→因机缘改变命运→强势反击 +- **环境剧变**(末世类):世界突发灾难,只有主角能掌控局面 + +### 四、热门类型节奏框架 + +> 以下比例基于总集数 N,实际集数四舍五入取整。 + +**甜宠类:** +契约绑定(第1集)→ 误会拉扯升温(2%~9%)→ 秘密曝光(≈10%付费点)→ 情感破冰(11%~29%)→ 危机爆发(≈30%付费点)→ 撒糖+打脸反派(31%~59%)→ 新危机(≈60%)→ 情感确认(61%~80%)→ 圆满结局(81%~100%) + +**虐恋类(追妻火葬场):** +前期误会伤害(1%~20%)→ 男主悔悟(21%~40%)→ 追妻受阻(41%~70%)→ 真诚悔改+和解(71%~100%) + +**萌宝类:** +带娃回归逆袭(1%~20%)→ 男主发现孩子+解开心结(21%~50%)→ 联手反击反派(51%~80%)→ 家庭团圆(81%~100%) + +**战神类:** +隐藏身份受辱(1%~30%)→ 身份曝光打脸反派(31%~60%)→ 解决核心危机(61%~90%)→ 登顶巅峰(91%~100%) + +**重生类:** +前世被害(第1集)→ 重生改写命运(2%~30%)→ 利用信息差逆袭(31%~70%)→ 复仇成功+圆满结局(71%~100%) + +### 五、全局情绪布局(按付费点比例划分阶段) + +以复仇类为例(可迁移其他题材),按总集数 N 的比例划分: + +| 阶段 | 集数范围 | 核心情绪 | 作用 | +|------|----------|----------|------| +| 铺垫 | 1%~10% | 压抑+愤怒 | 拉仇恨,让观众心疼主角,期待反击 | +| 试探 | 11%~30% | 紧张+小爽 | 缓解压抑,给观众小甜头,留住注意力 | +| 转折 | 31%~50% | 震惊+焦虑 | 制造大波澜,提升期待感 | +| 爆发 | 51%~70% | 爽感+解气 | 情绪高潮,释放前面积压的压抑 | +| 收尾 | 71%~100% | 温暖+圆满 | 收尾情绪,留下正面印象 | + +**各类型情绪基调占比:** +- 甜宠类:甜60% + 微虐30% + 惊喜10% +- 复仇类:压抑40% + 爽感50% + 解气10% +- 重生逆袭类:爽感50% + 期待30% + 温暖20% +- 家庭伦理类:共情40% + 委屈30% + 和解30% + +### 六、信息差设计 + +骨架阶段需在分集中标注信息差类型,操控观众情绪: +- **主角知道+配角不知道+观众知道** → 观众拥有"先知"爽感,期待配角被"打脸" +- **主角不知道+配角知道+观众知道** → 观众为身处险境的主角焦急,代入感极强 +- **主角不知道+配角不知道+观众知道** → 观众既想指导主角又好奇反派结局,期待感拉满 + +### 七、集末钩子设计原则 + +- 每集结尾必须留"钩子",勾住下一集情绪 +- 钩子需紧扣"主角的下一步行动""反派的反击""第三方的态度" +- 确保观众有"想立刻知道后续"的冲动 +- 钩子类型:智识钩子/悬念钩子/情感钩子/世界观钩子 + +### 八、第2、3个付费点素材类型 + +选影响主线的大事件: +- **关系类**:兄弟/父子反目、旧情复燃、断绝关系、宣布婚事、霸气护妻 +- **冲突类**:好友陷害、产业被占、奸计得逞/揭发、武力/情感/欲望冲突 +- **真相/变故类**:借腹生子、亲子鉴定、假传死讯、错手杀人、被控入狱 +- **行动类**:请君入瓮、调虎离山、忍辱负重、畏罪潜逃、一夜成名 + ## 注意事项 - 执行前先调用 `get_planData` 确认工作区状态;已有内容在其基础上修改,除非指令要求重写 From 28496b35f3a4006bd0e712c6cb6644b01702efb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Tue, 7 Apr 2026 02:48:59 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/web/index.html | 1542 +++++++++++++++++++++---------------------- scripts/main.ts | 54 +- 2 files changed, 821 insertions(+), 775 deletions(-) diff --git a/data/web/index.html b/data/web/index.html index 8374469..aeb382d 100644 --- a/data/web/index.html +++ b/data/web/index.html @@ -5,27 +5,27 @@ Toonflow - - + `),tNs=/enable|requires|diagnostic/,Cvn=new RegExp("[_\\p{XID_Start}]\\p{XID_Continue}*","u"),dF="variable.predefined",nNs={tokenPostfix:".wgsl",defaultToken:"invalid",unicode:!0,atoms:$Fs,keywords:XFs,reserved:GFs,predeclared_enums:YFs,predeclared_types:ZFs,predeclared_type_generators:qFs,predeclared_type_aliases:KFs,predeclared_intrinsics:JFs,operators:eNs,symbols:/[!%&*+\-\.\/:;<=>^|_~,]+/,tokenizer:{root:[[tNs,"keyword","@directive"],[Cvn,{cases:{"@atoms":dF,"@keywords":"keyword","@reserved":"invalid","@predeclared_enums":dF,"@predeclared_types":dF,"@predeclared_type_generators":dF,"@predeclared_type_aliases":dF,"@predeclared_intrinsics":dF,"@default":"identifier"}}],{include:"@commentOrSpace"},{include:"@numbers"},[/[{}()\[\]]/,"@brackets"],["@","annotation","@attribute"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/./,"invalid"]],commentOrSpace:[[/\s+/,"white"],[/\/\*/,"comment","@blockComment"],[/\/\/.*$/,"comment"]],blockComment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],attribute:[{include:"@commentOrSpace"},[/\w+/,"annotation","@pop"]],directive:[{include:"@commentOrSpace"},[/[()]/,"@brackets"],[/,/,"delimiter"],[Cvn,"meta.content"],[/;/,"delimiter","@pop"]],numbers:[[/0[fh]/,"number.float"],[/[1-9][0-9]*[fh]/,"number.float"],[/[0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+[eE][+-]?[0-9]+[fh]?/,"number.float"],[/0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/,"number.hex"],[/0[xX][0-9a-fA-F]+[iu]?/,"number.hex"],[/[1-9][0-9]*[iu]?/,"number"],[/0[iu]?/,"number"]]}},iNs=Object.freeze(Object.defineProperty({__proto__:null,conf:HFs,language:nNs},Symbol.toStringTag,{value:"Module"})),rNs={comments:{blockComment:["\x3C!--","-->"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:Tt.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:Tt.IndentAction.Indent}}]},oNs={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/\x3C!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/\x3C!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}},sNs=Object.freeze(Object.defineProperty({__proto__:null,conf:rNs,language:oNs},Symbol.toStringTag,{value:"Module"})),aNs={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:Tt.IndentAction.Indent}}]},lNs={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}},cNs=Object.freeze(Object.defineProperty({__proto__:null,conf:aNs,language:lNs},Symbol.toStringTag,{value:"Module"})); +
diff --git a/scripts/main.ts b/scripts/main.ts index 0881c71..873c506 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -19,14 +19,60 @@ function copyDir(src: string, dest: string): void { } } +declare const __APP_VERSION__: string; + +function compareVersions(a: string, b: string): number { + const pa = a + .split(".") + .map((n) => Number.parseInt(n, 10)) + .filter((n) => Number.isFinite(n)); + const pb = b + .split(".") + .map((n) => Number.parseInt(n, 10)) + .filter((n) => Number.isFinite(n)); + const len = Math.max(pa.length, pb.length); + for (let i = 0; i < len; i++) { + const va = pa[i] ?? 0; + const vb = pb[i] ?? 0; + if (va > vb) return 1; + if (va < vb) return -1; + } + return 0; +} + function initializeData(): void { const srcDir = path.join(process.resourcesPath, "data"); const destDir = path.join(app.getPath("userData"), "data"); - for (const dir of TARGET_ENTRIES) { - if (!fs.existsSync(path.join(destDir, dir))) { - copyDir(path.join(srcDir, dir), path.join(destDir, dir)); + const versionFilePath = path.join(destDir, "version.txt"); + + let shouldForceReplace = false; + if (!fs.existsSync(versionFilePath)) { + shouldForceReplace = true; + } else { + const localVersion = fs.readFileSync(versionFilePath, "utf-8").trim(); + if (compareVersions(localVersion, __APP_VERSION__) < 0) { + shouldForceReplace = true; } } + + console.log("%c Line:55 🍕 shouldForceReplace", "background:#2eafb0", shouldForceReplace); + + for (const dir of TARGET_ENTRIES) { + const targetDir = path.join(destDir, dir); + if (shouldForceReplace) { + fs.rmSync(targetDir, { recursive: true, force: true }); + copyDir(path.join(srcDir, dir), targetDir); + continue; + } + if (!fs.existsSync(targetDir)) { + copyDir(path.join(srcDir, dir), targetDir); + } + } + + if (shouldForceReplace) { + fs.mkdirSync(destDir, { recursive: true }); + fs.writeFileSync(versionFilePath, `${__APP_VERSION__}\n`, "utf-8"); + } } //获取全部依赖路径,优先从 unpacked 加载原生模块,其他模块从 asar 加载 @@ -206,7 +252,7 @@ app.whenReady().then(async () => { const url = new URL(request.url); const pathname = url.hostname.toLowerCase(); const handlers: Record object> = { - getport: () => ({ port: port }), + getappurl: () => ({ url: process.env.URL ?? `http://localhost:${port}/api` }), windowminimize: () => { mainWindow?.minimize(); return { ok: true }; From 12e244024b3b9bb5428a32893f60c8c56bf29024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Tue, 7 Apr 2026 03:15:29 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3readMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 ++-- docs/README.en.md | 456 ++++++++++++++++++++-------------------- docs/README.ja.md | 489 +++++++++++++++++++++---------------------- docs/README.ru.md | 477 ++++++++++++++++++++++-------------------- docs/README.th.md | 497 +++++++++++++++++++++++--------------------- docs/README.vi.md | 480 +++++++++++++++++++++--------------------- docs/README.zhtw.md | 464 +++++++++++++++++++++-------------------- scripts/main.ts | 2 - 8 files changed, 1476 insertions(+), 1432 deletions(-) diff --git a/README.md b/README.md index 295f668..57ef1b1 100644 --- a/README.md +++ b/README.md @@ -52,22 +52,21 @@ > 🚀 **一站式短剧工程**:从文本到角色,从分镜到视频,0门槛全流程AI化,创作效率提升10倍+! - --- # 🌐 多语言支持 Toonflow 支持以下语言界面: -| 语言 | Language | -|------|----------| -| 简体中文 | Chinese (Simplified) | -| 繁體中文 | Chinese (Traditional) | -| English | English | -| ไทย | Thai | -| Tiếng Việt | Vietnamese | -| 日本語 | Japanese | -| Русский | Russian | +| 语言 | Language | +| ---------- | --------------------- | +| 简体中文 | Chinese (Simplified) | +| 繁體中文 | Chinese (Traditional) | +| English | English | +| ไทย | Thai | +| Tiếng Việt | Vietnamese | +| 日本語 | Japanese | +| Русский | Russian | > 💡 更多语言适配中,欢迎贡献翻译! @@ -75,7 +74,7 @@ Toonflow 支持以下语言界面: # 🌟 主要功能 -Toonflow v1.0.8 是面向短剧生产的 AI 工作台,围绕“策划 → 编剧 → 分镜 → 出片”构建完整闭环,并支持本地化、可编程、可持续迭代的生产流程。 +Toonflow 是面向短剧生产的 AI 工作台,围绕“策划 → 编剧 → 分镜 → 出片”构建完整闭环,并支持本地化、可编程、可持续迭代的生产流程。 - ✅ **无限画布生产工作台** 以类无限画布形式组织剧本、角色、分镜、素材与视频节点,支持自由编排、回溯与并行生产,不受线性步骤限制。 @@ -94,12 +93,11 @@ Toonflow v1.0.8 是面向短剧生产的 AI 工作台,围绕“策划 → 编 # 📦 应用场景 -- 网文/小说快速影视化改编 -- 短剧团队流水线协作生产 -- 多项目并行的 AI 内容工厂 -- 私有化部署的企业级内容平台 -- 低成本验证剧情与镜头方案 -- 教学与研究场景下的 AIGC 创作实验 +- 短视频内容创作 +- 小说影视化实验 +- AI 文学改编工具 +- 剧本开发与快速原型 +- 视频素材生成 --- @@ -114,7 +112,6 @@ Toonflow v1.0.8 是面向短剧生产的 AI 工作台,围绕“策划 → 编 5. 切换到 ProductionAgent,在无限画布中组织分镜、素材与视频节点。 6. 对分镜图进行节点化精调后回流工作台,完成视频拼接与导出。 - ## 📺 视频教程(待更新,老版本教程已无参考价值) https://www.bilibili.com/video/BV1na6wB6Ea2 @@ -129,8 +126,6 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 --- - - # 🚀 安装 ## 前置条件 @@ -145,7 +140,7 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 ### 1. 下载与安装 -| 操作系统 | GitHub | Atomgit | 夸克网盘下载 | 说明 | +| 操作系统 | GitHub | Atomgit | 夸克网盘下载 | 说明 | | :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | | Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 | | Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克网盘](https://pan.quark.cn/s/94ef07509df0) | 官方发布安装包 | @@ -525,6 +520,12 @@ pm2 monit # 监控面板 Toonflow QR +也可以点击图标加入 Discord: + +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +或点击邀请连接: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) + --- # 💌 联系我们 diff --git a/docs/README.en.md b/docs/README.en.md index 02ee01d..a9be70f 100644 --- a/docs/README.en.md +++ b/docs/README.en.md @@ -8,18 +8,17 @@  |  - Atomgit - Atomgit + Atomgit

- 简体中文 | + 简体中文 | 繁體中文 | English | ไทย | Tiếng Việt | - 日本語 | + 日本語 | Русский

@@ -33,9 +32,9 @@ AI Short Drama Factory
- With a tap, novels instantly become episodes! + Turn your novel into episodes with just a few clicks!
- AI scripts × AI visuals × Turbo generation 🔥 + AI Scripts × AI Visuals × Ultra-fast Generation 🔥

@@ -50,49 +49,57 @@

- > 🚀 **One-stop short drama production**: From text to characters, from storyboard to video, 0 barrier full-process AI, 10x+ creation efficiency! +> 🚀 **All-in-One Short Drama Studio**: From text to characters, from storyboard to final video. +> Fully AI-powered workflow with zero barrier to entry — boosting your creative efficiency by 10x or more! --- -# 🌐 Multilingual Support +# 🌐 Multi-Language Support Toonflow supports the following interface languages: -| Language | Native Name | -|----------|-------------| -| Chinese (Simplified) | 简体中文 | -| Chinese (Traditional) | 繁體中文 | +| Language | Language Name | +|------|----------| +| 简体中文 | Chinese (Simplified) | +| 繁體中文 | Chinese (Traditional) | | English | English | -| Thai | ไทย | -| Vietnamese | Tiếng Việt | -| Japanese | 日本語 | -| Russian | Русский | +| ไทย | Thai | +| Tiếng Việt | Vietnamese | +| 日本語 | Japanese | +| Русский | Russian | + +> 💡 More languages are on the way. Translation contributions are highly welcome! --- -# �🌟 Main Features +# 🌟 Main Features -Toonflow is an AI short drama comic tool that leverages AI technology to automatically convert novels into scripts, and uses AI-generated images and videos for efficient short drama creation. With Toonflow, you can easily complete the entire process from text to images, making short drama production more intelligent and convenient. +Toonflow is an AI-powered tool for creating short dramas, short films, and comics. It can automatically transform novels into scripts, then combine AI-generated characters, images, and videos to produce high-quality content efficiently. + +With Toonflow, you can complete the entire workflow from text to final video with ease — making short-form video and drama production significantly smarter and more convenient. - ✅ **Character Generation** - Automatically analyzes the original novel text, intelligently identifies and generates character settings, including appearance, personality, identity, etc., providing a reliable foundation for subsequent script and visual creation. + Automatically analyzes the original novel text, intelligently identifies key elements, and generates detailed character profiles including appearance, personality, background, and relationships — laying a strong foundation for scriptwriting and visual production. + - ✅ **Script Generation** - Based on selected events and chapters, the system automatically generates structured scripts, covering dialogue, scene descriptions, and plot direction, enabling efficient transformation from literary texts to film/TV scripts. -- ✅ **Storyboard Production** - Based on the script content, intelligently generates storyboard prompts and visual design, detailing foreground/midground/background, character dynamics, prop settings, and scene layout; automatically turns scripts into storyboards, providing a complete route blueprint for video production. -- ✅ **Video Composition** - Integrates AI image and video technologies to generate video clips using AI. Includes online editing and supports personalized output adjustments, making film & TV production collaborative and efficient. + Based on selected events and chapters, the system automatically creates well-structured scripts with natural dialogue, scene descriptions, and plot development, enabling efficient adaptation from literature to cinematic format. + +- ✅ **Storyboard Creation** + From the generated script, Toonflow intelligently creates storyboard prompts and visual layouts. It details foreground, midground, and background elements, character movements, props, and scene composition — providing a complete and ready-to-use blueprint for video production. + +- ✅ **Video Synthesis** + Integrates advanced AI image and video generation technologies to produce high-quality video clips. The built-in online editor allows flexible personalization and fine-tuning, making the entire creative process smooth, fast, and highly efficient. --- -# 📦 Application Scenarios +# 📦 Use Cases -- Short video content creation -- Novel-to-film/TV experiments -- AI literature adaptation tools +- Short video content creation (Shorts, Reels, TikTok) +- Novel-to-film / drama adaptation experiments +- AI-powered literary adaptation tool - Script development and rapid prototyping -- Video material generation +- Video asset and footage generation --- @@ -100,15 +107,15 @@ Toonflow is an AI short drama comic tool that leverages AI technology to automat ## 📺 Video Tutorial -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow 8-Minute Quick Start AI Video](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![Toonflow 8-Minute AI Video Quick Start](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) -**Toonflow 8-Minute Quick Start AI Video** -👉 [Click to watch](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) +**Toonflow: 8-Minute AI Video Quick Start** +👉 [Click to Watch](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) -📱 Scan with WeChat on your phone to watch +📱 Scan the QR code to watch on mobile -Scan WeChat to Watch +Scan QR code to watch on mobile --- @@ -116,34 +123,34 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 ## Prerequisites -Before installing and using this software, please prepare the following: +Before installing and using Toonflow, please prepare the following: -- ✅ Large language model AI service API address -- ✅ Sora or Doubao video service API address -- ✅ Nano Banana Pro image generation model service API +- ✅ API endpoint for Large Language Model (LLM) +- ✅ API endpoint for video generation services (Sora or Doubao) +- ✅ API endpoint for image generation model (Nano Banana Pro) ## Local Installation -### 1. Download & Install +### 1. Download and Install -| Operating System | GitHub | Atomgit | Quark Cloud Download | Description | -| :--------------: | :------------------------------------------------------ | :---------------------------------------------------- | :------------------------------------------------------ | :-------------------- | -| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Cloud](https://pan.quark.cn/s/94ef07509df0) | Official release package | -| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Cloud](https://pan.quark.cn/s/94ef07509df0) | Official release package | -| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Cloud](https://pan.quark.cn/s/94ef07509df0) | Official release package | +| OS | GitHub | Atomgit | Quark Drive Download | Description | +| :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Official Installer | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Official Installer | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Official Installer | > [!CAUTION] -> On MacOS, please go to Settings - Privacy & Security to configure security settings, otherwise, you may not be able to open the app due to certificate issues. +> **MacOS Users:** Please go to `System Settings > Privacy & Security` to allow the application to run; otherwise, it may fail to open due to certificate issues. > -> See Zhihu documentation: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> Reference (Zhihu): [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> Due to Gitee OS environment and Release file upload size limits, Gitee Release download is currently not available. +> Due to Gitee OS environment constraints and Release file size upload limits, Gitee Release download links are currently unavailable. -### 2. Start Service +### 2. Start the Service -After installation, launch the program to start using this service. +After installation, simply launch the program to start using the service. -> ⚠️ **First-time Login** +> ⚠️ **Default Login** > Username: `admin` > Password: `admin123` @@ -151,45 +158,45 @@ After installation, launch the program to start using this service. ### Prerequisites -- [Docker](https://docs.docker.com/get-docker/) installed (version 20.10+) +- [Docker](https://docs.docker.com/get-docker/) installed (Version 20.10+) ### Method 1: Online Deployment -To be developed; please use local build for now. +To be updated. Please use local build for now. ### Method 2: Local Build -Build directly from local source code, suitable for developers or users who have cloned the repo; requires Git installed locally: +Build directly using the local source code. This is suitable for developers or users who have cloned the repository. You will need `git` installed locally: ```shell -# Clone the project (skip if already cloned) +# Clone the repository first (skip if already cloned) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# Build and start locally with docker-compose +# Build and start locally using docker-compose yarn docker:local # Or build manually docker build -t toonflow . -docker run -d -p :10588 -v :/app/data toonflow +docker run -d -p :10588 -v :/app/data toonflow -# After this, the site can be accessed at /web/index.html on the mapped port -# e.g. http://localhost:10588/web/index.html +# You can now access the page at the corresponding port at /web/index.html +# Example: http://localhost:10588/web/index.html ``` ### Service Port Description -| Port | Purpose | Deployment Mapping | -| -------- | ------------ | -------------------- | -| `10588` | App Interface | `10588:10588` | +| Port | Purpose | Deployment Mapping | +| ------- | -------- | ------------- | +| `10588` | Software UI | `10588:10588` | -**Environment variable descriptions:** +**Environment Variables:** -| Variable | Description | -| ------------- | ------------------------------------------- | -| `NODE_ENV` | Environment; `prod` for production | -| `PORT` | Service listening port (default 10588) | -| `OSSURL` | File storage access address for static files | +| Variable | Description | +| ---------- | ----------------------------------------- | +| `NODE_ENV` | Operating environment, `prod` for production | +| `PORT` | Service listening port (Default: 10588) | +| `OSSURL` | File storage access URL, used for static resources | --- @@ -197,9 +204,9 @@ docker run -d -p :10588 -v :/app/data toonflow ### 1. Server Requirements -- **OS:** Ubuntu 20.04+ / CentOS 7+ -- **Node.js:** 24.x (recommended, minimum 23.11.1+) -- **RAM:** 2GB+ +- **OS**: Ubuntu 20.04+ / CentOS 7+ +- **Node.js**: 24.x (Recommended, Minimum 23.11.1+) +- **Memory**: 2GB+ ### 2. Server Deployment @@ -226,7 +233,7 @@ yarn install yarn build ``` -**Clone from Gitee (Mainland China recommended):** +**Clone from Gitee (Recommended for users in China):** ```bash cd /opt @@ -254,17 +261,17 @@ Create a `pm2.json` file: } ``` -**Environment variable descriptions:** +**Environment Variables:** -| Variable | Description | -| ------------- | ------------------------------------------- | -| `NODE_ENV` | Environment; `prod` for production | -| `PORT` | Service listening port | -| `OSSURL` | File storage access address for static files | +| Variable | Description | +| ---------- | ----------------------------------------------------- | +| `NODE_ENV` | Operating environment (`prod` = Production) | +| `PORT` | Service listening port (default: 10588) | +| `OSSURL` | Object Storage URL for storing and serving static files | --- -#### 4. Start Service +#### 4. Start the Service ```bash pm2 start pm2.json @@ -275,147 +282,150 @@ pm2 save #### 5. Common Commands ```bash -pm2 list # View process list +pm2 list # View processes pm2 logs toonflow-app # View logs -pm2 restart all # Restart service -pm2 monit # Monitoring panel +pm2 restart all # Restart services +pm2 monit # Monitoring dashboard ``` -> ⚠️ **First-time Login** +> ⚠️ **Default Login** > Username: `admin` > Password: `admin123` -#### 6. Deploying the Frontend Website +#### 6. Deploy Frontend -For standalone frontend deployment or customization, refer to the frontend repository: +If you need to deploy or customize the frontend interface separately, please refer to the frontend repository: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **Note:** This repo already contains a compiled frontend by default. Regular users do NOT need to separately deploy the frontend. The frontend repo is for developers requiring secondary development. +> 💡 **Note**: This repository already includes the compiled frontend resources. +> Regular users do not need to deploy the frontend separately. The Toonflow-web repository is intended only for developers who want to make custom modifications or contribute to the frontend. --- -# 🔧 Developer Guide +# 🔧 Development Workflow Guide > [!CAUTION] > 🚧 **PR Submission Guidelines** 🚧 > -> ⛔ `master` branch does NOT accept PRs | ✅ Please submit PRs to the `develop` branch -> -> Developers are invited to co-develop Toonflow. To join, contact owner ACT in the group chat. +> ⛔ **No PRs accepted on the `master` branch** +> ✅ **Please submit all Pull Requests to the `develop` branch** + +We welcome all developers who want to contribute to Toonflow. +If you're interested in joining, please contact the project maintainer (ACT) in our community group. ## 🛠️ Tech Stack -| Category | Technology | -| ------------ | --------------------------------------------------------------------------------------- | -| Runtime | Node.js 23.11.1+ | -| Language | TypeScript 5.x | -| Backend | Express 5 | -| Database | SQLite (better-sqlite3 / knex) | -| AI Integration | Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI)| -| Local Inference | @huggingface/transformers (ONNX) | -| Real-Time | Socket.IO | -| Desktop | Electron 40 | -| Image Proc. | Sharp | -| Container | Docker | +| Category | Technology | +| ---------- | ----------------------------------------------------------------------------------------- | +| Runtime | Node.js 23.11.1+ | +| Language | TypeScript 5.x | +| Backend | Express 5 | +| Database | SQLite (better-sqlite3 / knex) | +| AI Integ. | Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI) | +| Local Inf. | @huggingface/transformers (ONNX) | +| Real-time | Socket.IO | +| Desktop UI | Electron 40 | +| Image Proc.| Sharp | +| Container | Docker | -## Development Environment Preparation +## Development Environment Prep -- **Node.js:** version 23.11.1 or above required -- **Yarn:** recommended as the package manager +- **Node.js**: Version 23.11.1 or higher required +- **Yarn**: Recommended package manager ## Quick Start -1. **Clone the project** +1. **Clone the Project** - **Clone from GitHub:** + **From GitHub:** ```bash git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` - **Clone from Gitee (Mainland China recommended):** + **From Gitee (Recommended for China):** ```bash git clone https://gitee.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` -2. **Install dependencies** +2. **Install Dependencies** - In the project root directory, install dependencies: + Run the following command in the project root directory: ```bash yarn install ``` -3. **Start development environment** +3. **Start the Development Environment** - This project includes both **backend API service** and **frontend interface**. Start as needed: + This project consists of two parts: the **Backend API Service** and the **Frontend Pages**. Choose your startup method based on your needs: - - **Option 1: Start backend service only** + - **Method 1: Start Backend Service Only** ```bash yarn dev ``` - > ⚠️ This command starts only the backend API (port 10588), **without the web interface**. Accessing `http://localhost:10588` allows API calls only; the full web UI is unavailable. To use the frontend, start the frontend project separately or use GUI mode below. + > ⚠️ This command only starts the backend API service (Port 10588) and **does not include the frontend pages**. Visiting `http://localhost:10588` directly will only allow API calls without a UI. To use the frontend, start the frontend project separately or use the GUI mode below. - - **Option 2: Start Electron desktop client** + - **Method 2: Start Electron Desktop Client** ```bash yarn dev:gui ``` - > This command starts both backend and Electron window, with built-in web UI. Out-of-the-box, no extra config needed. Recommended for a full experience. + > This command launches both the backend service and the Electron desktop window simultaneously. It comes with built-in frontend pages ready out-of-the-box, requiring no extra configuration. Ideal for developers who want to experience the full feature set. - - **Option 3: Production mode** + - **Method 3: Start in Production Mode** ```bash yarn start ``` - > Runs compiled service in production mode (requires `yarn build` first). + > Run the compiled service directly in production mode (requires running `yarn build` first). -4. **Build the project** +4. **Project Build & Packaging** - - Compile TypeScript files: + - Compile and generate TypeScript files: ```bash yarn build ``` - - Build executable for Windows: + - Package as a Windows executable: ```bash yarn dist:win ``` - - Build executable for Mac: + - Package as a Mac executable: ```bash yarn dist:mac ``` - - Build executable for Linux: + - Package as a Linux executable: ```bash yarn dist:linux ``` -5. **Code quality check** +5. **Code Quality Checks (Linting)** - - Perform lint check: + - Run global syntax and styling checks: ```bash yarn lint ``` -6. **AI Debug panel (Optional)** +6. **AI Debug Panel (Optional)** - Start the Vercel AI SDK visual debugging tool for easier AI integration debugging: + Launch the AI SDK visual debugging tool to easily trace AI calls: ```bash yarn debug:ai @@ -423,129 +433,131 @@ For standalone frontend deployment or customization, refer to the frontend repos ## Frontend Development -To modify the frontend UI, develop in the frontend repository: +If you need to modify or customize the frontend interface, please go to the frontend repository: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -After frontend build, copy the `dist` contents to this project's `data/web` to integrate. +After building the frontend, copy the entire `dist` folder into the `data/web` directory of this project to integrate it. ## Project Structure ``` -📂 build/ # Compiled output +📂 build/ # Build artifacts 📂 data/ # Runtime data -│ ├─ 📂 models/ # Local inference models (ONNX) -│ ├─ 📂 oss/ # Object storage (assets/characters/scenes) -│ ├─ 📂 serve/ # Production entry -│ ├─ 📂 skills/ # Agent skill prompts -│ └─ 📂 web/ # Built-in frontend assets -📂 ./ # Documentation assets -📂 env/ # Environment configs -📂 scripts/ # Build and helper scripts +│ ├─ 📂 models/ # Local inference models (ONNX) +│ ├─ 📂 oss/ # Object storage (images, characters, scenes) +│ ├─ 📂 serve/ # Production environment entry point +│ ├─ 📂 skills/ # Agent skill prompts +│ └─ 📂 web/ # Built frontend assets (embedded) +📂 docs/ # Documentation and resources +📂 env/ # Environment configurations +📂 scripts/ # Build and utility scripts 📂 src/ -├─ 📂 agents/ # AI Agent modules -│ ├─ 📂 productionAgent/ # Production Agent -│ └─ 📂 scriptAgent/ # Script Agent -├─ 📂 lib/ # Common libraries (db, responses) -├─ 📂 middleware/ # Middleware -├─ 📂 routes/ # API routes -│ ├─ 📂 agents/ # Agent memory management -│ ├─ 📂 artStyle/ # Art style management -│ ├─ 📂 assets/ # Asset management -│ ├─ 📂 assetsGenerate/ # Asset generation -│ ├─ 📂 cornerScape/ # Storyboard management -│ ├─ 📂 general/ # General APIs -│ ├─ 📂 login/ # Auth -│ ├─ 📂 migrate/ # Data migration -│ ├─ 📂 modelSelect/ # Model selection -│ ├─ 📂 novel/ # Novel management -│ ├─ 📂 other/ # Other features -│ ├─ 📂 production/ # Production management -│ ├─ 📂 project/ # Project management -│ ├─ 📂 script/ # Script generation -│ ├─ 📂 scriptAgent/ # Script Agent APIs -│ ├─ 📂 setting/ # System settings -│ ├─ 📂 task/ # Task management -│ └─ 📂 test/ # Test APIs -├─ 📂 socket/ # WebSocket comms -├─ 📂 types/ # TypeScript types -├─ 📂 utils/ # Utility functions -├─ 📄 app.ts # App entry point -├─ 📄 core.ts # Core initialization -├─ 📄 env.ts # Env vars -├─ 📄 err.ts # Error handling -├─ 📄 logger.ts # Logging module -├─ 📄 router.ts # Route registration -└─ 📄 utils.ts # General tools -📄 Dockerfile # Docker build config -📄 electron-builder.yml # Electron packaging config -📄 skillList.json # Skills list -📄 LICENSE # (Apache-2.0) License -📄 NOTICES.txt # Third-party dependencies -📄 package.json # Project config -📄 tsconfig.json # TypeScript config +├─ 📂 agents/ # AI Agent modules +│ ├─ 📂 productionAgent/ # Production Agent +│ └─ 📂 scriptAgent/ # Script Agent +├─ 📂 lib/ # Shared libraries (DB initialization, response formatting) +├─ 📂 middleware/ # Express middlewares +├─ 📂 routes/ # Routing modules +│ ├─ 📂 agents/ # Agent memory management +│ ├─ 📂 artStyle/ # Art style management +│ ├─ 📂 assets/ # Asset management +│ ├─ 📂 assetsGenerate/ # Asset generation +│ ├─ 📂 cornerScape/ # Storyboard management +│ ├─ 📂 general/ # General APIs +│ ├─ 📂 login/ # Authentication +│ ├─ 📂 migrate/ # Data migration +│ ├─ 📂 modelSelect/ # Model selection +│ ├─ 📂 novel/ # Novel management +│ ├─ 📂 other/ # Other functionalities +│ ├─ 📂 production/ # Production and editing management +│ ├─ 📂 project/ # Project management +│ ├─ 📂 script/ # Script generation +│ ├─ 📂 scriptAgent/ # Script Agent interface +│ ├─ 📂 setting/ # System settings +│ ├─ 📂 task/ # Task management +│ └─ 📂 test/ # Test APIs +├─ 📂 socket/ # Real-time communication via WebSocket +├─ 📂 types/ # TypeScript type declarations +├─ 📂 utils/ # Utility functions +├─ 📄 app.ts # Application entry point +├─ 📄 core.ts # Core system initialization +├─ 📄 env.ts # Environment variables handling +├─ 📄 err.ts # Error handling +├─ 📄 logger.ts # Logging module +├─ 📄 router.ts # Route registration +└─ 📄 utils.ts # General utilities +📄 Dockerfile # Docker build file +📄 electron-builder.yml # Electron packaging configuration +📄 skillList.json # Skill list +📄 LICENSE # License (Apache-2.0) +📄 NOTICES.txt # Third-party dependency notices +📄 package.json # Project configuration +📄 tsconfig.json # TypeScript configuration ``` --- # 🔗 Related Repositories -| Repository | Description | GitHub | Gitee | -| ---------------- | ---------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| **Toonflow-app** | Full client (this repo, for users) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app)| [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | Frontend source (for FE devs) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web)| [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| Repository | Description | GitHub | Gitee | +|------------------|-----------------------------------------------------------------------------|----------------------------------------------------|--------------------------------------------------| +| **Toonflow-app** | Full client (This repository — recommended for most users) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | Frontend source code (For frontend developers) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **Tip:** If you just want to use Toonflow, download the client from this repo directly. The frontend repo is for developers needing secondary dev or UI customization. +> 💡 **Tip**: If you just want to use Toonflow, downloading the client from this repository is sufficient. The Toonflow-web repository is intended only for developers who need to customize the UI or perform secondary development. --- -# 👨‍👩‍👧‍👦 WeChat Groups +# 👨‍👩‍👧‍👦 Discord Community -Group Assistant: +Click the icon below to join our Discord: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +Or click the direct link: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- # 💌 Contact Us -📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow inquiry) +📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow%20Inquiry) --- # 📜 License -Toonflow is open source under Apache-2.0 with a supplementary commercial agreement. +Toonflow is open-sourced under the Apache-2.0 License with an additional supplementary commercial agreement. License details: https://www.apache.org/licenses/LICENSE-2.0 -## Supplementary Agreement +## Supplementary Commercial Agreement -- If you distribute this software as a product to **2 or more independent third parties**, you must obtain **written commercial authorization** from HBAI-Ltd. -- **≤ 5 legal entities** operating jointly for internal use without providing services externally are considered **internal use and require no authorization**. -- You may not remove or modify any trademarks, logos, or copyright notices in Toonflow. +- If this software is distributed as a product to **2 or more independent third parties**, a **written commercial license** from HBAI-Ltd is required. +- Joint operation and internal use by **≤ 5 legal entities** (without providing services to external users) is considered internal use and **does not require a license**. +- It is strictly prohibited to remove or modify any logos or copyright information within Toonflow. -## Always Free — No Authorization Required +## Forever Free Usage Scenarios -- ✅ Using Toonflow to produce content and earn platform revenue shares +- ✅ Using Toonflow to create content and earning revenue share from video platforms - ✅ Secondary development for internal team use -- ✅ ≤ 5 legal entities operating jointly, internally only +- ✅ Joint/internal use by up to 5 legal entities - ✅ Personal learning, research, and non-commercial purposes -## Licensing Pricing +## Commercial License Pricing -| Stage | Annual Revenue | Annual Fee | -|------|---------|------| -| 🌱 Nurture | < $10k | **Free** | -| 🚀 Startup | $10k–$50k | ¥5,000/year | -| 📈 Growth | $50k–$150k | ¥20,000/year | -| 🏢 Scale | $150k–$500k | ¥80,000/year | -| 🌐 Enterprise | > $500k | Negotiable | +| Phase | Annual Revenue | Annual Fee | +|----------------|-------------------------|---------------------| +| 🌱 Incubation | < $15,000 | **Free** | +| 🚀 Startup | $15,000 – $75,000 | $750 / year | +| 📈 Growth | $75,000 – $200,000 | $2,900 / year | +| 🏢 Scale | $200,000 – $750,000 | $11,500 / year | +| 🌐 Enterprise | > $750,000 | Negotiable | -> **Non-Retroactivity Clause**: Users who used Toonflow under AGPL-3.0 prior to the v1.0.8 release are not affected by this change. Their existing usage continues under AGPL-3.0. +> **Non-Retroactivity Clause**: Users who were using Toonflow under the AGPL-3.0 license before version v1.0.8 will continue to be governed by AGPL-3.0 and are not affected by this agreement change. -See the full [LICENSE](../LICENSE) file for details. +For the full agreement, please refer to the [LICENSE](./LICENSE) file. --- @@ -555,34 +567,34 @@ See the full [LICENSE](../LICENSE) file for details. --- -# 🙏 Thanks +# 🙏 Acknowledgements -Thank you to the following open-source projects for supporting Toonflow: +We sincerely thank the following open-source projects for providing robust support to Toonflow: -- [Express](https://expressjs.com/) - Fast, open, minimalist Node.js Web framework -- [AI SDK](https://ai-sdk.dev/) - TypeScript-first AI toolkit -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - High-performance SQLite3 bindings -- [Sharp](https://sharp.pixelplumbing.com/) - High-performance Node.js image toolkit +- [Express](https://expressjs.com/) - Fast, unopinionated, minimalist web framework for Node.js +- [AI SDK](https://ai-sdk.dev/) - The AI toolkit for TypeScript +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - High-performance SQLite3 binding library +- [Sharp](https://sharp.pixelplumbing.com/) - High-performance Node.js image processing - [Axios](https://axios-http.com/) - Promise-based HTTP client -- [Zod](https://zod.dev/) - TypeScript-first schema validation library -- [Socket.IO](https://socket.io/) - Real-time bidirectional event framework -- [Electron](https://www.electronjs.org/) - Cross-platform desktop app framework -- [Hugging Face Transformers](https://huggingface.co./transformers.js) - Local ML inference library +- [Zod](https://zod.dev/) - TypeScript-first schema validation +- [Socket.IO](https://socket.io/) - Real-time bidirectional event-based communication +- [Electron](https://www.electronjs.org/) - Cross-platform desktop application framework +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - State-of-the-art Machine Learning for the web -Thanks to the following organizations/individuals for their support: +Thanks to the following organizations/individuals for supporting Toonflow:
- SophNet Logo + Sophgo Logo - SophNet Cloud provides computing power sponsorship - [Official Website] + Sophnet for providing computing power sponsorship + [Website]
-For a complete list of third-party dependencies, see `NOTICES.txt` +For a complete list of third-party dependencies, please refer to `NOTICES.txt`. -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### Copyright © Huaibei AIA Network Technology Co., Ltd. \ No newline at end of file diff --git a/docs/README.ja.md b/docs/README.ja.md index 7d2325d..e639351 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -1,4 +1,4 @@ -

+

GitHub @@ -8,19 +8,18 @@  |  - Atomgit - Atomgit + Atomgit

- 簡体字中国語 | - 繁体字中国語 | - 英語 | - タイ語 | - ベトナム語 | + 简体中文 | + 繁體中文 | + English | + ไทย | + Tiếng Việt | 日本語 | - ロシア語 + Русский

@@ -31,9 +30,9 @@

- AI短編ドラマ工場 + AI ショートドラマ制作スタジオ
- 指先ひとつで、小説が瞬時にドラマ化! + 指先一つで、小説があっという間にドラマに!
AI脚本 × AI映像 × 超高速生成 🔥
@@ -50,173 +49,175 @@

- > 🚀 **ワンストップ短編ドラマ制作**:テキストからキャラクター、絵コンテ、映像まで、0知識でAI化された全プロセス。創作効率10倍以上! + > 🚀 **オールインワン制作環境**:テキストからキャラクター、絵コンテから動画まで。 + 専門知識ゼロでも全プロセスをAIが**アシスト**し、創作効率を10倍以上に引き上げます!
--- # 🌐 多言語対応 -Toonflowは以下の言語インターフェースに対応しています: +Toonflow は以下の言語インターフェースに対応しています: | 言語 | Language | |------|----------| -| 简体中文 | 中国語(簡体字) | -| 繁體中文 | 中国語(繁体字) | -| English | 英語 | -| ไทย | タイ語 | -| Tiếng Việt | ベトナム語 | -| 日本語 | 日本語 | -| Русский | ロシア語 | +| 简体中文 | Chinese (Simplified) | +| 繁體中文 | Chinese (Traditional) | +| English | English | +| ไทย | Thai | +| Tiếng Việt | Vietnamese | +| 日本語 | Japanese | +| Русский | Russian | + +> 💡 さらに多くの言語に対応予定です。多言語翻訳へのご協力(貢献)を歓迎します! --- # 🌟 主な機能 -ToonflowはAI短編漫画/ドラマ制作ツールで、小説をAIが自動的に脚本化し、AI生成画像・映像と組み合わせて高効率な短編ドラマ制作を実現します。Toonflowにより、テキストから映像までの流れを簡単に完結でき、短編ドラマ制作がよりスマート&便利になります。 +Toonflow は、AI技術を活用して小説を自動的に脚本へ変換し、AIが生成した画像や動画と組み合わせることで、効率的なショートドラマ制作を強力に**アシスト**するツールです。Toonflow を使えば、テキストから映像までの全工程を簡単に完結でき、ドラマ制作がよりスマートで便利になります。 -- ✅ **キャラクター生成** - 元の小説テキストを自動分析し、外見・性格・身分など詳細なキャラクター設定をスマートに識別・生成。脚本・作画の基盤を提供します。 -- ✅ **脚本生成** - 選択したエピソードや章に基づき、構造化された脚本(セリフ・シーン描写・ストーリー展開など)をシステムが自動生成。小説から映像脚本への効率的な変換を実現します。 -- ✅ **絵コンテ作成** - 脚本内容に基づき、AIが適切な絵コンテプロンプトや画面設計を生成。前景・中景・背景、キャラクター動作、小道具設計、場面レイアウトを細分化し、脚本からビデオへの完全なルートマップを自動構築します。 -- ✅ **動画合成** - AI画像と動画技術を統合し、AI生成により映像クリップの作成が可能。オンライン編集と個別調整にも対応し、映像創作の効率アップ&迅速実現をサポートします。 +- ✅ **キャラクター生成** 原作の小説テキストを自動分析し、容姿、性格、身分などの詳細情報をインテリジェントに認識・生成します。これにより、後の脚本や画面作りにおいて信頼できる土台を提供します。 + +- ✅ **脚本生成** 選択したイベントや章に基づき、セリフ、シーンの描写、ストーリー展開を含む構造化された脚本を自動生成します。文学テキストから映像用脚本への高効率な変換を**アシスト**します。 + +- ✅ **絵コンテ制作** 脚本の内容から、絵コンテ用のプロンプト(指示文)と画面構成をインテリジェントに生成します。前景・中景・背景、キャラクターの動き、小道具の配置などを細分化し、動画制作の道筋を完全に**アシスト**します。 + +- ✅ **動画合成** AI画像および動画技術を統合し、AIによる動画クリップ生成を可能にします。オンライン編集機能も備えており、個別の微調整に対応。映像制作の効率的な連携とスピーディな完成を**アシスト**します。 --- -# 📦 利用シーン +# 📦 活用シーン -- ショート動画コンテンツ制作 -- 小説の映像化実験 -- AI文学改編ツール -- 脚本開発&高速プロトタイピング -- 動画素材生成 +- ショート動画コンテンツの制作 +- 小説の映像化テスト +- AIによる文学作品の翻案(脚色)ツール +- 脚本開発および迅速なプロトタイプ作成 +- 動画素材の生成 --- -# 🔰 使い方ガイド +# 🔰 ご利用ガイド ## 📺 動画チュートリアル -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow 8分でAI動画をクイックスタート](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![Toonflow 8分でわかるAI動画作成](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) -**Toonflow 8分クイックスタートAI動画** -👉 [クリックして見る](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) +**Toonflow 8分でわかるクイックスタート AI動画作成** +👉 [クリックして視聴](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) -📱 スマホWeChatでQRコードをスキャンして視聴 +📱 QRコードをスキャンして視聴 -微信扫码观看 +WeChat スキャンして視聴 --- # 🚀 インストール -## 前提条件 +## 必須環境(前提条件) -本ソフトウェアのインストール・利用前に以下をご用意ください: +本ソフトウェアをインストールして使用する前に、以下の準備をお願いします: -- ✅ 大規模言語モデルAIサービスのエンドポイント -- ✅ SoraまたはDoubao動画サービスAPI -- ✅ Nano Banana Pro画像生成モデルAPI +- ✅ 大規模言語モデル (LLM) の AI サービス API エンドポイント +- ✅ Sora または 豆包 (Doubao) の動画サービス API エンドポイント +- ✅ Nano Banana Pro の画像生成モデルサービス API エンドポイント -## ローカルインストール +## ローカル環境へのインストール -### 1. ダウンロード&インストール +### 1. ダウンロードとインストール -| オペレーティングシステム | GitHub | Atomgit | クアークネットディスクダウンロード | 説明 | +| OS | GitHub | Atomgit | Quark Drive | 説明 | | :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | -| Windows | [リリース](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [リリース](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [クアークネットディスク](https://pan.quark.cn/s/94ef07509df0) | 公式リリースインストールパッケージ | -| Linux | [リリース](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [リリース](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [クアークネットディスク](https://pan.quark.cn/s/94ef07509df0) | 公式リリースインストールパッケージ | -| macOS | [リリース](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [リリース](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [クアークネットディスク](https://pan.quark.cn/s/94ef07509df0) | 公式リリースインストールパッケージ | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | 公式インストーラ | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | 公式インストーラ | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | 公式インストーラ | > [!CAUTION] -> MacOSの場合は、設定→プライバシーとセキュリティでセキュリティ設定を許可してください。証明書問題でアプリが開かない場合があります。 +> MacOS システムをご利用の場合、「システム設定」-「プライバシーとセキュリティ」からセキュリティ設定を行ってください。そうしないと、証明書の問題で正常に開けない場合があります。 > -> 参考:知乎ドキュメント:[https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> 参考ドキュメント(Zhihu):[https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> Gitee OSの制限とReleaseファイルのサイズ上限により、Gitee側のReleaseダウンロードは現在未提供です。 +> Gitee OS 環境の制限および Release ファイルのアップロード容量制限により、現在 Gitee Release のダウンロードリンクは提供していません。 -### 2. サービス起動 +### 2. サービスの起動 -インストール後、アプリを起動してください。 +インストール完了後、プログラムを起動すればサービスを利用開始できます。 -> ⚠️ **初回ログイン** -> アカウント:`admin` +> ⚠️ **初回ログイン** +> ユーザー名:`admin` > パスワード:`admin123` -## Dockerデプロイ +## Docker を利用した導入 -### 前提条件 +### 必須環境 -- [Docker](https://docs.docker.com/get-docker/)(バージョン 20.10以上)インストール済み +- [Docker](https://docs.docker.com/get-docker/) がインストール済みであること(バージョン 20.10+) -### 方法1:オンラインデプロイ +### 方法1:オンライン展開 -現在準備中。しばらくはローカルビルドをご利用ください。 +現在準備中です。一時的にローカルでのビルドをご利用ください。 -### 方法2:ローカルビルド +### 方法2:ローカルでのビルド -お手持ちのソースコードから直接ビルド。開発者またはリポジトリクローン済ユーザー向け(git要インストール)。 +既存のソースコードを使用して直接ビルドします。開発者やリポジトリをクローンしたユーザーに適しています(ローカルに git がインストールされている必要があります): ```shell -# まずプロジェクトをクローン(既にある場合は省略可) +# まずプロジェクトをクローン(既に存在する場合はスキップ) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# docker-composeでローカルビルド&起動 +# docker-compose を使用してローカルでビルド・起動 yarn docker:local -# または手動ビルド +# または手動でビルド docker build -t toonflow . docker run -d -p <ローカルポート>:10588 -v <ローカルデータパス>:/app/data toonflow -# 指定ポートの /web/index.html でアクセス可 -# 例)http://localhost:10588/web/index.html +# これで指定したポートの /web/index.html にアクセスできます +# 例: http://localhost:10588/web/index.html ``` -### サービスポート情報 +### サービスポートの説明 -| ポート | 用途 | デプロイマッピング | +| ポート | 用途 | デプロイマッピング | | ------- | -------- | ------------- | -| `10588` | UI | `10588:10588` | +| `10588` | ソフトウェア画面 | `10588:10588` | -**環境変数メモ:** +**環境変数の説明:** -| 変数 | 説明 | -| ------------ | -------------------------- | -| `NODE_ENV` | 実行環境、`prod`が本番 | -| `PORT` | サービスポート(デフォルト10588) | -| `OSSURL` | ファイル保存URL(静的リソース) | +| 変数名 | 説明 | +| ---------- | ---------------------------------- | +| `NODE_ENV` | 実行環境。`prod` は本番環境を示します | +| `PORT` | サービスの待受ポート(デフォルト 10588) | +| `OSSURL` | ファイルストレージのアクセスURL(静的リソース用) | --- -## クラウドデプロイ +## クラウド(サーバー)への導入 -### 1. サーバー環境要件 +### 1. サーバー環境の要件 -- **OS**:Ubuntu 20.04以上/CentOS 7以上 -- **Node.js**:24.x(推奨、最低23.11.1以上) +- **OS**:Ubuntu 20.04+ / CentOS 7+ +- **Node.js**:24.x(推奨、最低 23.11.1+) - **メモリ**:2GB以上 -### 2. サーバーデプロイ +### 2. サーバーへの配置 -#### 1. 環境インストール +#### 1. 環境構築 ```bash -# Node.jsインストール +# Node.js のインストール curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 24 -# YarnとPM2インストール +# Yarn と PM2 のインストール npm install -g yarn pm2 ``` -#### 2. プロジェクト導入 +#### 2. プロジェクトの配置 -**GitHubからクローン:** +**GitHub からクローン:** ```bash cd /opt @@ -226,7 +227,7 @@ yarn install yarn build ``` -**Giteeからクローン(中国国内推奨):** +**Gitee からクローン(中国国内推奨):** ```bash cd /opt @@ -236,9 +237,9 @@ yarn install yarn build ``` -#### 3. PM2構成 +#### 3. PM2 の設定 -`pm2.json`ファイルを作成: +`pm2.json` ファイルを作成します: ```json { @@ -254,17 +255,17 @@ yarn build } ``` -**環境変数説明:** +**環境変数の説明:** -| 変数 | 説明 | -| ------------ | -------------------------- | -| `NODE_ENV` | 実行環境、`prod`が本番 | -| `PORT` | サービスポート | -| `OSSURL` | ファイル保存URL(静的リソース) | +| 変数名 | 説明 | +| ---------- | ---------------------------------- | +| `NODE_ENV` | 実行環境。`prod` は本番環境を示します | +| `PORT` | サービスの待受ポート | +| `OSSURL` | ファイルストレージのアクセスURL(静的リソース用) | --- -#### 4. サービス起動 +#### 4. サービスの起動 ```bash pm2 start pm2.json @@ -275,77 +276,77 @@ pm2 save #### 5. よく使うコマンド ```bash -pm2 list # プロセス一覧 -pm2 logs toonflow-app # ログを見る -pm2 restart all # サービス再起動 -pm2 monit # 監視パネル +pm2 list # プロセス一覧の確認 +pm2 logs toonflow-app # ログの確認 +pm2 restart all # サービスの再起動 +pm2 monit # 監視パネルの表示 ``` -> ⚠️ **初回ログイン** -> アカウント:`admin` +> ⚠️ **初回ログイン** +> ユーザー名:`admin` > パスワード:`admin123` -#### 6. フロントエンドのデプロイ +#### 6. フロントエンドサイトの配置 -前端の分離デプロイやカスタマイズが必要な場合はこちら: +フロントエンド画面を単独で配置、またはカスタマイズしたい場合は、フロントエンドのリポジトリを参照してください: - **GitHub**:[Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**:[Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **補足**:このリポジトリにはビルド済のフロントリソースが内蔵済み。通常ユーザーはフロント分離構築は不要。フロントリポジトリはカスタム開発用です。 +> 💡 **補足**:本リポジトリには既にコンパイル済みのフロントエンド成果物が組み込まれているため、一般ユーザーはフロントエンドを個別に配置する必要はありません。フロントエンドのリポジトリは、二次開発を行う開発者向けです。 --- # 🔧 開発フローガイド > [!CAUTION] -> 🚧 **PR提出ガイドライン** 🚧 +> 🚧 **PR(プルリクエスト)提出のルール** 🚧 > -> ⛔ `master`ブランチはPR不可 | ✅ `develop`ブランチにPR提出 +> ⛔ `master` ブランチへの PR は受け付けていません | ✅ PR は `develop` ブランチへ提出してください > -> 開発者のご参加を歓迎します。参加希望はコミュニティで主催者ACTにご連絡ください。 +> 開発者の皆様の Toonflow への共同参加を歓迎します。興味のある方は、交流グループ内で管理者の ACT までご連絡ください。 -## 🛠️ 技術スタック +## 🛠️ 採用技術 -| カテゴリ | 技術 | -| -------------- | ---------------------------------------------------------------------------------------- | -| ランタイム | Node.js 23.11.1+ | -| 言語 | TypeScript 5.x | -| バックエンド | Express 5 | -| データベース | SQLite(better-sqlite3 / knex) | -| AI連携 | Vercel AI SDK(OpenAI / Anthropic / Google / DeepSeek / 智谱 / MiniMax / 通義千問 / xAI) | -| ローカル推論 | @huggingface/transformers(ONNX) | -| リアルタイム通信 | Socket.IO | -| デスクトップ | Electron 40 | -| 画像処理 | Sharp | -| コンテナ化 | Docker | +| カテゴリ | 技術 | +| ---------- | ----------------------------------------------------------------------------------------- | +| 実行環境 | Node.js 23.11.1+ | +| 言語 | TypeScript 5.x | +| バックエンド | Express 5 | +| データベース | SQLite(better-sqlite3 / knex) | +| AI 統合 | Vercel AI SDK(OpenAI / Anthropic / Google / DeepSeek / 智譜 / MiniMax / 通義千問 / xAI) | +| ローカル推論 | @huggingface/transformers(ONNX) | +| リアルタイム通信 | Socket.IO | +| デスクトップアプリ | Electron 40 | +| 画像処理 | Sharp | +| コンテナ化 | Docker | -## 開発環境準備 +## 開発環境の準備 -- **Node.js**:バージョン23.11.1以上 -- **Yarn**:パッケージマネージャ推奨 +- **Node.js**:バージョン 23.11.1 以上が必要 +- **Yarn**:プロジェクトのパッケージマネージャーとして推奨 -## プロジェクトのクイック起動 +## プロジェクトのクイックスタート -1. **プロジェクトクローン** +1. **プロジェクトのクローン** - **GitHubからクローン:** + **GitHub からクローン:** ```bash git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` - **Giteeからクローン(中国国内推奨):** + **Gitee からクローン(中国国内推奨):** ```bash git clone https://gitee.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` -2. **依存パッケージインストール** +2. **依存関係(パッケージ)のインストール** - プロジェクト直下で次を実行: + プロジェクトのルートディレクトリで以下のコマンドを実行します: ```bash yarn install @@ -353,69 +354,69 @@ pm2 monit # 監視パネル 3. **開発環境の起動** - 本プロジェクトは**バックエンドAPIサービス**と**フロントエンド**があります。次から用途を選択。 + 本プロジェクトは **バックエンド API サービス** と **フロントエンド画面** の2つの部分を含みます。必要に応じて起動方法を選択してください: - - **方法1:バックエンドのみ起動** + - **方法1:バックエンドサービスのみ起動** ```bash yarn dev ``` - > ⚠️ このコマンドはAPIサーバー(ポート10588)のみ起動。`http://localhost:10588`でAPIのみ利用。GUI表示にはフロントプロジェクトの起動または下記のGUIモードをご利用ください。 + > ⚠️ このコマンドはバックエンド API サービス(ポート 10588)のみを起動し、**フロントエンド画面は含まれません**。直接 `http://localhost:10588` にアクセスしても API を呼び出せるだけで、完全な Web 画面は見えません。画面を利用する場合はフロントエンドプロジェクトを別途起動するか、以下の GUI モードを使用してください。 - - **方法2:Electronデスクトップクライアント** + - **方法2:Electron デスクトップクライアントの起動** ```bash yarn dev:gui ``` - > バックエンドとElectronウィンドウが同時起動。内蔵フロント付きで即利用OK。すべての機能を体験したい方向け。 + > このコマンドはバックエンドサービスと Electron のデスクトップウィンドウを同時に起動します。フロントエンド画面が内蔵されており、追加の設定なしですぐに使えます。すべての機能を体験したい開発者に最適です。 - - **方法3:本番モードで起動** + - **方法3:本番(Production)モードで起動** ```bash yarn start ``` - > 本番モードでビルド済サービスを直接起動(`yarn build`が必要)。 + > コンパイル済みのサービスを本番モードで直接実行します(事前に `yarn build` を実行しておく必要があります)。 -4. **プロジェクトパッケージ化** +4. **プロジェクトのパッケージ化(ビルド)** - - TypeScriptファイルのビルド: + - コンパイルして TypeScript ファイルを生成: ```bash yarn build ``` - - Windows用実行ファイル化: + - Windows 用の実行ファイルをパッケージ化: ```bash yarn dist:win ``` - - Mac用実行ファイル化: + - Mac 用の実行ファイルをパッケージ化: ```bash yarn dist:mac ``` - - Linux用実行ファイル化: + - Linux 用の実行ファイルをパッケージ化: ```bash yarn dist:linux ``` -5. **コード品質チェック** +5. **コード品質チェック(Lint)** - - グローバルLintチェック: + - グローバルな構文およびコーディング規約のチェックを実行: ```bash yarn lint ``` -6. **AIデバッグパネル(任意)** +6. **AI デバッグパネル(オプション)** - AI SDKのGUIデバッグツール。AI呼び出しのデバッグに便利。 + AI SDK のビジュアルデバッグツールを起動し、AI の呼び出しを簡単にデバッグできます: ```bash yarn debug:ai @@ -423,68 +424,68 @@ pm2 monit # 監視パネル ## フロントエンド開発 -フロントUIの修正はフロントエンドリポジトリへ: +フロントエンド画面を修正する必要がある場合は、フロントエンドのリポジトリで開発を行ってください: - **GitHub**:[Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**:[Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -ビルド後、`dist`以下を本プロジェクト `data/web`へコピーで統合完了。 +フロントエンドのビルド後、`dist` ディレクトリの内容を本プロジェクトの `data/web` ディレクトリにコピーするだけで統合できます。 ## プロジェクト構成 ``` 📂 build/ # ビルド成果物 📂 data/ # 実行時データ -│ ├─ 📂 models/ # ローカル推論モデル(ONNX) -│ ├─ 📂 oss/ # オブジェクトストレージ(素材/キャラ/背景) -│ ├─ 📂 serve/ # 本番エントリ -│ ├─ 📂 skills/ # Agentプロンプト集 -│ └─ 📂 web/ # ビルトインフロント -📂 docs/ # ドキュメントリソース +│ ├─ 📂 models/ # ローカル推論モデル(ONNX) +│ ├─ 📂 oss/ # オブジェクトストレージ(素材/キャラクター/背景) +│ ├─ 📂 serve/ # 本番環境のエントリー +│ ├─ 📂 skills/ # Agent スキルのプロンプト +│ └─ 📂 web/ # フロントエンドビルド成果物(内蔵) +📂 docs/ # ドキュメントや画像リソース 📂 env/ # 環境設定 -📂 scripts/ # ビルド&ツールスクリプト +📂 scripts/ # ビルドや補助スクリプト 📂 src/ -├─ 📂 agents/ # AI Agentモジュール -│ ├─ 📂 productionAgent/ # プロダクション用Agent -│ └─ 📂 scriptAgent/ # 脚本Agent -├─ 📂 lib/ # 共通ライブラリ(DB初期化等) -├─ 📂 middleware/ # ミドルウェア -├─ 📂 routes/ # ルーティングモジュール -│ ├─ 📂 agents/ # Agentメモリ管理 -│ ├─ 📂 artStyle/ # 画風管理 -│ ├─ 📂 assets/ # 素材管理 -│ ├─ 📂 assetsGenerate/ # 素材生成 -│ ├─ 📂 cornerScape/ # 絵コンテ管理 -│ ├─ 📂 general/ # 共通API -│ ├─ 📂 login/ # ログイン認証 -│ ├─ 📂 migrate/ # データ移行 -│ ├─ 📂 modelSelect/ # モデル選択 -│ ├─ 📂 novel/ # 小説管理 -│ ├─ 📂 other/ # その他機能 -│ ├─ 📂 production/ # 制作管理 -│ ├─ 📂 project/ # プロジェクト管理 -│ ├─ 📂 script/ # 脚本生成 -│ ├─ 📂 scriptAgent/ # 脚本AgentAPI -│ ├─ 📂 setting/ # システム設定 -│ ├─ 📂 task/ # タスク管理 -│ └─ 📂 test/ # テストAPI -├─ 📂 socket/ # WebSocket通信 -├─ 📂 types/ # TypeScript型 -├─ 📂 utils/ # ユーティリティ -├─ 📄 app.ts # アプリエントリ -├─ 📄 core.ts # コア初期化 -├─ 📄 env.ts # 環境変数処理 -├─ 📄 err.ts # エラーハンドラ -├─ 📄 logger.ts # ロギング -├─ 📄 router.ts # ルート登録 -└─ 📄 utils.ts # 共通ツール -📄 Dockerfile # Dockerビルド -📄 electron-builder.yml # Electronパッケージ設定 +├─ 📂 agents/ # AI Agent モジュール +│ ├─ 📂 productionAgent/ # 制作 Agent +│ └─ 📂 scriptAgent/ # 脚本 Agent +├─ 📂 lib/ # 共通ライブラリ(DB初期化、レスポンス形式など) +├─ 📂 middleware/ # ミドルウェア +├─ 📂 routes/ # ルーティングモジュール +│ ├─ 📂 agents/ # Agent メモリ管理 +│ ├─ 📂 artStyle/ # 画風(アートスタイル)管理 +│ ├─ 📂 assets/ # 素材管理 +│ ├─ 📂 assetsGenerate/ # 素材生成 +│ ├─ 📂 cornerScape/ # 絵コンテ管理 +│ ├─ 📂 general/ # 汎用 API +│ ├─ 📂 login/ # ログイン認証 +│ ├─ 📂 migrate/ # データ移行 +│ ├─ 📂 modelSelect/ # モデル選択 +│ ├─ 📂 novel/ # 小説管理 +│ ├─ 📂 other/ # その他機能 +│ ├─ 📂 production/ # 制作進行管理 +│ ├─ 📂 project/ # プロジェクト管理 +│ ├─ 📂 script/ # 脚本生成 +│ ├─ 📂 scriptAgent/ # 脚本 Agent インターフェース +│ ├─ 📂 setting/ # システム設定 +│ ├─ 📂 task/ # タスク管理 +│ └─ 📂 test/ # テスト用 API +├─ 📂 socket/ # WebSocket リアルタイム通信 +├─ 📂 types/ # TypeScript 型定義 +├─ 📂 utils/ # ユーティリティ関数 +├─ 📄 app.ts # アプリケーションエントリー +├─ 📄 core.ts # コア初期化 +├─ 📄 env.ts # 環境変数の処理 +├─ 📄 err.ts # エラーハンドリング +├─ 📄 logger.ts # ログモジュール +├─ 📄 router.ts # ルーティング登録 +└─ 📄 utils.ts # 汎用ツール +📄 Dockerfile # Docker ビルドファイル +📄 electron-builder.yml # Electron パッケージ設定 📄 skillList.json # スキルリスト 📄 LICENSE # ライセンス(Apache-2.0) -📄 NOTICES.txt # サードパーティ依存リスト +📄 NOTICES.txt # 依存パッケージに関する表記 📄 package.json # プロジェクト設定 -📄 tsconfig.json # TypeScript設定 +📄 tsconfig.json # TypeScript 設定 ``` --- @@ -492,64 +493,66 @@ pm2 monit # 監視パネル # 🔗 関連リポジトリ | リポジトリ | 説明 | GitHub | Gitee | -| ------------------ | ---------------------------------- | -------------------------------------------------- | ------------------------------------------------ | -| **Toonflow-app** | フルクライアント(本リポジトリ、一般ユーザー向け) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | フロントエンドソース(フロントエンド開発者向け) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| ---------------- | ---------------------------------- | -------------------------------------------------- | ------------------------------------------------ | +| **Toonflow-app** | 完全版クライアント(本リポジトリ、一般ユーザー向け) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | フロントエンドソースコード(フロントエンド開発者向け) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **ヒント**:Toonflowを利用したいだけなら本リポジトリをそのままダウンロードすればOK。フロントリポジトリはフロントカスタマイズや2次開発者向けです。 +> 💡 **ヒント**:Toonflow を使用するだけであれば、本リポジトリのクライアントを直接ダウンロードするだけで十分です。フロントエンドのリポジトリは、二次開発やフロントエンド画面のカスタマイズが必要な開発者向けです。 --- -# 👨‍👩‍👧‍👦 WeChatコミュニティグループ +# 👨‍👩‍👧‍👦 Discord 交流グループ -グループ招待アシスタント: +下のアイコンをクリックして Discord に参加: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +または直接リンクをクリック: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- # 💌 お問い合わせ -📧 メール:[ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow相談) +📧 メール:[ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflowのお問い合わせ) --- # 📜 ライセンス -ToonflowはApache-2.0ライセンス+補足商業契約でオープンソース公開されています。 +Toonflow は Apache-2.0 ライセンスに基づいてオープンソースとして公開されており、補足的な商業契約が付随しています。 -ライセンス詳細:https://www.apache.org/licenses/LICENSE-2.0 +ライセンスの詳細:https://www.apache.org/licenses/LICENSE-2.0 -## 補足契約 +## 補足条項 -- 本ソフトウェアを製品として**2つ以上の独立した第三者**に配布する場合、HBAI-Ltdの**書面による商業許諾**が必要です。 -- **5法人以下**の共同運営で内部利用のみの場合は、**商業許諾不要**です。 -- Toonflowの商標・ロゴ・著作権情報の削除・改変は禁止です。 +- 本ソフトウェアを製品として **2つ以上の独立した第三者** に配布・提供する場合、HBAI-Ltd からの **書面による商業ライセンス(許諾)** を取得する必要があります。 +- **5法人以下** が共同で運営し、外部にサービスを提供せずに内部利用のみとする場合は、内部利用と見なされ、**商業ライセンスの取得は不要**です。 +- Toonflow 内のロゴや著作権情報を削除または変更することは禁止されています。 -## 永久無料シーン +## 永久無料となるケース -- ✅ Toonflowでコンテンツを制作しプラットフォーム収益を得る -- ✅ 自チーム内部利用の二次開発 -- ✅ ≤ 5法人の共同運営内部利用 -- ✅ 個人学習・研究・非商用利用 +- ✅ Toonflow を利用してコンテンツを制作し、プラットフォームから収益分配を得る場合 +- ✅ 自分のチーム内で使用するために二次開発を行う場合 +- ✅ 5法人以下の共同運営による内部利用 +- ✅ 個人の学習、研究、非営利目的 ## 商業ライセンス価格 -| 段階 | 年間売上高 | 年間費用 | +| フェーズ | 年間売上高 | 年間費用 | |------|---------|------| -| 🌱 育成期 | < ¥10万 | **無料** | -| 🚀 スタートアップ | ¥10〜50万 | ¥5,000/年 | -| 📈 成長期 | ¥50〜150万 | ¥20,000/年 | -| 🏢 拡大期 | ¥150〜500万 | ¥80,000/年 | -| 🌐 エンタープライズ | > ¥500万 | 要相談 | +| 🌱 支援期 | 200万円 未満 | **無料** | +| 🚀 創業期 | 200万円 ~ 1,000万円 | 108,000 円/年 | +| 📈 成長期 | 1,000万円 ~ 3,000万円 | 420,000 円/年 | +| 🏢 規模拡大期 | 3,000万円 ~ 1億円 | 1,680,000 円/年 | +| 🌐 エンタープライズ | 1億円 超 | 応相談 | -> **不遡及条項**:v1.0.8リリース前にAGPL-3.0でToonflowを使用していたユーザーは、本変更の影響を受けません。既存の利用はAGPL-3.0に基づき継続されます。 +> **遡及(そきゅう)適用除外条項**:v1.0.8 リリース以前に AGPL-3.0 に基づいて使用していたユーザーは、引き続き AGPL-3.0 に従い、本契約変更の制約を受けません。 -完全な契約内容は [LICENSE](../LICENSE) をご覧ください。 +契約の全文については [LICENSE](./LICENSE) ファイルを参照してください。 --- -# ⭐️ スター履歴 +# ⭐️ Star 獲得履歴 [![Star History Chart](https://api.star-history.com/svg?repos=HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left)](https://www.star-history.com/#HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left) @@ -557,34 +560,32 @@ ToonflowはApache-2.0ライセンス+補足商業契約でオープンソー # 🙏 謝辞 -以下のオープンソースプロジェクトの強力な支援に感謝します: +Toonflow に強力なサポートを提供してくださる以下のオープンソースプロジェクトに感謝いたします: -- [Express](https://expressjs.com/) - 高速・オープンなNode.js Webフレームワーク -- [AI SDK](https://ai-sdk.dev/) - TypeScript向けAIツールキット -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - 高性能SQLite3バインディング -- [Sharp](https://sharp.pixelplumbing.com/) - 高速Node.js画像処理 -- [Axios](https://axios-http.com/) - PromiseベースHTTPクライアント -- [Zod](https://zod.dev/) - TypeScript優先のバリデーション -- [Socket.IO](https://socket.io/) - リアルタイム双方向通信エンジン -- [Electron](https://www.electronjs.org/) - クロスプラットフォームデスクトップ開発 -- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - ローカル機械学習推論ライブラリ +- [Express](https://expressjs.com/) - 高速でオープン、ミニマルな Node.js Web フレームワーク +- [AI SDK](https://ai-sdk.dev/) - TypeScript 向け AI ツールキット +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - 高性能 SQLite3 バインディングライブラリ +- [Sharp](https://sharp.pixelplumbing.com/) - 高性能 Node.js 画像処理ライブラリ +- [Axios](https://axios-http.com/) - Promise ベースの HTTP クライアント +- [Zod](https://zod.dev/) - TypeScript ファーストのスキーマ検証ライブラリ +- [Socket.IO](https://socket.io/) - リアルタイムの双方向イベント通信エンジン +- [Electron](https://www.electronjs.org/) - クロスプラットフォームデスクトップアプリ開発フレームワーク +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - ローカル ML 推論ライブラリ -以下の組織・団体・個人によるToonflowへの協力に感謝します: +Toonflow を支援してくださる以下の組織・団体・個人に感謝いたします:
- 算能云 Logo + 算能雲 Logo - 算能云 よりコンピューティング協賛 - [公式サイト] + 算能雲 (Sophnet) 様より計算リソースの提供をいただいております + [公式サイト]
-第三者依存リストは `NOTICES.txt` をご覧ください +完全なサードパーティの依存関係リストについては `NOTICES.txt` をご参照ください。 - - -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### copyright © Huaibei AIA Network Technology Co., Ltd. \ No newline at end of file diff --git a/docs/README.ru.md b/docs/README.ru.md index db4583a..8b9ba80 100644 --- a/docs/README.ru.md +++ b/docs/README.ru.md @@ -8,13 +8,12 @@  |  - Atomgit - Atomgit + Atomgit

- 简体中文 | + 简体中文 | 繁體中文 | English | ไทย | @@ -31,11 +30,11 @@

- AI-фабрика коротких сериалов + Фабрика AI-мини-сериалов и короткометражных фильмов
- Одним движением — роман за секунду становится сериалом! + Всего несколько кликов — и ваша новелла превращается в фильм или сериал!
- AI-сценарий × AI-изображения × Молниеносная генерация 🔥 + AI-сценарий × AI-изображения × Сверхбыстрая генерация 🔥

@@ -50,65 +49,71 @@

- > 🚀 **Универсальный конвейер коротких сериалов**: от текста к персонажам, от раскадровки к видео, 0 порога по всему процессу на базе AI, рост эффективности творчества 10× и более! +> 🚀 **All-in-One платформа для коротких сериалов и фильмов**: От текста до персонажей, от раскадровки до готового видео. Полная автоматизация с помощью ИИ с нулевым порогом входа — повышает эффективность творчества в 10 раз и более! --- -# 🌐 Многоязычная поддержка +# 🌐 Мультиязычная поддержка Toonflow поддерживает следующие языки интерфейса: -| Язык | Language | -|------|----------| -| 简体中文 | Китайский (упрощённый) | -| 繁體中文 | Китайский (традиционный) | -| English | Английский | -| ไทย | Тайский | -| Tiếng Việt | Вьетнамский | -| 日本語 | Японский | -| Русский | Русский | +| Язык | Language | +|---------------|---------------------------| +| 简体中文 | Chinese (Simplified) | +| 繁體中文 | Chinese (Traditional) | +| English | English | +| ไทย | Thai | +| Tiếng Việt | Vietnamese | +| 日本語 | Japanese | +| Русский | Russian | + +> 💡 В настоящее время мы активно добавляем новые языки. Будем рады вашей помощи с переводами! --- -# 🌟 Основные функции +# 🌟 Основные возможности -Toonflow — инструмент для создания коротких сериалов и комиксов с помощью AI, позволяющий автоматически превращать романы в сценарии и генерировать изображения и видео с помощью нейросетей. Используя Toonflow, вы легко пройдёте путь от текста к видео: создание коротких фильмов становится умнее и удобнее. +Toonflow — это мощный ИИ-инструмент для создания коротких видео, мини-сериалов и комиксов. Он автоматически превращает новеллы в сценарии, а затем с помощью ИИ генерирует изображения и видео, позволяя быстро и эффективно создавать качественный контент. +С Toonflow вы можете пройти весь цикл производства — от текста до готового видео — легко и удобно, без специальных навыков. - ✅ **Генерация персонажей** - Автоматически анализирует исходный текст романа, интеллектуально идентифицирует и генерирует параметры персонажей, включая внешний вид, характер, социальный статус и др., формируя прочную основу для дальнейшей разработки сценария и визуала. + Автоматический анализ оригинального текста новеллы, интеллектуальное распознавание и создание подробных профилей персонажей (внешность, характер, личность, отношения и другие детали). Это закладывает прочную основу для сценария и визуальной части. + - ✅ **Генерация сценария** - На основе выбранных событий и глав система автоматически создает структурированный сценарий, включая диалоги, описание сцен и развитие сюжета, обеспечивая эффективную трансформацию из литературного текста в кинематографический сценарий. -- ✅ **Раскадровка** - На основе сценария AI генерирует креативные промпты и дизайн кадров, прорабатывает передний-средний-задний план, динамику персонажей, реквизит и компоновку сцен, автоматически создаёт раскадровку для дальнейшей видеосборки. -- ✅ **Видеосборка** - Интегрирует AI-технологии генерации изображений и видео. Позволяет создавать фрагменты видео с помощью ИИ. Системы онлайн-редактирования поддерживают индивидуальные настройки и быстрый вывод конечного результата. + На основе выбранных событий и глав система автоматически создаёт структурированный сценарий с естественными диалогами, описаниями сцен и развитием сюжета, обеспечивая эффективную адаптацию литературного произведения в видеоформат. + +- ✅ **Создание раскадровки (Storyboard)** + Автоматическая генерация промптов и дизайн кадров на основе сценария. Детальная проработка переднего, среднего и заднего планов, движений персонажей, реквизита и композиции — готовая раскадровка становится точным планом для производства видео. + +- ✅ **Синтез видео** + Интеграция современных ИИ-технологий для генерации изображений и видеоклипов. Встроенный онлайн-редактор позволяет гибко настраивать результат, делая процесс создания видео быстрым, удобным и плавным. --- -# 📦 Области применения +# 📦 Сценарии использования -- Создание коротких видео-контента -- Эксперименты по экранизации романов -- Инструмент AI для литературных адаптаций -- Разработка сценариев и быстрые прототипы -- Генерация видеоматериалов +- Создание контента для коротких видео (Shorts, Reels, TikTok) +- Экранизация и визуализация новелл +- ИИ-инструмент для адаптации литературных произведений +- Разработка сценариев и быстрое прототипирование +- Генерация видеоматериалов и футажей --- # 🔰 Руководство пользователя -## 📺 Видеоруководство +## 📺 Видеоуроки -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow — Быстрый старт с AI-видео за 8 минут](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![Toonflow: Быстрый старт за 8 минут](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) -**Toonflow: 8 минут до полного освоения AI-видео** -👉 [Смотреть видео](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) +**Toonflow: Быстрый старт в AI-видео за 8 минут** +👉 [Нажмите для просмотра](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) -📱 Сканируйте WeChat QR-код для просмотра на телефоне +📱 Отсканируйте QR-код для просмотра видео на телефоне -微信扫码观看 +Сканировать QR-код для просмотра видео --- @@ -116,34 +121,34 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 ## Предварительные требования -Перед установкой и использованием программы подготовьте следующее: +Перед установкой и использованием Toonflow подготовьте следующее: -- ✅ Адрес API сервиса языковой AI-модели -- ✅ Адрес API Sora или Doubao для видео -- ✅ Адрес API сервиса модели Nano Banana Pro для генерации изображений +- ✅ URL API для LLM (большой языковой модели) +- ✅ URL API для генерации видео (Sora или Doubao) +- ✅ URL API для генерации изображений (Nano Banana Pro) -## Установка локально +## Локальная установка (на ПК) ### 1. Скачивание и установка -| Операционная система | GitHub | Atomgit | Скачать из Quark Net Disk | Описание | -| :------------------: | :---------------------------------------------------------- | :------------------------------------------------------------- | :-------------------------------------------------- | :------------------ | -| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Net Disk](https://pan.quark.cn/s/94ef07509df0) | Официальный установочный пакет | -| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Net Disk](https://pan.quark.cn/s/94ef07509df0) | Официальный установочный пакет | -| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Net Disk](https://pan.quark.cn/s/94ef07509df0) | Официальный установочный пакет | +| ОС | GitHub | Atomgit | Скачать (Quark Drive) | Описание | +| :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Официальный установщик | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Официальный установщик | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Официальный установщик | > [!CAUTION] -> Для macOS: откройте "Настройки → Конфиденциальность и безопасность" и настройте параметры безопасности, иначе может не открыться из-за проблемы с сертификатом. +> Пользователям macOS необходимо перейти в **Системные настройки → Конфиденциальность и безопасность** и разрешить запуск приложения. В противном случае программа может не открыться из-за проблем с сертификатом. > -> См. на Zhihu: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> Подробнее (на китайском): [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> Из-за ограничений Gitee OS и лимита по размеру файлов Release — отдельная ссылка для загрузки с Gitee временно недоступна. +> Из-за технических ограничений Gitee Release (размер файлов и окружение) ссылки для скачивания на Gitee временно недоступны. ### 2. Запуск сервиса -После установки запустите приложение для начала работы. +После завершения установки просто откройте программу Toonflow — сервис будет готов к работе. -> ⚠️ **Первый вход** +> ⚠️ **Данные для первого входа** > Логин: `admin` > Пароль: `admin123` @@ -151,56 +156,59 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 ### Предварительные требования -- Установлен [Docker](https://docs.docker.com/get-docker/) (версия 20.10+) +- Установлен [Docker](https://docs.docker.com/get-docker/) версии 20.10 или выше ### Способ 1: Онлайн-развертывание -В разработке — пока используйте локальную сборку. +В настоящее время в стадии разработки. +Рекомендуется использовать локальную сборку. ### Способ 2: Локальная сборка -Собирается локально из скачанного репозитория, подходит для разработчиков либо скачавших код через git: +Сборка проекта непосредственно из исходного кода на вашем компьютере. +Подходит для разработчиков и пользователей, которые уже клонировали репозиторий. Требуется установленная система контроля версий Git: ```shell -# Клонировать проект (если уже есть — пропустите) +# Сначала клонируйте проект (пропустите, если уже сделано) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# Запускаем сборку и запуск с помощью docker-compose +# Локальная сборка и запуск с помощью docker-compose yarn docker:local -# Или вручную +# Или ручная сборка docker build -t toonflow . -docker run -d -p <локальный_порт>:10588 -v <путь_к_данным>:/app/data toonflow +docker run -d -p <локальный_порт>:10588 -v <путь_к_локальным_данным>:/app/data toonflow -# Доступ по адресу: http://localhost:10588/web/index.html +# После этого интерфейс будет доступен по пути /web/index.html на указанном порту +# Пример: http://localhost:10588/web/index.html ``` -### Описание портов +### Описание портов сервиса -| Порт | Назначение | Мэппинг в контейнере | -| -------- | ------------- | ---------------------------- | -| `10588` | Web-интерфейс | `10588:10588` | +| Порт | Назначение | Маппинг | +| ------- | --------------------------- | ---------------- | +| `10588` | Основной порт сервиса (API) | `10588:10588` | -**Переменные окружения:** +**Переменные окружения (Environment Variables):** -| Переменная | Описание | -| ------------ | --------------------------------------- | -| `NODE_ENV` | Среда запуска, `prod` — продуктивная | -| `PORT` | Порт службы (по умолчанию 10588) | -| `OSSURL` | Доступ к хранилищу файлов, для статики | +| Переменная | Описание | +| ---------- | ----------------------------------------------------- | +| `NODE_ENV` | Среда выполнения (`prod` = Production) | +| `PORT` | Порт сервиса (по умолчанию 10588) | +| `OSSURL` | Адрес Object Storage для хранения и отдачи статических файлов | --- -## Развёртывание в облаке +## Облачное развертывание / Установка на сервер -### 1. Требования к серверу +### I. Требования к серверу -- **ОС**: Ubuntu 20.04+ / CentOS 7+ -- **Node.js**: 24.x (рекомендуется; минимум 23.11.1+) -- **ОЗУ**: от 2 ГБ +- **Операционная система**: Ubuntu 20.04+ / CentOS 7+ +- **Node.js**: 24.x (рекомендуется, минимум 23.11.1+) +- **ОЗУ**: 2 ГБ и более -### 2. Развёртывание на сервере +### II. Развертывание #### 1. Установка окружения @@ -213,9 +221,9 @@ nvm install 24 npm install -g yarn pm2 ``` -#### 2. Развёртывание проекта +#### 2. Загрузка и сборка проекта -**Клонировать из GitHub:** +**Клонирование с GitHub:** ```bash cd /opt @@ -225,7 +233,7 @@ yarn install yarn build ``` -**Клонировать из Gitee (для пользователей из Китая):** +**Клонирование с Gitee (рекомендуется для Китая):** ```bash cd /opt @@ -253,13 +261,13 @@ yarn build } ``` -**Описание переменных:** +**Переменные окружения (Environment Variables):** -| Переменная | Описание | -| ------------ | --------------------------------| -| `NODE_ENV` | Среда запуска, `prod` — продакшн | -| `PORT` | Слушаемый порт | -| `OSSURL` | Адрес доступа к статике | +| Переменная | Описание | +| ---------- | ----------------------------------------------------- | +| `NODE_ENV` | Среда выполнения (`prod` = Production) | +| `PORT` | Порт сервиса (по умолчанию 10588) | +| `OSSURL` | Адрес Object Storage для хранения и отдачи статических файлов | --- @@ -276,57 +284,58 @@ pm2 save ```bash pm2 list # Список процессов pm2 logs toonflow-app # Просмотр логов -pm2 restart all # Перезапуск сервиса -pm2 monit # Мониторинг +pm2 restart all # Перезапуск сервисов +pm2 monit # Панель мониторинга ``` -> ⚠️ **Первый вход** +> ⚠️ **Данные для первого входа** > Логин: `admin` > Пароль: `admin123` -#### 6. Развёртывание фронта +#### 6. Развертывание Frontend -Если нужна кастомизация интерфейса или отдельное развертывание фронта — используйте репозиторий фронтенда: +Если вам нужно отдельно развернуть или кастомизировать фронтенд, перейдите в репозиторий Toonflow-web: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **Примечание:** В этот репозиторий уже встроен скомпилированный фронт. Обычным пользователям отдельная установка канала не требуется. Фронт-репозиторий — только для тех, кто хочет разрабатывать/модифицировать UI. +> 💡 **Примечание**: Этот репозиторий уже содержит скомпилированные файлы Frontend. Обычным пользователям не требуется отдельно устанавливать фронтенд. Репозиторий Toonflow-web предназначен только для разработчиков, которые хотят внести изменения или доработать интерфейс. --- -# 🔧 Руководство по процессу разработки +# 🔧 Руководство разработчика > [!CAUTION] -> 🚧 **Правила по PR** 🚧 +> 🚧 **Правила отправки Pull Request** 🚧 > -> ⛔ В `master` запрещены любые PR | ✅ Создавайте PR только в ветку `develop` +> ⛔ **Ветка `master` не принимает PR** | ✅ **Отправляйте все PR в ветку `develop`** > -> Разработчиков приглашаем к со-разработке Toonflow! Для участия пишите главному админу ACT в группу. +> Приглашаем всех желающих разработчиков присоединиться к развитию Toonflow. +> Если вы хотите участвовать, свяжитесь с куратором проекта ACT в нашей группе сообщества. -## 🛠️ Технологический стек +## 🛠️ Стек технологий -| Категория | Технологии | -| ------------ | ------------------------------------------------------------------------------------------------------------------- | -| Рантайм | Node.js 23.11.1+ | -| Язык | TypeScript 5.x | -| Бэкенд | Express 5 | -| БД | SQLite (better-sqlite3 / knex) | -| AI-интеграции| Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhihu / MiniMax / Tongyi Qianwen / xAI) | -| Локальный AI | @huggingface/transformers (ONNX) | -| RTC | Socket.IO | -| Десктоп-клиент| Electron 40 | -| Графика | Sharp | -| Контейнеризация| Docker | +| Категория | Технология | +|------------------------|-----------------------------------------------------------------------------------------| +| Runtime | Node.js 23.11.1+ | +| Язык | TypeScript 5.x | +| Backend-фреймворк | Express 5 | +| База данных | SQLite (better-sqlite3 / knex) | +| Интеграция ИИ | Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI) | +| Локальный инференс | @huggingface/transformers (ONNX) | +| Real-time связь | Socket.IO | +| Desktop-клиент | Electron 40 | +| Обработка изображений | Sharp | +| Контейнеризация | Docker | ## Подготовка среды разработки -- **Node.js**: не ниже 23.11.1 -- **Yarn**: рекомендуется менеджер пакетов +- **Node.js**: версия 23.11.1 и выше +- **Yarn**: рекомендуется использовать в качестве пакетного менеджера -## Быстрый старт проекта +## Быстрый запуск проекта -1. **Клонируйте проект** +1. **Клонирование проекта** **С GitHub:** @@ -342,9 +351,9 @@ pm2 monit # Мониторинг cd Toonflow-app ``` -2. **Установите зависимости** +2. **Установка зависимостей** - В корне проекта выполните: + Выполните следующую команду в корневой папке проекта: ```bash yarn install @@ -352,203 +361,209 @@ pm2 monit # Мониторинг 3. **Запуск среды разработки** - Проект состоит из backend API и frontend. Возможные варианты запуска: + Проект состоит из **Backend API** и **Frontend страниц**. Выберите нужный способ запуска: - - **1: Только backend** + - **Способ 1: Запуск только Backend** ```bash yarn dev ``` - > ⚠️ Запускает только backend API (порт 10588); без интерфейса. Для доступа к UI — используйте отдельный frontend проект или запускайте через GUI-модули ниже. + > ⚠️ Эта команда запускает **только Backend API** (порт 10588) **без интерфейса Frontend**. + > При переходе по адресу `http://localhost:10588` вы сможете только обращаться к API. Полноценный графический интерфейс отображаться не будет. + > Чтобы работать с UI, запустите Frontend отдельно или используйте режим GUI (см. ниже). - - **2: Electron-desktop-клиент** + - **Способ 2: Запуск клиента Electron (GUI)** ```bash yarn dev:gui ``` - > Открывает backend и Electron GUI-окно — всё встроено, без доп. настроек. Рекомендуется для полноценного использования. + > Эта команда одновременно запускает Backend и десктопное приложение Electron со встроенным Frontend. + > Программа готова к работе сразу после запуска, без дополнительных настроек. + > Идеально подходит для разработчиков, которые хотят быстро протестировать весь функционал приложения. - - **3: Режим продакшн** + - **Способ 3: Запуск в режиме Production** ```bash yarn start ``` - > Запуск производственной сборки (предварительно `yarn build` обязателен). + > Запуск скомпилированного сервиса в режиме Production (сначала необходимо выполнить `yarn build`). -4. **Сборка проекта** +4. **Сборка проекта (Build & Package)** - - Компиляция .ts файлов: + - Компиляция и генерация TypeScript: ```bash yarn build ``` - - Сборка exe для Windows: + - Сборка исполняемого файла для Windows: ```bash yarn dist:win ``` - - Сборка для Mac: + - Сборка исполняемого файла для Mac: ```bash yarn dist:mac ``` - - Сборка для Linux: + - Сборка исполняемого файла для Linux: ```bash yarn dist:linux ``` -5. **Lint и проверка кода** +5. **Проверка качества кода (Linting)** - - Проверка кода на ошибки и стиль: + - Запуск глобальной проверки синтаксиса: ```bash yarn lint ``` -6. **AI Debug-панель (по желанию)** +6. **Панель отладки AI (Опционально)** - Запуск GUI для отладки AI SDK: + Запуск визуального инструмента отладки AI SDK: ```bash yarn debug:ai ``` -## Фронтенд разработка +## Разработка Frontend -Для редактирования интерфейса используйте фронт-репозиторий: +Если вам нужно внести изменения в пользовательский интерфейс, перейдите в репозиторий фронтенда: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -После сборки фронта (`dist/`) скопируйте его содержимое в `data/web/` основного проекта. +После сборки (build) фронтенда скопируйте всю папку `dist` в директорию `data/web` этого проекта для интеграции. ## Структура проекта ``` -📂 build/ # Скомпилированные файлы -📂 data/ # Данные во время работы -│ ├─ 📂 models/ # Локальные AI-модели (ONNX) -│ ├─ 📂 oss/ # Объектное хранилище (ассеты/персонажи/сцены) -│ ├─ 📂 serve/ # Вход в проде -│ ├─ 📂 skills/ # Prompt-словари умений Agent -│ └─ 📂 web/ # Скомпилированный фронтенд (встроен) -📂 docs/ # Документация -📂 env/ # Переменные окружения -📂 scripts/ # Скрипты и утилиты +📂 build/ # Артефакты сборки +📂 data/ # Данные времени выполнения (Runtime) +│ ├─ 📂 models/ # Локальные модели (ONNX) +│ ├─ 📂 oss/ # Object Storage (изображения, персонажи, сцены) +│ ├─ 📂 serve/ # Точка входа в Production-режим +│ ├─ 📂 skills/ # Промпты навыков Agent +│ └─ 📂 web/ # Скомпилированный Frontend (встроен в проект) +📂 docs/ # Документация и ресурсы +📂 env/ # Конфигурации окружения +📂 scripts/ # Скрипты сборки и вспомогательные скрипты 📂 src/ -├─ 📂 agents/ # AI agent-модули -│ ├─ 📂 productionAgent/ # Агент генерации -│ └─ 📂 scriptAgent/ # Агент сценария -├─ 📂 lib/ # Общие библиотеки -├─ 📂 middleware/ # Мидлвари -├─ 📂 routes/ # Роутинг модули -│ ├─ 📂 agents/ # Память агента -│ ├─ 📂 artStyle/ # Управление стилями -│ ├─ 📂 assets/ # Ассеты -│ ├─ 📂 assetsGenerate/ # Генерация ассетов -│ ├─ 📂 cornerScape/ # Раскадровка -│ ├─ 📂 general/ # Общие эндпоинты -│ ├─ 📂 login/ # Авторизация -│ ├─ 📂 migrate/ # Миграции -│ ├─ 📂 modelSelect/ # Выбор модели -│ ├─ 📂 novel/ # Управление романами -│ ├─ 📂 other/ # Другое -│ ├─ 📂 production/ # Управление производством -│ ├─ 📂 project/ # Управление проектом -│ ├─ 📂 script/ # Генерация сценария -│ ├─ 📂 scriptAgent/ # Эндпоинты агента сценария -│ ├─ 📂 setting/ # Настройки системы -│ ├─ 📂 task/ # Задачи -│ └─ 📂 test/ # Тестовые эндпоинты -├─ 📂 socket/ # RealTime WebSocket -├─ 📂 types/ # TypeScript типы -├─ 📂 utils/ # Утилиты -├─ 📄 app.ts # Точка входа -├─ 📄 core.ts # Инициализация ядра -├─ 📄 env.ts # Работа с окружением -├─ 📄 err.ts # Обработка ошибок -├─ 📄 logger.ts # Модуль логгирования -├─ 📄 router.ts # Регистрация роутов -└─ 📄 utils.ts # Вспомогательные функции -📄 Dockerfile # Dockerfile -📄 electron-builder.yml # Конфиг Electron Builder +├─ 📂 agents/ # Модули AI Agent +│ ├─ 📂 productionAgent/ # Production Agent (агент производства) +│ └─ 📂 scriptAgent/ # Script Agent (агент сценариев) +├─ 📂 lib/ # Общие библиотеки (инициализация БД, форматы ответов) +├─ 📂 middleware/ # Middleware +├─ 📂 routes/ # Модули маршрутизации +│ ├─ 📂 agents/ # Управление памятью Agent +│ ├─ 📂 artStyle/ # Управление художественными стилями +│ ├─ 📂 assets/ # Управление ассетами +│ ├─ 📂 assetsGenerate/ # Генерация ассетов +│ ├─ 📂 cornerScape/ # Управление раскадровкой (Storyboard) +│ ├─ 📂 general/ # Общие API +│ ├─ 📂 login/ # Аутентификация +│ ├─ 📂 migrate/ # Миграция данных +│ ├─ 📂 modelSelect/ # Выбор моделей +│ ├─ 📂 novel/ # Управление новеллами +│ ├─ 📂 other/ # Прочие функции +│ ├─ 📂 production/ # Управление производством и монтажом +│ ├─ 📂 project/ # Управление проектами +│ ├─ 📂 script/ # Генерация сценариев +│ ├─ 📂 scriptAgent/ # Интерфейс Script Agent +│ ├─ 📂 setting/ # Системные настройки +│ ├─ 📂 task/ # Управление задачами +│ └─ 📂 test/ # Тестовые API +├─ 📂 socket/ # Real-time коммуникация через WebSocket +├─ 📂 types/ # Типы TypeScript +├─ 📂 utils/ # Вспомогательные утилиты +├─ 📄 app.ts # Точка входа приложения (App Entry) +├─ 📄 core.ts # Инициализация ядра системы +├─ 📄 env.ts # Обработка переменных окружения +├─ 📄 err.ts # Обработка ошибок +├─ 📄 logger.ts # Модуль логирования +├─ 📄 router.ts # Регистрация маршрутов +└─ 📄 utils.ts # Общие утилиты +📄 Dockerfile # Файл для сборки Docker +📄 electron-builder.yml # Конфигурация сборки Electron 📄 skillList.json # Список навыков 📄 LICENSE # Лицензия (Apache-2.0) -📄 NOTICES.txt # Информация о сторонних зависимостях -📄 package.json # Конфиг пакетов -📄 tsconfig.json # Конфиг TypeScript +📄 NOTICES.txt # Уведомления о сторонних зависимостях +📄 package.json # Конфигурация проекта +📄 tsconfig.json # Конфигурация TypeScript ``` --- # 🔗 Связанные репозитории -| Репозиторий | Описание | GitHub | Gitee | -| ---------------- | ------------------------------------- | -------------------------------------------------- | ------------------------------------------------ | -| **Toonflow-app** | Полный клиент (этот, для обычных пользователей) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | Исходный код фронта (для фронтэндеров) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| Репозиторий | Описание | GitHub | Gitee | +|------------------|---------------------------------------------------------------|----------------------------------------------------|--------------------------------------------------| +| **Toonflow-app** | Полноценный клиент (этот репозиторий, рекомендуется для большинства пользователей) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | Исходный код Frontend (для frontend-разработчиков) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **Подсказка:** если вы просто хотите пользоваться Toonflow — скачайте этот клиент. Отдельный frontend нужен только разработчикам UI. +> 💡 **Совет**: Если вы просто хотите использовать Toonflow, достаточно скачать клиент из этого репозитория. Репозиторий Toonflow-web предназначен только для разработчиков, желающих внести изменения или доработать интерфейс. --- -# 👨‍👩‍👧‍👦 WeChat-группы +# 👨‍👩‍👧‍👦 Discord сообщество -Ассистент по добавлению в группу: +Нажмите на иконку ниже, чтобы присоединиться к Discord: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +Или перейдите по прямой ссылке: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- -# 💌 Обратная связь +# 💌 Свяжитесь с нами -📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow咨询) +📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Запрос%20Toonflow) --- # 📜 Лицензия -Toonflow распространяется по лицензии Apache-2.0 с дополнительным коммерческим соглашением. +Toonflow распространяется как open-source проект под лицензией Apache-2.0 с дополнительным коммерческим соглашением. -Подробности: https://www.apache.org/licenses/LICENSE-2.0 +Подробнее о лицензии Apache-2.0: https://www.apache.org/licenses/LICENSE-2.0 -## Дополнительное соглашение +## Дополнительное коммерческое соглашение -- Если вы распространяете данное ПО как продукт **2 и более независимым третьим сторонам**, необходимо получить **письменную коммерческую лицензию** от HBAI-Ltd. -- **≤ 5 юридических лиц**, совместно использующих ПО для внутренних нужд без предоставления услуг третьим сторонам — это **внутреннее использование, лицензия не требуется**. -- Запрещено удалять или изменять товарные знаки, логотипы или уведомления об авторских правах Toonflow. +- Если данное ПО распространяется в виде продукта для **2 и более независимых третьих лиц**, необходимо получить **письменную коммерческую лицензию** от HBAI-Ltd. +- Если ПО используется совместно **не более чем 5 юридическими лицами** только для внутренних нужд (без оказания услуг внешним пользователям), это считается внутренним использованием и **лицензия не требуется**. +- Запрещается удалять или изменять логотипы и информацию об авторских правах в Toonflow. -## Всегда бесплатно — без лицензии +## Сценарии бессрочного бесплатного использования -- ✅ Создание контента в Toonflow и получение дохода на платформах -- ✅ Доработка для внутреннего использования команды -- ✅ ≤ 5 юрлиц — совместная внутренняя эксплуатация -- ✅ Личное обучение, исследования, некоммерческое использование +- ✅ Создание контента с помощью Toonflow и монетизация через видеоплатформы +- ✅ Вторичная разработка (secondary development) для внутреннего использования команды +- ✅ Совместное использование группой из ≤ 5 юридических лиц только внутри организации +- ✅ Личное обучение, научные исследования и любые некоммерческие цели -## Цены на коммерческую лицензию +## Тарифы коммерческой лицензии -| Этап | Годовой оборот | Годовая плата | -|------|---------|------| -| 🌱 Старт | < ¥100 тыс. | **Бесплатно** | -| 🚀 Стартап | ¥100–500 тыс. | ¥5 000/год | -| 📈 Рост | ¥500 тыс.–1,5 млн | ¥20 000/год | -| 🏢 Масштаб | ¥1,5–5 млн | ¥80 000/год | -| 🌐 Корпоративный | > ¥5 млн | По договорённости | +| Стадия | Годовая выручка | Годовой взнос | +|---------------------|-----------------------------|-----------------------| +| 🌱 Старт / Поддержка | < ¥100 000 RMB | **Бесплатно** | +| 🚀 Стартап | ¥100 000 – 500 000 RMB | ¥5,000 / год | +| 📈 Рост | ¥500 000 – 1 500 000 RMB | ¥20,000 / год | +| 🏢 Масштабирование | ¥1 500 000 – 5 000 000 RMB | ¥80,000 / год | +| 🌐 Корпоративный | > ¥5 000 000 RMB | Договорная цена | -> **Условие отсутствия обратной силы**: Пользователи, использовавшие Toonflow по AGPL-3.0 до релиза v1.0.8, продолжают работу по AGPL-3.0 и не затрагиваются данным изменением. +> **Оговорка о необратной силе**: Пользователи, которые использовали Toonflow под лицензией AGPL-3.0 до выхода версии v1.0.8, продолжают работать по правилам AGPL-3.0. Изменения данного соглашения на них не распространяются. -Полный текст соглашения см. в файле [LICENSE](../LICENSE). +Полный текст соглашения доступен в файле [LICENSE](./LICENSE). --- -# ⭐️ История звёзд +# ⭐️ История звезд (Star History) [![Star History Chart](https://api.star-history.com/svg?repos=HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left)](https://www.star-history.com/#HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left) @@ -556,32 +571,32 @@ Toonflow распространяется по лицензии Apache-2.0 с д # 🙏 Благодарности -Спасибо нижеперечисленным open-source проектам за мощную поддержку Toonflow: +Выражаем благодарность следующим open-source проектам за мощную поддержку Toonflow: -- [Express](https://expressjs.com/) — быстрый, открытый и лёгкий фреймворк для Node.js -- [AI SDK](https://ai-sdk.dev/) — инструменты AI для TypeScript -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) — высокопроизводительная обвязка SQLite3 -- [Sharp](https://sharp.pixelplumbing.com/) — быстрая библиотека для работы с изображениями на Node.js -- [Axios](https://axios-http.com/) — HTTP-клиент на промисах -- [Zod](https://zod.dev/) — TS-first валидация схем -- [Socket.IO](https://socket.io/) — обмен событиями в реальном времени -- [Electron](https://www.electronjs.org/) — кроссплатформенный desktop-фреймворк -- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) — фреймворк для локального ML +- [Express](https://expressjs.com/) - Быстрый, гибкий и минималистичный веб-фреймворк для Node.js +- [AI SDK](https://ai-sdk.dev/) - AI инструментарий для TypeScript +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - Библиотека с высокой производительностью для SQLite3 +- [Sharp](https://sharp.pixelplumbing.com/) - Высокопроизводительная библиотека Node.js для обработки изображений +- [Axios](https://axios-http.com/) - Promise-based HTTP клиент +- [Zod](https://zod.dev/) - Библиотека валидации схем, ориентированная на TypeScript +- [Socket.IO](https://socket.io/) - Движок для двунаправленной real-time связи на основе событий +- [Electron](https://www.electronjs.org/) - Фреймворк для кроссплатформенных десктоп-приложений +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - Библиотека для локального ML инференса -Спасибо за поддержку проекту Toonflow от следующих организаций: +Спасибо следующим организациям/лицам за поддержку Toonflow:
- 算能云 Logo + Sophnet Logo - Sophnet Cloud — спонсор вычислительных ресурсов - [сайт] + Sophnet (算能云) Спонсор вычислительных мощностей + [Сайт]
-Полный список сторонних зависимостей — в файле `NOTICES.txt` +Полный список зависимостей третьих сторон находится в файле `NOTICES.txt`. -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### copyright © Huaibei AIA Network Technology Co., Ltd. \ No newline at end of file diff --git a/docs/README.th.md b/docs/README.th.md index 9b2c0a4..d14814a 100644 --- a/docs/README.th.md +++ b/docs/README.th.md @@ -1,4 +1,4 @@ -

+

GitHub @@ -8,13 +8,12 @@  |  - Atomgit - Atomgit + Atomgit

- 简体中文 | + 简体中文 | 繁體中文 | English | ไทย | @@ -31,11 +30,11 @@

- โรงงานละครสั้น AI + โรงงานผลิตภาพยนตร์สั้น AI
- แตะเพียงครั้งเดียว นิยายกลายเป็นตอนทันที! + เพียงคลิกไม่กี่ครั้ง นิยายก็กลายเป็นภาพยนตร์ได้ในพริบตา!
- สคริปต์ AI × ภาพ AI × สร้างเร็วสายฟ้าแลบ 🔥 + บทภาพยนตร์ AI × ภาพ AI × สร้างวิดีโอความเร็วสูง 🔥

@@ -50,14 +49,14 @@

- > 🚀 **ผลิตละครสั้นครบวงจร:** จากข้อความสู่นักแสดง จากสตอรี่บอร์ดสู่วิดีโอ AI แบบเต็มกระบวนการ ทุกขั้นตอน ไม่มีอุปสรรค ประสิทธิภาพสร้าง 10 เท่าขึ้นไป! +> 🚀 **สตูดิโอภาพยนตร์สั้น All-in-One**: จากข้อความสู่ตัวละคร จากสตอรี่บอร์ดสู่ภาพยนตร์ ใช้ AI อัตโนมัติทั้งกระบวนการ ไม่ต้องมีพื้นฐานใด ๆ เพิ่มประสิทธิภาพการสร้างสรรค์มากกว่า 10 เท่า! --- -# � รองรับหลายภาษา +# 🌐 การรองรับหลายภาษา -Toonflow รองรับภาษาในอินเทอร์เฟซดังนี้: +Toonflow รองรับอินเทอร์เฟซภาษาดังต่อไปนี้: | ภาษา | Language | |------|----------| @@ -69,139 +68,144 @@ Toonflow รองรับภาษาในอินเทอร์เฟซ | 日本語 | Japanese | | Русский | Russian | +> 💡 กำลังเพิ่มการรองรับภาษาอื่นๆ ยินดีต้อนรับผู้ที่ต้องการช่วยแปล! + --- # 🌟 ฟีเจอร์หลัก -Toonflow คือเครื่องมือคอมิกละครสั้น AI ที่ใช้เทคโนโลยี AI แปลงนิยายเป็นสคริปต์โดยอัตโนมัติ และใช้ภาพและวิดีโอ AI เพื่อสร้างละครสั้นได้อย่างมีประสิทธิภาพ ด้วย Toonflow คุณสามารถสร้างผลงานจากข้อความสู่ภาพนิ่งจนถึงวิดีโอ ได้อย่างชาญฉลาดและสะดวก +Toonflow เป็นเครื่องมือ AI สำหรับสร้างภาพยนตร์สั้นและการ์ตูน ที่สามารถแปลงนิยายเป็นภาพยนตร์ได้โดยอัตโนมัติ ด้วยการผสานเทคโนโลยี AI ในการสร้างตัวละคร บทภาพยนตร์ ภาพประกอบ และวิดีโอ ทำให้กระบวนการผลิตภาพยนตร์สั้นมีประสิทธิภาพสูง ด้วย Toonflow คุณสามารถจัดการทุกขั้นตอนตั้งแต่ข้อความต้นฉบับจนถึงวิดีโอสำเร็จรูปได้อย่างง่ายดาย ทำให้การผลิตภาพยนตร์สั้นฉลาด สะดวก และรวดเร็วยิ่งขึ้น - ✅ **สร้างตัวละครอัตโนมัติ** - วิเคราะห์เนื้อหานิยายต้นฉบับ ระบุและสร้างข้อมูลตัวละครอย่างชาญฉลาด ทั้งรูปร่าง นิสัย ตัวตน เป็นต้น สร้างพื้นฐานที่แข็งแรงสำหรับสคริปต์และภาพในขั้นถัดไป -- ✅ **สร้างสคริปต์อัตโนมัติ** - จากเหตุการณ์และบทที่เลือก ระบบจะสร้างสคริปต์เชิงโครงสร้างอัตโนมัติ ครอบคลุมบทสนทนา คำบรรยายฉาก และทิศทางเนื้อเรื่อง เปลี่ยนข้อความวรรณกรรมเป็นสคริปต์ละครได้อย่างรวดเร็ว -- ✅ **ผลิตสตอรี่บอร์ดอัตโนมัติ** - ตามสคริปต์ สร้างพรอมต์สตอรี่บอร์ดและงานออกแบบภาพอัตโนมัติ รายละเอียดองค์ประกอบหน้า/กลาง/หลัง การเคลื่อนไหวตัวละคร อุปกรณ์ประกอบฉาก และการจัดวางฉาก พลิกสคริปต์เป็นสตอรี่บอร์ดวางแผนผลิตวิดีโอได้ครบถ้วน -- ✅ **ประกอบวิดีโอด้วย AI** - ผนวกเทคโนโลยีภาพและวิดีโอ AI สร้างคลิปวิดีโอด้วย AI รวมฟีเจอร์แก้ไขออนไลน์ รองรับการตั้งค่าผลลัพธ์ที่ปรับแต่งได้ ทำให้การสร้างภาพยนตร์/ละครมีประสิทธิภาพและทำงานร่วมทีมได้ + วิเคราะห์ข้อความจากนิยายต้นฉบับโดยอัตโนมัติ ระบุและสร้างโปรไฟล์ตัวละครอย่างชาญฉลาด รวมถึงรูปร่างหน้าตา นิสัย ตัวตน และรายละเอียดอื่น ๆ เพื่อสร้างพื้นฐานที่แข็งแรงสำหรับบทภาพยนตร์และภาพในขั้นตอนต่อไป + +- ✅ **สร้างบทภาพยนตร์** + จากเหตุการณ์และบท (Chapter) ที่เลือก ระบบจะสร้างบทภาพยนตร์ที่มีโครงสร้างชัดเจน ประกอบด้วยบทสนทนา คำอธิบายฉาก และทิศทางเรื่องราว ช่วยแปลงงานวรรณกรรมเป็นบทภาพยนตร์ได้อย่างมีประสิทธิภาพ + +- ✅ **สร้างสตอรี่บอร์ด (Storyboard)** + จากบทภาพยนตร์ ระบบจะสร้างพรอมต์และออกแบบเฟรมภาพสตอรี่บอร์ดโดยอัตโนมัติ โดยระบุรายละเอียดฉากหน้า ฉากกลาง ฉากหลัง การเคลื่อนไหวของตัวละคร พร็อพ และการจัดวางฉาก เพื่อสร้างแผนการผลิตวิดีโอที่สมบูรณ์ + +- ✅ **สังเคราะห์และตัดต่อวิดีโอ** + ใช้เทคโนโลยี AI สร้างคลิปวิดีโอคุณภาพสูง รองรับระบบตัดต่อออนไลน์ที่สามารถปรับแต่งได้ตามต้องการ ช่วยให้กระบวนการสร้างภาพยนตร์สั้นเป็นไปอย่างราบรื่นและรวดเร็ว --- -# 📦 ตัวอย่างการใช้งาน +# 📦 รูปแบบการใช้งาน (Use Cases) -- สร้างวิดีโอละครสั้น -- ทดลองแปลงนิยายสู่ภาพยนตร์/ละคร -- เครื่องมือดัดแปลงวรรณกรรมด้วย AI -- การพัฒนาสคริปต์และต้นแบบผลิตงานเร็ว -- สร้างวัตถุดิบประกอบวิดีโอ +- สร้างคอนเทนต์วิดีโอสั้น +- ทดลองแปลงนิยายเป็นภาพยนตร์สั้น +- เครื่องมือ AI ในการดัดแปลงวรรณกรรมเป็นภาพยนตร์ +- พัฒนาบทภาพยนตร์และสร้างต้นแบบ (Rapid Prototyping) อย่างรวดเร็ว +- สร้างฟุตเทจและวัสดุวิดีโอคุณภาพสูง ---- +# 🔰 คู่มือการใช้งาน -# 🔰 คู่มือผู้ใช้ +## 📺 วิดีโอสอนการใช้งาน -## 📺 วิดีโอสอนใช้งาน +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 8 นาที](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow 8-Minute Quick Start AI Video](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) - -**วิดีโอแนะนำ Toonflow ฉบับเร่งด่วน 8 นาที** +**เริ่มต้นสร้างวิดีโอ AI กับ Toonflow ใน 8 นาที** 👉 [คลิกเพื่อรับชม](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) -📱 สแกนด้วย WeChat บนมือถือเพื่อชม +📱 **สแกน QR Code เพื่อรับชมวิดีโอบนมือถือ** -Scan WeChat to Watch +สแกน QR Code เพื่อรับชมวิดีโอ --- # 🚀 การติดตั้ง -## สิ่งที่ต้องเตรียมก่อน +## ข้อกำหนดเบื้องต้น -ก่อนติดตั้งและใช้งานซอฟต์แวร์นี้ กรุณาเตรียมสิ่งเหล่านี้: +ก่อนติดตั้งและใช้งาน Toonflow โปรดเตรียมข้อมูลต่อไปนี้ให้พร้อม: -- ✅ ที่อยู่ API บริการ AI แบบ Large Language Model -- ✅ ที่อยู่ API บริการวิดีโอ Sora หรือ Doubao -- ✅ ที่อยู่ API โมเดลสร้างภาพ Nano Banana Pro +- ✅ ที่อยู่ API ของโมเดลภาษาขนาดใหญ่ (LLM) +- ✅ ที่อยู่ API ของบริการสร้างวิดีโอ (Sora หรือ Doubao) +- ✅ ที่อยู่ API ของโมเดลสร้างภาพ Nano Banana Pro -## ติดตั้งในเครื่อง (Local Installation) +## การติดตั้งบนเครื่อง (Local) ### 1. ดาวน์โหลดและติดตั้ง -| ระบบปฏิบัติการ | GitHub | Atomgit | ดาวน์โหลดผ่าน Quark Netdisk | หมายเหตุ | -| :------------: | :------------------------------------------------------- | :---------------------------------------------------- | :--------------------------------------------------- | :---------------------- | -| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Netdisk](https://pan.quark.cn/s/94ef07509df0) | แพ็กเกจติดตั้งอย่างเป็นทางการ | -| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Netdisk](https://pan.quark.cn/s/94ef07509df0) | แพ็กเกจติดตั้งอย่างเป็นทางการ | -| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Netdisk](https://pan.quark.cn/s/94ef07509df0) | แพ็กเกจติดตั้งอย่างเป็นทางการ | +| ระบบปฏิบัติการ | GitHub | Atomgit | ดาวน์โหลดผ่าน Quark Drive | คำอธิบาย | +| :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | ตัวติดตั้งอย่างเป็นทางการ | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | ตัวติดตั้งอย่างเป็นทางการ | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | ตัวติดตั้งอย่างเป็นทางการ | > [!CAUTION] -> บน MacOS ให้ไปที่ ตั้งค่า - ความเป็นส่วนตัวและความปลอดภัย ตั้งค่าความปลอดภัยก่อน มิฉะนั้นอาจไม่สามารถเปิดแอปได้เพราะปัญหาใบรับรอง +> สำหรับระบบ macOS โปรดไปที่ **การตั้งค่า > ความเป็นส่วนตัวและความปลอดภัย** เพื่ออนุญาตให้แอปพลิเคชันทำงาน มิฉะนั้นอาจเปิดโปรแกรมไม่ได้เนื่องจากปัญหาใบรับรองความปลอดภัย > -> ดูเอกสารฉบับภาษาจีน: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> อ้างอิงเอกสารจาก Zhihu: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> ด้วยข้อจำกัดของสภาพแวดล้อม Gitee OS และขนาดไฟล์ Release การดาวน์โหลดผ่าน Gitee Release ยังไม่เปิดให้บริการในขณะนี้ +> เนื่องจากข้อจำกัดเรื่องสภาพแวดล้อมระบบและขนาดไฟล์ของ Gitee Release ปัจจุบันจึงยังไม่มีลิงก์ดาวน์โหลดบน Gitee -### 2. เปิดใช้งานโปรแกรม +### 2. เริ่มการทำงาน -ติดตั้งเสร็จแล้วให้เปิดโปรแกรมเพื่อเริ่มใช้งาน +หลังจากติดตั้งเสร็จสิ้น เพียงเปิดโปรแกรม Toonflow ก็สามารถเริ่มใช้งานได้ทันที -> ⚠️ **ล็อกอินครั้งแรก** +> ⚠️ **เข้าสู่ระบบครั้งแรก** > ชื่อผู้ใช้: `admin` > รหัสผ่าน: `admin123` -## การใช้ Docker +## การใช้งานผ่าน Docker -### สิ่งที่ต้องเตรียม +### ข้อกำหนดเบื้องต้น -- ติดตั้ง [Docker](https://docs.docker.com/get-docker/) (เวอร์ชัน 20.10+) +- ติดตั้ง [Docker](https://docs.docker.com/get-docker/) เวอร์ชัน 20.10 ขึ้นไป เรียบร้อยแล้ว -### วิธีที่ 1: ติดตั้งออนไลน์ +### วิธีที่ 1: การติดตั้งออนไลน์ -กำลังพัฒนา; ขณะนี้ให้ใช้การ build ในเครื่อง +กำลังพัฒนา +ปัจจุบันแนะนำให้ใช้วิธี Build บนเครื่องก่อน -### วิธีที่ 2: สร้างเองในเครื่อง +### วิธีที่ 2: การ Build บนเครื่อง -สำหรับนักพัฒนา หรือผู้ที่ clone repo แล้ว ต้องติดตั้ง Git ที่เครื่อง +ใช้วิธี Build จากซอร์สโค้ดที่มีอยู่ในเครื่องโดยตรง +เหมาะสำหรับนักพัฒนาหรือผู้ใช้ที่โคลน Repository มาแล้ว (ต้องติดตั้ง Git บนเครื่องก่อน) ```shell -# clone โปรเจกต์ (ถ้าทำแล้วข้าม) +# โคลนโปรเจกต์ก่อน (ข้ามขั้นตอนนี้ถ้ามีอยู่แล้ว) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# สร้างและเริ่มผ่าน docker-compose +# ใช้ docker-compose ในการ Build และรันบนเครื่อง yarn docker:local -# หรือสร้างแบบ manual +# หรือทำการ Build แบบแมนนวล docker build -t toonflow . -docker run -d -p :10588 -v :/app/data toonflow +docker run -d -p <พอร์ตบนเครื่อง>:10588 -v <พาธข้อมูลบนเครื่อง>:/app/data toonflow -# ใช้งานที่ /web/index.html ในพอร์ตที่แม็ปไว้ เช่น -# http://localhost:10588/web/index.html +# จากนั้นสามารถเข้าถึงหน้าเว็บผ่านพอร์ตที่ระบุ ที่พาธ /web/index.html +# ตัวอย่าง: http://localhost:10588/web/index.html ``` -### รายละเอียดพอร์ตบริการ +### คำอธิบายพอร์ตบริการ -| พอร์ต | วัตถุประสงค์ | Mapping ในการติดตั้ง | -| -------- | ------------ | -------------------- | -| `10588` | ส่วนติดต่อแอป | `10588:10588` | +| พอร์ต | การใช้งาน | การจับคู่พอร์ต (Mapping) | +| ------- | ---------------------- | ------------------------ | +| `10588` | พอร์ตบริการหลัก (API) | `10588:10588` | -**รายละเอียดตัวแปรแวดล้อม:** +**คำอธิบายตัวแปรสภาพแวดล้อม (Environment Variables):** -| ตัวแปร | รายละเอียด | -| ------------- | ----------------------------------------- | -| `NODE_ENV` | สภาพแวดล้อม เลือก `prod` คือ production | -| `PORT` | พอร์ตการฟังบริการ (ค่าเริ่มต้น 10588) | -| `OSSURL` | ที่อยู่สำหรับเข้าถึงไฟล์ static | +| ตัวแปร | คำอธิบาย | +| ---------- | ----------------------------------------------------- | +| `NODE_ENV` | สภาพแวดล้อมการทำงาน (`prod` = Production) | +| `PORT` | พอร์ตสำหรับให้บริการ (ค่าเริ่มต้น 10588) | +| `OSSURL` | ที่อยู่ OSS สำหรับเก็บและโหลดไฟล์สาธารณะ (Static files) | --- -## ติดตั้งบน Cloud +## การติดตั้งบนคลาวด์ / เซิร์ฟเวอร์ -### 1. ข้อกำหนดเครื่องเซิร์ฟเวอร์ +### 1. ข้อกำหนดสภาพแวดล้อมเซิร์ฟเวอร์ -- **ระบบปฏิบัติการ:** Ubuntu 20.04+ / CentOS 7+ -- **Node.js:** 24.x (แนะนำ ขั้นต่ำ 23.11.1+) -- **RAM:** 2GB ขึ้นไป +- **ระบบปฏิบัติการ**: Ubuntu 20.04+ / CentOS 7+ +- **Node.js**: 24.x (แนะนำ, ขั้นต่ำ 23.11.1+) +- **RAM**: 2GB+ -### 2. วิธีติดตั้ง +### 2. การติดตั้งบนเซิร์ฟเวอร์ #### 1. ติดตั้งสภาพแวดล้อม @@ -214,9 +218,9 @@ nvm install 24 npm install -g yarn pm2 ``` -#### 2. ติดตั้งโปรเจกต์ +#### 2. ดึงโค้ดโปรเจกต์ -**Clone จาก GitHub:** +**โคลนจาก GitHub:** ```bash cd /opt @@ -226,7 +230,7 @@ yarn install yarn build ``` -**Clone จาก Gitee (แนะนำในจีนแผ่นดินใหญ่):** +**โคลนจาก Gitee (แนะนำสำหรับประเทศจีน):** ```bash cd /opt @@ -254,17 +258,17 @@ yarn build } ``` -**รายละเอียดตัวแปรแวดล้อม:** +**คำอธิบายตัวแปรสภาพแวดล้อม (Environment Variables):** -| ตัวแปร | รายละเอียด | -| ------------- | ---------------------------------------- | -| `NODE_ENV` | สภาพแวดล้อม เลือก `prod` คือ production | -| `PORT` | พอร์ตให้บริการ | -| `OSSURL` | ที่อยู่สำหรับเข้าถึงไฟล์ static | +| ตัวแปร | คำอธิบาย | +| ---------- | ----------------------------------------------------- | +| `NODE_ENV` | สภาพแวดล้อมการทำงาน (`prod` = Production) | +| `PORT` | พอร์ตสำหรับให้บริการ (ค่าเริ่มต้น 10588) | +| `OSSURL` | ที่อยู่ OSS สำหรับเก็บและโหลดไฟล์สาธารณะ (Static files) | --- -#### 4. เริ่มบริการ +#### 4. เริ่มการทำงาน ```bash pm2 start pm2.json @@ -275,281 +279,290 @@ pm2 save #### 5. คำสั่งที่ใช้บ่อย ```bash -pm2 list # ดูรายชื่อโปรเซส -pm2 logs toonflow-app # ดู Log -pm2 restart all # รีสตาร์ทบริการ -pm2 monit # ดูระบบแบบเรียลไทม์ +pm2 list # ดู Process ทั้งหมด +pm2 logs toonflow-app # ดู Logs +pm2 restart all # รีสตาร์ทเซอร์วิส +pm2 monit # เปิดหน้าต่าง Monitoring ``` -> ⚠️ **ล็อกอินครั้งแรก** +> ⚠️ **เข้าสู่ระบบครั้งแรก** > ชื่อผู้ใช้: `admin` > รหัสผ่าน: `admin123` -#### 6. ติดตั้งส่วนหน้าเว็บไซต์ +#### 6. การติดตั้งเว็บไซต์ฟรอนต์เอนด์ (Frontend) -ถ้าต้องการใช้ Frontend แยก หรือปรับแต่ UI ศึกษาที่ repo ส่วน frontend: +หากต้องการติดตั้งหรือปรับแต่งอินเทอร์เฟซฟรอนต์เอนด์แยกต่างหาก โปรดอ้างอิง Repository ฟรอนต์เอนด์ดังนี้: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **หมายเหตุ:** รีโปนี้ใส่ frontend ที่ compile แล้วมาด้วย ผู้ใช้ทั่วไปไม่จำเป็นต้องติดตั้ง frontend แยก Repo frontend ใช้สำหรับนักพัฒนาที่ต้องการพัฒนาต่อ +> 💡 **หมายเหตุ**: Repository นี้มาพร้อมไฟล์ฟรอนต์เอนด์ที่คอมไพล์เสร็จสมบูรณ์แล้ว +> ผู้ใช้ทั่วไปไม่จำเป็นต้องติดตั้งฟรอนต์เอนด์แยก Repository นี้มีไว้สำหรับนักพัฒนาที่ต้องการปรับแต่งหรือพัฒนาเพิ่มเติมเท่านั้น --- -# 🔧 คู่มือนักพัฒนา +# 🔧 คู่มือสำหรับนักพัฒนา (Development Workflow Guide) > [!CAUTION] -> 🚧 **แนวทางการส่ง PR** 🚧 +> 🚧 **ข้อบังคับในการส่ง Pull Request** 🚧 > -> ⛔ `master` ไม่รับ PR | ✅ ส่ง PR ที่ `develop` +> ⛔ **ไม่รับ PR ใน branch `master`**|✅ **โปรดส่ง PR ไปที่ branch `develop`** > -> เชิญนักพัฒนาร่วมพัฒนา Toonflow ติดต่อเจ้าของ ACT ในแชทกลุ่ม +> ยินดีต้อนรับนักพัฒนาทุกท่านที่สนใจร่วมพัฒนา Toonflow +> หากต้องการเข้าร่วม โปรดติดต่อผู้ดูแลโปรเจกต์ (ACT) ในกลุ่มพูดคุย -## 🛠️ Tech Stack +## 🛠️ เทคโนโลยีที่ใช้ (Tech Stack) -| หมวด | เทคโนโลยี | -| ------------ | ------------------------------------------------------------------------------------ | -| Runtime | Node.js 23.11.1+ | -| Language | TypeScript 5.x | -| Backend | Express 5 | -| Database | SQLite (better-sqlite3 / knex) | -| AI Integration | Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI) | -| Local Inference | @huggingface/transformers (ONNX) | -| Real-Time | Socket.IO | -| Desktop | Electron 40 | -| Image Proc. | Sharp | -| Container | Docker | +| ประเภท | เทคโนโลยี | +| ---------- | ----------------------------------------------------------------------------------------- | +| Runtime | Node.js 23.11.1+ | +| Language | TypeScript 5.x | +| Backend | Express 5 | +| Database | SQLite (better-sqlite3 / knex) | +| AI Integ. | Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI) | +| Local Inf. | @huggingface/transformers (ONNX) | +| Real-time | Socket.IO | +| Desktop | Electron 40 | +| Image Proc.| Sharp | +| Container | Docker | -## เตรียมสภาพแวดล้อม +## การเตรียมสภาพแวดล้อมการพัฒนา -- **Node.js:** ต้องใช้ 23.11.1 ขึ้นไปเท่านั้น -- **Yarn:** แนะนำให้ใช้เป็น package manager +- **Node.js**: ต้องใช้เวอร์ชัน 23.11.1 ขึ้นไป +- **Yarn**: แนะนำให้ใช้เป็น Package Manager -## เริ่มพัฒนาอย่างรวดเร็ว +## การเริ่มโปรเจกต์อย่างรวดเร็ว -1. **Clone โปรเจกต์** +1. **โคลนโปรเจกต์** - **GitHub:** + **โคลนจาก GitHub:** ```bash git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` - **Gitee (ในจีนแผ่นดินใหญ่แนะนำ):** + **โคลนจาก Gitee (แนะนำสำหรับประเทศจีน):** ```bash git clone https://gitee.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` -2. **ติดตั้ง dependencies** +2. **ติดตั้ง Dependencies** - รันที่ root directory: + ให้รันคำสั่งด้านล่างนี้ใน root ของโปรเจกต์เพื่อติดตั้ง Dependencies: ```bash yarn install ``` -3. **เริ่มสภาพแวดล้อมพัฒนา** +3. **เริ่มใช้งานในโหมด Development** - โปรเจกต์นี้มี **backend API service** และ **frontend interface** เลือกวิธีเริ่มต้นได้: + โปรเจกต์นี้ประกอบด้วย **บริการ Backend API** และ **หน้า Frontend** คุณสามารถเลือกวิธีการเปิดใช้งานได้ตามต้องการ: - - **ตัวเลือก 1: เริ่ม backend อย่างเดียว** + - **วิธีที่ 1: รันเฉพาะ Backend อย่างเดียว** ```bash yarn dev ``` - > ⚠️ คำสั่งนี้เปิดเฉพาะ backend API (พอร์ต 10588) **ไม่มี web UI** การเข้า http://localhost:10588 คือเรียก API เท่านั้น การใช้ web UI เต็มรูปแบบใช้วิธีด้านล่าง + > ⚠️ คำสั่งนี้จะรัน **เฉพาะ Backend API** (พอร์ต 10588) **โดยไม่มีหน้า Frontend** + > เมื่อเข้าถึง `http://localhost:10588` จะสามารถเรียกใช้งาน API ได้เท่านั้น + > หากต้องการใช้งานพร้อมกับหน้าเว็บ Frontend โปรดรัน Frontend แยกต่างหาก หรือใช้โหมด GUI ด้านล่างนี้ - - **ตัวเลือก 2: เริ่ม Electron desktop client** + - **วิธีที่ 2: รัน Electron Desktop Client** ```bash yarn dev:gui ``` - > คำสั่งนี้เปิดทั้ง backend และ Electron window มี web UI built-in พร้อมใช้งาน + > คำสั่งนี้จะรันทั้ง Backend และหน้าต่าง Electron Desktop พร้อมกัน โดยมี Frontend ฝังมาในตัว + > โปรแกรมพร้อมใช้งานทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม + > เหมาะสำหรับนักพัฒนาที่ต้องการทดสอบฟีเจอร์ทั้งหมดของแอปพลิเคชัน - - **ตัวเลือก 3: โหมด production** + - **วิธีที่ 3: รันโหมด Production** ```bash yarn start ``` - > รันทั้ง backend แบบโปรดักชั่น (ต้อง `yarn build` ก่อน) + > รันโปรแกรมในโหมด Production ทันทีหลังจากที่คอมไพล์เสร็จ (ต้องรัน `yarn build` ก่อน) -4. **คอมไพล์โปรเจกต์** +4. **การแพ็คโปรเจกต์ (Build/Dist)** - - คอมไพล์ TypeScript: + - คอมไพล์และสร้างไฟล์ TypeScript: ```bash yarn build ``` - - สร้าง executable สำหรับ Windows: + - แพ็คโปรเจกต์เป็นไฟล์รัน (Executable) สำหรับ Windows: ```bash yarn dist:win ``` - - สร้าง executable สำหรับ Mac: + - แพ็คโปรเจกต์สำหรับ macOS: ```bash yarn dist:mac ``` - - สร้าง executable สำหรับ Linux: + - แพ็คโปรเจกต์สำหรับ Linux: ```bash yarn dist:linux ``` -5. **ตรวจสอบคุณภาพโค้ด** +5. **ตรวจสอบคุณภาพโค้ด (Lint)** - - เช็ค lint: + - ทำการตรวจสอบไวยากรณ์และข้อกำหนดโค้ด (Linting) ทั้งหมด: ```bash yarn lint ``` -6. **AI Debug panel (ไม่บังคับ)** +6. **แผงควบคุมดีบัก AI (ตัวเลือก)** - รัน Visual Debugging Tool ของ Vercel AI SDK เพื่อ debug integration AI ได้ง่ายขึ้น: + เปิดใช้งานเครื่องมือดีบักแบบ Visual ของ AI SDK เพื่อความสะดวกในการดีบักการเรียกใช้ AI: ```bash yarn debug:ai ``` -## การพัฒนา Frontend +## การพัฒนาฟรอนต์เอนด์ (Frontend) -หากต้องการพัฒนา UI แก้ไขที่ frontend repo: +หากต้องการแก้ไขหรือพัฒนาอินเทอร์เฟซฟรอนต์เอนด์ โปรดไปที่ Repository ฟรอนต์เอนด์ดังนี้: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -หลัง build frontend แล้ว ให้นำไฟล์ใน `dist` ไปวางใน `data/web` ของโปรเจกต์นี้ +หลังจาก Build ฟรอนต์เอนด์เสร็จสิ้นแล้ว ให้คัดลอกโฟลเดอร์ `dist` ทั้งหมดไปวางในโฟลเดอร์ `data/web` ของโปรเจกต์นี้เพื่อทำการรวมเข้ากับระบบ ## โครงสร้างโปรเจกต์ ``` -📂 build/ # ผลลัพธ์หลังคอมไพล์ -📂 data/ # ข้อมูล runtime -│ ├─ 📂 models/ # โมเดล inference ในเครื่อง (ONNX) -│ ├─ 📂 oss/ # ที่เก็บวัตถุ (assets/character/scene) -│ ├─ 📂 serve/ # จุดเริ่ม production -│ ├─ 📂 skills/ # เอเจนท์พรอมต์ทักษะต่างๆ -│ └─ 📂 web/ # asset frontend ที่มาในตัว -📂 ./ # เอกสาร -📂 env/ # ไฟล์ config environment -📂 scripts/ # script สร้างและช่วยงาน +📂 build/ # ผลลัพธ์หลัง Build +📂 data/ # ข้อมูล Runtime +│ ├─ 📂 models/ # โมเดล Infer บนเครื่อง (ONNX) +│ ├─ 📂 oss/ # Object Storage (เก็บภาพ ตัวละคร และฉาก) +│ ├─ 📂 serve/ # จุดเข้าใช้งานโหมด Production +│ ├─ 📂 skills/ # Prompt ทักษะของ Agent +│ └─ 📂 web/ # Frontend ที่ Build แล้ว (ฝังมาในตัว) +📂 docs/ # เอกสารและรูปภาพคู่มือ +📂 env/ # การตั้งค่าสภาพแวดล้อม +📂 scripts/ # สคริปต์ช่วยเหลือและ Build 📂 src/ -├─ 📂 agents/ # โมดูล AI Agent ต่างๆ -│ ├─ 📂 productionAgent/ # เอเจนท์ผลิตงาน -│ └─ 📂 scriptAgent/ # เอเจนท์สคริปต์ -├─ 📂 lib/ # ไลบรารีทั่วไป (db, response) -├─ 📂 middleware/ # Middleware ต่างๆ -├─ 📂 routes/ # เส้นทาง API หลัก -│ ├─ 📂 agents/ # จัดการความจำเอเจนท์ -│ ├─ 📂 artStyle/ # จัดการสไตล์ศิลปะ -│ ├─ 📂 assets/ # จัดการ asset -│ ├─ 📂 assetsGenerate/ # สร้าง asset อัตโนมัติ -│ ├─ 📂 cornerScape/ # จัดการสตอรี่บอร์ด -│ ├─ 📂 general/ # API ทั่วไป -│ ├─ 📂 login/ # ยืนยันตัวตนเข้าใช้ -│ ├─ 📂 migrate/ # ย้ายโครงสร้างข้อมูล -│ ├─ 📂 modelSelect/ # จัดการเลือกโมเดล -│ ├─ 📂 novel/ # จัดการนิยาย -│ ├─ 📂 other/ # ฟีเจอร์อื่นๆ -│ ├─ 📂 production/ # จัดการการผลิต -│ ├─ 📂 project/ # จัดการโปรเจกต์ -│ ├─ 📂 script/ # สร้างสคริปต์ -│ ├─ 📂 scriptAgent/ # Endpoint AI Agent สคริปต์ -│ ├─ 📂 setting/ # ตั้งค่าระบบ -│ ├─ 📂 task/ # จัดการงาน -│ └─ 📂 test/ # ทดสอบ API -├─ 📂 socket/ # การสื่อสาร WebSocket -├─ 📂 types/ # TypeScript type definitions -├─ 📂 utils/ # ฟังก์ชันอรรถประโยชน์ -├─ 📄 app.ts # จุดเข้าแอป -├─ 📄 core.ts # core initialization -├─ 📄 env.ts # ตัวแปร env -├─ 📄 err.ts # จัดการ error -├─ 📄 logger.ts # log โมดูล -├─ 📄 router.ts # ลงทะเบียน route ต่าง ๆ -└─ 📄 utils.ts # เครื่องมือทั่วไป -📄 Dockerfile # config สำหรับ docker build -📄 electron-builder.yml # config แพ็ค Electron +├─ 📂 agents/ # โมดูล AI Agent +│ ├─ 📂 productionAgent/ # Agent ฝ่ายผลิต (Production) +│ └─ 📂 scriptAgent/ # Agent ฝ่ายบทภาพยนตร์ (Script) +├─ 📂 lib/ # ไลบรารีส่วนกลาง (Init ฐานข้อมูล, รูปแบบ Response) +├─ 📂 middleware/ # Middleware +├─ 📂 routes/ # โมดูล Routing +│ ├─ 📂 agents/ # จัดการหน่วยความจำ Agent +│ ├─ 📂 artStyle/ # จัดการสไตล์ภาพศิลป์ +│ ├─ 📂 assets/ # จัดการ Asset +│ ├─ 📂 assetsGenerate/ # สร้าง Asset +│ ├─ 📂 cornerScape/ # จัดการสตอรี่บอร์ด (Storyboard) +│ ├─ 📂 general/ # API ทั่วไป +│ ├─ 📂 login/ # การยืนยันตัวตน +│ ├─ 📂 migrate/ # Migration ข้อมูล +│ ├─ 📂 modelSelect/ # เลือกโมเดล +│ ├─ 📂 novel/ # จัดการนวนิยายต้นฉบับ +│ ├─ 📂 other/ # ฟังก์ชันอื่น ๆ +│ ├─ 📂 production/ # จัดการการผลิต/ตัดต่อ +│ ├─ 📂 project/ # จัดการโปรเจกต์ +│ ├─ 📂 script/ # สร้างบทภาพยนตร์ +│ ├─ 📂 scriptAgent/ # Interface ของ Script Agent +│ ├─ 📂 setting/ # ตั้งค่าระบบ +│ ├─ 📂 task/ # จัดการ Task +│ └─ 📂 test/ # API ทดสอบ +├─ 📂 socket/ # การสื่อสารเรียลไทม์ผ่าน WebSocket +├─ 📂 types/ # ประกาศ TypeScript Types +├─ 📂 utils/ # ฟังก์ชันยูทิลิตี้ +├─ 📄 app.ts # จุดเริ่มต้นของแอปพลิเคชัน (App Entry) +├─ 📄 core.ts # เริ่มต้น Core ระบบ +├─ 📄 env.ts # จัดการตัวแปร Environment +├─ 📄 err.ts # จัดการ Error +├─ 📄 logger.ts # โมดูล Logger +├─ 📄 router.ts # ลงทะเบียน Router +└─ 📄 utils.ts # ฟังก์ชันอรรถประโยชน์ทั่วไป +📄 Dockerfile # ไฟล์สร้าง Docker +📄 electron-builder.yml # การตั้งค่าการแพ็ค Electron 📄 skillList.json # รายการทักษะ -📄 LICENSE # ใบอนุญาต Apache-2.0 -📄 NOTICES.txt # รายงานไลบรารีที่ใช้ -📄 package.json # config โปรเจกต์ -📄 tsconfig.json # TypeScript config +📄 LICENSE # สัญญาอนุญาต (Apache-2.0) +📄 NOTICES.txt # ประกาศไลบรารี Third-party +📄 package.json # การตั้งค่าโปรเจกต์ +📄 tsconfig.json # การตั้งค่า TypeScript ``` --- -# 🔗 รีโพที่เกี่ยวข้อง +# 🔗 Repository ที่เกี่ยวข้อง -| รีโพ | คำอธิบาย | GitHub | Gitee | -| ------------ | ----------------- | ----------------------------------------------- | -------------------------------------------- | -| **Toonflow-app** | ตัวเต็ม (รีโปนี้, สำหรับผู้ใช้) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | ซอร์ส frontend (สำหรับ dev FE) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| Repository | คำอธิบาย | GitHub | Gitee | +| ---------------- | --------------------------------------------- | -------------------------------------------------- | ------------------------------------------------ | +| **Toonflow-app** | ไคลเอนต์แบบสมบูรณ์ (Repository นี้ แนะนำสำหรับผู้ใช้ทั่วไป) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | ซอร์สโค้ดฟรอนต์เอนด์ (เหมาะสำหรับนักพัฒนาฟรอนต์เอนด์) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **หมายเหตุ:** ถ้าแค่ต้องการใช้งาน ดาวน์โหลดไคลเอนต์จากรีโปนี้ได้เลย รีโป frontend เหมาะสำหรับ dev ที่จะพัฒนา UI ต่อ +> 💡 **เคล็ดลับ**: หากคุณต้องการใช้งาน Toonflow เพียงดาวน์โหลดไคลเอนต์จาก Repository นี้ก็เพียงพอแล้ว +> Repository Toonflow-web มีไว้สำหรับนักพัฒนาที่ต้องการปรับแต่งหรือพัฒนาต่อยอดอินเทอร์เฟซเท่านั้น --- -# 👨‍👩‍👧‍👦 กลุ่ม WeChat +# 👨‍👩‍👧‍👦 กลุ่ม Discord ชุมชน -ผู้ช่วยกลุ่ม: +คลิกที่ไอคอนด้านล่างเพื่อเข้าร่วม Discord: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +หรือคลิกลิงก์โดยตรง: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- # 💌 ติดต่อเรา -📧 อีเมล: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow inquiry) +📧 อีเมล: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=สอบถาม%20เรื่อง%20Toonflow) --- -# 📜 ใบอนุญาต +# 📜 ใบอนุญาต (License) -Toonflow เป็นโอเพ่นซอร์สภายใต้ Apache-2.0 พร้อมข้อตกลงเชิงพาณิชย์เพิ่มเติม +Toonflow เปิดเผยเป็นโอเพ่นซอร์สภายใต้สัญญาอนุญาต Apache-2.0 พร้อมด้วยข้อตกลงเชิงพาณิชย์เพิ่มเติม -รายละเอียด: https://www.apache.org/licenses/LICENSE-2.0 +รายละเอียดสัญญา Apache-2.0: https://www.apache.org/licenses/LICENSE-2.0 -## ข้อตกลงเพิ่มเติม +## ข้อตกลงเชิงพาณิชย์เพิ่มเติม -- หากแจกจ่ายซอฟต์แวร์นี้ในฐานะผลิตภัณฑ์ให้ **บุคคลที่สามอิสระ 2 รายขึ้นไป** ต้องได้รับ **อนุญาตเชิงพาณิชย์เป็นลายลักษณ์อักษร** จาก HBAI-Ltd -- **≤ 5 นิติบุคคล** ร่วมดำเนินงานภายในโดยไม่ให้บริการภายนอก ถือเป็น **การใช้งานภายใน ไม่ต้องขออนุญาต** -- ห้ามลบหรือแก้ไขเครื่องหมายการค้า โลโก้ หรือข้อมูลลิขสิทธิ์ใน Toonflow +- หากนำซอฟต์แวร์นี้ไปเผยแพร่ในรูปแบบผลิตภัณฑ์ให้กับ **บุคคลที่สามอิสระตั้งแต่ 2 รายขึ้นไป** ต้องได้รับ **การอนุญาตเชิงพาณิชย์เป็นลายลักษณ์อักษร** จาก HBAI-Ltd +- หากใช้งานร่วมกันภายในโดย **นิติบุคคลไม่เกิน 5 ราย** และไม่ให้บริการแก่บุคคลภายนอก จะถือเป็นการใช้งานภายในและ **ไม่ต้องขออนุญาต** +- ห้ามลบหรือแก้ไขโลโก้หรือข้อมูลลิขสิทธิ์ภายใน Toonflow -## ใช้งานฟรีตลอดกาล +## กรณีใช้งานฟรีตลอดชีพ -- ✅ ใช้ Toonflow สร้างเนื้อหาและรับส่วนแบ่งรายได้จากแพลตฟอร์ม -- ✅ พัฒนาต่อยอดสำหรับทีมภายใน -- ✅ ≤ 5 นิติบุคคลร่วมดำเนินงานภายใน -- ✅ เรียนรู้ส่วนตัว วิจัย และใช้งานที่ไม่ใช่เชิงพาณิชย์ +- ✅ ใช้ Toonflow สร้างเนื้อหาเพื่อรับส่วนแบ่งรายได้จากแพลตฟอร์มวิดีโอ +- ✅ นำโค้ดไปพัฒนาต่อยอดเพื่อใช้งานภายในทีม +- ✅ ใช้งานร่วมกันภายในโดยนิติบุคคลไม่เกิน 5 ราย +- ✅ เพื่อการศึกษา การวิจัย และวัตถุประสงค์ที่ไม่ใช่เชิงพาณิชย์ -## ราคาใบอนุญาตเชิงพาณิชย์ +## โครงสร้างราคาการอนุญาตเชิงพาณิชย์ -| ระยะ | ยอดขายต่อปี | ค่าธรรมเนียมต่อปี | -|------|---------|------| -| 🌱 บ่มเพาะ | < ¥100,000 | **ฟรี** | -| 🚀 สตาร์ทอัพ | ¥100,000–500,000 | ¥5,000/ปี | -| 📈 เติบโต | ¥500,000–1,500,000 | ¥20,000/ปี | -| 🏢 ขยายตัว | ¥1,500,000–5,000,000 | ¥80,000/ปี | -| 🌐 องค์กร | > ¥5,000,000 | เจรจา | +| ระยะ | ยอดขายรายปี | ค่าธรรมเนียมรายปี | +|--------------|-----------------------------|-----------------------| +| 🌱 ช่วงเริ่มต้น (Incubation) | < ¥100,000 | **ฟรี** | +| 🚀 ช่วง startup | ¥100,000 – 500,000 | ¥5,000 / ปี | +| 📈 ช่วงเติบโต (Growth) | ¥500,000 – 1,500,000 | ¥20,000 / ปี | +| 🏢 ช่วงขยายขนาด (Scale) | ¥1,500,000 – 5,000,000 | ¥80,000 / ปี | +| 🌐 ระดับองค์กร (Enterprise) | > ¥5,000,000 | เจรจาต่อรอง | -> **เงื่อนไขไม่ย้อนหลัง**: ผู้ใช้ที่ใช้ Toonflow ภายใต้ AGPL-3.0 ก่อนการเผยแพร่ v1.0.8 จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้ การใช้งานปัจจุบันยังคงเป็นไปตาม AGPL-3.0 +> **ข้อกำหนดไม่ย้อนหลัง (Non-Retroactivity)**: ผู้ใช้ที่เคยใช้งาน Toonflow ภายใต้สัญญา AGPL-3.0 ก่อนเวอร์ชัน v1.0.8 จะยังคงผูกพันตาม AGPL-3.0 ต่อไป และไม่ได้รับผลกระทบจากการเปลี่ยนแปลงข้อตกลงนี้ -ดูข้อตกลงฉบับเต็มที่ [LICENSE](../LICENSE) +ดูรายละเอียดข้อตกลงฉบับเต็มได้ที่ไฟล์ [LICENSE](./LICENSE) --- -# ⭐️ ประวัติการกดดาว +# ⭐️ ประวัติการให้ดาว (Star History) [![Star History Chart](https://api.star-history.com/svg?repos=HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left)](https://www.star-history.com/#HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left) @@ -557,32 +570,32 @@ Toonflow เป็นโอเพ่นซอร์สภายใต้ Apache- # 🙏 ขอขอบคุณ -ขอบคุณโอเพ่นซอร์สต่อไปนี้ที่สนับสนุน Toonflow: +ขอขอบคุณโปรเจกต์โอเพ่นซอร์สต่อไปนี้ที่ช่วยสนับสนุน Toonflow อย่างมาก: -- [Express](https://expressjs.com/) - เฟรมเวิร์ก Node.js ที่เร็ว เล็ก และเปิดกว้าง -- [AI SDK](https://ai-sdk.dev/) - ชุดเครื่องมือ AI-first สำหรับ TypeScript -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - Binding SQLite3 ประสิทธิภาพสูง -- [Sharp](https://sharp.pixelplumbing.com/) - ไลบรารีจัดการภาพบน Node.js ประสิทธิภาพสูง -- [Axios](https://axios-http.com/) - HTTP client แบบ Promise -- [Zod](https://zod.dev/) - ไลบรารีตรวจสอบชนิด TypeScript เป็นหลัก -- [Socket.IO](https://socket.io/) - เฟรมเวิร์ก event bidirectional แบบเรียลไทม์ -- [Electron](https://www.electronjs.org/) - เฟรมเวิร์กสร้างแอปเดสก์ท็อปข้ามแพลตฟอร์ม -- [Hugging Face Transformers](https://huggingface.co./transformers.js) - ไลบรารี ML inference ในเครื่อง +- [Express](https://expressjs.com/) - Web Framework สำหรับ Node.js ที่รวดเร็ว เปิดกว้าง และใช้งานง่าย +- [AI SDK](https://ai-sdk.dev/) - ชุดเครื่องมือ AI สำหรับ TypeScript +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - ไลบรารี SQLite3 ประสิทธิภาพสูง +- [Sharp](https://sharp.pixelplumbing.com/) - ไลบรารีประมวลผลภาพบน Node.js ประสิทธิภาพสูง +- [Axios](https://axios-http.com/) - HTTP Client แบบ Promise-based +- [Zod](https://zod.dev/) - ไลบรารีตรวจสอบโครงสร้างข้อมูล (Schema Validation) สำหรับ TypeScript +- [Socket.IO](https://socket.io/) - เอนจินการสื่อสารเรียลไทม์แบบสองทาง +- [Electron](https://www.electronjs.org/) - เฟรมเวิร์กพัฒนาแอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์ม +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - ไลบรารี Machine Learning สำหรับการ Inference บนเครื่อง -ขอบคุณองค์กร/บุคคลต่อไปนี้สนับสนุน Toonflow: +ขอขอบคุณองค์กรและผู้สนับสนุนต่อไปนี้ที่ช่วยเหลือ Toonflow:
- SophNet Logo + Sophnet Logo - SophNet Cloud เป็นผู้สนับสนุนทรัพยากรการประมวลผล - [เว็บไซต์] + Sophnet (算能云) ให้การสนับสนุนด้านพลังการประมวลผล (Computing Power)
+ [เว็บไซต์ทางการ]
-รายชื่อไลบรารีภายนอกทั้งหมด ดูได้ที่ `NOTICES.txt` +รายการ Third-party Dependencies แบบสมบูรณ์ สามารถดูได้ที่ไฟล์ `NOTICES.txt` -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### copyright © Huaibei AIA Network Technology Co., Ltd. \ No newline at end of file diff --git a/docs/README.vi.md b/docs/README.vi.md index e7bafcc..c2e2b36 100644 --- a/docs/README.vi.md +++ b/docs/README.vi.md @@ -8,13 +8,12 @@  |  - Atomgit - Atomgit + Atomgit

- 简体中文 | + 简体中文 | 繁體中文 | English | ไทย | @@ -31,11 +30,11 @@

- Xưởng sản xuất phim ngắn AI + Nhà máy Phim ngắn AI
- Động ngón tay là tiểu thuyết hóa thành phim ngay! + Chỉ với vài cú click, tiểu thuyết lập tức biến thành phim!
- Kịch bản AI × Hình ảnh AI × Tạo dựng thần tốc 🔥 + Kịch bản AI × Hình ảnh AI × Tạo siêu tốc 🔥

@@ -50,17 +49,17 @@

- > 🚀 **Công cụ sản xuất phim ngắn một cửa**: Từ văn bản tới nhân vật, từ dàn cảnh tới video, toàn bộ quy trình AI hóa không cần kỹ năng, tăng hiệu quả sáng tạo gấp 10 lần+! + > 🚀 **Dự án Phim ngắn All-in-One**: Từ văn bản đến nhân vật, từ storyboard đến video hoàn chỉnh. Tự động hóa toàn bộ quy trình bằng AI – không rào cản, tăng hiệu suất sáng tạo lên gấp 10 lần! --- -# 🌐 Hỗ trợ đa ngôn ngữ +# 🌐 Hỗ trợ Đa ngôn ngữ -Toonflow hỗ trợ các ngôn ngữ giao diện sau: +Toonflow hỗ trợ giao diện với các ngôn ngữ sau: | Ngôn ngữ | Language | -|-----------|----------| +|------|----------| | 简体中文 | Chinese (Simplified) | | 繁體中文 | Chinese (Traditional) | | English | English | @@ -69,46 +68,43 @@ Toonflow hỗ trợ các ngôn ngữ giao diện sau: | 日本語 | Japanese | | Русский | Russian | ---- - -# 🌟 Tính năng chính - -Toonflow là công cụ AI tạo phim truyện tranh ngắn, tận dụng công nghệ AI để chuyển tự động tiểu thuyết thành kịch bản, kết hợp hình ảnh, video AI để sáng tác phim ngắn hiệu quả. Với Toonflow, bạn dễ dàng hoàn thành toàn bộ quy trình từ văn bản tới hình ảnh, khiến chế tác phim ngắn trở nên thông minh và tiện lợi hơn bao giờ hết. - -- ✅ **Tạo nhân vật** - Phân tích tự động văn bản tiểu thuyết gốc, nhận diện thông minh và xây dựng thiết lập nhân vật, gồm ngoại hình, tính cách, thân phận,... cung cấp nền tảng chắc chắn cho sáng tác kịch bản và hình ảnh sau này. -- ✅ **Tạo kịch bản** - Dựa trên sự kiện và chương đã chọn, hệ thống tự động tạo kịch bản có cấu trúc gồm thoại, mô tả cảnh, diễn biến tình tiết, chuyển đổi hiệu quả từ văn học sang kịch bản truyền hình, điện ảnh. -- ✅ **Làm phân cảnh** - Theo nội dung kịch bản, tự động tạo từ khóa phân cảnh, thiết kế hình ảnh, chi tiết tiền trung hậu cảnh, động thái nhân vật, thiết lập đạo cụ và bố trí trường quay, tự động phân cảnh dựa trên kịch bản, tối ưu đường lối sản xuất video. -- ✅ **Tổng hợp video** - Tích hợp công nghệ tạo ảnh và video AI, dùng AI tạo phân đoạn video, biên tập trực tuyến, hỗ trợ điều chỉnh cá nhân hóa đầu ra, giúp sáng tác phim hiệu quả, triển khai nhanh. +> 💡 Đang cập nhật thêm nhiều ngôn ngữ, hoan nghênh bạn đóng góp bản dịch! --- -# 📦 Ứng dụng +# 🌟 Tính năng Chính -- Sáng tác nội dung video ngắn -- Thử nghiệm điện ảnh hóa tiểu thuyết -- Công cụ AI chuyển thể văn học -- Phát triển, dựng mẫu nhanh kịch bản -- Tạo nguyên liệu video +Toonflow là công cụ AI chuyên tạo phim ngắn và truyện tranh, có khả năng tự động biến tiểu thuyết thành phim chỉ trong một quy trình liền mạch. Từ văn bản gốc, AI sẽ tạo nhân vật, viết kịch bản, thiết kế phân cảnh và tổng hợp video hoàn chỉnh – giúp bạn sản xuất phim ngắn nhanh chóng, thông minh và tiết kiệm chi phí tối đa. + +- ✅ **Tạo Nhân vật Tự động** Hệ thống phân tích tiểu thuyết gốc, thông minh nhận diện và xây dựng hồ sơ nhân vật chi tiết (ngoại hình, tính cách, danh tính, mối quan hệ…). Tạo nền tảng vững chắc cho kịch bản và hình ảnh sau này. +- ✅ **Tạo Kịch bản Thông minh** Dựa trên các chương/sự kiện bạn chọn, AI tự động xây dựng kịch bản có cấu trúc rõ ràng, bao gồm hội thoại tự nhiên, mô tả cảnh quay và hướng phát triển cốt truyện – chuyển đổi văn học sang kịch bản phim một cách hiệu quả. +- ✅ **Tạo Phân cảnh (Storyboard)** Từ kịch bản, hệ thống tự động sinh ra các prompt phân cảnh và thiết kế khung hình chi tiết. Bao gồm tiền cảnh/trung cảnh/hậu cảnh, hành động nhân vật, đạo cụ và bố cục điện ảnh – tạo ra lộ trình hoàn chỉnh sẵn sàng cho việc sản xuất video. +- ✅ **Tổng hợp & Chỉnh sửa Video** Tích hợp công nghệ AI hình ảnh và video để tạo ra các đoạn clip chất lượng cao. Hỗ trợ chỉnh sửa trực tuyến linh hoạt, cho phép bạn tinh chỉnh theo ý muốn, giúp toàn bộ quy trình sáng tạo phim diễn ra mượt mà và cực kỳ nhanh chóng. --- -# 🔰 Hướng dẫn sử dụng +# 📦 Ứng dụng Thực tế -## 📺 Video hướng dẫn +- Sáng tạo nội dung video ngắn +- Thử nghiệm chuyển thể tiểu thuyết thành phim ngắn +- Công cụ AI chuyển thể văn học thành video +- Phát triển kịch bản và tạo bản mẫu nhanh (Rapid Prototyping) +- Tạo tài liệu video chất lượng cao -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow 8 phút nhanh chóng làm chủ AI Video](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) +--- -**Toonflow 8 phút nhanh chóng bắt đầu với AI Video** -👉 [Click xem tại đây](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) +# 🔰 Hướng dẫn Sử dụng -📱 Quét mã QR trên WeChat để xem trên điện thoại +## 📺 Hướng dẫn bằng Video -微信扫码观看 +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![Toonflow - 8 phút làm quen với Video AI](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) + +**Toonflow - 8 phút làm quen nhanh với Video AI** +👉 [Nhấn để xem](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) + +📱 **Quét mã QR để xem video trên điện thoại** +Quét mã QR để xem video --- @@ -116,105 +112,105 @@ https://www.bilibili.com/video/BV1na6wB6Ea2 ## Điều kiện tiên quyết -Trước khi cài đặt và sử dụng, hãy chuẩn bị: +Trước khi cài đặt và sử dụng phần mềm, vui lòng chuẩn bị: -- ✅ Địa chỉ API dịch vụ mô hình ngôn ngữ lớn (AI) -- ✅ Địa chỉ API dịch vụ video Sora hoặc Đậu Bao -- ✅ Địa chỉ API dịch vụ tạo ảnh Nano Banana Pro +- ✅ Địa chỉ API của Mô hình ngôn ngữ lớn (LLM) +- ✅ Địa chỉ API của dịch vụ video Sora hoặc Doubao +- ✅ Địa chỉ API của dịch vụ tạo ảnh Nano Banana Pro -## Cài đặt tại máy +## Cài đặt trên máy cá nhân (Local) -### 1. Tải về & cài đặt +### 1. Tải xuống & Cài đặt -| Hệ điều hành | GitHub | Atomgit | Tải về trên Quark Drive | Ghi chú | -| :----------: | :------------------------------------------------------- | :----------------------------------------------------- | :--------------------------------------------------- | :-------------- | -| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Gói cài đặt chính thức | -| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Gói cài đặt chính thức | -| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Gói cài đặt chính thức | +| Hệ điều hành | GitHub | Atomgit | Tải qua Quark Drive | Mô tả | +| :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Bản cài đặt chính thức | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Bản cài đặt chính thức | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [Quark Drive](https://pan.quark.cn/s/94ef07509df0) | Bản cài đặt chính thức | > [!CAUTION] -> Đối với MacOS, vào Cài đặt - Quyền riêng tư & Bảo mật để cấu hình, nếu không phần mềm có thể không mở được do vấn đề chứng chỉ +> Với hệ điều hành MacOS, vui lòng vào "Cài đặt hệ thống" -> "Quyền riêng tư & Bảo mật" để cấp quyền mở ứng dụng, nếu không phần mềm có thể không mở được do vấn đề chứng chỉ. > -> Tham khảo tài liệu Zhihu: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> Tham khảo hướng dẫn Zhihu: [https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> Do hạn chế môi trường Gitee OS và kích thước upload Release, hiện chưa cung cấp đường dẫn tải Release tại Gitee. +> Do giới hạn môi trường Gitee OS và giới hạn kích thước tệp tải lên của Release, chúng tôi tạm thời không cung cấp link tải qua Gitee Release. -### 2. Khởi động dịch vụ +### 2. Khởi chạy Dịch vụ -Cài đặt xong, mở chương trình là có thể bắt đầu sử dụng. +Sau khi cài đặt xong, hãy mở chương trình để bắt đầu sử dụng. -> ⚠️ **Đăng nhập lần đầu** +> ⚠️ **Đăng nhập lần đầu** > Tài khoản: `admin` > Mật khẩu: `admin123` -## Triển khai Docker +## Triển khai bằng Docker -### Điều kiện +### Điều kiện tiên quyết -- Đã cài đặt [Docker](https://docs.docker.com/get-docker/) (version 20.10+) +- Đã cài đặt [Docker](https://docs.docker.com/get-docker/) (Phiên bản 20.10+) ### Cách 1: Triển khai trực tuyến -Đang hoàn thiện, tạm thời sử dụng build trên máy. +Đang hoàn thiện, tạm thời sử dụng cách Build tại máy (Local build). -### Cách 2: Build local +### Cách 2: Build tại máy (Local build) -Dùng mã nguồn sẵn có, phù hợp cho dev hoặc người đã clone repo, cần cài git trên máy: +Sử dụng mã nguồn có sẵn để build trực tiếp. Phù hợp với lập trình viên hoặc người dùng đã clone repository. (Yêu cầu cài đặt git trên máy): ```shell -# Clone nếu chưa có +# Clone dự án (Bỏ qua nếu đã clone) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# Build và khởi động bằng docker-compose +# Sử dụng docker-compose để build và chạy yarn docker:local # Hoặc build thủ công docker build -t toonflow . -docker run -d -p :10588 -v <đường dẫn data>: /app/data toonflow +docker run -d -p :10588 -v <Đường dẫn dữ liệu trên máy>:/app/data toonflow -# Sau đó, truy cập trang qua /web/index.html trên cổng phù hợp -# Ví dụ http://localhost:10588/web/index.html +# Sau đó, truy cập giao diện qua đường dẫn /web/index.html bằng Port đã thiết lập +# Ví dụ: http://localhost:10588/web/index.html ``` -### Giải thích cổng dịch vụ +### Cấu hình Cổng dịch vụ (Port) -| Cổng | Mục đích | Mapping deploy | -| --------- | ------------- | ------------------- | -| `10588` | Giao diện | `10588:10588` | +| Cổng (Port) | Chức năng | Port Mapping | +| ------- | -------- | ------------- | +| `10588` | Giao diện phần mềm | `10588:10588` | -**Các biến môi trường:** +**Giải thích Biến môi trường:** -| Biến | Giải thích | -| ----------- | -------------------------------------- | -| `NODE_ENV` | Môi trường chạy, `prod` là production | -| `PORT` | Cổng dịch vụ (mặc định 10588) | -| `OSSURL` | Địa chỉ truy cập tệp tĩnh (OSS) | +| Biến (Variable) | Giải thích | +| ---------- | ---------------------------------- | +| `NODE_ENV` | Môi trường chạy, `prod` là môi trường Product (sản xuất) | +| `PORT` | Port lắng nghe của dịch vụ (Mặc định: 10588) | +| `OSSURL` | Địa chỉ truy cập lưu trữ file, dùng cho các tài nguyên tĩnh (Static) | --- -## Triển khai trên máy chủ +## Triển khai trên Máy chủ Đám mây (Cloud) -### A. Yêu cầu máy chủ +### 1. Yêu cầu Môi trường Máy chủ - **Hệ điều hành**: Ubuntu 20.04+ / CentOS 7+ -- **Node.js**: 24.x (khuyến nghị, tối thiểu 23.11.1+) +- **Node.js**: 24.x (Khuyên dùng, Tối thiểu 23.11.1+) - **RAM**: 2GB+ -### B. Triển khai +### 2. Triển khai Máy chủ -#### 1. Cài đặt môi trường +#### 1. Cài đặt Môi trường ```bash -# Cài Node.js +# Cài đặt Node.js curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 24 -# Cài Yarn & PM2 +# Cài đặt Yarn và PM2 npm install -g yarn pm2 ``` -#### 2. Triển khai dự án +#### 2. Triển khai Dự án **Clone từ GitHub:** @@ -226,7 +222,7 @@ yarn install yarn build ``` -**Clone từ Gitee (khuyên dùng tại VN):** +**Clone từ Gitee (Khuyên dùng tại TQ):** ```bash cd /opt @@ -238,7 +234,7 @@ yarn build #### 3. Cấu hình PM2 -Tạo file `pm2.json`: +Tạo tệp `pm2.json`: ```json { @@ -254,17 +250,17 @@ Tạo file `pm2.json`: } ``` -**Giải thích biến môi trường:** +**Giải thích Biến môi trường:** -| Biến | Giải thích | -| ----------- | -------------------------------------- | -| `NODE_ENV` | Môi trường chạy, `prod` là production | -| `PORT` | Cổng dịch vụ | -| `OSSURL` | Địa chỉ truy cập tài nguyên tĩnh | +| Biến (Variable) | Giải thích | +| ---------- | ---------------------------------- | +| `NODE_ENV` | Môi trường chạy, `prod` là môi trường Product | +| `PORT` | Cổng lắng nghe của dịch vụ (Port) | +| `OSSURL` | Địa chỉ truy cập lưu trữ file, dùng cho tài nguyên tĩnh | --- -#### 4. Khởi động dịch vụ +#### 4. Khởi chạy Dịch vụ ```bash pm2 start pm2.json @@ -272,150 +268,150 @@ pm2 startup pm2 save ``` -#### 5. Lệnh thường dùng +#### 5. Các lệnh PM2 thường dùng ```bash pm2 list # Xem danh sách tiến trình -pm2 logs toonflow-app # Xem logs +pm2 logs toonflow-app # Xem log (nhật ký) pm2 restart all # Khởi động lại dịch vụ -pm2 monit # Màn hình monitor +pm2 monit # Mở bảng điều khiển giám sát ``` -> ⚠️ **Đăng nhập lần đầu** +> ⚠️ **Đăng nhập lần đầu** > Tài khoản: `admin` > Mật khẩu: `admin123` -#### 6. Triển khai web frontend +#### 6. Triển khai trang web Frontend -Nếu cần deploy riêng hoặc custom giao diện, tham khảo mã nguồn frontend: +Nếu bạn cần triển khai riêng hoặc tùy chỉnh giao diện Frontend, vui lòng tham khảo Repository Frontend: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **Ghi chú**: Repo này đã chứa sẵn tài nguyên frontend được build, người dùng thông thường không cần deploy thêm phần giao diện, repo frontend chỉ dành cho dev muốn tùy biến sâu. +> 💡 **Lưu ý**: Repository này đã được tích hợp sẵn tài nguyên Frontend đã build. Người dùng thông thường không cần tự triển khai Frontend riêng. Repository Frontend chỉ dành cho các nhà phát triển muốn tùy chỉnh chuyên sâu. --- -# 🔧 Hướng dẫn quy trình phát triển +# 🔧 Hướng dẫn Quy trình Phát triển (Development Workflow) > [!CAUTION] -> 🚧 **Quy tắc gửi PR** 🚧 +> 🚧 **Quy định nộp PR (Pull Request)** 🚧 > -> ⛔ Không nhận PR gửi thẳng vào nhánh `master` | ✅ Gửi PR vào nhánh `develop` +> ⛔ Nhánh `master` KHÔNG chấp nhận bất kỳ PR nào | ✅ Vui lòng gửi PR vào nhánh `develop` > -> Chào mừng các dev cùng góp sức phát triển Toonflow. Muốn tham gia nhóm, liên hệ admin ACT trong group chat. +> Chào mừng các nhà phát triển tham gia đóng góp cho Toonflow. Nếu có hứng thú, vui lòng liên hệ với quản trị viên ACT trong nhóm giao lưu. -## 🛠️ Công nghệ sử dụng +## 🛠️ Công nghệ sử dụng (Tech Stack) -| Loại | Công nghệ | -| ---------- | --------------------------------------------------------------------------------------------- | -| Runtime | Node.js 23.11.1+ | -| Ngôn ngữ | TypeScript 5.x | -| Backend | Express 5 | -| Database | SQLite (better-sqlite3/knex) | -| Tích hợp AI| Vercel AI SDK (OpenAI/Anthropic/Google/DeepSeek/Zhipu/MiniMax/TongyiQianwen/xAI) | -| Suy luận local| @huggingface/transformers (ONNX) | -| Realtime | Socket.IO | -| Desktop | Electron 40 | -| Xử lý ảnh | Sharp | -| Container | Docker | +| Phân loại | Công nghệ | +| ---------- | ----------------------------------------------------------------------------------------- | +| Môi trường | Node.js 23.11.1+ | +| Ngôn ngữ | TypeScript 5.x | +| Backend | Express 5 | +| Cơ sở dữ liệu | SQLite (better-sqlite3 / knex) | +| Tích hợp AI| Vercel AI SDK (OpenAI / Anthropic / Google / DeepSeek / Zhipu / MiniMax / Qwen / xAI) | +| Suy luận Local| @huggingface/transformers (ONNX) | +| Real-time | Socket.IO | +| Ứng dụng Desktop | Electron 40 | +| Xử lý ảnh | Sharp | +| Container | Docker | -## Chuẩn bị môi trường phát triển +## Chuẩn bị Môi trường Phát triển -- **Node.js**: yêu cầu >= 23.11.1 -- **Yarn**: khuyến nghị quản lý package +- **Node.js**: Yêu cầu phiên bản 23.11.1 trở lên +- **Yarn**: Khuyến nghị sử dụng làm Package Manager -## Khởi động nhanh +## Khởi chạy Dự án nhanh 1. **Clone dự án** - **Từ GitHub:** + **Clone từ GitHub:** ```bash git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` - **Từ Gitee (khuyên dùng VN):** + **Clone từ Gitee:** ```bash git clone https://gitee.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` -2. **Cài dependency** +2. **Cài đặt Dependencies** - Chạy trong thư mục gốc: + Chạy lệnh sau tại thư mục gốc của dự án: ```bash yarn install ``` -3. **Khởi động môi trường dev** +3. **Khởi chạy môi trường Dev** - Dự án gồm 2 phần: **API backend** và **giao diện frontend**. Tuỳ bạn chọn cách chạy: + Dự án bao gồm **Backend API** và **Trang Frontend**. Tùy nhu cầu mà chọn cách khởi chạy: - - **Cách 1: Chạy chỉ API backend** + - **Cách 1: Chỉ chạy Backend API** ```bash yarn dev ``` - > ⚠️ Lệnh này chỉ khởi động API backend (port 10588), **không gồm frontend** và truy cập `http://localhost:10588` chỉ gọi được API, không có web. Nếu muốn vừa backend vừa giao diện web, chạy GUI hoặc deploy bổ sung frontend. + > ⚠️ Lệnh này chỉ khởi chạy Backend API (Port 10588), không bao gồm giao diện Frontend. Khi truy cập http://localhost:10588 chỉ có thể gọi API. Nếu muốn sử dụng giao diện, vui lòng chạy Frontend riêng hoặc dùng chế độ GUI bên dưới. - - **Cách 2: Chạy GUI ứng dụng desktop Electron** + - **Cách 2: Khởi chạy Client Desktop Electron (Khuyên dùng)** ```bash yarn dev:gui ``` - > Lệnh này khởi động backend đồng thời mở cửa sổ desktop Electron có build frontend sẵn, dùng liền, không cấu hình gì thêm. Dành cho dev muốn trải nghiệm trọn bộ. + > Lệnh này sẽ chạy đồng thời Backend và cửa sổ Desktop Electron với giao diện Frontend đã tích hợp sẵn. Mở lên là có thể sử dụng ngay mà không cần cấu hình thêm. Phù hợp nhất cho lập trình viên muốn trải nghiệm toàn bộ tính năng. - - **Cách 3: Chạy chế độ production** + - **Cách 3: Chạy ở chế độ Product (Sản xuất)** ```bash yarn start ``` - > Chạy trực tiếp bản build (cần build bằng `yarn build` trước). + > Chạy trực tiếp dịch vụ sau khi đã build (Cần chạy lệnh yarn build trước). -4. **Đóng gói dự án** +4. **Đóng gói dự án (Build / Pack)** - - Biên dịch TypeScript: + - Biên dịch tệp TypeScript: ```bash yarn build ``` - - Đóng gói thành exe Windows: + - Đóng gói thành tệp thực thi cho Windows: ```bash yarn dist:win ``` - - Đóng gói MacOS: + - Đóng gói thành tệp thực thi cho MacOS: ```bash yarn dist:mac ``` - - Đóng gói Linux: + - Đóng gói thành tệp thực thi cho Linux: ```bash yarn dist:linux ``` -5. **Kiểm tra chất lượng code** +5. **Kiểm tra chất lượng mã (Lint)** - - Đánh giá tổng thể chuẩn code: + - Kiểm tra cú pháp và quy chuẩn toàn cục: ```bash yarn lint ``` -6. **Bảng debug AI (tùy chọn)** +6. **Bảng điều khiển Debug AI (Tùy chọn)** - Khởi động bảng debug AI SDK, dễ test AI call: + Mở công cụ Debug trực quan của AI SDK để tiện theo dõi các lời gọi AI: ```bash yarn debug:ai @@ -423,166 +419,168 @@ Nếu cần deploy riêng hoặc custom giao diện, tham khảo mã nguồn fro ## Phát triển Frontend -Nếu muốn chỉnh sửa UI, vào repo frontend: +Nếu bạn cần chỉnh sửa giao diện Frontend, vui lòng chuyển sang kho lưu trữ Frontend riêng: - **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) - **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -Sau khi build frontend, copy thư mục `dist` vào `data/web` của repo này để tích hợp. +Sau khi build Frontend xong, hãy copy toàn bộ thư mục dist vào thư mục data/web của dự án này để tích hợp. -## Cấu trúc dự án +## Cấu trúc Dự án ``` -📂 build/ # File build -📂 data/ # Dữ liệu runtime -│ ├─ 📂 models/ # Model local (ONNX) -│ ├─ 📂 oss/ # Lưu trữ asset (media/nhân vật/cảnh) -│ ├─ 📂 serve/ # Entry prod -│ ├─ 📂 skills/ # Prompt kỹ năng Agent -│ └─ 📂 web/ # Thành phẩm frontend (built-in) -📂 docs/ # Tài liệu +📂 build/ # Sản phẩm sau khi build +📂 data/ # Dữ liệu Runtime +│ ├─ 📂 models/ # Mô hình suy luận Local (ONNX) +│ ├─ 📂 oss/ # Lưu trữ Object (ảnh, nhân vật, cảnh) +│ ├─ 📂 serve/ # Cổng vào môi trường Production +│ ├─ 📂 skills/ # Prompt kỹ năng của Agent +│ └─ 📂 web/ # Frontend đã build (tích hợp sẵn) +📂 docs/ # Tài liệu và hình ảnh 📂 env/ # Cấu hình môi trường -📂 scripts/ # Script build & phụ trợ +📂 scripts/ # Script hỗ trợ và Build 📂 src/ -├─ 📂 agents/ # Module AI Agent -│ ├─ 📂 productionAgent/ # Agent sản xuất -│ └─ 📂 scriptAgent/ # Agent kịch bản -├─ 📂 lib/ # Thư viện chung (init db, response...) -├─ 📂 middleware/ # Middleware -├─ 📂 routes/ # Router các module -│ ├─ 📂 agents/ # Quản lý memory Agent -│ ├─ 📂 artStyle/ # Quản lý style tranh -│ ├─ 📂 assets/ # Asset -│ ├─ 📂 assetsGenerate/ # Sinh asset -│ ├─ 📂 cornerScape/ # Quản lý phân cảnh -│ ├─ 📂 general/ # API chung -│ ├─ 📂 login/ # Đăng nhập/ xác thực -│ ├─ 📂 migrate/ # Di trú dữ liệu -│ ├─ 📂 modelSelect/ # Chọn model AI -│ ├─ 📂 novel/ # Quản lý tiểu thuyết -│ ├─ 📂 other/ # Chức năng khác -│ ├─ 📂 production/ # Quản lý sản xuất -│ ├─ 📂 project/ # Quản lý project -│ ├─ 📂 script/ # Tạo kịch bản -│ ├─ 📂 scriptAgent/ # API Agent kịch bản -│ ├─ 📂 setting/ # Thiết lập hệ thống -│ ├─ 📂 task/ # Quản lý task -│ └─ 📂 test/ # API test -├─ 📂 socket/ # WebSocket realtime -├─ 📂 types/ # Định nghĩa TypeScript -├─ 📂 utils/ # Hàm tiện ích -├─ 📄 app.ts # App entry -├─ 📄 core.ts # Init core -├─ 📄 env.ts # Xử lý biến môi trường -├─ 📄 err.ts # Xử lý lỗi -├─ 📄 logger.ts # Ghi log -├─ 📄 router.ts # Đăng ký routes -└─ 📄 utils.ts # Tiện ích chung -📄 Dockerfile # Build Docker -📄 electron-builder.yml # Cấu hình build Electron -📄 skillList.json # Danh sách skill -📄 LICENSE # License (Apache-2.0) -📄 NOTICES.txt # Ghi chú phụ thuộc third-party +├─ 📂 agents/ # Module AI Agent +│ ├─ 📂 productionAgent/ # Agent Sản xuất (Production) +│ └─ 📂 scriptAgent/ # Agent Kịch bản (Script) +├─ 📂 lib/ # Thư viện chung (Khởi tạo Database, định dạng Response) +├─ 📂 middleware/ # Middleware +├─ 📂 routes/ # Các Module Routing +│ ├─ 📂 agents/ # Quản lý bộ nhớ Agent +│ ├─ 📂 artStyle/ # Quản lý phong cách nghệ thuật +│ ├─ 📂 assets/ # Quản lý tài nguyên (Assets) +│ ├─ 📂 assetsGenerate/ # Trình tạo tài nguyên +│ ├─ 📂 cornerScape/ # Quản lý phân cảnh (Storyboard) +│ ├─ 📂 general/ # API chung +│ ├─ 📂 login/ # Xác thực đăng nhập +│ ├─ 📂 migrate/ # Di chuyển dữ liệu (Migration) +│ ├─ 📂 modelSelect/ # Chọn mô hình +│ ├─ 📂 novel/ # Quản lý tiểu thuyết +│ ├─ 📂 other/ # Các tính năng khác +│ ├─ 📂 production/ # Quản lý sản xuất / dựng phim +│ ├─ 📂 project/ # Quản lý dự án +│ ├─ 📂 script/ # Tạo kịch bản +│ ├─ 📂 scriptAgent/ # Interface của Agent kịch bản +│ ├─ 📂 setting/ # Cài đặt hệ thống +│ ├─ 📂 task/ # Quản lý tác vụ (Task) +│ └─ 📂 test/ # API thử nghiệm (Test) +├─ 📂 socket/ # Giao tiếp Real-time qua WebSocket +├─ 📂 types/ # Khai báo Type của TypeScript +├─ 📂 utils/ # Các hàm tiện ích +├─ 📄 app.ts # Entry của ứng dụng +├─ 📄 core.ts # Khởi tạo Core +├─ 📄 env.ts # Xử lý biến môi trường +├─ 📄 err.ts # Xử lý lỗi (Error handling) +├─ 📄 logger.ts # Module ghi log (Logger) +├─ 📄 router.ts # Đăng ký Router +└─ 📄 utils.ts # Công cụ chung +📄 Dockerfile # Tệp cấu hình Build Docker +📄 electron-builder.yml # Cấu hình đóng gói Electron +📄 skillList.json # Danh sách kỹ năng +📄 LICENSE # Giấy phép (Apache-2.0) +📄 NOTICES.txt # Khai báo thư viện bên thứ ba 📄 package.json # Cấu hình dự án 📄 tsconfig.json # Cấu hình TypeScript ``` --- -# 🔗 Repo liên quan +# 🔗 Các Kho lưu trữ Liên quan -| Repo | Giải thích | GitHub | Gitee | -| ---------------- | -------------------------------- | -------------------------------------------------- | ------------------------------------------------ | -| **Toonflow-app** | Ứng dụng client đầy đủ (repo này, người dùng nên dùng) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | Mã nguồn frontend (cho dev UI) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| Repository (Kho) | Mô tả | GitHub | Gitee | +| ---------------- | ---------------------------------- | -------------------------------------------------- | ------------------------------------------------ | +| **Toonflow-app** | Client hoàn chỉnh (Repo này, khuyến nghị cho người dùng) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | Mã nguồn Frontend (Dành cho lập trình viên Frontend) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **Lưu ý**: Nếu chỉ muốn dùng Toonflow, tải về client repo này là đủ. Repo frontend chỉ dành cho ai cần phát triển/custome UI thêm. +> 💡 **Mẹo nhỏ**: Nếu bạn chỉ muốn sử dụng Toonflow, hãy tải Client hoàn chỉnh từ kho này là đủ. Kho Toonflow-web chỉ dành cho các nhà phát triển cần chỉnh sửa hoặc phát triển lại giao diện (secondary development). --- -# 👨‍👩‍👧‍👦 Nhóm chat WeChat +# 👨‍👩‍👧‍👦 Nhóm Discord Cộng đồng -Bot mời tham gia: +Nhấn vào biểu tượng bên dưới để tham gia Discord: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +Hoặc click trực tiếp vào link: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- -# 💌 Liên hệ +# 💌 Liên hệ với chúng tôi -📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow咨询) +📧 Email: [ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow%20%C6%B0%C9%9B) --- -# 📜 Giấy phép +# 📜 Giấy phép (License) -Toonflow phát hành mã nguồn mở theo Apache-2.0, kèm thỏa thuận thương mại bổ sung. +Toonflow được phát hành mã nguồn mở dưới giấy phép Apache-2.0, kèm theo Thỏa thuận thương mại bổ sung. -Chi tiết: https://www.apache.org/licenses/LICENSE-2.0 +Chi tiết giấy phép Apache-2.0: https://www.apache.org/licenses/LICENSE-2.0 ## Thỏa thuận bổ sung -- Nếu phân phối phần mềm này dưới dạng sản phẩm cho **2 bên thứ ba độc lập trở lên**, bạn phải có **ủy quyền thương mại bằng văn bản** từ HBAI-Ltd. -- **≤ 5 pháp nhân** cùng vận hành nội bộ mà không cung cấp dịch vụ ra bên ngoài được coi là **sử dụng nội bộ, không cần ủy quyền**. -- Không được xóa hoặc sửa đổi nhãn hiệu, logo hoặc thông tin bản quyền trong Toonflow. +- Nếu phần mềm này được phân phối dưới dạng sản phẩm cho **2 hoặc nhiều bên thứ ba độc lập** sử dụng, bắt buộc phải có **giấy phép thương mại bằng văn bản** từ HBAI-Ltd. +- Nếu **≤ 5 pháp nhân** hợp tác vận hành để sử dụng nội bộ và không cung cấp dịch vụ ra bên ngoài, thì được coi là sử dụng nội bộ và **không cần cấp phép**. +- Không được phép xóa hoặc sửa đổi logo hoặc thông tin bản quyền trong Toonflow. -## Miễn phí vĩnh viễn +## Các trường hợp Miễn phí Vĩnh viễn -- ✅ Sử dụng Toonflow tạo nội dung và nhận chia sẻ doanh thu nền tảng -- ✅ Phát triển thêm cho sử dụng nội bộ nhóm -- ✅ ≤ 5 pháp nhân vận hành chung nội bộ -- ✅ Học tập cá nhân, nghiên cứu, mục đích phi thương mại +- ✅ Dùng Toonflow để sản xuất nội dung và nhận chia sẻ doanh thu từ các nền tảng video +- ✅ Chỉnh sửa mã nguồn (Secondary development) để dùng cho nhóm nội bộ +- ✅ ≤ 5 pháp nhân hợp tác vận hành để sử dụng nội bộ +- ✅ Phục vụ học tập cá nhân, nghiên cứu và các mục đích phi thương mại -## Bảng giá ủy quyền thương mại +## Bảng giá Cấp phép Thương mại -| Giai đoạn | Doanh thu năm | Phí hàng năm | +| Giai đoạn | Doanh thu Hàng năm | Phí Hàng năm | |------|---------|------| -| 🌱 Ươm tạo | < ¥100,000 | **Miễn phí** | -| 🚀 Khởi nghiệp | ¥100,000–500,000 | ¥5,000/năm | -| 📈 Tăng trưởng | ¥500,000–1,500,000 | ¥20,000/năm | -| 🏢 Mở rộng | ¥1,500,000–5,000,000 | ¥80,000/năm | -| 🌐 Doanh nghiệp | > ¥5,000,000 | Thương lượng | +| 🌱 Ươm mầm | < ¥100k (RMB) | **Miễn phí** | +| 🚀 Khởi nghiệp | ¥100k – 500k (RMB) | ¥5,000 / Năm | +| 📈 Tăng trưởng | ¥500k – 1.5M (RMB) | ¥20,000 / Năm | +| 🏢 Quy mô | ¥1.5M – 5M (RMB) | ¥80,000 / Năm | +| 🌐 Doanh nghiệp | > ¥5M (RMB) | Thương lượng | -> **Điều khoản không hồi tố**: Người dùng đã sử dụng Toonflow theo AGPL-3.0 trước khi phát hành v1.0.8 không bị ảnh hưởng. Việc sử dụng hiện tại tiếp tục theo AGPL-3.0. +> **Điều khoản Không hồi tố**: Những người dùng đã sử dụng Toonflow dưới giấy phép AGPL-3.0 trước khi phát hành phiên bản v1.0.8 sẽ tiếp tục tuân theo AGPL-3.0 và không bị ràng buộc bởi sự thay đổi thỏa thuận này. -Xem thỏa thuận đầy đủ tại [LICENSE](../LICENSE). +Xem toàn bộ thỏa thuận tại tệp [LICENSE](./LICENSE). --- -# ⭐️ Lịch sử đánh dấu sao +# ⭐️ Lịch sử Thả sao (Star History) [![Star History Chart](https://api.star-history.com/svg?repos=HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left)](https://www.star-history.com/#HBAI-Ltd/Toonflow-app&type=timeline&legend=top-left) --- -# 🙏 Lời cảm ơn +# 🙏 Lời Cảm ơn -Cảm ơn các dự án open source sau đã hỗ trợ Toonflow mạnh mẽ: +Xin cảm ơn các dự án mã nguồn mở sau đây đã hỗ trợ đắc lực cho Toonflow: -- [Express](https://expressjs.com/) - Framework Web Node.js nhanh, mở, gọn nhẹ -- [AI SDK](https://ai-sdk.dev/) - Bộ tool AI cho TypeScript -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - Bindings SQLite3 hiệu năng cao -- [Sharp](https://sharp.pixelplumbing.com/) - Thư viện xử lý ảnh Node.js nhanh +- [Express](https://expressjs.com/) - Web framework cho Node.js cực nhanh và tối giản +- [AI SDK](https://ai-sdk.dev/) - Bộ công cụ AI dành cho TypeScript +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - Thư viện liên kết SQLite3 hiệu suất cao +- [Sharp](https://sharp.pixelplumbing.com/) - Thư viện xử lý hình ảnh Node.js hiệu suất cao - [Axios](https://axios-http.com/) - HTTP client dựa trên Promise -- [Zod](https://zod.dev/) - Library kiểm tra schema ưu tiên TypeScript -- [Socket.IO](https://socket.io/) - Engine realtime song phương sự kiện -- [Electron](https://www.electronjs.org/) - Framework phát triển desktop app đa nền tảng -- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - Thư viện infer ML local +- [Zod](https://zod.dev/) - Thư viện xác thực Schema ưu tiên TypeScript +- [Socket.IO](https://socket.io/) - Công cụ giao tiếp sự kiện hai chiều thời gian thực +- [Electron](https://www.electronjs.org/) - Framework phát triển ứng dụng Desktop đa nền tảng +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - Thư viện suy luận Machine Learning tại Local -Cảm ơn các tổ chức/đơn vị/cá nhân sau đã hỗ trợ Toonflow: +Xin cảm ơn các tổ chức/đơn vị/cá nhân sau đây đã hỗ trợ cho Toonflow:
- 算能云 Logo + Sophnet Logo - Suanneng Cloud tài trợ năng lực tính toán - [Trang chủ] + Sophnet (算能云) Tài trợ năng lực tính toán (Computing power) + [Website]
-Danh sách phụ thuộc bên thứ ba, vui lòng xem `NOTICES.txt` +Vui lòng xem danh sách đầy đủ các thư viện phụ thuộc của bên thứ ba trong tệp `NOTICES.txt`. -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### Copyright © Huaibei AIA Network Technology Co., Ltd. \ No newline at end of file diff --git a/docs/README.zhtw.md b/docs/README.zhtw.md index 029312b..4c760aa 100644 --- a/docs/README.zhtw.md +++ b/docs/README.zhtw.md @@ -1,4 +1,4 @@ -

+

GitHub @@ -8,19 +8,18 @@  |  - Atomgit - Atomgit + Atomgit

- 简体中文 | + 简体中文 | 繁體中文 | English | - ไทย | - Tiếng Việt | - 日本語 | - Русский + ไทย | + Tiếng Việt | + 日本語 | + Русский

@@ -31,11 +30,11 @@

- AI短劇工廠 + AI 短劇工廠
- 一鍵點擊,小說秒變短劇! + 動動手指,小說秒變劇集!
- AI劇本 × AI視覺 × 渦輪生成 🔥 + AI 劇本 × AI 影像 × 極速生成 🔥

@@ -50,7 +49,7 @@

- > 🚀 **一站式短劇生產**:從文本到人物、從分鏡到影片,零門檻全流程AI,10倍以上創作效率! + > 🚀 **一站式短劇工程**:從文字到角色,從分鏡到影片,0 門檻全流程 AI 化,創作效率提升 10 倍+!
--- @@ -59,164 +58,169 @@ Toonflow 支援以下語言介面: -| 語言 | Language | -|------|----------| -| 简体中文 | Chinese (Simplified) | -| 繁體中文 | Chinese (Traditional) | -| English | English | -| ไทย | Thai | -| Tiếng Việt | Vietnamese | -| 日本語 | Japanese | -| Русский | Russian | +| 語言 | Language | +|--------------|---------------------------| +| 简体中文 | Chinese (Simplified) | +| 繁體中文 | Chinese (Traditional) | +| English | English | +| ไทย | Thai | +| Tiếng Việt | Vietnamese | +| 日本語 | Japanese | +| Русский | Russian | + +> 💡 更多語言正在適配中,歡迎貢獻翻譯! --- # 🌟 主要功能 -Toonflow 是一款AI短劇漫畫工具,利用AI自動將小說轉換為劇本,並用AI生成圖片、視頻,助力高效短劇製作。有了Toonflow,您可輕鬆完成從文本到圖片的全流程操作,讓短劇製作更智能、更便捷。 +Toonflow 是一款 AI 短劇與漫畫創作工具,能夠利用 AI 技術將小說自動轉化為劇本,並結合 AI 生成的圖像與影片,高效完成短劇製作。透過 Toonflow,您可以輕鬆完成從文字到最終影片的全流程,讓短劇創作變得更加智能與便捷。 + +- ✅ **角色生成** + 自動分析原始小說文本,智能識別並建立角色設定,包含外貌、性格、身份等詳細資訊,為後續劇本與畫面創作提供堅實基礎。 -- ✅ **人物生成** - 自動解析原小說文本,智能識別並生成人物設定,包括外貌、性格、身份等,為後續劇本和視覺創作提供穩固基礎。 - ✅ **劇本生成** - 根據所選事件和章節,系統自動生成結構化劇本,涵蓋對話、場景描述、劇情走向,實現文學文本向影視劇本高效轉化。 -- ✅ **分鏡製作** - 根據劇本內容,智能生成分鏡提示與視覺設計,細化前景/中景/背景、人物動態、道具設定與場景佈局,自動將劇本轉換為分鏡,為影片製作提供完整藍圖。 + 根據選定的事件與章節,系統自動產生結構清晰的劇本,包含自然對白、場景描述與劇情發展,高效將文學作品轉化為影視劇本。 + +- ✅ **分鏡製作 (Storyboard)** + 根據劇本自動生成分鏡提示詞與畫面設計,細化前、中、後景、角色動作、道具與場景佈局,為影片製作提供完整的藍圖。 + - ✅ **影片合成** - 集成AI圖像與視頻技術,通過AI生成視頻片段,支持線上編輯與個性化輸出調整,讓影視製作協同高效。 + 整合 AI 圖像與影片生成技術,可產生高品質影片片段。內建線上剪輯功能,支援個人化調整,讓創作過程更順暢快速。 --- # 📦 應用場景 -- 短視頻內容創作 -- 小說改編影視實驗 -- AI文學改編工具 -- 劇本開發與快速原型 +- 短影音內容創作 +- 小說影視化實驗 +- AI 文學改編工具 +- 劇本開發與快速原型製作 - 影片素材生成 --- -# 🔰 用戶指南 +# 🔰 使用指南 -## 📺 視頻教程 +## 📺 影片教學 -https://www.bilibili.com/video/BV1na6wB6Ea2 -[![Toonflow 8分鐘快速上手AI視頻](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) +[https://www.bilibili.com/video/BV1na6wB6Ea2](https://www.bilibili.com/video/BV1na6wB6Ea2) +[![Toonflow 8 分鐘快速上手 AI 影片](./videoCover.png)](https://www.bilibili.com/video/BV1na6wB6Ea2) -**Toonflow 8分鐘快速上手AI視頻** -👉 [點此觀看](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) +**Toonflow 8 分鐘快速上手 AI 影片** +👉 [點擊觀看](https://www.bilibili.com/video/BV1na6wB6Ea2/?share_source=copy_web&vd_source=5b718c25439a901a34c7bc0c1d35b38e) -📱 用手機微信掃碼觀看 +📱 使用手機掃描 QR Code 觀看 -Scan WeChat to Watch +掃描 QR Code 觀看 --- -# 🚀 安裝方法 +# 🚀 安裝 -## 前置準備 +## 前置條件 -安裝與使用前請準備以下內容: +安裝並使用本軟體前,請先準備以下項目: -- ✅ 大語言模型AI服務API地址 -- ✅ Sora或豆包視頻服務API地址 -- ✅ Nano Banana Pro圖像生成模型API +- ✅ 大型語言模型 (LLM) 的 API 網址 +- ✅ Sora 或豆包影片生成服務的 API 網址 +- ✅ Nano Banana Pro 圖像生成模型的 API 網址 -## 本地安裝 +## 本機安裝 -### 1. 下載安裝 +### 1. 下載與安裝 -| 作業系統 | GitHub | Atomgit | 夸克網盤下載 | 說明 | +| 作業系統 | GitHub | Atomgit | 夸克網碟下載 | 說明 | | :------: | :----------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------- | :------------- | -| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網盤](https://pan.quark.cn/s/94ef07509df0) | 官方發布安裝包 | -| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網盤](https://pan.quark.cn/s/94ef07509df0) | 官方發布安裝包 | -| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網盤](https://pan.quark.cn/s/94ef07509df0) | 官方發布安裝包 | +| Windows | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網碟](https://pan.quark.cn/s/94ef07509df0) | 官方發佈安裝包 | +| Linux | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網碟](https://pan.quark.cn/s/94ef07509df0) | 官方發佈安裝包 | +| macOS | [Release](https://github.com/HBAI-Ltd/Toonflow-app/releases) | [Release](https://gitcode.com/HBAI-Ltd/Toonflow-app/releases) | [夸克網碟](https://pan.quark.cn/s/94ef07509df0) | 官方發佈安裝包 | > [!CAUTION] -> MacOS上需進入設定–隱私安全配置安全設定,否則可能因憑證問題無法打開應用。 +> MacOS 系統請至「系統設定」-「隱私權與安全性」設定安全性,否則可能因憑證問題無法正常開啟。 > -> 參考知乎文檔:[https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) +> 參考知乎教學:[https://www.zhihu.com/question/433389276](https://www.zhihu.com/question/433389276) -> 受Gitee作業系統環境與釋出檔案大小限制,目前Gitee釋出下載暫不開放。 +> 因 Gitee OS 環境限制及 Release 檔案上傳大小限制,暫不提供 Gitee Release 下載連結。 ### 2. 啟動服務 安裝完成後,啟動程式即可開始使用本服務。 -> ⚠️ **首次登入** -> 用戶名:`admin` +> ⚠️ **首次登入** +> 帳號:`admin` > 密碼:`admin123` -## Docker部署 +## Docker 部署 -### 前置準備 +### 前置條件 -- 已安裝 [Docker](https://docs.docker.com/get-docker/)(20.10+) +- 已安裝 [Docker](https://docs.docker.com/get-docker/)(版本 20.10+) -### 方法一:線上部署 +### 方式一:線上部署 -待開發,現請使用本地構建。 +待完善,暫時使用本機建置。 -### 方法二:本地構建 +### 方式二:本機建置 -適用於開發者或已克隆源碼的用戶,需本地安裝Git: +使用本機已有的原始碼直接建置,適合開發者或已 Clone 儲存庫的使用者,這需要您在本機安裝 git: ```shell -# 克隆專案(已克隆則略過) +# 先 Clone 專案(若已有則跳過) git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app -# 用docker-compose本地構建啟動 +# 使用 docker-compose 進行本機建置並啟動 yarn docker:local -# 或手動構建 +# 或者手動建置 docker build -t toonflow . -docker run -d -p :10588 -v :/app/data toonflow +docker run -d -p <本機 Port>:10588 -v <本機資料路徑>:/app/data toonflow -# 完成後可通過映射端口/web/index.html訪問 -# 如 http://localhost:10588/web/index.html +# 此時在相應 Port 的 /web/index.html 路徑即可存取頁面 +# 例如 http://localhost:10588/web/index.html ``` -### 服務端口說明 +### 服務 Port 說明 -| 端口 | 用途 | 部署映射 | -| -------- |------------| -------------------- | -| `10588` | 應用介面 | `10588:10588` | +| Port | 用途 | 部署對應 | +| ------- | -------- | ------------- | +| `10588` | 軟體介面 | `10588:10588` | **環境變數說明:** -| 變數 | 說明 | -| -------------- | ------------------------------------------ | -| `NODE_ENV` | 環境,生產用`prod` | -| `PORT` | 服務監聽端口(預設10588) | -| `OSSURL` | 靜態檔案存取地址 | +| 變數 | 說明 | +| ---------- | ---------------------------------- | +| `NODE_ENV` | 執行環境,`prod` 表示正式環境 | +| `PORT` | 服務監聽 Port(預設 10588) | +| `OSSURL` | 檔案儲存存取網址,用於靜態資源存取 | --- -## 雲端部署 +## ☁️ 雲端部署 -### 1. 伺服器需求 +### 一、伺服器環境要求 -- **作業系統:** Ubuntu 20.04+ / CentOS 7+ -- **Node.js:** 24.x(推薦,最低23.11.1+) -- **記憶體:** 2GB+ +- **系統**:Ubuntu 20.04+ / CentOS 7+ +- **Node.js**:24.x(推薦,最低 23.11.1+) +- **記憶體**:2GB+ -### 2. 伺服器部署 +### 二、伺服器部署 #### 1. 安裝環境 ```bash -# 安裝Node.js +# 安裝 Node.js curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 24 -# 安裝Yarn與PM2 +# 安裝 Yarn 和 PM2 npm install -g yarn pm2 ``` -#### 2. 專案部署 +#### 2. 部署專案 -**GitHub克隆:** +**從 GitHub Clone:** ```bash cd /opt @@ -226,7 +230,7 @@ yarn install yarn build ``` -**Gitee克隆(中國大陸推薦):** +**從 Gitee Clone(內地網路使用):** ```bash cd /opt @@ -236,9 +240,9 @@ yarn install yarn build ``` -#### 3. 配置PM2 +#### 3. 設定 PM2 -新建`pm2.json`: +建立 `pm2.json` 檔案: ```json { @@ -256,11 +260,11 @@ yarn build **環境變數說明:** -| 變數 | 說明 | -| -------------- | ------------------------------------------ | -| `NODE_ENV` | 環境,生產用`prod` | -| `PORT` | 服務監聽端口 | -| `OSSURL` | 靜態檔案存取地址 | +| 變數 | 說明 | +| ---------- | ---------------------------------- | +| `NODE_ENV` | 執行環境,`prod` 表示正式環境 | +| `PORT` | 服務監聽 Port | +| `OSSURL` | 檔案儲存存取網址,用於靜態資源存取 | --- @@ -272,80 +276,80 @@ pm2 startup pm2 save ``` -#### 5. 常用命令 +#### 5. 常用指令 ```bash -pm2 list # 查看進程列表 +pm2 list # 查看處理程序 pm2 logs toonflow-app # 查看日誌 -pm2 restart all # 重啟服務 +pm2 restart all # 重新啟動服務 pm2 monit # 監控面板 ``` -> ⚠️ **首次登入** -> 用戶名:`admin` +> ⚠️ **首次登入** +> 帳號:`admin` > 密碼:`admin123` -#### 6. 前端網站部署 +#### 6. 部署前端網站 -若需單獨部署前端或自定義,參見前端專案: +若需單獨部署或客製化前端介面,請參考前端儲存庫: -- **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) -- **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) +- **GitHub**:[Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) +- **Gitee**:[Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -> 💡 **注意:** 本專案已預設內建前端,普通用戶無需單獨部署。前端源碼主要供開發者二次開發使用。 +> 💡 **說明**:本儲存庫已內建編譯好的前端資源,一般使用者無需單獨部署前端。前端儲存庫僅供需要二次開發的開發者使用。 --- -# 🔧 開發指南 +# 🔧 開發流程指南 > [!CAUTION] -> 🚧 **PR提交規範** 🚧 +> 🚧 **PR 提交規範** 🚧 > -> ⛔ `master`分支不接受PR | ✅ 請提交至`develop`分支 +> ⛔ `master` 分支不接受任何 PR | ✅ 請將 PR 提交到 `develop` 分支 > -> 歡迎開發者協同合作,共同開發Toonflow。欲加入請聯繫owner ACT入群。 +> 歡迎開發者們共同參與 Toonflow 的共創。如有興趣加入,請在交流群內聯絡主理人 ACT -## 🛠️ 技術棧 +## 🛠️ 技術堆疊 -| 分類 | 技術 | -| ----------- | -------------------------------------------------------------------------------------- | -| 運行環境 | Node.js 23.11.1+ | -| 語言 | TypeScript 5.x | -| 後端 | Express 5 | -| 資料庫 | SQLite(better-sqlite3 / knex) | -| AI接入 | Vercel AI SDK(OpenAI / Anthropic / Google / DeepSeek / 智譜 / MiniMax / Qwen / xAI)| -| 本地推理 | @huggingface/transformers(ONNX) | -| 實時通信 | Socket.IO | -| 桌面端 | Electron 40 | -| 影像處理 | Sharp | -| 容器化 | Docker | +| 類別 | 技術 | +| ---------- | ----------------------------------------------------------------------------------------- | +| 執行環境 | Node.js 23.11.1+ | +| 語言 | TypeScript 5.x | +| 後端框架 | Express 5 | +| 資料庫 | SQLite(better-sqlite3 / knex) | +| AI 整合 | Vercel AI SDK(OpenAI / Anthropic / Google / DeepSeek / 智譜 / MiniMax / 通義千問 / xAI) | +| 本機推論 | @huggingface/transformers(ONNX) | +| 即時通訊 | Socket.IO | +| 桌面用戶端 | Electron 40 | +| 影像處理 | Sharp | +| 容器化 | Docker | ## 開發環境準備 -- **Node.js**:需23.11.1以上版本 -- **Yarn**:推薦作為包管理器 +- **Node.js**:版本要求 23.11.1 及以上 +- **Yarn**:推薦作為專案套件管理員 -## 快速上手 +## 快速啟動專案 -1. **克隆專案** +1. **Clone 專案** - **GitHub克隆:** + **從 GitHub Clone:** ```bash git clone https://github.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` - **Gitee克隆(大陸推薦):** + **從 Gitee Clone(內地網路使用):** ```bash git clone https://gitee.com/HBAI-Ltd/Toonflow-app.git cd Toonflow-app ``` -2. **安裝依賴** +2. **安裝相依套件** - 在專案根目錄執行: + 請先在專案根目錄下執行以下指令以安裝相依套件: ```bash yarn install @@ -353,69 +357,69 @@ pm2 monit # 監控面板 3. **啟動開發環境** - 本專案包含 **後端API服務** 和 **前端介面**,按需啟動: + 本專案包含 **後端 API 服務** 和 **前端頁面** 兩部分,請根據需要選擇啟動方式: - - **方案1:僅啟動後端服務** + - **方式一:僅啟動後端服務** ```bash yarn dev ``` - > ⚠️ 此命令僅啟動後端API(10588端口),沒有Web介面。僅可存取API,完整UI需啟動前端專案或用下述GUI模式。 + > ⚠️ 此指令僅啟動後端 API 服務(Port 10588),**不包含前端頁面**。直接瀏覽 `http://localhost:10588` 只能呼叫 API 介面,無法看到完整的網頁介面。若需同時使用前端頁面,請配合前端專案單獨啟動,或使用下方的 GUI 模式。 - - **方案2:啟動Electron桌面客戶端** + - **方式二:啟動 Electron 桌面用戶端** ```bash yarn dev:gui ``` - > 此命令即啟動後端又開Electron視窗,內建Web UI。開箱即用,體驗完整。 + > 此指令會同時啟動後端服務和 Electron 桌面視窗,內建前端頁面,開箱即用,無需額外設定。適合想要完整體驗所有功能的開發者。 - - **方案3:生產模式啟動** + - **方式三:正式環境模式啟動** ```bash yarn start ``` - > 編譯後以生產模式運行(需先執行`yarn build`)。 + > 以生產模式直接執行編譯後的服務(需先執行 `yarn build`)。 -4. **構建專案** +4. **專案打包建置** - - 編譯TypeScript: + - 編譯並產生 TypeScript 檔案: ```bash yarn build ``` - - Windows可執行檔打包: + - 打包為 Windows 平台執行檔: ```bash yarn dist:win ``` - - Mac打包: + - 打包為 Mac 平台執行檔: ```bash yarn dist:mac ``` - - Linux打包: + - 打包為 Linux 平台執行檔: ```bash yarn dist:linux ``` -5. **代碼質量檢查** +5. **程式碼品質檢查 (Lint)** - - 執行Lint: + - 進行全域語法和規範檢查: ```bash yarn lint ``` -6. **AI調試面板(可選)** +6. **AI 除錯面板(選用)** - 啟動Vercel AI SDK可視化調試工具,便於AI對接調測: + 啟動 AI SDK 的視覺化除錯工具,方便對 AI 呼叫進行除錯: ```bash yarn debug:ai @@ -423,129 +427,131 @@ pm2 monit # 監控面板 ## 前端開發 -需修改前端UI,請於專用前端專案開發: +若需修改前端介面,請前往前端儲存庫進行開發: -- **GitHub**: [Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) -- **Gitee**: [Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) +- **GitHub**:[Toonflow-web](https://github.com/HBAI-Ltd/Toonflow-web) +- **Gitee**:[Toonflow-web](https://gitee.com/HBAI-Ltd/Toonflow-web) -前端打包後將`dist`內容複製至本專案`data/web`即可集成。 +前端建置後,將 `dist` 目錄內容複製到本專案的 `data/web` 目錄即可整合。 ## 專案結構 ``` -📂 build/ # 編譯產物 -📂 data/ # 運行時資料 -│ ├─ 📂 models/ # 本地推理模型(ONNX) +📂 build/ # 編譯產物 +📂 data/ # 執行時資料 +│ ├─ 📂 models/ # 本機推論模型(ONNX) │ ├─ 📂 oss/ # 物件儲存(素材/角色/場景) -│ ├─ 📂 serve/ # 生產模式入口 -│ ├─ 📂 skills/ # Agent技能提示 -│ └─ 📂 web/ # 前端資產 -📂 ./ # 文檔資產 -📂 env/ # 環境配置 -📂 scripts/ # 構建與輔助腳本 +│ ├─ 📂 serve/ # 正式環境入口 +│ ├─ 📂 skills/ # Agent 技能提示詞 +│ └─ 📂 web/ # 前端編譯產物(內建) +📂 docs/ # 文件資源 +📂 env/ # 環境設定 +📂 scripts/ # 建置與輔助腳本 📂 src/ -├─ 📂 agents/ # AI Agent模組 -│ ├─ 📂 productionAgent/ # 製作Agent -│ └─ 📂 scriptAgent/ # 劇本Agent -├─ 📂 lib/ # 通用庫(資料庫、響應) -├─ 📂 middleware/ # 中間件 -├─ 📂 routes/ # API路由 -│ ├─ 📂 agents/ # Agent記憶管理 -│ ├─ 📂 artStyle/ # 美術風格管理 +├─ 📂 agents/ # AI Agent 模組 +│ ├─ 📂 productionAgent/ # 製作 Agent +│ └─ 📂 scriptAgent/ # 劇本 Agent +├─ 📂 lib/ # 公用函式庫(資料庫初始化、回應格式) +├─ 📂 middleware/ # 中介軟體 +├─ 📂 routes/ # 路由模組 +│ ├─ 📂 agents/ # Agent 記憶管理 +│ ├─ 📂 artStyle/ # 畫風管理 │ ├─ 📂 assets/ # 素材管理 │ ├─ 📂 assetsGenerate/ # 素材生成 │ ├─ 📂 cornerScape/ # 分鏡管理 -│ ├─ 📂 general/ # 通用API -│ ├─ 📂 login/ # 認證 -│ ├─ 📂 migrate/ # 資料遷移 +│ ├─ 📂 general/ # 通用 API +│ ├─ 📂 login/ # 登入認證 +│ ├─ 📂 migrate/ # 資料轉移 │ ├─ 📂 modelSelect/ # 模型選擇 │ ├─ 📂 novel/ # 小說管理 │ ├─ 📂 other/ # 其他功能 │ ├─ 📂 production/ # 製作管理 │ ├─ 📂 project/ # 專案管理 │ ├─ 📂 script/ # 劇本生成 -│ ├─ 📂 scriptAgent/ # 劇本Agent API +│ ├─ 📂 scriptAgent/ # 劇本 Agent 介面 │ ├─ 📂 setting/ # 系統設定 │ ├─ 📂 task/ # 任務管理 -│ └─ 📂 test/ # 測試API -├─ 📂 socket/ # WebSocket通訊 -├─ 📂 types/ # TypeScript型別 +│ └─ 📂 test/ # 測試介面 +├─ 📂 socket/ # WebSocket 即時通訊 +├─ 📂 types/ # TypeScript 類型宣告 ├─ 📂 utils/ # 工具函式 ├─ 📄 app.ts # 應用入口 ├─ 📄 core.ts # 核心初始化 -├─ 📄 env.ts # 環境變數 +├─ 📄 env.ts # 環境變數處理 ├─ 📄 err.ts # 錯誤處理 ├─ 📄 logger.ts # 日誌模組 ├─ 📄 router.ts # 路由註冊 └─ 📄 utils.ts # 通用工具 -📄 Dockerfile # Docker構建 -📄 electron-builder.yml # Electron打包配置 -📄 skillList.json # 技能列表 -📄 LICENSE # (Apache-2.0) 授權 -📄 NOTICES.txt # 第三方依賴 -📄 package.json # 專案配置 -📄 tsconfig.json # TypeScript配置 +📄 Dockerfile # Docker 建置檔案 +📄 electron-builder.yml # Electron 打包設定 +📄 skillList.json # 技能清單 +📄 LICENSE # 授權條款(Apache-2.0) +📄 NOTICES.txt # 第三方相依套件聲明 +📄 package.json # 專案設定 +📄 tsconfig.json # TypeScript 設定 ``` --- -# 🔗 相關倉庫 +# 🔗 相關儲存庫 -| 倉庫 | 說明 | GitHub | Gitee | -| -------------- | -------------------------- | ------------------------------------------------- | -------------------------------------------------- | -| **Toonflow-app** | 完整客戶端(本倉庫,供用戶) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app)| [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | -| **Toonflow-web** | 前端源碼(前端開發者用) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web)| [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | +| 儲存庫 | 說明 | GitHub | Gitee | +| ---------------- | ---------------------------------- | -------------------------------------------------- | ------------------------------------------------ | +| **Toonflow-app** | 完整用戶端(本儲存庫,推薦一般使用者) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-app) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-app) | +| **Toonflow-web** | 前端原始碼(適合前端開發者) | [GitHub](https://github.com/HBAI-Ltd/Toonflow-web) | [Gitee](https://gitee.com/HBAI-Ltd/Toonflow-web) | -> 💡 **提醒:** 若僅需使用Toonflow,直接下載本倉庫客戶端即可。前端源碼僅供需二次開發或UI自訂者使用。 +> 💡 **提示**:如果您只是想使用 Toonflow,直接下載本儲存庫的用戶端即可。前端儲存庫僅供需要二次開發或客製化前端介面的開發者使用。 --- -# 👨‍👩‍👧‍👦 微信交流群 +# 👨‍👩‍👧‍👦 Discord 交流群組 -群助手: +點擊下方圖示加入 Discord: -Toonflow QR +[![Join our Discord](https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/67d00cf7266d2c75571aebde_Example.svg)](https://discord.gg/HEjKmpNpAZ) + +或直接點擊連結: [https://discord.gg/HEjKmpNpAZ](https://discord.gg/HEjKmpNpAZ) --- -# 💌 聯繫我們 +# 💌 聯絡我們 -📧 郵箱:[ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow inquiry) +📧 信箱:[ltlctools@outlook.com](mailto:ltlctools@outlook.com?subject=Toonflow諮詢) --- -# 📜 開源協議 +# 📜 授權條款 -Toonflow 基於 Apache-2.0 協議開源發布,並附有補充商業協議。 +Toonflow 基於 Apache-2.0 協定開源發佈,並附有補充商業協議。 -授權詳情:https://www.apache.org/licenses/LICENSE-2.0 +授權條款詳情:https://www.apache.org/licenses/LICENSE-2.0 ## 補充協議 -- 若將本軟體以產品形式分發給 **2 個及以上獨立第三方**使用,須取得 HBAI-Ltd **書面商業授權**。 -- **≤ 5 個法人**聯合運營內部使用,不對外提供服務的,視為內部使用,**無需授權**。 +- 若將本軟體以產品形式散佈給 **2 個及以上獨立第三方**使用,須取得 HBAI-Ltd **書面商業授權**。 +- **≤ 5 個法人**聯合營運內部使用,不對外提供服務的,視為內部使用,**無需授權**。 - 不得刪除或修改 Toonflow 中的標識或版權資訊。 ## 永久免費場景 -- ✅ 用 Toonflow 製作內容並獲得平台分帳 +- ✅ 用 Toonflow 製作內容並獲得平台分潤 - ✅ 二次開發供自己團隊內部使用 -- ✅ ≤ 5 個法人聯合運營內部使用 +- ✅ ≤ 5 個法人聯合營運內部使用 - ✅ 個人學習、研究、非商業用途 -## 商業授權定價 +## 商業授權定價(人民幣) -| 階段 | 年銷售額 | 年費 | -|------|---------|------| -| 🌱 扶持期 | < ¥10 萬 | **免費** | -| 🚀 初創期 | ¥10–50 萬 | ¥5,000/年 | -| 📈 成長期 | ¥50–150 萬 | ¥20,000/年 | -| 🏢 規模期 | ¥150–500 萬 | ¥80,000/年 | -| 🌐 企業級 | > ¥500 萬 | 面議 | +| 階段 | 年營業額 | 年費 | +|------------|---------------------------|-------------------| +| 🌱 扶持期 | < 10 萬人民幣 | **免費** | +| 🚀 初創期 | 10–50 萬人民幣 | ¥5,000 / 年 | +| 📈 成長期 | 50–150 萬人民幣 | ¥20,000 / 年 | +| 🏢 規模期 | 150–500 萬人民幣 | ¥80,000 / 年 | +| 🌐 企業級 | > 500 萬人民幣 | 面議 | -> **不追溯條款**:v1.0.8 發布前基於 AGPL-3.0 使用的用戶,繼續按 AGPL-3.0 執行,不受本協議變更約束。 +> **不溯及既往條款**:v1.0.8 發佈前基於 AGPL-3.0 使用的使用者,繼續按 AGPL-3.0 執行,不受本協議變更約束。 -完整協議詳見 [LICENSE](../LICENSE) 檔案。 +完整協議詳見 [LICENSE](./LICENSE) 檔案。 --- @@ -555,34 +561,34 @@ Toonflow 基於 Apache-2.0 協議開源發布,並附有補充商業協議。 --- -# 🙏 感謝 +# 🙏 致謝 -感謝以下開源專案對Toonflow的支持: +感謝以下開源專案為 Toonflow 提供強大支援: -- [Express](https://expressjs.com/) - 快速、開放、極簡的Node.js Web框架 -- [AI SDK](https://ai-sdk.dev/) - TypeScript優先的AI工具包 -- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - 高效能SQLite3綁定 -- [Sharp](https://sharp.pixelplumbing.com/) - Node.js高性能影像工具 -- [Axios](https://axios-http.com/) - Promise的HTTP用戶端 -- [Zod](https://zod.dev/) - TypeScript優先的型別驗證庫 -- [Socket.IO](https://socket.io/) - 實時雙向事件框架 -- [Electron](https://www.electronjs.org/) - 跨平台桌面應用框架 -- [Hugging Face Transformers](https://huggingface.co./transformers.js) - 本地ML推理庫 +- [Express](https://expressjs.com/) - 快速、開放、極簡的 Node.js Web 框架 +- [AI SDK](https://ai-sdk.dev/) - 面向 TypeScript 的 AI 工具包 +- [Better-SQLite3](https://github.com/WiseLibs/better-sqlite3) - 高效能 SQLite3 綁定庫 +- [Sharp](https://sharp.pixelplumbing.com/) - 高效能 Node.js 影像處理庫 +- [Axios](https://axios-http.com/) - 基於 Promise 的 HTTP 用戶端 +- [Zod](https://zod.dev/) - TypeScript 優先的結構驗證庫 +- [Socket.IO](https://socket.io/) - 即時雙向事件通訊引擎 +- [Electron](https://www.electronjs.org/) - 跨平台桌面應用開發框架 +- [Hugging Face Transformers](https://huggingface.co/docs/transformers.js) - 本機 ML 推論庫 -感謝以下組織/個人的支持: +感謝以下組織/單位/個人為 Toonflow 提供支援:
- SophNet Logo + 算能雲 Logo - SophNet Cloud 提供算力贊助 - [官方網站] + 算能雲 提供算力贊助 + [官網]
-完整第三方依賴列表請見 `NOTICES.txt` +完整的第三方相依性清單請查閱 `NOTICES.txt` -##### copyright © 淮北艾阿网络科技有限公司 \ No newline at end of file +##### copyright © 淮北艾阿網絡科技有限公司 \ No newline at end of file diff --git a/scripts/main.ts b/scripts/main.ts index 873c506..b793b20 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -55,8 +55,6 @@ function initializeData(): void { } } - console.log("%c Line:55 🍕 shouldForceReplace", "background:#2eafb0", shouldForceReplace); - for (const dir of TARGET_ENTRIES) { const targetDir = path.join(destDir, dir); if (shouldForceReplace) {