From 9e182d86e02ce61715f375c1af90b45572e4bbba Mon Sep 17 00:00:00 2001 From: arkleselect Date: Fri, 14 Aug 2026 11:52:56 +0800 Subject: [PATCH 01/83] fix: restore macOS preview compilation --- .../Process/MacProcessMemorySampler.swift | 33 +++- Sources/Lithe/Views/GenericDebugView.swift | 166 +++++++++--------- Sources/Lithe/Views/RunView.swift | 105 +++++------ 3 files changed, 171 insertions(+), 133 deletions(-) diff --git a/Sources/Lithe/Platform/MacOS/Process/MacProcessMemorySampler.swift b/Sources/Lithe/Platform/MacOS/Process/MacProcessMemorySampler.swift index 51c9de8c5..f086a2239 100644 --- a/Sources/Lithe/Platform/MacOS/Process/MacProcessMemorySampler.swift +++ b/Sources/Lithe/Platform/MacOS/Process/MacProcessMemorySampler.swift @@ -1,6 +1,23 @@ import Darwin import Foundation +// Command Line Tools SDKs ship libproc.h without exposing its functions through +// Swift's Darwin module, so bind the stable libSystem symbols locally. +@_silgen_name("proc_listallpids") +private func litheProcListAllPIDs( + _ buffer: UnsafeMutableRawPointer?, + _ bufferSize: Int32 +) -> Int32 + +@_silgen_name("proc_pidinfo") +private func litheProcPIDInfo( + _ processID: pid_t, + _ flavor: Int32, + _ argument: UInt64, + _ buffer: UnsafeMutableRawPointer?, + _ bufferSize: Int32 +) -> Int32 + /// macOS process-tree RSS sampler. The registry contains only roots owned by /// Lithe, so terminal and updater processes are never folded into the total. struct MacProcessMemorySampler: ManagedProcessMemorySampling { @@ -17,14 +34,14 @@ struct MacProcessMemorySampler: ManagedProcessMemorySampling { func residentMemoryBytes(for processIDs: Set) -> UInt64 { guard !processIDs.isEmpty else { return 0 } - let estimatedCount = max(1024, Int(proc_listallpids(nil, 0)) + 64) + let estimatedCount = max(1024, Int(litheProcListAllPIDs(nil, 0)) + 64) var all = [pid_t](repeating: 0, count: estimatedCount) - let count = Int(proc_listallpids(&all, Int32(all.count * MemoryLayout.stride))) + let count = Int(litheProcListAllPIDs(&all, Int32(all.count * MemoryLayout.stride))) guard count > 0 else { return direct(processIDs) } var parents: [pid_t: pid_t] = [:] for pid in all.prefix(count) where pid > 0 { var info = proc_bsdinfo() - let size = proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, Int32(MemoryLayout.size(ofValue: info))) + let size = litheProcPIDInfo(pid, PROC_PIDTBSDINFO, 0, &info, Int32(MemoryLayout.size(ofValue: info))) if size > 0 { parents[pid] = pid_t(info.pbi_ppid) } } let roots = Set(processIDs.map { pid_t($0) }) @@ -39,7 +56,7 @@ struct MacProcessMemorySampler: ManagedProcessMemorySampling { } guard belongs else { continue } var task = proc_taskinfo() - let size = proc_pidinfo(pid, PROC_PIDTASKINFO, 0, &task, Int32(MemoryLayout.size(ofValue: task))) + let size = litheProcPIDInfo(pid, PROC_PIDTASKINFO, 0, &task, Int32(MemoryLayout.size(ofValue: task))) if size > 0 { total += UInt64(task.pti_resident_size) } } return total @@ -48,7 +65,13 @@ struct MacProcessMemorySampler: ManagedProcessMemorySampling { private func direct(_ processIDs: Set) -> UInt64 { processIDs.reduce(0) { total, id in var task = proc_taskinfo() - let size = proc_pidinfo(pid_t(id), PROC_PIDTASKINFO, 0, &task, Int32(MemoryLayout.size(ofValue: task))) + let size = litheProcPIDInfo( + pid_t(id), + PROC_PIDTASKINFO, + 0, + &task, + Int32(MemoryLayout.size(ofValue: task)) + ) return total + (size > 0 ? UInt64(task.pti_resident_size) : 0) } } diff --git a/Sources/Lithe/Views/GenericDebugView.swift b/Sources/Lithe/Views/GenericDebugView.swift index 9d611a1fa..6a98f69c5 100644 --- a/Sources/Lithe/Views/GenericDebugView.swift +++ b/Sources/Lithe/Views/GenericDebugView.swift @@ -92,102 +92,110 @@ struct GenericDebugView: View { private var inspector: some View { ScrollView { LazyVStack(alignment: .leading, spacing: 0) { - sectionHeader("Breakpoints", count: feature.breakpoints.count) - if feature.breakpoints.isEmpty { - placeholder("Click the editor gutter to add a breakpoint") - } else { - ForEach(feature.breakpoints) { breakpoint in - HStack(spacing: 7) { - Image(systemName: breakpoint.verified ? "circle.fill" : "circle") - .font(.system(size: 8)) - .foregroundStyle(breakpoint.verified ? LitheTheme.error : LitheTheme.warning) - Text(breakpoint.title) - .font(.system(size: 11, design: .monospaced)) - .lineLimit(1) - Spacer(minLength: 0) + Group { + sectionHeader("Breakpoints", count: feature.breakpoints.count) + if feature.breakpoints.isEmpty { + placeholder("Click the editor gutter to add a breakpoint") + } else { + ForEach(feature.breakpoints) { breakpoint in + HStack(spacing: 7) { + Image(systemName: breakpoint.verified ? "circle.fill" : "circle") + .font(.system(size: 8)) + .foregroundStyle(breakpoint.verified ? LitheTheme.error : LitheTheme.warning) + Text(breakpoint.title) + .font(.system(size: 11, design: .monospaced)) + .lineLimit(1) + Spacer(minLength: 0) + } + .help(breakpoint.message ?? breakpoint.title) + .padding(.horizontal, 10) + .frame(height: 27) } - .help(breakpoint.message ?? breakpoint.title) - .padding(.horizontal, 10) - .frame(height: 27) } } - divider - sectionHeader("Threads", count: feature.threads.count) - if feature.threads.isEmpty { - Button("Load threads") { feature.inspectThreads() } - .buttonStyle(.plain) - .font(LitheTheme.smallFont) - .foregroundStyle(LitheTheme.accent) - .padding(10) - } else { - ForEach(feature.threads) { thread in - rowButton(selected: feature.selectedThreadID == thread.id) { - feature.selectThread(thread) - } label: { - Image(systemName: "circle") - Text(thread.name).lineLimit(1) + Group { + divider + sectionHeader("Threads", count: feature.threads.count) + if feature.threads.isEmpty { + Button("Load threads") { feature.inspectThreads() } + .buttonStyle(.plain) + .font(LitheTheme.smallFont) + .foregroundStyle(LitheTheme.accent) + .padding(10) + } else { + ForEach(feature.threads) { thread in + rowButton(selected: feature.selectedThreadID == thread.id) { + feature.selectThread(thread) + } label: { + Image(systemName: "circle") + Text(thread.name).lineLimit(1) + } } } } - divider - sectionHeader("Call Stack", count: feature.stackFrames.count) - if feature.stackFrames.isEmpty { - placeholder("Pause the process to inspect frames") - } else { - ForEach(feature.stackFrames) { frame in - rowButton(selected: feature.selectedFrameID == frame.id) { - feature.selectFrame(frame) - if let sourceURL = frame.sourceURL { - model.openSourceLocation( - url: sourceURL, - line: frame.line, - column: frame.column - ) - } - } label: { - Image(systemName: "chevron.right") - VStack(alignment: .leading, spacing: 1) { - Text(frame.name).lineLimit(1) + Group { + divider + sectionHeader("Call Stack", count: feature.stackFrames.count) + if feature.stackFrames.isEmpty { + placeholder("Pause the process to inspect frames") + } else { + ForEach(feature.stackFrames) { frame in + rowButton(selected: feature.selectedFrameID == frame.id) { + feature.selectFrame(frame) if let sourceURL = frame.sourceURL { - Text("\(sourceURL.lastPathComponent):\(frame.line)") - .font(.system(size: 9.5, design: .monospaced)) - .foregroundStyle(LitheTheme.secondaryText) + model.openSourceLocation( + url: sourceURL, + line: frame.line, + column: frame.column + ) + } + } label: { + Image(systemName: "chevron.right") + VStack(alignment: .leading, spacing: 1) { + Text(frame.name).lineLimit(1) + if let sourceURL = frame.sourceURL { + Text("\(sourceURL.lastPathComponent):\(frame.line)") + .font(.system(size: 9.5, design: .monospaced)) + .foregroundStyle(LitheTheme.secondaryText) + } } } } } } - divider - sectionHeader("Variables", count: feature.variables.count) - if feature.variables.isEmpty { - placeholder("Select a stack frame to inspect variables") - } else { - ForEach(feature.variables) { variable in - HStack(alignment: .firstTextBaseline, spacing: 6) { - Image(systemName: variable.isExpandable ? "chevron.right" : "circle.fill") - .font(.system(size: variable.isExpandable ? 8 : 4)) - .foregroundStyle(LitheTheme.secondaryText) - Text(variable.name) - .font(.system(size: 10.5, design: .monospaced)) - Text("=") - .foregroundStyle(LitheTheme.secondaryText) - Text(variable.value) - .font(.system(size: 10.5, design: .monospaced)) - .foregroundStyle(LitheTheme.accent) - .lineLimit(2) - Spacer(minLength: 0) - } - .contentShape(Rectangle()) - .onTapGesture { - if variable.isExpandable { - feature.loadVariables(reference: variable.variablesReference) + Group { + divider + sectionHeader("Variables", count: feature.variables.count) + if feature.variables.isEmpty { + placeholder("Select a stack frame to inspect variables") + } else { + ForEach(feature.variables) { variable in + HStack(alignment: .firstTextBaseline, spacing: 6) { + Image(systemName: variable.isExpandable ? "chevron.right" : "circle.fill") + .font(.system(size: variable.isExpandable ? 8 : 4)) + .foregroundStyle(LitheTheme.secondaryText) + Text(variable.name) + .font(.system(size: 10.5, design: .monospaced)) + Text("=") + .foregroundStyle(LitheTheme.secondaryText) + Text(variable.value) + .font(.system(size: 10.5, design: .monospaced)) + .foregroundStyle(LitheTheme.accent) + .lineLimit(2) + Spacer(minLength: 0) + } + .contentShape(Rectangle()) + .onTapGesture { + if variable.isExpandable { + feature.loadVariables(reference: variable.variablesReference) + } } + .padding(.horizontal, 10) + .padding(.vertical, 5) } - .padding(.horizontal, 10) - .padding(.vertical, 5) } } diff --git a/Sources/Lithe/Views/RunView.swift b/Sources/Lithe/Views/RunView.swift index 93aa83960..039384b59 100644 --- a/Sources/Lithe/Views/RunView.swift +++ b/Sources/Lithe/Views/RunView.swift @@ -703,60 +703,67 @@ struct RunView: View { } VStack(spacing: 8) { - configurationDetailRow( - "Type", - value: String(localized: String.LocalizationValue(configuration.kind.title)) - ) - configurationDetailRow("Category", value: localizedExecution(configuration.execution)) - configurationDetailRow("Provider", value: configuration.kind.id, monospaced: true) - configurationDetailRow("Working directory", value: workingDirectory, monospaced: true) - - if session?.isRunning == true, - let serviceURL = feature.serviceURL(for: configuration) { - configurationLinkRow("Address", url: serviceURL) - } - - if let modulePath = nonEmpty(configuration.modulePath) { - configurationDetailRow("Module", value: modulePath, monospaced: true) - } - if let mainClass = nonEmpty(configuration.mainClass) { - configurationDetailRow("Main class", value: mainClass, monospaced: true) - } - if capabilities.contains(.javaRuntime), - let javaHome = nonEmpty(options.javaHomePath) { - configurationDetailRow("JDK home", value: javaHome, monospaced: true) - } - if configuration.kind.isMavenBacked, - let mavenExecutable = nonEmpty(options.mavenExecutablePath) { - configurationDetailRow("Maven", value: mavenExecutable, monospaced: true) - } - if configuration.kind.isMavenBacked, - let mavenJavaHome = nonEmpty(options.mavenJavaHomePath) { - configurationDetailRow("Maven JDK", value: mavenJavaHome, monospaced: true) - } - if capabilities.contains(.javaVMArguments), - let vmArguments = nonEmpty(options.vmArguments) { - configurationDetailRow("VM arguments", value: vmArguments, monospaced: true) - } - if let programArguments = nonEmpty(options.programArguments) { - configurationDetailRow("Program arguments", value: programArguments, monospaced: true) - } - if capabilities.contains(.mavenProfiles), !options.activeProfiles.isEmpty { + Group { configurationDetailRow( - "Active profiles", - value: options.activeProfiles.sorted().joined(separator: ", "), - monospaced: true + "Type", + value: String(localized: String.LocalizationValue(configuration.kind.title)) ) + configurationDetailRow("Category", value: localizedExecution(configuration.execution)) + configurationDetailRow("Provider", value: configuration.kind.id, monospaced: true) + configurationDetailRow("Working directory", value: workingDirectory, monospaced: true) } - if (!capabilities.contains(.javaRuntime) || options.javaHomePath.isEmpty), - (!capabilities.contains(.javaVMArguments) || options.vmArguments.isEmpty), - options.programArguments.isEmpty, - (!capabilities.contains(.mavenProfiles) || options.activeProfiles.isEmpty) { - configurationDetailRow("Options", value: String(localized: "Default options")) + + Group { + if session?.isRunning == true, + let serviceURL = feature.serviceURL(for: configuration) { + configurationLinkRow("Address", url: serviceURL) + } + + if let modulePath = nonEmpty(configuration.modulePath) { + configurationDetailRow("Module", value: modulePath, monospaced: true) + } + if let mainClass = nonEmpty(configuration.mainClass) { + configurationDetailRow("Main class", value: mainClass, monospaced: true) + } + if capabilities.contains(.javaRuntime), + let javaHome = nonEmpty(options.javaHomePath) { + configurationDetailRow("JDK home", value: javaHome, monospaced: true) + } + if configuration.kind.isMavenBacked, + let mavenExecutable = nonEmpty(options.mavenExecutablePath) { + configurationDetailRow("Maven", value: mavenExecutable, monospaced: true) + } + if configuration.kind.isMavenBacked, + let mavenJavaHome = nonEmpty(options.mavenJavaHomePath) { + configurationDetailRow("Maven JDK", value: mavenJavaHome, monospaced: true) + } + if capabilities.contains(.javaVMArguments), + let vmArguments = nonEmpty(options.vmArguments) { + configurationDetailRow("VM arguments", value: vmArguments, monospaced: true) + } + if let programArguments = nonEmpty(options.programArguments) { + configurationDetailRow("Program arguments", value: programArguments, monospaced: true) + } + if capabilities.contains(.mavenProfiles), !options.activeProfiles.isEmpty { + configurationDetailRow( + "Active profiles", + value: options.activeProfiles.sorted().joined(separator: ", "), + monospaced: true + ) + } } - configurationDetailRow("Source", value: localizedSource(feature.source(for: configuration))) - configurationDetailRow("Configuration ID", value: configuration.id, monospaced: true) + Group { + if (!capabilities.contains(.javaRuntime) || options.javaHomePath.isEmpty), + (!capabilities.contains(.javaVMArguments) || options.vmArguments.isEmpty), + options.programArguments.isEmpty, + (!capabilities.contains(.mavenProfiles) || options.activeProfiles.isEmpty) { + configurationDetailRow("Options", value: String(localized: "Default options")) + } + + configurationDetailRow("Source", value: localizedSource(feature.source(for: configuration))) + configurationDetailRow("Configuration ID", value: configuration.id, monospaced: true) + } } } .padding(.horizontal, 16) From a325c88a25b7b1f61e787ef7b8ab91227c748c6f Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sat, 15 Aug 2026 22:41:48 +0800 Subject: [PATCH 02/83] fix(windows): align local branch checkout and deletion refs - qualify git_checkout, git_checkout_preflight, and git_delete_branch references with refs/heads/ and pass referenceKind: local, matching the shared core contract that rejects short branch names - translate git_checkout_preflight to git.checkoutPreflight and adapt its blocking paths plus git_checkout results for the branch manager UI - run checkout preflight from checkoutBranch so blocked switches surface hasChanges and reuse the existing stash-and-retry flow, and propagate real git error output on failure --- windows/tauri/src-tauri/src/platform.rs | 104 +++++++++++++++++- .../src/features/git/api/git-branches-api.ts | 32 +++++- .../src/platform/core-result-adapter.test.ts | 63 +++++++++++ .../tauri/src/platform/core-result-adapter.ts | 11 ++ 4 files changed, 206 insertions(+), 4 deletions(-) create mode 100644 windows/tauri/src/platform/core-result-adapter.test.ts diff --git a/windows/tauri/src-tauri/src/platform.rs b/windows/tauri/src-tauri/src/platform.rs index 5bfccd200..2491034ea 100644 --- a/windows/tauri/src-tauri/src/platform.rs +++ b/windows/tauri/src-tauri/src/platform.rs @@ -117,15 +117,32 @@ fn translate(command: &str, args: Value) -> Result<(String, Value), String> { "git.write" } "git_delete_branch" => { - move_field(&mut payload, "branchName", "reference"); + let branch = take_text(&mut payload, "branchName")?; + payload.insert( + "reference".into(), + json!(local_branch_reference(&branch)), + ); payload.insert("operation".into(), json!("deleteBranch")); "git.write" } "git_checkout" => { - move_field(&mut payload, "branchName", "reference"); + let branch = take_text(&mut payload, "branchName")?; + payload.insert( + "reference".into(), + json!(local_branch_reference(&branch)), + ); payload.insert("operation".into(), json!("checkout")); + payload.insert("referenceKind".into(), json!("local")); "git.write" } + "git_checkout_preflight" => { + let branch = take_text(&mut payload, "branchName")?; + payload.insert( + "reference".into(), + json!(local_branch_reference(&branch)), + ); + "git.checkoutPreflight" + } "git_create_stash" => { payload.insert("operation".into(), json!("stashPush")); "git.write" @@ -384,6 +401,19 @@ fn move_field(payload: &mut Map, from: &str, to: &str) { } } +/// Windows callers name local branches by their short form, while the shared +/// core requires fully qualified references so branch and tag names cannot +/// collide. Only `refs/heads/` counts as already qualified; any other ref +/// namespace is treated as a branch name instead of silently targeting a +/// different namespace. +fn local_branch_reference(branch: &str) -> String { + if branch.starts_with("refs/heads/") { + branch.to_string() + } else { + format!("refs/heads/{branch}") + } +} + fn paths_from_file(payload: &mut Map) { if let Some(path) = payload.remove("filePath") { payload.insert("paths".into(), Value::Array(vec![path])); @@ -400,7 +430,7 @@ fn take_text(payload: &mut Map, field: &str) -> Result { + const message = error instanceof Error ? error.message : String(error); + return message.trim() || "Failed to checkout branch"; +}; + +const blockingChangesMessage = (blockingPaths: string[]): string => { + const listed = blockingPaths.slice(0, 3).join(", "); + const remaining = blockingPaths.length - Math.min(blockingPaths.length, 3); + const suffix = remaining > 0 ? ` (+${remaining} more)` : ""; + return `Local changes would be overwritten by switching branches: ${listed}${suffix}`; +}; + export const getBranches = async (repoPath: string): Promise => { try { const resolvedRepoPath = await resolveRepositoryPath(repoPath); @@ -37,6 +54,19 @@ export const checkoutBranch = async ( ): Promise => { try { const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + + const preflight = await tauriInvoke("git_checkout_preflight", { + repoPath: resolvedRepoPath, + branchName, + }); + if (preflight.blocked) { + return { + success: false, + hasChanges: true, + message: blockingChangesMessage(preflight.blockingPaths), + }; + } + const result = await tauriInvoke("git_checkout", { repoPath: resolvedRepoPath, branchName, @@ -54,7 +84,7 @@ export const checkoutBranch = async ( return { success: false, hasChanges: false, - message: "Failed to checkout branch", + message: checkoutErrorMessage(error), }; } }; diff --git a/windows/tauri/src/platform/core-result-adapter.test.ts b/windows/tauri/src/platform/core-result-adapter.test.ts new file mode 100644 index 000000000..503dbc1ed --- /dev/null +++ b/windows/tauri/src/platform/core-result-adapter.test.ts @@ -0,0 +1,63 @@ +import { describe, expect, test } from "bun:test"; +import { adaptCoreResult } from "./core-result-adapter"; + +describe("git checkout result adaptation", () => { + test("maps a successful core checkout to the UI checkout result", () => { + const result = adaptCoreResult( + "git_checkout", + { repoPath: "C:/work", branchName: "main" }, + { output: "Switched to branch 'main'\n", exitCode: 0 }, + ); + + expect(result).toEqual({ + success: true, + hasChanges: false, + message: "Switched to branch 'main'", + }); + }); + + test("reports failure when the core checkout exited non-zero", () => { + const result = adaptCoreResult( + "git_checkout", + { repoPath: "C:/work", branchName: "main" }, + { output: "error: pathspec 'main' did not match", exitCode: 1 }, + ); + + expect(result).toEqual({ + success: false, + hasChanges: false, + message: "error: pathspec 'main' did not match", + }); + }); + + test("keeps an empty message for a silent successful checkout", () => { + const result = adaptCoreResult("git_checkout", undefined, { output: "", exitCode: 0 }); + + expect(result).toEqual({ success: true, hasChanges: false, message: "" }); + }); +}); + +describe("git checkout preflight adaptation", () => { + test("reports blocked paths returned by the shared core", () => { + const result = adaptCoreResult( + "git_checkout_preflight", + { repoPath: "C:/work", branchName: "main" }, + { blockingPaths: ["src/main.rs", "README.md"] }, + ); + + expect(result).toEqual({ + blocked: true, + blockingPaths: ["src/main.rs", "README.md"], + }); + }); + + test("reports no blockage when the core returns no blocking paths", () => { + const result = adaptCoreResult( + "git_checkout_preflight", + { repoPath: "C:/work", branchName: "main" }, + { blockingPaths: [] }, + ); + + expect(result).toEqual({ blocked: false, blockingPaths: [] }); + }); +}); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index dc94de2c9..3d53aae1e 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -146,6 +146,17 @@ export function adaptCoreResult( }; }) as T; } + case "git_checkout": { + const exitCode = typeof data.exitCode === "number" ? data.exitCode : 0; + const output = typeof data.output === "string" ? data.output.trim() : ""; + return { success: exitCode === 0, hasChanges: false, message: output } as T; + } + case "git_checkout_preflight": { + const blockingPaths = Array.isArray(data.blockingPaths) + ? data.blockingPaths.map((path: unknown) => String(path)) + : []; + return { blocked: blockingPaths.length > 0, blockingPaths } as T; + } case "git_checkout_tag": return { success: true, hasChanges: false, message: "" } as T; default: From 31abd735ac0ee4a6348c25cdab2477d0db9011a6 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 09:16:17 +0800 Subject: [PATCH 03/83] fix(windows): send diff pathspecs the shared core accepts - translate git_diff_file and git_status_diff_stats filePath into the git.diff pathspecs contract instead of the unrelated paths field, and fall back to ["."] so whole-tree stat requests are not rejected - derive diff stat staged flags from the request instead of hardcoding false, and fetch staged and unstaged stats so both groups show counts --- windows/tauri/src-tauri/src/platform.rs | 45 ++++++++++++++- .../src/features/git/api/git-diff-api.ts | 16 ++++-- .../platform/core-result-adapter.diff.test.ts | 57 +++++++++++++++++++ .../tauri/src/platform/core-result-adapter.ts | 3 +- 4 files changed, 112 insertions(+), 9 deletions(-) create mode 100644 windows/tauri/src/platform/core-result-adapter.diff.test.ts diff --git a/windows/tauri/src-tauri/src/platform.rs b/windows/tauri/src-tauri/src/platform.rs index 5bfccd200..a3cdb70b6 100644 --- a/windows/tauri/src-tauri/src/platform.rs +++ b/windows/tauri/src-tauri/src/platform.rs @@ -90,8 +90,13 @@ fn translate(command: &str, args: Value) -> Result<(String, Value), String> { "git.write" } "git_diff_file" | "git_status_diff_stats" => { - paths_from_file(&mut payload); - payload.entry("pathspecs").or_insert_with(|| json!([])); + if let Some(path) = payload.remove("filePath") { + payload.insert("pathspecs".into(), Value::Array(vec![path])); + } else { + // The shared core rejects empty pathspecs; a request without a + // file scope means the whole tree, which git spells as `.`. + payload.insert("pathspecs".into(), json!(["."])); + } "git.diff" } "git_ref_diff" => { @@ -436,7 +441,41 @@ mod tests { translate("git_diff_file", json!({ "repoPath": "C:/work" })).unwrap(); assert_eq!(command, "git.diff"); - assert_eq!(payload, json!({ "root": "C:/work", "pathspecs": [] })); + assert_eq!(payload, json!({ "root": "C:/work", "pathspecs": ["."] })); + } + + #[test] + fn translates_diff_file_pathspec() { + let (command, payload) = translate( + "git_diff_file", + json!({ "repoPath": "C:/work", "filePath": "src/main.rs", "staged": true }), + ) + .unwrap(); + + assert_eq!(command, "git.diff"); + assert_eq!( + payload, + json!({ + "root": "C:/work", + "pathspecs": ["src/main.rs"], + "staged": true + }) + ); + } + + #[test] + fn translates_status_diff_stats_whole_tree() { + let (command, payload) = translate( + "git_status_diff_stats", + json!({ "repoPath": "C:/work", "staged": true }), + ) + .unwrap(); + + assert_eq!(command, "git.diff"); + assert_eq!( + payload, + json!({ "root": "C:/work", "pathspecs": ["."], "staged": true }) + ); } #[test] diff --git a/windows/tauri/src/features/git/api/git-diff-api.ts b/windows/tauri/src/features/git/api/git-diff-api.ts index 389c72f4d..5ec665ff6 100644 --- a/windows/tauri/src/features/git/api/git-diff-api.ts +++ b/windows/tauri/src/features/git/api/git-diff-api.ts @@ -219,14 +219,20 @@ export const getStatusDiffStats = async (repoPath: string): Promise("git_status_diff_stats", { - repoPath: resolvedRepoPath, - }) - .then((stats) => { + const request = Promise.all([ + tauriInvoke("git_status_diff_stats", { + repoPath: resolvedRepoPath, + }), + tauriInvoke("git_status_diff_stats", { + repoPath: resolvedRepoPath, + staged: true, + }), + ]) + .then(([unstagedStats, stagedStats]) => { if (generation !== getRepositoryCacheGeneration(resolvedRepoPath)) { return getStatusDiffStats(resolvedRepoPath); } - return stats; + return [...unstagedStats, ...stagedStats]; }) .catch((error) => { if (!isNotGitRepositoryError(error)) { diff --git a/windows/tauri/src/platform/core-result-adapter.diff.test.ts b/windows/tauri/src/platform/core-result-adapter.diff.test.ts new file mode 100644 index 000000000..cefe734b3 --- /dev/null +++ b/windows/tauri/src/platform/core-result-adapter.diff.test.ts @@ -0,0 +1,57 @@ +import { describe, expect, test } from "bun:test"; +import { adaptCoreResult } from "./core-result-adapter"; + +const twoFilePatch = `diff --git a/a.txt b/a.txt +index 111..222 100644 +--- a/a.txt ++++ b/a.txt +@@ -1 +1,2 @@ + hello ++world +diff --git a/b.txt b/b.txt +index 333..444 100644 +--- a/b.txt ++++ b/b.txt +@@ -1 +0,0 @@ +-old line +`; + +describe("git diff stats adaptation", () => { + test("maps per-file additions and deletions from the whole tree patch", () => { + const stats = adaptCoreResult( + "git_status_diff_stats", + { repoPath: "C:/work" }, + { patch: twoFilePatch }, + ); + + expect(stats).toEqual([ + { file_path: "a.txt", staged: false, additions: 1, deletions: 0 }, + { file_path: "b.txt", staged: false, additions: 0, deletions: 1 }, + ]); + }); + + test("carries the staged flag from the request into every stat entry", () => { + const stats = adaptCoreResult( + "git_status_diff_stats", + { repoPath: "C:/work", staged: true }, + { patch: twoFilePatch }, + ); + + expect(Array.isArray(stats)).toBe(true); + for (const stat of stats as Array<{ staged: boolean }>) { + expect(stat.staged).toBe(true); + } + }); +}); + +describe("git single-file diff adaptation", () => { + test("returns the parsed diff for the requested file", () => { + const diff = adaptCoreResult( + "git_diff_file", + { repoPath: "C:/work", filePath: "a.txt" }, + { patch: twoFilePatch }, + ); + + expect((diff as { file_path: string }).file_path).toBe("a.txt"); + }); +}); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index dc94de2c9..1f86f93e7 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -29,10 +29,11 @@ function adaptDiff(command: string, args: JsonRecord | undefined, value: unknown return "files" in parsed ? parsed.files[0] ?? null : parsed; } if (command === "git_status_diff_stats") { + const staged = Boolean(argumentsRecord.staged); const diffs = "files" in parsed ? parsed.files : [parsed]; return diffs.map((diff) => ({ file_path: diff.file_path, - staged: false, + staged, additions: diff.additions ?? diff.lines.filter((line) => line.line_type === "added").length, deletions: diff.deletions ?? diff.lines.filter((line) => line.line_type === "removed").length, })); From d4d36a7625573bbc12172b13919efa94a87e9504 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 09:26:27 +0800 Subject: [PATCH 04/83] feat(windows): default diff view to split and persist the choice - open diffs in split view like the macOS reference product and IDEA instead of a hardcoded unified default - persist the unified/split preference in a zustand store so the choice survives reopening diffs and restarting the app --- .../components/diff/git-diff-editor-stack.tsx | 4 +- .../stores/git-diff-preferences.store.test.ts | 18 +++++++++ .../git/stores/git-diff-preferences.store.ts | 39 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 windows/tauri/src/features/git/stores/git-diff-preferences.store.test.ts create mode 100644 windows/tauri/src/features/git/stores/git-diff-preferences.store.ts diff --git a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx index 6165513dd..2e82304b9 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx @@ -25,6 +25,7 @@ import { calculateLineHeight, splitLines } from "@/features/editor/utils/lines"; import { useZoomStore } from "@/features/window/stores/zoom.store"; import { useUIState } from "@/features/window/stores/ui-state.store"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useGitDiffPreferencesStore } from "@/features/git/stores/git-diff-preferences.store"; import { buildSearchRegex, findAllMatches, @@ -650,7 +651,8 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); const isFindVisible = useUIState((state) => state.isFindVisible); const setIsFindVisible = useUIState((state) => state.setIsFindVisible); - const [viewMode, setViewMode] = useState<"unified" | "split">("unified"); + const viewMode = useGitDiffPreferencesStore.use.viewMode(); + const setViewMode = useGitDiffPreferencesStore.use.actions().setViewMode; const [showWhitespace, setShowWhitespace] = useState(false); const [isFileTreeVisible, setIsFileTreeVisible] = useState(true); const [fileNavigatorViewMode, setFileNavigatorViewMode] = useState("tree"); diff --git a/windows/tauri/src/features/git/stores/git-diff-preferences.store.test.ts b/windows/tauri/src/features/git/stores/git-diff-preferences.store.test.ts new file mode 100644 index 000000000..674ac31d2 --- /dev/null +++ b/windows/tauri/src/features/git/stores/git-diff-preferences.store.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, test } from "bun:test"; +import { useGitDiffPreferencesStore } from "./git-diff-preferences.store"; + +describe("git diff preferences store", () => { + test("defaults to split view like the macOS reference", () => { + expect(useGitDiffPreferencesStore.getState().viewMode).toBe("split"); + }); + + test("setViewMode switches the preference in both directions", () => { + const { setViewMode } = useGitDiffPreferencesStore.getState().actions; + + setViewMode("unified"); + expect(useGitDiffPreferencesStore.getState().viewMode).toBe("unified"); + + setViewMode("split"); + expect(useGitDiffPreferencesStore.getState().viewMode).toBe("split"); + }); +}); diff --git a/windows/tauri/src/features/git/stores/git-diff-preferences.store.ts b/windows/tauri/src/features/git/stores/git-diff-preferences.store.ts new file mode 100644 index 000000000..e530e8893 --- /dev/null +++ b/windows/tauri/src/features/git/stores/git-diff-preferences.store.ts @@ -0,0 +1,39 @@ +import { create } from "zustand"; +import { persist } from "zustand/middleware"; +import { createSelectors } from "@/utils/zustand-selectors"; +import { createSafeJSONStorage } from "@/utils/zustand-storage"; + +export type GitDiffViewMode = "unified" | "split"; + +interface GitDiffPreferencesStore { + // Split matches the macOS reference product and IDEA; users who prefer the + // unified layout switch once and the choice persists across sessions. + viewMode: GitDiffViewMode; + actions: { + setViewMode: (mode: GitDiffViewMode) => void; + }; +} + +const useGitDiffPreferencesStoreBase = create()( + persist( + (set) => ({ + viewMode: "split", + + actions: { + setViewMode: (viewMode) => set({ viewMode }), + }, + }), + { + name: "git-diff-preferences", + storage: createSafeJSONStorage>(), + partialize: ({ viewMode }) => ({ viewMode }), + merge: (persistedState, currentState) => ({ + ...currentState, + ...(persistedState as Pick), + actions: currentState.actions, + }), + }, + ), +); + +export const useGitDiffPreferencesStore = createSelectors(useGitDiffPreferencesStoreBase); From b4b1eba4816b1fad5dbbaed5fe099dd1b52c8002 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 10:23:51 +0800 Subject: [PATCH 05/83] fix(windows): page git history with a cumulative limit --- .../src/features/git/api/git-commits-api.ts | 19 ++-- .../git/components/git-commit-panel.tsx | 2 +- .../git/hooks/use-git-data-controller.ts | 16 +-- .../src/features/git/stores/git.store.test.ts | 99 +++++++++++++++++++ .../src/features/git/stores/git.store.ts | 49 +++++---- .../tauri/src/features/git/types/git.types.ts | 5 + .../core-result-adapter.history.test.ts | 44 +++++++++ .../tauri/src/platform/core-result-adapter.ts | 21 ++-- 8 files changed, 212 insertions(+), 43 deletions(-) create mode 100644 windows/tauri/src/features/git/stores/git.store.test.ts create mode 100644 windows/tauri/src/platform/core-result-adapter.history.test.ts diff --git a/windows/tauri/src/features/git/api/git-commits-api.ts b/windows/tauri/src/features/git/api/git-commits-api.ts index a43edf038..29c565dc9 100644 --- a/windows/tauri/src/features/git/api/git-commits-api.ts +++ b/windows/tauri/src/features/git/api/git-commits-api.ts @@ -1,5 +1,5 @@ import { invoke as tauriInvoke } from "@/platform/tauri-core"; -import type { GitCommit } from "../types/git.types"; +import type { GitCommit, GitHistorySnapshot } from "../types/git.types"; import { emitGitChanged } from "../events/git-events"; import { runGitRead } from "../runtime/git-read-coordinator"; import { @@ -24,24 +24,29 @@ export const commitChanges = async (repoPath: string, message: string): Promise< } }; -export const getGitLog = async (repoPath: string, limit = 50, skip = 0): Promise => { +export const getGitHistory = async ( + repoPath: string, + limit = 50, +): Promise => { try { const resolvedRepoPath = await resolveRepositoryPath(repoPath); if (!resolvedRepoPath) { - return []; + return null; } - return await runGitRead(resolvedRepoPath, `log:${limit}:${skip}`, () => - tauriInvoke("git_log", { + return await runGitRead(resolvedRepoPath, `log:${limit}`, () => + tauriInvoke("git_log", { repoPath: resolvedRepoPath, limit, - skip, }), ); } catch (error) { if (!isNotGitRepositoryError(error)) { console.error("Failed to get git log:", error); } - return []; + return null; } }; + +export const getGitLog = async (repoPath: string, limit = 50): Promise => + (await getGitHistory(repoPath, limit))?.commits ?? []; diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index d7e203a1e..2a4b51189 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -112,7 +112,7 @@ async function buildCommitMessageContext({ const stagedFilesForContext = stagedFiles.slice(0, MAX_STAGED_FILES_FOR_AI_CONTEXT); const diffFilesForContext = stagedFiles.slice(0, MAX_DIFF_FILES_FOR_AI_CONTEXT); const [recentCommits, stagedDiffs] = await Promise.all([ - getGitLog(repoPath, MAX_RECENT_COMMITS_FOR_AI_CONTEXT, 0), + getGitLog(repoPath, MAX_RECENT_COMMITS_FOR_AI_CONTEXT), Promise.all(diffFilesForContext.map((file) => getFileDiff(repoPath, file.path, true))), ]); const overflowCount = Math.max(stagedFiles.length - stagedFilesForContext.length, 0); diff --git a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts index 267bf069d..1966e7d2a 100644 --- a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts +++ b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useRef } from "react"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { getBranches } from "../api/git-branches-api"; -import { getGitLog } from "../api/git-commits-api"; +import { getGitHistory } from "../api/git-commits-api"; import { getStashes } from "../api/git-stash-api"; import { getGitStatus } from "../api/git-status-api"; import { @@ -40,9 +40,9 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl gitActions.setIsLoadingGitData(true); try { - const [status, commits, branches, stashes] = await Promise.all([ + const [status, history, branches, stashes] = await Promise.all([ getGitStatus(repoPath), - getGitLog(repoPath, 50, 0), + getGitHistory(repoPath, 50), getBranches(repoPath), getStashes(repoPath), ]); @@ -56,7 +56,8 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl gitActions.loadFreshGitData({ gitStatus: status, - commits, + commits: history?.commits ?? [], + hasMoreCommits: history?.hasMore ?? false, branches, stashes, repoPath, @@ -90,11 +91,11 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl refreshAll || scopes.includes("refs") || scopes.includes("repository"); const shouldRefreshStashes = refreshAll || scopes.includes("stashes") || scopes.includes("repository"); - const [status, branches, stashes, commits] = await Promise.all([ + const [status, branches, stashes, history] = await Promise.all([ getGitStatus(repoPath), shouldRefreshRefs ? getBranches(repoPath) : Promise.resolve(undefined), shouldRefreshStashes ? getStashes(repoPath) : Promise.resolve(undefined), - shouldRefreshHistory ? getGitLog(repoPath, 50, 0) : Promise.resolve(undefined), + shouldRefreshHistory ? getGitHistory(repoPath, 50) : Promise.resolve(undefined), ]); if ( @@ -107,7 +108,8 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl gitActions.refreshGitData({ gitStatus: status, branches, - commits, + commits: history?.commits, + hasMoreCommits: history?.hasMore, repoPath, }); diff --git a/windows/tauri/src/features/git/stores/git.store.test.ts b/windows/tauri/src/features/git/stores/git.store.test.ts new file mode 100644 index 000000000..70d18e330 --- /dev/null +++ b/windows/tauri/src/features/git/stores/git.store.test.ts @@ -0,0 +1,99 @@ +import { beforeEach, describe, expect, mock, test } from "bun:test"; +import type { GitCommit, GitHistorySnapshot } from "../types/git.types"; + +const getGitHistory = mock( + async (_repoPath: string, _limit: number): Promise => null, +); + +mock.module("../api/git-commits-api", () => ({ getGitHistory })); + +const { createGitStore } = await import("./git.store"); + +const commit = (index: number): GitCommit => ({ + hash: `commit-${index}`, + message: `Commit ${index}`, + author: "Developer", + date: "2026/08/16 10:00", +}); + +const commits = (count: number): GitCommit[] => + Array.from({ length: count }, (_, index) => commit(index)); + +const loadInitialHistory = ( + store: ReturnType, + repoPath: string, + initialCommits: GitCommit[], +) => { + store.getState().actions.prepareRepositoryLoad(repoPath); + store.getState().actions.loadFreshGitData({ + gitStatus: null, + commits: initialCommits, + hasMoreCommits: true, + branches: [], + stashes: [], + repoPath, + }); +}; + +beforeEach(() => { + getGitHistory.mockReset(); +}); + +describe("Git history pagination", () => { + test("requests a larger cumulative snapshot instead of an ignored offset", async () => { + const store = createGitStore(); + loadInitialHistory(store, "C:/repo", commits(50)); + getGitHistory.mockResolvedValue({ commits: commits(100), hasMore: true }); + + await store.getState().actions.loadMoreCommits("C:/repo"); + + expect(getGitHistory).toHaveBeenCalledWith("C:/repo", 100); + expect(store.getState().commits).toHaveLength(100); + expect(store.getState().hasMoreCommits).toBe(true); + }); + + test("uses the shared core hasMore flag at the end of history", async () => { + const store = createGitStore(); + loadInitialHistory(store, "C:/repo", commits(50)); + getGitHistory.mockResolvedValue({ commits: commits(73), hasMore: false }); + + await store.getState().actions.loadMoreCommits("C:/repo"); + + expect(store.getState().commits).toHaveLength(73); + expect(store.getState().hasMoreCommits).toBe(false); + }); + + test("keeps the current snapshot when loading more fails", async () => { + const store = createGitStore(); + loadInitialHistory(store, "C:/repo", commits(50)); + getGitHistory.mockResolvedValue(null); + + await store.getState().actions.loadMoreCommits("C:/repo"); + + expect(store.getState().commits).toHaveLength(50); + expect(store.getState().hasMoreCommits).toBe(true); + expect(store.getState().isLoadingMoreCommits).toBe(false); + }); + + test("discards a completed request after switching repositories", async () => { + const store = createGitStore(); + loadInitialHistory(store, "C:/repo-a", commits(50)); + + let resolveHistory: (snapshot: GitHistorySnapshot) => void = () => {}; + getGitHistory.mockImplementation( + () => + new Promise((resolve) => { + resolveHistory = resolve; + }), + ); + + const pending = store.getState().actions.loadMoreCommits("C:/repo-a"); + store.getState().actions.prepareRepositoryLoad("C:/repo-b"); + resolveHistory({ commits: commits(100), hasMore: true }); + await pending; + + expect(store.getState().currentRepoPath).toBe("C:/repo-b"); + expect(store.getState().commits).toEqual([]); + expect(store.getState().isLoadingMoreCommits).toBe(false); + }); +}); diff --git a/windows/tauri/src/features/git/stores/git.store.ts b/windows/tauri/src/features/git/stores/git.store.ts index 5eb5334cf..7223fd477 100644 --- a/windows/tauri/src/features/git/stores/git.store.ts +++ b/windows/tauri/src/features/git/stores/git.store.ts @@ -1,6 +1,6 @@ import { createStore } from "zustand/vanilla"; import { createWorkspaceScopedStore } from "@/features/workspace/stores/create-workspace-scoped-store"; -import { getGitLog } from "../api/git-commits-api"; +import { getGitHistory } from "../api/git-commits-api"; import { getGitStatus } from "../api/git-status-api"; import type { GitCommit, GitStash, GitStatus } from "../types/git.types"; @@ -23,6 +23,7 @@ interface GitState { loadFreshGitData: (data: { gitStatus: GitStatus | null; commits: GitCommit[]; + hasMoreCommits: boolean; branches: string[]; stashes: GitStash[]; repoPath: string; @@ -31,6 +32,7 @@ interface GitState { gitStatus: GitStatus | null; branches?: string[]; commits?: GitCommit[]; + hasMoreCommits?: boolean; repoPath: string; }) => void; refreshWorkspaceGitStatus: (repoPath: string) => Promise; @@ -47,6 +49,7 @@ interface GitState { } const COMMITS_PER_PAGE = 50; +const MAX_COMMITS = 5_000; export const createGitStore = () => createStore()((set, get) => ({ @@ -79,7 +82,14 @@ export const createGitStore = () => }); }, - loadFreshGitData: ({ gitStatus, commits, branches, stashes, repoPath }) => { + loadFreshGitData: ({ + gitStatus, + commits, + hasMoreCommits, + branches, + stashes, + repoPath, + }) => { if (get().currentRepoPath !== repoPath) { return; } @@ -89,12 +99,12 @@ export const createGitStore = () => commits, branches, stashes, - hasMoreCommits: commits.length >= COMMITS_PER_PAGE, + hasMoreCommits, currentRepoPath: repoPath, }); }, - refreshGitData: ({ gitStatus, branches, commits, repoPath }) => { + refreshGitData: ({ gitStatus, branches, commits, hasMoreCommits, repoPath }) => { if (get().currentRepoPath !== repoPath) { return; } @@ -105,7 +115,7 @@ export const createGitStore = () => ...(commits ? { commits, - hasMoreCommits: commits.length >= COMMITS_PER_PAGE, + hasMoreCommits: hasMoreCommits ?? false, } : {}), }); @@ -129,27 +139,28 @@ export const createGitStore = () => if (currentRepoPath !== repoPath || !hasMoreCommits || isLoadingMoreCommits) return; + if (commits.length >= MAX_COMMITS) { + set({ hasMoreCommits: false }); + return; + } + set({ isLoadingMoreCommits: true }); try { - const newCommits = await getGitLog(repoPath, COMMITS_PER_PAGE, commits.length); - if (get().currentRepoPath !== repoPath) { + const requestedLimit = Math.min(commits.length + COMMITS_PER_PAGE, MAX_COMMITS); + const history = await getGitHistory(repoPath, requestedLimit); + if (!history || get().currentRepoPath !== repoPath) { return; } - const existingHashSet = new Set(commits.map((c) => c.hash)); - const uniqueNewCommits = newCommits.filter((c) => !existingHashSet.has(c.hash)); - - if (uniqueNewCommits.length > 0) { - set({ - commits: [...commits, ...uniqueNewCommits], - hasMoreCommits: uniqueNewCommits.length >= COMMITS_PER_PAGE, - }); - } else { - set({ hasMoreCommits: false }); - } + set({ + commits: history.commits, + hasMoreCommits: history.hasMore && requestedLimit < MAX_COMMITS, + }); } finally { - set({ isLoadingMoreCommits: false }); + if (get().currentRepoPath === repoPath) { + set({ isLoadingMoreCommits: false }); + } } }, diff --git a/windows/tauri/src/features/git/types/git.types.ts b/windows/tauri/src/features/git/types/git.types.ts index 2760d042c..2b47f6de2 100644 --- a/windows/tauri/src/features/git/types/git.types.ts +++ b/windows/tauri/src/features/git/types/git.types.ts @@ -20,6 +20,11 @@ export interface GitCommit { date: string; } +export interface GitHistorySnapshot { + commits: GitCommit[]; + hasMore: boolean; +} + export interface GitDiffLine { line_type: "added" | "removed" | "context" | "header"; content: string; diff --git a/windows/tauri/src/platform/core-result-adapter.history.test.ts b/windows/tauri/src/platform/core-result-adapter.history.test.ts new file mode 100644 index 000000000..98f2735f5 --- /dev/null +++ b/windows/tauri/src/platform/core-result-adapter.history.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, test } from "bun:test"; +import type { GitHistorySnapshot } from "@/features/git/types/git.types"; +import { adaptCoreResult } from "./core-result-adapter"; + +describe("git history result adaptation", () => { + test("preserves commits and the shared core pagination state", () => { + const result = adaptCoreResult( + "git_log", + { repoPath: "C:/work", limit: 50 }, + { + commits: [ + { + hash: "abc123", + subject: "First commit", + authorName: "Developer", + authorEmail: "developer@example.invalid", + date: "2026/08/16 10:00", + }, + ], + hasMore: true, + }, + ); + + expect(result).toEqual({ + commits: [ + { + hash: "abc123", + message: "First commit", + author: "Developer", + email: "developer@example.invalid", + date: "2026/08/16 10:00", + }, + ], + hasMore: true, + }); + }); + + test("defaults missing history fields to an exhausted empty snapshot", () => { + expect(adaptCoreResult("git_log", undefined, {})).toEqual({ + commits: [], + hasMore: false, + }); + }); +}); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index 1f86f93e7..1f512248f 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -63,15 +63,18 @@ export function adaptCoreResult( : [], } as T; case "git_log": - return (Array.isArray(data.commits) - ? data.commits.map((commit: JsonRecord) => ({ - hash: commit.hash, - message: commit.subject, - author: commit.authorName, - email: commit.authorEmail, - date: commit.date, - })) - : []) as T; + return { + commits: Array.isArray(data.commits) + ? data.commits.map((commit: JsonRecord) => ({ + hash: commit.hash, + message: commit.subject, + author: commit.authorName, + email: commit.authorEmail, + date: commit.date, + })) + : [], + hasMore: Boolean(data.hasMore), + } as T; case "git_branches": return (Array.isArray(data.references) ? data.references From 6cdc3c1cc1065cbf8515f3dbe15475f9bf3304b4 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 10:25:17 +0800 Subject: [PATCH 06/83] fix(windows): discover the repository from the file's directory --- .../src/features/git/api/git-repo-api.test.ts | 45 +++++++++++++++++++ .../src/features/git/api/git-repo-api.ts | 12 ++++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 windows/tauri/src/features/git/api/git-repo-api.test.ts diff --git a/windows/tauri/src/features/git/api/git-repo-api.test.ts b/windows/tauri/src/features/git/api/git-repo-api.test.ts new file mode 100644 index 000000000..9cefff172 --- /dev/null +++ b/windows/tauri/src/features/git/api/git-repo-api.test.ts @@ -0,0 +1,45 @@ +import { beforeEach, describe, expect, mock, test } from "bun:test"; + +const invoke = mock(async (_command: string, _args?: unknown): Promise => null); + +mock.module("@/platform/tauri-core", () => ({ invoke })); + +const { clearRepositoryDiscoveryCache, resolveRepositoryForFile } = await import("./git-repo-api"); + +beforeEach(() => { + invoke.mockReset(); + clearRepositoryDiscoveryCache(); +}); + +describe("resolveRepositoryForFile", () => { + test("discovers the repository from the file's directory", async () => { + invoke.mockResolvedValue("D:/work/project"); + + const result = await resolveRepositoryForFile("D:/work/project", "src/main.ts"); + + expect(invoke).toHaveBeenCalledWith("git_discover_repo", { + path: "D:/work/project/src", + }); + expect(result).toEqual({ + repoPath: "D:/work/project", + filePath: "src/main.ts", + }); + }); + + test("keeps absolute file paths relative to the discovered repository", async () => { + invoke.mockResolvedValue("D:/work/project"); + + const result = await resolveRepositoryForFile( + "D:/work", + "D:\\work\\project\\src\\main.ts", + ); + + expect(invoke).toHaveBeenCalledWith("git_discover_repo", { + path: "D:/work/project/src", + }); + expect(result).toEqual({ + repoPath: "D:/work/project", + filePath: "src/main.ts", + }); + }); +}); diff --git a/windows/tauri/src/features/git/api/git-repo-api.ts b/windows/tauri/src/features/git/api/git-repo-api.ts index 1add83713..66073db2d 100644 --- a/windows/tauri/src/features/git/api/git-repo-api.ts +++ b/windows/tauri/src/features/git/api/git-repo-api.ts @@ -81,6 +81,16 @@ function joinPath(basePath: string, childPath: string): string { return normalizePath(`${base}/${child}`); } +function parentPath(path: string): string { + const normalized = normalizePath(path); + const separatorIndex = normalized.lastIndexOf("/"); + if (separatorIndex < 0) return normalized; + if (separatorIndex === 2 && /^[A-Za-z]:\//.test(normalized)) { + return normalized.slice(0, separatorIndex + 1); + } + return separatorIndex === 0 ? "/" : normalized.slice(0, separatorIndex); +} + function toRelativePath(from: string, to: string): string { const normalizedFrom = normalizePath(from); const normalizedTo = normalizePath(to); @@ -205,7 +215,7 @@ export async function resolveRepositoryForFile( filePath: string, ): Promise<{ repoPath: string; filePath: string } | null> { const absoluteFilePath = isAbsolutePath(filePath) ? filePath : joinPath(repoPath, filePath); - const discoveredRepo = await discoverRepo(absoluteFilePath); + const discoveredRepo = await discoverRepo(parentPath(absoluteFilePath)); if (!discoveredRepo) { return null; From 47bb9615e7665cd229cfb21e303d3e03bc6b2c06 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 11:20:19 +0800 Subject: [PATCH 07/83] fix(windows): align split diffs and editor routing --- .../editor/stores/buffer-pane-sync.ts | 18 +++- .../components/diff/git-diff-editor-stack.tsx | 8 +- .../git/components/diff/git-diff-header.tsx | 9 +- .../components/diff/git-diff-hunk-header.tsx | 13 +-- .../git/components/diff/git-diff-text.tsx | 79 ++++++++++++---- .../git/hooks/use-git-diff-actions.ts | 3 + .../src/features/git/types/git-diff.types.ts | 1 + .../tauri/src/features/git/types/git.types.ts | 9 ++ .../git/utils/git-diff-helpers.test.ts | 61 +++++++++++++ .../features/git/utils/git-diff-helpers.ts | 68 +++++++++++++- .../src/features/git/utils/git-diff-parser.ts | 2 + .../features/panes/utils/pane-routing.test.ts | 64 +++++++++++++ .../src/features/panes/utils/pane-routing.ts | 22 +++++ .../platform/core-result-adapter.diff.test.ts | 90 +++++++++++++++++++ .../tauri/src/platform/core-result-adapter.ts | 62 ++++++++++++- 15 files changed, 471 insertions(+), 38 deletions(-) create mode 100644 windows/tauri/src/features/git/utils/git-diff-helpers.test.ts create mode 100644 windows/tauri/src/features/panes/utils/pane-routing.test.ts diff --git a/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts b/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts index d90e90ef2..68c169a70 100644 --- a/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts +++ b/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts @@ -2,7 +2,10 @@ import { usePaneStore } from "@/features/panes/stores/pane.store"; import type { PaneGroup } from "@/features/panes/types/pane.types"; import type { PaneContent } from "@/features/panes/types/pane-content.types"; import { ensureBufferInPane } from "@/features/panes/utils/pane-buffer-actions"; -import { resolveWritablePaneForBuffer } from "@/features/panes/utils/pane-routing"; +import { + resolveMainPaneForExternalOpen, + resolveWritablePaneForBuffer, +} from "@/features/panes/utils/pane-routing"; import { createPaneBeside } from "@/features/panes/utils/pane-split-actions"; const getPaneState = (workspaceId?: string) => @@ -29,6 +32,19 @@ export const getWritablePaneForBuffer = ( return newPaneId ? paneStore.actions.getPaneById(newPaneId) : activePane; }; +export const activateMainEditorPane = (workspaceId?: string): PaneGroup | null => { + const paneStore = getPaneState(workspaceId); + const targetPane = resolveMainPaneForExternalOpen({ + activePaneId: paneStore.activePaneId, + mostRecentActivePaneIds: paneStore.mostRecentActivePaneIds, + root: paneStore.root, + }); + if (targetPane && targetPane.id !== paneStore.activePaneId) { + paneStore.actions.setActivePane(targetPane.id); + } + return targetPane; +}; + export const syncBufferToPane = (bufferId: string, workspaceId?: string) => { const targetPane = getWritablePaneForBuffer(bufferId, workspaceId); if (!targetPane) return; diff --git a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx index 2e82304b9..c83d273ff 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx @@ -1036,8 +1036,12 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ {multiDiff.title || "Uncommitted Changes"} {indexedFileLabel} - +{multiDiff.totalAdditions} - -{multiDiff.totalDeletions} + {multiDiff.totalAdditions > 0 ? ( + +{multiDiff.totalAdditions} + ) : null} + {multiDiff.totalDeletions > 0 ? ( + -{multiDiff.totalDeletions} + ) : null} {isIndexingDiffs ? {indexingLabel} : null} } diff --git a/windows/tauri/src/features/git/components/diff/git-diff-header.tsx b/windows/tauri/src/features/git/components/diff/git-diff-header.tsx index 1ab7437cc..5c0687146 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-header.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-header.tsx @@ -14,7 +14,7 @@ import Breadcrumb, { import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { cn } from "@/utils/cn"; import type { DiffHeaderProps } from "../../types/git-diff.types"; -import { getFileStatus } from "../../utils/git-diff-helpers"; +import { countDiffStats, getFileStatus } from "../../utils/git-diff-helpers"; const DiffHeader = memo( ({ @@ -45,12 +45,7 @@ const DiffHeader = memo( const renderStats = () => { if (!diff) return null; - let additions = 0; - let deletions = 0; - for (const l of diff.lines) { - if (l.line_type === "added") additions++; - else if (l.line_type === "removed") deletions++; - } + const { additions, deletions } = countDiffStats([diff]); return ( <> diff --git a/windows/tauri/src/features/git/components/diff/git-diff-hunk-header.tsx b/windows/tauri/src/features/git/components/diff/git-diff-hunk-header.tsx index d7417f061..30fc9cafe 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-hunk-header.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-hunk-header.tsx @@ -18,6 +18,7 @@ import { createGitHunk, parseDiffHunkRange } from "../../utils/git-diff-helpers" const DiffHunkHeader = memo( ({ hunk, + stats, hiddenLineCount, isCollapsed, onToggleCollapse, @@ -66,11 +67,13 @@ const DiffHunkHeader = memo( [rootFolderPath, filePath, hunk, isStaged, onStageHunk, onUnstageHunk], ); - let additions = 0; - let deletions = 0; - for (const l of hunk.lines) { - if (l.line_type === "added") additions++; - else if (l.line_type === "removed") deletions++; + let additions = stats?.additions ?? 0; + let deletions = stats?.deletions ?? 0; + if (!stats) { + for (const l of hunk.lines) { + if (l.line_type === "added") additions++; + else if (l.line_type === "removed") deletions++; + } } const headerInfo = parseDiffHunkRange(hunk.header.content); diff --git a/windows/tauri/src/features/git/components/diff/git-diff-text.tsx b/windows/tauri/src/features/git/components/diff/git-diff-text.tsx index 701906e99..e8f76fd50 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-text.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-text.tsx @@ -10,8 +10,14 @@ import type { ParsedHunk, TextDiffViewerProps, } from "../../types/git-diff.types"; +import type { GitDiffSplitRow } from "../../types/git.types"; import { DIFF_HIGHLIGHT_LINE_THRESHOLD } from "../../utils/diff-viewer-scale"; -import { getSkippedUnchangedLineCount, groupLinesIntoHunks } from "../../utils/git-diff-helpers"; +import { + createFallbackSplitRows, + countSplitDiffStats, + getSkippedUnchangedLineCount, + groupLinesIntoHunks, +} from "../../utils/git-diff-helpers"; import DiffHunkHeader from "./git-diff-hunk-header"; import DiffLine, { getContentColor, @@ -19,13 +25,13 @@ import DiffLine, { getGutterTextColor, getLineBackground, getRailClassName, - getSplitLineMeta, renderDiffLineContent, } from "./git-diff-line"; function SplitDiffCodePanel({ side, - lines, + rows, + sourceLines, tokenMap, showWhitespace, fontSize, @@ -34,7 +40,8 @@ function SplitDiffCodePanel({ searchHighlights, }: { side: "left" | "right"; - lines: ParsedHunk["lines"]; + rows: GitDiffSplitRow[]; + sourceLines: ParsedHunk["lines"]; tokenMap: ReturnType; showWhitespace: boolean; fontSize: number; @@ -42,6 +49,15 @@ function SplitDiffCodePanel({ tabSize: number; searchHighlights?: Map; }) { + const sourceLinesByNumber = useMemo(() => { + const entries = sourceLines.flatMap((line) => { + const lineNumber = side === "left" ? line.old_line_number : line.new_line_number; + const visible = side === "left" ? line.line_type !== "added" : line.line_type !== "removed"; + return visible && lineNumber !== undefined ? [[lineNumber, line] as const] : []; + }); + return new Map(entries); + }, [side, sourceLines]); + const contentStyle = { fontSize: `${fontSize}px`, lineHeight: `${lineHeight}px`, @@ -54,19 +70,28 @@ function SplitDiffCodePanel({ return (
- {lines.map((line, index) => { - const meta = getSplitLineMeta(line, side); + {rows.map((row, index) => { + const lineNumber = side === "left" ? row.old_line_number : row.new_line_number; + const content = side === "left" ? row.old_content : row.new_content; + const isVisible = content !== undefined; + const diffType = isVisible + ? side === "left" && (row.kind === "changed" || row.kind === "removal") + ? "removed" + : side === "right" && (row.kind === "changed" || row.kind === "addition") + ? "added" + : "context" + : "context"; return (
- {meta.isVisible ? meta.gutterNumber : ""} + {isVisible ? lineNumber : ""}
); })} @@ -74,23 +99,33 @@ function SplitDiffCodePanel({
- {lines.map((line, index) => { - const meta = getSplitLineMeta(line, side); - const tokens = tokenMap.get(line.diffIndex); + {rows.map((row, index) => { + const lineNumber = side === "left" ? row.old_line_number : row.new_line_number; + const content = side === "left" ? row.old_content : row.new_content; + const sourceLine = lineNumber === undefined ? undefined : sourceLinesByNumber.get(lineNumber); + const isVisible = content !== undefined; + const diffType = isVisible + ? side === "left" && (row.kind === "changed" || row.kind === "removal") + ? "removed" + : side === "right" && (row.kind === "changed" || row.kind === "addition") + ? "added" + : "context" + : "context"; + const tokens = sourceLine ? tokenMap.get(sourceLine.diffIndex) : undefined; return (
- - {meta.isVisible + + {isVisible ? renderDiffLineContent( - line.content, + content, tokens, showWhitespace, - searchHighlights?.get(line.diffIndex), + sourceLine ? searchHighlights?.get(sourceLine.diffIndex) : undefined, ) : ""} @@ -169,10 +204,12 @@ const TextDiffViewer = memo( {hunks.map((hunk, hunkIndex) => { const isCollapsed = collapsedHunks.has(hunk.id); const hiddenLineCount = getSkippedUnchangedLineCount(hunks[hunkIndex - 1], hunk); + const splitRows = diff.split_hunks?.[hunkIndex] ?? createFallbackSplitRows(hunk.lines); return (
toggleHunkCollapse(hunk.id)} @@ -187,7 +224,8 @@ const TextDiffViewer = memo(
{ const isCollapsed = collapsedHunks.has(hunk.id); const hiddenLineCount = getSkippedUnchangedLineCount(hunks[hunkIndex - 1], hunk); + const splitRows = diff.split_hunks?.[hunkIndex] ?? createFallbackSplitRows(hunk.lines); return (
toggleHunkCollapse(hunk.id)} diff --git a/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts b/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts index b1cff41cb..564517639 100644 --- a/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts +++ b/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts @@ -1,4 +1,5 @@ import { useCallback, useState } from "react"; +import { activateMainEditorPane } from "@/features/editor/stores/buffer-pane-sync"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { showAlertDialog } from "@/ui/dialog"; import { getCommitDiff, getFileDiff, getRefDiff, getStashDiff } from "../api/git-diff-api"; @@ -29,6 +30,7 @@ function openDiffBuffer( displayName: string, diffData: GitDiff | MultiFileDiff, ) { + activateMainEditorPane(); return useBufferStore .getState() .actions.openBuffer(virtualPath, displayName, "", false, undefined, true, true, diffData); @@ -100,6 +102,7 @@ export function useGitDiffActions({ try { const actualFilePath = normalizeDisplayedFilePath(filePath, "new"); + activateMainEditorPane(); onFileSelect(`${activeRepoPath}/${actualFilePath}`, false); } catch (error) { console.error("Error opening file:", error); diff --git a/windows/tauri/src/features/git/types/git-diff.types.ts b/windows/tauri/src/features/git/types/git-diff.types.ts index 97ca938d6..2b424993f 100644 --- a/windows/tauri/src/features/git/types/git-diff.types.ts +++ b/windows/tauri/src/features/git/types/git-diff.types.ts @@ -44,6 +44,7 @@ export interface DiffHeaderProps { export interface DiffHunkHeaderProps { hunk: ParsedHunk; + stats?: { additions: number; deletions: number }; hiddenLineCount?: number | null; isCollapsed: boolean; onToggleCollapse: () => void; diff --git a/windows/tauri/src/features/git/types/git.types.ts b/windows/tauri/src/features/git/types/git.types.ts index 2b47f6de2..d9646703b 100644 --- a/windows/tauri/src/features/git/types/git.types.ts +++ b/windows/tauri/src/features/git/types/git.types.ts @@ -32,6 +32,14 @@ export interface GitDiffLine { new_line_number?: number; } +export interface GitDiffSplitRow { + kind: "context" | "changed" | "addition" | "removal"; + old_line_number?: number; + new_line_number?: number; + old_content?: string; + new_content?: string; +} + export interface GitDiff { file_path: string; old_path?: string; @@ -48,6 +56,7 @@ export interface GitDiff { additions?: number; deletions?: number; is_truncated?: boolean; + split_hunks?: GitDiffSplitRow[][]; } export interface GitDiffStat { diff --git a/windows/tauri/src/features/git/utils/git-diff-helpers.test.ts b/windows/tauri/src/features/git/utils/git-diff-helpers.test.ts new file mode 100644 index 000000000..c94961f37 --- /dev/null +++ b/windows/tauri/src/features/git/utils/git-diff-helpers.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, test } from "bun:test"; +import type { DiffLineWithIndex } from "../types/git-diff.types"; +import { countSplitDiffStats, createFallbackSplitRows } from "./git-diff-helpers"; + +describe("split diff fallback alignment", () => { + test("pairs removals and additions into shared visual rows", () => { + const lines: DiffLineWithIndex[] = [ + { + line_type: "context", + content: "a", + old_line_number: 1, + new_line_number: 1, + diffIndex: 1, + }, + { + line_type: "removed", + content: "aa", + old_line_number: 2, + diffIndex: 2, + }, + { + line_type: "added", + content: "aa", + new_line_number: 2, + diffIndex: 3, + }, + { + line_type: "added", + content: "abc", + new_line_number: 3, + diffIndex: 4, + }, + ]; + + const rows = createFallbackSplitRows(lines); + expect(rows).toEqual([ + { + kind: "context", + old_line_number: 1, + new_line_number: 1, + old_content: "a", + new_content: "a", + }, + { + kind: "context", + old_line_number: 2, + new_line_number: 2, + old_content: "aa", + new_content: "aa", + }, + { + kind: "addition", + old_line_number: undefined, + new_line_number: 3, + old_content: undefined, + new_content: "abc", + }, + ]); + expect(countSplitDiffStats([rows])).toEqual({ additions: 1, deletions: 0 }); + }); +}); diff --git a/windows/tauri/src/features/git/utils/git-diff-helpers.ts b/windows/tauri/src/features/git/utils/git-diff-helpers.ts index 5212cd3fb..903381d85 100644 --- a/windows/tauri/src/features/git/utils/git-diff-helpers.ts +++ b/windows/tauri/src/features/git/utils/git-diff-helpers.ts @@ -1,5 +1,5 @@ import type { DiffLineWithIndex, ParsedHunk } from "../types/git-diff.types"; -import type { GitDiff, GitDiffLine, GitHunk } from "../types/git.types"; +import type { GitDiff, GitDiffLine, GitDiffSplitRow, GitHunk } from "../types/git.types"; export { getDiffLineVisualState, getDiffLineVisualType } from "./diff-viewer-visuals"; export interface DiffHunkRange { @@ -104,6 +104,72 @@ export function groupLinesIntoHunks(lines: GitDiffLine[]): ParsedHunk[] { return hunks; } +export function createFallbackSplitRows(lines: DiffLineWithIndex[]): GitDiffSplitRow[] { + const rows: GitDiffSplitRow[] = []; + let index = 0; + + while (index < lines.length) { + const line = lines[index]; + if (line.line_type === "context") { + rows.push({ + kind: "context", + old_line_number: line.old_line_number, + new_line_number: line.new_line_number, + old_content: line.content, + new_content: line.content, + }); + index++; + continue; + } + + const removed: DiffLineWithIndex[] = []; + const added: DiffLineWithIndex[] = []; + while (index < lines.length && lines[index].line_type !== "context") { + const changedLine = lines[index]; + if (changedLine.line_type === "removed") removed.push(changedLine); + if (changedLine.line_type === "added") added.push(changedLine); + index++; + } + + const rowCount = Math.max(removed.length, added.length); + for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) { + const oldLine = removed[rowIndex]; + const newLine = added[rowIndex]; + rows.push({ + kind: + oldLine && newLine + ? oldLine.content === newLine.content + ? "context" + : "changed" + : oldLine + ? "removal" + : "addition", + old_line_number: oldLine?.old_line_number, + new_line_number: newLine?.new_line_number, + old_content: oldLine?.content, + new_content: newLine?.content, + }); + } + } + + return rows; +} + +export function countSplitDiffStats(splitHunks: GitDiffSplitRow[][]): { + additions: number; + deletions: number; +} { + let additions = 0; + let deletions = 0; + + for (const row of splitHunks.flat()) { + if (row.kind === "addition" || row.kind === "changed") additions++; + if (row.kind === "removal" || row.kind === "changed") deletions++; + } + + return { additions, deletions }; +} + export function countDiffStats(diffs: GitDiff[]): { additions: number; deletions: number } { let additions = 0; let deletions = 0; diff --git a/windows/tauri/src/features/git/utils/git-diff-parser.ts b/windows/tauri/src/features/git/utils/git-diff-parser.ts index bc2f23bb8..76a94b9f9 100644 --- a/windows/tauri/src/features/git/utils/git-diff-parser.ts +++ b/windows/tauri/src/features/git/utils/git-diff-parser.ts @@ -160,6 +160,8 @@ function parseDiffSection(lines: string[], fallbackFilePath: string): GitDiff { }); currentOldLine++; currentNewLine++; + } else if (line.startsWith("\\ No newline at end of file")) { + continue; } else if (line.trim()) { diffLines.push({ line_type: "context", diff --git a/windows/tauri/src/features/panes/utils/pane-routing.test.ts b/windows/tauri/src/features/panes/utils/pane-routing.test.ts new file mode 100644 index 000000000..77040613d --- /dev/null +++ b/windows/tauri/src/features/panes/utils/pane-routing.test.ts @@ -0,0 +1,64 @@ +import { describe, expect, test } from "bun:test"; +import type { PaneGroup, PaneNode } from "../types/pane.types"; +import { resolveMainPaneForExternalOpen } from "./pane-routing"; + +const pane = (id: string): PaneGroup => ({ + id, + type: "group", + bufferIds: [], + activeBufferId: null, +}); + +describe("main pane routing for external opens", () => { + test("keeps an active main editor pane", () => { + const mainPane = pane("main"); + + expect( + resolveMainPaneForExternalOpen({ + activePaneId: "main", + mostRecentActivePaneIds: ["main"], + root: mainPane, + }), + ).toBe(mainPane); + }); + + test("routes away from the bottom pane to the most recent main pane", () => { + const firstPane = pane("first"); + const recentPane = pane("recent"); + const root: PaneNode = { + id: "main-split", + type: "split", + direction: "horizontal", + children: [firstPane, recentPane], + sizes: [50, 50], + }; + + expect( + resolveMainPaneForExternalOpen({ + activePaneId: "bottom-pane", + mostRecentActivePaneIds: ["bottom-pane", "recent", "first"], + root, + }), + ).toBe(recentPane); + }); + + test("falls back to the first main pane when history has no main pane", () => { + const firstPane = pane("first"); + const secondPane = pane("second"); + const root: PaneNode = { + id: "main-split", + type: "split", + direction: "vertical", + children: [firstPane, secondPane], + sizes: [50, 50], + }; + + expect( + resolveMainPaneForExternalOpen({ + activePaneId: "bottom-pane", + mostRecentActivePaneIds: ["bottom-pane"], + root, + }), + ).toBe(firstPane); + }); +}); diff --git a/windows/tauri/src/features/panes/utils/pane-routing.ts b/windows/tauri/src/features/panes/utils/pane-routing.ts index 035b1cfe9..51da5f01d 100644 --- a/windows/tauri/src/features/panes/utils/pane-routing.ts +++ b/windows/tauri/src/features/panes/utils/pane-routing.ts @@ -9,6 +9,28 @@ export interface WritablePaneRoutingInput { root: PaneNode; } +export interface MainPaneRoutingInput { + activePaneId: string; + mostRecentActivePaneIds: string[]; + root: PaneNode; +} + +export function resolveMainPaneForExternalOpen({ + activePaneId, + mostRecentActivePaneIds, + root, +}: MainPaneRoutingInput): PaneGroup | null { + const mainPanes = getAllPaneGroups(root); + const paneById = new Map(mainPanes.map((pane) => [pane.id, pane] as const)); + + return ( + paneById.get(activePaneId) ?? + mostRecentActivePaneIds.map((paneId) => paneById.get(paneId)).find(Boolean) ?? + mainPanes[0] ?? + null + ); +} + export function getPaneScopeForPaneId(root: PaneNode, bottomRoot: PaneNode, paneId: string) { const rootPanes = getAllPaneGroups(root); if (rootPanes.some((pane) => pane.id === paneId)) { diff --git a/windows/tauri/src/platform/core-result-adapter.diff.test.ts b/windows/tauri/src/platform/core-result-adapter.diff.test.ts index cefe734b3..140d1d1f7 100644 --- a/windows/tauri/src/platform/core-result-adapter.diff.test.ts +++ b/windows/tauri/src/platform/core-result-adapter.diff.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from "bun:test"; +import type { GitDiff } from "@/features/git/types/git.types"; import { adaptCoreResult } from "./core-result-adapter"; const twoFilePatch = `diff --git a/a.txt b/a.txt @@ -54,4 +55,93 @@ describe("git single-file diff adaptation", () => { expect((diff as { file_path: string }).file_path).toBe("a.txt"); }); + + test("preserves Core's aligned rows for the split viewer", () => { + const patch = `diff --git a/a.txt b/a.txt +--- a/a.txt ++++ b/a.txt +@@ -1,2 +1,3 @@ + a +-aa +\\ No newline at end of file ++aa ++abc +\\ No newline at end of file +`; + const diff = adaptCoreResult( + "git_diff_file", + { repoPath: "C:/work", filePath: "a.txt" }, + { + patch, + rows: [ + { kind: "information", left: "@@ -1,2 +1,3 @@", hunkId: "hunk-0" }, + { kind: "context", oldLine: 1, newLine: 1, left: "a", hunkId: "hunk-0" }, + { kind: "changed", oldLine: 2, newLine: 2, left: "aa", right: "aa", hunkId: "hunk-0" }, + { kind: "addition", newLine: 3, right: "abc", hunkId: "hunk-0" }, + ], + }, + ) as GitDiff; + + expect(diff.split_hunks).toEqual([ + [ + { + kind: "context", + old_line_number: 1, + new_line_number: 1, + old_content: "a", + new_content: "a", + }, + { + kind: "context", + old_line_number: 2, + new_line_number: 2, + old_content: "aa", + new_content: "aa", + }, + { + kind: "addition", + old_line_number: undefined, + new_line_number: 3, + old_content: undefined, + new_content: "abc", + }, + ], + ]); + expect({ additions: diff.additions, deletions: diff.deletions }).toEqual({ + additions: 1, + deletions: 0, + }); + expect(diff.lines.some((line) => line.content.includes("No newline"))).toBe(false); + }); + + test("uses semantic stats when an unchanged EOF line is paired", () => { + const patch = `diff --git a/a.txt b/a.txt +--- a/a.txt ++++ b/a.txt +@@ -1,2 +1,3 @@ + a +-aa +\\ No newline at end of file ++aa ++abc +\\ No newline at end of file +`; + const stats = adaptCoreResult( + "git_status_diff_stats", + { repoPath: "C:/work" }, + { + patch, + rows: [ + { kind: "information", left: "@@ -1,2 +1,3 @@", hunkId: "hunk-0" }, + { kind: "context", oldLine: 1, newLine: 1, left: "a", hunkId: "hunk-0" }, + { kind: "changed", oldLine: 2, newLine: 2, left: "aa", right: "aa", hunkId: "hunk-0" }, + { kind: "addition", newLine: 3, right: "abc", hunkId: "hunk-0" }, + ], + }, + ); + + expect(stats).toEqual([ + { file_path: "a.txt", staged: false, additions: 1, deletions: 0 }, + ]); + }); }); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index 1f512248f..522f181c2 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -1,4 +1,6 @@ import { parseRawDiffContent } from "@/features/git/utils/git-diff-parser"; +import type { GitDiff, GitDiffSplitRow } from "@/features/git/types/git.types"; +import { countSplitDiffStats } from "@/features/git/utils/git-diff-helpers"; type JsonRecord = Record; @@ -14,6 +16,59 @@ function normalizeStatus(status: string, untracked: boolean): string { return "modified"; } +function adaptStructuredSplitHunks(value: unknown): GitDiffSplitRow[][] { + if (!Array.isArray(value)) return []; + + const hunks: GitDiffSplitRow[][] = []; + let currentHunk: GitDiffSplitRow[] | null = null; + + for (const item of value) { + const row = asRecord(item); + const kind = String(row.kind ?? ""); + if (kind === "information") { + if (currentHunk) hunks.push(currentHunk); + currentHunk = []; + continue; + } + if (!currentHunk) currentHunk = []; + if (!["context", "changed", "addition", "removal"].includes(kind)) continue; + + const left = typeof row.left === "string" ? row.left : undefined; + const right = typeof row.right === "string" ? row.right : kind === "context" ? left : undefined; + const visualKind = kind === "changed" && left === right ? "context" : kind; + currentHunk.push({ + kind: visualKind as GitDiffSplitRow["kind"], + old_line_number: typeof row.oldLine === "number" ? row.oldLine : undefined, + new_line_number: typeof row.newLine === "number" ? row.newLine : undefined, + old_content: left, + new_content: right, + }); + } + + if (currentHunk) hunks.push(currentHunk); + return hunks; +} + +function attachStructuredSplitHunks(diffs: GitDiff[], value: unknown): GitDiff[] { + const availableHunks = adaptStructuredSplitHunks(value); + let hunkOffset = 0; + + return diffs.map((diff) => { + const hunkCount = diff.lines.filter((line) => line.line_type === "header").length; + const splitHunks = availableHunks.slice(hunkOffset, hunkOffset + hunkCount); + hunkOffset += hunkCount; + if (splitHunks.length !== hunkCount || hunkCount === 0) return diff; + + const stats = countSplitDiffStats(splitHunks); + return { + ...diff, + split_hunks: splitHunks, + additions: stats.additions, + deletions: stats.deletions, + }; + }); +} + function adaptDiff(command: string, args: JsonRecord | undefined, value: unknown): unknown { const data = asRecord(value); const patch = typeof data.patch === "string" ? data.patch : ""; @@ -24,13 +79,14 @@ function adaptDiff(command: string, args: JsonRecord | undefined, value: unknown argumentsRecord.baseRef ?? `git-${command}.diff`; const parsed = parseRawDiffContent(patch, String(fallback)); + const parsedDiffs = "files" in parsed ? parsed.files : [parsed]; + const diffs = attachStructuredSplitHunks(parsedDiffs, data.rows); if (command === "git_diff_file") { - return "files" in parsed ? parsed.files[0] ?? null : parsed; + return diffs[0] ?? null; } if (command === "git_status_diff_stats") { const staged = Boolean(argumentsRecord.staged); - const diffs = "files" in parsed ? parsed.files : [parsed]; return diffs.map((diff) => ({ file_path: diff.file_path, staged, @@ -38,7 +94,7 @@ function adaptDiff(command: string, args: JsonRecord | undefined, value: unknown deletions: diff.deletions ?? diff.lines.filter((line) => line.line_type === "removed").length, })); } - return "files" in parsed ? parsed.files : [parsed]; + return diffs; } export function adaptCoreResult( From 2c289ea4895be71e5888398dc46b02a7ea5fd08a Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 11:27:13 +0800 Subject: [PATCH 08/83] docs: add Windows split diff screenshots --- .../screenshots/windows-git-split-addition.png | Bin 0 -> 104304 bytes .../screenshots/windows-git-split-deletion.png | Bin 0 -> 102312 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/screenshots/windows-git-split-addition.png create mode 100644 docs/assets/screenshots/windows-git-split-deletion.png diff --git a/docs/assets/screenshots/windows-git-split-addition.png b/docs/assets/screenshots/windows-git-split-addition.png new file mode 100644 index 0000000000000000000000000000000000000000..c83287138efcf8db02cf26c66ff48aa30c610635 GIT binary patch literal 104304 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

P1 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 literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/windows-git-split-deletion.png b/docs/assets/screenshots/windows-git-split-deletion.png new file mode 100644 index 0000000000000000000000000000000000000000..b57616015055f3e28badb4e1ef00ab629aa84e2a GIT binary patch literal 102312 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 z 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ⅅ|txguIOx5Q~xVvkL7&Mc&`E%vk%nnP- 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%0A&+N6jo6xNzciHXtUEdoW>bHGCfcda%hsieT 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≶r(LuB54hch$OyU56=z_I4Al52q7# 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 OA`G6celF{r5}E*wQflD< literal 0 HcmV?d00001 From f21842eb94dce6f3c80e156424e1a23cf81a8db8 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:40:28 +0800 Subject: [PATCH 09/83] feat(windows): translate merge and rebase commands for the platform dispatcher - translate git_merge and git_rebase into git.write with qualified refs/heads references, mirroring the checkout translations - add git_integration_preflight, git_operation_state, git_operation_continue/abort/skip, and git_conflict_markers translations so the frontend can drive the shared core's conflict machinery --- windows/tauri/src-tauri/src/platform.rs | 118 ++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/windows/tauri/src-tauri/src/platform.rs b/windows/tauri/src-tauri/src/platform.rs index ea1e310dd..6551bebb2 100644 --- a/windows/tauri/src-tauri/src/platform.rs +++ b/windows/tauri/src-tauri/src/platform.rs @@ -148,6 +148,41 @@ fn translate(command: &str, args: Value) -> Result<(String, Value), String> { ); "git.checkoutPreflight" } + "git_merge" | "git_rebase" => { + let branch = take_text(&mut payload, "branchName")?; + payload.insert( + "reference".into(), + json!(local_branch_reference(&branch)), + ); + payload.insert( + "operation".into(), + json!(if command == "git_merge" { + "merge" + } else { + "rebase" + }), + ); + "git.write" + } + "git_integration_preflight" => { + let branch = take_text(&mut payload, "branchName")?; + payload.insert( + "reference".into(), + json!(local_branch_reference(&branch)), + ); + "git.integrationPreflight" + } + "git_operation_state" => "git.operationState", + "git_operation_continue" | "git_operation_abort" | "git_operation_skip" => { + let operation = match command { + "git_operation_continue" => "operationContinue", + "git_operation_abort" => "operationAbort", + _ => "operationSkip", + }; + payload.insert("operation".into(), json!(operation)); + "git.write" + } + "git_conflict_markers" => "git.conflictMarkers", "git_create_stash" => { payload.insert("operation".into(), json!("stashPush")); "git.write" @@ -500,6 +535,89 @@ mod tests { ); } + #[test] + fn translates_merge_and_rebase_to_qualified_references() { + let (merge_command, merge_payload) = translate( + "git_merge", + json!({ "repoPath": "C:/work", "branchName": "feature/demo" }), + ) + .unwrap(); + assert_eq!(merge_command, "git.write"); + assert_eq!( + merge_payload, + json!({ + "root": "C:/work", + "operation": "merge", + "reference": "refs/heads/feature/demo" + }) + ); + + let (rebase_command, rebase_payload) = translate( + "git_rebase", + json!({ "repoPath": "C:/work", "branchName": "main" }), + ) + .unwrap(); + assert_eq!(rebase_command, "git.write"); + assert_eq!( + rebase_payload, + json!({ + "root": "C:/work", + "operation": "rebase", + "reference": "refs/heads/main" + }) + ); + } + + #[test] + fn translates_integration_preflight_operation() { + let (command, payload) = translate( + "git_integration_preflight", + json!({ "repoPath": "C:/work", "branchName": "main", "operation": "rebase" }), + ) + .unwrap(); + + assert_eq!(command, "git.integrationPreflight"); + assert_eq!( + payload, + json!({ + "root": "C:/work", + "reference": "refs/heads/main", + "operation": "rebase" + }) + ); + } + + #[test] + fn translates_operation_state_and_resolution_commands() { + let (state_command, state_payload) = + translate("git_operation_state", json!({ "repoPath": "C:/work" })).unwrap(); + assert_eq!(state_command, "git.operationState"); + assert_eq!(state_payload, json!({ "root": "C:/work" })); + + for (compat, operation) in [ + ("git_operation_continue", "operationContinue"), + ("git_operation_abort", "operationAbort"), + ("git_operation_skip", "operationSkip"), + ] { + let (command, payload) = + translate(compat, json!({ "repoPath": "C:/work" })).unwrap(); + assert_eq!(command, "git.write"); + assert_eq!( + payload, + json!({ "root": "C:/work", "operation": operation }) + ); + } + } + + #[test] + fn translates_conflict_markers_request() { + let (command, payload) = + translate("git_conflict_markers", json!({ "repoPath": "C:/work" })).unwrap(); + + assert_eq!(command, "git.conflictMarkers"); + assert_eq!(payload, json!({ "root": "C:/work" })); + } + #[test] fn translates_delete_branch_to_qualified_reference() { let (command, payload) = translate( From a9a0e4e20043cf34c05d6911aa1e6d4b601629d7 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:41:40 +0800 Subject: [PATCH 10/83] feat(windows): adapt operation state and integration preflight results - map git.operationState responses into a UI-ready shape and collapse the no-operation case to null, matching the macOS model - pass through integration preflight blocking paths and conflict marker paths for the upcoming banner and commit guard --- .../core-result-adapter.operation.test.ts | 79 +++++++++++++++++++ .../tauri/src/platform/core-result-adapter.ts | 31 ++++++++ 2 files changed, 110 insertions(+) create mode 100644 windows/tauri/src/platform/core-result-adapter.operation.test.ts diff --git a/windows/tauri/src/platform/core-result-adapter.operation.test.ts b/windows/tauri/src/platform/core-result-adapter.operation.test.ts new file mode 100644 index 000000000..f58285785 --- /dev/null +++ b/windows/tauri/src/platform/core-result-adapter.operation.test.ts @@ -0,0 +1,79 @@ +import { describe, expect, test } from "bun:test"; +import { adaptCoreResult } from "./core-result-adapter"; + +describe("git operation state adaptation", () => { + test("maps an in-progress rebase with progress counters", () => { + const state = adaptCoreResult( + "git_operation_state", + { repoPath: "C:/work" }, + { + kind: "rebase", + reference: "abc123", + step: 3, + total: 7, + conflictedPaths: ["src/main.rs", "README.md"], + }, + ); + + expect(state).toEqual({ + kind: "rebase", + reference: "abc123", + step: 3, + total: 7, + conflictedPaths: ["src/main.rs", "README.md"], + }); + }); + + test("returns null when no operation is in progress", () => { + const state = adaptCoreResult( + "git_operation_state", + { repoPath: "C:/work" }, + { kind: "", reference: null, step: null, total: null, conflictedPaths: [] }, + ); + + expect(state).toBeNull(); + }); + + test("keeps merge state without optional counters", () => { + const state = adaptCoreResult( + "git_operation_state", + { repoPath: "C:/work" }, + { kind: "merge", reference: null, step: null, total: null, conflictedPaths: ["a.txt"] }, + ); + + expect(state).toEqual({ + kind: "merge", + reference: null, + step: null, + total: null, + conflictedPaths: ["a.txt"], + }); + }); +}); + +describe("git integration preflight adaptation", () => { + test("passes through blocking paths and the blocks-entirely flag", () => { + const preflight = adaptCoreResult( + "git_integration_preflight", + { repoPath: "C:/work", branchName: "main", operation: "rebase" }, + { blockingPaths: ["a.txt", "b.txt"], blocksEntirely: true }, + ); + + expect(preflight).toEqual({ + blockingPaths: ["a.txt", "b.txt"], + blocksEntirely: true, + }); + }); +}); + +describe("git conflict marker adaptation", () => { + test("passes through staged files that still contain markers", () => { + const markers = adaptCoreResult( + "git_conflict_markers", + { repoPath: "C:/work" }, + { paths: ["src/conflicted.rs"] }, + ); + + expect(markers).toEqual({ paths: ["src/conflicted.rs"] }); + }); +}); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index 016ff75fb..1b946ec83 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -219,6 +219,37 @@ export function adaptCoreResult( } case "git_checkout_tag": return { success: true, hasChanges: false, message: "" } as T; + case "git_operation_state": { + const kind = typeof data.kind === "string" ? data.kind : ""; + if (!kind) { + return null as T; + } + const conflictedPaths = Array.isArray(data.conflictedPaths) + ? data.conflictedPaths.map((path: unknown) => String(path)) + : []; + return { + kind, + reference: typeof data.reference === "string" ? data.reference : null, + step: typeof data.step === "number" ? data.step : null, + total: typeof data.total === "number" ? data.total : null, + conflictedPaths, + } as T; + } + case "git_integration_preflight": { + const blockingPaths = Array.isArray(data.blockingPaths) + ? data.blockingPaths.map((path: unknown) => String(path)) + : []; + return { + blockingPaths, + blocksEntirely: Boolean(data.blocksEntirely), + } as T; + } + case "git_conflict_markers": { + const paths = Array.isArray(data.paths) + ? data.paths.map((path: unknown) => String(path)) + : []; + return { paths } as T; + } default: return value as T; } From 664b2a5546caef1d2a1f46f81ed29ceab05f5cbf Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:45:52 +0800 Subject: [PATCH 11/83] feat(windows): track in-progress Git operations in the git store - add git-integration-api with preflight-first merge/rebase that distinguishes conflict stops from real failures via operation state - store operationState in the workspace git store and refresh it on every status pass so banner state stays true to the repository --- .../features/git/api/git-integration-api.ts | 142 ++++++++++++++++++ .../git/hooks/use-git-data-controller.ts | 11 +- .../src/features/git/stores/git.store.test.ts | 1 + .../src/features/git/stores/git.store.ts | 13 +- .../tauri/src/features/git/types/git.types.ts | 14 ++ 5 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 windows/tauri/src/features/git/api/git-integration-api.ts diff --git a/windows/tauri/src/features/git/api/git-integration-api.ts b/windows/tauri/src/features/git/api/git-integration-api.ts new file mode 100644 index 000000000..ba528ae4d --- /dev/null +++ b/windows/tauri/src/features/git/api/git-integration-api.ts @@ -0,0 +1,142 @@ +import { invoke as tauriInvoke } from "@/platform/tauri-core"; +import { emitGitChanged } from "../events/git-events"; +import { resolveRepositoryPathOrThrow } from "./git-repo-api"; +import type { GitOperationState } from "../types/git.types"; + +type IntegrationOperation = "merge" | "rebase"; + +interface IntegrationPreflightResult { + blockingPaths: string[]; + blocksEntirely: boolean; +} + +export type IntegrationOutcome = + | { status: "clean" } + | { status: "conflicts"; conflictedPaths: string[] } + | { status: "blocked"; blockingPaths: string[]; blocksEntirely: boolean } + | { status: "error"; message: string }; + +export interface OperationResolution { + ok: boolean; + message: string; +} + +const errorMessage = (error: unknown): string => { + const message = error instanceof Error ? error.message : String(error); + return message.trim() || "Git operation failed"; +}; + +const notifyOperationChanged = (repoPath: string, source: string) => { + emitGitChanged({ + repoPath, + scopes: ["working-tree", "history", "refs"], + source, + }); +}; + +export const getOperationState = async ( + repoPath: string, +): Promise => { + try { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + return await tauriInvoke("git_operation_state", { + repoPath: resolvedRepoPath, + }); + } catch { + return null; + } +}; + +export const getConflictMarkerPaths = async (repoPath: string): Promise => { + try { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + const result = await tauriInvoke<{ paths: string[] }>("git_conflict_markers", { + repoPath: resolvedRepoPath, + }); + return result.paths; + } catch { + return []; + } +}; + +const runIntegration = async ( + repoPath: string, + branchName: string, + operation: IntegrationOperation, +): Promise => { + const command = operation === "merge" ? "git_merge" : "git_rebase"; + try { + await tauriInvoke(command, { repoPath, branchName }); + notifyOperationChanged(repoPath, `${operation}-completed`); + return { status: "clean" }; + } catch (error) { + // A conflict stop exits non-zero like a real failure; the authoritative + // distinction is whether Git left an operation state behind. + const state = await getOperationState(repoPath); + if (state && state.kind === operation && state.conflictedPaths.length > 0) { + notifyOperationChanged(repoPath, `${operation}-conflicts`); + return { status: "conflicts", conflictedPaths: state.conflictedPaths }; + } + return { status: "error", message: errorMessage(error) }; + } +}; + +const startIntegration = async ( + repoPath: string, + branchName: string, + operation: IntegrationOperation, +): Promise => { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + + let preflight: IntegrationPreflightResult | null = null; + try { + preflight = await tauriInvoke( + "git_integration_preflight", + { repoPath: resolvedRepoPath, branchName, operation }, + ); + } catch { + // A failed preflight must not block the operation itself; Git will still + // refuse safely when the tree is dirty. + } + + if (preflight && preflight.blockingPaths.length > 0) { + return { + status: "blocked", + blockingPaths: preflight.blockingPaths, + blocksEntirely: preflight.blocksEntirely, + }; + } + + return runIntegration(resolvedRepoPath, branchName, operation); +}; + +export const mergeBranch = (repoPath: string, branchName: string) => + startIntegration(repoPath, branchName, "merge"); + +export const rebaseOntoBranch = (repoPath: string, branchName: string) => + startIntegration(repoPath, branchName, "rebase"); + +const resolveOperation = async ( + repoPath: string, + action: "git_operation_continue" | "git_operation_abort" | "git_operation_skip", +): Promise => { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + try { + await tauriInvoke(action, { repoPath: resolvedRepoPath }); + notifyOperationChanged(resolvedRepoPath, "operation-resolved"); + return { ok: true, message: "Git operation finished" }; + } catch (error) { + // Even a rejected continue can change repository state, so refresh anyway. + notifyOperationChanged(resolvedRepoPath, "operation-resolution-rejected"); + return { ok: false, message: errorMessage(error) }; + } +}; + +export const continueOperation = (repoPath: string) => + resolveOperation(repoPath, "git_operation_continue"); + +export const abortOperation = (repoPath: string) => + resolveOperation(repoPath, "git_operation_abort"); + +export const skipOperationStep = (repoPath: string) => + resolveOperation(repoPath, "git_operation_skip"); diff --git a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts index 1966e7d2a..71b750040 100644 --- a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts +++ b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts @@ -2,6 +2,7 @@ import { useCallback, useEffect, useRef } from "react"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { getBranches } from "../api/git-branches-api"; import { getGitHistory } from "../api/git-commits-api"; +import { getOperationState } from "../api/git-integration-api"; import { getStashes } from "../api/git-stash-api"; import { getGitStatus } from "../api/git-status-api"; import { @@ -40,11 +41,12 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl gitActions.setIsLoadingGitData(true); try { - const [status, history, branches, stashes] = await Promise.all([ + const [status, history, branches, stashes, operationState] = await Promise.all([ getGitStatus(repoPath), getGitHistory(repoPath, 50), getBranches(repoPath), getStashes(repoPath), + getOperationState(repoPath), ]); if ( @@ -60,6 +62,7 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl hasMoreCommits: history?.hasMore ?? false, branches, stashes, + operationState, repoPath, }); } catch (error) { @@ -91,11 +94,14 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl refreshAll || scopes.includes("refs") || scopes.includes("repository"); const shouldRefreshStashes = refreshAll || scopes.includes("stashes") || scopes.includes("repository"); - const [status, branches, stashes, history] = await Promise.all([ + const [status, branches, stashes, history, operationState] = await Promise.all([ getGitStatus(repoPath), shouldRefreshRefs ? getBranches(repoPath) : Promise.resolve(undefined), shouldRefreshStashes ? getStashes(repoPath) : Promise.resolve(undefined), shouldRefreshHistory ? getGitHistory(repoPath, 50) : Promise.resolve(undefined), + // Operation state rides along on every refresh: staging a file or + // an external Git command can end a conflict at any moment. + getOperationState(repoPath), ]); if ( @@ -110,6 +116,7 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl branches, commits: history?.commits, hasMoreCommits: history?.hasMore, + operationState, repoPath, }); diff --git a/windows/tauri/src/features/git/stores/git.store.test.ts b/windows/tauri/src/features/git/stores/git.store.test.ts index 70d18e330..e625b746d 100644 --- a/windows/tauri/src/features/git/stores/git.store.test.ts +++ b/windows/tauri/src/features/git/stores/git.store.test.ts @@ -31,6 +31,7 @@ const loadInitialHistory = ( hasMoreCommits: true, branches: [], stashes: [], + operationState: null, repoPath, }); }; diff --git a/windows/tauri/src/features/git/stores/git.store.ts b/windows/tauri/src/features/git/stores/git.store.ts index 7223fd477..0c88d6c6b 100644 --- a/windows/tauri/src/features/git/stores/git.store.ts +++ b/windows/tauri/src/features/git/stores/git.store.ts @@ -2,7 +2,7 @@ import { createStore } from "zustand/vanilla"; import { createWorkspaceScopedStore } from "@/features/workspace/stores/create-workspace-scoped-store"; import { getGitHistory } from "../api/git-commits-api"; import { getGitStatus } from "../api/git-status-api"; -import type { GitCommit, GitStash, GitStatus } from "../types/git.types"; +import type { GitCommit, GitOperationState, GitStash, GitStatus } from "../types/git.types"; interface GitState { gitStatus: GitStatus | null; @@ -10,6 +10,7 @@ interface GitState { commits: GitCommit[]; branches: string[]; stashes: GitStash[]; + operationState: GitOperationState | null; hasMoreCommits: boolean; isLoadingMoreCommits: boolean; isLoadingGitData: boolean; @@ -26,6 +27,7 @@ interface GitState { hasMoreCommits: boolean; branches: string[]; stashes: GitStash[]; + operationState: GitOperationState | null; repoPath: string; }) => void; refreshGitData: (data: { @@ -33,6 +35,7 @@ interface GitState { branches?: string[]; commits?: GitCommit[]; hasMoreCommits?: boolean; + operationState: GitOperationState | null; repoPath: string; }) => void; refreshWorkspaceGitStatus: (repoPath: string) => Promise; @@ -58,6 +61,7 @@ export const createGitStore = () => commits: [], branches: [], stashes: [], + operationState: null, hasMoreCommits: true, isLoadingMoreCommits: false, isLoadingGitData: false, @@ -76,6 +80,7 @@ export const createGitStore = () => commits: [], branches: [], stashes: [], + operationState: null, hasMoreCommits: true, isLoadingMoreCommits: false, currentRepoPath: repoPath, @@ -88,6 +93,7 @@ export const createGitStore = () => hasMoreCommits, branches, stashes, + operationState, repoPath, }) => { if (get().currentRepoPath !== repoPath) { @@ -99,18 +105,20 @@ export const createGitStore = () => commits, branches, stashes, + operationState, hasMoreCommits, currentRepoPath: repoPath, }); }, - refreshGitData: ({ gitStatus, branches, commits, hasMoreCommits, repoPath }) => { + refreshGitData: ({ gitStatus, branches, commits, hasMoreCommits, operationState, repoPath }) => { if (get().currentRepoPath !== repoPath) { return; } set({ gitStatus, + operationState, ...(branches ? { branches } : {}), ...(commits ? { @@ -183,6 +191,7 @@ export const createGitStore = () => commits: [], branches: [], stashes: [], + operationState: null, hasMoreCommits: true, isLoadingMoreCommits: false, isLoadingGitData: false, diff --git a/windows/tauri/src/features/git/types/git.types.ts b/windows/tauri/src/features/git/types/git.types.ts index d9646703b..e19ede84f 100644 --- a/windows/tauri/src/features/git/types/git.types.ts +++ b/windows/tauri/src/features/git/types/git.types.ts @@ -116,3 +116,17 @@ export interface GitBlameLine { time: number; commit: string; } + +export type GitOperationKind = "merge" | "rebase" | "cherryPick" | "revert"; + +/** + * An in-progress merge/rebase/cherry-pick/revert detected from the repository's + * Git marker files, so operations started outside the app are reported too. + */ +export interface GitOperationState { + kind: GitOperationKind; + reference: string | null; + step: number | null; + total: number | null; + conflictedPaths: string[]; +} From be4d1d6c73915be7c9565fbc96c3a5406f8c24f4 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:49:52 +0800 Subject: [PATCH 12/83] feat(windows): add the Git operation banner above the changes list - mirror the macOS banner: in-progress title, rebase step counters, conflict count, and Continue/Skip/Abort actions - keep Continue disabled while conflicts remain and re-run resolution through the shared core, refreshing state after every attempt --- .../git/components/git-operation-banner.tsx | 132 ++++++++++++++++++ .../src/features/git/components/git-view.tsx | 34 +++-- 2 files changed, 151 insertions(+), 15 deletions(-) create mode 100644 windows/tauri/src/features/git/components/git-operation-banner.tsx diff --git a/windows/tauri/src/features/git/components/git-operation-banner.tsx b/windows/tauri/src/features/git/components/git-operation-banner.tsx new file mode 100644 index 000000000..6ecfbcfc0 --- /dev/null +++ b/windows/tauri/src/features/git/components/git-operation-banner.tsx @@ -0,0 +1,132 @@ +import { useCallback, useState } from "react"; +import { toast } from "sonner"; +import { Button } from "@/ui/button"; +import { WarningIcon } from "@/ui/icons"; +import { + abortOperation, + continueOperation, + skipOperationStep, + type OperationResolution, +} from "../api/git-integration-api"; +import { useGitStore } from "../stores/git.store"; +import { cn } from "@/utils/cn"; +import type { GitOperationKind } from "../types/git.types"; + +const IN_PROGRESS_TITLES: Record = { + merge: "Merge in progress", + rebase: "Rebase in progress", + cherryPick: "Cherry-pick in progress", + revert: "Revert in progress", +}; + +const CONTINUE_TITLES: Record = { + merge: "Continue Merge", + rebase: "Continue Rebase", + cherryPick: "Continue Cherry-pick", + revert: "Continue Revert", +}; + +interface GitOperationBannerProps { + repoPath: string; +} + +/** + * Pins the state of an in-progress merge/rebase/cherry-pick/revert above the + * changes list. Deliberately not a dialog: the controls must stay reachable + * while the user edits conflicted files, mirroring the macOS sidebar banner. + */ +const GitOperationBanner = ({ repoPath }: GitOperationBannerProps) => { + const operation = useGitStore((state) => state.operationState); + + const [isResolving, setIsResolving] = useState(false); + + const resolve = useCallback( + async (action: (repoPath: string) => Promise) => { + setIsResolving(true); + try { + const result = await action(repoPath); + // A rejected continue can still change state; the API already + // requested a refresh either way, so only surface the message here. + if (!result.ok) { + toast.error(result.message); + } + } catch (error) { + toast.error(error instanceof Error ? error.message : "Git operation failed"); + } finally { + setIsResolving(false); + } + }, + [repoPath, toast], + ); + + if (!operation) { + return null; + } + + const hasConflicts = operation.conflictedPaths.length > 0; + const hasProgress = operation.step != null && operation.total != null; + + return ( +

+
+ + {IN_PROGRESS_TITLES[operation.kind]} + {operation.reference ? ( + + — {operation.reference.slice(0, 7)} + + ) : null} +
+ +
+ {hasProgress ? Step {operation.step} of {operation.total}. : null} + {hasConflicts ? ( + + Resolve {operation.conflictedPaths.length} conflicted file + {operation.conflictedPaths.length === 1 ? "" : "s"}, stage them, then continue. + + ) : ( + All conflicts resolved. Continue to finish, or abort to undo. + )} +
+ +
+ + {operation.kind === "rebase" ? ( + + ) : null} + +
+
+ ); +}; + +export default GitOperationBanner; diff --git a/windows/tauri/src/features/git/components/git-view.tsx b/windows/tauri/src/features/git/components/git-view.tsx index d70012b27..c8993cbf0 100644 --- a/windows/tauri/src/features/git/components/git-view.tsx +++ b/windows/tauri/src/features/git/components/git-view.tsx @@ -57,6 +57,7 @@ import GitCommitPanel from "./git-commit-panel"; import GitCommandSurface from "./git-command-surface"; import GitRemoteManager from "./git-remote-manager"; import GitTagManager from "./git-tag-manager"; +import GitOperationBanner from "./git-operation-banner"; import GitStatusPanel from "./status/git-status-panel"; interface GitViewProps { @@ -834,21 +835,24 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { { id: "changes", content: ( - void handleViewWorkingTreeDiff(scope)} - onShowCommitDiffPicker={handleShowCommitDiffList} - onShowBranchDiffPicker={() => void handleShowBranchDiffList()} - onShowStashDiffPicker={() => { - setShowStashList(true); - setStashSearchQuery(""); - }} - onRefresh={refreshAfterAction} - repoPath={activeRepoPath} - /> +
+ + void handleViewWorkingTreeDiff(scope)} + onShowCommitDiffPicker={handleShowCommitDiffList} + onShowBranchDiffPicker={() => void handleShowBranchDiffList()} + onShowStashDiffPicker={() => { + setShowStashList(true); + setStashSearchQuery(""); + }} + onRefresh={refreshAfterAction} + repoPath={activeRepoPath} + /> +
), }, { From a81920666ad5a3770803f70c37cee0e0f5e2440b Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:53:42 +0800 Subject: [PATCH 13/83] feat(windows): start merges and rebases from the branch manager - add a per-branch action menu with Merge into Current Branch and Rebase Current Branch onto This behind one confirmation each - surface clean, conflict-stop, blocked-by-dirty, and failure outcomes with the shared core's preflight and operation state --- .../git/components/git-branch-manager.tsx | 129 +++++++++++++++--- 1 file changed, 109 insertions(+), 20 deletions(-) diff --git a/windows/tauri/src/features/git/components/git-branch-manager.tsx b/windows/tauri/src/features/git/components/git-branch-manager.tsx index fcc2b813e..928ad1727 100644 --- a/windows/tauri/src/features/git/components/git-branch-manager.tsx +++ b/windows/tauri/src/features/git/components/git-branch-manager.tsx @@ -19,12 +19,20 @@ import { CommandTabs, useCommandListNavigation, } from "@/ui/command"; -import { GitBranchIcon, FolderOpenIcon, NodesIcon } from "@/ui/icons"; +import { GitBranchIcon, FolderOpenIcon, GitMergeIcon, NodesIcon, DotsThreeIcon } from "@/ui/icons"; import { showConfirmDialog } from "@/ui/dialog"; import { cn } from "@/utils/cn"; import { getFolderName, getRelativePath } from "@/utils/path-helpers"; import { matchesSearchQuery } from "@/utils/search-match"; import { checkoutBranch, createBranch, deleteBranch, getBranches } from "../api/git-branches-api"; +import { mergeBranch, rebaseOntoBranch, type IntegrationOutcome } from "../api/git-integration-api"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/ui/dropdown-menu"; import { resolveRepositoryPath } from "../api/git-repo-api"; import { createStash } from "../api/git-stash-api"; import { addWorktree, getWorktrees } from "../api/git-worktrees-api"; @@ -343,6 +351,66 @@ const GitBranchManager = ({ } }; + const reportIntegrationOutcome = (branchName: string, outcome: IntegrationOutcome) => { + if (outcome.status === "clean") { + showToast({ message: `Merged ${branchName} successfully.`, type: "success" }); + } else if (outcome.status === "conflicts") { + showToast({ + message: `Stopped with ${outcome.conflictedPaths.length} conflicted file${ + outcome.conflictedPaths.length === 1 ? "" : "s" + }. Resolve them in the changes list, then continue.`, + type: "warning", + duration: 6000, + }); + } else if (outcome.status === "blocked") { + const listed = outcome.blockingPaths.slice(0, 3).join(", "); + const remaining = outcome.blockingPaths.length - Math.min(outcome.blockingPaths.length, 3); + showToast({ + message: `Uncommitted changes would be overwritten: ${listed}${ + remaining > 0 ? ` (+${remaining} more)` + : ""}. Stash or commit them first.`, + type: "warning", + duration: 6000, + }); + } else { + showToast({ message: outcome.message, type: "error" }); + } + }; + + const handleIntegration = async (branchName: string, operation: "merge" | "rebase") => { + if (!repoPath || !branchName || branchName === currentBranch) return; + + const action = operation === "merge" ? "Merge" : "Rebase"; + const message = + operation === "merge" + ? `Merge branch "${branchName}" into "${currentBranch}"? Conflicts may require resolution.` + : `Rebase "${currentBranch}" onto "${branchName}"? Conflicts may require resolution.`; + const confirmed = await showConfirmDialog(message, { + title: `${action} Branch`, + confirmLabel: action, + }); + if (!confirmed) return; + + setIsLoading(true); + try { + const outcome = + operation === "merge" + ? await mergeBranch(repoPath, branchName) + : await rebaseOntoBranch(repoPath, branchName); + reportIntegrationOutcome(branchName, outcome); + if (outcome.status === "clean" || outcome.status === "conflicts") { + onBranchChange?.(); + } + } catch (error) { + showToast({ + message: error instanceof Error ? error.message : `${action} failed.`, + type: "error", + }); + } finally { + setIsLoading(false); + } + }; + const handleCreateBranch = async (branchName: string) => { if (!repoPath || !branchName.trim()) return; @@ -623,6 +691,8 @@ const GitBranchManager = ({ onMouseEnter={() => setSelectedIndex(index + (createBranchName ? 1 : 0))} onSelect={() => void handleBranchChange(branch)} onDelete={() => void handleDeleteBranch(branch)} + onMerge={() => void handleIntegration(branch, "merge")} + onRebase={() => void handleIntegration(branch, "rebase")} /> ))}
@@ -772,6 +842,8 @@ function BranchRow({ onMouseEnter, onSelect, onDelete, + onMerge, + onRebase, }: { branch: string; isCurrent: boolean; @@ -780,6 +852,8 @@ function BranchRow({ onMouseEnter: () => void; onSelect: () => void; onDelete: () => void; + onMerge: () => void; + onRebase: () => void; }) { return ( current : null} action={ !isCurrent ? ( - + + + } + > + + + + + + Merge into Current Branch + + + + Rebase Current Branch onto This + + + + + Delete Branch + + + +
) : null } /> From 8cec913d7b9614dc1dbcee9b580af90255c6304b Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 14:55:03 +0800 Subject: [PATCH 14/83] feat(windows): guard commits while conflicts stay unresolved - refuse to commit while the operation state still lists conflicted paths or staged files contain conflict markers, with the file names surfaced instead of Git's raw refusal --- .../features/git/components/git-commit-panel.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index 2a4b51189..089c5fbec 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -24,8 +24,10 @@ import { } from "@/features/editor/services/editor-inline-edit-service"; import { getFileDiff } from "../api/git-diff-api"; import { commitChanges, getGitLog } from "../api/git-commits-api"; +import { getConflictMarkerPaths } from "../api/git-integration-api"; import { pullChanges, pushChanges, type GitRemoteActionResult } from "../api/git-remotes-api"; import { useGitBlameStore } from "../stores/git-blame.store"; +import { useGitStore } from "../stores/git.store"; import type { GitDiff, GitFile } from "../types/git.types"; interface GitCommitPanelProps { @@ -287,6 +289,20 @@ const GitCommitPanel = ({ const handleCommit = async () => { if (!repoPath || !commitMessage.trim() || stagedFilesCount === 0) return; + // A conflicted merge/rebase must be resolved before the merge commit can + // be finalized; guard here so Git's raw refusal never reaches the user. + const conflictedPaths = useGitStore.getState().operationState?.conflictedPaths ?? []; + if (conflictedPaths.length > 0) { + setError(`Resolve the conflicts first: ${conflictedPaths.join(", ")}`); + return; + } + + const markerPaths = await getConflictMarkerPaths(repoPath); + if (markerPaths.length > 0) { + setError(`Conflict markers remain in: ${markerPaths.join(", ")}`); + return; + } + setIsCommitting(true); setError(null); From b725af1861f388808d9865788c9c07c9ddf7b8ce Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 15:30:37 +0800 Subject: [PATCH 15/83] fix(windows): stop the branch row click hijacking the action menu The action wrapper only stopped pointer-down propagation, so the click that opened the menu also bubbled to the row's checkout handler, which disabled the trigger and closed the menu instantly. Stop click propagation like the retired delete button did. --- windows/tauri/src/features/git/components/git-branch-manager.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/windows/tauri/src/features/git/components/git-branch-manager.tsx b/windows/tauri/src/features/git/components/git-branch-manager.tsx index 928ad1727..c945ed451 100644 --- a/windows/tauri/src/features/git/components/git-branch-manager.tsx +++ b/windows/tauri/src/features/git/components/git-branch-manager.tsx @@ -883,6 +883,7 @@ function BranchRow({ event.preventDefault(); event.stopPropagation(); }} + onClick={(event) => event.stopPropagation()} > Date: Sun, 16 Aug 2026 15:37:51 +0800 Subject: [PATCH 16/83] fix(windows): drop the tooltip wrapper that killed the branch action menu Button wraps itself in a Tooltip component when given a tooltip prop, so Base UI's render prop attached the menu trigger handlers to the tooltip wrapper instead of the real button and clicks never opened the menu. Pass only aria-label, like the working diff header trigger. --- windows/tauri/src/features/git/components/git-branch-manager.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/tauri/src/features/git/components/git-branch-manager.tsx b/windows/tauri/src/features/git/components/git-branch-manager.tsx index c945ed451..c8eb2be66 100644 --- a/windows/tauri/src/features/git/components/git-branch-manager.tsx +++ b/windows/tauri/src/features/git/components/git-branch-manager.tsx @@ -892,7 +892,6 @@ function BranchRow({ variant="ghost" size="icon-xs" disabled={isLoading} - tooltip={`Actions for ${branch}`} aria-label={`Branch actions for ${branch}`} type="button" /> From a096d24cdaaea09fc1435b41b5b451e9b0062d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=A4=A9=E5=9B=B0?= <2570024918@qq.com> Date: Sun, 16 Aug 2026 16:12:23 +0800 Subject: [PATCH 17/83] =?UTF-8?q?feat(windows):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=9C=A8=E6=A1=8C=E9=9D=A2=E7=AB=AF=E8=BF=90=E8=A1=8C=20Java?= =?UTF-8?q?=E3=80=81Maven=20=E4=B8=8E=20Spring=20Boot=20=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在活动栏左下角增加运行入口,配置由 Rust Core 生成并写入 .lithe,Windows 宿主负责发现本机 JDK/Maven 并拉起进程。打开项目不会自动生成配置。 --- windows/tauri/src-tauri/src/main.rs | 9 + windows/tauri/src-tauri/src/run.rs | 1163 +++++++++++++++++ .../src/config/backend-capabilities.test.ts | 2 + .../tauri/src/config/backend-capabilities.ts | 1 + .../constants/view-actions.tsx | 19 + .../keymaps/commands/command-registry.ts | 8 + .../keymaps/commands/view-command-actions.ts | 10 + .../keymaps/defaults/default-keymaps.ts | 1 + .../components/bottom-pane/bottom-pane.tsx | 17 + .../components/sidebar/main-sidebar.tsx | 21 +- .../sidebar/sidebar-pane-selector.tsx | 109 +- .../src/features/layout/config/item-order.ts | 1 + .../src/features/run/api/run-core-api.ts | 86 ++ .../src/features/run/api/run-host-api.ts | 55 + .../components/run-configuration-editor.tsx | 178 +++ .../src/features/run/components/run-icon.tsx | 48 + .../src/features/run/components/run-pane.tsx | 317 +++++ .../run/hooks/use-run-process-events.ts | 32 + .../src/features/run/stores/run.store.ts | 433 ++++++ .../tauri/src/features/run/types/run.types.ts | 135 ++ .../run/utils/run-configuration.test.ts | 95 ++ .../features/run/utils/run-configuration.ts | 162 +++ .../stores/ui-state/types/ui-state.types.ts | 8 +- windows/tauri/src/i18n/locale.test.ts | 3 + windows/tauri/src/i18n/locale.ts | 104 ++ windows/tauri/src/platform/tauri-core.ts | 18 + 26 files changed, 2998 insertions(+), 37 deletions(-) create mode 100644 windows/tauri/src-tauri/src/run.rs create mode 100644 windows/tauri/src/features/run/api/run-core-api.ts create mode 100644 windows/tauri/src/features/run/api/run-host-api.ts create mode 100644 windows/tauri/src/features/run/components/run-configuration-editor.tsx create mode 100644 windows/tauri/src/features/run/components/run-icon.tsx create mode 100644 windows/tauri/src/features/run/components/run-pane.tsx create mode 100644 windows/tauri/src/features/run/hooks/use-run-process-events.ts create mode 100644 windows/tauri/src/features/run/stores/run.store.ts create mode 100644 windows/tauri/src/features/run/types/run.types.ts create mode 100644 windows/tauri/src/features/run/utils/run-configuration.test.ts create mode 100644 windows/tauri/src/features/run/utils/run-configuration.ts diff --git a/windows/tauri/src-tauri/src/main.rs b/windows/tauri/src-tauri/src/main.rs index 11e025493..d2dc1531f 100644 --- a/windows/tauri/src-tauri/src/main.rs +++ b/windows/tauri/src-tauri/src/main.rs @@ -4,6 +4,7 @@ mod core; mod file_events; mod host; mod platform; +mod run; mod secure_storage; mod terminal; mod watcher; @@ -46,6 +47,7 @@ fn main() { std::env::args().skip(1), )); app.manage(host::FileClipboard::default()); + app.manage(run::RunProcessManager::default()); Ok(()) }) .invoke_handler(tauri::generate_handler![ @@ -87,6 +89,13 @@ fn main() { host::clipboard_paste, host::clipboard_clear, host::create_app_window, + run::run_list_java_sources, + run::run_write_generated, + run::run_write_document, + run::run_discover_toolchains, + run::run_resolve_launch, + run::run_start_process, + run::run_stop_process, ]) .run(tauri::generate_context!()) .expect("error while running Lithe desktop shell"); diff --git a/windows/tauri/src-tauri/src/run.rs b/windows/tauri/src-tauri/src/run.rs new file mode 100644 index 000000000..8a0bfcbd5 --- /dev/null +++ b/windows/tauri/src-tauri/src/run.rs @@ -0,0 +1,1163 @@ +//! Windows adapters for run-configuration persistence, toolchain discovery, and process launch. +//! +//! Shared detection, merge, and launch-plan assembly stay in `lithe-core`. This +//! module only writes `.lithe` documents, finds local JDK/Maven installations, +//! and streams child-process output to the workbench. + +use serde::{Deserialize, Serialize}; +use serde_json::{json, Map, Value}; +use std::collections::HashMap; +use std::fs; +use std::io::Read; +use std::path::{Path, PathBuf}; +use std::process::{Child, Command, Stdio}; +use std::sync::{Mutex, OnceLock}; +use std::thread; +use tauri::{AppHandle, Emitter}; + +const CREATE_NO_WINDOW: u32 = 0x0800_0000; +const SKIPPED_DIRECTORIES: &[&str] = &[ + "target", + "node_modules", + ".git", + "build", + "dist", + "out", + ".idea", + ".lithe", + "bin", + "obj", + "__pycache__", + ".gradle", + "vendor", + "coverage", + ".svn", + ".hg", +]; +const MAX_JAVA_SOURCES: usize = 8_000; +const LITHE_GITIGNORE: &str = "run/local.json\n**/*.tmp\n"; + +pub struct RunProcessManager; + +struct RunningSession { + pid: u32, +} + +impl Default for RunProcessManager { + fn default() -> Self { + Self + } +} + +fn sessions() -> &'static Mutex> { + static SESSIONS: OnceLock>> = OnceLock::new(); + SESSIONS.get_or_init(|| Mutex::new(HashMap::new())) +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct WriteGeneratedArgs { + pub root: PathBuf, + pub generated: Value, + pub toolchain_requirements: Value, + pub default_run_configuration: Option, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct WriteDocumentArgs { + pub root: PathBuf, + pub relative_path: String, + pub contents: String, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct DiscoveredToolchains { + pub java: Vec, + pub maven: Vec, +} + +#[derive(Debug, Clone, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct JavaRuntime { + pub home_path: String, + pub version: String, + pub vendor: String, +} + +#[derive(Debug, Clone, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct MavenRuntime { + pub executable_path: String, + pub version: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ResolveLaunchArgs { + pub root: PathBuf, + pub executable: LaunchExecutable, + pub working_directory: String, + #[serde(default)] + pub java_home_path: String, + #[serde(default)] + pub maven_executable_path: String, + #[serde(default)] + pub maven_java_home_path: String, + #[serde(default)] + pub environment: Map, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct LaunchExecutable { + pub toolchain: Option, + pub command: Option, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ResolvedLaunch { + pub executable: String, + pub working_directory: String, + pub environment: HashMap, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct StartProcessArgs { + pub session_id: String, + pub executable: String, + pub arguments: Vec, + pub working_directory: String, + #[serde(default)] + pub environment: HashMap, +} + +#[tauri::command] +pub fn run_list_java_sources(root: PathBuf) -> Result, String> { + let root = existing_directory(&root)?; + let mut paths = Vec::new(); + collect_java_sources(&root, &root, &mut paths)?; + paths.sort(); + Ok(paths) +} + +#[tauri::command] +pub fn run_write_generated(args: WriteGeneratedArgs) -> Result<(), String> { + write_generated_documents( + &args.root, + &args.generated, + &args.toolchain_requirements, + args.default_run_configuration.as_deref(), + ) +} + +#[tauri::command] +pub fn run_write_document(args: WriteDocumentArgs) -> Result<(), String> { + let root = existing_directory(&args.root)?; + let relative = args.relative_path.replace('\\', "/"); + if !matches!( + relative.as_str(), + "run/local.json" | "run/configurations.json" | "project.json" + ) { + return Err("Run documents can only be written under .lithe/run or .lithe/project.json".into()); + } + let target = join_relative(&root.join(".lithe"), &relative); + validate_write_target(&root, &target)?; + if let Some(parent) = target.parent() { + fs::create_dir_all(parent).map_err(|error| error.to_string())?; + } + atomic_write(&target, args.contents.as_bytes()) +} + +#[tauri::command] +pub fn run_discover_toolchains(root: PathBuf) -> Result { + let project_root = existing_directory(&root).ok(); + Ok(discover_toolchains(project_root.as_deref())) +} + +#[tauri::command] +pub fn run_resolve_launch(args: ResolveLaunchArgs) -> Result { + let root = existing_directory(&args.root)?; + let working_directory = resolve_working_directory(&root, &args.working_directory)?; + let java_home = resolve_java_home(&root, &args.java_home_path)?; + let maven_java_home = if args.maven_java_home_path.trim().is_empty() { + java_home.clone() + } else { + resolve_java_home(&root, &args.maven_java_home_path)? + }; + let executable = resolve_executable( + &root, + &working_directory, + &args.executable, + &args.maven_executable_path, + java_home.as_deref(), + )?; + let mut environment = std::env::vars().collect::>(); + if let Some(home) = &java_home { + environment.insert("JAVA_HOME".into(), home.clone()); + } + for (key, value) in args.environment { + if let Some(text) = resolve_environment_value( + &value, + java_home.as_deref(), + maven_java_home.as_deref(), + ) { + environment.insert(key, text); + } + } + if let Some(home) = maven_java_home.or(java_home) { + environment.entry("JAVA_HOME".into()).or_insert(home); + } + Ok(ResolvedLaunch { + executable, + working_directory: working_directory.to_string_lossy().into_owned(), + environment, + }) +} + +#[tauri::command] +pub fn run_start_process(app: AppHandle, args: StartProcessArgs) -> Result<(), String> { + stop_session(&args.session_id); + let mut command = command_for_executable(&args.executable, &args.arguments); + command + .current_dir(&args.working_directory) + .envs(&args.environment) + .stdin(Stdio::null()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()); + apply_creation_flags(&mut command); + let mut child = command + .spawn() + .map_err(|error| format!("Unable to start process: {error}"))?; + let pid = child.id(); + let stdout = child.stdout.take(); + let stderr = child.stderr.take(); + sessions() + .lock() + .map_err(|_| "Run process state is unavailable".to_string())? + .insert(args.session_id.clone(), RunningSession { pid }); + + let stdout_reader = spawn_output_reader(app.clone(), args.session_id.clone(), stdout); + let stderr_reader = spawn_output_reader(app.clone(), args.session_id.clone(), stderr); + spawn_exit_waiter(app, args.session_id, child, pid, stdout_reader, stderr_reader); + Ok(()) +} + +#[tauri::command] +pub fn run_stop_process(session_id: String) -> Result<(), String> { + stop_session(&session_id); + Ok(()) +} + +fn write_generated_documents( + root: &Path, + generated: &Value, + requirements: &Value, + default_run_configuration: Option<&str>, +) -> Result<(), String> { + let root = existing_directory(root)?; + let lithe_directory = root.join(".lithe"); + let run_directory = lithe_directory.join("run"); + let toolchain_directory = lithe_directory.join("toolchains"); + let generated_path = run_directory.join("generated.json"); + let requirements_path = toolchain_directory.join("requirements.json"); + let ignore_path = lithe_directory.join(".gitignore"); + let manifest_path = lithe_directory.join("project.json"); + for path in [&generated_path, &requirements_path, &ignore_path, &manifest_path] { + validate_write_target(&root, path)?; + } + fs::create_dir_all(&run_directory).map_err(|error| error.to_string())?; + fs::create_dir_all(&toolchain_directory).map_err(|error| error.to_string())?; + atomic_write(&requirements_path, pretty_json(requirements)?.as_bytes())?; + if !ignore_path.exists() { + atomic_write(&ignore_path, LITHE_GITIGNORE.as_bytes())?; + } + if !manifest_path.exists() { + let mut manifest = json!({ "version": 1 }); + if let Some(default_id) = default_run_configuration.filter(|value| !value.is_empty()) { + manifest["defaultRunConfiguration"] = json!(default_id); + } + atomic_write(&manifest_path, pretty_json(&manifest)?.as_bytes())?; + } + atomic_write(&generated_path, pretty_json(generated)?.as_bytes()) +} + +fn collect_java_sources(root: &Path, directory: &Path, paths: &mut Vec) -> Result<(), String> { + if paths.len() >= MAX_JAVA_SOURCES { + return Ok(()); + } + let entries = fs::read_dir(directory).map_err(|error| error.to_string())?; + for entry in entries { + let entry = entry.map_err(|error| error.to_string())?; + let path = entry.path(); + let file_type = entry.file_type().map_err(|error| error.to_string())?; + if file_type.is_dir() { + let name = entry.file_name().to_string_lossy().to_string(); + if is_skipped_directory(&name) { + continue; + } + collect_java_sources(root, &path, paths)?; + continue; + } + if file_type.is_file() { + let name = entry.file_name().to_string_lossy().to_string(); + if name.to_ascii_lowercase().ends_with(".java") { + if let Some(relative) = workspace_relative(root, &path) { + paths.push(relative); + } + } + } + } + Ok(()) +} + +fn is_skipped_directory(name: &str) -> bool { + name.starts_with('.') || SKIPPED_DIRECTORIES.iter().any(|value| value.eq_ignore_ascii_case(name)) +} + +fn workspace_relative(root: &Path, path: &Path) -> Option { + path.strip_prefix(root) + .ok() + .map(|relative| relative.to_string_lossy().replace('\\', "/")) +} + +fn existing_directory(path: &Path) -> Result { + let canonical = normalize_path(path); + if !canonical.is_dir() { + return Err("The project directory is unavailable.".into()); + } + Ok(canonical) +} + +fn normalize_path(path: &Path) -> PathBuf { + let canonical = path.canonicalize().unwrap_or_else(|_| path.to_path_buf()); + let text = canonical.to_string_lossy(); + PathBuf::from(text.strip_prefix(r"\\?\").unwrap_or(text.as_ref())) +} + +fn validate_write_target(root: &Path, target: &Path) -> Result<(), String> { + let root = normalize_path(root); + let parent = target + .parent() + .map(normalize_path) + .unwrap_or_else(|| root.clone()); + let root_text = root.to_string_lossy().to_ascii_lowercase(); + let parent_text = parent.to_string_lossy().to_ascii_lowercase(); + if parent_text != root_text && !parent_text.starts_with(&(root_text.clone() + "\\")) { + return Err("Refusing to write outside the project directory.".into()); + } + Ok(()) +} + +fn atomic_write(path: &Path, contents: &[u8]) -> Result<(), String> { + if path.exists() { + if let Ok(existing) = fs::read(path) { + if existing == contents { + return Ok(()); + } + } + } + let file_name = path + .file_name() + .map(|name| name.to_string_lossy().into_owned()) + .unwrap_or_else(|| "document.tmp".into()); + let temporary = path.with_file_name(format!("{file_name}.tmp")); + fs::write(&temporary, contents).map_err(|error| error.to_string())?; + fs::rename(&temporary, path).map_err(|error| error.to_string()) +} + +fn join_relative(root: &Path, relative: &str) -> PathBuf { + relative + .split(['/', '\\']) + .filter(|part| !part.is_empty() && *part != ".") + .fold(root.to_path_buf(), |path, part| path.join(part)) +} + +fn pretty_json(value: &Value) -> Result { + serde_json::to_string_pretty(value).map_err(|error| error.to_string()) +} + +fn discover_toolchains(project_root: Option<&Path>) -> DiscoveredToolchains { + let mut java = Vec::new(); + let mut seen_homes = std::collections::HashSet::new(); + for home in java_home_candidates(project_root) { + if !seen_homes.insert(home.clone()) { + continue; + } + if let Some(runtime) = probe_java_home(&home) { + java.push(runtime); + } + } + java.sort_by(|left, right| right.version.cmp(&left.version).then(left.home_path.cmp(&right.home_path))); + + let mut maven = Vec::new(); + let mut seen_executables = std::collections::HashSet::new(); + for executable in maven_executable_candidates(project_root) { + if !seen_executables.insert(executable.clone()) { + continue; + } + if let Some(runtime) = probe_maven(&executable) { + maven.push(runtime); + } + } + DiscoveredToolchains { java, maven } +} + +fn java_home_candidates(project_root: Option<&Path>) -> Vec { + let mut homes = Vec::new(); + if let Ok(value) = std::env::var("JAVA_HOME") { + homes.push(PathBuf::from(value)); + } + if let Some(path_java) = lookup_on_path("java.exe").or_else(|| lookup_on_path("java")) { + if let Some(home) = java_home_from_executable(&path_java) { + homes.push(home); + } + } + for root in well_known_java_roots() { + if let Ok(entries) = fs::read_dir(root) { + for entry in entries.flatten() { + let path = entry.path(); + if path.is_dir() { + homes.push(path.join("Contents").join("Home")); + homes.push(path); + } + } + } + } + if let Some(root) = project_root { + homes.push(root.join(".lithe").join("toolchains").join("jdk")); + } + homes +} + +fn well_known_java_roots() -> Vec { + let mut roots = Vec::new(); + for key in ["ProgramFiles", "ProgramFiles(x86)", "LOCALAPPDATA"] { + if let Ok(base) = std::env::var(key) { + let base = PathBuf::from(base); + roots.push(base.join("Java")); + roots.push(base.join("Eclipse Adoptium")); + roots.push(base.join("Microsoft")); + roots.push(base.join("Amazon Corretto")); + roots.push(base.join("BellSoft")); + roots.push(base.join("Zulu")); + roots.push(base.join("Java").join("jdk")); + if key == "LOCALAPPDATA" { + roots.push(base.join("Programs").join("Eclipse Adoptium")); + } + } + } + if let Ok(profile) = std::env::var("USERPROFILE") { + let profile = PathBuf::from(profile); + roots.push(profile.join(".jdks")); + roots.push(profile.join(".sdkman").join("candidates").join("java")); + } + roots +} + +fn maven_executable_candidates(project_root: Option<&Path>) -> Vec { + let mut executables = Vec::new(); + if let Some(root) = project_root { + executables.push(root.join("mvnw.cmd")); + executables.push(root.join("mvnw.bat")); + executables.push(root.join("mvnw")); + } + if let Ok(home) = std::env::var("MAVEN_HOME") { + let home = PathBuf::from(home); + executables.push(home.join("bin").join("mvn.cmd")); + executables.push(home.join("bin").join("mvn.bat")); + executables.push(home.join("bin").join("mvn")); + } + if let Ok(home) = std::env::var("M2_HOME") { + let home = PathBuf::from(home); + executables.push(home.join("bin").join("mvn.cmd")); + executables.push(home.join("bin").join("mvn")); + } + for name in ["mvn.cmd", "mvn.bat", "mvn.exe", "mvn"] { + if let Some(path) = lookup_on_path(name) { + executables.push(path); + } + } + executables +} + +fn probe_java_home(home: &Path) -> Option { + let java = java_executable(home)?; + let output = command_output(&java, &["-version"]); + let version = java_version(&output)?; + let vendor = output + .lines() + .find(|line| line.contains("Runtime Environment") || line.contains("VM")) + .unwrap_or("") + .trim() + .to_string(); + Some(JavaRuntime { + home_path: normalize_path(home).to_string_lossy().into_owned(), + version, + vendor, + }) +} + +fn probe_maven(executable: &Path) -> Option { + if !executable.is_file() { + return None; + } + let output = command_output(executable, &["-version"]); + let version = maven_version(&output).unwrap_or_default(); + Some(MavenRuntime { + executable_path: normalize_path(executable).to_string_lossy().into_owned(), + version, + }) +} + +fn java_executable(home: &Path) -> Option { + for name in ["java.exe", "java"] { + let candidate = home.join("bin").join(name); + if candidate.is_file() { + return Some(candidate); + } + } + None +} + +fn java_home_from_executable(executable: &Path) -> Option { + executable.parent().and_then(Path::parent).map(Path::to_path_buf) +} + +fn resolve_java_home(root: &Path, override_path: &str) -> Result, String> { + let configured = override_path.trim(); + if !configured.is_empty() { + let path = if Path::new(configured).is_absolute() { + PathBuf::from(configured) + } else { + root.join(configured) + }; + if java_executable(&path).is_some() { + return Ok(Some(normalize_path(&path).to_string_lossy().into_owned())); + } + return Err(format!("JDK Home does not point to a directory: {configured}")); + } + Ok(discover_toolchains(Some(root)) + .java + .first() + .map(|runtime| runtime.home_path.clone())) +} + +fn resolve_executable( + root: &Path, + working_directory: &Path, + executable: &LaunchExecutable, + maven_override: &str, + java_home: Option<&str>, +) -> Result { + if let Some(toolchain) = executable.toolchain.as_deref() { + return match toolchain { + "project-jdk" => { + let home = java_home.ok_or_else(|| { + "No Java runtime was found. Set JAVA_HOME or install a JDK.".to_string() + })?; + java_executable(Path::new(home)) + .map(|path| path.to_string_lossy().into_owned()) + .ok_or_else(|| "No Java runtime was found. Set JAVA_HOME or install a JDK.".into()) + } + "project-maven" => resolve_maven_executable(root, working_directory, maven_override), + other => Err(format!("No resolver is registered for toolchain {other}.")), + }; + } + if let Some(command) = executable.command.as_deref().filter(|value| !value.is_empty()) { + return lookup_on_path(command) + .or_else(|| lookup_on_path(&format!("{command}.cmd"))) + .or_else(|| lookup_on_path(&format!("{command}.exe"))) + .map(|path| path.to_string_lossy().into_owned()) + .ok_or_else(|| format!("Could not find executable: {command}")); + } + Err("The launch plan names neither a toolchain nor a command.".into()) +} + +fn resolve_maven_executable( + root: &Path, + working_directory: &Path, + override_path: &str, +) -> Result { + let configured = override_path.trim(); + if !configured.is_empty() { + let path = if Path::new(configured).is_absolute() { + PathBuf::from(configured) + } else { + root.join(configured) + }; + let candidates = [ + path.clone(), + path.join("bin").join("mvn.cmd"), + path.join("bin").join("mvn"), + ]; + if let Some(found) = candidates.into_iter().find(|candidate| candidate.is_file()) { + return Ok(normalize_path(&found).to_string_lossy().into_owned()); + } + return Err("Maven executable path does not exist.".into()); + } + let mut saw_incomplete_wrapper = false; + for directory in [working_directory, root] { + for name in ["mvnw.cmd", "mvnw.bat", "mvnw"] { + let wrapper = directory.join(name); + if !wrapper.is_file() { + continue; + } + if maven_wrapper_is_usable(&wrapper) { + return Ok(normalize_path(&wrapper).to_string_lossy().into_owned()); + } + saw_incomplete_wrapper = true; + } + } + discover_toolchains(Some(root)) + .maven + .into_iter() + .find(|runtime| { + !runtime.executable_path.ends_with("mvnw.cmd") + && !runtime.executable_path.ends_with("mvnw.bat") + && !runtime.executable_path.ends_with("mvnw") + }) + .map(|runtime| runtime.executable_path) + .ok_or_else(|| { + if saw_incomplete_wrapper { + "Maven wrapper is incomplete (.mvn/wrapper/maven-wrapper.properties is missing) and no system Maven was found. Install Maven or restore the wrapper files.".into() + } else { + "No Maven executable was found. Edit this service configuration.".into() + } + }) +} + +fn maven_wrapper_is_usable(wrapper: &Path) -> bool { + wrapper.parent().is_some_and(|directory| { + directory + .join(".mvn") + .join("wrapper") + .join("maven-wrapper.properties") + .is_file() + }) +} + +fn resolve_working_directory(root: &Path, relative: &str) -> Result { + let relative = relative.trim(); + if relative.is_empty() || relative == "." { + return Ok(root.to_path_buf()); + } + if relative.contains("..") || Path::new(relative).is_absolute() { + return Err("Working directory must stay inside the project.".into()); + } + let path = join_relative(root, relative); + if !path.is_dir() { + return Err(format!("Working directory does not exist: {relative}")); + } + Ok(normalize_path(&path)) +} + +fn resolve_environment_value( + value: &Value, + java_home: Option<&str>, + maven_java_home: Option<&str>, +) -> Option { + if let Some(text) = value.as_str() { + return Some(text.to_string()); + } + let object = value.as_object()?; + let toolchain = object.get("toolchain")?.as_str()?; + let property = object.get("property").and_then(Value::as_str).unwrap_or("home"); + if property != "home" { + return None; + } + match toolchain { + "project-jdk" => java_home.map(str::to_string), + "project-maven" => maven_java_home.map(str::to_string), + _ => java_home.map(str::to_string), + } +} + +fn lookup_on_path(name: &str) -> Option { + let path = std::env::var_os("PATH")?; + for directory in std::env::split_paths(&path) { + let candidate = directory.join(name); + if candidate.is_file() { + return Some(candidate); + } + } + None +} + +fn command_output(executable: &Path, arguments: &[&str]) -> String { + let arguments = arguments + .iter() + .map(|argument| (*argument).to_string()) + .collect::>(); + let mut command = command_for_executable(&executable.to_string_lossy(), &arguments); + command.stdin(Stdio::null()).stdout(Stdio::piped()).stderr(Stdio::piped()); + apply_creation_flags(&mut command); + command + .output() + .map(|output| { + let mut text = decode_process_bytes(&output.stdout); + text.push_str(&decode_process_bytes(&output.stderr)); + text + }) + .unwrap_or_default() +} + +fn is_batch_file(executable: &str) -> bool { + Path::new(executable) + .extension() + .and_then(|value| value.to_str()) + .is_some_and(|extension| { + extension.eq_ignore_ascii_case("cmd") || extension.eq_ignore_ascii_case("bat") + }) +} + +fn command_for_executable(executable: &str, arguments: &[String]) -> Command { + if is_batch_file(executable) { + return batch_command(executable, arguments); + } + let mut command = Command::new(executable); + command.args(arguments); + command +} + +fn batch_command(executable: &str, arguments: &[String]) -> Command { + let mut command = Command::new("cmd.exe"); + // cmd.exe /C only treats the next token as the command. Extra argv after a + // quoted .cmd path are dropped, so Maven wrappers start with no goals and + // exit immediately. /D /S /C plus one verbatim command string is the + // Windows host convention used by Node and the Maven wrapper itself. + #[cfg(windows)] + { + use std::os::windows::process::CommandExt; + command.raw_arg("/D"); + command.raw_arg("/S"); + command.raw_arg("/C"); + command.raw_arg(batch_command_line(executable, arguments)); + } + #[cfg(not(windows))] + { + command.arg("/C").arg(executable).args(arguments); + } + command +} + +fn batch_command_line(executable: &str, arguments: &[String]) -> String { + let mut inner = String::from("call "); + inner.push_str("e_windows_arg(executable)); + for argument in arguments { + inner.push(' '); + inner.push_str("e_windows_arg(argument)); + } + format!("\"{inner}\"") +} + +fn quote_windows_arg(argument: &str) -> String { + if argument.is_empty() { + return "\"\"".into(); + } + let needs_quotes = argument + .bytes() + .any(|byte| matches!(byte, b' ' | b'\t' | b'\n' | b'\r' | b'"')); + if !needs_quotes { + return argument.to_string(); + } + let mut quoted = String::from("\""); + let mut backslashes = 0; + for character in argument.chars() { + match character { + '\\' => backslashes += 1, + '"' => { + quoted.push_str(&"\\".repeat(backslashes * 2 + 1)); + quoted.push('"'); + backslashes = 0; + } + _ => { + quoted.push_str(&"\\".repeat(backslashes)); + quoted.push(character); + backslashes = 0; + } + } + } + quoted.push_str(&"\\".repeat(backslashes * 2)); + quoted.push('"'); + quoted +} + +fn apply_creation_flags(command: &mut Command) { + #[cfg(windows)] + { + use std::os::windows::process::CommandExt; + command.creation_flags(CREATE_NO_WINDOW); + } + let _ = command; +} + +fn decode_process_bytes(bytes: &[u8]) -> String { + if bytes.is_empty() { + return String::new(); + } + if looks_like_real_utf8(bytes) { + return String::from_utf8_lossy(bytes).into_owned(); + } + #[cfg(windows)] + { + if let Some(text) = decode_windows_code_page(bytes, windows_ansi_code_page()) { + return text; + } + } + String::from_utf8_lossy(bytes).into_owned() +} + +fn looks_like_real_utf8(bytes: &[u8]) -> bool { + let Ok(text) = std::str::from_utf8(bytes) else { + return false; + }; + text.is_ascii() + || text.chars().any(|character| { + ('\u{4E00}'..='\u{9FFF}').contains(&character) + || ('\u{3400}'..='\u{4DBF}').contains(&character) + }) +} + +fn incomplete_suffix_len(bytes: &[u8]) -> usize { + match bytes.last() { + Some(&byte) if byte >= 0x81 => 1, + _ => 0, + } +} + +#[cfg(windows)] +mod winapi { + #[link(name = "kernel32")] + extern "system" { + pub fn GetACP() -> u32; + pub fn MultiByteToWideChar( + code_page: u32, + flags: u32, + src: *const u8, + src_len: i32, + dst: *mut u16, + dst_len: i32, + ) -> i32; + } +} + +#[cfg(windows)] +fn windows_ansi_code_page() -> u32 { + unsafe { winapi::GetACP() } +} + +#[cfg(windows)] +fn decode_windows_code_page(bytes: &[u8], code_page: u32) -> Option { + if bytes.is_empty() { + return Some(String::new()); + } + unsafe { + let needed = winapi::MultiByteToWideChar( + code_page, + 0, + bytes.as_ptr(), + bytes.len() as i32, + std::ptr::null_mut(), + 0, + ); + if needed <= 0 { + return None; + } + let mut wide = vec![0_u16; needed as usize]; + let written = winapi::MultiByteToWideChar( + code_page, + 0, + bytes.as_ptr(), + bytes.len() as i32, + wide.as_mut_ptr(), + needed, + ); + if written <= 0 { + return None; + } + Some(String::from_utf16_lossy(&wide[..written as usize])) + } +} + +fn java_version(output: &str) -> Option { + for line in output.lines() { + let Some(index) = line.find("version") else { continue }; + let rest = line[index + "version".len()..].trim(); + if let Some(quoted) = rest.strip_prefix('"') { + return quoted.split('"').next().map(str::to_string); + } + return rest.split_whitespace().next().map(str::to_string); + } + None +} + +fn maven_version(output: &str) -> Option { + output.lines().find_map(|line| { + let rest = line.trim().strip_prefix("Apache Maven")?; + rest.split_whitespace().next().map(str::to_string) + }) +} + +fn spawn_output_reader( + app: AppHandle, + session_id: String, + stream: Option, +) -> thread::JoinHandle<()> { + thread::spawn(move || { + let Some(mut stream) = stream else { return }; + let mut buffer = [0_u8; 4096]; + let mut pending = Vec::new(); + loop { + match stream.read(&mut buffer) { + Ok(0) => { + if !pending.is_empty() { + let chunk = decode_process_bytes(&pending); + if !chunk.is_empty() { + let _ = app.emit( + "run-output", + json!({ "sessionId": session_id, "chunk": chunk }), + ); + } + } + break; + } + Ok(count) => { + pending.extend_from_slice(&buffer[..count]); + let keep = incomplete_suffix_len(&pending); + let ready = pending.len().saturating_sub(keep); + if ready == 0 { + continue; + } + let chunk = decode_process_bytes(&pending[..ready]); + pending.drain(..ready); + if chunk.is_empty() { + continue; + } + let _ = app.emit( + "run-output", + json!({ "sessionId": session_id, "chunk": chunk }), + ); + } + Err(_) => break, + } + } + }) +} + +fn spawn_exit_waiter( + app: AppHandle, + session_id: String, + mut child: Child, + pid: u32, + stdout_reader: thread::JoinHandle<()>, + stderr_reader: thread::JoinHandle<()>, +) { + thread::spawn(move || { + let exit_code = child.wait().ok().and_then(|status| status.code()).unwrap_or(-1); + let _ = stdout_reader.join(); + let _ = stderr_reader.join(); + let stale = match sessions().lock() { + Ok(mut current) => match current.get(&session_id) { + Some(session) if session.pid == pid => { + current.remove(&session_id); + false + } + _ => true, + }, + Err(_) => true, + }; + if stale { + return; + } + let _ = app.emit( + "run-exit", + json!({ "sessionId": session_id, "exitCode": exit_code }), + ); + }); +} + +fn stop_session(session_id: &str) { + let pid = sessions() + .lock() + .ok() + .and_then(|mut current| current.remove(session_id).map(|session| session.pid)); + if let Some(pid) = pid { + let mut command = Command::new("taskkill"); + command.args(["/F", "/T", "/PID", &pid.to_string()]); + apply_creation_flags(&mut command); + let _ = command.output(); + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::time::{SystemTime, UNIX_EPOCH}; + + fn temp_project() -> PathBuf { + let stamp = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("clock") + .as_nanos(); + let path = std::env::temp_dir().join(format!("lithe-run-{stamp}")); + fs::create_dir_all(&path).expect("temp project"); + path + } + + #[test] + fn skipped_directories_include_build_outputs() { + assert!(is_skipped_directory("target")); + assert!(is_skipped_directory(".git")); + assert!(is_skipped_directory("node_modules")); + assert!(!is_skipped_directory("src")); + } + + #[test] + fn workspace_relative_paths_use_forward_slashes() { + let root = PathBuf::from(r"C:\project"); + let file = PathBuf::from(r"C:\project\src\main\java\App.java"); + assert_eq!( + workspace_relative(&root, &file).as_deref(), + Some("src/main/java/App.java") + ); + } + + #[test] + fn write_generated_creates_lithe_documents() { + let root = temp_project(); + let generated = json!({ + "version": 2, + "configurations": [{ "id": "spring-boot.maven:demo", "provider": "spring-boot.maven" }] + }); + let requirements = json!({ "version": 1, "toolchains": {} }); + write_generated_documents( + &root, + &generated, + &requirements, + Some("spring-boot.maven:demo"), + ) + .expect("write"); + assert!(root.join(".lithe").join("run").join("generated.json").is_file()); + assert!(root + .join(".lithe") + .join("toolchains") + .join("requirements.json") + .is_file()); + assert_eq!( + fs::read_to_string(root.join(".lithe").join(".gitignore")).expect("gitignore"), + LITHE_GITIGNORE + ); + let manifest: Value = serde_json::from_str( + &fs::read_to_string(root.join(".lithe").join("project.json")).expect("manifest"), + ) + .expect("json"); + assert_eq!(manifest["defaultRunConfiguration"], "spring-boot.maven:demo"); + fs::remove_dir_all(root).ok(); + } + + #[test] + fn write_generated_refuses_paths_outside_the_project() { + let root = temp_project(); + let outside = std::env::temp_dir().join("lithe-run-outside.json"); + let result = validate_write_target(&root, &outside); + assert!(result.is_err()); + fs::remove_dir_all(root).ok(); + } + + #[test] + fn java_listing_skips_maven_target() { + let root = temp_project(); + fs::create_dir_all(root.join("src/main/java")).unwrap(); + fs::create_dir_all(root.join("target/classes")).unwrap(); + fs::write(root.join("src/main/java/App.java"), "class App {}").unwrap(); + fs::write(root.join("target/classes/Skip.java"), "class Skip {}").unwrap(); + let paths = run_list_java_sources(root.clone()).expect("list"); + assert_eq!(paths, vec!["src/main/java/App.java"]); + fs::remove_dir_all(root).ok(); + } + + #[test] + fn java_version_reads_quoted_runtime_banner() { + assert_eq!( + java_version(r#"openjdk version "17.0.18" 2026-01-20"#).as_deref(), + Some("17.0.18") + ); + } + + #[test] + fn launch_environment_resolves_java_home_from_toolchain_reference() { + let home = resolve_environment_value( + &json!({ "toolchain": "project-jdk", "property": "home" }), + Some(r"C:\jdk"), + Some(r"C:\maven-jdk"), + ); + assert_eq!(home.as_deref(), Some(r"C:\jdk")); + assert_eq!( + resolve_environment_value(&json!("debug"), Some(r"C:\jdk"), None).as_deref(), + Some("debug") + ); + } + + #[test] + fn batch_command_line_keeps_maven_goals_inside_one_cmd_string() { + let line = batch_command_line( + r"D:\work\demo\mvnw.cmd", + &[ + "-B".into(), + "-ntp".into(), + "-Dspring-boot.run.main-class=com.example.App".into(), + "spring-boot:run".into(), + ], + ); + assert_eq!( + line, + r#""call D:\work\demo\mvnw.cmd -B -ntp -Dspring-boot.run.main-class=com.example.App spring-boot:run""# + ); + assert!(is_batch_file(r"D:\work\demo\mvnw.cmd")); + assert!(!is_batch_file(r"D:\jdk\bin\java.exe")); + } + + #[test] + fn quote_windows_arg_wraps_paths_with_spaces() { + assert_eq!( + quote_windows_arg(r"D:\my project\mvnw.cmd"), + r#""D:\my project\mvnw.cmd""# + ); + } + + #[test] + fn maven_wrapper_requires_properties_file() { + let root = temp_project(); + let wrapper = root.join("mvnw.cmd"); + fs::write(&wrapper, "@echo off\n").unwrap(); + assert!(!maven_wrapper_is_usable(&wrapper)); + fs::create_dir_all(root.join(".mvn/wrapper")).unwrap(); + fs::write( + root.join(".mvn/wrapper/maven-wrapper.properties"), + "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip\n", + ) + .unwrap(); + assert!(maven_wrapper_is_usable(&wrapper)); + fs::remove_dir_all(root).ok(); + } + + #[test] + fn gbk_console_bytes_are_not_treated_as_utf8() { + let gbk_xi_tong = [0xCF, 0xB5, 0xCD, 0xB3]; + assert!(!looks_like_real_utf8(&gbk_xi_tong)); + assert!(looks_like_real_utf8("系统".as_bytes())); + assert!(looks_like_real_utf8(b"[INFO] BUILD SUCCESS")); + } + + #[cfg(windows)] + #[test] + fn windows_gbk_bytes_decode_to_chinese() { + let text = decode_windows_code_page(&[0xCF, 0xB5, 0xCD, 0xB3], 936) + .expect("GBK decode"); + assert_eq!(text, "系统"); + } +} diff --git a/windows/tauri/src/config/backend-capabilities.test.ts b/windows/tauri/src/config/backend-capabilities.test.ts index 132dd6e05..ae0a8e27b 100644 --- a/windows/tauri/src/config/backend-capabilities.test.ts +++ b/windows/tauri/src/config/backend-capabilities.test.ts @@ -15,5 +15,7 @@ describe("default Windows workbench capability policy", () => { expect(defaultSettings.coreFeatures.docker).toBe(false); expect(defaultSettings.coreFeatures.aiChat).toBe(false); expect(defaultSettings.coreFeatures.teamCollaboration).toBe(false); + expect(backendCapabilities.run).toBe(true); + expect(backendCapabilities.runActions).toBe(false); }); }); diff --git a/windows/tauri/src/config/backend-capabilities.ts b/windows/tauri/src/config/backend-capabilities.ts index dedbd6e2c..05f01bcbe 100644 --- a/windows/tauri/src/config/backend-capabilities.ts +++ b/windows/tauri/src/config/backend-capabilities.ts @@ -10,6 +10,7 @@ export const backendCapabilities = { git: true, github: false, remote: false, + run: true, runActions: false, terminal: true, wsl: false, diff --git a/windows/tauri/src/features/command-palette/constants/view-actions.tsx b/windows/tauri/src/features/command-palette/constants/view-actions.tsx index 95e3ccba3..5d3b262c0 100644 --- a/windows/tauri/src/features/command-palette/constants/view-actions.tsx +++ b/windows/tauri/src/features/command-palette/constants/view-actions.tsx @@ -1,3 +1,4 @@ +import { RunIcon } from "@/features/run/components/run-icon"; import { WarningCircleIcon as AlertCircle, ColumnsIcon as Columns, @@ -102,6 +103,24 @@ export const createViewActions = (params: ViewActionsParams): Action[] => { onClose(); }, }, + { + id: "toggle-run", + label: + isBottomPaneVisible && bottomPaneActiveTab === "run" ? "View: Hide Run" : "View: Show Run", + description: "Toggle the Run tool window", + icon: , + category: "View", + commandId: "workbench.toggleRun", + action: () => { + if (isBottomPaneVisible && bottomPaneActiveTab === "run") { + setIsBottomPaneVisible(false); + } else { + setBottomPaneActiveTab("run"); + setIsBottomPaneVisible(true); + } + onClose(); + }, + }, { id: "toggle-terminal", label: diff --git a/windows/tauri/src/features/keymaps/commands/command-registry.ts b/windows/tauri/src/features/keymaps/commands/command-registry.ts index 385b02e1d..bf2b89346 100644 --- a/windows/tauri/src/features/keymaps/commands/command-registry.ts +++ b/windows/tauri/src/features/keymaps/commands/command-registry.ts @@ -103,6 +103,7 @@ import { toggleLineNumbers, toggleMinimap, toggleRenderWhitespace, + toggleRunPane, toggleSidebar, toggleSourceControlSidebar, toggleTerminalPane, @@ -554,6 +555,13 @@ const viewCommands: Command[] = [ keybinding: "cmd+e", execute: toggleSidebar, }, + { + id: "workbench.toggleRun", + title: "Toggle Run", + category: "View", + keybinding: "shift+f10", + execute: toggleRunPane, + }, { id: "workbench.toggleTerminal", title: "Toggle Terminal", diff --git a/windows/tauri/src/features/keymaps/commands/view-command-actions.ts b/windows/tauri/src/features/keymaps/commands/view-command-actions.ts index 6406b1b5d..c6191149e 100644 --- a/windows/tauri/src/features/keymaps/commands/view-command-actions.ts +++ b/windows/tauri/src/features/keymaps/commands/view-command-actions.ts @@ -27,6 +27,16 @@ export function toggleActivitySidebar(): void { void actions.updateSetting("activityRailExpanded", !settings.activityRailExpanded); } +export function toggleRunPane(): void { + const state = useUIState.getState(); + if (state.isBottomPaneVisible && state.bottomPaneActiveTab === "run") { + state.setIsBottomPaneVisible(false); + } else { + state.setBottomPaneActiveTab("run"); + state.setIsBottomPaneVisible(true); + } +} + export function toggleTerminalPane(): void { const state = useUIState.getState(); if (state.isBottomPaneVisible && state.bottomPaneActiveTab === "terminal") { diff --git a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts index 8bd73c7c1..5e6cd0ddd 100644 --- a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts +++ b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts @@ -315,6 +315,7 @@ export const defaultKeymaps: Keybinding[] = [ { key: "cmd+b", command: "workbench.toggleActivitySidebar", source: "default" }, { key: "cmd+e", command: "workbench.toggleSidebar", source: "default" }, { key: "cmd+j", command: "workbench.toggleTerminal", source: "default" }, + { key: "shift+f10", command: "workbench.toggleRun", source: "default" }, { key: "cmd+`", command: "workbench.toggleTerminalAlt", source: "default" }, { key: "cmd+shift+j", diff --git a/windows/tauri/src/features/layout/components/bottom-pane/bottom-pane.tsx b/windows/tauri/src/features/layout/components/bottom-pane/bottom-pane.tsx index af0b7d070..e870517fe 100644 --- a/windows/tauri/src/features/layout/components/bottom-pane/bottom-pane.tsx +++ b/windows/tauri/src/features/layout/components/bottom-pane/bottom-pane.tsx @@ -2,6 +2,7 @@ import type React from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { isBackendCapabilityAvailable } from "@/config/backend-capabilities"; import DebuggerView from "@/features/debugger/components/debugger-view"; +import RunPane from "@/features/run/components/run-pane"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { BOTTOM_PANE_ID } from "@/features/panes/constants/pane"; import { usePaneStore } from "@/features/panes/stores/pane.store"; @@ -82,6 +83,16 @@ const BottomPane = () => { } }, [bottomPaneActiveTab, isBottomPaneVisible, terminalEnabled]); + useEffect(() => { + if ( + isBottomPaneVisible && + bottomPaneActiveTab === "run" && + !isBackendCapabilityAvailable("run") + ) { + useUIState.getState().setIsBottomPaneVisible(false); + } + }, [bottomPaneActiveTab, isBottomPaneVisible]); + useEffect(() => { if ( isBottomPaneVisible && @@ -258,6 +269,12 @@ const BottomPane = () => {
)} + {bottomPaneActiveTab === "run" && isBackendCapabilityAvailable("run") && ( +
+ +
+ )} + {bottomPaneActiveTab === "buffers" && (
{bottomPaneBufferIds.length > 0 ? : null} diff --git a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx index ee13aa2a9..dedb1c1ec 100644 --- a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx +++ b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx @@ -28,6 +28,7 @@ import { } from "@/features/layout/utils/project-carousel"; import { shouldShowProjectSwitcher } from "@/features/layout/utils/project-switcher"; import type { SidebarView } from "@/features/layout/utils/sidebar-pane-utils"; +import { RunIcon } from "@/features/run/components/run-icon"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; @@ -107,6 +108,10 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa const activeSidebarView = useUIState((state) => state.activeSidebarView); const setIsProjectPickerVisible = useUIState((state) => state.setIsProjectPickerVisible); const openSettingsDialog = useUIState((state) => state.openSettingsDialog); + const isBottomPaneVisible = useUIState((state) => state.isBottomPaneVisible); + const bottomPaneActiveTab = useUIState((state) => state.bottomPaneActiveTab); + const setIsBottomPaneVisible = useUIState((state) => state.setIsBottomPaneVisible); + const setBottomPaneActiveTab = useUIState((state) => state.setBottomPaneActiveTab); const openGlobalSearchBuffer = useBufferStore.use.actions().openGlobalSearchBuffer; const configuredActivityRailWidth = useSettingsStore((state) => state.settings.activityRailWidth); const openFoldersInNewWindow = useSettingsStore((state) => state.settings.openFoldersInNewWindow); @@ -195,6 +200,11 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa label: "Database", icon: , }, + { + id: "run", + label: "Run", + icon: , + }, { id: "settings", label: "Settings", @@ -630,7 +640,7 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa />
) : ( -
+
openGlobalSearchBuffer()} onSettingsClick={() => openSettingsDialog()} + onRunClick={() => { + if (isBottomPaneVisible && bottomPaneActiveTab === "run") { + setIsBottomPaneVisible(false); + } else { + setBottomPaneActiveTab("run"); + setIsBottomPaneVisible(true); + } + }} + isRunActive={isBottomPaneVisible && bottomPaneActiveTab === "run"} compact={!expanded} showLabels={expanded} orientation="vertical" diff --git a/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx b/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx index 6f383b205..3af81ac14 100644 --- a/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx +++ b/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx @@ -3,6 +3,7 @@ import { BACKEND_UNAVAILABLE_TOOLTIP } from "@/config/backend-capabilities"; import { useTranslation } from "@/i18n/locale-provider"; import type { CoreFeaturesState } from "@/features/settings/types/feature.types"; import { normalizeItemOrder } from "@/features/layout/config/item-order"; +import { RunIcon } from "@/features/run/components/run-icon"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { SidebarListItem } from "@/ui/sidebar"; import { Tabs, TabsList, TabsTrigger } from "@/ui/tabs"; @@ -17,6 +18,8 @@ import Tooltip from "@/ui/tooltip"; import { cn } from "@/utils/cn"; import type { SidebarView } from "../../utils/sidebar-pane-utils"; +const BOTTOM_ACTIVITY_ITEM_IDS = ["run", "settings"] as const; + interface SidebarPaneItem { id: string; label?: ReactNode; @@ -53,6 +56,8 @@ interface SidebarPaneSelectorProps { onSearchClick?: () => void; isSearchActive?: boolean; onSettingsClick?: () => void; + onRunClick?: () => void; + isRunActive?: boolean; compact?: boolean; showLabels?: boolean; orientation?: "horizontal" | "vertical"; @@ -67,6 +72,8 @@ export const SidebarPaneSelector = ({ onSearchClick, isSearchActive = false, onSettingsClick, + onRunClick, + isRunActive = false, compact = false, showLabels = false, orientation = "horizontal", @@ -148,6 +155,23 @@ export const SidebarPaneSelector = ({ side: tooltipSide, }, }, + ...(onRunClick + ? [ + { + id: "run", + label: showLabels ? t("workbench.run") : undefined, + icon: , + isActive: isRunActive, + onClick: onRunClick, + ariaLabel: t("workbench.run"), + tooltip: { + content: t("workbench.run"), + shortcut: "Shift+F10", + side: tooltipSide, + }, + } satisfies SidebarPaneItem, + ] + : []), ...(onSettingsClick ? [ { @@ -173,7 +197,9 @@ export const SidebarPaneSelector = ({ isGitViewActive, isSearchActive, onSearchClick, + onRunClick, onSettingsClick, + isRunActive, onViewChange, showLabels, t, @@ -192,44 +218,57 @@ export const SidebarPaneSelector = ({ const orderedItems = orderItems(items, orderedIds); const visibleItems = orderedItems.filter((item) => !hiddenSidebarActivityItems.includes(item.id)); + const topItems = visibleItems.filter( + (item) => !BOTTOM_ACTIVITY_ITEM_IDS.includes(item.id as (typeof BOTTOM_ACTIVITY_ITEM_IDS)[number]), + ); + const bottomItems = BOTTOM_ACTIVITY_ITEM_IDS.map((id) => + visibleItems.find((item) => item.id === id), + ).filter((item): item is SidebarPaneItem => Boolean(item)); + + const renderVerticalItem = (item: SidebarPaneItem) => { + const itemNode = ( + + {item.label ?? item.ariaLabel ?? item.id} + + ); + + return item.tooltip && (!showLabels || item.disabled) ? ( + + {itemNode} + + ) : ( + + {itemNode} + + ); + }; if (isVertical) { return ( -
); diff --git a/windows/tauri/src/features/window/stores/ui-state/types/ui-state.types.ts b/windows/tauri/src/features/window/stores/ui-state/types/ui-state.types.ts index c539c7476..c3613f502 100644 --- a/windows/tauri/src/features/window/stores/ui-state/types/ui-state.types.ts +++ b/windows/tauri/src/features/window/stores/ui-state/types/ui-state.types.ts @@ -19,7 +19,8 @@ export type BottomPaneTab = | "diagnostics" | "references" | "buffers" - | "run"; + | "run" + | "gitLog"; export interface QuickEditSelection { text: string; diff --git a/windows/tauri/src/platform/core-result-adapter.history.test.ts b/windows/tauri/src/platform/core-result-adapter.history.test.ts index 98f2735f5..7c6b46e3f 100644 --- a/windows/tauri/src/platform/core-result-adapter.history.test.ts +++ b/windows/tauri/src/platform/core-result-adapter.history.test.ts @@ -8,13 +8,25 @@ describe("git history result adaptation", () => { "git_log", { repoPath: "C:/work", limit: 50 }, { + references: [ + { + fullName: "refs/heads/main", + shortName: "main", + kind: "local", + isCurrent: true, + upstreamShortName: "origin/main", + }, + ], commits: [ { hash: "abc123", + shortHash: "abc123", + parentHashes: ["parent123"], subject: "First commit", authorName: "Developer", authorEmail: "developer@example.invalid", date: "2026/08/16 10:00", + decorations: "HEAD -> main, origin/main", }, ], hasMore: true, @@ -22,13 +34,25 @@ describe("git history result adaptation", () => { ); expect(result).toEqual({ + references: [ + { + fullName: "refs/heads/main", + shortName: "main", + kind: "local", + isCurrent: true, + upstreamShortName: "origin/main", + }, + ], commits: [ { hash: "abc123", + shortHash: "abc123", + parentHashes: ["parent123"], message: "First commit", author: "Developer", email: "developer@example.invalid", date: "2026/08/16 10:00", + decorations: "HEAD -> main, origin/main", }, ], hasMore: true, @@ -37,6 +61,7 @@ describe("git history result adaptation", () => { test("defaults missing history fields to an exhausted empty snapshot", () => { expect(adaptCoreResult("git_log", undefined, {})).toEqual({ + references: [], commits: [], hasMore: false, }); diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index 016ff75fb..1b018f0a4 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -120,13 +120,25 @@ export function adaptCoreResult( } as T; case "git_log": return { + references: Array.isArray(data.references) + ? data.references.map((reference: JsonRecord) => ({ + fullName: reference.fullName, + shortName: reference.shortName, + kind: reference.kind, + isCurrent: Boolean(reference.isCurrent), + upstreamShortName: reference.upstreamShortName ?? undefined, + })) + : [], commits: Array.isArray(data.commits) ? data.commits.map((commit: JsonRecord) => ({ hash: commit.hash, + shortHash: commit.shortHash ?? String(commit.hash ?? "").slice(0, 7), + parentHashes: Array.isArray(commit.parentHashes) ? commit.parentHashes : [], message: commit.subject, author: commit.authorName, email: commit.authorEmail, date: commit.date, + decorations: commit.decorations ?? "", })) : [], hasMore: Boolean(data.hasMore), From 5e02ad7bac6559e1e1a6f0344277f3e6e404f438 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 17:10:55 +0800 Subject: [PATCH 20/83] feat(windows): expose Git Log from the footer --- .../windows-git-log-tool-window.png | Bin 0 -> 198702 bytes .../keymaps/commands/command-registry.ts | 8 +++++++ .../keymaps/commands/view-command-actions.ts | 10 +++++++++ .../defaults/default-keymaps.git-log.test.ts | 19 +++++++++++++++++ .../keymaps/defaults/default-keymaps.ts | 1 + .../layout/components/footer/footer.tsx | 20 ++++++++++++++++++ .../src/features/layout/config/item-order.ts | 1 + 7 files changed, 59 insertions(+) create mode 100644 docs/assets/screenshots/windows-git-log-tool-window.png create mode 100644 windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts diff --git a/docs/assets/screenshots/windows-git-log-tool-window.png b/docs/assets/screenshots/windows-git-log-tool-window.png new file mode 100644 index 0000000000000000000000000000000000000000..1159a12beb4d86b64f3cd39276b89e893671cb09 GIT binary patch literal 198702 zcmZ^LbzGF&_cb6Wr64IH-7VdnLw7ewhjgci(lB%*DIwjhbR!@QLw9%cJ{aHYy}!@< z-we#0=fpmHuf6u#6C^Jy{uJ>gA`}$VQ;>v+A{5jUD=4T(&G0b5U&M**GoYYQp+F*n z%C68mb8rGG69i8Vka+5GVMXh+p9+Y|%OfjWr9LxV@5dR<8O`^Z(MaY>l{I}rO-=sz zGhyb)CwK{$36J~Zc~Mu#iRHfgx18rEm$NneN6YpEEtR3KBFIEnZRW;2EX=mdH(#1> zpN}xU7W9XLC4_>87l496_5JnI(GJ>*;O9F{72kFu5DU1S6l4r;r*NZP>Xkd}eZt@3 zTN@CQ;$L1`YGw`s>DtITo4BiLT9{}eq5*^Xg_8^1mDFU>A#D3W!E(Ka!b14>_|kqw zCu1o^CpV4SSkYAEpxhZJE0w`8vl_h4uPe{4EP!owL zDQQYXise+rG|fSbDB5UN(EnTV!|FFEVbq`eZ)7tt6apnSHnvG_9{j;!)CO6Q0h@V3 z_(;CPlc@IrqNF*i_73He!6971l;hApmxm_<^|0RmOsz5mDukMrma=;wDo%+ss^3{d zC`5W1-qDWe*r}QXB@ShX-a~Q+_yi( zwu=OfK~z(-v$Tl&$rGHqChBiYF;ZumPlSxQ&Uk}#4tJ4uxd7B$5YVQ+Z+11 zLK&F2F&h8eNd*7r)VZ3V*#6J+c^Kr?BN^z4K*TAjmU*cRA8Dz{bt98!7-P$*|2Es- zo93zq#T@_~!!WYnP0A~@MXOGz-QlWZxTyD{B2toXaqYPqRbP|+Jf?#*sCPt^w8Z4p z^hD(JL1WV}?TKdS4)Y#FPUCn6bARr`!@y=JewmpNXvm%L&UPOC{{=>_%&5 z7~R3?_zn4|8!s%sQWFmMz?FK!3uNTO+}ywr6C1AJ7W(=^5p+z984Q;^hw;Q9_)fki zl6JwKNs%P<*NJBoA{|WLY4ndM9%TtqOsh~J5hEcY#$sSqW|VwR_*|C%KJ{I6YTK}G zE>`9e8XbqLweS>jW%}#W?P&{zXTP@I%o-Z)D+U(kDmJRwZqRG*Fqj({7%Ly|i;3=c zLhu5tf z8#dkQugATFlt-NQbB5H7j+Lx~zs9Q6BOo9-#LFdfM#PZ(Hr;740SSqOk{}m?ngJL$ zAFL(0VwnAX^q1r2%}byCtJ==Ih|ei=kb!yb}x2I-Zkho zxlT_wFVyxhOT1glo88$Ni!t7dNsAK-q@$-cWYmc5RhnAOE|5VZ|9MIM=;>PZ;g66O z@F&lFo*p1Y`b@xA-*c71{MjH^H7M?Pfcq+j3ITcJn;jipTwG{V$ktT2faBF@X=#Ul zFyFY36FWIQ<$aX(eL0u1uz-x*Q*}3&&!89C9H)+a=-XUb9dO4$J>IuP)>f1Gwh(VL zv@h2j@O<8PSV2T6l`bRfubWrB5ARZO^Ql0U@IeQBCnvSumnq@Je(#pw)|Ya24Mz%` z7p~Wh?&7L-`{q;iyobA-UB%yv2XQ`lTHx3-p2EVufY+{uc6gWDT4jc+6mJU)^=A#h zC+5-h%hY!`OqJNzR(LcarE1QyXL?UuZp$qDr1mM00~ca&Dn5k0B_p|a(w``6^GM@q zrXXw`9%Z-KB8|ObrTNHXIbL+W57BFMUA%E~u6Nut)Yo5F>4~Np7|x_1?VZ1AX~x7v zuiE49-j6-MhPvM>L_%=CUb>9t8-GNaon0_dEzvXDbsmmCKT0fYfC|i530^-6bweI7 z&Vj2v$fvWBDeQNa-=|6l$5H-rA%2oDVVnkCoVcUSjbA<|xauYQk&$)eh2KWSywKCs zbe~vGnrLev&NLihD*yC#e{@s{wCvxgZI2OcmZ;^Od}owhTYDkLe~W?fg2j4z3=~Zc z7BTEaI6S<+hTPNA(e|KmTaAn`5@K(LLHeduH}ftv87U!=y{S6-j(Bw3 zcijEkuS_fYmRz<(Sof_SooLr$@p!qFaRQ4OMbuyXExBwBNL-K_2CB-nzB7m zWZcV0KYE@V>_v;CXxAN-`1<-f-3z|su)T>(i4kBoTPxcXG{(eyWC zD-6!dTW^FrmXegD*KT~f`0bK~ApGp`jl)eGeG2V@&6ZiHk#ae6hvRFRCs=%EZG$dO)W$({D8TuKUJwrosk=Mba+gY z?@Td~!;^2hwVXL7@}B7*>-IB2%-{xGJ)s|wED1K9R*Tsb7pL3%l$4!qwY!izR4O7O zqLK{doR+{`HY&Fbx9yfu@kD9z9(Mk+M_&gB-g^X0+?B-BX|dTYWmB7{Y}fk8rjCsM zP*G7?wSk;nR*qpjf3BcWr@0>#2kb~>jHH~D`Py_Q@wYS&-V7xL0|OJ2$2i0L9S-#Y z*B2u*Aw9HYRT2-@P@m)r4!&ZS@~On#vf%Bm<9X_o%4j&-FDt_6x*>5?D5&E_f}?TS zK{Gz2Q7fb^1lILoVD8JIY0;~&JFY2Y`|P~U=Q(zvvh7Wjr)1jy3D>bT%iq2x-$C^h zcg4zJS3d1kV1&b~sgoMsi|uZM`-x^6wIZ{=TirU(!_|;=r9A1o%{+qnrqlcN^p?%3 z)6)})`TJ8E#f?4hHzVx`X)d-cPhDkXYizGmZQhXpJ17Co^5GxsVnzqe$JhKki((Sl zk&>Dk92JYpYC_B#{W;-9&ua~pw)U_4k0jjqwYcF#-+;}d#!d*C2z;`xb8~W{M5R84 zL>qDEc6YyKYN%5ourFdv)H)$sjWXCVAst=8xaaJ=o+9DO$tKOoB?W)-)Z@#Os*PZ1 zN(WPuJ{+tJs{ZTVJDVH?FB+Hp(;}6;VMeBVRIClR-TpQ$>^>!DF?Ts@JT#4BCz-I4 z$i)B`(1vP;fzPFZ$$WBv`?WfX)tGXJ=z9X9^{n`1JH&jex+k>&|C^j*9JN?L~X-VT}ZCcI)j;=L} zpJrN;FhXUeCEyXBUcbVYWAOgC9I4ycna#iez8-l~=)PM^czQ_0=}PR^V(>MHJf7*ktsiuJ0&mgRHq3O692|7{d`9vhP>+m8w=8k>_l-w= zA|W*UMMWoDRWkIPx95wdx+qDrcz6$ZZj6!;Kq3Zj=pgnjnniY4%zb>k?iN4Pf7}S! zA@md>pOw6*`(Rj>pzvwmUE>UAfg`D*ae3Xr!NEqS#qoUY#|_LG?q|dh@cuN~3b&V| zvWSUTeL!tMM#k`m&mUt}+INbIo;Bc=Z)`zeHE754KBJPLhj=@;aqaY4YE3SZ_{gMi zxXoSdZ$2h9rlq8O@$#kn;u6`A$2kVZN=R_9XQSTi+ZMra$7HT>A%CIAfw`WZtUPH_ zsEi5*BdwZipuU8#b zK2&XC$l*hdy)LDN6bs^mL{F#5V;nmOnGD=d7Mw*~yUiwg-aY1)0`-8=z@#}jPo}x2 z&Im*f4>7SZ!C+Mx*}*K#*m_`)7q0;LYYnZSz^HW0htbj7(`)r3m7I*+asPWoUYt$g z;5S~55EaR0!DgS+vBsLPFIh+~Dq(IoICWIaCM8#Q6Rf!G4A*;4w(s6uT+(>G+s@B9 z9%v+6T0)y+WdT*#s#(h`s+Mh7%N&i)t|7eLTT@k5)Tp$=1I>-OBja<~Pg1He#lOp9 z#;Lfv?JFqQ8f{5zv6y2p4zOLLi;ZXS5CMPwxY1uHwb`YioEQ_@#=CZ)u-tQzN?E2Z zZLc5%qx&NHe2@99SrbhjJg@bn*nixT5Rv=7Q!GuXyUI)dZugPESKlB1FMs(Na|PyLR=TvFKmXo1yHg~67H!Wj61YEo zHJbj!8K1k+bm&Zvm_$h8+{R+=Lqq6wueG<{HZ-ZKfTTq5{VVZsL%I{`kCOaG(RK~8 z^`3iUH0gP_R!`_JoKG{~Sb{Wb9m58oJoxnp(oG|Zu4iUAIau|C#Z*7J6SsjaZNE39 zho|A|(9r2%b(5<|q)I^*z8CO7h}=hP>i?1;y*9({{r)}Nm-^6z4HVM+e3yxl@3x0Q z>c%2iWF!phT;{#CAf?UhtSN_$gYRu!(v;M+ELA)F#$y;G1=XZvbj)u$X@PJkX!{6% zz9BU^+Gzdtn4N2mR)P_q*Mpb3ocuOC`iBc}t4lXB3df)JI-2}CHWpK3>zPIT?MH*< z$>v0Qd(@Lj?x5h1rn6HM{?P92uggzdxEzc7$c@{`A74qMMt#^Sj$8Bg{;dRhG4hx069Fwh#mE;Rx_#&AD$& z%l)OpdPRBp&f{kn7FR4x;d2>&ZfJS`$M4kmwb+>#IdC?mbA|;^}aO=u-FDyVP|$T?Jl^ za{^LITIt!x)7&Ff$MMBj7#O5vKM}%9VnT9y14DxjS~@T6;jQP!?!4)l{GOq~^1HdY zS(XCvl{;nPC^Bujm*E%Ll1mXeYzuP9HTRW&yUnYg=~h;dO7Z610>6cvR6$oy3xGGMb| zmlulz+wrtmG%bWJgbWdm479ZU5^@8By~OWVVq|l%n#f4WfW+$TwH6eTH05)_I58p zqE98cvWaZg1+}#tK_Yrh&Z#WN?mH^l>LN^28l2g@oMdiXJ-xjglQT&0@UF8*>NR)Q z@1CIC?)x+-DJgAg?is~`dN{~Ba#rGTsCuYK@6YDA_c~eEdO{ZW=v>gm$A2(qE_d(1 zA7z_oAI2V=f(v;gLVxD6c%o3-zqv5L5v9s6bpAMoyL5XdOS1FI;-XOAq0rk{PH_KG z_|82d?B+BMrOP=KzNFTgz$_!@o}zFp6rMB?_Kui zb;QN5m%BEO*BOSF$G$hor8fr$2Tx6LmOx;K2ln`D@2SWG2Wu{(w6Bgh%0sqA)I=h+ zQeHgzn=pZb(Sub~0?WPPPDoD|_wVkdR!I++^6$uAJf=VaN28~E%u(!6A&*1?0*9*< zp7UUOnZ3kz2k4Eb&rvbZ$}6|J^x=a)emvb{Z*^W+*vik#l@$&w_!8y|)mDF>vDF3! zr%l&mgb>>qFJrmC_PKo7U*w)%@7m-}yt-;_(FY&$u{@zaGncQAkMu%E(vTR3=gt8c zM5^S1wt%hwI-sCmz1_RGOSQV%x)vUafh4FDgm_ z$jBL}sfph;o}K#~9;r0x1O&W?g~O3HF?UvVc3b}Dc~)Z8C#S_G+!e(yDt*PEFq-{}Ea#NQ%2?}UOhiP) z&5KjWrV(_B-kg1l+v|Cy+jk3@=((sA+1VU2htNk#u#4VaLb3PAqC~zeuWQYocu(a_J2C z{sWz=#AW!KzbBu!Hxbd9k^e>~0G5ChpLAR*ecWpYxIf@v>gb-av2p8e;q;ywVq14<=C z`QEATyu~JWbU2FsDMZN1sS)@_aSJiuI$rv4vaP^mU*BpoCl|_`*AhnXr_#C_W`AzP(D1|KyQo<=I zxXt+iLqVjlRz{X|G&I8Q8Z#%%Of1B}C5Jm+FUZfoY;im8-LGnFyeZOP-rjwIdO%J` zr=zVsYY>Sy=X%32f&Y?s!_)E=5U@A%)U|m$g0C;Tzc6BVK5(~x@+N^taKoYJu-zzW zP13Xg?CNQ`bKSfRNO|^hiRZFV@6A7J63RT6x3ykr-*02YlJL5m9vj4LYocJqb?m&3kwTTLTz zQ`O5#yHjS*i1+Q%SRxoa5@qn!?b0neZ%DJ;uqjcLfJs?F!9Y;3IW(owJt9qUgz4ty zhV+8ltot?i(Cz5;LYVD>mXDj8DEEg?D_TtE>Cwr+^kb}zT5O$F>uQM4?W!q2Io0pKU0*!kpYys}IRwx;2xMYn0s;jU7w=6nX6Az>6$K61}^>T;JDeaHiF3mR3{*JDP_n;|n(1-vMugE{~%&&!;TIa2Uw} zSe64@s_{QgN1k55+l-8gf}5Fqjf9Gn|K{1NmCuE?EC#{J??&Mjg%r)r5pIplH7%Gp zt;5DBtl~u? zFJUhrEr$a`Ls{6v2A0xs-;c4E)vUuJASL|LEFXHkvs)h z<&(`Uj|hOQOpsPkuw%4CAToH)^fJhc-@`LKJt9IR&U8?t=ySG}5xcrZj@H|ShR8?( zv?QOq69s!ke+335JYM0EyX6lbYwo;xSt{3PwHe)KF$4t#6&QgU0!UEs6Oct0V&9R8 z%UJVzIKN2RpG%&|Msiv5^AvNhzmApqPLPF$&hK-9s-USkeITP#>$-Um)dB{Cot&If zQa>CXA6~b(3AcBokZu1R3 z$7^3GbmfX08lnrAmzeCk_0J&8I(7DBEVQ$|-)_zalCkKt2}x;b>B-6I>FK*sXIt)D z>i|q&;m|+O|CoEy)HwIU`>I}}EMp*LpzskrJk+UEKYL|dE`%oj>?y*?59XIt%i!uX+dYHI2&{{b{@tW83!9sD9z$t!4bDH(&vuByK=IRYBj0<=@E;5aPn(dMn1%if zJ&1&clCo+`F-(T;;^K0?$t^ZL9a4av%3*)7qW7W3_G)vfB`Tv)*HR;BjAFmdur#Uqla5n_AO_wbLxVDg5 zZOw1t8qt);5T89r)#>`dFyTlV#(cwav%|Jr_U)9CxRMeWW#`UoeV>1%>hQ2En{iVX zt;cn?Rz&T4G(K-7H# zTbD6ecA8<9(OaC8Qya>tgaa&1$`Xaw zsjPxcc<6{m@kLixmzb6|ZYT&GAMcoteEGCp@5wnS1)1s;YY>UYe6!v1bO-e+hcyYb z^q)!p^dk6}@CfcMX8YAM?DUWZhvkcO4_ip15Ze_I_07gt9bJ@tu;cbs$Fb=hxu1#R zyd;9)imHD{DX`>axZx}ij9pneB9azaqgHduMQwt=|9BEH@kW?mP;A?0&@&QpWx03a zG9%2@q40>5ddN)Hga<@C@-xGgEz4#zUy;RvKKFL;`DczGN4y^mURSK4di(y*3)kVS$oE@#W;nuqo-uX&2nba_vC zTs&PY>^*gaGoJkGNlRq*+c0ceNJOA2!t&xcY_fB7Xp4q{{>EH*eLF6vW~0&xR3{g`B0Na1)eUz zjR-t1{37AyFYajg84PWK6G7~cXIfj8N=urK(^3;B@3ScW-Y2dsDF5!%!vcc=;QJnk z`Zn;6&d?@Q6&1FArsENoUzy|4aQ`agF9A~c|gF$SZ~^XEBqM81UfQj~_szg8u%{+yDEYR}kKZPLvOw@T3-v%AVn8Jp#& zJ^$o1f5C8i7z0pNbKt+kbw`4CQeV;O+!sfNk{iap~zh`tDX$@BlEAabxnKZi${MCfV!~-V_o3` z8#U93Q}J*zK;q1mDF6c583^in+sNwLuqj$1p_*pO^m8vsL0kTmoA^0nwyykKF+hvc z13UGkML-?@&$?2Dp$h*-fe)5l2onYm6vPpNf&l-}13>C331ZkI9PM$6U@Jd z5Ws{^`77b9j1{;QG)9}pM2}y>)~}ogcP|(tGAV4!_(lD+iVPA&eVJct`sY9&e4VS` z)w}M@%q36HDu~yt5ckURG6{Osu>Onx(49YBTO4Mq*)LOYg4;rPSn*-a8gKXPfiW=? zo(sa!Uk{+8_Wk+~1(o|BLwhiw2hEHy zyyGiBcmHk}YbRVLx{=P&@6k&SxcGN+^YF2ZSlHLJe~t!q0s7(No}OW@FUvoEEKRJ_ zNat(n8{PO$!ph3}a;J7wQ?dv#$~{FERsR@3mO^5s9@{-3Y$Q$;l^BRoo~D(pFuO}SWa{nX}I z?=TS^lbx4yf7B;OB8E)imOTv%)bT!shE7&nYgs?lEb%Pbp7ix)w}m{GPI#Th4RL3V zi?|u;i8h|dlTD{)5d7yzO5qOvqgo>M!$Kl1EX?QkI@|H#cE;y<`%xC4GRU~+d=><( ztop0JXaT?|S}8l6R$fyZoSYn=oUEm&IsJIMpP`$=0U#D?zG^3A;=%q_pZvYaz~y7` z#dAh@cm!aTj8ciSCUtH*3xpvZNqlp3S4#bRbKEim(sj6wTa6zRTp6Th_#UP7M#qGD z=FLCXXuJ-?t*)+SW2;sx(I(6LlDamer*C1w<}%ngo(8`x{MT_p!8jpi0N(1i#f*^+ z7ZH{xBy41Z&_zTWD0@(~`tMPV{5*%pdO8GfLp~3H}WIzxDa4J~vZEt!w#07xetRrtDLEXIGcF z>4uSs$@n)>sXG9;$Cm70w+bjG#Kee%^F*?ohK5K57pHPAx!oeC^3bPCOM#L$s*QIl z;Z#OS%SIbchb_8`8}glwkKBO*Ej|v;;`y{~M=z#h$(z1-xDT+9hIO~2_MnUmf%>!S z{RwVP&bo$%4*{_8@x!~@eDr!{H=Cn*+1QEQGuM}d4T7GYZ?KE6n4{JQlBK+#pkiT3 z<`U`@Yu8z^cNcr!%+&C9e>>Zox!(BxNKxvs=i#^YnH;Ij$3Nm_I_sRa*Af`BHXq-= zLR7q4gJluhD@a->)_X7t;K;PJRFOjVekjHZC-e#UCe&Etv}0I)6$GIY6CAmO`LmePED3~biZOh6+06xW;ZslB~JPg&DQd%lgT zSKrdys^!Mqg!9b`&T8J%{*S@Ira5^I>?UREL-@7g0nJh}!6jgc3Pz>%z8;!r>A9Zq zPBBeQazMbs$OzJuv={`^bJIcE{mlIQsXW{CiMzXfNK<@FWWwR;#7vFt{`aiw(LA|L zFtB3`>aSZGy}}X)wAdID`1M3ZFPFO_YHa4Hsi^GiaLDNCb&ZzOy>IMRdt)suwg9&G z)2C0DmvFhcxms+tn-EBKV^d_t!sjTGjt;UtNDILQpS-H7^Ve^1vwehpd;A$bVq)Z` z0iIr7x9L82Z;rA-t0ZqtV`5@bQd6U&qkE>&qQRk|$UYYa?{ad;%$cpX#+@jZ-l$qFsElv%!zi5qqms`;=Rws&h(G$Wv( zU_Zyi+gXsGul`(nvC`v{>%;1`#twmf0vEkO_wH+p&;1>z!`cYhw{PEWpCD7(>hT)w z>+>5Q=tDz8yPV?!Wa#zT%$qFn2)Dc026rh%A)y-KSA8!VYHK4^zNps`6A>wBXarsF z>5m+>eLw-YQuRhx1dUGMRC<`Ktf@2mNgMBg@)DqIiGGgNuZN0$3?%9HHvxy)MyDb# zJzQOfEoW|K*2cz^MafqEoF6$kIW{Npr8<%pIyvFV1txJhNxpq6ar#^y#;+4GgZFbE(N@8cVX4SV&3iz5n6QC1c=c?DCYIjN=E4A{` zx4}s07@zwE<(4o8KYvS{31IZFjR=HcphqLLEVQA zK3cZagG0IMKlZeW&3get>}Ux*0zTqNH7NV+pDDy8H&IThYGdBb8hv1SC32%1AI+Sw-c`2sj1IixrO%EghRZucITO&cV*kK!4}p zrsC-6s9=C2;YP&t({B%dhb!g#SNsP&)P@yIY^GnT^`VRgL(t3g`*T|b1qFN3%UtBI zo5F^vl9Is|7IRxN0EM5E!wM_L*;d(0wCLdZ8UfcKXLunJxWZyG6R=he$zoRdRGLZafWnTEq@pB+}^WM}t19FH3?!PJzLwV`A^ zP3_aWjia-wHwDtB8F>uE#NgOiJOTnet@y1~g3L^Nd;9F{Y(P%dYk7ULDdmkL?;VW% z&rK4LfuRIMguh`L9Rp!WhWc_wW~L$Ok&=;09~RRKe?X62xs&kX%d>~rzrMbnUs!m2 zJi((Mu{YO4d~|Hz6UD9w0+l7ylIqc2(?Lkg38~2iU&hB*8m)QB>zkP5rlicCY>vL+ zjL>9zJ)F+t#&kKGWmw9MssC%-xvz5<9d^h%A~OPrG<;+q<%m# zdi|oTj8RbV>r;Z2`P*yT`Nrp{s0keAOPTMHe*9=C(QR_Sc)LEWYx|S{hmL3%1Y0Uy z-I@}8xAWxmB0Z^%ukBxX6_AEq0zIV|F&S zdi&FnAoQ++Jb+A${G@x?OfEhzK_5U+;9hGj$IX$$E^zqN<=f+Z%vYm4LtaK;Sc3VS2vlBWHVKkd>VcYn}^4x!F1g zP_CbOX`4P1Ht0jdtG)RqaR8y5T25@b3|TI~XHV_THGpO{0O{e6EtLoYe(l<~&;$f3 zv(+`O(QgO^0sMau@=>Z!QtHS3Ug}d_o_D-Jk|^+w+c6-J>rr5svl9;QH?h2^LPq?Z zZ+je*pQCPv0d>i5n;xU}ReZ>o;mur>EL(*{Dr0kShl>VRiKO4WPw;UcWbQZzn@KI#y>D zHJ^Di0V%n^n=D%f{4MFr!o0jL!?M{qTT+TVWxf6i(;;@N*^T{u1_p}tr6ogigXb6+ zl^zp&K$v1>b!rfF{?Ra|4ltWXTR&)+Qk$EbOH1FrecL?_@!@wkvkD8_rbGrxk`4|t z<*Vm;a%qp7Q5x+pdk0e+kdTmiu+)pVu0A2c=m-dOm|u~nzbDq2#kh~mu0cu zs)2thWBvHub-K8<9p=uu&0Lew`QAXt4ld`+iBrQA-o${J)k$5{afTZOdaM0k*nun0 zSAyNh5{brR-8MHdc)aY91|7{vzxmGWBHekk^6IAjQr0(NPAc+Pu*!J3ebRN`&Ej0k zY>|>;q@IAHfhdLbdeGS%>5D|cv^4y^5{5MEjmah1|X9 zz!P6vULGAE9~$T(3XuYVh`Zt>jis3gT_mNX$lqaOVwWWpNv=}u*ekvtdkG^GhN`S3 zHM%P?4389)-8IW=1C-}HA|qo4dnFdLE)t4H zxHP%AQ6|R6H5#0)-IAX|YzfKQ0-s6A$w3-SOFsF1`U1f9^pU5vmXh6a~Bj-7S0)_PRbJ z$z#qPB7C}~%VsX1Xijw;@#u+!%Sc~q>)Wx<3hNBogsY@pyK7>Io1Y4#Wh_9{1nEVm zz(s3rF4@`LjW1DWbnj320r4^&DU44@P*+s6*Vi9tNg*U51d6iO3;^G2@nfR8B{j>p zHQooW>X!I5pl19{k33whVJBGXUFC7t(vZ=&6iQX~_v%W0_8jIWC2B(hezAczv!DV% zzIp$4WYK7b{Z;Kkd~bI4mo@3q%=^#03!Q^9*Uo7O)c4D8&FS7C1oxsGG+uQ>hA5~t zs>Rty$_cxVLu=9_?voRqU3{DbD%Ek}_+JqY&Sj*HTOO%e*bkg1fZ1du0ClphHt$fX z4Ww466C?$qr|n*+Kd-e*j3KE4KR|r|CmU;I>1boo>8cx*FSz5fjDSrQ4Yfl7$!COt zU%^}zhRWC*%oq!4$$~9FBHJM<-b0m7?tRzJJY#zu79cJ%+w9O#S{mt%+7*V&p2p|J zWwMh1TrN4ep-9xT?b2Pf_c%nu&wn~+=DwucA$+Rs%^m*0=|)$MYn&5|4*5Oip4~n@ zp)VTEt)TRq>ny{bBh~2HxVYQYv7}Y06q#O&*biR-$Np-)PIX!q;&5kW5$GgZ^LXV5 z>FCjoZVwIhvllC*twRuB{3=$Q>Z1~FzI~XfA;D)y=XK>;4dXtrcit3ChPP0ISlL$N z;$o5XclU$2m8R)OZ`Mh?wi6?JC74 z;@7!W#zL+AMg*0i0*&i;PiK5cHtm&l9$o1e*G!e(*2>MyE+*r;U+SF?!vuda*w0p2 z{?;x!$$yBkjvezpcGD$~hQ7bB%t@Sz)NZ9c!1agC)>U9 zAl&Y*a=6j~RAzo_H?DGC7pPu)vu@lCej(WOpBZKDEvR{)M&Kk-9y%J!vF`h3WWT4(9b_{?*ffu>1_uvaL_VF2vI5~TJe)87mi0|D_;Y{hOO?BZV(j(l)+ZYaJ2SGqYX8ZJG8Ji}O%Fl?|y{q-ut({+TS*@{GSW0iVKqfDUxCK$j zD^A8fSx4;aKJz~BJ->XXCdX?j-8{74YVP)!+&_!I6xIb?pw`jID))hfO zz|t)!C#R>S)z#WMJnwz*Rrtfm=w__~bC;M4yrZgLKRm(x@QP6R&C-elKYv$VyfPxEXX`xBx+{jUDRU6T<-L!4qY zj!nB9W;@))wWz%}W;*8j5dJWK3SJ-?GYhp>DB`)tp|k?%hlww*5Bi?CZn-@;?R6pm zcNwxgxREO=UYy-#O;6ap{eEDO2U7v^px(dDUu+9}O2D>wjkGfw65?YYL4=b(?@&{$ zelqHbOJ$FCZ#GfVMJ&;I8;{fWf!FxH4pX#)U$cLc!^0)(-I_7!Pf_--)L;s>R2RS~ zyKux=e6jK|A8V1bdS`bU+|pF)dAmoK6U! zn!Q)sZas|+o|gfV=X%Q%(ja5x(0)yeGr?zV60hoV#0vSIY3u^MJ69*$a%xohpX+6B z3R>p$uaqSvr{BzCJn33IF<0XrM;9?+UEu9QLj&tJ9erU03U#cAl|-Yg7Omr!{l;-( zuusNba2G2|B$d_c!q%OxFfzds%9r>yCMNQTzIn`dGITYnb0_=+L1{3_Qg=a;)6U+YQX!zJ$7|Aa5S#9T)0PpCkfNeY(-R!)uOmMk z5zg&;diO7rFKSASC7fTfxPE@Vm)-U^98AE!C&&%p=KX3XW^8`7xos3M#A10~d9Ob#eP!s-e z{^!!y%p|FyYu8JhK(_4(NJ$<#He_Uj4tMkzfimFA>RO~Am}4J3Av!fRDosol;GMe5 zDziy>!;X<9>_=i1c?DONmdXhlW;(OO@+^~O46q)O)tMFrSxf6%5mRC*hCL!?o z91%v`&f1O3=rLkc+nOk^YV;422xcFD-|wDa3cLmXuseoVcwViy?p3i)sLg zm~9`#oO5Iui|u`krmCn`@LAwjf$i`13>I+#%@nT&X<4l6RI4OrS@8{A0_?sZ!a|n` zeg0~HzFsQIoV?tat_RUWGm2|!YV3~`IG?*$%eOnvQx%n>6_qBVv?1|B4_!Dw1K2>~ z$CIXQyW4c5CvrDVzAGU2wbO<6@BBc!mW=WpO!lKg?9@0sq=(*-;b55WhdX&U!AhHVDS4!$T{WNlY&R*$m5|NxXpqoz z#?BiY?bY8r9x?>>?)oAEJVeETiC4XU1p$G19>yZaP*A z?l2(ZlZI(0?bl4xZ8;*c1j))?y}}h<>h2_8+ceMToT96nQtCp9-t4CR5|6gDtWIlk zc>zK=bc9W$2Z3b!S7)=O)1C8;cm<6Oqtes+49g^PRnQatrN>&ShLL|}Z(FF{$jCA| zl+WAlymFc=6&(_fck5Mf<7a5VXit+BmQw=d9I6fPpQWV4=fZWC-Lr^`2qmSkvLnF1 z-heM3VlK%QjqE{`y>v+9C$eH(o+UQ2msRLQk{fu<(2$y-^V(o_53d2F$?50Sd8)Cx z_GUMBriBO5ZMXh-XI))l+PlH&&FO1as&1?P_MESDl%WEv?|Gp@9Qd9Ki?yntMhsjU!AAW1sUGrEiyFWV-(xP8V0di3Pv6rr?Z%rgJm~r3X>~U2)G1zQ+#{boqpvyOtEt-A_94g*q(1-H)9Re)P_t zxVWS`YRSf!)2gx%3DkBK)A25%d8s`$hZYM+=9lf($4cn4>jneo95_C$!=Lj%t8FNO z*b!w0WVX{{?O%dEC_8|!wFbFZwPiiZxbd~WQFQ$ zK(cqyRNW$gOkCgzW@|ZDrNBm;C11J&H9lXnUjQnxB!l|=aC6r zkrN{miqSdcMmG%m99z$YTRH@a@AM}F*+tAJmgZfqSM3yNmbfHvp% z_6(@VmblK01t@U66vqyfwY42@dwl@C!pr%b+_-su1`U@Jb7`!gOQwMLaEQ?)1b9ta z>-*dH>gUHD87o4P>Iz!oat-m-XsjpakMwX5l#~rt-aq;n_>1X{W zqSv+AeH(gEMA2d=e0r`gb0qsu2kV~_h#xs3rG{L>4J!p*Leo`z2l|(l%lv+J(_+_} zm1Vr7+Uojx)-qWUWod0~ZB0!vO-XXn4IL9P_mi&ASV1H+D9&jOW^Yc7=X@d~OW`&4 z1U$s+9~Aul{{Gpp`K+)nF+_4H=;;AUc3^N&a;R6@GD;+n_z~D(^U&^Rfbq*kSP5)M zpFbWwgRn(9w!U-FqZ7@!O69-IdAoksmL|9fc!e}#_OavHMH%jz(grI?{pKXjP$>&q zNe&Ga_0;;-VmWk8x*`AgmXs*2cbMb-+`v~MJ#j59aV^NC`$h@``P)BQBi=$1bQz>+JrWyyAR~|@}q1u0A+~Qc(e!0%3l=CpXdLU zhI9}0c@Z3N@$pr2!3B}j=(?WIZY~3DfrWCxU@U9_)VdB3BjG<>fxtR?Yw*8D^P7Iq zM#wx~1@7Vh`RA`1`LAC_fI}6raj=*EPu={FSwHa9$MAqi#jO}q^+6Q#K&YF+sH6Pz z>|X@2BeWkqwn!W}?zvSbx6sjo6pYrt3lBdR_^WCU3?hTQVK2CntMut#9PG3P)ac*k z-V8io5jIa8rGbitqc!x-uishtvsJ&y$9e3996aKW{ZeY^9{*+A{o*iM)&G!`sKB-( z!2GXr*+}c#^xq$?5O8>SUO4_$bt;s}|9|=!!ibg9s8ip*rDVTkrv&6*9PLr0;QTUZ z#2LkfGwX=%?vK_p)m5w62}u8=NCh%15%g>R%mvtiMzUch!Ie~QXRxwPr(JhsJcHhy z*ODz*x7kxrwy;JJq=mS$y1u%$1|%TE(a)S;@QgbZ0aTS&@B^3Nhv=s|*hAwa{C{WZ zDC4Jkm)M}t#{Su^4>k(OVKhdlviVnm`F z1w>pAB_eNhD&qzCGF`YN8Qr=d8=Zu1J@MS?0t}P^_Gio5AP{~gCSqdZ+0oJCgGFId zpRE%r_sAntVg{{dS`JcmHMRH{IY3fT>2}TLyAqW|;XD7=N&R_w&1+R=o1&-t*Yf zUD3&V-2gQZY3)vC)`+lVk>vGDxi@d#u-{jk_fIksXA&zY5EvTrnVX#e4Y>tncJlhe zKMK{*(a=D22wZy2j+gZf+&zDOuHxq{$OwVgPyRDMz^I;Lm~{XESK<4XO5xG*F`MW8 zZQxT};FVg5rVJu(ZF%_A&fq}dKFm#LX!`UDM|pK@Z#+M2G_!v-QC^YjdXW+cXwV8k?!WwotN(Z4*K}MKJV}Q$AROHan8N_ z?6dY-Ypyw`)n_gbZlYbj2#IG%h5&#y9o|q(K>?6R7F*p9+(3}jmDaEaY;5fL@D>AL z77_>^NzASL_l~8aP525zp)>gm4!kwC<8o?~;o`cLD?dYwbPa0-6fLjNR3qB@TF1>~ zwoMh)Mn2N;S4|L6#mN{B)qLW2-K@5$weq^($=RD?<~f)Rd6p8QSTm?H)R#5swkI(% zoio{VVK>cl6@Auf!t&j?$)%?IF<=6j5W;tw-w$jIw%Y7nLiyJA&e74)JjlMTYSByN zoI6hwzspYgVA*mN)^)}kKPrsF50OM%Zt^ZyG)2ixiLiZTGY`Y=CML2HQ4v6%U7Va) zdct{WdIWn2ydK+B>0(fr`tos~pC#U>r?R{>=glb%Ov%zs+cDQrQf78GU{6wg#z;|J zTSZ%$6J@)OX|yLZ1<<~+jg{n#^9<*_=1W#xc4if4m<#i#>Oa`^SDa-n#F9A`%5ZCN zbH~tEA44Fow9owAW9TKKQ)&_oBvmxPS$9RUQJ#%zIN6OG5{^*-8>~nJ3H?YvDy~X?)STa8-88R6H}!XXYfg& zNy#KIXws5gcD(UoG6keL1)7W#&7q{b&(^G(Vlks_nqr|M`_HMysgLr#@#C=8Q_6Rm z$N(XE(!B2pWi)tVg-`rB!82&qjugq7dv#jx2Q>eWGinP~eNq^uFwV!HkmpERWEznD}ep z)z7u9m?&*+)UviMP`I1_OMSb+@ATO3y+UI0x5OFM+zU*WAnU8tarAgiH={Rw@=#e| zveRe$zM^^-cXmAKGy3Sg_qM)vQ6QJyqCwf%?sZ-3oK|!NGl|*2nNXBZ!e~l&3LO3p>Pu52{6w9}Hf))ycI0%BvbLl+8RqkZ`Vm7@ z4$Xbr*NSvD+ns^c7EU=Dbw@VJVkHHzd;u7<7RQiI^+ZzFj_q9|5vPJ_i{oSlJ)Zha z15mT?R&|sZWYeVFUVpE)PjefiCbJ^FS#LLcl|q%an%A?hV_zDtZ_iR>& zsnJ5!c)^zOH81e@q5ybCdN9sOjUkz#274zZ1?EoC4BFJ>hrFt+ z1Pa7tEa#_zQU|$4v$LLqjBE9deH%aqT4(-@NaX#2+iGXQSRPOYnVOo2Jvb*4Xlt*| z&CRiN1_TG|R49ao@|;7!Aj7dT+iG5v$HX!gRYFmFr2O$yxFN+nb%@z zs9#Ri^h~qb;+D=do;mL*cQsqp*r1Sia-g;Nst&4s()U53hs<5iVEnsOeu0~%nm>dNMz?F>q&@5mzb?nnmjgc#Hx_Xb4C*sBMi|riCxGbTdI;&k* zEr98DHv9Jp)lawE?3`|2E*yC#YE$NcNA5^t(D^s4aw_WftQZhyqU|G3Z0&?)Zgh7DVFbCUs4W7>5oaqOm~tb>ko%oFQJOn6us z;)bhz^vL)uFD^Q}D!Yp7Seqn4X=Jf8jwsZ@1VW{8yEFlXAfsvLyQ(7dYOEac=oZgwbp{}FEp1JVCo0Oo_eOj&sIN%`gPSk>02HB)&(#{?~i}vUo=`%R`|xj6Mi=3 zr*xQ$5be&U3N?!b<~5b;GzX-{3^Y#ku2NF7)*oFWfq+g@Il$GtD*H z7F`#UETc+bd-Fw*%azscq$w1XdC#k2 zslgBy0(s^XcH8T{raFN94e+hBJA(^U0%#xaUPAi)y-7wdNnmpo6Jank5~Yj^qi zKq0XVg&nx1m-1hBSNm8J&*<61cYT&GzN8Y)6m`YDashv*-vbpFo>Twep+G6P9L_Qx zLz+g5zBe!A99Niapok|YBjjE8>u~g|>gsNdvpN;BFmb8)a6yYVO@HP#d0Lq;pA`p9 z-qv@}KXEM2r!i4yRBXS*g1Lt4WPfj48mO&aS5awAWE_AJJGN;_!V?BVf|l)!7)hlxAg>y-xj7pf0MnL?6B+iEJa zr%q|(dX{pfhQ@tlCC$6lO;VMXn93v5E=i*6N_q3{q%pFrLIRR9ZZ0q6--WEBq)N%n z?x@4=7rWH$)?uAX$Lo`b&FR%oO8RgG_{+Xs5!*MTkViaWNigdFYOd<|LYA|@E(_PO zpFQ+lZXk)Iqo7m#_rq~SA+TA|a<$K>lih2{!lhoV2UQNe?9mB$wqs`HeA>~K<^xN6 zgQ&O=`MDnDqiD0%oY26lvNT+lpAAzn&L{(YdA`Kfpie?SICLestrBCnZ|V0z3ySM9 zYx$9QzVMqK-H_c%Nm0f8@JxdB;_a4g7()ulz6J8Sg4a0Y#ihdQxIuFps4iKNpXMtE zwMD5h+2EO9#Kat??zS#X^;8(zhK_9s#a^f_GBVSE;x49;gdEB@pIuPygy6i!{!jJ? z6xQKSVn@**XMN9|R$>wp8#UW6)ZO>^M^`$8rKF`d`cthTTO*r8AlCNtSl77jMR>h#73z6!M=>Gl`J{}$+A))*2k)QL$7xTq)rgHbzz(6aYUQ21R z-`xv+@mM>~$b9=K@T0h(A!b9QkGj-mp@o>Q;D{6^MvC7^tRwPRAh=$N(ojW4a=w&# z1i^^h{Pp5P+{q{yWE!$g64-+>Tcn_P;I@;=H`3xqCWMh3HC{51e`Z$dOnd1rfh{&g_vL5k5FvR8^h=7iw_Q>Oi6i>oix^t3YIEI>Ttl7#HS z%U#S3JWhE|$l(WVN6rr?N=W;Prk>}P{s5FIjLq!pi#lcdxpLwi6)71BX;S&p+Kivt zG9THUQxg?#<9V56llf^9NaC`uooeTOjg)K%H6|&{x%;r;{TwA+mC+qGlYLd^T9&ov zkM0M9~vU+!@iTKaMfSj8FJ=E)e8XMo9h{Ms5`>V*vR69)+-rhD3B)Q|0a&Wkx z6;5P_=XE4DHQXX@TozH6ekJhD(Va>v^&_rVb5oR%I=6P5xAyb)E>#2Vw6(wN=-^9C zOk`nUA`-2jeV92i%o& zWVTZW%GugtjPL61;w2e6LCF+>h_W%uPTHT@Syg>1XC{FotJ)$YhX}=0yQvGqISeH$ z)wBsiUZp*o#??u1&Ch)!uw!C4-$_!?l9Vq8q_o+fWw1`ixGk&=MB{GLRWs_E)*90x z>9VN;&qmZLciGL+%hB@lGBR4Hd}%?=xMl`8r45Vc(}=XmWZ{q3U=) z!MaV7k7gt41{&p=V)NpZHl) zdl6_-0si#vUzyYQNA?E|`X(^@35;sp=xs0(obAoVB}Z~+H$D#(igyQHmETKBfCA{q zHEDKnLYf!|2yFI~9f^qaW@ZR{i;ea4*qsNl%yCQ8L>iRwALSdZSeH-B?*H?YPI=dzAs{qdO#he>cO7u3?26^t! zk@alaNHNOge`Mj{k(DNS@EVHy&X}iL!vkN{>X?=+PHGVPuF&91=B97o9V%6x@TH1) zBg9>2&=I$Fbh>C8O|GR8TY8NN}OKhqOws*jp6EGtdhiXz%6oJE;DL^&e&-?Pzg3_H*-on-Q+t) z%Q#Jw@5&EwW9AXm*ZJGhW-1BvkttJN_!QE@*nRq1zJFRi>9lYfd;i3r)~hOD8e+c5 zJ&YjI@ZRA4Z*AilUX7Jr>?Zp-LTtl8M7f#_arabZR4b!--SYi8xS>p$7iFJqQ$7|m z%Gu5IKzY$a*Ke#zSFA!OO=oa^w7Zp6@Wyt=%d_=KtAAlIReYd^dteaTm^HTXwcVZr zqheT+jO6{tserOUC9Sx0?~<+2&Lq& zl4Pif40q51-v{-w*6ZvbtlT*=Iw2H2D!QP(;t4+MO!X8p){-W|(ZY`DY_y_CpBQbqi|2e8jtM zy2MEj*Bv9;6oruG?$|}SrtO;Aeci07J3elG#1LA!Nz|AXk^kJ$~J-ER=70_Wi@i8Klgn#9nhtg?46{yzp61q_D9wxG}n!tF0Bc*vD%R77UL~C){O7k zVa+RWITSDZlf^bN{Uji!6p<+JSB29i9ExqvGs!ue9KXWl&%(!pEVm%&L_6Ft3(mKt zE{;_EKX4wR>a{6=kF(MhKV z*?)c45Y+ml+!YACeXzy2xg}Yu(v=phlX4^#&I_jH7t`mn^LHFh#ppZMR?e3%oG(mg zx3{fBL#)(|)TOP0@{}z?k7gnBQ^ozuYsO5Mr7rd33l~E0^d(9JpLW&`@9g2vTq1{x zUF;1^J*U{X(M=2qY=c4b@TwC>dtdOPZ}5=v{TWR(HaR>D18 zTjO>mhC#jKBwyS4I~xcG&ZWTRyj{q^_Z$F)c85i;GhZcG8Zb-Ez0P z&G}n<)1jdUsjGG4y(!RsoT$xtPeH1&T;)ZL>3#{lb<|)zLjNIIYyQ$L@pen~sC$RH zo}PP&AFp;;Pae8rD0s&9oJ~uzHY0Q@C5ku901GMcQBRSAM$bDqc z(=k4_rhxyUB9erF~YFPZa4w6cJB*oBW+@l{Dnq#kL0>9?( z_Qd>zCX$CUbKCxYKeMgQph!K<1cNeSbY7bOVlQQ^vXm#mWumRGX&9|^Bv z5md&netKN<@n1p-uWUpfS^FEd%SW=B&X2#yLG{Cf%B6X$3(j3`V4ID;&_9@# zgVK{EV6e`C51{0$HAGJT*6g>T@VIp*CEjFLrX9ELkQjoO_8LkiD?XW=39WG`{>AH! zds6v(iGN{ks%lTT)~Fs3p8(4|i~?Q$_3wA<7v}KT8ceUT^Z#IF+@q!Pe?ESccKC-1 zKfDZ}p8FPY&~T3r4Y-j z)}=QU|DEUj?`4$~p0xi0ayjJ@0brb5)f9sA>kdX}@4}-Iko3pZ78~jJSe@ zpo-!Dd;eeH%(KVu@B}fDGaVmJ!}Og&>=PbvcaP&SMcs2@BJtEUol>&l;t>{W{pE$h zDpcmJ38)WQCX>oMvh}hIiVu*G1UUuK_ToAm)&$bN@pq_bW7)>eyW6C2OSn%%GWeAL z{z27gPxO2N)rKYguJiG(xyL1&k^a_t^IdUwz7w2eR45qKM`oO;7_3z35E$d&Tv{-{ zf%=JNGJWNT7p$?mhi}JHM(s6C4WogR=rcX@{v|{fJq9lm(--j7xXkxSx}mpe{gUH*MJN6Q^q(04&OBsbv82@)C?2&ZI8UBOrx4BBWU+JH zYHv;g!~wIJy0g47w{1L@Rh1imI`_jt2G8=^QVbN__ljR%H)sh{rW$X9rE%3cnooW% zr*xgCIYyBe=b20Bc8t_b*ATxk<2WY>jU1VhDv%13{(B96BVvRerRcn+yx)FlH>gT+ z&Su6@#H_3yQM6Q>JP@WGdK=0eXhD0RNml$fr7Gj3j#@^NC)EX3qY?I44U33yB=l-kHHvHvPnt zrHoK7ztGecy;06}p$TL{<6Q>pHpocwi$U$pfi!wGp5|h~f{o#XDm3tROo~-Y_i5tg zUVlKXl*l0ZR7Ng11Y3{VYHQK`bdFCO`vv$7*3K8Zk>JmI>s-JbdztPMY=g}(@WkFR&jqew>?hn^p&Ji>Q&)>O{(O-6Pu zOO+!nH^Hoz(@|#=@*c zos2EZxV6{v-HdV&7{y%--%)0BjOM5-CNq+Js*lgeGglem8SEE`5Q1?`QIq7|G)hd7 z&eGLOb}+q(;INA%9lX}}H-xV$L5|s=`|)o#lW&}Uh~KpwWPl)v11g_JeLPD#U-{cq z;WRnSleqTGrT3+JglzXbGhGipTNC=hO>U|T9_NikzgU~8f@qz;5spfmKM&R3Y;h^P zpo#5&+q{bqF2As(i}up5F1ss z!+A7ILL2t^U0r}(vMqOJX3&WGPl)A&gVSL8&wiFrT(%};woXM@2HT~_o370Dm{c0mU_yK0V=N`uig)w;(&Znel|0S273jF=u_Xz}a)oQkBr zo!Ob!g#x~XIafZXAw7_p>F?btLVfv+Hy-UfppfkRtwVd2AbrM+d<^}(B8$JKthZR6 zPCvQ^c!W|tj@UeV`Nm|iMO9Yz>;Q>au2`kP;b;Y$)sELaIF-Zwe!j^b7$0C|;c1^_ zbY8Xs#CYM2m5s?i!Z6=SE*`?HmgU&oH(>u$hOgYTKwLVTaa-ecE+;@Y^Lo=Di2XH%eRMTWvUG=nI+SRXc)QwwH}vBe&hmLd`2tI%>}la1an3S;?uksdev5-Mj)#nSKM}U}%Gcjbc)FO;c77>Q3C_e06%z@-AFCY`JJ5^#|Zm;p`)h{_tg5JJ9YQ@I2 zyfinm13Y~Etc(mmLAuCTzRbthTP%s?4ETV7j;?!P0RGLJp25M%si}wcIQ3l7B)Ns> z=s;Bj_bMKJnk>g+mE%o2=dnUGMu=i`JnVFG&Cj{lLZMD z7%~sw=;O7|6RlsZ=4;XW6+}5zV3Lquq|hz!i&lR4>~Vwe-jLmVg~WFEGf^h@V0eEC`&Wm(U%3VuaH} zlj-k&=;qOAX?ea5M0`hXOhF{F{3o3ZfG(H$v+gq@=?z?K<}Fu5`1q@v>TU(59YEu= z)!`@;7#s=+5HvMqk-SPtl3#p&8G_DH(_^UvLr6(VkKbqhMo!QPUvB4(x*Fjb))pYT zvIrWgpYb;_F>y*b1>~KktL)RNP7a}-y$BchjEkF=wHoercRd0ESUZC$tQ>bm+q;t` zC+FvYF-c{0b@WgWn!4-RM80HJcZ7E&&=k)TNfoK<0>;|55T6Flul3kJF}(9=S4}R= zUQkly{$?UI)XPgpcxj5)BPZ(PaZ&muh)S{wo7H*4gi#-V`Ed54Jzk~6>X}(u6K+SD zc9+>FXBT&DkNBI-GI>WWK2045EW+-0`P+K>g`wbvjRNMRGsxhbztjX*)J91H$Iw9R zRX;vSUUN?Iz!a@Mb!LWpH8nNx@bG0SAf-DToqevMG!AjGy}iAjh?j@~`0k;1bS}}x zW9L7pDLTohkj35SzyBm7)$$jdU_;~Z$^evR>cAlVgI*N!hl|z+T|K>FLLVO=508WG z+wUIF=$wp@*EXFO&R)Z4ax_F?y~X+Bu>6BhU0uCVR6EQ7Xq(yydFX`Ux0+6?XxRPn=xCRE(K`cghJT1P_9=N7AW;`E%}nA)#r%d?+M`F z;M{2U1@uu@He~fDOA6nKV|c}jRSCn&`Gjh%96I1iHb z1eY&@cjD3#*jCOL`%yd0)_Qn&;22)@2EJFs9f> zW@?OE@9e;PvvnuOCj$cmaa4*{>pK&R3=eYl)Z@Uqr6@cRHb;QcTWaU1O?H>NLtREi z2eoj`*q>j^`8oZ0+yCs&EkMoE0A>IduZ#F+REdF+QKUAupmLJyTPv5_O_mv(Kr-j9 znz*+7_tZd?hosmX* zEAXDPyE+{Jdv@uYM{Vuh!}SR@Y810w{}wu}p3K47N3z25bUZ@{Ivt8#DZK+y= z)%D`oKhNN?lKt}w!GXaM03P=Z_6H67s*s6~nk}cHjz4VL``8 zQfs|cH?RPo_$cd8$AWHjbah`elRD!ZDL+gJ_5`4!x?(T^mR_#8VktDPoxvm8UEx&Q z+uP<(p8_%)(C)p8Ix{C+i?e)ZvZ9_x-q2v#;@Pdry3j`T1TraejJ)ei+u+;-XPzS9K zRMgaI(eX<+JF;g80?}81q(nl3B7m%b-0o%oV)p&rg*p$cVkn=^})>cXD!(&Rhvx|?g#%gaC6cBI+n9l6fkbHc~=i}34e;XVB zo|;T3`KPuv$KLg#d3LxAJwZhJp>GI>N|O^MEv>XF2%yxrq^Cc6Gi(gBayXwicOncX zv)%MjbG&@%=N}Ldc~}7e)qt4;z{mbWJaJU0uq4DjSVW* zYf~Yi9S?xi&k64A0&PD@jlm$wJkEjl?Z#Ds@`z_hcn!TU;p7mkTb^nrw%X1xIL z0$D`y3x7W0d%xWc~I1 z|NQwK^QrCg2+aC+!1t*u7~2{cjfFuXO6G892L!QLSgzZ=UKX|9>|49s-d>$htJO1U zu6P4lvy2v;3udS{D~Lf_J0S`=w2)aRBt!lRg)~=kpKp${FPr{an_nyDQH%QB<@e%w zusl}+`~W&1kg?h9_vaAs`GH*eZggFEe`@~Win zZ$WkTQU|U&VRJ)F(mP3Wya6?=cqJ*B>6ngk`#%o`gWwzgp9l2M4^;Y^uIt%-Is@#R zIzWDE9hi7hYBm@Hx^GsXC^bhc#~HmjvBI`me29V<6}39UVa5aoV3_wt|pVPd~C3JVL2I5EMsEgW85;`yqq|C z;tC(s#$$ShSvUM*P^>KDx*}n|=&k?nsiD7OqyaV16P*>tIeBdL8t6lTGO}uT#}-p> z4L3u7HHsR}%H0zM>OQuM9;IYl$4D|xq7DVTzE>#m#ZIn~D3hDxehv}1c%oh4#E&#N zDVw$O41d@E;}k9TzyvTHyU~(eoiN|?N}!qSo9n*`87X2~Ow87dz?B$FaZkA`>pf6k4qZbdpPltP z?It9U3QW#Ofx9_r$O)Lvg`c@;ekMg1i+q<(0`-|iJX97ZvH#r|-RkSoGKsNgLCwP|$6- zo`sza4!Ye}B0I05JcAW}2d~Lx#|4@Phy1S=BPZFu1fz zJfJM+XaQ65xoAT?ClBYbql8tL(W{Q5SiH>ZtCcs>i5Q&?HaO>nj3tP5s`Hm!lIcwd zgP7=;@-w~HbW8ys6xspDPvEKHk+CTejC>JT%y?kZlb>1)-y5H)MXpCy?SpQA#;#K z-LTr5;%t0Y+L9L|xLh?h`*wf9>M%@O%`)1l^|RcB`OnFN9O8IH)c&(CYu-)zf@pS) z=zNlrsmjy%<>GIz35TPE-Zuts6DD8Y9*fycEVxcRJDIo%shdbQCKYm(aHm|3{ucFh z8dRHX@m3&io2^$etu(YziD60c;Wb%b92;65xUC4v=2>Z$XKJaHp^X4tRFQ~ozBPv~ z+5S-h$Mh-|^BvPvb{(p`>pU==NA2Q%FQ!lsd*{Goc`nc!nl->jtL88#x>=mDun%GX zUncky4>3ZZN3N_&)&Gb>q_-11U!YM%>mwe=0--@*=ZCG-hqKhRE_^&iyyNxkQ!y^~6)Dx@c8Fe>!JM z`?Qm*9IaUNFQ>R7G4TB`gb7+$9tfQltgJQu+lC)jd|qz$7}CFxeEUH2R!znP=J8=_ zL$9PI&spj`gpM&jwRUD|piI#t7>!>LH8(b?)0hwu!_X$F-Ma$$p@;hEm@?hi1N(H@fusVT;q0V-+{q?+tn%?%Zy1e;es0)~bbPfXS*Oi;Cb z9!+4JB(6!a@(DzAJ36g@OxZ{pu66OUOi6v!n+sBIAw9m+52i;70y(cTPnph8(m(I? z;ADl<_;;F{&J7?iuyAX@DYJn1-3)_FB0MHFA>saNV10}jHzyF|Vp|?{)5PF`sJ2fu zC@f$-dkumZ*xTbz%_`bYkSAlP_f!=VGfn7eeGd3YT};{vOglN2GM{}v1Zk$&=O+a- zBNI~Gu8;goCc}57ys!Vz`g%|>>&*`gJ)qy;JNATfsn!EfXg2*8O!|1B+I)d>L$EYdbR>-sA{Q3y%O=sC z@a15ylRDr}b#ZauyJZt|y7z#_N4jNplsd)>$F3NFYZg3CUP}^@RK(qXe73ZMs%2+3 z=F?g-$g&NXg*`%138Q2SoMDKQw4)g-Punpt33WMgG7skmQi$Kki|OOWb=e6=xq`$F zSS#)OBC?3fZhTS6PI1_532tyq_E9EM&;5(g$KM0-F&$UVOecTL9%sPc@ep3Uip~7H||}bF!I$!iAabA zHU~6KEM#Pfq{SseXAZh4cSD))!}pop}ffLkXe-XO<>cWC`H}L({^gr5;Vi z(BOQNTMu<>Ue@l1YxEDYUkgf{C+wL12ekuKswsgu80k)KbxL*U%Pa-;oGS>hu~A(>^Cf7aZWiS9R_~WvJKeZ@a_kaKztI0eY0Ij?oRl7FHr) z%(}_1=*e2w!_wl) zcx=JO4K|z@Q0^t~x3%^?|za#W8C4p9~t0lhu=e8`^|Tra{dPBmS8-}i~Ml; zbcJ_WMdO>C?neocd=+iULyp*OF9rGD)r6cU+;0JXSesc!DU?g+`#=X{;(E~H%(l!{ zB@q4S(9XMlq+1X;dEd{fg9rw9d#|z*QZoMCqj5{*nJ zRJAh5lNl%9Z>0$zRLL>}crV?k%IBMq8xEACEAN}BIoGT!TL=@jelT|S04&IUTMy;t zOPcZ9te}a3t|*ksE_)g(%oLZADjEb)7&m1kVa+8F`B0|txCz*+i5U~dZ?OeeZi=eg zf<9YGFK*b%YJBD4@-WsMUG`RW=-cb(RiEWlF4&`%jetQhfDq&ni}d}MwcD>U?(ro+ zdQAJg(W4&ME?+bqyDy=KddOtHMSC~mj&<5_NPPAJ%MDTbywiNIzO*(W5!-3OnVso$ z1`L`F!vv$)wvx{l6i+X!XS%| zp0t;3uI}t%y`*LM2|x0i7$4@W)`q+wFJ9JRG24++#2{P54>|qm1;~r_M=$k3Hi_aw z-09Psl~m=GKTy(9lr*PX5#4`wKFrdw7`;oE-wJYeE_%6wbQf9?=X&G1-mTbIQY|B{@0%|>)!ew*drY&75{q4yXBsRPph7iaA|k8y%dKK%nLEp1AQ zRin^leWHS(rX0VT9oV#Hy+(`Zy0;@ja(Vr^XzwSu6C;dfm*Ua6*LGfoQE^jKk;{ye z6FS+v&>Is{;%IStQEk>j+erVpp8*uqYpCBj|5oN>7#e{KGyTPY1uP^Thwi^zcI9k! zay-x6*Hq4pMZY`@quflBb-d>53!Z<@--h}phW$y|(=CCEFb=|%03!Ty|6KUbXOEfI zlLI&nzh9h0Ap7!Cc}4LrMf_&cZ>oP~;efZmqm2Q|&tEnMfa}7>zb^H=kpdL`M&OU0 z-8J9S|F4k!F#7Xyz28M2r!X8a95R{-|32&^3E+36TH zl@KgzzaHyPZfGBG(P9(X3Hlselr4gyd=rgPzi38B*SnhwToxMx>L@i)oD4peLc3iC z9sl-sU2TBwGbN2i9xgQI|NlnUBQcq{oP8=a2F(;2P+WwYRNrFm-# zn{#bU3<_!97$DpVGzw{Kd!svoP$OQfc81`u&&$Yu4YSJ-Zc%Nt>0RqVA_^t02^9;? zjwLWOEXd&T8&v<4_FABKb103`AUuU+QxU7Qv@}}?kX8a@<*JEmX!ZI(sQw}-R%blP z{co-CpV}VKZ~{i-0o8@ciHW|x0oT*Ry=6PhCyvZ@Qj}I@P`&n};S|62LTH&1?T<>iYLqI^$ zOF=0svn@Ak)6>)Q@nc&9b3-;4w~LE~goT2Dft*}yYU;g2UItlVAt2;kKw7}e%#66Q z!oa{luqC228X*2nT~LsemYkf9fR1P*3gBmfym-V#MWvEr6JwK-giFl<6=%Snl0X5n z^l5tdJ7@UE_|%BhhzKeI5*=V7*c2TR5Q~0i zFt$+9zyBac1SIMed9sMXMnXotfW$T}Ev-OHXLLja7e;n=ZsbfVTTOSxNv{84_)qU4 zz<5kF6d$mefjy)R41&Xq2h75FI|z)Cf`Wsa?GM~EH9s1L$ENOYZ#zD;c}-6%JbT6_ z`FUh~yn1)4^x@{9Revz`4jHMP`g>VN076u!4InUJVc+Tos3XglxeQSD3t}-7vu>WJ zu;z)UvD@7`NLYO8&>5lZ83C>(Dq51Bf7lb1_i$^ylNOcdqJHx^L4?wj5(x>3qjd^F zGD1X;G^!)``p~0z4Un79MgtTZh7Ey2p0c>OX4-vvxKlV5n}kENXfnA3BdZH0P&Q3j zc-X3-6Khl>ra4#hY)3D~KSV~w#%XxLFUu~O(LM=pc)B7H4ALA62wNzmPrRGLgEtCT3=npc%i02Ihi9R&$(! zkLd{s32V~@fLW8iuKv~*CY>Xii%WE7rpq(wvC`qbxH3S2_vUBcuC>b-MSV9n_5ie~ zCuRBh20*)2047ChY>bAsN+30woV@5zQbt7NHH=6UVk9>YkF_=Uf+^~YAb}^v_jdw9 zBCv39gn0x2T&Sn34+{fBN=kn>X+rZx>IPQB?p677f?}e2*FCzq4k<6!Nxd{BM6=B< zTs9^rPigh9c^+o1A{=g_Ly5a_A&J5RZ`I;kG#5C(j%sXdVQ+plS0I~{Dnd#!Y%$;6 z`lyG|D}}h@E0@J6GJhnD|H54F!goJ2Z6-Y8jh!C6soFv*PUH1jU)NtI6OSvkgaQS5 z_H^K#fs%iv2{-B{)dUccJUw6Y;N$zX@eqk5D-bfj#t|ue|MY1ZJHK_K<+X)X%4vF* z@drXuBm|7nwX?X&_>8tTc#&*NBqF?ztCvG*z$ADlpkfW!q5)y$Y@-`ucBbrYMtO`F@-UA}lBE+o|0 zj1Fjna}pzm(_zzd3+E4@Q9){*AqIQ>H%Si(T4#&MMPsy+Y@xEa^_TL5*KRt9IrE=} zR7ft*hqT42Fyn8n51+TLfAQnf4Kp-faH@%(q^OCcytZ(~);|=iYY+6M@1l1&)Uzuy z-y_0wI;dyx&jvM_Ozaw~fLb0m*nc`|Tc4gPy!w4!0_$e*))LUf;T)yw$TR~BrGawcFeD^<|XLa4litz-x3jZ zwmW6NGhP7b^Gob@x}{oaNohGKI2c+AnzjR0sla>1&d&bAOLF0{vmG6sHi~}T)7Qq; zHb=_9;9L4A>9H03bcI2k*?9eC@yKwN0|h~OLcd;aBWmE{&Aq%()%tw!^$~A+dcsw; zTQ;XlYLX9c`DWeN>S7F=Cg}7YE9}P7h=EplDGc}LoKwQ9&)RHh$;~|kQ3c{7Q^N%~=nl!5g~&4fGyV1i-MB zGbJVE9dOD7p%Hw8sIGe}X;7^vsR>p?&W6GVB8Ii$}U;nVhq*-koIQz3qf)yr?7^O(1#+RX2p`#E$jma>NU zO{Yz5hllL?@8jP_Cwk!X4bWCf37lO~Qw>$z`1-Aesf|7C-$r}A^htvz4luNJ zg?cl%4ged&8Dl8;WO*4Gk?@b*Iu*dU!q!(Dz-!LH(C`Ru+_r&(*Oi2lN>Wk^o!y1W z5D@q<*VQE?P&slL_V)fc8Y#u>$P5hWI1$z|)KX>fi>9$>0mCIWFu-pOGF>n!Q|;;Foh~ojFHIu{A|gr_ zx<9^g?w%Xf`C+9vR~sTBE$_C!9G>~HCd=ZpAMQB`%K;nzl?XJ}+Z#(|p_AXxSpu(-ft z9<`lgLPXopmIU^Z6AKG~=uM;mRv+B$?E(#@sr%Jsxy)~IiAYKLe)ML0i+Ol>0M3Zq zp4`u_FCJ!0JNpyNK+ejap`qCUEknc~ZrnEfPW)Dp;<-AzVCMNnNwZsODJwv$nYZutVu<; zB)V9tSgpN4A}??#8z?&$fxYCEMDI}?_p9b#Oi*rT$&T)AH9s3m-pCJkIOym>OSY35 z-AOL9#Q_e*!HOhR#kZ=i#{;Rj&mJTCU#YKw?~_J5k;gz)#cckAh@6_kwR6gPV-TC( zNCp65oz8Y9s`6gI7(~7zV#Z#lG1{MNP#=i@*bbwzu~F-qovGbZr9jcbU*gXfL1laK z>eVX&5fNlmhL6xM%^31-!EB z_=_(Gjt&mqK0Y}FgkRl*iM#-0Jz|))L#Gv6%gyaRh1K5E()%^pbKj;*YG`F&YtSSIo~VSqQ=13EZYv^?{6=>DX31)hG^%+{z< zOGc6^C%52xFuWK=5L}+ll_X8_VJS2-DjG68jSNzMptEb3n!Fqf41sa4>=!*hs?xLR zJNs7B2U#KfSn&*H`7Z_zm!mC-d|dlCeXXn&WD63}X3FgVrczL_*-BwjKnf1s$fwS$ zbEdx$#D+YvSG76oo+?*H{-@Z&p#1jc&)OfxKjQk;9Z6I78G!3oM@M60W9{7yD?IiN zi`i{_g*JAIZ=|#;_WVjF-sty-Gvh{AG!8wzY#^V5e(r;@@}c|P3fj_;z~)@6ytCi* z^z_4E%IrfI?#=l=tIeT=gv7gmokwi8dl}#P0>J#;9~OzlnjMagA?^^Y1}iixcC5g6=w&&cH0>zmGT6DZ5s(Fm?9YbVBu$M>YLp{QR;9J1XSIR z7>uG}!3(zR{Dd3Cm8?n{ZTOD0{NkTX=L(2;p2!`USv>)kka{~MmDtE^rkKd}qATMs ze|iBtJ2x<}QvG<5A4$nWPLN?Ei&#+zIy<`n($j&AqD|^rEP4=cF zd+#k|@4fx*8*ih}_xF#-8}HYB-Fxo2=brgIQrJc+SV0j|FJD>8sfelNHahj2HLJ)x z*vGYoY><|;rx)H8p#o999kAXWrwdJo*?8{bS%7qqyX3&-Ub?;VjhFn0Yjw0gm(&-9 zjm()`EQ%DB%idu9h5?JENJc*c8&^=xJ6&yD?Kzy@aAs2!3ar40His|#qIw3>a@w-m z=3<~7#7-SL2~cc~HhY;C7Oo>ABh`?T+8oq<&1BYPhIHIxFLB8H9(0q;;Hl0QXb~{W z+%Fsv%Z&G?)xsq8qib`|kV`$ztHO z`!s~+-eKAu8_me@LNrRaenYLdcR#dDt7)P;&~LdvT%$bJkBNdvW4hb6JNJM-lUg%a zH^o#Y4rDkmm0G9on0x^nr$bzkRUM`2#*K=@f_b^ zX*&{vTQ~HjCV<7XvXXx~?WA5uNl9bqfP(&(QRJ|U;GxY?K)AmW2o>9u6J&>A+CLHH z*G|}2t*!+LsSiKAI|SJiIgB}cHGD+hzKKUY{Zr9f6sTDX=~1bG{GxJY<3mkUIj1^dSYjO!G3R6A<2NK(T_Z7##t0{!k%(t4EN$mo)Kz7#z+G$*n;Y=!=s zM&rp**`mea&Rq}nm&15T@;6;A`8ru?ShWJhmF*hhFuJ>wvl|VgKV0vK&`K9zP;*kF zzD*ayCfTJPpIm~K)E><1RBAulX09?HmnKlLh~*v%)~pLhaY>Ro@CaZ66D{8-B@3C8NDlZOg<|`b^IuZTG5Ho0c}sH#S@v?H z7rHX!O=h}ep83S8=QWB6c&Axp@6F8lW?9%UUnasy-c4#FdiJ$a(Gk<3=_l^>c_0lC zK>r5?rRd{fV`Gbmh;(@V;^nUS)zyOnpbH@`9y9pZSldsOoC3T~;j7jUIY-Lqs3WP$ zo=mUK2`y)tjPNhlXSA6jth=Sja?LCI{`6o4sBq7Fy)DajlOh@{kXS?0cNW~!w&Ow? z4kIcD+4b86X}<>)lG`K2EDIY{#WXJ*X}H`q)C|E>IP46T+DrTP`-|_b>RDz9CwO0t z<_59FrWq`=2lL<3#49qty*kB^MH{1qU4Zu6b96xhnL`o5!P_gVB>`;iAmV zjmMm%!e@&-8Ebs&D;twmduViT!)tI$mR2BJXcTk`i$}f#PlY@Nz=nZubDQg6XM#4G zhHPGkj+@>ryEBo?rtWT9_S=!@iKEJJqfaijN&5G>^&=`IjXQ4CyUztRByiW;TQD6D zmyZt^e84wI;zJOy>|#_YAJ&`gO|98%?1~N^6i~$KfLTYC|ma2P>Wq{Rw zD@MLEdskLJOL^<|QDJdI9F?$b52s4kaTA7rWsV2SP8Wom5g_?AihLO$TZw^^l9DY{JyrS-#);5m{{++1 zcGJ=Gm`!o?K#PPu29m^n=Ic2*Iv_@@b~A5?N}lV>kg;C%6?gr~IdjaUbr?PaPh@uh zQM(6Y#BULy#91kTF+by8=&1xX*uWzjnuXsp5(IY{t@2zEJnKS=1F{t|VG&L;{m&=G zqlHy9aLN5FF9|}TL0!L2AvfEM;qF6%!Dmy4j_7!cs4ex`D(Qp%TX|KfBEFr<>T1j{;&mBX&Q=pC4bym%c5_1h$QNK;V#eRHUqT#j zwDd6=Y(q6E!gCqjYwLM^U*xgW6c_dy^ZP#1GNN7oZ&KV!3D^mYn)%-Q`;ga5L&{x?{*K}Pq@6QnGLwUleynyeg)qA@aH#3;;*9^Js}C@vsVag2#Xcy zzC@Zq9vcaIimssrv&6WKd@NSxo;dTbAmKeu*oCWpcx^pMEJq%19VnX^2u@##K<62r z1g%8LfG_cRdFgrZapgf|!=v>&p85Rwv!%9$>it{&)wM-Wyo`*7SLPQ`Qx^+<>FV*q z{>zY{$nW}75)k=sRTO>?52(*G0Uv-lNs-DkV6_?6JwHXS#A&}vKWaA-OV(cWO#XX* zd82l%fwbqe+w7q0Ezp zFU8#7t;E*2*7wj}(dNERX?L%khz1J>VP2OFME3)Fq~*8L6~)icsQ6dMytR67Bb9+hOWM9J=$&M2$d{YitEltB?kcmd6-@7`khcJ?V!A z(_bHSCW`8>-F(g763rToQUoAQL0fTWp58lStHX@H5;Ow;k`5XM`?dy0mDLH|cFLic zTh|kd3ix;s$uA~V|4i%~?)IKbO6u7(peO%ycOl`fSCu?zAd0fF0buQRcXsBYE2Z*7 z&Ol=6^uhCs%GxP6Xo zh5X`H{@rbb?)rH>5vhJRf=-T~CET_zW8*ixTwkXrglANItid)uKVc3EFqTmEl7AKB z>{KTyDcPH;QVMPYP!2@!)FwGSeaKzUaQ#~x6m2%=%Y72^av$qO8mz`qlD*FTF3-

b1=wowAAWvb_4P#uje31h*dm#Y#zFe*^XH$0RApsn zKoaP}^?qMtb}wwEu&(PjZnWnwEiD1(RlM$Ld*8zw8|0P>xVVxczsW7ZjpQ&5@29d` zD{<$IS_QV&fYKZJlG52a1eJaYNh9&-7ZzX26C-Tz%h6~RoBpUW8jh#64mm1NkIh$f zmBq$tcZa)w)?EDJDghm?k#G2dSP$r5CNy40N|6$m!Kt+s@wI3+F?04?QtcpX1zo1U z*``+*`*kup5}Gt(O%5Sfj!lzp$ps?HQKeYnJO1cYw5qckuK?UsOjS&pOx8ov>`}c2 zVDzmeH1-Y;PrRD|(4{2?hgR3F9WE>^jE$igGc!EiwQXG9y0xWFVXSyKY!S~wPEHOw z3bC@b*42HO?-^C%_u9iaoZZ`;NB8xO$7b_`%~C4oUqcmxbWAkGaa3H6ONy?MNPW{{ zkTy-PH1@td(%s&4Z?bcUW%Sv27DoXp$8JGG8NoHWCHtM?Y}dsDGGsfIM?;dNbMZI! zkHb@$tFK|ek_Rda|!;;PZe!2K(=PvH9Kike7*|Zsyi4C;Q#M!Jv-L=X!joTZ#~GPuGt@pC@b6ed5&u#VnSQpHO@q zgPe*w^S*ZuJ+u?;$ono;+$f|h$n(W}T(3(JJlQsr;u{`rz5d$^bTsW?B_-WhjjIJ! zIANTR_qPi{dp@@>U#KX*FB?6~pYO4))ZLt0zeiWs(BMY}PC(3EL}rVWrcXmnkajFX zpQgTc2_GVlBxzK%(9Q2lazcFp`U&j}H2+>vJTX!?^X7@eF<%4)1U$7ISNFyrc5-rZ zL47baHMMn6ygjho)5fv4RJv?qqudn1)>&Wg%S_lT7V(6Vi0E0b`N%}JuUcu!_DYda zLcIb74b7ANR?MYeZ*SI7*ZF{+VXaDHYw<>E!4y(ObJh8VdWVPP^iMp~ z7{GMw2OOrXe6*dR0Ggy3Y8teIDykHzBz1L7_FG1zl(e+^4FUB%Jv~!XLGeGf76$_{ zFkMk`2iU$fyb&d?d#DLgK_XFaqf$}p9t2Bjf)D|s1!$JSIA+#1$oiu-de1o6|EbQ< z4t5_W2uuxuicgzaMhjvxw^c+UqHm<*l^Tu9;Eh2(K6p<*t|W?9j#Ml@t0W;PW#WP= zfXSjTrxx3VpeZ?VWbrxkeHIZ2KOCDVD;xU!8NQZ?7l54aZo5?qouHz6d3%$;20*tx zEIsi?c6I`X);c*wdw%5;AEeetmSkEUlYdg2AZ51-OG%kcp`0a^Qgh%(D>P1(&4`f5aiSq%DS06?ATOk4M81{UZC%B*7yiZb}U@ehXv!w`7M=2_hjS%~PAc1@N^|aasIG zsi+Fnro|)$Q*S+BXI5YF0aDQF<42!Pu`m=b(JYlCdgdM5#>~+++1{q1nXP75d{%sL zALvi*jEszYXZTJW8w|i` zXBU^x0YO1I(SGSocEXI5S9<#L)S^{gpa%m$0Xc}RhUJm3Uf%&k2?(@{zj*P>ASSY` z?B`Uo!qM(DsSqg%J-s**A72fS%ydd6Wu~)|9SM;ZL!Psc>XC6!JrXf%Fd+nEQDd<# zNTtD;)U3Usu*JvEe@9lJmdJW*VI*%>1{5-wOt*k?F@U;9v;{sT*ioP1gMxEj$tvJ_-C^ z!6`V^gCS>QCLIp-HgRtW??Zo~ac>L)l?>V^n48@uIA+e*{A&ch7qQOSHLq7pcaFt; z@LL+SHQxVyZAl(Zbq5Hvne>++Ii#%N#6z#uauq$o9Y4#35OQkd=LCPTrw!9ser#hwh@6i|A*S!UtQ z4B96U)noNqxSoQ<$f+Syu127c1M^Xplh57FA=0TwfaUH4#9|vUU=6h8)&(+Zj^;r5Y5cF&u9E19a3X+mJ`T5PA zTH?Uj*^TUfkdwmfne9y$uVG2XZFxn@Qyxhcs3v@|Fn+UGvp=zLii8V{?p zwY10~`Sp_T0tWUg%z2FBgg`vxXxav7#SK{8{I)(mK0C9ZZ^Z7d7AS5@uDksjXAJl? z#@Jxr-~7+SK+g2Ns#~Qw5Iyvm!-9^J)3#-(I9IdvVd(n377Go<1!zBrv#mJ6gScS6 zyYTW)zTn~D=xS=R1gt*;QD#KF=l7tyHiyOofigbd#gmUQvzJFpPAmtVF z)y3dBCC=GqpFII-8xNr+$OsL(O}q||%yK!2&XFE&=d2IP39%tA7eeFSilaVG_!0mW za`}JI2|yC=GKj&~(z4%4Kqm>EpLQzD9yH;u?K^O@EXnp>OFQ!-thmE$U4Hw?h)=;# zjNXcMJ^k1DoiF4gbnnl5te64cj$+|$-OHC;8ykG~3Ah@RRr36RWtsu+p$hpHGarmC zbY9TmAe69mY$@Ocd4PkM)mE2BgOE6e7l)*;G6<3CmI1ET@gpQ6jV*~s;78QCfm=Ld* zwjpfOe-tV3;$`H3Wwd9L#z^WHFM$qG_R!(*Z2!aP!R*&j!x?`*vF&c0u;PwxuN1ao ziK}$>GnL|hFB?5r$O(%03-kxyD6HEH4cKIxS=+w$(TCZx8Kb34mddvJTjyo)d=R z()R=X4NgZa>FBsl#QaAosayj412=rj=7DANr9KAz0qMN}yy;dI9-O8~Chybk9nj;@ z#)putf9b7szg;xuTi~9VAkJ&FS9&4*mZEcCa6+!s3LG&1^_BPd_dFT)f@%NjGUaD zq{yB6gMwXFfM#L!8FZl7S{~JU8zY`77#qC0(4PwsbcL>2p~gqN+yh?y>}&}}Lb>Vs zyW}*qv_k)O0|S2FSeUI-+4(>o`0&h&p3=Azr`U`~2Q^_EXq6h&Ixbt_`*g8HEV94k z3pxJd`hr1dHjac=o$qslLQf>opMmB|eH(p|2=P{hIEjEIQPUBJY+Zweys zpFh8l6!}>ZOs`b2w1j^TS3s<|v*9&0Xd^U|5sssSjgL=9Ov-GP=K(Zs3tT^fg-1o! z7G`&lw=7pbHF0S)1c1f_zQ#H6oTV1xp-<(2t(xwd?jHRE7^CoRFM?}*g_tlgHGqmJ z;Ems|7eoG9N(!V?-9kmBrJ^B)od-y`6HCvnh|WdV5BO}nOUwfN7OargQm*q2?^Xj_ zOFj(j{MowJ!I-m#jErBoR%yDG?&vlf`)X@K+W8lf$>a<8hcjsbteG6^`GdW-8T+6w z4ybcpCN&3Hl9MaGBmj`$@z&bLhGM0Gt+_c?ikGM7oC)NjgL=gY!oKg(}>*O zRpYb@eQ>nw9-%WjPqx;XSuWO0zZapA5oVCyrb^DqD7lRnq?*6*1#l|N8U-UQNqA%zGk2LbvZfiBTD~`}yi*Ws&_T>r1wT!LuJ*ceMm)l>H-B-WtSP%q(a~ z^5Jx~Wo!|XX^=@`6A*~sun~$<_w)A?O4Jb&5^{TyU}9_nHv%8v?E@O6D@sb*32TMC zd>HD{VnXn`G{vv8u8v}9;5GqwkU*%AeqelRkEo!aARpguUwa(zw3!+k84)%AE|wdD z`T|HvN$b&1baHRRw;Y#lpR=p#79H3YWW|_=C_idzE6qoG4L?;MmCjm@Z8-Ps#2;r` zJ+(eG9}V@m9>#fG@$rzaYJYjEC1!^T-{#da4Z`k%bx_T(7sU!|h|Gs~?qOp1&14fg zeQQD#@2mz9URxfk&n|eNaTC2ti6Yr>xk(a{Z96nt2-ONeAc6|+J|y(RBZH~!;qX=_ zKSOVn25a5kK9YsCE1W^|2>}6zWE0vLtHiRVY78|M%|>J4`d;YffaQit>VOl;-2Dx; z4FO5LfBU_o4X5!~}adG+W&3&w{ zrZ3tt*PZrSIsmt?+$tBB)!?(M07&s{4rS8Y+nAl38!prz>;X|to?@$DDl&TI3a}>N zEdlX)#_jPsMJw2Pg_>us01|hd{r$d4pTPhVc ztAI@=F%aS2!`l2mYO<;TIw*(W%=%@|3O0O_>zz-=uV5_+SsZLhjM3a)*m!r{s@f^q za1s)dkqT78A9CBctl;`rl9tuhQ!@eJ5~SF;xBye2hvB8VI;lsEu_<1TR_l^zxLtl; z-lW0HPh}w0#>2yd?9T)+I(JtmT-C7{xe#GZSkp-Cmxgv_=v5FA5p7Es2Ejd3Uz<2; z2hzeokhs!j*4XQTN~N9c=D;TCukeaQV5H1)9dwzyw!dv5_4*Kx;CQsyIqi@JHj9DmV$HF`E4_U+%3m?m8!kp1_7?Efnu@Ra3L!J z=it^fH>ygf%QCCB-h4<{m=ch4rOOq_h=^RKI}&62Ro^o+rIN%v_RtbCGJq=p4-fC< ztA$sQk*@w*dcBz%(GmfL-mOo1SFc}piTA;u)MI7!i)OIBuJd;J?efIL;mV&w{JG(J zZS^LQKNT7hauX5h_wV2E2nhZxLyPs4Le|?0kC`9k<>!<6su+hwMO7G8^PgftsH@+- zn@c7V6eQr2#{6(`))eFhJafW>RJjBzm%kj=Y#|j%xPoH_)xcwJ!Ae7}S#2YrfGI@e zwO`ATO;daQoE6rrj0HHz3Fn+3w^7Tlj>w-e86o44gh0grc&t<+pc)^ zjb|b^P32(UU(L)vrOC*>890s?XvGic*7gJ5qhCL6u#=xam7W)*-q-cjT=vVwsd#bc zPb7y{l$%><0gD^aJkY2?(Rxzo?N5CL`r%$)8MmfYFq2*xNv z*L4(2HfFma4V6Ku);Ylmx_u>N@%L44%evu9{~I^vfr6$=SY*sVK7x&PaYOc)z+jM5`Yu|$e z3Y{PLLw6q>xNMVu28VAq0vdusYGBfL`(Tq&4|JdomytgX&bbn8*9_zq5DX!9{vYbuz`V$6)rBi|+5Z z&!3MWgMW1W;&l)U(vcB-tC4U80j`X~ffK67UNTcor!TJnR@sB~d*^(tQ&P^|<3TOZ=;j{72e}hahW)mU+ZPl8l)|-D?<*gM3 zWFSzm)XHWH*e6U<0`f%uYes8-26u>8)tsQ{_y4sur=}>-Y0x1X8J+g_y(*LKj{yX| zf;S?SX{mYztznO-FE)T@{^r|rkT}R`G1Y}|+@H02%48H%9RJ8r^qqll4nFwuZxj^_ zol{g4DUumm41KCAvc2CmHK)A7zUh?XJVwCbjd4PLYx&RKKn8>mRMsEN`Eg2~acEhr zuHF1i^rakNkwP12-`#bFQ!n%CdgK4eoo z=d1GFB_A@4B?Ny-Zu^YwK}woXtgGA7(9i%d8%GBBEnmF&sILA(LSpRH$V@9#F0hgN zAefz*NtY7#NcE}C!InNueY#@4-v;sPc-RzTH;ldVEub?D7pv8ln9U2m4pfd8b-IJ| z|ME6r)dZMIVJ(8@cM8AM=7{jf*Yc7ySzV&iij0gq86ib|9}5#=-`(lPc|+Bgqp=RG zU{JTH_KwTh)ipPy3HI8J_XBxCG6G4G9PUU+C?!^#y3d~zQ*Li>1GQz%%woH!uLxZ6 zoR(`Ze13#58~K$xan9~+_8KsDbf~KSv43#b*xH(9MbCKAmKPAp5b-VRWqKvcfnyV< zB%dF^x7t3@8uEC#t7iW1?Bp)B8b4ceD67Tp+~c_4Vl*17{x^;3MQ}@uylUIyl=imf zWfUci7y67q*HT~(vKsDka&Ra}5uLzA7o`c-mvwW9m{N<{<_rA2(+P>YTGG)*FhB=ZpCP}=BCB*k+qA# z_@6(%ApxW`G(+VAw@c!Q1n$sqZMLQ~HPPtJ+mR^oGlVvQ8&$c~y!?Mz6Jdl7bf;8v zY=QV1t(7VF631|4e5#98ihffq{REl@h$?7JPthpmRSgdhgHU}9GQk6V{SFtRD#BWq zBqpuak9HsPoAxV+>#+FmRW*Wy}(CV%P83b6StMs1$UCB-%42 z5mAFs7JzsB*5_{K%1A}!U%g95TvWC>#<(1ysRv! z$Tgn$O#lxcW-O=G9M#=hq5^^`z~1=!wFRimxH&L+moHhKaHO}FP?sE8?r96>eQ&;3 zpL-YRSHjk6ul^AIAaYz5YG|&{lz!dl77#${^aFy`iFhk9+=gi$7eFqukFHF#fxK_g z2#TuKWy{|6XsINS77z4ET3LrD#?^@JcYxyN2{Z5y@gOYIW(gmL^J3{K$3h*oS>&VQ zj$9hM;T*MNU#WXph65F)j*Yi&-mGhCm}`%#t+3s>FGC&1`c z0V3fM;v-l1EZO2u7=9So*g~IrFPi!V1qFd%r$`XZD+!64$jAV|RRw6Mwtv>2gPzcP z8`y{YgMM_RuV?vABX7|A=H!M!zWLVUY`>A7O>WtsN9^s-cp}Cvk8bvD&3h+(J>G4a zZ+GW2sasvCP(oGgsqqLdIIMUKVx$7zOKQKrw)eDKt!>nU>fH4;V?e9Dtwjafh|VOj zO55!>ii$%uH5yGJ44`+r$#nDMM{TW5P3-H-mFg57e`mhOf$q4esZ=02!Y440jO?|Q z@164kSaxq1Xe)B)$%~lRqE(sq+8uG0q4KnaB~3$uXrs)D*{#GxO;VI{&1QKJ zp%4*i1V^MJ7r@WijPY-^--l_^TP<|c2nzv+Wn)YzZ6A=oVJ{5cm4D7@;-Td2MQn> z56tBsRCzE?yx=c+ia@%s;Z?PT{{RZK(*D!__}8^?lG7vN!r$9)9sfRhQS##a!8($v zhj2Fu9bis>1in6bc6X;Qnb(>{VQ_%ep!>Uny1ttIN_6Gj@pp}?UrgN`GLat9|NC~d zHd|Ot*#f(cv20s#plj!25;L~5oR}}kZ^VX0anOt2tAl3z>ztygptqGR*Bm~We@bXE-SPky_K3iCqy5^J|H%wu5a3YI z|9PJy5;cUiZi)WEWz5a?BQ#e3wP-tdR2TV`pzoXHEGqVTgw$i1*P(~KxdN?3;;1?! zWqiI?6v`RIX3tdroq8UR0}+HJ0>w|xI@h%v8WI(bxlu{KMf9bJph4fpcxk4>XxD7xHTYA{th2?-Op8fH3=(_Z(+J>p&H$oFt^s`e!j zpi?SSS5;+r-xYfZ8q0G@g1i-Rguerik7SO z9i0sMLOgCeo23#^2oc3%wq)mDL{NIxX*tMz(GHFQ+Abj0JoDGD<#mR&c(pvFI9L~!BPVj;sYd`A z%a<7YgvCu&c#^aP(Tbnm&Wef}aVlwTu+v_1+6v;Uh>TQvos_z_Hz)P;$H+)WM;VRP zH_&xG6AA&!`_zLBN5Stdlu1qyg!`rK7aRpHOy|t>)TM$RhM5;itfDeag{ZQ$t2c*KP;WVt1L|fZ zhj~=&w=;*+-eif1h|Kpcuj+I*(0@H>LzlXsGxSrQvI8QxM$J#CK4CgO^NqSlhqt3MKrKT>ZH-zT%CT%bJ;p&B z4QW{vsMq1)fh&J=X?T9UmD_r`+(IE=_w{J=V$D4jkh`?8UbbuW^Dl4U^d@lX)tH9w1lem?w$SdA}h$^O34|o#RSQ5sc)Khcc+s;CZ~{Cl)N7= zI4{F@-m+Z2GfsqH%syOAIMK7o@!~*ZT34#q@_7b&?{o(&s;XjHhO<=cZ(Dc=Yn2UU zD0p8-#py|#?#a<;1odXFpOXo`9Mnv!)F}%^+lH;rPJvbrw{3MpN=sb>-uI;M?rqvP zhpv}Mzwb`%Ue@cOC?{Yu&eQ9yjjsaPU;%=rQS!nJLI2FgTiF5sRNQ?01!N%sLs3cT zMwc`%uiB>kRxkai{r>XEu*it@yaySfYT-j} zT@m#$v=G_)M-bu09*CTjvg%1Cgo(h`ms=_z65mi+r*Dv4T+dRoo}`rDi6(jRtixBtM-R@Ah2uC9kPMlM^>YY2 zihbF8^M6IAuzZe=HpBJof`xl-=R=nKKlf&(4gud1ZP&Ne=hi<`7>#Gl7rBiHvPOp` za0GfH)#_iKtscg)11pB}{PhrV!o!Ca>JI}OdG9UsvN^v12>}B%p*iN<1*g`$AkXt+ z72p$ws6z*Ik9ZIuauxPA5`>k2`eXph?|tRVU@CM#n`$`*m)1Z3fPp*J4#9&+MBu7M z69kp$P&t=e2j__j{RJXl8zg~_AUD^+0w$pB;0K++`IwLyOHhMDrT14=t?kOcd3F)o zn9g=ynhsp+f%6}k6i#WegtS6`g((0HobP}&Q6##{e=)kMJDw00`4KO8G{y#UezUmC zNzRETjRia9c0L~mhaj-SJssC-vw;F^13!a#c{OJu+yQ$8s8hSjw+o=#boM1vUI#g- z-9QQGM@J?Yc19e>9JH9L;vB|t4GYY8L?DK7qZRKzOaT<<5Wo~O>7bQSBxl}Bl#7Wt z#v)5x(kLCv086jCXG63JFn%01tXnX>M$8M$hz=T1?jh=hdyxicNXUifu;kF`2@LG-OXKur_|j z-=YfCLhouD+-dTSh&{0ZeUoM3Jg=YAc?{i|q$m&S3jl0k_qp%(OsZ{eP})8F;tvDV z^x{!Hn$po$W^)TS+4bJ*9q~_pzm@prcJd3r?u0RiaKOoaOUhwt^@Z|L8N-EdS_I-0obk8AHN$C3ist z?cxdtoAj=JJu6Glo6eC)rlrke%RR-Xi?&D3tSSom<66AD)hYf-AsX1SxM7<{`m1e3 zIJnrTHsgrE<7#hzJT^8DfYU%i_5S#JYoI&Gqmj$ge&wGi3WAlkwzhGxu^>4ZV8U_h zZP6q+&?GpMUq`8HY65{}dqqXXT+QZ+opFypB>bP9hevX?y#1IgmJ~}B9d%O3L~Xyn zmjn1?`MNEw+}xsDptfRRwU!`Q2_&g2=Nkv6Q>18lM->#X+yE8HZ?v^Re)ov&_V9EP zXEeZZYvn$sV9V7kA4q*oo$yHHY?mo;Vdc+_*b~CIlK@tKqDz(@mz3mp+${PMaOV5; zbS}%q#XsJ+%g~KP`~<=iLGBPE6KmkL_1zlU_WD%|zjsKTO6uy9v3$!Q+Xz5CMd|fs zfD(7T?vlSds}p3|9J*Z;xVZDk_vl`NHZ@fa;ZAVq@r`fY>Jit@x&pmdiV ztTm;yiXQ%PB>&oa%lMxrS)c6b7Vbs3zd2EyZV1DG* z!TMctE^5qjdeB;9D^QY0ZlvM?i~SLt&cOtkNUYjBkhf+yTtYT18hsS&CsmW8TevhF z@RJ4^<1P8WGWjONCVLU{98oYm=ebu>4l4ih-`n>NHhRN?Yq=~m8jXbLy+YTj_f)j( ziX;+}l2ihmOh9-W_^+5-GQML2p3#d78|D~+1Vi$%?0vkXkLSs3HPzFHPqiLc6PsJStp&f z08YE>dwX{ua&^W$J6u`$fXGgb`IsyVL7BsLFYi4*yQwTvUBj-)bl?(;;fOIgO;cZ8 zU2$seBPIF@QSu$J8x)~A0b3e;ossE~ zIXb%2RQ3IHEYXrD;R1=jD6V=NDL(%sEUsbjE>SrJ1p5s?w{)lW_YDXZd~s;^ybb#M^jj=s zr`Jsh5UXAKdGP0i@Vc<`Fgl_@9sAjjz&F!dCO+k z$vKP0uCu2h)i7zv+hU21n(1C8!+N!|jMFubu1(OmhM0tScxXsbQ5OUm^aqM`e*9zw zc!XXD6`IXIossE*XT!i?>dzkoHMP6<@9)%;N7KpWyx0mNEiPq^c(N+zX1l+uv^$#= z9Z%^de7sv54S){x2Mfa=TL(>IJkC(5Jo>eI_u<1t0K{qtPVuWWDSXJSoetN8`_Dz| zm;=!U-{d$OZtv_eO-xth9eBTP?9B`aygS{BRgsxE*^J8yY{-SFH!6~8Z!$ESqaNJ3 zliptn+SdG-tCjoM10 zX?M^$VQXV^;}#ypd`^H_!b%Q(<@>JW@6yNWv*dnEe?qn59Wa8-$o|fXF`7&Zj#+n1 z)-wvGBw+gm5S?@RneH2d3)ch(7SqNKab$g{lkDhhLh;&^whF5N*qky)Sv_at)Xv-+`FQT!@#k@9Z0H&=7*vPqg!@xO+Z*-~HnCE-P-1v4|2lXA^FK zco28{mdovyy6t72uD2#3#LL}~!Mj;3%QX=PG`kZM;<*D0lpoKY%ad>*%)!FXTYJEG zNs~WQG98vqb^S4JFxz9fY!~S11V)Vk;v?Kk3WzA|zk3DInkWfq0$`PJK7` zIxnlrCzNwkgiAkl=1VXG;_$7WOotnotAeuZOD#z6o>EC@@27Q2M7Gm<)O39zPfnwC*{u2y{frH#aaZal~no0_{ zmR1kKj%<=F5vL~7Z+tScihtU2mT)Rs&;t-Xa4 zdhHh8=_OfFDIFWuN%6Ksb6foRx%;Qub#_lN^yCHxE0H#Z{q1_bBCsq3$fXRElx{93 zlM)_;XFnS)o)tYD!ZEzzN0`&V%#_*K8LhxxgjKO0#c3t{vcPg3%Q;K(Lp`{0gq(6{ zitbyZCriMgT$nvjn*|b~2y%tU4~bq@<`zM5ONm-my7vGec!X#p8ie>50|O;Fz;L)pEK^h+7#fOis+*BtoZ8sg z*p!|sU9`$Tc)Fn&u>U%g0(k-9it(mt%G1;LImEsqx4smAoYB$ORyHRZZJ$BY%r3su z(>Jtq;?ykYX{&H;z=fj!+ z=8r4>IlY7XIiN>G5UuUrhOZKD4#Df8Vi7I5<*x5>3xQiImYbOUU8D(3-_-;v54XZS z?zM_wXNlb7mMh8AA1tUmJ{tVns2qmJQF?rxdp$4|AU6fA?(D1hmJH+1CnhB&>G)r{ zVoy#G1rsa|gtLW7fr;?KrY0>N-bb%1ooV~fki7LHug(jV(YFI>hT8@@i!%f7s*-2p z$SbsURkhR&WYYekCGb=j@HFDzOqAg9K^wjwy$76>&t=!8C zijN;X`T*iApn;teXf6(_UAA&Ayr~qQVfZecI|>4DVE>L~CM5+Yfa}a)cBDw7H%fft z0kiP+)yX=oL5o?XB=bcPj(fOdN?B8Hm+}t}CwJ=N`xJ7vpXqEb4X;nNfYj(fI9OO2 zm2f7lKcAerDk?x~W==r?yVXXYlsGExlMiD>MiZc(JzLjB(NxLS3ojsy{9KQ#@V?joTHzyO1N z0}Ug9I08XAGC_AhakX%O*&V11JrSf53<&oz&;CLI#4@IQ@;ouGeH-@^VfdfAyohI!G zTgJXxWMQFrAl2)Ny}3q!Vn?fTqz`JENgK*cro|AKv2r-v9Fr1~D4l^Sq`_zGCncp$ zChjMZ4+0+2rW00b0o_!?%plcnD0Tg*RP8to!-ijARrjk zin5$?y3GZu*3%ObUbjYZj#@7d13estfGho@ZJ-(Lz~%e!RBIW&_tpj6v#%f?$YbB) zk6Sx~xl!fgw$Bn8{Mr`=%6?CG^m}@4&|@_Vi-`tD#3oYP$=tbn=cT7ti)ECxehVJi z;ZCRb{PCV1VDs9q1j~bk%L~1lxcBdS;<2TQh8Ku)?M?z69Au_L`T&oLKB%PA^+pJ; zG@H=W)lDsrR2nSMe@q5oC$;qSGWyjov_>8Q_>k-88|=_>Vqo!xMFfmZ{KdYDO+->; z*DN07`=^kMoQ-mK-h29ZrN-J(#+EGiK1A>n{U8D@TfDhPdTSCA^Tw7&0HD6O-SJ@| ztwMpI7{Ghw_rhZ{8vnJ#S<$N?Y!3Zr=+F?e}Jr z0=4KGKk|d_hMJnn?&WP5a5n=IVf6o1lOZY-hB-(qK&E~@_tyYkMWJlW*(B+V)D}=KgmfP+Z zJl5;6`dB2=5#UCZRQ*I%;#c3GPbszbpsg$LC&1Y5J6(}%Z5Zr@y~{P4$y0pHT-?Xjcn{RS0Nc7O>P9wZd7I-ZT_r521V#VjN&}~_yJgdb}G43krpFcTU)+O zE~vO+VPOC%P!$-?z)R=1DkyCMAS$AwKrbn5fbX3pm1O?z`OhiQaBjIhw>8&IkcXH> z;_7|>{{5|`Ve2{{BGE7wUwJa2_37s0)!Jxa-@bqU9t5KZiI%~}jTGNi_G3vo_5M5D zLVR@f0t2x~fa_LNo47*4VScdFmgG`gY7McO(&g4S=a2nL!ddh|XN4HQ*+1C% z1NkCrfu<{?PSvj7+8yzs(ncm}qa|kHGFr`RtM!%+F6mD>bR>c3*2r=#t<{RQD|mYZ zCntk5y0iTofKO1&3+t)a964jmccpax;bkL8ui&1J^X8fZMIakwDX&4Cv24vfpmq35 zM*s^wHpe+PLsg|yN7NlKYdTk_DBm!3?RS|Soz#%rC0oj%s4&G33|p7-TpV~_Ay8bz zL?k|fi^{o>D&Ox_VHql_DDGy|p8;J#*pydU!SS*i%_0ds45$zuEg`GAl74ccOpT%6 z3@}04MQ_T6Gxx=_9@JZAL>`>Wm%l|x7~21)G;h9h@(DhkBCI#jX*}js!G=6~Zj0y1 z0qtiOuY5i#e9N9yv$mEKS@1>$F0PHL!mg*cGSohD+()Rph{ga{kT4}+C`o+thf1Lc zA^#s$m?0u5@!>y*EPjA$t6zZ4C8-sx1X5>r3h3? zXvMOw9>UOvp<8eoo`MKNLKQ&H-5j5b8!#pV&hv^5FDwHVJZsf~1J3_fn2gI7(aCrx zCKD~l%}OV`;jVgl=V0J4r5s+J2@Ho!NN(09Nz=ip+Ckw7qj5GC%V8fl=CnM|IsD%s|`${eOw9N4%fv zBCh>InDclVh)+SxI}cF-zO!*ZcEN32(e`f=uFQbl;?9JtT2f)gV5IZul zjQJ~M|0QH$8~#IJo*E2_WItqi#tYW_h9}>?an-p*~SC;7b z6LJGa+)Y4B4uSJTy0RR|noe`KTENm9cVXJDxB;)|b=qklcBjv2e9GA|PvK`kYphFK z0GSNA1fo-2;L?32)vNyjrt&u!sS|#rpam36AQR%apj`qzkH^JtfE-JZ$sD3Rf;pYs ziI#Th$H{3K1_VqmtqlsjN;p2um~*rH|LFS4u&BE4Z9xz*P(eUMy1N9V5u`zo?vQR6 zxt0p~;3yo6HvilR{A0)u z`2M?MKrGy?*rAmuBLfxs|9PF?r^OQsEa%{>*I)1comcA8E6JC>z#j>=@yb?@z6BWl zeT3G3PcV2l_>jN6gl~&$4;B8IG>}!6^Q`@K=jj)4cRp-%=XbvU9QAU<2fkMlF~Q`N z%rGj9KV|-npZUAff8jI3;qjR{-m`XiMDgdRiCfnh<$nJGUe%8byt%TOJbZ7pN_e{e zeYam<0B44J@D?huQqGUhM*kVIt&peFuP6iw7>?a6KlANh_x|6k5p@+{bfL1H@`EQ&*Sn?yz)q4jTi{g>dr z*nmjIAl_HFhsPrP4>Vzpj{p4kX67e@$8CMl*yJwqXyrbAK zPg)tiX-aQ0UJTL;0ypsk4{ZNLVgQ7|;LnMNk7|?>gsyOd9_k7waw9MPqkJx=;^LGC zOMq=be@pS-wbnq_rvEcyWB4AuEj0RbsuEX`K*7&HQ**@&0#4qE=)n@we?IsnO5idW z=xG)9Aey4Tf{QZm%I@VgnZ^fVVBhMK7r2_Zp8N7g7b^e{$bC-+8u7#^cImHifAJZi z2Lj~RDG?7sT* z+2L?oV2)?6{n5oZ|1T(`9~@H9tS3)tiE#A)(~2_I@UT;??q|_UbJxv^F#q=*6R*P0 z<}@KQGFZVxGi0NGbs2n#ZMCL9)7%R)`yC5_<0`aq_x_zD@Mao_{y$Hq7xP`P6|ZGH z{$uTgJ@c&mXDaxG;JZE~@S1K98N&RZyyBmGUQBt$eK0nfMjeBHP&6Cb2$!CHA1)IJ z@%Ap3)+p!-$-miX@ZMg`Al&zKmN|+j;D1Cezc;!z ziwy-d7aWldePop8%YTMA`#<;kdEhT}t)BaT!l(EFS8D#e+Z=qzvC~Tzla&a$!D#yL z;Q^2dDX{!KK@V6jE!)q-_A>?zM$8`w1m>gbXMb(qZXtyEf8e=faPvX-=`sn(WB%D$ zmsSDpAmn_4Pw{G!j`pPwfK=H-WqkQ-RNXw_6jnM&M&0|lH_0#)dH;Jt9)e3A-q29f z;r-_}@C|+uf(E;o(gj?jZz*}_(iQh<>oqUEJM|~hBpGW;3*RL6$#p>?sYZI03ij(_11Qg!J)vp_uuFarC^#2P`N|Z+e zr89lKvJ$D8B7N7N&WikyWB^YDr4`zbF1`QH(a6*yej`uQ$A3mYfP?;wUg7z}OIE|h z-unaT=NCb~b?dgA9JIs;0yO-hHk17CRT4mW`;U&fK8w!y`0?}S;?3bn$bdq)WSWra z>lU^)(*HdFXOcjKNL$A|E=&}NFPT1+e-=16|4P*FZ}B%`GBPtge;3r&-kwn|*lwxk ziq64@`7>M6s^YnRNjP3?Ss-rQczASmi@qKx=f)_HAcvF$zC!pPb;%!soN-~kfeHZ| z)3Ng53<0b>nMNSKGQND){yo#b;7>o#0(@!!j+rOCwe=etFB>NhUGAzgRaFEkabz4F z9mz%p^5SLR<>y4fb(~3zXS{e#~ zaiT;+JtH#Q0= zIoii8**j150+48aPvsx+pIC%=0d}LbLEzyD2TTY_Ng);9;o$)_@m}uFl#O1xnngLN z@8JRM|BCwm?5xRQEad`IURTy7#* zctf{->O;6ygKzdzjb5x4{Kq)vwAP=~0u;{gc|p*?(gwEfpX)Au1Db#kBDRCCq49fe zFFpB}>&fp8H)V+K-292F`nioX5ri-Npr5z9T>A3obo`XlzwQTLXe@E?u%r(l2LI1~ z1`){z*uVZ0mJ4J~;clwkuQ#BKy^{KSxBa>kbp~84Icpc&DEt4;AD5c=Fz1@FjV~kx+ zF0_bw4n;-?kLJf;gAl&*)Rk9$2m*U`R;s4DB$E9g3I}J)Kx=X-A z4>*9o5a@YASWs9HbnA|kwDeG%$|*a>w zdV7II_3}`LG1lXo;SFi69?RYoZYFgCXPM*Ue*RcvdV^6{kG;VNz8?*)WZejk~{ zkJlN|;C}$XY;f7h#cd_-Cen^Ftgr!5R>HUjU*bTnaQZ=ji9`O>(~s>_gTD_U zL??{$H9yDoZhf+QjAg~o#U;CI(v_b)c@iC^hNM{)9eg(-B;dVjRDS!>=s-4L zfu2d!yOi9z5JlL8Wz490Dd`ksjS`gnE96plRaVe&t^!AX;$HU<`=?LE;$qMHG&dzGo%G|46(_Ve~(0v->3iD&p5?LZbZqRr85z zPxaOc4U54}SwfcVpzZCoW9iMx&j;_Q*%I{W`a3}~5$&Vj(h2~-0OJ%eUK$aNjj7P@ zcISck$Y9=&Mk8=89FY8_B;`Uw3z_XUbek(}g5fg_zQsWP-sX2`u z(wg#^_N=S(u(J9@3)WYzOjE0{s`)*`6lue7IX zGQU+94t zQ4=tMgJmv?P{mdF-BnWz4eqDC7*e(4v|BRP*AK1wWK;4`F1>5H$B@4YO(Q;P>*f2w zH5(Y6_5@%>0*!TDtdDHVoOk^L0zyNfdP~cy5|CQ;z0{f-w^}=w{be4rVHuVADy1=& zv0`I$9UY>g-~+QUdvm?iSEMwiF$EZDovv#gOc-f9?ylXTf+EuKY&Lt<`>JJYlq9y6 z{kF~TteFkqMNJp7la&OQT8Y9q;z4~|pPNQW$k9k*_>tW>gQym^Re z*ouBP_!EC4PM4sFz}>^7XBVYLtHDkI%DwQn4*tBQZpO6N@%DT+j!t4A3qaz)P=o-ue57 z#X4;-xSbth1NL`EnJ|@BBjYUC{9uY0297I8e$kS}PnKC~sZj0D_LPt8L@o^Gt=P{j zerC;9q&=Mu0L{3~CO@$~dGhHzQ75@cnvIo7;f}1dbj|Fa0?!L+*DOs)#xa+$=5fAx zEDfEFYg{0xbD8gdfvRP{*smcSye8rj0UaRG_>p#Y zb`?|_JqQbH;(i1KuM{x#^vZX$dYIy>0dg=Eh9^7#Dh4*^%F+_(ZQ)w%*aC|8Q%*n; zKd)-x6R;7rwCd#21I<;H5`$)1H(ELE7KeLADoj8}YtW(y8XB6Ln+w)gV=#`l*iDV= z__JWsv!-XKciNjHuR_)lqf+ed-d27HMpHk4C<+ld++Pa@; zi9{XG4`8=KT`XH?4F!Io;U(scxZ0^WFBBsi@tTJu^A0#D8!(#3%&wvp75#rOEqwB-h4kB7PdB48pms+DtFeM^aUU=K@yvh zjmd7`D)Izm=BT@#X@0WO;pgXneQjCG7Ob89*@;uj`E00kilj<9Kx&k_pC*8;H8Rq{ z@v#<2CmsN1hSfp>$sAiA$k%skV`YbjhvHt_3tev89Yd|j0enY`B&qy55diwg%)$~` z0Rv>k)YPNh-7=6Has{ic%@s_J!w-1eYWO_P5A7E_#_?M6qVj7v^u9h}vAJnuvrF=1 zN1lu$2vXL;39Mg!PqW{X#9xMl4)kmv3-D?J{4u8UuK$h&^m|wdfkiSure`srQ{U)p z0+NAKckq?4lv=aeosN{b+@|RyT}`!5qI=>|nSF)>IZj;!^O?))x+g^p?J5UetKs&e z#V}HHlPv5{#IQO}hqc4y6^=U=5qU9XCh1F+mgk>)b@wMvMFLzDA4cv*YPlqF#g81l(ARQT;4(qlD8#=xW1a2Es>!zUY7=Un6!~yaA z=hrBflhs5kcFX;^2VXG?Wi>NRN|v{J7n(o2-TUsaHHgHr{u5C%qq&vG!_t0hd`iTnOyjIGhm*d(Wz?j9a$GuJuAEif^~GqN?|$0 z+PbFfn-!7KrABel(U8V2uGPI<>gS!h6wh;A_Cs1rz(~$lxARI?gx~nAO%?rkKD^fC z%uTN!wv0?m_KMqf_6@$X)zNP?5BGE+soZ0`Ne0aqRp->Fu0Dw)0C<_lm zQ4)CV6c=lGsNmzcQ&4t$j8MQ(wC=brKH;=oG}6^2X?&@x+ZD?}LgOvwadNm&|MV&x zrSC0hIfc(+;Q!Sm(*2~sEJ6eHD|0buctfp_m6DQ@bD-0x8)QeozHST>^S;;)%iTcW z`pRneXS`rz8TYQw`SUb4SHfb|W#ha?cLc#8!rK+M7jT2g(e-^{r1-OP91^(~BOB z3u6osImf$Am{acdN3-`xNPZ}qbGB+;z50cI!Z{{7DuKssbpaNM$5U+Cu}okO8z!~P z(X;%V`QpdC#qIHA;x8UY?om5cTR!>jYKMZdvM;wI%r#7h2Koc8*KPMXXswO`NI*m# z8o@9LiRE~8szJWNT(3|UC??{xTZ#E#aK8B}OF40gj@qovYh#WM02A(&H z$1Q=IuUpuRjEtWOiuU)nUtq3#T@x0*R$;k7jREM8-b?4519ac{%+6A49z@-Kb+~6> zK;fFz;np0i_MDfRdKqXypxwfUFaWS3uF4h|Iuf~~B`NjZH?iFhzN4scfSh~j+L){j zPanyu{cs@O7`!eV^j`w!!aYSPOVnhdGCVUg^Vvs+SUC|h={R1xd-hH*db9K=xyED< zLddvWT%2|>tQYJ*^HdJ(JL-H}L5`%VtJ(P{Xo4wF-_R>N`GnThAv5LBlEKM&<}t2X z%K*%E)^bMe~c_*RzAQC!|gD8eElqg(0UBZ4Z0y(a}>6aUx1}6+nD!JYc*QF-wt6O zxPh1&iBiY(Dk@RfU6^|;jb(zC6l7#AIsUh9XDcdr3@QwEbac=`P7MLWuZacy;atq} zV5V+7kH4p9Hu_V=Yc{(k{I<3^IZC;*10`wMpujo@1zBV0{`DI-#HC);<%GD3ftqnp z)$)31zTIiRW*;;HAfu25r34De!uU`eOiZ_)6==>QE_-;70!5R`N;D^vcR67a;_rgk z0dXm#JYRf{CqloSDe#lk`4Q|d#T;aSIks5J@9aFP;K9e2&?fG8y)HT5vOCoUb`5`- zf=@nknYPbzthVjdDhjbgqSK_>d$7|(C4JG_m|0m_$vJyJCy7s;y-t^O5qg!S`;E`g zNG~NnKfkxHsGuaY%wQ9JE+7!vAnq3w^ggf?72M*m;=G2sWB$1=g(NHRJ4y?}wQY?u zj*?!93#o|HDn|q=WSQ_HhKHXf=wZdqn)eUT)PDO$jvo*sAx4pI0_Yrp;q%%1phSZz z!BSjIj2B`wm2_HlL)6`U@^EmVM$&B}2Au`&quPq`TYM~SamO0aC&m)*-kL z9~fPuU5OsTiEc+!eB4!NWuJHS!w(ZMXMm2mCc&o^NOW{`s$~`${1eO*n9dTX)LEbn z9rC_xu5&v<0BY=-2P9mXqF}z8oSlCS9gAJNQwhNAMVpU|fy=1{(F2 zF6Opv5?u_4X3mK+0U&s{o7b@+CA&d_yM1(ST+KLdIKf78lT-vVI>lOl$wHBw;WObk zah&eTkQ)i0+>N*_1XzqHXb;1xBHo09VhFQ?PeHZwd9rCMO8FWRlJa$w);7m5F=bGj zUQ|*N;Vx+L#?i^Cv8k!e8MHxKTV2%?k_8RlKodH>)Zk3Jm_bOF`nm~F{9&Aq{jEZ*e^?Cj6kpz{%>I-U*u=W^+5hKQ?YaIw2S; z4#`weQ*3~ZN9;ck_?-`BegpYHbE>$r^xD_tu^C`CAO&cb-7!Qs+RPHZ3%q-UNxs^#a#0fPFS2`6X zBqYc$_0%*uOt~o)rDf;1I6At5jyeGk*`d3yLciwI(bC?em!ozG!sD_(tvpJVO#UVX zic-kTOHBq$b{2bpJ-#LT1C+nG?5)?Vrn_}t2`>SUG0b|=QM zXg{29LdifS3YlC{*fm@OkHrJPLeQ61)19MYLk3oJ;<)f=CnWDAhyeK_zPR&#D*Ajt!xe`S}iX z(|$*NRl5%r^IynC$?&l6V{1jRn@(13q4jq+cenR*v#^kGbJH$FKD~W=ta#<6o?g!V z!1n<)HVdWIazOnjpsPfb1;kbE6+2kT-?;y2r`A?;)NG*ib#ij3Yn4TXlBt$XP#ab4;)Z^q(INXcLXHb8Vz|{e&VW-@W>8Pn& zhnp9@jr*$UHBQ#bw8%7Rb)UE`w`+Nr2M5-kEYtAu@i}?*0-}@vk8>UX5+_efLw66? z5Qk(f_t%|!CVhF!yZN;~YaljUvO{*8_C0_e<8eUbLmA@4udA7{N*4z|8c}N-umcqS zp!zo8deB`OoZ$~W$#rK(G$RUF#^>>C?3PIT?yl3_AwTAjRo3YrvKt?syw7jRJ*ykc zg>Dn=(+|F<<%g#>FU}hHL7l*_sF+4g(>LDU(BCiFkh9PgU-;?M2S%r(14Avx`3h{2 zz!)PlGsySxr4=tFIcVtB{KJ(M+*=PG=NKj+XjJXSbDpx6U0VnEN-V61^?>LblRdAG zNmo}Cr%oG{umhc)K{#N()ObqeMswb)KK=adGk0FL(!Efv4;%(3Hod#$hVh|9R2tao zN_z%+DTXQO(H}k(8;x`}rbf()ZdJHa5%Jb$+1$p!=u52k{Q3r|g*4m`*u=6rDIr@J ziH1nFs)Y4jYVMAAa9NY2s-D*zqXipnC73G4bJ$5*WMH{Wf-VFx2kl=I+)n_5%~J?i7>{GHID-FBi@z~dw?(iOL%(jG1PV%ai zTAc2LN{2$BvyI}y2HylxfXP7NR1)&xgVplR61R6y0ymMy;>rq$V{~?QTC9zh5D|Tb zuvf*a)ns)lkj>Yg*L#J9-A6$|DLdLt<&R%ZEu=!38%l^w;IJ!x5jxMZP<^=CkK=X> zI`J$=0oV1gzu6kJQLZ~H;h|$K z(L8m;^JI3dQer z2E4HRiIPaK@=+`%b_{Q054m6UNlQ08IbF!7R#0qlxq()DHaKQkX55!%zcvbBytXzr zE+?B!N_naypiiFj?lRr!f$oyP;cJ&)u_7r;OL&p#kb_O=7Sy0amhYv&mIRcXds~vn zw{1RB)8o|6_;9)o1(b30WW3O&nx9v!(`|YVt0@zmsVI~XDC4p><8wRe-&s08cKI>| zx)i!DtT{YnHL*lZ68jws0F{pMVPT*UpF}_K5yxn%1a{^aV9fdAv&GA;x>RG_HxEbc zHdOR^ouU8_juMjqc3l1}6mSy(f|ffto2MX# zHU^NT?LJfqt?YFUn2uN9t9IBgoztQxdZq5y{}@1_f@D1NejW4a9@J+-Z#`;f*SaFA z@$R`(IOK1oE%{jTp3VYl(+PQxU{T`SbZLB*y_S#rQ_fPo>{_mlOARVyuV_p3=K6iV zv`*fciaKuF*Se;;du}>GO?5b-BoT@}K(HIWPX%Rg!LH#r?hBgaE%zA8ucOsEnXLAt zsqGa&pyJ^u37d8Dr?RV1}F4=;w)V?l8@|06Yr(&;I$vt@1C6i_sD z?v|SC%s4npO=vJ_35fuI&{l0FP4>NhCLCacDGbCSYXTU+EQ+a%z-Nk$GV?QAXZ-G+c&F< zAakvU+t`!|iu83!J->-fKs^A`19*N}#tBK?bYN}F0}v9ho}5-o6LcMqWrQ~+`5TD; zg?S~mBbQoE@!BqKkV{1mWG~Er@5zu$KaY2KG4IxgaCy})B>Z#|V!YvVT4$R*A6UD_ z{+P7yNY{v?5#|lR#X<=Ao=fR_QK<;hb$~MgsKOkxqD~gAdv|@fqs;zfAb=40$<=2I zSnmo0@s-oyP`j{f{+9yPpr>aATG9y@Hi9+fxizTJgL}RoZ^--w(M@Z@QA^IBF5r0} zE#=VA5SzsrDJ;=wo{ZR^y}U|`hN(?>>k?|{A{gm~jw(M*2=Sd4(!aRp)_u^yM_ODm zL#`~Z!aKFr>!}mkT*$t;wh?7fLANo^u!O(VI=L9y^%v3)QvovXd^gE!A;!-m2FBdDqqN9=CGU``0ptHe7pyRQ>h5JA0Yg9InI`@9)EqIJOX3!w8>mpbZy^f7Q77_D{{h6!F@QF1zm%|- z2mt9FhP>$e1t@Vs9{w*1`6mU-64S^3L7M!6&jLkW0FqZoOGyV+Ik05>cha=}c zd?tE2G5~&TjwVsCrm7!8a>w2TJ0j;n-k<>n);`gp+eI=H@iuGkKxxnQ{g-}VrYDQ{{@SKq}WAKj3>Ve{EXjJ7`=2w z;sIj+_C*99ke z1ZG^HqqiM?|7K}V?*D7Z=$*lY5LATBOX>UzAG1FBZsMJvUjSfJLWomK-|yv=7xt2k zDhkNe$mQH!mkxa1ncB-6@b54y0D^B}P#e!n09EF?mmgtwrFpuhTf&CXcn;}nCiXJN znU?RsfB>|ALD;obI|D;g5mGI*VliYnV`b;sIKJd9^?HtiZ-eY?ZF`H&ex|wd+nvTf z7x+Oz>G@EuVcifGE!0okeXY`hp@vf{OX7K*mtgoyGIiBonLOeDWb$Gt(hWLBrKMxp z48Nl=GvZ8cGt|samS_6&Nf)$Ma~L$-{~W?{^7MMEm~8VG(4X&Y{9H5c_?yq}GJAWU zc6?x%LFx+k(plwmh3qzC@;GrDte(nAD*KniB*} zPlyMI7`^})!3yLw z%C6tWbz%{ z1NqHsnsqwK=QStJZESd;C37B%=Iu%>Z6Kp!`m~~y>U4h0l&Gkd01xxvP(6b5YUp=X zswzrr7 zh5E6xVcZpiS$&xj(lj(N<5C<-*-UmvIUxGnyzwVH*il3OI#PMNFEni+OOAnqYSS;l zLGM{PQj<@RvoPAnT3)^on_|GDgFf>EU>Wq)l+Dc6NL&2OcweP(?9cAV^d+5*Hb-q2~PzysOQ)%_psPk&t zBstGJI~+Uio77MPg?&~1t_P>LxVU_LyK06@)GTjGtOQTjCz>KKXQk1pwjHYHR=x++ zCEa)k27keiGA|J(3nM-RUxVuu5gPaoj?S|i%sKlGjE%`M7nd0OI5GqIej?Fugx7DQ zK19cH*=)5*^T`Oj&~iPAUs(D9qE6D>9PJ=&@Uc|IZw_<>-)e&Ki9x;Gw!X)p?5#Gp z%8DhH#>Z6cpkv_e0;49FJgu%S|Y<&jg1 z=PcM);^mbzUfkT=T)qr5G%^|{tmC2wE{MtLjMr%$*X#aU_Q$$u9t+vZz;_Y)VQj?zBz!~cpG4c6c!g0gzAULj-hGf zyzI20r#-*GwYJp;KP z(=|>f-dOkZX$%YuwzET*#avwUV)N1Jj#FfDCXrfXHcMsPd+zDeY`Clznnj9nTslc= zY&pK~-@mxghN%tf%niBs9TJ-9CBkve`HGqJXNCGGRei=qKEoDHN`Zzip9b(%m2_6y z!k>Vl@{Dw)f_1e&)kl(TNAVr)&4l)LI+M!5i0doJU2^Dbtr{?H5z`EIw zNE5{G&8#*#@3`&mmI29Z`~}eIJkd`Ud2BvN;s&6oq%i_gF$ev@YRzDtnF7 zJ{)Vbc!l(8@MHT1c@h#`)HfZ`$AM<07Gq+25if3_qU``>VZ9x3`yrdjK-!m%;Av3% zb$pzq_@%MHPtI0;c1~h}v^}z_K6N|3Dd@yydG;PpO)NpHLY(Ql4>MG4-;?7*hKpr| zqFmNVm_aybjnkHii3xLHs4(G1?yRV`YSy^c*%=8X*#s`T+ga+6UZj;6Nkvd%Z-YdB zCjpPU-z{M@t(sMzn;@(o@Nj>1oP7XAW6LMtQ39;U7VlAZvvnkqLiRfGj}Sd$`P%fh_p( zO$h@481t_1u82Cy%$Ke2X;FFAY;2qfFdn+PAG50ZAMq_Aqo%gdi|vk&i%5TvO@3>7 z5ci43eX@m$YK@DB&9>jsm$*fftYR>4sP>2MXD_8Y>&FyCM9*L4zK(xL7DA|RsS^Qk zlrMVj2@4BH0PI3rdRiJjZ~1;!U4mXKWMS|&^f^8ksr3e^Hms>CZJpmObd7BUO7Lp_ z5g)7Bc(Zk=WJkLLY@C#&f^TGuOFWF4nVFlHo~=t0b*$wH5Z6?zg%aEplI}?cxs@QM zF$3Cd5pEWW$r(PGbFP2)DCD_@%QcOgPe3O2$^QEOY}k2CZ@KY%3G7Z2NHm)%SuT}W zE4CF(*!OT$WUj8LxTmV1{(jm zF!AuQUx4rCb_H!HG|?_0!~S8oC{~lf!U6>k z`^nrSpIe&D`j)q`l{oZ1KOG`%r{)l^blr@NWu&5lJSS`Od(RUuA-zr*UG&+eu=Q4(N7?Ve2BD z1OyxMnCV%Qk@T}M4;>$`pB^M~Z=+lJy0tm%P%;^+{WWb5=lUS z?6n?ZJ$huMW6WyQ++2J0+QQk{+Lkf{M-I`@>lFX-x{wZF{fH(G?r#YdKx}M=Bvm?6 zuN-MaXgFO{Z0>l~rF>IDVoBq9=Rx_CIWC|Zbt~FZW9`JT(VZe)B<|gFn0*t8Ax)oh zih|a`Lz4R7Pq`Dn8qxy_#2|iPa*^<--2|3!Vi>Z$#i`3wo_X)$x7|7r29sCx3nTsT z((Gky*ay)5ahve{_yCAeVxZ5E8R(gtX17FIO*&|~!L`0ym03&b`*`tK(V3^RIcoV$ zWWB{MO=%#3T)I9);BjDJJiMl6x58>Pa#Y916d501dI&4=I4w|pCATt^Ck{9e2s3lz zUZW}B4##o1h_jKs zqjG7ZOifQcJ!;zme8x|`&f0jL_zs-4Yw^VT6}FO-iHiye%86DE$s6S&MDD<}&gMjB z4tEU+Zj`_2tlD2rM+FFB^YeH-+_Muqkd%J@hzsQBEcNwk%(sv5)Y#1GV){~?Or@Nb zR-TG<4|di9)Ca`#Ots8;?v7TjO3BMz>8Wo`jg^CWYBk?H64)d8$3O^)R4ka2o=sSw zmzlI8is-d`=Z$k3UiA6((VG07aIO}F8|5=J9CphCk*O)FB`Y`v9`}bPYyD#Vpg*P) zHGKnoJCiATzQ4!j?(5aFUDAx~Y)Pt~SxH3*dwO=X4Z-4RZ-DyKTAG^+SjwQ#RVmneR)M`B!_6D z+g*xLfw2HQv>EfYZ>5~In64F5tnWU}^{|gur2hETnDDx7Azsc4R$RwKPoyoq1oJ%# zPW@EL&}Z)g@i>B`qls&Ptw_LC%tyuad9om@Bp`Py?CrY^F7zLAA6-y4H?ce8LO!Lb z3ErW~Pg!h!w=#qX8B8W7Q#Ues`4T4chOkh!>?J)QCNNuFJw0`m&&oj$l-Ud`9|Lw4 zX(w5(aea1Ge=kx6G!#8wbMr<0>(_bWgj{7CyY-&M#quh12fx@)Lkx;6zud!E=^-Rn+TF6pCaeXqgGX zJ5QRYk)K*Heuz?=RnvGb8W~;ku$;X$Zi{<{Khwx?A-KvvXGqQ?Sn;&moJyw5T@YtE zH-@O^#qvhBzshrW-}Ip@1(CgF&8=ql<;DsYin-2UW-gAZKcImZ5WOYXN-pXR8f4Nm zhJxLLgYv}sD^#nBdA5f#1=q4gaz@nIds3Z%dS0h-E8^c z^SDgmqYaNTV2xiX%#=_{IaX--TVuqZI192)FeW{CtxGq(m!dfrFi^4W+R?qmq{PB0 zb!zR%wqEM!P!atYUNlP8M_m(IIQshWji;`zZrF$SZhLYMW3v=p^aGE4TL4mwI&=TW z)zpuvsU_s`lm!F+?UF6D_RMT-Y)q`7j-Vy0KmjgQvY+{=LrZIGwd1-Z!kUDh;@;@U zSX-f|Ucwp`5gpUe{kGeAdItKL%ta7x08J0q%eZkjVi4aJDYbMwSX5ftbh2=*xuC1| zWE9tC>O{s#(YLnNt5+jFwdQp)Fq>0T=YSVIYei%H^@A@ud-10e21sruCYC)7H@75l z^YhN-1r@Ggu2vjMb@ZOl;E%MXLw2FsJD3UQy!ttrYW05eFiLTpC?Q3!d#em;}Oiw>?-T4}#OK}^A7gTAe1N@v$ zavD_2s*te^l)*DyqU8k#ee0>4biPovJG`M&@Yi@qK1aS?qD!pyoq=zxG2H ztwz)I;gZiT~1u-`D`Dck50y% zHZP5%xPe@vn3z*S2r*M%%;zEGTwq8IXsClsza^Mm^-VEJ(Yrk9Sp(Vf*5ZmLj3#)y>4*QWV{)`uW3W3S1)PxGwdE^cj=;$+0bO~D$QX*bW zXX^}Ep@>Eai2v*c828PyQ@Wi+7XEeA78UFByqB|Y)bCVc*sEEAxVSYWi@ZRi!u#%{ z6f{BXWY$dRzJE>lzJEC3?okPi$C>*Ga#vpjmSP;i3I~XT7&CNOThZ2j*pc{C>Hy3K zD7^4>mf}jENMbeeVx1l$NC}(u<_xfO)fmC1De1(JoQ5+{L3$4mCDjlR3}?eIpiUl8 zD?=G=&#x~57@D+g99gf(j;rNyC4dg{(l1EY1HAZxyT#i#Ho3Xxq+cK5VLC0?8v$1{ zBqSuiY-nk9;a=Mo$nij{>7B$MQ#kw}Q?VSWeC_S6ue=CoK$FOf(;e;fTc!E9ItDv6 z1uW^*$_RKY3X4e!j)9TN%Vj65_iQ-xhYwl0r|pWc=s_GKmy6H04%K<8`N<4l!SJl8 zD3u<>Xgt%>qO!8$;=%i&ldRLx?ZmnFt&mpwK@2HHMeo_c7DJ@_=BCSv`|0M!=bEEy z$Ti%-zNF+|adB_~{4?@PZiDi3h{p0r=lYeZ;^Kz?UaNF366>{L~uh#29MDSjE^Z)UAx?GW2WpuxKDfmvo}`m=+es4ulUQs!KpXIuN8C4m%<0IC1KT)i2qG)gq2=dGcMzQ z3PUe(G4Q{j6GcJwNc)+j@eyX`yMJv&<0i5t)d4q}W z8ed5BLK9Y9Nw`GANH8Ac+U)E%DDke3B1t?-?C7IUEW?GebXho;JUzd<_P*ro8u zI}{RN5&rfKy?;%d%)^O@2^&NFLE}q^209alT?@q2MGp7 zl(CsVXL~d>$34;9)ph)ghbzLPLT_q)ZARw9WHr4rKG#^6?b8XVDVBdO1n`k<|L;#JW~2354pa=zMs^wd|X zsZqG9KZnk(WM$ZHxOtQ0+w;fFvQ4AQ0}fsLs8`StxXV41)XgNb+3?c3Vrek-gKv-H zigmueMx{v*3 zSU8;X#-#CQ=J#hO*sKFBErx!ax2&%5m~@c-UJG~JwS&WEqHGYbVmt1^DpZ;RA?N*C z@m;Du%_yeh0B4JJ)J^L#wo@G3|+h%|nhtXH@-#xONe zZap#i`314Q?86+Q1&B8{Z#oK z?o41#FPNK|F`M-x`ReYibMe1S^vF|jn(r@Yez)N>IB@@N?^PH3lcPQe!eb_;?5X-M zgPrs9%?>BZ(s9C( zji#*Asxr_RLflcquSMP7>`(&D@BZMe$%U=P;FYJWCRw<^>xf`u&pVe|rbeEno`o&Y zE!3H{ioX=_#Yd(4LVw^d^)Be#ZD1d}D=y?7a98t)P*JU`94vTUwab{V;rygzP?_y#SCAH7GoWC2{BtZ$po1CiDNRM~BcHpEnTDTeX3OC^W z`;k(o({zHGT<&QFMLiZyYG!Fb?Kl9CAA0%sk2m5f>RiwDt*o@ynE_NyB5f6lnBaOa z4-g@buU0L?_Iq5m>yAw_=YxF7$jHQFoi|;!5%Uh_EuN`FR`$LluQ?wy?S&oL(U5Uw zqFxdD18SlBo-$qn5@U&GlT(>ctyO*C+vdic<$Rx^wr=0qx#fG9CEs`wT+;1302SKS z47j)*Q*$7|)SCQ;tRdt6yP%+B z`w@}eHt8w1km%@-Ah6kyg$bq7XsaaUsH#0b!r;Ilm3#FX@{p3kciu`O>NuS?N}PJy zwXH9tH)jXp0sTzra<0Dp{tbC}1giv2wd7M1F{V^5l_64&KrOdDuW`QM>9jO)s=V=X z{Qfkz^bp;I4t7>6OV^dp9tASO^ghS$gQnyh=VBaw98Jx+HuG?EaLff$Exf*eyw!K7 zGoCjd*{gU?|iT*jItt>l)E^-t<#6g7G9|B>k~2 z;tmyE%EmGcGcjyAAxq7UVN7jtbW!hCE6?Sr61AwbRDJD#gBsxeuszU{qwYvJfI*7; zhS!Z@5mBq|LTM~2osjV_V^yXx&vZzmi`*xuQAcJc8=b|FI^#HqrU`1;Vd=2C;13Y7 z=#TV>sg#6e>_8?nv6MBli*3j^Or;KMyodo#vGHJ`RD!!Sr=m6R5snQ+tzM}8rLh89 zI!NBL6Q2+uD-am<;FYMOw85Lx>B>gi#jPHz0MjJ4xI2T8*(SR{@n9@NQIqIVJJMuM9rOf&oe{I&l}cyhTIhUVL$l z^RWn*0`W8gu^5Nb=Psz2b{l#E8zws!rrAC+YNp&q&q1(a4=D#Iimmn z_F)CgH9cLygj>n%=_3Ck5xiOf1>8@nif&?X8&%s+e~Q`VX%U3~WrC2u1}+KzPRY{r z3TgO1>~vtvKlyz^R~Q zG8@Sc^Vwh)4zu#*+gw~h8F3~2=XR3;6R1eDae+#D?>;X~T-uKOi4CY> z5`-Uz;{d4$8y@C8_*hb75R-_!0OP}5ghRADs9V1(T;UTx&QMR2dMstjBe*wtizt=rSSja5+ zUvg`(WNnD;7oD>b{Q-0%l8Le7@7mrM_GJG36gW2Ifb0k`&w~q>~4cmAoN= znfW0-Q@lte!!+~Y9aPy@Sx1}d_eSA_(^*m6p$Wb4zcWY?!}X)*u@uP-40`T4fF^5& zg@x2@#ZiE%#9`rJ62eeW*K zJq&g!G{83^a|D!Ed`2y>SoUHu|;t>?v{HlCz< z-lr+Q<+6SK-G}nI7QNqiA!=VZ>I#w=1zHuKP}IYTdg46e~{%j4$o7^PNn!JLQhq z4Gu9hAXh8KIWttBRQ89b9icr?AN`WTgVc`*q?MdjEZKr`{NqD!rS|rY0kYz`?4!g5 zY`~A|Wo(h~Fi4M_^@y8i8&Cg1-|tJ2&RK4*1oaUlh#eNinTBmjIQAZhG8FeS~Q5w73OdhWmD|FKlDVGC5`1;muN=7=PKEWLSeb+{|`{iM%t zVxB6w=Fg|7p)N;Tm)Wq9O~LH_II|D5(iGX)?6K02*=6#l-mMSN-PWatP1fkPB}w$i za`KRY9y%Ok3X0oe*COnf4G8YvXi2}O0=6h6!rWN^M1&$??f}i(#9JUpxjxsvc9W{D zG}Q3S(g?$lMnNyQ&Qiv)GTf#wNp4=!R5z~cz>KQ|D%{}q{EgxKh^b=LTeo=H-8Ac5 zcZQn($JTjAHMMqI|A++@MFjx?DT0V}>AeUd0@4W`BGPN5h87~Cpdh_T2kE_ow15KA z6QzY7dJ9EDPayd==RN1%`;PJb<8TaNo9ye{?>+4WnyhevI9D!A7k3J@+Vqm@i_-M>oZ@kk#G^15uf zlnut0k@L=6iQHO#?Qjp~(2e9{q)dy7f4z{tTbO?YJtYst zQTYC{T7NmEb$@82_lfA*apFzshEvAJ!AOsg7n;5WV=mGM8-({Ni?++M(YT#V0CUT7 zaqHfNoM(WClKN`P1_?cxpoTwbwkd(1iplZU1J6P1b>YX-(*B>MRaBHWXX>^#i>w}? zD`@g*ZEimW+@rI?9z9)zRB93qP;#)LN84A5IB? zD3IS^I9%Y_YdYFA95;B4+%#)&glS57o0{`&{>V&8yGi$B)VPaSJPE`Bfm39wLh&74 zx12lkT|w#z-0P>?5#%zc`)#-Hb8-lf&StB%W~Y2~fU6lnj!d*A7aO#rJHMDzL0=f% zj~;VgRxS=^rjNM*-4Q;qXbmiQ7*V1hLM!G@-czjI@Iie{FR#$Wq(pT})1@ggO`^qI zu3_UoAu8}khlnt4It5BAKycrJfce4u$jO=*ZmWhsYJ&92hg;L)2J$btP2`ke! zz0~^jrYPUMhG$8ljZnks(3cL2S!xJ`Ro4R4pcKE0hRhnD4$@vr8?X1Zyh^v)tafUe zNM^wFQ`0rZg9>R*Jd1KNgdLuIg^F2(>18hIg-Fq5?^N?LJi@R;c+YHA3Wrqdh}7V8 z(!vPw1ZK#^q0c>qN8*|u?`|Rw{IxQr{I;9$Ucd9?F-A?t5eKU~iSw8+R_zXD7+*x& zx4i}y^onMxmfYI1$CinE9_Rxz-Ud~aQ=sKr0-0QvRO<7$K)pTH z1%3V!%hPRvl1Excf3Jhecdxe6P`S$jGuWQ4I!()BhSV?j?%m5R0Q@5bH2E^XZIJOc zFQG0wTj#Z6fEq4X&QZH1B;3I1Po*GJvnMd-KGy1QJAS?H-=BzRSeQa-rb|qh>!GuA ze$thdx%0YMI&!xbaB!@i9j7kE-ady0t7)*VMXxXq6<@rt(W8v3n*lCjnF$G^(CgD zwo1(||?H+tbY|$sYp=fNJXwq^h$fuTI+OVZRT!%~vkXuOx#G~h{9GVs(Z+&d! z;o;GnG=klInv;>?3^bg(iZ%d+4cBFpdL7b2Syh#4gGE#uFtUo>!>6)no?uG&MV(ZA zIU?>KZEjxPQI!@z`Kn*vXUYovjO!>FfLAE3ZZC3@w15$`Cd|!XOUhL(xOxQ8hK<%Q zl5CN2=0hv{hO52#)_wdOy?>2((IEuI= z4lZYw$5){9JOJ-CAhNv=C}m^aNz(!=f4MpzZwyX^KXf@nRD3YmcD3aOeL;Q7@`uhy zz;psFzKpsW@jww){rQpHpl?UX)0r944N}d!;_`ak=^jam2l>oY2=z8^U8b_Q!DgjwQ)64; zt9e)RX1py*Xw;9lZ^NU#t+yVio;}0{9gKc(yk*j)O&Nz8Ui@A8M!XFQ3i7CPq$;3jW8d-Br($B34RmkCZ&y_b8V0m3F1`kIbd0i=#kku> zEERhNku1GEJs%@JO|igjh&tQ<*tKM%)g&a?pnq0S2 zEC5X=p!D;@KL0ZduQx+@W^02!e{MS3wsUoL+y5np>8EpX-pXV+@YFz04&?(m1D8G! z_TfW6ey~ZbO#%(i6lV)gaaN%~JOEr}+6?i?A|oLIGckp=#7=1%<;@ZKon z*`tRPtKvLovOOAvIit=E!Nli)yIR6+UmGAIm6nzPsHoaBhT!~{%p--xAYA&}5<@aJ z-O}O)CTSNlata3y;sAcjqL;g)3HGyofH-12YOy#uQKBEy-Ec~smfhs%-JNJUk4eplM-EQ8EfoDIb^S+$H~^78If_Bxr7 zjx2P#`$W@gVzZ)n&{XOXSdOi(y2N_5>f8=p^ z`Pu4sljLh7Z*;)+Y)a+D@=mb@Nq>eJy_x%bufOlBo>`+80O&nJFI(=cVVS66T-PUE zd&2h!y)L&CR^&@)l|sglEpL2|ez*H5nMP&nS)|C@7)cNRiX#`1%rS9L>sQ;#K-E?u zV6Ho}>hr3J<>}A0(&b%r;dTy|{WEE*NAe=iX?)DCtW*RJ#;w7P&R$I4?AwdXd#Vv8 z2c$G+`}f^Pd2qha6G4adQ+wpg{O+5O;TpkAVdQxyS`1PJDKcFB#UpvI>V=58)oW4i z9Ua{aL)N;x3VW~A20Z^#qH4gxKWEQb;RossaqX~cNuthzdl3H|Hdd53GVaQ^+H~Y? zmN*}u+>~CvG!A_vbwmt6FORn#zoZlA1nEb&rL|X0tgePDna8i?2bKlKarRqu+?&9% zq}bbI$KVT_cGC&1Ct^mg@>}#08@>XAX%MQ+lGB$^s{3K~I#*>#AK6|o3`j4Qg07FLue@Pj z!h_C5iJ#-+mnc>>GiALtHOF0|o)2z}LVTq6SE4Wh_-=@N1#vgEmE;VhGHw1YXq%Xc zdZIqlpM}S(a<~|kKNPP%XfkM0pLqMv z4o{om5EyIFADtos;cEtf98HI7?3PaSA^N1fBXHp9;T|9r0@PxV-^Jz33;Kx$#QJ>R0rkckzH}H*wlsST7~2$#3Nw_*rbJ&9f7q49RWZ zm4QK@i6%}CjKt2mzslLY^;+o*8$#U`w&WjoxZ?fUC695*i|Cr*-@6Zn@*iS84shS1 zx6`C(pgj9?GIpkxkj4wZhJ(IdH4E_aNEmF z*dQ;N^1L@BPY_(oA0(HX{iUA};I)IvsNz0g%3)e%AGy3^hD2D^5`3<)L}t5|6oOr* zpjDMU2&@-Gqt|)3+%pgfFy(FrIO@-VNM3DccfAP)8fYn?ri|I&z(S6go;;M5-5My$ z!40>WcqIh}hs;Qa4NVoVIP*ksbSsxs{H#voQSK_L=%j4?(GpoU!vrd3w9^b-GP(AT--lO1@IbJXy6{(gxE7ahv*2rAm+Rr8T84j+aM-=bxk{tnsL5fhqOKV}?6U zN25Ari)D5s?4XD8y$|g6;&CJmz&pFuZQLQ=I)q0 z>#h?7B>^R^@$FcF^3#pfWhXcRSE39qhPSpinnJc<3!#1{%cMNBYkb%Sj|PqFtqV-| z7?R2%JH$>N;qHe1)$Y&Sx|Dudxa)`b-^1=?X*YGj5fo{m?qn*Nc=vTWaCrjt@i5fe zLfvq}n}PW35E3V{G5h0bUQ^X#iGa-xjz+!uC`D{*W~!*&faTlp6!yn@oQmK6w!G~R z4-M1WMAMAj-3=%FMV>W$Y-CbgzlvSD8zFoKL!T!oOdGKG?*#e} z<1tI*Un0uNE?EMu1!RU)MsiW0VSG#m|I=C^MTrhQX=`hH^3F%ZHId0lnuG80<)s2E zPyP30>FFMIo6y#YMqs3xAZAk%4GQ4*=YlKp@$jfCqI7=)T(^A?rZwhL{PIlBbbrE2 zRW#XYy|dBL&MX{Y$)%N`-@GZMx)Z4KV@y{ESf@JyeY*h|41PCLUGz{-PncTo04tZA z^AfDs3t+8cekQc?_8TftM!aXVz5%?a5Coi6qvV4-B+-(<7cV|mV8;|(XZp*lH7O}0 zxq5r&p_#AU;Ls{Ton1G#!${CJ2J}9S+l8Umzx0cTitG;J-M|ewPbs53p;Ay=)ev$J zKIZ$pxC79^zxZbCwTDRvy&g%%GpYtP{^(XL{rTqgFc7I9fIr;T%i7J7qYC>dL&O%S z!_6BU&rs@Zvv;DitDPjBwY|K;p_FA4RPn{t4zk5sH%n}lGD>+KSYrm^c3_1O=x5|5 z>o!pa(yd!)aG?+9HuZP`>m-;x`30WgZT%G!8f2S499M6?6DQ(L=u``ymyJ2;bN zl&HL&b)kF#PwKjZ1E2y}o+FwAh6jg<{NUPccozZCXbq+`lmio~)aBH)sfKtS*xGX3 z?y@wcpGwyLWfM^c`^SRy!=}ieB^aqf>8qI5WwWnp%fD&|;X4=gAGi~FF8>f9F9vgW zo@C+-;1|^+{!j${#%Y1NH~Z5{Rl|kHs93}t)$Hx zx6?N7({|l?<6diMsE(+fFX>`A#Z5)E1@0jiAl^NnEKT6rN1NmoMbM-*9>OK$zC2M& z8#z%JCJkFFoer%m#Y`FxS0@BpA!9yEpG^_KF#Pw5?j3|HI-YAE=s>}Drs_1pAZ8>2 zFio?`6XIN!&KIJ10zF?2zf%0$wmXMT=*FfO8|)0jE32wLrMKo#wfMW@c{%!c`+@B` zFcUX2GD-eY%%YZH=SO8+UtJY5?u5AzoL3oZky6(_n;jMtQxy?`7rxO|4s76J3d*b3 z0cX^1D!}bZxL0M}7Y2x3alQ8b{^ZHwdLX-NF+7VgHYmi!+%G@_;l?<+Tm3qKJc0|a zMrNM20d%pc$%*b~DnGk^zL3`atiMf0)p~Y95TI)lK0;yOs+zIlY#VoaVITYHQ2i6* zzu3_f-Uk^%_@RF8oDdIjtZvtHF&8NrKy81bcp!k9{L%7nFQ5{&2GYangNjSEJdOKr z%(kxkyv)y@KIpkRi94!VXmd{Z8J2uq82MUEL-dlGmIA@laU{1YNR7txb+-nG-&b9Z zv=cOsYF@SLxY4zWP8Lkll(_MaJ}X=Aq&FU?CuOO~RZ>T_j7a&hMIxhfy*DL5wF7Nm z?t5&lEXE2K5tg=y)?m-(ZE|CxGl2p85l|uop&@*FB19&S{qdky?bf0M}hFD1b$lrlFz&nCBkbkfpfp z@5o21^|9RF_jWE4d$}7Gi@x%o*3B2Ml-0#^@5J9`IhyL*8FjNZCAgvFAb=QJ)xg9wCio2q#2I)aa;XJnoCh zn#)0vgQL0Mo$<~zPWzn}f1?`1$dE#?e|I`zDM)#K)xm-B*gE)V`2dY=PgseItDtN0FdEhc=)HVkI^izfG73Nyyd5B*8o-7Q*?QT ztk+A`Raq@x^Zj!@-(JwK>1V2{sxk9Wz&J@oy^w&b-j{(*PhnelcitDle*$u6Y*!&$ zoqNF_=?z=+ZA4JKIhF3_Q0r0UZ`25|^_J4m)CA_~O$#2zS8{UIS5YrwbyP1+^!4TY z_KV^1_$l!UAnq_ni>{5sW^F`@Y-M1*d>ZwWbZ#cR)CL&cfgOouKmw(F%KqzGlp0~$!)#K;;Z(zTxQGat#& zrDcgYPFTLm49QQ{5r;e~ah8%9l_z-g^_8pC^A1R`OuSmVdVz`V1*I;@tFJ{o5g9U_ zUXO4A`44a2;Em0vQle}OsDCVI4Z?B28=V}DD$E&|wRv2M^z+M1np6koe|{jj z3eV1fG)Y5c$m?cJZ*(->k|=|5&lL}5CTmMA9bIW*(%N3^Ph|A+s>?xyj4vsv;rPYI zn0axpOPqf~@NuJw#f8HK)tR-atum{?<6V?y$ImF`Q)@qk6vV9|<=e~*sUT&%*2%Kre?;v`4OJ;k z|0QZK?;Y8q@yfDjuIQXQ&9GN^!%cQ z@7WfxV)Fo9d<+J~383@cY5@D+2BtrWjBm=*XLt0nK#L3-Ir~&>N2{waw)xH{%7Wa7 z=yJn0lY=y^wUHupmP;r3fReK5k=_$QQDLz}sBNqYw_VV;@p~{?7`aNpb}KnRYkiyp5O`-= zb>aY_s630na$Qm^__?~*tA({}KmIY2)9SvH)u84(!H)DLuVv6>C$POy>jdR~E+zMj#5BDeYtr5F z!;Ws_Z{Cjqy~5>d)7P6GJZ01y))&xPPSiadnmS5zb|gNuJ?K`ct2N}n+=%QIDIK+Y z*6;sX{Bj+!=dic`6Hrk{OH@acr9b?{T4CI(D5UQ67iSbxSX6lW6C1w>ps~3#iEx`* zIXHLM9Uh=Cd=$5C#ToK;JdcEo)OI0eOoxYu)JiZiTgRIOaS=V63GZnI!;a?W(&-SH z;peY^W~i`p{Z>B{;!2w8`UDap5r76K`y7Wy4%)`C9XJNd}q6Mxw1iyR5u>p}p z)7)rJZyVaHcXj3#A{X6xI+|vN_536qH5FkzN1Q74(fyjI6CIq(rE>ng0F_Bp>V_+a zuNrwI>`L7e!=fJo8HhY<`!gZ@JFRbOHk02>$+68IZuC+vho&Bw^qfR4UzOOHTj$>??D`DTr^RQ1RRqcdd+U4&Cn~BO+XqjetYP{{Z&&VT6;q`Cy*1>6HPAJHIYm$bYM# z3gqkv6|nxc#OJ zT@^MAxKD-Lr)%Q!Tc-<1ak`sJRl$J239VI~!AX;&woR+}F8Evk1t2^8hA0*vX)+N8 zMl5rFsu%7Kod};>MI!_3N!zuxBipS6trRi6kp1a>V^GQHHzvQm{atpUZot?2;lr$F z@y6+?dW}tmKK%8ctG*pv*;`B22PN;OVO19VWbU_bZIe`fd;`V+X@dUQ_t_=KsPkVo z)K<&E4|ChVMJdeSZCr_>Qd^qwGAzjOZ1<9-+%_zHEFI* znxwec=lJzVgpV=h-BFmkKo*EV;Mf}-v2yO%7hJD@yZ;zTh72SNXUDiF)olMNFqtZf zh21IxBX*y~_f=YC77!#JEAtEiYu^e`i*$GW>`Sj7ieT;M6&4Z#sKDm#y133&3kE^k z*JmLS0Db^MblUnI?Em@YXTTYJ2F#3QQbgpx?POA96yyc$>ZMx%s7-?c?+Nj;5^tS~ zD8>oJYs~L=jG70fjcqWm`xY7n+C==O)rV;jqD={{+!Ow*O*0!&m8#udCXK54Tx$dC z0q+opd>I3-0n@DFpS~3hOyg}Jvu7SUa*T#)k=pcQ^iq3+4f!v>obHomQwVKO`SXj{ z^mrQl^3>M3$bW}DBvgOZiBCPb=vq~dx%&pvh{&!yhU8(q^&>8ggBb*y3s!;Abl3z8=V%*FUrKY z?>JnW*y3oQ`KsSwcm=_owCkX^(jr=kNH+U<u*v9Hm}*_Z-W3sH|cN>N|jqvTU%_1nd$5tAPju~@gQQZZo+A{ z&4J)6%r{~~PUxYXtu+AUU7K6;l;JpKY zyaKG*rz>3#fHG$ax*@fdH$n3EEzfljUh&)_N$R#C5w;ud?H>SaMY35 z->~@k{>Eq-c=(a<#!3;U&9qAS%&yMy2E)*-W&-_kqeK7TrYa}+)C!ego#56X$1Y{` zmlb)f&|U0|K9?3IIcOq<*8J5@noTGAZ%AYz|oq&~7~=8F~9n=sq^1TtRLCNkAn z-qOkQDs6)y;K5r3%gfifSLZO_ML`VAq>qWUVaVTlX@>GT31a44+8F}} zp9GiQMHoC#2dJ>5{h3u2%B>P}^f~j(-7Vv2Y$4fWHskbkz_k^xto)pK*bgPYwaIVo zbc=UIdkQe)OG(<1sy{Zy`L$+;)^vWT!FFciclT(dPn8z+z3ZkK#@t7uC=Ow>VhKzA&TgGBSVd43sFeU#A_8PZvj zW_qv#hy`{Mp>5eXfzzz%aA~N;XH=~_HhEaFN9<%wnlZ(G=`p6B|FC#GYZ(4QQ##@c*f`(cI=FqqpqlS9&f`emW{$s9$IM5u`G}0nWEjD)>fQT?ryhQelYuKRfDy; zvUO@e|F$*!zHtLXew8@C3t9JiVR1{^ygLSkbmBIwmb z(%;q^>sPNHW1G^Km_l5&q9@Kh*CxD`N11%#nB-oPR|CpFLnyqOSHbUV}qb`*;okM;sr^7U6ckUY6%0 zu>q(f4TZxfOkiRFYPdV$M_+XzDE_J1A43O&L^~}e!phz)c|T~zLt{w~+>7n;1;C;V zXqBE{VK;|YEinQ76FVsYitIXb9J(@-iUhfZy-_$pBuNB9Ry0D~uwLq`Mo4mB(?n ztkLf{)DwyLD8tXs!k-y0)W@EDADR)jR#NRvLboacGAm_(sju6=ybPy*nt%D8QN=PjDyc%L)+#%qqF&OLEn9A7uvV4(%hY8?%f z&NBDoimDx?%e8J!#NYLD?x$`0<4Mu54O^nr?hc6sMRGlo;ubq>OS+vW9lNyjuu%?P zzmyK3zcjdT4=J*+W6 zN3*J{A2IDKCWNUU`Ea6`#d}F;F~C~@jPP+qivRd}%iy#TEx#~3{6uc;PYQ=5<}w6z z7SP4Asz~B_<64KmL_CPMebbkmNg%9cr2TSXc>&IZTpQB=R&jY$R#IFnfCKYPUECfa zum}@Bt$t|N-Z=GJq_C+XY_q9ABY~T^--oJcs}SXTpNWTc&Dhex@ykf{qd?)G7BZEN zy+hE^IP?9(>Ae0#mL5F?JS&Y7>%q@;d3l1G2mR@Of0-TR?i+SKl$$>E%j%o%OtZF! zgeMNjWFLs6wbTws-F=P$V_pRZXLmPWY$u)tul2Z6E&LhS4vsBSE< zJq8vRk5b(_)M7BeWtwO;lxL}+pr|w3rS-@DC(U|$$zK@3dvVHyMAT>@Dl*V z5xeC5VsmDdm1Q83y}s1`$t^g4kx2hA$m{5 zPO}V!Nz)IicViPgX$zCtXCd=?RJFa;_1P&;xt> z_T#6ii{7#S#w1Je18Q*3TTjaVz1Hg#xp|Km=~EK}n`=LwcQIL$C>rhW$_N9>>g)U+ zvod6Ck6e9)CZ1*e+q~C3=QQevruP2lbY>-x?Yarl8W{Nb1>7^{xdm2c7O@(Z1+pDw zDR_9!4<-8l6KVhbMYW606MKt02CeV>dV1j;td;PTRqz2n2UqV{c39P?q3FyxMzBcv+K;-+D zjO#zqh(S22$8CYs)C)fpm0Zn^Ze3$LKd-)*mljx)t~P4lC316o$P3e7D%O4b_FP0y z!<_hUx^I?0;EwRx`9k~p`Q876ocKrf{x3Ik{hXW0q+;@aegdFZ+S34^{2w1hko!4( z6G?uaMVjS)^~wJLcK#L61F-=Y%+nt{wKkWn9su&LY8Bci^2C7e{!9U3ZtmC^^PeLX zvXb4n7<8Qjuti+=lDK!{+?#`$F^LCa41a%r4fw^foc`BLF^jkpQ0Gbg?_C7kHxF1V z;uRs6VgXaf(WRwk({QT4W8e~83t!&*-w*rG-~LIF`~bLK%;s<1x%huEp#PmbJ_B6D z|H-shK2Nf@;d*6fXIfz~^E^VvnhVQK{O=q*PjiJ?LXUJ-*pXae&o+Q?c=`NaAUYr& zZgDR*C`$qIJM`o8O4TC)CgFe1V%9gZk-v{qxJHI6S2;fdD}5oajk&wEIV1H`YZn>E z&;O);^HEneG@yhR2p+h*h4)hj{wp)i(_oGWl|5Ru?_avc=F}haI*rEQZP4G(nv9vk zcGD`CCtNdw?AB!Mn;mh#$(BY4zww{L*vpW>Cmxeu#*iVmxXt)a_j^_YeE+^mNFGE{!b>Ja{R@2&3!-92|AMgu^}XGoN0HrLe;ymd=F z&*szC4LFSdVR!o!!`S^yTjzyLLF$hCT9pDMsTB7e5U`?>D!Tg!9n z%L#C2BgsGTp5MqpVZ80*++}Z-SFh!mP8P)mQwEU67Ag=H%_{_!BqS-IqwD?4j>(G_ zn})4l+kMUs#yHhy@z{4l8HvHR$W%FxmlPHrT+F<{6Y!Pdo2cvKnCjFE2vu$n-_e-z z4RUFDIURmKJ?09X-vzzLw;#V?m7L40a|+Zg7|nzu?1@qSr*XoA8?w8v<&)kyF3+Mp zD^K?`#dCePWya25iQ7N9M+d3N%L`WN{pVuR?KHQi zx2S!^hb%!k{l^Y_qqiOz$dA1_+~-V@bSQp|lDdyBb7)hAJiZ0M@*Q5tswV_Fq1*%l zv-nAeR2-ZIY6lO7F&5RYUTYm)7`EddaP>Ic54>5X|FcdiDzmJ%QlYoEC~HXOOt`t? z&cVou>sfrLgw|&6>`;@y6~IfB@I1?V?~yxS#2-nlPvt3mWk(z)q2yNY57UD@7+%9iqu>=3|GR-p! zEr^K0dV3!fmHE<@Tv^7(Tz}7uKYE_8wmejPFtc;@;;N>*+G-1x&t9-YjQi!lSUZH=DnV-O6z`; zvhEfM*yR59sJ@(v`0SuBqB$qNnNt}&-sq8P_g+e1z-j7ddTiuLNyFdCt=xrgO&3G{ zmgF`*N!a*`rfGCAoN4_4dO*(TAFtoM82xihH3%UW zWU0#CZ<5a0Ixfk1&#(|%-`8m4)cvrc!<|p|USVwyRgel-^d{3|3@ta0DPhxsF)CTo z>xGqF$0#IKhLE>l&lM1n*$AYI=`f*>%yKC3?=V))!*{d(_uaVS3+ zvC>}DEE(xCHM=+6QRvYYa5{AeBPW_P4Xb?R_O7pgN}eb%^KEr)=6(U~*3Kure%3f8 z8B`iBDp3^V{3kibPLoM?G4(7%H@yQ8kg#gMRgm0roUSTr#2eG9ZKAuorIqsBU4Nfs zq&nVWHrY?evEvUd3hr6AG+YXUZmcz8-AFV^6g#WxaMQhE2!?lt{xRLq1|M@t`K)OV zwtgeueN@(?kCRQ$JWAjabD4sEE#9-f8iX0~-k8nFD+=_RJ3NvD6I=07A_4dV`V(Ks z)TJ==+P}Skau2-(Zpj|($nW-h2Wt!OYT$Ug%-RTYIS@+U;%&g$ZgmB^{A4`|h0%kv zk9#xxmfyjWdubs4er=w6`xcm}p97T>us~Cg4P*yg0{9n>S-KyXF>5sb(7!CDk217$ zi#DgHtW|ibYpBUIXQRifO6~lv*mmb#6uAFV`zuv)#)YTV9evp;ygT_uB##GFIBkgE zWo!5qV8PmLHuo{#O=6-29ZT!}PyqaXe6(*MOAnHMUB$#n>X=lhZ*ZDOh&lLSASQRM zVzUdND`q|*H@lV*I$hI($sx@L6;s9I?d{Em=0(biS!S1iP@duD(V6gLw1bzKv25%> zR=A<{%&*23xPaKm2?uAt6zuimZ*GJ06E+9 zqMyjg!}&a|)s4iakyjL(tcTl9Z6{E~otqo&a}Kdk&jiREbK?)yy$5&;kER zn>Lk52$1XLYAhds3gmKwvMZ)IST69fYG<`~cu!84sK(^J-%O>a-_`m3iJLqs<19oY zU1l#GSm2Y#4O*vOpk7>Gjw?pHN3Vq=OyvhL&OZLV?{-}@@(RmjpITe8KG3!xTd`fa zNFEiie9*9pXgsdFyc3nV-{v^FbMm1R$6$1M(~#ea=8gW1|4F(2rot++RPQ`x0M%=o ziLIM1@@wn$m`xV-|Lnj0a*QYQFX88Z0ib;m7afcd!;{)KZWZV!oRVMEBm1&-nib`K zE1IVWT=LXazziD0ggG{lHxKq5_rJ(FZ8K7<>^te8p3>a$++F+WVpk2XQElD(4u-PO zl@o=pO^MB#Gv6$4526Q#eEEZ>fMC^B^?=b&#>ej#X1K-9=v^9 zfAtBFc%?8GM3y8odP~52eXL&;5;N&CC6$_*{2X)DVCDvb&%exZ!~o9lVk};NO8Knz z``VKOh!&3|PzM0TFYc;{YuXuaIJ-Iq?vI48&xmd~RltVHVYCwps3%&|%F|0t=Fgsl zCB?n^eNe)qARJMA`mhCTm-MTrU} z6>5F%3UxYReeP9Fb_UaxyV{Zm*io}t^oNtQ#0{wM$=^nG)`qu%>PJl>+@SG`eVSFqDJp&hpY2sp)^Hgi{-5v`R+)a>RTI4rn;d({#GB5{BmiE|=ZL~6( z9qgUZaU;4Fn+*2#*$#u-1OlPuxlyyJ=Mio7Thh?=+3q^;nd#mo}SjFoA zR~iI$(|DXMf%}Wb%S(Mp{&8M^Z^QVgpSX--EDudW z(PPQ=^hRS!S^ymT+fG~UNc{Af_vWwfNd8q(&zhA%85!J(Y!;yF%uBAV72)A2c^<(q zm?;mRVR72yIu?*~wH+^n zS6QiV4c{Enk$eQO+D)a&8^y~D3Jgs;dZuh0>Ig3;KaG>lV#X1fn`(Pj^-H6>KErl)dy<(>1V+6^(NC}-Zyk*d6`dq)me5#tM=oc z{TqY&$zn{xuxD*!ttv0m1nZO!_xOn=9>c58tJQ2~$}w{p?!TQj*^d4Yr;aeuL<{h zCTmp}?GWMJ=fH9=m$(aVo_fgjtEsHH^J_~zktw>g+FsIY`{lCe0HfB3xE=>#b9N;; zyWHeX8!zwZ(GvR)k8%nsFhJ6p%f8qQpt1o@_Q>@5x?RCw+8$s+Jzx=uNUi{=r&x4W zP*eNIdG>PiX7BYO4&xXcN}hE3U5Whc?2JRNuhgWm*sFvjCo1IAGY13}6Y%&x3$7ZM zsd^yaS*;v5k4OK~>SLp4n)E^xr|IAmGu9mOtzrr2{kb0K6j&rQmOy$;{Lj@27`ESx=Ee$$#N2SdAk;bH3$g_ zp&A09-=!P+bxPfljYr(r`T2Q)mOt-m7w5MHw@w@^lK52vn@KfL+BZ5j;QQoPLb98c zr0(9Osl3zN+-!9=WzOggEo*dwUf>>A{*=plb7*GpHVN}*+BlKQbm>^q{|MoMl0BN; z@fRK-w2DJYr%EkauOw`Y<=AOm?d0m^0&=`xn>?V_N*B{mRAiHtg{?+1ZB5pHV3G^C zHwmbi2c~^Jq`f!WpNXwiw`v?s>?K9q7f)a}h>H7z=R0s(D#i4GA98cfZG^NYF}JDn z-Hvwo3USWj=8sNZJKH}^T!iKjB`@^vO1ACoghGbYa`huL_C=R3;c^08ch2@G<>$f& za*3)!X^@%gYJ4$IHYb}gbF)lxSk-q2ED3C%{<_0T#-iN*wNX-CftBwVWOAUl@)zmX z>kAi75)D$w$ciG9_?tVIulI;yC!1mFnv;uI)DNPx_OIa7mcK?5TX*x(ISa&P(iMFS z{`YJ{2`XA9BJ!{BBf*aMM{nN1yo#zncg}UAZ@HckYy#H(sdl4?)7axj2>p7S(7<39 z)1tdqrloxUIBJ*wr9KlTxhZVUFL8w1ngt zg`7Yj;jzJWM(kDlTL$W{6!dor<%0$WJa^EpK^G7*z2Ckvs=RE;ak-_VqZwf4>FsUs zAu0@hEkNha38q$`o$T4$tG9z7%2_Qf?Ps>LXE|gx%T%p)a2KY=ZIIW_thtH`xnL0F zVoi+)E6gAef9Z5|u(#J?qT1%^)2H^1E)$MG9C4w(Sb(>P_$tgr?6Jh!vbtTq!>_rZ z+u?hAdqA|7``WL00P-^)xh1_l+uBcE0n*Qs7LL&;23*3uyN_Zyg<iRn9n4IA}fVriNpG zvGj{?A!v>eItuN3cZHnsQy+E;7f!UGmpGcuAm!>;M%ybD%ZTCxU0 z-c76&Js+@>WxfPr1_K9<9W*=-JgRHVz;a!_%bW#xW9itBr#0KgCUn5Li}=)jD~H|G z*ciau($aZ=rP^MqEu6Ijgv**qX5H@?rJ$gvTA6ao?v1ZsFW9cw2FUAGRaQpF%r8H? zx44e3$jr_b+<5x*yLdTRKmr7_u0`YZaMpX+ab~sKJ zQ!<2rN!xHN1Nnc_cLxKUUe*`p6#Ha&hQH@^+vz>irmg)ljBaSX=rJYy}gI3 zY0U)N$;k;2R`?n7tLKHH;@6fInTHQWWYdq_;&yWaPLFs0SatwaO7pAlWX@y5BBG*R zUS10eue0Us?Al0bmNcthyTVDwi?{Uj^a2V8`};e*9Asr%y|8EjqbF?{IRX0j8ooVd zQ_l6tGtYegowlwF2M_#kf!}LX`f>WWe%I3?RK)0@h0=`syMrkAQ_yZ3i?&& zH?D7i{H%|oZ?jOS6-K2z(LlB5)~DTj_xbAW3;%oK3m(qxPFhWmy8%h_sS*xUv>)Bq zhw}ckM-A>cZ7?u6iaku`gPW_Bv%o;M_bh5GOjk4sv#UkrGoXw8Rb9S7(DwS$TZA1fKGxU1{x>QOgAwwGrUU!ev7h!AKd0SiN+>`7{sm6wtyLSac^cCtj>r`*b1oAB2nQH8(c4O(4u8K0a}}h>J6X_1|?w>Fx6e z=Sxa}KUs!F#$tB_xXyh!M^3q-4MP9N10!`}-)aj}P}-BN+(^2}K2kPJ3q$8dyi( z))Qkat+^+udsaww3AyME?A*-nSd%YZ^n||TQ5&p+12*UjrqI&ThDdtp9^_V$KPfTsH9?6;&AOIf3y$=vEAdnX;p~9v!ufn@C}CIX~c9 zE&e!{k8(fX0btSrBkcLldZ!{)sGCb?dwUgm`74v*y)t{89wfg{dB;OAV9@!;gE=i3 zAtrLJ-IHr2_KNoFMK+u!qF0k|L^cBJGt7sdfB-}wzlN9WO;!>`i&IgX*J1kO9i$u= zEyb`Cr{>X4Ex#+r#IFA)2sutpAFgX%j@K3z7IvDBvLXmNl;>(KZr85ih5H8v1T4@| zQTsF)t_4M?R@8HQTD66X4EH~qEJ0*sPQwNa*`bXeJHtbSV%}%r~~(cuCa-!xVX4%>O%_$yc!}dtEkvAJ^9OK1kn$o z&W!)wHQ-%iKvoZX!?-kFwDvf~KC(AIKJw_f=jG)J&K*pb5uAn_&C}|HbUs zNlex3o@$AUoIZaOs}a6q_*B5v)!8HOuloEo229+@{L)fhxl3_*K(zT?a`ZZt$Ot@|S;@mw307kx=ooNYxftE6*1j zK6)zGj=;(We-?4}7?oo7{(Y9QvXU&%6wF`79Kl_#+W#!n zP$wK16dGJ^-EbbGcJy{+s=U?~dzv5#}NxoZR`gi?xX7Nla$h1LQcub^>je-et=o zf#?_;>we!==3l8(IP74(8A-1DFq<54{~`hz1LJ_n?#d@C=Oq$BPH}eVRBCE5I1~Bh z0iW8C(YqIy4ahoGUy0w`>dM!s`~v;hp{ygUxCAyg2tNx(wJa)6b~%7L*?=h zFO!H`$AL1GRig93377Vzj9Aw6=irz;Ay_^v2-$%p!zri%c*d4CCFU*fWq8S43 zyQSj{GYv3Di_i1qE90t}Tn75<4K>&7PnDG?8Q%B;>8+Wqe4ig+hp=?OhPybJ1(nVI zZYKVGp5A2+cwsdU9 zXY$zN_;~AtVog5pSzFN0y1VOihXO0h?WMLJG3Ql?`YLp1W6_U_uD2qFz5QYy-cyOQc(DCH3g)twt2v)~d%uU{^Fr2GAo%BhAB1qCIzTt!-2Fk7eLf{}4tp8hEaJzj=% zmzL5VAH((<&rMc;ks(*s_w(~x+a@FO4FCwLt&J$^^VU$>%My$dmA&CKuB@y!J67xW z@6E3cg`(JPa(YV0;K+`f|8qvW-VP-h83{}y;QO$x@4$FChJhQY4tkBB znvJYHLeE#ZUxNLC0;+Zu75(~1grud<(ihzyu8i<@^!kVe{WEw!Q1_1bM_QR%73P(~ zUSIY3H`JA;1-+y0Gz5eAFflN0Zrwm zFy%^huNpEleK6%|$W!_JNXa`V&9SZvWatoV-RuJ{Ud)Ft#P&1H1fa>l@T+g;$rY8| zTE`89_0VPTGcsfT4jmul^KAY_d_U5>4 zc2+^&hs`w$c4wRUPMX1*-};`1!!&QTf0)xUPENtg{JC{~34DFB8^ItDrrR^T#JJ;! zdsZ5XX01zIyTZbEMuBP84YKL1IIMY* zNE%v6*td$6}KBq@)WaO*6 z+^$bEdPd~ZD41wN(o#FK4P_!lQ%6iwUqfVve7iWX2%fM`gc zHI~FhVrNa{gnW++Spw5B_Q?pr$yn4&NJwb%`i0qHGZejRw|_^aR2@Ev*k=MJo0H(N z^)UETEI!f0pLH!2A+S{;Msk{pg6iT?v&9vi{DksRDW6oOp~UKCwo11Frrgp``lj zTLvQ58y(?A3>>_qw77G;EeRns2;w6|n5f`8M8XN=rvT?m5ZgM0!!|TD2;gG^otCa^ zsLCDi2-ew7;~TJG-;`>8SCms5=^Zr(SS#){6CWFUs!7ZFgVlWAe%KZrnRKEL=Q6?> zVsZ-G;bPJB!~IJ`!@?#1@Plw3*SqTSOnxDuD(Azc@F0o|9#2-Q?Q&C@A$m>+Ru=0( z8FF&+yf_NEboSZqABd3ptZAHbNsQ>xgT~0MgF!8@NX4S$cL{WQzvsWv#fKogi{1w? z<*38$d=K^;$fiJ;O;#h^A8WczUu=ko2wx#!`$%ob+eV1h^3i#z&ZuL`iOK*pW)MYX z&qB#yZ*-r(QL#IiZysKqio3h>U}gX#KRr%&zC&@b5$pGKvv?mYU))tF8MNI#`%o4$ z(K7($s=rjWSep6>A9v5i*4-tVapOp^L;iV>B0n}2YfUR&5)Tm?`Z8R#_rB9K>IuG&4i?;;!;@_%~qMpq;rd?ijo~!uYlK!qM=2{ z9DNTBZ4L|Q5JJ#j92Dr&e#^|v&K{-~6Oj>;5TRjX<0@QR6%S`(A^m-J>_3vuzSwO4 z`&SLTwoL^X>Qfo|-rhcXVo~cm2gfgr62x$6F6Uhm8X6pov#IG_^oi*HLlHto?z26; zpo;ZGSeVm?3dw``l!xum>bnv+6>p$Y?rU}rytSY5q6_Yj83}Ytn|3N$AK()BPFOP zsjUdMt5FH&K%DJpO$pZZx+FqS8J-fYqU`rNnp=$GYhdbCq=yA$#J4x4!jOLv8 z7+tQ^!=|jWbBNd1vy-NJzt9Q?1ZdSadvv2;`haNJ%Lu4v4V}{=)@WxIP!5 zP0&&tG;uRAGc&MY9IqTClSCMEUZIDDm6$Y8FHZGSbTNmCRpk*fvam=3GYp*&WmrM` z*Y2oV8TXU~If9dGCNI#!_9=`+f-r(;lQ0$le!S9zes_o@wbCCqV0*W`vhH%o3*yzL z*Np3UXY&gP38B&Jn^BQJl^Z*>PnD8+!MOrMvx4N?L4f4sJ6>LPKGs!auJEhZGf9WK)oGjQzYW zKo0xqeFVb;)p1rmNsff)I!7|s+f3l=*X{=rW^M8A*RNm4-5}xj(a?4``*ZiBV$jn5 zDztoW`JTnz^%#sRkcuS<)CuI#)z%JoAtEB$t;N&Qs6|9L`t*a6mZ+e_Y}C2c?vlKy7k$+*bPx*#zne5MGenaAL63j z(^50TNMRVle#?F9$ewLAe7kHApP=Rg9Zu^pF*-i=lMU6N#d|y<|4nx^H7#{(Q8(zu zUuWAWprW2QgnDy%2?*QyjjgTcE$3V0S#aR}@hDIopL2CizM$0wM) z9``Sw!(-s`xG9T>Y|g)u&G9q?&L-kS0Sn$kZj88{Ze|99pIW1<9pzlrKbe-McZT9Bd`oKSVbRxOI;z4u_tpY48#t-v?PO?y{p2YjA;&eA zYI3-IyoOhHGBQH}0at*?_n14*E6gJ!q4H0HsZ#HkY~(6XApb+KF~dL}S1=S5^f{b_ zMxDNnQ{F_6tzu+aGtA!Mb5&4?td3<~)1WrM($G)_JsBZS;6l;94UJ9xY;oM(>8c`6 z%uwtd?xUnx-Py+J?d@yvDnoJXACP1)0Hi#agM@&`z)QsXYo<*ny-fQW6E%BDWMgZS z_(gj8C}DgQaf-jLfVug5co;ac&K^eB9a_L;b_fY2z7bz7=nGL~tigBxB=RY-r94s3^%xoyRze0o?*Pk z5SNq^%ArGhXV%WlT;0mVKomLq^-nT3nh6^fypZX8w2gE6X5e-W5>BifDoiky`!^zjHz8fiQwbmx|w z%;*bgr=o%a6&;kEmc))z2AjG)D#+TZsdZ3oP?AwI#C%trd3h{ zk~YirE-uScj^22i6a$d#wXT3tmDLjoa9{f*_~+Hinu=;FtlsL` zn`c`lCM79sHt+4YVn+sPf)YS2`Uq2h0}Z0R_`7sXUhPH8p_ZxL73-TUcBmeft)0 zhEs(qMK@-d;>1TRu<|y3Co@C@9R&TH|3lHjP5=GvoUiX$M%gv$)w-Ft+Fh1oxoOJa~)Zhg}f8>_-K^T8Dp z>lGeuN_frTOzsKN?rQGw)N&B%ARH1bB^6Cgc{Rw}FV9_vpp9(cBtu8*lVtt@C{KAV zq9@Y$9RMiipu(X^ICBgIhU+TU^{8U$EYg}zn&rNR00G^~?|Cw^Prq3*7?G|`*Zk2+IK~leqa8c(sg8U$zUnTaQ|v@ zs&7$A(XT$0_Ah)j*&vfmVKN-tI94(}KVS>!LVe}3{v|c`U0LQ#i5i~(5fNL0nM4Te z0bK?eX*WPJAFKCuNujL0j36oB@8B{VXOZ-b+$|e6gO>V{Erv*GxL||k4W`!FUEB5- z?#SUUe1fJXqa~uDd710dol1Il1?Di@3v(bx-+OSse1+3wHPo#En(-#Y@i_cY(maMn zu)xy5g^D&Hic?dYN0zt3!?O_&mb$Cd?>ebTNmL%e=ODsgWU2X3-=&SKoPUalW=b~k z-I8w5?kvD!CZMXmzV~=o27$-BZ!Wip?L+1M!LJ)?O2*XX3b*Gc$6v%QlUZy-R1mN@ zc!}R`N0gDb`}srqEj9bTR7&PHvT@U#JMED@IxXo(+HFH3#6K8jU34Rgvz}hkO}Dwr z(h#IJFkme$APoQeN-dzh@^#-5Kgu`wlL`IHiYSvtVW#g?ZMf+Q!(p@UR8lU68|3Sw z$?7V(Q0`<{Oqc2`*P2+$%a_;IPGz?FpCO*b5gU(aFx$pxxw9lb_#P7;zqxE4AXQ@;mq2 zH+b@YBz~f20`$aZ_jJES0zSRoc)V?ekgg0E@VuA-SX4nvO-@IMi;Zn-?4C=GU zx_ejso-rt{?4{%C>Eglgj@w$*kjL9Ah&`p?MmYiw{F(2^Gg*s4fGKy}u`@O0tP;i3 zfufbWmeFUuHi;0*WZ|JX-x#|Oy08)`^lxB2R)U3t1M|)Cu}~DXwFBsz4cb-m0%X`x zqLO1ito5dYPsHP?cU&%wDAU%}Pd}PAu=U`+7Fw=oP}NlQ(~rG8oHbw^j4jpS)KQmz z#s|oya{L!=#~W>{i;XI{GflrYCxVXXk6WLcfRp6NcMW%WOM54*_lXa%GS2duXNbg40)Hz zMmsN$sGJad--GJct@;uIHQGD!UcBh)8N_?CzsMrPhyN~(%~o~M6vGdWHHkCsFQI>w3j-pr zDUGJn?=dw22?`ogQlj+Buj_PisV8>}&n9ysWfhr(kG?scl8lGnu=)6KOw7Zf z&4<8W@W6w7OYDtT8XNa-i2Mi1$dT|jH4{8(qdREf_m0P(T3KRYN zSWhpunF%~@%jv7k)xS?q4xx$u4<3Rb9(@LDZ2A>%uF9k*ucim-Ff_z#`k5NP(trJT zINv#ujWR}DQlPT_;XV2PJ?_YV7VaG+GZy%qKN1lEAwTiS%V!Eq|9%2LG&UqeGRc4a z?DZOw8beA+N=!@avn{7vVBU~s`RpEnNhtGE%EKE2;s^n3czZ~z+FSmDKhONXKbP4G z@+OchO!bbztADQo&FsYb?8?GFFd~W3vH5H4*|d6kK}cV#0MzZ-0SO(s+T&fuRMErr zZtzz!;?WgANG+^<#F9z;->>vg&d2nhufc*!4_+x7`ECET66P@O`n;Am0d2y-YOqWq zqnN5{b9ZFM`rglPBf!z*{kVP!ye{V>rxr~+85zVOts}xd!W$VDwgq=eQvcxs#x?)( zl&r(ZGym7S`14!6cptxP2M;T0VHfeU2AF0O6VuqZ_;g--d3kyLyVzL(_Vqr>_XBP5 z3%>-@P`H$%quQ&xL2f?#%NKOSkDa%H@&6Yw{XYxTNY4Lg$qwCLBvTVG@MIqu9_Do1 zp-&h{W8e2y9B2HQUC1ddBQ2ZGjfK2I0NUE2paAP(g~Milp#UVLtn4M`UDofoy|2HNoTn*Y|pm}fDWCDz`Hzz50Sg)H|L+o*$3hbm3#tPKX4)pb!MrB5(JwJEv7+x~ zIu``G%k;q_Fm9Su1PBQVg2~)~DFFDc!hQOH5{7`=-Z?F_-II*B|b0SuO>r=@JSo(;HXme17A z{QCVP_)P}smtbuI$=4vL@smO-|35dqJQqaUdl^{!3Xr3^KFs{ytO^1d(`b4^LRjT1 z9Hx)O6&3c1isO|g18(O#7Df}-Hxau)gwtto!W(Vz-i+jO-a9(GproRrqo!^I_HCf( zBN6b1KZEJVq}6>#L9xG-b9?7{DjJDBWLlM$miEZ$ids^0E{HbE2aP@OD3$Uqejqr^ zC7{Z1;yaBK_CO_{LmIdz-qOR7|9eK8At6vu#@w)(TzLE`{>1FjZP>}n#W;STLmchH z(r3KKmczono7&t&OAp>#4OK~qkIyXbpe`v62nf)1Zw|y53`pa&KiQjQlD$mJ#AHfG zivK2?YUk|uB{ufXWEhu)<)`x@F%ki1YI^i>TjcA}e3)3~Y1BbF)JSoZ;}A*~d5Q!S zOXY#GEkg<6Qu23je?21L)0<#M>;LaFooSD9oz(!0Q({j?9nd!7URi@s& zHoVB?VYZ0A-SzF^fr^MIx?^?Y*DoOI4o?hJ9nenB!N9)O+D+(_*eE8@om^~G*2wD= z&Os5pT8WVmejv=IL*zo{M)WiaG4J8bL6%_BcWuX#eh6hVaGea=W&R@o@R4PNbNa6Z&^#(ZyW1uaR5???UdSMJPjO!|vc{n9v_@A=|J>ql+p zz|kil{2F|3e*d@pUrM8W5)`KX&HWFZ~Za1vJ=D^kD{qKvcwT|d$t|O5^{)p~IRLK+3mXDz6#&vvR8`fb_ik=XU3kf*$S*{Et2)AcGpJtZUfP}+S0AyCa`$7v}0;$$K zOF0%qnckkyhs(1K`=33zSg%~&31Lh5w{em)1^;tTuE3*Ze)#j(-b2&s)+6KMBFs7; zHhY3A519FZbU-i6<8^lRd!779SX7kPn7Pg!m5sF;8HIRo!iDJsJ6P?UCd5_U%#Rv*+C$?*<1 zru9<(6A?c#V~4Ng(}K5-$nk54$Vf{5x;Tf|nl1^j)@s=~zHd;q=K4^*pH-5hHp^V& zv>iB+@#vFp@@brr@rPTWIRX-*+x~$zFnVZfZ~VIB=A*+D`=pA-!~D}~-dXfD4 z@}n_bVFY|$+KP%`giC%wL0nAC$#g*ra9l;DM=O}%l9PYKnJzOkF#+?z5pZ~m9nG|W z_2us^r1!n$W_LrPQ?Kdc&#}G=peZ_+EvA!38=vVBWZE)OJqT0;o9*2HqfWB{;;ndY_20pMsJyJQTqw^$CO@K_O>S z{3l2Q+mEnlz?&rI6nc~4dI=`W>S!afgjhSH?4|qQs&5=1ipawQWN8T@Wb^(=uI}RX?xWs^mrt?`ckNd}Ok$4)^s`Bzj8xmiV zSy;H-&de1Qq8l55BWFDeQiuef>mxPvS}~XzqE(m7!jy8`@*Ui8#Kgo+0DCMo-R3Lg zfT`bE)bsPRmxt43Lbn$m>-Nhn#`(s!4nn}x`l244*?Ass@YY?}mV;rn%k>@@ zbQ=bj^MmtUBn3{ru>($Zfc&-#Cjpo@_ zhS>Oo>u2uMqoa4!)cl$xBqW_*Jgp&t_h@RLQznsBOhF^Jy80|`H>?NgK%nPwZe7vq zKQV)k8Y1}(IDF?s@=+OEcWcMFj^x7`ys9~~i;b^Q9v-A@&n3hez_oV=11&E6fN}vj zX8b0cxMY=EmDja){MEf!g8)t4ZJFBmv-jL0-*XAKM*%>aM&0V1i6#cZ8hJ4Hsz1QgIp5-LZJ$NBlwLYwjj@<-yi=%HJf@;@gxvDo^XkG;&3i$td)!-#EKZ9fz0Y7`a0ZG~;eS;s_ zUxVKpNco6=y_=tZ-_RHu8D=wthgVno`a)2KGn@lU4Pd#p^UdG2Th#`qr_)Y^I-KwP z^s>Ff=XGPZS*Twn38bK++S=H#TCA)QImPgFySzBL2z(YnUs)#8`lBhLw3$fRhz<$! zHYEWL{-ot1_?&iX1I2?Q|>*{X)>qco5hj z;5zCS175p^kkW^(vJ}!zMpl+DadD4#%CUcT1IWR?fESzr8}$Qhe2_rmKp-J~o+{DI zx!Ym7x`JqIYJ`V(8KJ{xd0$;n0E=3z{=I!+0XGiVnX3h_WF;iJ^CBXKVhb9VVS$GU z45PTu{rc6|*jQ0X>Das4;rjw`bt*@FH5$-`C9~}J2_i2< z^9Hj)3Q@awORam{6Z3OdEHaIlf}-o{SR%8=so@dSvbt1X;IW63kaaT?{oIC~Kt>XJ zo)Vs+S2>%l<9-$w8*9q#gfO;{ecsqrlu)+F?Eb(Q+$HU?sVE~<<@t?v6Y}wzGqyMt zvO6w5dQ*(C%0w}%b8vOFZc1H2X(E-=9YQt8McSVL33A0Jx9!C%ydgcO2#J+WT4^^f^sOacJy}gaD>!#Au2*Mju zm~>m4n*uBk=hJ#9c1NQEz>K+OcmNy#si~>DO%9+FXk0?Va;@h)2(2S}_2!0#kVtux z;E(`M7m}^g4VH%DQe}2D3>0Wt<5{)W{zf+{`;8Sxtj{v1EhUYlkg0Uo_xotp2ce}s}upd)S>Fe(cap(lX99N4Aq@%M}d{TO# zzI0!n6p}Yz8JgHdJ-4^I zYlyqkFJHWfkBued7Z-~yVKzo>|O@Kv91cELCRlCyW<>POqFPbgh=$R@9%rA-ym|i-`3C6gMu77 z?Rt43AtnwEQg-(G`uu#OZ;>gi*31m6JWO-7Vf*7I1M)pt!BYU2veBo2+5-_P)7=R0WLj_L^t z!p-R=;CqhU0}2-K2FS=<9}ZqD%IFGI=#XoDuy=Hgk4^M}o4q8?EV6wf06uJe{GcrS zUUK}4SR~M_c6O4lasZwn{UB#vFY@U*fI`W0GS$^iN56*`vQ^|)aJDc%XRW?y@dOp4 z#igaspKFYa29S{bvfGvP&}JTd=qBYOki#X9OE5KlAD^Ba6PE;GW-XLi5K`(T>9A(0 zwlx^eT&7lfB~^I3Os=obuEQgQ8_)g&c?1J}pUduQ`&j85Q3m*rRt>_3FszsQ$LA-8 z7B@K*n;bmtrw=$!zbC-v>n4L)2&$UDw(ZcEM|A>*Y)obW#*>H3@Y#I5keXp+K|d%7 z9Nv;U_cT9$p0<)ukm{(ao^(%7+}7X>_RN#8vArw+s#Lol)N%GR{t>m(gVK?dWDR|h z?Z0W8c_siYHkn+JdH3sRnOMM&9LevXC}<=5u}&ANTQ>PxKuJ}hgHmRF={D)JyON7qOCT3z9-+cWVR1_s)73N#KE6CscWh&MbrqBH@t04{4?aZQm18VVN z<44~C8djz{c~u1(T3Ux6?o@2#Jqy`2zR?z2HlAN|O*;IRZrtv-7ICn8n;Cq2k4CG! z@wy|8y1SNH3=C8)T$38JV|;v88iM76)4}M@RcwA))x5wwR@$Ta#rnImHXUE@2m4O; z&Bg(k%@={)636!Sp`*5=N4obffNL6TQGcCBxy)xD6cJ@g>L9$rzts|rhE@P)K_@Ax zd_rt|8#0zfLH?nmvKXMT1It3+lqsPHy8;=$MiajogiV6}Ug4)Eqta+Y2wEjV# zYs?oxi%L{f`Uy>=g3>H>Otc8T8_L4>@-rXdVXFZuYU8050~qR|@$SR{E)-aYu#;GgVBtGPP&R|5#DU9z{)CMiC=;OS zB7a8h`x`pyc8r9mn3!nt+em2hZBdbDW$cXyN8>hDqQnkH^Xt{R-~z>F@dbL#qvzhr zr-?tlU_72i=dg^+T~Wj^j7K9-AzjcX{r1N1rBZ?R32-9xmt^SKE|;do#5hPw7T)6p zg(EECsmNt;pC7pZLEG5Wrh8;$H5lMRBc^xnTsHfEg3PbU;k*zy_qd;otjw<=ndSa3 zdsaE@#80*rJ9dUc;-oFuRw(z~LwFNJbaiE6bwdwaF==g?h|7;@F{#@-cgn$CJA5ty z>AnVTnmb>DBDwcbvW%BMKbsr`<}A_C0Kqx$BXJvhhKscDYHHz;HN(;$d9`_}Xu!%_ zSyd&>VK`$lvknR?5*Z&hH0t(e`YWyVeQYHd)U*W^wMH@zeO7TJ>tibWullNp(*Mhu z^`={C9@+f-8e(n1Ga?gf8 zFul%rXo1ucAzX%lW6^*;lSEobN=t27Jb)&Y(`aoC6)v>@{$&I`tMydTa#Y{MR)0Um zYYg;Xzl^0MB#dClq;-_SNC$88FsrVgO979WwDt)V>7(E2S7qT9Gh!b#TwQ0E^Ly#A z!Vyhz;Zh{h&_5+`cWIQ5E& zOnT-}SnwWn>!eR{iXD~z^hrcJosaW!T48Xf|GEWS5GhGD`8n_tlfr6x8X`jzLrJs3 zAp+JvF5dNyI6HbBT%2Gf3|P-+F%_--GOTVd)#dgyABi7CSW^020gHx?_BkBp{&Zzn z$_&(8RMr(2PyX;EZ`577xm|IZ{Prjxyytm?RAp|0Xn}vMHx(cYPct$^tV=63gsQu8Zo+5>ZP=?av{z{XMl?BJ#l(x=U1F* zTjh#dSy_-u1Dn+sGMTwX*RX^HOyf<^jlyQ8d}-`>>1eg1xpy=+;7>9h0o&Qr{WXtl zppQy$SV>tiPECHee=s;Kr0|hhScGF-v2oX%I=(!-*y^53aYK!iuq>0^eh$}K=boz$ zd|`JG2=F>gwv6NA?VQdKjW;&*TBd_JHcfKPL5c-NRriddtfLtkMdB@NUiYK7zq>2X zcSZpxCBGF70~^}+%^V}E0cwom&W`3Pkw89^>O69kWy!pg+kOA$!{R(}DIaiXd#~@# zRyeY;-rnnZ0AD|ZKwH3-I+@%eXbRv3EUjoz6x=Kv3X*wKMrGys$fuYXC>9gLWJe`> znwoIN=0q4pjg1K7RbRiJMNpZ6TD{g%9qy8^+3&3uV*9j>e%qa%L=2coNlA`|R{P`- zmi3|l@EooXKJDPLX6$G?vz%C(--T-5=^~G_)0yopT*H^2{a&2*2%EH5p#BiB-WGNAm5>SxM zL4lGYk3a8Rt)ie5ME|m>*!rcG3A)NvUo#y9L!|m+8;PT1m0Sk<>$3~Q3rr>gZ6f5? z#!h<+i_6ngTvSS;s=At*v=qM1-(10LmH3kRCFkk}&vn$dnqpNV_q=UAKi%~g zp2Y@|$$S{-mt3dPamu%bc}Mrx2=)cbMD}BCIX#Zp>z#6tpn{ocg7G3vHUqulL9ZkE zrljAb3}I~EaS3&6eD6H5&xLlYs1FFpz&te2Nal3=&N2J^+BGU&>ZmNy83IQqG&EGQ zUK<64b%zBzW$0i$r!3ln$%_iq(%Ava7zkkN*~@7>t{X?qCC>Y0MV9Xc7E4DQt_pUP z3J_X&kDuhW)&$bg8C`!MWX-MzRigL?iu(MLdOBZM6|i3$5zyYz_28bHengGF8Q~!M z1Mgi78s{({MkXehXlQ`_tJb!q*}xuCd z1FP}oN@gZ7>ZHD*DmqG!LHKJK$uvNLL4xf*XTtM@n#lWw>?h<0N%%uW*H46s>Qks5 zzJHa4BRmV@Pf;8PA8B7et@Sp0)s4dH@svgud zz+Zd(>hCM)HsKOROEtx3AZ>dGxwJSopra?Q%Hk3k6J?$FQ&ow0gt6 zz2#MPQsUCeDk>Zv+sK*(+%EJscP%=#>ggdgy%0D{f7&%1*}D^%Fhh$dU#lMQ2nK; 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

^t&U-#r!%7J^Zm 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 { + test("binds the IntelliJ-compatible Alt+9 shortcut", () => { + expect(defaultKeymaps).toContainEqual({ + key: "alt+9", + command: "workbench.toggleGitLog", + source: "default", + }); + }); + + test("adds the Git button to an existing persisted footer order", () => { + expect( + normalizeItemOrder(["branch", "terminal", "diagnostics"], FOOTER_LEADING_ITEM_IDS), + ).toEqual(["branch", "terminal", "diagnostics", "gitLog"]); + }); +}); diff --git a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts index 5e6cd0ddd..5118863f7 100644 --- a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts +++ b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts @@ -466,6 +466,7 @@ export const defaultKeymaps: Keybinding[] = [ command: "workbench.commandPalette", source: "default", }, + { key: "alt+9", command: "workbench.toggleGitLog", source: "default" }, { key: "cmd+r", command: "workbench.toggleAIChat", source: "default" }, { key: "cmd+shift+m", command: "workbench.toggleMinimap", source: "default" }, { diff --git a/windows/tauri/src/features/layout/components/footer/footer.tsx b/windows/tauri/src/features/layout/components/footer/footer.tsx index 2219431e8..acf625c44 100644 --- a/windows/tauri/src/features/layout/components/footer/footer.tsx +++ b/windows/tauri/src/features/layout/components/footer/footer.tsx @@ -18,6 +18,7 @@ import { orderChromeItems, type ChromeItem } from "@/features/layout/utils/chrom import { useFooterGitBranchItem } from "./footer-git-branch-item"; import { FooterTabControl } from "./footer-tab-control"; import { + ClockCounterClockwiseIcon, DatabaseIcon, TerminalWindowIcon, WarningIcon, @@ -55,6 +56,25 @@ const Footer = () => { ); const footerLeadingItemsSource: Array | null> = [ branchItem, + { + id: "gitLog", + label: "Git", + content: ( + { + const showingGitLog = !isBottomPaneVisible || bottomPaneActiveTab !== "gitLog"; + setBottomPaneActiveTab("gitLog"); + setIsBottomPaneVisible(showingGitLog); + }} + > + + Git + + ), + }, terminalEnabled ? { id: "terminal", diff --git a/windows/tauri/src/features/layout/config/item-order.ts b/windows/tauri/src/features/layout/config/item-order.ts index cb66ba020..78dd71730 100644 --- a/windows/tauri/src/features/layout/config/item-order.ts +++ b/windows/tauri/src/features/layout/config/item-order.ts @@ -9,6 +9,7 @@ export const SIDEBAR_ACTIVITY_ITEM_IDS = [ ] as const; export const FOOTER_LEADING_ITEM_IDS = [ "branch", + "gitLog", "terminal", "diagnostics", ] as const; From d81a06cb40ce11f2db02a95ed5e39bfed42950c0 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 18:09:47 +0800 Subject: [PATCH 21/83] fix(windows): match compact IDEA diff layout --- .../diff/git-diff-connector-overlay.tsx | 130 +++++++++++++ .../components/diff/git-diff-editor-stack.tsx | 27 ++- .../git/components/diff/git-diff-text.tsx | 178 ++++++++++++++++-- .../git/utils/git-diff-split-layout.test.ts | 116 ++++++++++++ .../git/utils/git-diff-split-layout.ts | 120 ++++++++++++ 5 files changed, 545 insertions(+), 26 deletions(-) create mode 100644 windows/tauri/src/features/git/components/diff/git-diff-connector-overlay.tsx create mode 100644 windows/tauri/src/features/git/utils/git-diff-split-layout.test.ts create mode 100644 windows/tauri/src/features/git/utils/git-diff-split-layout.ts diff --git a/windows/tauri/src/features/git/components/diff/git-diff-connector-overlay.tsx b/windows/tauri/src/features/git/components/diff/git-diff-connector-overlay.tsx new file mode 100644 index 000000000..e0dcd5450 --- /dev/null +++ b/windows/tauri/src/features/git/components/diff/git-diff-connector-overlay.tsx @@ -0,0 +1,130 @@ +import { + ArrowLeftIcon as ArrowLeft, + ArrowRightIcon as ArrowRight, + ArrowsLeftRightIcon as ArrowsLeftRight, +} from "@/ui/icons"; +import { useLayoutEffect, useRef } from "react"; +import type { SplitDiffTransition } from "../../utils/git-diff-split-layout"; + +export const GIT_DIFF_CONNECTOR_GUTTER_WIDTH = 28; + +interface GitDiffConnectorOverlayProps { + transitions: SplitDiffTransition[]; + rowHeight: number; +} + +function getMarkerTop(transition: SplitDiffTransition, rowHeight: number): number { + if (transition.kind === "addition") return transition.leftStart * rowHeight; + if (transition.kind === "removal") return transition.rightStart * rowHeight; + + return ( + Math.min( + (transition.leftStart + transition.leftEnd) / 2, + (transition.rightStart + transition.rightEnd) / 2, + ) * rowHeight + ); +} + +export default function GitDiffConnectorOverlay({ + transitions, + rowHeight, +}: GitDiffConnectorOverlayProps) { + const canvasRef = useRef(null); + + useLayoutEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + const draw = () => { + const width = canvas.clientWidth; + const height = canvas.clientHeight; + const density = window.devicePixelRatio || 1; + canvas.width = Math.max(1, Math.round(width * density)); + canvas.height = Math.max(1, Math.round(height * density)); + + const context = canvas.getContext("2d"); + if (!context) return; + + context.setTransform(density, 0, 0, density, 0, 0); + context.clearRect(0, 0, width, height); + + const styles = window.getComputedStyle(canvas); + const addedColor = styles.getPropertyValue("--git-added").trim() || "#4ade80"; + const deletedColor = styles.getPropertyValue("--git-deleted").trim() || "#f87171"; + const leftX = Math.max(0, (width - GIT_DIFF_CONNECTOR_GUTTER_WIDTH) / 2); + const rightX = leftX + GIT_DIFF_CONNECTOR_GUTTER_WIDTH; + const controlX1 = leftX + GIT_DIFF_CONNECTOR_GUTTER_WIDTH * 0.42; + const controlX2 = leftX + GIT_DIFF_CONNECTOR_GUTTER_WIDTH * 0.58; + + for (const transition of transitions) { + const color = transition.kind === "removal" ? deletedColor : addedColor; + const leftStart = transition.leftStart * rowHeight; + const leftEnd = transition.leftEnd * rowHeight; + const rightStart = transition.rightStart * rowHeight; + const rightEnd = transition.rightEnd * rowHeight; + + context.beginPath(); + context.moveTo(leftX, leftStart); + context.bezierCurveTo(controlX1, leftStart, controlX2, rightStart, rightX, rightStart); + context.lineTo(rightX, rightEnd); + context.bezierCurveTo(controlX2, rightEnd, controlX1, leftEnd, leftX, leftEnd); + context.closePath(); + context.globalAlpha = 0.18; + context.fillStyle = color; + context.fill(); + context.globalAlpha = 0.5; + context.strokeStyle = color; + context.lineWidth = 1; + context.lineCap = "round"; + context.lineJoin = "round"; + context.stroke(); + + context.globalAlpha = 0.66; + context.beginPath(); + if (transition.kind === "addition") { + const y = Math.max(0.5, Math.min(height - 0.5, leftStart)); + context.moveTo(4, y); + context.lineTo(leftX, y); + } else if (transition.kind === "removal") { + const y = Math.max(0.5, Math.min(height - 0.5, rightStart)); + context.moveTo(rightX, y); + context.lineTo(Math.max(rightX, width - 4), y); + } + context.stroke(); + context.globalAlpha = 1; + } + }; + + draw(); + const observer = new ResizeObserver(draw); + observer.observe(canvas); + return () => observer.disconnect(); + }, [rowHeight, transitions]); + + return ( +

+ ); +} diff --git a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx index c83d273ff..e653a4030 100644 --- a/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx +++ b/windows/tauri/src/features/git/components/diff/git-diff-editor-stack.tsx @@ -53,6 +53,7 @@ import type { MultiFileDiff } from "../../types/git-diff.types"; import type { GitDiff } from "../../types/git.types"; import { gitDiffCache } from "../../utils/git-diff-cache"; import { getFileStatus } from "../../utils/git-diff-helpers"; +import { resolveDiffViewMode } from "../../utils/git-diff-split-layout"; import { findMultiDiffMatches, getMultiDiffSectionKey, @@ -506,6 +507,7 @@ const DiffFileBody = memo(function DiffFileBody({ const fileName = filePath.split("/").pop() || filePath; const shouldUseInlineTextDiff = !shouldUseScrollableDiffEditor(diff) && diff.lines.length <= DIFF_INLINE_RENDER_LINE_THRESHOLD; + const displayViewMode = resolveDiffViewMode(diff, viewMode); const searchHighlights = useMemo(() => { const highlights = new Map>(); @@ -534,7 +536,7 @@ const DiffFileBody = memo(function DiffFileBody({ { setExpandedFiles((prev) => { const next = new Set(prev); @@ -1073,7 +1083,7 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({
setViewMode("unified")} tooltip="Unified view" tooltipSide="bottom" @@ -1083,11 +1093,16 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ setViewMode("split")} - tooltip="Split view" + tooltip={ + splitViewDisabled + ? "Split view is unavailable for added or deleted files" + : "Split view" + } tooltipSide="bottom" aria-label="Split view" + disabled={splitViewDisabled} > @@ -1265,7 +1280,7 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ ; showWhitespace: boolean; fontSize: number; lineHeight: number; + rowHeight: number; tabSize: number; + contentHeight: number; + contentWidthCh: number; + registerScrollNode: (key: string, node: HTMLDivElement | null) => void; + onHorizontalScroll: (source: HTMLDivElement) => void; searchHighlights?: Map; }) { const sourceLinesByNumber = useMemo(() => { @@ -68,9 +92,16 @@ function SplitDiffCodePanel({ }; return ( -
-
- {rows.map((row, index) => { +
+
+ {items.map((item) => { + const row = rows[item.rowIndex]; const lineNumber = side === "left" ? row.old_line_number : row.new_line_number; const content = side === "left" ? row.old_content : row.new_content; const isVisible = content !== undefined; @@ -83,11 +114,13 @@ function SplitDiffCodePanel({ : "context"; return (
@@ -97,9 +130,20 @@ function SplitDiffCodePanel({ })}
-
-
- {rows.map((row, index) => { +
registerScrollNode(panelKey, node)} + className="scrollbar-none min-w-0 flex-1 overflow-x-auto overflow-y-hidden" + onScroll={(event) => onHorizontalScroll(event.currentTarget)} + > +
+ {items.map((item) => { + const row = rows[item.rowIndex]; const lineNumber = side === "left" ? row.old_line_number : row.new_line_number; const content = side === "left" ? row.old_content : row.new_content; const sourceLine = lineNumber === undefined ? undefined : sourceLinesByNumber.get(lineNumber); @@ -114,9 +158,13 @@ function SplitDiffCodePanel({ const tokens = sourceLine ? tokenMap.get(sourceLine.diffIndex) : undefined; return (
@@ -159,16 +207,67 @@ const TextDiffViewer = memo( const zoomLevel = useZoomStore.use.editorZoomLevel(); const fontSize = editorFontSize * zoomLevel; const lineHeight = calculateLineHeight(fontSize, editorLineHeight); + const splitRowHeight = lineHeight + 4; const tabSize = editorTabSize; + const displayViewMode = resolveDiffViewMode(diff, viewMode); const hunks = useMemo(() => groupLinesIntoHunks(diff.lines), [diff.lines]); + const splitHunkRows = useMemo( + () => + hunks.map( + (hunk, hunkIndex) => + diff.split_hunks?.[hunkIndex] ?? createFallbackSplitRows(hunk.lines), + ), + [diff.split_hunks, hunks], + ); + const splitContentWidthCh = useMemo(() => { + let longestLine = 0; + for (const rows of splitHunkRows) { + for (const row of rows) { + longestLine = Math.max( + longestLine, + row.old_content?.length ?? 0, + row.new_content?.length ?? 0, + ); + } + } + return Math.max(24, longestLine + 6); + }, [splitHunkRows]); const syntaxPath = diff.new_path || diff.old_path || diff.file_path; const highlightLines = diff.lines.length <= DIFF_HIGHLIGHT_LINE_THRESHOLD ? diff.lines : []; const tokenMap = useDiffHighlighting(highlightLines, syntaxPath); const [collapsedHunks, setCollapsedHunks] = useState>(new Set()); + const splitScrollNodesRef = useRef(new Map()); + const sharedHorizontalScrollRef = useRef(null); useSelectionScope(selectionScopeRef); + const registerSplitScrollNode = useCallback((key: string, node: HTMLDivElement | null) => { + if (node) { + splitScrollNodesRef.current.set(key, node); + } else { + splitScrollNodesRef.current.delete(key); + } + }, []); + + const syncHorizontalScroll = useCallback((source: HTMLDivElement) => { + const targetScrollLeft = source.scrollLeft; + for (const node of splitScrollNodesRef.current.values()) { + if (node !== source && Math.abs(node.scrollLeft - targetScrollLeft) > 0.5) { + node.scrollLeft = targetScrollLeft; + } + } + + const sharedScroller = sharedHorizontalScrollRef.current; + if ( + sharedScroller && + sharedScroller !== source && + Math.abs(sharedScroller.scrollLeft - targetScrollLeft) > 0.5 + ) { + sharedScroller.scrollLeft = targetScrollLeft; + } + }, []); + const toggleHunkCollapse = useCallback((hunkId: number) => { setCollapsedHunks((prev) => { const newSet = new Set(prev); @@ -189,7 +288,7 @@ const TextDiffViewer = memo( ); } - if (viewMode === "split" && !wordWrap) { + if (displayViewMode === "split" && !wordWrap) { return (
{ const isCollapsed = collapsedHunks.has(hunk.id); const hiddenLineCount = getSkippedUnchangedLineCount(hunks[hunkIndex - 1], hunk); - const splitRows = diff.split_hunks?.[hunkIndex] ?? createFallbackSplitRows(hunk.lines); + const splitRows = splitHunkRows[hunkIndex] ?? []; + const splitLayout = planSplitDiffLayout(splitRows); return (
{!isCollapsed && ( -
-
+
+
-
+
+
+
)}
); })} +
syncHorizontalScroll(event.currentTarget)} + aria-label="Synchronized diff horizontal scroll" + > +
+
); } @@ -262,14 +400,14 @@ const TextDiffViewer = memo( className={ isEmbeddedInScrollView ? "min-w-0 overflow-x-auto overflow-y-hidden" - : viewMode === "split" + : displayViewMode === "split" ? "min-w-0 overflow-hidden" : "min-w-0 overflow-x-auto overflow-y-hidden" } >
{ const isCollapsed = collapsedHunks.has(hunk.id); const hiddenLineCount = getSkippedUnchangedLineCount(hunks[hunkIndex - 1], hunk); - const splitRows = diff.split_hunks?.[hunkIndex] ?? createFallbackSplitRows(hunk.lines); + const splitRows = splitHunkRows[hunkIndex] ?? []; return (
{ + test("keeps added and deleted files in a single column", () => { + expect(resolveDiffViewMode({ is_new: true, is_deleted: false }, "split")).toBe("unified"); + expect(resolveDiffViewMode({ is_new: false, is_deleted: true }, "split")).toBe("unified"); + }); + + test("honors the preferred mode for modified files", () => { + expect(resolveDiffViewMode({ is_new: false, is_deleted: false }, "split")).toBe("split"); + expect(resolveDiffViewMode({ is_new: false, is_deleted: false }, "unified")).toBe("unified"); + }); +}); + +describe("compact split diff layout", () => { + test("does not advance the empty side for an addition", () => { + const rows: GitDiffSplitRow[] = [ + { + kind: "context", + old_line_number: 1, + new_line_number: 1, + old_content: "before", + new_content: "before", + }, + { kind: "addition", new_line_number: 2, new_content: "inserted" }, + { + kind: "context", + old_line_number: 2, + new_line_number: 3, + old_content: "after", + new_content: "after", + }, + ]; + + const layout = planSplitDiffLayout(rows); + + expect(layout.leftItems.map((item) => [item.rowIndex, item.top])).toEqual([ + [0, 0], + [2, 1], + ]); + expect(layout.rightItems.map((item) => [item.rowIndex, item.top])).toEqual([ + [0, 0], + [1, 1], + [2, 2], + ]); + expect(layout.transitions).toEqual([ + { + id: "transition-1", + kind: "addition", + leftStart: 1, + leftEnd: 1, + rightStart: 1, + rightEnd: 2, + }, + ]); + expect(layout.contentHeight).toBe(3); + }); + + test("does not advance the empty side for a removal", () => { + const rows: GitDiffSplitRow[] = [ + { kind: "removal", old_line_number: 4, old_content: "removed" }, + { + kind: "context", + old_line_number: 5, + new_line_number: 4, + old_content: "kept", + new_content: "kept", + }, + ]; + + const layout = planSplitDiffLayout(rows); + + expect(layout.leftHeight).toBe(2); + expect(layout.rightHeight).toBe(1); + expect(layout.transitions[0]).toEqual({ + id: "transition-0", + kind: "removal", + leftStart: 0, + leftEnd: 1, + rightStart: 0, + rightEnd: 0, + }); + }); + + test("groups adjacent changed rows into one connector", () => { + const rows: GitDiffSplitRow[] = [ + { + kind: "changed", + old_line_number: 7, + new_line_number: 7, + old_content: "old one", + new_content: "new one", + }, + { + kind: "changed", + old_line_number: 8, + new_line_number: 8, + old_content: "old two", + new_content: "new two", + }, + ]; + + expect(planSplitDiffLayout(rows).transitions).toEqual([ + { + id: "transition-0", + kind: "changed", + leftStart: 0, + leftEnd: 2, + rightStart: 0, + rightEnd: 2, + }, + ]); + }); +}); diff --git a/windows/tauri/src/features/git/utils/git-diff-split-layout.ts b/windows/tauri/src/features/git/utils/git-diff-split-layout.ts new file mode 100644 index 000000000..62b45ea10 --- /dev/null +++ b/windows/tauri/src/features/git/utils/git-diff-split-layout.ts @@ -0,0 +1,120 @@ +import type { GitDiff, GitDiffSplitRow } from "../types/git.types"; + +export type GitDiffViewMode = "unified" | "split"; + +export interface SplitDiffLayoutItem { + rowIndex: number; + top: number; + height: number; +} + +export interface SplitDiffTransition { + id: string; + kind: GitDiffSplitRow["kind"]; + leftStart: number; + leftEnd: number; + rightStart: number; + rightEnd: number; +} + +export interface SplitDiffLayout { + leftItems: SplitDiffLayoutItem[]; + rightItems: SplitDiffLayoutItem[]; + transitions: SplitDiffTransition[]; + leftHeight: number; + rightHeight: number; + contentHeight: number; +} + +interface TransitionSignature { + kind: GitDiffSplitRow["kind"]; + hasLeft: boolean; + hasRight: boolean; +} + +interface ActiveTransition { + id: string; + signature: TransitionSignature; + leftStart: number; + rightStart: number; +} + +function signaturesMatch(left: TransitionSignature, right: TransitionSignature): boolean { + return ( + left.kind === right.kind && + left.hasLeft === right.hasLeft && + left.hasRight === right.hasRight + ); +} + +export function resolveDiffViewMode( + diff: Pick, + preferredMode: GitDiffViewMode, +): GitDiffViewMode { + return diff.is_new || diff.is_deleted ? "unified" : preferredMode; +} + +export function planSplitDiffLayout(rows: GitDiffSplitRow[]): SplitDiffLayout { + const leftItems: SplitDiffLayoutItem[] = []; + const rightItems: SplitDiffLayoutItem[] = []; + const transitions: SplitDiffTransition[] = []; + let leftHeight = 0; + let rightHeight = 0; + let activeTransition: ActiveTransition | null = null; + + const finishTransition = () => { + if (!activeTransition) return; + + transitions.push({ + id: activeTransition.id, + kind: activeTransition.signature.kind, + leftStart: activeTransition.leftStart, + leftEnd: leftHeight, + rightStart: activeTransition.rightStart, + rightEnd: rightHeight, + }); + activeTransition = null; + }; + + rows.forEach((row, rowIndex) => { + const hasLeft = row.old_content !== undefined; + const hasRight = row.new_content !== undefined; + const signature: TransitionSignature = { kind: row.kind, hasLeft, hasRight }; + const isDifference = row.kind !== "context" && (hasLeft || hasRight); + + if (isDifference) { + if (!activeTransition || !signaturesMatch(activeTransition.signature, signature)) { + finishTransition(); + activeTransition = { + id: `transition-${rowIndex}`, + signature, + leftStart: leftHeight, + rightStart: rightHeight, + }; + } + } else { + finishTransition(); + } + + if (hasLeft) { + leftItems.push({ rowIndex, top: leftHeight, height: 1 }); + leftHeight += 1; + } + + if (hasRight) { + rightItems.push({ rowIndex, top: rightHeight, height: 1 }); + rightHeight += 1; + } + }); + + finishTransition(); + + return { + leftItems, + rightItems, + transitions, + leftHeight, + rightHeight, + contentHeight: Math.max(leftHeight, rightHeight), + }; +} From d5822c2c5a1169293d2780d6f1c15efc7ca3447e Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 18:17:17 +0800 Subject: [PATCH 22/83] docs(windows): add compact diff screenshots --- .../windows-git-added-single-column.png | Bin 0 -> 20846 bytes .../screenshots/windows-git-compact-split.png | Bin 0 -> 92347 bytes .../windows-git-deleted-single-column.png | Bin 0 -> 20549 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/screenshots/windows-git-added-single-column.png create mode 100644 docs/assets/screenshots/windows-git-compact-split.png create mode 100644 docs/assets/screenshots/windows-git-deleted-single-column.png diff --git a/docs/assets/screenshots/windows-git-added-single-column.png b/docs/assets/screenshots/windows-git-added-single-column.png new file mode 100644 index 0000000000000000000000000000000000000000..6202167f668c400cb556ebd93dceaf9a5f10a8a3 GIT binary patch literal 20846 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 Szp_>5mjU_zH6TyE;{OBIk*;z8 literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/windows-git-deleted-single-column.png b/docs/assets/screenshots/windows-git-deleted-single-column.png new file mode 100644 index 0000000000000000000000000000000000000000..afe253b116fcd2be68f714ba129614c671232e3d GIT binary patch literal 20549 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 FKL8@wxYYmv literal 0 HcmV?d00001 From 767554604d7ccfcae57f5bc7b8fdd0357add96a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=A4=A9=E5=9B=B0?= <2570024918@qq.com> Date: Sun, 16 Aug 2026 18:58:09 +0800 Subject: [PATCH 23/83] =?UTF-8?q?fix(windows):=20=E4=BF=AE=E5=A4=8D=20Mona?= =?UTF-8?q?co=20=E7=BC=96=E8=BE=91=E5=99=A8=E6=97=A0=E6=B3=95=E7=82=B9?= =?UTF-8?q?=E5=88=B0=E8=A1=8C=E5=B0=BE=E5=B9=B6=E6=8B=96=E9=80=89=E6=95=B4?= =?UTF-8?q?=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 行尾 Git Blame 注入文本会挡住最后一个字符,CRLF 残留和等宽宽度缓存也会让光标停在行尾前。改为浮动 Blame、规范化换行,并在拖选时避免打断选区。 Co-authored-by: Cursor --- .../editor/components/code-editor.tsx | 4 +- .../editor/components/monaco-editor.tsx | 92 +++++++++++++------ .../engines/monaco/inline-git-blame-widget.ts | 57 ++++++++++++ .../engines/monaco/line-endings.test.ts | 27 ++++++ .../editor/engines/monaco/line-endings.ts | 17 ++++ .../editor/engines/monaco/model-content.ts | 16 ++++ .../editor/engines/monaco/model-lifecycle.ts | 9 +- .../features/editor/lsp/code-lens-overlay.tsx | 2 +- .../src/features/editor/stores/state.store.ts | 4 +- .../features/editor/styles/monaco-editor.css | 2 + .../editor/view-model/view-layout.test.ts | 60 ++++++++++++ .../features/editor/view-model/view-layout.ts | 21 +++-- 12 files changed, 274 insertions(+), 37 deletions(-) create mode 100644 windows/tauri/src/features/editor/engines/monaco/inline-git-blame-widget.ts create mode 100644 windows/tauri/src/features/editor/engines/monaco/line-endings.test.ts create mode 100644 windows/tauri/src/features/editor/engines/monaco/line-endings.ts create mode 100644 windows/tauri/src/features/editor/engines/monaco/model-content.ts create mode 100644 windows/tauri/src/features/editor/view-model/view-layout.test.ts diff --git a/windows/tauri/src/features/editor/components/code-editor.tsx b/windows/tauri/src/features/editor/components/code-editor.tsx index d384c3f68..3a4545c88 100644 --- a/windows/tauri/src/features/editor/components/code-editor.tsx +++ b/windows/tauri/src/features/editor/components/code-editor.tsx @@ -18,7 +18,7 @@ import { useEditorSettingsStore } from "@/features/editor/stores/settings.store" import { useEditorStateStore } from "@/features/editor/stores/state.store"; import { useEditorViewStore } from "@/features/editor/stores/view.store"; import { getBufferById } from "@/features/editor/utils/buffer-index"; -import { calculateLineHeight } from "@/features/editor/utils/lines"; +import { calculateLineHeight, splitLines } from "@/features/editor/utils/lines"; import { resolveGoToLineTarget } from "@/features/editor/utils/go-to-line"; import type { EditorModelPositionResolver } from "@/features/editor/view-model/view-layout"; import { hasTextContent } from "@/features/panes/types/pane-content.types"; @@ -250,7 +250,7 @@ const CodeEditor = ({ [], ); const getCodeLensLineText = useCallback((line: number) => { - return valueRef.current.split("\n")[line]; + return splitLines(valueRef.current)[line] ?? ""; }, []); const measureCodeLensContentLeft = useCallback(() => { const container = editorRef.current; diff --git a/windows/tauri/src/features/editor/components/monaco-editor.tsx b/windows/tauri/src/features/editor/components/monaco-editor.tsx index 024d1fe2a..069fc97fc 100644 --- a/windows/tauri/src/features/editor/components/monaco-editor.tsx +++ b/windows/tauri/src/features/editor/components/monaco-editor.tsx @@ -63,8 +63,14 @@ import { } from "../engines/monaco/hover-widgets"; import { toMonacoLanguageId } from "../engines/monaco/language"; import { ensureMonacoLanguageTokenizer } from "../engines/monaco/language-contributions"; +import { + createInlineGitBlameWidget, + type InlineGitBlameWidget, +} from "../engines/monaco/inline-git-blame-widget"; import { acquireMonacoModel } from "../engines/monaco/model-lifecycle"; import { getEditorBottomScrollPadding } from "../engines/monaco/scroll-padding"; +import { monacoModelMatchesContent } from "../engines/monaco/line-endings"; +import { applyMonacoModelContent } from "../engines/monaco/model-content"; import { clampMonacoPosition, createModelUri, @@ -145,10 +151,11 @@ export function MonacoEditor({ const previousContentRef = useRef(""); const pendingLocalContentSnapshotsRef = useRef([]); const decorationsRef = useRef([]); - const gitBlameDecorationRef = useRef([]); + const gitBlameWidgetRef = useRef(null); const gitBlameRenderFrameRef = useRef(null); const renderedGitBlameKeyRef = useRef(null); const renderInlineGitBlameRef = useRef<() => void>(() => {}); + const mouseSelectingRef = useRef(false); const latestContentChangeRef = useRef(onContentChange); const isActiveSurfaceRef = useRef(isActiveSurface); const activeBufferId = useBufferStore((state) => propBufferId ?? state.activeBufferId); @@ -216,56 +223,47 @@ export function MonacoEditor({ const editor = editorRef.current; const model = modelRef.current; if (!editor || !model || model.isDisposed()) return; + if (mouseSelectingRef.current) return; + + const widget = gitBlameWidgetRef.current ?? createInlineGitBlameWidget(editor); + gitBlameWidgetRef.current = widget; - const clearDecoration = () => { + const hideBlame = () => { renderedGitBlameKeyRef.current = null; - if (gitBlameDecorationRef.current.length === 0) return; - gitBlameDecorationRef.current = editor.deltaDecorations(gitBlameDecorationRef.current, []); + widget.hide(); }; if (!inlineGitBlameEnabled || !isActiveSurface || !filePath) { - clearDecoration(); + hideBlame(); return; } const position = editor.getPosition(); const lineNumber = position?.lineNumber ?? 0; if (lineNumber < 1 || lineNumber > model.getLineCount()) { - clearDecoration(); + hideBlame(); return; } const blameLine = getBlameForLine(lineNumber - 1); if (!blameLine) { - clearDecoration(); + hideBlame(); return; } - const content = blameLine.is_uncommitted + const blameContent = blameLine.is_uncommitted ? " Uncommitted changes" : ` ${blameLine.author}, ${formatRelativeTime(blameLine.time)}`; - const decorationKey = `${filePath}:${lineNumber}:${blameLine.commit_hash}:${content}`; + const decorationKey = `${filePath}:${lineNumber}:${blameLine.commit_hash}:${blameContent}`; if (renderedGitBlameKeyRef.current === decorationKey) return; - const column = model.getLineMaxColumn(lineNumber); - gitBlameDecorationRef.current = editor.deltaDecorations(gitBlameDecorationRef.current, [ - { - range: new MonacoRange(lineNumber, column, lineNumber, column), - options: { - after: { - content, - inlineClassName: "monaco-inline-git-blame", - cursorStops: monacoEditor.InjectedTextCursorStops.None, - }, - showIfCollapsed: false, - }, - }, - ]); + widget.show(lineNumber, model.getLineMaxColumn(lineNumber), blameContent); renderedGitBlameKeyRef.current = decorationKey; }, [filePath, getBlameForLine, inlineGitBlameEnabled, isActiveSurface]); renderInlineGitBlameRef.current = renderInlineGitBlame; const scheduleInlineGitBlameRender = useCallback(() => { + if (mouseSelectingRef.current) return; if (gitBlameRenderFrameRef.current !== null) return; gitBlameRenderFrameRef.current = requestAnimationFrame(() => { gitBlameRenderFrameRef.current = null; @@ -565,6 +563,10 @@ export function MonacoEditor({ domReadOnly: readOnly || isPreviewMode, minimap: { enabled: minimapEnabled }, fontLigatures: editorFontLigatures, + // Geist Mono is a variable font; Windows DPI plus Monaco's default + // monospace width cache places the caret one column left of the click. + disableMonospaceOptimizations: true, + selectOnLineNumbers: true, stickyScroll: { enabled: editorStickyScroll }, bracketPairColorization: { enabled: editorBracketPairColorization }, smoothScrolling: editorSmoothScrolling, @@ -795,6 +797,14 @@ export function MonacoEditor({ ); syncCursorAndSelection(); }), + editor.onMouseDown((event) => { + if (event.event.leftButton) mouseSelectingRef.current = true; + }), + editor.onMouseUp(() => { + if (!mouseSelectingRef.current) return; + mouseSelectingRef.current = false; + scheduleInlineGitBlameRender(); + }), editor.onDidChangeCursorSelection(() => { syncCursorAndSelection(); scheduleInlineGitBlameRender(); @@ -811,14 +821,36 @@ export function MonacoEditor({ }), ]; + const handleWindowMouseUp = () => { + if (!mouseSelectingRef.current) return; + mouseSelectingRef.current = false; + scheduleInlineGitBlameRender(); + }; + window.addEventListener("mouseup", handleWindowMouseUp); + const unsubscribeCursor = editorAPI.on("cursorChange", (position) => { if (!modelRef.current || editorRef.current !== editor) return; + if (mouseSelectingRef.current) return; const monacoPosition = toClampedMonacoPosition(model, position); + const currentPosition = editor.getPosition(); + if ( + currentPosition && + currentPosition.lineNumber === monacoPosition.lineNumber && + currentPosition.column === monacoPosition.column + ) { + return; + } + const currentSelection = editor.getSelection(); + if (currentSelection && !currentSelection.isEmpty()) { + editor.revealPositionInCenterIfOutsideViewport(monacoPosition); + return; + } editor.setPosition(monacoPosition); editor.revealPositionInCenterIfOutsideViewport(monacoPosition); }); const unsubscribeSelection = editorAPI.on("selectionChange", (selection) => { if (!modelRef.current || editorRef.current !== editor) return; + if (mouseSelectingRef.current) return; if (selection) { editor.setSelection(toMonacoRange(model, selection)); } else { @@ -847,6 +879,7 @@ export function MonacoEditor({ unsubscribeCursor(); unsubscribeSelection(); window.removeEventListener("keydown", handleWindowSelectAllShortcut, true); + window.removeEventListener("mouseup", handleWindowMouseUp); for (const disposable of disposables) { disposable.dispose(); } @@ -859,8 +892,10 @@ export function MonacoEditor({ cancelAnimationFrame(gitBlameRenderFrameRef.current); gitBlameRenderFrameRef.current = null; } - gitBlameDecorationRef.current = []; + gitBlameWidgetRef.current?.dispose(); + gitBlameWidgetRef.current = null; renderedGitBlameKeyRef.current = null; + mouseSelectingRef.current = false; createdEditorDisposable.dispose(); if (editorRef.current === editor) editorRef.current = null; if (modelRef.current === model) modelRef.current = null; @@ -1117,8 +1152,11 @@ export function MonacoEditor({ if (!editor || !model) return; const modelValue = model.getValue(); - if (modelValue === content) { + if (monacoModelMatchesContent(modelValue, content)) { consumeLocalContentSnapshot(pendingLocalContentSnapshotsRef.current, content); + applyingExternalChangeRef.current = true; + applyMonacoModelContent(model, content); + applyingExternalChangeRef.current = false; previousContentRef.current = content; return; } @@ -1130,7 +1168,7 @@ export function MonacoEditor({ applyingExternalChangeRef.current = true; const selection = editor.getSelection(); - model.setValue(content); + applyMonacoModelContent(model, content); if (selection) editor.setSelection(selection); previousContentRef.current = content; applyingExternalChangeRef.current = false; @@ -1207,6 +1245,8 @@ export function MonacoEditor({ lineNumbers: lineNumbers ? lineNumberFormatter : "off", minimap: { enabled: minimapEnabled }, fontLigatures: editorFontLigatures, + disableMonospaceOptimizations: true, + selectOnLineNumbers: true, stickyScroll: { enabled: editorStickyScroll }, bracketPairColorization: { enabled: editorBracketPairColorization }, smoothScrolling: editorSmoothScrolling, diff --git a/windows/tauri/src/features/editor/engines/monaco/inline-git-blame-widget.ts b/windows/tauri/src/features/editor/engines/monaco/inline-git-blame-widget.ts new file mode 100644 index 000000000..76e8db0d9 --- /dev/null +++ b/windows/tauri/src/features/editor/engines/monaco/inline-git-blame-widget.ts @@ -0,0 +1,57 @@ +import { editor as monacoEditor } from "monaco-editor"; +import type * as Monaco from "monaco-editor"; + +const WIDGET_ID = "lithe.inlineGitBlame"; + +export interface InlineGitBlameWidget { + show(lineNumber: number, column: number, content: string): void; + hide(): void; + dispose(): void; +} + +/** + * Render git blame after the line as a content widget so it does not join + * Monaco's text hit-testing. Injected `after` text steals clicks at EOL and + * can collapse a drag-select when decorations are replaced. + */ +export function createInlineGitBlameWidget( + editor: Monaco.editor.IStandaloneCodeEditor, +): InlineGitBlameWidget { + const node = document.createElement("div"); + node.className = "monaco-inline-git-blame"; + node.setAttribute("aria-hidden", "true"); + let position: Monaco.IPosition | null = null; + + const widget: Monaco.editor.IContentWidget = { + getId: () => WIDGET_ID, + getDomNode: () => node, + suppressMouseDown: true, + allowEditorOverflow: true, + getPosition: () => + position + ? { + position, + preference: [monacoEditor.ContentWidgetPositionPreference.EXACT], + } + : null, + }; + + editor.addContentWidget(widget); + + return { + show(lineNumber, column, content) { + node.textContent = content; + position = { lineNumber, column }; + editor.layoutContentWidget(widget); + }, + hide() { + if (!position && node.textContent === "") return; + node.textContent = ""; + position = null; + editor.layoutContentWidget(widget); + }, + dispose() { + editor.removeContentWidget(widget); + }, + }; +} diff --git a/windows/tauri/src/features/editor/engines/monaco/line-endings.test.ts b/windows/tauri/src/features/editor/engines/monaco/line-endings.test.ts new file mode 100644 index 000000000..edb98de3c --- /dev/null +++ b/windows/tauri/src/features/editor/engines/monaco/line-endings.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, test } from "bun:test"; +import { documentUsesCrlf, monacoModelMatchesContent, toMonacoModelValue } from "./line-endings"; + +describe("monaco line endings", () => { + test("strips CRLF so line text does not keep a trailing carriage return", () => { + const content = " private int code;\r\n private String message;\r\n"; + + expect(documentUsesCrlf(content)).toBe(true); + expect(toMonacoModelValue(content)).toBe(" private int code;\n private String message;\n"); + expect(toMonacoModelValue(content).split("\n")[0]).toBe(" private int code;"); + }); + + test("treats LF and CRLF documents as the same model text", () => { + const crlf = "class Demo {\r\n}\r\n"; + const lf = "class Demo {\n}\n"; + + expect(monacoModelMatchesContent(lf, crlf)).toBe(true); + expect(monacoModelMatchesContent(crlf, lf)).toBe(true); + }); + + test("leaves LF documents unchanged", () => { + const content = "private int code;\n"; + + expect(documentUsesCrlf(content)).toBe(false); + expect(toMonacoModelValue(content)).toBe(content); + }); +}); diff --git a/windows/tauri/src/features/editor/engines/monaco/line-endings.ts b/windows/tauri/src/features/editor/engines/monaco/line-endings.ts new file mode 100644 index 000000000..99bcce1b1 --- /dev/null +++ b/windows/tauri/src/features/editor/engines/monaco/line-endings.ts @@ -0,0 +1,17 @@ +/** + * Monaco keeps a separate EOL setting. If a model is created or later updated + * with LF while the buffer still contains CRLF, `\r` stays on the line and + * mouse hit-testing cannot land after the last visible character. + */ +export function documentUsesCrlf(content: string): boolean { + return content.includes("\r\n"); +} + +export function toMonacoModelValue(content: string): string { + if (!content.includes("\r")) return content; + return content.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); +} + +export function monacoModelMatchesContent(modelValue: string, content: string): boolean { + return toMonacoModelValue(modelValue) === toMonacoModelValue(content); +} diff --git a/windows/tauri/src/features/editor/engines/monaco/model-content.ts b/windows/tauri/src/features/editor/engines/monaco/model-content.ts new file mode 100644 index 000000000..d946fd263 --- /dev/null +++ b/windows/tauri/src/features/editor/engines/monaco/model-content.ts @@ -0,0 +1,16 @@ +import { editor as monacoEditor } from "monaco-editor"; +import type * as Monaco from "monaco-editor"; +import { documentUsesCrlf, toMonacoModelValue } from "./line-endings"; + +export function applyMonacoModelContent(model: Monaco.editor.ITextModel, content: string): void { + const value = toMonacoModelValue(content); + const wantsCrlf = documentUsesCrlf(content); + if (toMonacoModelValue(model.getValue()) !== value) { + model.setValue(value); + } + if ((model.getEOL() === "\r\n") !== wantsCrlf) { + model.setEOL( + wantsCrlf ? monacoEditor.EndOfLineSequence.CRLF : monacoEditor.EndOfLineSequence.LF, + ); + } +} diff --git a/windows/tauri/src/features/editor/engines/monaco/model-lifecycle.ts b/windows/tauri/src/features/editor/engines/monaco/model-lifecycle.ts index d56c8efcb..961d80243 100644 --- a/windows/tauri/src/features/editor/engines/monaco/model-lifecycle.ts +++ b/windows/tauri/src/features/editor/engines/monaco/model-lifecycle.ts @@ -1,5 +1,7 @@ import { editor as monacoEditor } from "monaco-editor"; import type * as Monaco from "monaco-editor"; +import { applyMonacoModelContent } from "./model-content"; +import { toMonacoModelValue } from "./line-endings"; interface SharedMonacoModel { model: Monaco.editor.ITextModel; @@ -21,7 +23,12 @@ export function acquireMonacoModel( const key = uri.toString(); let entry = sharedModels.get(key); if (!entry || entry.model.isDisposed()) { - const model = monacoEditor.getModel(uri) ?? monacoEditor.createModel(content, languageId, uri); + const existing = monacoEditor.getModel(uri); + const model = + existing ?? monacoEditor.createModel(toMonacoModelValue(content), languageId, uri); + if (!existing) { + applyMonacoModelContent(model, content); + } entry = { model, referenceCount: 0 }; sharedModels.set(key, entry); } diff --git a/windows/tauri/src/features/editor/lsp/code-lens-overlay.tsx b/windows/tauri/src/features/editor/lsp/code-lens-overlay.tsx index ccee8a95c..139c95893 100644 --- a/windows/tauri/src/features/editor/lsp/code-lens-overlay.tsx +++ b/windows/tauri/src/features/editor/lsp/code-lens-overlay.tsx @@ -115,7 +115,7 @@ const CodeLensOverlay = forwardRef( return (
{ : null; const textarea = scopedTextarea ?? focusedTextarea; - if (!textarea) return; + // Monaco's hidden inputarea is not a full-document textarea. Scrolling it + // desyncs the visual caret from Backspace/Delete and mouse selection. + if (!textarea || textarea.classList.contains("inputarea")) return; const computedStyle = window.getComputedStyle(textarea); const lineHeight = diff --git a/windows/tauri/src/features/editor/styles/monaco-editor.css b/windows/tauri/src/features/editor/styles/monaco-editor.css index ccbb1a884..c2e0010b5 100644 --- a/windows/tauri/src/features/editor/styles/monaco-editor.css +++ b/windows/tauri/src/features/editor/styles/monaco-editor.css @@ -68,6 +68,8 @@ color: var(--subtle-foreground, rgba(128, 128, 128, 0.78)); opacity: 0.8; white-space: nowrap; + pointer-events: none; + user-select: none; } .monaco-editor-shell .monaco-resizable-hover, diff --git a/windows/tauri/src/features/editor/view-model/view-layout.test.ts b/windows/tauri/src/features/editor/view-model/view-layout.test.ts new file mode 100644 index 000000000..697c239fd --- /dev/null +++ b/windows/tauri/src/features/editor/view-model/view-layout.test.ts @@ -0,0 +1,60 @@ +import { describe, expect, test } from "bun:test"; +import { EDITOR_CONSTANTS } from "../config/constants"; +import { buildEditorViewLayout } from "./view-layout"; + +const CHAR_WIDTH = 8; + +function measureText(text: string): number { + let width = 0; + for (const char of text) { + if (char !== "\r") width += CHAR_WIDTH; + } + return width; +} + +describe("editorPointToModelPosition", () => { + test("places the caret after the last visible character when clicking the line end", () => { + const line = " private int code;"; + const layout = buildEditorViewLayout({ + lines: [line], + lineHeight: 20, + wordWrap: false, + contentWidth: 800, + measureText, + }); + + const endX = EDITOR_CONSTANTS.EDITOR_PADDING_LEFT + measureText(line); + const atEnd = layout.editorPointToModelPosition(endX, EDITOR_CONSTANTS.EDITOR_PADDING_TOP + 2); + const pastEnd = layout.editorPointToModelPosition( + endX + CHAR_WIDTH * 4, + EDITOR_CONSTANTS.EDITOR_PADDING_TOP + 2, + ); + const rightHalfOfSemicolon = layout.editorPointToModelPosition( + endX - CHAR_WIDTH / 4, + EDITOR_CONSTANTS.EDITOR_PADDING_TOP + 2, + ); + + expect(atEnd.column).toBe(line.length); + expect(pastEnd.column).toBe(line.length); + expect(rightHalfOfSemicolon.column).toBe(line.length); + }); + + test("does not treat a trailing carriage return as a visible column", () => { + const visualLine = " private int code;"; + const layout = buildEditorViewLayout({ + lines: [`${visualLine}\r`], + lineHeight: 20, + wordWrap: false, + contentWidth: 800, + measureText, + }); + + const endX = EDITOR_CONSTANTS.EDITOR_PADDING_LEFT + measureText(visualLine); + const pastEnd = layout.editorPointToModelPosition( + endX + CHAR_WIDTH, + EDITOR_CONSTANTS.EDITOR_PADDING_TOP + 2, + ); + + expect(pastEnd.column).toBe(visualLine.length); + }); +}); diff --git a/windows/tauri/src/features/editor/view-model/view-layout.ts b/windows/tauri/src/features/editor/view-model/view-layout.ts index ad610e836..a2048058a 100644 --- a/windows/tauri/src/features/editor/view-model/view-layout.ts +++ b/windows/tauri/src/features/editor/view-model/view-layout.ts @@ -225,6 +225,16 @@ function findSegmentForModelPosition( return segments[lastViewLine] ?? firstSegment; } +function visibleEndColumn(lineText: string, startColumn: number, endColumn: number): number { + // A trailing CR is not a visible caret stop. Leaving it in the hit-test range + // makes the last rendered character unclickable on CRLF files. + let column = endColumn; + while (column > startColumn && lineText.charCodeAt(column - 1) === 13) { + column--; + } + return column; +} + function findColumnForSegmentX( lineText: string, segment: ViewLineSegment, @@ -232,12 +242,13 @@ function findColumnForSegmentX( measureText: (text: string) => number, ): number { const localX = Math.max(0, x - EDITOR_CONSTANTS.EDITOR_PADDING_LEFT); - if (segment.endColumn <= segment.startColumn || localX <= 0) { + const endColumn = visibleEndColumn(lineText, segment.startColumn, segment.endColumn); + if (endColumn <= segment.startColumn || localX <= 0) { return segment.startColumn; } let low = segment.startColumn; - let high = segment.endColumn; + let high = endColumn; while (low < high) { const mid = Math.ceil((low + high) / 2); const width = measureText(lineText.slice(segment.startColumn, mid)); @@ -250,11 +261,9 @@ function findColumnForSegmentX( const currentWidth = measureText(lineText.slice(segment.startColumn, low)); const nextWidth = - low < segment.endColumn - ? measureText(lineText.slice(segment.startColumn, low + 1)) - : currentWidth; + low < endColumn ? measureText(lineText.slice(segment.startColumn, low + 1)) : currentWidth; - return nextWidth - localX < localX - currentWidth ? Math.min(segment.endColumn, low + 1) : low; + return nextWidth - localX < localX - currentWidth ? Math.min(endColumn, low + 1) : low; } export function buildEditorViewLayout({ From 81b75852077c2495f62a3b170d78b47e7778fe76 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 19:14:35 +0800 Subject: [PATCH 24/83] fix(windows): open explorer files in main editor --- .../editor/stores/buffer-pane-sync.ts | 17 +++++++++ .../file-system/stores/file-system.store.ts | 7 ++++ .../features/panes/utils/pane-routing.test.ts | 38 ++++++++++++++++++- .../src/features/panes/utils/pane-routing.ts | 17 +++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) diff --git a/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts b/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts index 68c169a70..40fbabef0 100644 --- a/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts +++ b/windows/tauri/src/features/editor/stores/buffer-pane-sync.ts @@ -3,6 +3,7 @@ import type { PaneGroup } from "@/features/panes/types/pane.types"; import type { PaneContent } from "@/features/panes/types/pane-content.types"; import { ensureBufferInPane } from "@/features/panes/utils/pane-buffer-actions"; import { + resolveMainPaneForBufferOpen, resolveMainPaneForExternalOpen, resolveWritablePaneForBuffer, } from "@/features/panes/utils/pane-routing"; @@ -64,6 +65,22 @@ export const syncAndFocusBufferInPane = (bufferId: string, workspaceId?: string) syncBufferToPane(bufferId, workspaceId); }; +export const syncAndFocusBufferInMainPane = (bufferId: string, workspaceId?: string) => { + const paneStore = getPaneState(workspaceId); + const targetPane = resolveMainPaneForBufferOpen({ + activePaneId: paneStore.activePaneId, + bufferId, + mostRecentActivePaneIds: paneStore.mostRecentActivePaneIds, + root: paneStore.root, + }); + if (!targetPane) return; + + if (targetPane.id !== paneStore.activePaneId) { + paneStore.actions.setActivePane(targetPane.id); + } + syncBufferToPane(bufferId, workspaceId); +}; + export const syncPanePreviewForBuffer = ( bufferId: string, isPreview: boolean, diff --git a/windows/tauri/src/features/file-system/stores/file-system.store.ts b/windows/tauri/src/features/file-system/stores/file-system.store.ts index 31a045c13..e69357381 100644 --- a/windows/tauri/src/features/file-system/stores/file-system.store.ts +++ b/windows/tauri/src/features/file-system/stores/file-system.store.ts @@ -15,6 +15,10 @@ import { clearQueuedWorkspaceSessionSave, useBufferStore, } from "@/features/editor/stores/buffer.store"; +import { + activateMainEditorPane, + syncAndFocusBufferInMainPane, +} from "@/features/editor/stores/buffer-pane-sync"; import { getBufferById, getBufferByPath } from "@/features/editor/utils/buffer-index"; import { fileOpenBenchmark } from "@/features/editor/utils/file-open-benchmark"; import { getLineSlice } from "@/features/editor/utils/large-file"; @@ -1476,6 +1480,8 @@ const createFileSystemStore = (workspaceId: string): StoreApi ({ id, @@ -62,3 +62,39 @@ describe("main pane routing for external opens", () => { ).toBe(firstPane); }); }); + +describe("main pane routing for file buffer opens", () => { + test("reuses the main pane that already contains the buffer", () => { + const activePane = pane("active"); + const paneWithBuffer = { ...pane("with-buffer"), bufferIds: ["buffer-a"] }; + const root: PaneNode = { + id: "main-split", + type: "split", + direction: "horizontal", + children: [activePane, paneWithBuffer], + sizes: [50, 50], + }; + + expect( + resolveMainPaneForBufferOpen({ + activePaneId: "active", + bufferId: "buffer-a", + mostRecentActivePaneIds: ["active", "with-buffer"], + root, + }), + ).toBe(paneWithBuffer); + }); + + test("routes a buffer found only outside the main tree into a visible main pane", () => { + const mainPane = pane("main"); + + expect( + resolveMainPaneForBufferOpen({ + activePaneId: "bottom-pane", + bufferId: "buffer-a", + mostRecentActivePaneIds: ["bottom-pane", "main"], + root: mainPane, + }), + ).toBe(mainPane); + }); +}); diff --git a/windows/tauri/src/features/panes/utils/pane-routing.ts b/windows/tauri/src/features/panes/utils/pane-routing.ts index 51da5f01d..1714c0973 100644 --- a/windows/tauri/src/features/panes/utils/pane-routing.ts +++ b/windows/tauri/src/features/panes/utils/pane-routing.ts @@ -15,6 +15,10 @@ export interface MainPaneRoutingInput { root: PaneNode; } +export interface MainPaneBufferRoutingInput extends MainPaneRoutingInput { + bufferId: string; +} + export function resolveMainPaneForExternalOpen({ activePaneId, mostRecentActivePaneIds, @@ -31,6 +35,19 @@ export function resolveMainPaneForExternalOpen({ ); } +export function resolveMainPaneForBufferOpen({ + activePaneId, + bufferId, + mostRecentActivePaneIds, + root, +}: MainPaneBufferRoutingInput): PaneGroup | null { + const mainPanes = getAllPaneGroups(root); + const paneWithBuffer = mainPanes.find((pane) => pane.bufferIds.includes(bufferId)); + if (paneWithBuffer) return paneWithBuffer; + + return resolveMainPaneForExternalOpen({ activePaneId, mostRecentActivePaneIds, root }); +} + export function getPaneScopeForPaneId(root: PaneNode, bottomRoot: PaneNode, paneId: string) { const rootPanes = getAllPaneGroups(root); if (rootPanes.some((pane) => pane.id === paneId)) { From 29db7735a09ce85920ec9280e8889d714b2b601c Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 19:49:02 +0800 Subject: [PATCH 25/83] fix(windows): polish working tree diff experience --- .../native-reference-comparison.png | Bin 0 -> 471121 bytes .../native-windows-added-diff.png | Bin 0 -> 47856 bytes .../native-windows-split-diff.png | Bin 0 -> 55384 bytes windows/tauri/design-qa.md | 46 ++++++ .../components/diff/git-diff-editor-stack.tsx | 155 +++++++++++++++++- .../components/diff/git-diff-hunk-header.tsx | 28 +++- .../src/features/git/components/git-view.tsx | 26 ++- .../git/hooks/use-git-diff-actions.ts | 14 +- .../git/services/working-tree-diff-loader.ts | 4 +- .../git/services/working-tree-file-diff.ts | 17 ++ .../features/git/utils/git-status-model.ts | 4 +- .../git/utils/untracked-file-diff.test.ts | 25 +++ .../features/git/utils/untracked-file-diff.ts | 42 +++++ .../git/utils/working-tree-multi-diff.ts | 10 +- 14 files changed, 338 insertions(+), 33 deletions(-) create mode 100644 windows/tauri/design-qa-artifacts/native-reference-comparison.png create mode 100644 windows/tauri/design-qa-artifacts/native-windows-added-diff.png create mode 100644 windows/tauri/design-qa-artifacts/native-windows-split-diff.png create mode 100644 windows/tauri/design-qa.md create mode 100644 windows/tauri/src/features/git/services/working-tree-file-diff.ts create mode 100644 windows/tauri/src/features/git/utils/untracked-file-diff.test.ts create mode 100644 windows/tauri/src/features/git/utils/untracked-file-diff.ts diff --git a/windows/tauri/design-qa-artifacts/native-reference-comparison.png b/windows/tauri/design-qa-artifacts/native-reference-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..e0bf99c1020397e8a1d407250869f67ada0d38ef GIT binary patch literal 471121 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

qlTQX#m)+N z^Iid(oa>~`_4D=rwhj&i2;=HN)w!9}Q1RQoSHGjX!^2|>>bs*47PV%g=6}nF3{t;e zoSd_aigTrJJ~QLVDt;G@mT{tTq=b~IZo$Ecg_2=&e5}-{FGRJ13q2V`{rq4T{Lncax76l2Ypu)+DP~C0{DDLk=Ui z^c)6+a7H`Ge`*!@l&0tI=UyVyg@)>U53q3wj$T8P6e-Tx%)!&zMnDya;t4r%*zT-Lmnd092sMSuW$9#)|~1oL=-V*8CT|8QQyu z1CsY%lvhGkm8?E&;4^r3Z|B^`cAfG0`X&KiNO`osVtaUq2jNJw5Tqba;vh^KM!{ zZ>uyE$2sy348qw!RMZ}vA{tzfG4v7SWN3@0BW)r2NLYl*jV=~hsIf6rpMloxXYzGE zWI-_re>S>UUBZtWvLoloj5HNZ&Fei}iO(DNoh`nzS|s~QhPK9SMR+5^r8f#kN(vzs zS1$NqG4xu5MCWm-zkD>#($d#oDa!qo{))NCx&$IJ9>kNPqjWzkY0W?@aL;b)!u&WO zKgCKLLA)RODIi(g)!otE$yHh`PxP@f9A*b`-Lm77LyggpO=H5xpp!dqyM=mk>JJgE zW`mDw!B7Hk7kXbM3QBx1lS@$=@w9<`NwuqO`caEH(V-LblR3v`9em ztV=IG!dcTy{<^n z5&w~&GJdw&qtdM!GyO|WrNPRS@w%=$)gbp`!>>ZGPRTL-FYc??j1bWRpkM#q!Gnf3%zl}5s{kG*AzDXcLmUCAB;eMAo9TqQuk@QcsO zV}dyZ?|9o4X{zb%>0wuMNx%zxyQNKh-^eIx%E9p8ZyBKcEGV$%UDRHO<=k;A7KWlXmWMS~;XSTiLeR-4Sn@_8L?9EMzr6AX^$v=Tyi+2rx!-N?_ zab!5AHfV6ANO7fz-fWOyIGNJ{|F`)0Khr9GL{e9mwAul}pD{Luz`dOH^%Yt`PKwP4 zM#q@H3^;Ff8#|spr`kJ{c0a-fupGE)aj=*neji<EcbT1SsY>QlJ2) zx#9;~yE=GsUJ$g7zn1npzW??`p#H!(|b8Yl(lk7xFIqACpRDl5O@uzqNxEB6)FsS zlcpH=z3ZZL<)}T2wZO2=GK0~S5JxerkqazTL4oMe%XTa^(}Pe+>9D`xz6FR%=`NUV zbh&|nM&IxSOSf`Ey6zC2bKxGrl?{j`PcraOSvjXe(I>9(mQlVjqt`nI`?KfEOBNt& zB7V#@=(OT4}ECx+1)LOMU$QZX{DGucJ9Y4*_5%#k98tzJ8XKdI#dskX3M}2c>sz|q7g(Y}- zk?14?uO0a_SATx`nHLx=;5^^;W}~GR>>eCCDynDNSWYgJkpcMCR!RE`^%pWPGjg)b zUcza}zx(Io&4{$d$W5pgD>&%ZJyb_$a9;jZuOQ}>TBc){Sm4ZKy0Ke_6VRoSIUTCq zaIy~o!J`mcS0Y_8*UdGWwVA8j6U2^dw(n0Z%iEjx8x-tVbkSNrJ*P*AEvG!Gkg?eh zM^3U&_?xWGibF#jqP3jc$Y1Rxm!ID%d#Ll+YDoqZwl%^k%Y*AYka=}h%;98yTJAz`j%?-S zrr_qH@$NQTV$!0kyzMCg3_C#tx@y|CjIw8OpiE8PzCCd|b^7-^Pa40P=jTa*pK>{a z3SwC8Em2Z_n>Wf`_-HO!FPes75Y;T%5sq4ehaE`FT8k9vN~e#&US~@`E{0n6HC#0r z)Qph-$=YbA`u*n)2ZK)HERLE2H%*xt9!G}^ofjGPK*kg9%@=^@h~G_TZjTX6$Kdml z5pp5)QB8is;?#AHpDVe0%0&NePZ4gsM-@!TR>e^Bc)IVLg0_67m4Y;I20ax>&?%j) z7%4m3XdXe27KCuA4n6kWm;628`!RIR0xUKtsNTb2n?H&R+&>2Aigh@g6-P}dnLr7F z{9exssB#oxjOc75DRFkTct#(Z{wF~M@NDKvoMmM|Qw+%$h88eYFhA2pP*x!3Gxq_s zIn6H{SIH`~ym5g1B)A9Vg#j+@-x^5YOexNkoruqAEWUBS9M1$g%jq-9H<0#Jr(z{8qc#`N8St0eg4?lU4VA;` zv+K!Wn~LVrc{iwE$(-B>kqW~_)^y9vT-;#JALk?fGEZGN+bgKKyB8!^>NHw}Bt=?~ zJwwsQ`R@i_E_JTIUY%^0cS5F+zYh)0W1nx-{!1iO4#`Rr3gV0XFhDMGR3UK~m56Px z_h3M=!hN0C8n6-{a^7q4JY;S0^-kT!6RvcR@gB~Lk_z@WO zIVx@@yp*I;LV!5{MH$B1JkgDg+IW*D7Xj9ccW*EU-VHdoNF3^6WtQ)jPZfk`Pp6Mp zC~M;me=gfGi@~!6%vP0^1VEMr@vw;M9*VHkF~Zt}#zXx*?26oZAskmhn4^lDxr1?baS}v>R3Uu3;vuQ82UAwY+0e z1hJhOAs=x-FTtP64({q|Z>>qy;@*wckl)p*85pN>FXojJ?RO=wh!yb>*2YQT(c)_G zI0ba@S_~Q2h2@XY?RNXK8oz^5L1FG?RnFDaQr_zmW?km4ujA6WPFii<|6G$2>dbsV zJkjBLk|dv(OUi$Cw;}@oodNuTxHi*Yp5DUqMdU+lgRihNDicP@WRNh)DE8@*Yb)E- zYn6~}@bD*qnj(l6LnDW}Wc36gsI+(F7s_IW8ijhH{r2o*vo#g|WP3to;R|9b%!K72 z5?SBF9qI7C>MXcbR-c_nJw$!E8(}#y>&shS*L;T{M(CcxAOGv4*>H^d4++Pw)2#46 zTcZA~0kB=oPlS~K4dFc5$y&buXi)SXV&v|56%FvdVOhw}w$l9e?iyJafsv&GUlrp9)DEJDsU^UjpbSbZ=VrRF)37O6#jaf8FojXPYii|Yu z?5Rr!0I6HNGzoPm;w}UdIp~6tW9>~S5+o?e6jVm3S{bGUGs*VEq4v59zq9E% z!736S`0@iw0l%?_2qzGx<&4)Lw%5^^WHrTTKAAgTY+DBHr20e&xlvSdDKS6$;LyJ! z_2CS#jT_#<53cj2^5t@xWm=K34Uo{vba%c~YmvnD+xDJna@FiLUJ%1uwHxzoOyY(! zg%9z900@&Ve~MPQ8h2X0+ut(U%~XD6OL=*6RHDUnG(LWual0^3x%x2p0hd;V?VI0g z`I29FQ3@96TuFj#kWMSSXv~PQM$!}q2$ucN`eaHJfWPKlsv21Ziy0G1x5E8&BGF98 zNugP%2*bAJuW9NxBiEX64jO)CW;wYfhtH~IFzOwxeO zPis2hc%x$Mcu4$W3ltpF2Nj}4FP>Ur))Cn=-fb4HxguJH-rMgnNgdi`0o=5E#%;6e zpL~80V%Q~ckc81Hl#PI>1PPjM_51VbIq_p2rA8_sn(}akZaftQg^#Z;cfaBObkP7p)!<#0BAV z8nIWA_+*5Yv2OEC0u9S1&X%0v+bu$w&CD}daUEKALcn9FZyrhXm$#lX^Nq9Pr4P45 z0u~tIqc^KbPO!^|rx-~=nvw7WY?-kz@XjPKs}bstbPi1nyW;ZT0e)pX6rT6muTrfJ zE{#a!_?xh->03Am<2y^Z!+xc0s0|I{CLvVIp#|$_!@6LjfW6L7ng2$6ux>y=rNTaw z;6sQw4`s~ss_w&th2!c|yP!m(VEDU~y}ze)oA%>6`Ur4N7B0e4fROe7Nyl$>S3|e% zm*^WoJJ*E#@F(NP#-ZQG1pKA(fO0FcSo~`%^;Eq;9!*OuF?QEmr z#}u7hQjUPmy~WUke7rSgK}A4<5&QqnEL5DbRm2(jTMj|7Cik}4p9|Zb_AB-;gWTeE z>*{}lu<`WAx~2Ta`-Po3P5f`<6)jJaOEI0rs3RFS*RT&+#{szR^Jg1*^e}X}S5B31 zF(M?wh(@GMZ09=lR>1kFt0r6?(=vKnJm5iJ4uedIHQcMk5?RLTH4g0!GF`!B4Gr}U z7NIwB6}~1k^pzvx4YjY@57~*xm11_=nu*az8S(w%+1hs^RxDEQqU)`*6;HvF;r_Ve zkC2Mw{%Q=apu3wt`DhJIN)9%c`EI18IhgD7T9i0i#mc9s2TaAb)|V9`{)8tFNonvy zFgLyXAW;cK&Qjo!*z9Y2dKN@TPua2n?sd`u)+91A{f-fLc)-_o1g1~FUrM#UtQ}ev2&oeV}j=^=0}E1}H*^wlI(zguQe9Spg!i zobERZ9#2}1ea9Q@$7A7>3_(SDW5tM+K+0c^Cnv?)OUx6v7DUq1%8NboNlTVCkIs7) zg_ed~Wx&!L<{7}Hgz-n`SKiOh0s@YKfA#lQ(3C826g16hG&Q zpzOp6A@e(|64ucoV`TCJ{T26ulq}ct?R0We-FK$!CeurDiJ3UqoP!drd7QPIhO_#L zlNyyLxMnP^ZuD{RnLam{fps@V!-2m{PAg|UMrZLU95m+^-u3+80A6aNAT7S)iUsyU5fHr0Bht2uPv|*V$ zxBsUuk513GI_}$Q$ruj>u8mZV6ZL_NpPpTd6}qyQO@OZRKjUUy;T*1Bg(I6Q6+nDY zQ+7jr$BVZItmU4g&89zu9USZ=VsU@YQ_>Q7*L(R%{U6&JxL?R2VC<=U*3R!bCF?_n ztZwP~>G)TxlhIMgTES>8F3DUqaaJX%Ey-x8Idky6_;Q{3c>3OP|6zU?^~vZAgnDYD zJhgFme0-Ye5l-vdC|3W6;H!4^4vft-Vc2q3T`tMI!05MKwS_t(m%-a>nzXJqvvTwg zfzq5CF@InmjZ#ld*|hFc?9*~pM#-Q0?Ros*m&w5)S9P(M)I=m3oWfV-3#S!dibh+G zB_XfffFVkw751|D@8yjCagU0s%&byI4y6Px$LD+f4;mx!pZt*j+qU*+p`t*&s%j}m zy&XmAwL6EJD*A%|=Mnp8{hx^O{;|mf!YQ9l6EaS}`K9W~SUt?5?-T@?`M!lDR(gLWstNw7qUtKpR zb9=92K0gIt=)qk^WBFR^XkH3+|G{9<3+KpF9f4TJufGDEyRWvAr8SUMM3`EuNg8*7 z(PwWzGAzB{h-1=&C__c!j0C%EOMNbOpSny)djEY5O)`JSdwq4-;m9p^z5V$by-^T$ zH&9Aq!M6AHeY$$Sl}^GNkFFq=YwtHj#Pj|B1M24`6PJKb<1XyQQa_a{OYZiQBRQXC zc;9P`)c^e^{7FUH+g56FC%&`me6Rh}<{#HP0*)Op-}~-B#eV=W;Sl^ zg@yI#8~+)gp9LdoQQhczTKq+iYXepRsPTcbN7VxZOgE5EroW2?(3=eQ#)bsNCtM1U z^TY#h9>WE=sag#cLOc07ybQ&EF09nK?06=rZhpk$#!c!A#k%6TRo7GS5OlKF-?iI_ z`1U^vQ~G~I#GaYs&zEus)&nD#PwF;(TDg4j6PLNT4> z8QgY@0uqjR$InM&0$RV09{7?HSN(a}$@}Tp_Q;gx%?TlFNWaR%`_@lcTlstcKtdrL z>0q`g2KMR|)#v~e7tJ$+!E9#-_pvN8Lxm^6BxMAn$WebO7ebUGq^-7g-XS_d!M z>hioy-6vNHa*r2Ms2eT`cYPY=WSBOyh=Pj--Nuj?3@uW+|Hgg%tIJ|D*hi`PuR# zHQl+5Z@?B)lJ5D_OO^Y;gd9eC^E`9OUZhOiw7-07T2mDO*J^{03NO4btHM^1D@zUt z3#!LD2yT<%YPL4u3bXdIedUaYUw9D6o$Lgd0j!$_>}Gyjob;h;7Y6Z18iOT`4W)&6 z^T|*t#Cuo`sg&yuJFv@!IPF>$sRrp#=c=4?PbeHT-d)XTpakZVlG3q@cGs| zPhGeu%p!7b2G80ig75(B%F z4}W!)J47qArC~Hm(ZIlApdI}nw~*gRg#%4sfhPo^Eq~S8&|OJEn{9bF9f4BHS=0(} zO}O+_tZZwvzh4xKvvX=x9}89E|M5(tq+@77$UO_5ZK}HJIlwR3OkYR?G1tXt@YNji zcMtt^u8yNI#$VT+F%^;GHED0MI_R;cbD$`;kBTpcF2~ew-t>5UX z;a_H7LU=3=g-6d;eJo9O6O~4K@qUlVy`e+JG5%mtFUrRdvJW{z>Z|w>$k^v*gk-Yw zd3j>mHH<{`^N;*?JLhxcX5i<~)Vyp(tN0YBE28iDB|<)m;|ae)fo<_-3Bz1eHF$PX zOr%O>qsKjI0q<^!2u_XNxs&Yx#+h;k>O#|#&ktmp0;nlPq|Zx-3#sRfzHDy;)<4%h zTMVy^a)fLSn#i4wkmGn)!en${nSnLJ**V&CO>Nrx>)g7;PsZZ{m z_|Wz5s5SdVHMReQnTr{gv5k@=eZOkLLCC!#_04^g6G=>&z3Z-6VqwAkM?COlM zrl0@xWDZ7tYs>Eu{;z**-R(aN#*40M-=m`=2?>dB!?pF zaqp70EEKPKWQvQceNZf`QSb!AQSS1qAr*O*Z>b>?F2vQCIums|UsOwW`1SX!rKTCD zF*SEZ!a_Cd{mp8brKqTga2iwt*6Jd!X;ziP<@)cO${|JSrU{?g&{ur zqtj))vRF){-7m%HcQ`uC42DQ@#=WpD%O759uTV{OEaqCBw;kV4jax@0#C_VdXPgZ2 zgAe_F6>W*YDSW=RZiCf#?XBm|Mj6c3qST&4rH-`Ue|p1fIAu%>i&iMN(Q{yl*eol1 zsEfLE3~==d?rN+0=;hOO)zsLjP2+NEVz92$Dq4$I5wrJg$M^QOiu`U)G@Z@&S>joC1(3?y%gYDT?{`IKt z5>y6=eZc6WU^i=Spn6z%$?O-5(3M5Oqa~Y1ISxBvDt$H1@xv&!6EN>| z8In=tRacn^%7x_yhc*2(<3Q5_d=ClQ zJANpWP-I35@?ZOdm;U~H0oW-66>SVc9KsO-SQr#5Ezv+`_j^+#HXkY3sHs2Ps|s0IMs{ z1hTYe^g^-UOMLR5WYaMbFw_zxhsC*m+|ZJMG+)kVI%w&BvDU4;-WQ*(ZzEBdp+z>F zz)VvPJUtP6UJD;0>}tJ>$0}+Xdrq@5sGDT>1CV{f+zFq0t1XYwo?d^^Jzjg*;xhBw zCS1>9aL2#fSo$}L?ac)DLetw%cS+R0X1(nU47dfub-u_|Uo$cn5}6E$E%fd--EH{( zo_%m--)IbS<0T*Cw1qH}WX(5gUB`>SJe-zSr7zV!1xhE0J}t&f8AX224IciSbMaHU z)%}~oe@#ii{|lV_IfMH;9AW=PVEPa|ix`C-uWUrt&`pL}S{od&9lL|hg+oTb}kjvv_y&+^xzdV-~XQ6Z?FW&t-`R$KcG{r`xqImJ+J#cK23;8sFq0w*a!b>zI7xg z?{Icwq`H$74&3g!T>w6fIncm;8^;o~7Go7T4Q}+}1qjfom)mcMCDa}+BOT!T>Fb~y z8U8FvX`iMJopqm;+i%*G6dhh`_q7*7MmP-~$6A8LUv6{Cx7pdTP@It%Viek#W+qoU zM1{{a@d7p1_;?2nhCas0X|N?~ThDpt(RXB^sOnCi`Ae_a+HVDR8j zeCe0%T75m!X6#*gZnHC3qwaZqkQToM>}Nno2e-6uumyHX9giQMZx&(?$+OT|s!pA*;~ew?ESw;aiWwQC)YPXZ zCx|o?EG(=xbDMn_BW-*u=Za~G9zWP!P6Q{)-^OpNb}(^Yd`{3{ox@65J13`akGWvU ze^h2K)Z@680AIivlkL%C(f=C#$)@c7F-wHzk^=hPN`R)vst{>9?KxC4Q$ zHHrD`HIO0i?uvOE8%4GHM0O5A3eCfMet)e=;TF)NLpISAVdI*?Id~5KJzJnGE^?cD zKV`+p7v(KZYFs|kfAJu{vDSREUV$ss0Oyi8XmZ_X`m5G2cC$E@FfP?|$MK+6+{rCc zS96eXVm?PL#V_f-Pe~s*PD(Va4`N<1u-KU2Tr{xs=T&Q-%L%xQ*tA}$sOE-~XiFk+ zt2vp!GmXX9Tg&`>{S$&dc1V9bU78uQneyoX*Nn$y9qei}m00b@S!9pH6UTXQ;dSM3 zCO@~tC!LAb!sYs|EY-+2afauFE#^a{~c3v1mizAdnOc3=D{%%`~+g z-TrhAG*Z3|ZQ-J^XfcqLk_dL3m)@tN`&xXUh#|c=Ev3Rg@R2~(&Fr*a#|8An@8n0i z*n4rm?R=C)+J~49vxdZAKM$uaK@s5-qKYxE;JlzFi)@}$lCRKI0TTN+dacedaj zw~-J=k?j?y(M%_6Vq>#VHyta1M_2ZC~kblTvFVCLXc z{p{VYrunXPU0BNltRlO7OW-aF-JN;1l#{4rLTj6O_sd=0rJIG5_Cg9z@B$MlelM@J z;X<*{jnsJ8(L+M>&S?d?IK{+!Kl?3&$*}2q4s2hh*unyr2K^8moxJ(Sy(y)kk@;gS8_IL-O-9%C=k7kdiPCbkn z(5X@~p_Bg0zKh>Iu5{3^d4bQR7UjieN2pt|TcEUlZ%ztT635T1_6u;|;ToZu^pV$7}~2J9Ih=VI$0H zD&SgC0l_KpMVM-#Swo21;F8qfk@z9qXzyJ(B|(fJ+zy8dN8+>{W)qTV1RhL?L%3hE z@G)vMM-|wQ)bE2gqi~?i3^Di6iq{N$6%JCdJC{11wJGy5+sOefjwbOFbCCs z#=iyr3<2&PM>^@`Up^z$7Vy2+GGxB=zM51@Gs!G~-{?EW#@m|{k&dm~+Z$l6OWw!J z`{M(z-?7g5;=$)V2$gQS&qN|z_UpG4 zE7MPi?7Hf}F$7E&4OVRYl}RxMbz1s>ROqb$$f2+&Sn*M&3L9ox0*93m8nmEF$U>uU5S;2IsBqMaPCziV$IH?t5CQ}1QtU<0yv(aJPlW#{^?1HJ0mkLxx{@OD;44_fb=engkgV_H>pw98F?%vaMK@oMGfjGCvK6GF zY4LqIUc8Pv5>eQ)e@f?;vfeHsiP8H0S(3F*A^M3kCHh-5-$$PasO|G4TIdHW;V(Xt zepd83s@}}s|4=cP!CDh*#dap39!uqqSfpCp^LL4m-J<)&3#xJ z!FRX2+pZ;Es)r#Q7Mnc&SyO9Ff=Ccaz8;oX^If? z`pDO;Y^)NUTxkheJhJ!FQys-_r(>ym55BdBPp-bU6MipDW!#hPXUnTX@5PNWG7{|w zwpa!-jt=m9uU>jIybi}~LxNsn1`|U!b>@1F_h1yGj2h~9lo$&wdyQ2`9p|g91#f9` zr6gMSx(69B1)!?fG;KOij)~l?6oLh?utr|iEzsigmb>Qy@Z7jLCOkq` zIZ>NAK)+4!<8>;r(9!ZyyWe$t96UE`#8+7Gwm~$lJpZU(UJr{9tC$#Ao1s9CVdAoU ze=&uHJ^@NxDH{3HS7}z>rqfY2j;lS63m5D6W+bkU-Ko9mjcip^#9{qx-g!;g#LI8Q zWssvr%uvTG_CDxiQ=N|C;nQIq?LyR_RoB0(xdNcA`V_}l8<1B1w!TdLMwvLJzlOHA zyAs#%cF(@6m9Pa@YJ#*k>zXOVNtFXL9~wg`+gH2R19;__Je3(*v4H;-&BlJ#XLJtH zS@D+$=6sPGwLsw6hi$!QiZxlZvWIN>jeuZ-RsbSR0)ffRwn*+-48!8ED$1%SEE%{d zod{lUf`wepwp{W84NFk+v`-OGp4~V&wkFN}d~PO|-fJQHi=p4jxb9spgO4l1dBM-d zoP>J`Bo*pn{c1KIST;X&OBDz|lvtOLPgA(BrMRo#o&siCtFi=?Fs1*EIg#_(PsAVL zyPWpu2jnleb!mE<4?|=UbJS@8hB@q^MX15@NIo@v#V`u-yQS5K1Ltn8aiWlwdfkgw zteI6C*cOE3YmHnDOrh<&zvPNB#B~DuM5;m=41Z0}Mi7t1-7={37FSQbn$vI~A^y#2 zw=IZQQlqgj^9++-bsR_9NHdUYq(p}t!IGCo7_#b%A854ejaLNle%q8ra7zJ0fcx1ty6<4 zT|kJd)yFP8@B8zbO4VbITZy6FAB8E^xt~stx6iSs&z}+3R7Sq+3C#YDIyq7znG_Z> zsAeBR5P$6(_If?IJfcOHk#2wWkQoN7&4=LTb@B4Om)znb8KH(izR*LM6B2Q$MByR3 zM59<+_2zR{+=zTccHz5LAWVtASRwn#`gjqe`1)9nvyMk@Zau&J4?7 znIhU2&}?2K7m9k-3&kgq!N4CMNVzHVF=IA|d}Xe5WX4xlD6*7V2_kP>=B5-~Yb-iob4^D1u`>DUTH^@g;$4J(rV z)Y|X0?KYmQWd(|o6gwTh6Vk+bbcBj@9yINCar1KPgO$E_?p)c*d!J}hWVMl_`@MBG zE{M=2Bz#k6E+p$1A&X0C^Yf59VM6@js~yzEV?Fh>lBUIqD}FL`?TB0=>(Q?|UZfad z&o#jm$c=wUpiv#nns0bx!AQ>kos}9X8%cqYxcbQXs{>)ZL&*e|sI0(OxX=5p0$c*} zjdM9%TW!AJ$76JZzX{(8J~qkYFnq}KrGi)7Yk#_}?X>u0f6?=Nz@jaA6Enz7DXGn1 z2*2&>k9o)x(A&Gsc06`*J9d-2eF^W+{ITurZad%H*_uz51TmtVJ4_GfC&oK-_vW@t9s#u_AYP>RIkQH^*nhrW`399ffuf;QSzmDVWT5p(4~4#Gi2#Io=cMcTzf^eo14Q~ zLf61);AuFp%u4s`ja~JeC5=_w*ZPOmZMjC|J*BgWn{gKj#8Ad~`0b^AVIC}8+4)iL zBb~!uwth%Ybf(tQ!Q!GkHbIP1WlNdkktsK|k||JGzJtw9VLW_e1sw+o{08^zp@qVS-|%MSjK+Aq7D zDR+XhMah^%xzcpPkxbM22QMy|K3Pz+-g;$DjjU__pVQx2T*05+E*deqdTRMK>P18c zZMfWi&eV~3*-y*r)OdLO>8>gc5_R%Ha6Lk2cwqA#P}JYN?iZO3KJ{VUEf^T@LLNLg znCc9mRV&d-P~@*2fE5b_C5*r25rjD*CeV-f`;n{X*_qLzOeIg{A0>>S6wq7X>l;yN zmwh)ik%jPxdM!p0GxJ)T>;1`|dr2W|#%E1GV94_q^gm!WR-jL&J6Y1hhYM|~5V`vi ze>W3lHY=w%BPwPxZINO^oZ+S4WPOpzU*8RaVwyNB0^OH{zZn)6xm)=p1bo!gpfX1C zI{{PdDm%oh6o%*xUeHj_^9ju)H{nQOV3Tz^(jQ8=-v4?~nRd3=0K1=MKKB8xmVNP> z|8|Euvad@{4#>uksSgu^4-gxv-x~J`?OSt3iIlB)no8}>H~;Aa<{NXmj`9K?Q;F*> zH8IMRuZ1LDdkeG{=Q5XBVO$Hk9iQvK4O|>15^!nA*Dt@i#kh`e8{vNXmvo+4d?6&U zU?)!TPI*rWH+uowvNip+Y;2JR{C5{R8~%l>WJ&`gq-*q8j`(1aL*l{}ak}Ph1Xpw| zOgIDV;OJ6R*a94d)I$8@P8(mcD|=kmqe*?c6N-Q2p71AHg>{E$I?v9Qsph0mx#sz} zD6v2Mi!6Kak$;zci7^3B&$ezXt5&t{;FV+%9c`L3<8yg@j`%F^?$n9D+Ss~+sHb*= zCY)|vpuN@mnE<-NE=u)y4DRcW?>p0CB&Udlz zdu7>+u&L3xBb>_^B3P@+&d@irF<(KKmencPTVuc;h>JXFi%cGVZi;q__zW>GR|OGb z2Xv(xZpSXgwX1iu2gsk;gi}mvaLzWF}(_@!R8mAa#EdBKV`7sX0VGsIBbpK0{FR zYOQ=T=Q+3!LtPT&>-;>+iUH>VMPn$Y;FlPqooNrREHtd-{^XS;tk7;vWA`)p!3WG9 zWx%mpnU?$Wy!}HrPLCyHkl-e!3B1<(Mfi+y8^ho$VH|VxZFUk(Kv~*_Ji8vEC$CSKW>dtb!@5UL`uObm1W5F1HsvBTdpq7-E z>lRnm$=8tEgBdf6)~jF5xhTs}B+b3nj|)-m1aoZk7XyXU?#=ef#jS8tbn&+zpTszv zs@lB>>1_8Wmuk0cjOB+1^v@Ec*QVjpLB)a=h2rT+W@rquto%0Vz#4p6g8a60ac;3W z)sN!ZY~B@d`$T#GF8#xmBYfF8>p3p*MuiVJn3{!I{G<^-Rjg{U$w1kB78#gp!xHM! zQAtW9s*1s19;mldLnB?->5F!aB-;-Qp#nX7Dvlr<0mL%)*l7a3Jpv*o=+^A4n(Oy= zcg8P|5lY&&p{_V`RS{y$E*FvDUs;@+?QDHIzr)QqP|@={I-b-&dgLw~j?@z<5Qse+ zvi;ah*FL0(nvYC!MxIw{Nm)-XZF5pprJP9p7t`qe&_m*5uA45XA(cN``} z9AVqYGC0Yfbs6-&ykBLsmo5-bYJK&yF=ecubc+Dx{f}1jACD0t&{Xdhe)H%MWe*zGdxTE(l_~3^8IqR$ngn%DZkC4{)lhwHsSi*CJUv0C9LHbjkhg99me%~ z)-C%dHc!&FB){PZUQHmzeNF*84%2k4rx@$y2f5Jq=H-3qIe^Xaw06aQdxEV(n{XysygiLUx^N}%QmMzp6 zkA4P9jThmGu}?MjIs0=ED4!a|3ja%nPCp=u!2K&WdYc_MgNbgx8Q0kY`3-B zBE?-(+}*vnyGx6^I|P@a#ogTk4HDcbR@^-}1&RhOu08C%&wkJM{eg^(wVv^;Tjso` z0O0~nuRn)b7Ce>j6fz|ZN;JuP0~!fl3&@5@0frxGQZ&!hCE62Wx#CkQks{xF>gmWyc#EbJ@X6o$Vf=Ex)hv5omuZS{HY!? zXA};VK-51XM1)8UrdO=2A;5QJeBY26Lh02D(Yk2$)#y-4Jv25~Yx~Jx-#z8sLMcdg zyx-;@FPI?2&?*jF8VM$v_fVPna8ibEmb27|gsxAk z&YGB-Yg&9=B~^7UDXd(Up~Smm89HIa@S9?5bZt@Z^qXDuKC#0uc%710vHL|!*rsIF z(Jl(3pjj&ZmP9&V8j@!mI2s5C&qo=Sv%*&saASu}D}sl=8PAqcbU@_o;~h*t{P_E& zxI?{nb*Qdf-HD&5cceE*O7l2IP)A8zax5zx-g<@tvl}_7S&Hr*$e!`Tc#Q1;3LkxB zbNT-29ItJPEQ_Mq_+l4&W=FNzZxypr3(`$J-{35DDJpaU>*fs8U2649T*J_eF34(P z9Wig_VE_>AQk+E*DFHaYz#~8e6xk7EyKsn^H3leSAr5FrIbkK`g%zt4K&%%~x*v*! z@|XbC&No$3=>(eN-zye2XkQ7t!x)9fp_{{>#{SZ&~NfX0H|3!Qprx@Kl>$o+G6w8-D;y=_L_-c7V;zRldj-o6?dTTHM~F+vf3}U0;obgIn%Ckly{4c7VQDc8xiC^|-B2>6(m0@wUPC4%fs_u|0?Hc$N z1^%?^(Kt6VcGw=2uXJZZww4~uw&B&@$K2SWyv@S9&*jkyP{ORS^I{DQXeS(h&>2Uz zVZJlrbyEtY9B0)g@u-<0{2HDmy({ew))=9H^Lpnn7s1ld@&r{2xWsGiLsoT_cLF!Z zVIdRS#mFxN$+GM{8V$HJK5&mZBGSZSlsWbacc&G5&SYriv!ze#u}kXe&!8iV)do4} ze9RPOvWGG>SnpxK|AkD*_^2~Gl~YSLnUP`aG>Uljf#gtz_3Hz)QUhIJd@(TOiOnhi zL5$@bsw6**|Mh+`wJBiF9Zt7d8vA0pQ(z<=k9i-CqpX)n>UPKKtZRLL^~KjoJ5#$+ z_cqaI^VOjIcjhW$p$-~RfJ5E7+by_ydCBQst726lYPKEIgv zx-D5RBZL$CW&3X;_2xM?c;e6~LlW*Q%|bz?^o`KIl9snzY|s=nCrX5#yahMJEq~GP zU&ow>R!#)_rrvVg*C~(EoXVAFMpxvO$1X<>0m7{6o>DkDyPz#g3cMg}?Ay5kwcMrK z4;%j!&Tn_cUQ^fqG@QTEw7wu4+-n)#;_eJ%La%(D3qjOk+av$(QJV^jXxYz37S51; zjoL!3X3^g$mH&4?NNH@3qyWjp%+Nw(!Llzo>-%~$H?3f^AkI@W;Y*htprhyL#!|?f z&Qg-5Z`|?iI8UjeoUN}%9cDryT%A4({{ZOgV!^K#5i`~rRO2P3)e-Z!40s+$eGHvF zcHe>0GFtsRams`|xYh51ytUS0DFaieDVAd6iZvh~qgT=Cr{X18EbbGV{lwmC9hYF0 z=A-W1d-iToiXXZM|G1JyC{+Vcg`^PR}_R^?+6Gx$RJMJ6szXwY?iahqM z&V3M{rHql)z~M%cUJCQseu!|+d@s+!NX|z~f@g~u_AViYNxQe7c3y+n%|uRe_=9DG zNk{N+R23zP4?8o2O3v)>?I=D^=q@f*Lm0ab`&ZHRB*kg3v`f)+6%pB|bVJQLc>vmf zxfM&vwEZ~{X{&#Ce1pETR{EBJPl$#b&bWZ1_`X??2xcFuyYbgN8-zcn7?C{gR4Wt5 zq+7i>V-`}Jpo);n>&xZCwZMXqqMf;^KDziLfvT>c3Y$)eP%?5hCB`6L%V_)5UKcUM z6^kyMp`ON-Lp`MFct$hbvmIgTK6S5@zi5Nr%FETT%obkMr&L4Gp$&6vq9Xzbq9QewsbdUC7+G=ZAiB$ z5M$5Hz7O67o(^Ci9|90uH_wg8-qX61=w&ml%5^x+_aHt4wn{V20-C0Qg&5L_}vp5_LiD;auT5!za&Fb z>0Ard?L8!19B6}G8%=N6!3nJSrsMG_%8xwC;eUv*ky~)Syj1HqXm1)+1t2VP({_Pw zm1fxX;NJb3KzNo7#W7Of58YLE#keZrnX*6o**t`d9`q4eARZ(hj=1v`iFr+lcJHIy zC|AhGNY&tV#*Xh7~P15&w99DG*$Nk6YO1pcRBxUP4Q8s7*0s2tera1{clBjn* ztXsu2*b6C(6SUY6V)iBHI>i+QgbrqYJrbQH>vv7s6jx*e;UTsj;&!a_ELaLs--fc) zurm}7H$9xV3BDt#xvS4cdLi%q8I-3{VYp$!k4qvRb>D9@PByh@=N0#TXAwqg3#-Pd z)$CXqx5GJ(oY8(CVs0uM+4hkD2zaj~xpy#3fk@%rr?WNPCz=8F<+pQnVMZa* z=G2yWQV{Ci5C7huuz;sDS0~4-{=f!jEsYd{{AFR$r`8mnf`g#nrrQXc1imufhh&-h zVo2Nb`woc%^dnw+iFBwj>J-u<2!5)+(Fu^qocJDVBJ{J=yB>XbG>0!-YZ4u*$a|rK zYoA!aW`|p?!SQH%5x45s-cSMZb^`!ZGnA25zl;t2ZL=;u6q2OSWB`6CK4tpeS}> zH~Wu}?rqdDR`j5G_i)zq!l|CmZExBPp{R_f??f1}X-*M59;O*Ll`G?3+$U@fp&Mb2 z_t%EOGH1@nMA#fM>e|M?Aw@qle|K{r^k@}LEU0G2DXD~RRKS$15UcJ5d_EVUz8r)y=OX*w$-JTL_!;`WiE^)<#~o2{2Fghm0vGiVp7nanDzgXjb-tUj6zh-^g- zV)Z!}D|>E4$%5#*+!frN2X;f>*M0*}F(srcp87o*%&XKSzASEOqYCytXP|!?#w1;s zMB=mssV9Zz))UF5p$4see4U)F4R(0`Es@Z*3H070l&he-l~NxgeM{|;<0$Sv@WEoH z(;bUh`1iD^C{9Be8gIK^qn&k-eMz(gtk4H4rGE-O@KzOjb~Q84^JTkFHe0U`98PFm z4}Kl3zzp0Q*A*rUzm_P#zcTExw@{4#qMh2$ngL34UT$aK(v+93#sRXjvdQ@!yC+7?;o(HK>rT!(}x?7pfET^y09&2<$w~I8>jYUvV zWKK5i9w#Bhoe(xjlrF=PrP*m`n^6n-Nefyube@M9!_rT8x1RkPK*U;OhR{Z*jfU$e z9ajAMopBC2YpU%u#S~QY9Pm;GYi%%Gx#iACa%19)I=w8f9u*>QiAGs_teOV?aq9b2umamwH!TP zbZc?rD>RE0e@u2k`a|J*Fq+n!$czzF8XzYpi_SAtb~>KGV=$ySFs8M3Zy-L8w4rJ$ zr`bXAL6U_mf=|imdO}^vCKtbzVKK}i70W$fYx{9&$TQH|+_tN#2NhYHA*1~J@chk6 z`4S!Uiem_Vcm3JC{>vfRA&_+VuB&BJb?e66BQ{maBL4KWd-szDH(9J=xMQb~=ie@c zqg7T|;`!&fr8Twy(E#g_xSYUGOOF#u72GYb`|ixb$#fJ@L9+;|(EvO#|+c!Nrhn1A>Do zLIO6PW@pmn=Z?{28|z_Asae2M{+J_IXSrdX^LfV@WWoyexNohBM2Q2|RX$o6@z772 zFY~GWA~b&!Q{|DG>Xgf$AACLgcfG&7wVPK=l<)DxV}T30;bzkWdHo}WId}}Ky~eAA$Wg5@dihMY9PJF^#PSZgpL!GlkHzOUtDp7xoR}sj`KnLJH?FFQ)e^{- zp$%R?v13;vgu|EOXmbrxR8;D3;_DslAMZyau522AzHD^X60iMRU(ey?HlEyQhF+7)1}VcS=YbGgTnP)-OAI?-ZX$5*#aNU#4kCpC4wJm zp$>i%EM#vq$;G_Y^)xY_QaN;nG+g;b`qy=Tae0!ydR}1nZkbohL~!tr?WL)?`mcpb z6zvdYBuZ)x?gG_>eDXe_?SieDIRXC0I!z~(i14;FcCTyTzBM7~+R>Wu7gk*)I=I}A z-&G5g7H!nXMc;h%hSb=Bt}uPi>xmICUEMp6%3l zKD|=OoefE{lu%Y{)KZw3nVkSl5pG^Oyvaw1w#?DdZeo(PsihTPDZ(8b#gRZ~p6v4m zZpw}(-ha4p62GTA*81Cj=nfUwt#J_A8NH8~Kj5G<@N%|4w#~^cP+O!`ilCAlY2Fyj z9(*i+oRcgrH^NW*tEfZJPpj= z%|wlOHtdG9Qzk1k-!WY>r5DR)P1&U;+ zVUMni+x>pWZb&!Ve3p|Ti%dxd%&*>Zor`szi)J>;8Sihz7b=KAr`wN)t}deA)9)DG z6Ch=G3wO{xLizdE_)3MmoVFfL(Egen>-7AmYhZWj8ZmKqg^7 zdL4+oxMAP!0oBp#f#rADHMwk_=rG-Eh?eX~ZN%|34in&dkXx#k<%{9`>8(WBRN z`uWLZuX9gZYj;(z>qAVWeGDI#J*=aB4_HeYFv!f;{kRC%x-r}N)WPZ!kdGaI8Z_+> zKzyuyxbY^g|I*byTa{M(RI?Se!0+h43-g0?ZnEJCw~i6PEi!?)$`<^wJo0kI?rY~y zN#kLN(PqwFcLgm@2A{o*f9`hk;~2e#t2Y+AOg5hfsx@b+HS=w~(El4%F0TTuPk9T^ zENpFc10Bw5TH6QBjnup=+xK#|d=f82D1BfpD(G;5>t3~fzgcxFo!4qNTn4FgO>S~p zPCpBIpR_%OwC+`uFKyn$eA@hHP<_#dhepEq||r59wxpK5o@Q|Z@1iGy`-(6&#Nx? z`CD!%zWajfZg1t`(>sW0F{okESWE|~5z(C6?dx8E zkBErIZk>8H)odMT?(_=M?5Bk?b|M{gbmdSf*>LIb4Ev={sEkas}|0&`@F z1^%Ha9;jns^W{p78KNqHE%NeU2j(UVA>`+t@qy zx8&Qmo6DA>tHg_1tcT6%)1HDvkxp9Ic$ae_uR?iDmXVEQbIxeuP!md&W8xwEwpf9r@yZGACivMO&& zlRXYM9ol%cOXc{2&2jE==`4fIx>x0#6|U57Y*I_hA$N}jgd*NJt`KD#|`@$B+c1eKG%W76;mimR^SlX_fA#M7x9Zp@we6Pb}Z}YZf+td=C(h;?}7S@2z#sc-dO=<|1o_9 zY_Ur{P3Cj_Yi};@pyMDR$RgknnLFkEdq$v(a{So($zkIYhUk6s_t&dnFxwx%6vf}ii|i8Vsc+==bg6SWVjTpJOQ_}9>YCvTOs1;#M8BZ+1_1i z;4}^p)7%gMTBl&6nlEw{_FYZ%dS?B><5bT{=Bw;P<(=}Nh_@o@cJ^tl-`!1WKfV#0Iht=JU1`S+?i z--ey&wlDB$`#JNWTFHTdps zo?dmLP^9xk#pSQ#(*S=DepS`4wDL8f6T{7#jOphKIklIUEzap0*eU0{-RD;IylhU3 z`fU-l#FLG?e6hzw8*<+=w-+HsX*cWD8f{MAlI)Jp{|+%xQ&T-`rg_mYRv*mG0{X|w z*@Rzx?932zBlRjNqE7=hnbUt(vL;_M>FjgY>SK$FT@9o@B-h)#ZkO(5XAhzt3}KQ) zS#zg9$P`fvT9CoDbJ0w_{h7h&QEJSfKsQIr{Xdtxn4*Wej!BZ8>zXn`Oefj#cXT(1 zN^K#Jw<&Qi)9)#H9LoZ*|XotcuvVqp(PfO(FrLmf`-}S^4EhWY6U_BGO70KE}nn+-yRUUv!1d(40b^b z4ifXPj4&zxJOw#(X4X`VzjdM}9gy(=I_)qx3Pz+QlC|voysvqqd;1>T7V~7gm(o<` z`XF=851uJ7ZAWHe2YV-H+scESeSxXvhhlJj^a_|*s)C4;c1Zp=5*5YA45uFlhT6=0 zDYjZxFUFABY1Y(4;9a0S9!9I0y<2bnf zw3oW-xZQ;9L|d1PDz~r$MlC-*O1MPglo>22hm9IhR3{|;$r~y?HE6Y36I$~=!Rj_K znowXH^SF8dgB|tM+&l$RCY=Lrs>VHHjiAPz+rU~S?kl$9As_f$e>Uc+EiUST!o5KV0Qa<^d_vf^H$`1(PH+J-e$e~X?HsS?mwwcme)Smk1F$-^pI{anjLx4QUgifat~RUbnYv}!8dAG7e{*L*rWL1@ z9#UlMoQX%3?Ssr^p*MS;OzHTvlr9YUiu?F`PaetDW`c^@7NMsKukP8^I>Xy@$@6+4JO=F}hEpEPc*Kco| z7bE3dkJWuh`HNITP<5bIuvO<#HK1=KWki*)%vTl-zNZd5#!gk&1Z(H4t@$DPSzO-R zldFVqSOn4Kk_vGPa|%-uSxm$ZmVzCb0Ew={x!HO4_I7zhq?z&#j!tm{)G6#LltV=w ziS-cJ!UAxQpyZQhkQaf*gs|=eK4m*ty@0%Mbozj9xP0tEQB*IFjI1y>%gNqpmSJj| z9ixyG@RNftz>9&u(-bSG(5SlOws)vcS<48T16l7c(Q3}k`7|F740WrcC|&>xmla2E zU#OV&2^l-!0N-YGm*_yUUpvI zb>NoHjs(40-Z$D0&r`9?(J$;6@Z~o_EGf;*9$7O!mA-DTC+(#sF0f4<#z|k*2-BD6 zQ5T?>QRY;OTB2xb43u_Pg-|sJ%Au8GSNTxQmP59tBv6Gnv_97)p#raJSyY}j zvXp*MJ}F%duJHHqJ6;KX9O=;8+{GVH&;CjfFI~Hm{;At_=kpeLe@x}&W%Ti+Z#v-p zr>4N&$ofG4Mpl*i?6<7D`(Ap{#{HpBI4U=w%geX%&d-3eUc&CQ>Ty*P;kMV?&mFB! zJRO_i0&ZZbFu(uV_IKW`??eE_jBlTk<1j@YnhaP` z*lH}z|Nf>VjV%YleH49Z&rYSE+j4L+>OA{R*ge9ucOd#$uTmQruf?=4CkudHQ-tnM zeX?TEM5-qz*w-{#ti)inaOLVnL2JG&fXL#!6q{ysg% zNo@JfFxfMJIX%vkON`HMa95f>^x=R!aH1f8ru{5ucw#thX9p873ot zoW;%g9shG`$3clylX@T5S*SBRgh<)2pJSC0+geEjzq3tR^;6NBtR z(fe$2X`I>P{{Dw^kqM(=3hB1ZmG5M-qN#=p-azx>y~yvMpcoh1+XwVAk|CL@U-}ry zvK36$I_?L`E)e+Y{@_qz9X%4?y<2J{w0c;nm7gKmphmmNFCVm)VY5OZ8Qya&jQ7hxWmY z1is;xt1HxBHnK78{UhzO+CnlwzaWrx8!r`2R$iN*m;&N;4&J$7p;?cZ0(k%XwD@&D~2Y54u5ZW1s%nTkq_y}XG z$bO&3sO8(UjJt8sk7c+G42H6H3g8xu|A4&BsXgeYtQx_OLmijf$pxj$}fC#og`o-R)NHJ}1{R$Wy*HF5VrC z245yvbqO;no@@}b^O$M*?6rsHv=Au6k+<+9TGK5Y|DROD1TcfnzsV;ms1WL&ScqBl zO-W)sJfs})_RXN-0MVg*mBEe+5KeAVt~y?hJfNTu2|{5RC;B+Xp4nX$V(k*$m>)gx zw7MqBF9@vEjxl|v($;xF{os_Sk9_u!qGfMpkF<5LE)%7`F^7e{eiN8`h%Je>ugx>S z!58KHP+b|4TnMqa&sJ9oo1>7Gmu5N_#@}$QFiba`kso-29i5^K&)3aZAX5smuYItX z=i-rkcK=Eh$H`ZcVbIX`S5=W2KwG|@NeZo>^vT28Nkf&VUibha>kE`dFTvfqMDV6) zl1e$I6DGN3B$%L$92DNF)vb~KfQ!}~Z$Gwu*8LGonn#*&DK#k9g4p-V{bnVihkuHQA!|%> zmf!Mb(ow;+rYYC>lgXc?ihxCExt&jny`<1vo@CAh zKb+>uh}DB;Fid>#!JbQHZpgzisD9Uu$Eh()7k{P=v&mtMcR`w%f+%y=; zrc0lu`SX~(@Ns*A76eB!`!`s5?5>DPgNfXD+6$;fU#>BlxicE>q!%#_92XDgm<}_c zlQfmwF7hxkqDL~DzMO~}B%Y_%^`)GCyMwj5Ei5F97UBIVJP?Q9lpMuvnrxps7~#_x z^e?mY+^VBwluMhEY$nu}tiGkdP0DZUI&N@r^Z}B>L^;9dkC&F~ar*7;2pk?WG@Li` z!ut9w)nkQEg1XeR7bLkk&07Tu!9~T+8c1-(RGH_1PgVbae}fBBk73ZOE<&XR%BW=u z=LizoKSb2a)Y?L;zx)KTI!x)VhySgq8^Hg#b@wJFv@kBB^ ztPji@wAE%Mp8iD`*wie%7+hCbihV^cS&A5YWfvKLZ^Hrz(JKCwS+xHvuV=m(l}Bd zL%KkrX%7v~G!$c|ZsJ-x{(TT0+Xx|MJe{Cq4gd*u zmilN&`mZ$mW4vS%(UBq&9Nh3gEDEjkQAG(yP)%jCrU;ek{I_P53_;CKv~@(9LFv$S zk!qbH;cdgD5XXO&jsifcK7$Wt>JFGe?5;y;?H`1R7_4uECXguYKOxe`KC+ysDDX`1 zVBf3u*DNe^A7YTC6|I2gwix9ux7@zoFlKUHNona)=!Q#AuoK> zj$!FBNTx9V_rkl&Q65rf$SI9J9(kQPFsElrN9GfNKxv5;(Ldd5vS1vt9A)=@4dEPu z;z6yuOqGm>7ss-dYc+AE zr#AQWyHy#;>pI38y=-f50E>;!!XZ9_DL&ks z1~zUTQ*$PtDf9ARSeV1Y_Y7q;xa@}CBBu6uF#M5JqafEXG-{w+JQjm1 zwO{W&69MkW&mg`Eaa?3j1IW1QXT9f-%IEIYL%6RH<8B&I)Q^7Gq8YsQ(oH#uPqw{7 ziW1+FQixDg*)^BGtD60;4qJnBY3|=*+%&qpxQH>&!B1Vq6^Sk;)d*S^8{(OATI{Pltz z{%cjADheO^T+yy;;At=7WA~D)jA>tL=CZ{N2toPlDgMogDOQHSXd!ClDKGTh;A3C( z-AV98|G{Z2wCM}C+>Xu`qwa1cu1BZf4Y5!;&~c4L7YPZ-chaJXp8 zc&){A5V2)wH(hzbhE$hHey6pA@Toi}u-)MGp0nGKVD>M)`1;cvrcwW|CBx&O6l=N}$No*}xnHm>W5zd1U9gP-L<*PxeF{=!$vv;3 zp;$7;uqBF`pd9=zp+ic8|ML%byYBX|%Vy!h27WbJ9H7|k2sUkkepu+gjwNA$4E#{>OUH^uJHd_Vn{w4wmF{Md2F7_#199R48P2|Fa#&~zcyh8 zGI9$_XwawRh-g=1?0G7w-7bPlY6{yoGIwc1CB?vQh17&nV-#s;M(xqL<8A#cT(1$A zn#M$K@5l=Uy76P0p%XI1I1)~CbEp)L_+7=7 zrwbRAs}w)TtI`#~gkhDRl8TeneR0#wL$K{2OdaSW(<$u@mF-8$B)PCn@mx4jc}T~@oM-hTC&QywL@k9y zqy)DyV>JRdUehJl6GN6GXiMkQmqjOKbjBpM07~)rPk)w!>>ueEw6w=heARRuFtsPs zY>jGA*$1`Rh^|b5Od7&8#pP-$*Of}9+kMMn3uz4iLtt2r`oeK)O$$)Z-q^v#3~dN2 zWF4O{#eDD?0TZ&=*1ymzX|NK~ED>2E`2JL%sop?!xLW01w{5O5AHSQGRt?QMYY&Z{ zCRwIx;%a(ded)rTc#}P?(Q(SjWUTvR#yR=3>+D=;bGtp`!#pLYoVrN_phe90{#OG{O0_vF?FfX& z`$LC)v~o(E;9iU>x(I>Z2L;|_-vPlNGgZB9)^Q9xTOL%Lv8X=+EJ;|9BqH<~_1N8P zBtRRQNcs*ica5A5lpOT=R-t#YNWSSYWU&(P2_c-~Z_5Ln?MG{2M76J)7W!0M9|$bJ zj@bgE^iy&5bvaS)+g9n*#5*0<7I@Nac?6wQu9>eS9)EZny6*l`3nD$^SucI?Ra zn230ob#Hh@STd4ktk&oSd%E0G6D)IB)HZ!6IjwuzQBTosproi&`zh-0Xm!1HCS4cD z^jj}vPsBrJ1o)_aqT2*b>C%Ze`$F~%`uC%EtxBlhiU%8%)t`=Zgjm=RS8u=PyO>zX zsr+qkXHFh5$4qghTGsKo8un(f_Mk*FGTEF8@vdz68g7{edJA3_T~PXH@7E`jOhetJ zXS0Z$J(Z-241P#10&cZ-4Uu-@7i?PZ9?g@0m2C8m#^)MYC)W&~EBtxAC%pNr z^Tr=$2r4as(Cvb9N~KmbMTx0b_h9;JvdujW{eqcqTGsvEM6m{(_ZX(W7K{7Uy21u9 zABw*by~L$EYnn*;#{|u$Hzz&82%}*;YdeBW0ln8b{r68E=nH$Z?2$A! z{xad4Yq~0X7*aH#8TrKxm8@;Pz`l21Q3Y`$iVbpfhpBqZ!t(YamJ^?K0L^5y}&O~1te&l>>v+|R1Kad$xq z6aT>a2hO7IlW<)Y-nyQVmN1EDs^(rnIr3K6)KQ1&7+eC@8A8~%b{N*LKbnqR50Rs# z!<7-CW?%iNmfUZ61lA_op5+mOhmk$ej3Y{8uOlH$T8d_NZb_hR$YVWP>iY)^ ziG2YcbA-SM#5W5&6OmM!z2@6wa0~j`XRU^tUJd=+7tyT5?5#j#O)tvD`z5V~MhLyW z3Hw5#Inf5g9+wWi-tt##0G$p{PXug=;s6Nee#F)xe9R->o)TZ~ z`m**FdZR2{FuunC8kN?xZ_orU2=p=U!%)BrCd$(N(^uB7x z%>>0xow|q}?u>ZJC;nMeP_n8V?uWuu`ohm5=}gVGiAGNW`?55I&aQeFqXCYDgglCH z*U_lR+!UwtO*h#6^T4m+f+8a4o{3HKI1xk)e8kzX+^4+k4(tmFwkwrNi}1jGv$%Hq zXi%;M6iK3HbU(pyI8jwBy>3T226z)j3Y-j2O5L>?cGn`{O&5fNa_-@rIUb4se3+;R z@0chZ1E-lT4{~(PI0z^N?6;H|tisj`g&#bH3)ElhW>jL3X(Ok<$-#LQJY_h)cRTS% ziltho#j7u3MCu8HQH7_iUd|=?f8;S**N`#$*1Ld+I{KS9IAB9a0q zTtC0JxL|t9$|=2>y?un=9T6N)H_ez)196&Ac^m2!F94VbQfyf^8i$%mqZKNvlyF4WplYd%Znz~S1Q0=zL;>;N_kb;2B%6;P+mj4O zjyw)>_*^EgAz;6j^DA2|t+M(-w<>+p;8wI|2v?_m1GH(5Zv0STrYQ)Vzc-CS87^^? zzvksgWXRuE-UDj4dg%a8s!VEEB+cpgzv6$;;j^XW*_-w*eM?U5HG_Dz*TYU~67J>3c&q9|cMaq$9u_ntWwY9oNC1pYS zc5%=f%e8%igDt<)Pn#ZBYi-Q0cW}XT+0NdMJw0H#%mLtOUnDPi*Il5<3WR}IDc#+O zW?l=L&5qXz>u@1i-$=1tz_t>-BWbNI{wzt=eIN)~12~+FwfGl&4@o2dd~8U4Fz(i7 z&{m8vpK2zhs4}~epYjQp&cTVd<2EKA_baGytLf>M+wH#-?z6P$I$P!a3^`kC|H9Bh zlk-{ANe9|^+JDl2Vr1a*iv;c$oLrdr@A2r$mW^y@CnY}r?gKw#<-}WF&nGeq(O)>| ze76+QS?8_g`Xzp4jJnW#Cw3iXu)MuWOQSkdGicRC-&@6_L{PEB3-lL~d)`y&t>jV3 z=`4-Qg8~dQw2mv=ZP&m#ayfJ(`G{J>Jugd3W_vRJWi*RyPZ}Ah$tQK(M7GtK5+}55p&mXHfM7s~9$X73K zKibkz1)eAWAF|Fes;y{?)@^}8i@Uo!6etdDad#;$rMSBncXuyt#oa=S7BB7z?rtFj zl9&7BzBk6p82OnWXP=z4_Fm_kb4o&Q?SZ%T-Gx*a5VhxXkdxobX+~02;0NC>d)hDk>VZ=6 z;ex=`YU^FY>+mg*efUb(#%}O^mR{d=!Rm#;&~MO7QZOAd2v#8|r&(PIJ1z>}-5VL1 z5qpx_hE%sNojU_A*Wuf0PVg{Ep{v!I4p3XU`A=-x-D)^kFaZgv2MF^5)niG5m93n3 zmlj;MT8erQ?JSQv55apJBp{ZSGNFtQuzTinYZxzm_PbI-)EjozcIn?gvU+yRC)a;} zZV!Z<9xv(k7zG_rOU`w9`X64@HiZcEXNR4_ z+YM%kw)-h(yVb_oj#^Ync*JlDtwoOd-4IEPwDU^`H4nb)ay9H~1_pi%k>abI{*=>j z-hS5oeRH!xognaBA*H5np)u%fyzFXTqfYJV= zFYVD}xv&FzpD}ke@(!TwYL-9Rcl29YgNR0k+z+t>w#OR!;M3j}c-8J{gGp4uH~jzz z_KlZ>IV0dM4Fh z40`_e)D9Fp3-T;Bc!Cv=KI8{2HJ6-_qjc0Z-2y4S{Q%@`C2B=$(8<*o+`k12HHlC_ zPf(!TOhu~kBF|Gp5xm74=oc(iQoN%FpCE=m7j$eagXY$=>*3?>p!Gg4sG+luc-9*J zXd&bP7DXj_KiLkLQpc!Mz<6QKU5H(rJN4?jiM;P|Y`B4lgL0>)V5j~;VM;;fevfHM zfv`UB-af{4O;0xX>7Rap*XH!Hk>`v>*VSH(_?t0M54eM;!e8~$|74+sTyzOu+XJFZ zl7??G!)qrt#I3Ol5f+{wB_Tav*a!eU%K9b_d=3Chf#7@nf&0!+1Jt>skezu`|K&R8 zW2d9PtHU$muyWB3&_nTMpxt4v$|mM{`=L<%dUAacJEt4hQ?5wxA<%nx@(5KDQUvn3 z-#it4%gQTp_mbqj(Dst&AJn3b$S$XZRYo0x{11^tW)I(^n{M3RM?60V!%s|KuE{0- zEzjn;zjyAtXbb%p^$-N#+slyzTp~dfkB?T4(=3@USA(GN#~ah2D}nyo@=5^U@D7Mi z-oPB)nQtuK8E80jpv_T7+Xa691HY>P&FD?cLvn)s_U3WZ25h+n*4v!d8vUh~*9N6V zF*pBKXd2p$zuSNR}@AUJ{!CQM%rvH;JE+(8g_)5jY<$=lT#@%x3s5Ex9o=+x?M zxO$gn$N<$e=Ack8EP$&B;akWT6<*BFKmil}!RzJVZ?+p5d`}IpD(|`Vh8h_}+_~UF8{IH00_U}yq+BAL4-rxBdRSF58161tM4>=)u z_3&BH^HgEdvn2xI5b?eg0T1DWU}sZIQ^bwjq>xQP^^+)c|tmd{O_8z+}g@&gu{SjV>1ynazQt?M;DD1i(xc>~yII z1g|f&elXs|hFx4rAV6Z1-Bg_2V{G_faYI0x`^3i{?fT2po)ehqY1j2gH9qsZMW}Nh zA$=XcD4)-0K}+S#@X1`=x);UEh~S3i^>sfK!9ZUOYK^LviFW%n^v`mok33vDf|>+? zD+^8TdRE_w@SpFZBm)q=&i?4q8Pv^bl9eMF3;;jb7ks&x+)W~^UHu?w4%U*G5#+O9(0zHaK{i`#@^=?n2 zMsC1m2UhSldbqj;=@3nF3lhgS-;1-a)6bbI|&xi8-iMtTtsRd zcs2YBrWh`);~8vOUn*NQ>nS8XOAwfCU)vP;#j34_9ZfThX^s;ae@`CF=5G96W^`o% zb7`711?qJ#=U-q+%_;s@ATq;)l7RVrVLU^B%jLG@%M-}KhCKaC;$%|Nlv=(0sk7>m zq^sLZF*-BA{VJu3u+MWIGx2aLi}*i}8lY9kI2(4K7j!PiT-fq!<(t#f#$Ck4$h5K; zq*|`u<7i;^Kj**1M2a5w(>jpE)nDhJMPtH85mc*@WuES7OT_RuPI}cf1-Femy>ORv}P~kAu`TG9+bSCif>hElr zHTGubu?Ui(GkhJqUg$pmWbdEbBl&m?zd1)rB0~dpI(6(q!AsM zhBmzY!NF*LVLsJ1pM6^Gz*^$*8a_mNX?xabyNfy4vRh$p%-4C_gW4~tl@B??H+}Ig zdZrFLe>q)Sq97OTtMj%L$yJusDtg-N@Atc^;TF5zI`!VvddRo1z0PeD6($zp{eIIj zDwk;3U5&q~p_4;mIUk+deT@G7ctr5w#cXD^j~WJK26*p9Wl|MqbEFd`VNnle%d_5= z2P}5bSKKG`f!6)K;91~+TU5Cq{uUu<2k2$Ait4rCJJ!YVj34o%V~m zKPFp+0<~y{mFXi1=maIqN76K14*bfyy0j#HvU!6Kj%N9i;5N`a;7W54CAjaKrF(PV zW~>ZNZ>zGM48NTn8o7vSYuneHbSM25>zRVbKlJ3LfzG4#wdVmLP?M6n2tDKEnhzXr z4D^xHPmQC{P4Ov)%CbSdu2P57lmiVAPCB$GTv`GGn*bg)Z2>j0r4<~YD9Txdmz&3K~!2M&2OiIIIvIL~s9e2aUwBls=RLmj@9|f#LL~Mr$LLrG^pYg}% zOP40EcR}!ZxaUEXq_ig1`KtTrWw4nK=yiipI4uX!wB)t4lZTKlXe+&Dv8&6*_`A8! z-@>B)lXL9+;OC}@?b#8`)9;BCj>i37umKcl50GnmDxtO~q`k+-{OEaC%_cYAdJbKx z6zw$HVtT`_N$h3=xVp<+;(3qS|5%P_X)$G*>Xt{V5yv_1*pel@!6!%8=>CPkhb1UE z^sPYkFhT*pSun>_R)IS)$En2U5y~%BS^e-JFOpFA_wIVPlG@i}{?v4_&C%K_sQ555 z&#U*|ap17<&|p@+w~KKTSlznWWGiFCKTc`A%YK<4D4;`3{BAKr3B)FkdCVe_{Bdq} z@1dgGzgx2>w-dT!^BbL(V}7kEu;;L|!rUNpabY2xe@_HUUx5VzVRzIEn5filtY+SPK{huo^<*HF%bY7Pb$uSv&)ld_>oo?suhbVe=7olMI@LR3}^c?`YA0+nQ4N5scxIzLbaNl3_bX|a9dL|*j9|U#=xlK%wduN@;j&7p2l!8{_gPDkh z_wILN>iEHsl4@O2J#4|HH!hQqy$i|lX%=6f%dZ*Cy%5r=RyaWag~1|u`$!A}3reKB zDnWKsOe55_K@N;PuX-mOLL{|zm#S8A7x=1cb9@Qd0CvJkI$K$NtrH{-)yrg$f z(TvZ>j2y0Mex{QHrQ3Yo`gl!&*B?wG?5t+StY_4)tSmhXFB3SG5uy?P=p9xx@qrdEaag@McmG0);T*G6gKU)KTZpW?_}rIuM~3DP|H z6+AYzyJJNvTtt3+BEgf7Gc!`N6=%duU&2)k8(R5a0T}<$e{l1rq8n}f{vLbuQ;cDM zEd=oiGDdaOLq<_8JFukM*?-em#1}tbsRji|e*EBeakg4r&ARN02*{`iqv?2He?`L_ zFk_gX6SQYvqXJp=szW#?H1`!ucAIW z?b?3I!LPj0YLS`|TMveEl3#S$-wef6w1pXhu0+If`=1J&5&O%rH0G{TAPh>KF0Itw zaR>6d-MRYr+=ZT^zcXo>gbnn{qlzD-?(yK$;!>fFE>bGgTOetmCb3y< zPI0fm*rPE;!qwy?WJ5<^45-ha&~u9$?S~X_Hu!Hw`dy2_DBNMbN>%72b+8xw3V?7f1`{59ALrwXhdA+G>W&Z2NLX?o zEcM?wP5UzB*c$b;drnk@=xv;6PskzGAT!}qwB5;-vV&jnl;C|7;CUZ$3nGqJw*#U7 z`3-ws(``iLy}f^Z*Y~H#n2n*8t3qq9zSDv!@}-#qiOpu;iHha^5&25*zVp}LzT%H2 z(MvnQeqUPrvJw@AIsu%v&mfR(a|PFmx)$3_nx@HPtxC6Dd@u|QU+eU$GiJL8SVxLk zdib;Mblm;WeXAyk-{8!HU;X^ZzXT`^RMH%!8NF< zGrNJveQ~bi0Zv1xw%K|u0=hkn>zc$e=kF_aAqZm_ zVt~@oWO?=H5YW>W_(BZ=hg6ZyWVpKzqkQ?hx1-!-@c00rHtBe%X>&yC(ky1x2p(O^ zL(kaQE>2@A4oRV5^!OIEGeh+Z?SFibd`@b39_F(Kzb?XZbJ$W7$tmL2jlC_0gc^&9 z1?=1{K;XBhaI24!;JdNILXkc=*yI)f8v(9vYWD_-qMDnyz zb-U~ht#s*`c*+gL6Q0dE1U*ddK`PZG{C7uA0nZD9r&>AW%ch4bI$_oKFYr)e>EF>#*{(3vt>~!;&~5NE?faQ{ha?VTiuWdLNtweFwAgUs z{B_rtrecKuSn&`46l#YtPCeYpIrqN>*wpqXxl^xWfLkidX=^TL`Yr|*meX42MGv+( zMGQiZXuDir8=gFxNZI1J4t_x#+3O5H23}8K=Q6FxaDtQ+ah%>(3Qzx;9cyx2hv~?_ zc`BzTf%wqb=IAaqVa~iRys3=B82|_VmEu)d_Kd*!ZuWsiAXNSTgTg<|TcR61moXWy zhh*bRy&)FLwarcZS2spbwxf>0%YT^9%a`MZ?(3lG1l46jk%|84!x`=5dhz)t>-9UM zeBT8gTI<)yGdZM59}b{8%Zkhqqk#=2hPW3H&b*H^*qAML5hrggsRl$c$xMGye#citKX<=>Z|s zut5lOq1e-XgW)x@cc3)xVW>KW8iO=SD%v}jsrg-3!J=hOrJ82VH$={W!%kfe)_{=! z@|#MtpJhyqvOM0KHX{23vGUB5UY4sO%k}bqnPxHAcY4}yG{Y@bTvUJ8&n^pD=jY&7 zS$j~3<|?|4f^+P%iQJ7wa?E9DL#A&hr3Y9Ee(I*+jUm%%&-1h>@l!D~T00m&ktcE< z)HH_cHi#72D({3BSJGX4BMsxizoKdDh){m8B2Jt}!+sns@>1YK(enKvQhx*0lJhv9 zrE(6klvE|<14&>XODVlm=N3;@N~0*oP^h2zFv26BV{RxSJ*Yv!dfi-4O7T|1z#v_L zIJGr2@%LJ0Xfs7=@e!rLl+B7Vp-pT~;XREJ%=#tvVb? zD{%giWWU)rexIOST2Db6798?Q{M%1k3Rc^XNnJ7WCEtiuHa$qP z3m&YJJG|m(bE1iI8-@{v(pLIdV^MsI5txy z#XHS5kJ}3Ji=KxJ_;w4tW#`90=?^4AyWgy|Z`cG`5A*TPI!)+^yaS_niJIsTZicU0 z3``&M*oe2WF?5d3Kd3Qxj|ON7Rz=oIlqD*vAX4uF%0HoH7v=huon&|nE(na5 z|F}Hg65ILc&gp<#(Cv~wrp@1_J|@Q^G&s;8sfba7`mR?VAMH$a+dZEzjHLbw^A~hd zuq3kI+VxKQf)XZ8l>{xdGxyJf#=0Y}sF68c|N zgqXN!0Ye)U71Fg&jaEcN{Gq&$cC=IM%b}PZ6leHf>q5(TWzC-3vqzEdMj-=q(sO9H znlf~gg#n=kL;;N_pVT92w%AZzyV>xT(2)B+?bB#f8)?tJ<tMzWYj={gKYhYqLzJqd4gE#oc!6l3_!aK0ZG zQK1t5&$`Y943&IH9$YYZ`wf#mdsaxJ*(W!7)8q151})DwxZ&m5hMx%Rtx(r6-01|~ zwfWE$VgLG2<~&&TTk(Kwfz1~0d%}mj*Z6{hwXX?LkT_#~w`6f<9jH4Q%c@-?$2Gp- z%p9i3@_%WK=>7dhyRR>HM>84OjW2uESGlUuIKv_e2Zs;MJd9XrVgKWywA7#DE;8w5 z0hVim3kMX#nuT{L16SN{Sjr=J&ORxz;Jpj_SI=UG^LLc&;4e|eys*BzdIh>@ltSH4 zou)`*ns$B$1qDNG|L^;H=?3_1&{yVVM~o%3YJPTUZ*;==6U=sEQ}Hb31HVR|6ZIDV zBAduf;Q2lfHA7c7e*4MBoCBq!eBqs^4C(uLfvuSANQ^SVz1|94j5&TeKbqD^0Xd)8 zpxUVri=G9Tu>kY$s;V$z`Zol5(jo(lUGg~B{82W|HC-ofQ0aFRP30q5n<9|-vGNH| z>RmQ$G@r1VF~b!tUf0+#KBUBj#8s=8xexKov29dj3mGudd@Wmuew*R1DP?7TitOKv zI0ApBN9lb{@SekE#j(-V%u=sBj*w9s=i~6gydqXBwXUS~ney=vwWODsgrxNmQ99Xj zw(~J7APEH$@6uXak{ty#)7bU^_U$k9 zKkfq+=>yp|oow5WH!>){__uM?QD0ZxC}BHrbjemNJkr%_+6fuN*pN(r9HTg{YWS!P zH*2ewGMx{odoR=cJByxJ&*n9N;gylOA=`h4M^=dw$wt3jaCclUIEEOFb)TiB0fc$wU^Ux zwCeUHW$p`Vh~FbF@*lgY9}}c50X45RyH8NdcivJPFa6XUEFBp}KN5~fzB49_q0jhM zE{g%&GWbJYXo!fAgqVG8SJp=!6B@_k+2RztC#Yr(LNd_{GeDA_v5OBKLnoUE$VOz? zg#GRIk}^Bb%0;{8Z%8mo2>$Udlxr|SEQ2~mfQct`uGtJNizwlJR8G%=PScPM1kLh- zx1eQ$C`!r#-6q1`hjrL)f8vf9Y2t0CUKPF*Cp|i?8PmbbzSUXnGc(D}rvP-O1alQG zc+11}kD9j`wLe-Sz0G!^Dmv-akk?s^ zX0u=L&4kRzQ5Pp;4>U>j(FV7-q&Um=6ia{Dt2QnrGl>aNhRXid82Gt;LX|u6S*EYu z6UlqOJOP`YX1m{Bu5esBOq6d*OE#=+gr>|`zxM~fgZf|;65Y|8M!i1(41)x-FN@P* zLCDHPJaa~&UO_ycl+h)y!btOfw1wd$N{DV9N2F5#FsfYP0=lXK>TOi2@-p)10zU$d z1Kby1A5B;-QBTWcOqK&qfAsvG{h7G_lLnV|TWW$k2k_rLDh{_yYFucxQgv4sWQ4pS zN>1#x#C0)SliHJEugj%70Q!SH!KpD|LpB#*MW~LG)&5)}%ayRWk9rbO75GRM>CR7+)n}M~nSj3pTaQmim|2?Jq7&I`phm5tN9f?4?E3g$n{cI zBLA&U@5lGv&|)fMQHu2jgF+^P-rBG5dwv;f)^&=`a=o`;F(m&TxV;F#i{>K4d)q~o z{O$*@1O6k}O?YegslLqxeW$h9=v;7WKl z{b^xi+Ztv!5qEQ|drVU|-uqQ`1#KiS!oKI*+rs4pGmHKGLzb$NH_M@>J{O~!nvN*J3lvEOSEy)+qej|(+NDk2~3YK z7+tL z`^na$=QVl~prPZ%%1dGt-oy0Y8?awGhEl?iBEL5ppe+9n{*vXOA8pG2Mgsi|B?}SC z@TJ<|^F+gk=*YL6?EegO{kUG0i4%mV z&-sO12_)ZKpU0Z#lD!q+0o9%?eA%)ha^e3|x9vxW6u1A111(Z-!NE=q>$_IC~E_TwFEmjeq-35u;NsC9%`+cJ-0Wj4Y}IHM~by1 zU(*zin4@j8z6}Z={xnhfq!>`Wt*9FC)q@o+JPT&X!(>EFNlE# zcxu==0?kB&-LyJCO};dmm?h`tGtUWejM=NtF-2kTVcd_$+$tQ-ZCX3PXoo;~Zb=psP~i8+Ul##y#tJgoN2V$o7_msATz6A!Yg8 z0hC^XLV9LDw?4g6w43{Z^jWy-ZDz^@w!zepv2xpDZj-k2k-O<=+eZaNICydr zcl4zyYDm5_e#$t15cUS`v3F}wz_rvYO!k&4yXa74M$I~BJSQvFi$rJcWxmpw|wmw0V4O>V@$ zaz4IQAp2r_^(R>S?EL}}j>S(Q%p5ME#;=3j*wXAE1NU85!{$ zmI+9ak*YK$x26T!5s;6-Y3q=#ZE_5elAvft$(FK)(FxXPWXu@b*Q?BW6>rbTwk;9D zZ2v+nHnLfH8t(+2tE34&maw8ldKByLfyNc3E&KvHCi-RR9}W~~5uRgAzjg4rkSe(4 zg}*ASYn<_PHo5*B)J_V0CjUu@$u^>F-=Oyt;aF-mPGU)7nc%Ki-SEo|iEdZ#eJv}L z%$JQnm%pws`<1beK*soc7gp~!*}K-Ebz;Ta*9D3=4_*EB<|;$cm{S;CleKlE!(O3j zTd9R2#Q7F~k-pG8VcCf$Hdxz36@DyQs|1 zgPGx55&ymo$h%I*c?sLezLC=UWov}2ZOfw@Vjj_*lbj>p-qYkRA}Fe*|BrWn?$Ag& zzUoz9K!zNtP=5Uq1=0zbrtY8PFR`$vptRgU_fjlx+bz@D0OxdFqP;;jatfQu0PTU8jL$ zui4xJZ8{=WF>JZKVpRfhHg}g*PCF5))fR{szMaxf*D(%f1&iB}g`$69{jC<3ZLqUPb3e$@9dh3Qp4J;fYxIf&58(7758_#t zXLbYD`AW?4Vsz;izx?YH7)mOd(*0iTN9FrY-v0ThBGqk6r{c$z{qH!E>)ri03SUa+ zao;6u8~(y>?fP27SSnSW9=O_d4igl=Rih^N+hL`rB5u3V!OwT^h{Y`EDa4I?@*)g% znZ}&h0brZgEL1s}#pj$OgcNgDn^(0~(OF@0mjn)ftQuXqU!wnJKSU3K zQd)LxH_6l0n-7f>O8>_GK@xc>@{gndZxg4!G}La=$a&ciH0OD~xN*%b)_1tl0VqBo zQR2EoSQSi2FGn064rgt`*9)m)Tt>q@sIg{0dWN6tv%NkfMjrlCT$k6u zfIqgqy6E6%-7b-^!nNs~keRb;%euGZb>A>^RD6zZUZSxdDFI@kJG1EiYnlNFJ2 zDlooouY(>fSZzF;&^6~0N+qkm>{&*eCoFNxxmgx2GKro|UpyAc_)AYpyUaM?s3w88)7 zoV=m-aoXJ)E6{gFke{JZHsE6Pm(8L(O9hp?${@}cye$>i;r2Ysd$1Egi+L|e5-Lgh z;78uQjNW@1^*ifR?x2HoVdlxKzMGbo*r{?v%6?B5PNj^>nH}E7`#Ij!J zbdeLW9(cCbjcx#&R%Im?v(P8(_`+ho zA(+#YUjg0?DLc^6ZkNwMPt+jIryLBZ|8EO3{eTc~551>L`TOsmx@mB~?bp+#x)zR! zd$EE!)5zR^+*CLo!ilHQ=e~ZpKlRH*{{nJH$t(@-4`C;0+p-g2*K5?P?%VS$0xu5f zxv*Vt@(e&wU?7+(*s}-f+?AuVDNYTE66n|z6XZW5y2&$v=2}ZU&5FYxo9u&kH^~mG z4=PT9&nBW!BX#hBECF%6 z$LIZnu~xVhhlzoutwQdDP#|?}0~7{-Ec!0S_L&upcNyVjd*-+Gx>7r~oDcCHvM!>j zX&ne94~6(kUMp1U_d-A~{^DdY6(36MoV&rmiu3h~LjQ}s-6YDFldzm=EOtDNH=poO zg%xW?tk(@enjICvH&?|7zbwTW&*i$l`}T<0YosEm@_a4~;q}CM2m`1Eu;orU_|FGs zd|};Og&h^aE(}xoGJQGim$QBodT{&8n$*MEr&nxv%(4KZJ zBxbDpq8{-IQ{TAH40Ztq=t>VI5}p_em(>jnFsKtYE76OIU;ElKS5tm!hK2R@Rwyy2E+ z$R-Y+Rdev0+O!USbZPElT%YZ_L@x?XysiboetZ+#T=IJH2jSa0)Sn&$;j1%kPQcEG zi=M9CbNHEcErgE^5JfB6kXhXfeYK@$Q&qI`kdFWxWROtYiGkE@Wm zXKKKe!m$B&lY*k;>m?QM2#7*kResS{q~e2u=Ee(r>=Jh$Nc)DZ=jh-@jQK{)f##Y)O~fJjKNw5A$O7b&+14 z!USs}{7b;Cqvn;G7_5A@YZknLShns1=QAh_QhnPG?FRQ0u5T_tjzT)rq~R+YF->VF9aw88y5oO;cde`i|HP&_{Yqnr#npi5JND}_)5`+Jwk zDVSeGHNF}lXmmTCB=&ra_*R2@Z(p14a#m-8x}oQrn8wDKltqx)EJ4pY|HTKF9@eeRsCyVMZKCNY@gEpV?U&OS@&$bD0uhM=%636w%mJh(gSFMBX%~M;LKCg z{`yjQOxjG);npD7q3gc8ZF#SzD=83s+pb$?kdV~FQC8vl>njzghxTdI`RGcKYW7{N z&jmc^_XT_g=>1zxr~DjbQZZ8&b*Cu*0~xJYDTAxTY!GNHV{E*s<}LXm;SKHwU7UD9 zKYHpJuh;0~N|%9?Un!s^Cj%>H&d=eZV1_{wbyrVLmm<%>$pUvZN$UeKa9|O!{`J>J zvp=CI=tLa)j}M2k*_7zpFA zUQn>-YG;!k(ADrbTTugHghV>_p`h*lA>Jc&=;O;aui8@dIC_@n^5UYACu3f|kr>!0 z)%>l2q4tnGE2rzDSomP3fo`Nl=hW%ziTHsCv#q01!*1*aYW-U->i1cbd5*Wf{^aDY z6vHm5KWzXFS>J4p(?ktBAeu@Fnej97`Ekub6k*MZsuIK1zI=HQ&M6|D#7n?HlM-cP{XD}_z*cFBn=!sg>&^wSP z5o)GCKJrG5=IET|vj%0(y^kFC*8@pE<#=hE5sB+@oj|!nqN)58L%y$qck0%a+)$7e`0ow9(7w zdC(KKpjsEqpuU5^|Yeqq@0QwlO*HhNt#q$!Itb8>Tgq^UT1Itn&?mWm~ zYI_+ThQ5;cZ|8{%3wr|r6n`8fuyN)}sJ!Tp~}fVo%cb8m{D&DjgiUh_X;Yl&C|El8#oRR z20lX*%VzPr7UiL_J)JkuhfD$(k;NV1UZ9Rl8p^LjHUq(tIgDbG=$xp-rf*%2DHRE*^AP zLM~-g)^+;0ppjMx+loM}MuO8s#ko$7Sl7VuA8sO(PTDr_%nFW+8U z&0^|FJxCCaVmw{~el%WIk|lr`nV>qd&rrn_XD@Gm5O;(@W7fQaF3hxx>v&)W^aX-&S5m$tyEdDY68++wXsj9>l*h(vGjo4Kk1F z_umbvgBoD>HrGy81@Hl8x2mS?{1 zn;W5zPH73WS^Z2y&I~RhTDVDb$N0?fCSm1@B~Iq6*hud5rgdCK+5aqOh`Kh=K|nNS z_4<{JhC=E{A{AxaaLKHVmzNh0#o5`BOOKJOMjoGO6#Afy$&omaYr@XikeE2(O+OVM zj3#pT3k#0WTJs?!_<_plC#9FpB159HPcUaBej9i13Mhahc#R-xxt6trE;{!YNq4bg zDh`%?GlvX{OgiL;=|MzdpucVI8hkBxdaXOucHUu(^}S2Oyh4w$mbTRLAj}dE#2ojD zAQIgh^NuPO+3;N&+Uc+VL@%Ja2=l*obX6xf72Oc~7f{x)-B`?CmSDTuUgvrEaqXZH zA|{TC)#k9y7A_UPTxnY}DT5t&Ra{*Cg@MC0bZGcTX;Fpn{QRcyDq3jt?7xap_|drh zO#QF2vybU!1fT6zTUqDU3k00R99v{UgF?&7p}sA% zX{~+u4Lmd@koxnm_EN*5+j@*Cu5TY5<%V=-{lKKCsT(I9qC& zT3WV(u(fad>&we*a|bU-baaAY z#L4tL`6-jKx=`Av7e8&+AC!vMdDdZe7yIikw-5Gs@n2Z5unlJfG}f704kmu$IBOKf zl|Iz5eF;%957|XlO-5GTla~4D!MT~1S(IB!E31qFzb=rhWUkab$XK^Q4M~fobF^Js zytt$+l3cQFL4n|er1j$1pI-Wy-{y%XomrwOrk774{G2zgox+pG*{(3f{sDg;)g*lP zqON_pzU@b_<&Hc=tA0MqU}8{fe_gTQ%5Ga1gA5SZ3$~fzRoyvV#}aSZW|X7`2A_S> z-l;DNJg%rH5KTNI%`oUqU6*gfG+UJuslzsWAumm z)q7ZXcapYB8*eL%QcvD#u79F1$%Buxp6*Tb+EUo3)`?HTv=2__vat-XCdlGJVf(R_ zfJvpEE~800BWb6XQVm6{%(t(J@82|_1#yw2LHb5d^kaj3PYwMIPb#w(%eu4}WK`WN z)4vm3$8NPi{l4^(V>|e{FB`~cl>}r9LO%}3O}NWFZ73kk(!`kK@;)8)1WzlEXD6GE zso&w-7hTJRX-(7wPM2W?%Xz!}WM5b&KVp@inNXwLPKqQ%@^O9ps2(1-&_>0RBj8{- zf3fThSfo4}!TB~i`*Kf-na}X#K=oB4^vmAM8a8V#?DpyKW%l1f3cf?U7Nr{q)+_v0 zx)W`Rh97wu!>EOX>p$D8|Ln6OoT>g(kVv)V|1^H$(bv{yP?`e-LZwYegx&T+kWiHs z_W7Vf4g;T9QqPVZ;9G6W56+v^nRusyD%#=*hf4m0diR z>MqSh{2oj#aW*~U_5E9PN;JLjSW3$GTVE@aE5eL#YS}{HAvYVjxqu~Ioy<(}=f49{ zu&7pH90FR$kNM@id}N!^<29rmK%;gu2}KP~QShF2f_?2~?U2Qbid=wjSN)l?1j%&4 z2VqMGnfpaO9@a5UhPifc)3u{nO8*BpG3z5gD9pfED{NDoVAzZ!qJ?0%k@6lDLtBlN zb(kmrTlO>QA;DCxakoz~3A#6>*wNVd!~TAZSW>Ew^(HKdI?&@xhP|W@X%+_DE1_FD zJqX*L6K-LxEV%b!jl}f!EO1{o&S2*z@R2C@+3VEFsz@Xg*q&2z%}s3ew$jy^hBd&y z@bEj&G4#yH39&4lZ_}sn5_1)~U-o_APF9tJ{UYtQTM1N%pV++H9<63X30WcviQC3N z>K+)uLl*u^gk9PNbcCvTmR8x!jU#rCMTT&T3M$C|#AFE1*?}>zhmSKKD`O z37vG?d<`uF=sNP}rzrvK zmw?3=t~`8Rbu2OWavbsWD|7F*SDWOUNN6m?nz<)a`e4MfQM$JFmE-GF*tWA5oJ?9C$~rzRw31ejwSfTRHd%!*E#A3FbecN z-}``%dJK5Nl@`r$ZR=n2!aS)?9eaWv7(2Ln4RkX?7dF_fjkODnz3zpx8q@2T|B14- z>=nla{UG_9p0apcsGa#ejdF~ZtGW04_6zZbYVkL%!<288;Oe|!e-KKol}?Y(P4ig! z;-Q)mf4vKb(m&F|R)#3OS;W9gG;o1I26s-3HTU~uZT9Ch?PmIz0fmk!=pHl}y8d){ z?uDu{mjj$6sEm@u4hul~bKZLL z_~>N7^?BkDrOa1F3q@z12O~}9GfsGmLfbPr(wT46{O~^v?)T{&CCRTKJ3#R(64lhQ znot`flDB2Sn47;f_-m^1^QR4)WqbcEZjvN4lXyj!Zu!l9sX&C`3Qp)1sy3 zXEBfAg_s3SMG-38TYVRnEqhp4EMXC_2q2W)y0mo|Vxeg;^8FM0B;d@}o1Jd(%LXqb zE#9M8dz5EnZZpK-+5GB|+*m!ASCD;|PmN}iyE8F$ zd$8wmwn;Bz89r6WSI@Sz4D!B1lS#29EZw(ZSXfNhiRKoi9=?|M)+?*b^ZFk|eRn*Y z;rlfbYQzqWRhw89wPI5KBQ$?TZkM3D#+q-W)Wj7-Hfg`^HSqExQfcMAr18UGd|NpjQN((+HSt&XJF5{10#sT?yIzUk$O@b}r?ty4pTzx5+nAj(=?0{kYa z4n!(1sia-d>&&TJ+Q>bbK!TpV>QlRx{M+SizNkV-CQBJvO|70ZNN=0e$|h{=7Em8~ zTRk{f)wKNQ81S!$_z$aq02W8v5YRq%rEOK9$ieZYPLqNJO-uS(Kxw9Qn$je7%xdNB z5Qp=|-Mle$F$a`rrrTJ2nKv2mqOKd*knyP);%nI9$xdAVp!42`x>|aYsC5YGgcAf3 z36N8mIx~1bjU>AGxorJox1AiULWO12i*dQ~XnU))xWaa9=jHg&+o7WK z+F5U?|L`Gmg#n12l$w=&SKF6=4X#K-1!>LC!@McLe%P6djH9v93VygYrz|ly=b!$y zYNDm2m}`Y?S4y8-lsBjAv_{#=sjjbg?kj`Q`=2k^f4Gex2Y$r@zyoz)COX?PrWgrC zuiCBGEG@9-fxOGjnj*1;TAn^!_sM3*JO7}8dCRuDy%Rl4eYWO5lY6E0!8eU2VfdXN z@vF2F>_5NQQIzkehf`uMCH?wUpADc8vlrANVD>@ejv7*U1p38*i%%`(*M}mg?5DcN z248OasCnfK3El~-`4~3HlE@xbmk4&YS8bT$Z?UKK>-L)$B*DpkY~0Xxt_t&vm{0u? z$%VvKEf`^2$oJ_WwZ~h+R=?s(r@wFbXQ?EKvL2-nGk<3hi#n;hhb_JC0bq*)4?j)J zb5nniyzm8VaSxIb@q4xNPtUR)vYWtA^f9+u1xn1rdLskKf$zT6_XWRTo-a>aIrIf5 zH{FpH@5okIvjnT)mx1jzzu}M$%h4L$aqFxEi&9Hk~LaOyv&x$evN+}fbQrN*p z_p5rDt6DeId}FgjX(cI+^vK#+ePnRBx^^YJ)sR7B;>IUJhlPa9zr`F!zW(-UXSZN}fGuf_8= ziK=Pi+8qDL6v^6>V%8{Agxk}4Yd3KTT`{Y#-=U-D09wE;jB~&4wjW$4!%2pn7j?YXZkX9TST~rAW!A*)o z6qg^sdtL*JqF*P<_l}byI5DqM)2T{F{K37(k#}y;^gOEEB;>#g0Xot}78L7-0THje zl=17XbaB7j(rli~ei>itPnVIy>Ruod1_o|~>KlCwNh*!^V@YM8cvPu_!DEK_hI(jJ zRWWdJ3dZ`yb(&J_s|{SEzPenH6txDwPewHG-5>dwn6|i($KIhR3@(=_*_RKN~Bx>0DmyHavdt z;v+cWsJ8im97X8kmOa*KiLSj`U3vEg#AeH+X97`YS%L z_t!M@XvJ)6vl8W`p?2r5ZsP{jDBg)Ul0Z?g7&K~|$E&!}FaXeNpKT}^&EbXSk)YhN z&*$?(TN9f}fM#Gcbo?&pClMTX6GPCX9Hy^^Cxw$Svc+eZ2s?<*cL^hUUP4tb439od zDFbP7DqMyBJ0Hl(87(5MB7 z#$$VRLmIH1*Px59a1HkI_*2Tmhp*Md)ThWmX_Rkxpk@Znx#P5|Gk(}o9y5KTH$`Up z=>7xinb*Q9ES2}t;B>vFgZJN(qiul6@eRrwQX{X`4T{a`3@fpmTJpNqAO}^DYC7?W zKG0NvOF19($T^zN4AjG8{Mcwlx1KcW1QWLbRTZmD&Qk1##;lW+ziqwW&!sv6);Plu zOfORA@j@{?a0AvuXzr#_-K2XWWgnTDu>*of3&RIBOA}yyg*7&gDeod>mVHRigW7<2 zb(t8celSRkv~BNS13GdaVYoKn=#u7AL9j|yEB>-1Te947KVzC8jI9G|kzV`|FfW(AMl%PsaZW1l~2V~GfXPDZZ zvK&XU!o9)**kW~^414$dcy*!&9d*RsLmCUf%!6m|SXzr*d=g980>HhrYN{~&1mA!* z#BFvB7FA;han7ru^ig+YQxWm@0upy~QCetvDSJjtdVwb*4zUBl5XV53aozE@h)Kzg zBv3O6s8Ofr?7f*WO)y>7MdUN(D#v8yRWeO6quECqkduH)s>#&{eN2_z*yR!qLy$D^ zO{MnHgue`w15BkYtqE3D$;q49t4D=NmU5=gufz|X=%ks)M-)9AyN7Ypmn0+iD=M)5 zM6gG^6gq;p!pkN{1X9Tc$`_VE37v9fOde&>47)6WbNl?}bh?J=hv|QRGuKt#eyO`aFS`KD=F-nlk!5y@0}%8WwpDLI5SjiguScsFc&I zNBIZ{&xts{F?lVM%<;ZF?LNw9p%S8ABoRZuO7Mb&Gwcid``=p4MAZz#jcGw=f7AxY zLdDXH5R7?7z_UHx{Id(EbDD~5(07{biXp@F3z^Gouu85(M8(FJ^3VWOJmtUl-)#r( z1N2|D`{E4Cn+ghkoGUXVYEPwwde8Y&H!nE) z^0y=!Yp=Co&Rna)qo)@g$8Tk1WrX8k3&e;A)7h+;ODN}K2mq60K*f7 zU37|CWYmtOp7sGj)8>E#I6lx(WO~rOZNU<7JNxWP)HYQ z?X>{vUPeSzLZ6;G40uN#*`ChnIvSz?Q6=c6nba|i@R9bMrUfw4r(8()qdC7IkkM~g zCCrHbML1%c*7>L@N@r-BX8??3?IcMsm*(zQb^6LD)LYL9bjkdp%oMCO9hb>H5;Cb4 zU_W0HoxFT42Lw)z-x7uSg97Asp&*}d)se{X*x#yiF0Un`FS$tSf?~)X;f99E&*mdy z#LvavQtqlNuS8RGGF)XhlG7#2Mu`W$A7x)&QnCk9K9SYVcm7|UJSwJ^{mYKVq9K@A zaT)I%MG5r<5+kXfie>!y&IQXqiu1JbqRf+jfx2NsrO{JcvcJ#yqt;4q z##EsFGyl=caOU-0FcjHUY50-uF2gx+&uL7t ztgPa>qb)J&U9X74lSiDSdVulUIHr%LOq1nA;T0Ay43v7UV|)|B&;49 zBNa*qdC-8nDUDYy7j@!mJ9#>>E%Bk+SQXg^x9h$s^W%n2ffGHt75teVJbx;~JPczQ zWPYw2y@|hW&zD{JZSW^Oq&t%nsrTNm&bhz8pn?C=9w259^O^eNbL!%HvEqH`iyzy z+D1rs^k~|Ab$nJ`zE+LvXtO*wxS_xv;Kr<%*X&=HNy1i7|E`7Zo11Oy7ahG_k10vN z@s%@sS(qYg0ey7v_`G=i=Wpli|6lp!93XaYK07f{3AQx$j_O zrrT@uy%8sdQT%h(o_TPduj)5SV^Ve}fs$XofvCvkmnioodZV4P2lcyLyW|ZC2kuS9 zQBTm1$dJsuD%{pxWH@M?`_N6d;V$p6-kqYiSWF#btR8Wem0{gwgIgiktI^xd%Xw_B zx^rH%Zv&@_L30@YVp>jyIsImIzRJ0w{xF7mE}?IRfq_Z{w4*t}iu12jM4z*o7&8pg z?qj7)g&Ip>g|ZTr@lq1s>MCMo#Z%Ses3jbAQAO*zMhxm=Y`tbgoCfuphan$iT(n8@ zZ2Fee>^<2v)>{iNYTd=a0A8`eUl+!N$(>cYjJ0&mGy2rI9YS*iR-w?Ol4#41s?qZD zh4=K=07TCn`M+{|Tf?c?|Auf4>0x-Hry$x^yl^y?z!v3AWHpH97eMgE_Ms*W(Cf{i z?gVLdtR#I%P*zFL5-o6cLFTjd1sps5Xz`3$@GM)~M*nnQ4O?`V|C1~V3N;iOo<5jD z_9__4h<>_DxL2*B{nFWtAXRCJ;Gv@w}bw}gf&qLin8ss;)u*W6~kTp9rLFs$Aw z@@dB2F&rH3H7+o5C{sv5@+s2~mH~y*0>91_MRBEPv*hl}+CJe+eF$i^Di1HMdQPG$ z!84rNEyX-(cB9<)e@zK>)@#G~nbyW^VzysyZ?2_1m*su8A0dd=#wthrMW zl?vt#`d1crT4(jy^h_9LU?6O{KYgk*2!(bs%dmlTX|t?a8mcmrsz>XM*zK(D%^JA^ z(0lrSuD%GXNE%Q1ClxV;>Klf?<`a+pl+CYAA2CdH73s*_N(%yVGOYT+BY(=pd649g zoJkYo-mBU^+wANelpWL>x;W2~T?R$d#LMRC=5P30G|fMUW#g)VDsfS98*s#9 zY&rHFu*n%)gL{CSdW{zf9!1u5(5T+#^M|?2_kt53XqB?Y=S3EV1l)if zl5xY>?eJ(}OpP85fQ>tCxW$-)c=6eY3te!RCJ<*SJ2RoT%pqJ#xR+ayF!xaK4z z>K-Ebz>j+(e3{J6NnoFNmBIQCXBaGIWef<+g;4XR(s!iVdF@;FB}Q4=D-N68c1P?4%z#kNSi2V z6PN{y3&tRjSI&bb<~o@y1;5XJ zgUU28a_GZ#;N0Hurx+qrY|R>!>IpB`f)_Ro2<~~#!}qqgvgRA$fSc_b;4qM7C$QIF(7EE)o3r?rha_?UpG$OiR9`O<>`njEdp~t zGocvz{ngMGk&=WYR_trReZX?6YG7P|!F%MInzx<$9h$wYrwR|F2Xx;yF(PfjSV#O=?R zSlxU{)7#wKti&-V;iqBNyyg}7+6x1TA1v}CChL$IQxcsk?D(tMHA*HveNr?w4vNIT zB%Q=X3C`i5WGqut1Tr4s$XlPUIgu zFSH|ujjN_PdV#IuQ=P$mUD>Q9enH9@u7<@CeCR<^0N}--Z+(%)artdPN1 zWp6dPYp|tG923wM>ZQ(adX(2q@JkIRIP}2Yi-3UF1=`9Ohw7>Kf-@Qz70NN8V|vWL zfIh^du1NVwXGdD5H6Ao@5tndU(n%OwNO+8Ln%8jbl1C4lMrK$J4Z)I2 zZ-Q6Od_T3yUi?v-JZHj^J@(@0L8|e)F+~);KAq#nx@~XuP%E;(|cw!Ig4NTop zS218v0ZXb1h zDDG#r&O<-;dC46Hn81G^K8+1E{m5@BV;w`@%pcCf5#iOP^=Or#s#G9~$A^o3oy&mp z8~Z&-o}|zG@2ht=M|92{f^U7G%$u(&anKF&zQ1RKceYdVm)NQBnu=kbG#}rWnyg@( zRyj$!q(62xh&Pk~1A7O*Z(89J){10Zs$%1I2AooSZkw3FmOhnHx@224?hiMiB^^Oh zjZ3#Fl!hYoan105x4!PrFXk~6iZ5fvULi0*>Q@ZJzi&ajb@Gg3FlX!&BcoRwS}rbC z7mh7`obK@syI3yt$|i@A$L- zc5OiBn6KOgJL34P-Zln`{!wcoME-fP#aA;CQtvpztksry&*F4KljZ5tWGk<3;x#R( zsC4byw=a*re-JXMd8DfwcHFXaDD@19OtRV4OlDo`aGS+nUJ$gMT~kx@>C-2(Mn_30 zDLSBmg++(=##aHu^8ftBKL?)9*pDGsXCFU)#Nlwr9I5%|AMr6tdnc!giV96GPDHvE z1`Om>QVL&eKK<(dHFcZ2?ecJ7xWD-fEkq?Lg>T5>J-XN;l|xClGNy33xH*s}Bq(SZ zdSRS7WNc`7z8X!v`0@uecWQr*XS?^z8xsw?`VVfi%qX#!zYZrSCtoZF@#ClQJxN~r z;C9*Uy&)?n$NuuL-s<1>EPnZ8so1diyP*#M-GjfV#;WsnwL2Q$aZ6NG^xsJj^|NQs zifCCSq)r3n@r&^D`UdahO)ZAvQAI#R#G=s=$wSw2J}O6%KyDdw+ndB5E+5`qti{vn zHtUfy!Z&o*;4su~iMO;~h-Nt8pO?A5e%;H<`v|)5za`hpAsbdE7XC5iE+)t2?z-Y z5Naw$v)Y*V&J$7T)6>!`A!!NTc3%^-A2|VDQ^ysu!l1yq1`HMg0#qvwhEDk5o46m&A^r;sK~*hGpWZKN zx{5tDK^6}w>myP%QlM;BMjy`mKcPl@6k}g(ZI)@iO!4$wKKRhKlag2E_WjzQMKkb0 zAEVLFSdy>X8K2s3+_A+q*iUC(dP9Grb9~Yox0CW@>UsWrtN9S*(!!L#xzcgNAH`v) zAiyoZw~%s}t#35Xes4GB*E{Sdc~*)}lgrah44H0Dw6Zsgo!s;{>%!f&8g6=WoP@=_ zIFv%QIFH&nrcu1zg+g!#Xxp8_5}@{5A35>r^UvHDm!Xv|`-2FbHX;QEnX-kP0QO^d zGs&A`*xfMyz6HtN4M6=#&JjlZoHR_5p1E9AyI{Qmw0H(hRtcus=FYYNY_Re$Ur%)M+^?8);v z-E>H@7-@U9pZDH9=mNxI_pI%b+aQI2qE>v)Z~nhfx%Rwn6aCU1)XGl-JnRX}nX|1S{wF3Y-hFHk)Z&Yk&?c__>6t73vljKvuXchAz(pyhi+iGU@r(GY{(}TisMgt4xo%$YURfq17>oy-j@Ftn ztfY{f+<~UjEo~GBSp8;Oy7Rt>2xUx^(35J@W-l8{%jGvFmQ18TZEbD&dt*y4R(cyg znhHxf9%hlz^PR|d+7Dp%_xJHF_VjY3L_|e@e0%2U-?pT5HJ}Giep_Arw^uYQat+?+ zExqJt`1I-b-n&-v0mE6n35*s&TMW{RUN`D@-`Sfz^YExyIJ)hoKK@vL*m1eMaT@4h z)e-#A-ya4ET#dYwA#6rR7Aqtqn6YgQ#qu?gsWI?$ z9S>r)b#*72N`F#E99iT7o<9x#zGY%Q>RbP|rd3c#C}F3V^{%A)O4k!^G?y+7x){vB zpm5R!0QEe=N|2!fVxGrvkm4VdjEu~zAv%?)JoHYp z@6Jfh0|)K7!}oX=*o6PYjAtGQBr^1*`;Is3Km7Lykjaasmj2I|6c`ZD#OB~pGd=H( z|C0YKGEdf+SgnF6CaT?X?B;SM#b!52dU^N!>bcZ2ZS6rk)Z!nKY|vTh*4iPe1$Bh}V^5 zp240+YSJ5lNyYZcQIna($r~8qqlM0~tt`?7qmqRLCgql>YZUHCvsQQ?Ng3@62)EKl_P!YdNn>+VQiiQ05YT zM&l}M@O81Lbz5ALuX zY>;0e1@}G(tx8MyYGvBk&wjDMWP%*{{pbbG1~NO^HmtEwljmO*Sv))1$|Wk}wD#Ng zZc4!{%ii@ZCTH6uk3R0V@8d?%Y*J8{pR4)=6O8ANcbrXWy+S> zueZDrPne<*EvTP7IQcu<@XYR^u&Bs&xabY1>O2=$`1#^nAHxTCb+Z}+{~kuxSi4#lm_KR@?WP23-0VilA)=Zu7Tty#hseb#ED}SPvzTJ`S_E`gVhl6RFdTzXrGikB zdwDLcd_oV97~1;*8;e7(=spMDq<-yDqlhuSz}!NY)@Z-Kfm=(Uo9<7+-aGe}_DblM1!LqBcRuz?mp8XJiL|D2RSG#-%F8+##ig7O z)m94P2i0_Y$Q`u%4K{25EFh>y0`HjChT44xDB&8rU7gQLVDfxt6#T+j;=xbLr8kPJ zhE&a)ITYjuwp$%0{G~9K9lOE&8_lPSZ_$R0WAAePEk_;}^gP3w@!%%s&lsHlUv8t$ z>#L@Tn!)s*4}M?&`c-4sz0?i6m{!$|?29xyR6;Y+T)y*??IPfT0F>vR?LsvYMJ>lg>X| zJt==32dAs>oeg&W{iujs9g$Gq+TPYGo?Bi%_JWJ$uEKRQwoHY;!j!iJYjQ7sEqMNi z3F0fKsP41g1WDwE>mThmiy`|HZp^@9w4SN~gY31s?pkQ=B zBu>Nb;9D)bbj{gS_+JHIwO{2(7R`(|WKq_TU@SB8E$cCf$yr}y8@ zVrKe78Z`;#(9Kj$Jl$HkW*h|ej=ECC()5mpevVN6YbKY34 z4n=lVaRV7NH=JhB3G_+)tG$eX^ufyawVdpdFZLpZ)?jPWPl0noYvX=-WlR-46Cs;g zE(T&fc2qz!5&7n7YW`Z{);Z67pvaPa64_K=3$+@>&? zQJ)vtn@si(e_r`?0gl?2E_lg+Uh_N-+0kRUHG7T8+0#XMmmMlTS-7_w@IXqJ4s6W8 zV_?L<6(zodIp4RM?Z`?^7pt!$ANGxR+mowtb{$e)SQ{-d z8E&pyTA7(#c$#k!yc(#wpvVH&kEOVY2y?IC3W`ykc$F4Ml7!_tR z@LBz>GQC2n)&P1ZUlC$6ldHKLJc(TB&`l|z@FNb!+n8UtDakkapo-k0it)w&da=QM zzW;bKqJ*{4!UDG8YRl7gI+N4i3QnOn-(rj#^`}?AKvDEKa&U75sDP`z<)C9d zF-ny!mRr8F#k&t3uk*ax{d#SQJH%xn`S90Vu7qw-UX44Y-0dYh_08V3o~~d%$G}-i z{>{q2r$Hv_qy0^nVTHTs(m@RFq}Z?h$L}wb`y;U*gV{U~sZk+Ne&Xik+PBw%exsFr zN`V<&_2|P?{32Z3gtBi}Y)^wzR)Pb^xZUmv4MO{o1G?T7to!iAZ!2r{*8%sI6&{rI zf1P_60_o2Uof7|F*4O2vJ`+vAjlly{W<9wl5i4DY~ zNlrju;3%M?tc*=Apt`+1q<1iZoSfX%%`Gi0O| z>y_1m{^0c$aLm+|!Tu7zK{unu1RD}}`NL~_IpZP5_|YiHZ+ z`hKC&=%}cu)|=~+iAo$Uth4jtw>O4|ABi>6$N!if`m}tjHfyvWpbO_1pIvYmgmFh& z$MIA-OYENpdPSWzD@>RQgUJyM(=N6~SG$XgcsDh3?9|fC4Dmt8-{0Pqy8a`Qvvbcs zo}nl3kf_{@tF8U;K~h}Yx3JSHb?czEv!=Gm)81u1XeeWLdb$!P8~ig1GuaS7Lq9bo z4g>kh=KY6uhN%?w9X+w<1%sBKW1WLKmM@oIdJboyO@)I8cryuHJfiC64@E@!97po~ zM?TChg$yB;XO@-A^>P&5M$Ii|hlVuu^5ugTo4vU;?Aa7Ueq(g*x42*IYw>U)Fnt@G zTHigIrX*Aieo}{>M33Y&1$KO*FsbH1(0E1`Ln~Fn26{6SnZ!SK90lSL(cx{)?>)V6 z*QNy~ly}>bWo>5p-sq^Vh2~$tZAQkEiYY|u=338)^l~6KPmC3wtK)gSMoB%76=wDT zsjZD)Gsn%Tzz8{@fq#8M$z!Oh3RhcjyD<|ydJh-5+Vyo`=e`V$uI_9C8hv(t_UF!@ zC66XY=OZ>Y@5?c9S-)3g)_K~BH-A?wgAZn?o815QmUJ5WQ34)26fVJ|_+{Gf

R| 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 literal 0 HcmV?d00001 diff --git a/windows/tauri/design-qa-artifacts/native-windows-added-diff.png b/windows/tauri/design-qa-artifacts/native-windows-added-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..42fca6fd7f2ab7e91651bdc5f3c390d61838a883 GIT binary patch literal 47856 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 literal 0 HcmV?d00001 diff --git a/windows/tauri/design-qa-artifacts/native-windows-split-diff.png b/windows/tauri/design-qa-artifacts/native-windows-split-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6a3316a40114e10d130963366aa1b6e880edcc GIT binary patch literal 55384 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 XHBr8=R##8Of8eP=m*yk { setExpandedFiles((prev) => { const next = new Set(prev); @@ -1042,10 +1060,33 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ showDefaultActions={false} extraLeftContent={

- - {multiDiff.title || "Uncommitted Changes"} - - {indexedFileLabel} + {isWorkingTree && selectedDiffFile ? ( + <> + + {selectedFileName} + + {selectedStatusLabel} + + + WORKTREE + + + ) : ( + <> + + {multiDiff.title || "Uncommitted Changes"} + + {indexedFileLabel} + + )} {multiDiff.totalAdditions > 0 ? ( +{multiDiff.totalAdditions} ) : null} @@ -1137,6 +1178,112 @@ const GitDiffEditorStack = memo(function GitDiffEditorStack({ } /> + {isWorkingTree && selectedDiffFile ? ( + <> +
+ + +
+ +
+ + +
+ + + + + {selectedFilePath} + +
+ +
+ {selectedDisplayViewMode === "split" && !splitViewDisabled ? ( + <> +
+ + Index version + {selectedFilePath} +
+
+
+ + Current version + {selectedFilePath} +
+ + ) : ( +
+ + + {selectedFileStatus === "added" + ? "Added version" + : selectedFileStatus === "deleted" + ? "Deleted version" + : "Current version"} + + {selectedFilePath} +
+ )} +
+ + ) : null} + {isFindVisible && isActiveMultiDiff ? ( {isCollapsed ? : } - + {hiddenLabel} - {headerInfo?.context ? ( + {isUnchangedGap && headerInfo?.context ? ( {headerInfo.context} ) : null}
@@ -115,8 +121,12 @@ const DiffHunkHeader = memo(
- {additions > 0 && +{additions}} - {deletions > 0 && -{deletions}} + {isUnchangedGap && additions > 0 && ( + +{additions} + )} + {isUnchangedGap && deletions > 0 && ( + -{deletions} + )}
{canStage && ( diff --git a/windows/tauri/src/features/git/components/git-view.tsx b/windows/tauri/src/features/git/components/git-view.tsx index d70012b27..c61138773 100644 --- a/windows/tauri/src/features/git/components/git-view.tsx +++ b/windows/tauri/src/features/git/components/git-view.tsx @@ -47,6 +47,7 @@ import { type WorkingTreeDiffEntry, type WorkingTreeDiffScope, } from "../services/working-tree-diff-loader"; +import { loadWorkingTreeFileDiff } from "../services/working-tree-file-diff"; import type { GitActionsMenuAnchorRect } from "../utils/git-actions-menu-position"; import { getStashDisplayTitle, getStashPositionLabel } from "../utils/git-stash-format"; import { openGitWorktreeWorkspace } from "../utils/git-worktree-open"; @@ -172,7 +173,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { nextStagedFiles.push(file); } - if (file.status === "untracked" || seenDiffableFileKeys.has(fileKey)) { + if (seenDiffableFileKeys.has(fileKey)) { continue; } @@ -486,6 +487,27 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { } } + const untrackedFiles = visibleGitFiles.filter( + (file) => file.status === "untracked" && !file.staged, + ); + const untrackedDiffs = await Promise.all( + untrackedFiles.map(async (file) => { + try { + return [file, await loadWorkingTreeFileDiff(activeRepoPath, file)] as const; + } catch (error) { + console.error(`Failed to read untracked diff stats for ${file.path}:`, error); + return [file, null] as const; + } + }), + ); + for (const [file, diff] of untrackedDiffs) { + if (!diff) continue; + nextFileDiffStats[`unstaged:${file.path}`] = { + additions: diff.additions ?? 0, + deletions: diff.deletions ?? 0, + }; + } + if (!isCancelled) { setFileDiffStats(nextFileDiffStats); } @@ -496,7 +518,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { return () => { isCancelled = true; }; - }, [activeRepoPath, visibleGitFiles.length, visibleGitFileKeySet]); + }, [activeRepoPath, visibleGitFiles, visibleGitFileKeySet]); const handleGitViewWorktreeChange = useCallback( async (worktreePath: string) => { diff --git a/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts b/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts index 564517639..7264a8be2 100644 --- a/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts +++ b/windows/tauri/src/features/git/hooks/use-git-diff-actions.ts @@ -8,6 +8,7 @@ import { type WorkingTreeDiffEntry, type WorkingTreeDiffScope, } from "../services/working-tree-diff-loader"; +import { loadWorkingTreeFileDiff } from "../services/working-tree-file-diff"; import type { MultiFileDiff } from "../types/git-diff.types"; import type { GitCommit, GitDiff, GitFile } from "../types/git.types"; import { countDiffStats } from "../utils/git-diff-helpers"; @@ -20,8 +21,8 @@ const WORKING_TREE_TITLES: Record = { }; const WORKING_TREE_EMPTY_LABELS: Record = { - all: "tracked changes", - unstaged: "unstaged tracked changes", + all: "changes", + unstaged: "unstaged changes", staged: "staged changes", }; @@ -119,12 +120,9 @@ export function useGitDiffActions({ try { const actualFilePath = normalizeDisplayedFilePath(filePath, staged ? "new" : "old"); const file = gitFileByPath.get(actualFilePath); - if (file?.status === "untracked" && !staged) { - await openOriginalFile(actualFilePath); - return; - } - - const diff = await getFileDiff(activeRepoPath, actualFilePath, staged); + const diff = file + ? await loadWorkingTreeFileDiff(activeRepoPath, { ...file, staged }) + : await getFileDiff(activeRepoPath, actualFilePath, staged); if (!diff || (diff.lines.length === 0 && !diff.is_image && !diff.is_binary)) { await openOriginalFile(actualFilePath); return; diff --git a/windows/tauri/src/features/git/services/working-tree-diff-loader.ts b/windows/tauri/src/features/git/services/working-tree-diff-loader.ts index b7c7029d4..58b3068c9 100644 --- a/windows/tauri/src/features/git/services/working-tree-diff-loader.ts +++ b/windows/tauri/src/features/git/services/working-tree-diff-loader.ts @@ -1,9 +1,9 @@ import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { getBufferById } from "@/features/editor/utils/buffer-index"; -import { getFileDiff } from "../api/git-diff-api"; import type { MultiFileDiff } from "../types/git-diff.types"; import type { GitDiff, GitFile } from "../types/git.types"; import { countDiffStats } from "../utils/git-diff-helpers"; +import { loadWorkingTreeFileDiff } from "./working-tree-file-diff"; export type WorkingTreeDiffScope = "all" | "unstaged" | "staged"; export type WorkingTreeDiffEntry = readonly [fileKey: string, file: GitFile]; @@ -108,7 +108,7 @@ export async function loadWorkingTreeDiffsProgressively({ const batch = diffEntriesToLoad.slice(index, index + WORKING_TREE_DIFF_BATCH_SIZE); const batchResults = await Promise.all( batch.map(async ([fileKey, entry]) => { - const diff = await getFileDiff(repoPath, entry.path, entry.staged); + const diff = await loadWorkingTreeFileDiff(repoPath, entry); if ( !diff || (diff.lines.length === 0 && diff.is_image !== true && diff.is_binary !== true) diff --git a/windows/tauri/src/features/git/services/working-tree-file-diff.ts b/windows/tauri/src/features/git/services/working-tree-file-diff.ts new file mode 100644 index 000000000..57014b8b3 --- /dev/null +++ b/windows/tauri/src/features/git/services/working-tree-file-diff.ts @@ -0,0 +1,17 @@ +import { readFile } from "@/features/file-system/controllers/platform"; +import { joinPath } from "@/utils/path-helpers"; +import { getFileDiff } from "../api/git-diff-api"; +import type { GitDiff, GitFile } from "../types/git.types"; +import { createUntrackedFileDiff } from "../utils/untracked-file-diff"; + +export async function loadWorkingTreeFileDiff( + repoPath: string, + file: GitFile, +): Promise { + if (file.status !== "untracked" || file.staged) { + return getFileDiff(repoPath, file.path, file.staged); + } + + const content = await readFile(joinPath(repoPath, file.path)); + return createUntrackedFileDiff(file.path, content); +} diff --git a/windows/tauri/src/features/git/utils/git-status-model.ts b/windows/tauri/src/features/git/utils/git-status-model.ts index 714c611ae..0e18cf087 100644 --- a/windows/tauri/src/features/git/utils/git-status-model.ts +++ b/windows/tauri/src/features/git/utils/git-status-model.ts @@ -75,10 +75,10 @@ export function buildGitStatusPresentation(files: GitFile[]): GitStatusPresentat for (const file of files) { if (file.staged) { stagedFiles.push(file); - hasStagedDiffableFiles ||= file.status !== "untracked"; + hasStagedDiffableFiles = true; } else { unstagedFiles.push(file); - hasUnstagedDiffableFiles ||= file.status !== "untracked"; + hasUnstagedDiffableFiles = true; } const existingFile = displayFileByPath.get(file.path); diff --git a/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts b/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts new file mode 100644 index 000000000..3dedd3123 --- /dev/null +++ b/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, test } from "bun:test"; +import { createUntrackedFileDiff } from "./untracked-file-diff"; + +describe("untracked file diffs", () => { + test("represents every line in a new text file as an addition", () => { + const diff = createUntrackedFileDiff("c.txt", "c\ncc\nccc"); + + expect({ additions: diff.additions, deletions: diff.deletions }).toEqual({ + additions: 3, + deletions: 0, + }); + expect(diff.is_new).toBe(true); + expect(diff.raw_patch).toBeUndefined(); + expect(diff.lines).toEqual([ + { line_type: "header", content: "@@ -0,0 +1,3 @@" }, + { line_type: "added", content: "c", new_line_number: 1 }, + { line_type: "added", content: "cc", new_line_number: 2 }, + { line_type: "added", content: "ccc", new_line_number: 3 }, + ]); + }); + + test("does not count the trailing newline as an extra added line", () => { + expect(createUntrackedFileDiff("a.txt", "a\n").additions).toBe(1); + }); +}); diff --git a/windows/tauri/src/features/git/utils/untracked-file-diff.ts b/windows/tauri/src/features/git/utils/untracked-file-diff.ts new file mode 100644 index 000000000..941885d1a --- /dev/null +++ b/windows/tauri/src/features/git/utils/untracked-file-diff.ts @@ -0,0 +1,42 @@ +import type { GitDiff } from "../types/git.types"; + +function splitFileLines(content: string): string[] { + if (content.length === 0) return []; + + const lines = content.split(/\r\n|\n|\r/); + if (/\r\n$|\n$|\r$/.test(content)) { + lines.pop(); + } + return lines; +} + +export function createUntrackedFileDiff(filePath: string, content: string): GitDiff { + const fileLines = splitFileLines(content); + const hunkHeader = `@@ -0,0 +1,${fileLines.length} @@`; + + return { + file_path: filePath, + old_path: "/dev/null", + new_path: filePath, + is_new: true, + is_deleted: false, + is_renamed: false, + additions: fileLines.length, + deletions: 0, + lines: [ + { line_type: "header", content: hunkHeader }, + ...fileLines.map((line, index) => ({ + line_type: "added" as const, + content: line, + new_line_number: index + 1, + })), + ], + split_hunks: [ + fileLines.map((line, index) => ({ + kind: "addition" as const, + new_line_number: index + 1, + new_content: line, + })), + ], + }; +} diff --git a/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts b/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts index 6a3f2e343..80c1d8a00 100644 --- a/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts +++ b/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts @@ -1,4 +1,4 @@ -import { getFileDiff } from "../api/git-diff-api"; +import { loadWorkingTreeFileDiff } from "../services/working-tree-file-diff"; import type { MultiFileDiff } from "../types/git-diff.types"; import type { GitDiff, GitFile, GitStatus } from "../types/git.types"; import { countDiffStats } from "./git-diff-helpers"; @@ -58,8 +58,6 @@ export const getDiffableWorkingTreeFiles = (status: GitStatus | null): GitFile[] const files: GitFile[] = []; for (const file of status.files) { - if (file.status === "untracked") continue; - const fileKey = getWorkingTreeFileKey(file); if (seen.has(fileKey)) continue; @@ -124,12 +122,12 @@ export const buildWorkingTreeMultiDiff = async ({ repoPath, status, previousFileKeys = [], - loadDiff = getFileDiff, + loadDiff = loadWorkingTreeFileDiff, }: { repoPath: string; status: GitStatus | null; previousFileKeys?: string[]; - loadDiff?: (repoPath: string, filePath: string, staged?: boolean) => Promise; + loadDiff?: (repoPath: string, file: GitFile) => Promise; }): Promise => { const statusFiles = getDiffableWorkingTreeFiles(status); const orderedFiles = reconcileWorkingTreeFiles(statusFiles, previousFileKeys); @@ -142,7 +140,7 @@ export const buildWorkingTreeMultiDiff = async ({ ...(await Promise.all( batch.map(async (file) => ({ fileKey: getWorkingTreeFileKey(file), - diff: await loadDiff(repoPath, file.path, file.staged), + diff: await loadDiff(repoPath, file), })), )), ); From 1eb1616ae87500624df53131b1d10b6a6a0bb203 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Sun, 16 Aug 2026 20:31:42 +0800 Subject: [PATCH 26/83] fix(windows): preserve Git integration recovery state --- .../git/api/git-integration-api.test.ts | 82 +++++++++++++++++++ .../features/git/api/git-integration-api.ts | 42 +++++----- .../git/components/git-branch-manager.tsx | 12 ++- .../git/components/git-commit-panel.tsx | 9 +- .../git/components/git-operation-banner.tsx | 2 +- .../git/hooks/use-git-data-controller.ts | 22 +++-- .../src/features/git/stores/git.store.test.ts | 35 ++++++++ .../src/features/git/stores/git.store.ts | 4 +- 8 files changed, 176 insertions(+), 32 deletions(-) create mode 100644 windows/tauri/src/features/git/api/git-integration-api.test.ts diff --git a/windows/tauri/src/features/git/api/git-integration-api.test.ts b/windows/tauri/src/features/git/api/git-integration-api.test.ts new file mode 100644 index 000000000..6731ea69b --- /dev/null +++ b/windows/tauri/src/features/git/api/git-integration-api.test.ts @@ -0,0 +1,82 @@ +import { beforeEach, describe, expect, mock, test } from "bun:test"; +import type { GitOperationState } from "../types/git.types"; + +const invoke = mock(async (_command: string, _args?: unknown): Promise => null); +const emitGitChanged = mock((_change: unknown) => {}); +const resolveRepositoryPathOrThrow = mock(async (repoPath: string) => repoPath); + +mock.module("@/platform/tauri-core", () => ({ invoke })); +mock.module("../events/git-events", () => ({ emitGitChanged })); +mock.module("./git-repo-api", () => ({ resolveRepositoryPathOrThrow })); + +const { getConflictMarkerPaths, getOperationState, mergeBranch, rebaseOntoBranch } = await import( + "./git-integration-api" +); + +const operationState = ( + kind: GitOperationState["kind"], + conflictedPaths: string[] = [], +): GitOperationState => ({ + kind, + reference: null, + conflictedPaths, + step: null, + total: null, +}); + +beforeEach(() => { + invoke.mockReset(); + emitGitChanged.mockReset(); + resolveRepositoryPathOrThrow.mockReset(); + resolveRepositoryPathOrThrow.mockImplementation(async (repoPath: string) => repoPath); +}); + +describe("Git integration state", () => { + test("reports a stopped rebase even when no conflicted paths remain", async () => { + invoke.mockImplementation(async (command: string) => { + if (command === "git_integration_preflight") { + return { blockingPaths: [], blocksEntirely: false }; + } + if (command === "git_rebase") throw new Error("rebase stopped"); + if (command === "git_operation_state") return operationState("rebase"); + return null; + }); + + await expect(rebaseOntoBranch("C:/repo", "main")).resolves.toEqual({ status: "stopped" }); + expect(emitGitChanged).toHaveBeenCalledWith({ + repoPath: "C:/repo", + scopes: ["working-tree", "history", "refs"], + source: "rebase-rejected", + }); + }); + + test("reports conflicted paths when a merge stops on conflicts", async () => { + invoke.mockImplementation(async (command: string) => { + if (command === "git_integration_preflight") { + return { blockingPaths: [], blocksEntirely: false }; + } + if (command === "git_merge") throw new Error("merge stopped"); + if (command === "git_operation_state") { + return operationState("merge", ["src/app.ts"]); + } + return null; + }); + + await expect(mergeBranch("C:/repo", "feature")).resolves.toEqual({ + status: "conflicts", + conflictedPaths: ["src/app.ts"], + }); + }); + + test("propagates operation state query failures", async () => { + invoke.mockRejectedValue(new Error("Core unavailable")); + + await expect(getOperationState("C:/repo")).rejects.toThrow("Core unavailable"); + }); + + test("propagates conflict marker query failures so commits fail closed", async () => { + invoke.mockRejectedValue(new Error("Core unavailable")); + + await expect(getConflictMarkerPaths("C:/repo")).rejects.toThrow("Core unavailable"); + }); +}); diff --git a/windows/tauri/src/features/git/api/git-integration-api.ts b/windows/tauri/src/features/git/api/git-integration-api.ts index ba528ae4d..2fea725ec 100644 --- a/windows/tauri/src/features/git/api/git-integration-api.ts +++ b/windows/tauri/src/features/git/api/git-integration-api.ts @@ -13,6 +13,7 @@ interface IntegrationPreflightResult { export type IntegrationOutcome = | { status: "clean" } | { status: "conflicts"; conflictedPaths: string[] } + | { status: "stopped" } | { status: "blocked"; blockingPaths: string[]; blocksEntirely: boolean } | { status: "error"; message: string }; @@ -37,26 +38,18 @@ const notifyOperationChanged = (repoPath: string, source: string) => { export const getOperationState = async ( repoPath: string, ): Promise => { - try { - const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); - return await tauriInvoke("git_operation_state", { - repoPath: resolvedRepoPath, - }); - } catch { - return null; - } + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + return tauriInvoke("git_operation_state", { + repoPath: resolvedRepoPath, + }); }; export const getConflictMarkerPaths = async (repoPath: string): Promise => { - try { - const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); - const result = await tauriInvoke<{ paths: string[] }>("git_conflict_markers", { - repoPath: resolvedRepoPath, - }); - return result.paths; - } catch { - return []; - } + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + const result = await tauriInvoke<{ paths: string[] }>("git_conflict_markers", { + repoPath: resolvedRepoPath, + }); + return result.paths; }; const runIntegration = async ( @@ -72,10 +65,17 @@ const runIntegration = async ( } catch (error) { // A conflict stop exits non-zero like a real failure; the authoritative // distinction is whether Git left an operation state behind. - const state = await getOperationState(repoPath); - if (state && state.kind === operation && state.conflictedPaths.length > 0) { - notifyOperationChanged(repoPath, `${operation}-conflicts`); - return { status: "conflicts", conflictedPaths: state.conflictedPaths }; + notifyOperationChanged(repoPath, `${operation}-rejected`); + try { + const state = await getOperationState(repoPath); + if (state?.kind === operation) { + if (state.conflictedPaths.length > 0) { + return { status: "conflicts", conflictedPaths: state.conflictedPaths }; + } + return { status: "stopped" }; + } + } catch (stateError) { + console.error(`Failed to read ${operation} state after Git rejected the operation:`, stateError); } return { status: "error", message: errorMessage(error) }; } diff --git a/windows/tauri/src/features/git/components/git-branch-manager.tsx b/windows/tauri/src/features/git/components/git-branch-manager.tsx index 9812fc05a..dd8e4d5c7 100644 --- a/windows/tauri/src/features/git/components/git-branch-manager.tsx +++ b/windows/tauri/src/features/git/components/git-branch-manager.tsx @@ -362,6 +362,12 @@ const GitBranchManager = ({ type: "warning", duration: 6000, }); + } else if (outcome.status === "stopped") { + showToast({ + message: `${branchName} stopped before completion. Continue, skip, or abort from the changes list.`, + type: "warning", + duration: 6000, + }); } else if (outcome.status === "blocked") { const listed = outcome.blockingPaths.slice(0, 3).join(", "); const remaining = outcome.blockingPaths.length - Math.min(outcome.blockingPaths.length, 3); @@ -398,7 +404,11 @@ const GitBranchManager = ({ ? await mergeBranch(repoPath, branchName) : await rebaseOntoBranch(repoPath, branchName); reportIntegrationOutcome(branchName, outcome); - if (outcome.status === "clean" || outcome.status === "conflicts") { + if ( + outcome.status === "clean" || + outcome.status === "conflicts" || + outcome.status === "stopped" + ) { onBranchChange?.(); } } catch (error) { diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index 089c5fbec..a080e6bce 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -297,7 +297,14 @@ const GitCommitPanel = ({ return; } - const markerPaths = await getConflictMarkerPaths(repoPath); + let markerPaths: string[]; + try { + markerPaths = await getConflictMarkerPaths(repoPath); + } catch (markerError) { + console.error("Failed to check staged files for conflict markers:", markerError); + setError("Unable to verify conflict markers. Retry before committing."); + return; + } if (markerPaths.length > 0) { setError(`Conflict markers remain in: ${markerPaths.join(", ")}`); return; diff --git a/windows/tauri/src/features/git/components/git-operation-banner.tsx b/windows/tauri/src/features/git/components/git-operation-banner.tsx index 6ecfbcfc0..96a0153e7 100644 --- a/windows/tauri/src/features/git/components/git-operation-banner.tsx +++ b/windows/tauri/src/features/git/components/git-operation-banner.tsx @@ -37,7 +37,7 @@ interface GitOperationBannerProps { */ const GitOperationBanner = ({ repoPath }: GitOperationBannerProps) => { const operation = useGitStore((state) => state.operationState); - + const [isResolving, setIsResolving] = useState(false); const resolve = useCallback( diff --git a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts index 71b750040..c891d5e88 100644 --- a/windows/tauri/src/features/git/hooks/use-git-data-controller.ts +++ b/windows/tauri/src/features/git/hooks/use-git-data-controller.ts @@ -41,12 +41,17 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl gitActions.setIsLoadingGitData(true); try { - const [status, history, branches, stashes, operationState] = await Promise.all([ + const [status, history, branches, stashes, operationStateResult] = await Promise.all([ getGitStatus(repoPath), getGitHistory(repoPath, 50), getBranches(repoPath), getStashes(repoPath), - getOperationState(repoPath), + getOperationState(repoPath) + .then((value) => ({ ok: true as const, value })) + .catch((error) => { + console.error("Failed to load Git operation state:", error); + return { ok: false as const }; + }), ]); if ( @@ -62,7 +67,7 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl hasMoreCommits: history?.hasMore ?? false, branches, stashes, - operationState, + operationState: operationStateResult.ok ? operationStateResult.value : null, repoPath, }); } catch (error) { @@ -94,14 +99,19 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl refreshAll || scopes.includes("refs") || scopes.includes("repository"); const shouldRefreshStashes = refreshAll || scopes.includes("stashes") || scopes.includes("repository"); - const [status, branches, stashes, history, operationState] = await Promise.all([ + const [status, branches, stashes, history, operationStateResult] = await Promise.all([ getGitStatus(repoPath), shouldRefreshRefs ? getBranches(repoPath) : Promise.resolve(undefined), shouldRefreshStashes ? getStashes(repoPath) : Promise.resolve(undefined), shouldRefreshHistory ? getGitHistory(repoPath, 50) : Promise.resolve(undefined), // Operation state rides along on every refresh: staging a file or // an external Git command can end a conflict at any moment. - getOperationState(repoPath), + getOperationState(repoPath) + .then((value) => ({ ok: true as const, value })) + .catch((error) => { + console.error("Failed to refresh Git operation state:", error); + return { ok: false as const }; + }), ]); if ( @@ -116,7 +126,7 @@ export function useGitDataController({ workspacePath, isActive }: GitDataControl branches, commits: history?.commits, hasMoreCommits: history?.hasMore, - operationState, + operationState: operationStateResult.ok ? operationStateResult.value : undefined, repoPath, }); diff --git a/windows/tauri/src/features/git/stores/git.store.test.ts b/windows/tauri/src/features/git/stores/git.store.test.ts index e625b746d..e62b7dff0 100644 --- a/windows/tauri/src/features/git/stores/git.store.test.ts +++ b/windows/tauri/src/features/git/stores/git.store.test.ts @@ -98,3 +98,38 @@ describe("Git history pagination", () => { expect(store.getState().isLoadingMoreCommits).toBe(false); }); }); + +describe("Git operation state refresh", () => { + test("keeps the last operation state when a refresh omits a failed query", () => { + const store = createGitStore(); + store.getState().actions.prepareRepositoryLoad("C:/repo"); + store.getState().actions.loadFreshGitData({ + gitStatus: null, + commits: [], + hasMoreCommits: false, + branches: [], + stashes: [], + operationState: { + kind: "rebase", + reference: "refs/heads/main", + step: 2, + total: 4, + conflictedPaths: [], + }, + repoPath: "C:/repo", + }); + + store.getState().actions.refreshGitData({ + gitStatus: null, + repoPath: "C:/repo", + }); + + expect(store.getState().operationState).toEqual({ + kind: "rebase", + reference: "refs/heads/main", + step: 2, + total: 4, + conflictedPaths: [], + }); + }); +}); diff --git a/windows/tauri/src/features/git/stores/git.store.ts b/windows/tauri/src/features/git/stores/git.store.ts index 0c88d6c6b..fdd324fc4 100644 --- a/windows/tauri/src/features/git/stores/git.store.ts +++ b/windows/tauri/src/features/git/stores/git.store.ts @@ -35,7 +35,7 @@ interface GitState { branches?: string[]; commits?: GitCommit[]; hasMoreCommits?: boolean; - operationState: GitOperationState | null; + operationState?: GitOperationState | null; repoPath: string; }) => void; refreshWorkspaceGitStatus: (repoPath: string) => Promise; @@ -118,7 +118,7 @@ export const createGitStore = () => set({ gitStatus, - operationState, + ...(operationState !== undefined ? { operationState } : {}), ...(branches ? { branches } : {}), ...(commits ? { From 0992bfb7ffa34fc93333ce22e53e8b0b16425edd Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Sun, 16 Aug 2026 20:36:03 +0800 Subject: [PATCH 27/83] fix(windows): refresh Git Log after repository changes --- .../git/hooks/use-git-log-controller.ts | 18 +++++++++++ .../git/utils/git-log-refresh.test.ts | 32 +++++++++++++++++++ .../src/features/git/utils/git-log-refresh.ts | 8 +++++ 3 files changed, 58 insertions(+) create mode 100644 windows/tauri/src/features/git/utils/git-log-refresh.test.ts create mode 100644 windows/tauri/src/features/git/utils/git-log-refresh.ts diff --git a/windows/tauri/src/features/git/hooks/use-git-log-controller.ts b/windows/tauri/src/features/git/hooks/use-git-log-controller.ts index 3e96c7907..be2e1b979 100644 --- a/windows/tauri/src/features/git/hooks/use-git-log-controller.ts +++ b/windows/tauri/src/features/git/hooks/use-git-log-controller.ts @@ -1,6 +1,8 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { getGitHistory } from "../api/git-commits-api"; +import { subscribeToGitChanges } from "../events/git-events"; import type { GitHistorySnapshot, GitReference } from "../types/git.types"; +import { shouldRefreshGitLogForChange } from "../utils/git-log-refresh"; type GitLogLoadState = "idle" | "loading" | "ready" | "failed"; @@ -95,6 +97,22 @@ export function useGitLogController(repoPath: string | null) { return load({ reference: selectedReferenceRef.current, limit }); }, [load]); + useEffect(() => { + if (!repoPath) return; + + let timeoutId: ReturnType | null = null; + const unsubscribe = subscribeToGitChanges((change) => { + if (!shouldRefreshGitLogForChange(change, repoPath)) return; + if (timeoutId) clearTimeout(timeoutId); + timeoutId = setTimeout(() => void refresh(), 100); + }); + + return () => { + unsubscribe(); + if (timeoutId) clearTimeout(timeoutId); + }; + }, [refresh, repoPath]); + const loadMore = useCallback(() => { const currentHistory = historyRef.current; if (!currentHistory.hasMore || isLoadingMore) return Promise.resolve(); diff --git a/windows/tauri/src/features/git/utils/git-log-refresh.test.ts b/windows/tauri/src/features/git/utils/git-log-refresh.test.ts new file mode 100644 index 000000000..cbdab94f4 --- /dev/null +++ b/windows/tauri/src/features/git/utils/git-log-refresh.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, test } from "bun:test"; +import { shouldRefreshGitLogForChange } from "./git-log-refresh"; + +describe("Git Log refresh events", () => { + test("refreshes for history, refs, and repository changes", () => { + const repoPath = "C:/work/project"; + + expect(shouldRefreshGitLogForChange({ repoPath, scopes: ["history"] }, repoPath)).toBe(true); + expect(shouldRefreshGitLogForChange({ repoPath, scopes: ["refs"] }, repoPath)).toBe(true); + expect(shouldRefreshGitLogForChange({ repoPath, scopes: ["repository"] }, repoPath)).toBe(true); + }); + + test("ignores working-tree-only and unrelated repository changes", () => { + const repoPath = "C:/work/project"; + + expect(shouldRefreshGitLogForChange({ repoPath, scopes: ["working-tree"] }, repoPath)).toBe( + false, + ); + expect( + shouldRefreshGitLogForChange( + { repoPath: "C:/work/other", scopes: ["history"] }, + repoPath, + ), + ).toBe(false); + }); + + test("refreshes conservatively when an event has no scopes", () => { + expect(shouldRefreshGitLogForChange({ repoPath: "C:/work/project" }, "C:/work/project")).toBe( + true, + ); + }); +}); diff --git a/windows/tauri/src/features/git/utils/git-log-refresh.ts b/windows/tauri/src/features/git/utils/git-log-refresh.ts new file mode 100644 index 000000000..f7ef0a0ea --- /dev/null +++ b/windows/tauri/src/features/git/utils/git-log-refresh.ts @@ -0,0 +1,8 @@ +import { isGitChangeRelevant, type GitChange } from "../events/git-events"; + +const GIT_LOG_SCOPES = new Set(["history", "refs", "repository"]); + +export function shouldRefreshGitLogForChange(change: GitChange, repoPath: string): boolean { + if (!isGitChangeRelevant(change, repoPath)) return false; + return !change.scopes?.length || change.scopes.some((scope) => GIT_LOG_SCOPES.has(scope)); +} From b689a17385c6a69258b5c75812317e9208555998 Mon Sep 17 00:00:00 2001 From: arkleselect Date: Sun, 16 Aug 2026 20:42:42 +0800 Subject: [PATCH 28/83] =?UTF-8?q?feat(macOS):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=AA=97=E5=8F=A3=E4=B8=8E=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Fonts/JetBrainsMono-Bold.ttf | Bin 0 -> 277828 bytes Resources/Fonts/JetBrainsMono-BoldItalic.ttf | Bin 0 -> 279832 bytes Resources/Fonts/JetBrainsMono-Italic.ttf | Bin 0 -> 276840 bytes Resources/Fonts/JetBrainsMono-Regular.ttf | Bin 0 -> 273900 bytes Resources/Fonts/OFL.txt | 93 +++ Resources/Info.plist | 2 + Resources/en.lproj/Localizable.strings | 4 + Resources/zh-Hans.lproj/Localizable.strings | 4 + Sources/Lithe/LitheApp.swift | 84 +++ .../MacOS/UI/MacBundledFontRegistry.swift | 42 ++ Sources/Lithe/Theme/LitheTheme.swift | 22 +- Sources/Lithe/Views/CodeEditorView.swift | 16 +- .../Components/LitheSettingsControls.swift | 300 ++++++++++ Sources/Lithe/Views/EditorAreaView.swift | 6 +- .../Lithe/Views/LSPControlCenterView.swift | 42 +- Sources/Lithe/Views/RootView.swift | 45 +- Sources/Lithe/Views/SettingsView.swift | 565 +++++++++++------- Sources/Lithe/Views/WelcomeView.swift | 22 +- Sources/Lithe/Views/WorkbenchView.swift | 5 +- scripts/package-app.sh | 1 + scripts/preview.sh | 1 + 21 files changed, 987 insertions(+), 267 deletions(-) create mode 100644 Resources/Fonts/JetBrainsMono-Bold.ttf create mode 100644 Resources/Fonts/JetBrainsMono-BoldItalic.ttf create mode 100644 Resources/Fonts/JetBrainsMono-Italic.ttf create mode 100644 Resources/Fonts/JetBrainsMono-Regular.ttf create mode 100644 Resources/Fonts/OFL.txt create mode 100644 Sources/Lithe/Platform/MacOS/UI/MacBundledFontRegistry.swift create mode 100644 Sources/Lithe/Views/Components/LitheSettingsControls.swift diff --git a/Resources/Fonts/JetBrainsMono-Bold.ttf b/Resources/Fonts/JetBrainsMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c93043de6454ad2d5575f0751150c6551d9c588 GIT binary patch literal 277828 zcmc${4V;zJ`u~5e`(A4|J*eq9O~#(RXKJb`(Uei6Ml(I=fh0_cW@@4+LWdASNJ0o9 zgd8F4k|Tr;Ax;P(2|Xc%oD-sl`Ms~b_Rer}e&6r^`~AKCdA)tsz1FqXy4JeZec$W8 z_skwKBGQomS;_2M*1J!W_3mZ~m+Te^+VvfL?C}r2P|m<0V*IJa$ZFRaWPUD`~$K z>>xnn0xnmn|+eoKybiewd!KYMg##;LDu6FIwp68fO)s5trUE~yNPXAu~Z=M`bUG04ccbkH!n0r6_kXo$+q9aj>(B^Q6|39Q2 zZ7YLd;GZyn{5p`? zFUp$Jr=o4gK*x6sl%>*ooaPA9`{QWxwSLF_@W1J^uD|;Gp%r=Qar`Ge7Q32ca{Ncq zV^zPq{XgU&+E%nbUC;ZYFZqRV7^pve{)eR7P(3u&rl$9Y`o$Hg`gJtDZvQ7bgm#n@ zAuEN(Go7xLN*{uzVo?3N{xmKchsqkXBz@GMpy$FZ zu)k~N{$l*UnU_nye_YRctoi>H^t`W$j-}{N*xz|pfbE}AW8SNGv99)mXzcYm_(x74 zFOB+B`Un0iWBcEnXC1rxq36)U@EB;kb?$V{q_63!YMZ`CaXv{tq|dkX`P7g+z4mKe zElanf>vOq<(0<4ym-}^#qMk zI<9)n84SA4|LC{+sBLP#`keMV?WgAJwNuXNw=Zb2BjIK=R{n6`} z`cuRtz%I;MXxLB zlg31k)kf3mi`uES18pNs&2v!eXt}EPoAycT)dQV7Juh^OI(OQJ*4Ox{YPrr=`dHU$ z7HC-&=(-vS>GHJd8qhL5);6_mUH^K`QD1c4(|)S0=BX;0pH@w4I}K9#YL_nWkV@-% zQor;#-H)c#whWF3J@2}w&^6QrN>i$7wbPhs9ko^eG<^l!3^&3wm;qP8RJaZg@TT)s6VBiLN%*-ibu-GK9A?|ne*_8tN&gYw%DL<|zPoa%nKcjuoIh1b%`q}djcq4_T(`?0V7JhO*q-}Pc zOL`0WjD2r_&O_?}KJUVQH*wp0vS)Y9+iJhN9dmREQ~`C8bEekp_!jgUcCSzCdQaYS zG`8$blWS7DD-PddX ze*90`lK;E9HIB7TO`CmfX?uE}sHWk#dYeb{(rMMSO**e;dChdvb|v3s9f5J@ysJ zc3Pr}_Ol$ur_i+8?T6&Ku5Ip*uH-A)CUujx$C0LeJ|jrJm#co5<2q38(fvd+J{r3k z{iWAjvg}97BA|XU=488i&Hpo)&*ZbMwx@H~9v+9O?5iw$s-5h$osCIsx7UXPU{|gFXvMFc-JE+8GWy ze$HLpyX?Dm3TZw62Bw}DR4jy$>(dPyB|o#%<522|aBS;;#|ME6_?WMjERX}_5II6F zHHVtZ%q(-Wxy#&V66P(l+PrJlm=DZav(BtHUz%^skES}v3OWae2g8DAgJr>M!Rx^% z!M}o^LmSo$8-$I*tS}zthehFE!b`&$;mmMWcwhK%mt^=wNUx7}>1J=Tt} zBke8rF8hF8WS_Rr*^lgJ_AC2iov*X6%DyN2m#B%>jb=uhM4Lrp(cEb3Xs2jlv|F@i zv`=(m^up*x(J9euqYI;tN0&sOkG_}_vJ6yq>cr=i{8uaz4-5n)7w6UaWDfX{==|JC+w~A3Gve9P1G)jrEQl z9UBlE6dM{lDK;i{UTjM2+Snbj2V+ZOOJmQ+R>WS7y%BpWwmP;c_Cwso>&9Ee501Bv z=f~T}FN$9mzcv0?{H^%j+??FpyxDp8=G~X~Xx^&4xAWf5`y%g~yzldVYCWO#*{!c> zeP5f#ZJM@e-ll7tbK1;qb5EOB+pKT%O`D(FHf!6z?euoiF4Dey!~Gkc+&gM-b@j>B zr&RB$t|poX@abqL=_d0`p}8>`sd?rJ^X4BS^@aJ`>@d577Qtc3NIgTOUL{g%laZ1z zvM*A3Vb^dHk(x%NZU}D*9|#`_7lm(x?^|Q*+bo-FyW28*oITafvUl41?c?@u_F22u zuD4t44k9&`NX<({sxgsjk&4t|(IcY8(J~@6DH*A$(MSIfsirvx)`--MoLM<{6RG=i z9?W?-6{*!k>Qf^1C6SU?eInI@NX27qVukx6)puW{M#j#FT@YDOx2lJj#u@k;&+x>jH0Q`McTkFTCuJ+1n(>PxFH zNfjq$?}vNuy>~+01olbMwu$w(uGK=8kH=>E=y0Z~pt{Gd5Li&f1*4 zx#{KuHisMMZM<{KsNg_nZ< z;dmQptCp8<)@tgvf8oyX*Kl{Z*ILWf6PpZQ=Iv}9+vqpjR7riTT4-ATZ)3K=cCvj) zjex7|T)WsV;XGPqU$86et9GS*!>+dLC{s55)|%svsQ=s?xYNzk^#1>)Eq$q*>aK9J ze{bog)5Z;{@)_=ajvfJimc$X|RDNP#YN1=|-f(ZZ_3odV7YQQ7G?E&5Boe6?Vbqak zkz`~dts<=U2y+=(8F{N#X06nWWE5tMO}F^(n!&x8AFLVT`S5tFj^P<$x9}BP zDjVJEkQxVDrm$&oxM;=WcQrE;tsC&$Y$ z87>uakxY?Gmb%1v^!JS-QR{_>W*Ag{`MvP#~S zHL^~=lTGrud}A_1_fTWa>&kPP)OSfebMXO(Pj z$^_F%ZsX^eYRfD9#L`ariz(uM`;#0f@5=?In_O*_{TAI2ac`8=MiG8H^9k3eFB@1rvjF zg4=@IgE_$s!7ag!!Og+!;HKc#;N0NO;I7~f?&v?6RpvYMt=VpVF#lxlwaxsCz1Rl! zVJpq+<_+@?c4%*#ci5x7$1d%Cv(aoaTg+zjx%t9;#SUPr`JP?Ck3l`&P1O$?1dW2m zLDQgF(42k2fk7TWZIvIi3EBqjf(}8)pnzRnQE)`iB1wGkml$briQD$$@i~V6~AVFDRg5E(8^a;YC zZ(xId@>g?~JYde02h9X&C~rz*KH;bV8#&Fi zmD5c-8Ee|h7?Uq&nL}lw=`81%LOIuTk+aQVa*H`xZZ)UK?PjFhVJhWLGfM67Kc5xP@{DYj1dxh)9S+77l^_=_DBuCX1%_2H-XP&+z&$ClV0;b-Aj+>xTT zw(V(KhF{tScDT*92Zg)1TfNIpJJTLu8`}Ee&*3&(%x?Qgdonxj#LIgyUyL@u5lCG zneJXU*4^%|cDJ}$+^6n#H@n;1ICr5t*WKV|xXJEeH^(h-=eRrEweBHzk-OgA<<4_| z;jVU;dyxC!csJes)lGEwxy#%c?gDqYd%#U`XS+%65qH14$IW)Py7S$9cZr+pu5_on zi`}Jenmf&HaPPauy=uFPe-hOXGPa=qM0*Wd1RBV5$=aR<7dcCQ=kdb@*NGnelI*Vcu0 ztKH^|{iprXiT%NT;mY07_8WJS>u0}qRqkZ_y&LU@+wW|(-EKd3C%V4&D>upwv){Uy z%W-j+>)N>1F3%m}y1LG;ovZCK-2u+JPVR75$2I2J;ZC0Q=GwdMJ@#HZ&)#Pru@Bn? z_96RM`=Fg~ALSWvseOj0!FTNY_7l6&zH2|QpW0147k+Htvmf$wxY@4Z*<%CG9_x4l zSz%vc@AP;38qbc)?MwFAaA0^$I3OGp9>;$9Z{aiHlJM#9sc-SG_ zEIJ^?aj3qnP>zQ|a10CswNolUcZbSFpmo?MvUBrwwBF?~G{vKI0NLY=2mJfV*1RF93LBR!$oR(RMe3VSin^XMoT4Ie;Nicion zDK?^~!RfFAba$-mhH)u)ZW3K{V04}88UmAvj`tXzZ1l|%Kc6i|V|2F1#L$TzL+s@o zI2Rj@`FS3r@tou_8iT)hjLz}-Z~^w}%VfBaw6?7=0K+jq5uPN}wV?3;r{~Tko>14t zr5>yP%=3gVq8bkf4?*wugfF8Hc*1|6^F84T^g&PfCi+*8({?nL;GRYocp_8Lhdpj7 z`iRH8iazQIH4Y0sHV1vo6Y3gy+~b}>pYTLxpb3wA4%Kx7_F!}|Jjqxrs^5!Z@n)0z5;A zEKku0{dH=jPIlviN2fSO!U1JmFSujqtW+MOh!LQp=2PiLfiPJ2HQx3$w0sL7=vp4@5#65_7pm%A3P=p{inxt zME~V6x~_J3jK=pzkLiy7q6%% zIcEo>wLQ8Pcy3K1QM9f{*9XtENq8zwUZa!OY1Wjf@6r7N&$vl+z38<&dHv2s8+vr@ z@C2NMCu-4adh)tXe0VBOqWcJ=V*p)8JS8X5`#(?3Ns{qyK^k}(7oMP#Xl(V~ki0+S zqgftZgFIpT-n)iHp^%4BPd7TVe&j0TU|rRb#xS}V*`yp&u2+=AHZ{)N9VYmNB0Um$9Xg+thwa6>y36up=*J) zn_Rzx&_hya+;qM`_bEIFdN|}+Fp2Incqa5{+`4*n&%wI~;T?dF+Yu<}zJqrG9*vdG z7wEo&_Y)qCkIpaXzC_n_5{;qGBj_H*l%&uY>b!vNS$MbM(Rh}6bkCyq?<5*S9Y5%v zg?Aqwjay%j?rV5A;?dY1o#G(0zeo2ty!-G(QJrhhJp%7gJURy&8_+!t?^rw~l|4DS*I(HybQJoh>$E|Y#av3@-h0e`zk6eN3 zyeK*!I%bfoP@NY==Rn5^G7TM>Lg%T%BUhr8DReG%oFFsN(J6G?RUWwx9g{-m<}{DY zKu=Gh^EcKb^U!fAH17M@@Lfaefky+@36gq!rdE{R7>=fG1M32lx&q<*^p6ii& zP>qeEK5AS+_gTE-@MxdsdvxDqE=ZwmO!nv=O80-sJ>X*Wq8eOG8gviD+qB=fgf!?r z$!NS4wbfWEy6$fD@b*oNjv06lC+22PxDvf9MN@R1NB6(xz7(C%Cp`M;v`M5O-sVk@ z{zjsC%cFZ7vpPkHzMCQsU6W!c`aud^Yim>Jx?Gn+*XH^Zx;DS?=yRC)(v!RweoY#5 zuWi0bQH1XB=rf%8(WCcOv)jX4M=^Umy2mklJ;^}ZRf#4ZWg!L9Y>xr;dgJqrw>n(T{USm&t75cg- z!g>psHzjfn`jIDcIl9ghA@0G)o(Sh!zk2WG)YeLSCB+sFYS&6WgL*`V8 zEJlg35~%;oX%b=*GLPX5@^v1VM@A6-q!b+4QK<8p3^oH8dG;A+60=CW*oK|v?TowO8oVmfx&m13&h@R zL|c2z7PO7WY(`lZwk95cNkJ*ZL@R;w>j&KMzJJ3$hnYmKm3!w{X)}!qT z-ALn~?GB}+)vq$>O&Xu{U6>MR|9w4y`qdAPCLf<{e;7bo`yc2D)UQDvy?)qZ;8<)} z)0Xw51UffEJOO^#<2`}S-%yWUhwKTS;865LD5tKDV;Br4%{cAJ9=$%<5gxs^S+4I& zpmRLZ6EJsnmPfDs_9joz5WU%BenxNc1Uff&ddyDrE>BR5-tRHLpbvP0Bhkk_=2!Fy zPtXHRc+4(zktgVh{>`J;b^Ej@C_$g~=r!Ix=LwEN*Lw7NZ$I(`y-==;ieC3E*G45E zuJ%(8r-RtfJb}hp*BJzQ-sswbfY{qFJOLG~u4xE#E$BLfAVhWjL7?kmhbOS;j~+hL zkvd;{^tzTk)uZoevM=}Oo+bMVkG|u{zS5)no$P5IeaDl1l}GnG+4p$l8g!mVh+X!5 z9({L^eZPlKktAE&1$i5t@8Odr$<}s3-&tgp_tS%6d@r9ZdFOkJLh+^vKKT z5)YqzN%m77eJ_*E`ccH8tRF?+>trwW@Clh@KjYEo{%qEj!l!1E&AL+b`9FJ^hfmTZ z`+1K(_h-N0(f8BYFM9NyMD}uzzMsz4{y^VJWa}6}-&JR;-=Oa&vej3Rj_4~MeOHnF zsz={>XKOq_-*aT^+=0Fu&enK^D97{FnWfN5-RX zd-VA)d$mWZ(04rg%$fbJN8iO}zvt2C&g?ZFIURl9qtBq(A9!Re`k_akN3%Ik6&Zta zo+|n*o4wAX?`N|=_ULnGHs`J)6H(4xh0i1uXe0@XDK`u;WhUmkrH$>utv=sVi%A3gf4 zlKqoM-_d6O?9u0y?42Ir9LxU2qt7c*;|W>s(Yl_H^&ZXigv?2_F*IRsF$`_y2{|vK zE#N@%8E>?uCuFXoS)Pz_MO(o^*f3YoY)^P9dax&Cy+xxQw;av!IL?`9%o7s#Xs##h zj<)uMtmkMak39k`Mh)wVWN*t765gPNjXHn)> z(Px*OjvluHE%E5SA!mliRioE=++K8+$6kQmqO3H9`_~6wMDVh zP(7yH-iUJDP~0XFLXpIdL5)ZE^s&IB``1|L38@pa9ypOwnv`{VsTHn9@S$AneUj68SJ5G8)#3uHCpJg zqtPy&kQm0gdMxWY#`R0FJyzTnM7drlj6)3MF)Bu=WBeB$IU>G z@wmyT#t+=XsKyN39F%iIaSKq5E4Xt|jU~7{P|hXAU5j%5EAAomM33V-6z5u?xa-k! zkK;U!5A(S5(BU5U7xZM0n~IL`xUU7 z+T-p+t32*9RM!f)GtkpK?gI35kGmYzxPp5C)p-Xu1=Tv>&PH`jfSZJ>Pv9Owb=`ow zAJy@Iy9d=e_~mA!I=|q~M>T%n=A$}C;4VS6U2t`m26}yBO6NgS!;f z^#N`gs<8p5W7YV9+knpSxcAZPJnl90R*$<1)%bzF+l#9otW$d!s^bBBII8EvJkniI zoofhxLUsJiU$_I+v4QQ6YFvqx?T6|bg7BZ{0#En@`miV5j_RC3_!0W3N8cO97kX@O z^f8YuL*MeauhCtwoAG{+?t#6e=_^+}?mN^#K>n|22$uARsPnjWXvE_dqqRKl6*R-+ zoxpPT^*rtq^Z<{09j)(iJJALn_cNO5ac`pyJ?>q!k;kn;8++V) zXcLcn2W{$c+t6kn#~kD~_c-P=w}r>8L=W`1573q#$K2&+K`Z9uWAq@8`xMRgxF6Aj zJxr72Mm_EqG{@ssqj8UW6(s-kHHb2ycDhjX=0>U<{?k}0L$9W z({{mWKg39J1t>96ENdx`7%BSxGLIN3PJJXsitC2zc)*>25+lVOixMNnsVy;5+z}`- zQrz(wyw4#Z{ujOL51b#7nWPu{`3XxKmN$rC8QUUd-c$qQp*d z>PxQ29f{_7Tm{&iFW=)%LEC!lF0`G;4ME#`oQ_-P5uD~}48ZAFJ9=CR zdWgre#_~FO?7vWrF}PCnFpp#Wd7V8@*Gr+t6`@@`PUo+y#~pAZILIAWhy>~X3(N8mIjJv^=#+SB7kqB`qkez>Pq4Jm8|J_6@EN z+S}t;6M1?JPTTJ5v3t>e9yb_0+T*mI_6Lr2kf&nbe1^G1N5* zE=09muv<}`FRUstHPgK_v=zIS>UH3p(B=1Cz{Q*76qn{Pzm3y4(Fptx5 z4ENY?(33q*>*;)f({byX1N$|q>l<7Zs`Cy`>s5H{_h_ZZjYda#oc5!~V827PKG zjK^+APxIK%(bGLn$28XCG$!Lb`q@U_86Kzooau2ozVROWEjq#DV(3{OmxG=S6Y)Qe zp5t+C&~rVmHF}=M<)M>2?hy1Z9;fU5e2>%f;{uOshfemm+USKImx*5FaR;Cmdz?k5 zcw8s+5|7h!=u(fXgI?xwjnSzddp~+POlLmtM6dPON6;A_`!IT)$1Xr;dhA2!^&b0I z^ahW85WUf3=cBVc_EGdExP`u+MrV8M1L&=AFZm16d2k=;m8kkbJ^Kc_*kj*8pY+)G z(Ip=JJS^`ikKKs=&12t1wLh>Qpi4dWQ}h{+-Gn~tu^*w&dF;pNGLL-^ecod~L|^dO z&(Ie=b~C!%W7nX6_t>@QOCGxcec5BTpesCf9r}t#Kj+JP6_^97<*$3Jwx@Fe_BHe$ z9;^PY@>uQvEsxbc-}YD?pZdg{Sslk09;?253Ez;fZG7*sI_{r5mhrXbTu>qv=-Hk~ zC3=m=5vSJk;6Ba^;@F0Drntw^rXKeM+T7z3XjhM0gmQi<;Xsu3mGBsJq9+`Ha;_=i zAe8l^*jv!Ka1UwCV-A(@IFvb5!l5X0s)XO8j9m#?BW)PF60#QBZ1sdo(62lp>!!`u zo{;s`hIvv#)=`@u;b;22U8HR@k1a*}d&2Kf=BMp+>`&PDDiJ#CknF?`NJwsi_SQqJQ3toK9eCCGJ14;R8~$-LWU)zG+staQd-fgL&6j! zq7|ogNCXA(oOn)$L|725dNOR%RC<*r8ka^ZDtavnnw0ihloysJg3_UrqltQP5~Y<@ z2|IZ5Vt&bxW)eALTIFc&;`&WZuU1i#@m`A?o5qyI6Ee7b%&^7Hj9PX`*n&jZKGC$a zT>DEjD=keKWJRl@iRFV6w)ODE`R0Jq-lKabBE8FV5@Fu3At#q(oHe67nixEotde0_ z(L|A^iiQn~F7noRluuUbD4OV`<(<@W`QY*>voWJGny53lyn>vlmetWzS50-T$f_7N zY*-evm8e%bIw3>K6EZ-Jb2!c#kjU0l_JGQznKD`}mO2?VY*>iTA2Z1fxz%n9(?rsMW4RqIN-4y{*r%tc=10e@iNcsYyjy z(%U)(i)+`H(%!w=r-ZSEr8r0-uOO^&C5zWHMw3mc7 zURmb5IN(pJCvvGp<$Xh|S*gCR|9Gz_58%%t^d>}E@tk4pSi}tq76n1?L{(*3heT!p zLx@Hb4NCj#$Vd>OM5Z1M;V3g1uZA>~nVgg;b1)jm6Aeo%qBAO@iH1yDheV@-0Yl3d z*{ZT(xrqbD#3y%1G%gr$T={_GeP&h;`HhqLO$ruCqtX+~7d2{BnlP2U5)IqyDaX?4 zwWxvqFO&ZzOfzB;<_#`iq~{^i)oTV3rrXSRIdQ6`)2s(A*D9RJS~`r8^u_VI3mScy+Vd)SrsvqgCD=u+pyG714?Oo1AQKQ(o#`OG|O<_T_OVaZ$ zwC3CC{qL6vu0H$qR`aD9cXIxf^@tZODl|=XtX-K82C&~c6`U-UMI91{7j$f1+#yl) ze=}uakH-86LL|-dq8+1s^^(BU9zA15-*{gxLFL@|xax98Dl(>N6K1#@*RE!X=9pP7 zr+G=UMfIdtqHbyXF*7>GqtW6SwAualX3>tmy+kD5D{UQ3ROmIOx^iZj_WrJ9ODn24`M9Zav9qO>S)?n5aeeq>ol0Ee z`XBF8S(Fv0hdzuGN%lf}`{@Kn^pYImB0?}63ywR;A3UMOO1)dD6CwXkT}glIi^Wo$ zo{K0RxYnt;h!-V4odX>?yG z5|KQPj;3he-o*#;-&bBmJQXdj{2dZK)4e5UKNYSD-QfIj$mtN5aQ*10v)CumytI69 z7WdR>@vx4II+-S%w@3Z1bV%0V-<9_IU1_>*&G!CSqqHE=t$j^{bft8MWd(`u?Psw3 zbdAm6O#d_A2x!MdCtU2E9I`Is)_&$I*`W3EL)YaT=S=I!ndb-8r(jVX?lrpllPmwf zx1{^-Z-M=PS;acvdL1i{7iHztST8xlQhxU30^F^AdRF>z)V+O<#!TlWHJW`>a5PiU z)Sve3PB_CGcT9BUEbsp(`2%RqG-;eT9Gig!i6f9fI*YxT?r0xw!s*#Mra%{TVi41O zYyr={eMk%@VKi}E!D5rl8A2kNbG+L0rD&+yXyOF5(Zq>rqluFWc$Sb-Qstz$x04!H z@TBp1!%6wPlhw{>=?Jw;rcP12Wa?D4OQuF@pS>}w&^|R$seNibZyuVs zmksOHK9Mmd5#|n_oW7xV5FP+m4q-cKZs1<$ANeLOl3KlZzCP;E94GDcprqb0e8EQ7 zjMf<~YPmY8tRX@Fphu)**QnKVW(7<&hHJOV-7#VXqgYWZ!?9_l$(x z(--BM>BsT3Fuh!ltI8JT>+#YI@flJ!ENf94&3ZOtsu)``ee}?zB?bDgq~745Ur-du zkF<2Ie!Hcn`l^Jzo*Q}DlddWvWjqW2xBgusm+*T@6M}U-AGhY&dtk7IZ#?Z({d4s| zN`5O_SEF=GaL9iu4;!WGpCl*AAihJXd-cVpr22f0lE+~Wb7@#=E=>7Zg|2~ZoV^xW zK{4?5!;FV%Fc;VpnN@&YfL(xHPzVEoHi9WI8y510p&wMhWZ21@j!dAwzRlK8-`!N+ zPRs$`R76&a)G7ki4I&v6fqpW!z;2P+O`rhEfPQMzPi^|CO+U3)z9RKPUYBGPCC&|V|jYeajEX|FN;Hl8oiBp*tk945kaSOC~J z!M+LhO|fqpg(4UXyG5EcfdVK4+HW=qXtNn@Hm?wAfp0CUV2Vgf+RJJIl(#B`C9n#% z0Bs$_@j)CP#PPwc0GorUe=x_CJWK;@+hW^p0dLK)VVf`QX`?;)bSVWbpcC|i3YZMD0J{S0 z3e=AJ9Wo&wN}wDj^26&3VFj!g=~M)RMGkEROJEgj5jku(KU~lFc!ZJ8v{Oia7wU9f zCUSTcOo7=zTZfZ>_7ZA_MmPL>h{Eko+AJs zdeTqNEg~iTfHq1d0&SOU;OdR-Q5+vN9Ttl8Y6bXNid`vvmCl7FKpSP#faBiS^e%*f zz&LtOf!TmvZ|r*0SMS~IXqrF)l)(sgFGVmI#==yX0|~&Fz8ly@aC|g<96c9ktN#vu zd0@H7z*&5e4D|$5D3NYLOwWU?yKE(*)@E_-!IX zEmXl2m<QlR}4xB4%kIjIG@0PypqwIb!6 zU?psTog%|BAs=XOxCQ(gPCvs3LKWc4aC{k#FT+=eoJ{%2l%Gub$&{Zw326Id+CF)^ z$cPLmfI0kP_+Y-ohPF?|cH{`awvzrU`#}XvhFP!xXrq!gMv*s)ywUhFn!ZNU*J$cj zMFG1pV`003E<1vGFSquU<*(-j>`Z|ZU&%uXtrotSc-*cz&3+TlnlUngh zw)k}ZJdq1%`+@}`lj-L|h4wC7$QRk<1MOTi8D_z5k&CAQ{aiesFSMcF6!I>q0BkOq z4zzb^E))X3Tsjoy0PSD86jt&J>XctrEHbqUCIMr(oW3rn?aMcaTu~0#T}k~bSMiJJ zbNMB8%C9Pdts+-X2im-v@m#%J8)VC$hFkDb{>CwmT}CO4A{=tEppvhSivu; zPXzL2Vl#6o(D(J@VVcMd7N~avz*Z|u_X3gdcPYPiY%!HjHHGH)_)d>?i17Z?xtaQ}L~Lp*)MV^=`lAw(Q=|!~jWDzWZ75u_I`Ae3&leBPgM`S_ z)Ln{yOBeDbLuD`@sQWDSo~5m4xAP@KbAi0)sQcU&*v%IXHGu-4&ax4F;m}~dTnK$} zk_c|d@=U;f`Feg4jk1@pOR}0T7Fx!a361BAgzCW*pv_ll|FvSkua%u(1z#M*+`Ud? zZ! z+Wm43zwnk1wEGopentM*)cYDAzMb40dJ=F4>ofWCg9uODW@ zLRbac__CdPPyhpAJj{fJunM;EOZWAl00zQ%mJ7Xrs0XXXgp*)4%!d_X>_FHi#udUeF%cd=BD2KQ z;?u}lTf}4x6;peOu+s^!Z!lL(W)q;l%q6f! zOhb+v4(1DXEG&ebVj7phP@oR`b<=n&Z(?$x0yu8MaZ~Cy#kN_onCAG{9KV~-hE=d$ zObgm&KWmQTKW8BR4P4Ea*WlwZv-q+a z+8c~-$Km^Nv^#|K@%VZCG9Ha-cj!*Oh=#ULoGs=g^4X`E@+gol-yvogb%vwtxy;Gb zJ(;#gSSSSi7%@-GDfM8Lm{TXGzF=mGmyQ#PJ9A2Jt@7c*rj?B>f`7VxDl zlwXRkmsa^NZMlr`Tt@w=^fz@dEE97%<(DU5y_hRXV5gWXv76RU%vDjC46DUlT?n&* z@@q1n0#=EcUIbf#{A;Oy?Ic(N_%Nd$41}3tu3IaHJ&n1Zer}+x8yMq_=q%d0DIaL( zrj>ko%uq46kblc`pv~E|Ih%U3X9IrRnh7Js+|~qU!93U|=JrmoM9iFAAny*^yMuan zY!`DUY4$AU&aGnZngZC*rR;7C^mF$PG4~V$dG}5dGq07H`|0EU)nXo)3M<6SFB9|N zcrkyC0`?Cr5VHWAhskF@VIEl}=26NXoe7jLEQf_+9%}(pV7-{f#{zawP&YAK%%Wl- ze=&VNNgGd&_pf)@8<-_)#XLp+-^l-43G5W}^kAUvr5rD%-ZS&WJUargeU7r{CIjPL zMmx_(f&QLPheY!%-XRUz# zH(0=a!%{IDvDrvFo2CGDH|GQC&9uLz9#p{sF`v`s=M}IJwu||qAIyX;V!kYcgqW=v zfX!CYU(v@`MKBF$>ucKj8oRG)`)iKBA^i>gZ6kl%MA#zc+ZIp-3t*d=?>Yg;-z^vO zeJ0TM_tf1Ug~_m9%nyYy9kz=3=U|}jzXZx*iI^SO?x5a|d9a-?I-=hnsr%y!F+XL% zK$r&0#Qec$jg_- zrUPwt#3F_5*$u>5p{~F)2&2;?sFw5ULe7dlVG<5JzBv)m2-9A%cg#>*m@5^!D-4gJADL8tl1pTc91E@Q& z32c{O5O(Y%f@5i8F!sllNHC<81jn}k#y6BcPnayhiS&Eo5(!SKf-Mr1qr;Sy5)AJL zt0Z905R5=i!S7Qo(C0|f6}f;9l^j=Ykzf>gqiAdNdI_qq9|NcDlwfQ<3C3kga7K{? zXHJ%2{B#K>PLxe}Z^O@i~Vn>1g7^9z8o$yS03w@EOC zvP-s0aOntGBf(|!B$!Is)K-A~<)klPF2NO55?o38%9#>Oqih;>SIw2+>P|p^*Wk
UV<6)dtE)4D#1+3XKs+-`dJd(Pyh=gxRJ6Ose2>s-nd1ASp$JKZX%y|5W&s4 zPzDJJZlSMRroj#gW>*2@m`(e)VS5{Pw_$hNN(pWsD*^ZIU=Ha!GbOldyaaPsNN{(# z1ozO!J@|63g#{AKn<&A3%-?<3-k%R8fG-bV`vBvZzg>dA7E18YG6^20orl*-@W> zh1C)~-3rFSDhZYjmEalLer6z0_AF)3Rsd~2R{-?&+zttrVZRLf=dpbr+vjHj{X9?k z^DALJY?t5#3oW1k=<@~Ie}TF$Oo3TIofj#85#L_aH1(Euf=Pg{e{TY_C3vX}sPocJ z30^J+@?OTj6@@Sr$bW@;ugnF~uMP!#dX+X`T>|*@Ds8{IoiB>Rr`K8lKD|}~*uI8O zuPp#F>RK*eb!A z*%G`@AMa!H0X}@NR)P<)`>+BQNU$~+iuV!9aN#DwXLq4Qq_!Md(y=xlc?M>n2sZ!; zPM6S_@Fd|cwv4o-%&{UFwIUAtu%U}IZ{N9LPQyIIpCM~F+|1v5gDKd%rU`%eb={uU z6N2u0X7Ei@f#}7x3w_j*OerX7dw}5vHc*%iV}r4DR5ZxZC4ZLX7?Ii;nAK|7uwkV3 zf$cjt?%X)uCSI#?=Qgcdw~0h*#h2dq%+&ms@_WuMsGAvvnRT_JMT<=H6^9<%sL`>V zXpFxZmh3P58=p5CGHOL`3P$ZWpTC({BY(HFi7eBcAfolOo$7;wF8r)?n@G}fUwis@ z0)Ojg_rCn+|0G}k&gK5>U;JJEZ~o5yll)t1F*IW>is=k zk1_YCk^fSS{4O=}U;bVGGyB@VA)T-N2l_d$pZ9yx`5ONk@t745=zVeeaG(7hzq6ma zFMp2a>pH5=4~}9THI;1XR&sb2Z&S>`M*L9502Z$`5jz&6FbGE{*HkT+UQ^ARQKf0q zoVL@ewr=OF=0}a}UN+>9i>*#UPNM@)?AD=2 z=Nijy-&nrh=d=Fp$lu2J?7sZlQ)A(MQ&7TK8t@~ZJxe$vCCmuI(|ISVBQ)xYM4o_2Am@LuWs#w7*I~rcvHp#IbHO0X&A3}y?JQiEw?P( zyY-6bA?Fna>&|@XtoO!0^%Q@C=v4J9*?%%7E$Ah6j&N4<8wUK{n|1ssYD>d*{wQ@zuyce!ieputg4*?j=QBrnq{zsrVN}}gVAU({u2Gh zXG{%n<#Xe3b*XTjS+)I9`JlR%8orhm>EW2o%FM=E#?12Y&@+y$dt*UKF_;XB>9S

^Q2@p_nJptvCyhdNtfUDv9XvP^J$Tq^Yf}I z@@opbHfveEGpz1a^zA|AGxJUMeQUVL-5D;~x<4Ik?KA7Gr9E|b}8{ES>(x&r`Jsd84{T%PSn4j6idC323^TgQ&Rm9C)v`@`3$U#6= zqI#*s4p$8cT8Ca4oXVMrY}>sK?Z3V3x%gkPqWHhDPWi^di^qPjK)Au*&0$c*VepVV z$6=G+{(fxGYW*Kwqy3Sj_6ImW6z~5_tsQ(XTOYUD^bu;u9wa{(OM33h+H-)#hNSkF zlG?MA+P{+0PJCC4|3FGRoe9zYpw>?F;`~^&^LecTr}xRblHfu7SoD8fdk^iILi|{? ze~{W~FTs!Vu$LvojrF}WVdduOv@Nw-H2#I&CB%v857C(9ZS|#c<)mG1RT=Vz?dpCf z_%Nn|xr8a^3_PJx8jTH^nbANz3%3r+hRc!}cTAZ-4v za)W^RV=Bx^5ibPHtx|2wuftqFKe*4z&`xEp(7{R|Hd#v&AhvI1UyDD>TH`OvH_m?L zZ2V>P1MD^dc13`lPwI(5UdLUzGO-+RR8tDHh@pbY35Mz^bC>EY)yI4m4OVNg)G%lr z2?DHTC0o7y&2+vR3C6!nEO*<9FM_oK9(<1cjJ0FV37I~d>1>Ji2f6&lxSRy-0~Ct54M@Mj3^Ou-(>7u<$|}uIqhFx)_|J#` zMwY(1wDeW^M*N4YX4%jB=yF@ZQ%3R5e91|Y4Jkz#CNvXQu|e&!S!N83I7_BgHk;ec z*k&hWEcDN(t>%BStRBHv0PP_CIA}bd-5w14M%Jyvxb*9*UzM}=+=4%QmVZT~vrq2_ zj7j#(;4qGH7<1TQZJLglK{y9}kO3EI8en&l5i;Pa)Eb=47lvGF4?6Ze@(6qKkw+HU zZx$EhmPHO%{!TvDx|ID)Z`bxSyXcsyPV0E*G>(eDtDAtNIM6_@P$lit;CV?%D8mdtIW1SLe z@Jx_GS|1K{9QST&^Ah?7lge(s&gYdQ)yHb!o0b(OUxt(fF-4Z8N!m&-Cue3@AaP1L zEXODgG-P2e5(9G!Of384olD)3aL>}6whOb7-kyl8EHBUAhAqU{7(>3w_Y_tF&i{Ui zzag&!uiAmvnFu+oGc(u`hSxkXnNp@b511@CKF&*iP|5cxKKt;}?)&a}@=x!3-!2@R zAF#UklkxYkb@4A^++mzuydP`c#>f4bdPXrV-0^usGD@CUDZas4fx8n}Il2>#G)hLh z-C!-ki6J(0+Y*bwpzzot-g$za9Y#oepFJhR9;VzXMzU|YDnmW(8;Ogc--ayZ1K&EY7H zSJYvKV06dv<4f;*AB!+w_nB_C{;ln2w!ev^M(>Z{{S}<9G{x$3G8M?icr~m$P?j%) zb&vtZfTUsp6i|~wY=K}L!F*CCiKItyRWI};d*l<_cRYE{Y%|TwOj~oX7hhu?AYsAY zd+rFuA7V#0eCb5|+hW{J7&jN=+NH{vH&X$maDgx%4hz(VvrBe+q20*E;b4A~93~Q} zK%cO0difXM)GX5bBUp@xkCt!XuU!bv*+7t9Y zm*#|h68$fzxUvax>onIAl1p<;Mj#0rCQRW-(+<)o877Ilc607pA{7_fi@XFRp(ODc zgV?DnAeG|vo`%4ynEPq5j`pMLuHV{HFSm%<19CRLB6+#9YhRFXMXZI+u9%xn$9Dc0t2=i7{9OF|$IdTAgRDo>Z)t8c2M*7PR5+)#YxFw3zecaAUD&R~doS@Bs_bckVkiNl zINdFBGRfn1Ru)xeWn%XVS)pp7AOl4(;EaU1@MKo`U{RlroU`)z`rLHJ)LHAro-u%y7Mqe#=FX$$iQc!~gPFB>iQFsZuA(@@^v zcI9LNm}RU?l}#bPN6oPJB~FCdY*OujO6u7-(XpZ0V-^P_*jQ6sSW?vYG4-7Mu%of4 zt%#kQWHWS5a-wx95||D<2CFD}~Ns*TuQr9q!qUj*D|!+p5-m z$<+~z9t%dFchy{N>7%9A1THqV$G<#%&etc0;=f^AE28nLXz$x5#>* z>ZBG6p3=TH;{&BT@rn{LA1Qw(D1TNQJ2nZ+Ff4=_7MT=4vkfd9!Vdrj?Pkj+78Dw_O$)@wrY z3Y|d`^hwpg4-C-Rax~>MeRkuPEgLJFi)AA#dg{RkpNjvRQ7&#adi{PceoV9b+2Q@O z?%IN_$6q?}{S!M2>Pn9_*RjKO%`LU@57#vVmt?M+kc^ZGye0`2A`C>>89FUwjDQ5A zNp+6=oGf(9^n*Kd$&Sps#E(e{!o0}FH}b1NvhfYxa!a_UCwz;1qwUE0^+(!ZPr5r6 z48|}X#6vEV(Rh#uaQ0wQfHn-T6--vJ>5`(S+4i&{E4`3g$*u>zi(9{aK8HT$=+fP@ zx7{{-_pOo6&d9Cujr&hcPM-QCD~zk z?~H$oRmA^^y{{t}>;jz`!6X_voms+s61IT!c1`9RfozWXg8qp9n#|V@UhM(A>$o4m zU?i*2W#AQ1=@OQqOyXSPaFUFr`w_}YONt8%tY)J@s$+G!A3;@;LjG!aD#2%xeF_DI zPNzUY*1Y*-_r-N>k=|PW)RqGmj&7J~yU@|n4FA)SZ3jC~*g})*;0I}`jM|C|7KRU= z4D9c&3k7Q{8u0o2j=l*v8L)mnZ@&IJQ`Vo}E^NRI{cHF-J5?Wp5=!wg7)>%v7MIEJ zBP%O>3?`Fd5;(|-RI-m@wWpGN468jRd<>mZM`=ZVeMP}4K8D{7jGDXQuerOSc-QpW zAU!sa?01OeEbM-J_^J*FfOQo(Ycgy*@CkSWd=l{2@M#cuS&eg1PN%oTVpbG77a$i< zcVK0QjO#>SjJytXg!WbMdx4$701L;K^m~;_{MmaigX)l z*h{1rx`$6!NVrB4_BjezeXCbzLE<2d_mBNnFG*^)f2R`R%#=LQx{mF?MoarG*_`|4HZnEUzS z;?L*eKL`HsIr4M*UW}*tWH2tyBh9^-?5%*ei4B`E_z+1baP*O(8kXznq*dW-Q@aT~ z3C|Q4cxzxFu~@S1O30ok4f!&Qwy|lTAep$8Wn73bckVowuDkBHNbV z2z7LXWb5+lN6rB@{QVp@4{+FMF&gRZEA>gyUptGUKk0L#JyoBhb&2+59Y*MxqJ5=4 zC)$NRCv4+ql}&&)Lk$C;?T8BRiS~oH5_g zNK-0+d_yD6J?8k}k#m|(be6;E18H#b$e0(_C)$(s)#U!k>pRPJG|^wPV-oz%a(kg@ z=d!uFKSD7Dzb0D+{hd(8l5`J>%MkO`;xYu@kWM1n zH9M&fbcJG-GKsF3Si)qLuo^*Of9FYSj=_*)J$}dYFz!_P zwiOj^t7Jb~_7kni#(Ov8y=CMtD9JH#8yrZmYJAg(R+&_0FDeqoH~w}9e|usWpCTfm zlzqdqO;8@qO6+)-VpR~O(Kxg9-Zt=X*`&bY7?(@7m6mQRVe!PjU^|oCJ6x_E?l|EV zpA*NeKS;r?^mgs6iFP_`qQ7?5())9q!-NFukwxG&pt19?x z{G;)EzL8&@k>M}+2F7+`Y>E}imVB{t46P)FPV6K^(xNdG4!|tgR*rm5?uoLYBJJDZ*ofCF1%u{dI&T;yC zv~w)l$<`v?qn%^XPPP-#&d;SjPr`H2uHiW>^s*K3v69UhcuwHKLR2maaX>-5pN5t2 zCFa@14uzQ)T#tDjTUb^6r|hZt4c2;=y|#EZp0P-9;qT>e`HK{|q_=Cbxo9Upjp(oW z*K#qxO_*P?1e2 zN4(&>?5Xek-M!!bhj_sfyPX{(*9Zkh(teQcBYY#D=W`dn5t0eX-c2&0pQMmH*#Dty zLZj8CRW>Q?1wf4nVsYKlC`ou;PqDwm?{s9^NV?MqIC;mD%xWUGE=}pYI=EwKH(8t~ zce;u${8+W7T_4%tv7g?nS)LD_%_=B%9brW&hBR5~0H4Z`TYwLh(v@eO%w%S&-3+z> z5@orBYBn*mF3a|fSRppS#%fXRJ77#}c7?vzuJ%_00>)x4R|%8K%StL;m4yx=)0&ME zn7d82e?X88hC`5P%|0GR=73meQiWOwx&?**xpQ)1;_k_YkaFH|ZhG$Q1@mrqGg$zL{{>(MV%oQzez1r+wq=RqVi_FYC+D}pZlivQ2 z-v7GZ?txENdr!6LJhej>UF*4L_2&R@rM^_JySO$CWGk zd!Epl>WZYC$(oNbQT31zmU?Nr?=1Q?HC`CBwBwCFCD&# z^&OMp|I^!h^!{h{_Yl6mrnjG=cIaXqkp26C$2C$=`g7I7>1P(JgGtreq_gl*)M_Tt3Q!u_QO*!`PJ1jskyN>SQo6S zEH87rbd;}QHJZt9CCUdi6S@eceTNeuSCqn(KGCsZd*xbZp{zDn4Y5r=6*{a(b(k(D z!&-6Z?WZ}c70C^n(FRyI!UNhT{YlK`fEZBE$TB?iOgZB$uN zPC+#J_MGfY8%PU6j&f5-OOn0}jz%^`*jV)tRRA18@%bP@ydROtz!d^9>pimhTVbM+5p?W$y;6RjlWp!J=$DT-NNyn!kfj@3;A6z}oxGycv7*WuLPy;g&XADER zZXZ-b$DBSt-zu?(Q5+o>9+>NZF=u8;xu|qDk)5@<1OHs2IOBT}`*i$3eRDK;U$CvY z{=jj780Ub`i^KjORM_K-RoYL=llY$2K{3XN?bTw8Yf|igzf+7c*7<)EW1RAsu>Unn zO?ikh&RZ?Ucug?*G@IYwkU1k%JhE>!n9VR7Y#y7sM3iyAeSXIZ2=tPi;Y6Pb!1Tk|Q%7&qnJ)wg=EgQ0|%v;s*k(rJ6 zSAAqAh6tmRL(z5XqHX>ChK|_{{fDD1PE(|1G&Wv$DA+q*yJz$LeF)P&w!Xb>{ra|c z_@Utu3SfU`Kzjzg!ZhXH)UtK)( zloUI_wuM0KD00A0rn<-qSV4wL$JKocijDJuT*C*;h*Imj_x+*0dxyg7&5GgHv$A>p ztJ%j3r}(Rm?gELv-5;iJ^9leyhp}Wp0LRncQ_{b!o1_QdX+T z35j)+rBsbW3}gMY{fV_N@0gm}(LHQY439s)G&*`gwhY@_LZOzHV9>TWIW~E^J91a! z&Rx59F8|$JwChBBa5UK778(t;5e{#}exp((bb<;Vxk{O92IVruBb-bu7}S+?7|9~ryb$ysPXo! z3xECNws5q~7MWi6o^{g^*sBlw+uB_v1H0H1ZenQf=_Pu?=gH~yPgHshUb#y9DK!ov zz5mHI+82`AALTN!c>nWyyGPE`$0gYxaTbvMlb;(%dhT=jbFa(YT$UE^`+QP+9+#y> z`xjE$iC&8K*)`hd^mfdP%h;knpVunzI3|xK!HHyS(f_Re9@>ABu|@kCYUk&H;ze4Z z*)~gqv5k@uIy9Np&5~j?Biq1ag)c)oELkid?6S;RIL8!jp=@fXt*P=+vWBA|Hycu! zpZQ7QGxAI^?psYklwg4PIEB}Mua#oMT40YV zm)6B%x@el_t?7d+BgwB*jLQbxrA6h%<+<6J88!=CHBRPCan<-LRHYWj0p4?dY)STH z^&5`1u`TmEvv1G7ZLe5fH2i}QIcsSC1H07qz*XbG{6ThFu_;BMPx%zRhUiaN6Tn0$ zmrRX%NVqpBlsVrEPrc^efN%>X8)>Y#L-ED1ml$x2jteK)y6%NFEu24~qDps#fKI3b8mg2Vx;ll4TIsfKa~);&ll1 zbHyqXT@nr4Ygo zeyE{Ewhu*iPEYTQ4B0Q7na<>VJQTV<+g#(_-4tA$JU($c*t~c7r+bdDSbK0H*dA@2 zZH)^2AbXC`^It=Q*>s%p1%Nl{?Wg2jtG1t9qkSQz{S@#|y#JPzb~^i_eU91zQu4)T zabC>#oQz9ohxiYxn;^JodbFU9uqV_L=KE>=w^p zMsgEs4f`2AZZ^%y$MCm^S8l?SRuS9JIF@#fDClMwUp>P@gl!}4WB7%qSk<2_vh|Dc zA&MgwW58~pj&WQ*%i*8ieu~CkrT@t_+80vV6Kj}Vqn)pf-Vb|oV$Id+n$6%1tB-$7 zo=BP(Xt27Dv&sF52CMC7s2yi<7&-^WK?X#nbjQ#$S+v@<`0*3}H@<~`l@U}874mzky`%tptCugS8=DBZPwW|JvkHUL8fzp|vNSOo+W6~FMEFuHdu;CuKs6Qq#bA|k?=(kX~;YtWgP{#pNG)s_2~Y_mYjC<@50$k|82uJmJrK6*>X@9Jw}YBDNlK{AP4%8$m3( z7K#Bvq{i0g>uL*PlvJ0S@0*WaYQ9qV$SvQ$a>9yu_6+O1Y~MWId#-nIykq%UT*B3v zm)BVue^HwchliNYyo?i1?SK>3ug~*>e1f-|0hjv$7t9|edypr9ZA#A*&|v4FwKynI zKqjl3UW@p)%JV?cu+JP<)I3cC%{D%&WaA702Cj55O92Y`}Dt@>G{s$|7<(6 z{W(B$YAZ5~33knxQ!V(ZSK9rY4Wcy$5?r;=#7#Hcec3r;F&mLmfB{{x5`nYRsW)S3*OTLd1Lrluyn8y1?G2oD+E=$~j_Cz?Jl8HJdv5bh1c(rf0RYhINnP{AXgn+|u~7b|`(? zx=V4+lu2^uL4HBr1>P$eCn;~M+lWmo$J+4)V+IQJg8Y--Wh_SY#4VLp+ViUr!ROK_ zlFFVb$4hLZ$ff>ucS9i5)D&7Gb*_8cMEen*`M`Pt5n|V}e=b6B`cq1KNUW3Sr&y1$ z-;#d!2ITu@(2A72hd$0MMBW49RoBXUP)R<7*Ho30H5|MB_G9!Dh(-hWvEF**^3hvv zIePiXt@F{)?}eiL7vRsw=X+P7?wzK$VO~k?3B4_~J)yUywkPzjH)O82G4cKtdK+(F zO>cWc=6aj@TtaVqL+EX4dqQuc@!lwUg{1#!u*Nq@OkG?Fs!XbsY))jM_;y z5bxponI!fvh{!jmR3$Awo5u@Dh?D3=WUF!&hz7hf8r6fBFfZ}gW#sVlKB^&V^=_~T zlP*(UR#a77ML}n!oJ zL(Z!~sxB#pCaxxlQ5Pxo!T7b3@U}=+ng&;f|Bx z4)$jyWecIrSZis=naJ>c)8{2?*D*>-MZrj0v`D|2%zi+67P@Ub$VyQF_qd>*UtFq5akR~CP> z%=eou^e@n*5%5Vn;Fk|^WcE3Gs*j4SBtk?WdL)y9sFz3jLn@~v91|*0CkWa6~oZUzcwj z33Z0Xd*45Pwkz_UCs<*Uj|z29Ztj+mg~|PGC!Vt-dV~AhT7d;LSMG01qOYlQrS+uH z)ugXQ5WhmFqW~hT@VQ}_ysAolJqceMt;e3aoS`K{&X)G=Q`6hpM{{P?)jX|S(VcA_ zq4@t{nMtdGNCY1X>=^pq}90t-ypo7MP9a-S7@lV4Rudt*d!b-INn zji^0fV7a5@IowKa#Gh)L^Tbk6cn;x5M7&U;aI%CR4uwFLK#=4rzLtF{a%c(VkO1p0 zC(ENiHWY4f#eksdmmJd)VyWoxHd3j>r`px+lNW4TdUqaL3bh16vj2Fb_rzqVDG=_8 z#{Zn?4WAdMH!(nm=*=yh-lVsmRCSXQ$eUOPc#-ITfl(|4lls5|osiG!r4I;yI#Q=7 zi2_mOP^nGLB;1VS$4wEEe?1Ds9Cb}l4Tcq`cipbwc!96Ky8L9n{uLQTS2dNp( z0xPAj*XyYnJbhh+MQf=UAV}N~OEyJ4H^avqQ>QOB*EKY@R`}lAKQKGhbl{YHJ8P(F zs;Tpo-8nomKW7~qF0ZISWP~x#x^vy=j-4AzJl@jcA|=l{HnepQharavhb{S}60|(M zoy&$ChBX|9-O{&t{U;@o81MuxwYPZzo3gmSL)=KO6UG_k8^8PJP>?qnb`3@UmMsf#2+=aWh z+q`Gv+ig#&URx@CFEn|)4|ooI2A+$((_-N%ucHRBa&=VcDH9=b6ax-RJ7gT-IF~zk znh={bn?Rm;K{Rx(tMpcS8!Lq+TPqzy7137ab_n1QLfQx6?p$}YBNpl&?mV_J)EJEQ zw6^-2Iy#z~J7jC$bhLF(d*_}EIrHfH?t`I)p4LG3R9jPHdv9R*4dBxwq*sC;WJpx= zfN4eK5;3nRspR#Em{;AhZhz$X*mKWR)XC+$j?C9rEdMk16YnD1NrC)jFtKnffb}X@ zkt6|Y75PxX1QA;YGr4NA$;-`xBLOA}iphZMizIN>aHF~ZgnMLqWd8?0c@t2bz&#lg+3JIg>K9#bTX6N@Kf~3}r6d3|0u2f%ub& z0w__QoS}}(^AZzwkKvPi_)mTk6Zq4S{jW})q$!-7>cSkxhPl6vuUqi~4`8!_Zay#9 zN&~`nJiu+oG*{R+2{u*IP;3**v6;&lLtGK+z!>D` zjX z54Jo0Ny_zLyW&stTo3+!P7}9byaY{5Z`btb^ma{;PH)%Ft!O7bR=i)+V@3P2+Fotq z?buI}um1!4sjz4ML-Pf!)tAQpUHg(gyn5fCte6AoXDj=9Xdm=-Xu4zix;4F9w3F^A z)-CjI5w~;#ds{4xifpe^C{&Viij<^r87CI|3zygwh*vKefL!<*+W4y9j>W9L{5<5& znvidVY9o4zkE&Dq$Ru6iA6javt7|^)JJQv0W_tScx7k?ykH{p%_CbdZ_r>2jeC7=2 zk2L2K92X9$xBv?=aB~QL3CtO55$)$ydue+AV{(7eduZ*V|JjuOq&JK9(@E_@Zx*o9 z^kxo2t~ZNzp*M?|DLND7>G>>x9b~d80FZl&J?;X8?`35|SuSVgS~xWFSqLgTB`O%; ze#{nnLZ0Uw-E1+kCnUN5S8zrX=nub98k5gEKL zC@PNmr{%Gb7fY+WvU(oNE1$dTm@P*!WLf8~AS^%r>9X#^!frR)vV4PhLN4A*Sw}1L zSh!793&>xQ$C3!h7wIy(QT^!d=~e^SrpeSb+hH=JAc8S4vG>jpMd;fM5zOGvJ)4S( zHhI`K{A;kNXb}HezQJ~s4mzEKrSVSzjetLVUL3E;|CFFH>FpZL5bZ=WM1PHDr1$4% z4eQq6xiXifbL3s+vQ+-%XYSu+$p(NeyB_$=mmV0mAZaMuGQmoj?VijstF zD0b`AmH4l(e@C{&|FyWY82__k%1k2I@%MAsol1dSdbuJI?)PH++ZwRjhjACVV~y3+UHJxqdUN^XLT zmf~NA9|~Lgj{fDgFMNvCy-20MM4c-BF7Efb#OL^sypO}2+L3#Oxrp|8c|o*82B5L4 z!Tk}DE}Q6kz?S-dirV3Ms$}^JZ-+ku*QMxnsQ|4 zAiT#g2SXr4f-YihPNxWikVB``pgb28My(qd{pGd#!EB6TNyzC)5?XN})BqSnQEM@4 zOfwn8R$LMEm?Ys9sQsAX(5 z`xO_IF-C`Ce|u?4~O78nR17jp?YgV`k8bee>0oq}-RYXvYu`cpCj?SIF|VCDft z8l?tQGS;MPQVUX~>(%$zSE1>ks+8^OS)a7$2aJYfm2-XGp-rhcpobUJnR4Q+0UkJm zfSE3DD^kPFe(=y1@RSy*hh@iX7G^M+nH51w!aY)#!BEf~+2GJG5wvNv&LA)s{z=t> zOGRGBDT)FqS$CvY&y*sVrdb&h1FJxg}Nz=~&KN>FWvkag7Pgw!Wv%_|;4 z2h7PLO|SAa%!n`(_=2teDkgPATYG{%4Ruv5{uWdXFXp9XvZPApQ?17ot)bRiMeQp@ zefhY?jOsF4DHk%%3A<@Qp*{K18{${} z9#2)3#{*`GJ>`4Hd4kB7*KGCa?V2u=-mdYA^mdK6igv_VG4cLeR5?$y6K@gi8gJPM zT(WT=-a{P6=3u8F9)orU%?Iv`y+hB?E|(=0eNBq{*Jt2!VqQB7|L2?1r~B+`z&Q0M|C=7o)7DO_6{L5ZlV(didMhhqKx z4UtF#`}pGWFJp&79F8>aiyV$(-V0*hH~$B8zYTmSUkZQ{!e`AWqE}}xn3FU`Q|84g zb92;45f~iwgnJ$)lSH+rrq4XYvYYE_n=hTUof>CPE-wGPJ`}3oxpSPv2*irQoFzU;PN5F_+fwcG&ZDO1Oxldwmu3ZzmgW3JdnckNd-`sj;>r>hmof@CO+x1u! zk90US7R8MO1qHAJrz9Vs%;49em=uv4%sm|9drUGtG)43gktrU@Q;}DZ6q({&5t-tv zK>8Ksdm=977{Vo5{FNcADc}$GFV;8CHZ&kCrM9)nU)?CeQaU=m@|6xmrVw;^jnDNs zk3|ylnVqZTGpDFeMN-kqG5}F6H(um3@7s8^%3xJ8%x%Xa=1f^O8>*)U?%q5Mjp;Mx zn@dUt%YOOu@`2LQfpRtieQ9g_8KPg{jPiPZ?w-KB5_(d4yGD;hJJB7{Uz7FI`wKlu zmJt0Zug4isAl;%8gau`8#BDNam>I=la}y~xOEOpuRrCO<0L`M4BkhD!K=H_570&(le^OL!Pi zpdUFcR4+^srCsRcS;k?xQ%!NGLSPr6$D%B`YC_a)q}+@Mk@ew+AD-I!==+OGzy9^F zFD}m?-L!4Kq-bIuLMtD49mcK4J{OSOiaQ*h#W)aR;n@tAbDB{zQOsd7F@t`zrV3MXt!AF`E;?uNNd``AKt?&dg zkbdFCOql89jFbSiqX3kmz*&GAf_OiVrK7m`)#h4_FpHG={@Jm+Ps{!la~{8T4bx7VcNVmt zPa)zB+5ajeD?wvqb`>gyB$EffZNx^k9x;Ej*#P-L_*#daDaBc=S+g&C(E|xXDHT7* zYf(7^84R*Cr@b_-BSc+yHmdPvd$YMx=E%>@p(G19CK1v~nPCh}S*>-3TLYY{Y#eJC zot&)q`RXSp-j}?EOWW3YYihjfw(VH~mlT+okcDtAW`hC@Cj^R(setj&dA(|Zd)5f> z(4|6viOHnE)~|+e`c~_K@2H!`+98A>C0a6Gq~~~f&9rVY-)cQpZmGAZC<}q+MfFAXHGW@(#|_QJp6SeTnpX`p zC+C+IbiNua*vDxfD{5-uzs9c$d|<(3u)IeLI@kU_uo6W43{brSKl%Hl*=KY3#TP<} zggj5YM>=9LA>s#%MqJbsu@#j0cEvpD-}0bOc@2ZP zP0rNTmcPnAvj#Pm{&Pty`bo97qPn`mTdkN^SxNGFM%7$t4h)kn@epePw?WN`9XYW?;QlH&(M|xAZfL9n680kW-Pv zaka1j_lBY1k+)JDQYg?qn7OD-soA{h`UBbSt#b|Gf~r4DfkIbaX8v$PmAANQHE0m^ zAbvvrr&8&`XNxIrLxn~eBp_y>xDW=>M|U&A=r5EY0SGsG!BDhTr6KhcB$)ZYDS2T$P-Jo>l8G9g zL<;;${gMh2@g5MT(ShT1If5YtF-GdLmwB}~=TLNo4R&gyu8CCi36`lVQTSe{;?9@z|voTE?S{37J*Y39h@7^Vcr2taR z2)NotvWCvV!A|;ddA%1>o$K~WvC5wKurvy?u8%XyH0Z^7nTt)?kWsT1f?gU$pFHuui`n*d|fBz>Fy zoa$Mv<|&A%{NBF~J&+ft9L(f0wve)4P|aq=#Vl~)vih!OB(BHswyc*zR&@# z57EwKpe%W^&9aInSv7(novsX_y@G(Q3jNcb>Jn#e*+^TH_K)Mq@V~R5INw|1ZSBV2 zo>Kh1etGu!mbzo8$wGJ2DwkoEQ{UNwLf@UV`XL2kAJ-M$Rpu{@~bVoJF6NRsxB>}@N{VL zQs?d#oQGta0^-0DmIRmEQl4&IIp6%{5e7gArpaQE<&9ZA-30WrTWQ1V*lW47IG( z$Kb=mQz*OUE@e_hd8yy+Ct9c0MshKiEkn=cRHMbUx@$1YX{9AZR42=9h;{`>-9?3N zdA+%>HQL{&WHe`$SC1ArOW8{;)z!_eyaIc+zp=IUE78*O7EehbYTT12O_n~z{*rxC z{wdEpLdGN=S)z23jqUV9BnLn2FJpn8U~g}* zClG5dFYYP!c<`$n(}0}=su=v~aNqgATRPeS)t=0*;^_RH%?Mj zdKaj+q*h(e!flggGgV!u+Y@yc3cv6YQMqFcjnWAdw$g+^wX~fbriT9Ds{g%Xgm3Bxs1A@#tY4LFQ1L$Irq^V+kF1S5G<|v6M^^37s zCcTkgB5f4whLlG$=sr(V82|1vnKA)A=gqUSs1fR*I`*(tLMPZk?kh58myDp4DhMa# zC%fpa%1vU}?HVg8fkH@dF;rMm>!8!og~||4$2?Wxmaev5Rb=jV@K(v8$!4tGTu3B7$Yt&vy0&yNCPE*l?|4 zOBda!c&xp#G1}dVYZY7fc69EwDVays$0j0TJ(~c3vJvyR$6SOSsc|(WBBDp&v3frh zM;1NRL_gm@Q=iBfKWFxV4H<7i^FWu=e5&vV}dg^tf4`+-p32 z7yI9+6+9Qe=hjP@E5Ie={xHmSjL(&50q#D;=NSLYYbndP>PnixAjm_-_cUj-gc{08 z=Mz+vx#*Jj)YD0Gu#d7AmR=%rzdX167{;VAaNh^sc|pJjxQ9ER@fkUy_`V6>Q{8eC zuUjr+m8ouXdW=*FkC75vDPp9EBqiIQ*{6oS|9cCz99hn?9Jv~Q>kG0c{$go&etvf; z>tFU`EKY~{9{w+yyVyerR~0w^RgR#ruoJeIYU$HM&*YHM20fq2r)XuG zdzHiM9}ta|rCBlvl)x9F5?fwy-x$yK})ND{mF1^?|L3z}I>?Xf6sHktmn_Jk)gVP5W@WT7$GyKOd z-if)Azc@!ijTBrpAe(p6ou9;c$l9JX+r)kERKzBF$K`}g?9*+Y8{&93LO)&{x% zS9BI{-o?*i2GI}lNEc(iDrRCJI-L^+P-j5J6)U3eI8vp3H5SWGgPAjotZ)9G&+&_o zF1@t$(WNCU@Co_ovVTdHRg&-Pf%glHVFqu(pb%eCQdpG~)XQ@+ymk|p7VuUr%p)PA zES=dr-`zdG`OIRZuP?F)V*9hUBM?y9C;=iyzIWghjh8MP0pC<&NuIy8Wh3yMRmMHP z^yZ)#cyNFQ9*|GZ#$Sm}_4iLl7rI&lz+}*Y1a9O&PXUhx+=(^MQA8h>3&ZP##b8$W zf-@nV(7m~tIhm;P2Yj-5AxwxXD9IW}X{H3&Djs)6+^~6}YHW6P?6(W?vsEYwS6hYE zzcMq{z6Z7LP};AhzO5eG0buYO@CvFiUkF}%OmK^GY=v2p%~bVGlWH(2Ws-y)Ax43m ztlEX#q%LGWQmp`lBp54<;39bvSa`7$LpbbJ-aIdfL1wUPE(NKxS6ND80hauB_z>&d z+m0UHcGq458{5o|y2%#oHXfdn^Wv`@+=~C?i}8`E`i_gB?nIha)ge$jgJQF{RL z8IBv~0kiNN^jm@}d^r&PeQv@k=8pgD;I^r)2id{+C&ue4C;hdYhN*W2frj0Qxgj`A@FVbsO|cDn z%HA3`O+yNzLevQ<$m4c#^Ca#`fg#7oe7Y1wf(6I_Bwbad#r%HhQ0nc;-}z2kFc`g* zetmK@IJSt3Q=&l>5G7cG=3>5?kllQ|mZ=&t0r*0vVPq(vyFkf1ZkohYF<)e%k^EL} z9<4^f4tst@E>c|TamO_m(s=M3a5GszBiRUa+TV348Vt7S6Wgdy_-|=KXBWrRd7-{( z{3XmUJV`uaA0|on@|vV|9Nzphmxb|}%fgVB(NDd{7X7yHb>SC}XDy`MEZ~OXfMI|~ zreKW%Q&hZ1ZkEPd3Z+638ED~HBJOdC65M&^5nqMbY@eNFdrs%9+cva+X;Xbmtvqw) z%-`f}JhnIfx2$?1P#6C`Mh4WH0oNYD)d9$!5oR73s3m4HAlSfc76zgcwX!(49?lO@ z+FHGjqHs($PJ&EuY1x%jh8%sN4?7E)dd*jEww_~!AS{~@oe{1I0Sc(DYMt1K)ZA+J z{-OQb7Z$ef9~wDuV5{5fb(eX)w!_;$9Dg1t|DC(GPfu@;FKs_OUhiiQP}pbuv>ze~ zWlRh;GQ0oXJ*)A=*6Hb(96|8H2_kTd(Aj&W^)!sP zW?Uwk3`9`U$`G=lVxFp%!yt9r{{5sQU%SRSjSNfntXW&mWi=1oJqdI zx zWp`>qX>dM8EXA5J)>f>y6k`dQ7atIggq%i$ffN)?Eh1Q|GH*UfBWfKa0_3-~w*!*P zNA}^S!n~Ts_~Uq^j67^{KX3_X(7ISmx6uhHM86NglT-r|gr(F4b=>3fmHNoJ%Uz-+ ztVCx-$=7uWjzk2W7f<13AZt(!m2GPa1lpER6m?*xqhn?u(DuDHs#|^INT97fz-han z@$>D0xw$|)_8ouZy}TC9%lIeRI0Rkiwguk)os@Q=KU3`*p+9T=#r-{0*MB0>A16Z9 zMRCvyaq`<^5x@s3GHz~!+B^xg^58U5pdbl0fCAmTi*m5gjmR;KA{L0yu&8u3aiN8x z+8ag12EKmW;B?#Zs-AEw>zw|Mm2FcKtxOt1BEo2zwf= zYQ(#^-ow}Uvy?gG1Gn!WjsW-pN^3L21&T8;%oPn>Lx!@Y5GX0LI5QKHgd~JVQ-%oz zZ(xE$K6>Ih5VG|sI1>5n-!9xbcm6%gPu+d{u?u%RpiC*+luaNwRd6BLy zY!RR5JeGe}o)HXE{E zvuwz(KzFM>4@KIG)eB3wwG8}6XK3CIx539s~FK+@+O66(ZdBG^Wa zDMJ_`#8;>+TBeypDkv)8W%7{kyGm$T*V%#!b4HSe|K0rY&c$L!X^NVUz%slSu;Am8 zt}k2Bpy~Rc4e{>*Z{Grj35gHi86}9-h+Z_96uOcDNM@MBU6^2#FlZyfX54~*vMolq zQYnO@Adkuu8GJ?`UZNmW##wK-d+n$N9SQq*5~X&7N-)H$#3LEJps-Nh8~-sb>EuF{ zD(eZ6D*ioV&6_`D6*zAsQHk5Slg^x2k9uzk_K=9XjQSd{q4vqEI31P5QL@OIKWs&= z-DUtC$|pB-3;VWqJjBJ+xWN#fT2Uwh@zex>;zm~C9Q>%1|btdU`3U!i>K!Q z?!~)pJ7N<@E*@)*MqBY?W9JUPb=y6b+}pBk_q0WjEPCkhtqUE&Lsa-4zc5FISje0YKott*C^*)cs7ym%D z&sPmFT?8PJg_dgjE=@8trP;nOvM1s{ll^DoBmn@&`12GyAVXjRjvbdT<8NV8&zB#B zHU`@_g^#4!zDxP-hO5}V^)J@8eOH{PDa^gX=Kwq)+jlS4kc|_z()L~YJKDaZ$+mA? z*XFFss|4k`y6#N;#inmRAv4dlH}b}|-HdN|E9d4Wl=7Z#am{lAugmC zyuBh4g(43tcyn>lc zZfL3wR5e~?3x@)S&h&?S2BTAb=DkCu-m3EQs_BZ-GOxRMV8>{GbGL#Z@Q%PRtO%kO zB*n+&NR=^fHhFYJ?ktWB_D}Uyk=*653uh78_%#!MR2f+`TEFtaMT7Mvgw?;^c%+j3 zC1U9_8V;3{vsC4syza6Li59ra^L{YyZs2YV<7Sdh0Et7$?c4?it_jM8m`v4Ahd!BH zTsOm*0s%UKt-F`@Ub_EdPd|uytN!nOkFtV)@)L~7-_7YqF(31|d<1_Zp%FMM)(Tsn zm(vf`R{%nZ`K;zEz&EPSl;$e{38i>=%~udnodr1LzCve(51PosOHUZ!Eij*scCk%> z%CrA8zsTny`~`GwAy?;SK_DP8LCqC`s}QS)NTvZF&MGICPXl4``S4RA$AY_8d9XrauLBd#jn8;NfY2xypE(^+DF)n z^iqK5dVHAhMbsX{I}>qaxSIvE@E`aXu;d|ESRI2fgo2fp z7r6r;W2o`?7y}7T+GifChR-^VD)8qGV`R#aApb>wtQV*tOcjiW)s~JVoE4I51Re)t znQ`=8`xBIOe?rGtATZW(N&L0Y5{*89AKYvqM-Fyf?K%*V>7NJi&x80U%V%?)!TSSU zU4i?_9zg2>jF1nH^_}D}>%nIeKjW~?gSYAa1mM}K{sfpHw9GY9SlRErcmGj@{@rrv zFD7@t_kl}D!e5@<70tn-Rvv$LuDE0otW!x4ue!*0tn5!_az+Mb8vPed@$UcR@VJZP|Ej(O zPDobwC8U1!4!(qs;TV1lz65`Klzn>n2Kf^9V1I*Hn+=v=+>eNvXubrzImMTdZ_k23 zU9#%F1c%@$KHZbB=hAzpPoJ5*_eyt-uIc%j%E}sm5n~nN*E)=q3F?&` zW1$~J$eu}lgoN`#jj;ezTQTMbE-&vtym)%*!0v|T=7!zuGiUgy3)PjC)g`46zf6#qd+hKTIQ$j(3tzF4g4KhOpyoaWYd;XSC?GdH*Ab$AbIYFk=rYh?fD z5AWPQMKtM9b9G${UpHkn%19l<_}(>r2f!r|q__1Qs9o0b9e6z@MHr$GzJq+-cR;L# zPn}#Jpqb>4PB;%(eu)PbwVI~Q`}b{r_<+Lp46^Aam&fC3GR{Ps*`d$v9%$RJgMIC$ zba3IYr=+daOZ!N4l-9GV?*K6U9efAG8ItFfIrtLK-D1qbHZ+i}U*?S@NATT`(8$tT-`%~9o&;dbqsv19vd zo7;l9hn>M_bM1briNd5F%r#q|t0odc?p<3HO!znu=0Wj;FaYqxm&9DF)j*Fhj*5ui zOu1-;Rqw`x?ln;Fasd3(+x7bq z)~L--M1bn2xyg0}j)#;YaA7FO3Iu&9o+KHYD2tb@x|%)GExD1|R0RVe{7z-{b}S5- zgB>tyWwG_EEFcjqJ@JGhTTvJr_gOSGg_q=3y5ML)6vh57E9X_RUzLHuz+>_+M6d^M z>t85+TmJ&bb|d*0xN`D;<6nSzngk`0^RZIbzi(*I@WR6Io}n!V4s0o{@VZOkU)Vn~ z^zX9&ryEB0?Hl>|$o_-16+fp$m!DU_p(aaF{32P3>~w4U7C=tOAr9X{4jj<9kFqeQ zP}tD@+_wrh4cU zVC4*JZbf*+NbXyS0ibPfHU=WRF8b)`(&LXSqBuJ4aX1@k{jIj?NvQA!zt;hCMYI57 z?+8|_`WH&q^e^xu#-sj#i}xNrOm>KmeB|ZDSI?eWd>QD4caw~>5$}F`{{kezxA8A< zg@x)ggniW{NAJFR{~sUOy%4wu%KHy-OT?etyoPHc7;H}zn?btR>VAckQC9dBfPbVM zVUV!TF@T5z_!Xd)egFFqtFFEB3eI{h_7v3{Aq(Eh*QS0(o-Ab|!&bS%r@)yjWLk7j z@hM!JHC46%+k)CkW#LDy7Ke8$|%Qr=fngbH-dFW zu+Dtae}L=heud->OZ6+H38u7KcIUlZIK6eLZC)2oX~`H0Fr~XaN;phO_QeOyuOLK9 z5pI?2R}dVHmx?9*AXhEDHd01BQDR@(T z3JK2&rO&{@Z)foLr7~)9tCsFp;I+hsUtz=1_V%M2`0r=`xg!$kI2Gym=MLi2_w`MN zBNKi1^-YD@P*J$OJ^W@zxU@9ffwgiSh_4AEr8al8uU;R7(h4Mb4>o!Yp93l=ynCMm zsZ#%b_tLT3-@E+uy-O$0zvsRKte9ny-GY^{%=oY3|4LFP<|nIl0%-j7JI|32uhj@3 zSI63So_~^;2#DL4$b1)ngY27lIo7-j1MnILG6l4&`QbFCO6%72Um%A5o&6V_(D6&x z`2_CRyAWSer|>k~7wQ}mI`|)_>EQT`ISD%vXoK!o5E3E2dl!BMA!OmQS+l`w^x`0- z_!XjviRYRw=i77}CoF9|w2! zwFti4N5Xx##7EO&!||ENcGLGfwp-TvV|tmAKjuTm5ZQwysfKJ%Y=TtZS_%tAh5)U= zU_mK}eE6^6#o{;b_@4jx=i>jk<0m_#X0rD`@)B8=cZW?-G31O^7Od{&2%1sf;ts~;pKTtmIePK zz8@g`QDuK!UB535YYN5`Haqgiix^)uHX5HX8^CM;bD(>jDeo|Y=i=a6J#YhMhSFcS zHwN2@O9$ZfG8$`*qiPOeh6NETN!f!|Y;Hb+E|~f=fPl-L>;e3ILq2-;Z2UX;`J1z6 z`JB{!!W<^}XP^khG6JuDr0=U9BMi7~!1sR4F@wC5z$z3QBe;;lLKW(?Nm4Oh@*mbx zk_0+u?iT(zV$7(d7hbnJAdj|@!y^zI5lAmJ?mPf4=OT`6< zILJq)fdxSvVFc=eyh5YHZwg=$q3DiZz=*aGYChT=T7XIIX*oLH!}i7hDAdiq84q`d z=-=Ik+LWiUQ1~=3b~Su|wbHn#*IrIpR1i;2L(t{?yJ-aSgQQIG@;QJH%IEMd@L^tF ztB)w3Q!CXvAQIQqs`KSDR+Uo0>&&DPg)w(EX^+%XN8llMPd&nbHl66K?{Po;U2knq zDAZHyJ!4dS8^ZsEFiYg2{8xBAi~?t_hwEMobaw|{s|zC`0Tzq@#Cj+{hWy1uQ~%;- z32!I=8s$~^A>H%#_#f%*pabx0{{^)GuVPv|owua+b-evUYFq{N{~GT> zkGDT1`s3e#FK}>H9T!glC-`|*K8OB1dI96|_Y2%fX~%o8mSM=T>+yc41e>fGS^Q)@ zH{%eSF5_FXf_y95rkW9`r6yA?8Hjl9VIyU!;3=5XamyAdqn5Jd_#ZN_a7D$3FreY3 z-S^$|Tn>$?agk&Aa?AO}kx^kU4`iD?FK#mxt(4R00tJSw3F&hpH_4sz{7D zfH~Duc)%ZaAKV*%ap^iu=yrA}{$!k{hf6Vd@lqk9YWGFVJeP7OcQMCUA^@$be5N3d z0M<4_YjB==0vt#CRx%^jCJAxqgA$QcXiMDVq29+$b$d1^J+J=MS%-TVFK z*2DbT3mG?Zvz!reC3hrZ<5zOGho+ZrOo!UVjofXx@}>=70$c|H*9M$V7pzx^D$T^< zEF$VPOwk1>4n~)hN|Wf?1VW*Pvov!~)hLg;L1`N5{FOd$X{);x?{GC$TEPaKdPFI? z*5FVPLU^@LTtAZRha=s!pm4C`$hy8GZC%ZEu}WM!(mP^R3}-{Vy`h%!rbwizF&eur zzt}ewZQ0!x*_t6+B0B=TQ|JMj<@jZ?!Ud;5inc{bNwoj3;oc*Pd9IXtV_jJo0I0|i^Mg2H zG7gVpr)yHTmSTR?pazt*Lj(;18)#pRYBofW?ky)yz|)Q>t|5dQYeZ56YuGT;0a9!9 z?rmp(82_*P9=+vMAYw1>X=!h>vB*^4!JhF*NvCh>$i`>xxcAP5O}kn~t2zTmL+zL@ z=G6`#onKDzE2DauK|zHGBgKqgmMo|gjS88_i?pEb4p^!@i6sCT|yRq~TZQ&ly3+5{rH32Zdi5@!<8f{)%#sySNanG23F6 zn&c)M?Hh#LtB?PW5M*;pL~=BT%hM5CyWh=3W)$mt}!GP7648*QcMCk{=|&LZCRi_eb? z9JwPLsd^#0E<4LkBj|B9Hm6{4)Jo8}YG7P_e_%KrV|(q&#Vf$-mkNtO+9S@xUL=h&Z4&>dd!$!O^K zak|Khae1i$oH*saPf%Xi4)}eawUiZ@bl)eYL6vhTFqfnq$j=|%HvM@P^||lCeV@u= z{F=Lx?)%)0!w>(uey^wxpY{ANio()Vj3m*Rf^RvQ38Ll;(<_ks{(kcnW=UM>>G=Yr zWBo2qtbzDlHr7xi?S0OX&0j4dy^DwqV=*AolU$;NgT!cTq?-Dr>Q}^9@IB|x&Dz(( z1%@JjxKPn&H(QWODug>g8vpRAiW|}Bk)=>G?p3%QbtQsL&8-l)!TaJ*1>4($Z13_7 z7>&ClcRc|#08A2o(K$j!(8l$URViPyBNi>=HqL^4SssKH8!j|<8NVrVk8;SBN$f}y z?L~cEbrtkUBkCPAny?!zn$19LKkynnP%YES14PO9z`B~++nPW8XxqjEAKY5r z+H|NX)8@SAbE7@szP2Ol)*bCsmJIFkZQ+`lmieycjm5Q&TSo?h1Nk0PRp5zr<5_a% zw)XJ$=B91oa+ry+rgR^CF8owc>_xux`)WQD7oB;QE_Q+#q)hc>1hJwZs^Zl<0P#Qx zDWh_Y4)lhYJLO?n#%9tGW#~y|i@D56 z{GKNg;Z`n{&nJZL(dg0jM=wt8=pMExhQlqvU`uN-bY0FvWmYbp5I(U&E|%a|P~}@g zz$F*vRxY_?CFP6_!a~mO24fPFlSeD^8Wbo|Mu8e!KuU2)iJO*?TRq&AmEko=0^4fn}C z67Fi7+0Yt^@R&v9HeT+Vj2u_2n>!BTABbkY+#bNM00D<_eY^nk$|0SOtQlPB05(#X zBAqTy$ee~9Y<^__AF%&^*;Vv7zZgfo76)g5YW~o@ASSjA5= zMm>B~e#+*tAtM4YoJ`&f+*F6AsxlISI50MseYk2+Rp}|iLvE+H%xTnaRv#GTA4S*)mJE znIw}v)1*n;wCR?%Y1*_&x}`g`sgzP$N~Hw~(uyJ=Ad63hhfi84f(whwQy+@>S3txk zqN2~I&-M9KXma!a{?5HKnWQNc-~aP3+|0~f&OPUM&iU=jP+fem$x@AMzS8;g3{Dz1 zt{Kldq^m8zwYG)*YyF1y8{xmf&NF9A?X5L!GjNjPtD*Ru1fWxfErV~ah~iGMiEPUu zE&*50Ap!HgDo7H46+FrNIa2~gr|Qb07_h9uI*yWV zzRV598NdcCc!K5)VY$d&NfH8r-2*5l=E$)KQ5L1?Qki}ZE5))po%@*h!+K>&ffWhr zbm!W7*Dfw7g0Z$>TS1n?kd2nF7QmL&sX}~bM*Hae_VGc z>%h8mONSREnxM!a+(){GDEIR^f)hI3*@DdTr0=Hlq^IuBxc?*Sd7bWYT%~sS`r-aR zw0_VI0#>HalfIkIPwUN<`_T?RKi!U^AE&&VvTPBdp+2tr2>gY6@wG3t#FcjRqTv0;)i$zzjpj zq~1-w*0^~viQGugQy@N(YQa)c@hp?ZrA53vbc$wDJ0W3}^q!*I4|kl}zj1EyjWWPZ z?t6C`j`Q~zbCnQdM-|V}HihfGh{HE#QDQ<9`Hs)U>QmO9X;%M#(a1E<|G#Ktn)z>^ zV>q0Lzs&K#&FoTAz~!~T#Q{%sHH_o2>R4^fTw*~sVf^DYH*Qi)y=KiLR+QAoC=0>vj4XdQV1wa0*jz)>RZi558d8qs>M zlt@Z06bhl&fupLypv1N+j;dT~qUv=Z>!*BHD>n?rtI8`XGhJ8Zn5x=Q9aw=IR3AX_ z(WEOAg)Hn@@|(#Q!os3tPagMxKsXyjQ|&PW8RJz7qc@?8K$u1aVHU#gH;A-RCB+5d z!f>u#DF!FxvwU*~^5p)CnTRr|WRQyE1L+8nUpx2l)`dauZZWyr8(i2Ho2S#yD~J!p zW3jKsOhbLAYZu!0?6EJbJ>54%io((4=RcoJ{+#~DSh(GX%LHWiq1+iuV22IEcLKQp zaxK6xicr8tNhyT7Jvf8R#JCqesD&P{mddo&OAs8PCCejLSE*VgIsf*dY#2}42XnfO zu>WQm$Bum!l;#fKzSjDmPTPOaDohqPi6%xwGDMo6!JXG@~=cg zGO&N2T<+fo*ulLU3kN!JZW+iWS;Iz|X(&EZM1GWXpeP?W8%7*F`bqX4rT7XS(?eHD z@j={V5%lW)aiphFjX(OTe}4F%?~1(~V?*tCwVnD(SC&N-bKtr$3DbXtcuHQ(LW!Pi z^CDO<@J7r$YB*9J06X$dc!daXXkW6|Taxd>W`cfQ6N^>^HKHCS0S#2|8mcTv!YH0@ z1RqH(B}k6aLFgNN#f45@paLysLt)9Ylq-JfB*p9CS%{E5XciJStPrmQ!8~9F5N3kk z>7R@LJhZ#DzPSLK?0ha5jiN-*mNi{#E!jg0 z*6*f~{RogM5heK#_IZ&=(mr{shQ&4VtB!@S*a8RkD*2LGAm0@T9-%k6pa|7+r9vC* zSkM@X5|}G3G%}<(Jc@;hwj^W$fIfDRuRpL`8es(jFA*O)(X#duO z%f#jR3##N7sutjFG&j)8!{VC_j=)Wxj_!Pi9WpJYNlZ_I!q<~oiLVlu6H)R&CwR=@ z(WfT>#&IK8!!4OQa|~s(6W*crtK7|DGzN31f(A;c6nM5mF120f`*HkV}@l z_bJzva`>?@R2*>J4MA8~mRwRwE5%>pv|%)S zt-#AlcZ~8+QjLnV6%;x32vbqo0$y$-9HQ)#>E(i)s;OkaYNX`!a!HU26t+id#b~iF z>bbVoa4bIa(3vw2ZEJ01 z@H>aT>}I-xQ7ZoYT`RK8v)rkC>A(0YM~5l3vCIs%a(rH!E2LNBpWc+>%@2I5Y7 z>+(D9U{8PKBX761;uRGYlUJ#0qzHR_5#C`3MaD=SV2ybwiQXf-3eVjT!l8G3IXcCyQHux{^tUUS#@Q1h`-!slX>q^)TtbU&rT%MbEt zV0R&e0^Jd|;1Ah-$(IC_o))cw&J|gllqJY{joQbMzj2e+hH4W^!WEB`cIlQgEGBQK ziJn}_!H#i~t(4l#1>B1TjMJJWYK1(2ooAPT`Wn_a@&FZviDd)$N%l67uRVWPF$x>y zyU43755X;D=)x#nlp>DoF$vH&m||>>M3Aqy*uN}a_V5`@?M<;;(8B#?14-6O9s21{ zvF@IZZ(UO)-@vXdTC+7SFJ#*X|1^0OUxYmM9eW%7q@4hqWmbyWQ`vN%s0!H7qQPF zKUcG7S+Tq_D1yfYPEXMw1)~Rv`UlGpgz2>9z-N}Mf)X2r0<;~W7_>ksOc)E4{3&wn z7MInfcv7UR_b4u=+>?SRXgP>aCJrI|&Z66|xn?^ZM0{{8RZ)n$B#lGl7l7!k;xQ`` zqM*3kwUCI=LKi++13r1*X)V(nn?T$1U@@DQY%g+w9#P(L@DgMjN5BK@?GQUN|` z0K*X}-c%w$BBeIpWN5(T^B8orraYWCfE&BY7pQCi>;Q|Iab*Aa@F6VdZHG$p@=6c= zuoHmYJ2bRc{vsB%{AE3B(95qzhc-g&RbWec=eIZ~$TxC159phX8lr#wa`Ff$s4 z83_2wJ)FA*RzY*wwmgrSFKJ~Orf~{5G(HnrtRGuL1DH#l*SnZ$M)ohA|LA8vQAm?= zptP{C^Z+aNd&&YmU8l|FN}8P|+ida^tVf+91FJJURN3v6|Lp9M=QB4}v&i!=xG+ya zVIHmj4(M%T*nt=ZoW>FUcnrb_RPIM<8yODBxq&$aL*Hx42po`$n zRcC884bXI*`tpDy{X?&Co66k@oo-%ubY=7W+Q^>vMc3~c+7%w?O(bKHz4Mlw9N%`Z zz9qh=p~LI0ZR)7s-8e5;R-JghcVJ1xs=*$q#LjUp~S9at_cJ9|zG}ifw>)6`Vr;1$k5j%mxXWb|lR_VRV($k&MGhox_gu zyLzCz90oY5{A*lcT7lJw2_XeMF&}3*vwF>2t;DN}hRJ>~srdLi@fmyMGH|Iht}6T? zd4^~l=sI?j^7=HYCnS)jDk*}NuTYgt19lK{%ugP>>$+?U6Rp|TMISrd_VIS$(zg)M(78$cwHQ`OC}wMdtCRNL)#zE}{$?NHK|N<^B-(x2vqc{{KdSm$sEmt(@eMg zvx>j5kH{l@{5|Lc$rQxnBa;CMn52ZjGvum0rpKniY8s$Vs0XmrL}}T~+!=P8-9R|4 zo{CzZVrxRzxSSA^v6ZD!dxBxdFT**^|g?xe~h- z87e7tyR8f;wYn;juhAKzl-&o(>SvzQ;~Xkg(aoWhTMtN#LB|Z~Y%=ru;P*qeFlcM} zMl4F!Uix0FVeK&Hya`HMaEGJh$AHa?LOFgP6T%g~N`ECx($ndlp{k%lIiz(5OE5D~ z2oV-YcMo0)m=YWdw^V>raOMT;VP5}_mBSlXetdpQ(;_J>Z66yybS7u{sn*{4f#~zy zD?V-rWCG|unsZtfi!UMJt&ABn}-vi7B>oE7!*XL>uXl>S??y;jx>)J1S4 zeK_e9Y&;4lEPO%%jV0_WG+^uKq59HL#{Y~H;Qvz)^kUemRFKkN&+Fr9>!1XpgkXR} z5#j{qxQnAa(2Ayvlwcfc87aXi-MMN%hnu-c!GA%LD?sNc`VmqXF}bkfg94HVFwW$` zGlBFJY;R&o&Y3egOA<@hub02j+WH5h-C(dAJ9>L>Z3R136J8F!dm>!3d+5>iyJJ{d zyTKCvTol*zKDua4UTEae>IK+k*lUW7s)p+#z^A;ME<)u9=PA-9nSD4K&yXxh5uqaT zOfoo25rJW_YVt_fc6E5PzuNDw?jH?bP4c8^-^iV#`}U149kR$V%lf4w`})}Zd0mk^ zBb_v#lrM?o$Jz7g_mx>qm`_h?KBrGyay~h8o1RbU67#9vh53|71^8a`Ns=4*Vs$<< z+|7tdSC+mvWuGh80W1oS?9BZQrg5n{r6*fkpTInJ@EM(7TxQz6{?Vb`HDLrd2bPCx z_++kG^l0xIQItzXF^@f)yP*2f5x_^y&w2h`)mcJf|^>4w3KK$%w{nfF+t5}^#EIU2b>waimvuOQp*6>}6^~G4ED^K3U z?#t^`rX1^Yo{EQafeqoa=;FETQu9HIKT>QHO>gOgZU|;46xdZu1EO-75*!3J!e%oY z;ZwK4?FmUtDnraWn zDf6J4h7S++iysh<3HK{F#Tt$Hybd5sU4X&D4y0oDGQAFG9bg9ZbTW;ay_B6ygppSi zu>ips@G0ovK9|s8a-T~=EOZmNPRxy7&zB#DIQQM~c`SkpZ8%h3R_HJCqjUKVzpvH= z>6IefVyP-4%H-h`SHh8d5P3dg9lA)Hkea(alUkD|r#C@Cfr;LnGiw(gNG@2AbmruI zqqUV!-uVjlTBwSz%c@Y{H4a>};}VF*GHrG8Weaur2lVmV?=>3<-sov|&f>sx=u z>S*f$cgm2;3y4q-SM45>??N8QHNEm(oYJ!72pm;_Q?R}QQUUlJilFujw2WzwMMh0YHFvSqqGZi-aVM~D<#Q@3C#E8d&&@= zKzfJFvSb$EQKk@4E}1IcjEZNRr0AfOwd-Xqq1xII9j>Ax7mi;%@o^S@Nd7y9ekAPk zh3W9-JK(>T>&TxRp_MI*C|mZbLL-;3XVmfg;P7zE=l#V%4XI)&k?Arq({P|j0d-{9 ziTYvGGSau{K@8_88gq$zQMN>ZL8v0%m+vJA6wMfa*1L?KVNG*Y7%gK^L@eFSvtS@k z-Cvyd4C~uAG&Cm|CO%uC6K|-Pd~0xPGO(8Y1&dHwr-)17@{|3$*7nrTS{Ee6K;>kA zWsP`b^7Vxn5cYxKpyqa?zX zsGL)o&JtSlaO5JH2YZBS#!Dk+WD??14@_dzT##;3OnKl%=>byu&2f9u58f(uqX6c5 z?)zXXgMK0!35R^%(h_vO*yeQjytXVOx3(&Y&R`HEo(eD^ONjCph#wRS`M#CEUhA#; zx=^6eq-&~dNZ#fPANPe>PitB6_hLn^*RhHMo!$`brJfdf1*-POD&zsEk?TV8Kn1(r zTdS9S?0Qd?Ne-X2z1Om%RZ&*yWp%lY-=g7VaEBlVsD%V*9>=O#h zn8(?Ot~|hrWPv4+1t=DjB=xXxmqNGAVPBpzN750-gCLN{^xCiwC%{dnCk6DHR<$xI zM$l(YmO-z{MnMk!uth6^0H+h2UZ>XT+;zf3GlYuS0G;lk0-E{IB# zf$tB1p42dyMWIm@(UrhPsQM~?;cD-E+cLLOk4pkyGyJqMUs&SkzN`+4jdvOA$DA- z93K9IHCerMVYt4drRC~3V2uKmUl@$+9`bs7*MRGJo)i3Od5?6S@ImZAMrgJKT2Hq4 z5=u`j=ed=hsj@HAO3zdhleC@_b9HH@=i;z-{ldD|@{-f>mV;Z@Tww|umo?S3mKL0B znSbrBk*gvR|CvZ_i7Q%HUwI-}I#~obZ*@Wt-;HJW4`>%MxFKc95iro@AF34w&FVB?KHw zhB0Lhhf@`k3B{U#h&f?}kP9QEVwzJ)EVP!S=}<|mnmGjX!H_B2LBuwXwRE(cI(6nN zU-`0(8EI{GC)?Qd75CgjB83iJ z&-g+shr?I>JJ+4ERkF@9+K-RVZauh^eNle7YEgQPNAUi+b*Fg!`_Y~L`(t-sWy=*s zXU+$rpS!;OqexgO-&ViSY+h8y_D{afSx-QnUW^QRobRq7pQ@Tj4zSG()u}=TGgYU- z0P)Ru$YU!k$W)!SiwT6za@A>|0beCjo|3anhVGQBQa5e7eG#NzBq!A@sT&6Qg($|P z`BkHL`7~yc8MS2}Xj|RJmbWd}nW5gx(jwuByf4q=wB#VA`x*JlyfSBQj?rRcrzc;3 z$Ud($uPgr{3<^YYxTq^HudAq;!xZkCVl&2fNgXP{`tCYZ)VqQ05v*enzBSC-{P=et zKYC03Bd57Qs@oi;zq$YJyQ<_r<*#Zu zugx)iqVqOGuH$?~ZDc-*L41m>pS-7`yUOI1vFaX@vaVxb=Vxmx#zDzc-=_`g-V8 z%!dg(pRUZzhr)zr2eY2De=y}hZv?P(U@$FjS+Yuh^N z=5K3)?|tKytxusBOlZNpko;e);9QM1FGo>FL8lM%=P@WuunNe`#&ylAohYqf` zXQP7aN=m^Phu^zO{Jr%`kQQ{xP?|FT?xRPWDecLJ?n&WF}xDJa&+LmS>-an-GSrjyUZE z!if!Pt?@CVfMTj#Z04BBTgj#BiCM+2>yEU<<4uk6AFv1HSJ|fBR~=D?Tw7C{U+62%@nIrkN$YkA14qfWi03PALo%(RkM>1SP?-~N<$?qP@u)*@}TmYL4YDqg+C7> z0*+M#EApu0`$O3tAbrurSG4)dK5^TZHP+_xw)L^LD;77-pWleX)VgO;@lBU=KnmxekcD;+Jp8F-K9*Ztq#{m>iyo*kUNC%gA!JfMk6!htpKZ3 zNjy>pr$7cpfBHL%F1oV455ZSW+q$~OnvgZOul>qJ)y>V-bR>Fu5;&+@Ue}gv(Y&Um zd2K9)I(ci%V)m9U6wPB_XsWDgYO1PilFudU>gUa?uS)`KH2?VH1wP0X%E*t80U1yR zEf8Z-g02g;+EJ_m#p?qOG0>qRl-gOAS4O(jfLBirIM8!~v!fM2Y&gxmUdkNFV~=K) zm9=he#+)mwAXlAw7BprzkI{rHYe4=P`vA>4%|75ijlan=lDrH{a~)Wiv?IlIzerIH zuA7VxMTMw*>nZZ&=P7twwIa{L+maKdOn|is!1ZvInSrgp@TRdjQs1_}t{q=4Le*mK zZR9_nGj$T#j_MkvwUDvke#?AA( zcbB!>+I)HYFt4QhFG8P+A=|?L8=4woqkv|yua80gRnp(7s!UqHB+{w~r?i9#es4** zH0*M!E~OXw2&Q;@rLCN@VBIFw6%4xmVL=& z%xU(9>gz+^Ci(uBN?(V~V$JFBR*_o(*1BS2dL8={-q|iDAufnqm_W&ofsBK=9fiXP zw1s@0GRb+`wp0u^s0@Aa1!@4cknzj!3!-?7jwGGAj?2dh}`9o~a=mJnYikCV*brpM+B_%j|3c}>1 zU_2*?Pft#st&d&I8&cP2^#2yL{|bNJn7Tfr|JP0JWG6M%KTq&6r=FkD{_&{`fZx9=@RN@#@RN_HpT8Xo<1O~Q0zc(CdphI#XI=;5WzhW9jRFpK@Ky?B6YD{}ui`;5Wzf z*Wvje@%{sT%5^F8`495v2|j?|9PJ-xPWGz!Q}{BA!o3RgrtT%^(b_|XwYS9AaZOUL zv8U75PUG5l`E#0!uHAq(f5@NHUUcmgo8tXe@>lUc3O>7?9c6Dx?H9>h%QIxI z6+G5RmAT9X$b*%Zxo-c^seM=OWk;8?;K1M_`8If-FyS=X{4U0oPo7gGa{))r61rAS z3tcOC_8%k_$Sb!8b>>1eKaJs$Xpwk)a9H}d^Ufz7u8J~uXn?Jo-!oVlIQo5dblvG3 zztbHEy63H2KF{A(vWdidyzK_S_JKB@?mv2UepF!v$Q<$+vD|u2z*yDd;ejeYIRIDe ze3e!1NOW#whgNpFDU&9zKA)BEmDNaj)VM;aw3|T#1 z8kZE=Y|k$q9(m%nHSFl--G7oNv&Q6KD=<0%7`=w}3*JpOQ^!ke2H?U3C8|grE*xGA za}1Xv)s<;u)k`)GR0e#NQSTir^7{O~bsN~BWl6U;TvlH3){_3d&Q3(HU@sg~`;r3= z4ssdkEr@?h%Vo)u;l5yPZ4d`Lw7RRd@$1ifmUVQkUL5v%!*nR{xdrfl1@JKlE1~sBY16t!BNC;9dI{-@R78i{32>*8v_s!X6?&i&~P! z90;wPOBP$1A&UVp!2k&bm61SguohX%;SFKQq5vtQI!$R&Ox;$LQ9xk>6_y;j>lt!b z-$czHHHuo~C zr?AN5DJt~*o8RsB(?R1Bg%5I=cEO*a^j+jH1qH59GDQ^TJ4$m)@r2#y)0^`V53S~h zRDA9UH)PK9j}L3Id~TT{Eu%_uPSbdKv4l zlvfi-VQ=t{&;>vb0EaM&Dd1`|Ndu2|+*n#rZV!`~=cuo1*Q7)|b&@O^An`BJFT#yq?idvEfy>Zre!+_8N_jucZq69LjoAmYNlj6MYK!p z2NqwlVW@AxdQHE!(i5y^=EiWce|Sl-x;lu19a`0Och9Q%b&lewzuy~Jmh4*93rrrN z1O2}S{U=&T{a=z?G*hNa$)(e>9RMs2rsO&?v-^3us#rJO{j|U^V?U^pX}bIV>8_ia z!t+)RFIl{Cs4rMu6X4ySA9oZ+`~%+LvX0LF{?2=PR{b_q?g@uIo-pxe*G=tGd1u6e z&%rxiH}#In8{)dMHfQjL*D*VIqo08PDH1-eaNbiN=bSU)xT`siBU!P5A`oiQvLd{U zAxlw-R3O7a9%M;M4+MsAd9fkVkSQrJHm{nDpm_I*JQe)Mcvtu5h zxqPcdUuZ8ZD=V}Y{Loiik>haaOB^M>wA}SFmrL9!yf8y9A-?!!&QrQC+PBA94z9fd zxVeQp32xwv@8ob}oNs&?bg5KWp6tt;QwBw92BZW=iV9U0onBXvL$R))H_GQyC_EfF z<5J2>)lHFFReS;IdBB}&kcVzLGJm6fKwDYntE}|70;ZKL`eRFN*}N5CVdf{CMNz;l zH)m?epVerY5kUhoEnjgn}e_B9Ja$4Uok-$tEE%7JmKkEC1_G*#t-Z0H+h_ z=WOu9dH9@e%lss~1K=|!1{|VMA7pU9Q4@0TdXC}=J^IwY)EnNvMEfcva)(Tfiv#Zu)IGW(B+!j7Hu1P0%QOF$yl+g zpmZtgZEjw$VWBx-+s^Ko_dTP_7+cfCYexl^EiUo8ii-2&9W6EUVim|_Fc09(fK`dG zjl*ia0;_zdXfTR!mr@1`Ba~hpEZDj2h$|$>08Uzi4!<%W#7A0U=U#ba`n`;idN{|4 zWT`OHXAEuqc?^y1edOqx8;APXN9TRdkZ+6)G-5p3$v|@Gk*9K2yo4>D9z!8kb(r~- z8FyNt!1Ke|$}BD+H#Aid-Z{;|izpRk1cPieA49GOaEn?*zKPk0t3`5J#P8_M0}yQt zdXr(hU^eSVtXURGZ`Ln|FIFiyxvmT*{~vBDIX|NnZpisZdIUGF5Q@W~xUDj& z0iV}XR#aL9-$;u8ofa^1K)h(RIe_(M2^n!!$dIt3GAHDowncp?VN+U?U)ue#pD&Nr zEqa~rxAerEX|8tU7dV{-?TMC_4sAoIwne^@c4K;qKnvbWkEF`8NIwX4!|#6!dXvwo zdXrtM-ei}eHvty9h26qllooRNmueQN)SN;CK?TXFnQOX%t|;tsh762w|7rS7RxjcJ z)s3bo0tW_qdvSO}AukSg%krMvyO%HTzP)Gpl8W-%%Y#Auso=OqNJ8(Lk9a1s3Bg9| zwwO^&141h>mBdZ}O@Rb~+2Nf51tQ#uIyOeK25FVN11kC9#%hJ^=z@xU4tW&yIu=DG zRDb!Qa&EABg4bQ&RAjI}WcFE;#QRJBSuDX?XONoai1c-jSf*R%Dfmpp*5 z8eBO)PG63Sf6s`^)DMrkp7(yS@{iqH7P{*$;3 z$X4|j&XWy6ZR^0MZgWyPVSW4omQE+PNcC? zi@DBq8K$wKdZ1~Y}y>Yd~_i5aORNo%4Dn1{j23BOSd}^aF>?(gYI9j zzsbg5`%6mvbnw0|L0=<$jx*O6cLqvN?`2J*gO$*GO5AXE=(p^)u+OC4Gx;fcEr-oG zVDlHihVt}%SAk6c-frN*kZBy-0F{)ef|6={g&jtVh!L%}6L~WgP+iX5NUMOmtsp*^ zb2qh}462>b9eej)@U)I(u`DS>7C{eLEb}}*o~=5OE+hvJ7sZgGcg~!QFN@1ytcu@p zx_5VLd|hh~pBJ}3;Qqz44bjT_57duzwr!|q%cp0E*3%Z$qxvPEqjKSZIxdJc5DoWZ z;!%}CyPZ@=94}zrc(MWDg*IA0LAnt%``CNjIhZUU0>G;zBO1a|ZY@{#Yf6lRjG5Z6 zs$DiwA9s;Rr=((CO~X(YfHJr%)UjqRgZj~Ve0<7iiGIB#OtG8U)1Y4=i~!}pi3?{& zm3}edQQ^PXzp&o}|GAUJz^?)uOkrn6WMUdQ`)A;|riBZeaQqkli*I;PC=)gzx7Kd> zouf8_-&0mxkne;uyOw3~482#`av1Pt0vSwU77GRwt~?j4W8k$Q=|J*v=~3Ytsh{+! z%hyx=Jr-|neQ2L|UqwV`*k;g2EATy3pX;^s^e?cukP*nTsbzDn-=?*OheOt4S9Rf` zLxt6@VrytPY}MNQxtnphGT&7NhfD^1dpr9-To(xniDd{Hjobpr{DP1wWNSda7s}S4 zMIBOc=+#X#YmEe?M9TnkdwQR=@aT#fUT&jR_pS@x48x01Gy5@=PVQOGpv05hSuug`%*F7JK?jZl&1 z%e!AeQpLDGG>uK(t3&Sx^B|)v@`ecRVi)3B0ERrLCupZ|r36(IQ6m181ZAXfw2Ctb z!M9C&#b9Mi{2oF+SB_{}(#YpW|I^bG(brW}C9VJh8oE-m?u``Y=5Y4{_>@1HDxx65 zpq2n)F^Vk9B!V*%kd%nri>y>pLmEc3vLvS`qB1a=e z21XpO;rUU>g3A{n|6_DV;?VFb2b9mGfOdNMft1Lo@0RfPl`mQ6UbD4)ZTW3DmaKOV zZ1b!wKkccx&3)UmtIw}~7XOqF<~YxBkHYhTmj>>E9Q{}E+u|m^jssjag0_VgGF>AE z4yzbnQvx+f2NEm}CULj;?Q!fdCbUl7E*A6WT}i&7PY~O8RmMXu$PBG)<8k>RzTnko zir)1ZEuLX_%bz^XHYg8Ke*_JDFjwK5Rp?YGf&<(%V04PNbi@y;hc_8s4~&ePkT*mfE;AJ32D`E%;?Mta^=&jTgW zNnXe4Q8aP&5%sZaec$=m6L-FdXS=69%%(8cJ^|TeD9W^mri^^Uf#6ZW0q7p)2g)h~ z1uOjcx$_tFtE63pNeHgs2>kUipXwe5Cm*tVVbb6pPudO;Vvk4JqPt6|&P?zq1~v}!xr+dH&YDddk|F}mWePl z{{YQ569%U~EIN3fVKG8Dh2px1t;{gx#9KfYKwTZg-C8)SA%)TkeD$HreoquR*+7|6 zU4*Ymy3f3iywB8Sop&(q4{LIDtql#Wx?D}zAMb7+i0E=n11C=om~wTIH7!>h@O$o! zFEAQAP$0JMY?^`+Ee^lo6u&VJQbssNopa!rZvI<^ zCw}+vckRUs{{Y;o6-tvuq(tIrD4CE(9RR3Z(jm1VuY&U5Cr(V9IKg(YE98&JA3@JP zhUfqFa-R3_=UK^(H$Hshjp+t>A9kRP-|#k2uK>v=fc40j474E#SJ`t!qy_SLDb)ts zikDBEV0+je`NOz~n?8a+U%jknTkzh8Z_Io)#qVeZU(y4$BNI=ewG_ss9?*pGq+A;G zLE&&{wrH{@zRBM|qYdiN2~54n85t27VbJERHpq+l3rDDliEpZW(Qe>v341yq3@tuu z0d*^bqcZs$Wk@9HHnA2&Xg59TE$kS&p-L???-@*H<5EBfL_AR#54g!DZD_Zk)(Y)V z_&9Q{dfHvjdCRte)!Rxdc2rb58>&BhcGv!B_3=Qyr?kW;9xCb|9bM_$n7F5LS#y3g zF+RQ_c2)ON4PDM+xP*dQVfZN?F9lNpFrCHO;l4CXwZzofSUE9tQWIaav)Z6(z(T;P zpvBK&D$If@)_xo-|H$5Psfm_7^w}C*sY~A~7G7z$xPkVa(lXQ|g;?CffIs{5+ghVk)4G{1RS<2{LuzLle+{lLbz0@wc* zV=zMhVR#aWiUbk#LM;T7kWy&~e!KU+RjcmXyQQPM`|7-14{m;P%LBXfCSDUi>^;2V z$>oO$9-^=ZZG9)*mJLBaXv>9SAf$cJ1yvfdhc{(HOC48B&*$xaV9S%6AKZ1k{P6N8 zR~!Z##)Mm8v-l3X0k{|V0w+?t6ubFW|Ygm-Czr@5i0=`nlfUI(3y;JoO(K$7S+bF0|Lm-aNGrF7@cgOVCZ-A$%Bg z{Qc?KklW5h_7K&>kqj{;-sxXzFqlhx&31cBNp7QS3-5pb)QIT7 z`vTI28%QSEpvokx*&|4@MmhG}gvBz19@Z!<&B+mj9CwZzTsys(q#k5!Ad#7TUHQ)U z&iak=#|Cq0;q?WDR#RjPdR1C@JipLlj)jb!%JxM4%pl1 z-H7y7_%m@)TArVNry~jAfV0LL#w%SpBHX?i&qW1p3^_kIGj{X!QIoYO|9DY}*}xvz z;%dw-X|dazORZtpiD+LD{3R9s;JOv~gX!gMx?DLLNJq0<)z5m1C|w^hSqt-z7nYh0 zPh1}{Th#Bf-gxaC?{^9nVp22!qnauDh3Bv$8cu}#A|V*zeuB=d10P2i7wIuK&$@pq+B*J^U}rKKJ-dkDZlI zo_qYp$IjwC%0HS7;Z~u7eTTotpDdr|M=nA$oGnTBpY?q4i^re-GMf6spJ-m*e>*TN zqkm_<@XX0CezD>YfBNGev6dwENpZFK3f6OYs$1-$Pa#X}!nzI%Kfv!IzOK7c>zaQN zvB2pI?T2ypIq1zukFe_$?b%%>U_r5PZ2Vr7L&sE9ppV-dsCzMD?QM&N&8SRTx!ztsq>z6LeTHJT)kJI6PiLRz04vmQXcF1Uh#s~%M!T``y}3k1OT z^ad8q@0{1s+?c2j1@UShB&K$F|X?fGEE^>mlg@2c2Y!}cat0BDlRx^?C<=O zcF3-oTXbMAzNd8YA(AdC+y_c4W(gPXB6VPnE<7Z75qGu^iQ%~B3mz4S+>kgIiV`?! z9%qDjoaHvJog*ZKkV-u6k;Weg-uscC{rvVvB(wNVpZ0N$Q6uh?eP?oOnStmplmR zOpjnYesZl6oR=ZMS*;*Vg}~J=O2wCJ^HOSfuCP@=83bhGTz?BT5Z~`b7o-a}Y7XM# zk&nLlvrj!*;MQo}MGphy-c)aXLg0SGIgZQCv&?_W-qfk$D^ z9607RbKqvUeVgrOI}#)-@1lVxrr$;4A-&V{UUQEXabq3s_GE z;YId$_Dygt&_xJ{#A8~4$M8rR_;X-gL79W;;Q9zM%fi6G&9X%W$Z%qX_6V_~f}6Q1 zY!G3p)De9{SIm!ew-$To>(rF2gP!F3&^ZL9?#ZuU^+R_40haUIho;8Czm`F{&#3Nd;p@+AfAKj zMST?b48h<`ShS#XUXo+8nySi(zco+c`lY!mw5;q~@)sxcPNcH8l z@BIEfwKwd0bKjzIXj|X;x>HN%Zf7b<(IoDLnJb~?_8thdo+ofh-<3Kjk3+mJ|C#<`tG~aq>N7}+W zd#H@k{e=g05-7<^HLbfGAcf$tQ4h4H6_)w2d;ArCINQwJF_exH)=}CG@2eq~`kiX2~Rmyoc^Paz%7m;;w#DWvXszmR2Fc*^kp8 zg8|-eymq;&Oe9pSrARUyqzaKAWVa)Sfb%gjYmruwUXOQQquSqs(gMP3$a+)!5vyQ; zPb7IYB8j`8J=o&{>?HxEkkcmGc)K!Fjs=uyXxjy1o_Hmx}9!pr&}LQ@MTtI#X22 z4owojPi-H>Js*QSF#T-JLv+4h_!#Qy$v7XMe0U1}wVDDvp!kXYM3FJ%Z&JVDBNLP& zlYhrmofP5ydT#2k!hb5~FZ>bb={ogGFGZ$C@JW4ZMIFr>V0p#03wwkFzo$k>pbkyJ z6sZ?-5JPx2LE??5e4w<1-4ZwUFjB2u;tpf#4&)6ZSBj(=4y;;_Xt9FXIpRkqC{PFYfVci;HfIFOu2Mep*ir+<H>U?Cw1BRtpFsSS8>bb>D!V3q z&oO1M(N&D4c#5QBLu!v$Jy*L2o|A=}pyz8~L+UlhBOede7}7YXN5Yo`1*h?}rKjOqw@Z%E+d6<2>M%Ie{rv4^& zm)u^%{yh1M#K*>ukKc0-{tyBr*%h=#hrSh2-5+=;>rPl03MHIGE;_`9f#7WCd@}WA z%nU6F{6p{oZ3*TX9wKOCE>pb~z0#(8r3gc*p3$dVP&c_+{6TEuf)tHUJSd&)?e7(D znOqtde>w4&xYRN6@w&aY?YepQ&AVQBfq&da@IA@#EWx)%cHqsh+0)$c^8+02sq>NV z()oVO$BWAO$v64^H9x}n3xC7;=auspZoql8r_zg>?||Qx7vTDT;X2iJDMfwHq9+T< z7Nq)_!~`u8D#GPz438?fOP_7PR)pRU9yBR@2)w7_9b<~ueZNm)wt+7x%li9$vJ+1x zo2C)u96e?RlOEaH=j<;ry8beE0UVV99iKZ|7AYt#fM13)AI>Lv?};7#*vQ)Yh6Mi3 za6gehtl+6f1CVT!ptsAyqNYxnT6;6Ykd5#)wwm}neHfJvUOhYv8FRQE&L(cq^Z;QZ9o)a1{EM))1?Cftxk^sZ`$@ojMEkKpR?8 zX!}|Iur&E?)mOleOi$IqO-Xwx(;NKQ0OFDoX6Oa{7AgE$5ImWdEAOLD#e>se18K>V1RB!s;r>7T}qwQV=9=^&e7gVRJ!c$_~zOLS*1@FavdHeyV{AunB1HYII9~tI$ec~ATD@-0`^W`7Q7r=vE zUHag`Y4+>c@q0>B{twLZm?VN5qoqIj0{jAuz#Vb;namS@oHPXhn@Ut07O_>xLui3u zb=VzN`!TqdS`68i9Y9@nox?unv|;q{AIQ;xyUuYjq@&wv27YVo%gY6@3nSTuI~ytWr0E@5p*;O}PG4aABCWSl}#bUQxr>k_Ax=XdX z$};Y_|BG4E;y5qYrFng#R~L95zBtx(H~X5R5}l8@EoL(AhXi0ku-2HvA~Ks*6p(an zOvuX83}Yr}abry?`eyFFDdgql4Cgytc1=!BQ%;H%>87^KM)HEhUblF9Wvk#+oj^;C`v(t%%v^dosZEpe(3g{ui?P4&_?(7_` zfvXx!)-*K=Lb9!~yJdt2v%WO9N0mrQ3_ac@}=h5G1EYQYWd zZrI$_G14He{RVuP5{cM6?oSIxTDi_!TI%!gi1@&=Lk*BDa8439C6wtR&*5UH!=|xXo2;0Em~vLRiA17HH8cGX zHnAWOcvG-NR|v7D)LApOa|+hBlDU9AhdxW?y12iw3!9qotn8RU(%(=?J16rh!Fq## z)_{R1f)nAvt$9PDA(247xa5Q?i|!clZKIO4UmQAvZb$rDy}$n4o8y%ux(FWN!?8F zefMTF8yHMN99_1wZ^`1`MGF`7bkFZ10|~e*p+#tEZfeY&g7=1h=-uG|F7q(ge5B^( z!k1>u%Y-^Fsn5*$nNa6R`Q-C7>7HcuG-0VPnG-g1(&(2uaq8q5-kz_{9nD!kT<6xq z$6&KC#!SlmEs51sMZ*;Vr-9K#(kvPT@WSBE_$=ya7UQ+mm61>|7o3GO?64{GWuTd? zqxr>b8eFa>7v{2e`s(yUG@qCAnwgCaCbtQ~*tV@(Hg6go8Q!>IX#KjuwF7Hbuj*g9 zVmZw>mf`FvfB*AcKgWEh^vAP5GkF}SJ5*kA<|h$Ymq%f@XMeuEmj?r+0t1-7e69C1 z4!BjTOnB-`=8~8aR6RAm43wY7A-~Pf@YTWeZuxDN1fBjSf{CXD)<{c*A>rs0YnrvY zX?f5;H3UKV!T)9~8fD>d{uKHkCDwv00PiS4)Exr&QTqTfr+JPnI0a0{U8r2CMXyB( zjFvtpvs$I$)UOn$30(q_$kr5hOXxzd=P`%b?oi`5W^%XGjAdA`SYS;^GrG+wM%Rj^ z^)5}#@i53A%7Yez*YyQ`z{SK|DZ0XcjMpVC12I+joJHO;cw31*J@Em|5j)SGPJv&I z06BZ$zSPqz%2p-`k1yEI1@ULKB;j;=rW!sn~+oGCUa%OO|Py%ql zK1y6CT_UdY(hn=Q!$(FCJSa$mSMvD(S(X($c8At+v3#G}39uCs-T7+sY;lq=;GpgkwC}df>&C{`zSBJiWLzt^Cte=8?~201dAE(d zyyZiA`xQ_@PxKb_M2%d3+eUgq_%+r6hQ}2x6Qw7FKI+!#doC=;RYf0lJbiBtX{6}h zbE5JI{|gZ^`ft##new+mCKXOV39r$Tvo?H)z-LaU{~@g~DO)q6{SXvHrZrOcO0tNE zqJ!dflWS_lA5UBuh0#%de*A;`Wr5h8!V>XCp!P^$6@&3@L%2Uqb$h4Ii8*Hpod9;)%Ys%=u~VesONGZX;p;&F*5so!cJXVIj#{a7 z;;E6zFX6ZR$!QR%v5ONL^x>bB^>X1`d@b;G1ATSdO#p?w9@ohpV4!$bRE9`F2%cg} zs2EQpt${Br#eI1h;*#a{Z0L42bX@*>QIY%(UOBN!d~xmC$@oR>LDhx!(5NV!z#=`blZ8$)~w4~W5sAdT=Fme2Mu({leZk8`4296u_KpV}wsC*CIaZP-2D zO8bAmhaWo{aZbLaY2=RI8m`wr16)n9re2{ReJXbuPQL9#&WP| zvn4p;Nq~kf$7n@f7MSp|G9Y6%o8XmWGIg3#ka=H^HQ}-3`+5Q|0+eDXZUK9t0;%GH zT#vIX$B}~^EXrQI2x|5WsF9~DL5_dUurW+{IrM&cHT&g-XBmCG^Tmr`$e}n3j!ZZ* z^&!LsRwHXZ_9eXDr1Z{A#c=8bor40gv{F5i4l#CUVq%;8YgRhW?zjdeeJf?4af;Qy zT?}J?>!9{VJ_QOd7h!-`J;H?(JRX`|1;1HApRLa}n{cNN$x*+{+FZ*&Fg?+;)0+RYd?<5@m2fUMZ1l|e95_n}{|C4JdcIN1Tz1@UGG zbkrbP%H<_kIDrD`;};1u`SS#`$@@~@_9E}it8!NyrPh@%{2e>+j;B>vpguQBkP9T0uMO2u%2t`b%!SHjf6Y|LzcuxFCgv{CR_1T8uV zTx~WP%wtFsm9Az^CFzJ_p+b-#R7ESmIlD{HTCuH^D=)I)PVK5khYW(K{uC%21#cv#;O1dws|H zJNPwOguYqlFc$kv6Cy$WGxvdrnQX2Y~wl$S*{(~D7jP=mfM$%TTn7a)gik31zDL{#zc zR;(X3ip4sQ+^h>RK%N#+xjKjsQ5dEB;4qqvV7>B^iqeW`xfX=iAJlovgZf|s0Y6AC z;erCqg=7*u?#M;O#Zr-M?DuP{T3V~tbggo`*L1C|X>O}o)w!x9$1)&asO{{mjdgWh zF;G;5>$Pod)dTa_7M0+7ZF6bDHPAOd7Mo88)?5?j#w~3VsKR13)k6suIC3;1s}2;x z^;!&h$ht2`+~VBSBn1&9?y6V9>yZ5ei_PV& z3p$kmJY}xxbq*fO7-ZR-_OT;XA^VyQJJ+{w*u{=4@eB-&kDl~<7oH4NRfTT7!LWO+ zzt-@wHgErm)q4z>zFn((tuGk!_Vo|!Gkj2d)LWPJv}JNiR~zs*7%{GeQ~!ioPE_NC zDo1|&^98U28p$+IX7Z}E-vp(yFdCR~2P&t6{}~ia7G^e?H|yazCn&X0$O*W5&IjPy zfI1I5QqQ0)uJQ!DhLXWhh{_m*q9Ig*L@@)*up+o9RsjTOqa1)0CPS**LykbG9~TcI zXB*#~z_Zwoi1ova^C?HC$UNLtjo!U0u!QqwHI;D@V#l zu54@gVCAaSt5?b99Sv=}6S4eQVn_atcZP;APz$ma6pL?Ro=1`!kd05H*J)sKWmzmc z>lo%4j0AQJk3d9G z9g$at#rGni&}R2|Z4QqSSkX!0BlUoJsupuOl8<5%pgZ?|AR4>xzIA<%e4_r|L`b{>i=af3>ayZ!HQ@z%~ll=EJVFE{QmDb-O@z&>IcMfbZb125%5J zM`fEuJyIi*PlYs!z5%)hgJ~3wARVTq1#lZIs4b|ChLLcNI|`%8d}p~mV6#BhKm<=Z z8Ml5q8F!pBIUXJehmj=W7E!5)l87>IPHsVMDAK^L)*Kw!xWBYuL`Hw*e{@NfZ!;B zxqMxu$#x6J^J}kdM)BnO%{OoD+0NSckB;u|*?Kd(w<#7waWkbxj|=dR z2%X6ebc19iHDS0Go(AwWr(UVGG68XN9x$f5Mr!{&8|6ExUVax%-OVK!PvE$>qL}FX)N^SeEQ~adkNcrqa_?Guw-v{ zhU4DGwXwZJ74`8@X(Uv<-C&B&3mf5;hJs&!XD#6AqPQ-Afzk_F4O}dS>jP!3A<0RJ zeoWOE!bG?Pq`KrpFzmVwa#?i36>dI%dSfZX+bLVdS><#;}?UKfpeZ}$5-gxfZxud%`bZlTBm@IA1$!RW~ zlyAY$-MgtzR3Eh%ee%$JQs9M9#zeS+fLlP^D$^W;rUS_8C{R*7Y4(IwT#ITB_pB&GG7Hd__i+bGAMGr~3EU z&OK(?ilTFg_$~3q>d3OKmd6y>HKCtw=?26*AYX1J%%Va;o+xQE`>93!YI4!VB#JwL zO*ukB9=!70lJZ=hHOawwF%>(4Y^I2$mzbS&N=Y?VJ@Ma17xrJ%TvMG0dbh6Fuwli~ z)msmDH8ymF0-LBrx^%VCS+<_1hTx4coV@ZEfPF)9Cym!ifXIw1QW zA`K`B4UAtrbBYE@kw5h*1pwI`?1*!G@`@0qz0w*;cm z01mcO{qp>J_+EZJ)04v6}*dAvXT;?z}3 z`C?q;twj|JC;~mt+z0hzvGq3Wz)XIdC(~)?mgX!XHDQ-?!;?UUzWpc zsalwjT@IO+jyifFRze}BO6V_OW#~NJiN3dnpaemC)1y{s-;{rP$!fDZ#>KK zhL_?_2y-;4m;)NMOJEK-g&T_y!vdMxc=ntt5)c>5t?MMFkNc;H%QsKm}=r};_{!V_G z?UE+2`{v9I2K|o%4gBt?{Ia&RIJumC}dbp(DEhk4yKPhW)#vJgYeJZ%yDu$VJZM zG-(Vg@mrUIC(n)mpejZI$_H}-+9Xk;{A8r721M<4yB4aL1cJVtu>1dC^4 zfA`haU0uCYS5;T<-PP4=x;slR=`5Y3vXGDtp}P|#2}?EuBmqKJHc1FONkJ+^823q-m8Aq+0mKLe+hI~b=7I}}YB9^Wi=aGS?}MdujstQsR@PB-sFPHrYkx~whP7B9u*r+Zw6fuTuj zR3ePx$C2g;NG~a!Qz9o5QlIk~mAq=t+&*j8_A^zD^~S*R%oR-Uv$-z+;N5(JG zRoaq@YM~kq&7+Z+Whq5)W{FwO%E_~4P5#Vh>Kgy;-x}*a^Te#lb0*K~Y^;lpi`F%E z${GDLqf%Y<7hJC#a`&v4Q=e9E1J&UyRC>(oaTiP(#Neyf$&))Ck4QzYRO^*x!E=ne z)HjfgzRvX_Lu|B&qnM#k?8olgu|-1*>~a^v;O~;M(5lPaJT&x$A#u7g+7iyNpt)U- zTVP}|MD(M*+9QWt2Trz%Dxxh_RF73zLl`oTkw?kT67`sMhW%saUwrYq&UsWq1r*)TWCElMmv5PPl(3xLa_qtZ`OYPSYg89{$=u%v{jcgg}`Xh|kYM{6+( zPY|)xTZ>V#vqX^=O+tw1Pn)j3qQ7@-Z~qlnZ?c}aded6>Z*}p;mF*KIw6EM~{eI;} z`@M}9!&qysG`lpPtjg|vn^S@pq8s63VEBMLu>lroK$B+ zD%Oq?mg-E`$J!s?c5{BjXGZcQ#n8GkI%hCZm1s}s*LZte=B!8s`m8yZ+RRPHF1zhp z4I3GaQUqk_XH0_uUQA;Rn7}ZOh%B{w8}NmzAQp2+Ha^;wnd6UyNL&zaY>e_#k{7Ji z_EvoWp=FEw%U0>NZBGqS4NkTVZ1?XLo^{s3Y0IJ&(e_HZKrCFkbYMDvm5i&Zt*iR% zvNIMhpV7N`0ulJl=h=S@j&I`+J=eqgjV*~t+AzG@fueEJ*Tj~t`H=oHmzD17Wo5-dGMsp^u=cZ?6_eerS(7kNJ zd8EV;uakQ>WWQKcSeh|Q>>TFkgi#3=8yc=&hj65OXk5d z-^BM9HX1W2WClg;LmsSalL{6MHOzx3pOQ-JJsuU-%E_FFzP0v!^STGDmweBVShL`e zK2KO!M^6?lnfibESf`MeLrv(&P00W{vbns$de{0Ps&YZf`ft&ccQpUrdP}tBcN*W; zYO==fdyxI#!jBweO>`Yc8RTT@TE4aGlbie-4~YfRc`jp6-DM0ugz1UpaZG*9nDzy~ zr7AvYz2x7x?NGiD^z6eUX42tne+6HoYX=91=4;aEvC3vnd?aM+a5B8QnwQ!89hLYb zS>N#n6D{~?+^(sqw}}oRLL^B%=)whRkKlG@gt(%wTR*i~o@%gq;d7H(8sqI7+&7Q^ z)6Rc_=Mm)}$-mipxp>ZCydvHn<266HCKhIqPVrEQy?3s9@u5c_z2?zJA2FL(KECa-$F@B#EWzl*rgN^If8OJi&e!@Q z-Ip+GwX|^B1U&Cm{Q0`FaCPzXYTn30*|&Y`KU5YbJLkqt|GfTZp7)GBcKqT9u4DF_ zEHD`}7|4z5J^$;c`u@HI~7hiw`{k9--PiR^u-a@DSsvz&Ka3clOg*OqD+WxdRKJ`*oR{)r(!&dp??ryyHhaES@jnorsLhy~GEwsKf`b z!1KF?2f7A^yVk#d^844nc;%I?S6+!g^X~)0!vkjN$iJ_-=%O{-u4=xD|3R158@tdO z@6+7ZX;;^4o`pZ(qJ*&+zb`6$6*gn|Jwu{ky!rzMP+~?3Y~F zmHn1$zN^3I8sKI3Vl#dPu0_;|meAQ4S>X?WP3d-^qfTO}C_TZc(`NSUwEkhImh~;znOIu?#kZocYA$+!wy?O2s0Wnrj3xa$r(&0P2#H zxm%x@NLC=pQAeVs*IhmH>g#sSnK^Cd9QE7nS6{u|imTtwnlopXB_--y+{Xm>9-K)R z51&oNLb?+1b2QQ|wFlm*A7Z{@#bsdiTPrRP0!X9h@V&&>M2H8NsEkZxyz+%6Btt%C ze3~Jkx1bdw!8?|8z6{0GnBU>UzuSLjKV=wJx+0|91s+`s<_CE7?DB5 zRC zcFCFlf8(igjOGc~|F}g;Qp2+O&N*x?@?#ybGt^e*1Ro_uCh3 z-(;3fm=;ud{k<9wRp4Pdct{zof`=$4OC#HQ6b~34ZX!e_FMo@x@fNtz4X{(p=*BW$ z3_BIx$kTXm?#aLTF^`k#slOINU9ba2LdC9Dv>0qU`TD4ez+qR@tO|E(01fN54>g!Cb)! z*x01L+gTfMSW+v2o+5epdbQ|L zmXuZ>wivnkIa`dpPkmj4Mr+ru4-Br#%WGZ_^9il2>=ftl zKt0V_ttTVeQ5*^`jki|ok2|Y=qRPzng|hxNtj7$_h$_7!Kbi>_vm@)A9Vz&qg!zjd zDNCK*kvWF~g_~E%p%7dZ$s=MlIJzV8muGk6@o!m?Atr-{lMShQAgPiqDcq@0>=zE- zK5|3Cr*Q>qwk?K@nuj`n_{Z_qPt>HM!uG+5vlh*`c)_anL7I8il(((CZv3>K*_lgk zS%1r=YUds0mkfwW`UIQ?E^IC>xR?mzHPq&a$_wS) z%q9tIxp*V)4dK_s)qBDPz?eh}OyCv;V?WtDG$vYGB;Q#uq0s<~5=;pFh{Zh1pxqOT zvx~y6!k`fnVdXm}%^JXre?F7Hao_kK|7pBxvwl!q)ZTgR_$fWJtIJ!??Z2bqVg~~b zO4N_R!Jhh_;vLX2Fvs8vrDf~BX;x#FsgVJ>&3K z;A>L9z1&D=>dQ(g%o^5}Srrk05-r6fu^Xt%6G>^}(br3r?Or&(FPRANWW0U^o`LZ* z?&$mGFNcTD|CnVB3{8K&qGqyYaZ|Rf^bux;h0%XaL3^rfzy=RGB7)wfh$uraRyFqRzt9R7pGgSvd=M=!(#C#H48@*=6GaLl zH=peDkP3w_AGH*h=F7HBNEDeZ^4QD-u_xWPWJmk`&vy{n(K^(+^zx3s`9{av)?3X( zEh6rH@Zz02^~+Ugg1NNTmT898iVAUDn2F(wRFq{o>10wk^Kx{X2HNqptMLD%3U^ zCg`QPdZD@6$_m_Vxc%ff{~w~cibR&?T6&v2Gm+%GbYFHpXIwUWze`>j=-A&8&#J2za(w!gNHC(f;>*>KAt3NGdw?Db5)twr1b7kiw3wgUOFL!I%*9hn5 zYjK&f#3C+Je+-)r<_ZL6;X(+^aG_O21txrm{RER2hk7_)3(O~VlO`a^!jyd`v5Imo z>3?#tYk4v15KmTKX71>mHFs6-R~I2CU-*$V?^thC_-2t z&4K4Vw*4{wCl6+9KbaMDTR3c1a)0nqQhK_ijV6&L#Fo%6bKmgp-NV=2Fnq)HORn3t zWcT&FUvk6lCD$X5tTWQ|gWb-3QlHX|OMn81;y7jBBthz4-=u_fg(pn4Z*!qn8 zn=z|lpyiCg3dyEcD1p369En|RF{kz;JJZ%^MVHetxtg)>IQ`;}c6{yM&Ko@M+Rt|W z)4|jGU!>lnDze_;WKJ}c|DINr0y zI1^lr&*M0d$9d;vz3k|GGkIRUNf|NYY&##N8U`#1o%TS5f%-&IfPW_TOCIgRQ+$z0AH|Fa0#_=TwRO=foeo*6g*e$0$Rp zE%ps<8DKZ$Mh&9*YOA5`DYw}bQjd-^mWXia$k}ImfR2bYK3Y8B;cRGe_6-vP?s@7g zGmczMg-P89v|3D4jx_Ca^RzJy+7p+@#^f+`+5(5>eeufA?>H|{3P|LwQfH}~t*ien z(Gm`~B>qjt_u=uq-<(O@S`9f0Q;o%$fxd={F!2|X6M&r{;Kv~m4(4+L5@V|0_>DEb zJi*LxX9wk)jh?QKshv}s8*AI)0*R6$qC#s_O@Vm-Q8sM5U$T29jxZfuj0Vz@E;7Z` z-e^p z2|h>wxTlk1T?htawu_;~R~A3BYZ@+t(`Qayv81OTpTeR{Pj&fA>E_AHx}N2yw(^Hf zSB?9?01k)h<=2kewFtLD-LP6e?(`~kdQtDWmeqUi)Q*8F>xmNRqz(V@1pI9ggPh@G z(}-wZUITrb*ErvG6uW%RxSR;ko-mTpoPKDpJSr}1+P#k s3n!(`lCJDArN|NmBd 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

Zh7cd=34FaGWy`SDvi)66*nbC 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 RXt+-ctVzYaTEQjd{{RH8A$|Y= literal 0 HcmV?d00001 diff --git a/Resources/Fonts/JetBrainsMono-BoldItalic.ttf b/Resources/Fonts/JetBrainsMono-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1ddf216d1884ab44789c0c86dc06f6556c4c4e22 GIT binary patch literal 279832 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

r*`bq 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 literal 0 HcmV?d00001 diff --git a/Resources/Fonts/JetBrainsMono-Italic.ttf b/Resources/Fonts/JetBrainsMono-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ccc9d6a5bc15ffbcce66f923bf3d7999c73ede84 GIT binary patch literal 276840 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 &?JvTsIyg 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 z

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.1.0 CFBundleVersion 3 + ATSApplicationFontsPath + Fonts LSMinimumSystemVersion 13.0 NSHighResolutionCapable diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index e857bd1b1..e2c33b1b6 100644 --- a/Resources/en.lproj/Localizable.strings +++ b/Resources/en.lproj/Localizable.strings @@ -1,4 +1,8 @@ /* English is the default UI language. */ +"Search settings" = "Search settings"; +"Clear search" = "Clear search"; +"No settings found" = "No settings found"; +"Try a different search term." = "Try a different search term."; "Expand" = "Expand"; "Collapse" = "Collapse"; "Pin configuration" = "Pin configuration"; diff --git a/Resources/zh-Hans.lproj/Localizable.strings b/Resources/zh-Hans.lproj/Localizable.strings index 36c31f84a..74657f25b 100644 --- a/Resources/zh-Hans.lproj/Localizable.strings +++ b/Resources/zh-Hans.lproj/Localizable.strings @@ -1,6 +1,10 @@ /* Core interface strings for Simplified Chinese. */ "Settings" = "设置"; "Close Settings" = "关闭设置"; +"Search settings" = "搜索设置"; +"Clear search" = "清除搜索"; +"No settings found" = "未找到设置"; +"Try a different search term." = "请尝试其他搜索词。"; "Project" = "项目"; "General" = "通用"; "Appearance" = "外观"; diff --git a/Sources/Lithe/LitheApp.swift b/Sources/Lithe/LitheApp.swift index 288d8e6d5..42ef4152e 100644 --- a/Sources/Lithe/LitheApp.swift +++ b/Sources/Lithe/LitheApp.swift @@ -56,6 +56,7 @@ struct LitheApp: App { @StateObject private var updateChecker = UpdateChecker() init() { + MacBundledFontRegistry.registerFonts() let store = MacUserDefaultsStore() let settings = AppSettings(store: store) let processRegistry = ManagedProcessRegistry() @@ -233,6 +234,19 @@ struct LitheApp: App { .disabled(model.workspaceURL == nil) } } + + Window(settingsWindowTitle(for: settings.language), id: LitheWindowID.settings) { + SettingsWindow( + model: model, + settings: settings + ) + .environmentObject(settings) + .environmentObject(updateChecker) + .environment(\.locale, settings.language.locale) + .preferredColorScheme(settings.themePreference.preferredColorScheme) + } + .defaultSize(width: 1040, height: 720) + .windowResizability(.contentMinSize) } private static var startupProjectURL: URL? { @@ -256,6 +270,76 @@ struct LitheApp: App { } } +private struct SettingsWindow: View { + @ObservedObject var model: AppModel + @ObservedObject var settings: AppSettings + @StateObject private var windowReference = SettingsWindowReference() + + var body: some View { + SettingsView( + settings: settings, + initialCategory: model.requestedSettingsCategory, + onDismiss: close + ) + .environmentObject(model) + .background( + SettingsWindowAccessor( + reference: windowReference, + title: settingsWindowTitle(for: settings.language) + ) + ) + .onDisappear { + model.isSettingsPresented = false + } + } + + private func close() { + model.isSettingsPresented = false + windowReference.window?.performClose(nil) + } +} + +@MainActor +private final class SettingsWindowReference: ObservableObject { + weak var window: NSWindow? +} + +private struct SettingsWindowAccessor: NSViewRepresentable { + let reference: SettingsWindowReference + let title: String + + func makeNSView(context: Context) -> NSView { + let view = NSView(frame: .zero) + configureWindow(for: view) + return view + } + + func updateNSView(_ view: NSView, context: Context) { + configureWindow(for: view) + } + + private func configureWindow(for view: NSView) { + DispatchQueue.main.async { + guard let window = view.window else { return } + reference.window = window + window.title = title + window.titlebarAppearsTransparent = true + window.titleVisibility = .visible + window.backgroundColor = NSColor(LitheTheme.settingsSurface) + window.standardWindowButton(.miniaturizeButton)?.isEnabled = false + window.standardWindowButton(.zoomButton)?.isEnabled = true + } + } +} + +private func settingsWindowTitle(for language: AppLanguage) -> String { + String( + localized: "Settings", + bundle: .main, + locale: language.locale + ) +} + private extension AppThemePreference { var preferredColorScheme: ColorScheme? { switch self { diff --git a/Sources/Lithe/Platform/MacOS/UI/MacBundledFontRegistry.swift b/Sources/Lithe/Platform/MacOS/UI/MacBundledFontRegistry.swift new file mode 100644 index 000000000..749114018 --- /dev/null +++ b/Sources/Lithe/Platform/MacOS/UI/MacBundledFontRegistry.swift @@ -0,0 +1,42 @@ +import AppKit +import CoreText +import Foundation + +enum MacBundledFontRegistry { + private static let fonts = [ + (resource: "JetBrainsMono-Regular", postScriptName: "JetBrainsMono-Regular"), + (resource: "JetBrainsMono-Italic", postScriptName: "JetBrainsMono-Italic"), + (resource: "JetBrainsMono-Bold", postScriptName: "JetBrainsMono-Bold"), + (resource: "JetBrainsMono-BoldItalic", postScriptName: "JetBrainsMono-BoldItalic") + ] + + static func registerFonts(bundle: Bundle = .main) { + guard bundle.url(forResource: "JetBrainsMono-Regular", withExtension: "ttf", subdirectory: "Fonts") != nil else { + return + } + + for font in fonts where NSFont(name: font.postScriptName, size: 13) == nil { + guard let url = bundle.url( + forResource: font.resource, + withExtension: "ttf", + subdirectory: "Fonts" + ) else { + report("Missing bundled font: \(font.resource).ttf") + continue + } + + var registrationError: Unmanaged? + guard CTFontManagerRegisterFontsForURL(url as CFURL, .process, ®istrationError) else { + let detail = registrationError?.takeRetainedValue().localizedDescription + ?? "Unknown CoreText error" + report("Could not register \(font.resource).ttf: \(detail)") + continue + } + } + } + + private static func report(_ message: String) { + guard let data = ("Lithe font registration: \(message)\n").data(using: .utf8) else { return } + FileHandle.standardError.write(data) + } +} diff --git a/Sources/Lithe/Theme/LitheTheme.swift b/Sources/Lithe/Theme/LitheTheme.swift index c69d34aaf..559c10769 100644 --- a/Sources/Lithe/Theme/LitheTheme.swift +++ b/Sources/Lithe/Theme/LitheTheme.swift @@ -68,6 +68,7 @@ enum LitheTheme { let secondaryText: RGBA let tertiaryText: RGBA let accent: RGBA + let runAction: RGBA let success: RGBA let warning: RGBA let error: RGBA @@ -157,6 +158,7 @@ enum LitheTheme { secondaryText: ink.withAlpha(isDark ? 0.62 : 0.60), tertiaryText: ink.withAlpha(isDark ? 0.43 : 0.42), accent: accent, + runAction: isDark ? RGBA(0x59a869) : RGBA(0x2e7d32), success: diffAdded, warning: isDark ? RGBA(0xe6a23c) : RGBA(0xa96500), error: diffRemoved, @@ -201,6 +203,7 @@ enum LitheTheme { secondaryText: adaptive(light: (0, 0, 0, 0.55), dark: (1, 1, 1, 0.50)), tertiaryText: adaptive(light: (0, 0, 0, 0.38), dark: (1, 1, 1, 0.34)), accent: adaptive(light: (0.180, 0.425, 0.790, 1), dark: (0.31, 0.58, 0.98, 1)), + runAction: adaptive(light: (0.180, 0.490, 0.196, 1), dark: (0.349, 0.659, 0.412, 1)), success: adaptive(light: (0.105, 0.545, 0.235, 1), dark: (0.28, 0.72, 0.39, 1)), warning: adaptive(light: (0.690, 0.410, 0.035, 1), dark: (0.91, 0.63, 0.20, 1)), error: adaptive(light: (0.780, 0.175, 0.175, 1), dark: (0.92, 0.33, 0.33, 1)), @@ -252,6 +255,7 @@ enum LitheTheme { // MARK: - 背景层次 static var window: Color { adaptive(\.window) } static var titlebar: Color { adaptive(\.titlebar) } + static var settingsSurface: Color { editor } static var toolHeader: Color { adaptive(\.toolHeader) } static var sidebar: Color { adaptive(\.sidebar) } static var editor: Color { adaptive(\.editor) } @@ -291,6 +295,7 @@ enum LitheTheme { // MARK: - 语义色 static var accent: Color { adaptive(\.accent) } + static var runAction: Color { adaptive(\.runAction) } static var success: Color { adaptive(\.success) } static var warning: Color { adaptive(\.warning) } static var error: Color { adaptive(\.error) } @@ -316,7 +321,22 @@ enum LitheTheme { static var uiFont: Font { uiFont(size: 14) } static var smallFont: Font { uiFont(size: 12) } - static let codeFont = Font.system(size: 13, design: .monospaced) + static let codeFont = Font.custom("JetBrainsMono-Regular", size: 13) + static let editorLineHeightMultiple: CGFloat = 1.2 + + static func editorFont(size: CGFloat, weight: NSFont.Weight = .regular) -> NSFont { + let postScriptName = weight.rawValue >= NSFont.Weight.semibold.rawValue + ? "JetBrainsMono-Bold" + : "JetBrainsMono-Regular" + return NSFont(name: postScriptName, size: size) + ?? .monospacedSystemFont(ofSize: size, weight: weight) + } + + static var editorParagraphStyle: NSParagraphStyle { + let style = NSMutableParagraphStyle() + style.lineHeightMultiple = editorLineHeightMultiple + return style + } private static func uiFont(size: CGFloat) -> Font { if activeTheme != .lithe, NSFont(name: "Inter", size: size) != nil { diff --git a/Sources/Lithe/Views/CodeEditorView.swift b/Sources/Lithe/Views/CodeEditorView.swift index 8564442da..ce2bd21b4 100644 --- a/Sources/Lithe/Views/CodeEditorView.swift +++ b/Sources/Lithe/Views/CodeEditorView.swift @@ -115,7 +115,8 @@ struct CodeEditorView: NSViewRepresentable { textView.textContainer?.containerSize = NSSize(width: scrollView.contentSize.width, height: CGFloat.greatestFiniteMagnitude) textView.textContainer?.widthTracksTextView = true textView.textContainerInset = NSSize(width: 12, height: 10) - textView.font = .monospacedSystemFont(ofSize: settings.editorFontSize, weight: .regular) + textView.font = LitheTheme.editorFont(size: settings.editorFontSize) + textView.defaultParagraphStyle = LitheTheme.editorParagraphStyle textView.indentationWidth = settings.tabWidth textView.applyAppearance(palette) textView.isEditable = !document.isReadOnly @@ -222,8 +223,10 @@ struct CodeEditorView: NSViewRepresentable { context.coordinator.isDarkAppearance = palette.isDark context.coordinator.colorTheme = settings.colorTheme context.coordinator.requestInitialFocusIfNeeded() - textView.font = .monospacedSystemFont(ofSize: settings.editorFontSize, weight: .regular) + textView.font = LitheTheme.editorFont(size: settings.editorFontSize) + textView.defaultParagraphStyle = LitheTheme.editorParagraphStyle if let codeTextView = textView as? CodeTextView { + codeTextView.applyAppearance(palette) codeTextView.indentationWidth = settings.tabWidth codeTextView.languageServerFeatures = model.languageToolingSessions.features(for: document.url) codeTextView.isLanguageNavigationEnabled = !codeTextView.languageServerFeatures.intersection([ @@ -489,9 +492,10 @@ struct CodeEditorView: NSViewRepresentable { } func highlight() { - guard let textStorage = textView?.textStorage else { return } + guard let textView, let textStorage = textView.textStorage else { return } SyntaxHighlighter.apply( to: textStorage, + font: textView.font ?? LitheTheme.editorFont(size: 13), fileExtension: fileExtension, isDark: isDarkAppearance ) @@ -2632,14 +2636,16 @@ private final class ClosureButton: NSButton { @MainActor private enum SyntaxHighlighter { - static func apply(to storage: NSTextStorage, fileExtension: String, isDark: Bool) { + static func apply(to storage: NSTextStorage, font: NSFont, fileExtension: String, isDark: Bool) { let fullRange = NSRange(location: 0, length: storage.length) guard fullRange.length > 0 else { return } let palette = CodeEditorPalette(isDark: isDark, theme: LitheTheme.activeTheme) storage.beginEditing() storage.setAttributes([ - .font: NSFont.monospacedSystemFont(ofSize: 13, weight: .regular), + .font: font, + .paragraphStyle: LitheTheme.editorParagraphStyle, + .ligature: 0, .foregroundColor: palette.text ], range: fullRange) diff --git a/Sources/Lithe/Views/Components/LitheSettingsControls.swift b/Sources/Lithe/Views/Components/LitheSettingsControls.swift new file mode 100644 index 000000000..04d7b13a5 --- /dev/null +++ b/Sources/Lithe/Views/Components/LitheSettingsControls.swift @@ -0,0 +1,300 @@ +import SwiftUI + +struct LitheSettingsSelect: View { + @Binding private var selection: Value + private let options: [Value] + private let width: CGFloat + private let accessibilityLabel: String + private let title: (Value) -> String + @State private var isPresented = false + + init( + selection: Binding, + options: [Value], + width: CGFloat, + accessibilityLabel: String, + title: @escaping (Value) -> String + ) { + _selection = selection + self.options = options + self.width = width + self.accessibilityLabel = accessibilityLabel + self.title = title + } + + var body: some View { + Button { + isPresented.toggle() + } label: { + HStack(spacing: 8) { + Text(LocalizedStringKey(title(selection))) + .font(.system(size: 12.5)) + .foregroundStyle(LitheTheme.primaryText) + .lineLimit(1) + + Spacer(minLength: 8) + + Image(systemName: "chevron.down") + .font(.system(size: 9, weight: .semibold)) + .foregroundStyle(LitheTheme.secondaryText) + .rotationEffect(.degrees(isPresented ? 180 : 0)) + } + .padding(.horizontal, 9) + .frame(width: width, height: 30, alignment: .leading) + .background( + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .fill(LitheTheme.inputBackground) + ) + .overlay { + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(isPresented ? LitheTheme.inputFocusBorder : LitheTheme.inputBorder, lineWidth: 1) + } + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .lithePointer() + .accessibilityLabel(Text(LocalizedStringKey(accessibilityLabel))) + .popover(isPresented: $isPresented, arrowEdge: .bottom) { + VStack(spacing: 2) { + ForEach(options, id: \.self) { option in + Button { + selection = option + isPresented = false + } label: { + HStack(spacing: 8) { + Image(systemName: "checkmark") + .font(.system(size: 10, weight: .semibold)) + .foregroundStyle(LitheTheme.accent) + .frame(width: 14) + .opacity(selection == option ? 1 : 0) + + Text(LocalizedStringKey(title(option))) + .font(.system(size: 12.5)) + .foregroundStyle(LitheTheme.primaryText) + .lineLimit(1) + + Spacer(minLength: 8) + } + .padding(.horizontal, 8) + .frame(maxWidth: .infinity, minHeight: 28, alignment: .leading) + .litheRowHover( + isActive: selection == option, + activeBackground: LitheTheme.subtleSelection + ) + .contentShape(Rectangle()) + } + .buttonStyle(LitheTreeRowButtonStyle()) + .lithePointer() + } + } + .padding(5) + .frame(width: width) + .lithePopupChrome(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + } + } +} + +struct LitheSettingsSegmentedControl: View { + @Binding private var selection: Value + private let options: [Value] + private let width: CGFloat + private let title: (Value) -> String + + init( + selection: Binding, + options: [Value], + width: CGFloat, + title: @escaping (Value) -> String + ) { + _selection = selection + self.options = options + self.width = width + self.title = title + } + + var body: some View { + HStack(spacing: 2) { + ForEach(options, id: \.self) { option in + Button { + selection = option + } label: { + Text(LocalizedStringKey(title(option))) + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(selection == option ? Color.white : LitheTheme.secondaryText) + .frame(maxWidth: .infinity, minHeight: 26) + .contentShape(Rectangle()) + .litheRowHover( + isActive: selection == option, + cornerRadius: LitheTheme.Metrics.cornerRadius, + activeBackground: LitheTheme.selection + ) + } + .buttonStyle(LitheTreeRowButtonStyle()) + .lithePointer() + } + } + .padding(2) + .frame(width: width, height: 30) + .background( + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .fill(LitheTheme.inputBackground) + ) + .overlay { + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(LitheTheme.inputBorder, lineWidth: 1) + } + } +} + +struct LitheSettingsCheckbox: View { + @Binding var isOn: Bool + private let title: LocalizedStringKey? + private let accessibilityLabel: LocalizedStringKey + + init(isOn: Binding, title: LocalizedStringKey) { + _isOn = isOn + self.title = title + accessibilityLabel = title + } + + init(isOn: Binding, accessibilityLabel: LocalizedStringKey) { + _isOn = isOn + title = nil + self.accessibilityLabel = accessibilityLabel + } + + var body: some View { + Button { + isOn.toggle() + } label: { + HStack(spacing: 8) { + ZStack { + RoundedRectangle(cornerRadius: 4) + .fill(isOn ? LitheTheme.accent : LitheTheme.inputBackground) + RoundedRectangle(cornerRadius: 4) + .stroke(isOn ? LitheTheme.accent : LitheTheme.inputBorder, lineWidth: 1) + Image(systemName: "checkmark") + .font(.system(size: 9, weight: .bold)) + .foregroundStyle(Color.white) + .opacity(isOn ? 1 : 0) + } + .frame(width: 16, height: 16) + + if let title { + Text(title) + .font(.system(size: 12.5)) + .foregroundStyle(LitheTheme.primaryText) + } + } + .contentShape(Rectangle()) + } + .buttonStyle(LitheTreeRowButtonStyle()) + .lithePointer() + .accessibilityLabel(Text(accessibilityLabel)) + } +} + +struct LitheSettingsStepper: View where Value: Strideable & Comparable, Value.Stride: SignedNumeric & Comparable { + @Binding private var value: Value + private let range: ClosedRange + private let step: Value.Stride + private let width: CGFloat + private let accessibilityLabel: LocalizedStringKey + private let title: (Value) -> String + + init( + value: Binding, + in range: ClosedRange, + step: Value.Stride, + width: CGFloat, + accessibilityLabel: LocalizedStringKey, + title: @escaping (Value) -> String + ) { + _value = value + self.range = range + self.step = step + self.width = width + self.accessibilityLabel = accessibilityLabel + self.title = title + } + + var body: some View { + HStack(spacing: 0) { + Text(title(value)) + .font(.system(size: 12.5)) + .foregroundStyle(LitheTheme.primaryText) + .monospacedDigit() + .frame(maxWidth: .infinity, alignment: .trailing) + .padding(.horizontal, 8) + + Rectangle() + .fill(LitheTheme.inputBorder) + .frame(width: 1, height: 20) + + stepButton(systemImage: "minus", isDisabled: value <= range.lowerBound) { + value = max(range.lowerBound, value.advanced(by: -step)) + } + + stepButton(systemImage: "plus", isDisabled: value >= range.upperBound) { + value = min(range.upperBound, value.advanced(by: step)) + } + } + .frame(width: width, height: 30) + .background( + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .fill(LitheTheme.inputBackground) + ) + .overlay { + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(LitheTheme.inputBorder, lineWidth: 1) + } + .clipShape(RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius)) + .accessibilityElement(children: .contain) + .accessibilityLabel(Text(accessibilityLabel)) + } + + private func stepButton( + systemImage: String, + isDisabled: Bool, + action: @escaping () -> Void + ) -> some View { + Button(action: action) { + Image(systemName: systemImage) + .font(.system(size: 9, weight: .semibold)) + .foregroundStyle(isDisabled ? LitheTheme.tertiaryText : LitheTheme.secondaryText) + .frame(width: 26, height: 28) + .contentShape(Rectangle()) + .litheRowHover(cornerRadius: 0) + } + .buttonStyle(LitheTreeRowButtonStyle()) + .disabled(isDisabled) + .lithePointer() + } +} + +private struct LitheSettingsTextFieldModifier: ViewModifier { + @Environment(\.isEnabled) private var isEnabled + + func body(content: Content) -> some View { + content + .textFieldStyle(.plain) + .font(.system(size: 12.5)) + .padding(.horizontal, 9) + .frame(height: 30) + .background( + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .fill(LitheTheme.inputBackground) + ) + .overlay { + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(LitheTheme.inputBorder, lineWidth: 1) + } + .opacity(isEnabled ? 1 : 0.55) + } +} + +extension View { + func litheSettingsTextField() -> some View { + modifier(LitheSettingsTextFieldModifier()) + } +} diff --git a/Sources/Lithe/Views/EditorAreaView.swift b/Sources/Lithe/Views/EditorAreaView.swift index 15e4fcc25..5d99d1500 100644 --- a/Sources/Lithe/Views/EditorAreaView.swift +++ b/Sources/Lithe/Views/EditorAreaView.swift @@ -288,8 +288,12 @@ struct EditorAreaView: View { } label: { Image(systemName: "xmark") .font(.system(size: 9, weight: .semibold)) + .frame(width: 20, height: 20) + .contentShape(Rectangle()) + .litheRowHover(cornerRadius: 10) } - .litheIconButton() + .buttonStyle(LitheTreeRowButtonStyle()) + .lithePointer() .foregroundStyle(LitheTheme.secondaryText) .opacity(model.activeDocumentID == document.id || hoveredTabID == document.id ? 1 : 0) .allowsHitTesting(model.activeDocumentID == document.id || hoveredTabID == document.id) diff --git a/Sources/Lithe/Views/LSPControlCenterView.swift b/Sources/Lithe/Views/LSPControlCenterView.swift index 4068c64d4..d3a929a0d 100644 --- a/Sources/Lithe/Views/LSPControlCenterView.swift +++ b/Sources/Lithe/Views/LSPControlCenterView.swift @@ -27,9 +27,9 @@ struct LSPControlCenterView: View { .padding(20) .frame(maxWidth: .infinity, alignment: .leading) } - .background(LitheTheme.editor) + .background(LitheTheme.settingsSurface) } - .background(LitheTheme.editor) + .background(LitheTheme.settingsSurface) } private var header: some View { @@ -41,7 +41,7 @@ struct LSPControlCenterView: View { } .padding(.horizontal, 16) .frame(height: 42) - .background(LitheTheme.toolHeader) + .background(LitheTheme.settingsSurface) } private var projectSummary: some View { @@ -93,16 +93,15 @@ struct LSPControlCenterView: View { ? "配置 \(descriptor.displayName) 语言服务器" : "Configure \(descriptor.displayName) language server")) } - Toggle("", isOn: Binding( - get: { isEnabled }, - set: { model.setLanguageServerEnabled($0, providerID: descriptor.id) } - )) - .labelsHidden() - .toggleStyle(.switch) - .lithePointer() - .accessibilityLabel(Text(usesChinese - ? "启用 \(descriptor.displayName) 语言服务器" - : "Enable \(descriptor.displayName) language server")) + LitheSettingsCheckbox( + isOn: Binding( + get: { isEnabled }, + set: { model.setLanguageServerEnabled($0, providerID: descriptor.id) } + ), + accessibilityLabel: LocalizedStringKey(usesChinese + ? "启用 \(descriptor.displayName) 语言服务器" + : "Enable \(descriptor.displayName) language server") + ) } if configuredProviderID == descriptor.id, descriptor.id == "java" { @@ -157,10 +156,13 @@ struct LSPControlCenterView: View { } .padding(.horizontal, 9) .frame(maxWidth: .infinity, minHeight: 34, alignment: .leading) - .background(RoundedRectangle(cornerRadius: 6).fill(LitheTheme.editor)) + .background( + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .fill(LitheTheme.inputBackground) + ) .overlay { - RoundedRectangle(cornerRadius: 6) - .stroke(LitheTheme.panelBorder, lineWidth: 1) + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(LitheTheme.inputBorder, lineWidth: 1) } } .menuStyle(.borderlessButton) @@ -176,12 +178,12 @@ struct LSPControlCenterView: View { } .padding(14) .background( - RoundedRectangle(cornerRadius: 7) - .fill(LitheTheme.sidebar) + RoundedRectangle(cornerRadius: LitheTheme.Metrics.cornerRadius) + .fill(LitheTheme.settingsSurface) ) .overlay { - RoundedRectangle(cornerRadius: 7) - .stroke(LitheTheme.panelBorder, lineWidth: 1) + RoundedRectangle(cornerRadius: LitheTheme.Metrics.cornerRadius) + .stroke(LitheTheme.divider, lineWidth: 1) } } diff --git a/Sources/Lithe/Views/RootView.swift b/Sources/Lithe/Views/RootView.swift index 68d35b7d4..edaa753cc 100644 --- a/Sources/Lithe/Views/RootView.swift +++ b/Sources/Lithe/Views/RootView.swift @@ -1,7 +1,12 @@ import AppKit import SwiftUI +enum LitheWindowID { + static let settings = "settings" +} + struct RootView: View { + @Environment(\.openWindow) private var openWindow @EnvironmentObject private var model: AppModel @EnvironmentObject private var projectSessions: ProjectSessionManager @EnvironmentObject private var updateChecker: UpdateChecker @@ -25,15 +30,13 @@ struct RootView: View { .background( WindowCloseGuard( projectSessions: projectSessions, - layout: windowLayout + layout: windowLayout, + title: windowTitle ) ) - .sheet(isPresented: $model.isSettingsPresented) { - SettingsView( - settings: model.settings, - initialCategory: model.requestedSettingsCategory - ) - .environmentObject(model) + .onReceive(model.$isSettingsPresented) { isPresented in + guard isPresented else { return } + openWindow(id: LitheWindowID.settings) } .sheet(isPresented: $model.isCloneRepositoryPresented) { CloneRepositoryView() @@ -140,11 +143,21 @@ struct RootView: View { private var windowLayout: LitheWindowLayout { projectSessions.activeModel.workspaceURL == nil ? .welcome : .workspace } + + private var windowTitle: String? { + guard windowLayout == .welcome else { return nil } + return String( + localized: "Welcome to Lithe", + bundle: .main, + locale: model.settings.language.locale + ) + } } private struct WindowCloseGuard: NSViewRepresentable { let projectSessions: ProjectSessionManager let layout: LitheWindowLayout + let title: String? func makeCoordinator() -> LitheWindowCoordinator { LitheWindowCoordinator(projectSessions: projectSessions) @@ -153,7 +166,7 @@ private struct WindowCloseGuard: NSViewRepresentable { func makeNSView(context: Context) -> NSView { let view = NSView(frame: .zero) DispatchQueue.main.async { - context.coordinator.attach(to: view.window, layout: layout) + context.coordinator.attach(to: view.window, layout: layout, title: title) } return view } @@ -161,7 +174,7 @@ private struct WindowCloseGuard: NSViewRepresentable { func updateNSView(_ view: NSView, context: Context) { context.coordinator.projectSessions = projectSessions DispatchQueue.main.async { - context.coordinator.attach(to: view.window, layout: layout) + context.coordinator.attach(to: view.window, layout: layout, title: title) } } } @@ -228,7 +241,7 @@ final class LitheWindowCoordinator: NSObject, NSWindowDelegate { self.projectSessions = projectSessions } - func attach(to window: NSWindow?, layout: LitheWindowLayout) { + func attach(to window: NSWindow?, layout: LitheWindowLayout, title: String? = nil) { guard let window else { return } if self.window !== window { self.window = window @@ -236,7 +249,7 @@ final class LitheWindowCoordinator: NSObject, NSWindowDelegate { self.layout = nil restoredWorkspaceFrame = nil } - apply(layout, to: window) + apply(layout, title: title, to: window) } func toggleWorkspaceZoom() { @@ -268,8 +281,16 @@ final class LitheWindowCoordinator: NSObject, NSWindowDelegate { return true } - private func apply(_ layout: LitheWindowLayout, to window: NSWindow) { + private func apply(_ layout: LitheWindowLayout, title: String?, to window: NSWindow) { window.contentMinSize = layout.minimumContentSize + if let title { + window.title = title + window.titlebarAppearsTransparent = true + window.titleVisibility = .visible + } else { + window.title = "" + window.titleVisibility = .hidden + } guard self.layout != layout else { return } let shouldAnimate = self.layout != nil && window.isVisible diff --git a/Sources/Lithe/Views/SettingsView.swift b/Sources/Lithe/Views/SettingsView.swift index a5bab4c39..33b83c890 100644 --- a/Sources/Lithe/Views/SettingsView.swift +++ b/Sources/Lithe/Views/SettingsView.swift @@ -8,23 +8,28 @@ struct SettingsView: View { @EnvironmentObject private var updateChecker: UpdateChecker @ObservedObject var settings: AppSettings @State private var selection: SettingsCategory + @State private var searchQuery = "" @State private var hiddenDirectoriesDraft = "" @State private var hiddenFilePatternsDraft = "" @State private var aiAPIKeyDraft = "" @State private var isFormatPickerPresented = false + let initialCategory: SettingsCategory + private let onDismiss: (() -> Void)? + private static let footerActionLabelWidth: CGFloat = 52 init( settings: AppSettings, - initialCategory: SettingsCategory = .general + initialCategory: SettingsCategory = .general, + onDismiss: (() -> Void)? = nil ) { self.settings = settings + self.initialCategory = initialCategory + self.onDismiss = onDismiss _selection = State(initialValue: initialCategory) } var body: some View { VStack(spacing: 0) { - header - Rectangle().fill(LitheTheme.divider).frame(height: 1) HStack(spacing: 0) { categories Rectangle().fill(LitheTheme.divider).frame(width: 1) @@ -33,8 +38,8 @@ struct SettingsView: View { Rectangle().fill(LitheTheme.divider).frame(height: 1) footer } - .frame(width: 820, height: 620) - .background(LitheTheme.window) + .frame(minWidth: 820, minHeight: 620) + .background(LitheTheme.settingsSurface) .onAppear { syncVisibilityDrafts() model.refreshAIConfigurations() @@ -43,73 +48,168 @@ struct SettingsView: View { .onChange(of: settings.hiddenDirectoryNames) { _ in syncVisibilityDrafts() } .onChange(of: settings.hiddenFilePatterns) { _ in syncVisibilityDrafts() } .onChange(of: settings.commitMessageAI.activeProviderID) { _ in syncAIProviderDraft() } - // A sheet has its own SwiftUI presentation hierarchy on macOS. Own - // the locale here so every Settings presentation updates immediately. + .onChange(of: initialCategory) { category in + searchQuery = "" + selection = category + } + .onChange(of: searchQuery) { _ in + guard !filteredCategories.contains(selection), + let firstMatch = filteredCategories.first else { return } + selection = firstMatch + } .environment(\.locale, settings.language.locale) - .id(settings.language) } - private var header: some View { - HStack(spacing: 9) { - LitheSystemIcon(systemImage: "gearshape.fill") - .foregroundStyle(LitheTheme.secondaryText) - Text("Settings") - .font(.system(size: 14, weight: .semibold)) - Spacer() - Button { dismiss() } label: { - Image(systemName: "xmark") - .font(.system(size: 11, weight: .semibold)) + private var categories: some View { + VStack(spacing: 0) { + settingsSearchField + .padding(12) + + Rectangle().fill(LitheTheme.divider).frame(height: 1) + + ScrollView { + VStack(spacing: 1) { + ForEach(filteredCategories) { category in + categoryButton(category) + } + + if filteredCategories.isEmpty { + VStack(spacing: 8) { + Image(systemName: "magnifyingglass") + .font(.system(size: 18, weight: .light)) + Text("No settings found") + .font(.system(size: 12)) + } + .foregroundStyle(LitheTheme.tertiaryText) + .frame(maxWidth: .infinity) + .padding(.top, 28) + } + } + .padding(8) } - .litheIconButton() - .help("Close Settings") } - .foregroundStyle(LitheTheme.primaryText) - .padding(.horizontal, 14) - .frame(height: 44) - .background(LitheTheme.toolHeader) + .frame(width: 244) + .frame(maxHeight: .infinity) + .background(LitheTheme.settingsSurface) } - private var categories: some View { - VStack(spacing: 3) { - ForEach(SettingsCategory.allCases) { category in + private var settingsSearchField: some View { + HStack(spacing: 7) { + Image(systemName: "magnifyingglass") + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(LitheTheme.tertiaryText) + + TextField("Search settings", text: $searchQuery) + .textFieldStyle(.plain) + .font(.system(size: 12.5)) + + if !searchQuery.isEmpty { Button { - selection = category + searchQuery = "" } label: { - HStack(spacing: 9) { - Image(systemName: category.icon).frame(width: 18) - Text(LocalizedStringKey(category.rawValue)) - Spacer() - } - .padding(.horizontal, 10) - .frame(maxWidth: .infinity, alignment: .leading) - .frame(height: 32) - .background(selection == category ? LitheTheme.selection : .clear) - .clipShape(RoundedRectangle(cornerRadius: 4)) - .contentShape(Rectangle()) + Image(systemName: "xmark.circle.fill") + .font(.system(size: 11)) + .foregroundStyle(LitheTheme.tertiaryText) } .buttonStyle(.plain) .lithePointer() - .foregroundStyle(selection == category ? Color.white : LitheTheme.primaryText) + .help("Clear search") + } + } + .padding(.horizontal, 9) + .frame(height: 28) + .background(LitheTheme.inputBackground) + .clipShape(RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius)) + .overlay { + RoundedRectangle(cornerRadius: LitheTheme.Metrics.controlCornerRadius) + .stroke(LitheTheme.inputBorder, lineWidth: 1) + } + } + + private func categoryButton(_ category: SettingsCategory) -> some View { + let isSelected = selection == category + return Button { + selection = category + } label: { + HStack(spacing: 10) { + Image(systemName: category.icon) + .font(.system(size: 12.5, weight: .medium)) + .frame(width: 18) + Text(LocalizedStringKey(category.rawValue)) + .font(.system(size: 12.5, weight: .regular)) + Spacer(minLength: 8) + } + .padding(.horizontal, 10) + .frame(maxWidth: .infinity, alignment: .leading) + .frame(height: LitheTheme.Metrics.treeRowHeight) + .background(isSelected ? LitheTheme.selection : .clear) + .clipShape(RoundedRectangle(cornerRadius: LitheTheme.Metrics.cornerRadius)) + .contentShape(Rectangle()) + } + .buttonStyle(LitheTreeRowButtonStyle()) + .foregroundStyle(isSelected ? Color.white : LitheTheme.primaryText) + } + + private var filteredCategories: [SettingsCategory] { + let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) + guard !query.isEmpty else { return SettingsCategory.allCases } + + return SettingsCategory.allCases.filter { category in + searchTerms(for: category).contains { term in + localizedSearchValue(term).localizedCaseInsensitiveContains(query) + || term.localizedCaseInsensitiveContains(query) } - Spacer() } - .font(.system(size: 12.5)) - .padding(8) - .frame(width: 190) - .background(LitheTheme.sidebar) + } + + private func searchTerms(for category: SettingsCategory) -> [String] { + switch category { + case .general: + ["General", "Appearance", "Color theme", "Appearance mode", "Language", "Projects", "Files", "Version control"] + case .editor: + ["Editor", "Display", "Editor tabs", "Font size", "Indentation", "Tab width"] + case .terminal: + ["Terminal", "Shell", "Default shell"] + case .lsp: + ["LSP", "Language server", "Java SDK", "JDK", "Maven"] + case .ai: + ["AI & Commit", "AI provider", "Model", "API key", "Commit message"] + case .updates: + ["Updates", "Application version", "Update status", "Check for Updates"] + } + } + + private func localizedSearchValue(_ key: String) -> String { + String( + localized: String.LocalizationValue(key), + bundle: .main, + locale: settings.language.locale + ) } @ViewBuilder private var content: some View { - if selection == .lsp { + if filteredCategories.isEmpty { + VStack(spacing: 10) { + Image(systemName: "magnifyingglass") + .font(.system(size: 28, weight: .light)) + Text("No settings found") + .font(.system(size: 15, weight: .medium)) + Text("Try a different search term.") + .font(LitheTheme.smallFont) + } + .foregroundStyle(LitheTheme.secondaryText) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } else if selection == .lsp { LSPControlCenterView() .frame(maxWidth: .infinity, maxHeight: .infinity) } else { ScrollView { - VStack(alignment: .leading, spacing: 20) { + VStack(alignment: .leading, spacing: 8) { Text(LocalizedStringKey(selection.rawValue)) - .font(.system(size: 20, weight: .semibold)) + .font(.system(size: 22, weight: .semibold)) .foregroundStyle(LitheTheme.primaryText) + .padding(.bottom, 8) switch selection { case .general: generalSettings @@ -120,7 +220,8 @@ struct SettingsView: View { case .updates: updatesSettings } } - .padding(24) + .padding(.horizontal, 28) + .padding(.vertical, 22) .frame(maxWidth: .infinity, alignment: .leading) } } @@ -130,27 +231,22 @@ struct SettingsView: View { VStack(alignment: .leading, spacing: 18) { group("Appearance") { row("Color theme") { - Picker("", selection: $settings.colorTheme) { - ForEach(AppColorTheme.allCases) { theme in - Text(LocalizedStringKey(theme.title)).tag(theme) - } - } - .labelsHidden() - .pickerStyle(.menu) - .frame(width: 180, alignment: .leading) - .lithePointer() + LitheSettingsSelect( + selection: $settings.colorTheme, + options: AppColorTheme.allCases, + width: 180, + accessibilityLabel: "Color theme", + title: \AppColorTheme.title + ) } row("Appearance mode") { - Picker("", selection: $settings.themePreference) { - ForEach(AppThemePreference.allCases) { preference in - Text(LocalizedStringKey(preference.title)).tag(preference) - } - } - .labelsHidden() - .pickerStyle(.segmented) - .frame(width: 260) - .lithePointer() + LitheSettingsSegmentedControl( + selection: $settings.themePreference, + options: AppThemePreference.allCases, + width: 260, + title: \AppThemePreference.title + ) } Text("Choose a color theme and whether Lithe follows the system appearance.") @@ -159,13 +255,15 @@ struct SettingsView: View { } group("Language") { - Picker("Language", selection: $settings.language) { - ForEach(AppLanguage.allCases) { language in - Text(LocalizedStringKey(language.title)).tag(language) - } + row("Language") { + LitheSettingsSelect( + selection: $settings.language, + options: AppLanguage.allCases, + width: 180, + accessibilityLabel: "Language", + title: \AppLanguage.title + ) } - .frame(maxWidth: 220, alignment: .leading) - .lithePointer() Text("The interface language changes immediately. English is the default.") .font(LitheTheme.smallFont) @@ -173,13 +271,15 @@ struct SettingsView: View { } group("Projects") { - Picker("Open projects in", selection: $settings.projectOpenBehavior) { - ForEach(ProjectOpenBehavior.allCases) { behavior in - Text(LocalizedStringKey(behavior.title)).tag(behavior) - } + row("Open projects in") { + LitheSettingsSelect( + selection: $settings.projectOpenBehavior, + options: ProjectOpenBehavior.allCases, + width: 180, + accessibilityLabel: "Open projects in", + title: \ProjectOpenBehavior.title + ) } - .frame(maxWidth: 220, alignment: .leading) - .lithePointer() Text("Choose whether opening another project asks first, stays in this window, or creates a new window.") .font(LitheTheme.smallFont) @@ -187,30 +287,33 @@ struct SettingsView: View { } group("Files") { - Toggle("Save changed files automatically", isOn: $settings.autoSave) - .lithePointer() + LitheSettingsCheckbox( + isOn: $settings.autoSave, + title: "Save changed files automatically" + ) if settings.autoSave { row("Save after") { - Picker("", selection: $settings.autoSaveDelay) { - Text("0.5 seconds").tag(0.5) - Text("1.5 seconds").tag(1.5) - Text("3 seconds").tag(3.0) - } - .labelsHidden() - .frame(width: 150) - .lithePointer() + LitheSettingsSelect( + selection: $settings.autoSaveDelay, + options: [0.5, 1.5, 3.0], + width: 150, + accessibilityLabel: "Save after", + title: autoSaveDelayTitle + ) } } } group("Git") { - Picker("Save local changes with", selection: $settings.gitSaveChangesPolicy) { - ForEach(GitSaveChangesPolicy.allCases) { policy in - Text(LocalizedStringKey(policy.title)).tag(policy) - } + row("Save local changes with") { + LitheSettingsSelect( + selection: $settings.gitSaveChangesPolicy, + options: GitSaveChangesPolicy.allCases, + width: 180, + accessibilityLabel: "Save local changes with", + title: \GitSaveChangesPolicy.title + ) } - .frame(maxWidth: 260, alignment: .leading) - .lithePointer() Text(LocalizedStringKey(settings.gitSaveChangesPolicy.description)) .font(LitheTheme.smallFont) @@ -252,50 +355,58 @@ struct SettingsView: View { HStack { Spacer() Button("Apply") { applyVisibilityDrafts() } - .buttonStyle(.borderedProminent) - .lithePointer() - .tint(LitheTheme.accent) + .buttonStyle(LithePrimaryButtonStyle()) } } } } + private func autoSaveDelayTitle(_ delay: Double) -> String { + switch delay { + case 0.5: "0.5 seconds" + case 1.5: "1.5 seconds" + default: "3 seconds" + } + } + private var editorSettings: some View { VStack(alignment: .leading, spacing: 18) { group("Display") { row("Font size") { - Stepper(value: $settings.editorFontSize, in: 10...22, step: 1) { - Text("\(Int(settings.editorFontSize)) pt") - .monospacedDigit() - .frame(width: 42, alignment: .trailing) - } - .lithePointer() + LitheSettingsStepper( + value: $settings.editorFontSize, + in: 10...22, + step: 1, + width: 126, + accessibilityLabel: "Font size", + title: { "\(Int($0)) pt" } + ) } - Toggle("Show usages and Git author", isOn: $settings.showCodeVision) - .lithePointer() + LitheSettingsCheckbox( + isOn: $settings.showCodeVision, + title: "Show usages and Git author" + ) } group("Editor tabs") { row("Layout") { - Picker("", selection: $settings.editorTabLayoutMode) { - ForEach(EditorTabLayoutMode.allCases) { mode in - Text(LocalizedStringKey(mode.title)).tag(mode) - } - } - .labelsHidden() - .frame(width: 180) - .lithePointer() + LitheSettingsSelect( + selection: $settings.editorTabLayoutMode, + options: EditorTabLayoutMode.allCases, + width: 180, + accessibilityLabel: "Layout", + title: \EditorTabLayoutMode.title + ) } } group("Indentation") { row("Tab width") { - Picker("", selection: $settings.tabWidth) { - Text("2 spaces").tag(2) - Text("4 spaces").tag(4) - Text("8 spaces").tag(8) - } - .labelsHidden() - .frame(width: 130) - .lithePointer() + LitheSettingsSelect( + selection: $settings.tabWidth, + options: [2, 4, 8], + width: 130, + accessibilityLabel: "Tab width", + title: { "\($0) spaces" } + ) } } } @@ -304,14 +415,13 @@ struct SettingsView: View { private var terminalSettings: some View { group("Shell") { row("Default shell") { - Picker("", selection: $settings.terminalShell) { - ForEach(TerminalShell.allCases) { shell in - Text(LocalizedStringKey(shell.title)).tag(shell) - } - } - .labelsHidden() - .frame(width: 180) - .lithePointer() + LitheSettingsSelect( + selection: $settings.terminalShell, + options: TerminalShell.allCases, + width: 180, + accessibilityLabel: "Default shell", + title: \TerminalShell.title + ) .onChange(of: settings.terminalShell) { _ in guard model.activeTerminalSession?.isRunning == true else { return } model.restartActiveTerminal(using: model.activeTerminalShellPath) @@ -330,57 +440,58 @@ struct SettingsView: View { Text("No AI provider is configured yet.") .foregroundStyle(LitheTheme.secondaryText) } else { - Picker("Profile", selection: Binding( - get: { settings.commitMessageAI.activeProviderID ?? settings.commitMessageAI.providers[0].id }, - set: { settings.selectCommitMessageProvider($0) } - )) { - ForEach(settings.commitMessageAI.providers) { provider in - Text(provider.name.isEmpty ? "Unnamed provider" : provider.name) - .tag(provider.id) - } + row("Profile") { + LitheSettingsSelect( + selection: Binding( + get: { settings.commitMessageAI.activeProviderID ?? settings.commitMessageAI.providers[0].id }, + set: { settings.selectCommitMessageProvider($0) } + ), + options: settings.commitMessageAI.providers.map(\.id), + width: 240, + accessibilityLabel: "Profile", + title: providerTitle + ) } - .frame(maxWidth: 300, alignment: .leading) - .lithePointer() HStack(spacing: 8) { Button("Add Provider") { settings.addCommitMessageProvider() syncAIProviderDraft() } - .buttonStyle(.bordered) - .lithePointer() + .buttonStyle(LitheSecondaryButtonStyle()) Button("Remove") { settings.removeActiveCommitMessageProvider() syncAIProviderDraft() } - .buttonStyle(.bordered) + .buttonStyle(LitheSecondaryButtonStyle()) .disabled(settings.activeCommitMessageProvider == nil) - .lithePointer() } } if settings.activeCommitMessageProvider != nil { TextField("Provider name", text: activeProviderTextBinding(\.name)) - .textFieldStyle(.roundedBorder) + .litheSettingsTextField() + .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) + row("API protocol") { + LitheSettingsSelect( + selection: activeProviderProtocolBinding(), + options: CommitMessageAPIProtocol.allCases, + width: 240, + accessibilityLabel: "API protocol", + title: \CommitMessageAPIProtocol.title + ) .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) - Picker("API protocol", selection: activeProviderProtocolBinding()) { - ForEach(CommitMessageAPIProtocol.allCases) { apiProtocol in - Text(LocalizedStringKey(apiProtocol.title)).tag(apiProtocol) - } } - .frame(maxWidth: 300, alignment: .leading) - .lithePointer() - .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) TextField("API URL", text: activeProviderTextBinding(\.endpoint)) - .textFieldStyle(.roundedBorder) + .litheSettingsTextField() .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) if settings.activeCommitMessageProvider?.usesInsecureHTTP == true { - Toggle( - "Allow insecure HTTP", - isOn: activeProviderBoolBinding(\.allowsInsecureHTTP) + LitheSettingsCheckbox( + isOn: activeProviderBoolBinding(\.allowsInsecureHTTP), + title: "Allow insecure HTTP" ) - .lithePointer() + .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) Label( settings.activeCommitMessageProvider?.allowsInsecureHTTP == true ? "HTTP sends the API credential without encryption. Use only a trusted endpoint." @@ -391,23 +502,24 @@ struct SettingsView: View { .foregroundStyle(LitheTheme.warning) } TextField("Model", text: activeProviderTextBinding(\.model)) - .textFieldStyle(.roundedBorder) + .litheSettingsTextField() .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) HStack(spacing: 8) { SecureField("API key or token", text: $aiAPIKeyDraft) - .textFieldStyle(.roundedBorder) + .litheSettingsTextField() .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) Button("Save Key") { model.saveActiveCommitMessageAPIKey(aiAPIKeyDraft) } - .buttonStyle(.bordered) - .lithePointer() + .buttonStyle(LitheSecondaryButtonStyle()) .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) } - Toggle("Provider requires an API key", isOn: activeProviderBoolBinding(\.requiresAPIKey)) - .lithePointer() + LitheSettingsCheckbox( + isOn: activeProviderBoolBinding(\.requiresAPIKey), + title: "Provider requires an API key" + ) .disabled(model.activeCommitMessageCredentialIsConfigurationManaged) if model.activeCommitMessageCredentialIsConfigurationManaged, @@ -445,9 +557,7 @@ struct SettingsView: View { syncAIProviderDraft() } } - .buttonStyle(.borderedProminent) - .tint(LitheTheme.accent) - .lithePointer() + .buttonStyle(LithePrimaryButtonStyle()) } .padding(10) .background(LitheTheme.inputBackground) @@ -461,8 +571,7 @@ struct SettingsView: View { } label: { Label("Reload AI configurations", systemImage: "arrow.clockwise") } - .buttonStyle(.bordered) - .lithePointer() + .buttonStyle(LitheSecondaryButtonStyle()) } } } else { @@ -475,8 +584,7 @@ struct SettingsView: View { } label: { Label("Reload AI configurations", systemImage: "arrow.clockwise") } - .buttonStyle(.bordered) - .lithePointer() + .buttonStyle(LitheSecondaryButtonStyle()) } } @@ -488,41 +596,53 @@ struct SettingsView: View { } group("Commit message generation") { - Picker("Reasoning effort", selection: $settings.commitMessageAI.reasoningEffort) { - ForEach(CommitMessageReasoningEffort.allCases) { effort in - Text(LocalizedStringKey(effort.title)).tag(effort) - } + row("Reasoning effort") { + LitheSettingsSelect( + selection: $settings.commitMessageAI.reasoningEffort, + options: CommitMessageReasoningEffort.allCases, + width: 230, + accessibilityLabel: "Reasoning effort", + title: \CommitMessageReasoningEffort.title + ) } - .frame(maxWidth: 230, alignment: .leading) - .lithePointer() - Picker("Output language", selection: $settings.commitMessageAI.language) { - ForEach(CommitMessageLanguage.allCases) { language in - Text(LocalizedStringKey(language.title)).tag(language) - } + row("Output language") { + LitheSettingsSelect( + selection: $settings.commitMessageAI.language, + options: CommitMessageLanguage.allCases, + width: 230, + accessibilityLabel: "Output language", + title: \CommitMessageLanguage.title + ) } - .frame(maxWidth: 230, alignment: .leading) - .lithePointer() formatPicker - Toggle("Include a short body when useful", isOn: $settings.commitMessageAI.includeBody) - .lithePointer() + LitheSettingsCheckbox( + isOn: $settings.commitMessageAI.includeBody, + title: "Include a short body when useful" + ) row("Subject maximum length") { - Stepper(value: $settings.commitMessageAI.subjectMaximumLength, in: 40...120, step: 4) { - Text("\(settings.commitMessageAI.subjectMaximumLength) ") + Text("chars") - .monospacedDigit() - } - .lithePointer() + LitheSettingsStepper( + value: $settings.commitMessageAI.subjectMaximumLength, + in: 40...120, + step: 4, + width: 146, + accessibilityLabel: "Subject maximum length", + title: { "\($0) chars" } + ) } row("Diff character limit") { - Stepper(value: $settings.commitMessageAI.maximumDiffCharacters, in: 8_000...120_000, step: 4_000) { - Text("\(settings.commitMessageAI.maximumDiffCharacters)") - .monospacedDigit() - } - .lithePointer() + LitheSettingsStepper( + value: $settings.commitMessageAI.maximumDiffCharacters, + in: 8_000...120_000, + step: 4_000, + width: 146, + accessibilityLabel: "Diff character limit", + title: { "\($0)" } + ) } if settings.commitMessageAI.format == .custom { @@ -783,10 +903,8 @@ struct SettingsView: View { systemImage: "arrow.clockwise" ) } - .buttonStyle(.borderedProminent) - .tint(LitheTheme.accent) + .buttonStyle(LithePrimaryButtonStyle()) .disabled(updateChecker.isBusy) - .lithePointer() if case .available(let version, _) = updateChecker.status { Button { @@ -794,9 +912,8 @@ struct SettingsView: View { } label: { Label("Update \(version)", systemImage: "arrow.down.circle.fill") } - .buttonStyle(.bordered) + .buttonStyle(LitheSecondaryButtonStyle()) .disabled(updateChecker.isBusy) - .lithePointer() } } } @@ -870,11 +987,11 @@ struct SettingsView: View { } .font(.system(size: 12.5)) .foregroundStyle(LitheTheme.primaryText) - .padding(16) + .padding(.vertical, 16) .frame(maxWidth: .infinity, alignment: .leading) - .background(LitheTheme.sidebar) - .clipShape(RoundedRectangle(cornerRadius: 6)) - .overlay { RoundedRectangle(cornerRadius: 6).stroke(LitheTheme.divider, lineWidth: 1) } + .overlay(alignment: .bottom) { + Rectangle().fill(LitheTheme.divider).frame(height: 1) + } } private func row(_ title: String, @ViewBuilder content: () -> Content) -> some View { @@ -890,6 +1007,13 @@ struct SettingsView: View { aiAPIKeyDraft = model.activeCommitMessageAPIKey } + private func providerTitle(_ id: UUID) -> String { + guard let provider = settings.commitMessageAI.providers.first(where: { $0.id == id }) else { + return "Unnamed provider" + } + return provider.name.isEmpty ? "Unnamed provider" : provider.name + } + private func reloadAIConfigurations() { model.refreshAIConfigurations() syncAIProviderDraft() @@ -936,17 +1060,26 @@ struct SettingsView: View { private var footer: some View { HStack { Button("Restore Defaults") { settings.restoreDefaults() } - .buttonStyle(.borderless) - .lithePointer() - .foregroundStyle(LitheTheme.secondaryText) + .buttonStyle(LitheSecondaryButtonStyle()) Spacer() - Button("Done") { dismiss() } - .keyboardShortcut(.defaultAction) - .lithePointer() + HStack(spacing: 10) { + Button { closeSettings() } label: { + Text("Cancel") + .frame(minWidth: Self.footerActionLabelWidth) + } + .buttonStyle(LitheSecondaryButtonStyle()) + .keyboardShortcut(.cancelAction) + Button { closeSettings() } label: { + Text("OK") + .frame(minWidth: Self.footerActionLabelWidth) + } + .buttonStyle(LithePrimaryButtonStyle()) + .keyboardShortcut(.defaultAction) + } } - .padding(.horizontal, 14) - .frame(height: 50) - .background(LitheTheme.toolHeader) + .padding(.horizontal, 16) + .frame(height: 52) + .background(LitheTheme.settingsSurface) } private func syncVisibilityDrafts() { @@ -964,4 +1097,12 @@ struct SettingsView: View { .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } .filter { !$0.isEmpty } } + + private func closeSettings() { + if let onDismiss { + onDismiss() + } else { + dismiss() + } + } } diff --git a/Sources/Lithe/Views/WelcomeView.swift b/Sources/Lithe/Views/WelcomeView.swift index 5816f06e7..1ea756daf 100644 --- a/Sources/Lithe/Views/WelcomeView.swift +++ b/Sources/Lithe/Views/WelcomeView.swift @@ -10,19 +10,10 @@ struct WelcomeView: View { @FocusState private var searchFocused: Bool var body: some View { - VStack(spacing: 0) { - Text("Welcome to Lithe") - .font(.system(size: 16, weight: .semibold)) - .foregroundStyle(LitheTheme.primaryText) - .frame(maxWidth: .infinity) - .frame(height: 48) - .background(LitheTheme.window) - - HStack(spacing: 0) { - welcomeSidebar - Rectangle().fill(LitheTheme.divider).frame(width: 1) - projectsContent - } + HStack(spacing: 0) { + welcomeSidebar + Rectangle().fill(LitheTheme.divider.opacity(0.55)).frame(width: 1) + projectsContent } .background(LitheTheme.window) .background(WelcomeInitialFocusReset()) @@ -84,7 +75,10 @@ struct WelcomeView: View { .padding(.bottom, 14) } .frame(width: 240) - .background(LitheTheme.sidebar) + .background( + LitheTheme.sidebar + .ignoresSafeArea(.container, edges: .top) + ) } @ViewBuilder diff --git a/Sources/Lithe/Views/WorkbenchView.swift b/Sources/Lithe/Views/WorkbenchView.swift index 473bd922e..85484c320 100644 --- a/Sources/Lithe/Views/WorkbenchView.swift +++ b/Sources/Lithe/Views/WorkbenchView.swift @@ -360,7 +360,7 @@ struct WorkbenchView: View { isProjectSwitcherPresented.toggle() } label: { HStack(spacing: 8) { - LitheLogo(size: 28) + LitheLogo(size: 24) Text(model.projectName) .font(.system(size: 13, weight: .semibold)) @@ -652,7 +652,7 @@ struct WorkbenchView: View { .font(.system(size: 12, weight: .medium)) .foregroundStyle(LitheTheme.primaryText) .padding(.horizontal, 8) - .frame(width: 230, height: 28, alignment: .leading) + .frame(width: 170, height: 28, alignment: .leading) .contentShape(Rectangle()) .litheRowHover( isActive: isRunConfigurationPickerPresented, @@ -691,6 +691,7 @@ struct WorkbenchView: View { .foregroundStyle(LitheTheme.warning) } else { LitheIDEAIcon(resourcePath: "actions/execute.svg", size: 16, fallbackSystemImage: "play.fill") + .foregroundStyle(LitheTheme.runAction) } } .litheIconButton() diff --git a/scripts/package-app.sh b/scripts/package-app.sh index eb2cdfcb5..9da6e2777 100755 --- a/scripts/package-app.sh +++ b/scripts/package-app.sh @@ -94,6 +94,7 @@ cp "$INFO_PLIST" "$APP_DIR/Contents/Info.plist" cp "$ROOT_DIR/Resources/AppIcon.icns" "$APP_DIR/Contents/Resources/AppIcon.icns" cp -R "$ROOT_DIR/Resources/IDEAIcons" "$APP_DIR/Contents/Resources/IDEAIcons" cp -R "$ROOT_DIR/Resources/DatabaseIcons" "$APP_DIR/Contents/Resources/DatabaseIcons" +cp -R "$ROOT_DIR/Resources/Fonts" "$APP_DIR/Contents/Resources/Fonts" for localization in en.lproj zh-Hans.lproj; do if [[ -d "$ROOT_DIR/Resources/$localization" ]]; then cp -R "$ROOT_DIR/Resources/$localization" "$APP_DIR/Contents/Resources/$localization" diff --git a/scripts/preview.sh b/scripts/preview.sh index 762babc2e..1c85377a6 100755 --- a/scripts/preview.sh +++ b/scripts/preview.sh @@ -34,6 +34,7 @@ cp Resources/Info.plist "$APP_DIR/Contents/Info.plist" cp Resources/AppIcon.icns "$APP_DIR/Contents/Resources/AppIcon.icns" cp -R Resources/IDEAIcons "$APP_DIR/Contents/Resources/IDEAIcons" cp -R Resources/DatabaseIcons "$APP_DIR/Contents/Resources/DatabaseIcons" +cp -R Resources/Fonts "$APP_DIR/Contents/Resources/Fonts" for localization in en.lproj zh-Hans.lproj; do if [[ -d "Resources/$localization" ]]; then cp -R "Resources/$localization" "$APP_DIR/Contents/Resources/$localization" From c468391e41f288410fddc7bef57d3b2f66fe17f7 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Sun, 16 Aug 2026 20:54:59 +0800 Subject: [PATCH 29/83] fix(windows): use Core for untracked diffs --- windows/tauri/src-tauri/src/platform.rs | 23 +++++++++ .../src/features/git/api/git-diff-api.ts | 23 +++++++++ .../git/services/working-tree-diff-loader.ts | 8 +++- .../services/working-tree-file-diff.test.ts | 43 +++++++++++++++++ .../git/services/working-tree-file-diff.ts | 8 +--- .../git/utils/untracked-file-diff.test.ts | 25 ---------- .../features/git/utils/untracked-file-diff.ts | 42 ----------------- .../git/utils/working-tree-multi-diff.test.ts | 31 ++++++++++++ .../git/utils/working-tree-multi-diff.ts | 15 ++++-- .../platform/core-result-adapter.diff.test.ts | 47 +++++++++++++++++++ 10 files changed, 187 insertions(+), 78 deletions(-) create mode 100644 windows/tauri/src/features/git/services/working-tree-file-diff.test.ts delete mode 100644 windows/tauri/src/features/git/utils/untracked-file-diff.test.ts delete mode 100644 windows/tauri/src/features/git/utils/untracked-file-diff.ts create mode 100644 windows/tauri/src/features/git/utils/working-tree-multi-diff.test.ts diff --git a/windows/tauri/src-tauri/src/platform.rs b/windows/tauri/src-tauri/src/platform.rs index 6551bebb2..209ce64b4 100644 --- a/windows/tauri/src-tauri/src/platform.rs +++ b/windows/tauri/src-tauri/src/platform.rs @@ -679,6 +679,29 @@ mod tests { ); } + #[test] + fn translates_untracked_diff_file_pathspec() { + let (command, payload) = translate( + "git_diff_file", + json!({ + "repoPath": "C:/work", + "filePath": "new.txt", + "untracked": true + }), + ) + .unwrap(); + + assert_eq!(command, "git.diff"); + assert_eq!( + payload, + json!({ + "root": "C:/work", + "pathspecs": ["new.txt"], + "untracked": true + }) + ); + } + #[test] fn translates_status_diff_stats_whole_tree() { let (command, payload) = translate( diff --git a/windows/tauri/src/features/git/api/git-diff-api.ts b/windows/tauri/src/features/git/api/git-diff-api.ts index 5ec665ff6..dc4e68ee5 100644 --- a/windows/tauri/src/features/git/api/git-diff-api.ts +++ b/windows/tauri/src/features/git/api/git-diff-api.ts @@ -206,6 +206,29 @@ export const getFileDiff = async ( } }; +export const getUntrackedFileDiff = async ( + repoPath: string, + filePath: string, +): Promise => { + try { + const resolved = await resolveRepositoryForFile(repoPath, filePath); + if (!resolved) return null; + + return await runGitRead(resolved.repoPath, `untracked-diff:${resolved.filePath}`, () => + tauriInvoke("git_diff_file", { + repoPath: resolved.repoPath, + filePath: resolved.filePath, + untracked: true, + }), + ); + } catch (error) { + if (!isNotGitRepositoryError(error) && !isNoDiffFoundError(error)) { + console.error("Failed to get untracked file diff:", error); + } + return null; + } +}; + export const getStatusDiffStats = async (repoPath: string): Promise => { try { const resolvedRepoPath = await resolveRepositoryPath(repoPath); diff --git a/windows/tauri/src/features/git/services/working-tree-diff-loader.ts b/windows/tauri/src/features/git/services/working-tree-diff-loader.ts index 58b3068c9..c597dcce3 100644 --- a/windows/tauri/src/features/git/services/working-tree-diff-loader.ts +++ b/windows/tauri/src/features/git/services/working-tree-diff-loader.ts @@ -108,7 +108,13 @@ export async function loadWorkingTreeDiffsProgressively({ const batch = diffEntriesToLoad.slice(index, index + WORKING_TREE_DIFF_BATCH_SIZE); const batchResults = await Promise.all( batch.map(async ([fileKey, entry]) => { - const diff = await loadWorkingTreeFileDiff(repoPath, entry); + let diff: GitDiff | null; + try { + diff = await loadWorkingTreeFileDiff(repoPath, entry); + } catch (error) { + console.error(`Failed to load working-tree diff for ${entry.path}:`, error); + return null; + } if ( !diff || (diff.lines.length === 0 && diff.is_image !== true && diff.is_binary !== true) diff --git a/windows/tauri/src/features/git/services/working-tree-file-diff.test.ts b/windows/tauri/src/features/git/services/working-tree-file-diff.test.ts new file mode 100644 index 000000000..2f05d24ce --- /dev/null +++ b/windows/tauri/src/features/git/services/working-tree-file-diff.test.ts @@ -0,0 +1,43 @@ +import { beforeEach, describe, expect, mock, test } from "bun:test"; +import type { GitDiff } from "../types/git.types"; + +const trackedDiff = { file_path: "tracked.txt" } as GitDiff; +const untrackedDiff = { file_path: "new.txt", is_new: true } as GitDiff; +const getFileDiff = mock(async () => trackedDiff); +const getUntrackedFileDiff = mock(async () => untrackedDiff); + +mock.module("../api/git-diff-api", () => ({ getFileDiff, getUntrackedFileDiff })); + +const { loadWorkingTreeFileDiff } = await import("./working-tree-file-diff"); + +beforeEach(() => { + getFileDiff.mockClear(); + getUntrackedFileDiff.mockClear(); +}); + +describe("working-tree file diffs", () => { + test("routes untracked files through the shared Core diff contract", async () => { + await expect( + loadWorkingTreeFileDiff("C:/repo", { + path: "new.txt", + status: "untracked", + staged: false, + }), + ).resolves.toBe(untrackedDiff); + + expect(getUntrackedFileDiff).toHaveBeenCalledWith("C:/repo", "new.txt"); + expect(getFileDiff).not.toHaveBeenCalled(); + }); + + test("keeps tracked files on the regular diff path", async () => { + await expect( + loadWorkingTreeFileDiff("C:/repo", { + path: "tracked.txt", + status: "modified", + staged: true, + }), + ).resolves.toBe(trackedDiff); + + expect(getFileDiff).toHaveBeenCalledWith("C:/repo", "tracked.txt", true); + }); +}); diff --git a/windows/tauri/src/features/git/services/working-tree-file-diff.ts b/windows/tauri/src/features/git/services/working-tree-file-diff.ts index 57014b8b3..c94885339 100644 --- a/windows/tauri/src/features/git/services/working-tree-file-diff.ts +++ b/windows/tauri/src/features/git/services/working-tree-file-diff.ts @@ -1,8 +1,5 @@ -import { readFile } from "@/features/file-system/controllers/platform"; -import { joinPath } from "@/utils/path-helpers"; -import { getFileDiff } from "../api/git-diff-api"; +import { getFileDiff, getUntrackedFileDiff } from "../api/git-diff-api"; import type { GitDiff, GitFile } from "../types/git.types"; -import { createUntrackedFileDiff } from "../utils/untracked-file-diff"; export async function loadWorkingTreeFileDiff( repoPath: string, @@ -12,6 +9,5 @@ export async function loadWorkingTreeFileDiff( return getFileDiff(repoPath, file.path, file.staged); } - const content = await readFile(joinPath(repoPath, file.path)); - return createUntrackedFileDiff(file.path, content); + return getUntrackedFileDiff(repoPath, file.path); } diff --git a/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts b/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts deleted file mode 100644 index 3dedd3123..000000000 --- a/windows/tauri/src/features/git/utils/untracked-file-diff.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { describe, expect, test } from "bun:test"; -import { createUntrackedFileDiff } from "./untracked-file-diff"; - -describe("untracked file diffs", () => { - test("represents every line in a new text file as an addition", () => { - const diff = createUntrackedFileDiff("c.txt", "c\ncc\nccc"); - - expect({ additions: diff.additions, deletions: diff.deletions }).toEqual({ - additions: 3, - deletions: 0, - }); - expect(diff.is_new).toBe(true); - expect(diff.raw_patch).toBeUndefined(); - expect(diff.lines).toEqual([ - { line_type: "header", content: "@@ -0,0 +1,3 @@" }, - { line_type: "added", content: "c", new_line_number: 1 }, - { line_type: "added", content: "cc", new_line_number: 2 }, - { line_type: "added", content: "ccc", new_line_number: 3 }, - ]); - }); - - test("does not count the trailing newline as an extra added line", () => { - expect(createUntrackedFileDiff("a.txt", "a\n").additions).toBe(1); - }); -}); diff --git a/windows/tauri/src/features/git/utils/untracked-file-diff.ts b/windows/tauri/src/features/git/utils/untracked-file-diff.ts deleted file mode 100644 index 941885d1a..000000000 --- a/windows/tauri/src/features/git/utils/untracked-file-diff.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { GitDiff } from "../types/git.types"; - -function splitFileLines(content: string): string[] { - if (content.length === 0) return []; - - const lines = content.split(/\r\n|\n|\r/); - if (/\r\n$|\n$|\r$/.test(content)) { - lines.pop(); - } - return lines; -} - -export function createUntrackedFileDiff(filePath: string, content: string): GitDiff { - const fileLines = splitFileLines(content); - const hunkHeader = `@@ -0,0 +1,${fileLines.length} @@`; - - return { - file_path: filePath, - old_path: "/dev/null", - new_path: filePath, - is_new: true, - is_deleted: false, - is_renamed: false, - additions: fileLines.length, - deletions: 0, - lines: [ - { line_type: "header", content: hunkHeader }, - ...fileLines.map((line, index) => ({ - line_type: "added" as const, - content: line, - new_line_number: index + 1, - })), - ], - split_hunks: [ - fileLines.map((line, index) => ({ - kind: "addition" as const, - new_line_number: index + 1, - new_content: line, - })), - ], - }; -} diff --git a/windows/tauri/src/features/git/utils/working-tree-multi-diff.test.ts b/windows/tauri/src/features/git/utils/working-tree-multi-diff.test.ts new file mode 100644 index 000000000..a5e7a9ac9 --- /dev/null +++ b/windows/tauri/src/features/git/utils/working-tree-multi-diff.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, mock, test } from "bun:test"; +import type { GitStatus } from "../types/git.types"; +import { buildWorkingTreeMultiDiff } from "./working-tree-multi-diff"; + +describe("working-tree multi diff failures", () => { + test("finishes indexing when an individual file cannot be loaded", async () => { + const status: GitStatus = { + branch: "main", + ahead: 0, + behind: 0, + files: [{ path: "unreadable.txt", status: "untracked", staged: false }], + }; + const loadDiff = mock(async () => { + throw new Error("permission denied"); + }); + + const result = await buildWorkingTreeMultiDiff({ + repoPath: "C:/repo", + status, + loadDiff, + }); + + expect(result.files).toEqual([]); + expect(result.isLoading).toBe(false); + expect(result.indexingProgress).toEqual({ + processed: 1, + total: 1, + label: "Indexing", + }); + }); +}); diff --git a/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts b/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts index 80c1d8a00..d6270409b 100644 --- a/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts +++ b/windows/tauri/src/features/git/utils/working-tree-multi-diff.ts @@ -138,10 +138,17 @@ export const buildWorkingTreeMultiDiff = async ({ const batch = filesToLoad.slice(index, index + WORKING_TREE_MULTI_DIFF_BATCH_SIZE); diffResults.push( ...(await Promise.all( - batch.map(async (file) => ({ - fileKey: getWorkingTreeFileKey(file), - diff: await loadDiff(repoPath, file), - })), + batch.map(async (file) => { + try { + return { + fileKey: getWorkingTreeFileKey(file), + diff: await loadDiff(repoPath, file), + }; + } catch (error) { + console.error(`Failed to load working-tree diff for ${file.path}:`, error); + return { fileKey: getWorkingTreeFileKey(file), diff: null }; + } + }), )), ); await yieldToRenderer(); diff --git a/windows/tauri/src/platform/core-result-adapter.diff.test.ts b/windows/tauri/src/platform/core-result-adapter.diff.test.ts index 140d1d1f7..e97462abb 100644 --- a/windows/tauri/src/platform/core-result-adapter.diff.test.ts +++ b/windows/tauri/src/platform/core-result-adapter.diff.test.ts @@ -144,4 +144,51 @@ describe("git single-file diff adaptation", () => { { file_path: "a.txt", staged: false, additions: 1, deletions: 0 }, ]); }); + + test("adapts an untracked file through the shared Core diff contract", () => { + const diff = adaptCoreResult( + "git_diff_file", + { repoPath: "C:/work", filePath: "new.txt", untracked: true }, + { + patch: `diff --git a/new.txt b/new.txt +new file mode 100644 +index 0000000..1234567 +--- /dev/null ++++ b/new.txt +@@ -0,0 +1,2 @@ ++first ++second +`, + rows: [ + { kind: "information", left: "@@ -0,0 +1,2 @@", hunkId: "hunk-0" }, + { kind: "addition", newLine: 1, right: "first", hunkId: "hunk-0" }, + { kind: "addition", newLine: 2, right: "second", hunkId: "hunk-0" }, + ], + }, + ) as GitDiff; + + expect(diff.is_new).toBe(true); + expect({ additions: diff.additions, deletions: diff.deletions }).toEqual({ + additions: 2, + deletions: 0, + }); + }); + + test("keeps untracked binary files out of the text renderer", () => { + const diff = adaptCoreResult( + "git_diff_file", + { repoPath: "C:/work", filePath: "image.png", untracked: true }, + { + patch: `diff --git a/image.png b/image.png +new file mode 100644 +index 0000000..1234567 +Binary files /dev/null and b/image.png differ +`, + }, + ) as GitDiff; + + expect(diff.is_new).toBe(true); + expect(diff.is_binary).toBe(true); + expect(diff.lines).toEqual([]); + }); }); From 3e44fbbdb5fcf8245d2d415acd73f8170f5143a3 Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Sun, 16 Aug 2026 21:35:21 +0800 Subject: [PATCH 30/83] Fix Windows tag checkout result --- .../src/platform/core-result-adapter.test.ts | 30 +++++++++++++++++++ .../tauri/src/platform/core-result-adapter.ts | 7 +++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/windows/tauri/src/platform/core-result-adapter.test.ts b/windows/tauri/src/platform/core-result-adapter.test.ts index 503dbc1ed..de15fba87 100644 --- a/windows/tauri/src/platform/core-result-adapter.test.ts +++ b/windows/tauri/src/platform/core-result-adapter.test.ts @@ -37,6 +37,36 @@ describe("git checkout result adaptation", () => { }); }); +describe("git tag checkout result adaptation", () => { + test("maps a successful core tag checkout to the UI checkout result", () => { + const result = adaptCoreResult( + "git_checkout_tag", + { repoPath: "C:/work", name: "v0.3.0" }, + { output: "HEAD is now at abc1234 Release 0.3.0\n", exitCode: 0 }, + ); + + expect(result).toEqual({ + success: true, + hasChanges: false, + message: "HEAD is now at abc1234 Release 0.3.0", + }); + }); + + test("reports failure when the core tag checkout exited non-zero", () => { + const result = adaptCoreResult( + "git_checkout_tag", + { repoPath: "C:/work", name: "missing-tag" }, + { output: "error: pathspec 'missing-tag' did not match", exitCode: 1 }, + ); + + expect(result).toEqual({ + success: false, + hasChanges: false, + message: "error: pathspec 'missing-tag' did not match", + }); + }); +}); + describe("git checkout preflight adaptation", () => { test("reports blocked paths returned by the shared core", () => { const result = adaptCoreResult( diff --git a/windows/tauri/src/platform/core-result-adapter.ts b/windows/tauri/src/platform/core-result-adapter.ts index 8b525ff28..db30362ce 100644 --- a/windows/tauri/src/platform/core-result-adapter.ts +++ b/windows/tauri/src/platform/core-result-adapter.ts @@ -229,8 +229,11 @@ export function adaptCoreResult( : []; return { blocked: blockingPaths.length > 0, blockingPaths } as T; } - case "git_checkout_tag": - return { success: true, hasChanges: false, message: "" } as T; + case "git_checkout_tag": { + const exitCode = typeof data.exitCode === "number" ? data.exitCode : 0; + const output = typeof data.output === "string" ? data.output.trim() : ""; + return { success: exitCode === 0, hasChanges: false, message: output } as T; + } case "git_operation_state": { const kind = typeof data.kind === "string" ? data.kind : ""; if (!kind) { From 984d75830f6cef1e9a41a5d3ddf4392953dbcd3b Mon Sep 17 00:00:00 2001 From: Yao Jingxi <23722032@bjtu.edu.cn> Date: Sun, 16 Aug 2026 23:23:18 +0800 Subject: [PATCH 31/83] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=20MacOS=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E7=94=B1=E4=BA=8E=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E9=80=BB=E8=BE=91=E5=87=BA=E9=94=99=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E5=88=A0=E9=99=A4=E4=B8=8D=E6=88=90=E5=8A=9F=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/Lithe/Models/AppModel/AppModel.swift | 4 +- .../Views/Workspace/ProjectSidebarView.swift | 9 ++-- .../Application/WorkspaceFeatureModel.swift | 10 ++-- Tests/LitheTests/LitheCoreLogicTests.swift | 49 +++++++++++++++++++ 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/Sources/Lithe/Models/AppModel/AppModel.swift b/Sources/Lithe/Models/AppModel/AppModel.swift index c4eff7bb3..8ea31ae71 100644 --- a/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/Sources/Lithe/Models/AppModel/AppModel.swift @@ -1136,8 +1136,8 @@ final class AppModel: ObservableObject, Identifiable { workspaceFeature.cancelProjectItemDeletion() } - func confirmProjectItemDeletion() async { - await workspaceFeature.confirmProjectItemDeletion() + func confirmProjectItemDeletion(_ request: ProjectItemDeletionRequest) async { + await workspaceFeature.confirmProjectItemDeletion(request) } func revealProjectItemInFinder(_ url: URL) { diff --git a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index 20b36de95..709a04038 100644 --- a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -105,17 +105,18 @@ struct ProjectSidebarView: View { get: { model.pendingProjectItemDeletion != nil }, set: { if !$0 { model.cancelProjectItemDeletion() } } ), - titleVisibility: .visible - ) { + titleVisibility: .visible, + presenting: model.pendingProjectItemDeletion + ) { request in Button("Move to Trash", role: .destructive) { - Task { await model.confirmProjectItemDeletion() } + Task { await model.confirmProjectItemDeletion(request) } } .lithePointer() Button("Cancel", role: .cancel) { model.cancelProjectItemDeletion() } .lithePointer() - } message: { + } message: { _ in Text("The item can be recovered from the macOS Trash.") } } diff --git a/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index fe1f17b9a..ee5f8c398 100644 --- a/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -528,9 +528,13 @@ package final class WorkspaceFeatureModel: ObservableObject { pendingProjectItemDeletion = nil } - package func confirmProjectItemDeletion() async { - guard let request = pendingProjectItemDeletion else { return } - pendingProjectItemDeletion = nil + package func confirmProjectItemDeletion(_ request: ProjectItemDeletionRequest) async { + if pendingProjectItemDeletion?.id == request.id { + pendingProjectItemDeletion = nil + } + guard !isPerformingProjectItemOperation, + isWorkspaceURL(request.url), + request.url.standardizedFileURL != workspaceURL?.standardizedFileURL else { return } isPerformingProjectItemOperation = true await recordHistory?(request.url, .beforeDelete) let fileOperations = self.fileOperations diff --git a/Tests/LitheTests/LitheCoreLogicTests.swift b/Tests/LitheTests/LitheCoreLogicTests.swift index 7aef674b9..1f3f4fdb9 100644 --- a/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/Tests/LitheTests/LitheCoreLogicTests.swift @@ -2958,6 +2958,31 @@ struct EditorDocumentTests { #expect(gitRefreshCount == 1) } + @Test + @MainActor + func capturedProjectDeletionSurvivesConfirmationDialogDismissal() async throws { + let workspace = URL(fileURLWithPath: "/tmp/lithe-delete-confirmation") + let target = workspace.appendingPathComponent("obsolete.swift") + let fileOperations = RecordingTrashWorkspaceFileOperations() + let model = makeWorkspaceObservationUnitModel( + fileOperations: fileOperations, + provider: SequencedGitWatchContextProvider([nil]), + watcherFactory: TestDirectoryWatcherFactory(), + refreshGit: {} + ) + model.beginWorkspace(at: workspace, visibilityRules: .default) + model.requestDeleteProjectItem(at: target, isDirectory: false) + let request = try #require(model.pendingProjectItemDeletion) + + // SwiftUI dismisses the confirmation dialog before its asynchronous + // action runs, so the captured request must not depend on pending state. + model.cancelProjectItemDeletion() + await model.confirmProjectItemDeletion(request) + + #expect(model.pendingProjectItemDeletion == nil) + #expect(fileOperations.trashedURLs == [target.standardizedFileURL]) + } + @Test func workspaceFilesystemFallbackBuildsAVisibleTreeAndHonorsHiddenRules() throws { let fileManager = FileManager.default @@ -3801,6 +3826,30 @@ private struct EmptyWorkspaceFileOperations: WorkspaceFileOperations { func readText(from url: URL) throws -> String { "" } } +private final class RecordingTrashWorkspaceFileOperations: WorkspaceFileOperations, @unchecked Sendable { + private let lock = NSLock() + private var recordedTrashedURLs: [URL] = [] + + var trashedURLs: [URL] { + lock.withLock { recordedTrashedURLs } + } + + func fileExists(at url: URL) -> Bool { true } + func isDirectory(at url: URL) -> Bool { false } + func createFile(at url: URL) throws {} + func createDirectory(at url: URL, withIntermediateDirectories: Bool) throws {} + func copyItem(at sourceURL: URL, to destinationURL: URL) throws {} + func moveItem(at sourceURL: URL, to destinationURL: URL) throws {} + func removeItem(at url: URL) throws {} + func trashItem(at url: URL) throws { + lock.withLock { + recordedTrashedURLs.append(url.standardizedFileURL) + } + } + func writeText(_ text: String, to url: URL) throws {} + func readText(from url: URL) throws -> String { "" } +} + private final class TestDirectoryChangeSource: DirectoryChangeSource { private let onChange: @Sendable (DirectoryChangeBatch) -> Void From 9c27ab25685c751330c291e1d61b48ea320a83a8 Mon Sep 17 00:00:00 2001 From: Yao Jingxi <23722032@bjtu.edu.cn> Date: Sun, 16 Aug 2026 23:40:33 +0800 Subject: [PATCH 32/83] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8D=A1=E9=A1=BF=EF=BC=8C=E5=B0=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=94=B9=E4=B8=BA=E4=B9=90=E8=A7=82=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=8C=E7=A1=AE=E8=AE=A4=E5=90=8E=E7=AB=8B=E5=8D=B3?= =?UTF-8?q?=E4=BB=8E=E6=96=87=E4=BB=B6=E6=A0=91=E7=A7=BB=E9=99=A4=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=B9=B6=E5=BC=82=E6=AD=A5=E7=A7=BB=E5=85=A5=E5=BA=9F?= =?UTF-8?q?=E7=BA=B8=E7=AF=93=EF=BC=8C=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E6=96=87=E4=BB=B6=E6=A0=91=E6=81=A2=E5=A4=8D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Application/WorkspaceFeatureModel.swift | 24 ++++- Tests/LitheTests/LitheCoreLogicTests.swift | 100 ++++++++++++++++-- 2 files changed, 116 insertions(+), 8 deletions(-) diff --git a/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift b/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift index ee5f8c398..c66d171de 100644 --- a/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift +++ b/Sources/LitheWorkspaceModule/Application/WorkspaceFeatureModel.swift @@ -536,7 +536,11 @@ package final class WorkspaceFeatureModel: ObservableObject { isWorkspaceURL(request.url), request.url.standardizedFileURL != workspaceURL?.standardizedFileURL else { return } isPerformingProjectItemOperation = true - await recordHistory?(request.url, .beforeDelete) + // Update the visible tree before waiting for the native Trash operation. + // A failed operation reloads the disk snapshot below to restore the item. + removeProjectItemFromSnapshot(request.url) + // The system Trash is the recovery boundary. Recording every descendant + // first would make deleting a directory scale with its entire file tree. let fileOperations = self.fileOperations let errorMessage = await Task.detached(priority: .userInitiated) { () -> String? in do { @@ -549,6 +553,7 @@ package final class WorkspaceFeatureModel: ObservableObject { isPerformingProjectItemOperation = false if let errorMessage { notify?(errorMessage) + await refreshCurrent() return } closeDocuments?(request.url) @@ -796,6 +801,23 @@ package final class WorkspaceFeatureModel: ObservableObject { return childPath == parentPath || childPath.hasPrefix(parentPath + "/") } + private func removeProjectItemFromSnapshot(_ targetURL: URL) { + projectFiles.removeAll { urlContains(targetURL, child: $0) } + rootNode = rootNode.flatMap { removingProjectItem(targetURL, from: $0) } + } + + private func removingProjectItem(_ targetURL: URL, from node: FileNode) -> FileNode? { + guard node.url.standardizedFileURL != targetURL.standardizedFileURL else { return nil } + guard let children = node.children else { return node } + return FileNode( + url: node.url, + isDirectory: node.isDirectory, + children: children.compactMap { removingProjectItem(targetURL, from: $0) }, + collapsedAncestorPaths: node.collapsedAncestorPaths, + isInsideSourceRoot: node.isInsideSourceRoot + ) + } + private func availableDuplicateURL(for sourceURL: URL) -> URL { let parent = sourceURL.deletingLastPathComponent() let fileExtension = sourceURL.pathExtension diff --git a/Tests/LitheTests/LitheCoreLogicTests.swift b/Tests/LitheTests/LitheCoreLogicTests.swift index 1f3f4fdb9..1ed1c9b80 100644 --- a/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/Tests/LitheTests/LitheCoreLogicTests.swift @@ -2964,23 +2964,75 @@ struct EditorDocumentTests { let workspace = URL(fileURLWithPath: "/tmp/lithe-delete-confirmation") let target = workspace.appendingPathComponent("obsolete.swift") let fileOperations = RecordingTrashWorkspaceFileOperations() + let operations = SequencedWorkspaceOperations( + snapshotAvailability: [true, false], + files: [target] + ) + var historyRecordCount = 0 let model = makeWorkspaceObservationUnitModel( + operations: operations, fileOperations: fileOperations, provider: SequencedGitWatchContextProvider([nil]), watcherFactory: TestDirectoryWatcherFactory(), - refreshGit: {} + refreshGit: {}, + recordHistory: { _, _ in historyRecordCount += 1 } ) model.beginWorkspace(at: workspace, visibilityRules: .default) + _ = await model.rebuild(at: workspace, rules: .default, isCurrent: { true }) model.requestDeleteProjectItem(at: target, isDirectory: false) let request = try #require(model.pendingProjectItemDeletion) // SwiftUI dismisses the confirmation dialog before its asynchronous // action runs, so the captured request must not depend on pending state. model.cancelProjectItemDeletion() - await model.confirmProjectItemDeletion(request) + let deletionTask = Task { await model.confirmProjectItemDeletion(request) } + + for _ in 0..<100 where !fileOperations.hasStarted { + try? await Task.sleep(for: .milliseconds(10)) + } + + #expect(fileOperations.hasStarted) + #expect(model.projectFiles.isEmpty) + #expect(model.rootNode?.children?.isEmpty == true) + + fileOperations.release() + await deletionTask.value #expect(model.pendingProjectItemDeletion == nil) #expect(fileOperations.trashedURLs == [target.standardizedFileURL]) + #expect(historyRecordCount == 0) + #expect(model.projectFiles.isEmpty) + #expect(model.rootNode?.children?.isEmpty == true) + } + + @Test + @MainActor + func failedProjectDeletionRestoresOptimisticallyRemovedItem() async { + let workspace = URL(fileURLWithPath: "/tmp/lithe-delete-failure") + let target = workspace.appendingPathComponent("still-here.swift") + let operations = SequencedWorkspaceOperations( + snapshotAvailability: [true, true], + files: [target] + ) + let model = makeWorkspaceObservationUnitModel( + operations: operations, + fileOperations: FailingTrashWorkspaceFileOperations(), + provider: SequencedGitWatchContextProvider([nil]), + watcherFactory: TestDirectoryWatcherFactory(), + refreshGit: {} + ) + model.beginWorkspace(at: workspace, visibilityRules: .default) + _ = await model.rebuild(at: workspace, rules: .default, isCurrent: { true }) + model.requestDeleteProjectItem(at: target, isDirectory: false) + guard let request = model.pendingProjectItemDeletion else { + Issue.record("The deletion request should be available") + return + } + + await model.confirmProjectItemDeletion(request) + + #expect(model.projectFiles == [target]) + #expect(model.rootNode?.children?.map(\.url) == [target]) } @Test @@ -3419,7 +3471,8 @@ private func makeWorkspaceObservationUnitModel( watcherFactory: TestDirectoryWatcherFactory, refreshGit: @escaping @MainActor () async -> Void, processExternalChanges: @escaping @MainActor ([URL]) -> Bool = { _ in false }, - reloadProjectServices: @escaping @MainActor () async -> Void = {} + reloadProjectServices: @escaping @MainActor () async -> Void = {}, + recordHistory: @escaping @MainActor (URL, LocalHistoryReason) async -> Void = { _, _ in } ) -> WorkspaceFeatureModel { let model = WorkspaceFeatureModel( operations: operations, @@ -3437,7 +3490,7 @@ private func makeWorkspaceObservationUnitModel( restoreSession: { _, _ in }, openFile: { _ in }, notify: { _ in }, - recordHistory: { _, _ in }, + recordHistory: recordHistory, relocateHistory: { _, _ in }, relocateOpenDocuments: { _, _ in }, closeDocuments: { _ in }, @@ -3750,9 +3803,11 @@ private final class BlockingWorkspaceOperations: WorkspaceOperations, @unchecked private final class SequencedWorkspaceOperations: WorkspaceOperations, @unchecked Sendable { private let lock = NSLock() private var snapshotAvailability: [Bool] + private let files: [URL] - init(snapshotAvailability: [Bool]) { + init(snapshotAvailability: [Bool], files: [URL] = []) { self.snapshotAvailability = snapshotAvailability + self.files = files } func snapshot(at rootURL: URL, visibilityRules: FileVisibilityRules) -> WorkspaceSnapshot? { @@ -3761,8 +3816,12 @@ private final class SequencedWorkspaceOperations: WorkspaceOperations, @unchecke lock.unlock() guard isAvailable else { return nil } return WorkspaceSnapshot( - root: FileNode(url: rootURL, isDirectory: true, children: []), - files: [] + root: FileNode( + url: rootURL, + isDirectory: true, + children: files.map { FileNode(url: $0, isDirectory: false, children: nil) } + ), + files: files ) } @@ -3828,12 +3887,22 @@ private struct EmptyWorkspaceFileOperations: WorkspaceFileOperations { private final class RecordingTrashWorkspaceFileOperations: WorkspaceFileOperations, @unchecked Sendable { private let lock = NSLock() + private let releaseSemaphore = DispatchSemaphore(value: 0) private var recordedTrashedURLs: [URL] = [] + private var startedValue = false var trashedURLs: [URL] { lock.withLock { recordedTrashedURLs } } + var hasStarted: Bool { + lock.withLock { startedValue } + } + + func release() { + releaseSemaphore.signal() + } + func fileExists(at url: URL) -> Bool { true } func isDirectory(at url: URL) -> Bool { false } func createFile(at url: URL) throws {} @@ -3842,6 +3911,10 @@ private final class RecordingTrashWorkspaceFileOperations: WorkspaceFileOperatio func moveItem(at sourceURL: URL, to destinationURL: URL) throws {} func removeItem(at url: URL) throws {} func trashItem(at url: URL) throws { + lock.withLock { + startedValue = true + } + releaseSemaphore.wait() lock.withLock { recordedTrashedURLs.append(url.standardizedFileURL) } @@ -3850,6 +3923,19 @@ private final class RecordingTrashWorkspaceFileOperations: WorkspaceFileOperatio func readText(from url: URL) throws -> String { "" } } +private struct FailingTrashWorkspaceFileOperations: WorkspaceFileOperations { + func fileExists(at url: URL) -> Bool { true } + func isDirectory(at url: URL) -> Bool { false } + func createFile(at url: URL) throws {} + func createDirectory(at url: URL, withIntermediateDirectories: Bool) throws {} + func copyItem(at sourceURL: URL, to destinationURL: URL) throws {} + func moveItem(at sourceURL: URL, to destinationURL: URL) throws {} + func removeItem(at url: URL) throws {} + func trashItem(at url: URL) throws { throw CocoaError(.fileWriteNoPermission) } + func writeText(_ text: String, to url: URL) throws {} + func readText(from url: URL) throws -> String { "" } +} + private final class TestDirectoryChangeSource: DirectoryChangeSource { private let onChange: @Sendable (DirectoryChangeBatch) -> Void From 9da6ea65db2276568fbd81b1c30f4107b0d619c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=A4=A9=E5=9B=B0?= <2570024918@qq.com> Date: Sun, 16 Aug 2026 23:48:56 +0800 Subject: [PATCH 33/83] =?UTF-8?q?feat(windows):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E7=95=8C=E9=9D=A2=E4=B8=8E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补齐 Git、编辑器、搜索、通知等中文文案(含 AI 生成提交说明),优化页脚状态栏与双击 Shift 全局搜索,并修复 Windows 任务栏图标显示。 Co-authored-by: Cursor --- windows/tauri/package.json | 2 +- windows/tauri/src-tauri/Cargo.lock | 246 ++++- windows/tauri/src-tauri/icons/icon.ico | Bin 270622 -> 66450 bytes windows/tauri/src-tauri/src/host.rs | 37 +- windows/tauri/src-tauri/src/main.rs | 3 + .../command-palette/constants/git-actions.tsx | 3 +- .../components/diagnostics-pane.tsx | 131 +-- .../editor/components/code-editor.tsx | 1 + .../editor/components/toolbar/breadcrumb.tsx | 22 +- .../toolbar/editor-status-actions.tsx | 73 +- .../toolbar/file-path-breadcrumb.tsx | 11 +- .../components/toolbar/path-breadcrumb.tsx | 17 +- .../editor/context-menu/context-menu.tsx | 3 + .../editor-context-menu-items.tsx | 54 +- .../hooks/use-file-explorer-context-menu.tsx | 87 +- .../components/diff/git-diff-editor-stack.tsx | 48 +- .../git/components/diff/git-diff-header.tsx | 10 +- .../components/diff/git-diff-hunk-header.tsx | 8 +- .../git/components/git-actions-menu.tsx | 30 +- .../git/components/git-branch-manager.tsx | 143 +-- .../git/components/git-commit-history.tsx | 32 +- .../git/components/git-commit-panel.tsx | 24 +- .../src/features/git/components/git-view.tsx | 80 +- .../components/log/git-commit-file-tree.tsx | 4 +- .../components/log/git-commit-inspector.tsx | 22 +- .../git/components/log/git-commit-table.tsx | 48 +- .../git/components/log/git-graph-row.test.ts | 13 + .../git/components/log/git-graph-row.tsx | 12 +- .../git/components/log/git-log-title-bar.tsx | 25 +- .../components/log/git-log-tool-window.tsx | 28 +- .../git/components/log/git-reference-tree.tsx | 25 +- .../git/components/stash/git-stash-modal.tsx | 6 +- .../components/status/git-status-panel.tsx | 38 +- .../components/global-search-state.tsx | 26 +- .../components/global-search-toolbar.tsx | 29 +- .../keymaps/commands/command-registry.ts | 6 + .../defaults/default-keymaps.git-log.test.ts | 13 +- .../src/features/keymaps/hooks/use-keymaps.ts | 52 ++ .../utils/double-shift-recognizer.test.ts | 40 + .../keymaps/utils/double-shift-recognizer.ts | 76 ++ .../footer/footer-editor-status.tsx | 123 +++ .../footer/footer-file-path-item.tsx | 37 + .../components/footer/footer-status-chip.tsx | 36 + .../layout/components/footer/footer.tsx | 156 +--- .../components/sidebar/main-sidebar.tsx | 73 +- .../sidebar/sidebar-pane-selector.tsx | 96 +- .../features/layout/config/item-order.test.ts | 34 + .../src/features/layout/config/item-order.ts | 18 +- .../layout/utils/footer-status.test.ts | 20 + .../features/layout/utils/footer-status.ts | 35 + .../components/notifications-command.tsx | 54 +- .../components/notifications-trigger.tsx | 6 +- .../quick-open/components/empty-state.tsx | 16 +- .../components/file-count-badge.tsx | 6 +- .../quick-open/components/quick-open.tsx | 22 +- .../src/features/tabs/components/tab-bar.tsx | 12 +- .../tabs/components/tab-context-menu.tsx | 30 +- .../window/components/new-project-content.tsx | 94 +- .../window/components/project-picker.tsx | 34 +- windows/tauri/src/i18n/locale.test.ts | 74 +- windows/tauri/src/i18n/locale.ts | 869 ++++++++++++++++++ windows/tauri/src/ui/icons.tsx | 1 + windows/tauri/src/ui/sidebar.tsx | 10 +- 63 files changed, 2646 insertions(+), 738 deletions(-) create mode 100644 windows/tauri/src/features/git/components/log/git-graph-row.test.ts create mode 100644 windows/tauri/src/features/keymaps/utils/double-shift-recognizer.test.ts create mode 100644 windows/tauri/src/features/keymaps/utils/double-shift-recognizer.ts create mode 100644 windows/tauri/src/features/layout/components/footer/footer-editor-status.tsx create mode 100644 windows/tauri/src/features/layout/components/footer/footer-file-path-item.tsx create mode 100644 windows/tauri/src/features/layout/components/footer/footer-status-chip.tsx create mode 100644 windows/tauri/src/features/layout/config/item-order.test.ts create mode 100644 windows/tauri/src/features/layout/utils/footer-status.test.ts create mode 100644 windows/tauri/src/features/layout/utils/footer-status.ts diff --git a/windows/tauri/package.json b/windows/tauri/package.json index dceed09f3..93ac9b31f 100644 --- a/windows/tauri/package.json +++ b/windows/tauri/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "dev": "bunx vp dev", + "dev": "bun ./node_modules/vite-plus/bin/vp dev", "build": "bunx vp build", "preview": "bunx vp preview", "tauri": "tauri", diff --git a/windows/tauri/src-tauri/Cargo.lock b/windows/tauri/src-tauri/Cargo.lock index 268a1486f..8fc75becd 100644 --- a/windows/tauri/src-tauri/Cargo.lock +++ b/windows/tauri/src-tauri/Cargo.lock @@ -267,6 +267,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bit-set" version = "0.8.0" @@ -530,7 +536,7 @@ checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures 0.3.0", - "rand_core", + "rand_core 0.10.1", ] [[package]] @@ -591,6 +597,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const-random" version = "0.1.18" @@ -880,6 +892,17 @@ dependencies = [ "thiserror 2.0.20", ] +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" version = "0.5.8" @@ -928,6 +951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", ] @@ -1383,6 +1407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1614,7 +1639,7 @@ dependencies = [ "js-sys", "libc", "r-efi 6.0.0", - "rand_core", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -2452,6 +2477,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libappindicator" @@ -2502,6 +2530,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "libredox" version = "0.1.19" @@ -2528,14 +2562,21 @@ name = "lithe-core" version = "0.1.0" dependencies = [ "ammonia", + "base64 0.22.1", "comrak", "quick-xml 0.37.5", + "rand 0.8.7", "regex", + "reqwest 0.12.28", + "rsa", "serde", "serde_json", "serde_yaml_ng", + "sha1", "sha2", "toml 1.1.4+spec-1.1.0", + "url", + "zip 2.4.2", ] [[package]] @@ -2828,12 +2869,47 @@ dependencies = [ "bitflags 2.13.1", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.7", + "smallvec", + "zeroize", +] + [[package]] name = "num-conv" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -2841,6 +2917,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -3217,6 +3294,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -3304,6 +3390,27 @@ dependencies = [ "futures-io", ] +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.34" @@ -3414,6 +3521,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "precomputed-hash" version = "0.1.1" @@ -3557,7 +3673,7 @@ dependencies = [ "bytes", "getrandom 0.4.3", "lru-slab", - "rand", + "rand 0.10.2", "rand_pcg", "ring", "rustc-hash", @@ -3605,6 +3721,17 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "rand" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", +] + [[package]] name = "rand" version = "0.10.2" @@ -3613,7 +3740,26 @@ checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", "getrandom 0.4.3", - "rand_core", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", ] [[package]] @@ -3628,7 +3774,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" dependencies = [ - "rand_core", + "rand_core 0.10.1", ] [[package]] @@ -3728,7 +3874,9 @@ dependencies = [ "cookie", "cookie_store", "encoding_rs", + "futures-channel", "futures-core", + "futures-util", "h2", "http", "http-body", @@ -3837,6 +3985,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rust-ini" version = "0.21.3" @@ -4283,6 +4451,17 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", +] + [[package]] name = "sha2" version = "0.10.9" @@ -4358,6 +4537,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.10" @@ -4456,6 +4645,22 @@ dependencies = [ "system-deps", ] +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -5037,7 +5242,7 @@ dependencies = [ "tokio", "url", "windows-sys 0.60.2", - "zip", + "zip 4.6.1", ] [[package]] @@ -6926,6 +7131,23 @@ dependencies = [ "syn 3.0.3", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.14.0", + "memchr", + "thiserror 2.0.20", + "zopfli", +] + [[package]] name = "zip" version = "4.6.1" @@ -6944,6 +7166,18 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[package]] name = "zune-core" version = "0.5.3" diff --git a/windows/tauri/src-tauri/icons/icon.ico b/windows/tauri/src-tauri/icons/icon.ico index 26418f0dd7ff5a5c57c3da4180c2fae091859eb6..a76d1c206416f4a289b6a2ba30dc5800008e2518 100644 GIT binary patch literal 66450 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 M07*qoM6N<$g0KCs8UO$Q literal 270622 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 diff --git a/windows/tauri/src-tauri/src/host.rs b/windows/tauri/src-tauri/src/host.rs index 486f776b5..bb1a64f56 100644 --- a/windows/tauri/src-tauri/src/host.rs +++ b/windows/tauri/src-tauri/src/host.rs @@ -9,6 +9,16 @@ use tauri_plugin_opener::OpenerExt; static WINDOW_ID: AtomicU64 = AtomicU64::new(1); +// Windows 11 taskbar downscales a 256-only ICO into an empty pill. Use the 32px +// asset after window creation so frameless windows keep a readable app icon. +const WINDOW_TASKBAR_ICON: tauri::image::Image<'_> = tauri::include_image!("./icons/32x32.png"); + +pub fn apply_window_taskbar_icon(window: &WebviewWindow) { + if let Err(error) = window.set_icon(WINDOW_TASKBAR_ICON.clone()) { + eprintln!("[host] failed to set window icon: {error}"); + } +} + #[derive(Debug, Serialize)] pub struct FontInfo { name: String, @@ -273,13 +283,16 @@ pub fn create_app_window(app: AppHandle, request: Option) -> Result) -> Result= 6); + let count = u16::from_le_bytes(data[4..6].try_into().unwrap()) as usize; + let mut widths = Vec::new(); + let mut offset = 6usize; + for _ in 0..count { + let width = match data[offset] { + 0 => 256, + value => u32::from(value), + }; + widths.push(width); + offset += 16; + } + assert!(widths.contains(&16), "{widths:?}"); + assert!(widths.contains(&32), "{widths:?}"); + assert!(widths.contains(&256), "{widths:?}"); + } } #[tauri::command] diff --git a/windows/tauri/src-tauri/src/main.rs b/windows/tauri/src-tauri/src/main.rs index d2dc1531f..893a8fefa 100644 --- a/windows/tauri/src-tauri/src/main.rs +++ b/windows/tauri/src-tauri/src/main.rs @@ -48,6 +48,9 @@ fn main() { )); app.manage(host::FileClipboard::default()); app.manage(run::RunProcessManager::default()); + if let Some(window) = app.get_webview_window("main") { + host::apply_window_taskbar_icon(&window); + } Ok(()) }) .invoke_handler(tauri::generate_handler![ diff --git a/windows/tauri/src/features/command-palette/constants/git-actions.tsx b/windows/tauri/src/features/command-palette/constants/git-actions.tsx index af519e92c..500b3e79f 100644 --- a/windows/tauri/src/features/command-palette/constants/git-actions.tsx +++ b/windows/tauri/src/features/command-palette/constants/git-actions.tsx @@ -5,6 +5,7 @@ import { FolderOpenIcon as FolderOpen, GitBranchIcon as GitBranch, GitCommitIcon as GitCommit, + GitGraphIcon as GitGraph, HardDrivesIcon as Server, NodesIcon as Nodes, TagIcon as Tag, @@ -163,7 +164,7 @@ export const createGitActions = (params: GitActionsParams): Action[] => { id: "git-open-log", label: "Git: Open Log", description: "Open the full Git Log tool window", - icon: , + icon: , category: "Git", action: () => { setBottomPaneActiveTab("gitLog"); diff --git a/windows/tauri/src/features/diagnostics/components/diagnostics-pane.tsx b/windows/tauri/src/features/diagnostics/components/diagnostics-pane.tsx index f744ca379..5260b13c2 100644 --- a/windows/tauri/src/features/diagnostics/components/diagnostics-pane.tsx +++ b/windows/tauri/src/features/diagnostics/components/diagnostics-pane.tsx @@ -17,6 +17,7 @@ import { XIcon as X, } from "@/ui/icons"; import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useTranslation } from "@/i18n/locale-provider"; import { LspClient } from "@/features/editor/lsp/lsp-client"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { @@ -84,16 +85,16 @@ const DEFAULT_PREFERENCES: PanePreferences = { fileNavigatorViewMode: "flat", }; -const GROUP_OPTIONS: Array<{ value: GroupBy; label: string }> = [ - { value: "file", label: "File" }, - { value: "severity", label: "Severity" }, - { value: "none", label: "None" }, +const GROUP_OPTIONS: Array<{ value: GroupBy; labelKey: string }> = [ + { value: "file", labelKey: "diagnostics.groupByFile" }, + { value: "severity", labelKey: "diagnostics.groupBySeverity" }, + { value: "none", labelKey: "diagnostics.groupByNone" }, ]; -const SORT_OPTIONS: Array<{ value: SortBy; label: string }> = [ - { value: "severity", label: "Severity" }, - { value: "file", label: "File" }, - { value: "position", label: "Position" }, +const SORT_OPTIONS: Array<{ value: SortBy; labelKey: string }> = [ + { value: "severity", labelKey: "diagnostics.sortBySeverity" }, + { value: "file", labelKey: "diagnostics.sortByFile" }, + { value: "position", labelKey: "diagnostics.sortByPosition" }, ]; const SEVERITY_ORDER: Record = { @@ -102,10 +103,10 @@ const SEVERITY_ORDER: Record = { info: 2, }; -const SEVERITY_LABEL: Record = { - error: "Errors", - warning: "Warnings", - info: "Info", +const SEVERITY_LABEL_KEY: Record = { + error: "diagnostics.errors", + warning: "diagnostics.warnings", + info: "diagnostics.info", }; const SEVERITY_TEXT_CLASS: Record = { @@ -216,6 +217,7 @@ const DiagnosticsPane = ({ onFullScreen, isFullScreen = false, }: DiagnosticsPaneProps) => { + const { t } = useTranslation(); const { showToast } = useToast(); const lspClient = useMemo(() => LspClient.getInstance(), []); const widthMode = useTerminalStore((state) => state.widthMode); @@ -371,7 +373,7 @@ const DiagnosticsPane = ({ return [ { id: "all", - label: "All Diagnostics", + label: t("diagnostics.all"), items: filteredDiagnostics, }, ]; @@ -385,7 +387,7 @@ const DiagnosticsPane = ({ ); return { id: `severity-${severity}`, - label: SEVERITY_LABEL[severity as Diagnostic["severity"]], + label: t(SEVERITY_LABEL_KEY[severity as Diagnostic["severity"]]), items, severity: severity as Diagnostic["severity"], }; @@ -407,7 +409,7 @@ const DiagnosticsPane = ({ label: filePath, items, })); - }, [filteredDiagnostics, preferences.groupBy]); + }, [filteredDiagnostics, preferences.groupBy, t]); const totalBySeverity = useMemo(() => { return diagnostics.reduce( @@ -565,18 +567,18 @@ const DiagnosticsPane = ({ const copyDiagnosticMessage = useCallback( async (diagnostic: Diagnostic) => { await copyToClipboard(diagnostic.message); - showToast({ message: "Diagnostic message copied", type: "success" }); + showToast({ message: t("diagnostics.messageCopied"), type: "success" }); }, - [showToast], + [showToast, t], ); const copyDiagnosticLocation = useCallback( async (diagnostic: Diagnostic) => { const text = `${diagnostic.filePath}:${diagnostic.line + 1}:${diagnostic.column + 1}`; await copyToClipboard(text); - showToast({ message: "Diagnostic location copied", type: "success" }); + showToast({ message: t("diagnostics.locationCopied"), type: "success" }); }, - [showToast], + [showToast, t], ); const copyDiagnosticDetails = useCallback( @@ -592,9 +594,9 @@ const DiagnosticsPane = ({ .join(" | "); await copyToClipboard(details); - showToast({ message: "Diagnostic details copied", type: "success" }); + showToast({ message: t("diagnostics.detailsCopied"), type: "success" }); }, - [showToast], + [showToast, t], ); const diagnosticContextMenuItems = useMemo(() => { @@ -610,7 +612,7 @@ const DiagnosticsPane = ({ if (isLoading) { items.push({ id: "loading-actions", - label: "Loading quick fixes...", + label: t("diagnostics.loadingFixes"), icon: , onClick: () => {}, disabled: true, @@ -633,7 +635,7 @@ const DiagnosticsPane = ({ } else { items.push({ id: "no-actions", - label: "No quick fixes available", + label: t("diagnostics.noFixes"), icon: , onClick: () => {}, disabled: true, @@ -645,12 +647,12 @@ const DiagnosticsPane = ({ items.push( { id: "go-to-problem", - label: "Go to Problem", + label: t("diagnostics.goToProblem"), onClick: () => onDiagnosticClick?.(diagnostic), }, { id: "copy-message", - label: "Copy Message", + label: t("diagnostics.copyMessage"), icon: , onClick: () => { void copyDiagnosticMessage(diagnostic); @@ -658,7 +660,7 @@ const DiagnosticsPane = ({ }, { id: "copy-location", - label: "Copy Location", + label: t("diagnostics.copyLocation"), icon: , onClick: () => { void copyDiagnosticLocation(diagnostic); @@ -666,7 +668,7 @@ const DiagnosticsPane = ({ }, { id: "copy-details", - label: "Copy Full Details", + label: t("diagnostics.copyDetails"), icon: , onClick: () => { void copyDiagnosticDetails(diagnostic); @@ -679,14 +681,14 @@ const DiagnosticsPane = ({ if (sourceFilter?.toLowerCase() === source.toLowerCase()) { items.push({ id: "clear-source-filter", - label: "Clear Source Filter", + label: t("diagnostics.clearSourceFilterSimple"), icon: , onClick: () => setSourceFilter(null), }); } else { items.push({ id: "filter-by-source", - label: `Filter by Source: ${source}`, + label: t("diagnostics.filterBySource", { source }), icon: , onClick: () => setSourceFilter(source), }); @@ -697,7 +699,9 @@ const DiagnosticsPane = ({ items.push({ id: "toggle-wrap", - label: preferences.wrapMessages ? "Disable Message Wrap" : "Enable Message Wrap", + label: preferences.wrapMessages + ? t("diagnostics.disableWrap") + : t("diagnostics.enableWrap"), onClick: () => togglePreference("wrapMessages"), }); @@ -714,6 +718,7 @@ const DiagnosticsPane = ({ preferences.wrapMessages, sourceFilter, togglePreference, + t, ]); const hasNonDefaultPreferences = @@ -742,7 +747,10 @@ const DiagnosticsPane = ({ const hasSearch = Boolean(searchQuery.trim()); const visibleProblemCount = filteredDiagnostics.length; const hasDiagnosticFiles = diagnosticFileItems.length > 0; - const problemSummary = `${visibleProblemCount} problem${visibleProblemCount === 1 ? "" : "s"}`; + const problemSummary = + visibleProblemCount === 1 + ? t("diagnostics.problemCountOne", { count: visibleProblemCount }) + : t("diagnostics.problemCount", { count: visibleProblemCount }); const problemSummaryTone = visibleBySeverity.error > 0 ? "text-destructive" @@ -760,7 +768,7 @@ const DiagnosticsPane = ({ items.push( ...GROUP_OPTIONS.map((option) => ({ id: `group-${option.value}`, - label: `Group by: ${option.label}`, + label: t(option.labelKey), icon: preferences.groupBy === option.value ? : undefined, onClick: () => { setPreferences((prev) => ({ @@ -776,7 +784,7 @@ const DiagnosticsPane = ({ items.push( ...SORT_OPTIONS.map((option) => ({ id: `sort-${option.value}`, - label: `Sort by: ${option.label}`, + label: t(option.labelKey), icon: preferences.sortBy === option.value ? : undefined, onClick: () => { setPreferences((prev) => ({ @@ -792,7 +800,11 @@ const DiagnosticsPane = ({ for (const severity of ["error", "warning", "info"] as Diagnostic["severity"][]) { items.push({ id: `severity-${severity}`, - label: `${SEVERITY_LABEL[severity]} (${visibleBySeverity[severity]}/${totalBySeverity[severity]})`, + label: t("diagnostics.severityCount", { + label: t(SEVERITY_LABEL_KEY[severity]), + visible: visibleBySeverity[severity], + total: totalBySeverity[severity], + }), icon: severityFilter[severity] ? : undefined, onClick: () => toggleSeverity(severity), }); @@ -801,7 +813,7 @@ const DiagnosticsPane = ({ if (activeFilePath) { items.push({ id: "only-current-file", - label: "Only Current File", + label: t("diagnostics.onlyCurrentFile"), icon: preferences.onlyCurrentFile ? : undefined, onClick: () => togglePreference("onlyCurrentFile"), }); @@ -810,7 +822,7 @@ const DiagnosticsPane = ({ if (sourceFilter) { items.push({ id: "clear-source-filter", - label: `Clear Source Filter (${sourceFilter})`, + label: t("diagnostics.clearSourceFilter", { source: sourceFilter }), onClick: () => setSourceFilter(null), }); } @@ -819,7 +831,7 @@ const DiagnosticsPane = ({ items.push({ id: "sep-reset", label: "", separator: true, onClick: () => {} }); items.push({ id: "reset-filters", - label: "Reset All Filters", + label: t("diagnostics.resetAllFilters"), onClick: resetFilters, }); } @@ -839,14 +851,15 @@ const DiagnosticsPane = ({ toggleSeverity, totalBySeverity, visibleBySeverity, + t, ]); const headerContextMenuItems = useMemo(() => { if (!headerContextMenu.data) return []; const widthModes: { value: TerminalWidthMode; label: string; icon: ReactNode }[] = [ - { value: "full", label: "Full Width", icon: }, - { value: "editor", label: "Editor Width", icon: }, + { value: "full", label: t("diagnostics.fullWidth"), icon: }, + { value: "editor", label: t("diagnostics.editorWidth"), icon: }, ]; const items: MenuItem[] = widthModes.map((mode) => ({ @@ -862,7 +875,7 @@ const DiagnosticsPane = ({ { id: "sep-fullscreen", label: "", separator: true, onClick: () => {} }, { id: "toggle-fullscreen", - label: isFullScreen ? "Exit Full Screen" : "Full Screen", + label: isFullScreen ? t("diagnostics.exitFullScreen") : t("diagnostics.fullScreen"), icon: isFullScreen ? : , onClick: onFullScreen, }, @@ -870,7 +883,7 @@ const DiagnosticsPane = ({ } return items; - }, [headerContextMenu.data, widthMode, setWidthMode, onFullScreen, isFullScreen]); + }, [headerContextMenu.data, widthMode, setWidthMode, onFullScreen, isFullScreen, t]); if (!isVisible) return null; @@ -894,8 +907,12 @@ const DiagnosticsPane = ({ className={cn( isFileNavigatorVisible && "border-border/70 bg-accent text-foreground", )} - tooltip={isFileNavigatorVisible ? "Hide files" : "Show files"} - aria-label={isFileNavigatorVisible ? "Hide files" : "Show files"} + tooltip={ + isFileNavigatorVisible ? t("diagnostics.hideFiles") : t("diagnostics.showFiles") + } + aria-label={ + isFileNavigatorVisible ? t("diagnostics.hideFiles") : t("diagnostics.showFiles") + } > @@ -914,7 +931,7 @@ const DiagnosticsPane = ({ className={cn( (isSearchVisible || hasSearch) && "border-border/70 bg-accent text-foreground", )} - tooltip="Search problems" + tooltip={t("diagnostics.search")} > @@ -925,7 +942,7 @@ const DiagnosticsPane = ({ filterContextMenu.open(event, "filters"); }} className={cn("relative", hasFilterSettings && "text-primary")} - tooltip="Filter problems" + tooltip={t("diagnostics.filter")} > {activeFilterCount > 0 && ( @@ -943,16 +960,18 @@ const DiagnosticsPane = ({ {isFullScreen ? : } )} {!isEmbedded && ( - + )} @@ -979,7 +998,7 @@ const DiagnosticsPane = ({ } } }} - placeholder="Search problems" + placeholder={t("diagnostics.search")} inputRef={searchInputRef} extraActions={ {activeFilterCount > 0 && ( @@ -1014,7 +1033,7 @@ const DiagnosticsPane = ({ items={diagnosticFileItems} selectedKey={selectedFileNavigatorKey} onSelect={selectDiagnosticFile} - ariaLabel="Diagnostic files" + ariaLabel={t("diagnostics.filesAria")} viewMode={preferences.fileNavigatorViewMode} onViewModeChange={(fileNavigatorViewMode) => setPreferences((prev) => ({ @@ -1027,11 +1046,15 @@ const DiagnosticsPane = ({ {diagnostics.length === 0 ? ( - + ) : filteredDiagnostics.length === 0 ? ( ) : (

diff --git a/windows/tauri/src/features/editor/components/code-editor.tsx b/windows/tauri/src/features/editor/components/code-editor.tsx index 3a4545c88..1cd9c7557 100644 --- a/windows/tauri/src/features/editor/components/code-editor.tsx +++ b/windows/tauri/src/features/editor/components/code-editor.tsx @@ -514,6 +514,7 @@ const CodeEditor = ({ editorViewKey={editorViewKey} bufferId={activeBufferId ?? undefined} filePathOverride={breadcrumbProps?.filePathOverride ?? filePath} + showFilePath={breadcrumbProps?.showFilePath ?? false} /> )} diff --git a/windows/tauri/src/features/editor/components/toolbar/breadcrumb.tsx b/windows/tauri/src/features/editor/components/toolbar/breadcrumb.tsx index 5e76df993..8e44f2cb7 100644 --- a/windows/tauri/src/features/editor/components/toolbar/breadcrumb.tsx +++ b/windows/tauri/src/features/editor/components/toolbar/breadcrumb.tsx @@ -11,6 +11,7 @@ import { useExtensionActions } from "@/extensions/ui/hooks/use-extension-actions import { ExtensionToolbarAction } from "@/extensions/ui/components/extension-toolbar-action"; import { isMarkdownPreviewableFile } from "@/features/editor/markdown/previewable"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { useTranslation } from "@/i18n/locale-provider"; import { Button, type ButtonProps } from "@/ui/button"; import { Dropdown, type MenuItem } from "@/ui/dropdown"; import { cn } from "@/utils/cn"; @@ -26,6 +27,7 @@ export interface BreadcrumbProps { showDefaultActions?: boolean; interactive?: boolean; showPath?: boolean; + showFilePath?: boolean; } type BreadcrumbActionButtonProps = Omit; @@ -50,7 +52,9 @@ export default function Breadcrumb({ showDefaultActions = true, interactive = true, showPath = true, + showFilePath = true, }: BreadcrumbProps = {}) { + const { t } = useTranslation(); const resolvedBufferId = useBufferStore((state) => bufferId ?? state.activeBufferId); const activeBuffer = useBufferStore( useShallow((state) => { @@ -149,19 +153,19 @@ export default function Breadcrumb({ ? [ { id: "preview", - label: "Preview", + label: t("editor.preview"), onClick: handlePreviewClick, }, ] : []), { id: "inline-edit", - label: "AI inline edit", + label: t("editor.aiInlineEdit"), onClick: handleInlineEditClick, }, { id: "find", - label: "Find in file", + label: t("editor.findInFile"), onClick: onSearchClick, }, ]; @@ -177,7 +181,7 @@ export default function Breadcrumb({ ref={actionsButtonRef} onClick={() => setIsActionsMenuOpen((open) => !open)} active={isActionsMenuOpen} - tooltip="Editor actions" + tooltip={t("editor.actions")} tooltipSide="bottom" > @@ -202,10 +206,12 @@ export default function Breadcrumb({
{showPath && showBreadcrumbPath ? ( <> - + {showFilePath ? ( + + ) : null} [number]; -function CursorPositionChip({ editorViewKey }: { editorViewKey?: string | null }) { +export function CursorPositionChip({ editorViewKey }: { editorViewKey?: string | null }) { const activeEditorViewKey = useEditorStateStore.use.activeEditorViewKey(); const cursorPosition = useEditorStateStore.use.cursorPosition(); const [isEditing, setIsEditing] = useState(false); @@ -157,7 +158,8 @@ function CursorPositionChip({ editorViewKey }: { editorViewKey?: string | null } ); } -export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusActionsProps = {}) { +export function EditorStatusActions({ bufferId }: EditorStatusActionsProps = {}) { + const { t } = useTranslation(); const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); const resolvedBufferId = useBufferStore((state) => bufferId ?? state.activeBufferId); const breadcrumbsEnabled = useSettingsStore((state) => state.settings.coreFeatures.breadcrumbs); @@ -190,25 +192,25 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct return { icon: , color: "text-success", - title: "Language Servers Active", + title: t("lsp.active"), }; case "connecting": return { - icon: , + icon: , color: "text-warning", - title: "Connecting to Language Server...", + title: t("lsp.connecting"), }; case "error": return { icon: , color: "text-destructive", - title: "Language server issue", + title: t("lsp.issue"), }; default: return { icon: , color: "text-subtle-foreground opacity-50", - title: "No active language servers", + title: t("lsp.noActive"), }; } }; @@ -216,7 +218,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct const config = getStatusConfig(lspStatus.status); const activeServers = lspStatus.supportedLanguages || []; const hasActiveServers = lspStatus.status === "connected" && activeServers.length > 0; - const projectName = rootFolderPath ? getFilenameFromPath(rootFolderPath) : "No Project"; + const projectName = rootFolderPath ? getFilenameFromPath(rootFolderPath) : t("lsp.noProject"); const activeBuffer = useBufferStore( useShallow((state) => { const buffer = getBufferById(state.buffers, resolvedBufferId); @@ -384,7 +386,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct const displayOptions = [ { id: "breadcrumbs", - label: "Breadcrumbs", + label: t("settings.advanced.feature.breadcrumbs.name"), checked: breadcrumbsEnabled, shortcut: null, onToggle: () => { @@ -397,14 +399,14 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "minimap", - label: "Minimap", + label: t("editor.minimap"), checked: showMinimap, shortcut: minimapShortcut, onToggle: () => updateSetting("showMinimap", !showMinimap), }, { id: "line-numbers", - label: "Line Numbers", + label: t("settings.editor.lineNumbers"), checked: lineNumbers, shortcut: null, onToggle: () => updateSetting("lineNumbers", !lineNumbers), @@ -412,7 +414,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "relative-line-numbers", - label: "Relative Line Numbers", + label: t("settings.editor.relativeLineNumbers"), checked: vimRelativeLineNumbers, shortcut: null, onToggle: () => updateSetting("vimRelativeLineNumbers", !vimRelativeLineNumbers), @@ -420,7 +422,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "word-wrap", - label: "Word Wrap", + label: t("settings.editor.wordWrap"), checked: wordWrap, shortcut: null, onToggle: () => updateSetting("wordWrap", !wordWrap), @@ -428,7 +430,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "parameter-hints", - label: "Parameter Hints", + label: t("settings.editor.parameterHints"), checked: parameterHints, shortcut: null, onToggle: () => updateSetting("parameterHints", !parameterHints), @@ -436,7 +438,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "auto-completion", - label: "Auto Completion", + label: t("settings.editor.autoCompletion"), checked: autoCompletion, shortcut: null, onToggle: () => updateSetting("autoCompletion", !autoCompletion), @@ -444,7 +446,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "inlay-hints", - label: "Inlay Hints", + label: t("settings.editor.inlayHints"), checked: inlayHints, shortcut: null, onToggle: () => updateSetting("inlayHints", !inlayHints), @@ -452,7 +454,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "code-lens", - label: "Code Lens", + label: t("settings.editor.codeLens"), checked: codeLens, shortcut: null, onToggle: () => updateSetting("codeLens", !codeLens), @@ -460,7 +462,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "semantic-tokens", - label: "Semantic Tokens", + label: t("settings.editor.semanticTokens"), checked: semanticTokens, shortcut: null, onToggle: () => updateSetting("semanticTokens", !semanticTokens), @@ -468,7 +470,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "vim-mode", - label: "Vim Mode", + label: t("settings.keyboard.vimMode"), checked: vimMode, shortcut: null, onToggle: () => updateSetting("vimMode", !vimMode), @@ -476,7 +478,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct }, { id: "inline-git-blame", - label: "Inline Git Blame", + label: t("editor.inlineGitBlame"), checked: enableInlineGitBlame, shortcut: null, onToggle: () => updateSetting("enableInlineGitBlame", !enableInlineGitBlame), @@ -486,8 +488,6 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct return ( <> - - {activeBuffer?.type === "editor" && (
{lang.displayName} ))} - No languages found + {t("editor.noLanguages")} @@ -554,7 +554,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct config.color, isLspOpen && "bg-accent text-foreground", )} - aria-label="Language server status" + aria-label={t("lsp.status")} tooltip={config.title} tooltipSide="bottom" > @@ -584,7 +584,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct size="xs" className={cn(editorMenuActionButtonClass, "flex-1")} > - {bulkLspAction === "restart" ? "Restarting..." : "Restart all"} + {bulkLspAction === "restart" ? t("lsp.restarting") : t("lsp.restartAll")}
)} @@ -617,7 +617,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct size="xs" className={editorMenuActionButtonClass} > - {isBusy ? "..." : "Restart"} + {isBusy ? "..." : t("lsp.restart")}
@@ -660,7 +660,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct ) : lspStatus.status === "connecting" ? ( - + ) : lspStatus.status === "error" ? ( @@ -672,19 +672,16 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct - Language server issue + {t("lsp.issue")} - - Check notifications for the latest error. Reinstall the affected language tools - from Extensions if the server binary is missing or failed to launch. - + {t("lsp.issueHint")} ) : ( - No active language servers + {t("lsp.noActive")} )} @@ -703,7 +700,7 @@ export function EditorStatusActions({ bufferId, editorViewKey }: EditorStatusAct "text-subtle-foreground", isViewMenuOpen && "border-border/60 bg-accent/80 text-foreground", )} - tooltip="Editor preferences" + tooltip={t("editor.preferences")} tooltipSide="bottom" > diff --git a/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx b/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx index 6e7b6ed00..84eac6cc5 100644 --- a/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx +++ b/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx @@ -23,12 +23,14 @@ interface DirectoryEntry { interface FilePathBreadcrumbProps { filePath: string; interactive?: boolean; + menuSide?: "top" | "bottom"; className?: string; } export function FilePathBreadcrumb({ filePath, interactive = true, + menuSide = "bottom", className, }: FilePathBreadcrumbProps) { const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); @@ -162,7 +164,7 @@ export function FilePathBreadcrumb({ setDropdown({ segmentIndex, x: rect.left, - y: rect.bottom + 2, + y: menuSide === "top" ? rect.top : rect.bottom + 2, items, currentPath: dirPath, navigationStack: [], @@ -187,6 +189,13 @@ export function FilePathBreadcrumb({ } : undefined } + lastSegmentLeading={ + + } className={className} /> diff --git a/windows/tauri/src/features/editor/components/toolbar/path-breadcrumb.tsx b/windows/tauri/src/features/editor/components/toolbar/path-breadcrumb.tsx index 2e5d5d89e..85fcf794e 100644 --- a/windows/tauri/src/features/editor/components/toolbar/path-breadcrumb.tsx +++ b/windows/tauri/src/features/editor/components/toolbar/path-breadcrumb.tsx @@ -1,4 +1,4 @@ -import { Fragment, type MouseEvent } from "react"; +import { Fragment, type MouseEvent, type ReactNode } from "react"; import { Button } from "@/ui/button"; import { Breadcrumb, @@ -15,6 +15,7 @@ interface PathBreadcrumbProps { interactive?: boolean; onSegmentClick?: (index: number, event: MouseEvent) => void; setSegmentRef?: (index: number, element: HTMLButtonElement | null) => void; + lastSegmentLeading?: ReactNode; className?: string; } @@ -23,6 +24,7 @@ export function PathBreadcrumb({ interactive = false, onSegmentClick, setSegmentRef, + lastSegmentLeading, className, }: PathBreadcrumbProps) { if (segments.length === 0) return null; @@ -52,16 +54,25 @@ export function PathBreadcrumb({ /> } className={cn( - "min-w-0 whitespace-nowrap", + "min-w-0 items-center gap-1 whitespace-nowrap", isLast ? "font-medium text-foreground hover:text-foreground" : "text-subtle-foreground hover:text-foreground", )} > + {isLast && lastSegmentLeading ? ( + {lastSegmentLeading} + ) : null} {segment} ) : isLast ? ( - + + {lastSegmentLeading ? ( + {lastSegmentLeading} + ) : null} {segment} ) : ( diff --git a/windows/tauri/src/features/editor/context-menu/context-menu.tsx b/windows/tauri/src/features/editor/context-menu/context-menu.tsx index 5448ed9a3..2e9a21ad3 100644 --- a/windows/tauri/src/features/editor/context-menu/context-menu.tsx +++ b/windows/tauri/src/features/editor/context-menu/context-menu.tsx @@ -1,5 +1,6 @@ import { EDITOR_CONSTANTS } from "@/features/editor/config/constants"; import { useEditorStateStore } from "@/features/editor/stores/state.store"; +import { useTranslation } from "@/i18n/locale-provider"; import { Dropdown } from "@/ui/dropdown"; import { IS_MAC } from "@/utils/platform"; import { @@ -14,6 +15,7 @@ interface EditorContextMenuProps extends EditorContextMenuHandlers { } const EditorContextMenu = ({ isOpen, position, onClose, ...handlers }: EditorContextMenuProps) => { + const { t } = useTranslation(); const hasSelection = (() => { if (!isOpen) return false; const selection = useEditorStateStore.getState().selection; @@ -28,6 +30,7 @@ const EditorContextMenu = ({ isOpen, position, onClose, ...handlers }: EditorCon hasSelection, modifierKey, altKey, + t, ...handlers, }); diff --git a/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx b/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx index 8ad20a56b..bb45e9a09 100644 --- a/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx +++ b/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx @@ -53,6 +53,7 @@ export interface EditorContextMenuItemOptions extends EditorContextMenuHandlers hasSelection: boolean; modifierKey: string; altKey: string; + t: (key: string) => string; } const noop = () => {}; @@ -69,6 +70,7 @@ export function buildEditorContextMenuItems({ hasSelection, modifierKey, altKey, + t, onCopy, onCut, onPaste, @@ -99,7 +101,7 @@ export function buildEditorContextMenuItems({ return [ { id: "copy", - label: "Copy", + label: t("files.copy"), icon: , keybinding: , disabled: isDisabled(onCopy, !hasSelection), @@ -107,7 +109,7 @@ export function buildEditorContextMenuItems({ }, { id: "cut", - label: "Cut", + label: t("files.cut"), icon: , keybinding: , disabled: isDisabled(onCut, !hasSelection), @@ -115,7 +117,7 @@ export function buildEditorContextMenuItems({ }, { id: "paste", - label: "Paste", + label: t("files.paste"), icon: , keybinding: , disabled: isDisabled(onPaste), @@ -123,7 +125,7 @@ export function buildEditorContextMenuItems({ }, { id: "delete", - label: "Delete", + label: t("files.delete"), icon: , keybinding: , disabled: isDisabled(onDelete, !hasSelection), @@ -132,7 +134,7 @@ export function buildEditorContextMenuItems({ separator("sep-1"), { id: "select-all", - label: "Select All", + label: t("editor.selectAll"), icon: , keybinding: , disabled: isDisabled(onSelectAll), @@ -140,14 +142,14 @@ export function buildEditorContextMenuItems({ }, { id: "duplicate", - label: "Duplicate Line", + label: t("editor.duplicateLine"), icon: , disabled: isDisabled(onDuplicate), onClick: onDuplicate ?? noop, }, { id: "select-next-occurrence", - label: "Add Selection to Next Match", + label: t("editor.addSelectionToNextMatch"), icon: , keybinding: , disabled: isDisabled(onSelectNextOccurrence), @@ -155,7 +157,7 @@ export function buildEditorContextMenuItems({ }, { id: "select-all-occurrences", - label: "Select All Occurrences", + label: t("editor.selectAllOccurrences"), icon: , keybinding: , disabled: isDisabled(onSelectAllOccurrences), @@ -164,7 +166,7 @@ export function buildEditorContextMenuItems({ separator("sep-2"), { id: "toggle-comment", - label: "Toggle Comment", + label: t("editor.toggleComment"), icon: , keybinding: , disabled: isDisabled(onToggleComment), @@ -172,7 +174,7 @@ export function buildEditorContextMenuItems({ }, { id: "indent", - label: "Indent", + label: t("editor.indent"), icon: , keybinding: , disabled: isDisabled(onIndent), @@ -180,7 +182,7 @@ export function buildEditorContextMenuItems({ }, { id: "outdent", - label: "Outdent", + label: t("editor.outdent"), icon: , keybinding: , disabled: isDisabled(onOutdent), @@ -188,7 +190,7 @@ export function buildEditorContextMenuItems({ }, { id: "format", - label: "Format Document", + label: t("editor.formatDocument"), icon: , keybinding: , disabled: isDisabled(onFormat), @@ -196,7 +198,7 @@ export function buildEditorContextMenuItems({ }, { id: "format-selection", - label: "Format Selection", + label: t("editor.formatSelection"), icon: , keybinding: , disabled: isDisabled(onFormatSelection, !hasSelection), @@ -205,7 +207,7 @@ export function buildEditorContextMenuItems({ separator("sep-3"), { id: "move-up", - label: "Move Line Up", + label: t("editor.moveLineUp"), icon: , keybinding: , disabled: isDisabled(onMoveLineUp), @@ -213,7 +215,7 @@ export function buildEditorContextMenuItems({ }, { id: "move-down", - label: "Move Line Down", + label: t("editor.moveLineDown"), icon: , keybinding: , disabled: isDisabled(onMoveLineDown), @@ -221,7 +223,7 @@ export function buildEditorContextMenuItems({ }, { id: "toggle-case", - label: "Toggle Case", + label: t("editor.toggleCase"), icon: , disabled: isDisabled(onToggleCase, !hasSelection), onClick: onToggleCase ?? noop, @@ -229,7 +231,7 @@ export function buildEditorContextMenuItems({ separator("sep-4"), { id: "go-to-definition", - label: "Go to Definition", + label: t("editor.goToDefinition"), icon: , keybinding: , disabled: isDisabled(onGoToDefinition), @@ -237,7 +239,7 @@ export function buildEditorContextMenuItems({ }, { id: "find-references", - label: "Find All References", + label: t("editor.findAllReferences"), icon: , keybinding: , disabled: isDisabled(onFindReferences), @@ -245,14 +247,14 @@ export function buildEditorContextMenuItems({ }, { id: "go-to-type-definition", - label: "Go to Type Definition", + label: t("editor.goToTypeDefinition"), icon: , disabled: isDisabled(onGoToTypeDefinition), onClick: onGoToTypeDefinition ?? noop, }, { id: "rename-symbol", - label: "Rename Symbol", + label: t("editor.renameSymbol"), icon: , keybinding: , disabled: isDisabled(onRenameSymbol), @@ -260,7 +262,7 @@ export function buildEditorContextMenuItems({ }, { id: "quick-fix", - label: "Quick Fix...", + label: t("editor.quickFix"), icon: , keybinding: , disabled: isDisabled(onQuickFix), @@ -268,7 +270,7 @@ export function buildEditorContextMenuItems({ }, { id: "show-hover", - label: "Show Hover", + label: t("editor.showHover"), icon: , keybinding: , disabled: isDisabled(onShowHover), @@ -276,7 +278,7 @@ export function buildEditorContextMenuItems({ }, { id: "trigger-suggest", - label: "Trigger Suggest", + label: t("editor.triggerSuggest"), icon: , keybinding: , disabled: isDisabled(onTriggerSuggest), @@ -285,7 +287,7 @@ export function buildEditorContextMenuItems({ separator("sep-5"), { id: "find", - label: "Find", + label: t("editor.find"), icon: , keybinding: , disabled: isDisabled(onFind), @@ -293,7 +295,7 @@ export function buildEditorContextMenuItems({ }, { id: "go-to-line", - label: "Go to Line", + label: t("editor.goToLine"), icon: , keybinding: , disabled: isDisabled(onGoToLine), @@ -301,7 +303,7 @@ export function buildEditorContextMenuItems({ }, { id: "bookmark", - label: "Toggle Bookmark", + label: t("editor.toggleBookmark"), icon: , keybinding: , disabled: isDisabled(onToggleBookmark), diff --git a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx index 31ce5e2ba..89ca8b82f 100644 --- a/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx +++ b/windows/tauri/src/features/file-explorer/hooks/use-file-explorer-context-menu.tsx @@ -38,6 +38,7 @@ import { Button } from "@/ui/button"; import { Dropdown, type MenuItem } from "@/ui/dropdown"; import Dialog from "@/ui/dialog"; import { toast } from "sonner"; +import { useTranslation } from "@/i18n/locale-provider"; import { getBaseName, getDirName, getRelativePath, joinPath } from "@/utils/path-helpers"; interface UseFileExplorerContextMenuOptions { @@ -77,9 +78,9 @@ interface PropertiesDialogState { const menuIconSpacer =
) : null} {activeTab === "repositories" && isDiscoveringRepos && availableRepoPaths.length === 0 ? ( - Detecting repositories... + {t("git.detectingRepositories")} ) : null} {activeTab === "repositories" && !isDiscoveringRepos && filteredRepoPaths.length === 0 ? ( - {branchQuery.trim() ? "No matching repositories" : "No repositories found"} + {branchQuery.trim() ? t("git.noMatchingRepositories") : t("git.noRepositoriesFound")} ) : null} {activeTab === "repositories" && filteredRepoPaths.length > 0 ? ( @@ -776,7 +790,7 @@ const GitBranchManager = ({ disabled={!createBranchName || isLoading} > - New Branch + {t("git.newBranch")} - Refresh + {t("git.refresh")} ) : null} @@ -796,7 +810,7 @@ const GitBranchManager = ({ disabled={!createWorktreePath || isLoadingWorktrees} > - {isLoadingWorktrees ? "Adding..." : "Add"} + {isLoadingWorktrees ? t("git.adding") : t("git.add")} - Refresh + {t("git.refresh")} ) : null} @@ -816,7 +830,7 @@ const GitBranchManager = ({ disabled={isSelectingRepo} > - {isSelectingRepo ? "Adding..." : "Add"} + {isSelectingRepo ? t("git.adding") : t("git.add")} - Refresh + {t("git.refresh")} {manualRepoPaths.length > 0 ? ( - Clear Added + {t("git.clearAdded")} ) : null} {selectionError ? ( @@ -865,6 +879,7 @@ function BranchRow({ onMerge: () => void; onRebase: () => void; }) { + const { t } = useTranslation(); return ( current : null} + accessory={isCurrent ? {t("git.current")} : null} action={ !isCurrent ? (
} @@ -911,16 +926,16 @@ function BranchRow({ - Merge into Current Branch + {t("git.mergeIntoCurrent")} - Rebase Current Branch onto This + {t("git.rebaseOntoThis")} - Delete Branch + {t("git.deleteBranch")} @@ -948,6 +963,7 @@ function RepositoryRow({ onMouseEnter: () => void; onSelect: () => void; }) { + const { t } = useTranslation(); const relativePath = workspaceRootPath ? getRelativePath(repoPath, workspaceRootPath) : repoPath; return ( @@ -971,8 +987,8 @@ function RepositoryRow({ )} accessory={ <> - {isCurrent ? current : null} - {isAdded ? added : null} + {isCurrent ? {t("git.current")} : null} + {isAdded ? {t("git.added")} : null} } /> @@ -992,6 +1008,7 @@ function WorktreeRow({ onMouseEnter: () => void; onSelect: () => void; }) { + const { t } = useTranslation(); return ( - {getBranchLabel(worktree)} + {getBranchLabel(worktree, t)} } isSelected={isSelected} @@ -1016,7 +1033,7 @@ function WorktreeRow({ "min-h-9", isCurrent ? "text-foreground" : "text-subtle-foreground hover:text-foreground", )} - accessory={isCurrent ? current : null} + accessory={isCurrent ? {t("git.current")} : null} /> ); } diff --git a/windows/tauri/src/features/git/components/git-commit-history.tsx b/windows/tauri/src/features/git/components/git-commit-history.tsx index b3f15c983..ce5cd4e96 100644 --- a/windows/tauri/src/features/git/components/git-commit-history.tsx +++ b/windows/tauri/src/features/git/components/git-commit-history.tsx @@ -17,6 +17,7 @@ import type { AuthUser } from "@/features/window/services/auth-api"; import { formatRelativeDate } from "@/utils/date"; import { matchesSearchQuery } from "@/utils/search-match"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; import type { GitCommit } from "../types/git.types"; import { useGitStore } from "../stores/git.store"; import { getGitAuthorAvatarUrl } from "../utils/git-author-avatar"; @@ -39,11 +40,11 @@ interface CommitItemProps { type HistorySearchScope = "all" | "message" | "author" | "hash"; -const HISTORY_SEARCH_SCOPE_LABELS: Record = { - all: "All Fields", - message: "Message", - author: "Author", - hash: "Hash", +const HISTORY_SEARCH_SCOPE_KEYS: Record = { + all: "git.historyFilterAll", + message: "git.historyFilterMessage", + author: "git.historyFilterAuthor", + hash: "git.historyFilterHash", }; function getCommitSearchFields(commit: GitCommit, scope: HistorySearchScope) { @@ -126,6 +127,7 @@ const GitCommitHistory = ({ ahead = 0, behind = 0, }: GitCommitHistoryProps) => { + const { t } = useTranslation(); const commits = useGitStore((state) => state.commits); const hasMoreCommits = useGitStore((state) => state.hasMoreCommits); const isLoadingMoreCommits = useGitStore((state) => state.isLoadingMoreCommits); @@ -253,17 +255,17 @@ const GitCommitHistory = ({ } > @@ -274,9 +276,9 @@ const GitCommitHistory = ({ value={historySearchScope} onValueChange={(scope) => setHistorySearchScope(scope as HistorySearchScope)} > - {(Object.keys(HISTORY_SEARCH_SCOPE_LABELS) as HistorySearchScope[]).map((scope) => ( + {(Object.keys(HISTORY_SEARCH_SCOPE_KEYS) as HistorySearchScope[]).map((scope) => ( - {HISTORY_SEARCH_SCOPE_LABELS[scope]} + {t(HISTORY_SEARCH_SCOPE_KEYS[scope])} ))} @@ -306,9 +308,9 @@ const GitCommitHistory = ({ ref={scrollContainerRef} > {!hasHistoryRows ? ( - + ) : filteredCommits.length === 0 ? ( - + ) : ( <> {filteredCommits.map((commit) => ( @@ -325,13 +327,13 @@ const GitCommitHistory = ({ {isLoadingMoreCommits && (
- +
)} {!hasMoreCommits && commits.length > 0 && (
- end of history + {t("git.historyEnd")}
)} diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index a080e6bce..d51e02f4e 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -11,6 +11,7 @@ import { useLayoutEffect, useRef, useState } from "react"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { useAuthStore } from "@/features/window/stores/auth.store"; import { hasProductCapability } from "@/features/window/lib/product-capabilities"; +import { useTranslation } from "@/i18n/locale-provider"; import { Button } from "@/ui/button"; import { ButtonGroup, ButtonGroupSeparator } from "@/ui/button-group"; import { Dropdown, type MenuItem } from "@/ui/dropdown"; @@ -191,6 +192,7 @@ const GitCommitPanel = ({ behind = 0, onCommitSuccess, }: GitCommitPanelProps) => { + const { t } = useTranslation(); const isAuthenticated = useAuthStore((state) => state.isAuthenticated); const subscription = useAuthStore((state) => state.subscription); const aiAutocompleteModelId = useSettingsStore((state) => state.settings.aiAutocompleteModelId); @@ -390,13 +392,13 @@ const GitCommitPanel = ({ const generateModeItems: MenuItem[] = [ { id: "title", - label: "Title only", + label: t("git.commitMessageTitleOnly"), icon: commitMessageMode === "title" ? : undefined, onClick: () => setCommitMessageMode("title"), }, { id: "body", - label: "Title + body", + label: t("git.commitMessageTitleAndBody"), icon: commitMessageMode === "body" ? : undefined, onClick: () => setCommitMessageMode("body"), }, @@ -422,7 +424,7 @@ const GitCommitPanel = ({ value={commitMessage} onChange={(e) => setCommitMessage(e.target.value)} onKeyDown={handleKeyDown} - placeholder="Commit message..." + placeholder={t("git.commitMessagePlaceholder")} variant="ghost" className={cn( "max-h-32 min-h-16 w-full resize-none overflow-x-hidden bg-transparent", @@ -438,8 +440,10 @@ const GitCommitPanel = ({
{stagedFilesCount > 0 - ? `${stagedFilesCount} file${stagedFilesCount !== 1 ? "s" : ""} staged` - : "No files staged"} + ? t(stagedFilesCount === 1 ? "git.fileStaged" : "git.filesStaged", { + count: stagedFilesCount, + }) + : t("git.noFilesStaged")} {hasRemoteChanges && ( @@ -485,8 +489,8 @@ const GitCommitPanel = ({ size="xs" onClick={() => void handleGenerateCommitMessage()} disabled={isGenerateDisabled} - tooltip="Generate commit message with AI" - aria-label="Generate commit message with AI" + tooltip={t("git.generateCommitMessageWithAI")} + aria-label={t("git.generateCommitMessageWithAI")} > @@ -498,8 +502,8 @@ const GitCommitPanel = ({ onClick={() => setIsGenerateModeMenuOpen((open) => !open)} disabled={isGenerating || isCommitting} active={isGenerateModeMenuOpen} - tooltip="Commit message format" - aria-label="Commit message format" + tooltip={t("git.commitMessageFormat")} + aria-label={t("git.commitMessageFormat")} aria-haspopup="menu" aria-expanded={isGenerateModeMenuOpen} > @@ -528,7 +532,7 @@ const GitCommitPanel = ({ : "text-primary hover:bg-primary/8 hover:text-primary/80", )} > - {isCommitting ? "Committing..." : "Commit"} + {isCommitting ? t("git.committing") : t("git.commit")}
diff --git a/windows/tauri/src/features/git/components/git-view.tsx b/windows/tauri/src/features/git/components/git-view.tsx index 63b49842c..ca914ef6b 100644 --- a/windows/tauri/src/features/git/components/git-view.tsx +++ b/windows/tauri/src/features/git/components/git-view.tsx @@ -12,6 +12,7 @@ import { UploadIcon as Upload, } from "@/ui/icons"; import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useTranslation } from "@/i18n/locale-provider"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { Button } from "@/ui/button"; import { ButtonGroup, ButtonGroupSeparator } from "@/ui/button-group"; @@ -94,6 +95,7 @@ type GitPaletteAction = | { type: "refresh" }; const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { + const { t } = useTranslation(); const gitStatus = useGitStore((state) => state.gitStatus); const isLoadingGitData = useGitStore((state) => state.isLoadingGitData); const isRefreshing = useGitStore((state) => state.isRefreshing); @@ -331,19 +333,24 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { aheadCount > 0 ? "push" : behindCount > 0 ? "pull" : "fetch"; const syncActionLabel = remoteAction !== null - ? REMOTE_ACTION_LABELS[remoteAction].present + ? t(`git.${remoteAction}ing`) : primaryRemoteAction === "push" - ? `Push ${aheadCount}` + ? t("git.pushCount", { count: aheadCount }) : primaryRemoteAction === "pull" - ? `Pull ${behindCount}` - : "Fetch"; + ? t("git.pullCount", { count: behindCount }) + : t("git.fetch"); const isRemoteActionLoading = remoteAction !== null; const syncMenuItems = useMemo( () => [ { id: "push", - label: aheadCount > 0 ? `Push ${aheadCount} commit${aheadCount !== 1 ? "s" : ""}` : "Push", + label: + aheadCount > 0 + ? aheadCount === 1 + ? t("git.pushCommit", { count: aheadCount }) + : t("git.pushCommits", { count: aheadCount }) + : t("git.push"), icon: , disabled: isRemoteActionLoading, onClick: () => void handleRemoteAction("push"), @@ -351,20 +358,24 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { { id: "pull", label: - behindCount > 0 ? `Pull ${behindCount} commit${behindCount !== 1 ? "s" : ""}` : "Pull", + behindCount > 0 + ? behindCount === 1 + ? t("git.pullCommit", { count: behindCount }) + : t("git.pullCommits", { count: behindCount }) + : t("git.pull"), icon: , disabled: isRemoteActionLoading, onClick: () => void handleRemoteAction("pull"), }, { id: "fetch", - label: "Fetch", + label: t("git.fetch"), icon: , disabled: isRemoteActionLoading, onClick: () => void handleRemoteAction("fetch"), }, ], - [aheadCount, behindCount, handleRemoteAction, isRemoteActionLoading], + [aheadCount, behindCount, handleRemoteAction, isRemoteActionLoading, t], ); useEffect(() => { @@ -574,7 +585,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { setShowGitActionsMenu(!showGitActionsMenu); setShowStashList(false); }} - tooltip="Git Actions" + tooltip={t("git.actions")} > @@ -584,11 +595,11 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { {isLoadingGitData || isRefreshing ? ( - + ) : ( )} @@ -720,11 +731,11 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { const tabMap: Record = { changes: { id: "changes", - label: "Changes", + label: t("workbench.changes"), }, history: { id: "history", - label: "History", + label: t("git.history"), }, }; @@ -736,7 +747,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { return ( <> - {renderActionsButton()} + {renderActionsButton()} No repository selected @@ -758,7 +769,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { return ( <> - {renderActionsButton()} + {renderActionsButton()} {renderGitActionsMenu({ hasGitRepo: false, onRefresh: handleManualRefresh })} @@ -770,7 +781,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { return ( <> - {renderActionsButton()} + {renderActionsButton()} Not a Git repository @@ -794,11 +805,12 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { return ( <> - + {renderRefreshButton()} {renderActionsButton()} +
{ { id: "changes", content: ( -
+
{ onCommitSuccess={refreshAfterAction} /> +
@@ -914,13 +927,15 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { }} query={commitDiffSearchQuery} onQueryChange={setCommitDiffSearchQuery} - placeholder="Search commits..." - meta={`${commits.length} commit${commits.length === 1 ? "" : "s"}`} + placeholder={t("git.searchCommits")} + meta={t(commits.length === 1 ? "git.commitCount" : "git.commitsCount", { + count: commits.length, + })} > {filteredDiffCommits.length === 0 ? ( - {commitDiffSearchQuery.trim() ? "No matching commits" : "No commits"} + {commitDiffSearchQuery.trim() ? t("git.noMatchingCommits") : t("git.noCommits")} ) : (
@@ -956,13 +971,18 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { }} query={branchDiffSearchQuery} onQueryChange={setBranchDiffSearchQuery} - placeholder="Compare current branch with..." - meta={`${branchDiffBranches.length} branch${branchDiffBranches.length === 1 ? "" : "es"}`} + placeholder={t("git.compareBranchPlaceholder")} + meta={t( + branchDiffBranches.length === 1 ? "git.branchCount" : "git.branchesCount", + { count: branchDiffBranches.length }, + )} > {filteredBranchDiffBranches.length === 0 ? ( - {branchDiffSearchQuery.trim() ? "No matching branches" : "No other branches"} + {branchDiffSearchQuery.trim() + ? t("git.noMatchingBranches") + : t("git.noOtherBranches")} ) : (
@@ -972,7 +992,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { type="button" icon={} title={branch} - description={`compare with ${gitStatus.branch}`} + description={t("git.compareWithBranch", { branch: gitStatus.branch })} onClick={() => void handleViewBranchDiff(branch)} disabled={isLoadingBranchDiff} className="min-h-9" @@ -990,13 +1010,15 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { }} query={stashSearchQuery} onQueryChange={setStashSearchQuery} - placeholder="Search stashes..." - meta={`${stashes.length} stash${stashes.length === 1 ? "" : "es"}`} + placeholder={t("git.searchStashes")} + meta={t(stashes.length === 1 ? "git.stashCount" : "git.stashesCount", { + count: stashes.length, + })} > {filteredStashes.length === 0 ? ( - {stashSearchQuery.trim() ? "No matching stashes" : "No stashes"} + {stashSearchQuery.trim() ? t("git.noMatchingStashes") : t("git.noStashes")} ) : ( filteredStashes.map((stash) => { diff --git a/windows/tauri/src/features/git/components/log/git-commit-file-tree.tsx b/windows/tauri/src/features/git/components/log/git-commit-file-tree.tsx index 3213138f4..427e97838 100644 --- a/windows/tauri/src/features/git/components/log/git-commit-file-tree.tsx +++ b/windows/tauri/src/features/git/components/log/git-commit-file-tree.tsx @@ -1,5 +1,6 @@ import { CaretDownIcon, CaretRightIcon, FileIcon, FolderIcon } from "@/ui/icons"; import { useMemo, useState } from "react"; +import { useTranslation } from "@/i18n/locale-provider"; import { cn } from "@/utils/cn"; import type { GitCommitFile } from "../../types/git.types"; @@ -69,6 +70,7 @@ function FileNode({ onSelect: (path: string) => void; onOpen: (path: string) => void; }) { + const { t } = useTranslation(); const isDirectory = node.children.length > 0 && !node.file; const isCollapsed = collapsed.has(node.path); @@ -83,7 +85,7 @@ function FileNode({ style={{ paddingLeft: 7 + depth * 14 }} onClick={() => (node.file ? onSelect(node.path) : onToggle(node.path))} onDoubleClick={() => node.file && onOpen(node.path)} - title={node.file ? "Double-click to open file diff" : node.path} + title={node.file ? t("git.log.openFileDiff") : node.path} > {isDirectory ? ( isCollapsed ? ( diff --git a/windows/tauri/src/features/git/components/log/git-commit-inspector.tsx b/windows/tauri/src/features/git/components/log/git-commit-inspector.tsx index 35a2a728b..a77ef87c3 100644 --- a/windows/tauri/src/features/git/components/log/git-commit-inspector.tsx +++ b/windows/tauri/src/features/git/components/log/git-commit-inspector.tsx @@ -2,6 +2,7 @@ import { useEffect, useRef, useState } from "react"; import { GitDiffIcon } from "@/ui/icons"; import { Button } from "@/ui/button"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/ui/resizable"; +import { useTranslation } from "@/i18n/locale-provider"; import { getCommitFiles } from "../../api/git-commits-api"; import { useGitLogPreferencesStore } from "../../stores/git-log-preferences.store"; import type { GitCommit, GitCommitFile } from "../../types/git.types"; @@ -18,6 +19,7 @@ export function GitCommitInspector({ commit: GitCommit | null; onOpenDiff: (commit: GitCommit, filePath?: string) => void; }) { + const { t } = useTranslation(); const [files, setFiles] = useState([]); const [loadState, setLoadState] = useState("idle"); const [selectedPath, setSelectedPath] = useState(null); @@ -62,9 +64,11 @@ export function GitCommitInspector({
- Commit files + {t("git.log.commitFiles")} - {loadState === "loading" ? "Loading…" : `${files.length} files`} + {loadState === "loading" + ? t("git.log.loadingShort") + : t("git.log.filesCount", { count: files.length })}
{!commit ? (
- Select a commit + {t("git.log.selectCommit")}
) : loadState === "loading" ? (
- Loading changed files… + {t("git.log.loadingChangedFiles")}
) : loadState === "failed" ? (
- Unable to load changed files + {t("git.log.unableToLoadFiles")}
) : files.length === 0 ? (
- No changed files + {t("git.log.noChangedFiles")}
) : ( ) : (
- Commit details + {t("git.log.commitDetails")}
)}
diff --git a/windows/tauri/src/features/git/components/log/git-commit-table.tsx b/windows/tauri/src/features/git/components/log/git-commit-table.tsx index 4681f96df..f4cc34434 100644 --- a/windows/tauri/src/features/git/components/log/git-commit-table.tsx +++ b/windows/tauri/src/features/git/components/log/git-commit-table.tsx @@ -19,6 +19,7 @@ import { } from "@/ui/icons"; import { Button } from "@/ui/button"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; import { type GitLogFilterScope, useGitLogPreferencesStore, @@ -53,6 +54,7 @@ export function GitCommitTable({ onCopyMessage: (commit: GitCommit) => void; onLoadMore: () => void; }) { + const { t } = useTranslation(); const query = useGitLogPreferencesStore.use.filterQuery(); const scope = useGitLogPreferencesStore.use.filterScope(); const showDecorations = useGitLogPreferencesStore.use.showDecorations(); @@ -127,15 +129,23 @@ export function GitCommitTable({ value={query} onChange={(event) => setFilterQuery(event.target.value)} className="min-w-0 flex-1 bg-transparent outline-none placeholder:text-subtle-foreground" - placeholder={`${scope[0].toUpperCase()}${scope.slice(1)} filter`} - aria-label="Filter Git log" + placeholder={t("git.log.filterPlaceholder", { + field: t( + scope === "author" + ? "git.log.filterAuthor" + : scope === "branch" + ? "git.log.filterBranch" + : "git.log.filterText", + ), + })} + aria-label={t("git.log.filter")} /> {query ? ( @@ -145,19 +155,19 @@ export function GitCommitTable({ value={scope} onChange={(event) => setFilterScope(event.target.value as GitLogFilterScope)} className="h-6 rounded border border-border bg-background px-1.5 text-subtle-foreground outline-none" - aria-label="Git log filter field" + aria-label={t("git.log.filterField")} > - - - + + +
- Commit - Author - Date + {t("git.log.commit")} + {t("git.log.author")} + {t("git.log.date")}
{visibleRows.length === 0 ? (
- {query ? "No commits match this filter" : "No commits in this view"} + {query ? t("git.log.noMatch") : t("git.log.noCommits")}
) : ( <> @@ -203,7 +213,7 @@ export function GitCommitTable({ onDoubleClick={() => onOpenDiff(row.commit)} onContextMenu={() => onSelect(row.commit)} onKeyDown={(event) => handleRowKeyDown(event, row.commit)} - title="Double-click or press Enter to open commit diff" + title={t("git.log.openDiffHint")} > @@ -216,21 +226,21 @@ export function GitCommitTable({ onOpenDiff(row.commit)}> - Open Commit Diff + {t("git.log.openCommitDiff")} Enter onCompareWithHead(row.commit)}> - Compare with HEAD + {t("git.log.compareWithHead")} onCopyHash(row.commit)}> - Copy Commit Hash + {t("git.log.copyCommitHash")} onCopyMessage(row.commit)}> - Copy Commit Message + {t("git.log.copyCommitMessage")} @@ -246,7 +256,7 @@ export function GitCommitTable({ disabled={isLoadingMore} onClick={onLoadMore} > - {isLoadingMore ? "Loading commits…" : "Load more commits"} + {isLoadingMore ? t("git.log.loadingCommits") : t("git.log.loadMore")}
) : null} diff --git a/windows/tauri/src/features/git/components/log/git-graph-row.test.ts b/windows/tauri/src/features/git/components/log/git-graph-row.test.ts new file mode 100644 index 000000000..12941c2bd --- /dev/null +++ b/windows/tauri/src/features/git/components/log/git-graph-row.test.ts @@ -0,0 +1,13 @@ +import { describe, expect, test } from "bun:test"; +import { gitGraphLabelClassName } from "./git-graph-row"; + +describe("git graph decoration labels", () => { + test("uses dark text on light theme so branch pills stay readable", () => { + expect(gitGraphLabelClassName({ title: "HEAD", kind: "head" })).toContain("text-sky-800"); + expect(gitGraphLabelClassName({ title: "master", kind: "branch" })).toContain("text-emerald-800"); + expect(gitGraphLabelClassName({ title: "origin/master", kind: "remote" })).toContain( + "text-indigo-800", + ); + expect(gitGraphLabelClassName({ title: "v1.0.0", kind: "tag" })).toContain("text-amber-900"); + }); +}); diff --git a/windows/tauri/src/features/git/components/log/git-graph-row.tsx b/windows/tauri/src/features/git/components/log/git-graph-row.tsx index 58543276c..eccda475b 100644 --- a/windows/tauri/src/features/git/components/log/git-graph-row.tsx +++ b/windows/tauri/src/features/git/components/log/git-graph-row.tsx @@ -10,16 +10,16 @@ function graphColor(index: number) { return GRAPH_COLORS[index % GRAPH_COLORS.length]; } -function labelClassName(label: GitGraphLabel) { +export function gitGraphLabelClassName(label: GitGraphLabel) { switch (label.kind) { case "head": - return "border-sky-500/40 bg-sky-500/18 text-sky-300"; + return "border-sky-700/35 bg-sky-500/18 text-sky-800 dark:border-sky-400/45 dark:bg-sky-500/20 dark:text-sky-200"; case "remote": - return "border-indigo-500/40 bg-indigo-500/18 text-indigo-300"; + return "border-indigo-700/35 bg-indigo-500/18 text-indigo-800 dark:border-indigo-400/45 dark:bg-indigo-500/20 dark:text-indigo-200"; case "tag": - return "border-amber-500/40 bg-amber-500/18 text-amber-300"; + return "border-amber-700/40 bg-amber-500/20 text-amber-900 dark:border-amber-400/45 dark:bg-amber-500/20 dark:text-amber-200"; default: - return "border-emerald-500/40 bg-emerald-500/18 text-emerald-300"; + return "border-emerald-700/35 bg-emerald-500/18 text-emerald-800 dark:border-emerald-400/45 dark:bg-emerald-500/20 dark:text-emerald-200"; } } @@ -85,7 +85,7 @@ export function GitGraphRow({ row, showDecorations }: { row: GraphRow; showDecor key={`${label.kind}:${label.title}:${index}`} className={cn( "max-w-28 shrink-0 truncate rounded border px-1.5 py-0.5 font-medium text-[10px] leading-none", - labelClassName(label), + gitGraphLabelClassName(label), )} title={label.title} > diff --git a/windows/tauri/src/features/git/components/log/git-log-title-bar.tsx b/windows/tauri/src/features/git/components/log/git-log-title-bar.tsx index c40690c2c..9d2368eda 100644 --- a/windows/tauri/src/features/git/components/log/git-log-title-bar.tsx +++ b/windows/tauri/src/features/git/components/log/git-log-title-bar.tsx @@ -6,6 +6,7 @@ import { MinusIcon, } from "@/ui/icons"; import { Button } from "@/ui/button"; +import { useTranslation } from "@/i18n/locale-provider"; export function GitLogTitleBar({ referenceName, @@ -34,18 +35,20 @@ export function GitLogTitleBar({ onCopyHash: () => void; onClose: () => void; }) { + const { t } = useTranslation(); + return (
- Git + {t("workbench.gitLog")} - Read-only + {t("footer.readOnly")} @@ -79,7 +82,7 @@ export function GitLogTitleBar({ onClick={onOpenDiff} > - Open Diff + {t("git.log.openDiff")}
diff --git a/windows/tauri/src/features/git/components/log/git-log-tool-window.tsx b/windows/tauri/src/features/git/components/log/git-log-tool-window.tsx index 87fcbc8f9..71867bdf6 100644 --- a/windows/tauri/src/features/git/components/log/git-log-tool-window.tsx +++ b/windows/tauri/src/features/git/components/log/git-log-tool-window.tsx @@ -3,6 +3,7 @@ import { toast } from "sonner"; import { Button } from "@/ui/button"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/ui/resizable"; import { tryWriteClipboardText } from "@/utils/clipboard"; +import { useTranslation } from "@/i18n/locale-provider"; import { useProjectStore } from "@/features/window/stores/project.store"; import { useUIState } from "@/features/window/stores/ui-state.store"; import { useGitLogController } from "../../hooks/use-git-log-controller"; @@ -20,6 +21,7 @@ import { GitLogTitleBar } from "./git-log-title-bar"; import { GitReferenceTree } from "./git-reference-tree"; export function GitLogToolWindow() { + const { t } = useTranslation(); const activeRepoPath = useRepositoryStore.use.activeRepoPath(); const rootFolderPath = useProjectStore((state) => state.rootFolderPath); const repoPath = activeRepoPath ?? rootFolderPath ?? null; @@ -77,10 +79,10 @@ export function GitLogToolWindow() { const copyCommitText = async (text: string, label: string) => { if (await tryWriteClipboardText(text)) { - toast.success(`${label} copied`); + toast.success(t("git.log.copied", { label })); return; } - toast.error(`Unable to copy ${label.toLocaleLowerCase()}`); + toast.error(t("git.log.copyFailed", { label: label.toLocaleLowerCase() })); }; const comparisonBaseRef = @@ -91,7 +93,7 @@ export function GitLogToolWindow() { return (
{ - if (selectedCommit) void copyCommitText(selectedCommit.hash, "Commit hash"); + if (selectedCommit) void copyCommitText(selectedCommit.hash, t("git.log.commitHash")); }} onClose={() => setIsBottomPaneVisible(false)} /> {loadState === "failed" && history.commits.length > 0 ? (
- {error ?? "Unable to refresh Git log."} + {error ?? t("git.log.unableToRefresh")}
) : null} {!repoPath ? (
-
No repository open
-
Open a Git workspace to view its log.
+
{t("git.log.noRepository")}
+
{t("git.log.openWorkspace")}
) : loadState === "loading" && history.commits.length === 0 ? (
- Loading Git log… + {t("git.log.loading")}
) : loadState === "failed" && history.commits.length === 0 ? (
-
{error ?? "Unable to load Git log."}
+
{error ?? t("git.log.unableToLoad")}
) : ( @@ -172,11 +174,11 @@ export function GitLogToolWindow() { onSelect={setSelectedCommit} onOpenDiff={(commit) => openDiff(commit)} onCompareWithHead={(commit) => void viewBranchDiff(commit.hash)} - onCopyHash={(commit) => void copyCommitText(commit.hash, "Commit hash")} + onCopyHash={(commit) => void copyCommitText(commit.hash, t("git.log.commitHash"))} onCopyMessage={(commit) => void copyCommitText( [commit.message, commit.description].filter(Boolean).join("\n\n"), - "Commit message", + t("git.log.commitMessage"), ) } onLoadMore={() => void loadMore()} diff --git a/windows/tauri/src/features/git/components/log/git-reference-tree.tsx b/windows/tauri/src/features/git/components/log/git-reference-tree.tsx index 0f1117538..fc76b9f57 100644 --- a/windows/tauri/src/features/git/components/log/git-reference-tree.tsx +++ b/windows/tauri/src/features/git/components/log/git-reference-tree.tsx @@ -8,14 +8,15 @@ import { } from "@/ui/icons"; import { useMemo } from "react"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; import { useGitLogPreferencesStore } from "../../stores/git-log-preferences.store"; import type { GitReference, GitReferenceKind } from "../../types/git.types"; import { buildGitReferenceTree, type GitReferenceTreeNode } from "../../utils/git-reference-tree"; -const SECTIONS: Array<{ kind: GitReferenceKind; title: string }> = [ - { kind: "local", title: "Local" }, - { kind: "remote", title: "Remote" }, - { kind: "tag", title: "Tags" }, +const SECTION_KEYS: Array<{ kind: GitReferenceKind; titleKey: string }> = [ + { kind: "local", titleKey: "git.log.local" }, + { kind: "remote", titleKey: "git.log.remote" }, + { kind: "tag", titleKey: "git.log.tags" }, ]; function ReferenceIcon({ kind }: { kind: GitReferenceKind }) { @@ -41,6 +42,7 @@ function ReferenceNode({ onToggleGroup: (id: string) => void; onSelect: (reference: GitReference) => void; }) { + const { t } = useTranslation(); const isGroup = node.children.length > 0; const isCollapsed = collapsedGroups.has(node.id); const left = 10 + depth * 14; @@ -59,7 +61,7 @@ function ReferenceNode({ type="button" className="flex size-3.5 shrink-0 items-center justify-center" onClick={() => onToggleGroup(node.id)} - aria-label={`${isCollapsed ? "Expand" : "Collapse"} ${node.path}`} + aria-label={t(isCollapsed ? "git.log.expand" : "git.log.collapse", { name: node.path })} > {isCollapsed ? : } @@ -109,6 +111,7 @@ export function GitReferenceTree({ selectedReference: GitReference | null; onSelect: (reference: GitReference | null) => void; }) { + const { t } = useTranslation(); const collapsedSectionIds = useGitLogPreferencesStore.use.collapsedReferenceSections(); const collapsedGroupIds = useGitLogPreferencesStore.use.collapsedReferenceGroups(); const { toggleReferenceSection, toggleReferenceGroup } = useGitLogPreferencesStore.use.actions(); @@ -116,14 +119,14 @@ export function GitReferenceTree({ const collapsedGroups = useMemo(() => new Set(collapsedGroupIds), [collapsedGroupIds]); const currentReference = references.find((reference) => reference.isCurrent) ?? null; const trees = useMemo( - () => new Map(SECTIONS.map(({ kind }) => [kind, buildGitReferenceTree(references, kind)])), + () => new Map(SECTION_KEYS.map(({ kind }) => [kind, buildGitReferenceTree(references, kind)])), [references], ); return (
- References + {t("git.log.references")} {references.length}
@@ -137,7 +140,7 @@ export function GitReferenceTree({ )} > - HEAD (Current Branch) + {t("git.log.headCurrentBranch")} {currentReference ? ( {currentReference.shortName} @@ -145,7 +148,7 @@ export function GitReferenceTree({ ) : null} - {SECTIONS.map(({ kind, title }) => { + {SECTION_KEYS.map(({ kind, titleKey }) => { const collapsed = collapsedSections.has(kind); const nodes = trees.get(kind) ?? []; return ( @@ -161,7 +164,7 @@ export function GitReferenceTree({ )} - {title} + {t(titleKey)} {nodes.length} {!collapsed && @@ -179,7 +182,7 @@ export function GitReferenceTree({ /> )) ) : ( -
None
+
{t("git.log.none")}
))}
); diff --git a/windows/tauri/src/features/git/components/stash/git-stash-modal.tsx b/windows/tauri/src/features/git/components/stash/git-stash-modal.tsx index b166fbc5e..67abed5a9 100644 --- a/windows/tauri/src/features/git/components/stash/git-stash-modal.tsx +++ b/windows/tauri/src/features/git/components/stash/git-stash-modal.tsx @@ -3,6 +3,7 @@ import { Button } from "@/ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "@/ui/dialog"; import Input from "@/ui/input"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; interface StashMessageModalProps { isOpen: boolean; @@ -44,6 +45,7 @@ const StashMessageModalContent = ({ title, placeholder, }: Omit) => { + const { t } = useTranslation(); const [message, setMessage] = useState(""); const [isLoading, setIsLoading] = useState(false); @@ -89,7 +91,7 @@ const StashMessageModalContent = ({ className="text-subtle-foreground ui-text-sm hover:text-foreground" size="xs" > - Cancel + {t("files.cancel")} diff --git a/windows/tauri/src/features/git/components/status/git-status-panel.tsx b/windows/tauri/src/features/git/components/status/git-status-panel.tsx index d5b154f77..c51ba7a6c 100644 --- a/windows/tauri/src/features/git/components/status/git-status-panel.tsx +++ b/windows/tauri/src/features/git/components/status/git-status-panel.tsx @@ -13,6 +13,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { ThemedFileIcon } from "@/extensions/icon-themes/components/themed-file-icon"; import { writeSidebarResourceDragData } from "@/features/sidebar/utils/sidebar-resource-drag"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { useTranslation } from "@/i18n/locale-provider"; import Badge from "@/ui/badge"; import { Button } from "@/ui/button"; import { ButtonGroup, ButtonGroupSeparator } from "@/ui/button-group"; @@ -73,11 +74,6 @@ interface ContextMenuState { type StatusSection = "tracked" | "untracked"; type GitStatusDiffScope = "all" | "unstaged" | "staged"; -const SECTION_LABELS = { - tracked: "Tracked", - untracked: "Untracked", -} as const; - const GitStatusPanel = ({ files, fileDiffStats, @@ -90,6 +86,7 @@ const GitStatusPanel = ({ onRefresh, repoPath, }: GitStatusPanelProps) => { + const { t } = useTranslation(); const gitChangesFolderView = useSettingsStore((state) => state.settings.gitChangesFolderView); const confirmBeforeDiscard = useSettingsStore((state) => state.settings.confirmBeforeDiscard); const contextMenu = useDropdownMenu(); @@ -510,34 +507,34 @@ const GitStatusPanel = ({ () => [ { id: "unstaged", - label: "Unstaged", + label: t("git.unstaged"), disabled: !hasUnstagedDiffableFiles || isLoading, onClick: () => openScopedDiff("unstaged"), }, { id: "staged", - label: "Staged", + label: t("git.staged"), disabled: !hasStagedDiffableFiles || isLoading, onClick: () => openScopedDiff("staged"), }, { id: "sep-working-tree", label: "", separator: true, onClick: () => {} }, { id: "commit", - label: "Commit", + label: t("git.commit"), disabled: !onShowCommitDiffPicker, keybinding: , onClick: () => openDiffPicker(onShowCommitDiffPicker), }, { id: "branch", - label: "Branch", + label: t("git.branch"), disabled: !onShowBranchDiffPicker, keybinding: , onClick: () => openDiffPicker(onShowBranchDiffPicker), }, { id: "stash", - label: "Stash", + label: t("git.stash"), disabled: !onShowStashDiffPicker, keybinding: , onClick: () => openDiffPicker(onShowStashDiffPicker), @@ -552,6 +549,7 @@ const GitStatusPanel = ({ onShowStashDiffPicker, openDiffPicker, openScopedDiff, + t, ], ); @@ -568,9 +566,9 @@ const GitStatusPanel = ({ size="xs" onClick={() => openScopedDiff("all")} disabled={!onViewDiff || isLoading} - aria-label="View all diffs" + aria-label={t("git.viewDiff")} > - View Diff + {t("git.viewDiff")}
diff --git a/windows/tauri/src/features/global-search/components/global-search-state.tsx b/windows/tauri/src/features/global-search/components/global-search-state.tsx index 2122bdd73..b2552cff2 100644 --- a/windows/tauri/src/features/global-search/components/global-search-state.tsx +++ b/windows/tauri/src/features/global-search/components/global-search-state.tsx @@ -8,6 +8,7 @@ import { EmptyMedia, EmptyTitle, } from "@/ui/empty"; +import { useTranslation } from "@/i18n/locale-provider"; import type { ContentSearchAvailability } from "../hooks/use-content-search"; interface GlobalSearchStateProps { @@ -45,11 +46,13 @@ export function GlobalSearchState({ hasFileFilters, onRetry, }: GlobalSearchStateProps) { + const { t } = useTranslation(); + if (availability === "no-workspace") { return ( ); } @@ -57,9 +60,7 @@ export function GlobalSearchState({ if (availability === "unsupported") { return ( - - Global search is not available for this workspace type. - + {t("search.unsupported")} ); } @@ -67,8 +68,8 @@ export function GlobalSearchState({ if (!query.trim()) { return ( ); } @@ -85,12 +86,12 @@ export function GlobalSearchState({ return ( - Search failed + {t("search.failed")} {error} @@ -101,10 +102,11 @@ export function GlobalSearchState({ return ( - No results found + {t("search.noResults")} - No results found for "{debouncedQuery}" - {hasFileFilters ? " with the current file filters" : ""} + {t(hasFileFilters ? "search.noResultsForWithFilters" : "search.noResultsFor", { + query: debouncedQuery, + })} diff --git a/windows/tauri/src/features/global-search/components/global-search-toolbar.tsx b/windows/tauri/src/features/global-search/components/global-search-toolbar.tsx index ef8a300b7..fbf51cdaf 100644 --- a/windows/tauri/src/features/global-search/components/global-search-toolbar.tsx +++ b/windows/tauri/src/features/global-search/components/global-search-toolbar.tsx @@ -3,6 +3,7 @@ import { MagnifyingGlassIcon as MagnifyingGlass, XIcon as X } from "@/ui/icons"; import Badge from "@/ui/badge"; import { Button } from "@/ui/button"; import { CommandInput } from "@/ui/command"; +import { useTranslation } from "@/i18n/locale-provider"; import { SEARCH_TOGGLE_ICONS, SearchReplaceRow, SearchReplaceToggle } from "@/ui/search"; import { ToggleGroup, type ToggleGroupOption } from "@/ui/toggle-group"; import type { ContentSearchOptions } from "../types/global-search.types"; @@ -64,20 +65,22 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ excludeQuery, onExcludeQueryChange, }: GlobalSearchToolbarProps) { + const { t } = useTranslation(); + const searchInFilesLabel = t("workbench.searchInFiles"); const searchOptionButtons: ToggleGroupOption[] = [ { value: "case-sensitive", - label: "Match case", + label: t("search.matchCase"), icon: SEARCH_TOGGLE_ICONS.caseSensitive, }, { value: "whole-word", - label: "Match whole word", + label: t("search.matchWholeWord"), icon: SEARCH_TOGGLE_ICONS.wholeWord, }, { value: "regex", - label: "Use regular expression", + label: t("search.useRegex"), icon: SEARCH_TOGGLE_ICONS.regex, }, ]; @@ -89,8 +92,8 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ onDetailsVisibleChange(!detailsVisible)} - expandedLabel="Hide details" - collapsedLabel="Show details" + expandedLabel={t("search.hideDetails")} + collapsedLabel={t("search.showDetails")} />
@@ -99,9 +102,9 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ value={query} onChange={onQueryChange} onKeyDown={onSearchKeyDown} - placeholder="Search in files..." + placeholder={searchInFilesLabel} className="font-sans min-w-0" - aria-label="Search in files" + aria-label={searchInFilesLabel} autoComplete="off" spellCheck={false} /> @@ -114,7 +117,7 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ onQueryChange(""); inputRef.current?.focus(); }} - aria-label="Clear search" + aria-label={t("search.clear")} className="shrink-0 text-subtle-foreground" > @@ -131,7 +134,7 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ setSearchOption("wholeWord", next.wholeWord); setSearchOption("useRegex", next.useRegex); }} - ariaLabel="Search options" + ariaLabel={t("search.options")} variant="segmented" size="xs" wrap={false} @@ -176,18 +179,18 @@ export const GlobalSearchToolbar = memo(function GlobalSearchToolbar({ diff --git a/windows/tauri/src/features/keymaps/commands/command-registry.ts b/windows/tauri/src/features/keymaps/commands/command-registry.ts index b33b81d22..352194081 100644 --- a/windows/tauri/src/features/keymaps/commands/command-registry.ts +++ b/windows/tauri/src/features/keymaps/commands/command-registry.ts @@ -632,6 +632,12 @@ const viewCommands: Command[] = [ keybinding: "cmd+shift+f", execute: openGlobalSearchBuffer, }, + { + id: "workbench.searchEverywhere", + title: "Search Everywhere", + category: "View", + execute: openQuickOpen, + }, { id: "workbench.showProjectSearch", title: "Project Search", diff --git a/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts b/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts index dbce7746a..c126fb92d 100644 --- a/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts +++ b/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { FOOTER_LEADING_ITEM_IDS, normalizeItemOrder } from "@/features/layout/config/item-order"; +import { SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS } from "@/features/layout/config/item-order"; import { defaultKeymaps } from "./default-keymaps"; describe("Git Log workbench entry points", () => { @@ -11,9 +11,12 @@ describe("Git Log workbench entry points", () => { }); }); - test("adds the Git button to an existing persisted footer order", () => { - expect( - normalizeItemOrder(["branch", "terminal", "diagnostics"], FOOTER_LEADING_ITEM_IDS), - ).toEqual(["branch", "terminal", "diagnostics", "gitLog"]); + test("places Git Log on the bottom activity rail above Settings", () => { + expect(SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.indexOf("run")).toBeLessThan( + SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.indexOf("gitLog"), + ); + expect(SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.indexOf("gitLog")).toBeLessThan( + SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.indexOf("settings"), + ); }); }); diff --git a/windows/tauri/src/features/keymaps/hooks/use-keymaps.ts b/windows/tauri/src/features/keymaps/hooks/use-keymaps.ts index 0a77b110a..35f0046d2 100644 --- a/windows/tauri/src/features/keymaps/hooks/use-keymaps.ts +++ b/windows/tauri/src/features/keymaps/hooks/use-keymaps.ts @@ -25,6 +25,11 @@ import { parseKeybinding } from "../utils/parser"; import type { ParsedKey } from "../utils/parser"; import { keymapRegistry } from "../utils/registry"; import { isVimOwnedShortcut } from "../utils/vim-shortcuts"; +import { + DoubleShiftGestureRecognizer, + isShiftOnlyKey, + keyboardEventHasNonShiftModifiers, +} from "../utils/double-shift-recognizer"; const CHORD_TIMEOUT = 1000; // 1 second to complete chord const CLOSE_TAB_CLOSE_REQUEST_WINDOW_MS = 1000; @@ -45,6 +50,7 @@ export function useKeymaps() { const [chordState, setChordState] = useState([]); const chordTimeoutRef = useRef(null); const lastCloseTabShortcutAtRef = useRef(0); + const doubleShiftRecognizerRef = useRef(new DoubleShiftGestureRecognizer()); useEffect(() => { if (!IS_LINUX || typeof window === "undefined") return; @@ -82,6 +88,52 @@ export function useKeymaps() { }; }, []); + useEffect(() => { + const recognizer = doubleShiftRecognizerRef.current; + + const handleShiftKeyDown = (event: KeyboardEvent) => { + if (contexts.isRecordingKeybinding) { + recognizer.reset(); + return; + } + + if (isShiftOnlyKey(event)) { + if (!event.repeat) { + recognizer.handleFlagsChanged( + true, + keyboardEventHasNonShiftModifiers(event), + performance.now() / 1000, + ); + } + return; + } + + recognizer.handleKeyDown(); + }; + + const handleShiftKeyUp = (event: KeyboardEvent) => { + if (contexts.isRecordingKeybinding || !isShiftOnlyKey(event)) return; + + const shouldOpenSearch = recognizer.handleFlagsChanged( + false, + keyboardEventHasNonShiftModifiers(event), + performance.now() / 1000, + ); + if (!shouldOpenSearch) return; + + event.preventDefault(); + event.stopPropagation(); + keymapRegistry.executeCommand("workbench.searchEverywhere"); + }; + + window.addEventListener("keydown", handleShiftKeyDown, true); + window.addEventListener("keyup", handleShiftKeyUp, true); + return () => { + window.removeEventListener("keydown", handleShiftKeyDown, true); + window.removeEventListener("keyup", handleShiftKeyUp, true); + }; + }, [contexts.isRecordingKeybinding]); + useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { // Skip all keybinding handling when recording a new keybinding diff --git a/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.test.ts b/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.test.ts new file mode 100644 index 000000000..356a069ce --- /dev/null +++ b/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.test.ts @@ -0,0 +1,40 @@ +import { describe, expect, test } from "bun:test"; +import { DoubleShiftGestureRecognizer } from "./double-shift-recognizer"; + +describe("double Shift search everywhere", () => { + test("requires two standalone taps within the threshold", () => { + const recognizer = new DoubleShiftGestureRecognizer(0.35); + + expect(recognizer.handleFlagsChanged(true, false, 1.0)).toBe(false); + expect(recognizer.handleFlagsChanged(false, false, 1.05)).toBe(false); + expect(recognizer.handleFlagsChanged(true, false, 1.2)).toBe(false); + expect(recognizer.handleFlagsChanged(false, false, 1.25)).toBe(true); + }); + + test("rejects Shift used for uppercase typing and keys between taps", () => { + const recognizer = new DoubleShiftGestureRecognizer(0.35); + + recognizer.handleFlagsChanged(true, false, 1.0); + recognizer.handleKeyDown(); + expect(recognizer.handleFlagsChanged(false, false, 1.05)).toBe(false); + + recognizer.handleFlagsChanged(true, false, 1.2); + recognizer.handleKeyDown(); + expect(recognizer.handleFlagsChanged(false, false, 1.25)).toBe(false); + + recognizer.handleFlagsChanged(true, false, 2.0); + recognizer.handleFlagsChanged(false, false, 2.05); + recognizer.handleKeyDown(); + recognizer.handleFlagsChanged(true, false, 2.2); + expect(recognizer.handleFlagsChanged(false, false, 2.25)).toBe(false); + }); + + test("ignores a second tap after the threshold", () => { + const recognizer = new DoubleShiftGestureRecognizer(0.35); + + recognizer.handleFlagsChanged(true, false, 1.0); + recognizer.handleFlagsChanged(false, false, 1.05); + recognizer.handleFlagsChanged(true, false, 1.5); + expect(recognizer.handleFlagsChanged(false, false, 1.55)).toBe(false); + }); +}); diff --git a/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.ts b/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.ts new file mode 100644 index 000000000..7148ad983 --- /dev/null +++ b/windows/tauri/src/features/keymaps/utils/double-shift-recognizer.ts @@ -0,0 +1,76 @@ +export const DOUBLE_SHIFT_THRESHOLD_SECONDS = 0.35; + +export class DoubleShiftGestureRecognizer { + readonly threshold: number; + private shiftWasDown = false; + private currentPressIsStandalone = false; + private lastStandaloneTap: number | null = null; + + constructor(threshold = DOUBLE_SHIFT_THRESHOLD_SECONDS) { + this.threshold = threshold; + } + + handleKeyDown() { + this.currentPressIsStandalone = false; + this.lastStandaloneTap = null; + } + + reset() { + this.shiftWasDown = false; + this.currentPressIsStandalone = false; + this.lastStandaloneTap = null; + } + + handleFlagsChanged( + isShiftDown: boolean, + hasOtherModifiers: boolean, + timestamp: number, + ): boolean { + if (isShiftDown && !this.shiftWasDown) { + this.currentPressIsStandalone = !hasOtherModifiers; + this.shiftWasDown = true; + return false; + } + + if (isShiftDown && this.shiftWasDown) { + if (hasOtherModifiers) { + this.currentPressIsStandalone = false; + this.lastStandaloneTap = null; + } + return false; + } + + if (!isShiftDown && this.shiftWasDown) { + this.shiftWasDown = false; + const wasStandalone = this.currentPressIsStandalone; + this.currentPressIsStandalone = false; + if (!wasStandalone || hasOtherModifiers) { + this.lastStandaloneTap = null; + return false; + } + if ( + this.lastStandaloneTap !== null && + timestamp - this.lastStandaloneTap >= 0 && + timestamp - this.lastStandaloneTap < this.threshold + ) { + this.lastStandaloneTap = null; + return true; + } + this.lastStandaloneTap = timestamp; + return false; + } + + if (hasOtherModifiers) { + this.lastStandaloneTap = null; + } + return false; + } +} + +export function isShiftOnlyKey(event: KeyboardEvent) { + return event.key === "Shift" || event.code === "ShiftLeft" || event.code === "ShiftRight"; +} + +export function keyboardEventHasNonShiftModifiers(event: KeyboardEvent) { + return event.ctrlKey || event.metaKey || event.altKey; +} diff --git a/windows/tauri/src/features/layout/components/footer/footer-editor-status.tsx b/windows/tauri/src/features/layout/components/footer/footer-editor-status.tsx new file mode 100644 index 000000000..e859d7a97 --- /dev/null +++ b/windows/tauri/src/features/layout/components/footer/footer-editor-status.tsx @@ -0,0 +1,123 @@ +import { useEffect, useState } from "react"; +import { CursorPositionChip } from "@/features/editor/components/toolbar/editor-status-actions"; +import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { useEditorStateStore } from "@/features/editor/stores/state.store"; +import { getBufferById } from "@/features/editor/utils/buffer-index"; +import { useGitStore } from "@/features/git/stores/git.store"; +import { useSidebarPaneController } from "@/features/layout/hooks/use-sidebar-pane-controller"; +import type { FooterTrailingItemId } from "@/features/layout/config/item-order"; +import { + countUniqueGitChanges, + formatMemoryMegabytes, + readJsHeapMemory, + TEXT_FILE_ENCODING, +} from "@/features/layout/utils/footer-status"; +import type { ChromeItem } from "@/features/layout/utils/chrome-items"; +import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { useTranslation } from "@/i18n/locale-provider"; +import { CheckCircleIcon, HardDrivesIcon, LockIcon, LockOpenIcon } from "@/ui/icons"; +import { FooterStatusChip, FooterStatusLabel } from "./footer-status-chip"; + +const MEMORY_POLL_INTERVAL_MS = 2000; + +export function useFooterEditorStatusItems(): Array | null> { + const { t } = useTranslation(); + const { openSidebarView } = useSidebarPaneController(); + const tabSize = useSettingsStore((state) => state.settings.tabSize); + const activeEditorViewKey = useEditorStateStore.use.activeEditorViewKey(); + const gitFiles = useGitStore((state) => state.gitStatus?.files ?? state.workspaceGitStatus?.files); + const activeBuffer = useBufferStore((state) => { + const buffer = getBufferById(state.buffers, state.activeBufferId); + return buffer + ? { + type: buffer.type, + readOnly: buffer.type === "editor" && buffer.readOnly === true, + } + : null; + }); + const [memoryUsage, setMemoryUsage] = useState(() => readJsHeapMemory()); + const changeCount = countUniqueGitChanges(gitFiles); + const isEditorBuffer = activeBuffer?.type === "editor"; + + useEffect(() => { + const updateMemory = () => setMemoryUsage(readJsHeapMemory()); + updateMemory(); + const intervalId = window.setInterval(updateMemory, MEMORY_POLL_INTERVAL_MS); + return () => window.clearInterval(intervalId); + }, []); + + return [ + isEditorBuffer + ? { + id: "cursor", + label: t("footer.cursor"), + content: , + } + : null, + isEditorBuffer + ? { + id: "encoding", + label: t("footer.encoding"), + content: {TEXT_FILE_ENCODING}, + } + : null, + isEditorBuffer + ? { + id: "indent", + label: t("footer.indent"), + content: ( + {t("footer.spaces", { count: tabSize })} + ), + } + : null, + isEditorBuffer + ? { + id: "readOnly", + label: activeBuffer.readOnly ? t("footer.readOnly") : t("footer.writable"), + content: ( + + {activeBuffer.readOnly ? : } + + ), + } + : null, + memoryUsage + ? { + id: "memory", + label: t("footer.memory"), + content: ( + + + {t("footer.memoryUsage", { + total: formatMemoryMegabytes(memoryUsage.totalBytes), + used: formatMemoryMegabytes(memoryUsage.usedBytes), + })} + + ), + } + : null, + { + id: "gitChanges", + label: t("workbench.changes"), + content: ( + openSidebarView("git")} + aria-label={ + changeCount === 0 + ? t("footer.noChanges") + : t(changeCount === 1 ? "footer.change" : "footer.changes", { count: changeCount }) + } + > + {changeCount === 0 ? ( + + ) : ( + t(changeCount === 1 ? "footer.change" : "footer.changes", { count: changeCount }) + )} + + ), + }, + ]; +} diff --git a/windows/tauri/src/features/layout/components/footer/footer-file-path-item.tsx b/windows/tauri/src/features/layout/components/footer/footer-file-path-item.tsx new file mode 100644 index 000000000..b84335728 --- /dev/null +++ b/windows/tauri/src/features/layout/components/footer/footer-file-path-item.tsx @@ -0,0 +1,37 @@ +import { FilePathBreadcrumb } from "@/features/editor/components/toolbar/file-path-breadcrumb"; +import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { getBufferById } from "@/features/editor/utils/buffer-index"; +import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import type { FooterLeadingItemId } from "@/features/layout/config/item-order"; +import type { ChromeItem } from "@/features/layout/utils/chrome-items"; +import { useShallow } from "zustand/react/shallow"; + +export function useFooterFilePathItem(): ChromeItem | null { + const breadcrumbsEnabled = useSettingsStore((state) => state.settings.coreFeatures.breadcrumbs); + const activeBuffer = useBufferStore( + useShallow((state) => { + const buffer = getBufferById(state.buffers, state.activeBufferId); + return buffer + ? { + path: buffer.path, + type: buffer.type, + } + : null; + }), + ); + + if (!breadcrumbsEnabled || !activeBuffer?.path) return null; + + return { + id: "filePath", + label: "File path", + content: ( + + ), + }; +} diff --git a/windows/tauri/src/features/layout/components/footer/footer-status-chip.tsx b/windows/tauri/src/features/layout/components/footer/footer-status-chip.tsx new file mode 100644 index 000000000..b8e8d162d --- /dev/null +++ b/windows/tauri/src/features/layout/components/footer/footer-status-chip.tsx @@ -0,0 +1,36 @@ +import type { ButtonHTMLAttributes, ComponentProps, ReactNode } from "react"; +import { cn } from "@/utils/cn"; + +const footerStatusChipClassName = + "font-sans inline-flex h-(--lithe-chrome-control-height) max-w-50 shrink-0 items-center gap-1 rounded-md border-0 px-1.5 ui-text-chrome leading-none text-subtle-foreground transition-colors hover:bg-accent hover:text-foreground"; + +export function FooterStatusChip({ + className, + children, + ...props +}: ButtonHTMLAttributes & { children: ReactNode }) { + return ( + + ); +} + +export function FooterStatusLabel({ + className, + children, + ...props +}: ComponentProps<"span"> & { children: ReactNode }) { + return ( + + {children} + + ); +} diff --git a/windows/tauri/src/features/layout/components/footer/footer.tsx b/windows/tauri/src/features/layout/components/footer/footer.tsx index acf625c44..6aff08ba7 100644 --- a/windows/tauri/src/features/layout/components/footer/footer.tsx +++ b/windows/tauri/src/features/layout/components/footer/footer.tsx @@ -1,12 +1,5 @@ import { useMemo } from "react"; -import { - BACKEND_UNAVAILABLE_TOOLTIP, - isBackendCapabilityAvailable, -} from "@/config/backend-capabilities"; -import { useDiagnosticsStore } from "@/features/diagnostics/stores/diagnostics.store"; -import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; -import { useUIState } from "@/features/window/stores/ui-state.store"; import { NotificationsTrigger } from "@/features/notifications/components/notifications-trigger"; import { FOOTER_TRAILING_ITEM_IDS, @@ -15,118 +8,30 @@ import { type FooterTrailingItemId, } from "@/features/layout/config/item-order"; import { orderChromeItems, type ChromeItem } from "@/features/layout/utils/chrome-items"; +import { useTranslation } from "@/i18n/locale-provider"; import { useFooterGitBranchItem } from "./footer-git-branch-item"; -import { FooterTabControl } from "./footer-tab-control"; -import { - ClockCounterClockwiseIcon, - DatabaseIcon, - TerminalWindowIcon, - WarningIcon, -} from "@/ui/icons"; +import { useFooterFilePathItem } from "./footer-file-path-item"; +import { useFooterEditorStatusItems } from "./footer-editor-status"; import { ChromeBar, ChromeGroup } from "@/ui/chrome"; const Footer = () => { - const terminalEnabled = useSettingsStore((state) => state.settings.coreFeatures.terminal); - const diagnosticsEnabled = useSettingsStore((state) => state.settings.coreFeatures.diagnostics); + const { t } = useTranslation(); const footerLeadingItemsOrder = useSettingsStore( (state) => state.settings.footerLeadingItemsOrder, ); const footerTrailingItemsOrder = useSettingsStore( (state) => state.settings.footerTrailingItemsOrder, ); - const isCommandPaletteVisible = useUIState((state) => state.isCommandPaletteVisible); - const commandPaletteInitialView = useUIState((state) => state.commandPaletteInitialView); - const isBottomPaneVisible = useUIState((state) => state.isBottomPaneVisible); - const bottomPaneActiveTab = useUIState((state) => state.bottomPaneActiveTab); - const setIsBottomPaneVisible = useUIState((state) => state.setIsBottomPaneVisible); - const setBottomPaneActiveTab = useUIState((state) => state.setBottomPaneActiveTab); - const openCommandPaletteView = useUIState((state) => state.openCommandPaletteView); - const isDiagnosticsBufferActive = useBufferStore((state) => { - if (!state.activeBufferId) return false; - return state.buffers.some( - (buffer) => buffer.id === state.activeBufferId && buffer.type === "diagnostics", - ); - }); - const openDiagnosticsBuffer = useBufferStore.use.actions().openDiagnosticsBuffer; + const filePathItem = useFooterFilePathItem(); const branchItem = useFooterGitBranchItem(); - const diagnosticsByFile = useDiagnosticsStore.use.diagnosticsByFile(); - const diagnosticsCount = Array.from(diagnosticsByFile.values()).reduce( - (total, diagnostics) => total + diagnostics.length, - 0, - ); + const editorStatusItems = useFooterEditorStatusItems(); const footerLeadingItemsSource: Array | null> = [ + filePathItem, branchItem, - { - id: "gitLog", - label: "Git", - content: ( - { - const showingGitLog = !isBottomPaneVisible || bottomPaneActiveTab !== "gitLog"; - setBottomPaneActiveTab("gitLog"); - setIsBottomPaneVisible(showingGitLog); - }} - > - - Git - - ), - }, - terminalEnabled - ? { - id: "terminal", - label: "Terminal", - content: ( - { - setBottomPaneActiveTab("terminal"); - const showingTerminal = !isBottomPaneVisible || bottomPaneActiveTab !== "terminal"; - setIsBottomPaneVisible(showingTerminal); - }} - > - - - ), - } - : null, - diagnosticsEnabled - ? { - id: "diagnostics", - label: "Diagnostics", - content: ( - 0 - ? `${diagnosticsCount} diagnostic${diagnosticsCount === 1 ? "" : "s"}` - : "Open Diagnostics" - } - active={isDiagnosticsBufferActive} - tone={!isDiagnosticsBufferActive && diagnosticsCount > 0 ? "warning" : "default"} - commandId="workbench.toggleDiagnostics" - onClick={() => openDiagnosticsBuffer()} - > - - {diagnosticsCount > 0 && {diagnosticsCount}} - - ), - } - : null, ]; const footerLeadingItems = footerLeadingItemsSource.filter( (item): item is ChromeItem => item !== null, ); - const isDatabasesActive = isCommandPaletteVisible && commandPaletteInitialView === "databases"; const footerTrailingOrder = useMemo(() => { return normalizeItemOrder( footerTrailingItemsOrder, @@ -134,49 +39,42 @@ const Footer = () => { ) as FooterTrailingItemId[]; }, [footerTrailingItemsOrder]); - const footerTrailingItems: Array> = [ - { - id: "databases", - label: "Databases", - content: ( - { - openCommandPaletteView("databases"); - }} - > - - - ), - }, + const footerTrailingItems: Array | null> = [ + ...editorStatusItems, { id: "notifications", - label: "Notifications", + label: t("notifications.title"), content: , }, ]; + const visibleTrailingItems = footerTrailingItems.filter( + (item): item is ChromeItem => item !== null, + ); return ( - - {orderChromeItems(footerLeadingItems, footerLeadingItemsOrder).map((item) => ( -
+ + {filePathItem ? ( +
+ {filePathItem.content} +
+ ) : null} + {orderChromeItems( + footerLeadingItems.filter((item) => item.id !== "filePath"), + footerLeadingItemsOrder, + ).map((item) => ( +
{item.content}
))}
- - {orderChromeItems(footerTrailingItems, footerTrailingOrder).map((item) => ( + + {orderChromeItems(visibleTrailingItems, footerTrailingOrder).map((item) => (
{item.content}
diff --git a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx index dedb1c1ec..d7b189373 100644 --- a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx +++ b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx @@ -31,6 +31,13 @@ import type { SidebarView } from "@/features/layout/utils/sidebar-pane-utils"; import { RunIcon } from "@/features/run/components/run-icon"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { + openDiagnosticsBuffer, + toggleGitLogPane, + toggleRunPane, + toggleTerminalPane, +} from "@/features/keymaps/commands/view-command-actions"; +import { useTranslation } from "@/i18n/locale-provider"; import { workspaceRuntimeRegistry } from "@/features/workspace/runtime/workspace-runtime-registry"; import { useUIState } from "@/features/window/stores/ui-state.store"; import { @@ -61,7 +68,10 @@ import { FolderOpenIcon, GearIcon, GitBranchIcon, + GitGraphIcon, MagnifyingGlassIcon, + TerminalWindowIcon, + WarningIcon, } from "@/ui/icons"; interface MainSidebarProps { @@ -102,6 +112,7 @@ const waitForProjectCarouselPaint = () => }); export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRailProps) => { + const { t } = useTranslation(); const { openSidebarView } = useSidebarPaneController(); const isGitViewActive = useUIState((state) => state.isGitViewActive); const isSidebarVisible = useUIState((state) => state.isSidebarVisible); @@ -110,9 +121,13 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa const openSettingsDialog = useUIState((state) => state.openSettingsDialog); const isBottomPaneVisible = useUIState((state) => state.isBottomPaneVisible); const bottomPaneActiveTab = useUIState((state) => state.bottomPaneActiveTab); - const setIsBottomPaneVisible = useUIState((state) => state.setIsBottomPaneVisible); - const setBottomPaneActiveTab = useUIState((state) => state.setBottomPaneActiveTab); const openGlobalSearchBuffer = useBufferStore.use.actions().openGlobalSearchBuffer; + const isDiagnosticsBufferActive = useBufferStore((state) => { + if (!state.activeBufferId) return false; + return state.buffers.some( + (buffer) => buffer.id === state.activeBufferId && buffer.type === "diagnostics", + ); + }); const configuredActivityRailWidth = useSettingsStore((state) => state.settings.activityRailWidth); const openFoldersInNewWindow = useSettingsStore((state) => state.settings.openFoldersInNewWindow); const hiddenSidebarActivityItems = useSettingsStore( @@ -174,14 +189,14 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa () => [ { id: "files", - label: "Project", + label: t("workbench.project"), icon: , }, ...(coreFeatures.search ? [ { id: "search", - label: "Search", + label: t("workbench.search"), icon: , }, ] @@ -190,28 +205,51 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa ? [ { id: "git", - label: "Changes", + label: t("workbench.changes"), icon: , }, + { + id: "gitLog", + label: t("workbench.gitLog"), + icon: , + }, ] : []), { id: "database", - label: "Database", + label: t("workbench.database"), icon: , }, + ...(coreFeatures.terminal + ? [ + { + id: "terminal", + label: t("workbench.terminal"), + icon: , + }, + ] + : []), + ...(coreFeatures.diagnostics + ? [ + { + id: "diagnostics", + label: t("workbench.diagnostics"), + icon: , + }, + ] + : []), { id: "run", - label: "Run", + label: t("workbench.run"), icon: , }, { id: "settings", - label: "Settings", + label: t("workbench.settings"), icon: , }, ], - [coreFeatures.git, coreFeatures.search], + [coreFeatures.diagnostics, coreFeatures.git, coreFeatures.search, coreFeatures.terminal, t], ); const setActivityRailItemVisible = useCallback( @@ -648,15 +686,14 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa coreFeatures={coreFeatures} onViewChange={handleSidebarViewChange} onSearchClick={() => openGlobalSearchBuffer()} + onGitLogClick={() => toggleGitLogPane()} + isGitLogActive={isBottomPaneVisible && bottomPaneActiveTab === "gitLog"} onSettingsClick={() => openSettingsDialog()} - onRunClick={() => { - if (isBottomPaneVisible && bottomPaneActiveTab === "run") { - setIsBottomPaneVisible(false); - } else { - setBottomPaneActiveTab("run"); - setIsBottomPaneVisible(true); - } - }} + onTerminalClick={() => toggleTerminalPane()} + isTerminalActive={isBottomPaneVisible && bottomPaneActiveTab === "terminal"} + onDiagnosticsClick={() => openDiagnosticsBuffer()} + isDiagnosticsActive={isDiagnosticsBufferActive} + onRunClick={() => toggleRunPane()} isRunActive={isBottomPaneVisible && bottomPaneActiveTab === "run"} compact={!expanded} showLabels={expanded} @@ -724,7 +761,7 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa openGlobalSearchBuffer()}> - Search + {t("workbench.search")} diff --git a/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx b/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx index 3af81ac14..a6a8ac700 100644 --- a/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx +++ b/windows/tauri/src/features/layout/components/sidebar/sidebar-pane-selector.tsx @@ -1,8 +1,14 @@ import { useMemo, type ReactNode } from "react"; -import { BACKEND_UNAVAILABLE_TOOLTIP } from "@/config/backend-capabilities"; +import { + BACKEND_UNAVAILABLE_TOOLTIP, + isBackendCapabilityAvailable, +} from "@/config/backend-capabilities"; import { useTranslation } from "@/i18n/locale-provider"; import type { CoreFeaturesState } from "@/features/settings/types/feature.types"; -import { normalizeItemOrder } from "@/features/layout/config/item-order"; +import { + SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS, + normalizeItemOrder, +} from "@/features/layout/config/item-order"; import { RunIcon } from "@/features/run/components/run-icon"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { SidebarListItem } from "@/ui/sidebar"; @@ -11,15 +17,16 @@ import { DatabaseIcon, GearIcon, GitBranchIcon, + GitGraphIcon, FilesIcon, MagnifyingGlassIcon, + TerminalWindowIcon, + WarningIcon, } from "@/ui/icons"; import Tooltip from "@/ui/tooltip"; import { cn } from "@/utils/cn"; import type { SidebarView } from "../../utils/sidebar-pane-utils"; -const BOTTOM_ACTIVITY_ITEM_IDS = ["run", "settings"] as const; - interface SidebarPaneItem { id: string; label?: ReactNode; @@ -55,7 +62,13 @@ interface SidebarPaneSelectorProps { onViewChange: (view: SidebarView) => void; onSearchClick?: () => void; isSearchActive?: boolean; + onGitLogClick?: () => void; + isGitLogActive?: boolean; onSettingsClick?: () => void; + onTerminalClick?: () => void; + isTerminalActive?: boolean; + onDiagnosticsClick?: () => void; + isDiagnosticsActive?: boolean; onRunClick?: () => void; isRunActive?: boolean; compact?: boolean; @@ -71,7 +84,13 @@ export const SidebarPaneSelector = ({ onViewChange, onSearchClick, isSearchActive = false, + onGitLogClick, + isGitLogActive = false, onSettingsClick, + onTerminalClick, + isTerminalActive = false, + onDiagnosticsClick, + isDiagnosticsActive = false, onRunClick, isRunActive = false, compact = false, @@ -144,6 +163,23 @@ export const SidebarPaneSelector = ({ } satisfies SidebarPaneItem, ] : []), + ...(coreFeatures.git && onGitLogClick + ? [ + { + id: "gitLog", + label: showLabels ? t("workbench.gitLog") : undefined, + icon: , + isActive: isGitLogActive, + onClick: onGitLogClick, + ariaLabel: t("workbench.gitLog"), + tooltip: { + content: t("workbench.gitLog"), + shortcut: "Alt+9", + side: tooltipSide, + }, + } satisfies SidebarPaneItem, + ] + : []), { id: "database", label: showLabels ? t("workbench.database") : undefined, @@ -155,6 +191,43 @@ export const SidebarPaneSelector = ({ side: tooltipSide, }, }, + ...(coreFeatures.terminal && onTerminalClick + ? [ + { + id: "terminal", + label: showLabels ? t("workbench.terminal") : undefined, + icon: , + isActive: isTerminalActive, + onClick: onTerminalClick, + disabled: !isBackendCapabilityAvailable("terminal"), + ariaLabel: t("workbench.terminal"), + tooltip: { + content: isBackendCapabilityAvailable("terminal") + ? t("workbench.terminal") + : BACKEND_UNAVAILABLE_TOOLTIP, + shortcut: isBackendCapabilityAvailable("terminal") ? "Mod+J" : undefined, + side: tooltipSide, + }, + } satisfies SidebarPaneItem, + ] + : []), + ...(coreFeatures.diagnostics && onDiagnosticsClick + ? [ + { + id: "diagnostics", + label: showLabels ? t("workbench.diagnostics") : undefined, + icon: , + isActive: isDiagnosticsActive, + onClick: onDiagnosticsClick, + ariaLabel: t("workbench.diagnostics"), + tooltip: { + content: t("workbench.diagnostics"), + shortcut: "Mod+Shift+J", + side: tooltipSide, + }, + } satisfies SidebarPaneItem, + ] + : []), ...(onRunClick ? [ { @@ -189,14 +262,22 @@ export const SidebarPaneSelector = ({ : []), ], [ + coreFeatures.diagnostics, coreFeatures.git, coreFeatures.search, + coreFeatures.terminal, iconClassName, isFilesActive, isPrimarySidebarItemActive, isGitViewActive, isSearchActive, onSearchClick, + onGitLogClick, + isGitLogActive, + onTerminalClick, + isTerminalActive, + onDiagnosticsClick, + isDiagnosticsActive, onRunClick, onSettingsClick, isRunActive, @@ -219,9 +300,12 @@ export const SidebarPaneSelector = ({ const orderedItems = orderItems(items, orderedIds); const visibleItems = orderedItems.filter((item) => !hiddenSidebarActivityItems.includes(item.id)); const topItems = visibleItems.filter( - (item) => !BOTTOM_ACTIVITY_ITEM_IDS.includes(item.id as (typeof BOTTOM_ACTIVITY_ITEM_IDS)[number]), + (item) => + !SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.includes( + item.id as (typeof SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS)[number], + ), ); - const bottomItems = BOTTOM_ACTIVITY_ITEM_IDS.map((id) => + const bottomItems = SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS.map((id) => visibleItems.find((item) => item.id === id), ).filter((item): item is SidebarPaneItem => Boolean(item)); diff --git a/windows/tauri/src/features/layout/config/item-order.test.ts b/windows/tauri/src/features/layout/config/item-order.test.ts new file mode 100644 index 000000000..a6c33adc3 --- /dev/null +++ b/windows/tauri/src/features/layout/config/item-order.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, test } from "bun:test"; +import { + FOOTER_TRAILING_ITEM_IDS, + SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS, + normalizeItemOrder, +} from "./item-order"; + +describe("footer item order", () => { + test("keeps editor status chips on the trailing status row without Database or Git Log", () => { + const ordered = normalizeItemOrder(["notifications"], FOOTER_TRAILING_ITEM_IDS); + + expect(ordered).not.toContain("terminal"); + expect(ordered).not.toContain("diagnostics"); + expect(ordered).not.toContain("run"); + expect(ordered).not.toContain("gitLog"); + expect(ordered).not.toContain("databases"); + expect(ordered).toContain("gitChanges"); + expect(ordered).toContain("cursor"); + expect(ordered).toContain("memory"); + expect(ordered).toContain("notifications"); + }); +}); + +describe("sidebar activity order", () => { + test("places Run, Terminal, Diagnostics, Git Log, then Settings", () => { + expect([...SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS]).toEqual([ + "run", + "terminal", + "diagnostics", + "gitLog", + "settings", + ]); + }); +}); diff --git a/windows/tauri/src/features/layout/config/item-order.ts b/windows/tauri/src/features/layout/config/item-order.ts index 78dd71730..11f2ca4fd 100644 --- a/windows/tauri/src/features/layout/config/item-order.ts +++ b/windows/tauri/src/features/layout/config/item-order.ts @@ -5,16 +5,26 @@ export const SIDEBAR_ACTIVITY_ITEM_IDS = [ "search", "database", "run", + "terminal", + "diagnostics", + "gitLog", "settings", ] as const; -export const FOOTER_LEADING_ITEM_IDS = [ - "branch", - "gitLog", +export const SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS = [ + "run", "terminal", "diagnostics", + "gitLog", + "settings", ] as const; +export const FOOTER_LEADING_ITEM_IDS = ["filePath", "branch"] as const; export const FOOTER_TRAILING_ITEM_IDS = [ - "databases", + "cursor", + "encoding", + "indent", + "readOnly", + "memory", + "gitChanges", "notifications", ] as const; diff --git a/windows/tauri/src/features/layout/utils/footer-status.test.ts b/windows/tauri/src/features/layout/utils/footer-status.test.ts new file mode 100644 index 000000000..22ececabe --- /dev/null +++ b/windows/tauri/src/features/layout/utils/footer-status.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from "bun:test"; +import { countUniqueGitChanges, formatMemoryMegabytes } from "./footer-status"; + +describe("footer status helpers", () => { + test("formats heap sizes in megabytes", () => { + expect(formatMemoryMegabytes(213.7 * 1024 * 1024)).toBe("213.7 MB"); + expect(formatMemoryMegabytes(0)).toBe("0.0 MB"); + }); + + test("counts unique Git paths", () => { + expect(countUniqueGitChanges(undefined)).toBe(0); + expect( + countUniqueGitChanges([ + { path: "src/a.ts" }, + { path: "src/a.ts" }, + { path: "src/b.ts" }, + ]), + ).toBe(2); + }); +}); diff --git a/windows/tauri/src/features/layout/utils/footer-status.ts b/windows/tauri/src/features/layout/utils/footer-status.ts new file mode 100644 index 000000000..19958b994 --- /dev/null +++ b/windows/tauri/src/features/layout/utils/footer-status.ts @@ -0,0 +1,35 @@ +export const TEXT_FILE_ENCODING = "UTF-8"; + +const BYTES_PER_MEGABYTE = 1024 * 1024; + +interface JsHeapMemory { + usedJSHeapSize: number; + totalJSHeapSize: number; +} + +export interface FooterMemoryUsage { + usedBytes: number; + totalBytes: number; +} + +export function formatMemoryMegabytes(bytes: number): string { + const megabytes = bytes / BYTES_PER_MEGABYTE; + return `${megabytes.toFixed(1)} MB`; +} + +export function readJsHeapMemory(): FooterMemoryUsage | null { + const memory = (performance as Performance & { memory?: JsHeapMemory }).memory; + if (!memory || !Number.isFinite(memory.usedJSHeapSize) || !Number.isFinite(memory.totalJSHeapSize)) { + return null; + } + + return { + usedBytes: memory.usedJSHeapSize, + totalBytes: memory.totalJSHeapSize, + }; +} + +export function countUniqueGitChanges(files: Array<{ path: string }> | undefined): number { + if (!files || files.length === 0) return 0; + return new Set(files.map((file) => file.path)).size; +} diff --git a/windows/tauri/src/features/notifications/components/notifications-command.tsx b/windows/tauri/src/features/notifications/components/notifications-command.tsx index ce692e8c9..d85439b88 100644 --- a/windows/tauri/src/features/notifications/components/notifications-command.tsx +++ b/windows/tauri/src/features/notifications/components/notifications-command.tsx @@ -39,6 +39,7 @@ import { ItemGroup } from "@/ui/item"; import Tooltip from "@/ui/tooltip"; import { writeClipboardText } from "@/utils/clipboard"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; interface NotificationsCommandProps { isVisible: boolean; @@ -46,6 +47,7 @@ interface NotificationsCommandProps { } export function NotificationsCommand({ isVisible, onClose }: NotificationsCommandProps) { + const { t } = useTranslation(); const notifications = useNotificationsStore.use.notifications(); const markAllNotificationsRead = useNotificationsStore((state) => state.actions.markAllRead); const removeNotification = useNotificationsStore((state) => state.actions.remove); @@ -107,7 +109,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman return [ { id: "copy-message", - label: "Copy Message", + label: t("notifications.copyMessage"), icon: , onClick: () => void copyText(notification.message), }, @@ -115,7 +117,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman ? [ { id: "copy-details", - label: "Copy Details", + label: t("notifications.copyDetails"), icon: , onClick: () => void copyText(notification.description || ""), }, @@ -123,54 +125,54 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman : []), { id: "copy-notification", - label: "Copy Notification", + label: t("notifications.copyNotification"), icon: , onClick: () => void copyText(formatNotificationText(notification)), }, { id: "sep-delete", label: "", separator: true, onClick: () => {} }, { id: "delete-notification", - label: "Delete", + label: t("notifications.delete"), icon: , onClick: () => removeNotification(notification.id), }, { id: "clear-all", - label: "Clear All", + label: t("notifications.clearAll"), icon: , onClick: () => clearNotifications(), }, ]; - }, [clearNotifications, notificationContextMenu.data, removeNotification]); + }, [clearNotifications, notificationContextMenu.data, removeNotification, t]); const panelContextMenuItems = useMemo( () => [ { id: "copy-all", - label: "Copy All", + label: t("notifications.copyAll"), icon: , disabled: notifications.length === 0, onClick: () => void copyText(notifications.map(formatNotificationText).join("\n\n---\n\n")), }, { id: "clear-all", - label: "Clear All", + label: t("notifications.clearAll"), icon: , disabled: notifications.length === 0, onClick: () => clearNotifications(), }, ], - [clearNotifications, notifications], + [clearNotifications, notifications, t], ); const filterMenuItems = useMemo( () => [ - { id: "all", label: "All", icon: , value: "all" }, - { id: "info", label: "Info", icon: , value: "info" }, - { id: "success", label: "Success", icon: , value: "success" }, - { id: "warning", label: "Warnings", icon: , value: "warning" }, - { id: "error", label: "Errors", icon: , value: "error" }, + { id: "all", label: t("notifications.filterAll"), icon: , value: "all" }, + { id: "info", label: t("notifications.filterInfo"), icon: , value: "info" }, + { id: "success", label: t("notifications.filterSuccess"), icon: , value: "success" }, + { id: "warning", label: t("notifications.filterWarnings"), icon: , value: "warning" }, + { id: "error", label: t("notifications.filterErrors"), icon: , value: "error" }, ].map((item) => ({ id: item.id, label: item.label, @@ -178,7 +180,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman onClick: () => setNotificationFilter(item.value as NotificationFilter), className: notificationFilter === item.value ? "bg-accent text-foreground" : undefined, })), - [notificationFilter], + [notificationFilter, t], ); const filteredNotifications = useMemo(() => { @@ -326,7 +328,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman return ( <> - +
{ if (event.key === "ArrowDown" && visibleNotifications.length > 0) { event.preventDefault(); @@ -351,12 +353,12 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman }} />
- + setIsFilterMenuOpen(true)} > @@ -364,9 +366,9 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman {notifications.length === 0 ? ( - No notifications yet. + {t("notifications.empty")} ) : filteredNotifications.length === 0 ? ( - No matching notifications. + {t("notifications.noMatch")} ) : (
@@ -410,7 +412,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman actions={[ { id: "delete-notification", - label: "Delete Notification", + label: t("notifications.deleteNotification"), icon: , onSelect: () => removeNotification(notification.id), variant: "danger", @@ -470,7 +472,7 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman setActiveNotification(null); setCopiedNotificationId(null); }} - title="Notification details" + title={t("notifications.details")} > {activeNotification ? ( <> @@ -513,7 +515,9 @@ export function NotificationsCommand({ isVisible, onClose }: NotificationsComman onClick={() => void copyActiveNotification(activeNotification)} > - {copiedNotificationId === activeNotification.id ? "Copied" : "Copy"} + {copiedNotificationId === activeNotification.id + ? t("notifications.copied") + : t("notifications.copy")}
diff --git a/windows/tauri/src/features/notifications/components/notifications-trigger.tsx b/windows/tauri/src/features/notifications/components/notifications-trigger.tsx index d53bf5b08..d3ce253ff 100644 --- a/windows/tauri/src/features/notifications/components/notifications-trigger.tsx +++ b/windows/tauri/src/features/notifications/components/notifications-trigger.tsx @@ -7,12 +7,14 @@ import { Button } from "@/ui/button"; import { BellIcon } from "@/ui/icons"; import Tooltip from "@/ui/tooltip"; import { cn } from "@/utils/cn"; +import { useTranslation } from "@/i18n/locale-provider"; interface NotificationsTriggerProps { className?: string; } export const NotificationsTrigger = ({ className }: NotificationsTriggerProps) => { + const { t } = useTranslation(); const notifications = useNotificationsStore.use.notifications(); const [isCommandVisible, setIsCommandVisible] = useState(false); const shortcut = useCommandShortcut("workbench.showNotifications"); @@ -34,7 +36,7 @@ export const NotificationsTrigger = ({ className }: NotificationsTriggerProps) = return ( <> - + + ))} +
+); +``` + +Use the existing `FolderOpenIcon`, semantic surface/border/selected tokens, fixed 30px tab height, horizontal overflow, visible focus styles, and truncated names. Do not add a native drag region or duplicate project-management actions. + +- [ ] **Step 4: Run the focused component contract test** + +Run the same Bun test. Expected: 1 test passes, 0 failures. + +### Task 3: Mount The Bar In The Workbench + +**Files:** +- Modify: `windows/tauri/src/features/layout/components/main-layout.tsx` + +- [ ] **Step 1: Add the import and mount point** + +Import `ProjectTabBar` from the window feature and render `` immediately after ``, before the root-folder conditional. The component itself returns `null` when no project is open, preserving the welcome screen layout. + +- [ ] **Step 2: Run focused tests and typecheck** + +Run: + +```powershell +bun test src/features/window/utils/project-tab-bar-model.test.ts src/features/window/components/project-tab-bar.test.ts +bun run typecheck +``` + +Expected: all focused tests pass and TypeScript exits with code 0. + +### Task 4: Verify The User Workflow + +**Files:** +- No additional source files. + +- [ ] **Step 1: Run lint and frontend build** + +```powershell +bunx vp lint src/features/layout/components/main-layout.tsx src/features/window/components/project-tab-bar.tsx src/features/window/components/project-tab-bar.test.ts src/features/window/utils/project-tab-bar-model.ts src/features/window/utils/project-tab-bar-model.test.ts +bun run build +git diff --check +``` + +Expected: all commands exit 0. Existing dependency warnings are acceptable if they do not introduce errors. + +- [ ] **Step 2: Rebuild and launch Windows Release** + +Stop the current preview process, run `.\scripts\build-windows.ps1 -Configuration Release` from the repository root, and launch `windows/tauri/src-tauri/target/x86_64-pc-windows-msvc/release/lithe-windows.exe`. + +- [ ] **Step 3: Verify the live tab interaction through CDP** + +Open two projects in the current window, assert a visible `[role="tablist"]` contains both project names, click the inactive `[role="tab"]`, and assert its `aria-selected` becomes `true` while the previous tab becomes `false`. Confirm the title-bar project label changes to the newly active project. + +- [ ] **Step 4: Run the final focused checks** + +```powershell +bun test src/features/window/utils/project-tab-bar-model.test.ts src/features/window/components/project-tab-bar.test.ts +bun run typecheck +git diff --check +``` + +Expected: all tests pass, typecheck passes, and no whitespace errors are reported. + +### Task 5: Review And Commit + +**Files:** +- Stage only the new project-tab-bar source/tests, `main-layout.tsx`, and the task plan/progress files. + +- [ ] **Step 1: Inspect the task diff and run an independent review** + +Check `git diff` and confirm unrelated pre-existing changes remain unstaged. Resolve any Critical or Important review findings before committing. + +- [ ] **Step 2: Create one focused implementation commit** + +```powershell +git add -- windows/tauri/src/features/layout/components/main-layout.tsx windows/tauri/src/features/window/components/project-tab-bar.tsx windows/tauri/src/features/window/components/project-tab-bar.test.ts windows/tauri/src/features/window/utils/project-tab-bar-model.ts windows/tauri/src/features/window/utils/project-tab-bar-model.test.ts .planning/2026-08-17-project-tab-bar/task_plan.md .planning/2026-08-17-project-tab-bar/findings.md .planning/2026-08-17-project-tab-bar/progress.md docs/superpowers/plans/2026-08-17-project-tab-bar.md +git commit -m "feat: add mac-style project tabs" +``` diff --git a/windows/tauri/src/features/layout/components/main-layout.tsx b/windows/tauri/src/features/layout/components/main-layout.tsx index 22b7125ed..9643fc206 100644 --- a/windows/tauri/src/features/layout/components/main-layout.tsx +++ b/windows/tauri/src/features/layout/components/main-layout.tsx @@ -23,6 +23,7 @@ import { frontendTrace } from "@/utils/frontend-trace"; import { recordStartupMilestone } from "@/features/bootstrap/startup-performance"; import { getInternalTabDragData } from "@/features/tabs/utils/internal-tab-drag"; import TitleBarWithSettings from "../../window/components/title-bar/title-bar"; +import { ProjectTabBar } from "../../window/components/project-tab-bar"; import Footer from "./footer/footer"; import { ResizablePane } from "./resizable-pane"; import { @@ -259,6 +260,7 @@ export function MainLayout() { )} + {rootFolderPath ? ( <> diff --git a/windows/tauri/src/features/window/components/project-tab-bar.test.ts b/windows/tauri/src/features/window/components/project-tab-bar.test.ts new file mode 100644 index 000000000..2700997e1 --- /dev/null +++ b/windows/tauri/src/features/window/components/project-tab-bar.test.ts @@ -0,0 +1,11 @@ +import { expect, test } from "bun:test"; + +test("project tab bar exposes accessible switchable project tabs", async () => { + const source = await Bun.file(new URL("./project-tab-bar.tsx", import.meta.url)).text(); + + expect(source).toContain('role="tablist"'); + expect(source).toContain('role="tab"'); + expect(source).toContain("aria-selected"); + expect(source).toContain("isSwitchingProject"); + expect(source).toContain("switchToProject"); +}); diff --git a/windows/tauri/src/features/window/components/project-tab-bar.tsx b/windows/tauri/src/features/window/components/project-tab-bar.tsx new file mode 100644 index 000000000..08a7d8f76 --- /dev/null +++ b/windows/tauri/src/features/window/components/project-tab-bar.tsx @@ -0,0 +1,64 @@ +import { useMemo } from "react"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useTranslation } from "@/i18n/locale-provider"; +import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; +import { FolderIcon } from "@/ui/icons"; +import { cn } from "@/utils/cn"; +import { getProjectTabBarItems } from "../utils/project-tab-bar-model"; + +export function ProjectTabBar() { + const { t } = useTranslation(); + const projectTabs = useWorkspaceTabsStore.use.projectTabs(); + const switchToProject = useFileSystemStore((state) => state.switchToProject); + const isSwitchingProject = useFileSystemStore((state) => state.isSwitchingProject); + const projects = useMemo(() => getProjectTabBarItems(projectTabs), [projectTabs]); + + if (projects.length === 0) return null; + + return ( +
+
+ {projects.map((project) => ( + + ))} +
+
+ ); +} diff --git a/windows/tauri/src/features/window/utils/project-tab-bar-model.test.ts b/windows/tauri/src/features/window/utils/project-tab-bar-model.test.ts new file mode 100644 index 000000000..7355d879c --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-tab-bar-model.test.ts @@ -0,0 +1,12 @@ +import { expect, test } from "bun:test"; +import { getProjectTabBarItems } from "./project-tab-bar-model"; + +test("preserves project order and exposes one active tab", () => { + const result = getProjectTabBarItems([ + { id: "a", name: "Alpha", path: "D:/alpha", isActive: true, lastOpened: 1 }, + { id: "b", name: "Beta", path: "D:/beta", isActive: true, lastOpened: 2 }, + ]); + + expect(result.map((tab) => tab.name)).toEqual(["Alpha", "Beta"]); + expect(result.map((tab) => tab.isActive)).toEqual([true, false]); +}); diff --git a/windows/tauri/src/features/window/utils/project-tab-bar-model.ts b/windows/tauri/src/features/window/utils/project-tab-bar-model.ts new file mode 100644 index 000000000..76f84dddc --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-tab-bar-model.ts @@ -0,0 +1,10 @@ +import type { ProjectTab } from "../stores/workspace-tabs.store"; + +export function getProjectTabBarItems(projectTabs: ProjectTab[]): ProjectTab[] { + const activeProjectId = projectTabs.find((projectTab) => projectTab.isActive)?.id; + + return projectTabs.map((projectTab) => ({ + ...projectTab, + isActive: projectTab.id === activeProjectId, + })); +} From 2355a6f992d0871946c1be4633c846e0c84d33f1 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:07:34 +0800 Subject: [PATCH 37/83] feat(windows): start built-in Java LSP through the host Open Java files on Windows with the shared Core Java provider instead of the extension marketplace. The host finds jdtls and a local JDK, then starts lsp.startServer with providerId java so definition and references can use the same session as macOS. --- docs/architecture/windows-development-plan.md | 6 +- windows/tauri/src-tauri/src/lsp.rs | 233 ++++++++++++++++++ windows/tauri/src-tauri/src/main.rs | 2 + windows/tauri/src-tauri/src/run.rs | 4 +- .../toolbar/file-path-breadcrumb.tsx | 4 +- .../components/toolbar/symbol-breadcrumb.tsx | 4 +- .../engines/monaco/code-lens-provider.ts | 4 +- .../editor/engines/monaco/lsp-providers.ts | 4 +- .../editor/hooks/use-lsp-integration.ts | 7 +- .../lsp/built-in-language-support.test.ts | 23 ++ .../editor/lsp/built-in-language-support.ts | 32 +++ .../features/editor/lsp/java-lsp-host-api.ts | 20 ++ .../src/features/editor/lsp/lsp-client.ts | 190 ++++++-------- .../editor/lsp/resolve-editor-lsp-launch.ts | 55 +++++ .../editor/lsp/signature-help-tooltip.tsx | 4 +- .../src/features/editor/lsp/use-code-lens.ts | 4 +- .../outline/hooks/use-document-outline.ts | 4 +- .../quick-open/hooks/use-symbol-search.ts | 4 +- .../tauri/src/platform/lsp-core-adapter.ts | 11 +- windows/tauri/src/platform/tauri-core.ts | 1 + 20 files changed, 481 insertions(+), 135 deletions(-) create mode 100644 windows/tauri/src-tauri/src/lsp.rs create mode 100644 windows/tauri/src/features/editor/lsp/built-in-language-support.test.ts create mode 100644 windows/tauri/src/features/editor/lsp/built-in-language-support.ts create mode 100644 windows/tauri/src/features/editor/lsp/java-lsp-host-api.ts create mode 100644 windows/tauri/src/features/editor/lsp/resolve-editor-lsp-launch.ts diff --git a/docs/architecture/windows-development-plan.md b/docs/architecture/windows-development-plan.md index 3b15fe30a..cb1d723e7 100644 --- a/docs/architecture/windows-development-plan.md +++ b/docs/architecture/windows-development-plan.md @@ -33,8 +33,10 @@ platform contract and enabled in the UI only when the capability exists. ## Remaining product work 1. Align each Git feature API with the stable `git.*` command DTOs. -2. Route workspace search, Local History, LSP, Java/Maven, and run - configurations through the same dispatcher. +2. Route workspace search, Local History, remaining non-Java LSP, Java/Maven, + and run configurations through the same dispatcher. Built-in Java LSP now + starts through the Windows host (`jdtls` + JDK discovery) and + `lsp.startServer` with `providerId: "java"`. 3. Implement Windows-owned process, debug, update, and secure-storage flows in Rust where the current UI exposes them. 4. Hide or capability-gate future feature surfaces until their shared backend diff --git a/windows/tauri/src-tauri/src/lsp.rs b/windows/tauri/src-tauri/src/lsp.rs new file mode 100644 index 000000000..41b22adb3 --- /dev/null +++ b/windows/tauri/src-tauri/src/lsp.rs @@ -0,0 +1,233 @@ +//! Windows discovery for the built-in Java language server. +//! +//! Shared JDT LS process ownership stays in `lithe-core`. This adapter only +//! finds `jdtls`, a local JDK, and a cache directory on the current machine. + +use crate::run; +use serde::Serialize; +use std::ffi::OsStr; +use std::fs; +use std::path::{Path, PathBuf}; +use tauri::{AppHandle, Manager}; + +const JAVA_PROVIDER_ID: &str = "java"; +const JDTLS_EXECUTABLE_NAMES: &[&str] = &["jdtls.bat", "jdtls.cmd", "jdtls.exe", "jdtls"]; + +/// Launch plan for the built-in Java language server on this machine. +#[derive(Debug, Clone, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct JavaLspLaunch { + pub provider_id: String, + pub language_id: String, + pub executable_path: String, + pub arguments: Vec, + pub runtime_executable_path: Option, + pub cache_directory: String, + pub environment: JavaLspEnvironment, +} + +/// Environment values the Java language server needs from the host. +#[derive(Debug, Clone, Default, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct JavaLspEnvironment { + #[serde(rename = "JAVA_HOME", skip_serializing_if = "Option::is_none")] + pub java_home: Option, +} + +#[derive(Debug, Clone)] +struct JavaLspResolution { + executable: PathBuf, + java_home: Option, +} + +/// Resolves the built-in Java language-server executable, JDK, and cache directory. +#[tauri::command] +pub fn lsp_resolve_java_launch( + app: AppHandle, + workspace_path: String, + java_home_path: Option, +) -> Result { + let workspace = PathBuf::from(&workspace_path); + let project_root = workspace.is_dir().then_some(workspace.as_path()); + let resolution = resolve_java_lsp_launch( + std::env::var_os("PATH").as_deref(), + &jdtls_search_roots(project_root), + project_root, + java_home_path.as_deref(), + )?; + + Ok(JavaLspLaunch { + provider_id: JAVA_PROVIDER_ID.to_string(), + language_id: JAVA_PROVIDER_ID.to_string(), + executable_path: normalize_path(&resolution.executable), + arguments: Vec::new(), + runtime_executable_path: resolution + .java_home + .as_deref() + .and_then(run::java_executable) + .as_deref() + .map(normalize_path), + cache_directory: normalize_path(&language_server_cache_directory(&app)), + environment: JavaLspEnvironment { + java_home: resolution.java_home.as_deref().map(normalize_path), + }, + }) +} + +fn resolve_java_lsp_launch( + path_env: Option<&OsStr>, + extra_roots: &[PathBuf], + project_root: Option<&Path>, + java_home_override: Option<&str>, +) -> Result { + let executable = find_jdtls_executable(path_env, extra_roots).ok_or_else(|| { + "Could not find jdtls. Install Eclipse JDT Language Server and add it to PATH.".to_string() + })?; + let java_home = resolve_java_home(project_root, java_home_override); + Ok(JavaLspResolution { + executable, + java_home, + }) +} + +fn find_jdtls_executable(path_env: Option<&OsStr>, extra_roots: &[PathBuf]) -> Option { + jdtls_candidates(path_env, extra_roots) + .into_iter() + .find(|candidate| candidate.is_file()) +} + +fn jdtls_candidates(path_env: Option<&OsStr>, extra_roots: &[PathBuf]) -> Vec { + let mut candidates = Vec::new(); + if let Some(path) = path_env { + for directory in std::env::split_paths(path) { + push_jdtls_names(&mut candidates, &directory); + } + } + for root in extra_roots { + push_jdtls_names(&mut candidates, root); + push_jdtls_names(&mut candidates, &root.join("bin")); + } + candidates +} + +fn push_jdtls_names(candidates: &mut Vec, directory: &Path) { + for name in JDTLS_EXECUTABLE_NAMES { + candidates.push(directory.join(name)); + } +} + +fn jdtls_search_roots(project_root: Option<&Path>) -> Vec { + let mut roots = Vec::new(); + if let Ok(home) = std::env::var("JDTLS_HOME") { + roots.push(PathBuf::from(home)); + } + for key in ["LOCALAPPDATA", "ProgramFiles", "ProgramFiles(x86)"] { + if let Ok(base) = std::env::var(key) { + let base = PathBuf::from(base); + roots.push(base.join("jdtls")); + roots.push(base.join("Eclipse JDT Language Server")); + roots.push(base.join("Programs").join("jdtls")); + } + } + if let Ok(profile) = std::env::var("USERPROFILE") { + let profile = PathBuf::from(profile); + roots.push(profile.join(".jdtls")); + roots.push( + profile + .join("scoop") + .join("apps") + .join("jdtls") + .join("current"), + ); + roots.push(profile.join("scoop").join("shims")); + } + if let Some(root) = project_root { + roots.push(root.join(".lithe").join("toolchains").join("jdtls")); + } + roots +} + +fn resolve_java_home( + project_root: Option<&Path>, + java_home_override: Option<&str>, +) -> Option { + if let Some(configured) = java_home_override + .map(str::trim) + .filter(|value| !value.is_empty()) + { + let path = PathBuf::from(configured); + if run::java_executable(&path).is_some() { + return Some(path); + } + } + run::discover_toolchains(project_root) + .java + .into_iter() + .next() + .map(|runtime| PathBuf::from(runtime.home_path)) +} + +fn language_server_cache_directory(app: &AppHandle) -> PathBuf { + app.path() + .app_cache_dir() + .unwrap_or_else(|_| std::env::temp_dir().join("lithe-lsp")) + .join("language-servers") +} + +fn normalize_path(path: &Path) -> String { + path.to_string_lossy().replace('\\', "/") +} + +#[cfg(test)] +mod tests { + use super::*; + use std::time::{SystemTime, UNIX_EPOCH}; + + fn temp_dir() -> PathBuf { + let stamp = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("clock") + .as_nanos(); + let path = std::env::temp_dir().join(format!("lithe-java-lsp-{stamp}")); + fs::create_dir_all(&path).expect("temp dir"); + path + } + + #[test] + fn finds_jdtls_bat_in_an_extra_search_root() { + let root = temp_dir(); + let bin = root.join("bin"); + fs::create_dir_all(&bin).expect("bin"); + let executable = bin.join("jdtls.bat"); + fs::write(&executable, "@echo off\n").expect("jdtls"); + + let found = find_jdtls_executable(None, &[root.clone()]).expect("found"); + assert_eq!(found, executable); + fs::remove_dir_all(root).ok(); + } + + #[test] + fn prefers_path_entries_before_extra_roots() { + let path_root = temp_dir(); + let extra_root = temp_dir(); + let path_executable = path_root.join("jdtls.cmd"); + let extra_executable = extra_root.join("jdtls.bat"); + fs::write(&path_executable, "@echo off\n").expect("path jdtls"); + fs::write(&extra_executable, "@echo off\n").expect("extra jdtls"); + + let found = find_jdtls_executable(Some(path_root.as_os_str()), &[extra_root.clone()]) + .expect("found"); + assert_eq!(found, path_executable); + fs::remove_dir_all(path_root).ok(); + fs::remove_dir_all(extra_root).ok(); + } + + #[test] + fn reports_a_stable_error_when_jdtls_is_missing() { + let missing = temp_dir().join("empty-jdtls-root"); + fs::create_dir_all(&missing).expect("missing root"); + let error = resolve_java_lsp_launch(None, &[missing.clone()], None, None).unwrap_err(); + assert!(error.contains("jdtls"), "{error}"); + fs::remove_dir_all(missing).ok(); + } +} diff --git a/windows/tauri/src-tauri/src/main.rs b/windows/tauri/src-tauri/src/main.rs index 893a8fefa..9819f9f54 100644 --- a/windows/tauri/src-tauri/src/main.rs +++ b/windows/tauri/src-tauri/src/main.rs @@ -3,6 +3,7 @@ mod core; mod file_events; mod host; +mod lsp; mod platform; mod run; mod secure_storage; @@ -92,6 +93,7 @@ fn main() { host::clipboard_paste, host::clipboard_clear, host::create_app_window, + lsp::lsp_resolve_java_launch, run::run_list_java_sources, run::run_write_generated, run::run_write_document, diff --git a/windows/tauri/src-tauri/src/run.rs b/windows/tauri/src-tauri/src/run.rs index 8a0bfcbd5..d4cc07b0d 100644 --- a/windows/tauri/src-tauri/src/run.rs +++ b/windows/tauri/src-tauri/src/run.rs @@ -380,7 +380,7 @@ fn pretty_json(value: &Value) -> Result { serde_json::to_string_pretty(value).map_err(|error| error.to_string()) } -fn discover_toolchains(project_root: Option<&Path>) -> DiscoveredToolchains { +pub(crate) fn discover_toolchains(project_root: Option<&Path>) -> DiscoveredToolchains { let mut java = Vec::new(); let mut seen_homes = std::collections::HashSet::new(); for home in java_home_candidates(project_root) { @@ -513,7 +513,7 @@ fn probe_maven(executable: &Path) -> Option { }) } -fn java_executable(home: &Path) -> Option { +pub(crate) fn java_executable(home: &Path) -> Option { for name in ["java.exe", "java"] { let candidate = home.join("bin").join(name); if candidate.is_file() { diff --git a/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx b/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx index 84eac6cc5..414bd7e94 100644 --- a/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx +++ b/windows/tauri/src/features/editor/components/toolbar/file-path-breadcrumb.tsx @@ -3,7 +3,7 @@ import { CaretLeftIcon as ChevronLeft } from "@/ui/icons"; import { useRef, useState } from "react"; import { EDITOR_CONSTANTS } from "@/features/editor/config/constants"; import { logger } from "@/features/editor/utils/logger"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { ThemedFileIcon } from "@/extensions/icon-themes/components/themed-file-icon"; import { readDirectory } from "@/features/file-system/controllers/platform"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; @@ -133,7 +133,7 @@ export function FilePathBreadcrumb({ event.stopPropagation(); if (segmentIndex === segments.length - 1) { - if (!filePath.includes("://") && extensionRegistry.isLspSupported(filePath)) { + if (!filePath.includes("://") && isEditorLspSupported(filePath)) { openCommandPaletteView("outline"); return; } diff --git a/windows/tauri/src/features/editor/components/toolbar/symbol-breadcrumb.tsx b/windows/tauri/src/features/editor/components/toolbar/symbol-breadcrumb.tsx index 9d292f643..2dfdb8a23 100644 --- a/windows/tauri/src/features/editor/components/toolbar/symbol-breadcrumb.tsx +++ b/windows/tauri/src/features/editor/components/toolbar/symbol-breadcrumb.tsx @@ -1,5 +1,5 @@ import { Fragment, useMemo } from "react"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { useExtensionStore } from "@/extensions/registry/extension-store"; import { useEditorStateStore } from "@/features/editor/stores/state.store"; import { resolveEditorViewCursorPosition } from "@/features/editor/utils/editor-view-cursor-position"; @@ -38,7 +38,7 @@ export function SymbolBreadcrumb({ const availableExtensions = useExtensionStore.use.availableExtensions(); const isExtensionStoreReady = availableExtensions.size > 0; - const isLspSupported = !filePath.includes("://") && extensionRegistry.isLspSupported(filePath); + const isLspSupported = !filePath.includes("://") && isEditorLspSupported(filePath); const { symbols, isSupported } = useDocumentOutline({ isActive: breadcrumbShowSymbols && isLspSupported, bufferId, diff --git a/windows/tauri/src/features/editor/engines/monaco/code-lens-provider.ts b/windows/tauri/src/features/editor/engines/monaco/code-lens-provider.ts index c99476799..8cd8e6fb0 100644 --- a/windows/tauri/src/features/editor/engines/monaco/code-lens-provider.ts +++ b/windows/tauri/src/features/editor/engines/monaco/code-lens-provider.ts @@ -7,7 +7,7 @@ import { } from "monaco-editor"; import type * as Monaco from "monaco-editor"; import { toast } from "sonner"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { LspClient } from "@/features/editor/lsp/lsp-client"; import { useLspStore } from "@/features/editor/lsp/stores/lsp.store"; import { filePathFromUri } from "@/features/editor/lsp/workspace-edit"; @@ -154,7 +154,7 @@ export function registerMonacoCodeLensProvider(): void { const filePath = filePathFromModel(model); if ( !filePath || - !extensionRegistry.isLspSupported(filePath) || + !isEditorLspSupported(filePath) || !lspClient.getActiveServerEntryForFile(filePath) || !lspClient.isDocumentOpen(filePath) ) { diff --git a/windows/tauri/src/features/editor/engines/monaco/lsp-providers.ts b/windows/tauri/src/features/editor/engines/monaco/lsp-providers.ts index 329785d49..7dbd54448 100644 --- a/windows/tauri/src/features/editor/engines/monaco/lsp-providers.ts +++ b/windows/tauri/src/features/editor/engines/monaco/lsp-providers.ts @@ -10,7 +10,7 @@ import { isWorkspaceEdit, type LspTextEdit, } from "@/features/editor/lsp/workspace-edit"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { MONACO_HIGHLIGHT_LANGUAGE_IDS } from "./language"; import { filePathFromLitheModelUri } from "./model-uri"; import { createMonacoSemanticTokenProvider } from "./semantic-token-provider"; @@ -181,7 +181,7 @@ function toWorkspaceEdit(edit: unknown): Monaco.languages.WorkspaceEdit | undefi function isLspModel(model: Monaco.editor.ITextModel): boolean { const filePath = filePathFromModel(model); - return Boolean(filePath && extensionRegistry.isLspSupported(filePath)); + return isEditorLspSupported(filePath); } export function registerMonacoLspProviders() { diff --git a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts index 25fa4fd26..1230072e4 100644 --- a/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts +++ b/windows/tauri/src/features/editor/hooks/use-lsp-integration.ts @@ -1,12 +1,13 @@ import { useEffect, useMemo, useRef } from "react"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; import { useExtensionStore } from "@/extensions/registry/extension-store"; import { deferUntilAfterNextPaint } from "@/features/editor/lsp/deferred-lsp-work"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { LspClient } from "@/features/editor/lsp/lsp-client"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { getSourceEditorBufferByPath } from "@/features/editor/utils/buffer-index"; import { logger } from "@/features/editor/utils/logger"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { getDirName } from "@/utils/path-helpers"; interface UseLspIntegrationOptions { enabled?: boolean; @@ -26,7 +27,7 @@ export const useLspIntegration = ({ const installedExtensions = useExtensionStore.use.installedExtensions(); const activeFilePath = enabled ? filePath : undefined; const isLspSupported = useMemo( - () => Boolean(activeFilePath && extensionRegistry.isLspSupported(activeFilePath)), + () => isEditorLspSupported(activeFilePath), [activeFilePath, installedExtensions], ); const documentChangeTimerRef = useRef(undefined); @@ -41,7 +42,7 @@ export const useLspIntegration = ({ useEffect(() => { if (!enabled || !filePath || !isLspSupported) return; - const workspacePath = rootFolderPath || filePath.substring(0, filePath.lastIndexOf("/")); + const workspacePath = rootFolderPath || getDirName(filePath); if (!workspacePath) { console.warn("LSP: Could not determine workspace path for", filePath); return; diff --git a/windows/tauri/src/features/editor/lsp/built-in-language-support.test.ts b/windows/tauri/src/features/editor/lsp/built-in-language-support.test.ts new file mode 100644 index 000000000..295f71685 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/built-in-language-support.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, test } from "bun:test"; +import { + isBuiltInLspPath, + isEditorLspSupported, + isJavaSourcePath, + JAVA_LANGUAGE_ID, + languageIdForEditorFile, +} from "./built-in-language-support"; + +describe("built-in Java language support", () => { + test("recognizes Windows and POSIX Java sources", () => { + expect(isJavaSourcePath("C:\\work\\src\\main\\java\\App.java")).toBe(true); + expect(isJavaSourcePath("/Users/dev/src/App.java")).toBe(true); + expect(isJavaSourcePath("C:\\work\\README.md")).toBe(false); + expect(isJavaSourcePath("remote://host/App.java")).toBe(false); + }); + + test("treats Java as a built-in LSP language without an extension pack", () => { + expect(isBuiltInLspPath("D:/demo/src/Service.JAVA")).toBe(true); + expect(isEditorLspSupported("D:/demo/src/Service.java")).toBe(true); + expect(languageIdForEditorFile("D:/demo/src/Service.java")).toBe(JAVA_LANGUAGE_ID); + }); +}); diff --git a/windows/tauri/src/features/editor/lsp/built-in-language-support.ts b/windows/tauri/src/features/editor/lsp/built-in-language-support.ts new file mode 100644 index 000000000..9e88ec884 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/built-in-language-support.ts @@ -0,0 +1,32 @@ +import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { getBaseName, normalizePath } from "@/utils/path-helpers"; + +export const JAVA_LANGUAGE_ID = "java"; +export const JAVA_PROVIDER_ID = "java"; + +const VIRTUAL_PATH_PREFIXES = ["remote://", "wsl://", "diff://"]; + +export function isJavaSourcePath(filePath: string | undefined): boolean { + if (!filePath || isVirtualEditorPath(filePath)) return false; + return getBaseName(filePath).toLowerCase().endsWith(".java"); +} + +export function isBuiltInLspPath(filePath: string | undefined): boolean { + return isJavaSourcePath(filePath); +} + +export function isEditorLspSupported(filePath: string | undefined): boolean { + if (!filePath || isVirtualEditorPath(filePath)) return false; + return isBuiltInLspPath(filePath) || extensionRegistry.isLspSupported(filePath); +} + +export function languageIdForEditorFile(filePath: string | undefined): string | undefined { + if (!filePath || isVirtualEditorPath(filePath)) return undefined; + if (isJavaSourcePath(filePath)) return JAVA_LANGUAGE_ID; + return extensionRegistry.getLanguageId(filePath) || undefined; +} + +function isVirtualEditorPath(filePath: string): boolean { + const normalized = normalizePath(filePath); + return VIRTUAL_PATH_PREFIXES.some((prefix) => normalized.startsWith(prefix)); +} diff --git a/windows/tauri/src/features/editor/lsp/java-lsp-host-api.ts b/windows/tauri/src/features/editor/lsp/java-lsp-host-api.ts new file mode 100644 index 000000000..112f78513 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/java-lsp-host-api.ts @@ -0,0 +1,20 @@ +import { invoke } from "@/platform/tauri-core"; + +export interface JavaLspLaunch { + providerId: string; + languageId: string; + executablePath: string; + arguments: string[]; + runtimeExecutablePath?: string | null; + cacheDirectory: string; + environment: { + JAVA_HOME?: string; + }; +} + +export function resolveJavaLspLaunch(workspacePath: string, javaHomePath?: string) { + return invoke("lsp_resolve_java_launch", { + workspacePath, + javaHomePath: javaHomePath ?? null, + }); +} diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index 5c47787c9..a87f3b1dd 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -14,11 +14,12 @@ import type { Diagnostic, DiagnosticCodeAction, } from "@/features/diagnostics/types/diagnostics.types"; -import type { BackendLanguageToolConfigSet } from "@/extensions/registry/extension-store-runtime"; import { hasTextContent } from "@/features/panes/types/pane-content.types"; import { useBufferStore } from "../stores/buffer.store"; import { getSourceEditorBufferByPath } from "../utils/buffer-index"; import { logger } from "../utils/logger"; +import { isBuiltInLspPath, languageIdForEditorFile } from "./built-in-language-support"; +import { resolveEditorLspLaunch } from "./resolve-editor-lsp-launch"; import type { LspSemanticTokensResponse } from "./semantic-token-types"; import { useLspStore } from "./stores/lsp.store"; import { @@ -456,73 +457,42 @@ export class LspClient { return; } - // Get LSP server info from extension registry if file path is provided - let serverPath: string | undefined; - let serverArgs: string[] | undefined; - let languageId: string | undefined; - let initOptions: Record | undefined; - let tools: BackendLanguageToolConfigSet | undefined; - - if (filePath) { - const [{ extensionRegistry }, { getLanguageToolConfigSet }] = await Promise.all([ - import("@/extensions/registry/extension-registry"), - import("@/extensions/registry/extension-store-runtime"), - ]); - const extension = extensionRegistry.getExtensionForFilePath(filePath); - - serverPath = extensionRegistry.getLspServerPath(filePath) || undefined; - serverArgs = extensionRegistry.getLspServerArgs(filePath); - languageId = extensionRegistry.getLanguageId(filePath) || undefined; - initOptions = extensionRegistry.getLspInitializationOptions(filePath); - tools = getLanguageToolConfigSet(extension?.manifest); - - logger.debug("LSPClient", `Using LSP server: ${serverPath} for language: ${languageId}`); - - // Check if this language server is already running for this workspace - if (serverPath && languageId) { - const serverKey = `${workspacePath}:${languageId}`; - if (this.activeLanguageServers.has(serverKey)) { - logger.debug("LSPClient", `LSP for ${languageId} already running in workspace`); - return; - } - } + const launch = filePath ? await resolveEditorLspLaunch(filePath, workspacePath) : null; + if (!launch) { + logger.debug("LSPClient", `No LSP server configured for workspace ${workspacePath}`); + return; } - // If no LSP server is configured, return early - if (!serverPath) { - if (languageId) { - logger.warn( - "LSPClient", - `LSP configured for language '${languageId}' but server binary is missing (file: ${filePath})`, - ); - } else { - logger.debug("LSPClient", `No LSP server configured for workspace ${workspacePath}`); - } + logger.debug("LSPClient", `Using LSP server: ${launch.serverPath} for language: ${launch.languageId}`); + const serverKey = `${workspacePath}:${launch.languageId}`; + if (this.activeLanguageServers.has(serverKey)) { + logger.debug("LSPClient", `LSP for ${launch.languageId} already running in workspace`); return; } logger.debug("LSPClient", `Invoking lsp_start with:`, { workspacePath, - serverPath, - serverArgs, + serverPath: launch.serverPath, + serverArgs: launch.serverArgs, }); await invoke("lsp_start", { workspacePath, - serverPath, - serverArgs, - languageId: languageId || null, - tools: tools || null, - initializationOptions: initOptions || null, + filePath: filePath || null, + serverPath: launch.serverPath, + serverArgs: launch.serverArgs, + languageId: launch.languageId, + providerId: launch.providerId, + tools: launch.tools || null, + initializationOptions: launch.initializationOptions || null, + runtimeExecutablePath: launch.runtimeExecutablePath || null, + cacheDirectory: launch.cacheDirectory || null, + environment: launch.environment || null, }); - // Track this language server - if (languageId) { - const serverKey = `${workspacePath}:${languageId}`; - this.activeLanguageServers.add(serverKey); - if (filePath) { - this.addTrackedFile(serverKey, filePath); - } + this.activeLanguageServers.add(serverKey); + if (filePath) { + this.addTrackedFile(serverKey, filePath); } logger.debug("LSPClient", "LSP started successfully for workspace:", workspacePath); @@ -574,22 +544,28 @@ export class LspClient { return false; } - // Get LSP server info from extension registry - const [{ extensionRegistry }, { getLanguageToolConfigSet }] = await Promise.all([ - import("@/extensions/registry/extension-registry"), - import("@/extensions/registry/extension-store-runtime"), - ]); - const extension = extensionRegistry.getExtensionForFilePath(filePath); - - const serverPath = extensionRegistry.getLspServerPath(filePath) || undefined; - const serverArgs = extensionRegistry.getLspServerArgs(filePath); - const languageId = extensionRegistry.getLanguageId(filePath) || undefined; - const initializationOptions = extensionRegistry.getLspInitializationOptions(filePath); - const tools = getLanguageToolConfigSet(extension?.manifest); + let launch: Awaited> = null; + try { + launch = await resolveEditorLspLaunch(filePath, workspacePath); + } catch (error) { + if (!options.repairAttempted && !isBuiltInLspPath(filePath)) { + const languageId = languageIdForEditorFile(filePath); + if (languageId) { + const repaired = await this.repairLanguageServerForFile(filePath, languageId); + if (repaired) { + return this.startForFile(filePath, workspacePath, { + forceRetry: true, + repairAttempted: true, + }); + } + } + } + throw error; + } - // If no LSP server is configured for this file type, return early - if (!serverPath) { - if (languageId && !options.repairAttempted) { + if (!launch) { + const languageId = languageIdForEditorFile(filePath); + if (languageId && !options.repairAttempted && !isBuiltInLspPath(filePath)) { const repaired = await this.repairLanguageServerForFile(filePath, languageId); if (repaired) { return this.startForFile(filePath, workspacePath, { @@ -613,22 +589,21 @@ export class LspClient { throw new Error(message); } - logger.debug("LSPClient", `Using LSP server: ${serverPath} for language: ${languageId}`); + const languageId = launch.languageId; + logger.debug("LSPClient", `Using LSP server: ${launch.serverPath} for language: ${languageId}`); - if (languageId) { - const serverKey = `${workspacePath}:${languageId}`; - if (options.forceRetry) { - this.failedLanguageServers.delete(serverKey); - } - if (this.failedLanguageServers.has(serverKey)) { - logger.debug( - "LSPClient", - `Skipping LSP restart for ${languageId} in ${workspacePath} after a previous startup failure`, - ); - throw new Error( - `${this.getLanguageDisplayName(languageId)} language server previously failed to start.`, - ); - } + const serverKey = `${workspacePath}:${languageId}`; + if (options.forceRetry) { + this.failedLanguageServers.delete(serverKey); + } + if (this.failedLanguageServers.has(serverKey)) { + logger.debug( + "LSPClient", + `Skipping LSP restart for ${languageId} in ${workspacePath} after a previous startup failure`, + ); + throw new Error( + `${this.getLanguageDisplayName(languageId)} language server previously failed to start.`, + ); } useLspStore.getState().actions.updateLspStatus("connecting"); @@ -636,35 +611,32 @@ export class LspClient { logger.debug("LSPClient", `Invoking lsp_start_for_file with:`, { filePath, workspacePath, - serverPath, - serverArgs, + serverPath: launch.serverPath, + serverArgs: launch.serverArgs, }); try { await invoke("lsp_start_for_file", { filePath, workspacePath, - serverPath, - serverArgs, - languageId: languageId || null, - tools: tools || null, - initializationOptions: initializationOptions || null, + serverPath: launch.serverPath, + serverArgs: launch.serverArgs, + languageId, + providerId: launch.providerId, + tools: launch.tools || null, + initializationOptions: launch.initializationOptions || null, + runtimeExecutablePath: launch.runtimeExecutablePath || null, + cacheDirectory: launch.cacheDirectory || null, + environment: launch.environment || null, }); - if (languageId) { - const serverKey = `${workspacePath}:${languageId}`; - this.failedLanguageServers.delete(serverKey); - this.activeLanguageServers.add(serverKey); - this.addTrackedFile(serverKey, filePath); - const displayName = this.getLanguageDisplayName(languageId); - this.activeLanguages.add(displayName); - this.updateLspStatus(); - } + this.failedLanguageServers.delete(serverKey); + this.activeLanguageServers.add(serverKey); + this.addTrackedFile(serverKey, filePath); + this.activeLanguages.add(this.getLanguageDisplayName(languageId)); + this.updateLspStatus(); } catch (error) { - if (languageId) { - const serverKey = `${workspacePath}:${languageId}`; - this.failedLanguageServers.add(serverKey); - } - if (languageId && !options.repairAttempted && this.isRepairableStartupError(error)) { + this.failedLanguageServers.add(serverKey); + if (!options.repairAttempted && this.isRepairableStartupError(error)) { const repaired = await this.repairLanguageServerForFile(filePath, languageId); if (repaired) { return this.startForFile(filePath, workspacePath, { @@ -734,8 +706,7 @@ export class LspClient { async stopForFile(filePath: string): Promise { try { logger.debug("LSPClient", "Stopping LSP for file:", filePath); - const { extensionRegistry } = await import("@/extensions/registry/extension-registry"); - const languageId = extensionRegistry.getLanguageId(filePath) || undefined; + const languageId = languageIdForEditorFile(filePath); await invoke("lsp_stop_for_file", { filePath }); if (languageId) { @@ -1273,8 +1244,7 @@ export class LspClient { async notifyDocumentOpen(filePath: string, content: string): Promise { try { logger.debug("LSPClient", `Opening document: ${filePath}`); - const { extensionRegistry } = await import("@/extensions/registry/extension-registry"); - const languageId = extensionRegistry.getLanguageId(filePath) || undefined; + const languageId = languageIdForEditorFile(filePath); await invoke("lsp_document_open", { filePath, content, languageId }); this.openDocuments.add(filePath); this.documentVersions.set(filePath, 1); diff --git a/windows/tauri/src/features/editor/lsp/resolve-editor-lsp-launch.ts b/windows/tauri/src/features/editor/lsp/resolve-editor-lsp-launch.ts new file mode 100644 index 000000000..406ec5fe4 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/resolve-editor-lsp-launch.ts @@ -0,0 +1,55 @@ +import type { BackendLanguageToolConfigSet } from "@/extensions/registry/extension-store-runtime"; +import { isJavaSourcePath, JAVA_LANGUAGE_ID, JAVA_PROVIDER_ID } from "./built-in-language-support"; +import { resolveJavaLspLaunch } from "./java-lsp-host-api"; + +export interface EditorLspLaunch { + providerId: string; + languageId: string; + serverPath: string; + serverArgs: string[]; + initializationOptions?: Record; + tools?: BackendLanguageToolConfigSet; + runtimeExecutablePath?: string | null; + cacheDirectory?: string; + environment?: Record; +} + +export async function resolveEditorLspLaunch( + filePath: string, + workspacePath: string, +): Promise { + if (isJavaSourcePath(filePath)) { + const launch = await resolveJavaLspLaunch(workspacePath); + const environment: Record = {}; + if (launch.environment.JAVA_HOME) { + environment.JAVA_HOME = launch.environment.JAVA_HOME; + } + return { + providerId: launch.providerId || JAVA_PROVIDER_ID, + languageId: launch.languageId || JAVA_LANGUAGE_ID, + serverPath: launch.executablePath, + serverArgs: launch.arguments ?? [], + runtimeExecutablePath: launch.runtimeExecutablePath, + cacheDirectory: launch.cacheDirectory, + environment, + }; + } + + const [{ extensionRegistry }, { getLanguageToolConfigSet }] = await Promise.all([ + import("@/extensions/registry/extension-registry"), + import("@/extensions/registry/extension-store-runtime"), + ]); + const extension = extensionRegistry.getExtensionForFilePath(filePath); + const serverPath = extensionRegistry.getLspServerPath(filePath); + const languageId = extensionRegistry.getLanguageId(filePath); + if (!serverPath || !languageId) return null; + + return { + providerId: languageId, + languageId, + serverPath, + serverArgs: extensionRegistry.getLspServerArgs(filePath), + initializationOptions: extensionRegistry.getLspInitializationOptions(filePath), + tools: getLanguageToolConfigSet(extension?.manifest), + }; +} diff --git a/windows/tauri/src/features/editor/lsp/signature-help-tooltip.tsx b/windows/tauri/src/features/editor/lsp/signature-help-tooltip.tsx index 8a036c255..66005ed7d 100644 --- a/windows/tauri/src/features/editor/lsp/signature-help-tooltip.tsx +++ b/windows/tauri/src/features/editor/lsp/signature-help-tooltip.tsx @@ -2,7 +2,7 @@ import { type RefObject, useCallback, useEffect, useMemo, useRef, useState } fro import { EDITOR_CONSTANTS } from "@/features/editor/config/constants"; import { useEditorLayout } from "@/features/editor/hooks/use-layout"; import { useEditorStateStore } from "@/features/editor/stores/state.store"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "./built-in-language-support"; import type { EditorModelPositionResolver } from "../view-model/view-layout"; import { LspClient } from "./lsp-client"; @@ -63,7 +63,7 @@ export const SignatureHelpTooltip = ({ }, [editorRef, filePath]); const fetchSignatureHelp = useCallback(async () => { - if (!filePath || !extensionRegistry.isLspSupported(filePath)) { + if (!filePath || !isEditorLspSupported(filePath)) { setSignatureHelp(null); return; } diff --git a/windows/tauri/src/features/editor/lsp/use-code-lens.ts b/windows/tauri/src/features/editor/lsp/use-code-lens.ts index 2baf6462a..42aa8b05f 100644 --- a/windows/tauri/src/features/editor/lsp/use-code-lens.ts +++ b/windows/tauri/src/features/editor/lsp/use-code-lens.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "./built-in-language-support"; import { LspClient } from "./lsp-client"; import { useLspStore } from "./stores/lsp.store"; @@ -19,7 +19,7 @@ export const useCodeLens = (filePath: string | undefined, enabled: boolean) => { }); const fetchLenses = useCallback(async () => { - if (!filePath || !enabled || !extensionRegistry.isLspSupported(filePath)) { + if (!filePath || !enabled || !isEditorLspSupported(filePath)) { setLenses([]); return; } diff --git a/windows/tauri/src/features/outline/hooks/use-document-outline.ts b/windows/tauri/src/features/outline/hooks/use-document-outline.ts index e5866da5a..1f668e9e0 100644 --- a/windows/tauri/src/features/outline/hooks/use-document-outline.ts +++ b/windows/tauri/src/features/outline/hooks/use-document-outline.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import { useShallow } from "zustand/react/shallow"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { LspClient } from "@/features/editor/lsp/lsp-client"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { hasTextContent } from "@/features/panes/types/pane-content.types"; @@ -30,7 +30,7 @@ export function useDocumentOutline({ Boolean(filePath) && activeBuffer?.type === "editor" && !activeBuffer.isVirtual && - extensionRegistry.isLspSupported(filePath); + isEditorLspSupported(filePath); const [rawSymbols, setRawSymbols] = useState< Awaited> >([]); diff --git a/windows/tauri/src/features/quick-open/hooks/use-symbol-search.ts b/windows/tauri/src/features/quick-open/hooks/use-symbol-search.ts index 181505eaa..878cc3f27 100644 --- a/windows/tauri/src/features/quick-open/hooks/use-symbol-search.ts +++ b/windows/tauri/src/features/quick-open/hooks/use-symbol-search.ts @@ -2,7 +2,7 @@ import { useCallback, useEffect, useState } from "react"; import { LspClient } from "@/features/editor/lsp/lsp-client"; import { useBufferStore } from "@/features/editor/stores/buffer.store"; import { getBufferById } from "@/features/editor/utils/buffer-index"; -import { extensionRegistry } from "@/extensions/registry/extension-registry"; +import { isEditorLspSupported } from "@/features/editor/lsp/built-in-language-support"; import { fuzzyScore } from "../utils/fuzzy-search"; export interface SymbolItem { @@ -37,7 +37,7 @@ export const useSymbolSearch = (query: string, isActive: boolean) => { const bufferStore = useBufferStore.getState(); const activeBuffer = getBufferById(bufferStore.buffers, bufferStore.activeBufferId); - if (!activeBuffer?.path || !extensionRegistry.isLspSupported(activeBuffer.path)) { + if (!activeBuffer?.path || !isEditorLspSupported(activeBuffer.path)) { setSymbols([]); return; } diff --git a/windows/tauri/src/platform/lsp-core-adapter.ts b/windows/tauri/src/platform/lsp-core-adapter.ts index 588e825c3..a90a0bfdf 100644 --- a/windows/tauri/src/platform/lsp-core-adapter.ts +++ b/windows/tauri/src/platform/lsp-core-adapter.ts @@ -145,17 +145,24 @@ function sessionForFile(filePath: string): Session { async function start(args: JsonRecord): Promise { const workspacePath = String(args.workspacePath ?? ""); const languageId = String(args.languageId ?? "plaintext"); + const providerId = String(args.providerId ?? languageId); const key = `${workspacePath}:${languageId}`; let session = sessions.get(key); if (!session) { + const environment = { + ...(args.tools?.lsp?.env ?? {}), + ...(args.environment ?? {}), + }; const started = await core<{ sessionId: string }>("lsp.startServer", { - providerId: languageId, + providerId, executablePath: args.serverPath, arguments: args.serverArgs ?? [], - environment: args.tools?.lsp?.env ?? {}, + environment, rootUri: fileUri(workspacePath), workingDirectory: workspacePath, initializationOptions: args.initializationOptions ?? null, + runtimeExecutablePath: args.runtimeExecutablePath ?? null, + cacheDirectory: args.cacheDirectory ?? null, }); session = { id: started.sessionId, diff --git a/windows/tauri/src/platform/tauri-core.ts b/windows/tauri/src/platform/tauri-core.ts index 52c7c593e..c4d2437a6 100644 --- a/windows/tauri/src/platform/tauri-core.ts +++ b/windows/tauri/src/platform/tauri-core.ts @@ -33,6 +33,7 @@ const nativeCommands = new Set([ "get_system_fonts", "get_system_theme", "list_shells", + "lsp_resolve_java_launch", "move_file", "open_file_external", "read_file_custom", From 4c5ff6e57bf43aa2366ba6753225170517a01807 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:29:39 +0800 Subject: [PATCH 38/83] feat(windows): navigate Spring config, @Value, and beans Index the workspace with spring.index and resolve those locations before falling back to the language server, matching the macOS definition and reference order. --- docs/architecture/windows-development-plan.md | 3 +- .../features/bootstrap/use-app-bootstrap.ts | 2 + .../commands/navigation-command-actions.ts | 157 ++++++++++++++- .../features/spring/api/spring-index-api.ts | 83 ++++++++ .../features/spring/hooks/use-spring-index.ts | 109 +++++++++++ .../features/spring/stores/spring.store.ts | 57 ++++++ .../src/features/spring/types/spring.types.ts | 71 +++++++ .../spring/utils/spring-index-paths.ts | 31 +++ .../spring/utils/spring-navigation.test.ts | 142 ++++++++++++++ .../spring/utils/spring-navigation.ts | 183 ++++++++++++++++++ 10 files changed, 835 insertions(+), 3 deletions(-) create mode 100644 windows/tauri/src/features/spring/api/spring-index-api.ts create mode 100644 windows/tauri/src/features/spring/hooks/use-spring-index.ts create mode 100644 windows/tauri/src/features/spring/stores/spring.store.ts create mode 100644 windows/tauri/src/features/spring/types/spring.types.ts create mode 100644 windows/tauri/src/features/spring/utils/spring-index-paths.ts create mode 100644 windows/tauri/src/features/spring/utils/spring-navigation.test.ts create mode 100644 windows/tauri/src/features/spring/utils/spring-navigation.ts diff --git a/docs/architecture/windows-development-plan.md b/docs/architecture/windows-development-plan.md index cb1d723e7..510055b60 100644 --- a/docs/architecture/windows-development-plan.md +++ b/docs/architecture/windows-development-plan.md @@ -36,7 +36,8 @@ platform contract and enabled in the UI only when the capability exists. 2. Route workspace search, Local History, remaining non-Java LSP, Java/Maven, and run configurations through the same dispatcher. Built-in Java LSP now starts through the Windows host (`jdtls` + JDK discovery) and - `lsp.startServer` with `providerId: "java"`. + `lsp.startServer` with `providerId: "java"`. Spring configuration, `@Value`, + and bean-injection navigation uses `spring.index` before falling back to LSP. 3. Implement Windows-owned process, debug, update, and secure-storage flows in Rust where the current UI exposes them. 4. Hide or capability-gate future feature surfaces until their shared backend diff --git a/windows/tauri/src/features/bootstrap/use-app-bootstrap.ts b/windows/tauri/src/features/bootstrap/use-app-bootstrap.ts index 938f845a3..2b771aeea 100644 --- a/windows/tauri/src/features/bootstrap/use-app-bootstrap.ts +++ b/windows/tauri/src/features/bootstrap/use-app-bootstrap.ts @@ -11,6 +11,7 @@ import { } from "@/features/file-system/services/file-watcher-listener"; import { useOnboardingStore } from "@/features/onboarding/stores/onboarding.store"; import { useLspInitialization } from "@/features/editor/hooks/use-lsp-initialization"; +import { useSpringIndex } from "@/features/spring/hooks/use-spring-index"; import { useKeymapContext } from "@/features/keymaps/hooks/use-keymap-context"; import { useKeymaps } from "@/features/keymaps/hooks/use-keymaps"; import { useWhatsNewStore } from "@/features/settings/stores/whats-new.store"; @@ -42,6 +43,7 @@ export function useAppBootstrap() { useKeymaps(); useContextMenuPrevention(); useLspInitialization(); + useSpringIndex(); useEffect(() => { let timer: number | null = null; diff --git a/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts b/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts index 8326ca91f..10256a3bb 100644 --- a/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts +++ b/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts @@ -10,7 +10,17 @@ import { } from "@/features/editor/utils/position"; import { useReferencesStore } from "@/features/references/stores/references.store"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { languageIdForEditorFile } from "@/features/editor/lsp/built-in-language-support"; +import { languageServerUnavailableMessage } from "@/features/editor/lsp/language-server-navigation"; +import { useLspStore } from "@/features/editor/lsp/stores/lsp.store"; +import { useSpringStore } from "@/features/spring/stores/spring.store"; +import type { SpringNavigationLocation } from "@/features/spring/types/spring.types"; +import { + resolveSpringDefinitions, + resolveSpringReferences, +} from "@/features/spring/utils/spring-navigation"; import { useUIState } from "@/features/window/stores/ui-state.store"; +import { getBaseName } from "@/utils/path-helpers"; import { showPromptDialog } from "@/ui/dialog"; import { toast } from "sonner"; @@ -40,6 +50,119 @@ type LspNavigationClient = { ) => Promise; }; +function activeEditorNavigationContext() { + const bufferStore = useBufferStore.getState(); + const activeBuffer = bufferStore.buffers.find((buffer) => buffer.id === bufferStore.activeBufferId); + const editorState = useEditorStateStore.getState(); + if (!activeBuffer || activeBuffer.type !== "editor" || !activeBuffer.path) return null; + return { bufferStore, activeBuffer, editorState }; +} + +function unavailableLanguageServerToast(filePath: string, lspClient: { hasSessionForFile(path: string): boolean }): string | null { + const status = useLspStore.getState().lspStatus; + return languageServerUnavailableMessage({ + languageId: languageIdForEditorFile(filePath), + status: status.status, + lastError: status.lastError, + hasSession: lspClient.hasSessionForFile(filePath), + }); +} + +function springLocationsForActiveFile(kind: "definition" | "references"): SpringNavigationLocation[] { + const context = activeEditorNavigationContext(); + const springState = useSpringStore.getState(); + if (!context || !springState.root) return []; + return kind === "definition" + ? resolveSpringDefinitions( + springState.index, + springState.root, + context.activeBuffer.path, + context.editorState.cursorPosition.line, + ) + : resolveSpringReferences( + springState.index, + springState.root, + context.activeBuffer.path, + context.editorState.cursorPosition.line, + ); +} + +async function navigateToSpringLocation(location: SpringNavigationLocation): Promise { + await goToActiveLspLocation( + "definition", + async () => [ + { + uri: location.filePath, + range: { + start: { line: location.line, character: location.column }, + end: { line: location.line, character: location.column }, + }, + }, + ], + { requireLanguageServer: false }, + ); +} + +async function presentSpringReferences( + locations: SpringNavigationLocation[], + symbol: string, +): Promise { + const context = activeEditorNavigationContext(); + if (!context) return; + + const [{ readFileContent }] = await Promise.all([ + import("@/features/file-system/controllers/file-operations"), + ]); + const referencesActions = useReferencesStore.getState().actions; + referencesActions.setIsLoading(true); + context.bufferStore.actions.openReferencesBuffer(); + + const lineContextCache = new Map>(); + const referenceLinesByFile = new Map>(); + for (const location of locations) { + const lineNumbers = referenceLinesByFile.get(location.filePath) ?? new Set(); + lineNumbers.add(location.line); + referenceLinesByFile.set(location.filePath, lineNumbers); + } + + const lineContextEntries = await Promise.all( + Array.from(referenceLinesByFile, async ([filePath, lineNumbers]) => { + let content = ""; + const buffer = context.bufferStore.buffers.find((candidate) => candidate.path === filePath); + if (buffer && "content" in buffer && typeof buffer.content === "string") { + content = buffer.content; + } else { + try { + content = await readFileContent(filePath); + } catch { + content = ""; + } + } + return [filePath, getLineTextsFromContent(content, lineNumbers)] as const; + }), + ); + for (const [filePath, lines] of lineContextEntries) { + lineContextCache.set(filePath, lines); + } + + referencesActions.setReferences( + { + symbol, + filePath: context.activeBuffer.path, + line: context.editorState.cursorPosition.line, + column: context.editorState.cursorPosition.column, + }, + locations.map((location) => ({ + filePath: location.filePath, + line: location.line, + column: location.column, + endLine: location.line, + endColumn: location.column, + lineContent: lineContextCache.get(location.filePath)?.get(location.line) || "", + })), + ); +} + async function goToActiveLspLocation( label: string, resolveLocations: ( @@ -48,6 +171,7 @@ async function goToActiveLspLocation( line: number, character: number, ) => Promise, + options: { requireLanguageServer?: boolean } = {}, ): Promise { const [{ LspClient }, { readFileContent }, { filePathFromUri }] = await Promise.all([ import("@/features/editor/lsp/lsp-client"), @@ -63,6 +187,14 @@ async function goToActiveLspLocation( if (!activeBuffer || activeBuffer.type !== "editor" || !activeBuffer.path) return; + if (options.requireLanguageServer !== false) { + const unavailable = unavailableLanguageServerToast(activeBuffer.path, lspClient); + if (unavailable) { + toast.error(unavailable); + return; + } + } + const locations = await resolveLocations( lspClient, activeBuffer.path, @@ -86,14 +218,14 @@ async function goToActiveLspLocation( }); const target = locations[0]; - const filePath = filePathFromUri(target.uri); + const filePath = target.uri.includes("://") ? filePathFromUri(target.uri) : target.uri; const existingBuffer = bufferStore.buffers.find((b) => b.path === filePath); if (existingBuffer) { bufferStore.actions.setActiveBuffer(existingBuffer.id); } else { const content = await readFileContent(filePath); - const fileName = filePath.split("/").pop() || "untitled"; + const fileName = getBaseName(filePath); const bufferId = bufferStore.actions.openBuffer(filePath, fileName, content); bufferStore.actions.setActiveBuffer(bufferId); } @@ -143,6 +275,15 @@ export function openOutlineSidebar(): void { } export async function goToDefinition(): Promise { + const springLocations = springLocationsForActiveFile("definition"); + if (springLocations.length === 1) { + await navigateToSpringLocation(springLocations[0]); + return; + } + if (springLocations.length > 1) { + await presentSpringReferences(springLocations, springLocations[0]?.symbol || "Spring"); + return; + } await goToActiveLspLocation("definition", (lspClient, filePath, line, character) => lspClient.getDefinition(filePath, line, character), ); @@ -174,6 +315,18 @@ export async function goToReferences(): Promise { if (!activeBuffer?.path) return; + const springLocations = springLocationsForActiveFile("references"); + if (springLocations.length > 0) { + await presentSpringReferences(springLocations, springLocations[0]?.symbol || "Spring"); + return; + } + + const unavailable = unavailableLanguageServerToast(activeBuffer.path, lspClient); + if (unavailable) { + toast.error(unavailable); + return; + } + const currentLine = getLineTextFromContent(editorAPI.getContent(), cursorPosition.line); const wordMatch = currentLine.slice(0, cursorPosition.column + 1).match(/[\w$]+$/); const wordEnd = currentLine.slice(cursorPosition.column).match(/^[\w$]*/); diff --git a/windows/tauri/src/features/spring/api/spring-index-api.ts b/windows/tauri/src/features/spring/api/spring-index-api.ts new file mode 100644 index 000000000..b9b141c05 --- /dev/null +++ b/windows/tauri/src/features/spring/api/spring-index-api.ts @@ -0,0 +1,83 @@ +import { executeCore, type CoreResponse } from "@/core/lithe-core-client"; +import type { SpringIndex } from "../types/spring.types"; + +interface CoreSpringIndex { + properties: Array<{ + name: string; + typeName?: string | null; + description?: string | null; + defaultValue?: string | null; + sourcePath?: string | null; + sourceLine?: number | null; + sourceColumn?: number | null; + }>; + values: Array<{ + key: string; + value: string; + path: string; + line: number; + column: number; + profile?: string | null; + overridesBaseValue: boolean; + targetPath?: string | null; + targetLine?: number | null; + targetColumn?: number | null; + }>; + propertyReferences: Array<{ + key: string; + path: string; + line: number; + column: number; + }>; + beans: Array<{ + id: string; + name: string; + typeName: string; + path: string; + line: number; + column: number; + kind: string; + }>; + injections: Array<{ + path: string; + line: number; + column: number; + typeName: string; + qualifier?: string | null; + beanIds: string[]; + }>; +} + +function coreData(response: CoreResponse): T { + if (response.ok) return response.data; + throw new Error(`${response.error.code}: ${response.error.message}`); +} + +export async function requestSpringIndex(args: { + root: string; + paths: string[]; + metadataRepositories?: string[]; + textOverrides?: Record; + refreshDependencyMetadata: boolean; +}): Promise { + const response = await executeCore({ + id: crypto.randomUUID(), + timeoutMilliseconds: args.refreshDependencyMetadata ? 60_000 : 30_000, + command: "spring.index", + payload: { + root: args.root, + paths: args.paths, + metadataRepositories: args.metadataRepositories ?? [], + textOverrides: args.textOverrides ?? {}, + refreshDependencyMetadata: args.refreshDependencyMetadata, + }, + }); + const data = coreData(response); + return { + properties: data.properties ?? [], + values: data.values ?? [], + propertyReferences: data.propertyReferences ?? [], + beans: data.beans ?? [], + injections: data.injections ?? [], + }; +} diff --git a/windows/tauri/src/features/spring/hooks/use-spring-index.ts b/windows/tauri/src/features/spring/hooks/use-spring-index.ts new file mode 100644 index 000000000..813846850 --- /dev/null +++ b/windows/tauri/src/features/spring/hooks/use-spring-index.ts @@ -0,0 +1,109 @@ +import { exists } from "@tauri-apps/plugin-fs"; +import { homeDir, join } from "@tauri-apps/api/path"; +import { useEffect, useRef } from "react"; +import { useBufferStore } from "@/features/editor/stores/buffer.store"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { hasTextContent } from "@/features/panes/types/pane-content.types"; +import { requestSpringIndex } from "../api/spring-index-api"; +import { useSpringStore } from "../stores/spring.store"; +import { EMPTY_SPRING_INDEX } from "../types/spring.types"; +import { + collectSpringIndexPaths, + isSpringIndexPath, + workspaceRelativeSpringPath, +} from "../utils/spring-index-paths"; + +const RELOAD_DELAY_MS = 300; + +async function resolveMavenMetadataRepository(): Promise { + try { + const repository = await join(await homeDir(), ".m2", "repository"); + if (await exists(repository)) return repository; + } catch { + return undefined; + } + return undefined; +} + +export function useSpringIndex() { + const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); + const loadGeneration = useRef(0); + const reloadTimer = useRef | undefined>(undefined); + + useEffect(() => { + const store = useSpringStore.getState(); + if (!rootFolderPath) { + store.actions.reset(); + return; + } + + let cancelled = false; + + const load = async (refreshDependencyMetadata: boolean) => { + const generation = store.actions.beginLoad(rootFolderPath); + loadGeneration.current = generation; + try { + const files = await useFileSystemStore.getState().getAllProjectFiles(); + const paths = collectSpringIndexPaths( + files.map((file) => file.path), + rootFolderPath, + ); + const textOverrides: Record = {}; + for (const buffer of useBufferStore.getState().buffers) { + if (!buffer.path || !hasTextContent(buffer) || !isSpringIndexPath(buffer.path)) continue; + const relative = workspaceRelativeSpringPath(buffer.path, rootFolderPath); + if (relative) textOverrides[relative] = buffer.content; + } + const metadataRepository = refreshDependencyMetadata + ? await resolveMavenMetadataRepository() + : undefined; + const index = + paths.length === 0 + ? EMPTY_SPRING_INDEX + : await requestSpringIndex({ + root: rootFolderPath, + paths, + metadataRepositories: metadataRepository ? [metadataRepository] : [], + textOverrides, + refreshDependencyMetadata, + }); + if (cancelled) return; + useSpringStore.getState().actions.completeLoad(generation, rootFolderPath, index); + } catch (error) { + console.warn("Spring index failed:", error); + if (!cancelled) useSpringStore.getState().actions.failLoad(generation); + } + }; + + const scheduleReload = () => { + if (reloadTimer.current) clearTimeout(reloadTimer.current); + reloadTimer.current = setTimeout(() => { + void load(false); + }, RELOAD_DELAY_MS); + }; + + void load(true); + + const unsubscribeBuffers = useBufferStore.subscribe((state, previous) => { + const changed = state.buffers.some((buffer) => { + if (!buffer.path || !isSpringIndexPath(buffer.path) || !hasTextContent(buffer)) return false; + const previousBuffer = previous.buffers.find((candidate) => candidate.id === buffer.id); + return !previousBuffer || !hasTextContent(previousBuffer) || previousBuffer.content !== buffer.content; + }); + if (changed) scheduleReload(); + }); + + const handleExternalChange = (event: Event) => { + const path = (event as CustomEvent<{ path?: string }>).detail?.path; + if (path && isSpringIndexPath(path)) scheduleReload(); + }; + window.addEventListener("file-external-change", handleExternalChange); + + return () => { + cancelled = true; + unsubscribeBuffers(); + window.removeEventListener("file-external-change", handleExternalChange); + if (reloadTimer.current) clearTimeout(reloadTimer.current); + }; + }, [rootFolderPath]); +} diff --git a/windows/tauri/src/features/spring/stores/spring.store.ts b/windows/tauri/src/features/spring/stores/spring.store.ts new file mode 100644 index 000000000..95570b4de --- /dev/null +++ b/windows/tauri/src/features/spring/stores/spring.store.ts @@ -0,0 +1,57 @@ +import { createStore } from "zustand/vanilla"; +import { createWorkspaceScopedStore } from "@/features/workspace/stores/create-workspace-scoped-store"; +import { EMPTY_SPRING_INDEX, type SpringIndex } from "../types/spring.types"; + +interface SpringState { + root: string | null; + index: SpringIndex; + isIndexing: boolean; + generation: number; + actions: { + beginLoad: (root: string) => number; + completeLoad: (generation: number, root: string, index: SpringIndex) => void; + failLoad: (generation: number) => void; + reset: () => void; + }; +} + +const createSpringStore = () => + createStore()((set, get) => ({ + root: null, + index: EMPTY_SPRING_INDEX, + isIndexing: false, + generation: 0, + actions: { + beginLoad: (root) => { + const generation = get().generation + 1; + set({ + root, + generation, + isIndexing: true, + }); + return generation; + }, + completeLoad: (generation, root, index) => { + if (get().generation !== generation) return; + set({ + root, + index, + isIndexing: false, + }); + }, + failLoad: (generation) => { + if (get().generation !== generation) return; + set({ isIndexing: false }); + }, + reset: () => { + set({ + root: null, + index: EMPTY_SPRING_INDEX, + isIndexing: false, + generation: get().generation + 1, + }); + }, + }, + })); + +export const useSpringStore = createWorkspaceScopedStore("spring", createSpringStore); diff --git a/windows/tauri/src/features/spring/types/spring.types.ts b/windows/tauri/src/features/spring/types/spring.types.ts new file mode 100644 index 000000000..f755ca48f --- /dev/null +++ b/windows/tauri/src/features/spring/types/spring.types.ts @@ -0,0 +1,71 @@ +export interface SpringProperty { + name: string; + typeName?: string | null; + description?: string | null; + defaultValue?: string | null; + sourcePath?: string | null; + sourceLine?: number | null; + sourceColumn?: number | null; +} + +export interface SpringConfigurationValue { + key: string; + value: string; + path: string; + line: number; + column: number; + profile?: string | null; + overridesBaseValue: boolean; + targetPath?: string | null; + targetLine?: number | null; + targetColumn?: number | null; +} + +export interface SpringPropertyReference { + key: string; + path: string; + line: number; + column: number; +} + +export interface SpringBean { + id: string; + name: string; + typeName: string; + path: string; + line: number; + column: number; + kind: string; +} + +export interface SpringInjection { + path: string; + line: number; + column: number; + typeName: string; + qualifier?: string | null; + beanIds: string[]; +} + +export interface SpringIndex { + properties: SpringProperty[]; + values: SpringConfigurationValue[]; + propertyReferences: SpringPropertyReference[]; + beans: SpringBean[]; + injections: SpringInjection[]; +} + +export interface SpringNavigationLocation { + filePath: string; + line: number; + column: number; + symbol: string; +} + +export const EMPTY_SPRING_INDEX: SpringIndex = { + properties: [], + values: [], + propertyReferences: [], + beans: [], + injections: [], +}; diff --git a/windows/tauri/src/features/spring/utils/spring-index-paths.ts b/windows/tauri/src/features/spring/utils/spring-index-paths.ts new file mode 100644 index 000000000..e693cb63c --- /dev/null +++ b/windows/tauri/src/features/spring/utils/spring-index-paths.ts @@ -0,0 +1,31 @@ +import { getBaseName, getRelativePath, normalizePath } from "@/utils/path-helpers"; + +export function isSpringIndexPath(filePath: string): boolean { + const name = getBaseName(filePath).toLowerCase(); + if (name.endsWith(".java")) return true; + if (name === "spring-configuration-metadata.json") return true; + if (name === "additional-spring-configuration-metadata.json") return true; + return isSpringConfigurationPath(filePath); +} + +export function isSpringConfigurationPath(filePath: string): boolean { + const name = getBaseName(filePath).toLowerCase(); + if (name === "application.properties") return true; + if (name.startsWith("application-") && name.endsWith(".properties")) return true; + if (name === "application.yml" || name === "application.yaml") return true; + return name.startsWith("application-") && (name.endsWith(".yml") || name.endsWith(".yaml")); +} + +export function workspaceRelativeSpringPath(filePath: string, root: string): string { + return getRelativePath(filePath, root).replace(/\\/g, "/"); +} + +export function collectSpringIndexPaths(filePaths: readonly string[], root: string): string[] { + const paths = new Set(); + for (const filePath of filePaths) { + if (!isSpringIndexPath(filePath)) continue; + const relative = workspaceRelativeSpringPath(filePath, root); + if (relative) paths.add(normalizePath(relative)); + } + return [...paths].sort(); +} diff --git a/windows/tauri/src/features/spring/utils/spring-navigation.test.ts b/windows/tauri/src/features/spring/utils/spring-navigation.test.ts new file mode 100644 index 000000000..fb0b3bb7c --- /dev/null +++ b/windows/tauri/src/features/spring/utils/spring-navigation.test.ts @@ -0,0 +1,142 @@ +import { describe, expect, test } from "bun:test"; +import type { SpringIndex } from "../types/spring.types"; +import { collectSpringIndexPaths, isSpringConfigurationPath, isSpringIndexPath } from "./spring-index-paths"; +import { resolveSpringDefinitions, resolveSpringReferences } from "./spring-navigation"; + +const ROOT = "C:/work/demo"; + +const index: SpringIndex = { + properties: [ + { + name: "server.port", + sourcePath: "src/main/java/com/demo/ServerProperties.java", + sourceLine: 8, + sourceColumn: 5, + }, + ], + values: [ + { + key: "server.port", + value: "8080", + path: "src/main/resources/application.yml", + line: 2, + column: 3, + overridesBaseValue: false, + targetPath: "src/main/java/com/demo/ServerProperties.java", + targetLine: 8, + targetColumn: 5, + }, + ], + propertyReferences: [ + { + key: "server.port", + path: "src/main/java/com/demo/ApiController.java", + line: 14, + column: 12, + }, + ], + beans: [ + { + id: "userService", + name: "userService", + typeName: "com.demo.UserService", + path: "src/main/java/com/demo/UserService.java", + line: 6, + column: 1, + kind: "component", + }, + ], + injections: [ + { + path: "src/main/java/com/demo/ApiController.java", + line: 10, + column: 5, + typeName: "com.demo.UserService", + beanIds: ["userService"], + }, + ], +}; + +describe("Spring index path filters", () => { + test("keeps Java, application config, and metadata files", () => { + expect(isSpringIndexPath("C:/work/App.java")).toBe(true); + expect(isSpringConfigurationPath("C:/work/src/main/resources/application-dev.yml")).toBe(true); + expect(isSpringIndexPath("C:/work/README.md")).toBe(false); + expect( + collectSpringIndexPaths( + [ + "C:/work/demo/src/main/java/App.java", + "C:/work/demo/src/main/resources/application.yml", + "C:/work/demo/README.md", + ], + ROOT, + ), + ).toEqual(["src/main/java/App.java", "src/main/resources/application.yml"]); + }); +}); + +describe("Spring definition navigation", () => { + test("jumps from a configuration value to the Java declaration and @Value uses", () => { + const locations = resolveSpringDefinitions( + index, + ROOT, + "C:/work/demo/src/main/resources/application.yml", + 1, + ); + expect(locations.map((location) => `${location.filePath}:${location.line}`)).toEqual([ + "C:/work/demo/src/main/java/com/demo/ServerProperties.java:7", + "C:/work/demo/src/main/java/com/demo/ApiController.java:13", + ]); + }); + + test("jumps from a @Value reference back to the configuration document", () => { + const locations = resolveSpringDefinitions( + index, + ROOT, + "C:/work/demo/src/main/java/com/demo/ApiController.java", + 13, + ); + expect(locations).toEqual([ + { + filePath: "C:/work/demo/src/main/resources/application.yml", + line: 1, + column: 2, + symbol: "server.port", + }, + ]); + }); + + test("jumps from an injection point to the matching bean", () => { + const locations = resolveSpringDefinitions( + index, + ROOT, + "C:/work/demo/src/main/java/com/demo/ApiController.java", + 9, + ); + expect(locations).toEqual([ + { + filePath: "C:/work/demo/src/main/java/com/demo/UserService.java", + line: 5, + column: 0, + symbol: "userService", + }, + ]); + }); +}); + +describe("Spring reference navigation", () => { + test("collects the configuration value and every @Value use for the same key", () => { + const locations = resolveSpringReferences( + index, + ROOT, + "C:/work/demo/src/main/resources/application.yml", + 1, + ); + expect(locations.map((location) => location.filePath)).toContain( + "C:/work/demo/src/main/resources/application.yml", + ); + expect(locations.map((location) => location.filePath)).toContain( + "C:/work/demo/src/main/java/com/demo/ApiController.java", + ); + }); +}); diff --git a/windows/tauri/src/features/spring/utils/spring-navigation.ts b/windows/tauri/src/features/spring/utils/spring-navigation.ts new file mode 100644 index 000000000..5801189c8 --- /dev/null +++ b/windows/tauri/src/features/spring/utils/spring-navigation.ts @@ -0,0 +1,183 @@ +import { joinPath, normalizePath } from "@/utils/path-helpers"; +import type { + SpringIndex, + SpringNavigationLocation, +} from "../types/spring.types"; +import { workspaceRelativeSpringPath } from "./spring-index-paths"; + +function matchesLine(indexLine: number, caretZeroBased: number, tolerance = 0): boolean { + return Math.abs(indexLine - (caretZeroBased + 1)) <= tolerance; +} + +function matchesPath(indexPath: string, relativePath: string): boolean { + return normalizePath(indexPath) === normalizePath(relativePath); +} + +function toEditorLocation( + root: string, + relativePath: string, + line?: number | null, + column?: number | null, + symbol = "", +): SpringNavigationLocation | null { + if (!relativePath) return null; + return { + filePath: normalizePath(joinPath(root, relativePath)), + line: Math.max(0, (line ?? 1) - 1), + column: Math.max(0, (column ?? 1) - 1), + symbol, + }; +} + +function uniqueLocations(locations: SpringNavigationLocation[]): SpringNavigationLocation[] { + const seen = new Set(); + const unique: SpringNavigationLocation[] = []; + for (const location of locations) { + const key = `${normalizePath(location.filePath)}:${location.line}:${location.column}`; + if (seen.has(key)) continue; + seen.add(key); + unique.push(location); + } + return unique; +} + +export function resolveSpringDefinitions( + index: SpringIndex, + root: string, + filePath: string, + caretLine: number, +): SpringNavigationLocation[] { + const relativePath = workspaceRelativeSpringPath(filePath, root); + if (!relativePath) return []; + + const value = index.values.find( + (candidate) => matchesPath(candidate.path, relativePath) && matchesLine(candidate.line, caretLine), + ); + if (value) { + const locations: SpringNavigationLocation[] = []; + if (value.targetPath) { + const target = toEditorLocation( + root, + value.targetPath, + value.targetLine, + value.targetColumn, + value.key, + ); + if (target) locations.push(target); + } + for (const reference of index.propertyReferences.filter((candidate) => candidate.key === value.key)) { + const location = toEditorLocation(root, reference.path, reference.line, reference.column, value.key); + if (location) locations.push(location); + } + if (locations.length > 0) return uniqueLocations(locations); + } + + const reference = index.propertyReferences.find( + (candidate) => matchesPath(candidate.path, relativePath) && matchesLine(candidate.line, caretLine), + ); + if (reference) { + return uniqueLocations( + index.values + .filter((candidate) => candidate.key === reference.key) + .flatMap((candidate) => { + const location = toEditorLocation( + root, + candidate.path, + candidate.line, + candidate.column, + candidate.key, + ); + return location ? [location] : []; + }), + ); + } + + const injection = index.injections.find( + (candidate) => + matchesPath(candidate.path, relativePath) && matchesLine(candidate.line, caretLine, 1), + ); + if (injection) { + return uniqueLocations( + injection.beanIds.flatMap((beanId) => { + const bean = index.beans.find((candidate) => candidate.id === beanId); + if (!bean) return []; + const location = toEditorLocation(root, bean.path, bean.line, bean.column, bean.name); + return location ? [location] : []; + }), + ); + } + + const matchingProperties = index.properties.filter( + (property) => + property.sourcePath && + matchesPath(property.sourcePath, relativePath) && + property.sourceLine != null && + matchesLine(property.sourceLine, caretLine, 1), + ); + return uniqueLocations( + matchingProperties.flatMap((property) => + index.values + .filter((candidate) => candidate.key === property.name) + .flatMap((candidate) => { + const location = toEditorLocation( + root, + candidate.path, + candidate.line, + candidate.column, + candidate.key, + ); + return location ? [location] : []; + }), + ), + ); +} + +export function resolveSpringReferences( + index: SpringIndex, + root: string, + filePath: string, + caretLine: number, +): SpringNavigationLocation[] { + const definitions = resolveSpringDefinitions(index, root, filePath, caretLine); + if (definitions.length === 0) return []; + + const relativePath = workspaceRelativeSpringPath(filePath, root); + const value = index.values.find( + (candidate) => matchesPath(candidate.path, relativePath) && matchesLine(candidate.line, caretLine), + ); + const reference = index.propertyReferences.find( + (candidate) => matchesPath(candidate.path, relativePath) && matchesLine(candidate.line, caretLine), + ); + const key = value?.key ?? reference?.key; + if (!key) return definitions; + + const origin = toEditorLocation(root, relativePath, caretLine + 1, 1, key); + return uniqueLocations([ + ...(origin ? [origin] : []), + ...definitions, + ...index.values + .filter((candidate) => candidate.key === key) + .flatMap((candidate) => { + const location = toEditorLocation( + root, + candidate.path, + candidate.line, + candidate.column, + candidate.key, + ); + return location ? [location] : []; + }), + ...index.propertyReferences + .filter((candidate) => candidate.key === key) + .flatMap((candidate) => { + const location = toEditorLocation( + root, + candidate.path, + candidate.line, + candidate.column, + candidate.key, + ); + return location ? [location] : []; + }), + ]); +} From d778e1f5ae9425af4b069df9b9d6810f58c8b26e Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:29:47 +0800 Subject: [PATCH 39/83] feat(windows): explain a missing Java language server on jump Tell the user when jdtls is starting, failed, or not ready instead of reporting that no definition exists. --- .../lsp/language-server-navigation.test.ts | 39 +++++++++++++++++++ .../editor/lsp/language-server-navigation.ts | 25 ++++++++++++ .../src/features/editor/lsp/lsp-client.ts | 4 ++ 3 files changed, 68 insertions(+) create mode 100644 windows/tauri/src/features/editor/lsp/language-server-navigation.test.ts create mode 100644 windows/tauri/src/features/editor/lsp/language-server-navigation.ts diff --git a/windows/tauri/src/features/editor/lsp/language-server-navigation.test.ts b/windows/tauri/src/features/editor/lsp/language-server-navigation.test.ts new file mode 100644 index 000000000..7102023c4 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/language-server-navigation.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, test } from "bun:test"; +import { languageServerUnavailableMessage } from "./language-server-navigation"; + +describe("language server jump messages", () => { + test("does not warn when a session is already connected", () => { + expect( + languageServerUnavailableMessage({ + languageId: "java", + status: "connected", + hasSession: true, + }), + ).toBeNull(); + }); + + test("reports startup, failure, and not-ready states", () => { + expect( + languageServerUnavailableMessage({ + languageId: "java", + status: "connecting", + hasSession: false, + }), + ).toBe("Java language server is starting."); + expect( + languageServerUnavailableMessage({ + languageId: "java", + status: "error", + lastError: "Could not find jdtls. Install Eclipse JDT Language Server and add it to PATH.", + hasSession: false, + }), + ).toBe("Could not find jdtls. Install Eclipse JDT Language Server and add it to PATH."); + expect( + languageServerUnavailableMessage({ + languageId: "java", + status: "disconnected", + hasSession: false, + }), + ).toBe("Java language server is not ready."); + }); +}); diff --git a/windows/tauri/src/features/editor/lsp/language-server-navigation.ts b/windows/tauri/src/features/editor/lsp/language-server-navigation.ts new file mode 100644 index 000000000..bebf2a699 --- /dev/null +++ b/windows/tauri/src/features/editor/lsp/language-server-navigation.ts @@ -0,0 +1,25 @@ +import type { LspStatus } from "./stores/lsp.store"; + +export function languageDisplayName(languageId: string | undefined): string { + if (!languageId) return "Language"; + if (languageId === "java") return "Java"; + return languageId; +} + +export function languageServerUnavailableMessage(args: { + languageId?: string; + status: LspStatus; + lastError?: string; + hasSession: boolean; +}): string | null { + if (args.hasSession && args.status === "connected") return null; + + const name = languageDisplayName(args.languageId); + if (args.status === "connecting") { + return `${name} language server is starting.`; + } + if (args.status === "error") { + return args.lastError?.trim() || `${name} language server failed.`; + } + return args.lastError?.trim() || `${name} language server is not ready.`; +} diff --git a/windows/tauri/src/features/editor/lsp/lsp-client.ts b/windows/tauri/src/features/editor/lsp/lsp-client.ts index a87f3b1dd..4df22d423 100644 --- a/windows/tauri/src/features/editor/lsp/lsp-client.ts +++ b/windows/tauri/src/features/editor/lsp/lsp-client.ts @@ -658,6 +658,10 @@ export class LspClient { } } + hasSessionForFile(filePath: string): boolean { + return this.findServerKeyForFile(filePath, languageIdForEditorFile(filePath)) !== null; + } + /** * Get display name for a language ID */ From ff74e6bf1d5f4342cb72e41ee67685dd0217ebc0 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:47:13 +0800 Subject: [PATCH 40/83] feat(windows): use IDEA-style definition and usage shortcuts Ctrl+click goes to the declaration. Ctrl+B finds usages, and a single remaining reference opens that location instead of the references pane. --- .../editor/components/monaco-editor.tsx | 17 ++++- .../editor-context-menu-items.tsx | 2 +- .../utils/go-to-definition-gesture.test.ts | 31 +++++++++ .../editor/utils/go-to-definition-gesture.ts | 14 ++++ .../keymaps/commands/command-registry.ts | 2 +- .../commands/navigation-command-actions.ts | 68 ++++++++++++++++--- .../defaults/default-keymaps.git-log.test.ts | 20 ++++++ .../keymaps/defaults/default-keymaps.ts | 13 +++- .../keymaps/defaults/keybinding-presets.ts | 3 +- .../window/components/window-menu-bar.tsx | 2 +- 10 files changed, 156 insertions(+), 16 deletions(-) create mode 100644 windows/tauri/src/features/editor/utils/go-to-definition-gesture.test.ts create mode 100644 windows/tauri/src/features/editor/utils/go-to-definition-gesture.ts diff --git a/windows/tauri/src/features/editor/components/monaco-editor.tsx b/windows/tauri/src/features/editor/components/monaco-editor.tsx index 069fc97fc..bee2eca18 100644 --- a/windows/tauri/src/features/editor/components/monaco-editor.tsx +++ b/windows/tauri/src/features/editor/components/monaco-editor.tsx @@ -47,6 +47,7 @@ import { useEditorStateStore } from "../stores/state.store"; import type { EditorContentChangeOptions, Position, Range } from "../types/editor.types"; import { getBufferById } from "../utils/buffer-index"; import { fileOpenBenchmark } from "../utils/file-open-benchmark"; +import { isEditorGoToDefinitionModifierClick } from "../utils/go-to-definition-gesture"; import { getLanguageIdFromPath } from "../utils/language-id"; import { toggleCaseText } from "../utils/text-operations"; import { editorAPI } from "../extensions/api"; @@ -798,7 +799,21 @@ export function MonacoEditor({ syncCursorAndSelection(); }), editor.onMouseDown((event) => { - if (event.event.leftButton) mouseSelectingRef.current = true; + const mouseEvent = event.event; + if ( + isEditorGoToDefinitionModifierClick(mouseEvent) && + event.target.type === monacoEditor.MouseTargetType.CONTENT_TEXT && + event.target.position + ) { + mouseEvent.preventDefault(); + mouseEvent.stopPropagation(); + mouseSelectingRef.current = false; + editor.setPosition(event.target.position); + syncCursorAndSelection(); + void keymapRegistry.executeCommand("editor.goToDefinition"); + return; + } + if (mouseEvent.leftButton) mouseSelectingRef.current = true; }), editor.onMouseUp(() => { if (!mouseSelectingRef.current) return; diff --git a/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx b/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx index bb45e9a09..fc7a06bd7 100644 --- a/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx +++ b/windows/tauri/src/features/editor/context-menu/editor-context-menu-items.tsx @@ -241,7 +241,7 @@ export function buildEditorContextMenuItems({ id: "find-references", label: t("editor.findAllReferences"), icon: , - keybinding: , + keybinding: , disabled: isDisabled(onFindReferences), onClick: onFindReferences ?? noop, }, diff --git a/windows/tauri/src/features/editor/utils/go-to-definition-gesture.test.ts b/windows/tauri/src/features/editor/utils/go-to-definition-gesture.test.ts new file mode 100644 index 000000000..f58cf8ff7 --- /dev/null +++ b/windows/tauri/src/features/editor/utils/go-to-definition-gesture.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, test } from "bun:test"; +import { isEditorGoToDefinitionModifierClick } from "./go-to-definition-gesture"; + +describe("IDEA-style go to definition click", () => { + test("accepts unmodified Ctrl or Cmd left clicks", () => { + expect( + isEditorGoToDefinitionModifierClick({ leftButton: true, ctrlKey: true }), + ).toBe(true); + expect( + isEditorGoToDefinitionModifierClick({ leftButton: true, metaKey: true }), + ).toBe(true); + }); + + test("ignores right clicks and extra modifiers", () => { + expect(isEditorGoToDefinitionModifierClick({ leftButton: false, ctrlKey: true })).toBe(false); + expect( + isEditorGoToDefinitionModifierClick({ + leftButton: true, + ctrlKey: true, + shiftKey: true, + }), + ).toBe(false); + expect( + isEditorGoToDefinitionModifierClick({ + leftButton: true, + ctrlKey: true, + altKey: true, + }), + ).toBe(false); + }); +}); diff --git a/windows/tauri/src/features/editor/utils/go-to-definition-gesture.ts b/windows/tauri/src/features/editor/utils/go-to-definition-gesture.ts new file mode 100644 index 000000000..8e32fa117 --- /dev/null +++ b/windows/tauri/src/features/editor/utils/go-to-definition-gesture.ts @@ -0,0 +1,14 @@ +export function isEditorGoToDefinitionModifierClick(event: { + leftButton?: boolean; + ctrlKey?: boolean; + metaKey?: boolean; + altKey?: boolean; + shiftKey?: boolean; +}): boolean { + return Boolean( + event.leftButton && + (event.ctrlKey || event.metaKey) && + !event.altKey && + !event.shiftKey, + ); +} diff --git a/windows/tauri/src/features/keymaps/commands/command-registry.ts b/windows/tauri/src/features/keymaps/commands/command-registry.ts index 352194081..84cc32135 100644 --- a/windows/tauri/src/features/keymaps/commands/command-registry.ts +++ b/windows/tauri/src/features/keymaps/commands/command-registry.ts @@ -895,7 +895,7 @@ const navigationCommands: Command[] = [ id: "editor.goToReferences", title: "Go to References", category: "Navigation", - keybinding: "shift+F12", + keybinding: "cmd+b", execute: goToReferences, }, { diff --git a/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts b/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts index 10256a3bb..b97ebdc5e 100644 --- a/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts +++ b/windows/tauri/src/features/keymaps/commands/navigation-command-actions.ts @@ -20,7 +20,7 @@ import { resolveSpringReferences, } from "@/features/spring/utils/spring-navigation"; import { useUIState } from "@/features/window/stores/ui-state.store"; -import { getBaseName } from "@/utils/path-helpers"; +import { getBaseName, normalizePath } from "@/utils/path-helpers"; import { showPromptDialog } from "@/ui/dialog"; import { toast } from "sonner"; @@ -58,6 +58,19 @@ function activeEditorNavigationContext() { return { bufferStore, activeBuffer, editorState }; } +function canonicalizeEditorPath(path: string): string { + return normalizePath(path).replace(/^\/([A-Za-z]:)/, "$1"); +} + +function isCurrentNavigationTarget( + filePath: string, + line: number, + targetPath: string, + targetLine: number, +): boolean { + return canonicalizeEditorPath(filePath) === canonicalizeEditorPath(targetPath) && line === targetLine; +} + function unavailableLanguageServerToast(filePath: string, lspClient: { hasSessionForFile(path: string): boolean }): string | null { const status = useLspStore.getState().lspStatus; return languageServerUnavailableMessage({ @@ -315,8 +328,20 @@ export async function goToReferences(): Promise { if (!activeBuffer?.path) return; - const springLocations = springLocationsForActiveFile("references"); - if (springLocations.length > 0) { + const springLocations = springLocationsForActiveFile("references").filter( + (location) => + !isCurrentNavigationTarget( + activeBuffer.path, + cursorPosition.line, + location.filePath, + location.line, + ), + ); + if (springLocations.length === 1) { + await navigateToSpringLocation(springLocations[0]); + return; + } + if (springLocations.length > 1) { await presentSpringReferences(springLocations, springLocations[0]?.symbol || "Spring"); return; } @@ -332,10 +357,6 @@ export async function goToReferences(): Promise { const wordEnd = currentLine.slice(cursorPosition.column).match(/^[\w$]*/); const symbol = (wordMatch?.[0] || "") + (wordEnd?.[0]?.slice(1) || ""); - const referencesActions = useReferencesStore.getState().actions; - referencesActions.setIsLoading(true); - bufferStore.actions.openReferencesBuffer(); - const references = await lspClient.getReferences( activeBuffer.path, cursorPosition.line, @@ -350,14 +371,41 @@ export async function goToReferences(): Promise { }; if (!references || references.length === 0) { - referencesActions.setReferences(origin, []); + toast.info("No references found."); return; } + const otherReferences = references.filter((reference) => { + const filePath = filePathFromUri(reference.uri); + return !isCurrentNavigationTarget( + activeBuffer.path, + cursorPosition.line, + filePath, + reference.range.start.line, + ); + }); + + if (otherReferences.length === 0) { + toast.info("No other references found."); + return; + } + + if (otherReferences.length === 1) { + const target = otherReferences[0]; + await goToActiveLspLocation("reference", async () => [target], { + requireLanguageServer: false, + }); + return; + } + + const referencesActions = useReferencesStore.getState().actions; + referencesActions.setIsLoading(true); + bufferStore.actions.openReferencesBuffer(); + const lineContextCache = new Map>(); const referenceLinesByFile = new Map>(); - for (const ref of references) { + for (const ref of otherReferences) { const filePath = filePathFromUri(ref.uri); const lineNumbers = referenceLinesByFile.get(filePath) ?? new Set(); lineNumbers.add(ref.range.start.line); @@ -387,7 +435,7 @@ export async function goToReferences(): Promise { lineContextCache.set(filePath, lines); } - const converted = references.map((ref) => { + const converted = otherReferences.map((ref) => { const filePath = filePathFromUri(ref.uri); const fileLines = lineContextCache.get(filePath); return { diff --git a/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts b/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts index c126fb92d..fd770c2db 100644 --- a/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts +++ b/windows/tauri/src/features/keymaps/defaults/default-keymaps.git-log.test.ts @@ -2,6 +2,26 @@ import { describe, expect, test } from "bun:test"; import { SIDEBAR_BOTTOM_ACTIVITY_ITEM_IDS } from "@/features/layout/config/item-order"; import { defaultKeymaps } from "./default-keymaps"; +describe("IDEA-style definition shortcuts", () => { + test("binds Ctrl/Cmd+B to find references while the editor is focused", () => { + expect(defaultKeymaps).toContainEqual({ + key: "cmd+b", + command: "editor.goToReferences", + source: "default", + when: "editorFocus", + }); + }); + + test("keeps the activity sidebar toggle off the editor Ctrl/Cmd+B shortcut", () => { + expect(defaultKeymaps).toContainEqual({ + key: "cmd+b", + command: "workbench.toggleActivitySidebar", + source: "default", + when: "!editorFocus", + }); + }); +}); + describe("Git Log workbench entry points", () => { test("binds the IntelliJ-compatible Alt+9 shortcut", () => { expect(defaultKeymaps).toContainEqual({ diff --git a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts index 5118863f7..01785e881 100644 --- a/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts +++ b/windows/tauri/src/features/keymaps/defaults/default-keymaps.ts @@ -312,7 +312,12 @@ export const defaultKeymaps: Keybinding[] = [ }, // View Operations - { key: "cmd+b", command: "workbench.toggleActivitySidebar", source: "default" }, + { + key: "cmd+b", + command: "workbench.toggleActivitySidebar", + source: "default", + when: "!editorFocus", + }, { key: "cmd+e", command: "workbench.toggleSidebar", source: "default" }, { key: "cmd+j", command: "workbench.toggleTerminal", source: "default" }, { key: "shift+f10", command: "workbench.toggleRun", source: "default" }, @@ -425,6 +430,12 @@ export const defaultKeymaps: Keybinding[] = [ source: "default", when: "editorFocus", }, + { + key: "cmd+b", + command: "editor.goToReferences", + source: "default", + when: "editorFocus", + }, { key: "shift+F12", command: "editor.goToReferences", diff --git a/windows/tauri/src/features/keymaps/defaults/keybinding-presets.ts b/windows/tauri/src/features/keymaps/defaults/keybinding-presets.ts index c5500b2bc..c86076b6f 100644 --- a/windows/tauri/src/features/keymaps/defaults/keybinding-presets.ts +++ b/windows/tauri/src/features/keymaps/defaults/keybinding-presets.ts @@ -79,6 +79,7 @@ export const keybindingPresetDefinitions: Record handleCommand("editor.goToTypeDefinition")}> Go to Type Definition - handleCommand("editor.goToReferences")}> + handleCommand("editor.goToReferences")}> Go to References handleCommand("editor.renameSymbol")}> From 9df1d8318c37212471c65e66dffbd402408cf545 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:55:50 +0800 Subject: [PATCH 41/83] ci: allow unsigned Windows official installers Skip Authenticode import and signing when the certificate secrets are absent so a v*.*.* tag can still publish the NSIS installer. --- .github/workflows/release-windows.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index 94dba0d97..d490a8614 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -59,13 +59,16 @@ jobs: run: ./scripts/build-windows.ps1 -Configuration Release - name: Import Authenticode certificate + id: signing shell: pwsh env: WINDOWS_SIGNING_CERTIFICATE_BASE64: ${{ secrets.WINDOWS_SIGNING_CERTIFICATE_BASE64 }} WINDOWS_SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }} run: | if ([string]::IsNullOrWhiteSpace($env:WINDOWS_SIGNING_CERTIFICATE_BASE64)) { - throw "WINDOWS_SIGNING_CERTIFICATE_BASE64 is required for a signed Windows release." + Write-Output "No Authenticode certificate is configured; the Windows installer will be unsigned." + "signed=false" >> $env:GITHUB_OUTPUT + exit 0 } $path = Join-Path $env:RUNNER_TEMP "lithe-signing.pfx" [System.IO.File]::WriteAllBytes( @@ -76,13 +79,25 @@ jobs: -CertStoreLocation Cert:\CurrentUser\My -Password $password if ($null -eq $certificate) { throw "Could not import the Authenticode certificate." } "LITHE_WINDOWS_CERTIFICATE_THUMBPRINT=$($certificate.Thumbprint)" >> $env:GITHUB_ENV + "signed=true" >> $env:GITHUB_OUTPUT - name: Package Windows installer shell: pwsh env: LITHE_VERSION: ${{ steps.version.outputs.version }} LITHE_WINDOWS_TIMESTAMP_SERVER: ${{ secrets.WINDOWS_TIMESTAMP_SERVER }} - run: ./scripts/package-windows.ps1 -Configuration Release -Version $env:LITHE_VERSION -RequireAuthenticodeSignature + WINDOWS_RELEASE_SIGNED: ${{ steps.signing.outputs.signed }} + run: | + $packageArgs = @( + "-Configuration", "Release", + "-Version", $env:LITHE_VERSION + ) + if ($env:WINDOWS_RELEASE_SIGNED -eq "true") { + $packageArgs += "-RequireAuthenticodeSignature" + } else { + Write-Output "Packaging an unsigned Windows installer." + } + ./scripts/package-windows.ps1 @packageArgs - name: Verify installer checksum shell: pwsh From 5dde3d827f3d950cb18fdfd7c3a3abf3f2776a80 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 10:59:34 +0800 Subject: [PATCH 42/83] ci: publish a rolling Windows preview installer Add a scheduled preview workflow that packages the Windows NSIS installer from preview/0.3.0 and uploads it to the shared preview release. Signing stays optional when no certificate is configured. --- .github/workflows/release-preview-windows.yml | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 .github/workflows/release-preview-windows.yml diff --git a/.github/workflows/release-preview-windows.yml b/.github/workflows/release-preview-windows.yml new file mode 100644 index 000000000..c34fe0e98 --- /dev/null +++ b/.github/workflows/release-preview-windows.yml @@ -0,0 +1,137 @@ +name: Release Windows Preview + +on: + schedule: + # Offset from the macOS preview so the shared rolling tag usually exists first. + - cron: "27 3 * * *" + workflow_dispatch: + inputs: + source_branch: + description: "Preview branch to build" + required: true + default: "preview/0.3.0" + type: string + +permissions: + contents: read + +concurrency: + group: release-preview-windows + cancel-in-progress: false + +env: + PREVIEW_BRANCH: preview/0.3.0 + PREVIEW_VERSION: 0.3.0 + PREVIEW_TAG: preview-0.3.0 + +jobs: + release: + name: Build and publish Windows preview + if: github.actor == github.repository_owner || github.event_name == 'schedule' + runs-on: windows-latest + timeout-minutes: 60 + permissions: + contents: write + + steps: + - name: Check out preview source + uses: actions/checkout@v4 + with: + ref: ${{ github.event_name == 'workflow_dispatch' && inputs.source_branch || env.PREVIEW_BRANCH }} + + - name: Record source revision + id: source + shell: pwsh + run: | + $sha = (git rev-parse HEAD).Trim() + "sha=$sha" >> $env:GITHUB_OUTPUT + + - name: Set up Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-pc-windows-msvc + + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: "1.3.12" + + - name: Build Windows Tauri application + shell: pwsh + run: ./scripts/build-windows.ps1 -Configuration Release + + - name: Import Authenticode certificate + id: signing + shell: pwsh + env: + WINDOWS_SIGNING_CERTIFICATE_BASE64: ${{ secrets.WINDOWS_SIGNING_CERTIFICATE_BASE64 }} + WINDOWS_SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }} + run: | + if ([string]::IsNullOrWhiteSpace($env:WINDOWS_SIGNING_CERTIFICATE_BASE64)) { + Write-Output "No Authenticode certificate is configured; the Windows preview installer will be unsigned." + "signed=false" >> $env:GITHUB_OUTPUT + exit 0 + } + $path = Join-Path $env:RUNNER_TEMP "lithe-signing.pfx" + [System.IO.File]::WriteAllBytes( + $path, + [Convert]::FromBase64String($env:WINDOWS_SIGNING_CERTIFICATE_BASE64)) + $password = ConvertTo-SecureString $env:WINDOWS_SIGNING_CERTIFICATE_PASSWORD -AsPlainText -Force + $certificate = Import-PfxCertificate -FilePath $path ` + -CertStoreLocation Cert:\CurrentUser\My -Password $password + if ($null -eq $certificate) { throw "Could not import the Authenticode certificate." } + "LITHE_WINDOWS_CERTIFICATE_THUMBPRINT=$($certificate.Thumbprint)" >> $env:GITHUB_ENV + "signed=true" >> $env:GITHUB_OUTPUT + + - name: Package Windows installer + shell: pwsh + env: + LITHE_VERSION: ${{ env.PREVIEW_VERSION }} + LITHE_WINDOWS_TIMESTAMP_SERVER: ${{ secrets.WINDOWS_TIMESTAMP_SERVER }} + WINDOWS_RELEASE_SIGNED: ${{ steps.signing.outputs.signed }} + run: | + $packageArgs = @( + "-Configuration", "Release", + "-Version", $env:LITHE_VERSION + ) + if ($env:WINDOWS_RELEASE_SIGNED -eq "true") { + $packageArgs += "-RequireAuthenticodeSignature" + } else { + Write-Output "Packaging an unsigned Windows preview installer." + } + ./scripts/package-windows.ps1 @packageArgs + + - name: Verify installer checksum + shell: pwsh + run: | + $installer = "dist/Lithe-${{ env.PREVIEW_VERSION }}-windows-x64.exe" + $expected = ((Get-Content "$installer.sha256" -Raw) -split '\s+')[0] + $actual = (Get-FileHash -Algorithm SHA256 $installer).Hash.ToLowerInvariant() + if ($expected -ne $actual) { throw "Installer checksum mismatch" } + + - name: Create or update rolling preview Release + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ env.PREVIEW_TAG }} + LITHE_VERSION: ${{ env.PREVIEW_VERSION }} + SOURCE_SHA: ${{ steps.source.outputs.sha }} + shell: pwsh + run: | + $notes = "Rolling Preview build from $env:SOURCE_SHA. This release is replaced by the next scheduled build. The Windows installer may be unsigned until an Authenticode certificate is configured." + $existing = gh release view $env:RELEASE_TAG --repo $env:GITHUB_REPOSITORY 2>$null + if ($LASTEXITCODE -ne 0) { + gh release create $env:RELEASE_TAG ` + --repo $env:GITHUB_REPOSITORY ` + --target $env:SOURCE_SHA ` + --title "Lithe $env:LITHE_VERSION Preview" ` + --notes $notes ` + --prerelease + if ($LASTEXITCODE -ne 0) { + $existing = gh release view $env:RELEASE_TAG --repo $env:GITHUB_REPOSITORY 2>$null + if ($LASTEXITCODE -ne 0) { throw "Could not create or find preview release $env:RELEASE_TAG" } + } + } + gh release upload $env:RELEASE_TAG ` + "dist/Lithe-$env:LITHE_VERSION-windows-x64.exe" ` + "dist/Lithe-$env:LITHE_VERSION-windows-x64.exe.sha256" ` + --repo $env:GITHUB_REPOSITORY --clobber From d80e9d7001a355e99b0e8fbc4126f667198ca2bc Mon Sep 17 00:00:00 2001 From: ybx <3046829330@qq.com> Date: Mon, 17 Aug 2026 09:59:11 +0800 Subject: [PATCH 43/83] Add safe Windows pull preflight workflow --- .../features/git/api/git-remotes-api.test.ts | 101 ++++++++ .../src/features/git/api/git-remotes-api.ts | 84 ++++-- .../git/components/git-actions-menu.tsx | 20 +- .../git/components/git-commit-panel.tsx | 35 ++- .../components/git-pull-strategy-dialog.tsx | 66 +++++ .../src/features/git/components/git-view.tsx | 48 +++- .../git/hooks/git-pull-workflow.test.ts | 241 ++++++++++++++++++ .../features/git/hooks/git-pull-workflow.ts | 173 +++++++++++++ .../git/hooks/use-git-pull-workflow.ts | 78 ++++++ .../tauri/src/features/git/types/git.types.ts | 28 ++ 10 files changed, 819 insertions(+), 55 deletions(-) create mode 100644 windows/tauri/src/features/git/api/git-remotes-api.test.ts create mode 100644 windows/tauri/src/features/git/components/git-pull-strategy-dialog.tsx create mode 100644 windows/tauri/src/features/git/hooks/git-pull-workflow.test.ts create mode 100644 windows/tauri/src/features/git/hooks/git-pull-workflow.ts create mode 100644 windows/tauri/src/features/git/hooks/use-git-pull-workflow.ts diff --git a/windows/tauri/src/features/git/api/git-remotes-api.test.ts b/windows/tauri/src/features/git/api/git-remotes-api.test.ts new file mode 100644 index 000000000..525761805 --- /dev/null +++ b/windows/tauri/src/features/git/api/git-remotes-api.test.ts @@ -0,0 +1,101 @@ +import { beforeEach, describe, expect, mock, test } from "bun:test"; +import type { GitPullPreflight } from "../types/git.types"; + +const invoke = mock(async (_command: string, _args?: unknown): Promise => null); +const emitGitChanged = mock((_change: unknown) => {}); +const resolveRepositoryPath = mock(async (repoPath: string) => repoPath); +const resolveRepositoryPathOrThrow = mock(async (repoPath: string) => repoPath); +const getOperationState = mock(async () => null); +const getBranches = mock(async () => []); +const getGitHistory = mock(async () => null); +const getGitStatus = mock(async () => null); + +mock.module("@/platform/tauri-core", () => ({ invoke })); +mock.module("../events/git-events", () => ({ emitGitChanged })); +mock.module("./git-repo-api", () => ({ + isNotGitRepositoryError: () => false, + resolveRepositoryPath, + resolveRepositoryPathOrThrow, +})); +mock.module("./git-integration-api", () => ({ getOperationState })); +mock.module("./git-branches-api", () => ({ getBranches })); +mock.module("./git-commits-api", () => ({ getGitHistory })); +mock.module("./git-status-api", () => ({ getGitStatus })); + +const { executePullChanges, fetchChanges, getPullPreflight, pullChanges } = + await import("./git-remotes-api"); + +beforeEach(() => { + invoke.mockReset(); + emitGitChanged.mockReset(); + resolveRepositoryPath.mockReset(); + resolveRepositoryPathOrThrow.mockReset(); + getBranches.mockClear(); + getGitHistory.mockClear(); + getGitStatus.mockClear(); + resolveRepositoryPath.mockImplementation(async (repoPath: string) => repoPath); + resolveRepositoryPathOrThrow.mockImplementation(async (repoPath: string) => repoPath); +}); + +describe("Git remote Pull API", () => { + test("calls the shared git.pullPreflight contract for the current branch", async () => { + const preflight: GitPullPreflight = { + upstream: "origin/main", + ahead: 1, + behind: 2, + diverged: true, + hasLocalChanges: false, + }; + invoke.mockResolvedValue(preflight); + + await expect(getPullPreflight("C:/repo")).resolves.toEqual(preflight); + expect(invoke).toHaveBeenCalledWith("git.pullPreflight", { repoPath: "C:/repo" }); + }); + + test("executes Pull with only the selected Core mode", async () => { + invoke.mockResolvedValue(null); + + await expect(executePullChanges("C:/repo", "rebase")).resolves.toEqual({ success: true }); + expect(invoke).toHaveBeenCalledWith("git_pull", { + repoPath: "C:/repo", + mode: "rebase", + }); + }); + + test("fetches the repository without an ignored remote parameter", async () => { + invoke.mockResolvedValue(null); + + await expect(fetchChanges("C:/repo")).resolves.toEqual({ success: true }); + expect(invoke).toHaveBeenCalledWith("git_fetch", { repoPath: "C:/repo" }); + }); + + test("keeps a headless divergent Pull on the safe Cancel default", async () => { + invoke.mockImplementation(async (command: string) => { + if (command === "git.pullPreflight") { + return { + upstream: "origin/main", + ahead: 1, + behind: 1, + diverged: true, + hasLocalChanges: false, + } satisfies GitPullPreflight; + } + return null; + }); + + await expect(pullChanges("C:/repo")).resolves.toEqual({ + success: false, + error: "Branches have diverged. Open Source Control and choose Merge or Rebase.", + }); + expect(invoke).not.toHaveBeenCalledWith("git_pull", expect.anything()); + expect(getGitStatus).toHaveBeenCalledWith("C:/repo"); + expect(getGitHistory).toHaveBeenCalledWith("C:/repo", 50); + expect(getBranches).toHaveBeenCalledWith("C:/repo"); + expect(invoke).toHaveBeenCalledWith("git_get_remotes", { repoPath: "C:/repo" }); + expect(emitGitChanged).toHaveBeenLastCalledWith({ + repoPath: "C:/repo", + scopes: ["working-tree", "history", "refs", "remotes"], + source: "pull-finished", + }); + }); +}); diff --git a/windows/tauri/src/features/git/api/git-remotes-api.ts b/windows/tauri/src/features/git/api/git-remotes-api.ts index 52cf8b2fc..584204984 100644 --- a/windows/tauri/src/features/git/api/git-remotes-api.ts +++ b/windows/tauri/src/features/git/api/git-remotes-api.ts @@ -1,7 +1,12 @@ import { invoke as tauriInvoke } from "@/platform/tauri-core"; -import type { GitRemote } from "../types/git.types"; +import type { GitPullPreflight, GitRemote, PullStrategy } from "../types/git.types"; import { emitGitChanged } from "../events/git-events"; +import { GitPullWorkflow } from "../hooks/git-pull-workflow"; import { runGitRead } from "../runtime/git-read-coordinator"; +import { getBranches } from "./git-branches-api"; +import { getGitHistory } from "./git-commits-api"; +import { getOperationState } from "./git-integration-api"; +import { getGitStatus } from "./git-status-api"; import { isNotGitRepositoryError, resolveRepositoryPath, @@ -88,19 +93,20 @@ export const pushChanges = async ( } }; -export const pullChanges = async ( +export const getPullPreflight = async (repoPath: string): Promise => { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + return tauriInvoke("git.pullPreflight", { + repoPath: resolvedRepoPath, + }); +}; + +export const executePullChanges = async ( repoPath: string, - branch?: string, - remote: string = "origin", + strategy: PullStrategy, ): Promise => { try { const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); - await tauriInvoke("git_pull", { repoPath: resolvedRepoPath, branch, remote }); - emitGitChanged({ - repoPath: resolvedRepoPath, - scopes: ["working-tree", "history", "refs", "remotes"], - source: "pull", - }); + await tauriInvoke("git_pull", { repoPath: resolvedRepoPath, mode: strategy }); return { success: true }; } catch (error) { console.error("Failed to pull changes:", error); @@ -111,13 +117,10 @@ export const pullChanges = async ( } }; -export const fetchChanges = async ( - repoPath: string, - remote?: string, -): Promise => { +export const fetchChanges = async (repoPath: string): Promise => { try { const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); - await tauriInvoke("git_fetch", { repoPath: resolvedRepoPath, remote }); + await tauriInvoke("git_fetch", { repoPath: resolvedRepoPath }); emitGitChanged({ repoPath: resolvedRepoPath, scopes: ["refs", "remotes"], @@ -132,3 +135,54 @@ export const fetchChanges = async ( }; } }; + +const headlessPullWorkflow = new GitPullWorkflow({ + fetch: fetchChanges, + preflight: getPullPreflight, + pull: executePullChanges, + operationState: getOperationState, +}); + +/** + * Safe compatibility entry point for non-Source-Control callers. Divergence + * cancels because only the Source Control workflow can present the choice UI. + */ +export const pullChanges = async (repoPath: string): Promise => { + const unsubscribe = headlessPullWorkflow.subscribe(() => { + if (headlessPullWorkflow.getSnapshot().pendingPreflight) { + headlessPullWorkflow.chooseStrategy(null); + } + }); + const resultPromise = headlessPullWorkflow.run(repoPath, { + refresh: async () => { + const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); + // Cache invalidation must precede the explicit reads below; otherwise a + // failed or successful Pull could refresh the UI from stale snapshots. + emitGitChanged({ + repoPath: resolvedRepoPath, + scopes: ["working-tree", "history", "refs", "remotes"], + source: "pull-finished", + }); + await Promise.all([ + getGitStatus(resolvedRepoPath), + getGitHistory(resolvedRepoPath, 50), + getBranches(resolvedRepoPath), + getRemotes(resolvedRepoPath), + ]); + }, + }); + try { + const result = await resultPromise; + return result.status === "pulled" + ? { success: true } + : { + success: false, + error: + result.status === "cancelled" + ? "Branches have diverged. Open Source Control and choose Merge or Rebase." + : result.message, + }; + } finally { + unsubscribe(); + } +}; diff --git a/windows/tauri/src/features/git/components/git-actions-menu.tsx b/windows/tauri/src/features/git/components/git-actions-menu.tsx index 141225aa7..e6d5a4132 100644 --- a/windows/tauri/src/features/git/components/git-actions-menu.tsx +++ b/windows/tauri/src/features/git/components/git-actions-menu.tsx @@ -18,12 +18,7 @@ import { Spinner } from "@/ui/spinner"; import { showConfirmDialog } from "@/ui/dialog"; import { toast } from "sonner"; import { useTranslation } from "@/i18n/locale-provider"; -import { - fetchChanges, - pullChanges, - pushChanges, - type GitRemoteActionResult, -} from "../api/git-remotes-api"; +import { fetchChanges, pushChanges, type GitRemoteActionResult } from "../api/git-remotes-api"; import { discardAllChanges, initRepository } from "../api/git-status-api"; import { useGitStore } from "../stores/git.store"; import { type GitActionsMenuAnchorRect } from "../utils/git-actions-menu-position"; @@ -35,6 +30,8 @@ interface GitActionsMenuProps { hasGitRepo: boolean; repoPath?: string; onRefresh?: () => void; + onPull?: () => Promise | void; + isPulling?: boolean; onOpenBranchManager?: () => void; onShowBranchDiff?: () => void; onOpenRemoteManager?: () => void; @@ -53,6 +50,8 @@ const GitActionsMenu = ({ hasGitRepo, repoPath, onRefresh, + onPull, + isPulling = false, onOpenBranchManager, onShowBranchDiff, onOpenRemoteManager, @@ -122,11 +121,8 @@ const GitActionsMenu = ({ }; const handlePull = () => { - handleAction(() => pullChanges(repoPath!), "Pull", { - loading: "Pulling changes...", - success: "Changes pulled successfully.", - error: "Failed to pull changes.", - }); + void onPull?.(); + onClose(); }; const handleFetch = () => { @@ -234,7 +230,7 @@ const GitActionsMenu = ({ id: "pull", label: t("git.pullChanges"), icon: , - disabled: isLoading, + disabled: isLoading || isPulling, onClick: handlePull, }, { diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index d51e02f4e..02c516dc6 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -26,7 +26,7 @@ import { import { getFileDiff } from "../api/git-diff-api"; import { commitChanges, getGitLog } from "../api/git-commits-api"; import { getConflictMarkerPaths } from "../api/git-integration-api"; -import { pullChanges, pushChanges, type GitRemoteActionResult } from "../api/git-remotes-api"; +import { pushChanges, type GitRemoteActionResult } from "../api/git-remotes-api"; import { useGitBlameStore } from "../stores/git-blame.store"; import { useGitStore } from "../stores/git.store"; import type { GitDiff, GitFile } from "../types/git.types"; @@ -39,6 +39,8 @@ interface GitCommitPanelProps { ahead?: number; behind?: number; onCommitSuccess?: () => void; + onPull?: () => Promise | void; + isPulling?: boolean; } const MAX_STAGED_FILES_FOR_AI_CONTEXT = 120; @@ -191,6 +193,8 @@ const GitCommitPanel = ({ ahead = 0, behind = 0, onCommitSuccess, + onPull, + isPulling = false, }: GitCommitPanelProps) => { const { t } = useTranslation(); const isAuthenticated = useAuthStore((state) => state.isAuthenticated); @@ -201,7 +205,7 @@ const GitCommitPanel = ({ const [isGenerating, setIsGenerating] = useState(false); const [commitMessageMode, setCommitMessageMode] = useState("title"); const [isGenerateModeMenuOpen, setIsGenerateModeMenuOpen] = useState(false); - const [remoteAction, setRemoteAction] = useState<"push" | "pull" | null>(null); + const [remoteAction, setRemoteAction] = useState<"push" | null>(null); const [error, setError] = useState(null); const generateMenuAnchorRef = useRef(null); const commitTextareaRef = useRef(null); @@ -331,42 +335,33 @@ const GitCommitPanel = ({ } }; - const handleRemoteAction = async ( - action: "push" | "pull", - run: () => Promise, - ) => { + const handlePush = async (run: () => Promise) => { if (!repoPath) return; - const label = action === "push" ? "Push" : "Pull"; let toastId: string | number | null = null; - setRemoteAction(action); + setRemoteAction("push"); setError(null); try { - toastId = toast.info(`${label}ing changes...`, { + toastId = toast.info("Pushing changes...", { duration: 0, }); const result = await run(); if (result.success) { - if (action === "pull") { - useGitBlameStore.getState().actions.clearAllBlame(); - } toast.dismiss(toastId); - toast.success( - action === "push" ? "Changes pushed successfully." : "Changes pulled successfully.", - ); + toast.success("Changes pushed successfully."); onCommitSuccess?.(); return; } - const errorMessage = result.error || `Failed to ${action} changes.`; + const errorMessage = result.error || "Failed to push changes."; toast.dismiss(toastId); toast.error(errorMessage); setError(errorMessage); } catch (remoteError) { const errorMessage = - remoteError instanceof Error ? remoteError.message : `Failed to ${action} changes.`; + remoteError instanceof Error ? remoteError.message : "Failed to push changes."; if (toastId) toast.dismiss(toastId); toast.error(errorMessage); setError(errorMessage); @@ -451,7 +446,7 @@ const GitCommitPanel = ({ {ahead > 0 && ( + + + + + + ); +}; + +export default GitPullStrategyDialog; diff --git a/windows/tauri/src/features/git/components/git-view.tsx b/windows/tauri/src/features/git/components/git-view.tsx index ca914ef6b..cb6961bed 100644 --- a/windows/tauri/src/features/git/components/git-view.tsx +++ b/windows/tauri/src/features/git/components/git-view.tsx @@ -36,11 +36,13 @@ import { matchesSearchQuery } from "@/utils/search-match"; import { getBranches } from "../api/git-branches-api"; import { getStatusDiffStats } from "../api/git-diff-api"; import { clearRepositoryDiscoveryCache, resolveRepositoryPath } from "../api/git-repo-api"; -import { fetchChanges, pullChanges, pushChanges } from "../api/git-remotes-api"; +import { fetchChanges, getRemotes, pushChanges } from "../api/git-remotes-api"; import { applyStash, dropStash, popStash } from "../api/git-stash-api"; import { getGitStatus, initRepository } from "../api/git-status-api"; import { useGitDataController } from "../hooks/use-git-data-controller"; import { useGitDiffActions } from "../hooks/use-git-diff-actions"; +import { useGitPullWorkflow } from "../hooks/use-git-pull-workflow"; +import { useGitBlameStore } from "../stores/git-blame.store"; import { useRepositoryStore } from "../stores/git-repository.store"; import { useGitStore } from "../stores/git.store"; import type { GitFile } from "../types/git.types"; @@ -60,6 +62,7 @@ import GitCommandSurface from "./git-command-surface"; import GitRemoteManager from "./git-remote-manager"; import GitTagManager from "./git-tag-manager"; import GitOperationBanner from "./git-operation-banner"; +import GitPullStrategyDialog from "./git-pull-strategy-dialog"; import GitStatusPanel from "./status/git-status-panel"; interface GitViewProps { @@ -108,6 +111,24 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { workspacePath: repoPath, isActive, }); + const refreshPullState = useCallback(async () => { + if (!activeRepoPath) return; + await Promise.all([handleManualRefresh(), getRemotes(activeRepoPath)]); + }, [activeRepoPath, handleManualRefresh]); + const pullWorkflow = useGitPullWorkflow({ + repoPath: activeRepoPath ?? "", + refresh: refreshPullState, + }); + const handlePull = useCallback(async () => { + if (!activeRepoPath) { + toast.error("No repository open"); + return; + } + const result = await pullWorkflow.pull(); + if (result.status === "pulled") { + useGitBlameStore.getState().actions.clearAllBlame(); + } + }, [activeRepoPath, pullWorkflow.pull]); const [showGitActionsMenu, setShowGitActionsMenu] = useState(false); const [showStashList, setShowStashList] = useState(false); const [isSelectingRepo, setIsSelectingRepo] = useState(false); @@ -294,6 +315,10 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { } setIsSyncMenuOpen(false); + if (action === "pull") { + await handlePull(); + return; + } setRemoteAction(action); const label = REMOTE_ACTION_LABELS[action]; const toastId = toast.info(`${label.present} changes...`, { @@ -304,9 +329,7 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { const result = action === "push" ? await pushChanges(activeRepoPath) - : action === "pull" - ? await pullChanges(activeRepoPath) - : await fetchChanges(activeRepoPath); + : await fetchChanges(activeRepoPath); toast.dismiss(toastId); @@ -324,22 +347,23 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { setRemoteAction(null); } }, - [activeRepoPath, handleManualRefresh], + [activeRepoPath, handleManualRefresh, handlePull], ); const aheadCount = gitStatus?.ahead ?? 0; const behindCount = gitStatus?.behind ?? 0; const primaryRemoteAction: GitRemoteAction = aheadCount > 0 ? "push" : behindCount > 0 ? "pull" : "fetch"; - const syncActionLabel = - remoteAction !== null + const syncActionLabel = pullWorkflow.isPulling + ? t("git.pulling") + : remoteAction !== null ? t(`git.${remoteAction}ing`) : primaryRemoteAction === "push" ? t("git.pushCount", { count: aheadCount }) : primaryRemoteAction === "pull" ? t("git.pullCount", { count: behindCount }) : t("git.fetch"); - const isRemoteActionLoading = remoteAction !== null; + const isRemoteActionLoading = remoteAction !== null || pullWorkflow.isPulling; const syncMenuItems = useMemo( () => [ @@ -660,6 +684,8 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { hasGitRepo={hasGitRepo} repoPath={activeRepoPath ?? repoPath} onRefresh={onRefresh} + onPull={handlePull} + isPulling={pullWorkflow.isPulling} onOpenBranchManager={handleOpenBranchManager} onShowBranchDiff={() => void handleShowBranchDiffList()} onOpenRemoteManager={() => setShowRemoteManager(true)} @@ -912,6 +938,8 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { ahead={gitStatus.ahead} behind={gitStatus.behind} onCommitSuccess={refreshAfterAction} + onPull={handlePull} + isPulling={pullWorkflow.isPulling} />
@@ -919,6 +947,10 @@ const GitView = ({ repoPath, onFileSelect, isActive }: GitViewProps) => { {renderGitActionsMenu({ hasGitRepo: !!gitStatus, onRefresh: refreshAfterAction })} + { diff --git a/windows/tauri/src/features/git/hooks/git-pull-workflow.test.ts b/windows/tauri/src/features/git/hooks/git-pull-workflow.test.ts new file mode 100644 index 000000000..5bc4d7e99 --- /dev/null +++ b/windows/tauri/src/features/git/hooks/git-pull-workflow.test.ts @@ -0,0 +1,241 @@ +import { describe, expect, test } from "bun:test"; +import type { GitOperationState, GitPullPreflight, PullStrategy } from "../types/git.types"; +import { GitPullWorkflow, type GitPullWorkflowDependencies } from "./git-pull-workflow"; + +const cleanPreflight = (overrides: Partial = {}): GitPullPreflight => ({ + upstream: "origin/main", + ahead: 0, + behind: 1, + diverged: false, + hasLocalChanges: false, + ...overrides, +}); + +const operation = (kind: GitOperationState["kind"]): GitOperationState => ({ + kind, + reference: "origin/main", + step: null, + total: null, + conflictedPaths: ["src/conflict.ts"], +}); + +const createHarness = (overrides: Partial = {}) => { + const pullStrategies: PullStrategy[] = []; + let refreshCount = 0; + const dependencies: GitPullWorkflowDependencies = { + fetch: async () => ({ success: true }), + preflight: async () => cleanPreflight(), + pull: async (_repoPath, strategy) => { + pullStrategies.push(strategy); + return { success: true }; + }, + operationState: async () => null, + ...overrides, + }; + const workflow = new GitPullWorkflow(dependencies); + const options = { + refresh: async () => { + refreshCount += 1; + }, + }; + return { + workflow, + options, + pullStrategies, + refreshCount: () => refreshCount, + }; +}; + +const waitForStrategyDialog = async (workflow: GitPullWorkflow) => { + for (let attempt = 0; attempt < 20; attempt += 1) { + if (workflow.getSnapshot().pendingPreflight) return; + await Promise.resolve(); + } + throw new Error("Strategy dialog was not requested"); +}; + +describe("GitPullWorkflow", () => { + test("stops when Fetch fails and still refreshes", async () => { + let preflightCalls = 0; + const harness = createHarness({ + fetch: async () => ({ success: false, error: "offline" }), + preflight: async () => { + preflightCalls += 1; + return cleanPreflight(); + }, + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toEqual({ + status: "failed", + stage: "fetch", + message: "Fetch failed: offline", + }); + expect(preflightCalls).toBe(0); + expect(harness.refreshCount()).toBe(1); + }); + + test("blocks a branch without an upstream", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ upstream: null, behind: 0 }), + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result.status).toBe("blocked"); + expect(result).toMatchObject({ reason: "no-upstream" }); + expect(harness.pullStrategies).toEqual([]); + expect(harness.refreshCount()).toBe(1); + }); + + test("fails closed when preflight cannot inspect the branch", async () => { + const harness = createHarness({ + preflight: async () => { + throw new Error("Core unavailable"); + }, + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toEqual({ + status: "failed", + stage: "preflight", + message: "Pull safety check failed: Core unavailable", + }); + expect(harness.pullStrategies).toEqual([]); + expect(harness.refreshCount()).toBe(1); + }); + + test("does not pull when the upstream has nothing new", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ ahead: 2, behind: 0 }), + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toMatchObject({ status: "blocked", reason: "up-to-date" }); + expect(harness.pullStrategies).toEqual([]); + }); + + test("uses ffOnly when only the remote is ahead", async () => { + const harness = createHarness(); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toMatchObject({ status: "pulled", strategy: "ffOnly" }); + expect(harness.pullStrategies).toEqual(["ffOnly"]); + }); + + test("blocks a dirty working tree before choosing or pulling", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ hasLocalChanges: true }), + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toMatchObject({ status: "blocked", reason: "dirty" }); + expect(result.message).toContain("Commit or stash"); + expect(harness.pullStrategies).toEqual([]); + }); + + test("uses Merge only after an explicit divergent-history choice", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ ahead: 2, behind: 3, diverged: true }), + }); + + const resultPromise = harness.workflow.run("C:/repo", harness.options); + await waitForStrategyDialog(harness.workflow); + harness.workflow.chooseStrategy("merge"); + const result = await resultPromise; + + expect(result).toMatchObject({ status: "pulled", strategy: "merge" }); + expect(harness.pullStrategies).toEqual(["merge"]); + }); + + test("uses Rebase only after an explicit divergent-history choice", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ ahead: 1, behind: 4, diverged: true }), + }); + + const resultPromise = harness.workflow.run("C:/repo", harness.options); + await waitForStrategyDialog(harness.workflow); + harness.workflow.chooseStrategy("rebase"); + const result = await resultPromise; + + expect(result).toMatchObject({ status: "pulled", strategy: "rebase" }); + expect(harness.pullStrategies).toEqual(["rebase"]); + }); + + test("Cancel is the safe divergent-history default", async () => { + const harness = createHarness({ + preflight: async () => cleanPreflight({ ahead: 1, behind: 1, diverged: true }), + }); + + const resultPromise = harness.workflow.run("C:/repo", harness.options); + await waitForStrategyDialog(harness.workflow); + harness.workflow.chooseStrategy(null); + const result = await resultPromise; + + expect(result.status).toBe("cancelled"); + expect(harness.pullStrategies).toEqual([]); + expect(harness.refreshCount()).toBe(1); + }); + + test("reports an ordinary Pull failure after confirming no operation remains", async () => { + let operationStateCalls = 0; + const harness = createHarness({ + pull: async () => ({ success: false, error: "authentication failed" }), + operationState: async () => { + operationStateCalls += 1; + return null; + }, + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toEqual({ + status: "failed", + stage: "pull", + message: "Pull failed: authentication failed", + }); + expect(operationStateCalls).toBe(1); + expect(harness.refreshCount()).toBe(1); + }); + + test("hands a conflicted Pull to the existing operation banner", async () => { + const mergeOperation = operation("merge"); + const harness = createHarness({ + pull: async () => ({ success: false, error: "CONFLICT" }), + operationState: async () => mergeOperation, + }); + + const result = await harness.workflow.run("C:/repo", harness.options); + + expect(result).toEqual({ + status: "conflict", + operation: mergeOperation, + message: "Merge stopped for conflict resolution.", + }); + expect(harness.refreshCount()).toBe(1); + }); + + test("ignores a duplicate click while the first Pull is running", async () => { + let releaseFetch: ((result: { success: boolean }) => void) | undefined; + const harness = createHarness({ + fetch: () => + new Promise((resolve) => { + releaseFetch = resolve; + }), + preflight: async () => cleanPreflight({ behind: 0 }), + }); + + const first = harness.workflow.run("C:/repo", harness.options); + const duplicate = await harness.workflow.run("C:/repo", harness.options); + + expect(duplicate.status).toBe("duplicate"); + releaseFetch?.({ success: true }); + await first; + expect(harness.refreshCount()).toBe(1); + }); +}); diff --git a/windows/tauri/src/features/git/hooks/git-pull-workflow.ts b/windows/tauri/src/features/git/hooks/git-pull-workflow.ts new file mode 100644 index 000000000..4866d32d7 --- /dev/null +++ b/windows/tauri/src/features/git/hooks/git-pull-workflow.ts @@ -0,0 +1,173 @@ +import type { + GitOperationState, + GitPullPreflight, + GitPullResult, + PullStrategy, +} from "../types/git.types"; + +interface RemoteActionResult { + success: boolean; + error?: string; +} + +export interface GitPullWorkflowDependencies { + fetch: (repoPath: string) => Promise; + preflight: (repoPath: string) => Promise; + pull: (repoPath: string, strategy: PullStrategy) => Promise; + operationState: (repoPath: string) => Promise; +} + +export interface GitPullWorkflowOptions { + refresh: () => Promise; +} + +export interface GitPullWorkflowSnapshot { + isPulling: boolean; + pendingPreflight: GitPullPreflight | null; +} + +const IDLE_SNAPSHOT: GitPullWorkflowSnapshot = { + isPulling: false, + pendingPreflight: null, +}; + +const errorText = (error: unknown, fallback: string) => { + const message = error instanceof Error ? error.message : String(error); + return message.trim() || fallback; +}; + +/** Coordinates one safe pull path, including an explicit divergent-history choice. */ +export class GitPullWorkflow { + private snapshot: GitPullWorkflowSnapshot = IDLE_SNAPSHOT; + private readonly listeners = new Set<() => void>(); + private resolveStrategy: ((strategy: PullStrategy | null) => void) | null = null; + + constructor(private readonly dependencies: GitPullWorkflowDependencies) {} + + readonly subscribe = (listener: () => void) => { + this.listeners.add(listener); + return () => this.listeners.delete(listener); + }; + + readonly getSnapshot = () => this.snapshot; + + chooseStrategy(strategy: Exclude | null) { + this.resolveStrategy?.(strategy); + } + + async run(repoPath: string, options: GitPullWorkflowOptions): Promise { + if (this.snapshot.isPulling) { + return { status: "duplicate", message: "A pull is already in progress." }; + } + + this.update({ isPulling: true, pendingPreflight: null }); + try { + const fetched = await this.dependencies.fetch(repoPath); + if (!fetched.success) { + return { + status: "failed", + stage: "fetch", + message: `Fetch failed: ${fetched.error || "Unable to update remote references."}`, + }; + } + + let preflight: GitPullPreflight; + try { + preflight = await this.dependencies.preflight(repoPath); + } catch (error) { + return { + status: "failed", + stage: "preflight", + message: `Pull safety check failed: ${errorText(error, "Unable to inspect the branch.")}`, + }; + } + + if (!preflight.upstream) { + return { + status: "blocked", + reason: "no-upstream", + message: "The current branch has no upstream. Set an upstream before pulling.", + }; + } + + if (preflight.hasLocalChanges) { + return { + status: "blocked", + reason: "dirty", + message: "Commit or stash local changes before pulling.", + }; + } + + if (preflight.behind === 0 && !preflight.diverged) { + return { + status: "blocked", + reason: "up-to-date", + message: "The current branch is already up to date.", + }; + } + + let strategy: PullStrategy = "ffOnly"; + if (preflight.diverged) { + const selectedStrategy = await this.waitForStrategy(preflight); + if (!selectedStrategy) { + return { status: "cancelled", message: "Pull cancelled." }; + } + strategy = selectedStrategy; + } + + const pulled = await this.dependencies.pull(repoPath, strategy); + if (pulled.success) { + const message = + strategy === "merge" + ? "Merged upstream changes successfully." + : strategy === "rebase" + ? "Rebased onto upstream successfully." + : "Pulled changes successfully."; + return { status: "pulled", strategy, message }; + } + + try { + const operation = await this.dependencies.operationState(repoPath); + if (operation?.kind === "merge" || operation?.kind === "rebase") { + return { + status: "conflict", + operation, + message: `${operation.kind === "merge" ? "Merge" : "Rebase"} stopped for conflict resolution.`, + }; + } + } catch (stateError) { + console.error("Failed to inspect Git operation state after pull failed:", stateError); + } + + return { + status: "failed", + stage: "pull", + message: `Pull failed: ${pulled.error || "Git rejected the pull."}`, + }; + } finally { + this.resolveStrategy = null; + try { + await options.refresh(); + } catch (refreshError) { + console.error("Failed to refresh Git data after pull:", refreshError); + } + this.update(IDLE_SNAPSHOT); + } + } + + private waitForStrategy(preflight: GitPullPreflight): Promise<"merge" | "rebase" | null> { + return new Promise((resolve) => { + this.resolveStrategy = (strategy) => { + this.resolveStrategy = null; + this.update({ isPulling: true, pendingPreflight: null }); + resolve(strategy === "merge" || strategy === "rebase" ? strategy : null); + }; + this.update({ isPulling: true, pendingPreflight: preflight }); + }); + } + + private update(snapshot: GitPullWorkflowSnapshot) { + this.snapshot = snapshot; + for (const listener of this.listeners) listener(); + } +} diff --git a/windows/tauri/src/features/git/hooks/use-git-pull-workflow.ts b/windows/tauri/src/features/git/hooks/use-git-pull-workflow.ts new file mode 100644 index 000000000..838a4bdd9 --- /dev/null +++ b/windows/tauri/src/features/git/hooks/use-git-pull-workflow.ts @@ -0,0 +1,78 @@ +import { useCallback, useEffect, useMemo, useSyncExternalStore } from "react"; +import { toast } from "sonner"; +import { executePullChanges, fetchChanges, getPullPreflight } from "../api/git-remotes-api"; +import { getOperationState } from "../api/git-integration-api"; +import { emitGitChanged } from "../events/git-events"; +import type { GitPullResult, PullStrategy } from "../types/git.types"; +import { GitPullWorkflow } from "./git-pull-workflow"; + +interface UseGitPullWorkflowOptions { + repoPath: string; + refresh: () => Promise; +} + +const reportResult = (result: GitPullResult) => { + if (result.status === "duplicate" || result.status === "cancelled") return; + if (result.status === "pulled") { + toast.success(result.message); + } else if (result.status === "conflict") { + toast.warning(result.message); + } else if (result.status === "blocked") { + result.reason === "up-to-date" ? toast.info(result.message) : toast.warning(result.message); + } else { + toast.error(result.message); + } +}; + +export function useGitPullWorkflow({ repoPath, refresh }: UseGitPullWorkflowOptions) { + const workflow = useMemo( + () => + new GitPullWorkflow({ + fetch: fetchChanges, + preflight: getPullPreflight, + pull: executePullChanges, + operationState: getOperationState, + }), + [], + ); + const snapshot = useSyncExternalStore( + workflow.subscribe, + workflow.getSnapshot, + workflow.getSnapshot, + ); + + const pull = useCallback(async () => { + const result = await workflow.run(repoPath, { + refresh: async () => { + // Invalidate read caches before the owning controller re-reads every + // Pull-related surface, including after a rejected or cancelled attempt. + emitGitChanged({ + repoPath, + scopes: ["working-tree", "history", "refs", "remotes"], + source: "pull-finished", + }); + await refresh(); + }, + }); + reportResult(result); + return result; + }, [refresh, repoPath, workflow]); + + const chooseStrategy = useCallback( + (strategy: Exclude | null) => workflow.chooseStrategy(strategy), + [workflow], + ); + + useEffect( + () => () => { + workflow.chooseStrategy(null); + }, + [repoPath, workflow], + ); + + return { + ...snapshot, + pull, + chooseStrategy, + }; +} diff --git a/windows/tauri/src/features/git/types/git.types.ts b/windows/tauri/src/features/git/types/git.types.ts index 392f12d85..a49785eb1 100644 --- a/windows/tauri/src/features/git/types/git.types.ts +++ b/windows/tauri/src/features/git/types/git.types.ts @@ -95,6 +95,34 @@ export interface GitRemote { url: string; } +/** The current branch's relationship with its configured upstream. */ +export interface GitPullPreflight { + upstream: string | null; + ahead: number; + behind: number; + diverged: boolean; + hasLocalChanges: boolean; +} + +/** A pull policy accepted by the shared Rust Core. */ +export type PullStrategy = "ffOnly" | "merge" | "rebase"; + +export type GitPullResult = + | { status: "pulled"; strategy: PullStrategy; message: string } + | { status: "cancelled"; message: string } + | { + status: "blocked"; + reason: "no-upstream" | "up-to-date" | "dirty"; + message: string; + } + | { + status: "failed"; + stage: "fetch" | "preflight" | "pull"; + message: string; + } + | { status: "conflict"; operation: GitOperationState; message: string } + | { status: "duplicate"; message: string }; + export interface GitStash { index: number; message: string; From 2a00dcef91cf845874c3d4c9253b3bc8f2d4885d Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 11:36:34 +0800 Subject: [PATCH 44/83] fix(macOS): stabilize anonymous web session tests --- .../MacOS/Community/LinuxDoAnonymousWebView.swift | 7 +++++-- .../LinuxDoAnonymousWebSessionTests.swift | 15 ++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Sources/Lithe/Platform/MacOS/Community/LinuxDoAnonymousWebView.swift b/Sources/Lithe/Platform/MacOS/Community/LinuxDoAnonymousWebView.swift index b7ca4ac38..6cce0b886 100644 --- a/Sources/Lithe/Platform/MacOS/Community/LinuxDoAnonymousWebView.swift +++ b/Sources/Lithe/Platform/MacOS/Community/LinuxDoAnonymousWebView.swift @@ -28,9 +28,10 @@ final class LinuxDoAnonymousWebSession: ObservableObject { releaseTask = nil } - func releaseAfterInactivity() { + @discardableResult + func releaseAfterInactivity() -> Task { releaseTask?.cancel() - releaseTask = Task { @MainActor [weak self] in + let task = Task { @MainActor [weak self] in guard let self else { return } try? await Task.sleep(nanoseconds: idleLifetimeNanoseconds) guard !Task.isCancelled else { return } @@ -40,6 +41,8 @@ final class LinuxDoAnonymousWebSession: ObservableObject { webView = nil releaseTask = nil } + releaseTask = task + return task } deinit { diff --git a/Tests/LitheTests/LinuxDoAnonymousWebSessionTests.swift b/Tests/LitheTests/LinuxDoAnonymousWebSessionTests.swift index f89dfcadf..72eb8dabe 100644 --- a/Tests/LitheTests/LinuxDoAnonymousWebSessionTests.swift +++ b/Tests/LitheTests/LinuxDoAnonymousWebSessionTests.swift @@ -5,28 +5,25 @@ import Testing @MainActor struct LinuxDoAnonymousWebSessionTests { @Test - func shortPanelAbsenceKeepsTheCurrentWebView() async throws { + func shortPanelAbsenceKeepsTheCurrentWebView() async { let session = LinuxDoAnonymousWebSession(idleLifetimeNanoseconds: 50_000_000) let webView = WKWebView() session.webView = webView - session.releaseAfterInactivity() + let releaseTask = session.releaseAfterInactivity() session.resume() - try await Task.sleep(nanoseconds: 80_000_000) + await releaseTask.value #expect(session.webView === webView) } @Test - func inactiveSessionReleasesItsWebView() async throws { + func inactiveSessionReleasesItsWebView() async { let session = LinuxDoAnonymousWebSession(idleLifetimeNanoseconds: 20_000_000) session.webView = WKWebView() - session.releaseAfterInactivity() - let deadline = ContinuousClock.now + .seconds(1) - while session.webView != nil, ContinuousClock.now < deadline { - try await Task.sleep(for: .milliseconds(10)) - } + let releaseTask = session.releaseAfterInactivity() + await releaseTask.value #expect(session.webView == nil) } From c5e1ae93b17e81333eef7f5fa7b1aaee7e6c51dc Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 11:45:29 +0800 Subject: [PATCH 45/83] fix(ci): bind Windows packaging arguments by name --- .github/workflows/release-preview-windows.yml | 10 +++++----- .github/workflows/release-windows.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release-preview-windows.yml b/.github/workflows/release-preview-windows.yml index c34fe0e98..5b3b52741 100644 --- a/.github/workflows/release-preview-windows.yml +++ b/.github/workflows/release-preview-windows.yml @@ -90,12 +90,12 @@ jobs: LITHE_WINDOWS_TIMESTAMP_SERVER: ${{ secrets.WINDOWS_TIMESTAMP_SERVER }} WINDOWS_RELEASE_SIGNED: ${{ steps.signing.outputs.signed }} run: | - $packageArgs = @( - "-Configuration", "Release", - "-Version", $env:LITHE_VERSION - ) + $packageArgs = @{ + Configuration = "Release" + Version = $env:LITHE_VERSION + } if ($env:WINDOWS_RELEASE_SIGNED -eq "true") { - $packageArgs += "-RequireAuthenticodeSignature" + $packageArgs.RequireAuthenticodeSignature = $true } else { Write-Output "Packaging an unsigned Windows preview installer." } diff --git a/.github/workflows/release-windows.yml b/.github/workflows/release-windows.yml index d490a8614..661062779 100644 --- a/.github/workflows/release-windows.yml +++ b/.github/workflows/release-windows.yml @@ -88,12 +88,12 @@ jobs: LITHE_WINDOWS_TIMESTAMP_SERVER: ${{ secrets.WINDOWS_TIMESTAMP_SERVER }} WINDOWS_RELEASE_SIGNED: ${{ steps.signing.outputs.signed }} run: | - $packageArgs = @( - "-Configuration", "Release", - "-Version", $env:LITHE_VERSION - ) + $packageArgs = @{ + Configuration = "Release" + Version = $env:LITHE_VERSION + } if ($env:WINDOWS_RELEASE_SIGNED -eq "true") { - $packageArgs += "-RequireAuthenticodeSignature" + $packageArgs.RequireAuthenticodeSignature = $true } else { Write-Output "Packaging an unsigned Windows installer." } From 2b8a79c85642f2f35f9bcf7cd2347d1eeb9cca93 Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 11:47:49 +0800 Subject: [PATCH 46/83] test(macOS): allow Git refresh coalescing to settle --- Tests/LitheTests/LitheCoreLogicTests.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Tests/LitheTests/LitheCoreLogicTests.swift b/Tests/LitheTests/LitheCoreLogicTests.swift index 1ed1c9b80..3434c7897 100644 --- a/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/Tests/LitheTests/LitheCoreLogicTests.swift @@ -3231,7 +3231,9 @@ struct EditorDocumentTests { source?.emit(DirectoryChangeBatch(gitStateMayHaveChanged: true)) source?.emit(DirectoryChangeBatch(gitStateMayHaveChanged: true)) source?.emit(DirectoryChangeBatch(gitStateMayHaveChanged: true)) - let refreshed = await waitForWorkspaceObservation { refreshCount == 2 } + let refreshed = await waitForWorkspaceObservation(timeout: .seconds(15)) { + refreshCount == 2 + } #expect(refreshed) #expect(refreshCount == 2) From 2397567b2a2e7e9a29bd1e382dfff99781ae8e0d Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 14:04:06 +0800 Subject: [PATCH 47/83] fix(windows): serialize repository pull workflows --- .../features/git/api/git-remotes-api.test.ts | 7 ++- .../src/features/git/api/git-remotes-api.ts | 31 ++++++++---- .../git/components/git-actions-menu.tsx | 4 +- .../git/components/git-commit-panel.tsx | 2 +- .../git/hooks/git-pull-workflow.test.ts | 48 +++++++++++++++++++ .../features/git/hooks/git-pull-workflow.ts | 32 +++++++++++++ .../git/hooks/use-git-pull-workflow.ts | 15 +----- .../tauri/src/features/git/types/git.types.ts | 2 +- 8 files changed, 113 insertions(+), 28 deletions(-) diff --git a/windows/tauri/src/features/git/api/git-remotes-api.test.ts b/windows/tauri/src/features/git/api/git-remotes-api.test.ts index 525761805..59fcee244 100644 --- a/windows/tauri/src/features/git/api/git-remotes-api.test.ts +++ b/windows/tauri/src/features/git/api/git-remotes-api.test.ts @@ -22,7 +22,7 @@ mock.module("./git-branches-api", () => ({ getBranches })); mock.module("./git-commits-api", () => ({ getGitHistory })); mock.module("./git-status-api", () => ({ getGitStatus })); -const { executePullChanges, fetchChanges, getPullPreflight, pullChanges } = +const { executePullChanges, fetchChanges, getGitPullWorkflow, getPullPreflight, pullChanges } = await import("./git-remotes-api"); beforeEach(() => { @@ -38,6 +38,11 @@ beforeEach(() => { }); describe("Git remote Pull API", () => { + test("shares a Pull workflow only within the same repository", () => { + expect(getGitPullWorkflow("C:/repo")).toBe(getGitPullWorkflow("C:/repo")); + expect(getGitPullWorkflow("C:/repo")).not.toBe(getGitPullWorkflow("C:/other-repo")); + }); + test("calls the shared git.pullPreflight contract for the current branch", async () => { const preflight: GitPullPreflight = { upstream: "origin/main", diff --git a/windows/tauri/src/features/git/api/git-remotes-api.ts b/windows/tauri/src/features/git/api/git-remotes-api.ts index 584204984..50b4ddb83 100644 --- a/windows/tauri/src/features/git/api/git-remotes-api.ts +++ b/windows/tauri/src/features/git/api/git-remotes-api.ts @@ -136,24 +136,35 @@ export const fetchChanges = async (repoPath: string): Promise(); + +/** Returns the shared Pull coordinator for one repository. */ +export const getGitPullWorkflow = (repoPath: string): GitPullWorkflow => { + const existingWorkflow = pullWorkflows.get(repoPath); + if (existingWorkflow) return existingWorkflow; + + const workflow = new GitPullWorkflow({ + fetch: fetchChanges, + preflight: getPullPreflight, + pull: executePullChanges, + operationState: getOperationState, + }); + pullWorkflows.set(repoPath, workflow); + return workflow; +}; /** * Safe compatibility entry point for non-Source-Control callers. Divergence * cancels because only the Source Control workflow can present the choice UI. */ export const pullChanges = async (repoPath: string): Promise => { - const unsubscribe = headlessPullWorkflow.subscribe(() => { - if (headlessPullWorkflow.getSnapshot().pendingPreflight) { - headlessPullWorkflow.chooseStrategy(null); + const workflow = getGitPullWorkflow(repoPath); + const unsubscribe = workflow.subscribe(() => { + if (workflow.getSnapshot().pendingPreflight) { + workflow.chooseStrategy(null); } }); - const resultPromise = headlessPullWorkflow.run(repoPath, { + const resultPromise = workflow.run(repoPath, { refresh: async () => { const resolvedRepoPath = await resolveRepositoryPathOrThrow(repoPath); // Cache invalidation must precede the explicit reads below; otherwise a diff --git a/windows/tauri/src/features/git/components/git-actions-menu.tsx b/windows/tauri/src/features/git/components/git-actions-menu.tsx index e6d5a4132..339c9a433 100644 --- a/windows/tauri/src/features/git/components/git-actions-menu.tsx +++ b/windows/tauri/src/features/git/components/git-actions-menu.tsx @@ -222,7 +222,7 @@ const GitActionsMenu = ({ id: "push", label: t("git.pushChanges"), icon: , - disabled: isLoading, + disabled: isLoading || isPulling, onClick: handlePush, }, { id: "sep-2", label: "", separator: true, onClick: () => {} }, @@ -237,7 +237,7 @@ const GitActionsMenu = ({ id: "fetch", label: t("git.fetch"), icon: , - disabled: isLoading, + disabled: isLoading || isPulling, onClick: handleFetch, }, { id: "sep-3", label: "", separator: true, onClick: () => {} }, diff --git a/windows/tauri/src/features/git/components/git-commit-panel.tsx b/windows/tauri/src/features/git/components/git-commit-panel.tsx index 02c516dc6..ce2052c5e 100644 --- a/windows/tauri/src/features/git/components/git-commit-panel.tsx +++ b/windows/tauri/src/features/git/components/git-commit-panel.tsx @@ -447,7 +447,7 @@ const GitCommitPanel = ({ + {branchItem?.content} ); @@ -299,7 +284,7 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { size="icon-xs" tooltip={t("workbench.moreProjectActions")} tooltipSide="bottom" - onClick={() => setIsProjectPickerVisible(true)} + onClick={() => onOpenProjectPicker()} aria-label={t("workbench.moreProjectActions")} > @@ -383,23 +368,38 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { ); }; -const TitleBarWithSettings = (props: TitleBarProps) => { +const TitleBarWithSettings = ({ + showMinimal = false, +}: Omit) => { const isSettingsDialogVisible = useUIState((state) => state.isSettingsDialogVisible); const isProjectPickerVisible = useUIState((state) => state.isProjectPickerVisible); const setIsSettingsDialogVisible = useUIState((state) => state.setIsSettingsDialogVisible); const setIsProjectPickerVisible = useUIState((state) => state.setIsProjectPickerVisible); + const [projectPickerMode, setProjectPickerMode] = useState("picker"); + const openProjectPicker = useCallback( + (mode: ProjectPickerMode = "picker") => { + setProjectPickerMode(mode); + setIsProjectPickerVisible(true); + }, + [setIsProjectPickerVisible], + ); + const closeProjectPicker = useCallback(() => { + setProjectPickerMode("picker"); + setIsProjectPickerVisible(false); + }, [setIsProjectPickerVisible]); return ( <> - + setIsSettingsDialogVisible(false)} /> {createPortal( setIsProjectPickerVisible(false)} + onClose={closeProjectPicker} />, document.body, )} diff --git a/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx b/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx new file mode 100644 index 000000000..1e7cebdd1 --- /dev/null +++ b/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx @@ -0,0 +1,228 @@ +import { convertFileSrc } from "@/platform/tauri-core"; +import { useMemo, useState, type ReactNode } from "react"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useRecentFoldersStore } from "@/features/file-system/stores/recent-folders.store"; +import { useTranslation } from "@/i18n/locale-provider"; +import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; +import { + getTitleProjectBadge, + getTitleProjectMenuItemAriaCurrent, + getTitleProjectMenuProjects, +} from "@/features/window/utils/title-project-menu-model"; +import type { ProjectPickerMode } from "@/features/window/utils/project-picker-mode"; +import { + CheckIcon, + ChevronDownIcon, + FolderOpenIcon, + GitBranchIcon, + PlusIcon, +} from "@/ui/icons"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/ui/dropdown"; +import { Button } from "@/ui/button"; +import { cn } from "@/utils/cn"; + +interface TitleProjectMenuProps { + onOpenProjectPicker: (mode: ProjectPickerMode) => void; +} + +function ProjectBadge({ + name, + iconPath, + className, +}: { + name: string; + iconPath?: string; + className?: string; +}) { + if (iconPath) { + return ( + + ); + } + + const badge = getTitleProjectBadge(name); + return ( + + ); +} + +function ProjectMenuRow({ + name, + path, + iconPath, + active = false, + trailing, + onClick, + disabled = false, +}: { + name: string; + path: string; + iconPath?: string; + active?: boolean; + trailing?: ReactNode; + onClick: () => void; + disabled?: boolean; +}) { + return ( + + + + {name} + {path} + + {trailing} + + ); +} + +export function TitleProjectMenu({ onOpenProjectPicker }: TitleProjectMenuProps) { + const { t } = useTranslation(); + const projectTabs = useWorkspaceTabsStore.use.projectTabs(); + const activeProject = projectTabs.find((project) => project.isActive); + const recentFolders = useRecentFoldersStore((state) => state.recentFolders); + const openRecentFolder = useRecentFoldersStore((state) => state.actions.openRecentFolder); + const handleOpenFolder = useFileSystemStore((state) => state.handleOpenFolder); + const switchToProject = useFileSystemStore((state) => state.switchToProject); + const isSwitchingProject = useFileSystemStore((state) => state.isSwitchingProject); + const projectLabel = activeProject?.name ?? t("projectOpen.title"); + const [isOpen, setIsOpen] = useState(false); + const projects = useMemo( + () => getTitleProjectMenuProjects(projectTabs, recentFolders), + [projectTabs, recentFolders], + ); + + const closeAndRun = (action: () => void) => { + setIsOpen(false); + action(); + }; + + return ( + + + } + > + + {projectLabel} + + + + + closeAndRun(() => onOpenProjectPicker("new-project"))} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.newProject")} + + closeAndRun(() => void handleOpenFolder())} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.open")} + + closeAndRun(() => onOpenProjectPicker("clone-repository"))} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.cloneRepository")} + + + + + + {t("titleProject.openProjects")} + + {projects.openProjects.map((project) => ( + { + if (project.isActive) return; + closeAndRun(() => void switchToProject(project.id)); + }} + trailing={project.isActive ? : null} + /> + ))} + + + + + + {t("titleProject.recentProjects")} + + {projects.recentProjects.length === 0 ? ( +
+ {t("titleProject.noRecentProjects")} +
+ ) : null} + {projects.recentProjects.map((folder) => ( + closeAndRun(() => void openRecentFolder(folder.path))} + /> + ))} +
+
+
+ ); +} diff --git a/windows/tauri/src/features/window/utils/project-picker-mode.test.ts b/windows/tauri/src/features/window/utils/project-picker-mode.test.ts new file mode 100644 index 000000000..b69cbf48b --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-picker-mode.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, test } from "bun:test"; +import { getProjectPickerInitialState } from "./project-picker-mode"; + +describe("project picker launch mode", () => { + test("opens the searchable picker by default", () => { + expect(getProjectPickerInitialState("picker")).toEqual({ + commandStep: "picker", + newProjectSource: undefined, + }); + }); + + test("opens the new project source chooser", () => { + expect(getProjectPickerInitialState("new-project")).toEqual({ + commandStep: "newProject", + newProjectSource: undefined, + }); + }); + + test("opens the clone repository details form directly", () => { + expect(getProjectPickerInitialState("clone-repository")).toEqual({ + commandStep: "newProject", + newProjectSource: "clone", + }); + }); +}); diff --git a/windows/tauri/src/features/window/utils/project-picker-mode.ts b/windows/tauri/src/features/window/utils/project-picker-mode.ts new file mode 100644 index 000000000..5d4799e0d --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-picker-mode.ts @@ -0,0 +1,12 @@ +export type ProjectPickerMode = "picker" | "new-project" | "clone-repository"; + +export function getProjectPickerInitialState(mode: ProjectPickerMode) { + if (mode === "picker") { + return { commandStep: "picker" as const, newProjectSource: undefined }; + } + + return { + commandStep: "newProject" as const, + newProjectSource: mode === "clone-repository" ? ("clone" as const) : undefined, + }; +} diff --git a/windows/tauri/src/features/window/utils/title-bar-drag.test.ts b/windows/tauri/src/features/window/utils/title-bar-drag.test.ts new file mode 100644 index 000000000..da6cdffdf --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-bar-drag.test.ts @@ -0,0 +1,60 @@ +import { expect, test } from "bun:test"; +import { runTitleBarDrag } from "./title-bar-drag"; + +type TitleBarMouseDownEvent = Parameters[0]; + +function createMouseDownEvent({ + contained, + interactive = false, +}: { + contained: boolean; + interactive?: boolean; +}): TitleBarMouseDownEvent { + const target = { + closest: () => (interactive ? {} : null), + }; + + return { + button: 0, + target, + currentTarget: { + contains: () => contained, + }, + } as unknown as TitleBarMouseDownEvent; +} + +test("title bar drag ignores mouse events from portaled content", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag(createMouseDownEvent({ contained: false }), () => { + dragCount += 1; + }); + + expect(didStart).toBe(false); + expect(dragCount).toBe(0); +}); + +test("title bar drag starts for contained non-interactive content", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag(createMouseDownEvent({ contained: true }), () => { + dragCount += 1; + }); + + expect(didStart).toBe(true); + expect(dragCount).toBe(1); +}); + +test("title bar drag ignores contained interactive controls", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag( + createMouseDownEvent({ contained: true, interactive: true }), + () => { + dragCount += 1; + }, + ); + + expect(didStart).toBe(false); + expect(dragCount).toBe(0); +}); diff --git a/windows/tauri/src/features/window/utils/title-bar-drag.ts b/windows/tauri/src/features/window/utils/title-bar-drag.ts new file mode 100644 index 000000000..9c6039d65 --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-bar-drag.ts @@ -0,0 +1,23 @@ +import type { MouseEvent } from "react"; + +type TitleBarMouseDownEvent = Pick< + MouseEvent, + "button" | "currentTarget" | "target" +>; + +const INTERACTIVE_TARGET_SELECTOR = + "button, a, input, textarea, select, [role='tab'], [contenteditable='true']"; + +export function runTitleBarDrag( + event: TitleBarMouseDownEvent, + startDragging: () => void, +): boolean { + if (event.button !== 0) return false; + + const target = event.target as HTMLElement; + if (!event.currentTarget.contains(target)) return false; + if (target.closest(INTERACTIVE_TARGET_SELECTOR)) return false; + + startDragging(); + return true; +} diff --git a/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts b/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts new file mode 100644 index 000000000..3cb1f2b2c --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, test } from "bun:test"; +import type { RecentFolder } from "@/features/file-system/types/recent-folders.types"; +import type { ProjectTab } from "@/features/window/stores/workspace-tabs.store"; +import { + getTitleProjectBadge, + getTitleProjectMenuItemAriaCurrent, + getTitleProjectMenuProjects, +} from "./title-project-menu-model"; + +const project = (id: string, path: string, isActive = false): ProjectTab => ({ + id, + name: id, + path, + isActive, + lastOpened: 1, +}); + +const recent = (name: string, path: string): RecentFolder => ({ + name, + path, + lastOpened: "2026-08-16T00:00:00.000Z", +}); + +describe("title project menu model", () => { + test("keeps open projects and active state while excluding open recent paths", () => { + const openProjects = [ + project("Lithe", "D:\\code\\Lithe", true), + project("Online", "D:\\code\\online"), + ]; + + const result = getTitleProjectMenuProjects(openProjects, [ + recent("Lithe", "d:/code/Lithe/"), + recent("New", "D:\\code\\new"), + ]); + + expect(result.openProjects).toEqual(openProjects); + expect(result.recentProjects.map((entry) => entry.name)).toEqual(["New"]); + }); + + test("caps recent projects without mutating the source list", () => { + const recentProjects = [ + recent("A", "D:\\code\\a"), + recent("B", "D:\\code\\b"), + recent("C", "D:\\code\\c"), + ]; + + const result = getTitleProjectMenuProjects([], recentProjects, 2); + + expect(result.recentProjects).toEqual(recentProjects.slice(0, 2)); + expect(recentProjects).toHaveLength(3); + }); + + test("keeps existing projects open when a recent project opens in this window", () => { + const existingProject = project("A", "D:\\code\\a", true); + const recentProject = recent("B", "D:\\code\\b"); + + const beforeOpen = getTitleProjectMenuProjects([existingProject], [recentProject]); + expect(beforeOpen.recentProjects.map((entry) => entry.name)).toEqual(["B"]); + + const openedProject = project("B", "D:\\code\\b", true); + const afterOpen = getTitleProjectMenuProjects( + [{ ...existingProject, isActive: false }, openedProject], + [recentProject], + ); + + expect(afterOpen.openProjects.map((entry) => entry.name)).toEqual(["A", "B"]); + expect(afterOpen.recentProjects).toEqual([]); + }); + + test("marks only the active project as current for assistive technology", () => { + expect(getTitleProjectMenuItemAriaCurrent(true)).toBe("true"); + expect(getTitleProjectMenuItemAriaCurrent(false)).toBeUndefined(); + }); + + test("creates deterministic project initials and badge tones", () => { + const badge = getTitleProjectBadge("Lithe-IDEA-issue-35-ci"); + + expect(badge.initials).toBe("LI"); + expect(getTitleProjectBadge("Lithe-IDEA-issue-35-ci")).toEqual(badge); + expect(getTitleProjectBadge("文档项目").initials).toBe("文"); + }); +}); diff --git a/windows/tauri/src/features/window/utils/title-project-menu-model.ts b/windows/tauri/src/features/window/utils/title-project-menu-model.ts new file mode 100644 index 000000000..e5cca4c73 --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-project-menu-model.ts @@ -0,0 +1,51 @@ +import type { RecentFolder } from "@/features/file-system/types/recent-folders.types"; +import type { ProjectTab } from "@/features/window/stores/workspace-tabs.store"; +import { MAX_RECENT_PROJECTS } from "@/features/file-system/utils/recent-folders"; +import { areProjectTabPathsEqual } from "./project-tab-path"; + +const PROJECT_BADGE_TONES = [ + "bg-sky-600", + "bg-emerald-600", + "bg-orange-600", + "bg-violet-600", + "bg-rose-600", +] as const; + +export function getTitleProjectBadge(name: string) { + const words = name.split(/[^\p{L}\p{N}]+/u).filter(Boolean); + const initials = + words + .slice(0, 2) + .map((word) => Array.from(word)[0] ?? "") + .join("") + .toUpperCase() || "LI"; + const hash = Array.from(name).reduce( + (value, character) => (value * 31 + (character.codePointAt(0) ?? 0)) & 0x7fffffff, + 0, + ); + + return { + initials, + tone: PROJECT_BADGE_TONES[hash % PROJECT_BADGE_TONES.length] ?? PROJECT_BADGE_TONES[0], + }; +} + +export function getTitleProjectMenuItemAriaCurrent(isActive: boolean): "true" | undefined { + return isActive ? "true" : undefined; +} + +export function getTitleProjectMenuProjects( + projectTabs: ProjectTab[], + recentFolders: RecentFolder[], + maxRecentProjects = MAX_RECENT_PROJECTS, +) { + return { + openProjects: projectTabs, + recentProjects: recentFolders + .filter( + (recent) => + !projectTabs.some((project) => areProjectTabPathsEqual(project.path, recent.path)), + ) + .slice(0, maxRecentProjects), + }; +} diff --git a/windows/tauri/src/i18n/locale.test.ts b/windows/tauri/src/i18n/locale.test.ts index be4fc5427..16d2d63ec 100644 --- a/windows/tauri/src/i18n/locale.test.ts +++ b/windows/tauri/src/i18n/locale.test.ts @@ -15,4 +15,41 @@ describe("Windows display language", () => { expect(getLocaleCatalog("en-US")).toHaveProperty(["settings.displayLanguage"]); expect(defaultSettings.displayLanguage).toBe("en-US"); }); + + test("translates the project open destination prompt", () => { + const english = createTranslator("en-US"); + const chinese = createTranslator("zh-CN"); + + expect(english("projectOpen.title")).toBe("Open Project"); + expect(english("projectOpen.where", { project: "Lithe" })).toBe( + 'Where do you want to open project "Lithe"?', + ); + expect(english("projectOpen.doNotAskAgain")).toBe("Do not ask again"); + expect(english("projectOpen.cancel")).toBe("Cancel"); + expect(english("projectOpen.newWindow")).toBe("New Window"); + expect(english("projectOpen.thisWindow")).toBe("This Window"); + expect(english("titleProject.newProject")).toBe("New Project…"); + expect(english("titleProject.open")).toBe("Open…"); + expect(english("titleProject.cloneRepository")).toBe("Clone Repository…"); + expect(english("titleProject.openProjects")).toBe("Open Projects"); + expect(english("titleProject.recentProjects")).toBe("Recent Projects"); + expect(english("titleProject.noRecentProjects")).toBe("No recent projects"); + expect(english("titleProject.trigger", { project: "Lithe" })).toBe("Project: Lithe"); + + expect(chinese("projectOpen.title")).toBe("打开项目"); + expect(chinese("projectOpen.where", { project: "Lithe" })).toBe( + '你想在哪里打开项目“Lithe”?', + ); + expect(chinese("projectOpen.doNotAskAgain")).toBe("不再询问"); + expect(chinese("projectOpen.cancel")).toBe("取消"); + expect(chinese("projectOpen.newWindow")).toBe("新窗口"); + expect(chinese("projectOpen.thisWindow")).toBe("此窗口"); + expect(chinese("titleProject.newProject")).toBe("新建项目…"); + expect(chinese("titleProject.open")).toBe("打开…"); + expect(chinese("titleProject.cloneRepository")).toBe("克隆仓库…"); + expect(chinese("titleProject.openProjects")).toBe("打开的项目"); + expect(chinese("titleProject.recentProjects")).toBe("最近项目"); + expect(chinese("titleProject.noRecentProjects")).toBe("没有最近项目"); + expect(chinese("titleProject.trigger", { project: "Lithe" })).toBe("项目:Lithe"); + }); }); diff --git a/windows/tauri/src/i18n/locale.ts b/windows/tauri/src/i18n/locale.ts index a877aac29..164bbc9c6 100644 --- a/windows/tauri/src/i18n/locale.ts +++ b/windows/tauri/src/i18n/locale.ts @@ -77,6 +77,19 @@ const catalogs = { "welcome.removeRecent": "Remove {name} from recent projects", "welcome.noRecentProjects": "No recent projects", "welcome.openFolderHint": "Open a folder to get started.", + "projectOpen.title": "Open Project", + "projectOpen.where": 'Where do you want to open project "{project}"?', + "projectOpen.doNotAskAgain": "Do not ask again", + "projectOpen.cancel": "Cancel", + "projectOpen.newWindow": "New Window", + "projectOpen.thisWindow": "This Window", + "titleProject.newProject": "New Project…", + "titleProject.open": "Open…", + "titleProject.cloneRepository": "Clone Repository…", + "titleProject.openProjects": "Open Projects", + "titleProject.recentProjects": "Recent Projects", + "titleProject.noRecentProjects": "No recent projects", + "titleProject.trigger": "Project: {project}", "settings.displayLanguage": "Display Language", "settings.displayLanguageDescription": "Choose the language used throughout Lithe.", "settings.languageEnglish": "English", @@ -693,6 +706,19 @@ const catalogs = { "welcome.removeRecent": "从最近项目中移除 {name}", "welcome.noRecentProjects": "暂无最近项目", "welcome.openFolderHint": "打开文件夹以开始使用。", + "projectOpen.title": "打开项目", + "projectOpen.where": "你想在哪里打开项目“{project}”?", + "projectOpen.doNotAskAgain": "不再询问", + "projectOpen.cancel": "取消", + "projectOpen.newWindow": "新窗口", + "projectOpen.thisWindow": "此窗口", + "titleProject.newProject": "新建项目…", + "titleProject.open": "打开…", + "titleProject.cloneRepository": "克隆仓库…", + "titleProject.openProjects": "打开的项目", + "titleProject.recentProjects": "最近项目", + "titleProject.noRecentProjects": "没有最近项目", + "titleProject.trigger": "项目:{project}", "settings.displayLanguage": "显示语言", "settings.displayLanguageDescription": "选择 Lithe 界面使用的语言。", "settings.languageEnglish": "English", diff --git a/windows/tauri/src/ui/dialog.tsx b/windows/tauri/src/ui/dialog.tsx index 978eb6af1..9007a2cda 100644 --- a/windows/tauri/src/ui/dialog.tsx +++ b/windows/tauri/src/ui/dialog.tsx @@ -14,6 +14,7 @@ import { AlertDialogTitle, } from "@/ui/alert-dialog"; import { Button, type ButtonVariant } from "@/ui/button"; +import { Checkbox } from "@/ui/checkbox"; import { InfoIcon as Info, type IconProps as AppIconProps, @@ -319,6 +320,17 @@ type PrimitiveDialogRequest = choices: PrimitiveChoiceOption[]; resolve: (value: string | null) => void; } + | { + id: number; + type: "choice-with-checkbox"; + title: string; + message: ReactNode; + choices: PrimitiveChoiceOption[]; + checkboxLabel: string; + checkboxDefaultChecked: boolean; + cancelLabel: string; + resolve: (value: ChoiceWithCheckboxResult | null) => void; + } | { id: number; type: "prompt"; @@ -351,6 +363,18 @@ interface PrimitiveChoiceOptions { }>; } +interface PrimitiveChoiceWithCheckboxOptions + extends PrimitiveChoiceOptions { + checkboxLabel: string; + checkboxDefaultChecked?: boolean; + cancelLabel?: string; +} + +export interface ChoiceWithCheckboxResult { + value: T; + checked: boolean; +} + let nextDialogId = 1; let enqueueDialog: ((request: PrimitiveDialogRequest) => void) | null = null; const pendingDialogs: PrimitiveDialogRequest[] = []; @@ -403,6 +427,25 @@ export function showChoiceDialog( }); } +export function showChoiceDialogWithCheckbox( + message: ReactNode, + options: PrimitiveChoiceWithCheckboxOptions, +): Promise | null> { + return new Promise((resolve) => { + enqueue({ + id: nextDialogId++, + type: "choice-with-checkbox", + title: options.title ?? "Choose", + message, + choices: options.choices, + checkboxLabel: options.checkboxLabel, + checkboxDefaultChecked: options.checkboxDefaultChecked ?? false, + cancelLabel: options.cancelLabel ?? "Cancel", + resolve: (value) => resolve(value as ChoiceWithCheckboxResult | null), + }); + }); +} + export function showPromptDialog( message: ReactNode, options: PrimitivePromptOptions = {}, @@ -463,6 +506,9 @@ function PrimitiveDialogHost({ const [promptValue, setPromptValue] = useState( dialog.type === "prompt" ? dialog.defaultValue : "", ); + const [choiceChecked, setChoiceChecked] = useState( + dialog.type === "choice-with-checkbox" ? dialog.checkboxDefaultChecked : false, + ); if (dialog.type === "alert") { return ( @@ -550,6 +596,49 @@ function PrimitiveDialogHost({ ); } + if (dialog.type === "choice-with-checkbox") { + return ( + { + if (!open) onClose(() => dialog.resolve(null)); + }} + > + + + + + + {dialog.title} + {dialog.message} + + + + {dialog.cancelLabel} + {dialog.choices.map((choice) => ( + + onClose(() => dialog.resolve({ value: choice.value, checked: choiceChecked })) + } + > + {choice.label} + + ))} + + + + ); + } + return ( Date: Mon, 17 Aug 2026 15:58:25 +0800 Subject: [PATCH 49/83] feat(windows): improve project opening experience --- rust/lithe-core/src/git/mod.rs | 27 ++- windows/tauri/src-tauri/src/host.rs | 17 +- .../components/project-name-menu.tsx | 2 +- .../project-open-destination.test.ts | 206 ++++++++++++++++ .../controllers/project-open-destination.ts | 135 +++++++++++ .../file-system/stores/file-system.store.ts | 91 ++++--- .../stores/recent-folders.store.ts | 64 +++-- .../file-system/types/interface.types.ts | 4 +- .../components/sidebar/main-sidebar.tsx | 41 +--- .../components/sidebar/sidebar-projects.tsx | 178 +------------- .../layout/utils/project-switcher.test.ts | 17 +- .../features/layout/utils/project-switcher.ts | 6 - .../onboarding/components/onboarding-view.tsx | 1 + .../components/macos-settings-panels.tsx | 24 +- .../settings/config/default-settings.ts | 2 +- .../lib/project-open-preference.test.ts | 44 ++++ .../settings/lib/project-open-preference.ts | 29 +++ .../features/settings/lib/settings-sync.ts | 4 +- .../features/settings/types/settings.types.ts | 2 +- .../window/components/new-project-content.tsx | 13 +- .../window/components/project-picker.tsx | 37 ++- .../window/components/title-bar/title-bar.tsx | 60 ++--- .../title-bar/title-project-menu.tsx | 228 ++++++++++++++++++ .../window/utils/project-picker-mode.test.ts | 25 ++ .../window/utils/project-picker-mode.ts | 12 + .../window/utils/title-bar-drag.test.ts | 60 +++++ .../features/window/utils/title-bar-drag.ts | 23 ++ .../utils/title-project-menu-model.test.ts | 82 +++++++ .../window/utils/title-project-menu-model.ts | 51 ++++ windows/tauri/src/i18n/locale.test.ts | 37 +++ windows/tauri/src/i18n/locale.ts | 26 ++ windows/tauri/src/ui/dialog.tsx | 89 +++++++ 32 files changed, 1284 insertions(+), 353 deletions(-) create mode 100644 windows/tauri/src/features/file-system/controllers/project-open-destination.test.ts create mode 100644 windows/tauri/src/features/file-system/controllers/project-open-destination.ts delete mode 100644 windows/tauri/src/features/layout/utils/project-switcher.ts create mode 100644 windows/tauri/src/features/settings/lib/project-open-preference.test.ts create mode 100644 windows/tauri/src/features/settings/lib/project-open-preference.ts create mode 100644 windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx create mode 100644 windows/tauri/src/features/window/utils/project-picker-mode.test.ts create mode 100644 windows/tauri/src/features/window/utils/project-picker-mode.ts create mode 100644 windows/tauri/src/features/window/utils/title-bar-drag.test.ts create mode 100644 windows/tauri/src/features/window/utils/title-bar-drag.ts create mode 100644 windows/tauri/src/features/window/utils/title-project-menu-model.test.ts create mode 100644 windows/tauri/src/features/window/utils/title-project-menu-model.ts diff --git a/rust/lithe-core/src/git/mod.rs b/rust/lithe-core/src/git/mod.rs index 88a9a0d76..a17e28088 100644 --- a/rust/lithe-core/src/git/mod.rs +++ b/rust/lithe-core/src/git/mod.rs @@ -12,6 +12,8 @@ use crate::protocol::{ use serde::{Deserialize, Serialize}; use std::io::Read; use std::io::Write; +#[cfg(target_os = "windows")] +use std::os::windows::process::CommandExt; use std::path::{Path, PathBuf}; use std::process::Command; use std::thread; @@ -526,7 +528,7 @@ fn execute_git_with_options( disable_optional_locks: bool, ) -> Result { crate::protocol::cancellation::check()?; - let mut process = Command::new("git"); + let mut process = git_process(); process.args(arguments).current_dir(root); if disable_optional_locks { process.env("GIT_OPTIONAL_LOCKS", "0"); @@ -599,6 +601,21 @@ fn execute_git_with_options( }) } +fn git_process() -> Command { + let mut process = Command::new("git"); + #[cfg(target_os = "windows")] + process.creation_flags(git_process_creation_flags()); + process +} + +#[cfg(target_os = "windows")] +fn git_process_creation_flags() -> u32 { + // Git runs as an IDE background task; attaching a console can briefly open + // the user's default terminal whenever status or repository data refreshes. + const CREATE_NO_WINDOW: u32 = 0x08000000; + CREATE_NO_WINDOW +} + /// Builds a structured working-tree, staged, untracked, or commit diff. pub fn diff(request: GitDiffRequest) -> Result { if request.pathspecs.is_empty() || request.pathspecs.iter().any(|path| !is_safe_pathspec(path)) @@ -2752,7 +2769,7 @@ fn run_git(directory: &Path, arguments: &[&str]) -> Result Vec { texts .iter() diff --git a/windows/tauri/src-tauri/src/host.rs b/windows/tauri/src-tauri/src/host.rs index bb1a64f56..78256f691 100644 --- a/windows/tauri/src-tauri/src/host.rs +++ b/windows/tauri/src-tauri/src/host.rs @@ -247,7 +247,7 @@ fn copy_path(source: &std::path::Path, destination: &std::path::Path) -> Result< } #[tauri::command] -pub fn create_app_window(app: AppHandle, request: Option) -> Result { +pub async fn create_app_window(app: AppHandle, request: Option) -> Result { let label = format!("workspace-{}", WINDOW_ID.fetch_add(1, Ordering::Relaxed)); let mut query = url::form_urlencoded::Serializer::new(String::new()); if let Some(request) = request.and_then(|value| value.as_object().cloned()) { @@ -298,10 +298,23 @@ pub fn create_app_window(app: AppHandle, request: Option) -> Result(_command: F) + where + F: Fn(tauri::AppHandle, Option) -> Fut, + Fut: Future>, + { + } + + #[test] + fn creates_app_windows_outside_the_synchronous_ipc_handler() { + assert_async_window_command(create_app_window); + } + #[test] fn parses_path_and_web_cli_arguments() { let payloads = cli_payloads([ diff --git a/windows/tauri/src/features/file-system/components/project-name-menu.tsx b/windows/tauri/src/features/file-system/components/project-name-menu.tsx index 72e38f410..7db353394 100644 --- a/windows/tauri/src/features/file-system/components/project-name-menu.tsx +++ b/windows/tauri/src/features/file-system/components/project-name-menu.tsx @@ -27,7 +27,7 @@ export const ProjectNameMenu = () => { id: "open-folder", label: "Open Folder in New Tab", icon: , - onClick: () => handleOpenFolder(), + onClick: () => handleOpenFolder({ destination: "this-window" }), }, { id: "add-folder-to-workspace", diff --git a/windows/tauri/src/features/file-system/controllers/project-open-destination.test.ts b/windows/tauri/src/features/file-system/controllers/project-open-destination.test.ts new file mode 100644 index 000000000..34c19b164 --- /dev/null +++ b/windows/tauri/src/features/file-system/controllers/project-open-destination.test.ts @@ -0,0 +1,206 @@ +import { describe, expect, test } from "bun:test"; +import { defaultSettings } from "@/features/settings/config/default-settings"; +import { + chooseProjectOpenDestination, + executeProjectOpenDecision, + hasOpenProjectWorkspace, + type ProjectOpenDestination, + type ProjectOpenDestinationServices, + type ProjectOpenPromptResult, +} from "./project-open-destination"; + +function createServices(options?: { + askWhereToOpenProjects?: boolean; + openFoldersInNewWindow?: boolean; + promptResult?: ProjectOpenPromptResult | null; + language?: "en-US" | "zh-CN"; +}) { + const promptRequests: Array<{ projectName: string; language: "en-US" | "zh-CN" }> = []; + const updates: Array<[string, boolean]> = []; + + const services: ProjectOpenDestinationServices = { + getSettings: () => ({ + askWhereToOpenProjects: options?.askWhereToOpenProjects ?? true, + openFoldersInNewWindow: options?.openFoldersInNewWindow ?? true, + displayLanguage: options?.language ?? "en-US", + }), + prompt: async (request) => { + promptRequests.push(request); + return options?.promptResult ?? null; + }, + updateSetting: async (key, value) => { + updates.push([key, value]); + }, + }; + + return { services, promptRequests, updates }; +} + +describe("project open destination", () => { + test("asks where to open projects by default", () => { + expect(defaultSettings.askWhereToOpenProjects).toBe(true); + }); + + test("opens directly in this window when no workspace is open", async () => { + const { services, promptRequests } = createServices(); + + const decision = await chooseProjectOpenDestination( + { projectName: "Lithe", hasOpenWorkspace: false }, + services, + ); + + expect(decision).toEqual({ destination: "this-window", rememberAfterOpen: false }); + expect(promptRequests).toEqual([]); + }); + + test.each([ + [true, "new-window"], + [false, "this-window"], + ] as const)("uses the remembered destination when prompting is disabled", async (openNew, expected) => { + const { services, promptRequests } = createServices({ + askWhereToOpenProjects: false, + openFoldersInNewWindow: openNew, + }); + + const decision = await chooseProjectOpenDestination( + { projectName: "Lithe", hasOpenWorkspace: true }, + services, + ); + + expect(decision).toEqual({ destination: expected, rememberAfterOpen: false }); + expect(promptRequests).toEqual([]); + }); + + test("returns an unchecked selection without changing settings", async () => { + const selected: ProjectOpenDestination = "new-window"; + const { services, promptRequests, updates } = createServices({ + language: "zh-CN", + promptResult: { destination: selected, doNotAskAgain: false }, + }); + + const decision = await chooseProjectOpenDestination( + { projectName: "Lithe", hasOpenWorkspace: true }, + services, + ); + + expect(decision).toEqual({ destination: selected, rememberAfterOpen: false }); + expect(promptRequests).toEqual([{ projectName: "Lithe", language: "zh-CN" }]); + expect(updates).toEqual([]); + }); + + test.each(["new-window", "this-window"] as const)( + "defers a checked destination until the project opens", + async (selected) => { + const { services, updates } = createServices({ + promptResult: { destination: selected, doNotAskAgain: true }, + }); + + const decision = await chooseProjectOpenDestination( + { projectName: "Lithe", hasOpenWorkspace: true }, + services, + ); + + expect(decision).toEqual({ destination: selected, rememberAfterOpen: true }); + expect(updates).toEqual([]); + }, + ); + + test("cancels without opening or changing settings", async () => { + const { services, updates } = createServices({ promptResult: null }); + + const decision = await chooseProjectOpenDestination( + { projectName: "Lithe", hasOpenWorkspace: true }, + services, + ); + + expect(decision).toBeNull(); + expect(updates).toEqual([]); + }); + + test("uses an explicit destination without prompting or remembering", async () => { + const { services, promptRequests, updates } = createServices({ + promptResult: { destination: "new-window", doNotAskAgain: true }, + }); + + const decision = await chooseProjectOpenDestination( + { + projectName: "Lithe", + hasOpenWorkspace: true, + explicitDestination: "this-window", + }, + services, + ); + + expect(decision).toEqual({ destination: "this-window", rememberAfterOpen: false }); + expect(promptRequests).toEqual([]); + expect(updates).toEqual([]); + }); + + test("persists a checked destination only after a successful open", async () => { + const { services, updates } = createServices(); + const events: string[] = []; + const recordingServices: ProjectOpenDestinationServices = { + ...services, + updateSetting: async (key, value) => { + events.push(`setting:${key}:${value}`); + updates.push([key, value]); + }, + }; + + const opened = await executeProjectOpenDecision( + { destination: "new-window", rememberAfterOpen: true }, + async (destination) => { + events.push(`open:${destination}`); + return true; + }, + recordingServices, + ); + + expect(opened).toBe(true); + expect(events).toEqual([ + "open:new-window", + "setting:openFoldersInNewWindow:true", + "setting:askWhereToOpenProjects:false", + ]); + }); + + test.each([false, "throw"] as const)( + "does not persist a checked destination when opening fails", + async (failureMode) => { + const { services, updates } = createServices(); + const execute = () => + executeProjectOpenDecision( + { destination: "this-window", rememberAfterOpen: true }, + async () => { + if (failureMode === "throw") throw new Error("open failed"); + return false; + }, + services, + ); + + if (failureMode === "throw") { + await expect(execute()).rejects.toThrow("open failed"); + } else { + expect(await execute()).toBe(false); + } + expect(updates).toEqual([]); + }, + ); + + test("treats an existing project tab as an open workspace during initialization", () => { + expect( + hasOpenProjectWorkspace({ + rootFolderPath: undefined, + fileCount: 0, + projectTabCount: 1, + }), + ).toBe(true); + expect( + hasOpenProjectWorkspace({ + rootFolderPath: undefined, + fileCount: 0, + projectTabCount: 0, + }), + ).toBe(false); + }); +}); diff --git a/windows/tauri/src/features/file-system/controllers/project-open-destination.ts b/windows/tauri/src/features/file-system/controllers/project-open-destination.ts new file mode 100644 index 000000000..31673df57 --- /dev/null +++ b/windows/tauri/src/features/file-system/controllers/project-open-destination.ts @@ -0,0 +1,135 @@ +import type { DisplayLanguage } from "@/i18n/locale"; +import { createTranslator } from "@/i18n/locale"; +import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { showChoiceDialogWithCheckbox } from "@/ui/dialog"; + +export type ProjectOpenDestination = "new-window" | "this-window"; + +export interface ProjectOpenPromptResult { + destination: ProjectOpenDestination; + doNotAskAgain: boolean; +} + +export interface ProjectOpenDecision { + destination: ProjectOpenDestination; + rememberAfterOpen: boolean; +} + +export interface ProjectOpenDestinationRequest { + projectName: string; + hasOpenWorkspace: boolean; + explicitDestination?: ProjectOpenDestination; +} + +export interface ProjectWorkspaceState { + rootFolderPath: string | undefined; + fileCount: number; + projectTabCount: number; +} + +type ProjectOpenSettingKey = "askWhereToOpenProjects" | "openFoldersInNewWindow"; + +export interface ProjectOpenDestinationServices { + getSettings: () => { + askWhereToOpenProjects: boolean; + openFoldersInNewWindow: boolean; + displayLanguage: DisplayLanguage; + }; + prompt: (request: { + projectName: string; + language: DisplayLanguage; + }) => Promise; + updateSetting: (key: ProjectOpenSettingKey, value: boolean) => Promise; +} + +const defaultServices: ProjectOpenDestinationServices = { + getSettings: () => { + const { settings } = useSettingsStore.getState(); + return { + askWhereToOpenProjects: settings.askWhereToOpenProjects, + openFoldersInNewWindow: settings.openFoldersInNewWindow, + displayLanguage: settings.displayLanguage, + }; + }, + prompt: async ({ projectName, language }) => { + const t = createTranslator(language); + const result = await showChoiceDialogWithCheckbox( + t("projectOpen.where", { project: projectName }), + { + title: t("projectOpen.title"), + checkboxLabel: t("projectOpen.doNotAskAgain"), + cancelLabel: t("projectOpen.cancel"), + choices: [ + { value: "new-window", label: t("projectOpen.newWindow") }, + { value: "this-window", label: t("projectOpen.thisWindow"), variant: "accent" }, + ], + }, + ); + + return result + ? { destination: result.value, doNotAskAgain: result.checked } + : null; + }, + updateSetting: async (key, value) => { + await useSettingsStore.getState().actions.updateSetting(key, value); + }, +}; + +export async function chooseProjectOpenDestination( + request: ProjectOpenDestinationRequest, + services: ProjectOpenDestinationServices = defaultServices, +): Promise { + if (request.explicitDestination) { + return { destination: request.explicitDestination, rememberAfterOpen: false }; + } + + if (!request.hasOpenWorkspace) { + return { destination: "this-window", rememberAfterOpen: false }; + } + + const settings = services.getSettings(); + if (!settings.askWhereToOpenProjects) { + return { + destination: settings.openFoldersInNewWindow ? "new-window" : "this-window", + rememberAfterOpen: false, + }; + } + + const result = await services.prompt({ + projectName: request.projectName, + language: settings.displayLanguage, + }); + if (!result) { + return null; + } + + return { + destination: result.destination, + rememberAfterOpen: result.doNotAskAgain, + }; +} + +export async function executeProjectOpenDecision( + decision: ProjectOpenDecision, + open: (destination: ProjectOpenDestination) => Promise, + services: ProjectOpenDestinationServices = defaultServices, +): Promise { + const opened = await open(decision.destination); + if (!opened) { + return false; + } + + if (decision.rememberAfterOpen) { + await services.updateSetting( + "openFoldersInNewWindow", + decision.destination === "new-window", + ); + await services.updateSetting("askWhereToOpenProjects", false); + } + + return true; +} + +export function hasOpenProjectWorkspace(state: ProjectWorkspaceState): boolean { + return !!state.rootFolderPath || state.fileCount > 0 || state.projectTabCount > 0; +} diff --git a/windows/tauri/src/features/file-system/stores/file-system.store.ts b/windows/tauri/src/features/file-system/stores/file-system.store.ts index e69357381..c9161fac4 100644 --- a/windows/tauri/src/features/file-system/stores/file-system.store.ts +++ b/windows/tauri/src/features/file-system/stores/file-system.store.ts @@ -75,6 +75,11 @@ import { readDirectoryContents, readFileContent, } from "../controllers/file-operations"; +import { + chooseProjectOpenDestination, + executeProjectOpenDecision, + hasOpenProjectWorkspace, +} from "../controllers/project-open-destination"; import { addFileToTree, findFileInTree, @@ -741,49 +746,61 @@ const createFileSystemStore = (workspaceId: string): StoreApi => { + handleOpenFolder: async (options): Promise => { const selected = await openFolder(); if (!selected) return false; - const { settings } = useSettingsStore.getState(); - const hasOpenWorkspace = - !!get().rootFolderPath || useWorkspaceTabsStore.getState().projectTabs.length > 0; + const currentState = get(); + const hasOpenWorkspace = hasOpenProjectWorkspace({ + rootFolderPath: currentState.rootFolderPath, + fileCount: currentState.files.length, + projectTabCount: useWorkspaceTabsStore.getState().projectTabs.length, + }); + const decision = await chooseProjectOpenDestination({ + projectName: getFolderName(selected), + hasOpenWorkspace, + explicitDestination: options?.destination, + }); - if (settings.openFoldersInNewWindow && hasOpenWorkspace) { - await createAppWindow({ - path: selected, - isDirectory: true, - }); - return true; - } + if (!decision) return false; - const { openWorkspaceRuntime } = - await import("@/features/workspace/services/workspace-lifecycle"); - return await openWorkspaceRuntime({ - descriptor: { path: selected, name: getFolderName(selected) }, - persistCurrent: () => get().persistActiveProjectSession(), - initialize: (workspaceId): Promise => - getScopedFileSystemStore(workspaceId).getState().initializeLocalWorkspace({ - workspaceId, + return await executeProjectOpenDecision(decision, async (destination) => { + if (destination === "new-window") { + await createAppWindow({ path: selected, - traceLabel: "handleOpenFolder", - treeState: "expand-root", - restoreUiState: false, - }), - resume: async (workspaceId) => { - const targetStore = getScopedFileSystemStore(workspaceId).getState(); - targetStore.resumeWorkspaceSession(); - initializeLocalWorkspaceInBackground( - workspaceId, - selected, - () => targetStore, - "Failed to resume workspace services:", - { - deferWatcher: true, - preserveGitStatus: true, - }, - ); - }, + isDirectory: true, + }); + return true; + } + + const { openWorkspaceRuntime } = + await import("@/features/workspace/services/workspace-lifecycle"); + return await openWorkspaceRuntime({ + descriptor: { path: selected, name: getFolderName(selected) }, + persistCurrent: () => get().persistActiveProjectSession(), + initialize: (workspaceId): Promise => + getScopedFileSystemStore(workspaceId).getState().initializeLocalWorkspace({ + workspaceId, + path: selected, + traceLabel: "handleOpenFolder", + treeState: "expand-root", + restoreUiState: false, + }), + resume: async (workspaceId) => { + const targetStore = getScopedFileSystemStore(workspaceId).getState(); + targetStore.resumeWorkspaceSession(); + initializeLocalWorkspaceInBackground( + workspaceId, + selected, + () => targetStore, + "Failed to resume workspace services:", + { + deferWatcher: true, + preserveGitStatus: true, + }, + ); + }, + }); }); }, diff --git a/windows/tauri/src/features/file-system/stores/recent-folders.store.ts b/windows/tauri/src/features/file-system/stores/recent-folders.store.ts index 25ffa8f54..4bb722c46 100644 --- a/windows/tauri/src/features/file-system/stores/recent-folders.store.ts +++ b/windows/tauri/src/features/file-system/stores/recent-folders.store.ts @@ -1,11 +1,17 @@ import { create } from "zustand"; import { persist } from "zustand/middleware"; import { immer } from "zustand/middleware/immer"; -import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { createAppWindow } from "@/features/window/utils/create-app-window"; +import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; +import { getFolderName } from "@/utils/path-helpers"; import { createSelectors } from "@/utils/zustand-selectors"; import { createSafeJSONStorage } from "@/utils/zustand-storage"; import type { RecentFolder, RecentFolderMetadata } from "../types/recent-folders.types"; +import { + chooseProjectOpenDestination, + executeProjectOpenDecision, + hasOpenProjectWorkspace, +} from "../controllers/project-open-destination"; import { removeMissingRecentFolders, toggleRecentFolderPinned, @@ -84,10 +90,13 @@ const useRecentFoldersStoreBase = create()( try { const { getSymlinkInfo } = await import("../controllers/platform"); const { useFileSystemStore } = await import("../stores/file-system.store"); - const { handleOpenFolderByPath, rootFolderPath } = useFileSystemStore.getState(); - const { settings } = useSettingsStore.getState(); - const hasOpenWorkspace = - !!rootFolderPath || useFileSystemStore.getState().files.length > 0; + const fileSystemState = useFileSystemStore.getState(); + const { handleOpenFolderByPath, rootFolderPath } = fileSystemState; + const hasOpenWorkspace = hasOpenProjectWorkspace({ + rootFolderPath, + fileCount: fileSystemState.files.length, + projectTabCount: useWorkspaceTabsStore.getState().projectTabs.length, + }); try { const pathInfo = await getSymlinkInfo(folderPath); @@ -105,25 +114,34 @@ const useRecentFoldersStoreBase = create()( return; } - if (settings.openFoldersInNewWindow && hasOpenWorkspace) { - await createAppWindow({ - path: folderPath, - isDirectory: true, - }); - get().actions.addToRecents(folderPath, { - missing: false, - openInNewWindow: true, - }); - return; - } + const decision = await chooseProjectOpenDestination({ + projectName: getFolderName(folderPath), + hasOpenWorkspace, + }); + if (!decision) return; + + await executeProjectOpenDecision(decision, async (destination) => { + if (destination === "new-window") { + await createAppWindow({ + path: folderPath, + isDirectory: true, + }); + get().actions.addToRecents(folderPath, { + missing: false, + openInNewWindow: true, + }); + return true; + } - const opened = await handleOpenFolderByPath(folderPath); - if (opened) { - get().actions.addToRecents(folderPath, { - missing: false, - openInNewWindow: false, - }); - } + const opened = await handleOpenFolderByPath(folderPath); + if (opened) { + get().actions.addToRecents(folderPath, { + missing: false, + openInNewWindow: false, + }); + } + return opened; + }); } catch (error) { console.error("Error opening recent folder:", error); } diff --git a/windows/tauri/src/features/file-system/types/interface.types.ts b/windows/tauri/src/features/file-system/types/interface.types.ts index ea6f36ab5..d2fb28bc1 100644 --- a/windows/tauri/src/features/file-system/types/interface.types.ts +++ b/windows/tauri/src/features/file-system/types/interface.types.ts @@ -25,7 +25,9 @@ export interface FsState { export interface FsActions { // Folder operations - handleOpenFolder: () => Promise; + handleOpenFolder: (options?: { + destination?: "new-window" | "this-window"; + }) => Promise; handleOpenFolderByPath: (path: string) => Promise; addFolderToWorkspace: (path?: string) => Promise; removeFolderFromWorkspace: (path: string) => Promise; diff --git a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx index d7b189373..ddd22e40a 100644 --- a/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx +++ b/windows/tauri/src/features/layout/components/sidebar/main-sidebar.tsx @@ -15,10 +15,7 @@ import { FileExplorerPane } from "@/features/file-explorer/components/file-explo import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import GitView from "@/features/git/components/git-view"; import { SidebarPaneSelector } from "@/features/layout/components/sidebar/sidebar-pane-selector"; -import { - SidebarProjectDots, - SidebarProjectSwitcher, -} from "@/features/layout/components/sidebar/sidebar-projects"; +import { SidebarProjectDots } from "@/features/layout/components/sidebar/sidebar-projects"; import { useSidebarPaneController } from "@/features/layout/hooks/use-sidebar-pane-controller"; import { getAdjacentProjectIndex, @@ -26,7 +23,6 @@ import { getProjectSnapDuration, getProjectSwipeBounds, } from "@/features/layout/utils/project-carousel"; -import { shouldShowProjectSwitcher } from "@/features/layout/utils/project-switcher"; import type { SidebarView } from "@/features/layout/utils/sidebar-pane-utils"; import { RunIcon } from "@/features/run/components/run-icon"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; @@ -129,17 +125,17 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa ); }); const configuredActivityRailWidth = useSettingsStore((state) => state.settings.activityRailWidth); + const askWhereToOpenProjects = useSettingsStore( + (state) => state.settings.askWhereToOpenProjects, + ); const openFoldersInNewWindow = useSettingsStore((state) => state.settings.openFoldersInNewWindow); const hiddenSidebarActivityItems = useSettingsStore( (state) => state.settings.hiddenSidebarActivityItems, ); - const showActivityRailProjectSwitcher = useSettingsStore( - (state) => state.settings.showActivityRailProjectSwitcher, - ); const showActivityRailProjectIcons = useSettingsStore( (state) => state.settings.showActivityRailProjectIcons, ); - const projectCarouselEnabled = !openFoldersInNewWindow; + const projectCarouselEnabled = askWhereToOpenProjects || !openFoldersInNewWindow; const updateSetting = useSettingsStore((state) => state.actions.updateSetting); const [activityRailWidth, setActivityRailWidth] = useState(() => clampActivityRailWidth(configuredActivityRailWidth || DEFAULT_ACTIVITY_RAIL_WIDTH), @@ -175,10 +171,6 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa projectCarouselDirection < 0 && carouselTargetProject ? carouselTargetProject : previousProject; const renderedNextProject = projectCarouselDirection > 0 && carouselTargetProject ? carouselTargetProject : nextProject; - const projectSwitcherVisible = shouldShowProjectSwitcher( - showActivityRailProjectSwitcher, - openFoldersInNewWindow, - ); const switchToProject = useFileSystemStore((state) => state.switchToProject); const isSwitchingProject = useFileSystemStore((state) => state.isSwitchingProject); const handleSidebarViewChange = (view: typeof activeSidebarView) => { @@ -265,13 +257,10 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa ); const hasHiddenActivityRailItems = - hiddenSidebarActivityItems.length > 0 || - !showActivityRailProjectSwitcher || - !showActivityRailProjectIcons; + hiddenSidebarActivityItems.length > 0 || !showActivityRailProjectIcons; const showAllActivityRailItems = useCallback(() => { void updateSetting("hiddenSidebarActivityItems", []); - void updateSetting("showActivityRailProjectSwitcher", true); void updateSetting("showActivityRailProjectIcons", true); }, [updateSetting]); @@ -660,15 +649,6 @@ export const SidebarActivityRail = memo(({ expanded = false }: SidebarActivityRa > {isBoundaryPanel ? null : ( <> - {projectSwitcherVisible ? ( - - ) : null} {isLoadingProject ? (
Show in Activity Sidebar - - void updateSetting("showActivityRailProjectSwitcher", checked) - } - > - - Project Switcher - {activityRailVisibilityItems.map((item) => ( - ); - } - - const Icon = isRemote ? RemoteIcon : projectPath ? FolderIcon : PlusIcon; - - return ; -} - -export function SidebarProjectSwitcher({ - expanded, - project, - projects, - isSwitchingProject, - onSelectProject, -}: { - expanded: boolean; - project?: ProjectTab; - projects: ProjectTab[]; - isSwitchingProject: boolean; - onSelectProject: (projectId: string) => void; -}) { - const rootFolderPath = useFileSystemStore((state) => state.rootFolderPath); - const handleOpenFolder = useFileSystemStore((state) => state.handleOpenFolder); - const [detectedIconPath, setDetectedIconPath] = useState(); - const [iconPickerProject, setIconPickerProject] = useState(null); - const displayProject = project; - const projectName = displayProject?.name || getProjectNameFromPath(rootFolderPath); - const projectPath = displayProject?.path || rootFolderPath; - const customIcon = displayProject?.customIcon; - const isRemote = isRemoteProjectPath(projectPath); - const displayIconPath = customIcon ?? detectedIconPath; - const displayProjectKey = displayProject?.id ?? projectPath; - - useEffect(() => { - setDetectedIconPath(undefined); - - if (!displayProject || customIcon || isRemote || !projectPath) return; - - let cancelled = false; - - findBestProjectIcon(projectPath).then((iconFile) => { - if (!cancelled) { - setDetectedIconPath(iconFile?.path); - } - }); - - return () => { - cancelled = true; - }; - }, [displayProject, displayProjectKey, customIcon, isRemote, projectPath]); - - const canChangeIcon = !!displayProject && !!projectPath && !isRemote; - const projectGlyph = ; - - return ( - <> - - { - if (!canChangeIcon || !displayProject) return; - event.stopPropagation(); - setIconPickerProject(displayProject); - }} - onKeyDown={(event) => { - if (!canChangeIcon || !displayProject) return; - if (event.key !== "Enter" && event.key !== " ") return; - event.preventDefault(); - event.stopPropagation(); - setIconPickerProject(displayProject); - }} - > - {projectGlyph} - - ) : ( - projectGlyph - ) - } - iconOnly={!expanded} - trailing={expanded ? : undefined} - aria-label="Switch project" - title={expanded ? undefined : projectName} - > - {projectName} - - } - /> - - {projects.length > 0 ? ( - <> - - {projects.map((availableProject) => ( - - - {availableProject.name} - - ))} - - - - ) : null} - void handleOpenFolder()}> - - Open project… - - - - {iconPickerProject ? ( - setIconPickerProject(null)} - projectId={iconPickerProject.id} - projectPath={iconPickerProject.path} - /> - ) : null} - - ); -} - export function SidebarProjectDots({ projects, activeProjectId, diff --git a/windows/tauri/src/features/layout/utils/project-switcher.test.ts b/windows/tauri/src/features/layout/utils/project-switcher.test.ts index 9ab16c5ab..35269ea67 100644 --- a/windows/tauri/src/features/layout/utils/project-switcher.test.ts +++ b/windows/tauri/src/features/layout/utils/project-switcher.test.ts @@ -1,17 +1,8 @@ import { describe, expect, test } from "bun:test"; -import { shouldShowProjectSwitcher } from "./project-switcher"; +import { defaultSettings } from "@/features/settings/config/default-settings"; -describe("project switcher visibility", () => { - test("hides the activity-bar switcher when projects open in new windows", () => { - expect(shouldShowProjectSwitcher(true, true)).toBe(false); - }); - - test("shows the activity-bar switcher when in-window switching is enabled", () => { - expect(shouldShowProjectSwitcher(true, false)).toBe(true); - }); - - test("respects the user's project switcher visibility setting", () => { - expect(shouldShowProjectSwitcher(false, false)).toBe(false); - expect(shouldShowProjectSwitcher(false, true)).toBe(false); +describe("activity rail project switcher", () => { + test("does not expose the removed project switcher setting", () => { + expect("showActivityRailProjectSwitcher" in defaultSettings).toBe(false); }); }); diff --git a/windows/tauri/src/features/layout/utils/project-switcher.ts b/windows/tauri/src/features/layout/utils/project-switcher.ts deleted file mode 100644 index 71e948b2f..000000000 --- a/windows/tauri/src/features/layout/utils/project-switcher.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function shouldShowProjectSwitcher( - showProjectSwitcher: boolean, - openFoldersInNewWindow: boolean, -) { - return showProjectSwitcher && !openFoldersInNewWindow; -} diff --git a/windows/tauri/src/features/onboarding/components/onboarding-view.tsx b/windows/tauri/src/features/onboarding/components/onboarding-view.tsx index 23d252dea..06afadb2b 100644 --- a/windows/tauri/src/features/onboarding/components/onboarding-view.tsx +++ b/windows/tauri/src/features/onboarding/components/onboarding-view.tsx @@ -98,6 +98,7 @@ export default function OnboardingView({ bufferId, context }: OnboardingViewProp updateSetting("telemetry", telemetry), updateSetting("vimMode", vimMode), updateSetting("openFoldersInNewWindow", openFoldersInNewWindow), + updateSetting("askWhereToOpenProjects", false), updateSetting("keybindingPreset", keybindingPreset), ]); }; diff --git a/windows/tauri/src/features/settings/components/macos-settings-panels.tsx b/windows/tauri/src/features/settings/components/macos-settings-panels.tsx index 19f53d7e6..2ae283fff 100644 --- a/windows/tauri/src/features/settings/components/macos-settings-panels.tsx +++ b/windows/tauri/src/features/settings/components/macos-settings-panels.tsx @@ -2,6 +2,11 @@ import { getVersion } from "@tauri-apps/api/app"; import { useEffect, useState, type ReactNode } from "react"; import { useUpdater } from "@/features/settings/hooks/use-updater"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { + getProjectOpenPreference, + getProjectOpenPreferencePatch, + type ProjectOpenPreference, +} from "@/features/settings/lib/project-open-preference"; import { useTranslation } from "@/i18n/locale-provider"; import { Button } from "@/ui/button"; import Switch from "@/ui/switch"; @@ -57,9 +62,7 @@ function GeneralPanel() { const { t } = useTranslation(); const settings = useSettingsStore((state) => state.settings); const updateSetting = useSettingsStore((state) => state.actions.updateSetting); - const [projectPlacement, setProjectPlacement] = useState( - settings.openFoldersInNewWindow ? "new-window" : "same-window", - ); + const projectPlacement = getProjectOpenPreference(settings); const [gitPolicy, setGitPolicy] = useState("ask"); const [directoryPatterns, setDirectoryPatterns] = useState( settings.hiddenDirectoryPatterns.join("\n"), @@ -141,15 +144,20 @@ function GeneralPanel() { className={`${controlClassName} w-40`} value={projectPlacement} onChange={(event) => { - const value = event.target.value; - setProjectPlacement(value); - if (value !== "ask") { - void updateSetting("openFoldersInNewWindow", value === "new-window"); + const patch = getProjectOpenPreferencePatch( + event.target.value as ProjectOpenPreference, + ); + if (patch.openFoldersInNewWindow !== undefined) { + void updateSetting("openFoldersInNewWindow", patch.openFoldersInNewWindow); } + void updateSetting( + "askWhereToOpenProjects", + patch.askWhereToOpenProjects ?? true, + ); }} > - + diff --git a/windows/tauri/src/features/settings/config/default-settings.ts b/windows/tauri/src/features/settings/config/default-settings.ts index 7c98264f8..9583138cf 100644 --- a/windows/tauri/src/features/settings/config/default-settings.ts +++ b/windows/tauri/src/features/settings/config/default-settings.ts @@ -84,6 +84,7 @@ export const defaultSettings: Settings = { hiddenSidebarActivityItems: [], footerLeadingItemsOrder: [...FOOTER_LEADING_ITEM_IDS], footerTrailingItemsOrder: [...FOOTER_TRAILING_ITEM_IDS], + askWhereToOpenProjects: true, openFoldersInNewWindow: true, // AI aiProviderId: DEFAULT_AI_PROVIDER_ID, @@ -105,7 +106,6 @@ export const defaultSettings: Settings = { // Layout activityRailExpanded: false, activityRailWidth: 180, - showActivityRailProjectSwitcher: true, showActivityRailAgentHistory: false, showActivityRailTerminals: false, showActivityRailWorktrees: false, diff --git a/windows/tauri/src/features/settings/lib/project-open-preference.test.ts b/windows/tauri/src/features/settings/lib/project-open-preference.test.ts new file mode 100644 index 000000000..b1751b9d7 --- /dev/null +++ b/windows/tauri/src/features/settings/lib/project-open-preference.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, test } from "bun:test"; +import { + getProjectOpenPreference, + getProjectOpenPreferencePatch, +} from "./project-open-preference"; + +describe("project open preference", () => { + test("maps persisted settings to all three visible modes", () => { + expect( + getProjectOpenPreference({ + askWhereToOpenProjects: true, + openFoldersInNewWindow: true, + }), + ).toBe("ask"); + expect( + getProjectOpenPreference({ + askWhereToOpenProjects: false, + openFoldersInNewWindow: false, + }), + ).toBe("this-window"); + expect( + getProjectOpenPreference({ + askWhereToOpenProjects: false, + openFoldersInNewWindow: true, + }), + ).toBe("new-window"); + }); + + test("keeps the remembered destination when ask mode is selected", () => { + expect(getProjectOpenPreferencePatch("ask")).toEqual({ + askWhereToOpenProjects: true, + }); + }); + + test.each([ + ["this-window", false], + ["new-window", true], + ] as const)("disables asking for an explicit destination", (preference, openNew) => { + expect(getProjectOpenPreferencePatch(preference)).toEqual({ + askWhereToOpenProjects: false, + openFoldersInNewWindow: openNew, + }); + }); +}); diff --git a/windows/tauri/src/features/settings/lib/project-open-preference.ts b/windows/tauri/src/features/settings/lib/project-open-preference.ts new file mode 100644 index 000000000..8987f16e5 --- /dev/null +++ b/windows/tauri/src/features/settings/lib/project-open-preference.ts @@ -0,0 +1,29 @@ +export type ProjectOpenPreference = "ask" | "this-window" | "new-window"; + +interface ProjectOpenPreferenceSettings { + askWhereToOpenProjects: boolean; + openFoldersInNewWindow: boolean; +} + +export function getProjectOpenPreference( + settings: ProjectOpenPreferenceSettings, +): ProjectOpenPreference { + if (settings.askWhereToOpenProjects) { + return "ask"; + } + + return settings.openFoldersInNewWindow ? "new-window" : "this-window"; +} + +export function getProjectOpenPreferencePatch( + preference: ProjectOpenPreference, +): Partial { + if (preference === "ask") { + return { askWhereToOpenProjects: true }; + } + + return { + askWhereToOpenProjects: false, + openFoldersInNewWindow: preference === "new-window", + }; +} diff --git a/windows/tauri/src/features/settings/lib/settings-sync.ts b/windows/tauri/src/features/settings/lib/settings-sync.ts index cc6c277b8..a72640480 100644 --- a/windows/tauri/src/features/settings/lib/settings-sync.ts +++ b/windows/tauri/src/features/settings/lib/settings-sync.ts @@ -67,6 +67,7 @@ type SyncableSettingsKey = | "hiddenSidebarActivityItems" | "footerLeadingItemsOrder" | "footerTrailingItemsOrder" + | "askWhereToOpenProjects" | "openFoldersInNewWindow" | "aiProviderId" | "aiModelId" @@ -86,7 +87,6 @@ type SyncableSettingsKey = | "ollamaBaseUrl" | "activityRailExpanded" | "activityRailWidth" - | "showActivityRailProjectSwitcher" | "showActivityRailAgentHistory" | "showActivityRailTerminals" | "showActivityRailWorktrees" @@ -193,6 +193,7 @@ const SYNCABLE_SETTINGS_KEYS: SyncableSettingsKey[] = [ "hiddenSidebarActivityItems", "footerLeadingItemsOrder", "footerTrailingItemsOrder", + "askWhereToOpenProjects", "openFoldersInNewWindow", "aiProviderId", "aiModelId", @@ -212,7 +213,6 @@ const SYNCABLE_SETTINGS_KEYS: SyncableSettingsKey[] = [ "ollamaBaseUrl", "activityRailExpanded", "activityRailWidth", - "showActivityRailProjectSwitcher", "showActivityRailAgentHistory", "showActivityRailTerminals", "showActivityRailWorktrees", diff --git a/windows/tauri/src/features/settings/types/settings.types.ts b/windows/tauri/src/features/settings/types/settings.types.ts index 5b13cf8c8..fa8f5a08d 100644 --- a/windows/tauri/src/features/settings/types/settings.types.ts +++ b/windows/tauri/src/features/settings/types/settings.types.ts @@ -102,6 +102,7 @@ export interface Settings { hiddenSidebarActivityItems: string[]; footerLeadingItemsOrder: FooterLeadingItemId[]; footerTrailingItemsOrder: FooterTrailingItemId[]; + askWhereToOpenProjects: boolean; openFoldersInNewWindow: boolean; // AI aiProviderId: string; @@ -123,7 +124,6 @@ export interface Settings { // Layout activityRailExpanded: boolean; activityRailWidth: number; - showActivityRailProjectSwitcher: boolean; showActivityRailAgentHistory: boolean; showActivityRailTerminals: boolean; showActivityRailWorktrees: boolean; diff --git a/windows/tauri/src/features/window/components/new-project-content.tsx b/windows/tauri/src/features/window/components/new-project-content.tsx index 7d3e31836..db8138f3a 100644 --- a/windows/tauri/src/features/window/components/new-project-content.tsx +++ b/windows/tauri/src/features/window/components/new-project-content.tsx @@ -47,6 +47,7 @@ import { useTranslation } from "@/i18n/locale-provider"; interface NewProjectContentProps { onBack: () => void; onClose: () => void; + initialSource?: NewProjectSource; } interface ProjectSourceOption { @@ -64,14 +65,20 @@ const packageManagerOptions = [ { value: "bun", label: "Bun" }, ]; -export default function NewProjectContent({ onBack, onClose }: NewProjectContentProps) { +export default function NewProjectContent({ + onBack, + onClose, + initialSource, +}: NewProjectContentProps) { const { t } = useTranslation(); const nameInputRef = useRef(null); const repositoryInputRef = useRef(null); - const [step, setStep] = useState<"source" | "details" | "creating">("source"); + const [step, setStep] = useState<"source" | "details" | "creating">( + initialSource ? "details" : "source", + ); const [query, setQuery] = useState(""); const [selectedIndex, setSelectedIndex] = useState(0); - const [source, setSource] = useState("empty"); + const [source, setSource] = useState(initialSource ?? "empty"); const [projectName, setProjectName] = useState(""); const [repositoryUrl, setRepositoryUrl] = useState(""); const [locationPath, setLocationPath] = useState(""); diff --git a/windows/tauri/src/features/window/components/project-picker.tsx b/windows/tauri/src/features/window/components/project-picker.tsx index 8cd73791f..b5f5972b3 100644 --- a/windows/tauri/src/features/window/components/project-picker.tsx +++ b/windows/tauri/src/features/window/components/project-picker.tsx @@ -52,11 +52,16 @@ import { Spinner } from "@/ui/spinner"; import { toast } from "sonner"; import { cn } from "@/utils/cn"; import { connectionStore } from "@/features/remote/stores/remote-connection.store"; +import { + getProjectPickerInitialState, + type ProjectPickerMode, +} from "@/features/window/utils/project-picker-mode"; import NewProjectContent from "./new-project-content"; interface ProjectPickerProps { isOpen: boolean; onClose: () => void; + initialMode?: ProjectPickerMode; } const createRemoteConnectionFormData = (): RemoteConnectionFormData => ({ @@ -70,8 +75,9 @@ const createRemoteConnectionFormData = (): RemoteConnectionFormData => ({ saveCredentials: false, }); -const ProjectPicker = memo(({ isOpen, onClose }: ProjectPickerProps) => { - const { t } = useTranslation(); +const ProjectPicker = memo( + ({ isOpen, onClose, initialMode = "picker" }: ProjectPickerProps) => { + const { t } = useTranslation(); const inputRef = useRef(null); const remoteNameInputRef = useRef(null); const [connections, setConnections] = useState([]); @@ -126,11 +132,13 @@ const ProjectPicker = memo(({ isOpen, onClose }: ProjectPickerProps) => { } }, []); + const initialPickerState = getProjectPickerInitialState(initialMode); + useEffect(() => { if (isOpen) { setQuery(""); setSelectedIndex(0); - setCommandStep("picker"); + setCommandStep(initialPickerState.commandStep); setRemoteFormData(createRemoteConnectionFormData()); setShowRemotePassword(false); setRemoteValidationStatus("idle"); @@ -141,7 +149,7 @@ const ProjectPicker = memo(({ isOpen, onClose }: ProjectPickerProps) => { loadWslDistributions(); window.setTimeout(() => inputRef.current?.focus(), 0); } - }, [isOpen, loadConnections, loadWslDistributions]); + }, [initialPickerState.commandStep, isOpen, loadConnections, loadWslDistributions]); useEffect(() => { if (!isOpen) return; @@ -425,16 +433,22 @@ const ProjectPicker = memo(({ isOpen, onClose }: ProjectPickerProps) => { isVisible={isOpen} onClose={onClose} title={ - commandStep === "addRemote" - ? t("welcome.newRemoteConnection") - : commandStep === "newProject" - ? t("welcome.newProject") - : t("welcome.openProject") + commandStep === "addRemote" + ? t("welcome.newRemoteConnection") + : commandStep === "newProject" + ? initialMode === "clone-repository" + ? t("welcome.cloneRepository") + : t("welcome.newProject") + : t("welcome.openProject") } autoFocus={commandStep === "picker"} > {commandStep === "newProject" ? ( - + ) : commandStep === "picker" ? ( @@ -698,7 +712,8 @@ const ProjectPicker = memo(({ isOpen, onClose }: ProjectPickerProps) => { /> ); -}); + }, +); ProjectPicker.displayName = "ProjectPicker"; diff --git a/windows/tauri/src/features/window/components/title-bar/title-bar.tsx b/windows/tauri/src/features/window/components/title-bar/title-bar.tsx index 32eb8022f..971b133b2 100644 --- a/windows/tauri/src/features/window/components/title-bar/title-bar.tsx +++ b/windows/tauri/src/features/window/components/title-bar/title-bar.tsx @@ -12,8 +12,10 @@ import SettingsDialog from "@/features/settings/components/settings-dialog"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; import { useUIState } from "@/features/window/stores/ui-state.store"; import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; +import type { ProjectPickerMode } from "@/features/window/utils/project-picker-mode"; import { useNativeWindowChrome } from "@/features/window/hooks/use-native-window-chrome"; import { createAppWindow } from "@/features/window/utils/create-app-window"; +import { runTitleBarDrag } from "@/features/window/utils/title-bar-drag"; import { Button } from "@/ui/button"; import { ChromeBar, ChromeGroup } from "@/ui/chrome"; import { @@ -36,11 +38,13 @@ import Tooltip from "@/ui/tooltip"; import { cn } from "@/utils/cn"; import { IS_LINUX, IS_MAC, IS_WINDOWS } from "@/utils/platform"; import ProjectPicker from "../project-picker"; +import { TitleProjectMenu } from "./title-project-menu"; import { WindowControls } from "./window-controls"; import WindowMenuBar from "../window-menu-bar"; interface TitleBarProps { showMinimal?: boolean; + onOpenProjectPicker: (mode?: ProjectPickerMode) => void; } function TitleBarTrailingActions({ items }: { items: Array> }) { @@ -57,7 +61,7 @@ function TitleBarTrailingActions({ items }: { items: Array { +const TitleBar = ({ showMinimal = false, onOpenProjectPicker }: TitleBarProps) => { const { t } = useTranslation(); const nativeMenuBar = useSettingsStore((state) => state.settings.nativeMenuBar); const compactMenuBar = useSettingsStore((state) => state.settings.compactMenuBar); @@ -67,7 +71,6 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { const handleOpenFolder = useFileSystemStore((state) => state.handleOpenFolder); const closeProject = useFileSystemStore((state) => state.closeProject); const projectTabs = useWorkspaceTabsStore.use.projectTabs(); - const setIsProjectPickerVisible = useUIState((state) => state.setIsProjectPickerVisible); const setIsGlobalSearchVisible = useUIState((state) => state.setIsGlobalSearchVisible); const branchItem = useFooterGitBranchItem(); @@ -143,17 +146,10 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { }; const handleTitleBarMouseDown = (e: React.MouseEvent) => { - if (e.button !== 0) return; - - const target = e.target as HTMLElement; - const interactiveTarget = target.closest( - "button, a, input, textarea, select, [role='tab'], [contenteditable='true']", - ); - - if (interactiveTarget) return; - - void currentWindow?.startDragging().catch((error: unknown) => { - console.error("Error starting window drag:", error); + runTitleBarDrag(e, () => { + void currentWindow?.startDragging().catch((error: unknown) => { + console.error("Error starting window drag:", error); + }); }); }; @@ -191,7 +187,7 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { New Window - setIsProjectPickerVisible(true)}> + onOpenProjectPicker()}> Add Project @@ -248,20 +244,9 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { const headerTrailingItems: Array> = []; const orderedTrailingItems = orderChromeItems(headerTrailingItems, headerTrailingItemsOrder); - const activeProject = projectTabs.find((project) => project.isActive); - const projectLabel = activeProject?.name ?? t("workbench.openProject"); const macOSAlignedControls = ( - + {branchItem?.content} ); @@ -299,7 +284,7 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { size="icon-xs" tooltip={t("workbench.moreProjectActions")} tooltipSide="bottom" - onClick={() => setIsProjectPickerVisible(true)} + onClick={() => onOpenProjectPicker()} aria-label={t("workbench.moreProjectActions")} > @@ -383,23 +368,38 @@ const TitleBar = ({ showMinimal = false }: TitleBarProps) => { ); }; -const TitleBarWithSettings = (props: TitleBarProps) => { +const TitleBarWithSettings = ({ + showMinimal = false, +}: Omit) => { const isSettingsDialogVisible = useUIState((state) => state.isSettingsDialogVisible); const isProjectPickerVisible = useUIState((state) => state.isProjectPickerVisible); const setIsSettingsDialogVisible = useUIState((state) => state.setIsSettingsDialogVisible); const setIsProjectPickerVisible = useUIState((state) => state.setIsProjectPickerVisible); + const [projectPickerMode, setProjectPickerMode] = useState("picker"); + const openProjectPicker = useCallback( + (mode: ProjectPickerMode = "picker") => { + setProjectPickerMode(mode); + setIsProjectPickerVisible(true); + }, + [setIsProjectPickerVisible], + ); + const closeProjectPicker = useCallback(() => { + setProjectPickerMode("picker"); + setIsProjectPickerVisible(false); + }, [setIsProjectPickerVisible]); return ( <> - + setIsSettingsDialogVisible(false)} /> {createPortal( setIsProjectPickerVisible(false)} + onClose={closeProjectPicker} />, document.body, )} diff --git a/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx b/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx new file mode 100644 index 000000000..1e7cebdd1 --- /dev/null +++ b/windows/tauri/src/features/window/components/title-bar/title-project-menu.tsx @@ -0,0 +1,228 @@ +import { convertFileSrc } from "@/platform/tauri-core"; +import { useMemo, useState, type ReactNode } from "react"; +import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; +import { useRecentFoldersStore } from "@/features/file-system/stores/recent-folders.store"; +import { useTranslation } from "@/i18n/locale-provider"; +import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; +import { + getTitleProjectBadge, + getTitleProjectMenuItemAriaCurrent, + getTitleProjectMenuProjects, +} from "@/features/window/utils/title-project-menu-model"; +import type { ProjectPickerMode } from "@/features/window/utils/project-picker-mode"; +import { + CheckIcon, + ChevronDownIcon, + FolderOpenIcon, + GitBranchIcon, + PlusIcon, +} from "@/ui/icons"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/ui/dropdown"; +import { Button } from "@/ui/button"; +import { cn } from "@/utils/cn"; + +interface TitleProjectMenuProps { + onOpenProjectPicker: (mode: ProjectPickerMode) => void; +} + +function ProjectBadge({ + name, + iconPath, + className, +}: { + name: string; + iconPath?: string; + className?: string; +}) { + if (iconPath) { + return ( + + ); + } + + const badge = getTitleProjectBadge(name); + return ( + + ); +} + +function ProjectMenuRow({ + name, + path, + iconPath, + active = false, + trailing, + onClick, + disabled = false, +}: { + name: string; + path: string; + iconPath?: string; + active?: boolean; + trailing?: ReactNode; + onClick: () => void; + disabled?: boolean; +}) { + return ( + + + + {name} + {path} + + {trailing} + + ); +} + +export function TitleProjectMenu({ onOpenProjectPicker }: TitleProjectMenuProps) { + const { t } = useTranslation(); + const projectTabs = useWorkspaceTabsStore.use.projectTabs(); + const activeProject = projectTabs.find((project) => project.isActive); + const recentFolders = useRecentFoldersStore((state) => state.recentFolders); + const openRecentFolder = useRecentFoldersStore((state) => state.actions.openRecentFolder); + const handleOpenFolder = useFileSystemStore((state) => state.handleOpenFolder); + const switchToProject = useFileSystemStore((state) => state.switchToProject); + const isSwitchingProject = useFileSystemStore((state) => state.isSwitchingProject); + const projectLabel = activeProject?.name ?? t("projectOpen.title"); + const [isOpen, setIsOpen] = useState(false); + const projects = useMemo( + () => getTitleProjectMenuProjects(projectTabs, recentFolders), + [projectTabs, recentFolders], + ); + + const closeAndRun = (action: () => void) => { + setIsOpen(false); + action(); + }; + + return ( + + + } + > + + {projectLabel} + + + + + closeAndRun(() => onOpenProjectPicker("new-project"))} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.newProject")} + + closeAndRun(() => void handleOpenFolder())} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.open")} + + closeAndRun(() => onOpenProjectPicker("clone-repository"))} + className="min-h-8 justify-start gap-2 rounded-md px-2" + > + + {t("titleProject.cloneRepository")} + + + + + + {t("titleProject.openProjects")} + + {projects.openProjects.map((project) => ( + { + if (project.isActive) return; + closeAndRun(() => void switchToProject(project.id)); + }} + trailing={project.isActive ? : null} + /> + ))} + + + + + + {t("titleProject.recentProjects")} + + {projects.recentProjects.length === 0 ? ( +
+ {t("titleProject.noRecentProjects")} +
+ ) : null} + {projects.recentProjects.map((folder) => ( + closeAndRun(() => void openRecentFolder(folder.path))} + /> + ))} +
+
+
+ ); +} diff --git a/windows/tauri/src/features/window/utils/project-picker-mode.test.ts b/windows/tauri/src/features/window/utils/project-picker-mode.test.ts new file mode 100644 index 000000000..b69cbf48b --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-picker-mode.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, test } from "bun:test"; +import { getProjectPickerInitialState } from "./project-picker-mode"; + +describe("project picker launch mode", () => { + test("opens the searchable picker by default", () => { + expect(getProjectPickerInitialState("picker")).toEqual({ + commandStep: "picker", + newProjectSource: undefined, + }); + }); + + test("opens the new project source chooser", () => { + expect(getProjectPickerInitialState("new-project")).toEqual({ + commandStep: "newProject", + newProjectSource: undefined, + }); + }); + + test("opens the clone repository details form directly", () => { + expect(getProjectPickerInitialState("clone-repository")).toEqual({ + commandStep: "newProject", + newProjectSource: "clone", + }); + }); +}); diff --git a/windows/tauri/src/features/window/utils/project-picker-mode.ts b/windows/tauri/src/features/window/utils/project-picker-mode.ts new file mode 100644 index 000000000..5d4799e0d --- /dev/null +++ b/windows/tauri/src/features/window/utils/project-picker-mode.ts @@ -0,0 +1,12 @@ +export type ProjectPickerMode = "picker" | "new-project" | "clone-repository"; + +export function getProjectPickerInitialState(mode: ProjectPickerMode) { + if (mode === "picker") { + return { commandStep: "picker" as const, newProjectSource: undefined }; + } + + return { + commandStep: "newProject" as const, + newProjectSource: mode === "clone-repository" ? ("clone" as const) : undefined, + }; +} diff --git a/windows/tauri/src/features/window/utils/title-bar-drag.test.ts b/windows/tauri/src/features/window/utils/title-bar-drag.test.ts new file mode 100644 index 000000000..da6cdffdf --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-bar-drag.test.ts @@ -0,0 +1,60 @@ +import { expect, test } from "bun:test"; +import { runTitleBarDrag } from "./title-bar-drag"; + +type TitleBarMouseDownEvent = Parameters[0]; + +function createMouseDownEvent({ + contained, + interactive = false, +}: { + contained: boolean; + interactive?: boolean; +}): TitleBarMouseDownEvent { + const target = { + closest: () => (interactive ? {} : null), + }; + + return { + button: 0, + target, + currentTarget: { + contains: () => contained, + }, + } as unknown as TitleBarMouseDownEvent; +} + +test("title bar drag ignores mouse events from portaled content", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag(createMouseDownEvent({ contained: false }), () => { + dragCount += 1; + }); + + expect(didStart).toBe(false); + expect(dragCount).toBe(0); +}); + +test("title bar drag starts for contained non-interactive content", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag(createMouseDownEvent({ contained: true }), () => { + dragCount += 1; + }); + + expect(didStart).toBe(true); + expect(dragCount).toBe(1); +}); + +test("title bar drag ignores contained interactive controls", () => { + let dragCount = 0; + + const didStart = runTitleBarDrag( + createMouseDownEvent({ contained: true, interactive: true }), + () => { + dragCount += 1; + }, + ); + + expect(didStart).toBe(false); + expect(dragCount).toBe(0); +}); diff --git a/windows/tauri/src/features/window/utils/title-bar-drag.ts b/windows/tauri/src/features/window/utils/title-bar-drag.ts new file mode 100644 index 000000000..9c6039d65 --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-bar-drag.ts @@ -0,0 +1,23 @@ +import type { MouseEvent } from "react"; + +type TitleBarMouseDownEvent = Pick< + MouseEvent, + "button" | "currentTarget" | "target" +>; + +const INTERACTIVE_TARGET_SELECTOR = + "button, a, input, textarea, select, [role='tab'], [contenteditable='true']"; + +export function runTitleBarDrag( + event: TitleBarMouseDownEvent, + startDragging: () => void, +): boolean { + if (event.button !== 0) return false; + + const target = event.target as HTMLElement; + if (!event.currentTarget.contains(target)) return false; + if (target.closest(INTERACTIVE_TARGET_SELECTOR)) return false; + + startDragging(); + return true; +} diff --git a/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts b/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts new file mode 100644 index 000000000..3cb1f2b2c --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-project-menu-model.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, test } from "bun:test"; +import type { RecentFolder } from "@/features/file-system/types/recent-folders.types"; +import type { ProjectTab } from "@/features/window/stores/workspace-tabs.store"; +import { + getTitleProjectBadge, + getTitleProjectMenuItemAriaCurrent, + getTitleProjectMenuProjects, +} from "./title-project-menu-model"; + +const project = (id: string, path: string, isActive = false): ProjectTab => ({ + id, + name: id, + path, + isActive, + lastOpened: 1, +}); + +const recent = (name: string, path: string): RecentFolder => ({ + name, + path, + lastOpened: "2026-08-16T00:00:00.000Z", +}); + +describe("title project menu model", () => { + test("keeps open projects and active state while excluding open recent paths", () => { + const openProjects = [ + project("Lithe", "D:\\code\\Lithe", true), + project("Online", "D:\\code\\online"), + ]; + + const result = getTitleProjectMenuProjects(openProjects, [ + recent("Lithe", "d:/code/Lithe/"), + recent("New", "D:\\code\\new"), + ]); + + expect(result.openProjects).toEqual(openProjects); + expect(result.recentProjects.map((entry) => entry.name)).toEqual(["New"]); + }); + + test("caps recent projects without mutating the source list", () => { + const recentProjects = [ + recent("A", "D:\\code\\a"), + recent("B", "D:\\code\\b"), + recent("C", "D:\\code\\c"), + ]; + + const result = getTitleProjectMenuProjects([], recentProjects, 2); + + expect(result.recentProjects).toEqual(recentProjects.slice(0, 2)); + expect(recentProjects).toHaveLength(3); + }); + + test("keeps existing projects open when a recent project opens in this window", () => { + const existingProject = project("A", "D:\\code\\a", true); + const recentProject = recent("B", "D:\\code\\b"); + + const beforeOpen = getTitleProjectMenuProjects([existingProject], [recentProject]); + expect(beforeOpen.recentProjects.map((entry) => entry.name)).toEqual(["B"]); + + const openedProject = project("B", "D:\\code\\b", true); + const afterOpen = getTitleProjectMenuProjects( + [{ ...existingProject, isActive: false }, openedProject], + [recentProject], + ); + + expect(afterOpen.openProjects.map((entry) => entry.name)).toEqual(["A", "B"]); + expect(afterOpen.recentProjects).toEqual([]); + }); + + test("marks only the active project as current for assistive technology", () => { + expect(getTitleProjectMenuItemAriaCurrent(true)).toBe("true"); + expect(getTitleProjectMenuItemAriaCurrent(false)).toBeUndefined(); + }); + + test("creates deterministic project initials and badge tones", () => { + const badge = getTitleProjectBadge("Lithe-IDEA-issue-35-ci"); + + expect(badge.initials).toBe("LI"); + expect(getTitleProjectBadge("Lithe-IDEA-issue-35-ci")).toEqual(badge); + expect(getTitleProjectBadge("文档项目").initials).toBe("文"); + }); +}); diff --git a/windows/tauri/src/features/window/utils/title-project-menu-model.ts b/windows/tauri/src/features/window/utils/title-project-menu-model.ts new file mode 100644 index 000000000..e5cca4c73 --- /dev/null +++ b/windows/tauri/src/features/window/utils/title-project-menu-model.ts @@ -0,0 +1,51 @@ +import type { RecentFolder } from "@/features/file-system/types/recent-folders.types"; +import type { ProjectTab } from "@/features/window/stores/workspace-tabs.store"; +import { MAX_RECENT_PROJECTS } from "@/features/file-system/utils/recent-folders"; +import { areProjectTabPathsEqual } from "./project-tab-path"; + +const PROJECT_BADGE_TONES = [ + "bg-sky-600", + "bg-emerald-600", + "bg-orange-600", + "bg-violet-600", + "bg-rose-600", +] as const; + +export function getTitleProjectBadge(name: string) { + const words = name.split(/[^\p{L}\p{N}]+/u).filter(Boolean); + const initials = + words + .slice(0, 2) + .map((word) => Array.from(word)[0] ?? "") + .join("") + .toUpperCase() || "LI"; + const hash = Array.from(name).reduce( + (value, character) => (value * 31 + (character.codePointAt(0) ?? 0)) & 0x7fffffff, + 0, + ); + + return { + initials, + tone: PROJECT_BADGE_TONES[hash % PROJECT_BADGE_TONES.length] ?? PROJECT_BADGE_TONES[0], + }; +} + +export function getTitleProjectMenuItemAriaCurrent(isActive: boolean): "true" | undefined { + return isActive ? "true" : undefined; +} + +export function getTitleProjectMenuProjects( + projectTabs: ProjectTab[], + recentFolders: RecentFolder[], + maxRecentProjects = MAX_RECENT_PROJECTS, +) { + return { + openProjects: projectTabs, + recentProjects: recentFolders + .filter( + (recent) => + !projectTabs.some((project) => areProjectTabPathsEqual(project.path, recent.path)), + ) + .slice(0, maxRecentProjects), + }; +} diff --git a/windows/tauri/src/i18n/locale.test.ts b/windows/tauri/src/i18n/locale.test.ts index 6110a251c..ca9b9a9bf 100644 --- a/windows/tauri/src/i18n/locale.test.ts +++ b/windows/tauri/src/i18n/locale.test.ts @@ -85,4 +85,41 @@ describe("Windows display language", () => { expect(chineseKeys).toEqual(englishKeys); }); + + test("translates the project open destination prompt", () => { + const english = createTranslator("en-US"); + const chinese = createTranslator("zh-CN"); + + expect(english("projectOpen.title")).toBe("Open Project"); + expect(english("projectOpen.where", { project: "Lithe" })).toBe( + 'Where do you want to open project "Lithe"?', + ); + expect(english("projectOpen.doNotAskAgain")).toBe("Do not ask again"); + expect(english("projectOpen.cancel")).toBe("Cancel"); + expect(english("projectOpen.newWindow")).toBe("New Window"); + expect(english("projectOpen.thisWindow")).toBe("This Window"); + expect(english("titleProject.newProject")).toBe("New Project…"); + expect(english("titleProject.open")).toBe("Open…"); + expect(english("titleProject.cloneRepository")).toBe("Clone Repository…"); + expect(english("titleProject.openProjects")).toBe("Open Projects"); + expect(english("titleProject.recentProjects")).toBe("Recent Projects"); + expect(english("titleProject.noRecentProjects")).toBe("No recent projects"); + expect(english("titleProject.trigger", { project: "Lithe" })).toBe("Project: Lithe"); + + expect(chinese("projectOpen.title")).toBe("打开项目"); + expect(chinese("projectOpen.where", { project: "Lithe" })).toBe( + '你想在哪里打开项目“Lithe”?', + ); + expect(chinese("projectOpen.doNotAskAgain")).toBe("不再询问"); + expect(chinese("projectOpen.cancel")).toBe("取消"); + expect(chinese("projectOpen.newWindow")).toBe("新窗口"); + expect(chinese("projectOpen.thisWindow")).toBe("此窗口"); + expect(chinese("titleProject.newProject")).toBe("新建项目…"); + expect(chinese("titleProject.open")).toBe("打开…"); + expect(chinese("titleProject.cloneRepository")).toBe("克隆仓库…"); + expect(chinese("titleProject.openProjects")).toBe("打开的项目"); + expect(chinese("titleProject.recentProjects")).toBe("最近项目"); + expect(chinese("titleProject.noRecentProjects")).toBe("没有最近项目"); + expect(chinese("titleProject.trigger", { project: "Lithe" })).toBe("项目:Lithe"); + }); }); diff --git a/windows/tauri/src/i18n/locale.ts b/windows/tauri/src/i18n/locale.ts index c43d77057..e7089751e 100644 --- a/windows/tauri/src/i18n/locale.ts +++ b/windows/tauri/src/i18n/locale.ts @@ -103,6 +103,19 @@ const catalogs = { "welcome.removeRecent": "Remove {name} from recent projects", "welcome.noRecentProjects": "No recent projects", "welcome.openFolderHint": "Open a folder to get started.", + "projectOpen.title": "Open Project", + "projectOpen.where": 'Where do you want to open project "{project}"?', + "projectOpen.doNotAskAgain": "Do not ask again", + "projectOpen.cancel": "Cancel", + "projectOpen.newWindow": "New Window", + "projectOpen.thisWindow": "This Window", + "titleProject.newProject": "New Project…", + "titleProject.open": "Open…", + "titleProject.cloneRepository": "Clone Repository…", + "titleProject.openProjects": "Open Projects", + "titleProject.recentProjects": "Recent Projects", + "titleProject.noRecentProjects": "No recent projects", + "titleProject.trigger": "Project: {project}", "settings.displayLanguage": "Display Language", "settings.displayLanguageDescription": "Choose the language used throughout Lithe.", "settings.languageEnglish": "English", @@ -1156,6 +1169,19 @@ const catalogs = { "welcome.removeRecent": "从最近项目中移除 {name}", "welcome.noRecentProjects": "暂无最近项目", "welcome.openFolderHint": "打开文件夹以开始使用。", + "projectOpen.title": "打开项目", + "projectOpen.where": "你想在哪里打开项目“{project}”?", + "projectOpen.doNotAskAgain": "不再询问", + "projectOpen.cancel": "取消", + "projectOpen.newWindow": "新窗口", + "projectOpen.thisWindow": "此窗口", + "titleProject.newProject": "新建项目…", + "titleProject.open": "打开…", + "titleProject.cloneRepository": "克隆仓库…", + "titleProject.openProjects": "打开的项目", + "titleProject.recentProjects": "最近项目", + "titleProject.noRecentProjects": "没有最近项目", + "titleProject.trigger": "项目:{project}", "settings.displayLanguage": "显示语言", "settings.displayLanguageDescription": "选择 Lithe 界面使用的语言。", "settings.languageEnglish": "English", diff --git a/windows/tauri/src/ui/dialog.tsx b/windows/tauri/src/ui/dialog.tsx index 978eb6af1..9007a2cda 100644 --- a/windows/tauri/src/ui/dialog.tsx +++ b/windows/tauri/src/ui/dialog.tsx @@ -14,6 +14,7 @@ import { AlertDialogTitle, } from "@/ui/alert-dialog"; import { Button, type ButtonVariant } from "@/ui/button"; +import { Checkbox } from "@/ui/checkbox"; import { InfoIcon as Info, type IconProps as AppIconProps, @@ -319,6 +320,17 @@ type PrimitiveDialogRequest = choices: PrimitiveChoiceOption[]; resolve: (value: string | null) => void; } + | { + id: number; + type: "choice-with-checkbox"; + title: string; + message: ReactNode; + choices: PrimitiveChoiceOption[]; + checkboxLabel: string; + checkboxDefaultChecked: boolean; + cancelLabel: string; + resolve: (value: ChoiceWithCheckboxResult | null) => void; + } | { id: number; type: "prompt"; @@ -351,6 +363,18 @@ interface PrimitiveChoiceOptions { }>; } +interface PrimitiveChoiceWithCheckboxOptions + extends PrimitiveChoiceOptions { + checkboxLabel: string; + checkboxDefaultChecked?: boolean; + cancelLabel?: string; +} + +export interface ChoiceWithCheckboxResult { + value: T; + checked: boolean; +} + let nextDialogId = 1; let enqueueDialog: ((request: PrimitiveDialogRequest) => void) | null = null; const pendingDialogs: PrimitiveDialogRequest[] = []; @@ -403,6 +427,25 @@ export function showChoiceDialog( }); } +export function showChoiceDialogWithCheckbox( + message: ReactNode, + options: PrimitiveChoiceWithCheckboxOptions, +): Promise | null> { + return new Promise((resolve) => { + enqueue({ + id: nextDialogId++, + type: "choice-with-checkbox", + title: options.title ?? "Choose", + message, + choices: options.choices, + checkboxLabel: options.checkboxLabel, + checkboxDefaultChecked: options.checkboxDefaultChecked ?? false, + cancelLabel: options.cancelLabel ?? "Cancel", + resolve: (value) => resolve(value as ChoiceWithCheckboxResult | null), + }); + }); +} + export function showPromptDialog( message: ReactNode, options: PrimitivePromptOptions = {}, @@ -463,6 +506,9 @@ function PrimitiveDialogHost({ const [promptValue, setPromptValue] = useState( dialog.type === "prompt" ? dialog.defaultValue : "", ); + const [choiceChecked, setChoiceChecked] = useState( + dialog.type === "choice-with-checkbox" ? dialog.checkboxDefaultChecked : false, + ); if (dialog.type === "alert") { return ( @@ -550,6 +596,49 @@ function PrimitiveDialogHost({ ); } + if (dialog.type === "choice-with-checkbox") { + return ( + { + if (!open) onClose(() => dialog.resolve(null)); + }} + > + + + + + + {dialog.title} + {dialog.message} + + + + {dialog.cancelLabel} + {dialog.choices.map((choice) => ( + + onClose(() => dialog.resolve({ value: choice.value, checked: choiceChecked })) + } + > + {choice.label} + + ))} + + + + ); + } + return ( Date: Mon, 17 Aug 2026 17:31:16 +0800 Subject: [PATCH 50/83] ci(macos): retry stalled Swift tests --- .github/workflows/ci-macos.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index e916f7e84..ffdffb8eb 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -102,8 +102,16 @@ jobs: key: swiftpm-${{ runner.os }}-6.2-${{ hashFiles('Package.resolved') }} - name: Run Swift tests + id: swift-tests-primary + continue-on-error: true + timeout-minutes: 8 run: ./scripts/test-macos.sh + - name: Retry Swift tests after a failed attempt + if: steps.swift-tests-primary.outcome == 'failure' + timeout-minutes: 8 + run: ./scripts/test-macos.sh --skip-build + rust-tests: name: Rust Core and database tests needs: changes From 361d2d8ca57eabbfe3ff18948475c6b58640c9ca Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 19:45:22 +0800 Subject: [PATCH 51/83] perf(macOS): scope workbench refresh and add FPS monitor Stop caret, find, diagnostics, and project-tree updates from rebuilding the whole window. Keep file watching and Git refresh, but apply them to the surfaces that actually change. Add a status-bar FPS readout so typing jank is visible. --- Sources/Lithe/LitheApp.swift | 3 + .../AppModel+EditorIntelligence.swift | 24 + .../AppModel/AppModel+FeatureState.swift | 7 +- Sources/Lithe/Models/AppModel/AppModel.swift | 56 +- .../Models/Editor/EditorChromeModel.swift | 54 ++ .../Editor/EditorDiagnosticsStore.swift | 22 + .../Lithe/Models/Editor/EditorDocument.swift | 25 +- .../Workspace/ProjectSessionManager.swift | 11 +- .../Monitoring/FrameRateMonitor.swift | 81 +++ Sources/Lithe/Views/App/RootView.swift | 107 ++-- .../Lithe/Views/Editor/CodeEditorView.swift | 571 +++++++++++++++--- .../Lithe/Views/Editor/EditorAreaView.swift | 38 +- Sources/Lithe/Views/Editor/FindBarView.swift | 13 +- .../Views/Language/JavaProblemsView.swift | 3 +- .../Workbench/WorkbenchStatusViews.swift | 140 +++++ .../Lithe/Views/Workbench/WorkbenchView.swift | 127 +--- .../Views/Workspace/ProjectSidebarView.swift | 144 ++++- .../Application/GitFeatureModel.swift | 5 +- Sources/LitheGitModule/Models/GitModels.swift | 49 +- .../LitheGitModuleTests/GitModuleTests.swift | 1 + Tests/LitheTests/EditorChromeModelTests.swift | 75 +++ .../EditorDiagnosticsStoreTests.swift | 39 ++ Tests/LitheTests/FrameRateMonitorTests.swift | 37 ++ Tests/LitheTests/LitheCoreLogicTests.swift | 61 ++ 24 files changed, 1363 insertions(+), 330 deletions(-) create mode 100644 Sources/Lithe/Models/Editor/EditorChromeModel.swift create mode 100644 Sources/Lithe/Models/Editor/EditorDiagnosticsStore.swift create mode 100644 Sources/Lithe/Services/Monitoring/FrameRateMonitor.swift create mode 100644 Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift create mode 100644 Tests/LitheTests/EditorChromeModelTests.swift create mode 100644 Tests/LitheTests/EditorDiagnosticsStoreTests.swift create mode 100644 Tests/LitheTests/FrameRateMonitorTests.swift diff --git a/Sources/Lithe/LitheApp.swift b/Sources/Lithe/LitheApp.swift index b5d01dfc6..1add71c33 100644 --- a/Sources/Lithe/LitheApp.swift +++ b/Sources/Lithe/LitheApp.swift @@ -60,6 +60,7 @@ struct LitheApp: App { @StateObject private var settings: AppSettings @StateObject private var projectSessions: ProjectSessionManager @StateObject private var memoryUsageMonitor: MemoryUsageMonitor + @StateObject private var frameRateMonitor = FrameRateMonitor() @StateObject private var updateChecker = UpdateChecker() init() { @@ -122,6 +123,7 @@ struct LitheApp: App { .environmentObject(projectSessions) .environmentObject(settings) .environmentObject(memoryUsageMonitor) + .environmentObject(frameRateMonitor) .environmentObject(updateChecker) .environment(\.locale, settings.language.locale) // SwiftUI does not consistently re-resolve every existing @@ -132,6 +134,7 @@ struct LitheApp: App { .preferredColorScheme(settings.themePreference.preferredColorScheme) .task { memoryUsageMonitor.start() + frameRateMonitor.start() } } .defaultSize( diff --git a/Sources/Lithe/Models/AppModel/AppModel+EditorIntelligence.swift b/Sources/Lithe/Models/AppModel/AppModel+EditorIntelligence.swift index 61cf76243..3ec1a2db0 100644 --- a/Sources/Lithe/Models/AppModel/AppModel+EditorIntelligence.swift +++ b/Sources/Lithe/Models/AppModel/AppModel+EditorIntelligence.swift @@ -1,6 +1,30 @@ import Foundation +struct LanguageSessionChromeSignature: Equatable { + var features: [String: LanguageServerFeatureSet] + var states: [String: LanguageServerSessionState] + var infos: [String: LanguageServerInfo] +} + extension AppModel { + func handleLanguageSessionChange() { + refreshEditorDiagnosticsStore() + let signature = LanguageSessionChromeSignature( + features: languageToolingSessionsIfActive?.languageServerFeatures ?? [:], + states: languageToolingSessionsIfActive?.languageServerStates ?? [:], + infos: languageToolingSessionsIfActive?.languageServerInfos ?? [:] + ) + guard signature != languageSessionChromeSignature else { return } + languageSessionChromeSignature = signature + scheduleObjectWillChangeRelay() + } + + func refreshEditorDiagnosticsStore() { + editorDiagnosticsStore.replace( + EditorDiagnostic.fromLanguageServerDiagnostics(languageDiagnostics) + ) + } + func refreshCodeVision(for fileURL: URL) async { let normalizedURL = fileURL.standardizedFileURL guard normalizedURL.pathExtension.lowercased() == "java", diff --git a/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift b/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift index 0f8b0548f..0dd2aa30b 100644 --- a/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift +++ b/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift @@ -49,16 +49,19 @@ extension AppModel { var isPendingProjectClose: Bool { documentFeature.isPendingProjectClose } var gitChanges: [GitChange] { gitFeatureIfActive?.gitChanges ?? [] } + var gitTreeStatusProjection: GitTreeStatusProjection { + gitFeatureIfActive?.gitTreeStatus ?? GitTreeStatusProjection(changes: []) + } func gitChange(for url: URL) -> GitChange? { guard let root = gitRepositoryRoot, let relativePath = workspaceRelativePath(for: url, root: root) else { return nil } - return GitTreeStatusProjection(changes: gitChanges).change(relativePath: relativePath) + return gitFeatureIfActive?.gitTreeStatus.change(relativePath: relativePath) } func gitTreeStatus(for url: URL, isDirectory: Bool) -> GitChangeKind? { guard let root = gitRepositoryRoot, let relativePath = workspaceRelativePath(for: url, root: root) else { return nil } - return GitTreeStatusProjection(changes: gitChanges).kind( + return gitFeatureIfActive?.gitTreeStatus.kind( relativePath: relativePath, isDirectory: isDirectory ) diff --git a/Sources/Lithe/Models/AppModel/AppModel.swift b/Sources/Lithe/Models/AppModel/AppModel.swift index 8ea31ae71..332dff632 100644 --- a/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/Sources/Lithe/Models/AppModel/AppModel.swift @@ -68,14 +68,25 @@ final class AppModel: ObservableObject, Identifiable { /// Replace in Project 面板的搜索选项(Preserve Case、文件掩码等)。 @Published var projectReplaceOptions = ProjectSearchOptions.default @Published var selectedProjectReplacementPaths: Set = [] + let editorChrome = EditorChromeModel() + let editorDiagnosticsStore = EditorDiagnosticsStore() /// 编辑器当前选中的单行文本,供 Find/Replace in Files 预填查询词。 - @Published var editorSelectedText = "" + var editorSelectedText: String { + get { editorChrome.selectedText } + set { editorChrome.update(selectedText: newValue) } + } /// 递增令牌:搜索侧栏观察它来把焦点移回输入框。 @Published var searchSidebarFocusRequest = 0 - @Published var isFindBarVisible = false - @Published var findBarQuery = "" - @Published private(set) var findMatchCount = 0 - @Published private(set) var currentFindMatchIndex = 0 + var isFindBarVisible: Bool { + get { editorChrome.isFindBarVisible } + set { editorChrome.setFindBarVisible(newValue) } + } + var findBarQuery: String { + get { editorChrome.findBarQuery } + set { editorChrome.setFindBarQuery(newValue) } + } + var findMatchCount: Int { editorChrome.findMatchCount } + var currentFindMatchIndex: Int { editorChrome.currentFindMatchIndex } var projectItemEditRequest: ProjectItemEditRequest? { get { workspaceFeature.projectItemEditRequest } set { workspaceFeature.projectItemEditRequest = newValue } @@ -108,7 +119,10 @@ final class AppModel: ObservableObject, Identifiable { @Published var languageNavigationLocations: [LanguageNavigationLocation] = [] @Published var languageNavigationResultKind: LanguageNavigationResultKind = .definitions @Published var isLoadingLanguageNavigation = false - @Published var editorCaret: EditorCaret? + var editorCaret: EditorCaret? { + get { editorChrome.caret } + set { editorChrome.update(caret: newValue) } + } @Published var editorNavigationTarget: EditorNavigationTarget? let navigationHistoryFeature: NavigationHistoryFeatureModel var virtualDocumentProviderIDs: [URL: String] = [:] @@ -244,8 +258,9 @@ final class AppModel: ObservableObject, Identifiable { return combined } var editorDiagnostics: [URL: [EditorDiagnostic]] { - EditorDiagnostic.fromLanguageServerDiagnostics(languageDiagnostics) + editorDiagnosticsStore.diagnosticsByURL } + var languageSessionChromeSignature: LanguageSessionChromeSignature? private var workspaceFeatureObservation: AnyCancellable? private var githubFeatureObservation: AnyCancellable? private var runtimeFeatureObservation: AnyCancellable? @@ -623,6 +638,7 @@ final class AppModel: ObservableObject, Identifiable { self?.scheduleObjectWillChangeRelay() } springFeatureObservation = springFeature.objectWillChange.sink { [weak self] _ in + self?.refreshEditorDiagnosticsStore() self?.scheduleObjectWillChangeRelay() } fileVisibilityRulesObserverID = settings.addFileVisibilityRulesObserver { [weak self] in @@ -959,7 +975,8 @@ final class AppModel: ObservableObject, Identifiable { isRunVisible = false isTestsVisible = false isDebugVisible = false - editorCaret = nil + editorChrome.reset() + editorDiagnosticsStore.reset() editorNavigationTarget = nil navigationHistoryFeature.reset() virtualDocumentProviderIDs.removeAll() @@ -1022,10 +1039,8 @@ final class AppModel: ObservableObject, Identifiable { projectReplaceQuery = "" projectReplaceText = "" selectedProjectReplacementPaths = [] - isFindBarVisible = false - findBarQuery = "" - findMatchCount = 0 - currentFindMatchIndex = 0 + editorChrome.resetFindBar() + editorDiagnosticsStore.reset() projectHistoryFeatureIfActive?.reset() workspaceFeature.reset() gitFeatureIfActive?.reset() @@ -1048,7 +1063,7 @@ final class AppModel: ObservableObject, Identifiable { genericDebugFeatureIfActive?.reset() javaFeature.stop() springFeature.reset() - editorCaret = nil + editorChrome.reset() editorNavigationTarget = nil navigationHistoryFeature.reset() virtualDocumentProviderIDs.removeAll() @@ -1338,7 +1353,7 @@ final class AppModel: ObservableObject, Identifiable { guard let capability = value as? LitheLanguageIntelligenceModule.LanguageIntelligenceCapability else { return } self.cacheModuleCapability(capability, id: .languageIntelligence, moduleID: .languageIntelligence) self.observeModuleFeature(.languageIntelligence, observation: capability.sessions.objectWillChange.sink { [weak self] _ in - self?.scheduleObjectWillChangeRelay() + self?.handleLanguageSessionChange() }) capability.tools.onCandidatesChanged = { [weak self] providerID in guard let self, @@ -1391,14 +1406,11 @@ final class AppModel: ObservableObject, Identifiable { func showFindBar() { guard activeDocument != nil else { return } - isFindBarVisible = true + editorChrome.setFindBarVisible(true) } func hideFindBar() { - isFindBarVisible = false - findBarQuery = "" - findMatchCount = 0 - currentFindMatchIndex = 0 + editorChrome.resetFindBar() NotificationCenter.default.post(name: .litheFindDismiss, object: nil) } @@ -1411,7 +1423,7 @@ final class AppModel: ObservableObject, Identifiable { } func setFindBarQuery(_ query: String) { - findBarQuery = query + editorChrome.setFindBarQuery(query) NotificationCenter.default.post( name: .litheFindQueryChanged, object: nil, @@ -1428,9 +1440,7 @@ final class AppModel: ObservableObject, Identifiable { } func updateFindState(currentIndex: Int, count: Int) { - guard currentFindMatchIndex != currentIndex || findMatchCount != count else { return } - findMatchCount = count - currentFindMatchIndex = currentIndex + editorChrome.updateFindState(currentIndex: currentIndex, count: count) } func commitStagedChanges() async { diff --git a/Sources/Lithe/Models/Editor/EditorChromeModel.swift b/Sources/Lithe/Models/Editor/EditorChromeModel.swift new file mode 100644 index 000000000..9e5e76091 --- /dev/null +++ b/Sources/Lithe/Models/Editor/EditorChromeModel.swift @@ -0,0 +1,54 @@ +import Combine +import Foundation + +/// Caret, selection, and Find in File chrome. These values change on arrow +/// keys and query keystrokes, so they live off `AppModel` and must not +/// republish the workbench tree. +@MainActor +final class EditorChromeModel: ObservableObject { + @Published private(set) var caret: EditorCaret? + @Published private(set) var selectedText = "" + @Published private(set) var isFindBarVisible = false + @Published private(set) var findBarQuery = "" + private(set) var findMatchCount = 0 + private(set) var currentFindMatchIndex = 0 + + func update(caret: EditorCaret?) { + guard self.caret != caret else { return } + self.caret = caret + } + + func update(selectedText: String) { + guard self.selectedText != selectedText else { return } + self.selectedText = selectedText + } + + func setFindBarVisible(_ isVisible: Bool) { + guard isFindBarVisible != isVisible else { return } + isFindBarVisible = isVisible + } + + func setFindBarQuery(_ query: String) { + guard findBarQuery != query else { return } + findBarQuery = query + } + + func updateFindState(currentIndex: Int, count: Int) { + guard currentFindMatchIndex != currentIndex || findMatchCount != count else { return } + objectWillChange.send() + currentFindMatchIndex = currentIndex + findMatchCount = count + } + + func resetFindBar() { + setFindBarVisible(false) + setFindBarQuery("") + updateFindState(currentIndex: 0, count: 0) + } + + func reset() { + update(caret: nil) + update(selectedText: "") + resetFindBar() + } +} diff --git a/Sources/Lithe/Models/Editor/EditorDiagnosticsStore.swift b/Sources/Lithe/Models/Editor/EditorDiagnosticsStore.swift new file mode 100644 index 000000000..54445c6dc --- /dev/null +++ b/Sources/Lithe/Models/Editor/EditorDiagnosticsStore.swift @@ -0,0 +1,22 @@ +import Combine +import Foundation + +/// Latest editor diagnostics for the open workspace. Language-server publish +/// storms stay on this object so the workbench tree does not rebuild. +@MainActor +final class EditorDiagnosticsStore: ObservableObject { + @Published private(set) var diagnosticsByURL: [URL: [EditorDiagnostic]] = [:] + + func replace(_ diagnostics: [URL: [EditorDiagnostic]]) { + guard diagnosticsByURL != diagnostics else { return } + diagnosticsByURL = diagnostics + } + + func reset() { + replace([:]) + } + + func diagnostics(for url: URL) -> [EditorDiagnostic] { + diagnosticsByURL[url.standardizedFileURL] ?? [] + } +} diff --git a/Sources/Lithe/Models/Editor/EditorDocument.swift b/Sources/Lithe/Models/Editor/EditorDocument.swift index 83bf418a5..5be65e60b 100644 --- a/Sources/Lithe/Models/Editor/EditorDocument.swift +++ b/Sources/Lithe/Models/Editor/EditorDocument.swift @@ -17,7 +17,11 @@ final class EditorDocument: ObservableObject, Identifiable, @unchecked Sendable private(set) var url: URL let isReadOnly: Bool let displayPath: String? - @Published var text: String + private var storedText: String + var text: String { + get { storedText } + set { replaceText(newValue, publish: true) } + } @Published private(set) var savedText: String @Published var hasExternalConflict = false private(set) var lastKnownModificationDate: Date? @@ -32,7 +36,7 @@ final class EditorDocument: ObservableObject, Identifiable, @unchecked Sendable self.url = url self.isReadOnly = isReadOnly self.displayPath = displayPath - self.text = text + self.storedText = text self.savedText = text self.lastKnownModificationDate = modificationDate } @@ -41,7 +45,22 @@ final class EditorDocument: ObservableObject, Identifiable, @unchecked Sendable displayPath?.split(separator: "/").last.map(String.init) ?? url.lastPathComponent } - var isDirty: Bool { text != savedText } + var isDirty: Bool { storedText != savedText } + + /// Keep the live NSTextView buffer in sync without waking SwiftUI on every + /// already-dirty keystroke. The first edit still publishes so the tab dirty + /// mark can appear. + func applyLiveEditorText(_ newText: String) { + replaceText(newText, publish: isDirty != (newText != savedText)) + } + + private func replaceText(_ newText: String, publish: Bool) { + guard storedText != newText else { return } + if publish { + objectWillChange.send() + } + storedText = newText + } func save() throws { guard !isReadOnly else { throw DocumentError.readOnly } diff --git a/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift b/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift index 51f39b117..5ca8e659f 100644 --- a/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift +++ b/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift @@ -185,9 +185,14 @@ final class ProjectSessionManager: ObservableObject { self.removeClosedSession(model) } ) - modelObservations[model.id] = model.objectWillChange.sink { [weak self] _ in - self?.objectWillChange.send() - } + // Only workspace open/close should wake the window chrome. Relaying + // every AppModel tick rebuilds every mounted project session. + modelObservations[model.id] = model.$workspaceURL + .removeDuplicates() + .dropFirst() + .sink { [weak self] _ in + self?.objectWillChange.send() + } } private func removeClosedSession(_ model: AppModel) { diff --git a/Sources/Lithe/Services/Monitoring/FrameRateMonitor.swift b/Sources/Lithe/Services/Monitoring/FrameRateMonitor.swift new file mode 100644 index 000000000..6780727de --- /dev/null +++ b/Sources/Lithe/Services/Monitoring/FrameRateMonitor.swift @@ -0,0 +1,81 @@ +import Combine +import CoreVideo +import Foundation +import QuartzCore + +/// Counts vsync callbacks that reach the main thread so a hitch shows up as a +/// lower FPS. The workbench must not observe this object; only the status-bar +/// label should subscribe. +@MainActor +final class FrameRateMonitor: ObservableObject { + private(set) var framesPerSecond = 0 + + var framesPerSecondText: String { + "\(framesPerSecond) FPS" + } + + private var displayLink: CVDisplayLink? + private var framesInWindow: UInt64 = 0 + private var windowStartedAt: CFTimeInterval? + private var lastAcceptedFrameAt: CFTimeInterval? + private var displayedFramesPerSecond = -1 + private let sampleWindow: CFTimeInterval + + init(sampleWindow: TimeInterval = 0.5) { + self.sampleWindow = sampleWindow + } + + deinit { + if let displayLink { + CVDisplayLinkStop(displayLink) + } + } + + func start() { + guard displayLink == nil else { return } + windowStartedAt = CACurrentMediaTime() + lastAcceptedFrameAt = nil + var link: CVDisplayLink? + CVDisplayLinkCreateWithActiveCGDisplays(&link) + guard let link else { return } + displayLink = link + let context = Unmanaged.passUnretained(self).toOpaque() + CVDisplayLinkSetOutputCallback(link, { _, _, _, _, _, context in + guard let context else { return kCVReturnSuccess } + Task { @MainActor in + Unmanaged.fromOpaque(context).takeUnretainedValue() + .recordFrame(at: CACurrentMediaTime()) + } + return kCVReturnSuccess + }, context) + CVDisplayLinkStart(link) + } + + #if DEBUG + func recordFrameForTesting(at mediaTime: TimeInterval) { + recordFrame(at: mediaTime) + } + #endif + + /// Display-link callbacks can pile up behind a hitch. Collapse ticks that + /// land in the same frame so a stall is not hidden by a later burst. + private func recordFrame(at mediaTime: CFTimeInterval) { + if let lastAcceptedFrameAt, mediaTime - lastAcceptedFrameAt < 0.008 { + return + } + lastAcceptedFrameAt = mediaTime + let windowStart = windowStartedAt ?? mediaTime + windowStartedAt = windowStart + framesInWindow += 1 + let elapsed = mediaTime - windowStart + guard elapsed >= sampleWindow else { return } + + let fps = Int((Double(framesInWindow) / elapsed).rounded()) + framesInWindow = 0 + windowStartedAt = mediaTime + guard fps != displayedFramesPerSecond else { return } + displayedFramesPerSecond = fps + framesPerSecond = fps + objectWillChange.send() + } +} diff --git a/Sources/Lithe/Views/App/RootView.swift b/Sources/Lithe/Views/App/RootView.swift index ccde8c358..2b5c5f420 100644 --- a/Sources/Lithe/Views/App/RootView.swift +++ b/Sources/Lithe/Views/App/RootView.swift @@ -6,8 +6,6 @@ enum LitheWindowID { } struct RootView: View { - @Environment(\.openWindow) private var openWindow - @EnvironmentObject private var model: AppModel @EnvironmentObject private var projectSessions: ProjectSessionManager @EnvironmentObject private var updateChecker: UpdateChecker @State private var didStartAutomaticUpdateCheck = false @@ -15,33 +13,18 @@ struct RootView: View { var body: some View { ZStack { ForEach(projectSessions.sessions) { session in - projectContent(for: session) - .opacity(session.id == projectSessions.activeSessionID ? 1 : 0) - .allowsHitTesting(session.id == projectSessions.activeSessionID) - .accessibilityHidden(session.id != projectSessions.activeSessionID) - .zIndex(session.id == projectSessions.activeSessionID ? 1 : 0) + ProjectSessionContent( + session: session, + isActive: session.id == projectSessions.activeSessionID + ) } + ActiveSessionChrome() } .frame( minWidth: windowLayout.minimumContentSize.width, minHeight: windowLayout.minimumContentSize.height ) .background(LitheTheme.window) - .background( - WindowCloseGuard( - projectSessions: projectSessions, - layout: windowLayout, - title: windowTitle - ) - ) - .onReceive(model.$isSettingsPresented) { isPresented in - guard isPresented else { return } - openWindow(id: LitheWindowID.settings) - } - .sheet(isPresented: $model.isCloneRepositoryPresented) { - CloneRepositoryView() - .environmentObject(model) - } .sheet(item: $projectSessions.pendingProjectOpen) { request in OpenProjectLocationDialog(request: request) { placement, doNotAskAgain in projectSessions.resolvePendingOpen( @@ -51,14 +34,6 @@ struct RootView: View { ) } } - .sheet(item: $model.localHistoryRequest) { request in - LocalHistoryView(request: request) - .environmentObject(model) - } - .sheet(item: $model.projectLocalHistoryRequest) { request in - ProjectLocalHistoryView(request: request) - .environmentObject(model) - } .alert(item: $updateChecker.notice) { notice in switch notice.action { case .install: @@ -115,8 +90,27 @@ struct RootView: View { } } - @ViewBuilder - private func projectContent(for session: AppModel) -> some View { + private var windowLayout: LitheWindowLayout { + projectSessions.activeModel.workspaceURL == nil ? .welcome : .workspace + } + + private var updatePromptPresented: Binding { + Binding( + get: { updateChecker.updatePrompt != nil }, + set: { isPresented in + if !isPresented { + updateChecker.dismissUpdatePrompt() + } + } + ) + } +} + +private struct ProjectSessionContent: View { + @ObservedObject var session: AppModel + let isActive: Bool + + var body: some View { Group { if session.workspaceURL == nil { WelcomeView() @@ -126,21 +120,52 @@ struct RootView: View { } } .environmentObject(session) + .environmentObject(session.editorChrome) + .environmentObject(session.editorDiagnosticsStore) + .opacity(isActive ? 1 : 0) + .allowsHitTesting(isActive) + .accessibilityHidden(!isActive) + .zIndex(isActive ? 1 : 0) } +} - private var updatePromptPresented: Binding { - Binding( - get: { updateChecker.updatePrompt != nil }, - set: { isPresented in - if !isPresented { - updateChecker.dismissUpdatePrompt() - } +private struct ActiveSessionChrome: View { + @Environment(\.openWindow) private var openWindow + @EnvironmentObject private var model: AppModel + @EnvironmentObject private var projectSessions: ProjectSessionManager + + var body: some View { + Color.clear + .frame(maxWidth: .infinity, maxHeight: .infinity) + .allowsHitTesting(false) + .accessibilityHidden(true) + .background( + WindowCloseGuard( + projectSessions: projectSessions, + layout: windowLayout, + title: windowTitle + ) + ) + .onReceive(model.$isSettingsPresented) { isPresented in + guard isPresented else { return } + openWindow(id: LitheWindowID.settings) + } + .sheet(isPresented: $model.isCloneRepositoryPresented) { + CloneRepositoryView() + .environmentObject(model) + } + .sheet(item: $model.localHistoryRequest) { request in + LocalHistoryView(request: request) + .environmentObject(model) + } + .sheet(item: $model.projectLocalHistoryRequest) { request in + ProjectLocalHistoryView(request: request) + .environmentObject(model) } - ) } private var windowLayout: LitheWindowLayout { - projectSessions.activeModel.workspaceURL == nil ? .welcome : .workspace + model.workspaceURL == nil ? .welcome : .workspace } private var windowTitle: String? { diff --git a/Sources/Lithe/Views/Editor/CodeEditorView.swift b/Sources/Lithe/Views/Editor/CodeEditorView.swift index 2efdf418e..d27a90aa1 100644 --- a/Sources/Lithe/Views/Editor/CodeEditorView.swift +++ b/Sources/Lithe/Views/Editor/CodeEditorView.swift @@ -58,6 +58,8 @@ fileprivate struct CodeEditorPalette { struct CodeEditorView: NSViewRepresentable { @Environment(\.colorScheme) private var colorScheme @EnvironmentObject private var model: AppModel + @EnvironmentObject private var chrome: EditorChromeModel + @EnvironmentObject private var diagnosticsStore: EditorDiagnosticsStore @EnvironmentObject private var settings: AppSettings @ObservedObject var document: EditorDocument var debugService: JavaDebugFeatureModel? @@ -221,31 +223,32 @@ struct CodeEditorView: NSViewRepresentable { context.coordinator.shouldFocus = shouldFocus context.coordinator.markdownScrollPosition = markdownScrollPosition if let scrollView = container.scrollView { - scrollView.backgroundColor = palette.background + if appearanceChanged { + scrollView.backgroundColor = palette.background + } context.coordinator.attachMarkdownScrollSync(to: scrollView) context.coordinator.attachMarkdownImagePasteMonitor(to: scrollView) } context.coordinator.isDarkAppearance = palette.isDark context.coordinator.colorTheme = settings.colorTheme context.coordinator.requestInitialFocusIfNeeded() - textView.font = LitheTheme.editorFont(size: settings.editorFontSize) - textView.defaultParagraphStyle = LitheTheme.editorParagraphStyle - if let codeTextView = textView as? CodeTextView { - codeTextView.applyAppearance(palette) - codeTextView.indentationWidth = settings.tabWidth - codeTextView.languageServerFeatures = model.languageToolingSessionsIfActive?.features(for: document.url) ?? [] - codeTextView.isLanguageNavigationEnabled = !codeTextView.languageServerFeatures.intersection([ - .definition, .references, .implementation - ]).isEmpty - codeTextView.isLanguageIntelligenceEnabled = !codeTextView.languageServerFeatures.intersection([ - .hover, .completion, .rename, .formatting, .codeActions - ]).isEmpty - } - container.gutter?.applyAppearance(palette) - textView.isEditable = !document.isReadOnly - textView.isSelectable = true + + let languageFeatures = model.languageToolingSessionsIfActive?.features(for: document.url) ?? [] + let fontSize = settings.editorFontSize + let tabWidth = settings.tabWidth + let chromeChanged = context.coordinator.applyEditorChromeIfNeeded( + fontSize: fontSize, + tabWidth: tabWidth, + languageFeatures: languageFeatures, + isReadOnly: document.isReadOnly, + palette: palette, + textView: textView, + gutter: container.gutter + ) + // Keep IME marked text (for example, an active Chinese pinyin // composition) in the NSTextView until the input method commits it. + var textChanged = false if textView.string != document.text, !textView.hasMarkedText(), !context.coordinator.isApplyingEditorChange { @@ -256,17 +259,27 @@ struct CodeEditorView: NSViewRepresentable { context.coordinator.highlight() (textView as? CodeTextView)?.updateEditorDecorations() container.gutter?.needsDisplay = true + textChanged = true } if appearanceChanged { context.coordinator.highlight() (textView as? CodeTextView)?.updateEditorDecorations() + } else if chromeChanged, !textChanged { + (textView as? CodeTextView)?.updateEditorDecorations() } context.coordinator.updateCodeVisionAndBlame() context.coordinator.updateGitLineChanges() context.coordinator.updateDiagnostics() context.coordinator.applyNavigationTargetIfNeeded() if let codeTextView = textView as? CodeTextView { - codeTextView.syncFindState(isVisible: model.isFindBarVisible, query: model.findBarQuery) + let findVisible = chrome.isFindBarVisible + let findQuery = chrome.findBarQuery + if context.coordinator.lastFindVisible != findVisible + || context.coordinator.lastFindQuery != findQuery { + context.coordinator.lastFindVisible = findVisible + context.coordinator.lastFindQuery = findQuery + codeTextView.syncFindState(isVisible: findVisible, query: findQuery) + } } context.coordinator.applySynchronizedMarkdownScrollIfNeeded(to: container.scrollView) } @@ -290,6 +303,26 @@ struct CodeEditorView: NSViewRepresentable { var appliedNavigationTargetID: UUID? var foldRegions: [JavaFoldRegion] = [] var collapsedFoldIDs: Set = [] + var lastFindVisible = false + var lastFindQuery = "" + private var pendingHighlightRange: NSRange? + private var pendingReplacedRange: NSRange? + private var pendingReplacement: String? + private var foldRefreshTask: Task? + private var decorationRefreshTask: Task? + private var documentChangeTask: Task? + private var remainingHighlightTask: Task? + private var appliedFontSize: CGFloat? + private var appliedTabWidth: Int? + private var appliedLanguageFeatures: LanguageServerFeatureSet? + private var appliedReadOnly: Bool? + private var appliedCodeVisionHints: [JavaCodeVisionHint]? + private var appliedInlayHints: [JavaInlayHint]? + private var appliedBlameVisible = false + private var appliedBlameLines: [GitBlameLine] = [] + private var appliedDebugBreakpointLines = Set() + private var appliedGitMarkers: [GitLineChangeMarker]? + private var appliedDiagnostics: [EditorDiagnostic]? private var markdownImagePasteMonitor: Any? private weak var markdownScrollView: NSScrollView? private var markdownScrollObserver: NSObjectProtocol? @@ -311,6 +344,10 @@ struct CodeEditorView: NSViewRepresentable { } deinit { + foldRefreshTask?.cancel() + decorationRefreshTask?.cancel() + documentChangeTask?.cancel() + remainingHighlightTask?.cancel() if let markdownImagePasteMonitor { NSEvent.removeMonitor(markdownImagePasteMonitor) } @@ -468,44 +505,194 @@ struct CodeEditorView: NSViewRepresentable { return true } + func textView(_ textView: NSTextView, shouldChangeTextIn affectedCharRange: NSRange, replacementString: String?) -> Bool { + let inserted = replacementString ?? "" + pendingReplacement = inserted + pendingReplacedRange = affectedCharRange + pendingHighlightRange = NSRange(location: affectedCharRange.location, length: (inserted as NSString).length) + return true + } + func textDidChange(_ notification: Notification) { guard let textView else { return } guard document?.isReadOnly != true else { return } - (textView as? CodeTextView)?.rebuildLineIndex() + let codeTextView = textView as? CodeTextView + if let replacedRange = pendingReplacedRange, let replacement = pendingReplacement { + codeTextView?.applyLineIndexEdit(replacedRange: replacedRange, replacement: replacement) + } else { + codeTextView?.rebuildLineIndex() + } isApplyingEditorChange = true - document?.text = textView.string + document?.applyLiveEditorText(textView.string) if let document { - model?.documentDidChange(document) + scheduleDocumentChange(document) } - highlight() - let codeTextView = textView as? CodeTextView - if let codeTextView, let model, model.isFindBarVisible, !model.findBarQuery.isEmpty { - // 先按新文本重算匹配再统一刷新装饰,避免旧 range 越界 - codeTextView.updateFindMatches(query: model.findBarQuery) + highlight(in: pendingHighlightRange) + let findReplacedRange = pendingReplacedRange + let findInsertedLength = pendingHighlightRange?.length ?? 0 + pendingHighlightRange = nil + pendingReplacedRange = nil + pendingReplacement = nil + if let codeTextView, + let findReplacedRange, + model?.editorChrome.isFindBarVisible == true, + let query = model?.editorChrome.findBarQuery, + !query.isEmpty { + codeTextView.applyFindEdit( + replacedRange: findReplacedRange, + insertedLength: findInsertedLength, + query: query + ) + codeTextView.updateCaretDecorations() + } else if model?.editorChrome.isFindBarVisible == true, + !(model?.editorChrome.findBarQuery.isEmpty ?? true) { + scheduleDecorationRefresh() } else { - codeTextView?.updateEditorDecorations() + codeTextView?.updateCaretDecorations() + scheduleDecorationRefresh() } - refreshFoldRegions(useDefaultImportFold: false) + scheduleFoldRefresh() gutter?.needsDisplay = true isApplyingEditorChange = false updateCaret() } func textViewDidChangeSelection(_ notification: Notification) { - (textView as? CodeTextView)?.updateEditorDecorations() + // Typing already refreshed caret chrome in textDidChange. A second + // full pass here is what dropped the frame rate into the 30s. + guard !isApplyingEditorChange else { return } + (textView as? CodeTextView)?.updateCaretDecorations() textView?.needsDisplay = true gutter?.needsDisplay = true updateCaret() } - func highlight() { + fileprivate func applyEditorChromeIfNeeded( + fontSize: CGFloat, + tabWidth: Int, + languageFeatures: LanguageServerFeatureSet, + isReadOnly: Bool, + palette: CodeEditorPalette, + textView: NSTextView, + gutter: LineNumberGutterView? + ) -> Bool { + var changed = false + if appliedFontSize != fontSize { + textView.font = LitheTheme.editorFont(size: fontSize) + textView.defaultParagraphStyle = LitheTheme.editorParagraphStyle + appliedFontSize = fontSize + changed = true + } + if let codeTextView = textView as? CodeTextView { + codeTextView.applyAppearance(palette) + if appliedTabWidth != tabWidth { + codeTextView.indentationWidth = tabWidth + appliedTabWidth = tabWidth + changed = true + } + if appliedLanguageFeatures != languageFeatures { + codeTextView.languageServerFeatures = languageFeatures + codeTextView.isLanguageNavigationEnabled = !languageFeatures.intersection([ + .definition, .references, .implementation + ]).isEmpty + codeTextView.isLanguageIntelligenceEnabled = !languageFeatures.intersection([ + .hover, .completion, .rename, .formatting, .codeActions + ]).isEmpty + appliedLanguageFeatures = languageFeatures + changed = true + } + } + gutter?.applyAppearance(palette) + if appliedReadOnly != isReadOnly { + textView.isEditable = !isReadOnly + textView.isSelectable = true + appliedReadOnly = isReadOnly + changed = true + } + return changed + } + + func highlight(in editedRange: NSRange? = nil) { guard let textView, let textStorage = textView.textStorage else { return } + if let editedRange { + SyntaxHighlighter.apply( + to: textStorage, + font: textView.font ?? LitheTheme.editorFont(size: 13), + fileExtension: fileExtension, + isDark: isDarkAppearance, + range: editedRange + ) + return + } + let visible = (textView as? CodeTextView)?.visibleCharacterRange() + ?? NSRange(location: 0, length: min(8_192, textStorage.length)) SyntaxHighlighter.apply( to: textStorage, font: textView.font ?? LitheTheme.editorFont(size: 13), fileExtension: fileExtension, - isDark: isDarkAppearance + isDark: isDarkAppearance, + range: visible ) + scheduleRemainingHighlight(skipping: visible) + } + + func scheduleRemainingHighlight(skipping alreadyColored: NSRange) { + remainingHighlightTask?.cancel() + remainingHighlightTask = Task { @MainActor [weak self] in + try? await Task.sleep(for: .milliseconds(16)) + guard !Task.isCancelled, let self, let textView = self.textView, + let storage = textView.textStorage else { return } + let font = textView.font ?? LitheTheme.editorFont(size: 13) + let chunk = 16_384 + var location = 0 + while location < storage.length { + if Task.isCancelled { return } + let length = min(chunk, storage.length - location) + let range = NSRange(location: location, length: length) + if NSIntersectionRange(range, alreadyColored) != range { + SyntaxHighlighter.apply( + to: storage, + font: font, + fileExtension: self.fileExtension, + isDark: self.isDarkAppearance, + range: range + ) + } + location += chunk + await Task.yield() + } + } + } + + func scheduleFoldRefresh() { + foldRefreshTask?.cancel() + foldRefreshTask = Task { @MainActor [weak self] in + try? await Task.sleep(for: .milliseconds(80)) + guard !Task.isCancelled, let self else { return } + self.refreshFoldRegions(useDefaultImportFold: false) + } + } + + func scheduleDecorationRefresh() { + decorationRefreshTask?.cancel() + decorationRefreshTask = Task { @MainActor [weak self] in + try? await Task.sleep(for: .milliseconds(80)) + guard !Task.isCancelled, let self, let textView = self.textView as? CodeTextView else { return } + if let model = self.model, model.isFindBarVisible, !model.findBarQuery.isEmpty { + textView.updateFindMatches(query: model.findBarQuery) + } else { + textView.updateEditorDecorations() + } + } + } + + func scheduleDocumentChange(_ document: EditorDocument) { + documentChangeTask?.cancel() + documentChangeTask = Task { @MainActor [weak self, weak document] in + try? await Task.sleep(for: .milliseconds(80)) + guard !Task.isCancelled, let document else { return } + self?.model?.documentDidChange(document) + } } func refreshFoldRegions(useDefaultImportFold: Bool) { @@ -569,19 +756,26 @@ struct CodeEditorView: NSViewRepresentable { guard let document, let model else { return } let url = document.url.standardizedFileURL let hints = model.settings.showCodeVision ? model.javaCodeVisionHints[url] ?? [] : [] - codeVisionOverlay?.update( - hints: hints, - onUsages: { [weak model] hint in model?.findUsages(for: hint, in: url) }, - onImplementations: { [weak model] hint in - model?.findJavaImplementations( - line: hint.line, - utf16Column: hint.utf16Column, - in: url - ) - }, - onAuthor: { [weak model] in model?.showBlame(for: url) } - ) - inlayHintOverlay?.update(hints: model.javaInlayHints[url] ?? []) + if appliedCodeVisionHints != hints { + appliedCodeVisionHints = hints + codeVisionOverlay?.update( + hints: hints, + onUsages: { [weak model] hint in model?.findUsages(for: hint, in: url) }, + onImplementations: { [weak model] hint in + model?.findJavaImplementations( + line: hint.line, + utf16Column: hint.utf16Column, + in: url + ) + }, + onAuthor: { [weak model] in model?.showBlame(for: url) } + ) + } + let inlayHints = model.javaInlayHints[url] ?? [] + if appliedInlayHints != inlayHints { + appliedInlayHints = inlayHints + inlayHintOverlay?.update(hints: inlayHints) + } let isBlameVisible = model.blameVisibleURL == url let blameLines = model.gitBlameLines[url] ?? [] @@ -592,12 +786,19 @@ struct CodeEditorView: NSViewRepresentable { $0.fileURL.standardizedFileURL == url }.map(\.line) let debugBreakpointLines = Set(javaBreakpointLines + genericBreakpointLines) - container?.gutterWidthConstraint?.constant = isBlameVisible ? 224 : 52 - gutter?.update(blameLines: blameLines, isVisible: isBlameVisible) { [weak model] blame in - Task { await model?.showGitCommit(blame.commitHash) } - } - gutter?.updateDebugBreakpointLines(debugBreakpointLines) { [weak model] line in - model?.toggleDebugBreakpoint(fileURL: url, line: line) + if appliedBlameVisible != isBlameVisible + || appliedBlameLines != blameLines + || appliedDebugBreakpointLines != debugBreakpointLines { + appliedBlameVisible = isBlameVisible + appliedBlameLines = blameLines + appliedDebugBreakpointLines = debugBreakpointLines + container?.gutterWidthConstraint?.constant = isBlameVisible ? 224 : 52 + gutter?.update(blameLines: blameLines, isVisible: isBlameVisible) { [weak model] blame in + Task { await model?.showGitCommit(blame.commitHash) } + } + gutter?.updateDebugBreakpointLines(debugBreakpointLines) { [weak model] line in + model?.toggleDebugBreakpoint(fileURL: url, line: line) + } } } @@ -606,6 +807,8 @@ struct CodeEditorView: NSViewRepresentable { let url = document.url.standardizedFileURL if let markers = model.gitLineChangeMarkers(for: url) { isLoadingGitLineChanges = false + guard appliedGitMarkers != markers else { return } + appliedGitMarkers = markers let change = model.gitChange(for: url) gutter.updateGitLineChanges( markers, @@ -627,7 +830,10 @@ struct CodeEditorView: NSViewRepresentable { return } - gutter.updateGitLineChanges([], onShow: { _ in }) + if appliedGitMarkers != [] { + appliedGitMarkers = [] + gutter.updateGitLineChanges([], onShow: { _ in }) + } guard !isLoadingGitLineChanges else { return } isLoadingGitLineChanges = true Task { @MainActor [weak self, weak model] in @@ -637,11 +843,12 @@ struct CodeEditorView: NSViewRepresentable { } func updateDiagnostics() { - guard let document, let model, + guard let document, let textView = textView as? CodeTextView else { return } - textView.updateDiagnostics( - model.editorDiagnostics[document.url.standardizedFileURL] ?? [] - ) + let diagnostics = model?.editorDiagnosticsStore.diagnostics(for: document.url) ?? [] + guard appliedDiagnostics != diagnostics else { return } + appliedDiagnostics = diagnostics + textView.updateDiagnostics(diagnostics) } func applyNavigationTargetIfNeeded() { @@ -671,12 +878,21 @@ struct CodeEditorView: NSViewRepresentable { let text = textView.string as NSString updateSelectedText(in: text, range: textView.selectedRange()) let location = min(textView.selectedRange().location, text.length) - let prefix = text.substring(to: location) as NSString - var line = 0 - var lineStart = 0 - for index in 0.. Bool { + let replacedEnd = NSMaxRange(replacedRange) + if starts.contains(where: { $0 > replacedRange.location && $0 <= replacedEnd }) { + return false + } + let delta = insertedLength - replacedRange.length + guard delta != 0 else { return true } + textLength = max(0, textLength + delta) + for index in starts.indices where starts[index] > replacedRange.location { + starts[index] += delta + } + return true + } + var lineCount: Int { guard textLength > 0, starts.last == textLength else { return starts.count } return max(1, starts.count - 1) @@ -780,6 +1012,7 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { private var findMatchRanges: [NSRange] = [] private var currentFindMatchIndex = 0 private var lastReportedFindState: (index: Int, count: Int)? + private var lastCaretBackgroundRanges: [NSRange] = [] private var completionItemsByID: [String: LanguageServerCompletionItem] = [:] private var languageHoverPopover: NSPopover? @@ -856,6 +1089,88 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { lineIndex = TextLineIndex(source: string as NSString) } + func applyLineIndexEdit(replacedRange: NSRange, replacement: String) { + if replacement.contains("\n") || replacement.contains("\r") + || !lineIndex.applySingleLineEdit(replacedRange: replacedRange, insertedLength: (replacement as NSString).length) { + rebuildLineIndex() + } + } + + func visibleCharacterRange() -> NSRange? { + guard let layoutManager, + let textContainer, + let scrollView = enclosingScrollView else { return nil } + let visibleRect = scrollView.documentVisibleRect + let textContainerVisibleRect = NSRect( + x: visibleRect.minX - textContainerOrigin.x, + y: visibleRect.minY - textContainerOrigin.y, + width: visibleRect.width, + height: visibleRect.height + ) + let glyphRange = layoutManager.glyphRange( + forBoundingRect: textContainerVisibleRect, + in: textContainer + ) + guard glyphRange.length > 0 else { return nil } + return layoutManager.characterRange(forGlyphRange: glyphRange, actualGlyphRange: nil) + } + + #if DEBUG + var currentFindMatchCountForTesting: Int { findMatchRanges.count } + var findMatchLocationsForTesting: [Int] { findMatchRanges.map(\.location) } + #endif + + func applyFindEdit(replacedRange: NSRange, insertedLength: Int, query: String) { + guard !query.isEmpty else { + clearFindHighlights() + return + } + let source = string as NSString + let delta = insertedLength - replacedRange.length + let replacedEnd = NSMaxRange(replacedRange) + findMatchRanges = findMatchRanges.compactMap { range in + if NSMaxRange(range) <= replacedRange.location { return range } + if range.location >= replacedEnd { + return NSRange(location: range.location + delta, length: range.length) + } + return nil + } + let safeLocation = min(replacedRange.location, max(0, source.length - 1)) + let lineRange = source.length == 0 + ? NSRange(location: 0, length: 0) + : source.lineRange(for: NSRange(location: safeLocation, length: 0)) + let searchEnd = min(source.length, max(NSMaxRange(lineRange), replacedRange.location + insertedLength)) + let searchRange = NSRange( + location: lineRange.location, + length: max(0, searchEnd - lineRange.location) + ) + findMatchRanges.removeAll { range in + NSIntersectionRange(range, searchRange).length > 0 + || (range.location >= searchRange.location && range.location < NSMaxRange(searchRange)) + } + if searchRange.length > 0, !query.isEmpty { + var cursor = searchRange + while cursor.length > 0 { + let found = source.range( + of: query, + options: [.caseInsensitive, .diacriticInsensitive], + range: cursor + ) + if found.location == NSNotFound { break } + findMatchRanges.append(found) + let nextLocation = NSMaxRange(found) + cursor = NSRange(location: nextLocation, length: NSMaxRange(searchRange) - nextLocation) + } + findMatchRanges.sort { $0.location < $1.location } + } + currentFindMatchIndex = min(currentFindMatchIndex, max(0, findMatchRanges.count - 1)) + applyFindHighlights() + reportFindState( + index: findMatchRanges.isEmpty ? -1 : currentFindMatchIndex, + count: findMatchRanges.count + ) + } + func characterOffset(forLine targetLine: Int, in _: NSString) -> Int { lineIndex.characterOffset(forLine: targetLine) } @@ -873,6 +1188,53 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { updateEditorDecorations() } + func updateCaretDecorations() { + guard let layoutManager else { return } + let fullLength = (string as NSString).length + for range in lastCaretBackgroundRanges where NSMaxRange(range) <= fullLength { + layoutManager.removeTemporaryAttribute(.backgroundColor, forCharacterRange: range) + } + lastCaretBackgroundRanges = [] + guard fullLength > 0 else { return } + + let source = string as NSString + let caret = min(selectedRange().location, source.length) + let lineRange = source.lineRange(for: NSRange(location: caret, length: 0)) + layoutManager.addTemporaryAttribute( + .backgroundColor, + value: currentLineColor, + forCharacterRange: lineRange + ) + lastCaretBackgroundRanges.append(lineRange) + + for range in matchingBracketRanges(in: source, caret: caret) { + layoutManager.addTemporaryAttribute(.backgroundColor, value: bracketColor, forCharacterRange: range) + lastCaretBackgroundRanges.append(range) + } + + if isLanguageNavigationEnabled, + let symbol = identifier(at: caret, in: source), + let scope = enclosingCodeScope(at: caret, in: source) { + let escaped = NSRegularExpression.escapedPattern(for: symbol.text) + if let expression = try? NSRegularExpression(pattern: "\\b\(escaped)\\b") { + expression.enumerateMatches(in: string, range: scope) { [weak layoutManager] match, _, _ in + guard let match else { return } + layoutManager?.addTemporaryAttribute( + .backgroundColor, + value: self.symbolColor, + forCharacterRange: match.range + ) + self.lastCaretBackgroundRanges.append(match.range) + } + } + } + + if !findMatchRanges.isEmpty { + applyFindHighlights() + } + applyLinkHighlight() + } + func updateEditorDecorations() { guard let layoutManager else { return } let fullRange = NSRange(location: 0, length: string.utf16.count) @@ -887,6 +1249,7 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { return } + lastCaretBackgroundRanges = [] let source = string as NSString let caret = min(selectedRange().location, source.length) let lineRange = source.lineRange(for: NSRange(location: caret, length: 0)) @@ -895,9 +1258,11 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { value: currentLineColor, forCharacterRange: lineRange ) + lastCaretBackgroundRanges.append(lineRange) for range in matchingBracketRanges(in: source, caret: caret) { layoutManager.addTemporaryAttribute(.backgroundColor, value: bracketColor, forCharacterRange: range) + lastCaretBackgroundRanges.append(range) } if isLanguageNavigationEnabled, @@ -912,6 +1277,7 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { value: self.symbolColor, forCharacterRange: match.range ) + self.lastCaretBackgroundRanges.append(match.range) } } } @@ -2806,9 +3172,37 @@ private final class ClosureButton: NSButton { @MainActor private enum SyntaxHighlighter { - static func apply(to storage: NSTextStorage, font: NSFont, fileExtension: String, isDark: Bool) { + private static let keywordExpression = try! NSRegularExpression( + pattern: #"\b(class|struct|enum|protocol|extension|func|let|var|if|else|guard|switch|case|for|while|return|throw|throws|try|catch|async|await|public|private|internal|protected|static|final|new|import|package|interface|implements|extends|void|boolean|int|long|const|function|def|in|from|as|true|false|null|nil|self|this)\b"# + ) + private static let annotationExpression = try! NSRegularExpression( + pattern: #"@[A-Za-z_][A-Za-z0-9_]*"# + ) + private static let typeExpression = try! NSRegularExpression( + pattern: #"\b[A-Z][A-Za-z0-9_]*\b"# + ) + private static let numberExpression = try! NSRegularExpression( + pattern: #"\b\d+(?:\.\d+)?\b"# + ) + private static let stringExpression = try! NSRegularExpression( + pattern: #"\"(?:\\.|[^\"\\])*\"|'(?:\\.|[^'\\])*'"# + ) + private static let commentExpression = try! NSRegularExpression( + pattern: #"//.*$|#.*$|/\*[\s\S]*?\*/"#, + options: [.anchorsMatchLines] + ) + + static func apply( + to storage: NSTextStorage, + font: NSFont, + fileExtension: String, + isDark: Bool, + range: NSRange? = nil + ) { let fullRange = NSRange(location: 0, length: storage.length) guard fullRange.length > 0 else { return } + let target = expandedRange(range, in: storage.string as NSString, limit: fullRange) + guard target.length > 0 else { return } let palette = CodeEditorPalette(isDark: isDark, theme: LitheTheme.activeTheme) storage.beginEditing() @@ -2817,28 +3211,51 @@ private enum SyntaxHighlighter { .paragraphStyle: LitheTheme.editorParagraphStyle, .ligature: 0, .foregroundColor: palette.text - ], range: fullRange) - - apply(pattern: #"\b(class|struct|enum|protocol|extension|func|let|var|if|else|guard|switch|case|for|while|return|throw|throws|try|catch|async|await|public|private|internal|protected|static|final|new|import|package|interface|implements|extends|void|boolean|int|long|const|function|def|in|from|as|true|false|null|nil|self|this)\b"#, color: palette.keyword, storage: storage) - apply(pattern: #"@[A-Za-z_][A-Za-z0-9_]*"#, color: palette.annotation, storage: storage) - apply(pattern: #"\b[A-Z][A-Za-z0-9_]*\b"#, color: palette.type, storage: storage) - apply(pattern: #"\b\d+(?:\.\d+)?\b"#, color: palette.number, storage: storage) - apply(pattern: #"\"(?:\\.|[^\"\\])*\"|'(?:\\.|[^'\\])*'"#, color: palette.string, storage: storage) - apply(pattern: #"//.*$|#.*$|/\*[\s\S]*?\*/"#, options: [.anchorsMatchLines], color: palette.comment, storage: storage) + ], range: target) + + apply(keywordExpression, color: palette.keyword, storage: storage, range: target) + apply(annotationExpression, color: palette.annotation, storage: storage, range: target) + apply(typeExpression, color: palette.type, storage: storage, range: target) + apply(numberExpression, color: palette.number, storage: storage, range: target) + apply(stringExpression, color: palette.string, storage: storage, range: target) + apply(commentExpression, color: palette.comment, storage: storage, range: target) storage.endEditing() } private static func apply( - pattern: String, - options: NSRegularExpression.Options = [], + _ expression: NSRegularExpression, color: NSColor, - storage: NSTextStorage + storage: NSTextStorage, + range: NSRange ) { - guard let expression = try? NSRegularExpression(pattern: pattern, options: options) else { return } - let range = NSRange(location: 0, length: storage.length) expression.enumerateMatches(in: storage.string, range: range) { match, _, _ in guard let match else { return } storage.addAttribute(.foregroundColor, value: color, range: match.range) } } + + /// Re-color the edited lines plus a small pad so a token that crosses the + /// caret, or a nearby block comment, is not left half-styled. + private static func expandedRange(_ range: NSRange?, in source: NSString, limit: NSRange) -> NSRange { + guard let range else { return limit } + let safe = NSIntersectionRange(range, limit) + guard source.length > 0 else { return safe } + let startLine = source.lineRange(for: NSRange(location: safe.location, length: 0)) + let endIndex = max(safe.location, NSMaxRange(safe) > 0 ? NSMaxRange(safe) - 1 : 0) + let endLine = source.lineRange(for: NSRange(location: min(endIndex, source.length - 1), length: 0)) + var combined = NSUnionRange(startLine, endLine) + if combined.location > 0 { + combined = NSUnionRange( + source.lineRange(for: NSRange(location: combined.location - 1, length: 0)), + combined + ) + } + if NSMaxRange(combined) < source.length { + combined = NSUnionRange( + combined, + source.lineRange(for: NSRange(location: NSMaxRange(combined), length: 0)) + ) + } + return NSIntersectionRange(combined, limit) + } } diff --git a/Sources/Lithe/Views/Editor/EditorAreaView.swift b/Sources/Lithe/Views/Editor/EditorAreaView.swift index 058f86db1..f830ded8b 100644 --- a/Sources/Lithe/Views/Editor/EditorAreaView.swift +++ b/Sources/Lithe/Views/Editor/EditorAreaView.swift @@ -255,11 +255,7 @@ struct EditorAreaView: View { size: 13 ) editorTabTitle(document) - if document.isDirty { - Circle() - .fill(LitheTheme.primaryText) - .frame(width: 6, height: 6) - } + EditorTabDirtyIndicator(document: document) } .foregroundStyle(model.activeDocumentID == document.id ? LitheTheme.primaryText : LitheTheme.secondaryText) .padding(.leading, 11) @@ -641,12 +637,7 @@ struct EditorAreaView: View { ) -> some View { codeEditor(document, markdownScrollPosition: markdownScrollPosition) .overlay(alignment: .top) { - if model.isFindBarVisible { - FindBarView() - .padding(.top, 10) - .padding(.horizontal, 12) - .transition(.move(edge: .top).combined(with: .opacity)) - } + FindBarOverlay() } } @@ -751,3 +742,28 @@ private struct EditorTabDropDelegate: DropDelegate { ) } } + +private struct EditorTabDirtyIndicator: View { + @ObservedObject var document: EditorDocument + + var body: some View { + if document.isDirty { + Circle() + .fill(LitheTheme.primaryText) + .frame(width: 6, height: 6) + } + } +} + +private struct FindBarOverlay: View { + @EnvironmentObject private var chrome: EditorChromeModel + + var body: some View { + if chrome.isFindBarVisible { + FindBarView() + .padding(.top, 10) + .padding(.horizontal, 12) + .transition(.move(edge: .top).combined(with: .opacity)) + } + } +} diff --git a/Sources/Lithe/Views/Editor/FindBarView.swift b/Sources/Lithe/Views/Editor/FindBarView.swift index 4302e4333..8f03a6ab6 100644 --- a/Sources/Lithe/Views/Editor/FindBarView.swift +++ b/Sources/Lithe/Views/Editor/FindBarView.swift @@ -3,11 +3,12 @@ import SwiftUI /// 编辑器内的单文件查找栏:实时高亮、上/下一个、Esc 关闭。 struct FindBarView: View { @EnvironmentObject private var model: AppModel + @EnvironmentObject private var chrome: EditorChromeModel @FocusState private var focused: Bool private var queryBinding: Binding { Binding( - get: { model.findBarQuery }, + get: { chrome.findBarQuery }, set: { model.setFindBarQuery($0) } ) } @@ -43,7 +44,7 @@ struct FindBarView: View { } .litheIconButton() .foregroundStyle(LitheTheme.secondaryText) - .disabled(model.findMatchCount == 0) + .disabled(chrome.findMatchCount == 0) .help("Previous match (Shift+Return)") Button { @@ -53,7 +54,7 @@ struct FindBarView: View { } .litheIconButton() .foregroundStyle(LitheTheme.secondaryText) - .disabled(model.findMatchCount == 0) + .disabled(chrome.findMatchCount == 0) .help("Next match (Return)") Button { @@ -76,8 +77,8 @@ struct FindBarView: View { } private var matchLabel: String { - guard model.findMatchCount > 0 else { return "" } - let current = max(0, model.currentFindMatchIndex + 1) - return "\(current)/\(model.findMatchCount)" + guard chrome.findMatchCount > 0 else { return "" } + let current = max(0, chrome.currentFindMatchIndex + 1) + return "\(current)/\(chrome.findMatchCount)" } } diff --git a/Sources/Lithe/Views/Language/JavaProblemsView.swift b/Sources/Lithe/Views/Language/JavaProblemsView.swift index 6a6652c25..11e9d4b7b 100644 --- a/Sources/Lithe/Views/Language/JavaProblemsView.swift +++ b/Sources/Lithe/Views/Language/JavaProblemsView.swift @@ -2,6 +2,7 @@ import SwiftUI struct ProblemsView: View { @EnvironmentObject private var model: AppModel + @EnvironmentObject private var diagnosticsStore: EditorDiagnosticsStore @State private var severityFilter = Set(DiagnosticSeverity.allCases) var body: some View { @@ -80,7 +81,7 @@ struct ProblemsView: View { } private var allDiagnostics: [EditorDiagnostic] { - model.editorDiagnostics.values + diagnosticsStore.diagnosticsByURL.values .flatMap { $0 } .sorted { let left = model.relativePath(for: $0.fileURL) diff --git a/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift b/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift new file mode 100644 index 000000000..1dc9a7662 --- /dev/null +++ b/Sources/Lithe/Views/Workbench/WorkbenchStatusViews.swift @@ -0,0 +1,140 @@ +import SwiftUI + +struct EditorCaretPositionLabel: View { + @ObservedObject var chrome: EditorChromeModel + + var body: some View { + Text(chrome.caret.map { "\($0.line + 1):\($0.utf16Column + 1)" } ?? "1:1") + .monospacedDigit() + } +} + +struct MemoryUsageStatusView: View { + @EnvironmentObject private var memoryUsageMonitor: MemoryUsageMonitor + @State private var isMemoryUsagePopoverPresented = false + + var body: some View { + Button { + isMemoryUsagePopoverPresented.toggle() + } label: { + Label { + HStack(spacing: 4) { + Text("Total \(memoryUsageMonitor.totalText)") + Text("·") + Text("Lithe \(memoryUsageMonitor.litheText)") + } + .monospacedDigit() + } icon: { + Image(systemName: "memorychip") + } + } + .buttonStyle(.plain) + .lithePointer() + .help( + Text( + "Total managed memory: \(memoryUsageMonitor.totalText)\n" + + "Lithe: \(memoryUsageMonitor.litheText) · LSP: \(memoryUsageMonitor.lspText) · Services: \(memoryUsageMonitor.serviceText)" + ) + ) + .popover(isPresented: $isMemoryUsagePopoverPresented, arrowEdge: .top) { + memoryUsagePopover + } + .onChange(of: isMemoryUsagePopoverPresented) { isPresented in + memoryUsageMonitor.setDetailedUsageVisible(isPresented) + } + } + + private var memoryUsagePopover: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 8) { + Image(systemName: "memorychip") + .foregroundStyle(LitheTheme.accent) + Text("Managed Memory") + .font(.system(size: 12.5, weight: .semibold)) + .foregroundStyle(LitheTheme.primaryText) + Spacer(minLength: 8) + Button { + isMemoryUsagePopoverPresented = false + } label: { + Image(systemName: "xmark") + .font(.system(size: 10, weight: .semibold)) + } + .litheIconButton() + .help("Close") + } + .padding(.horizontal, 12) + .padding(.vertical, 10) + + Rectangle() + .fill(LitheTheme.divider) + .frame(height: 1) + + VStack(spacing: 0) { + memoryMetric("Lithe", value: memoryUsageMonitor.litheText) + memoryMetric( + "Language servers", + value: memoryUsageMonitor.languageServerProcessCount == 0 + ? String(localized: "Not running") + : memoryUsageMonitor.lspText + ) + memoryMetric( + "Running services", + value: memoryUsageMonitor.serviceProcessCount == 0 + ? String(localized: "Not running") + : memoryUsageMonitor.serviceText + ) + memoryMetric("Total", value: memoryUsageMonitor.totalText) + memoryMetric("Average total", value: memoryUsageMonitor.averageText) + memoryMetric("Peak total", value: memoryUsageMonitor.peakText) + memoryMetric("Runtime", value: memoryUsageMonitor.runtimeText) + memoryMetric("Sample interval", value: memoryUsageMonitor.samplingIntervalText) + } + .padding(.horizontal, 12) + .padding(.vertical, 5) + + Rectangle() + .fill(LitheTheme.divider) + .frame(height: 1) + + HStack(alignment: .top, spacing: 6) { + Image(systemName: "info.circle") + Text("Resident memory of Lithe and its managed process trees") + .fixedSize(horizontal: false, vertical: true) + } + .font(LitheTheme.smallFont) + .foregroundStyle(LitheTheme.secondaryText) + .padding(12) + } + .frame(width: 280) + .background(LitheTheme.popupBackground) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } + + private func memoryMetric(_ title: String, value: String) -> some View { + HStack(spacing: 8) { + Text(LocalizedStringKey(title)) + .foregroundStyle(LitheTheme.secondaryText) + Spacer(minLength: 8) + Text(value) + .font(.system(size: 11.5, design: .monospaced)) + .foregroundStyle(LitheTheme.primaryText) + .monospacedDigit() + } + .frame(minHeight: 27) + } +} + +struct FrameRateStatusView: View { + @EnvironmentObject private var frameRateMonitor: FrameRateMonitor + + var body: some View { + Label { + Text(frameRateMonitor.framesPerSecondText) + .monospacedDigit() + } icon: { + Image(systemName: "speedometer") + } + .help("Frames rendered per second") + .accessibilityLabel(Text("\(frameRateMonitor.framesPerSecond) frames per second")) + } +} diff --git a/Sources/Lithe/Views/Workbench/WorkbenchView.swift b/Sources/Lithe/Views/Workbench/WorkbenchView.swift index 048c4dd73..9e5ddab02 100644 --- a/Sources/Lithe/Views/Workbench/WorkbenchView.swift +++ b/Sources/Lithe/Views/Workbench/WorkbenchView.swift @@ -15,7 +15,6 @@ struct WorkbenchView: View { @EnvironmentObject private var model: AppModel @EnvironmentObject private var projectSessions: ProjectSessionManager @EnvironmentObject private var settings: AppSettings - @EnvironmentObject private var memoryUsageMonitor: MemoryUsageMonitor @Environment(\.accessibilityReduceMotion) private var reduceMotion @StateObject private var linuxDoWebSession = LinuxDoAnonymousWebSession() @State private var sidebarWidth: CGFloat = 320 @@ -29,7 +28,6 @@ struct WorkbenchView: View { @State private var isCheckoutRevisionPresented = false @State private var pendingTopBarPushReference: GitReference? @State private var isProjectSwitcherPresented = false - @State private var isMemoryUsagePopoverPresented = false @State private var isPluginPanelPresented = false @State private var didRestoreLayout = false @State private var hoveredProjectTabID: UUID? @@ -898,7 +896,7 @@ struct WorkbenchView: View { private var detailedStatusItems: some View { HStack(spacing: 14) { - caretPosition + EditorCaretPositionLabel(chrome: model.editorChrome) Text("UTF-8") Text("\(settings.tabWidth) spaces") Button { @@ -911,24 +909,21 @@ struct WorkbenchView: View { .help(LocalizedStringKey( model.activeDocument?.isReadOnly == true ? "Read-only document" : "Save" )) - memoryStatus + MemoryUsageStatusView() + FrameRateStatusView() gitStatus } } private var compactStatusItems: some View { HStack(spacing: 10) { - caretPosition - memoryStatus + EditorCaretPositionLabel(chrome: model.editorChrome) + MemoryUsageStatusView() + FrameRateStatusView() gitStatus } } - private var caretPosition: some View { - Text(model.editorCaret.map { "\($0.line + 1):\($0.utf16Column + 1)" } ?? "1:1") - .monospacedDigit() - } - private var gitStatus: some View { HStack(spacing: 7) { if model.isReferencesVisible { @@ -940,116 +935,6 @@ struct WorkbenchView: View { } } - private var memoryStatus: some View { - Button { - isMemoryUsagePopoverPresented.toggle() - } label: { - Label { - HStack(spacing: 4) { - Text("Total \(memoryUsageMonitor.totalText)") - Text("·") - Text("Lithe \(memoryUsageMonitor.litheText)") - } - .monospacedDigit() - } icon: { - Image(systemName: "memorychip") - } - } - .buttonStyle(.plain) - .lithePointer() - .help( - Text( - "Total managed memory: \(memoryUsageMonitor.totalText)\n" + - "Lithe: \(memoryUsageMonitor.litheText) · LSP: \(memoryUsageMonitor.lspText) · Services: \(memoryUsageMonitor.serviceText)" - ) - ) - .popover(isPresented: $isMemoryUsagePopoverPresented, arrowEdge: .top) { - memoryUsagePopover - } - .onChange(of: isMemoryUsagePopoverPresented) { isPresented in - memoryUsageMonitor.setDetailedUsageVisible(isPresented) - } - } - - private var memoryUsagePopover: some View { - VStack(alignment: .leading, spacing: 0) { - HStack(spacing: 8) { - Image(systemName: "memorychip") - .foregroundStyle(LitheTheme.accent) - Text("Managed Memory") - .font(.system(size: 12.5, weight: .semibold)) - .foregroundStyle(LitheTheme.primaryText) - Spacer(minLength: 8) - Button { - isMemoryUsagePopoverPresented = false - } label: { - Image(systemName: "xmark") - .font(.system(size: 10, weight: .semibold)) - } - .litheIconButton() - .help("Close") - } - .padding(.horizontal, 12) - .padding(.vertical, 10) - - Rectangle() - .fill(LitheTheme.divider) - .frame(height: 1) - - VStack(spacing: 0) { - memoryMetric("Lithe", value: memoryUsageMonitor.litheText) - memoryMetric( - "Language servers", - value: memoryUsageMonitor.languageServerProcessCount == 0 - ? String(localized: "Not running") - : memoryUsageMonitor.lspText - ) - memoryMetric( - "Running services", - value: memoryUsageMonitor.serviceProcessCount == 0 - ? String(localized: "Not running") - : memoryUsageMonitor.serviceText - ) - memoryMetric("Total", value: memoryUsageMonitor.totalText) - memoryMetric("Average total", value: memoryUsageMonitor.averageText) - memoryMetric("Peak total", value: memoryUsageMonitor.peakText) - memoryMetric("Runtime", value: memoryUsageMonitor.runtimeText) - memoryMetric("Sample interval", value: memoryUsageMonitor.samplingIntervalText) - } - .padding(.horizontal, 12) - .padding(.vertical, 5) - - Rectangle() - .fill(LitheTheme.divider) - .frame(height: 1) - - HStack(alignment: .top, spacing: 6) { - Image(systemName: "info.circle") - Text("Resident memory of Lithe and its managed process trees") - .fixedSize(horizontal: false, vertical: true) - } - .font(LitheTheme.smallFont) - .foregroundStyle(LitheTheme.secondaryText) - .padding(12) - } - .frame(width: 280) - .background(LitheTheme.popupBackground) - .clipShape(RoundedRectangle(cornerRadius: 8)) - } - - private func memoryMetric(_ title: String, value: String) -> some View { - HStack(spacing: 8) { - Text(LocalizedStringKey(title)) - .foregroundStyle(LitheTheme.secondaryText) - Spacer(minLength: 8) - Text(value) - .font(.system(size: 11.5, design: .monospaced)) - .foregroundStyle(LitheTheme.primaryText) - .monospacedDigit() - } - .frame(minHeight: 27) - } - private var projectInitials: String { let words = model.projectName.split(whereSeparator: { !$0.isLetter && !$0.isNumber }) let initials = words.prefix(2).compactMap(\.first) diff --git a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index 20d8fe0f3..d4740c071 100644 --- a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -1,3 +1,4 @@ +import LitheGitModule import SwiftUI struct ProjectSidebarView: View { @@ -22,13 +23,18 @@ struct ProjectSidebarView: View { GeometryReader { geometry in ScrollView([.vertical, .horizontal]) { LazyVStack(alignment: .leading, spacing: 1) { - FileNodeRow( - node: root, - depth: 0, + ProjectFileTreeContent( + root: root, availableWidth: geometry.size.width, activeDocumentURL: model.activeDocument?.url, + gitStatus: ProjectGitStatusSnapshot( + repositoryRoot: model.gitRepositoryRoot, + projection: model.gitTreeStatusProjection + ), + actions: ProjectTreeActions(model: model), expandedDirectoryPaths: $expandedDirectoryPaths ) + .equatable() } .padding(.vertical, 5) .frame( @@ -150,14 +156,92 @@ struct ProjectSidebarView: View { } } +private struct ProjectGitStatusSnapshot: Equatable { + let repositoryRoot: URL? + let projection: GitTreeStatusProjection + + func kind(for url: URL, isDirectory: Bool) -> GitChangeKind? { + guard let repositoryRoot, + let relative = Self.relativePath(for: url, root: repositoryRoot) else { return nil } + return projection.kind(relativePath: relative, isDirectory: isDirectory) + } + + func change(for url: URL) -> GitChange? { + guard let repositoryRoot, + let relative = Self.relativePath(for: url, root: repositoryRoot) else { return nil } + return projection.change(relativePath: relative) + } + + private static func relativePath(for url: URL, root: URL) -> String? { + let normalizedRoot = root.standardizedFileURL.path + let normalizedPath = url.standardizedFileURL.path + guard normalizedPath.hasPrefix(normalizedRoot + "/") else { return nil } + return String(normalizedPath.dropFirst(normalizedRoot.count + 1)) + } +} + +@MainActor +private final class ProjectTreeActions { + private let model: AppModel + + init(model: AppModel) { + self.model = model + } + + func openFile(_ url: URL) { model.openFile(url) } + func requestCreateFile(in url: URL) { model.requestCreateFile(in: url) } + func requestCreateDirectory(in url: URL) { model.requestCreateDirectory(in: url) } + func revealInFinder(_ url: URL) { model.revealProjectItemInFinder(url) } + func copyPath(_ url: URL, relative: Bool) { model.copyProjectItemPath(url, relative: relative) } + func duplicate(_ url: URL) async { await model.duplicateProjectItem(at: url) } + func requestRename(_ url: URL) { model.requestRenameProjectItem(at: url) } + func requestDelete(_ url: URL, isDirectory: Bool) { + model.requestDeleteProjectItem(at: url, isDirectory: isDirectory) + } + func refreshWorkspace() async { await model.refreshWorkspace() } + func showGitDirectoryDiff(_ url: URL) async { await model.showGitDirectoryDiff(for: url) } + func selectChange(_ change: GitChange) { model.selectChange(change) } + func showLocalHistory(_ url: URL) { model.showLocalHistory(for: url) } + func javaIconKind(for url: URL) async -> LitheIconKind? { await model.javaIconKind(for: url) } +} + +private struct ProjectFileTreeContent: View, Equatable { + let root: FileNode + let availableWidth: CGFloat + let activeDocumentURL: URL? + let gitStatus: ProjectGitStatusSnapshot + let actions: ProjectTreeActions + @Binding var expandedDirectoryPaths: Set + + static func == (lhs: ProjectFileTreeContent, rhs: ProjectFileTreeContent) -> Bool { + lhs.root == rhs.root + && lhs.availableWidth == rhs.availableWidth + && lhs.activeDocumentURL == rhs.activeDocumentURL + && lhs.gitStatus == rhs.gitStatus + } + + var body: some View { + FileNodeRow( + node: root, + depth: 0, + availableWidth: availableWidth, + activeDocumentURL: activeDocumentURL, + gitStatus: gitStatus, + actions: actions, + expandedDirectoryPaths: $expandedDirectoryPaths + ) + } +} + private struct FileNodeRow: View { private static let horizontalInset: CGFloat = 10 - @EnvironmentObject private var model: AppModel let node: FileNode let depth: Int let availableWidth: CGFloat let activeDocumentURL: URL? + let gitStatus: ProjectGitStatusSnapshot + let actions: ProjectTreeActions @Binding var expandedDirectoryPaths: Set @State private var resolvedJavaIconKind: LitheIconKind? @@ -182,6 +266,8 @@ private struct FileNodeRow: View { depth: depth + 1, availableWidth: availableWidth, activeDocumentURL: activeDocumentURL, + gitStatus: gitStatus, + actions: actions, expandedDirectoryPaths: $expandedDirectoryPaths ) } @@ -236,7 +322,7 @@ private struct FileNodeRow: View { private var fileRow: some View { Button { - model.openFile(node.url) + actions.openFile(node.url) } label: { HStack(spacing: 6) { Color.clear.frame(width: 10) @@ -249,7 +335,7 @@ private struct FileNodeRow: View { .truncationMode(.middle) .layoutPriority(1) Spacer(minLength: 4) - if let status = model.gitChange(for: node.url) { + if let status = gitStatus.change(for: node.url) { Text(status.displayStatus) .font(.system(size: 9, weight: .bold, design: .monospaced)) .foregroundStyle(gitStatusColor ?? LitheTheme.secondaryText) @@ -275,56 +361,56 @@ private struct FileNodeRow: View { .contextMenu { fileContextMenu } .task(id: node.url.standardizedFileURL.path) { guard node.url.pathExtension.lowercased() == "java" else { return } - resolvedJavaIconKind = await model.javaIconKind(for: node.url) + resolvedJavaIconKind = await actions.javaIconKind(for: node.url) } } @ViewBuilder private var directoryContextMenu: some View { - if model.gitTreeStatus(for: node.url, isDirectory: true) != nil { + if gitStatus.kind(for: node.url, isDirectory: true) != nil { Button("Show Git Diff") { - Task { await model.showGitDirectoryDiff(for: node.url) } + Task { await actions.showGitDirectoryDiff(node.url) } } Divider() } Button("New File…") { - model.requestCreateFile(in: node.url) + actions.requestCreateFile(in: node.url) } Button("New Directory…") { - model.requestCreateDirectory(in: node.url) + actions.requestCreateDirectory(in: node.url) } Divider() Button("Show in Finder") { - model.revealProjectItemInFinder(node.url) + actions.revealInFinder(node.url) } Button("Copy Path") { - model.copyProjectItemPath(node.url, relative: false) + actions.copyPath(node.url, relative: false) } Button("Copy Relative Path") { - model.copyProjectItemPath(node.url, relative: true) + actions.copyPath(node.url, relative: true) } if depth > 0 { Divider() Button("Duplicate") { - Task { await model.duplicateProjectItem(at: node.url) } + Task { await actions.duplicate(node.url) } } Button("Rename…") { - model.requestRenameProjectItem(at: node.url) + actions.requestRename(node.url) } Button("Move to Trash", role: .destructive) { - model.requestDeleteProjectItem(at: node.url, isDirectory: true) + actions.requestDelete(node.url, isDirectory: true) } } Divider() Button("Refresh") { - Task { await model.refreshWorkspace() } + Task { await actions.refreshWorkspace() } } } @@ -332,12 +418,12 @@ private struct FileNodeRow: View { private var fileContextMenu: some View { Group { Button("Open") { - model.openFile(node.url) + actions.openFile(node.url) } - if let change = model.gitChange(for: node.url) { + if let change = gitStatus.change(for: node.url) { Button("Show Git Diff") { - model.selectChange(change) + actions.selectChange(change) } } } @@ -346,16 +432,16 @@ private struct FileNodeRow: View { Group { Button("Duplicate") { - Task { await model.duplicateProjectItem(at: node.url) } + Task { await actions.duplicate(node.url) } } Button("Rename…") { - model.requestRenameProjectItem(at: node.url) + actions.requestRename(node.url) } Button("Local History…") { - model.showLocalHistory(for: node.url) + actions.showLocalHistory(node.url) } Button("Move to Trash", role: .destructive) { - model.requestDeleteProjectItem(at: node.url, isDirectory: false) + actions.requestDelete(node.url, isDirectory: false) } } @@ -363,19 +449,19 @@ private struct FileNodeRow: View { Group { Button("Show in Finder") { - model.revealProjectItemInFinder(node.url) + actions.revealInFinder(node.url) } Button("Copy Path") { - model.copyProjectItemPath(node.url, relative: false) + actions.copyPath(node.url, relative: false) } Button("Copy Relative Path") { - model.copyProjectItemPath(node.url, relative: true) + actions.copyPath(node.url, relative: true) } } } private var gitStatusColor: Color? { - guard let kind = model.gitTreeStatus(for: node.url, isDirectory: node.isDirectory) else { + guard let kind = gitStatus.kind(for: node.url, isDirectory: node.isDirectory) else { return nil } switch kind { diff --git a/Sources/LitheGitModule/Application/GitFeatureModel.swift b/Sources/LitheGitModule/Application/GitFeatureModel.swift index 0b200a1dc..7d75b0b72 100644 --- a/Sources/LitheGitModule/Application/GitFeatureModel.swift +++ b/Sources/LitheGitModule/Application/GitFeatureModel.swift @@ -7,7 +7,10 @@ import LitheModuleAPI /// in AppModel. Git command construction and parsing remain in GitService/Core. @MainActor package final class GitFeatureModel: ObservableObject { - @Published package private(set) var gitChanges: [GitChange] = [] + @Published package private(set) var gitChanges: [GitChange] = [] { + didSet { gitTreeStatus = GitTreeStatusProjection(changes: gitChanges) } + } + package private(set) var gitTreeStatus = GitTreeStatusProjection(changes: []) @Published private var pendingStagingStates: [GitChange.ID: Bool] = [:] @Published package private(set) var gitStashes: [GitStash] = [] @Published package private(set) var gitShelves: [GitShelfEntry] = [] diff --git a/Sources/LitheGitModule/Models/GitModels.swift b/Sources/LitheGitModule/Models/GitModels.swift index 333edd1df..0c8915216 100644 --- a/Sources/LitheGitModule/Models/GitModels.swift +++ b/Sources/LitheGitModule/Models/GitModels.swift @@ -431,31 +431,56 @@ package enum GitChangeKind: String, Sendable { /// Projects repository-relative Git changes onto file and directory rows. /// Directory status uses the most urgent descendant state so conflicts and /// deletions are never hidden behind a lower-priority modification. -package struct GitTreeStatusProjection: Sendable { - private let changes: [GitChange] +package struct GitTreeStatusProjection: Equatable, Sendable { + private let changesByPath: [String: GitChange] + private let directoryKinds: [String: GitChangeKind] package init(changes: [GitChange]) { - self.changes = changes + var changesByPath: [String: GitChange] = [:] + var directoryKinds: [String: GitChangeKind] = [:] + for change in changes { + let path = Self.normalized(change.path) + if changesByPath[path] == nil { + changesByPath[path] = change + } + var remainder = path + while let slash = remainder.lastIndex(of: "/") { + remainder = String(remainder[.. Self.priority(current) { + directoryKinds[remainder] = change.kind + } + } else { + directoryKinds[remainder] = change.kind + } + } + if !path.isEmpty { + if let current = directoryKinds[""] { + if Self.priority(change.kind) > Self.priority(current) { + directoryKinds[""] = change.kind + } + } else { + directoryKinds[""] = change.kind + } + } + } + self.changesByPath = changesByPath + self.directoryKinds = directoryKinds } package func change(relativePath: String) -> GitChange? { - let normalized = Self.normalized(relativePath) - return changes.first { Self.normalized($0.path) == normalized } + changesByPath[Self.normalized(relativePath)] } package func kind(relativePath: String, isDirectory: Bool) -> GitChangeKind? { let normalized = Self.normalized(relativePath) if !isDirectory { - return change(relativePath: normalized)?.kind + return changesByPath[normalized]?.kind } - let prefix = normalized.isEmpty ? "" : normalized + "/" - return changes - .filter { normalized.isEmpty || Self.normalized($0.path).hasPrefix(prefix) } - .map(\.kind) - .max { priority($0) < priority($1) } + return directoryKinds[normalized] } - private func priority(_ kind: GitChangeKind) -> Int { + private static func priority(_ kind: GitChangeKind) -> Int { switch kind { case .modified: 0 case .copied: 1 diff --git a/Tests/LitheGitModuleTests/GitModuleTests.swift b/Tests/LitheGitModuleTests/GitModuleTests.swift index a4596bf53..04766a71d 100644 --- a/Tests/LitheGitModuleTests/GitModuleTests.swift +++ b/Tests/LitheGitModuleTests/GitModuleTests.swift @@ -37,6 +37,7 @@ struct GitModuleTests { #expect(projection.kind(relativePath: "Sources/Feature", isDirectory: true) == .conflicted) #expect(projection.kind(relativePath: "Sources", isDirectory: true) == .conflicted) #expect(projection.kind(relativePath: "Tests", isDirectory: true) == nil) + #expect(projection.kind(relativePath: "", isDirectory: true) == .conflicted) } @Test diff --git a/Tests/LitheTests/EditorChromeModelTests.swift b/Tests/LitheTests/EditorChromeModelTests.swift new file mode 100644 index 000000000..797e17d9b --- /dev/null +++ b/Tests/LitheTests/EditorChromeModelTests.swift @@ -0,0 +1,75 @@ +import Combine +import Foundation +import Testing +@testable import Lithe + +@MainActor +struct EditorChromeModelTests { + @Test + func unchangedCaretAndSelectionDoNotPublish() { + let chrome = EditorChromeModel() + let caret = EditorCaret( + url: URL(fileURLWithPath: "/workspace/App.java"), + line: 3, + utf16Column: 8 + ) + chrome.update(caret: caret) + chrome.update(selectedText: "name") + + var publishCount = 0 + let observation = chrome.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + chrome.update(caret: caret) + chrome.update(selectedText: "name") + #expect(publishCount == 0) + + chrome.update(caret: EditorCaret(url: caret.url, line: 4, utf16Column: 0)) + #expect(publishCount == 1) + chrome.update(selectedText: "") + #expect(publishCount == 2) + } + + @Test + func resetClearsCaretAndSelectionOnceEach() { + let chrome = EditorChromeModel() + chrome.update( + caret: EditorCaret(url: URL(fileURLWithPath: "/workspace/App.java"), line: 0, utf16Column: 0) + ) + chrome.update(selectedText: "foo") + + var publishCount = 0 + let observation = chrome.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + chrome.reset() + #expect(chrome.caret == nil) + #expect(chrome.selectedText.isEmpty) + #expect(publishCount == 2) + + chrome.reset() + #expect(publishCount == 2) + } + + @Test + func findBarUpdatesDoNotPublishUnchangedValues() { + let chrome = EditorChromeModel() + chrome.setFindBarVisible(true) + chrome.setFindBarQuery("foo") + chrome.updateFindState(currentIndex: 1, count: 3) + + var publishCount = 0 + let observation = chrome.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + chrome.setFindBarVisible(true) + chrome.setFindBarQuery("foo") + chrome.updateFindState(currentIndex: 1, count: 3) + #expect(publishCount == 0) + + chrome.setFindBarQuery("bar") + #expect(publishCount == 1) + chrome.updateFindState(currentIndex: 0, count: 2) + #expect(publishCount == 2) + } +} diff --git a/Tests/LitheTests/EditorDiagnosticsStoreTests.swift b/Tests/LitheTests/EditorDiagnosticsStoreTests.swift new file mode 100644 index 000000000..18dc5903a --- /dev/null +++ b/Tests/LitheTests/EditorDiagnosticsStoreTests.swift @@ -0,0 +1,39 @@ +import Combine +import Foundation +import Testing +@testable import Lithe + +@MainActor +struct EditorDiagnosticsStoreTests { + @Test + func unchangedDiagnosticsDoNotPublish() { + let store = EditorDiagnosticsStore() + let url = URL(fileURLWithPath: "/workspace/App.java") + let diagnostic = EditorDiagnostic( + id: "d1", + fileURL: url, + line: 1, + utf16Column: 0, + endLine: 1, + endUTF16Column: 4, + severity: .warning, + message: "unused", + source: nil, + code: nil, + tags: [], + relatedInformation: [] + ) + store.replace([url: [diagnostic]]) + + var publishCount = 0 + let observation = store.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + store.replace([url: [diagnostic]]) + #expect(publishCount == 0) + + store.replace([:]) + #expect(publishCount == 1) + #expect(store.diagnostics(for: url).isEmpty) + } +} diff --git a/Tests/LitheTests/FrameRateMonitorTests.swift b/Tests/LitheTests/FrameRateMonitorTests.swift new file mode 100644 index 000000000..3c056a5d3 --- /dev/null +++ b/Tests/LitheTests/FrameRateMonitorTests.swift @@ -0,0 +1,37 @@ +import Combine +import Testing +@testable import Lithe + +@MainActor +struct FrameRateMonitorTests { + @Test + func publishesWhenDisplayedIntegerChangesAndIgnoresRepeats() { + let monitor = FrameRateMonitor(sampleWindow: 0.5) + monitor.recordFrameForTesting(at: 0) + monitor.recordFrameForTesting(at: 0.5) + #expect(monitor.framesPerSecond == 4) + #expect(monitor.framesPerSecondText == "4 FPS") + + var publishCount = 0 + let observation = monitor.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + monitor.recordFrameForTesting(at: 1.0) + #expect(monitor.framesPerSecond == 2) + #expect(publishCount == 1) + + monitor.recordFrameForTesting(at: 1.5) + #expect(monitor.framesPerSecond == 2) + #expect(publishCount == 1) + } + + @Test + func coalescesBurstsAfterAHitch() { + let monitor = FrameRateMonitor(sampleWindow: 0.5) + monitor.recordFrameForTesting(at: 0) + monitor.recordFrameForTesting(at: 0.001) + monitor.recordFrameForTesting(at: 0.002) + monitor.recordFrameForTesting(at: 0.5) + #expect(monitor.framesPerSecond == 4) + } +} diff --git a/Tests/LitheTests/LitheCoreLogicTests.swift b/Tests/LitheTests/LitheCoreLogicTests.swift index 3434c7897..367644387 100644 --- a/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/Tests/LitheTests/LitheCoreLogicTests.swift @@ -1,4 +1,5 @@ import AppKit +import Combine import CoreServices import Foundation @testable import LitheDatabaseModule @@ -2119,6 +2120,38 @@ struct LitheCoreLogicTests { #expect(updates.first?.count == 0) } + @Test + @MainActor + func codeEditorLineIndexKeepsLineNumbersAfterSingleLineEdit() { + let textView = CodeTextView(frame: .zero) + textView.string = "one\ntwo\nthree" + textView.rebuildLineIndex() + #expect(textView.lineNumber(at: 4, in: textView.string as NSString) == 1) + + textView.string = "oneX\ntwo\nthree" + textView.applyLineIndexEdit(replacedRange: NSRange(location: 3, length: 0), replacement: "X") + let source = textView.string as NSString + #expect(textView.lineNumber(at: 0, in: source) == 0) + #expect(textView.lineNumber(at: 5, in: source) == 1) + #expect(textView.lineNumber(at: 9, in: source) == 2) + #expect(textView.characterOffset(forLine: 2, in: source) == 9) + } + + @Test + @MainActor + func codeEditorShiftsFindMatchesAcrossASingleLineEdit() { + let textView = CodeTextView(frame: .zero) + textView.string = "alpha beta alpha" + textView.rebuildLineIndex() + textView.updateFindMatches(query: "alpha") + #expect(textView.currentFindMatchCountForTesting == 2) + + textView.string = "Xalpha beta alpha" + textView.applyFindEdit(replacedRange: NSRange(location: 0, length: 0), insertedLength: 1, query: "alpha") + #expect(textView.currentFindMatchCountForTesting == 2) + #expect(textView.findMatchLocationsForTesting == [1, 12]) + } + @Test @MainActor func codeEditorReportsEachFindStateOnlyOnce() { @@ -2592,6 +2625,34 @@ struct EditorDocumentTests { #expect(try String(contentsOf: url, encoding: .utf8) == "after") } + @Test + @MainActor + func liveEditorTextPublishesOnlyWhenDirtyStateChanges() { + let document = EditorDocument( + url: URL(fileURLWithPath: "/tmp/live-editor.txt"), + text: "before", + modificationDate: nil + ) + var publishCount = 0 + let observation = document.objectWillChange.sink { _ in publishCount += 1 } + defer { observation.cancel() } + + document.applyLiveEditorText("before") + #expect(publishCount == 0) + + document.applyLiveEditorText("after") + #expect(document.isDirty) + #expect(publishCount == 1) + + document.applyLiveEditorText("after more") + #expect(document.isDirty) + #expect(publishCount == 1) + + document.applyLiveEditorText("before") + #expect(!document.isDirty) + #expect(publishCount == 2) + } + @Test func readOnlyDocumentRejectsSave() { let url = FileManager.default.temporaryDirectory From ea4d63b9333ef5a1735d014bb2163d8fc6353949 Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 20:03:55 +0800 Subject: [PATCH 52/83] feat(windows): add project tab close controls --- .../window/components/project-tab-bar.test.ts | 11 +- .../window/components/project-tab-bar.tsx | 114 ++++++++++++------ windows/tauri/src/i18n/locale.test.ts | 4 + windows/tauri/src/i18n/locale.ts | 2 + 4 files changed, 93 insertions(+), 38 deletions(-) diff --git a/windows/tauri/src/features/window/components/project-tab-bar.test.ts b/windows/tauri/src/features/window/components/project-tab-bar.test.ts index 2700997e1..8903c0d26 100644 --- a/windows/tauri/src/features/window/components/project-tab-bar.test.ts +++ b/windows/tauri/src/features/window/components/project-tab-bar.test.ts @@ -1,6 +1,6 @@ import { expect, test } from "bun:test"; -test("project tab bar exposes accessible switchable project tabs", async () => { +test("project tab bar exposes accessible switchable and closable project tabs", async () => { const source = await Bun.file(new URL("./project-tab-bar.tsx", import.meta.url)).text(); expect(source).toContain('role="tablist"'); @@ -8,4 +8,13 @@ test("project tab bar exposes accessible switchable project tabs", async () => { expect(source).toContain("aria-selected"); expect(source).toContain("isSwitchingProject"); expect(source).toContain("switchToProject"); + expect(source).toContain("closeProject"); + expect(source).toContain("XIcon as X"); + expect(source).toContain("isProjectActionPending"); + expect(source).toContain("event.stopPropagation()"); + expect(source).toContain("await closeProject(projectId)"); + expect(source).toContain("finally"); + expect(source).toContain('t("titleProject.closeProject", { name: project.name })'); + expect(source).toContain("group-hover:opacity-100"); + expect(source).toContain("group-focus-within:opacity-100"); }); diff --git a/windows/tauri/src/features/window/components/project-tab-bar.tsx b/windows/tauri/src/features/window/components/project-tab-bar.tsx index 08a7d8f76..4ee4d4269 100644 --- a/windows/tauri/src/features/window/components/project-tab-bar.tsx +++ b/windows/tauri/src/features/window/components/project-tab-bar.tsx @@ -1,17 +1,32 @@ -import { useMemo } from "react"; +import { useMemo, useState } from "react"; import { useFileSystemStore } from "@/features/file-system/stores/file-system.store"; import { useTranslation } from "@/i18n/locale-provider"; import { useWorkspaceTabsStore } from "@/features/window/stores/workspace-tabs.store"; -import { FolderIcon } from "@/ui/icons"; +import { Button } from "@/ui/button"; +import { FolderIcon, XIcon as X } from "@/ui/icons"; import { cn } from "@/utils/cn"; import { getProjectTabBarItems } from "../utils/project-tab-bar-model"; export function ProjectTabBar() { const { t } = useTranslation(); + const [closingProjectId, setClosingProjectId] = useState(null); const projectTabs = useWorkspaceTabsStore.use.projectTabs(); const switchToProject = useFileSystemStore((state) => state.switchToProject); + const closeProject = useFileSystemStore((state) => state.closeProject); const isSwitchingProject = useFileSystemStore((state) => state.isSwitchingProject); const projects = useMemo(() => getProjectTabBarItems(projectTabs), [projectTabs]); + const isProjectActionPending = isSwitchingProject || closingProjectId !== null; + + const handleCloseProject = async (projectId: string) => { + if (isProjectActionPending) return; + + setClosingProjectId(projectId); + try { + await closeProject(projectId); + } finally { + setClosingProjectId(null); + } + }; if (projects.length === 0) return null; @@ -23,41 +38,66 @@ export function ProjectTabBar() { aria-orientation="horizontal" >
- {projects.map((project) => ( - - ))} + {projects.map((project) => { + const closeLabel = t("titleProject.closeProject", { name: project.name }); + + return ( +
+ + +
+ ); + })}
); diff --git a/windows/tauri/src/i18n/locale.test.ts b/windows/tauri/src/i18n/locale.test.ts index ca9b9a9bf..a666c5c32 100644 --- a/windows/tauri/src/i18n/locale.test.ts +++ b/windows/tauri/src/i18n/locale.test.ts @@ -37,6 +37,10 @@ describe("Windows display language", () => { expect(translate("git.log.headCurrentBranch")).toBe("HEAD(当前分支)"); expect(translate("run.identifyAndGenerate")).toBe("识别并生成"); expect(createTranslator("en-US")("workbench.run")).toBe("Run"); + expect(createTranslator("en-US")("titleProject.closeProject", { name: "Lithe" })).toBe( + "Close project Lithe", + ); + expect(translate("titleProject.closeProject", { name: "Lithe" })).toBe("关闭项目 Lithe"); expect(translate("welcome.openProject")).toBe("打开项目"); expect(translate("workbench.diagnostics")).toBe("诊断"); expect(translate("diagnostics.empty")).toBe("未检测到问题"); diff --git a/windows/tauri/src/i18n/locale.ts b/windows/tauri/src/i18n/locale.ts index e7089751e..69013613f 100644 --- a/windows/tauri/src/i18n/locale.ts +++ b/windows/tauri/src/i18n/locale.ts @@ -113,6 +113,7 @@ const catalogs = { "titleProject.open": "Open…", "titleProject.cloneRepository": "Clone Repository…", "titleProject.openProjects": "Open Projects", + "titleProject.closeProject": "Close project {name}", "titleProject.recentProjects": "Recent Projects", "titleProject.noRecentProjects": "No recent projects", "titleProject.trigger": "Project: {project}", @@ -1179,6 +1180,7 @@ const catalogs = { "titleProject.open": "打开…", "titleProject.cloneRepository": "克隆仓库…", "titleProject.openProjects": "打开的项目", + "titleProject.closeProject": "关闭项目 {name}", "titleProject.recentProjects": "最近项目", "titleProject.noRecentProjects": "没有最近项目", "titleProject.trigger": "项目:{project}", From 067136114a9b32e11cbb1aa3eb08bb3ff488b048 Mon Sep 17 00:00:00 2001 From: lick <2188718831@qq.com> Date: Mon, 17 Aug 2026 20:09:43 +0800 Subject: [PATCH 53/83] fix(macOS): isolate project tree actions for Swift 6 Button and context-menu closures are not MainActor-isolated under the CI Swift 6 check. Hop back to AppModel from nonisolated action methods instead of marking the helper class itself MainActor. --- .../Views/Workspace/ProjectSidebarView.swift | 79 +++++++++++++------ 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift index d4740c071..5fb7e1e39 100644 --- a/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift +++ b/Sources/Lithe/Views/Workspace/ProjectSidebarView.swift @@ -180,29 +180,56 @@ private struct ProjectGitStatusSnapshot: Equatable { } } -@MainActor -private final class ProjectTreeActions { +private final class ProjectTreeActions: @unchecked Sendable { private let model: AppModel init(model: AppModel) { self.model = model } - func openFile(_ url: URL) { model.openFile(url) } - func requestCreateFile(in url: URL) { model.requestCreateFile(in: url) } - func requestCreateDirectory(in url: URL) { model.requestCreateDirectory(in: url) } - func revealInFinder(_ url: URL) { model.revealProjectItemInFinder(url) } - func copyPath(_ url: URL, relative: Bool) { model.copyProjectItemPath(url, relative: relative) } - func duplicate(_ url: URL) async { await model.duplicateProjectItem(at: url) } - func requestRename(_ url: URL) { model.requestRenameProjectItem(at: url) } - func requestDelete(_ url: URL, isDirectory: Bool) { - model.requestDeleteProjectItem(at: url, isDirectory: isDirectory) - } - func refreshWorkspace() async { await model.refreshWorkspace() } - func showGitDirectoryDiff(_ url: URL) async { await model.showGitDirectoryDiff(for: url) } - func selectChange(_ change: GitChange) { model.selectChange(change) } - func showLocalHistory(_ url: URL) { model.showLocalHistory(for: url) } - func javaIconKind(for url: URL) async -> LitheIconKind? { await model.javaIconKind(for: url) } + // Button and context-menu closures are not MainActor-isolated under the + // Swift 6 test/release check. Keep these methods synchronous and hop. + nonisolated func openFile(_ url: URL) { + Task { @MainActor in self.model.openFile(url) } + } + nonisolated func requestCreateFile(_ url: URL) { + Task { @MainActor in self.model.requestCreateFile(in: url) } + } + nonisolated func requestCreateDirectory(_ url: URL) { + Task { @MainActor in self.model.requestCreateDirectory(in: url) } + } + nonisolated func revealInFinder(_ url: URL) { + Task { @MainActor in self.model.revealProjectItemInFinder(url) } + } + nonisolated func copyPath(_ url: URL, relative: Bool) { + Task { @MainActor in self.model.copyProjectItemPath(url, relative: relative) } + } + nonisolated func duplicate(_ url: URL) { + Task { await self.model.duplicateProjectItem(at: url) } + } + nonisolated func requestRename(_ url: URL) { + Task { @MainActor in self.model.requestRenameProjectItem(at: url) } + } + nonisolated func requestDelete(_ url: URL, _ isDirectory: Bool) { + Task { @MainActor in + self.model.requestDeleteProjectItem(at: url, isDirectory: isDirectory) + } + } + nonisolated func refreshWorkspace() { + Task { await self.model.refreshWorkspace() } + } + nonisolated func showGitDirectoryDiff(_ url: URL) { + Task { await self.model.showGitDirectoryDiff(for: url) } + } + nonisolated func selectChange(_ change: GitChange) { + Task { @MainActor in self.model.selectChange(change) } + } + nonisolated func showLocalHistory(_ url: URL) { + Task { @MainActor in self.model.showLocalHistory(for: url) } + } + func javaIconKind(_ url: URL) async -> LitheIconKind? { + await model.javaIconKind(for: url) + } } private struct ProjectFileTreeContent: View, Equatable { @@ -361,7 +388,7 @@ private struct FileNodeRow: View { .contextMenu { fileContextMenu } .task(id: node.url.standardizedFileURL.path) { guard node.url.pathExtension.lowercased() == "java" else { return } - resolvedJavaIconKind = await actions.javaIconKind(for: node.url) + resolvedJavaIconKind = await actions.javaIconKind(node.url) } } @@ -369,16 +396,16 @@ private struct FileNodeRow: View { private var directoryContextMenu: some View { if gitStatus.kind(for: node.url, isDirectory: true) != nil { Button("Show Git Diff") { - Task { await actions.showGitDirectoryDiff(node.url) } + actions.showGitDirectoryDiff(node.url) } Divider() } Button("New File…") { - actions.requestCreateFile(in: node.url) + actions.requestCreateFile(node.url) } Button("New Directory…") { - actions.requestCreateDirectory(in: node.url) + actions.requestCreateDirectory(node.url) } Divider() @@ -397,20 +424,20 @@ private struct FileNodeRow: View { Divider() Button("Duplicate") { - Task { await actions.duplicate(node.url) } + actions.duplicate(node.url) } Button("Rename…") { actions.requestRename(node.url) } Button("Move to Trash", role: .destructive) { - actions.requestDelete(node.url, isDirectory: true) + actions.requestDelete(node.url, true) } } Divider() Button("Refresh") { - Task { await actions.refreshWorkspace() } + actions.refreshWorkspace() } } @@ -432,7 +459,7 @@ private struct FileNodeRow: View { Group { Button("Duplicate") { - Task { await actions.duplicate(node.url) } + actions.duplicate(node.url) } Button("Rename…") { actions.requestRename(node.url) @@ -441,7 +468,7 @@ private struct FileNodeRow: View { actions.showLocalHistory(node.url) } Button("Move to Trash", role: .destructive) { - actions.requestDelete(node.url, isDirectory: false) + actions.requestDelete(node.url, false) } } From 2b5a0367d435ea657576930e36410e410915c9d3 Mon Sep 17 00:00:00 2001 From: yager-42 <331382125@qq.com> Date: Mon, 17 Aug 2026 20:40:41 +0800 Subject: [PATCH 54/83] fix(macOS): enable run configuration path picker --- .../Run/JavaRunConfigurationEditorView.swift | 73 +++++++++++++------ 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift b/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift index b031f2c7d..64c83f919 100644 --- a/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift +++ b/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift @@ -1,4 +1,5 @@ -import AppKit +import Foundation +import UniformTypeIdentifiers import SwiftUI struct RunConfigurationEditorView: View { @@ -10,6 +11,8 @@ struct RunConfigurationEditorView: View { @State private var environmentText: String @State private var saveScope: RunConfigurationSaveScope = .local @State private var saveError: String? + @State private var activePathPicker: PathPicker? + @State private var isPathPickerPresented = false init(feature: RunFeatureModel, configuration: RunConfiguration) { self.feature = feature @@ -75,6 +78,12 @@ struct RunConfigurationEditorView: View { .frame(width: 520, height: 470) .background(LitheTheme.window) .preferredColorScheme(.dark) + .fileImporter( + isPresented: $isPathPickerPresented, + allowedContentTypes: activePathPicker?.allowedContentTypes ?? [.folder] + ) { result in + selectPath(result) + } } private var effectiveCapabilities: RunConfigurationCapabilities { @@ -168,7 +177,8 @@ struct RunConfigurationEditorView: View { title: "Maven executable", placeholder: "Use mvnw or detected Maven", text: stringBinding(\.mavenExecutablePath), - chooseDirectory: { chooseFileOrDirectory(for: \.mavenExecutablePath) } + chooseDirectory: { chooseFileOrDirectory(for: \.mavenExecutablePath) }, + chooseHelp: "Choose Maven executable or home" ) .disabled(saveScope == .project) pathRow( @@ -274,7 +284,8 @@ struct RunConfigurationEditorView: View { title: String, placeholder: String, text: Binding, - chooseDirectory: @escaping () -> Void + chooseDirectory: @escaping () -> Void, + chooseHelp: String = "Choose directory" ) -> some View { HStack(spacing: 8) { Text(LocalizedStringKey(title)) @@ -286,7 +297,7 @@ struct RunConfigurationEditorView: View { LitheSystemIcon(systemImage: "folder") } .litheIconButton() - .help("Choose directory") + .help(chooseHelp) } .font(.system(size: 12)) } @@ -326,26 +337,46 @@ struct RunConfigurationEditorView: View { } private func chooseDirectory(for keyPath: WritableKeyPath) { - let panel = NSOpenPanel() - panel.title = "Choose Directory" - panel.prompt = "Choose" - panel.canChooseFiles = false - panel.canChooseDirectories = true - panel.allowsMultipleSelection = false - if panel.runModal() == .OK, let url = panel.url { - options[keyPath: keyPath] = url.path - } + presentPathPicker(.directory(keyPath)) } private func chooseFileOrDirectory(for keyPath: WritableKeyPath) { - let panel = NSOpenPanel() - panel.title = "Choose Maven Executable or Home" - panel.prompt = "Choose" - panel.canChooseFiles = true - panel.canChooseDirectories = true - panel.allowsMultipleSelection = false - if panel.runModal() == .OK, let url = panel.url { - options[keyPath: keyPath] = url.path + presentPathPicker(.fileOrDirectory(keyPath)) + } + + private func presentPathPicker(_ picker: PathPicker) { + activePathPicker = picker + isPathPickerPresented = true + } + + private func selectPath(_ result: Result) { + defer { activePathPicker = nil } + switch result { + case .success(let url): + guard let activePathPicker else { return } + options[keyPath: activePathPicker.keyPath] = url.path + case .failure(let error): + let cocoaError = error as NSError + guard !(cocoaError.domain == NSCocoaErrorDomain && cocoaError.code == NSUserCancelledError) else { return } + saveError = error.localizedDescription + } + } + + private enum PathPicker { + case directory(WritableKeyPath) + case fileOrDirectory(WritableKeyPath) + + var keyPath: WritableKeyPath { + switch self { + case .directory(let keyPath), .fileOrDirectory(let keyPath): keyPath + } + } + + var allowedContentTypes: [UTType] { + switch self { + case .directory: [.folder] + case .fileOrDirectory: [.item] + } } } From 6a76304318173aa09647e7d3f176632142641283 Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 20:27:02 +0800 Subject: [PATCH 55/83] Prevent Windows background console flashes Apply CREATE_NO_WINDOW to language-server launches and registry font queries so IDE background work cannot create visible console windows. Add focused Windows regression coverage while leaving explicit ConPTY terminals unchanged. --- rust/lithe-core/src/lsp/interface/process.rs | 26 ++++++++++++++++++++ windows/tauri/src-tauri/src/host.rs | 20 +++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/rust/lithe-core/src/lsp/interface/process.rs b/rust/lithe-core/src/lsp/interface/process.rs index 2f59aa1dc..ac5f4df73 100644 --- a/rust/lithe-core/src/lsp/interface/process.rs +++ b/rust/lithe-core/src/lsp/interface/process.rs @@ -13,6 +13,9 @@ use std::path::PathBuf; use std::process::{Child, ChildStdin, Command, Stdio}; use std::sync::{Arc, Mutex}; +#[cfg(target_os = "windows")] +use std::os::windows::process::CommandExt; + /// Everything needed to start a language server, after provider adaptation has /// already rewritten the arguments. pub struct LspProcessSpec { @@ -75,6 +78,7 @@ impl LspProcessLauncher for SystemProcessLauncher { .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::piped()); + apply_language_server_creation_flags(&mut command); let mut child = command.spawn().map_err(|error| { CoreError::new( ErrorCode::ProcessStartFailed, @@ -102,6 +106,20 @@ impl LspProcessLauncher for SystemProcessLauncher { } } +fn apply_language_server_creation_flags(command: &mut Command) { + #[cfg(target_os = "windows")] + command.creation_flags(language_server_process_creation_flags()); + + #[cfg(not(target_os = "windows"))] + let _ = command; +} + +#[cfg(target_os = "windows")] +fn language_server_process_creation_flags() -> u32 { + const CREATE_NO_WINDOW: u32 = 0x0800_0000; + CREATE_NO_WINDOW +} + struct SystemProcess { input: Mutex>, child: Mutex, @@ -166,3 +184,11 @@ fn missing_stream(stream: &str) -> CoreError { ) .with_details(stream) } + +#[cfg(all(test, target_os = "windows"))] +mod tests { + #[test] + fn background_language_servers_do_not_create_windows_console() { + assert_eq!(super::language_server_process_creation_flags(), 0x0800_0000); + } +} diff --git a/windows/tauri/src-tauri/src/host.rs b/windows/tauri/src-tauri/src/host.rs index 78256f691..62da2f7bd 100644 --- a/windows/tauri/src-tauri/src/host.rs +++ b/windows/tauri/src-tauri/src/host.rs @@ -371,6 +371,12 @@ mod tests { assert!(widths.contains(&32), "{widths:?}"); assert!(widths.contains(&256), "{widths:?}"); } + + #[cfg(target_os = "windows")] + #[test] + fn background_font_queries_do_not_create_windows_console() { + assert_eq!(super::font_query_process_creation_flags(), 0x0800_0000); + } } #[tauri::command] @@ -431,13 +437,17 @@ pub fn validate_font(font_family: String) -> bool { #[cfg(target_os = "windows")] fn platform_fonts() -> Vec { + use std::os::windows::process::CommandExt; use std::process::Command; - let output = Command::new("reg.exe") + + let mut command = Command::new("reg.exe"); + command .args([ "query", r"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", ]) - .output(); + .creation_flags(font_query_process_creation_flags()); + let output = command.output(); let text = output .ok() .filter(|value| value.status.success()) @@ -468,6 +478,12 @@ fn platform_fonts() -> Vec { .collect() } +#[cfg(target_os = "windows")] +fn font_query_process_creation_flags() -> u32 { + const CREATE_NO_WINDOW: u32 = 0x0800_0000; + CREATE_NO_WINDOW +} + #[cfg(not(target_os = "windows"))] fn platform_fonts() -> Vec { [ From 3ef1b36e499529a00c4930bb0d948577f1047497 Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 21:07:34 +0800 Subject: [PATCH 56/83] fix(windows): align project tab close button --- .../window/components/project-tab-bar.test.ts | 4 +++ .../window/components/project-tab-bar.tsx | 31 ++++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/windows/tauri/src/features/window/components/project-tab-bar.test.ts b/windows/tauri/src/features/window/components/project-tab-bar.test.ts index 8903c0d26..4e7bd08a9 100644 --- a/windows/tauri/src/features/window/components/project-tab-bar.test.ts +++ b/windows/tauri/src/features/window/components/project-tab-bar.test.ts @@ -17,4 +17,8 @@ test("project tab bar exposes accessible switchable and closable project tabs", expect(source).toContain('t("titleProject.closeProject", { name: project.name })'); expect(source).toContain("group-hover:opacity-100"); expect(source).toContain("group-focus-within:opacity-100"); + expect(source).toContain( + "absolute inset-y-0 right-1 z-10 flex items-center transition-opacity", + ); + expect(source).not.toContain("-translate-y-1/2"); }); diff --git a/windows/tauri/src/features/window/components/project-tab-bar.tsx b/windows/tauri/src/features/window/components/project-tab-bar.tsx index 4ee4d4269..19d7bb6f2 100644 --- a/windows/tauri/src/features/window/components/project-tab-bar.tsx +++ b/windows/tauri/src/features/window/components/project-tab-bar.tsx @@ -75,26 +75,29 @@ export function ProjectTabBar() { /> ) : null} - + +
); })} From ff2a38103fd17463193e4603b569e28fd8e07f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E5=A4=A9=E5=9B=B0?= <2570024918@qq.com> Date: Mon, 17 Aug 2026 21:13:18 +0800 Subject: [PATCH 57/83] =?UTF-8?q?fix(windows):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=9B=AE=E5=BD=95=E5=92=8C=20Git=20=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E9=BC=A0=E6=A0=87=E6=BB=9A=E8=BD=AE=E5=81=B6=E5=8F=91?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=BB=9A=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WebView2 会把滚轮锁在 overflow:hidden 的树节点上,侧栏拖拽条也会挡住滚动条。将滚轮交给真正的滚动容器,避免必须先点击滚动条才能滑动。 Co-authored-by: Cursor --- .../components/file-explorer-viewport.tsx | 4 + .../styles/file-explorer-tree.css | 6 +- .../status/git-status-file-item.tsx | 4 +- .../layout/components/resizable-pane.tsx | 21 +++- .../sidebar/components/sidebar-tree.tsx | 4 +- windows/tauri/src/ui/scroll-area.tsx | 31 ++++- .../src/ui/scroll-container-wheel.test.ts | 63 ++++++++++ .../tauri/src/ui/scroll-container-wheel.ts | 114 ++++++++++++++++++ 8 files changed, 235 insertions(+), 12 deletions(-) create mode 100644 windows/tauri/src/ui/scroll-container-wheel.test.ts create mode 100644 windows/tauri/src/ui/scroll-container-wheel.ts diff --git a/windows/tauri/src/features/file-explorer/components/file-explorer-viewport.tsx b/windows/tauri/src/features/file-explorer/components/file-explorer-viewport.tsx index 378fd5551..3ddd990d9 100644 --- a/windows/tauri/src/features/file-explorer/components/file-explorer-viewport.tsx +++ b/windows/tauri/src/features/file-explorer/components/file-explorer-viewport.tsx @@ -16,6 +16,7 @@ import { getFileTreeVirtualRange, type FileTreeScrollAlignment, } from "@/features/file-explorer/lib/file-tree-viewport"; +import { bindScrollContainerWheel } from "@/ui/scroll-container-wheel"; import { cn } from "@/utils/cn"; export interface FileExplorerViewportHandle { @@ -83,11 +84,13 @@ export const FileExplorerViewport = forwardRef< const resizeObserver = new ResizeObserver(updateLayout); resizeObserver.observe(element); element.addEventListener("scroll", scheduleLayoutUpdate, { passive: true }); + const unbindWheel = bindScrollContainerWheel(element); updateLayout(); return () => { resizeObserver.disconnect(); element.removeEventListener("scroll", scheduleLayoutUpdate); + unbindWheel(); if (frameRef.current !== null) { cancelAnimationFrame(frameRef.current); frameRef.current = null; @@ -166,6 +169,7 @@ export const FileExplorerViewport = forwardRef< return (
span:last-child { min-width: 0; flex: 1 1 auto; - overflow: hidden; + overflow: clip; text-overflow: ellipsis; } diff --git a/windows/tauri/src/features/git/components/status/git-status-file-item.tsx b/windows/tauri/src/features/git/components/status/git-status-file-item.tsx index 325386c07..054c80872 100644 --- a/windows/tauri/src/features/git/components/status/git-status-file-item.tsx +++ b/windows/tauri/src/features/git/components/status/git-status-file-item.tsx @@ -50,7 +50,7 @@ export const GitFileItem = ({ return ( diff --git a/windows/tauri/src/features/layout/components/resizable-pane.tsx b/windows/tauri/src/features/layout/components/resizable-pane.tsx index 7e150c783..0b1bb0d8b 100644 --- a/windows/tauri/src/features/layout/components/resizable-pane.tsx +++ b/windows/tauri/src/features/layout/components/resizable-pane.tsx @@ -1,6 +1,10 @@ import type React from "react"; -import { useCallback, useEffect, useRef, useState } from "react"; +import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"; import { useSettingsStore } from "@/features/settings/stores/settings.store"; +import { + bindOverlayWheelToScrollContainer, + querySidebarScrollContainer, +} from "@/ui/scroll-container-wheel"; import { cn } from "@/utils/cn"; import { clampResponsivePaneWidth, @@ -39,6 +43,7 @@ export function ResizablePane({ const [isResizing, setIsResizing] = useState(false); const paneRef = useRef(null); const contentRef = useRef(null); + const resizeHandleRef = useRef(null); const getViewportWidth = () => (typeof window !== "undefined" ? window.innerWidth : 1280); @@ -83,6 +88,15 @@ export function ResizablePane({ return () => window.removeEventListener("resize", handleWindowResize); }, [widthKey, clampWidth]); + useLayoutEffect(() => { + const overlay = resizeHandleRef.current; + if (!overlay) return; + + return bindOverlayWheelToScrollContainer(overlay, () => + querySidebarScrollContainer(contentRef.current), + ); + }, [hidden]); + const handleMouseDown = useCallback( (e: React.MouseEvent) => { e.preventDefault(); @@ -134,11 +148,12 @@ export function ResizablePane({ const totalWidth = hidden ? "0px" : `${width}px`; const resizeHandle = !hidden ? (
) : null} {leading ? : null} {label !== undefined ? ( - + {label} {description ? ( @@ -266,7 +266,7 @@ export const SidebarTreeRow = forwardRef children )} {trailing ? ( - + {trailing} ) : null} diff --git a/windows/tauri/src/ui/scroll-area.tsx b/windows/tauri/src/ui/scroll-area.tsx index 501835190..429032ce1 100644 --- a/windows/tauri/src/ui/scroll-area.tsx +++ b/windows/tauri/src/ui/scroll-area.tsx @@ -1,5 +1,10 @@ import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area"; +import { useLayoutEffect, useState } from "react"; import type * as React from "react"; +import { + bindOverlayWheelToScrollContainer, + bindScrollContainerWheel, +} from "@/ui/scroll-container-wheel"; import { cn } from "@/utils/cn"; type ScrollAreaOrientation = "vertical" | "horizontal" | "both"; @@ -28,15 +33,37 @@ function ScrollArea({ ...props }: ScrollAreaProps) { const { ref: viewportRef, style: viewportStyle, ...resolvedViewportProps } = viewportProps ?? {}; + const [rootNode, setRootNode] = useState(null); + const [viewportNode, setViewportNode] = useState(null); + + useLayoutEffect(() => { + if (!viewportNode) return; + return bindScrollContainerWheel(viewportNode); + }, [viewportNode]); + + useLayoutEffect(() => { + if (!rootNode) return; + return bindOverlayWheelToScrollContainer(rootNode, () => viewportNode); + }, [rootNode, viewportNode]); + + const setViewportRef = (node: HTMLDivElement | null) => { + setViewportNode(node); + if (typeof viewportRef === "function") { + viewportRef(node); + } else if (viewportRef) { + viewportRef.current = node; + } + }; return ( { + test("treats pixel wheel deltas as pixels", () => { + expect( + getWheelDeltaPixels( + { deltaX: 0, deltaY: 120, deltaMode: 0 }, + { lineHeight: 16, pageWidth: 240, pageHeight: 400 }, + ), + ).toEqual({ x: 0, y: 120 }); + }); + + test("converts line and page wheel deltas to pixels", () => { + expect( + getWheelDeltaPixels( + { deltaX: 0, deltaY: 3, deltaMode: 1 }, + { lineHeight: 20, pageWidth: 240, pageHeight: 400 }, + ), + ).toEqual({ x: 0, y: 60 }); + expect( + getWheelDeltaPixels( + { deltaX: 0, deltaY: 1, deltaMode: 2 }, + { lineHeight: 20, pageWidth: 240, pageHeight: 400 }, + ), + ).toEqual({ x: 0, y: 400 }); + }); + + test("keeps horizontal project-switch gestures from capturing vertical scroll", () => { + expect(isMostlyVerticalWheel(40, 8)).toBe(false); + expect(isMostlyVerticalWheel(8, 40)).toBe(true); + }); + + test("moves a nested overflow container that Chromium would otherwise latch onto a row", () => { + const element = { + scrollTop: 0, + scrollHeight: 800, + clientHeight: 200, + }; + + expect(applyVerticalWheelToScrollContainer(element, 80)).toBe(true); + expect(element.scrollTop).toBe(80); + }); + + test("does not consume wheel events at the scroll boundary", () => { + const element = { + scrollTop: 0, + scrollHeight: 800, + clientHeight: 200, + }; + + expect(applyVerticalWheelToScrollContainer(element, -40)).toBe(false); + expect(element.scrollTop).toBe(0); + + element.scrollTop = 600; + expect(applyVerticalWheelToScrollContainer(element, 40)).toBe(false); + expect(element.scrollTop).toBe(600); + }); +}); diff --git a/windows/tauri/src/ui/scroll-container-wheel.ts b/windows/tauri/src/ui/scroll-container-wheel.ts new file mode 100644 index 000000000..be5fe2d07 --- /dev/null +++ b/windows/tauri/src/ui/scroll-container-wheel.ts @@ -0,0 +1,114 @@ +const DOM_DELTA_LINE = 1; +const DOM_DELTA_PAGE = 2; + +// Chromium/WebView2 can latch wheel events onto overflow:hidden tree rows +// instead of the sidebar scroller. Apply the delta to the real container. + +export const SIDEBAR_SCROLL_CONTAINER_SELECTOR = + "[data-slot='scroll-area-viewport'], [data-scroll-container], .file-tree-container"; + +interface WheelDeltaEvent { + deltaX: number; + deltaY: number; + deltaMode: number; +} + +interface WheelDeltaMetrics { + lineHeight: number; + pageWidth: number; + pageHeight: number; +} + +interface VerticalScrollContainer { + scrollTop: number; + scrollHeight: number; + clientHeight: number; +} + +export function isMostlyVerticalWheel(deltaX: number, deltaY: number) { + return Math.abs(deltaY) >= Math.abs(deltaX); +} + +export function getWheelDeltaPixels(event: WheelDeltaEvent, metrics: WheelDeltaMetrics) { + if (event.deltaMode === DOM_DELTA_LINE) { + return { + x: event.deltaX * metrics.lineHeight, + y: event.deltaY * metrics.lineHeight, + }; + } + + if (event.deltaMode === DOM_DELTA_PAGE) { + return { + x: event.deltaX * metrics.pageWidth, + y: event.deltaY * metrics.pageHeight, + }; + } + + return { x: event.deltaX, y: event.deltaY }; +} + +export function applyVerticalWheelToScrollContainer( + element: VerticalScrollContainer, + deltaY: number, +) { + if (deltaY === 0) return false; + + const maxScrollTop = Math.max(0, element.scrollHeight - element.clientHeight); + const nextScrollTop = Math.max(0, Math.min(maxScrollTop, element.scrollTop + deltaY)); + if (nextScrollTop === element.scrollTop) return false; + + element.scrollTop = nextScrollTop; + return true; +} + +function getLineHeight(element: HTMLElement) { + const lineHeight = Number.parseFloat(getComputedStyle(element).lineHeight); + return Number.isFinite(lineHeight) && lineHeight > 0 ? lineHeight : 16; +} + +function applyVerticalWheelEvent(element: HTMLElement, event: WheelEvent) { + if (event.ctrlKey || event.metaKey || event.defaultPrevented) return false; + if (!isMostlyVerticalWheel(event.deltaX, event.deltaY)) return false; + + const delta = getWheelDeltaPixels(event, { + lineHeight: getLineHeight(element), + pageWidth: element.clientWidth, + pageHeight: element.clientHeight, + }); + + return applyVerticalWheelToScrollContainer(element, delta.y); +} + +export function bindScrollContainerWheel(element: HTMLElement) { + const onWheel = (event: WheelEvent) => { + if (!applyVerticalWheelEvent(element, event)) return; + event.preventDefault(); + }; + + element.addEventListener("wheel", onWheel, { capture: true, passive: false }); + return () => { + element.removeEventListener("wheel", onWheel, { capture: true }); + }; +} + +export function bindOverlayWheelToScrollContainer( + overlay: HTMLElement, + getScrollContainer: () => HTMLElement | null, +) { + const onWheel = (event: WheelEvent) => { + const element = getScrollContainer(); + if (!element) return; + if (!applyVerticalWheelEvent(element, event)) return; + event.preventDefault(); + }; + + overlay.addEventListener("wheel", onWheel, { passive: false }); + return () => { + overlay.removeEventListener("wheel", onWheel); + }; +} + +export function querySidebarScrollContainer(root: ParentNode | null) { + if (!root) return null; + return root.querySelector(SIDEBAR_SCROLL_CONTAINER_SELECTOR); +} From b277a62e215ed19628dca26e0ba9d36eda20f907 Mon Sep 17 00:00:00 2001 From: yager-42 <331382125@qq.com> Date: Mon, 17 Aug 2026 22:29:13 +0800 Subject: [PATCH 58/83] fix(macOS): support project-scoped run paths --- Resources/zh-Hans.lproj/Localizable.strings | 2 + Sources/Lithe/Core/Rust/RustCoreBridge.swift | 6 +- .../Services/Java/ProjectRuntimeService.swift | 30 +++++-- .../Run/JavaRunConfigurationEditorView.swift | 53 ++++++++++-- .../Services/RunService.swift | 6 -- Tests/LitheTests/MavenRuntimeTests.swift | 37 +++++++++ .../RunConfigurationIntegrationTests.swift | 81 ++++++++++++++++++- .../lithe-core/src/execution/configuration.rs | 32 ++++++-- .../lithe-core/src/tests/run_configuration.rs | 60 ++++++++++++++ shared/contracts/rust-core-api.md | 3 + 10 files changed, 282 insertions(+), 28 deletions(-) diff --git a/Resources/zh-Hans.lproj/Localizable.strings b/Resources/zh-Hans.lproj/Localizable.strings index 11986ab4e..c1fb47ecd 100644 --- a/Resources/zh-Hans.lproj/Localizable.strings +++ b/Resources/zh-Hans.lproj/Localizable.strings @@ -604,6 +604,8 @@ "Program arguments" = "程序参数"; "Active Maven Profiles" = "启用的 Maven Profiles"; "Reset" = "重置"; +"Project paths must stay inside the current project." = "项目路径必须位于当前项目内。"; +"Open a project before choosing project paths." = "请先打开项目,再选择项目路径。"; "Local History" = "本地历史"; "Project Local History" = "项目本地历史"; "Restore" = "恢复"; diff --git a/Sources/Lithe/Core/Rust/RustCoreBridge.swift b/Sources/Lithe/Core/Rust/RustCoreBridge.swift index 0eb627541..4b912198b 100644 --- a/Sources/Lithe/Core/Rust/RustCoreBridge.swift +++ b/Sources/Lithe/Core/Rust/RustCoreBridge.swift @@ -2232,9 +2232,9 @@ struct RustCoreBridge: Sendable { arguments: options.arguments, environment: options.environment, mavenProfiles: options.activeProfiles.sorted(), - javaHomePath: scope == .local ? options.javaHomePath : "", - mavenExecutablePath: scope == .local ? options.mavenExecutablePath : "", - mavenJavaHomePath: scope == .local ? options.mavenJavaHomePath : "" + javaHomePath: options.javaHomePath, + mavenExecutablePath: options.mavenExecutablePath, + mavenJavaHomePath: options.mavenJavaHomePath ) ) } diff --git a/Sources/Lithe/Services/Java/ProjectRuntimeService.swift b/Sources/Lithe/Services/Java/ProjectRuntimeService.swift index 81da7e31e..598cf31ac 100644 --- a/Sources/Lithe/Services/Java/ProjectRuntimeService.swift +++ b/Sources/Lithe/Services/Java/ProjectRuntimeService.swift @@ -114,9 +114,11 @@ final class ProjectRuntimeService: ObservableObject { } func javaHomeURL(overridePath: String? = nil) -> URL? { - if let overridePath, - !normalizedPath(overridePath).isEmpty { - return runtimeLocator.validJavaHome(path: normalizedPath(overridePath)) + if let overridePath { + let normalizedPath = normalizedOverridePath(overridePath) + if !normalizedPath.isEmpty { + return runtimeLocator.validJavaHome(path: normalizedPath) + } } let paths = [runtimeLocator.environment()["JAVA_HOME"]] for path in paths.compactMap({ $0 }).map(normalizedPath).filter({ !$0.isEmpty }) { @@ -137,8 +139,9 @@ final class ProjectRuntimeService: ObservableObject { /// probes `java -version`, so capability checks can remain inert. func configuredJavaExecutableURL(overridePath: String? = nil) -> URL? { let paths: [String?] - if let overridePath, !normalizedPath(overridePath).isEmpty { - paths = [overridePath] + if let overridePath { + let normalizedPath = normalizedOverridePath(overridePath) + paths = normalizedPath.isEmpty ? [runtimeLocator.environment()["JAVA_HOME"]] : [normalizedPath] } else { paths = [runtimeLocator.environment()["JAVA_HOME"]] } @@ -167,9 +170,11 @@ final class ProjectRuntimeService: ObservableObject { } func mavenJavaHomeURL(overridePath: String? = nil) -> URL? { - if let overridePath, - !normalizedPath(overridePath).isEmpty { - return runtimeLocator.validJavaHome(path: normalizedPath(overridePath)) + if let overridePath { + let normalizedPath = normalizedOverridePath(overridePath) + if !normalizedPath.isEmpty { + return runtimeLocator.validJavaHome(path: normalizedPath) + } } let paths = [runtimeLocator.environment()["JAVA_HOME"]] for path in paths.compactMap({ $0 }).map(normalizedPath).filter({ !$0.isEmpty }) { @@ -387,6 +392,15 @@ final class ProjectRuntimeService: ObservableObject { return result } + private func normalizedOverridePath(_ path: String) -> String { + let trimmedPath = path.trimmingCharacters(in: .whitespacesAndNewlines) + guard !trimmedPath.isEmpty else { return "" } + let normalized = normalizedPath(trimmedPath) + guard !(normalized as NSString).isAbsolutePath, + let projectURL else { return normalized } + return projectURL.appendingPathComponent(normalized).standardizedFileURL.path + } + private func normalizedPath(_ path: String) -> String { ((path as NSString).expandingTildeInPath as NSString).standardizingPath } diff --git a/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift b/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift index 64c83f919..e47d68637 100644 --- a/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift +++ b/Sources/Lithe/Views/Run/JavaRunConfigurationEditorView.swift @@ -62,7 +62,8 @@ struct RunConfigurationEditorView: View { } Button("Done") { options.environment = Self.environment(from: environmentText) - if feature.updateOptions(options, for: configuration, scope: saveScope) { + guard let scopedOptions = scopedOptionsForSave() else { return } + if feature.updateOptions(scopedOptions, for: configuration, scope: saveScope) { dismiss() } else { saveError = feature.configurationSaveError @@ -170,7 +171,6 @@ struct RunConfigurationEditorView: View { text: stringBinding(\.javaHomePath), chooseDirectory: { chooseDirectory(for: \.javaHomePath) } ) - .disabled(saveScope == .project) } if configuration.kind.isMavenBacked { pathRow( @@ -180,14 +180,12 @@ struct RunConfigurationEditorView: View { chooseDirectory: { chooseFileOrDirectory(for: \.mavenExecutablePath) }, chooseHelp: "Choose Maven executable or home" ) - .disabled(saveScope == .project) pathRow( title: "Maven JDK Home", placeholder: "Use service JDK", text: stringBinding(\.mavenJavaHomePath), chooseDirectory: { chooseDirectory(for: \.mavenJavaHomePath) } ) - .disabled(saveScope == .project) } pathRow( title: "Working directory", @@ -354,7 +352,17 @@ struct RunConfigurationEditorView: View { switch result { case .success(let url): guard let activePathPicker else { return } - options[keyPath: activePathPicker.keyPath] = url.path + if saveScope == .project { + guard let projectURL = model.workspaceURL, + let path = projectRelativePath(url.path, root: projectURL) else { + saveError = String(localized: "Project paths must stay inside the current project.") + return + } + options[keyPath: activePathPicker.keyPath] = path + } else { + options[keyPath: activePathPicker.keyPath] = url.path + } + saveError = nil case .failure(let error): let cocoaError = error as NSError guard !(cocoaError.domain == NSCocoaErrorDomain && cocoaError.code == NSUserCancelledError) else { return } @@ -362,6 +370,41 @@ struct RunConfigurationEditorView: View { } } + private func scopedOptionsForSave() -> RunOptions? { + guard saveScope == .project else { return options } + guard let projectURL = model.workspaceURL else { + saveError = String(localized: "Open a project before choosing project paths.") + return nil + } + var scopedOptions = options + for keyPath in [ + \.javaHomePath, + \.mavenExecutablePath, + \.mavenJavaHomePath, + \.workingDirectoryPath + ] as [WritableKeyPath] { + let value = scopedOptions[keyPath: keyPath].trimmingCharacters(in: .whitespacesAndNewlines) + guard !value.isEmpty else { continue } + guard let relativePath = projectRelativePath(value, root: projectURL) else { + saveError = String(localized: "Project paths must stay inside the current project.") + return nil + } + scopedOptions[keyPath: keyPath] = relativePath + } + return scopedOptions + } + + private func projectRelativePath(_ path: String, root: URL) -> String? { + let expandedPath = (path as NSString).expandingTildeInPath + guard (expandedPath as NSString).isAbsolutePath else { return path } + let rootPath = root.standardizedFileURL.path + let selectedPath = URL(fileURLWithPath: expandedPath).standardizedFileURL.path + if selectedPath == rootPath { return "." } + let prefix = rootPath.hasSuffix("/") ? rootPath : rootPath + "/" + guard selectedPath.hasPrefix(prefix) else { return nil } + return String(selectedPath.dropFirst(prefix.count)) + } + private enum PathPicker { case directory(WritableKeyPath) case fileOrDirectory(WritableKeyPath) diff --git a/Sources/LitheExecutionModule/Services/RunService.swift b/Sources/LitheExecutionModule/Services/RunService.swift index e39407bfd..16cc663fb 100644 --- a/Sources/LitheExecutionModule/Services/RunService.swift +++ b/Sources/LitheExecutionModule/Services/RunService.swift @@ -300,12 +300,6 @@ package final class RunService: ObservableObject { scope: RunConfigurationSaveScope = .local ) -> Bool { configurationSaveError = nil - var options = options - if scope == .project { - options.javaHomePath = "" - options.mavenExecutablePath = "" - options.mavenJavaHomePath = "" - } if configurationStatus == .ready, let projectURL { do { try runConfigurationOperations.saveOptions( diff --git a/Tests/LitheTests/MavenRuntimeTests.swift b/Tests/LitheTests/MavenRuntimeTests.swift index e99e3eec2..9b6c4cdbd 100644 --- a/Tests/LitheTests/MavenRuntimeTests.swift +++ b/Tests/LitheTests/MavenRuntimeTests.swift @@ -88,6 +88,24 @@ struct MavenRuntimeTests { #expect(modules.map { $0.module.relativePath } == ["service"]) } + @Test + @MainActor + func projectRelativeJavaOverridesResolveAgainstProjectRoot() { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("lithe-project-relative-runtime", isDirectory: true) + .standardizedFileURL + let javaHome = root.appendingPathComponent("toolchains/jdk", isDirectory: true).standardizedFileURL + let mavenJavaHome = root.appendingPathComponent("toolchains/maven-jdk", isDirectory: true).standardizedFileURL + let service = ProjectRuntimeService( + runtimeLocator: ProjectRelativeRuntimeLocator(validJavaHomes: [javaHome.path, mavenJavaHome.path]), + store: EmptyKeyValueStore() + ) + service.openProject(at: root) + + #expect(service.javaHomeURL(overridePath: "toolchains/jdk") == javaHome) + #expect(service.mavenJavaHomeURL(overridePath: "toolchains/maven-jdk") == mavenJavaHome) + } + @Test @MainActor func canceledRuntimeDiscoveryClearsDiscoveringState() async throws { @@ -111,6 +129,25 @@ struct MavenRuntimeTests { } } +private struct ProjectRelativeRuntimeLocator: RuntimeLocator { + let validJavaHomes: Set + + func environment() -> [String: String] { [:] } + func discover() -> RuntimeDiscoveryResult { + RuntimeDiscoveryResult(javaRuntimes: [], mavenRuntimes: []) + } + func validJavaHome(path: String) -> URL? { + validJavaHomes.contains(path) ? URL(fileURLWithPath: path, isDirectory: true) : nil + } + func javaRuntime(at homeURL: URL) -> JavaRuntimeCandidate? { nil } + func isExecutable(at url: URL) -> Bool { false } + func systemMavenExecutable() -> URL? { nil } + func mavenExecutable(forHomePath path: String) -> URL? { nil } + func mavenRuntime(at executableURL: URL) -> MavenRuntimeCandidate? { nil } + func systemJDBExecutable() -> URL? { nil } + func javaLanguageServerExecutable() -> URL? { nil } +} + private final class BlockingRuntimeLocator: RuntimeLocator, @unchecked Sendable { private let lock = NSLock() private let releaseSemaphore = DispatchSemaphore(value: 0) diff --git a/Tests/LitheTests/RunConfigurationIntegrationTests.swift b/Tests/LitheTests/RunConfigurationIntegrationTests.swift index b22a2a149..3aacf6c28 100644 --- a/Tests/LitheTests/RunConfigurationIntegrationTests.swift +++ b/Tests/LitheTests/RunConfigurationIntegrationTests.swift @@ -2987,6 +2987,47 @@ struct RunConfigurationIntegrationTests { #expect(options.mavenJavaHomePath == "/test/maven-jdk") } + @Test + func projectToolchainSelectionsPersistAsProjectRelativePaths() throws { + let core = RustCoreBridge() + guard core.isAvailable else { return } + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("lithe-project-toolchains-\(UUID().uuidString)", isDirectory: true) + defer { try? FileManager.default.removeItem(at: root) } + for path in [".lithe/run", "toolchains/jdk", "toolchains/maven/bin", "toolchains/maven-jdk"] { + try FileManager.default.createDirectory( + at: root.appendingPathComponent(path, isDirectory: true), + withIntermediateDirectories: true + ) + } + try Data("#!/bin/sh\n".utf8) + .write(to: root.appendingPathComponent("toolchains/maven/bin/mvn")) + try Data(#"{"version":2,"configurations":[{"id":"spring","name":"Spring","provider":"spring-boot.maven","execution":"service","toolchains":{"java":"project-jdk","maven":"project-maven"},"extensions":{"maven":{"module":"."}}}]}"#.utf8) + .write(to: root.appendingPathComponent(".lithe/run/generated.json")) + let store = MacRunConfigurationStore( + core: core, + storage: MacFileStorage(), + preferences: RunTestKeyValueStore() + ) + + try store.saveOptions( + RunOptions( + javaHomePath: root.appendingPathComponent("toolchains/jdk").path, + mavenExecutablePath: root.appendingPathComponent("toolchains/maven/bin/mvn").path, + mavenJavaHomePath: root.appendingPathComponent("toolchains/maven-jdk").path + ), + configurationID: "spring", + scope: .project, + at: root + ) + + let resolved = try store.resolve(at: root, toolchainCandidates: []) + let options = try #require(resolved.configurations.first { $0.configuration.id == "spring" }?.options) + #expect(options.javaHomePath == "toolchains/jdk") + #expect(options.mavenExecutablePath == "toolchains/maven/bin/mvn") + #expect(options.mavenJavaHomePath == "toolchains/maven-jdk") + } + @Test func goRuntimeToolchainFlowsFromSharedJSONIntoProcessRequest() async throws { let core = RustCoreBridge() @@ -3391,6 +3432,39 @@ struct RunConfigurationIntegrationTests { ) == nil) } + @Test + func projectOptionUpdateForwardsSelectedToolchainPaths() async { + let configuration = JavaRunConfiguration( + id: "spring", + name: "Spring", + kind: .springBoot, + modulePath: ".", + mainClass: nil + ) + let fixture = makeFixture( + status: .ready, + effective: [EffectiveRunConfiguration( + configuration: configuration, + options: RunOptions(), + source: .generated + )] + ) + await fixture.service.loadProject( + at: fixture.root, + files: [], + mavenProject: fixture.mavenProject + ) + let options = RunOptions( + javaHomePath: "toolchains/jdk", + mavenExecutablePath: "toolchains/maven/bin/mvn", + mavenJavaHomePath: "toolchains/maven-jdk" + ) + + #expect(fixture.service.updateOptions(options, for: configuration, scope: .project)) + #expect(fixture.operations.savedOptions == [options]) + #expect(fixture.operations.savedScopes == [.project]) + } + @Test func appOwnedFileEventSuppressionIsOneShotAndExpires() { let first = URL(fileURLWithPath: "/tmp/lithe-self-write-one.json") @@ -3570,6 +3644,8 @@ private final class RecordingRunConfigurationOperations: RunConfigurationOperati private(set) var debugPorts: [Int?] = [] private(set) var createdDrafts: [RunConfigurationDraft] = [] private(set) var lastToolchainCandidates: [ProjectToolchainCandidate] = [] + private(set) var savedOptions: [RunOptions] = [] + private(set) var savedScopes: [RunConfigurationSaveScope] = [] init( status: ProjectRunConfigurationStatus, @@ -3622,7 +3698,10 @@ private final class RecordingRunConfigurationOperations: RunConfigurationOperati configurationID: String, scope: RunConfigurationSaveScope, at projectURL: URL - ) throws {} + ) throws { + savedOptions.append(options) + savedScopes.append(scope) + } func createConfiguration(_ draft: RunConfigurationDraft, at projectURL: URL) throws -> String { createdDrafts.append(draft) let slug = draft.name.lowercased().replacingOccurrences(of: " ", with: "-") diff --git a/rust/lithe-core/src/execution/configuration.rs b/rust/lithe-core/src/execution/configuration.rs index 7e71ebe8b..e22eac633 100644 --- a/rust/lithe-core/src/execution/configuration.rs +++ b/rust/lithe-core/src/execution/configuration.rs @@ -877,6 +877,12 @@ pub fn update_options(request: UpdateOptionsRequest) -> Result CoreError::new(ErrorCode::InvalidRequest, "Run configuration was not found") })?; let uses_maven_capability = is_maven_backed(provider); + let java_home_path = + normalize_scoped_toolchain_path(&root, &request.scope, &request.java_home_path)?; + let maven_executable_path = + normalize_scoped_toolchain_path(&root, &request.scope, &request.maven_executable_path)?; + let maven_java_home_path = + normalize_scoped_toolchain_path(&root, &request.scope, &request.maven_java_home_path)?; let working_directory = normalize_project_directory( &root, if request.working_directory.trim().is_empty() { @@ -905,14 +911,14 @@ pub fn update_options(request: UpdateOptionsRequest) -> Result "profiles": request.maven_profiles.into_iter().collect::>() }, "java": { - "homePath": request.java_home_path, - "mavenExecutablePath": request.maven_executable_path, - "mavenJavaHomePath": request.maven_java_home_path + "homePath": java_home_path, + "mavenExecutablePath": maven_executable_path, + "mavenJavaHomePath": maven_java_home_path } }); - } else if !request.java_home_path.is_empty() { + } else if !java_home_path.is_empty() { patch["extensions"] = json!({ - "java": { "homePath": request.java_home_path } + "java": { "homePath": java_home_path } }); } else { patch["args"] = json!(split_arguments(&request.arguments)); @@ -1612,6 +1618,22 @@ fn scope_document(scope: &str) -> Result<&'static str, CoreError> { } } +fn normalize_scoped_toolchain_path( + root: &Path, + scope: &str, + value: &str, +) -> Result { + let value = value.trim(); + if value.is_empty() { + return Ok(String::new()); + } + if scope == "project" { + normalize_project_directory(root, value, true) + } else { + Ok(value.to_string()) + } +} + fn normalize_project_directory( root: &Path, value: &str, diff --git a/rust/lithe-core/src/tests/run_configuration.rs b/rust/lithe-core/src/tests/run_configuration.rs index 2ccaf38ae..6b56d7668 100644 --- a/rust/lithe-core/src/tests/run_configuration.rs +++ b/rust/lithe-core/src/tests/run_configuration.rs @@ -557,6 +557,66 @@ fn run_configuration_mutations_are_shared_and_validated() { fs::remove_dir_all(root).unwrap(); } +#[test] +fn project_scoped_toolchain_paths_are_relative_and_stay_inside_the_project() { + let root = temporary_root("run-config-project-toolchains"); + let outside = temporary_root("run-config-outside-toolchain"); + fs::create_dir_all(root.join(".lithe/run")).unwrap(); + fs::create_dir_all(root.join("toolchains/jdk")).unwrap(); + fs::create_dir_all(root.join("toolchains/maven/bin")).unwrap(); + fs::create_dir_all(root.join("toolchains/maven-jdk")).unwrap(); + fs::create_dir_all(&outside).unwrap(); + fs::write(root.join("toolchains/maven/bin/mvn"), "#!/bin/sh\n").unwrap(); + fs::write( + root.join(".lithe/run/generated.json"), + r#"{"version":2,"configurations":[{"id":"spring","name":"Spring","provider":"spring-boot.maven","execution":"service","toolchains":{"java":"project-jdk","maven":"project-maven"},"extensions":{"maven":{"module":"."}}}]}"#, + ) + .unwrap(); + + let updated: Value = serde_json::from_str(&execute_json( + &serde_json::json!({ + "id": "project-toolchains", + "command": "runConfig.updateOptions", + "payload": { + "root": root, + "scope": "project", + "configurationId": "spring", + "javaHomePath": root.join("toolchains/jdk"), + "mavenExecutablePath": root.join("toolchains/maven/bin/mvn"), + "mavenJavaHomePath": root.join("toolchains/maven-jdk") + } + }) + .to_string(), + )) + .unwrap(); + assert_eq!(updated["ok"], true, "{updated}"); + let document: Value = + serde_json::from_str(updated["data"]["document"].as_str().unwrap()).unwrap(); + let java = &document["configurations"][0]["extensions"]["java"]; + assert_eq!(java["homePath"], "toolchains/jdk"); + assert_eq!(java["mavenExecutablePath"], "toolchains/maven/bin/mvn"); + assert_eq!(java["mavenJavaHomePath"], "toolchains/maven-jdk"); + + let rejected: Value = serde_json::from_str(&execute_json( + &serde_json::json!({ + "id": "outside-project-toolchain", + "command": "runConfig.updateOptions", + "payload": { + "root": root, + "scope": "project", + "configurationId": "spring", + "javaHomePath": outside + } + }) + .to_string(), + )) + .unwrap(); + assert_eq!(rejected["ok"], false, "{rejected}"); + + fs::remove_dir_all(root).unwrap(); + fs::remove_dir_all(outside).unwrap(); +} + #[test] fn run_configuration_generation_detects_declared_toolchain_versions() { let root = temporary_root("run-config-toolchains"); diff --git a/shared/contracts/rust-core-api.md b/shared/contracts/rust-core-api.md index c5e2e170a..9d67fcb20 100644 --- a/shared/contracts/rust-core-api.md +++ b/shared/contracts/rust-core-api.md @@ -406,6 +406,9 @@ document transformations. They validate scope, paths, supported types, stable IDs, main classes, modules, and argument parsing, then return UTF-8 JSON in the `document` field. The platform adapter selects the target project or local file and performs the atomic write. These commands never write files. +For project-scoped option updates, selected toolchain paths must resolve inside +`root` and are persisted with `/`-separated project-relative paths. Local-scoped +updates may carry host absolute paths. `runConfig.createLaunchPlan` accepts `root`, `configurationId`, optional `currentFile` and `classPath`, and optional `debugPort`. It returns a toolchain From da396eaa20ab78982b433065ccdb57405766cef4 Mon Sep 17 00:00:00 2001 From: arkleselect Date: Tue, 18 Aug 2026 09:48:47 +0800 Subject: [PATCH 59/83] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E5=8D=95?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BC=96=E8=BE=91=E5=99=A8=E5=92=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Info.plist | 40 +++ .../Features/DocumentFeatureModel.swift | 122 +++++++ Sources/Lithe/LitheApp.swift | 80 ++++- .../AppModel/AppModel+FeatureState.swift | 3 + Sources/Lithe/Models/AppModel/AppModel.swift | 41 ++- .../Workspace/ProjectSessionManager.swift | 29 ++ .../Workspace/WorkspaceTextFilePolicy.swift | 2 + Sources/Lithe/Theme/LitheTheme.swift | 39 ++- Sources/Lithe/Views/App/RootView.swift | 51 ++- Sources/Lithe/Views/App/WelcomeView.swift | 4 +- .../Views/Components/LitheContextMenu.swift | 303 ++++++++++++++++++ .../Components/LitheToolWindowHeader.swift | 6 +- .../Lithe/Views/Editor/CodeEditorView.swift | 218 +++++++++++-- .../Views/Editor/StandaloneEditorView.swift | 120 +++++++ .../Views/Workbench/SplitHandleView.swift | 75 +++-- .../Lithe/Views/Workbench/WorkbenchView.swift | 25 +- .../Views/Workspace/ProjectSidebarView.swift | 189 ++++++----- Tests/LitheTests/LitheCoreLogicTests.swift | 99 +++++- 18 files changed, 1276 insertions(+), 170 deletions(-) create mode 100644 Sources/Lithe/Views/Components/LitheContextMenu.swift create mode 100644 Sources/Lithe/Views/Editor/StandaloneEditorView.swift diff --git a/Resources/Info.plist b/Resources/Info.plist index 2d67ff9cf..4a9ee1237 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -23,6 +23,46 @@ Lithe CFBundleIconFile AppIcon + CFBundleDocumentTypes + + + CFBundleTypeName + Plain Text Document + CFBundleTypeRole + Editor + LSHandlerRank + Alternate + LSItemContentTypes + + public.text + public.plain-text + public.source-code + net.daringfireball.markdown + + CFBundleTypeExtensions + + txt + md + markdown + java + json + xml + yaml + yml + toml + rs + swift + kt + js + ts + tsx + jsx + css + html + sql + + + CFBundleIdentifier app.lithe.desktop CFBundleInfoDictionaryVersion diff --git a/Sources/Lithe/Application/Features/DocumentFeatureModel.swift b/Sources/Lithe/Application/Features/DocumentFeatureModel.swift index 208153181..1ac12f9b4 100644 --- a/Sources/Lithe/Application/Features/DocumentFeatureModel.swift +++ b/Sources/Lithe/Application/Features/DocumentFeatureModel.swift @@ -1,12 +1,53 @@ import Combine import Foundation +enum StandaloneFileOpenFailure: Error, Equatable { + case unavailable + case directory + case tooLarge + case notText + case readFailed + + var title: String { + switch self { + case .unavailable: "File is not available" + case .directory: "Folders cannot be opened as text" + case .tooLarge: "File is too large to open" + case .notText: "This file cannot be displayed as text" + case .readFailed: "Could not read this file" + } + } + + var detail: String { + switch self { + case .unavailable: + "The file no longer exists or Lithe does not have access to it." + case .directory: + "Open a text file instead of a folder." + case .tooLarge: + "Standalone text files are limited to 32 MB." + case .notText: + "Only UTF-8 text files are supported in the standalone editor." + case .readFailed: + "The file could not be read. Check its permissions and try again." + } + } +} + +enum StandaloneFileLoadState: Equatable { + case idle + case loading + case loaded + case failed(StandaloneFileOpenFailure) +} + /// Owns editor document lifecycle and persistence-facing state. Java services, /// local history, and UI notifications are supplied as callbacks by AppModel. @MainActor final class DocumentFeatureModel: ObservableObject { @Published private(set) var openDocuments: [EditorDocument] = [] @Published var activeDocumentID: UUID? + @Published private(set) var standaloneFileLoadState: StandaloneFileLoadState = .idle @Published private(set) var pendingCloseDocument: EditorDocument? @Published private(set) var isPendingProjectClose = false @@ -31,6 +72,8 @@ final class DocumentFeatureModel: ObservableObject { private var latestFileOpenRequestID: UUID? private var pendingCloseQueue: [EditorDocument] = [] private var pendingClosePreferredDocumentID: UUID? + private var standaloneOpenRequestID: UUID? + private var standaloneOpenTask: Task? init( operations: any WorkspaceOperations, @@ -82,6 +125,9 @@ final class DocumentFeatureModel: ObservableObject { } func reset() { + standaloneOpenTask?.cancel() + standaloneOpenTask = nil + standaloneOpenRequestID = nil autoSaveTasks.values.forEach { $0.cancel() } autoSaveTasks.removeAll() pendingFileOpenRequests.removeAll() @@ -92,6 +138,7 @@ final class DocumentFeatureModel: ObservableObject { isPendingProjectClose = false openDocuments = [] activeDocumentID = nil + standaloneFileLoadState = .idle } func openFile( @@ -120,6 +167,81 @@ final class DocumentFeatureModel: ObservableObject { ) } } + func openStandaloneFile(_ url: URL) { + let normalizedURL = url.standardizedFileURL + if let existing = openDocuments.first(where: { $0.url == normalizedURL }) { + activeDocumentID = existing.id + standaloneFileLoadState = .loaded + return + } + + standaloneOpenTask?.cancel() + let requestID = UUID() + standaloneOpenRequestID = requestID + standaloneFileLoadState = .loading + openDocuments = [] + activeDocumentID = nil + let fileStorage = self.fileStorage + standaloneOpenTask = Task { [weak self] in + guard let self else { return } + let result = await Task.detached(priority: .userInitiated) { + Self.readStandaloneFile(at: normalizedURL, using: fileStorage) + }.value + + guard self.standaloneOpenRequestID == requestID else { return } + self.standaloneOpenTask = nil + + guard case let .success(text) = result else { + if case let .failure(failure) = result { + self.standaloneFileLoadState = .failed(failure) + } + return + } + + let document = EditorDocument( + url: normalizedURL, + text: text, + modificationDate: EditorDocument.modificationDate(for: normalizedURL), + isReadOnly: false + ) + self.openDocuments = [document] + self.activeDocumentID = document.id + self.standaloneFileLoadState = .loaded + self.onDocumentCollectionChanged?() + self.onDocumentOpened?(document) + } + } + + nonisolated private static func readStandaloneFile( + at url: URL, + using fileStorage: any FileStorage + ) -> Result { + guard let metadata = fileStorage.metadata(for: url) else { + return .failure(.unavailable) + } + guard !metadata.isDirectory else { return .failure(.directory) } + guard metadata.isRegularFile else { return .failure(.unavailable) } + if let byteCount = metadata.byteCount, + byteCount > WorkspaceTextFilePolicy.standaloneFileByteLimit { + return .failure(.tooLarge) + } + + let data: Data + do { + data = try fileStorage.readData(from: url, options: []) + } catch { + return .failure(.readFailed) + } + guard data.count <= WorkspaceTextFilePolicy.standaloneFileByteLimit else { + return .failure(.tooLarge) + } + guard let text = String(data: data, encoding: .utf8), + WorkspaceTextFilePolicy.isPlainText(text) else { + return .failure(.notText) + } + return .success(text) + } + func openFileAsync( _ normalizedURL: URL, isReadOnly: Bool, diff --git a/Sources/Lithe/LitheApp.swift b/Sources/Lithe/LitheApp.swift index b5d01dfc6..ce0a5ebb6 100644 --- a/Sources/Lithe/LitheApp.swift +++ b/Sources/Lithe/LitheApp.swift @@ -5,7 +5,15 @@ private let litheProcessLaunchDate = Date() @MainActor final class LitheAppDelegate: NSObject, NSApplicationDelegate { - weak var projectSessions: ProjectSessionManager? + private var pendingFileURLs: [URL] = [] + weak var projectSessions: ProjectSessionManager? { + didSet { + guard let projectSessions else { return } + let pendingURLs = pendingFileURLs + pendingFileURLs.removeAll() + pendingURLs.forEach { projectSessions.openStandaloneFile($0) } + } + } var recordCleanPluginShutdown: (() -> Void)? var authorizationCallbackRouter: MacExternalAuthorizationCallbackRouter? @@ -13,12 +21,27 @@ final class LitheAppDelegate: NSObject, NSApplicationDelegate { true } + func applicationWillFinishLaunching(_ notification: Notification) { + // SwiftUI normally forwards this event to the delegate methods below, + // but older Finder/AppKit launch paths can bypass that forwarding. + NSAppleEventManager.shared().setEventHandler( + self, + andSelector: #selector(handleOpenDocuments(_:withReplyEvent:)), + forEventClass: AEEventClass(kCoreEventClass), + andEventID: AEEventID(kAEOpenDocuments) + ) + } + func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply { guard let projectSessions else { return .terminateNow } return Self.confirmUnsavedDocuments(for: projectSessions) ? .terminateNow : .terminateCancel } func applicationWillTerminate(_ notification: Notification) { + NSAppleEventManager.shared().removeEventHandler( + forEventClass: AEEventClass(kCoreEventClass), + andEventID: AEEventID(kAEOpenDocuments) + ) projectSessions?.stopAllSessions() recordCleanPluginShutdown?() } @@ -29,7 +52,55 @@ final class LitheAppDelegate: NSObject, NSApplicationDelegate { } func application(_ application: NSApplication, open urls: [URL]) { - urls.forEach { authorizationCallbackRouter?.route($0) } + handleOpenedURLs(urls) + } + + // Finder can deliver document-open Apple Events through these older + // delegate methods, depending on whether the app was already running. + func application(_ sender: NSApplication, openFile filename: String) -> Bool { + handleOpenedURLs([URL(fileURLWithPath: filename)]) + return true + } + + func application(_ sender: NSApplication, openFiles filenames: [String]) { + handleOpenedURLs(filenames.map(URL.init(fileURLWithPath:))) + sender.reply(toOpenOrPrint: .success) + } + + @objc private func handleOpenDocuments( + _ event: NSAppleEventDescriptor, + withReplyEvent replyEvent: NSAppleEventDescriptor? + ) { + guard let fileList = event.paramDescriptor(forKeyword: keyDirectObject) else { return } + + var urls: [URL] = [] + guard fileList.numberOfItems > 0 else { return } + for index in 1...fileList.numberOfItems { + guard let aliasDescriptor = fileList.atIndex(index), + let fileURLDescriptor = aliasDescriptor.coerce(toDescriptorType: typeFileURL), + let url = URL(dataRepresentation: fileURLDescriptor.data, relativeTo: nil) else { + continue + } + urls.append(url) + } + + handleOpenedURLs(urls) + } + + private func handleOpenedURLs(_ urls: [URL]) { + for url in urls { + if url.scheme == "lithe" { + authorizationCallbackRouter?.route(url) + } else if url.isFileURL { + if let projectSessions { + projectSessions.openStandaloneFile(url) + } else if !pendingFileURLs.contains(where: { + $0.standardizedFileURL == url.standardizedFileURL + }) { + pendingFileURLs.append(url.standardizedFileURL) + } + } + } } static func confirmUnsavedDocuments(for projectSessions: ProjectSessionManager) -> Bool { @@ -159,6 +230,11 @@ struct LitheApp: App { } .litheKeyboardShortcut(model.keyboardShortcutFeature.primaryKeyPress(for: "close-project")) .disabled(model.workspaceURL == nil) + + Button("Close File") { + model.closeStandaloneFile() + } + .disabled(model.standaloneFileURL == nil) } CommandGroup(replacing: .appSettings) { diff --git a/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift b/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift index 0f8b0548f..a9878474e 100644 --- a/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift +++ b/Sources/Lithe/Models/AppModel/AppModel+FeatureState.swift @@ -28,6 +28,9 @@ extension AppModel { } var openDocuments: [EditorDocument] { documentFeature.openDocuments } + var standaloneFileLoadState: StandaloneFileLoadState { + documentFeature.standaloneFileLoadState + } var activeDocumentID: UUID? { get { documentFeature.activeDocumentID } set { diff --git a/Sources/Lithe/Models/AppModel/AppModel.swift b/Sources/Lithe/Models/AppModel/AppModel.swift index c4eff7bb3..aa290b83c 100644 --- a/Sources/Lithe/Models/AppModel/AppModel.swift +++ b/Sources/Lithe/Models/AppModel/AppModel.swift @@ -40,6 +40,7 @@ enum SettingsCategory: String, CaseIterable, Identifiable { final class AppModel: ObservableObject, Identifiable { let id = UUID() @Published private(set) var workspaceURL: URL? + @Published private(set) var standaloneFileURL: URL? @Published var selectedSidebar: SidebarDestination = .project { didSet { if selectedSidebar == .changes, oldValue != .changes { @@ -600,10 +601,16 @@ final class AppModel: ObservableObject, Identifiable { self?.withHistoryModule { $0.recordExternalChanges(paths) } }, onDocumentCollectionChanged: { [weak self] in - self?.workspaceFeature.scheduleWorkspaceSessionPersistence() + guard let self, self.workspaceURL != nil else { return } + self.workspaceFeature.scheduleWorkspaceSessionPersistence() }, onProjectCloseReady: { [weak self] in - self?.performCloseProject() + guard let self else { return } + if self.workspaceURL != nil { + self.performCloseProject() + } else if self.standaloneFileURL != nil { + self.performCloseStandaloneFile() + } } ) documentFeatureObservation = documentFeature.objectWillChange.sink { [weak self] _ in @@ -969,6 +976,7 @@ final class AppModel: ObservableObject, Identifiable { gitLogSearchQuery = "" projectHistoryFeatureIfActive?.reset() workspaceURL = normalizedURL + standaloneFileURL = nil let visibilityRules = settings.fileVisibilityRules workspaceFeature.beginWorkspace(at: normalizedURL, visibilityRules: visibilityRules) selectedSidebar = .project @@ -997,6 +1005,14 @@ final class AppModel: ObservableObject, Identifiable { } } + func closeStandaloneFile() { + guard standaloneFileURL != nil else { return } + guard documentFeature.beginProjectClose() else { + performCloseStandaloneFile() + return + } + } + private func performCloseProject() { Task { [weak self] in guard let self else { return } @@ -1010,6 +1026,7 @@ final class AppModel: ObservableObject, Identifiable { } stopAccessingWorkspace() workspaceURL = nil + standaloneFileURL = nil reloadLanguageProviderCatalog(for: nil) selectedSidebar = .project workspaceFeature.reset() @@ -1060,6 +1077,16 @@ final class AppModel: ObservableObject, Identifiable { didCloseProject?() } + private func performCloseStandaloneFile() { + standaloneFileURL = nil + documentFeature.reset() + isFindBarVisible = false + findBarQuery = "" + findMatchCount = 0 + currentFindMatchIndex = 0 + didCloseProject?() + } + private func stopAccessingWorkspace() { guard let securityScopedWorkspaceURL else { return } platformUI.stopAccessingProject(securityScopedWorkspaceURL) @@ -1096,6 +1123,16 @@ final class AppModel: ObservableObject, Identifiable { documentFeature.openFile(url, isReadOnly: isReadOnly, displayPath: displayPath) } + func openStandaloneFile(_ url: URL) { + let normalizedURL = url.standardizedFileURL + workspaceURL = nil + standaloneFileURL = normalizedURL + documentFeature.reset() + isFindBarVisible = false + findBarQuery = "" + documentFeature.openStandaloneFile(normalizedURL) + } + func javaIconKind(for url: URL) async -> LitheIconKind? { await JavaFileIconResolver.resolve(for: url, storage: services.fileStorage) } diff --git a/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift b/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift index 51f39b117..86f90795d 100644 --- a/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift +++ b/Sources/Lithe/Models/Workspace/ProjectSessionManager.swift @@ -65,6 +65,20 @@ final class ProjectSessionManager: ObservableObject { refreshRecentProjects() } + func openStandaloneFile(_ url: URL) { + let model: AppModel + if activeModel.workspaceURL == nil && activeModel.standaloneFileURL == nil { + model = activeModel + } else { + activeModel.setProjectSessionActive(false) + model = modelFactory() + sessions.append(model) + configure(model) + activeSessionID = model.id + } + model.openStandaloneFile(url.standardizedFileURL) + } + func requestOpenProject(_ url: URL, from sourceSessionID: UUID) { let normalizedURL = url.standardizedFileURL if let existing = openProjects.first(where: { @@ -130,6 +144,21 @@ final class ProjectSessionManager: ObservableObject { activeModel.closeProject() } + func requestCloseActiveSession() -> Bool { + if activeModel.workspaceURL != nil { + closeActiveProject() + return false + } + if activeModel.standaloneFileURL != nil { + if activeModel.hasUnsavedDocuments { + activeModel.closeStandaloneFile() + return false + } + return true + } + return true + } + func closeProject(_ id: UUID) { guard sessions.contains(where: { $0.id == id }) else { return } if id != activeSessionID { diff --git a/Sources/Lithe/Models/Workspace/WorkspaceTextFilePolicy.swift b/Sources/Lithe/Models/Workspace/WorkspaceTextFilePolicy.swift index b111bbaa8..c49ab530d 100644 --- a/Sources/Lithe/Models/Workspace/WorkspaceTextFilePolicy.swift +++ b/Sources/Lithe/Models/Workspace/WorkspaceTextFilePolicy.swift @@ -1,6 +1,8 @@ import Foundation enum WorkspaceTextFilePolicy { + static let standaloneFileByteLimit = 32 * 1024 * 1024 + private static let extensions: Set = [ "c", "cc", "cpp", "css", "go", "h", "hpp", "html", "java", "js", "json", "jsx", "kt", "kts", "md", "m", "mm", "php", "plist", "properties", "py", "rb", diff --git a/Sources/Lithe/Theme/LitheTheme.swift b/Sources/Lithe/Theme/LitheTheme.swift index 556b23c4f..c69cdb837 100644 --- a/Sources/Lithe/Theme/LitheTheme.swift +++ b/Sources/Lithe/Theme/LitheTheme.swift @@ -45,6 +45,7 @@ enum LitheTheme { let window: RGBA let titlebar: RGBA let toolHeader: RGBA + let toolHeaderInactive: RGBA let sidebar: RGBA let editor: RGBA let raised: RGBA @@ -67,6 +68,8 @@ enum LitheTheme { let primaryText: RGBA let secondaryText: RGBA let tertiaryText: RGBA + let toolWindowText: RGBA + let toolWindowSelectedText: RGBA let accent: RGBA let runAction: RGBA let success: RGBA @@ -131,6 +134,7 @@ enum LitheTheme { window: surface, titlebar: surface.mixed(with: ink, amount: strongChromeAmount), toolHeader: surface.mixed(with: ink, amount: chromeAmount), + toolHeaderInactive: surface.mixed(with: ink, amount: strongChromeAmount), sidebar: isDark ? surface.mixed(with: RGBA(0x000000), amount: 0.10) : surface.mixed(with: ink, amount: chromeAmount), @@ -157,6 +161,8 @@ enum LitheTheme { primaryText: ink, secondaryText: ink.withAlpha(isDark ? 0.62 : 0.60), tertiaryText: ink.withAlpha(isDark ? 0.43 : 0.42), + toolWindowText: ink, + toolWindowSelectedText: RGBA(0xffffff), accent: accent, runAction: isDark ? RGBA(0x59a869) : RGBA(0x2e7d32), success: diffAdded, @@ -177,31 +183,34 @@ enum LitheTheme { } return Palette( - window: adaptive(light: (0.965, 0.969, 0.976, 1), dark: (0.106, 0.113, 0.125, 1)), - titlebar: adaptive(light: (0.925, 0.933, 0.945, 1), dark: (0.145, 0.155, 0.169, 1)), - toolHeader: adaptive(light: (0.945, 0.949, 0.957, 1), dark: (0.122, 0.130, 0.142, 1)), - sidebar: adaptive(light: (0.925, 0.933, 0.945, 1), dark: (0.090, 0.096, 0.106, 1)), - editor: adaptive(light: (1, 1, 1, 1), dark: (0.074, 0.079, 0.088, 1)), + window: adaptive(light: (0.965, 0.969, 0.976, 1), dark: (0.157, 0.161, 0.173, 1)), + titlebar: adaptive(light: (0.925, 0.933, 0.945, 1), dark: (0.157, 0.161, 0.173, 1)), + toolHeader: adaptive(light: (0.925, 0.933, 0.945, 1), dark: (0.157, 0.161, 0.173, 1)), + toolHeaderInactive: adaptive(light: (0.902, 0.910, 0.925, 1), dark: (0.224, 0.231, 0.251, 1)), + sidebar: adaptive(light: (0.925, 0.933, 0.945, 1), dark: (0.157, 0.161, 0.173, 1)), + editor: adaptive(light: (1, 1, 1, 1), dark: (0.110, 0.114, 0.122, 1)), raised: adaptive(light: (1, 1, 1, 1), dark: (0.165, 0.175, 0.190, 1)), - selection: adaptive(light: (0.205, 0.435, 0.765, 1), dark: (0.170, 0.290, 0.490, 1)), + selection: adaptive(light: (0.275, 0.455, 0.945, 1), dark: (0.208, 0.455, 0.941, 1)), subtleSelection: adaptive(light: (0.855, 0.902, 0.973, 1), dark: (0.205, 0.218, 0.238, 1)), hoverBackground: adaptive(light: (0, 0, 0, 0.050), dark: (1, 1, 1, 0.055)), pressedBackground: adaptive(light: (0, 0, 0, 0.090), dark: (1, 1, 1, 0.095)), - activeTabBackground: adaptive(light: (1, 1, 1, 1), dark: (0.145, 0.155, 0.170, 1)), + activeTabBackground: adaptive(light: (1, 1, 1, 1), dark: (0.110, 0.114, 0.122, 1)), tabUnderline: adaptive(light: (0.180, 0.425, 0.790, 1), dark: (0.31, 0.58, 0.98, 1)), diffInformationBackground: adaptive(light: (0.895, 0.935, 0.990, 1), dark: (0.13, 0.20, 0.30, 1)), diffInformationText: adaptive(light: (0.105, 0.365, 0.680, 1), dark: (0.50, 0.72, 0.98, 1)), - divider: adaptive(light: (0, 0, 0, 0.100), dark: (1, 1, 1, 0.075)), - panelBorder: adaptive(light: (0, 0, 0, 0.145), dark: (1, 1, 1, 0.13)), + divider: adaptive(light: (0, 0, 0, 0.100), dark: (0.180, 0.188, 0.212, 1)), + panelBorder: adaptive(light: (0, 0, 0, 0.145), dark: (0.263, 0.271, 0.290, 1)), inputBackground: adaptive(light: (1, 1, 1, 1), dark: (0.065, 0.070, 0.078, 1)), inputBorder: adaptive(light: (0, 0, 0, 0.150), dark: (1, 1, 1, 0.12)), inputFocusBorder: adaptive(light: (0.180, 0.425, 0.790, 0.90), dark: (0.31, 0.58, 0.98, 0.85)), - popupBackground: adaptive(light: (1, 1, 1, 1), dark: (0.135, 0.143, 0.157, 1)), + popupBackground: adaptive(light: (1, 1, 1, 1), dark: (0.157, 0.161, 0.173, 1)), popupShadow: adaptive(light: (0, 0, 0, 0.20), dark: (0, 0, 0, 0.55)), badgeBackground: adaptive(light: (0, 0, 0, 0.075), dark: (1, 1, 1, 0.10)), - primaryText: adaptive(light: (0, 0, 0, 0.82), dark: (1, 1, 1, 0.86)), + primaryText: adaptive(light: (0, 0, 0, 0.82), dark: (0.875, 0.882, 0.898, 1)), secondaryText: adaptive(light: (0, 0, 0, 0.55), dark: (1, 1, 1, 0.50)), tertiaryText: adaptive(light: (0, 0, 0, 0.38), dark: (1, 1, 1, 0.34)), + toolWindowText: adaptive(light: (0, 0, 0, 0.82), dark: (0.875, 0.882, 0.898, 1)), + toolWindowSelectedText: adaptive(light: (1, 1, 1, 1), dark: (1, 1, 1, 1)), accent: adaptive(light: (0.180, 0.425, 0.790, 1), dark: (0.31, 0.58, 0.98, 1)), runAction: adaptive(light: (0.180, 0.490, 0.196, 1), dark: (0.349, 0.659, 0.412, 1)), success: adaptive(light: (0.105, 0.545, 0.235, 1), dark: (0.28, 0.72, 0.39, 1)), @@ -229,6 +238,7 @@ enum LitheTheme { case skill case guide case activeGuide + case divider } static func nsColor( @@ -249,6 +259,7 @@ enum LitheTheme { case .skill: palette.skill.nsColor case .guide: palette.guide.nsColor case .activeGuide: palette.activeGuide.nsColor + case .divider: palette.divider.nsColor } } @@ -257,6 +268,7 @@ enum LitheTheme { static var titlebar: Color { adaptive(\.titlebar) } static var settingsSurface: Color { editor } static var toolHeader: Color { adaptive(\.toolHeader) } + static var toolHeaderInactive: Color { adaptive(\.toolHeaderInactive) } static var sidebar: Color { adaptive(\.sidebar) } static var editor: Color { adaptive(\.editor) } static var raised: Color { adaptive(\.raised) } @@ -292,6 +304,8 @@ enum LitheTheme { static var primaryText: Color { adaptive(\.primaryText) } static var secondaryText: Color { adaptive(\.secondaryText) } static var tertiaryText: Color { adaptive(\.tertiaryText) } + static var toolWindowText: Color { adaptive(\.toolWindowText) } + static var toolWindowSelectedText: Color { adaptive(\.toolWindowSelectedText) } // MARK: - 语义色 static var accent: Color { adaptive(\.accent) } @@ -323,6 +337,7 @@ enum LitheTheme { static var smallFont: Font { uiFont(size: 12) } static let codeFont = Font.custom("JetBrainsMono-Regular", size: 13) static let editorLineHeightMultiple: CGFloat = 1.2 + static let editorBaselineLift: CGFloat = 1.5 static func editorFont(size: CGFloat, weight: NSFont.Weight = .regular) -> NSFont { let postScriptName = weight.rawValue >= NSFont.Weight.semibold.rawValue @@ -399,7 +414,7 @@ struct LitheIconButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label - .foregroundStyle(LitheTheme.secondaryText) + .foregroundStyle(LitheTheme.toolWindowText) .frame(width: 28, height: 28) .background( RoundedRectangle(cornerRadius: LitheTheme.Metrics.cornerRadius) diff --git a/Sources/Lithe/Views/App/RootView.swift b/Sources/Lithe/Views/App/RootView.swift index ccde8c358..1f96708db 100644 --- a/Sources/Lithe/Views/App/RootView.swift +++ b/Sources/Lithe/Views/App/RootView.swift @@ -118,7 +118,9 @@ struct RootView: View { @ViewBuilder private func projectContent(for session: AppModel) -> some View { Group { - if session.workspaceURL == nil { + if session.standaloneFileURL != nil { + StandaloneEditorView() + } else if session.workspaceURL == nil { WelcomeView() } else { WorkbenchView() @@ -140,10 +142,15 @@ struct RootView: View { } private var windowLayout: LitheWindowLayout { - projectSessions.activeModel.workspaceURL == nil ? .welcome : .workspace + let activeModel = projectSessions.activeModel + if activeModel.standaloneFileURL != nil { return .standalone } + return activeModel.workspaceURL == nil ? .welcome : .workspace } private var windowTitle: String? { + if windowLayout == .standalone { + return projectSessions.activeModel.standaloneFileURL?.lastPathComponent ?? "Lithe" + } guard windowLayout == .welcome else { return nil } return String( localized: "Welcome to Lithe", @@ -181,15 +188,20 @@ private struct WindowCloseGuard: NSViewRepresentable { enum LitheWindowLayout: Equatable { case welcome case workspace + case standalone static let welcomeContentSize = NSSize(width: 900, height: 620) static let workspaceContentSize = NSSize(width: 1440, height: 900) + static let standaloneContentSize = NSSize(width: 1200, height: 760) + static let standaloneMinimumContentSize = NSSize(width: 760, height: 480) + static let standaloneMaximumContentSize = NSSize(width: 1200, height: 820) static let screenMargin: CGFloat = 12 var contentSize: NSSize { switch self { case .welcome: Self.welcomeContentSize case .workspace: Self.workspaceContentSize + case .standalone: Self.standaloneContentSize } } @@ -197,9 +209,22 @@ enum LitheWindowLayout: Equatable { switch self { case .welcome: NSSize(width: 820, height: 560) case .workspace: NSSize(width: 980, height: 640) + case .standalone: Self.standaloneMinimumContentSize } } + static func standaloneContentSize(fitting visibleFrame: NSRect) -> NSSize { + NSSize( + width: min( + max(visibleFrame.width * 0.65, standaloneMinimumContentSize.width), + standaloneMaximumContentSize.width + ), + height: min( + max(visibleFrame.height * 0.72, standaloneMinimumContentSize.height), + standaloneMaximumContentSize.height + ) + ) + } static func frame(_ targetFrame: NSRect, fitting visibleFrame: NSRect) -> NSRect { let availableFrame = visibleFrame.insetBy(dx: screenMargin, dy: screenMargin) var fittedFrame = targetFrame @@ -220,13 +245,19 @@ enum LitheWindowLayout: Equatable { @MainActor protocol ProjectWindowSessionHandling: AnyObject { var hasActiveProject: Bool { get } + var hasActiveStandaloneFile: Bool { get } func closeActiveProject() + func requestCloseActiveSession() -> Bool } extension ProjectSessionManager: ProjectWindowSessionHandling { var hasActiveProject: Bool { activeModel.workspaceURL != nil } + + var hasActiveStandaloneFile: Bool { + activeModel.standaloneFileURL != nil + } } @MainActor @@ -273,9 +304,8 @@ final class LitheWindowCoordinator: NSObject, NSWindowDelegate { } func windowShouldClose(_ sender: NSWindow) -> Bool { - if projectSessions.hasActiveProject { - projectSessions.closeActiveProject() - return false + if projectSessions.hasActiveProject || projectSessions.hasActiveStandaloneFile { + return projectSessions.requestCloseActiveSession() } return true } @@ -297,13 +327,20 @@ final class LitheWindowCoordinator: NSObject, NSWindowDelegate { restoredWorkspaceFrame = nil let currentFrame = window.frame - let targetContentRect = NSRect(origin: .zero, size: layout.contentSize) + let visibleFrame = (window.screen ?? NSScreen.main)?.visibleFrame + let targetContentSize: NSSize + if layout == .standalone, let visibleFrame { + targetContentSize = LitheWindowLayout.standaloneContentSize(fitting: visibleFrame) + } else { + targetContentSize = layout.contentSize + } + let targetContentRect = NSRect(origin: .zero, size: targetContentSize) var targetFrame = window.frameRect(forContentRect: targetContentRect) targetFrame.origin = NSPoint( x: currentFrame.midX - targetFrame.width / 2, y: currentFrame.midY - targetFrame.height / 2 ) - if let visibleFrame = (window.screen ?? NSScreen.main)?.visibleFrame { + if let visibleFrame { targetFrame = LitheWindowLayout.frame(targetFrame, fitting: visibleFrame) } window.setFrame(targetFrame, display: true, animate: shouldAnimate) diff --git a/Sources/Lithe/Views/App/WelcomeView.swift b/Sources/Lithe/Views/App/WelcomeView.swift index 1ea756daf..163ac8f30 100644 --- a/Sources/Lithe/Views/App/WelcomeView.swift +++ b/Sources/Lithe/Views/App/WelcomeView.swift @@ -15,7 +15,7 @@ struct WelcomeView: View { Rectangle().fill(LitheTheme.divider.opacity(0.55)).frame(width: 1) projectsContent } - .background(LitheTheme.window) + .background(LitheTheme.editor) .background(WelcomeInitialFocusReset()) } @@ -208,7 +208,7 @@ struct WelcomeView: View { } } } - .background(LitheTheme.window) + .background(LitheTheme.editor) } private var emptyProjectsState: some View { diff --git a/Sources/Lithe/Views/Components/LitheContextMenu.swift b/Sources/Lithe/Views/Components/LitheContextMenu.swift new file mode 100644 index 000000000..bcd299dd2 --- /dev/null +++ b/Sources/Lithe/Views/Components/LitheContextMenu.swift @@ -0,0 +1,303 @@ +import AppKit +import SwiftUI + +struct LitheContextMenuItem: Identifiable { + enum Kind { + case action + case separator + } + + enum Role { + case standard + case destructive + } + + let id = UUID() + let kind: Kind + let title: String + let systemImage: String? + let shortcut: String? + let role: Role + let isEnabled: Bool + let action: () -> Void + + static func action( + _ title: String, + systemImage: String? = nil, + shortcut: String? = nil, + role: Role = .standard, + isEnabled: Bool = true, + action: @escaping () -> Void + ) -> Self { + Self( + kind: .action, + title: title, + systemImage: systemImage, + shortcut: shortcut, + role: role, + isEnabled: isEnabled, + action: action + ) + } + + static var separator: Self { + Self( + kind: .separator, + title: "", + systemImage: nil, + shortcut: nil, + role: .standard, + isEnabled: false, + action: {} + ) + } +} + +private struct LitheContextMenuContent: View { + let items: [LitheContextMenuItem] + let width: CGFloat + let dismiss: () -> Void + + var body: some View { + VStack(spacing: 0) { + ForEach(items) { item in + switch item.kind { + case .action: + LitheContextMenuRow(item: item) { + dismiss() + item.action() + } + case .separator: + Rectangle() + .fill(LitheTheme.divider) + .frame(height: 1) + .padding(.horizontal, 8) + .padding(.vertical, 5) + } + } + } + .padding(.vertical, 6) + .frame(width: width) + .background { + RoundedRectangle(cornerRadius: 9, style: .continuous) + .fill(LitheTheme.sidebar) + } + .overlay { + RoundedRectangle(cornerRadius: 9, style: .continuous) + .stroke(LitheTheme.panelBorder, lineWidth: 1) + } + } +} + +private struct LitheContextMenuRow: View { + let item: LitheContextMenuItem + let action: () -> Void + @State private var isHovering = false + + var body: some View { + Button(action: action) { + HStack(spacing: 9) { + Group { + if let systemImage = item.systemImage { + Image(systemName: systemImage) + .font(.system(size: 13, weight: .regular)) + } else { + Color.clear + } + } + .frame(width: 16, height: 16) + .foregroundStyle( + item.role == .destructive + ? LitheTheme.error + : (isHovering ? LitheTheme.toolWindowSelectedText : LitheTheme.secondaryText) + ) + + Text(LocalizedStringKey(item.title)) + .font(.system(size: 13, weight: .regular)) + .foregroundStyle(isHovering ? LitheTheme.toolWindowSelectedText : LitheTheme.primaryText) + .lineLimit(1) + + Spacer(minLength: 14) + + if let shortcut = item.shortcut { + Text(shortcut) + .font(.system(size: 12, weight: .regular)) + .foregroundStyle(isHovering ? LitheTheme.toolWindowSelectedText.opacity(0.78) : LitheTheme.tertiaryText) + } + } + .padding(.horizontal, 9) + .frame(height: 28) + .contentShape(Rectangle()) + .background { + RoundedRectangle(cornerRadius: 5, style: .continuous) + .fill(isHovering ? LitheTheme.selection : .clear) + } + .padding(.horizontal, 5) + } + .buttonStyle(.plain) + .disabled(!item.isEnabled) + .opacity(item.isEnabled ? 1 : 0.45) + .onHover { isHovering = $0 } + } +} + +@MainActor +private final class LitheContextMenuPanel: NSPanel { + override var canBecomeKey: Bool { true } +} + +@MainActor +private final class LitheContextMenuPresenter: NSObject, NSWindowDelegate { + static let shared = LitheContextMenuPresenter() + + private let menuWidth: CGFloat = 252 + private var panel: LitheContextMenuPanel? + private var localEventMonitor: Any? + private var globalEventMonitor: Any? + + func show( + items: [LitheContextMenuItem], + at screenPoint: NSPoint, + appearance: NSAppearance?, + locale: Locale + ) { + dismiss() + guard !items.isEmpty else { return } + + let menuHeight = items.reduce(CGFloat(12)) { height, item in + height + (item.kind == .separator ? 11 : 28) + } + let content = LitheContextMenuContent( + items: items, + width: menuWidth, + dismiss: { [weak self] in self?.dismiss() } + ) + .environment(\.locale, locale) + .frame(width: menuWidth, height: menuHeight) + + let panel = LitheContextMenuPanel( + contentRect: NSRect(x: 0, y: 0, width: menuWidth, height: menuHeight), + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, + defer: false + ) + panel.contentViewController = NSHostingController(rootView: content) + panel.appearance = appearance + panel.backgroundColor = .clear + panel.isOpaque = false + panel.hasShadow = true + panel.level = .popUpMenu + panel.isFloatingPanel = true + panel.hidesOnDeactivate = true + panel.collectionBehavior = [.transient, .fullScreenAuxiliary] + panel.delegate = self + + let visibleFrame = NSScreen.screens + .first(where: { $0.frame.contains(screenPoint) })? + .visibleFrame ?? NSScreen.main?.visibleFrame ?? .zero + let preferredOrigin = NSPoint(x: screenPoint.x - 6, y: screenPoint.y - menuHeight + 6) + let origin = NSPoint( + x: min(max(preferredOrigin.x, visibleFrame.minX + 6), visibleFrame.maxX - menuWidth - 6), + y: min(max(preferredOrigin.y, visibleFrame.minY + 6), visibleFrame.maxY - menuHeight - 6) + ) + panel.setFrameOrigin(origin) + + self.panel = panel + installEventMonitors() + panel.orderFrontRegardless() + panel.makeKey() + } + + func dismiss() { + removeEventMonitors() + panel?.orderOut(nil) + panel?.close() + panel = nil + } + + func windowDidResignKey(_ notification: Notification) { + dismiss() + } + + private func installEventMonitors() { + localEventMonitor = NSEvent.addLocalMonitorForEvents( + matching: [.leftMouseDown, .rightMouseDown, .keyDown] + ) { [weak self] event in + guard let self else { return event } + if event.type == .keyDown, event.keyCode == 53 { + self.dismiss() + return nil + } + if event.type != .keyDown, event.window !== self.panel { + self.dismiss() + } + return event + } + globalEventMonitor = NSEvent.addGlobalMonitorForEvents( + matching: [.leftMouseDown, .rightMouseDown] + ) { [weak self] _ in + self?.dismiss() + } + } + + private func removeEventMonitors() { + if let localEventMonitor { + NSEvent.removeMonitor(localEventMonitor) + self.localEventMonitor = nil + } + if let globalEventMonitor { + NSEvent.removeMonitor(globalEventMonitor) + self.globalEventMonitor = nil + } + } +} + +@MainActor +private struct LitheContextMenuTrigger: NSViewRepresentable { + @Environment(\.locale) private var locale + let items: () -> [LitheContextMenuItem] + + func makeNSView(context: Context) -> LitheRightClickCaptureView { + let view = LitheRightClickCaptureView() + update(view) + return view + } + + func updateNSView(_ nsView: LitheRightClickCaptureView, context: Context) { + update(nsView) + } + + private func update(_ view: LitheRightClickCaptureView) { + view.onRightClick = { screenPoint, appearance in + LitheContextMenuPresenter.shared.show( + items: items(), + at: screenPoint, + appearance: appearance, + locale: locale + ) + } + } +} + +@MainActor +private final class LitheRightClickCaptureView: NSView { + var onRightClick: (@MainActor (NSPoint, NSAppearance?) -> Void)? + + override func hitTest(_ point: NSPoint) -> NSView? { + guard NSApp.currentEvent?.type == .rightMouseDown else { return nil } + return super.hitTest(point) + } + + override func rightMouseDown(with event: NSEvent) { + guard let window else { return } + onRightClick?(window.convertPoint(toScreen: event.locationInWindow), effectiveAppearance) + } +} + +extension View { + func litheContextMenu(items: @escaping () -> [LitheContextMenuItem]) -> some View { + overlay { + LitheContextMenuTrigger(items: items) + } + } +} diff --git a/Sources/Lithe/Views/Components/LitheToolWindowHeader.swift b/Sources/Lithe/Views/Components/LitheToolWindowHeader.swift index 926b92bfa..13f46bccd 100644 --- a/Sources/Lithe/Views/Components/LitheToolWindowHeader.swift +++ b/Sources/Lithe/Views/Components/LitheToolWindowHeader.swift @@ -35,15 +35,15 @@ struct LitheToolWindowHeader: View { size: 13, fallbackSystemImage: systemImage ?? "circle" ) - .foregroundStyle(LitheTheme.secondaryText) + .foregroundStyle(LitheTheme.toolWindowText) } else if let systemImage { Image(systemName: systemImage) .font(.system(size: 12, weight: .medium)) - .foregroundStyle(LitheTheme.secondaryText) + .foregroundStyle(LitheTheme.toolWindowText) } Text(LocalizedStringKey(title)) .font(.system(size: 12.5, weight: .semibold)) - .foregroundStyle(LitheTheme.primaryText) + .foregroundStyle(LitheTheme.toolWindowText) if let subtitle, !subtitle.isEmpty { Text(LocalizedStringKey(subtitle)) .font(.system(size: 11.5, weight: .medium)) diff --git a/Sources/Lithe/Views/Editor/CodeEditorView.swift b/Sources/Lithe/Views/Editor/CodeEditorView.swift index 2efdf418e..d72fd42b0 100644 --- a/Sources/Lithe/Views/Editor/CodeEditorView.swift +++ b/Sources/Lithe/Views/Editor/CodeEditorView.swift @@ -9,8 +9,21 @@ fileprivate struct CodeEditorPalette { static let dark = CodeEditorPalette(isDark: true, theme: .lithe) var background: NSColor { themeColor(.editor) } - var gutterBackground: NSColor { themeColor(.sidebar) } - var text: NSColor { themeColor(.primaryText) } + var gutterBackground: NSColor { themeColor(.editor) } + var divider: NSColor { themeColor(.divider) } + var gutterDivider: NSColor { + color( + light: (0.78, 0.79, 0.81, 1), + dark: (0.204, 0.212, 0.231, 1) + ) + } + var text: NSColor { + guard theme == .lithe else { return themeColor(.primaryText) } + return color( + light: (0, 0, 0, 0.82), + dark: (0.737, 0.745, 0.769, 1) + ) + } var caret: NSColor { themeColor(.primaryText) } var selection: NSColor { themeColor(.accent).withAlphaComponent(isDark ? 0.42 : 0.24) } var selectionText: NSColor { themeColor(.primaryText) } @@ -55,6 +68,13 @@ fileprivate struct CodeEditorPalette { } } +private enum EditorLayoutMetrics { + static let standardWidth: CGFloat = 45 + static let editorLeadingInset: CGFloat = 0 + static let editorLineFragmentPadding: CGFloat = 4 + static let caretWidth: CGFloat = 2 +} + struct CodeEditorView: NSViewRepresentable { @Environment(\.colorScheme) private var colorScheme @EnvironmentObject private var model: AppModel @@ -100,7 +120,7 @@ struct CodeEditorView: NSViewRepresentable { scrollView.topAnchor.constraint(equalTo: container.topAnchor), scrollView.bottomAnchor.constraint(equalTo: container.bottomAnchor) ]) - let gutterWidthConstraint = gutter.widthAnchor.constraint(equalToConstant: 52) + let gutterWidthConstraint = gutter.widthAnchor.constraint(equalToConstant: EditorLayoutMetrics.standardWidth) gutterWidthConstraint.isActive = true let textView = CodeTextView(frame: NSRect(x: 0, y: 0, width: 900, height: 700)) @@ -118,7 +138,8 @@ struct CodeEditorView: NSViewRepresentable { textView.maxSize = NSSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude) textView.textContainer?.containerSize = NSSize(width: scrollView.contentSize.width, height: CGFloat.greatestFiniteMagnitude) textView.textContainer?.widthTracksTextView = true - textView.textContainerInset = NSSize(width: 12, height: 10) + textView.textContainerInset = NSSize(width: EditorLayoutMetrics.editorLeadingInset, height: 0) + textView.textContainer?.lineFragmentPadding = EditorLayoutMetrics.editorLineFragmentPadding textView.font = LitheTheme.editorFont(size: settings.editorFontSize) textView.defaultParagraphStyle = LitheTheme.editorParagraphStyle textView.indentationWidth = settings.tabWidth @@ -189,6 +210,9 @@ struct CodeEditorView: NSViewRepresentable { context.coordinator.textView = textView context.coordinator.gutter = gutter + textView.onCaretPresentationChanged = { [weak gutter] in + gutter?.needsDisplay = true + } context.coordinator.container = container context.coordinator.attachMarkdownImagePasteMonitor(to: scrollView) context.coordinator.codeVisionOverlay = CodeVisionOverlayController(textView: textView) @@ -492,9 +516,6 @@ struct CodeEditorView: NSViewRepresentable { } func textViewDidChangeSelection(_ notification: Notification) { - (textView as? CodeTextView)?.updateEditorDecorations() - textView?.needsDisplay = true - gutter?.needsDisplay = true updateCaret() } @@ -592,7 +613,7 @@ struct CodeEditorView: NSViewRepresentable { $0.fileURL.standardizedFileURL == url }.map(\.line) let debugBreakpointLines = Set(javaBreakpointLines + genericBreakpointLines) - container?.gutterWidthConstraint?.constant = isBlameVisible ? 224 : 52 + container?.gutterWidthConstraint?.constant = isBlameVisible ? 224 : EditorLayoutMetrics.standardWidth gutter?.update(blameLines: blameLines, isVisible: isBlameVisible) { [weak model] blame in Task { await model?.showGitCommit(blame.commitHash) } } @@ -756,6 +777,7 @@ private struct TextLineIndex { } final class CodeTextView: NSTextView, NSLayoutManagerDelegate { + var onCaretPresentationChanged: (() -> Void)? var indentationWidth = 4 var isLanguageNavigationEnabled = false var isLanguageIntelligenceEnabled = false @@ -802,6 +824,8 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { private var hoveredFoldID: String? private var lineIndex = TextLineIndex(source: "" as NSString) nonisolated(unsafe) private var windowResignObserver: NSObjectProtocol? + private var caretVisible = true + private var caretPresentationGeneration = 0 fileprivate func applyAppearance(_ palette: CodeEditorPalette) { guard appliedDarkAppearance != palette.isDark @@ -830,6 +854,54 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { super.paste(sender) } + override func setSelectedRange(_ charRange: NSRange) { + super.setSelectedRange(charRange) + synchronizeCaretPresentation() + } + + override func setSelectedRange( + _ charRange: NSRange, + affinity: NSSelectionAffinity, + stillSelecting flag: Bool + ) { + super.setSelectedRange(charRange, affinity: affinity, stillSelecting: flag) + synchronizeCaretPresentation() + } + + private func synchronizeCaretPresentation() { + updateEditorDecorations() + needsDisplay = true + onCaretPresentationChanged?() + updateInsertionPointStateAndRestartTimer(true) + } + + override func updateInsertionPointStateAndRestartTimer(_ restartFlag: Bool) { + guard restartFlag else { return } + caretPresentationGeneration &+= 1 + let generation = caretPresentationGeneration + caretVisible = true + needsDisplay = true + + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) { [weak self] in + self?.startCaretBlinking(for: generation) + } + } + + private func startCaretBlinking(for generation: Int) { + guard generation == caretPresentationGeneration else { return } + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) { [weak self] in + guard let self, generation == self.caretPresentationGeneration else { return } + self.caretVisible.toggle() + self.needsDisplay = true + self.startCaretBlinking(for: generation) + } + } + + override func drawInsertionPoint(in rect: NSRect, color: NSColor, turnedOn _: Bool) { + // The editor paints the caret from draw(_:) so AppKit's independent + // insertion-point blink callbacks cannot overwrite its width or phase. + } + override func performKeyEquivalent(with event: NSEvent) -> Bool { if Self.isStandardPasteShortcut(event), onPasteImage?() == true { return true @@ -889,12 +961,6 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { let source = string as NSString let caret = min(selectedRange().location, source.length) - let lineRange = source.lineRange(for: NSRange(location: caret, length: 0)) - layoutManager.addTemporaryAttribute( - .backgroundColor, - value: currentLineColor, - forCharacterRange: lineRange - ) for range in matchingBracketRanges(in: source, caret: caret) { layoutManager.addTemporaryAttribute(.backgroundColor, value: bracketColor, forCharacterRange: range) @@ -1155,14 +1221,22 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { forGlyphRange glyphRange: NSRange ) -> Bool { let characterRange = layoutManager.characterRange(forGlyphRange: glyphRange, actualGlyphRange: nil) - guard collapsedFoldIDs.contains(where: { id in + let isCollapsedLine = collapsedFoldIDs.contains(where: { id in guard let region = foldRegions.first(where: { $0.id == id }) else { return false } return NSLocationInRange(characterRange.location, region.hiddenRange) - }) else { return false } + }) + + guard !isCollapsedLine else { + lineFragmentRect.pointee.size.height = 0 + lineFragmentUsedRect.pointee.size.height = 0 + baselineOffset.pointee = 0 + return true + } - lineFragmentRect.pointee.size.height = 0 - lineFragmentUsedRect.pointee.size.height = 0 - baselineOffset.pointee = 0 + baselineOffset.pointee = max( + 0, + baselineOffset.pointee - LitheTheme.editorBaselineLift + ) return true } @@ -1311,9 +1385,37 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { override func drawBackground(in rect: NSRect) { super.drawBackground(in: rect) + drawCurrentLineBackground(in: rect) drawIndentGuides(in: rect) } + private func drawCurrentLineBackground(in rect: NSRect) { + let source = string as NSString + let caret = min(selectedRange().location, source.length) + let lineRange = source.lineRange(for: NSRange(location: caret, length: 0)) + guard let layoutManager, + layoutManager.numberOfGlyphs > 0 else { return } + + let glyphRange = layoutManager.glyphRange( + forCharacterRange: lineRange, + actualCharacterRange: nil + ) + guard glyphRange.location < layoutManager.numberOfGlyphs else { return } + let lineRect = layoutManager.lineFragmentRect( + forGlyphAt: glyphRange.location, + effectiveRange: nil + ) + let currentLineRect = NSRect( + x: 0, + y: textContainerOrigin.y + lineRect.minY, + width: bounds.width, + height: lineRect.height + ) + guard currentLineRect.intersects(rect) else { return } + currentLineColor.setFill() + currentLineRect.intersection(rect).fill() + } + private func lineFragmentRect( forLine line: Int, in source: NSString, @@ -1384,6 +1486,46 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { ] ) } + drawCaret() + } + + private func drawCaret() { + guard caretVisible, + window?.firstResponder === self, + let layoutManager, + let textContainer else { return } + + let sourceLength = string.utf16.count + let location = min(selectedRange().location, sourceLength) + let caretRect: NSRect + if layoutManager.numberOfGlyphs == 0 { + let lineHeight = layoutManager.defaultLineHeight(for: font ?? .systemFont(ofSize: 13)) + caretRect = NSRect( + x: textContainerOrigin.x, + y: textContainerOrigin.y, + width: EditorLayoutMetrics.caretWidth, + height: lineHeight + ) + } else { + let isAtDocumentEnd = location == sourceLength + let glyphIndex = layoutManager.glyphIndexForCharacter( + at: min(location, sourceLength - 1) + ) + let glyphRect = layoutManager.boundingRect( + forGlyphRange: NSRange(location: glyphIndex, length: 1), + in: textContainer + ) + let lineRect = layoutManager.lineFragmentRect(forGlyphAt: glyphIndex, effectiveRange: nil) + caretRect = NSRect( + x: textContainerOrigin.x + (isAtDocumentEnd ? glyphRect.maxX : glyphRect.minX), + y: textContainerOrigin.y + lineRect.minY, + width: EditorLayoutMetrics.caretWidth, + height: lineRect.height + ) + } + + insertionPointColor.setFill() + caretRect.fill() } override func mouseDown(with event: NSEvent) { @@ -1483,6 +1625,14 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { return super.resignFirstResponder() } + override func becomeFirstResponder() -> Bool { + let becameFirstResponder = super.becomeFirstResponder() + if becameFirstResponder { + updateInsertionPointStateAndRestartTimer(true) + } + return becameFirstResponder + } + private func updateFoldHover(at point: NSPoint?) { let nextID = point.flatMap { point in foldRegions.first(where: { @@ -1858,7 +2008,7 @@ final class CodeTextView: NSTextView, NSLayoutManagerDelegate { scrollView.documentView = textView scrollView.hasVerticalScroller = true scrollView.drawsBackground = true - scrollView.backgroundColor = NSColor(red: 0.105, green: 0.11, blue: 0.12, alpha: 1) + scrollView.backgroundColor = LitheTheme.nsColor(.editor, theme: .lithe, isDark: true) let controller = NSViewController() controller.view = scrollView controller.preferredContentSize = NSSize(width: 480, height: 220) @@ -2217,7 +2367,9 @@ final class LineNumberGutterView: NSView { in: textContainer ) guard layoutManager.numberOfGlyphs > 0 else { - drawLineNumber(1, y: textView.textContainerInset.height) + let lineHeight = max(18, textView.layoutManager?.defaultLineHeight(for: textView.font ?? .systemFont(ofSize: 13)) ?? 18) + drawLineNumber(1, y: textView.textContainerInset.height, height: lineHeight) + drawEditorDivider(in: dirtyRect) return } @@ -2267,7 +2419,7 @@ final class LineNumberGutterView: NSView { if let marker = gitLineChangeMarkersByLine[lineNumber - 1] { drawGitLineChange(marker, y: y, height: lineRect.height) } - drawLineNumber(lineNumber, y: y + 1) + drawLineNumber(lineNumber, y: y, height: lineRect.height) let nextGlyph = NSMaxRange(lineGlyphRange) glyphIndex = nextGlyph > glyphIndex ? nextGlyph : glyphIndex + 1 @@ -2280,6 +2432,20 @@ final class LineNumberGutterView: NSView { visibleRect: visibleRect, layoutManager: layoutManager ) + + drawEditorDivider(in: dirtyRect) + } + + private func drawEditorDivider(in dirtyRect: NSRect) { + // Keep the gutter/editor boundary visible over the current-line fill, + // including when an empty document has no glyphs to lay out. + palette.gutterDivider.setFill() + NSRect( + x: bounds.width - 1, + y: dirtyRect.minY, + width: 1, + height: dirtyRect.height + ).fill() } private func drawFoldIndicators( @@ -2309,14 +2475,18 @@ final class LineNumberGutterView: NSView { } } - private func drawLineNumber(_ number: Int, y: CGFloat) { + private func drawLineNumber(_ number: Int, y: CGFloat, height: CGFloat) { let label = String(number) as NSString let attributes: [NSAttributedString.Key: Any] = [ .font: NSFont.monospacedDigitSystemFont(ofSize: 10.5, weight: .regular), .foregroundColor: palette.lineNumber ] let size = label.size(withAttributes: attributes) - label.draw(at: NSPoint(x: bounds.width - size.width - 9, y: y), withAttributes: attributes) + let centeredY = y + max(0, (height - size.height) / 2) + label.draw( + at: NSPoint(x: (bounds.width - size.width) / 2, y: centeredY), + withAttributes: attributes + ) } private func drawFoldIndicator(_ region: JavaFoldRegion, y: CGFloat, height: CGFloat) { diff --git a/Sources/Lithe/Views/Editor/StandaloneEditorView.swift b/Sources/Lithe/Views/Editor/StandaloneEditorView.swift new file mode 100644 index 000000000..89b734276 --- /dev/null +++ b/Sources/Lithe/Views/Editor/StandaloneEditorView.swift @@ -0,0 +1,120 @@ +import SwiftUI + +struct StandaloneEditorView: View { + @EnvironmentObject private var model: AppModel + + var body: some View { + VStack(spacing: 0) { + header + Rectangle() + .fill(LitheTheme.divider) + .frame(height: 1) + + content + } + .background(LitheTheme.editor) + .confirmationDialog( + "Save changes before closing?", + isPresented: Binding( + get: { model.pendingCloseDocument != nil }, + set: { if !$0 { model.cancelPendingClose() } } + ), + titleVisibility: .visible + ) { + Button("Save") { model.closePendingDocument(discardingChanges: false) } + Button("Discard Changes", role: .destructive) { + model.closePendingDocument(discardingChanges: true) + } + Button("Cancel", role: .cancel) { model.cancelPendingClose() } + } message: { + Text(model.pendingCloseDocument?.url.lastPathComponent ?? "") + } + } + + @ViewBuilder + private var content: some View { + switch model.standaloneFileLoadState { + case .idle, .loading: + ProgressView("Opening file…") + .frame(maxWidth: .infinity, maxHeight: .infinity) + case .loaded: + if let document = model.activeDocument { + CodeEditorView(document: document, shouldFocus: true) + .overlay(alignment: .top) { + if model.isFindBarVisible { + FindBarView() + .padding(.top, 10) + .padding(.horizontal, 12) + } + } + } else { + failureView(.readFailed) + } + case let .failed(failure): + failureView(failure) + } + } + + private func failureView(_ failure: StandaloneFileOpenFailure) -> some View { + VStack(spacing: 10) { + LitheSystemIcon(systemImage: "doc.text.magnifyingglass") + .font(.system(size: 26)) + .foregroundStyle(LitheTheme.secondaryText) + Text(failure.title) + .font(.system(size: 14, weight: .medium)) + .foregroundStyle(LitheTheme.primaryText) + Text(failure.detail) + .font(.system(size: 12)) + .foregroundStyle(LitheTheme.secondaryText) + .multilineTextAlignment(.center) + .frame(maxWidth: 420) + HStack(spacing: 8) { + Button("Try Again") { + if let url = model.standaloneFileURL { + model.openStandaloneFile(url) + } + } + .buttonStyle(LitheSecondaryButtonStyle()) + Button("Close File") { + model.closeStandaloneFile() + } + .buttonStyle(LithePrimaryButtonStyle()) + } + .padding(.top, 4) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .padding(32) + } + + private var header: some View { + HStack(spacing: 8) { + if let document = model.activeDocument { + LitheIcon( + kind: LitheIcons.kind(for: document.url, isDirectory: false), + size: 14 + ) + Text(document.displayName) + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(LitheTheme.primaryText) + .lineLimit(1) + if document.isDirty { + Circle() + .fill(LitheTheme.accent) + .frame(width: 6, height: 6) + } + Spacer() + Text(document.url.path) + .font(.system(size: 10.5)) + .foregroundStyle(LitheTheme.tertiaryText) + .lineLimit(1) + } else { + Text(model.standaloneFileURL?.lastPathComponent ?? "Opening file…") + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(LitheTheme.secondaryText) + } + } + .padding(.horizontal, 12) + .frame(height: 34) + .background(LitheTheme.toolHeader) + } +} diff --git a/Sources/Lithe/Views/Workbench/SplitHandleView.swift b/Sources/Lithe/Views/Workbench/SplitHandleView.swift index 2cff80eae..49a1db92a 100644 --- a/Sources/Lithe/Views/Workbench/SplitHandleView.swift +++ b/Sources/Lithe/Views/Workbench/SplitHandleView.swift @@ -12,6 +12,8 @@ struct SplitHandleView: View { static let thickness: CGFloat = 10 let axis: LitheSplitAxis + let leadingBackground: Color + let trailingBackground: Color let onDragStarted: () -> Void let onDragChanged: (CGFloat) -> Void let onDragEnded: () -> Void @@ -20,8 +22,25 @@ struct SplitHandleView: View { @State private var isDragging = false @State private var lastTranslation: CGFloat = 0 + init( + axis: LitheSplitAxis, + leadingBackground: Color = .clear, + trailingBackground: Color = .clear, + onDragStarted: @escaping () -> Void, + onDragChanged: @escaping (CGFloat) -> Void, + onDragEnded: @escaping () -> Void + ) { + self.axis = axis + self.leadingBackground = leadingBackground + self.trailingBackground = trailingBackground + self.onDragStarted = onDragStarted + self.onDragChanged = onDragChanged + self.onDragEnded = onDragEnded + } + var body: some View { ZStack { + trackBackground Color.clear dividerLine } @@ -57,38 +76,50 @@ struct SplitHandleView: View { guard isInside != isHovering else { return } isHovering = isInside if isInside { - resizeCursor.push() + resizeCursor.set() } else { - NSCursor.pop() - } - } - .onDisappear { - if isHovering { - NSCursor.pop() + NSCursor.arrow.set() } } .help(axis == .horizontal ? "Drag left or right to resize" : "Drag up or down to resize") .accessibilityLabel(axis == .horizontal ? "Horizontal pane resize handle" : "Vertical pane resize handle") } + @ViewBuilder + private var trackBackground: some View { + if axis == .horizontal { + HStack(spacing: 0) { + leadingBackground + .frame(maxWidth: .infinity, maxHeight: .infinity) + trailingBackground + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + } else { + VStack(spacing: 0) { + leadingBackground + .frame(maxWidth: .infinity, maxHeight: .infinity) + trailingBackground + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + } + } + @ViewBuilder private var dividerLine: some View { - if isHovering || isDragging { - let color = isDragging - ? LitheTheme.accent.opacity(0.72) - : LitheTheme.divider + let color = isDragging + ? LitheTheme.accent.opacity(0.72) + : LitheTheme.divider - if axis == .horizontal { - Rectangle() - .fill(color) - .frame(width: isDragging ? 3 : (isHovering ? 2 : 1)) - .frame(maxHeight: .infinity) - } else { - Rectangle() - .fill(color) - .frame(height: isDragging ? 3 : (isHovering ? 2 : 1)) - .frame(maxWidth: .infinity) - } + if axis == .horizontal { + Rectangle() + .fill(color) + .frame(width: isDragging ? 3 : (isHovering ? 2 : 1)) + .frame(maxHeight: .infinity) + } else { + Rectangle() + .fill(color) + .frame(height: isDragging ? 3 : (isHovering ? 2 : 1)) + .frame(maxWidth: .infinity) } } diff --git a/Sources/Lithe/Views/Workbench/WorkbenchView.swift b/Sources/Lithe/Views/Workbench/WorkbenchView.swift index 048c4dd73..01457f7e0 100644 --- a/Sources/Lithe/Views/Workbench/WorkbenchView.swift +++ b/Sources/Lithe/Views/Workbench/WorkbenchView.swift @@ -4,6 +4,7 @@ import LitheGitModule private enum ActivityBarMetrics { static let width: CGFloat = 38 + static let rightWidth: CGFloat = 40 static let buttonWidth: CGFloat = 30 static let buttonHeight: CGFloat = 30 static let spacing: CGFloat = 4 @@ -46,8 +47,10 @@ struct WorkbenchView: View { HStack(spacing: 0) { activityBar + Rectangle() + .fill(LitheTheme.divider) + .frame(width: 1) workspaceArea - Color.clear.frame(width: ActivityBarMetrics.width) } .frame(maxHeight: .infinity) .overlay(alignment: .trailing) { @@ -611,7 +614,7 @@ struct WorkbenchView: View { Spacer() } .padding(.top, ActivityBarMetrics.edgeInset) - .frame(width: ActivityBarMetrics.width) + .frame(width: ActivityBarMetrics.rightWidth) .background(LitheTheme.titlebar) } @@ -643,6 +646,9 @@ struct WorkbenchView: View { } } } + Rectangle() + .fill(LitheTheme.divider) + .frame(width: 1) pluginActivityBar } .fixedSize(horizontal: true, vertical: false) @@ -1122,7 +1128,7 @@ private struct WorkbenchWorkspaceSplitView [LitheContextMenuItem] { + [ + .action("New File…", systemImage: "doc.badge.plus") { + model.requestCreateFile(in: root.url) + }, + .action("New Directory…", systemImage: "folder.badge.plus") { + model.requestCreateDirectory(in: root.url) + }, + .separator, + .action("Show Project in Finder", systemImage: "folder") { + model.revealProjectItemInFinder(root.url) + }, + .action("Show Project Local History…", systemImage: "clock.arrow.circlepath") { + model.showProjectLocalHistory() + }, + .action("Copy Project Path", systemImage: "doc.on.doc") { + model.copyProjectItemPath(root.url, relative: false) + }, + .separator, + .action("Refresh", systemImage: "arrow.clockwise") { + Task { await model.refreshWorkspace() } + } + ] + } } private struct FileNodeRow: View { @@ -230,7 +246,7 @@ private struct FileNodeRow: View { .lithePointer() .padding(.vertical, 0.5) .padding(.horizontal, Self.horizontalInset) - .contextMenu { directoryContextMenu } + .litheContextMenu { directoryContextMenuItems } } private var fileRow: some View { @@ -271,106 +287,107 @@ private struct FileNodeRow: View { .lithePointer() .padding(.vertical, 0.5) .padding(.horizontal, Self.horizontalInset) - .contextMenu { fileContextMenu } + .litheContextMenu { fileContextMenuItems } .task(id: node.url.standardizedFileURL.path) { guard node.url.pathExtension.lowercased() == "java" else { return } resolvedJavaIconKind = await model.javaIconKind(for: node.url) } } - @ViewBuilder - private var directoryContextMenu: some View { + private var directoryContextMenuItems: [LitheContextMenuItem] { + var items: [LitheContextMenuItem] = [] if model.gitTreeStatus(for: node.url, isDirectory: true) != nil { - Button("Show Git Diff") { + items.append(.action("Show Git Diff", systemImage: "arrow.left.and.right") { Task { await model.showGitDirectoryDiff(for: node.url) } - } - Divider() + }) + items.append(.separator) } - Button("New File…") { + items.append(.action("New File…", systemImage: "doc.badge.plus") { model.requestCreateFile(in: node.url) - } - Button("New Directory…") { + }) + items.append(.action("New Directory…", systemImage: "folder.badge.plus") { model.requestCreateDirectory(in: node.url) - } + }) - Divider() + items.append(.separator) - Button("Show in Finder") { + items.append(.action("Show in Finder", systemImage: "folder") { model.revealProjectItemInFinder(node.url) - } - Button("Copy Path") { + }) + items.append(.action("Copy Path", systemImage: "doc.on.doc") { model.copyProjectItemPath(node.url, relative: false) - } - Button("Copy Relative Path") { + }) + items.append(.action("Copy Relative Path", systemImage: "point.topleft.down.to.point.bottomright.curvepath") { model.copyProjectItemPath(node.url, relative: true) - } + }) if depth > 0 { - Divider() + items.append(.separator) - Button("Duplicate") { + items.append(.action("Duplicate", systemImage: "plus.square.on.square") { Task { await model.duplicateProjectItem(at: node.url) } - } - Button("Rename…") { + }) + items.append(.action("Rename…", systemImage: "pencil") { model.requestRenameProjectItem(at: node.url) - } - Button("Move to Trash", role: .destructive) { + }) + items.append(.action("Move to Trash", systemImage: "trash", role: .destructive) { model.requestDeleteProjectItem(at: node.url, isDirectory: true) - } + }) } - Divider() + items.append(.separator) - Button("Refresh") { + items.append(.action("Refresh", systemImage: "arrow.clockwise") { Task { await model.refreshWorkspace() } - } + }) + return items } - @ViewBuilder - private var fileContextMenu: some View { - Group { - Button("Open") { + private var fileContextMenuItems: [LitheContextMenuItem] { + var items: [LitheContextMenuItem] = [ + .action("Open", systemImage: "doc.text") { model.openFile(node.url) } + ] - if let change = model.gitChange(for: node.url) { - Button("Show Git Diff") { - model.selectChange(change) - } - } + if let change = model.gitChange(for: node.url) { + items.append(.action("Show Git Diff", systemImage: "arrow.left.and.right") { + model.selectChange(change) + }) } - Divider() + items.append(.separator) - Group { - Button("Duplicate") { + items.append(contentsOf: [ + .action("Duplicate", systemImage: "plus.square.on.square") { Task { await model.duplicateProjectItem(at: node.url) } - } - Button("Rename…") { + }, + .action("Rename…", systemImage: "pencil") { model.requestRenameProjectItem(at: node.url) - } - Button("Local History…") { + }, + .action("Local History…", systemImage: "clock.arrow.circlepath") { model.showLocalHistory(for: node.url) - } - Button("Move to Trash", role: .destructive) { + }, + .action("Move to Trash", systemImage: "trash", role: .destructive) { model.requestDeleteProjectItem(at: node.url, isDirectory: false) } - } + ]) - Divider() + items.append(.separator) - Group { - Button("Show in Finder") { + items.append(contentsOf: [ + .action("Show in Finder", systemImage: "folder") { model.revealProjectItemInFinder(node.url) - } - Button("Copy Path") { + }, + .action("Copy Path", systemImage: "doc.on.doc") { model.copyProjectItemPath(node.url, relative: false) - } - Button("Copy Relative Path") { + }, + .action("Copy Relative Path", systemImage: "point.topleft.down.to.point.bottomright.curvepath") { model.copyProjectItemPath(node.url, relative: true) } - } + ]) + return items } private var gitStatusColor: Color? { diff --git a/Tests/LitheTests/LitheCoreLogicTests.swift b/Tests/LitheTests/LitheCoreLogicTests.swift index 7aef674b9..17a115d54 100644 --- a/Tests/LitheTests/LitheCoreLogicTests.swift +++ b/Tests/LitheTests/LitheCoreLogicTests.swift @@ -86,6 +86,26 @@ struct LitheCoreLogicTests { #expect(fittedFrame.maxY <= visibleFrame.maxY) } + @Test + func standaloneWindowUsesScreenRatioWithinSizeLimits() { + let regularScreen = NSRect(x: 0, y: 0, width: 1440, height: 900) + let compactScreen = NSRect(x: 0, y: 0, width: 900, height: 600) + let largeScreen = NSRect(x: 0, y: 0, width: 2560, height: 1600) + + #expect( + LitheWindowLayout.standaloneContentSize(fitting: regularScreen) + == NSSize(width: 936, height: 648) + ) + #expect( + LitheWindowLayout.standaloneContentSize(fitting: compactScreen) + == LitheWindowLayout.standaloneMinimumContentSize + ) + #expect( + LitheWindowLayout.standaloneContentSize(fitting: largeScreen) + == LitheWindowLayout.standaloneMaximumContentSize + ) + } + @Test @MainActor func workspaceTitleBarZoomsToTheVisibleScreenAndRestores() { @@ -1323,6 +1343,51 @@ struct LitheCoreLogicTests { #expect(!WorkspaceTextFilePolicy.isPlainText(Data([0x00, 0x01, 0x02]))) } + @Test + @MainActor + func standaloneEditorLoadsUtf8TextAndLeavesBinaryFilesInFailedState() async { + let storage = InMemoryFileStorage() + let textURL = URL(fileURLWithPath: "/in-memory/notes.txt") + let binaryURL = URL(fileURLWithPath: "/in-memory/archive.bin") + storage.seed(Data("let answer = 42\n".utf8), at: textURL) + storage.seed(Data([0x00, 0x01, 0x02]), at: binaryURL) + + let feature = DocumentFeatureModel( + operations: EmptyWorkspaceOperations(readFileValue: nil), + fileOperations: EmptyWorkspaceFileOperations(), + fileStorage: storage, + binaryFileViewerRegistry: BinaryFileViewerRegistry() + ) + feature.configure( + workspaceURLProvider: { nil }, + autoSaveEnabledProvider: { false }, + autoSaveDelayProvider: { 0 }, + notify: { _ in }, + onDocumentOpened: { _ in }, + onDocumentChanged: { _ in }, + onDocumentClosed: { _ in }, + onRecordSave: { _, _ in }, + onRecordDiscard: { _ in }, + onRecordExternalChanges: { _ in }, + onDocumentCollectionChanged: {}, + onProjectCloseReady: {} + ) + + feature.openStandaloneFile(textURL) + for _ in 0..<100 where feature.standaloneFileLoadState == .loading { + await Task.yield() + } + #expect(feature.standaloneFileLoadState == .loaded) + #expect(feature.activeDocument?.text == "let answer = 42\n") + + feature.openStandaloneFile(binaryURL) + for _ in 0..<100 where feature.standaloneFileLoadState == .loading { + await Task.yield() + } + #expect(feature.standaloneFileLoadState == .failed(.notText)) + #expect(feature.activeDocument == nil) + } + @Test @MainActor func binaryFileViewerRegistryPrefersMagicAndDefaultsToDeny() async { let registry = BinaryFileViewerRegistry() @@ -2489,6 +2554,7 @@ struct LitheCoreLogicTests { @MainActor private final class TestProjectWindowSessions: ProjectWindowSessionHandling { var hasActiveProject: Bool + var hasActiveStandaloneFile = false private(set) var closeActiveProjectCallCount = 0 init(hasActiveProject: Bool) { @@ -2498,6 +2564,11 @@ private final class TestProjectWindowSessions: ProjectWindowSessionHandling { func closeActiveProject() { closeActiveProjectCallCount += 1 } + + func requestCloseActiveSession() -> Bool { + closeActiveProject() + return false + } } private final class RecordingProcessRunner: ProcessRunner, DatabaseProcessRunning, @unchecked Sendable { @@ -3503,7 +3574,33 @@ private final class InMemoryFileStorage: FileStorage, GitShelfStorage, DatabaseF func cacheDirectory() -> URL { support } func applicationSupportDirectory() -> URL { support } func temporaryDirectory() -> URL { support } - func metadata(for url: URL) -> FileMetadata? { nil } + func metadata(for url: URL) -> FileMetadata? { + lock.lock() + defer { lock.unlock() } + if let data = files[url.path] { + return FileMetadata( + byteCount: data.count, + modificationDate: nil, + isRegularFile: true, + isDirectory: false + ) + } + if directories.contains(url.path) { + return FileMetadata( + byteCount: nil, + modificationDate: nil, + isRegularFile: false, + isDirectory: true + ) + } + return nil + } + + func seed(_ data: Data, at url: URL) { + lock.lock() + files[url.path] = data + lock.unlock() + } func fileExists(at url: URL) -> Bool { lock.lock() From 14edb2a69e9276960e27644cf9da8ae245a8998c Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Tue, 18 Aug 2026 10:05:54 +0800 Subject: [PATCH 60/83] Sync Windows Rust dependency lockfile --- windows/tauri/src-tauri/Cargo.lock | 246 ++++++++++++++++++++++++++++- 1 file changed, 240 insertions(+), 6 deletions(-) diff --git a/windows/tauri/src-tauri/Cargo.lock b/windows/tauri/src-tauri/Cargo.lock index 268a1486f..8fc75becd 100644 --- a/windows/tauri/src-tauri/Cargo.lock +++ b/windows/tauri/src-tauri/Cargo.lock @@ -267,6 +267,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bit-set" version = "0.8.0" @@ -530,7 +536,7 @@ checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures 0.3.0", - "rand_core", + "rand_core 0.10.1", ] [[package]] @@ -591,6 +597,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const-random" version = "0.1.18" @@ -880,6 +892,17 @@ dependencies = [ "thiserror 2.0.20", ] +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" version = "0.5.8" @@ -928,6 +951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", ] @@ -1383,6 +1407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1614,7 +1639,7 @@ dependencies = [ "js-sys", "libc", "r-efi 6.0.0", - "rand_core", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -2452,6 +2477,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libappindicator" @@ -2502,6 +2530,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "libredox" version = "0.1.19" @@ -2528,14 +2562,21 @@ name = "lithe-core" version = "0.1.0" dependencies = [ "ammonia", + "base64 0.22.1", "comrak", "quick-xml 0.37.5", + "rand 0.8.7", "regex", + "reqwest 0.12.28", + "rsa", "serde", "serde_json", "serde_yaml_ng", + "sha1", "sha2", "toml 1.1.4+spec-1.1.0", + "url", + "zip 2.4.2", ] [[package]] @@ -2828,12 +2869,47 @@ dependencies = [ "bitflags 2.13.1", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.7", + "smallvec", + "zeroize", +] + [[package]] name = "num-conv" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -2841,6 +2917,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -3217,6 +3294,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -3304,6 +3390,27 @@ dependencies = [ "futures-io", ] +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.34" @@ -3414,6 +3521,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "precomputed-hash" version = "0.1.1" @@ -3557,7 +3673,7 @@ dependencies = [ "bytes", "getrandom 0.4.3", "lru-slab", - "rand", + "rand 0.10.2", "rand_pcg", "ring", "rustc-hash", @@ -3605,6 +3721,17 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "rand" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", +] + [[package]] name = "rand" version = "0.10.2" @@ -3613,7 +3740,26 @@ checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", "getrandom 0.4.3", - "rand_core", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", ] [[package]] @@ -3628,7 +3774,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" dependencies = [ - "rand_core", + "rand_core 0.10.1", ] [[package]] @@ -3728,7 +3874,9 @@ dependencies = [ "cookie", "cookie_store", "encoding_rs", + "futures-channel", "futures-core", + "futures-util", "h2", "http", "http-body", @@ -3837,6 +3985,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rust-ini" version = "0.21.3" @@ -4283,6 +4451,17 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest", +] + [[package]] name = "sha2" version = "0.10.9" @@ -4358,6 +4537,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.10" @@ -4456,6 +4645,22 @@ dependencies = [ "system-deps", ] +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -5037,7 +5242,7 @@ dependencies = [ "tokio", "url", "windows-sys 0.60.2", - "zip", + "zip 4.6.1", ] [[package]] @@ -6926,6 +7131,23 @@ dependencies = [ "syn 3.0.3", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.14.0", + "memchr", + "thiserror 2.0.20", + "zopfli", +] + [[package]] name = "zip" version = "4.6.1" @@ -6944,6 +7166,18 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[package]] name = "zune-core" version = "0.5.3" From 858a502e54dbe66a09a92f45f2a15e3eee2936fd Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Mon, 17 Aug 2026 23:50:38 +0800 Subject: [PATCH 61/83] fix(windows): enlarge taskbar icon Scale the Windows icon artwork to use more of the taskbar slot while preserving the rounded brand shape. Add regression coverage for the embedded 32px icon's visible bounds. --- windows/tauri/src-tauri/icons/128x128.png | Bin 15218 -> 17207 bytes windows/tauri/src-tauri/icons/128x128@2x.png | Bin 48453 -> 62254 bytes windows/tauri/src-tauri/icons/32x32.png | Bin 2458 -> 2219 bytes windows/tauri/src-tauri/icons/64x64.png | Bin 5506 -> 5917 bytes windows/tauri/src-tauri/icons/icon.ico | Bin 270622 -> 102639 bytes windows/tauri/src-tauri/icons/icon.png | Bin 181062 -> 265429 bytes windows/tauri/src-tauri/src/host.rs | 70 ++++++++++++++++++- 7 files changed, 68 insertions(+), 2 deletions(-) diff --git a/windows/tauri/src-tauri/icons/128x128.png b/windows/tauri/src-tauri/icons/128x128.png index c046643ef5e3f70951cf57858de1a2fd8d06f668..99c8517c2f871cfd3833029fd2814b83a831d9e1 100644 GIT binary patch literal 17207 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 diff --git a/windows/tauri/src-tauri/icons/128x128@2x.png b/windows/tauri/src-tauri/icons/128x128@2x.png index bb56a394dd3ddd975a822b04110e81698bb8635c..5e49d7afe397596f31761b2a7bbd8f919de2dec3 100644 GIT binary patch literal 62254 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

Kqq-ko=Bm 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

DZ4T*9raKwM=X=9$~2bicOfcwB;c&QUmm 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ય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 NdBVIs*zO_O{{p@i5QP8$ literal 181062 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

Qu&+rY7 zJPS-Jss2D6LS-%aq4LPVYutE&YMKrk2xRdNN?EtD*F)ctIDd>hdKBLd&@GnLwX(YV zR^{XG`|#++Xa9KjW1qjQ{KV>=bxUAPcY(I)kd?1dXqjqY^LcL{0I((EHsm_%MG0HtNXh?;^EyH-*tz6YvU&WVgPpx@SfNt5-QfcH7sJu4?)zByS`klvaBnLz8Xe( zNjeQUwG4l_T7V(jijEt>iqQ^=1!|O`hewsfCs4AdjmYtjHJzi%S{%vrgL>RA9X+TF zZC=dSX>HrFE{=oAA3177PFw5}482;pGCqvpGA%d)evWFvm`gZ*{l=3~?b4bfJdV63 z&pmI3hNv*KqMsw3at4Bnx~b{Y&kDfc@Nley(gV!;nfei9xCc)q2{VNlIKsd>c_?Dl z|HzOs6e(q*QU)asJcG>b6t5yxT7=bhNlKI8ZTgXU-v!HCc$4*r;SaGNO?O zLmTfPTo;ur1E4`OQ6XcxR*-96k2mn*g#xPp#!&c8JrEAO^=?@fRHcW*T8-p|e3Kux z*s65qS~;ZypB%G^jAO2s6qzm!Q2jE5)NvisEYT|RYr11UGuv_qD$zbT)%2SU+9h$sOltfDkd9V5Dl*A!~UhLTz(b z5x(PD$#Q}#Q2v0BUI|<~_VjYib%)BU9`dv0`#2`yrYh51X=S*O6s6O|N$)IcFpr9=u9LFK5X zb&!M8%GnN~MlZpXM2l-{wIBq!0Z3-B1}gf(MAUsxc@bzkP)Na7K|=hc5wsC6O@V)a zu#ukh)y5Kq#uh9X))t?0emyURypkBOQcJ0*Obd=cJC#wl z)*L}MR}WUodTx-2rh(vb!Dum`LE)K&jxVAI2^p1`D$(J0>1!4#4^S8+%pp>DyP3G# z;f76s;=>B9gAz^jnv(`m$)xHrn6(O4!0zPWzW$y+a_{nu6SsBOZ``Oy)$~9VO0w&- z{8UA7Xhs`0XJ49F%Wc+A?9ce?Z%u#ih0h6z{<32O{@CoH7H}4U_^^CDQU;xFQWNFKmI@)U}6u7HJ_ub8QlnV)#RDk zhzn^(OWyICr^~uzI6*W^jW+d1W+Kjm;;vZY?*JRxnC+j{qN)c_G?E=Mi27(?4KQZ zI|xu;_vL?Wc{9LQ1GF3C@Ls3;pWnKneE-8AtS)V1xjKS9*{>)5sZLzN5hv8i*zc%1 zMDEvBe-L&BQg6#QJtH*~fdGzJi;)U85-XN&6a-uQr}H)ZYL)l}D1eGyJ2-_<0-;eMd&r!7TRI=YSp!CBDq<|R%#K;!spnHCy>BS((t%Pj6y3&s7m2h*#6 zni0~^)w9{3GsSr>az|(M)QoyOgHz*x@j)L?KUaT8!UqtLCBst0%DZ3qve9(1t>0SHdw`IckNIQksEIfio8)63zrn;K z$Io&uX@#SnVqzFskx1x7FKcM9+K$2XlfRnFI{oM%A9uNhpoG0=MzbaZD9;vNOO4(T zZppi)T$2}_<0k)A;m9dbsrZR~zTV0is@XEHGW$z6e-JiYSW#y5RQ`DpNZ4b`&eSk~6i@>~ZZlIz!R@F^JsfPZwf{itAv>Iv%NlcISd9Lvy6(>?x z{G|oJVdXXxfk|a+d8SHO7MlDFfZAet4Pc>R71(HNv#d^PSJrNm+hGg^27_iehA17~ zLqN22f9a8@|I_>Z?AO+2+Kb`jD0!>*`^dZSot zNl4GSA+vRuncZ8v9i-=}m4+MCSqli)+gp5j!h>F#QIz^@<3rdUe7VS{L zsvcxGN!SCONsE8%YnufVHIF)ZysAWFi>9C7>G{mT{;95cn#gG?6B$bbGfhLfmZc+R zxotVNT=TiVDhKx7C=5Mp#nppB%h{+jB3p^zGtOn=i5w1Q&NQ_0$i?jjYV)j|0V}fP znvC<1BWxVLUo;%pP{)}X;;qb-HOu4V{6yJ!Y#sE9(y;6RU`q6!dN82hm(k0ler7}$ zn;l@;P+cRLHi9zPlIl>uDugMk#tBczW~mHN1FJ3(JBz!msS<`R}Z^T)ic4AnegPPmTnJOcm!G#m6+Rnu2r{)xnYO4yMPO0)8aY*DIDl2r?1nQZ+mO;N zY{0T|(y^ce4r<1&J-~{Rl49Gji%k?P4;#)5Q3Sgo{lUI6a?I}AM;7HW-r0rNRIdtLK z0{BVD^6=CFxptVdegN8Z&RGvI%7ON@PK*%A@3s=Tnb zq1q>q3>^>6K~E~lQ&2*#(M+HWeV%ASA1nKsI7>A zUsY97j(};RHF? z0HA3Ism3AuDViaX&pQ-VW4T#S1az3XJOEfwEazZy%A-+1_s#I}5b+?;Xz}pzc>+v2 zKLbKX1n&Q)Fp%i?MzsV|UbNPL@;=EF(0Hg1VL?cZRM(6rvR3urbb(@0N z185zb5RsIdRZa6lw^IV^HeM@(ZRDt-4nyJ#w7U4rY2=^z-8B{hvy5?d?y7C#Gv{}$ zOXdcLv&!R(FbULPQ)N=~y%nL6N8J81&s3P^qJ2)##kEV4(Mw{w1Roq!qr{ff%Jca~ z`_E*UP^($%Ql6Kq{#r^aLWQH6@I80BEn!NhnNbNTLYGuat!%l9>q}EjQCqTZOZtiO zX>(vwCYKImM-n^9aUTFu>Sx^l1M?-}c@VHuwDX-RnI4U$-0- z_}KuqGT@P|&spmiEO+SjwS(7QrQ2Ja5a0=m)Uhe}W)qq@vKxs?u^&*7kGT0BGNL(% z_-u(PRbc}jWGXo5Cq$4)hS1jKnQ_tOi|w}~R)hl5#JrVE^TTabn*coga*a~?YDBbV ztO7M3)X6!7N>awBQ84*J<1#HY0;>n~7Qj^3ZEl- zU7)}dLv_zzY?)+6COd0uwIye#o85E`g4z+xAyJ}kES$Nwe7m;~jRm>JZ#wflXpQc= zs8q4^89*^*TyFA%QaAGepIBTc+K2*4I@C|}q53L=ghC>el8Iznv2Kww^q?VzG2MU3 zI!Ve-QMLudYK-YC{8O0*>w6V}sx&z96ou)M19xS&E$t4w@}0H+_|mX=KFu7yW;wTWwg1yFPj_y@MB-vAx$(YhOLzN zoq*;=59cSL* zItUT*4irJ3y0Zm414Iqw`rDcS=}V?yD(0kSqI6U@AIR9M!d+$TNc(VT9N6x~Kh%8zV zV4DLSTY#Cz>$fW8ki=3HEr3K-m$DS4E;ikIW(vwK+%OqgT_~bk=mIyD>Gg)*} zpGdd)JaWN7#))7%0~rBt0^xGQ#hvJrK`OdltH{_u#??c_ z$u=#LE?|_(!83e>7CO52*Zu_o7n_8=vw=|=>lN3#-1q+FirbyoUw249n>OJs7X^%0 z{^+eO?;WMe?)&t6<#p>YkYkwusJx(y8mOU-NR2gS6bFtx52lFBmneUK1w2p*#h zSq7JfS;kk^Rj#twUqu91_CqD#hgR-r&iZ`?RA%O?AS>?Ym<`perf>y>D z>c}oAG-rZ@yoys@x?kJfm509I+2zAG9ns4my8JU?T=M{+HtmwX`#AlaR{^0@Qyn<2 zt#;qLG41~D!x!r6^>)2m=*wOfvBQ?ezA|3VR*4b}ar{PtLn;QJUHtdTO&s9Yq?5$S`uatsoXAqye8|9jOwCM(9mOe9xdzV>J+wMG7o14C@jF zjC#0Q(AE*O)Vj`c{`xOJ*WG&Gq~Er_6QVeo1f`T>Q_dL@JAdufcUw;UMUk}lFfo6jTL7U(VS`UPLlj%#m1b89OSW-y(eU_q7X zQI#$U$5!>{Zx+C&qpeZ2NeER6FmBH$=&sICpJeDGPId$|St8!}6^7S%S0%HZ<2&o# zEYa#mlMMzTlLz9t|5e0cQ-!_JinfhL)+v#XTP|1oc3Tx|BMzZ-7a}I1BZqane@}VX zAO2qVsXLt6eeH&^&Xo8hl+Km7OXr=x`Zzm#`ZU{?uR-|kT}O3Oz25q7fAfFK>QP72 z8upM*Y&T?+sUhA{D@W1xCFn}K{a_&m$yv!MCMIcx-$UT%^2VU7#r9Y^gM5&)4$-34 zM-CbVZitW?qh_sAX^mCmZ&}5JVvzB*`YeJj>C=~$skOt=LDt%}S1Dd;d|JwP(C}oL z78`-lHt!M^3;OMjri1oPMyCEcogmYz)x}3WA97Pc9lY&+86(VoNn&`SX#0LK^skSQ zO5f841I434Wu6^CGmAJiSFwzgy_St&zm6<+7|KgggON@3fN|*LNrja&IhAdDWs@c4 z=}00g+m7$9zU1n1)nEKofA6(3^vNz=s`H}{JpQ0%Hd)ror&9L)Z&h}))7t~%{$*R2 z_xF9{%lcnD_wi-C@9TPJ`mk;-=;><-a_d3o{x~B=qQGe|DHQwY%Z#2!OeEZ{EHbWx z^oSD(D!2KQ3cC!w@m(`yVqmH-0Qpf4--}m$@SS#a9Z>X=%l*(y}RG)QT-pj?3HT5?eft-O6(s5byZSbN6n$C z9;dxjKUJJ4^XEEOp{nb6dnE*7)WX)-X-@4l?}V`{NX3yi=q z!WylOmUjRa7*j)S`AIYlUnVw>E%F(M87NcG(v1uF{=TSfgWo!_1F}U4(V6*!ITfa>h;}E z@88uQy?zuA;%R2BXGeJCGbE}eP@gIJUaIN59(}{cM*sYcZi18!h!lA&U3yjGrn^FoK*a=^t#Xwg9czp<-42UZ4&KVDD9WpnS>`|mvG?DFEz zURb_*rym-9>Kljpt+D#5`!WW#kmq4PexIJjG?#_Rm#|0WzQ-Ta?|avW%2z)A$$s0e z<7L+dV^iyz&`g@;RCY}q72+0$$yA?Bs`Wrm|Fe!QrunRmqqU)20L63xH?GSnWNZX4 zOo)tORIpchfCzMe1>StNxHAY~ED5^w!$DWAAQ}p-N4p|MhL*)e)VOWv@lf%Wn}tN+ zMxiWk0W2hxw*cYSZb_nRrOSrv+GXj$(mQ*QahJ)2JZI4WYf)Jrxbywh>ozvKXYRkO?D?r5 zEpNE+W96o3;8*B+9Hc&D$dOVMq?!w1*KyyWa{qnczVlnYS^Rh@DR2*lJg zD6H{Oham)liAbAaflaxdT^WXaE5k=3IsmiqhtU{}Q$cHB!o+053)dKEIbc{55 zRI6?(rltd0(%O(qDVaDj<5|wOt1tu`&tVYw^aa~7&-`@R|H!Z{+mk~2khaQKyM6)2 zdG{w{1y$#l%};DOJdIG1DAurPlU!;SLANJpD%#%wS<5y}42mPlUQN{KtTxU#r`z>{-Y2clLm_=VvsvF~yF) z9W-!`K}^wRL4oPn@B-B^wwl)3`VD5}5!T8q09@84!&8DGl7VUh`qmJ0;Dg|SO$MO4 zO-3YiwUb^u_T=slUi`9d{N68=M;(19eO{`bx9akzv?Rn(=Jr6X1Z5`Ct&x7@MlS_u zdr)us{Lxj{bnm#$cXa>z1OKNy_WY-m@u6$=A(lhv=|67SA35WbXevo2NcWOpTUyab6Sq9`J+gA~Rt~39$j$JK}J$Rt|{YO2# z9NKr2-WJ@3JL*2(jp3v#O*7yR^-~I+oQaiyj9lf=$O1L&aGf<#^(3}*P)n(v=mDhv zjCRC>FyM>lHeste7z2QzA6h;Rku_G6#RC%SD(AS$cI#i}S3k(xUXzwL#;d^a4Wo*< zV(Bcl>HA)J_;+~$fIuxa`PTp^^qpl|Xau%abz#L11$(zm2d8&)AI)8zem>miC!ZnW zaiJ0H7Kx@WfHQv8MjD-M#?VLuhz(n9D7zgQTV%~w0V0GtF&L>1F_ATMXpmWPh=6r# zr+@>9A?J{5S#*7>ysYSK-ktiaNzN^l20R0i+Y3Dy3cimVY2KxNIz5R0!Uf-SZqTeX5{@9;QPdNFg>BgQ* z`>m}F-pW@L1*Ib+V#0k%4q~aGD4Fxx3>fcg%?M)%wN+{XqBx$+QM7X6r~I@Z_iKvp zsumNGn_oCX%)R|wwr@NFN4`G%?Ms-A*UV5(h;Ob7U%XDZ-B<-xm@`QldgudEMb{0B zu-!I64sj~wrVg2ky8|?uYYakztNG}IYe{sZTRVefqVG6bLpfyNu+d^Orr06dkG#q= zMbR78CR_>x^k4!rRLhv)2iHa0QyH2fgmLUs_k>nh5J=)fn;@qLXs26;xy{u7)RTX` zJo$s~F28%+S>=L%9``ruSW~~^!MErA_1?m*XD<0~qRauS@;p7Lt&Vd0ZQZKBhI#i> zwwK40!{tp6enh$W%irwQcAea2VemehqTQZ&3}XCV=bf637r z2$B+im0Cko9@R$%GFvk0$~F9%dCWIYD+(xiUeLhS!41Aj(f>8hh8Se6B^?`+!#FLb z4|~8KGA5L_tmb}X8DgF|GB!Yw1W+D23>hfKhQl~g0g2p7 zkhZ0V=Afjx4m=w9;EKiA*m@2>5C ze&?C`DZLe)98q&0@@QhwIQG5MdO+ZJs-X!?3qL8)9Vun+focEZE3YY^yZd*JUi-NV zyC46>hfOzcyh1bc5m%H;5 z$15SZWWCx!jSJ6u;Zz{`=6{GYKOKM9*yKSic0xnLn0Ahp0_%3;Ad#}_uVXQ0*IuZ_oxO*1PnRx}#e>1$URvNsw8krg%5H^7z`!*J4PoAW+Qs4NNg zsW9~Kk%kOIR>|Wy8KTD)mhz)tN(D@UJD_Fi>UdEPlcQ_lST zzwDp2`>byF8ea*-BoCZ&Q$t-&m;AXDTn`9T&NBmjy|>DH*JWc={^E)o%L{Y}@ju`E z+R^j=;GJcCw7(p=@jAgs71#N<)5*K6RjY>`_DVF1Xr(ClK*01?XA0CB-C4@Pl&D;e z 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%0AL9YA@Jkl)C&wl$}CqJzKA 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

GbqYD?zZZeK*AGfJYOQ!(^rv5PWWHU)a<8x*)U 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 PhmaJL6RrGg@b&)zA6L$b diff --git a/windows/tauri/src-tauri/src/host.rs b/windows/tauri/src-tauri/src/host.rs index d4893675a..03ecb6cab 100644 --- a/windows/tauri/src-tauri/src/host.rs +++ b/windows/tauri/src-tauri/src/host.rs @@ -9,6 +9,16 @@ use tauri_plugin_opener::OpenerExt; static WINDOW_ID: AtomicU64 = AtomicU64::new(1); +// Windows 11 taskbar downscales a 256-only ICO into an empty pill. Use the 32px +// asset after window creation so frameless windows keep a readable app icon. +const WINDOW_TASKBAR_ICON: tauri::image::Image<'_> = tauri::include_image!("./icons/32x32.png"); + +pub fn apply_window_taskbar_icon(window: &WebviewWindow) { + if let Err(error) = window.set_icon(WINDOW_TASKBAR_ICON.clone()) { + eprintln!("[host] failed to set window icon: {error}"); + } +} + #[derive(Debug, Serialize)] pub struct FontInfo { name: String, @@ -273,21 +283,27 @@ pub async fn create_app_window(app: AppHandle, request: Option) -> Result } else { format!("index.html?{query}") }; - WebviewWindowBuilder::new(&app, &label, WebviewUrl::App(path.into())) + let window = WebviewWindowBuilder::new(&app, &label, WebviewUrl::App(path.into())) .title("Lithe") .decorations(false) .inner_size(1280.0, 800.0) .min_inner_size(720.0, 480.0) + .icon(WINDOW_TASKBAR_ICON) + .map_err(|error| error.to_string())? .build() .map_err(|error| error.to_string())?; + apply_window_taskbar_icon(&window); Ok(label) } #[cfg(test)] mod tests { - use super::{cli_payloads, copy_path, create_app_window, unique_destination}; + use super::{ + cli_payloads, copy_path, create_app_window, unique_destination, WINDOW_TASKBAR_ICON, + }; use std::fs; use std::future::Future; + use std::path::PathBuf; fn assert_async_window_command(_command: F) where @@ -336,6 +352,56 @@ mod tests { fs::remove_dir_all(root).unwrap(); } + + #[test] + fn bundled_windows_icon_includes_taskbar_sizes() { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("icons/icon.ico"); + let data = fs::read(path).unwrap(); + assert!(data.len() >= 6); + let count = u16::from_le_bytes(data[4..6].try_into().unwrap()) as usize; + let mut widths = Vec::new(); + let mut offset = 6usize; + for _ in 0..count { + let width = match data[offset] { + 0 => 256, + value => u32::from(value), + }; + widths.push(width); + offset += 16; + } + assert!(widths.contains(&16), "{widths:?}"); + assert!(widths.contains(&32), "{widths:?}"); + assert!(widths.contains(&256), "{widths:?}"); + } + + #[test] + fn taskbar_icon_fills_available_canvas() { + let width = WINDOW_TASKBAR_ICON.width(); + let height = WINDOW_TASKBAR_ICON.height(); + assert_eq!((width, height), (32, 32)); + + let mut min_x = width; + let mut min_y = height; + let mut max_x = 0; + let mut max_y = 0; + for (index, pixel) in WINDOW_TASKBAR_ICON.rgba().chunks_exact(4).enumerate() { + if pixel[3] < 128 { + continue; + } + + let x = index as u32 % width; + let y = index as u32 / width; + min_x = min_x.min(x); + min_y = min_y.min(y); + max_x = max_x.max(x); + max_y = max_y.max(y); + } + + let visible_width = max_x.saturating_sub(min_x) + 1; + let visible_height = max_y.saturating_sub(min_y) + 1; + assert!(visible_width >= 26, "visible width: {visible_width}"); + assert!(visible_height >= 26, "visible height: {visible_height}"); + } } #[tauri::command] From 22a0b663bb6faa459d4758ce5524c84b0a96110e Mon Sep 17 00:00:00 2001 From: Mucheen <1528136628@qq.com> Date: Tue, 18 Aug 2026 09:55:55 +0800 Subject: [PATCH 62/83] Align Windows welcome sidebar with macOS --- .../layout/components/welcome-screen.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/windows/tauri/src/features/layout/components/welcome-screen.tsx b/windows/tauri/src/features/layout/components/welcome-screen.tsx index 2ce7e5a5e..33745a274 100644 --- a/windows/tauri/src/features/layout/components/welcome-screen.tsx +++ b/windows/tauri/src/features/layout/components/welcome-screen.tsx @@ -71,27 +71,27 @@ export function WelcomeScreen() { return (

R{HY;rg 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 iTea}!Fd6l~eftloI{GBFRk@J>0000rReR4b_S% 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 literal 5506 zcmZ{IcQ{;Y*Zv+xjb5Tn7@c7Bn9;k@MTn zqW4eEIluG1*YEnieO+s>_1x>e*Lv34|LrIpEfr!ydO`pIh*gn_x;I|-kKyCqyi4uf z=58F=R!&n60IK6}U7&Do&QMFFt|kEZZ~#DHC;*(@K!F+#aVx*}9Rd8{)hTek-zyw&N387G^q`Q@kxUQn|Kk}QC6pI}O<0{V2@8#tM z^Ad)+xZCmzA`l3E0U>@NA-)?1ANr{?2IbA?jAs42$p5ROXpOdXw|B+ZyEsGt)J0ji zcwnShSpGEn_xbyt*53C2>Ew+5XRMn6`Tu121z`gG|JJ^dO8!B`6Vc$@?Kl-2^vad=rOMcTL z$A05e(BmhrJvCd;LLd1a9veICqP5wW&&RGCw`V;jzd2O)9-GdeO*TCl95!o|jQ%#V zX@q!~wguOM2y)-%L}S+A-+F6r&+If-EY-$%at=~u_fYnKe*N>|mYp!fOt9wVg#Jdp zcvP!~pP7Zm;E@R0Abc+)`%>@A!{4d4+s#1iGdSV$p5QjsrDiIU@auHMwu82< zO$D#M784`y5Mo?0#td{3#B}J&F>94c??rx$c;o($eVTJ9# zz>f$N`Jy>{8rjlwTJ`zvin7bq3lOduB9U#MbRS}=05~h{Cte@ZVsd(FRjF4LwP?8y4Kb2U+sxH0xuUsdfRGoqIY9f<_TGE2gV3?c1BVm33; zFco8eS&nLT)o8?-`!^3tkX^dLO(wTZhWlXvQ{OEjdSTX*mk(sX2>{` z-a|=Vah$P(C#er}tdeC56LH+v7x|GAVYdil-k{4Y-=};!rHT0UOc19?t}sb$nxxBW zwvGqNGoWVBel#a>AQMkAI4^ZX=K;?yz>Gerf3==}*R0|IKI)Z?4$`RKb?@4dCt$&@ z(p{0duB#CarvKH`Tg!ZT8e;a+X|J**ngJ;v1r@rG-{B`2iu;w5v}@GB&Mr$w&DA387wDOvtjXza$vH;jc$R#1@G_v-^Hp!x5rpiWyTYN#xqeGBTH$d zcN(`%lCBLiv3;@4SoGCWQ03q|^EajP6kKetD2CB7{Xf#DxVK;Bh}DG;oZ7qEvK&l=eVl9w$A)zP%^kPb1dC{3!FgPp@W4guv{T? z8ZwEZFuOjzGG3AKwJj^{;wI)DSFz#@u(21OetbYqTvdExB`Wkh0vAQx5C&!w)Z`du zd9jzpo4wO_=k@GJ(CW(v{qb)K!n=1kJEpz16XXd{+T1%)U^q&;rh$D#OC+}}O9#(W zschA@GxT?6KqCHGkn#tS_M%y7*~g)at)1K!1}Tb#*#&-cWEvObMTsu7ok zjd--*nS!c`cFUtXfV>baiKIkPZN-yX{VX4|Dx$k>B?ThTToqjLrD!qBH$^G}M zM^?jU!qz`G*Q1T?`|`Z9ICiDi$9*vUgvFp_mi)B~gIDHE4*mgu8iKiXQC{;AOKPBJ(+dnCD2A0eT^5fn zebLyypryJsSyTB37PJLa;P#^uQMFD5Hz_m!)1{FP9qn8>l8cdB?!P9?Iub(cRs`~G z1aj*u$#3^B@nvZ!Xi?EWW`WnMXMB=A0a2Ggz=Lm|hYrHn?e~J*KQ3u<5RE0NZx~g$ z)NVbA>ZB9GTa=@Qn$og(Mtp~2^%@ZJSSiwl31V=>M(6vaQq(8F5X6}Vg>$@j9iX~QCRLbpx`C;|D&!g*p5t`F)|_?FSn528#`K`z07+?I?G@*W??gFJFy^%1n+iGXx9VR1gsOy)j|RKO{-iCnx1o#QG?Tz1#FXbtVoYYqe|w06G>ccK{hA zBuoy!-aIL$_(C|MrGZ2^y3jd71hHqRqT$}kZfjL0^{q2{=I&pV$`TA)*&AlJL zc})^2CsmJ5Cy3uS(7K9I<>Hm1Z8p_p55fZ>7cS*4PPomj%+$>1WG%B|`4UsZ)D65( z?;`f@lpO@|ToFoeIblV9Q6X9Wjj)+HBVH@$oGK5i4hNF)W4GN@a`yBON}X z*e0I7?<2gn4LZ0)XF|T4LRjYgsAiGI+dBT~L`d#JrR3t$7H@EO8S>Hd~B$ zc*;-9Eyd@;D?gP|8@^2sZxdCfAQ)#OP#%HsMp9~kFYg_7(lS}caoPJ8R>hDhy5QHw zc)zI0Wc$DH#CVKN7htS$16O=B*BD;F4Drmy(zHGlx-Y^}%j9&<#xEc*yt;k(;MI^C`e)$~a@S@wVia7EIy?U%+Aa3GmXPLHoO?+viT|Wo6Fk%betyhCXWFi@#dACOyoBwu_Twnk zV4{98+zj_FZRx&O;aswF4EB9ou^fk~GrXWW*)`GH+f&%h+@L@Z?gaXx}$-cAcwAF7>2Lh~v++{#Gfu?1q?GiH!Uo^u9423{SkWu%$`r641~h8K2b{7PT+WSHpB+WKsyHJH zfNB-RfdkuL1*wN1i6*JL{mclx|V0cRr!n^mmRS zBpu1&pPkYvBLXj=!bn)zU-z?w5)f+Dgz6SFzD++HGn{yTaxcm?%`sqIobGZ~CGI5Q zYq&XY6Z|6;IEP-K;pag?o193WW-4Yw@vZq~$pJ2U&<`8zY}C`b72;#j(=X)r9b3qw zH{MmYbCd7*LYB32;Okj)n+(FCeykzK_lRYCYIDGKI0GQa zUo-?O41O@rT13ovh6sKm7Q)emD2S?(KM3?~MzLzWcIcjOGh5Q4agg8mIzgmh2GvyP zb0k8Qiso=-4p@$GtNOWTl^s(C24;=;EeqD?APS54+w|+TBuy@ios&`@97S#~E0Rg_9-C~_b--F{5TZV#Ze5DTRSzf*AG@ErN*1^ewYu?UovjTvK-LC*Oe2%vM9z` zK_D)Gq{zEvShobJ{h!|-!W{eM2lmw2bO)ZX?WeC}NOE1vnh zLN-i!eHyHU{(2w4Q^!xHI~qJoTwR)TtsKg@lF+^W_@H2)#_ZL?XEy!lPV%vNl6T8G zMaWJD{jbjQYR2bA9c|>;aC!6|#Jz_pB?6#>EfklPiKbq4YUf{F!1nl? z)(!o($K@q}Vg%NVb9+d?TPayLI2N}7 zD~maTCjt>)jyRtRW4b4$BNjuM9L4!#X6;YdSob0YC6D2Wk z>R`<}$Da@nh+E;zJDSI;bpcPHInhxBHLZ4`xuN934y$Bzm;oOw5mk24z^`=AEvqy3 zafp$m>3!6C+YKq4tEkk}dkN>l1}1e%=eH&;1|4<$PHca69GFHOISN-e3rVr=tj#F7 z_-cvcarBh@E{d&1(`N_D8gm6-KQ1WoIm-(>kM-5C9b%*ERr&5oTpcD*XZ*>%u`wuN3vL0#xJ@}2 zE_WO^s~>!*nNf_i54c5FrT)t|CoB}5TM1PrsrYFKWFH$E&`PLdz1g<8O-9jvlr%51 znqd0fdswku`_5LerX?J;_qm6FnBz$)d*o;m(%+?TFE3G9N9vge#JTa98-ABT{(a_2 z0?~TG;0nSe^Qx`ZI80z)1&Rx`yLaZKqVKPy`#Hv~=VFRF90-x3ZIsx}f8OSQ>QDpj zf$w{IEtUdgRPqvtDM9) z%F)haBCjyfCljgXM3m|N$&zC3c9Z+=k3O+VrO1h={SeQfZ|DbCZ1BUZx2%V`+M1rW z-4R#V4@C*Pva|RSf%gRS#7qEoUG)dDXYwy@VQn3aWk!elcMyM#J+&aD%{DTo6u;A@)(xVKaBZts}HD`LxpezPcu$O8#&I zo)j~v6uwqAm#5IaS{WJ5+nLd4F|qLh#!idcY-`Ey<;M5sw)mAmFOz91zD2V);PSLL z85&%8pwjrdr2w`k3B{k$m?gnz_UtjLuWkGGC9tQu%(Kq4vdy->R8pf&NNl0#IIKk` z54cAn4bS0TCYt=z;{CLH=}J7djS8gRaOP5le+dVDT8C#6*L1huGAY}OL<*%Z>d%Sj zdy9zmXTTiJK!NV(LSp=S4Rcl}oshCMc2H#9^2z=KoGw#58FB>;$F`b);;?}953REH zBbz^!i)n2^MY`Ni1%G>fU_4=qEEQklI=!b@!K=1!c&!R`A-di1_LCXIXMCR2_2qA? z1M1S^w>hJ>JetKx%2IdhMdPF6OowTaZI-5?*Hw{^%8LeEn#Dg}&(hvc&!Cz&0kX5+ zI1)N|mOt&1*?g`)Gp)~qDSZha5@zNwkwf0?YVmV?=h`EjKwHkmNY{j7bX=B@u5I0z zBCuo~b(`2_@Wkdh6G`JA@>^l&>Bus*w)Gd=wr$&X(y?uIoOEp4HafO#+qP}z?{m+6{KvTUP`hTW8hh8no^z}* z*8%{50FVGgM8Lm62oM1Q07Cw)P*MMj^+5rEv44A*nE%Cp!2keC$bTmZ|BHd40Dw6- z0DzJ4zZm)7dlt|E071e3VpJ>u;D{Um@bmjG29X5--UR-${?8x;Jb(fLJ|h8ua7B3u zIB0C>f17YplA^!4caY>Jg0fZz|1}67= zE@W7&4o^AsSYm3DGx5c2+jHk8IrWj?wqJK^VlT&Y8c9_Y)Yj)sy4Y&on0&4lUGI1* zn&6GiHzO>o;NH`A*y_uixZ3+E#Uzh-i1BMbxU`@48$K0psAbCQ1NO#E02HJ=&yVIA zw0@MQ>g+y;k+b7Ir!q{B+fehIF2K{sZm6~5F5iIOGkXvMR5L)j79{Wd_Yu>6AceQ9 zfVkt&M4P5lKYO+M2>eG?D18m+cf$qSS{XhOEnRt=r^Nd{6Ic&$J^)BM8||)2nIA9L z=W!pxO}r|6J)~*&Wn)=K6UJG^XMmtmhLKCSebFyr>&OuH9Czu8jhI^8dSRWRcsY)= zRxkCc2}(9DvASh%l&Bvjx3`<rR+!j4Y-P)^y+;C)TosDfq&< zZbo4*RN}NreAWtVM}g^Oi8A{S?$xmSO`MnD;*6_B`s+*T=ug&gBXa=rOX=cPza=SBIHZc#X#Vy#f-CJu`yun)&JhghPZz&W zH3Z-xQ|WqJLmv7h`t1t?PU2i`quU3xMYVh)iyjC|2x*|Vec-nt4_0cCjN9j&*w=%- z)Ve{!u!tAXCL$dtG@bCgv%8uc2}}cfJ!1E2|1b8E1z0XVrkRdJn0BmKBPvA5AvCoy zaDj%~^u6LT<`#lmuu)wME%;Tg-a zZn`t1XMNMO(y{%Io=?<(wMezVS4aLvZ^H-iyglfr^%fgUJH?Y`O1+GRLg|a=LG~re zo*T5Oyn8G7Nw3B`s-w-E-b0#O{y~NN<-ts^^=)}ooJvqh2g2Ps%&Q@?^;7PiQZ(?H z?gAf5LDjMIgXq}#X&+H;6J_X4&`@$c6W<3HtGd2I#JLAQct#~z{J<-4v;;TxhtQdu zC?6OYL4l>UVwYhBj8Xod3L5SU_TQT7XE6eKZ2aKVY3j6;h>`NwqE&yOBr-a<9h{gq z!K@^pEUG$a>cwMnF5rJIErt`zr3;u;a3&{Jor{6>5M2_Dm>R_)c|IgN2q4YX?9osf z$~EYLng$jmldYjden_pPoUt#6bk-v6<#(ecz_5|pz$kO7&qlNJ*krBV|z z>x`V4JSd13@x0=-jKko&#ownVUjI^6vT$Y|=!7I1ZTF$RfhD(e$&0_X%ZV%sXVk>E)@$t#E{#e>r zox*;}$_sZW+1$Sd7^=%&j6!{iOhD;xsRcv;+vgf6FAcE67~XnSP|XlqVKxXCXSf8JVwFLx8ZX=zP*8{c3k|X;BK?saGwK|@b zHvs39#NAAQzblZM!`*d{gOJUC*cUT`?wlOmnnf1TSe}5q^`54CSv|)}e0o=nVVD4a z2qn)^!hV)GQM4Tz$|(V)N?cLPR?ThWW{J$UGs&4ODsHcVu=I{ym;$X|Kg7Xsa9*s| z{0a;I@~pKQjNb3JGd`nS;tPv)v)#kj9rubzpiT2gLPFU(lW1O7H4)JkDS}k z+y-47C=xd%>|qzPZNFX>=414?LbGW0?v-m!)zpxhG$WZi2BkVqe778gszwhyJGky+ zMt{B|^}BH1BhLBO@ZG$&Ih`eX<88_FJITaDr}9{R6lX}KCdKwA(Nl7%1^f%r2$v~L zXu&y*jeP4v0ygerOUJidE|2TPB_e^nPz(Yz3=)M^zYf|om5j{+h^^B(}L7PxBFY){uQ{ z@+49fobF#YFob$9`+og+R&}vQO~vfKawNW|-}N zAMX|Tay?NpubjCa#(EP9w+cwq7P|&^Sv2R5OF*Dtm&Gu# zYycWxf-=HfPMV?n)W6TJnhSmAv=)I2ijARE3K)7^dwd?TFPzDgQ8ULUh(>#Y&F27? z>Tc-Z12ps4+A__2{2QH+x4IOvUb!QbxK+t3UCZ7(X7ijk<68OJ`AI)Uc`UxZc}zHT zWtz4r(kNb$;n0ZS^^v`l8ekHLpf!P{xS)%`XP4+7%`|&%$;X9YTtbK~athZ=T93i! zJNUspn6@>}1sfk1AC1Oi`qN5pp z!e+Dbbif3nm@VkwEQQ}@@Nr=DMQ*yI9~)p+t-CUygslBS7}~PLy8XlaMZMAZy5#3O z@zXQ<*+DA(Y@?7Hr}3k$L9Wknb{BDO%~Pd*sZRuf>!48zyQce#Ivn6W*_IsU3d9Jk z6t?~5aJ59C7X^r10C4-%TWL-tF|JE_-)+lx_@iCc(_%HjmK58Ra<}>j$I)JX9%)>KWK-50TXs`!3FnpH!H8u!W!T$sOvN z*^8tyaJl4WE~9a}$g9hsUnBjlnVJ3bjFC23$K}iO_6b3y#X+(aaXW{goTZJ0hhG4y zTJ4OXbhSIR1|Lo=Yy@9NZFkR}mQTH!s88y-r^K2Wl9=c`psxy z!?;3e)WRg1XbVUktq7A$1#fBd_{h&mf-H#7Kv`_M#h6*J!8DRdRV8)HD7ybigJ;Osz{M7GGnJ@-gdvm za=qaSv{x~-_!(hmOCOLrYEpw}ppwRs(pdPVd5Pyp}=w)d_Ce;M_uZ#wc+Bjj-&@qY+4 z;lDWH{|L3ypFfWP0OZ(zg}NyfE(%ZepHRO{PkwC1UN<*xRil;(z99}O5)bb}lUuQp zm*h(-Ce?@*_5mzmu}y8m>hgv`g+WPBNdkllFyj!SRpJS$kOG>IlqrkrwcEF1U!J=> zSe$P7j;A|Y2%4CfhC6udwX4 z2_!09*e%(k>Y!=yv1kdodYT`Y+ z363!Xh|4~=7PP4^)4%bvUmcSw_CB3}%Gt1Q<={##xIofeV8|Yp%c~OU6TlbYwfMz-$5vjk@CI`d9mi&`(8J#ZedKBpS zoNKHqxJ{D{=eW%GXCyG)_yFTZ($MPjH>-TT{v}7(PT%B0-eeTnF8+(wL^vb-bW3P~tF%<}lbVQ;v|OJqJ~JmXi~6%S zm!w&qFk4o6zp5+?8-kSi9Wr6x5QD(9aEPQM`veA^Vf50j4>C>^l(MG{w>P_#UDoCF zJdTx?EZLN_ev|9oE-Cl4Lc^0PJTrIRDN`E~H1o=O9=NP_8+%ReG{r$(xq;YA0z5Ut-K9mecAN?_)m?LRY=a!I-yxZy6x-bC*m<}n9wqWhPm`mRj zh6i*uXP7EE1x=q+SNi*tR99>EDfyZsCHxI=NL0(%q>5?j;7^g$#WyiEl4q@GMN{DN zu*>h}zbd61)v}~&OIn{pA&B;WTL51`vOrD}|Gv^M=Qmv^Dq#X#`N(RGcikCIUTnxD zG5sEwYGmkCdD?ow8y5l5Fot>4QbXe7x;P6YoIVsxY7$LHG=WbYvH}v!0c#Lxbx(8u zleFB2lr;UjdX_GBg(}oKIF2hJUKxr#irAr)lIMhGU{4g<;U4t(6ejro=8MIjEoeBe zDtH&mr6&N5H-N?p5{+m-vwMwTLw6KEwm zc4sxTuNg%eN4)IEPKUZQb{BqnuYIf7KvFRW%oqkd1t@GKzRQ94dX~}fG+AuGD|G!0 zXI8;3`Em+s$;S$zT7^74vl4kO5NU+~K)JO%_R5L%%~)H^%oA#l#fW0ypab+#|#N9yjlxAFsBD zY%s^juF54zPZM1_Z=1_`!Iv!5-JkE~@wnO|7_SPRXmk!w`Cuq73&O!Idg{%FUMO)s zHcNZX0bGGI`$Ed{DKHAmk=l33o)lw1I-{|j-fR#nII^M65B@#~-#M%|wpXvEZ$YDH z(`Bq()$n>dTtDuz$9|mTDJ$tGL;u>lD9hm^LKYvdC@K%S?N0=t#E$kTGWHi%6`=?zg^@_5gL-Ayi8UvlLoXIRT#MPArb7H(#^P3;)W?vGuH;4Y29H#gDjyY?y_@+{&w%ZS9y>!8+mD%b1p+8`ymS41M(@k|0 zLx$fOk0mp~qL2Gk0o8$Tcr`{!cr17A^9Vjzx;TP=jiA-ohlb!1lC9@bZKh;6FKZ66 zjJF|&HJ8Pl9F5wN2UNAF`a3Tv0hKW&>A#}G^7ggIAp((}P+BreB2%54?KGsfEzppE zG}U={k@gs6huT6E&q8Aa%P<8D2}abI*_SuYgM4a4*DE?#l=T%T*BpKGd_3Z9v;VAk zFNwR~iE?L>85M*s;oLWR;!t!Wpf~AJ>N`BY!T{B$RZfo2tx&3FhPiKd;?!D-WisFj zNOWC~{L!yBX|E;@!&l_M+a}hAOgfxGkz(I+s-Mj0$td|dv+im&7*uECJm?P4o2uJ) zT<^3ERTjt1me*X)egdV)dN)7H68>8d(}+%7Q)UuvB z3`TZi&KXVbt!69mm=;yI#I7(d93)1QWZm^5QJ5^hvy@Hy=590@hK51=D;I(;b(a<9 zZ_XQJ#k9LhTPt;e(+P~nQ`^M@`_E8uC471j>K8u7R=FK_YmIqlsJ+w^hAgd4uJ_2U z&bhAvUfr>Q-Ivd@etmXZ>GD9{PwvD;EGI`j0)$_&*ttI`CU40D!Re z-wfzV%cD|f$>YcS#E#{`Y&#_SD@x-E;3|u_%Ni`GS*V5vhc;ws#Ze87mXttlYgs{0 zb(7v`Nhz%r9wNzB^?Mz1i9V@Oibg1DH3&2)VATjB3<~oclfgdwivA?4=6$-$&1^eB zu~2%7fKS2vI-BPt=cB5}zAg5aKJdlnsrH?-jp1Y4V+*yU7D0W_*Xa_1)-~a)&dxRH zhcrq`&8~Z3l&k~z?lHbge0qVe$K5i{ER|^4yw4;a5{xz%z24f0M08vGvuWAoRmF?o zoH`J!?|1^xVl{@@YC>nA+J;^Wilf3&FC`FpiL@<6Q%>fTx&ms5O3{;51V2qmU5oj`#?AdS<9Wv(^Yw+9Zk6 zAlL;c0`1Z`hn_$0NEBXH+kcB6B`2rlp@sY2iu6Qse(`eK=4EpG2Rxi;F;baXRO~JQ z_Y^A()!=VL60EV59XA>7o_Hp2pd5L{NgZARSAP z*!Uj9zppP>U0!W%me9^%#`Ch%{{nMZgJz*osU+(Hm&bGYdmB?R~-4fOmM)?wIiP#gp#@?t0D934tF| z!jYFbUM(F)QE_J$TI=$Y&WQv;h-SoJMN-bD2$fdwcp(`G-M@~Qkj^f+zet1973GhQ zak-ozmw%ia%6)P$s{=CN=b0mCcVUOYYk#H=xO8L^j#8N%d7Ix%Mp4^nh_?(dG;MPC zJNDGa9YHX|V)*)W`aDHra3s0hEr=8dgYkJEm=wahVAqX+sp*N9kk>~b3At1SQUy|J zv|$!A;3_3sQ3Zt;_is}da+(pQA|U;3!WTzQXsifsYOI)HunOCWzX7dIRajmCMe?Wbz^`tMJ3)cZz)U6AU#SRkzq2A#TQn}Q%Dxs#s#Q_Mk+^8 zr*|!Zj5g(Z$&VzKIL#ZMh$_t@Dlz;bypRbIM&6@e*|h)nVh)7&xfh?Rz$F zMA7U5TFwFoeE~V|vEK;R@$K4MKMHZ#kh%)YuX2tY~VsHk)7(g3nwK@?B|!Q25K`PwBqzTSIjyj%VHlH?$~m2Mp_%Cb_*|S1eut0C#!Q(G|EO~1!Am-&R=u*JHeRJ@(PKkBCBi*fjIOwFZs!x*S1Hra=~x?^~W=U zD*=F!7-)pgTZ-mmLCln#>U^`P?9@Y*ER8kQM!kKD`b&1rBq+RSkAd=>d8!rNq-mlW zpfaZC7W*OAbQm+9F;-R^A2&Iz4Wh*@qRJE<7KAGE1iB28R{`2%XrBy1$}h7#1o!#Q z#tD!l;f|%UP_{m}M@I2))iQwos{d;66OfPfQ{vs%{x zBXE8qq$BcTe;!rbyOS{5usG>e;@NU^ddp>|_s&C_YNfz!$C%|sO#yUl}lye;F-PT+Bby;Xj1gf)4t!uivqGSqhUDmzLGsHPyMw$ z8u5v;Ed%&!N)Ngf4tY2M`ndqC@bde@ak4_lKly=k3*w4z zD;w_b*S4rvK1pUj$4dPcc;xJ($b>Tftl*U}m}CWyO0vK?Rw_&{QzwY>TO$uW&Rmnq z%A8N_Q@d*(>dAB~I{w1)Ah7dBAc3%#w9{rY1`o$tinwipGPH*%Tz{KTqI4a}>qqQH zHcidvPODxDT|Pi0#l8Yqp>)>sQF@0x)>4e!Eiw4q9nSpjcqc!H23YU&sm9x}Sz^DL z)V%M(#Vam?l0~fZA=I5B9-Z{#4vLsJ42;-%xPZnM=NCNoqqyBsiL zZq^Yz&nc5m+RDcM3f5X6?P>%KSI11s^(2{5ZSs6kW zbyc9IgxP+e!1z;#hw1Gl@VMnhG=|w^bVc}wYu^yJ$bGn9+Ob6zgc=j_zWDPYGg+dV zi|J$IMfoeGV|MdaXx{e&EvoazC`}$Gi860%#Sc~a%VNvT$Z(JpDui5Kgz<^-xMstD zU4JL?8LuaN`4PBNni6sr!RyF-*{{;y9;Goc3i?Pc+M(XqyRrw&2Bt}Klh z{S|P5#+fJ#(>kxYY100Xkw!i0)_HID54QqeN)|^0+Fj_sj+0$?CW0d##iU${Stdo**VR`ae^upwM)Uac%e+| zI}16|_+XThxtYrWQJMx8=+-G^0;7}L3fLDzyo0H2VYOIqRO~eNnJAEfM);fNhvNFJcd~7 zK&^hxq|S2j!ZAF;gt|>b3D-0imI=Ftr27-dEa{z)CsIGw960Du3Q8QQ@xjRH&5 za(o<6NaX&~T4gs-Hu&=;cWB#AwW6;C$rCy0XMqceU?19(^LEI`Gg=T?hhl5z`$L(J zjm{I<23!Yqo3n1HqvVOb93|*6|4VPvQ%ePb)=rd504qxHOI6I-8858Xf79;mSAXtKIdHOo1uI^qp59SL%+##m6+ zaO%?l1S|V0FjZ*NZ9nvW8+oy(oy1Yp6mHe_D0$K%FN0N5qrJ97JnlQY4TnDzjco2W z@!Z0U!FTk5;y`qPHv<-r%nL+9W(2}(mSoG;*iN#bXe8^bIpH+3gHSk#>EBYp>ORt| zN9GBQItt>YUzq)lVb3@WD0-gx<|C#^Bzy#DY=TSR$F2gjf4Lb|0-)WaC~RiM}{~4R}Yg!s-uxLa)}| zDv9D1r3XQUQ{pKHYp~m(s=aAW&r)f8FowDFbn|7n?XOU_u2hg7N;1sUj0NeF+BV-N zJ=;Kqdqb10>}-C_))8O|LZ3@s?%z>0zlU1#H(e=2EE?6-BV`11 z?2EqH8?|`Y(k3YEQc2CIA*A{nq;rY72b$GSWS#w3lBpJ8L@G*2b)bXSz9#6_&cURZR9mRpl^td|VuNV=wJhqWR-hj5TpLVw zhUIbqo$GRTuv+Uua3-py2c{}EPbmVKTtVz0MD(wdB`-0aEsV0(hqDUNrceQ2`cDmL zO4s2)5%Fc?oo9FLTuqeE+C_OJdIrqt=^%D<^}<1hrfDtJe0MPuk8d?VJ4~7WizDlK z+dl4UykewN0~r)K>X+%#Nn>2krPJk6Tq)t#X89&YR~EKS%;;|f zM3#F5l3Uk<)^FagtxI0}Ux=%r*Ns0)!>XAP#Mkf zT=|M#4+Z0?p^h=ukt18E&VI*DykG0we>XNqhFrlbo&XCuHw3-Bd@?V&7H!%olHa@)RXx#35;<;jqQJme|``?gJOQb zTe_gqBzD- z4{EexP-m_@G205mHb!cBFq(?Wl!zo%b;;~Jm$C+3+Hyi@QetV%c0e)E2~?CU7_mPi z8H2||*UdJ|<(G@MXYN^dDrjZ%S7A@kuE_w^SiQCZ4 z71#=V&+!N#a;#w3pzwNgAki%E--W17#*}8ugDTqB8aq7vjfBFEo!%g_v9a0ZHIrF`}_cF8L-^kp${;eRSRC!J`2jfDAOn!bda;$9_ z_8Zi~qy*GGV{R~cyb5jVL;yBMSW$0j*Dz( znP);|QGG^0r)!l&CcEYL_(Tl&N_Rw=6LE=|=xS zMa}rV7Wx65u3|pMQrb7#brZmrIr%ihJIU|c$tZ61cg%QAh0FByaV$PQ{%R};;uAm& zb%~-BG3xVcG-Mv`wP@y%6@{AFOTf$RkJYla04PgFQCthtb}$(n#Kh@Z*Umjdx@9YR znfE&K@zmoUwY$^>NHRCXxtWJh>VxR*QrWu#k4-moljQV05wEN}VLa5GzdKKAITmre zD@YzA2vuY={`F&RSnY)EF9OfPq)hA;0gWZ5OfbfY;P!f}p4p#%TbW1p#fN$VDqG7w z8a?82f=rpAJ-KF~<{_c=q2XDZsfX~p0|L@yvVTI zFPACF5CyNY#Bb}jccJG+o6+Z;mO(B^#lBxTY^8@x7bt%VpEk&Wd~g|AH8WrVQjEOL ztUD6gd>N}BgFv{4IQ{^H){jZ9ro4&a1xW{;EuNMikXQ6Te>!B6&GSn>2&?0U%8feR zPjDRK2_F=<7QLjoUyRI9xNV?bMZEr=79j%VRI_Rr8^xW(uVSVXczet5v&_+7FTrna>D&`O=I#QA+e#fQT8XKAkQ|9R(!>wv?wqM)3gz97P|5 zH$6&l=wj6VVMGtZ=r1h-M5&v-X<%M(j{?)u3D*30iVr5>UCX}&wSDvAZNY|+gUBWg&N2;@VWb0TR-P7Q zg8G83Rue$ZC$Gpp7DjRBP2f46pL(R^VjWz;tQiu>Ep<;6Ed~6opgj2A0G}?i0p05d zunAMH_%4-t!>9h7hGAS-G!1pe18qcB@v7w4+1r$ykkh;eIZb@-iJ|!{7*oRenV07#n_1L zB!blw?35ih&0(33$YOGnx$|;xI9twVy{QM-!BStjU12iXd7Ee6N32BsA**77AQa;M zAr%cnbY~aHZaiie45F}}mgXK(0~vZ1N>O-7DI^h+bLgxM4;!+_t|TW3PBSs30?|1q zew|YOg=z9Tk-ASY{;CY)>3fw%(hW-gHdE~pQXO=>ioceE2;8{sFHNdAxmw!j*=-=d zR^sp-6iYDqFxkVp)cUm8rLwv`Is(u1a(di)Ad#8r4xy*T-Iv9B;Bi{UC$R5a48h=x zm+o-cevW6g%zW&)F}ZC)D7W#%ATT`0L*$AspjoqotWZ{DI40?P_s|9k(iRRtXGRld5i~h;UZI~$rA|41DXnHcq%L)3d9&jqw-gg2 zd(gDRPQS8HbV@TZ|7&~4*_m%AdL2fu@_xvg$e=emUkz{^-(glA1jl%*uuf&iYV#Hd zL`cysu;1x#A>opC{_v7$;1PUT3Q!3)W(PQKsC;E9(Jae#z8XNJZ~B_n0~=#L0^bQx zd|!2*Jj#s+PR-}3SY-xXEj3Gzu%{|8rEEKNlv7vrPMhM@wW+dKvqWMCkjU7aPl`sY zH((bjQEl=Ho3ng?)P-Ftd%iV<_1XbVz3D{>wg^~O9I*gtsO!)W^2r1+_sQF|(uFiY zQ6oNYv&Mm8roBbucWjavn4N99d$@D-()NqdH|Dh-lAchK+8(HO2J!{yU-v$g!Ft!M z1B2|mpOj~w3kb^w0(fcqncDZwydD~^rN${Y=XKy5oVygldIBw8TLcnCN;*bJ->+eV?Gy+dadDnl2A8ZJ+%NJlfGj&Z>y&OV8WyCc57d2Acp zR8gAq-dLl-9E6&l6=Y3JStqZ?e@N&$)R!u1Rl9g=FJqDVE)yrc;jxj3$w z2a|VCv9i?=guwlIZ1NycQj`!&Ha%PwmUzWSX;gC_C4b9K4*+mr;6z?{;qtK(_}ze! zGouLKBP~X*nj%b$y~Y=<>iY+Ip@pGOE{tJjgMmdg=_#`eqYPG?BUrYqL7z`G!62f3|z zYouTWm!EeSNiQ)La5n`Ac^Ba0pq< zIlqwBT}n~**CWCUQR|);@3X|m!fIhh?cq}H2ukj!TLi=hVvzqL{IsJ{oQa;eU!3kF zL*^ExV=CBk?hSF0O14!G60gSy1C_@bgu^Mv%}|WEm@n$5_UJ!Yc$ujrL)u&QW5W?h{NVQX@4##YWMxa%nP{-8dg@P_xF3%!oibO+6Z&K zfdz9gz2d8q77{hLD9YZUvrkIq!p?CW!rmieg!M7q-sNY19{xZ)uu=#JAvk1xU@k=qr zOF?b8(yutYPb|E!xonA?$OUMv+53!C_ zTG@1Cmbs6??lR*sd<96x<{@Z+TrN8pL)a1}vHyVuC$Qg-SI-W8H}4sQ=zKLPYEWi} zhXL3-JdV1TxQr{FieP*RlG}%Jq6@yIr14!x!{jr!laD8ZpyC)n zd+kOhyk~%yibm8VYV5Er!I$Nb8Dff#5F(46DLs1bC(tGDl1WADGs|P^}6=}Sz&Yacr#dqC& z0er?Yr6XR*hev+)$Oh^P2#PpF^opigz3fHZcD%m%`x=sI#nN2bcUb!mws_yt<2O?o zlu)=fYM}a9M%3y_REqFA4K%TS9(cMtnx)8g?c_5k^_nnFFqOg9&uW3aWI?z-a}WCuvG9v}GawA@pFK1DD9%+fM2;|fY& z|Mt9UUSDB-nA?u z_x6)l(gf5`1b^M+Cyi<91|eMy%e_9xh3qKY7Nv?aJ_x$sT5A0Hbj@34xJs`d%9?Qx z%avMSy_$V|rntOF$@M|4XlLM@UldU&0e(X3M9G;0E z2BH0mqSf^A0Yp^&DqPq;zSxv;Uk9+w z5fDXVIZeURS{tneMxZIWM&tIMmCmN)O8o4F8o6mZIkk&z{|bJuPQT^~q>bV}A4eU; zu4{aD!5d#5lxJGP3il=#-gG%vvs9Ji)23Jq_F)5YqU8@e%iWHMziO!~2NP5VQG%A{ z+<>EG&kNhapI`zz#(L5Ndtbvqnz|M|D5h{I@`S`3JhkVx*!CgFuen}^R}D~Ii+7b= z*DU0FLd?YgTuaYpXP|4m_ZQQ^bTmKrMZ_0`mh|{g4d=9l<8=LNS^Q1PA`kQI>M9HT z2>W{4@v^|{{X#BP&e&i_N2UZvVhPv!Ibm^~=1+lUF8?POdb~R?%grsOfjkn={gW5B zcggs8;mvWna-1%$!dl$CuM=&+%vuRJqxJ6BwZOCXDbJ@%C4@T3Uxc;a8lP&{YTf+g+wOZ-Ie!F-#-^Cy8%ag3GSWI!4rc zLwFIYRi0pkt}xLN&+6o9vh?dCsMGrOQdG~vBMubxowM#FtZhf7w?5t+0pcK#=aJ$G z^&vU-L~`El-V=;3lk|<-&Oja^b)L;&c#B!LSQ1G$=I*Z3GURMzYlN6vefdu*jn&fC zb!D>!;Yd9f%E)fJYpOtc$zN<~*tc!+`0H7cnML(}hOsspYVq^oNWkZ*P5nWG)kkAk z3^mM$q<-bm(CnK2g$70-BKQ^-tK`D2*#;{-nDIoD&P5)?Se11%0-nwkxm>KF&CiM$ z9u*$qM4A`?^;%mPvMDIli_C|y3d;`G!KV-t)oGv8KBYa(orN`Nmq)_C(6eIf=}V~S zNmPU|nmM{Tiqni}j3-?WM*XX7dbWDxRY#qq4K;}V{_^9T)eL*e5IOmO(-0{G3q7^n zzveB^??$^P*zQfX{3cNftDL!;AOZEkInk2~=dU$(aDl%`uQk}h>!l2Cqe|TFt-4#f zL8jzU^qSkvY95+A^MdW-(Cvc@BCxV-?!=&s9rP*4+zqoCG~3W>@Y98GfPjsjlP9lf z9v7h!7`6V2hIapwo;z^2c#*$=#nBPk$57z2ZYX-R6n=;ADfPjgX~FESM=3}M9HKr- zOeA_w`$7Kxb%10eQz|8Mus|-u_0ZbiM>e6WqNz)CX0}RW?Wdw=BsHV-aSJ?_<+$J| zv{{|w0F!9z(%d-xcpcb$@Yu&Cs)y&zhFn1yYl0Q~JJy1a#76UM9RnJ*Wr5s64}kz@ zlUt|r=SZK8Z2U^jeV^@{yiiIx6Wx5`C3M%FMU zEg33UZ`j2(D{W?r1Ynw$3@^UW#+J2MlByrN#AZU2bLPn=9KLnu>X?|0=kYkt9f7;e zX-t1;*s?t1J8sWuy}g%JBWZ6c$2<8B&JwobA+5jFoBv zEf?11tgcE3Lg(%%Y^%lg2ox^2@iGO$hB4=D2nkp5gcF;4YteUu9Apw4b&n3yxFpRG z>9smMw<_n?T$%e-tdd#X-lr3U(N}u@`MZ5cq^;QufnylwGGH9>dPw_Afwbj znljd1xKoVumci9fw9A2a1vP5I*wf5rD4uHwx_8__Q5rGt1{QU`6FJb&e|!{$6?7*7TqbWsMWOTTM5mw zjxVLG_gcn{>{fZlII6y~VhuHUv2Hn&7(wbs#lZknLW98cK2s9!5dzO9;n$O^GcMK> z?UWbTu^ns4btTQgIEf%>tt@{+78$1D<;z0z%?J>+ABZ!x(~|vqL(_)KXPrNk z9@E#@vez@9CXYjnlHck$0Xn-Lr#JqFKlE%YFYNEKA7^|}J?emR!qta?YRy#kKlG~D zBY#KpP+Sm8se*tb*+qCp0k)nl?T$Z)ex;WM##BcB zSe97Chg^fCBNS@<{tfh>=zHR~vc9IUjt};2aO3-IZwE;{G|~K6xwKybEolN@TO7^Y z>!)|=7v7m{-_sj6dq^3xYn;IbU-b_NF_(G?M7x@Xeu zUpb!R+tyt>FIDX?ZS%=wY3ZGF&9T>99o1dkdKkaGc)Ia+V(dp+4mR$td`ILyn+ftz z`HUlblLf+mQ~7-vpSRp)P1K_Oq_l+VduZq&Na{f4a0z~@9bdGx|D_9COp!qj+u`>4 z`uT$b+-edjT`MNm(`5chZeP+&JZwf5JgZT0`t94}NGHyo0|lEMMXCu!dO>&(>Ot>^ zt0>%?g+TT-Wde@{CF(2-{7VW+EWiSU`BxYyYEjT6PZ;;hUUYU%nf_BJqG~#kI+B1k z;jjM(ML@d0BDf{rKH^*OCjpST=jmg#&mN~OvcKt{7=oT__wi*CNDO#*ACHfQPty?T z_bMH?H>I!iazY|cQp^C+21UG|&f3gS0K z@wiec2lx-4a1Mqy{U1pBo(q*e0ZB5*V^%qkW%{q8-+Z=yJNunJ?)B&x&87;@Q~pCU zSlx+F?frl7>DHUEqG|wT-YmQg|2DUv-|`T%AF%=)MAo5+F7oMjI(-RTAC5(8+GxIjO$6_looeKuCVvRu$tijTrya5kPI-9E;1Y z;lZenobr5(p7JKdgTIR;sbY2pn4Ja|7ZvhMBfS2frkDN?-c%{`U?G&&PYeVtq{3;TJA_zaPIRZ4 zQ|<3?xBkwL=U*Cy>B;(8%%lYUBLyP@AxIPfu@q4pMLji$fqr0U5U2^MvM9QF?`-D_ z_x`k*c`eHa zPrC*O9HceC{Ht3c)-R@Uf%tZIkk_`f5@x>|&jV@d#jhru z0@w1=+K75fMw$fexe}R7L=x}D_gj~$w~l`iNkS7TMUL1!$x3PaJp`ErmrS0N3aMTJIpl*GQ@nz|4?Egov4q(+^nVq}xUML5pq3 zG?D7;lcQJ(`S1p`&|{4N_~$0(6v$tL4U3G=Ema&?>|L|6)^)eV$M9;4b?ChLogb(Boqz3Rv}ao@$C;Ho1KqNeda0n{=i=^{tg45 zOvc|92MA?;{!bTuDO$Pym3Z*}4wOvDcp_!SDb9w`di~9?cq2d!8F^XasLax!nPlR6 zLaJOPA{Ga5k33Die%II0j0O;kwx)b7@AWk6+iG3F&7S^Z5wZB%!cl#|vJAeGe3F*J zEvah_mh}ybb%i;k1X{m_yi@%2`J}W)5Q!EFTv=h zcj3|PIkGmpMVRH=7ju*3iI@eQm+g)<3q7&kkddD1$(SdkkV+uNEXKtE{%qG5FqN+r zm1qH(ioK!W$jckw%r4!`mGld`#ytz3y&Ht#aq#!xIFDP41kd)(K8rx+8ZE@kdss>6 zM2P?JJDck?P|ZA92Sp%d3eqNk3n4+hig?>zs&xz{ldiA~25(%|gR#3sS}) zf+7!SErmSuM6~bTjSFYCh`ZFgRfMZTXL$FPEa&1Cmwi1~Z>^pztD|qgo_#dIu~E5< z@b%iBw%nZePJ3^R^(%9-aOl-@h(sdN!q0JyKx0IV44pW}f7tOA@$>d`FjQ@zjg?wp ziO?D~nvp{S{SQSDw5sWxFEo=35-*aiN6@}3o0JA=ytj~DI`mt^Tr2L{k5fR2E+jLG zTEQhPNttN#@c3oOBOV!l3O&Lgwh;w-D0GRnZp~#SY~wdfVu6{4#B4L_*))>B=jRG9 z+5+IJ!vT0X1i;yw1#k_p@r>6+X*_`W$qaFt5bNiuv09iDQg$X;e(HaSQ{)nH+5u8v z-(rdfr+Tq_p^C+f{6&UU8Z;+^H;(6ULLX`)e~jsQV$D%R_A4tmOeMyj?lf8R_DtQH>IuzzGkkYqNPYR&Be;8i zub67o(2}uGA||wlb`>Wq%NfohLK5X-Ao;vlB$>~S6Y_+R=1&i{tbl_>0buDIqm+em zy^BOcXAm556=b;cSQR}=MWnL(ohD?gU8^=&5oJ&_PM~^EQqh`cBkFxJvUZbsi54+t z6a;L#Q_dnnDPpl!S)@}ah#GJL27`IkNGLQ~DxYgd$)-{9+B<+-H=hl0&C%!p6xtP+ zAytC^FUk;fu7k9*Ev8x2nEli7TKy?#vfvb|QYcD-x@E8<=kk(VsT)^tA`nMXUFzHNA6KY*Xq+t^-CQLe^;_N!sY?OHru- zo%TG7e(Q!K9PYH{RILx_U(ti4lBvA8=+3e6!;rlf0q%UYMMxqLU+y@Ws>WYntrz=W zxG!)f@p}|94NCb7j2xsFbr98tp&q*dYW7x$xCVpyZiqY{>u}0h1Wpm2S)38_0*`(?np>kZ7cQmpE0;u|k`SZ%0eEa#?VtX_BhDY#{PR1MT4(P}SZ^(m+0 ztczc(q)d@iBk|~6*W!_1{7j`i1C04utATTW_xV`=#22HJlfE#CJHPoEjQ@HU(pr@i zPHWqF(lkyAzrTPZ-OPcn3EcqJ?l1E5GSyo<*!wfQQ@D!*^WhFeRD<08Jr$kyBn~^c zlqF@9N+*W|grvLyo0TFsPsjv{bj(7ZX5!XSw9o)n_C@E=U4HsE;*de2r8&Trdgy&C z#x^2K22@99B^lx%CC~;j!axhD0V2v234ig`hbalD&4X>Uq0S$f$A)@KOz*GYkq0BJ z5E)*yVG_+u8ur%2iDx|$(^ub#UHAVAC!GC45v7`nWF}GTt>J`oe;?a!zg^w( z*{f96S&0*#@C@XghE^sWjT+aoOFXd9DpD`}OBjvbQn+?YdwZaGj{+nu3+(!>@8hS* zKHFk|gosmMVYg7NZKNS8T(S6~^^zCekK%2+s0itzU}CR)Tx>N2;3G@F-9f z8KjIb--cMs6J%K=YLNw!ws?d}u`o4`g~`W65RE(cN8TOj8)GWTEoxV zva}dT4yynXFV@Zo%Lk1YOzL1C+xRZSM<_B;6x6oa1P2;YR3gO*nsFq=qq8*?#S$l+ z&=e;S-qkYvYP#ldFwb+$O+SkD=e=AFjeQ2Sp;63D-Gg>xUQ~KkB8p=y&Q2k3?7$OV z@=BcctUnY3YwPOX>#ifsim=b;k1T1Z`9mR>)?3M(2x5a)?~(x$6vRPb7IiTQmq8S| zr9%%!1|h15#(%8xgZGPypr|UFyvFiLAS-ob1E(PGJzwP+-LV658L|zc9?V_$%yW;&F~$};6< zC?#biVoG#0bEG-DM%6SC*!tiYwmz_0XILQ?{XOgn(9{*h$lFRhaNCcJD^?(>)DR^p zB+D0pI88A#F)eQY*4H`Jkhn*sRwvn^^D7)c+(<(x7Bo1YzNJDpvd8^`FmbeRqS}TH z2g1jRh;Y+Zdl$>mKkd0vMPwExF;rRuqSW|BJVHexLcI4usMd#(oOK1VPSsGK&3!ay zhAv|*t)sM^_28%xfb}5uaoRa#*0002Y^EyGyvaP_)7VSJ(GIp+wC9d?>Dc{H%@7-N zeG(6`b9J*zQADWr^gAtFi{G3*9kffz3{jk*);Hi(b$vX{_wuA)P~o~f!8Xyf3^*tK z17y(NIE|S0oMLR&^Av+1hD%s)ZkTQoUZq`sgy0#yps@ssqfzwUJ%b{e+6guBLnTID zBxK$WGDb8}5>06SM-!Z}?zmiv&@#tKwt6#)?NI&G_$W-OET{UDuE-P3$w5pZi1~52 z22*#!h-~x=s)ZqkA*t=WPiFcq_g(XNl)zxK01tmlU9H0aXa7YcGy>Dn7$Rpy5uL21 zSZT4-;gUAP5PL|2U0|?;YsfWB&h=-7%A9qKd)XiQ0LsL!3iiKtF&A~Wr7!f?dq@=( z!ypAVPy|ZTYEG;5=mZxIoN0x@$1)r{Gtu_u0jSO*gsN+ui$W>n7d2H=&RcEnMQVgs z>>sxdPsY?M3i?JL2{1D+JLMPXe?8;$*85t;X!=(qs-E^_V0w7bvVd~{PRL(La7dmE~VHC z&^{qEs{yIo8MYBM@3>jQ&F)Fkk#iVf(l~!57#&N` z&fzn~m*)W1eQw>{xxunbKz1UE)o`GOomI?|yg$3FOoddf$|h7GL*0aV=f0a5JAE{S zR;!ITCTpR>LnTwNIG3S$W+$aPe@Ab{eMJrw3U93x7YRDxaW+pe1bFBtC~bCxUH&6` zLP;L!xQjtlDw3rL4b6QV`0CkPtKXJmf^ z&;e`?Vi#VxoXlwV1#mA+h-Qs;(n`XBa9T>_tvQ@9TF1(oP;&ABW+xA#)yaU^gvAOI zT%@jG+EK!o@S?7(V19~yOt1z6mw!njG-=#+Uk!S*(lu7zHVWMol(o% ztzi&M5@p)tjTu~g#cP#(;|oM*-(FO1->I6{--#X9-75C%nLs+U0+lFcYr!TGX;)<- zzY`_qPymDe5_$uya41u=^$mn;2&b1m)sm1b+XZ`|5?nc3VM2KAbTi8f-cUg%xwL6-6r zls2zr1PWu>BCr5+H5{Qa>(sR+jN0y7dkIl8Uju}5-vT+qsacxka~V@iB7hTPXrB}u zXFF^@@R1gVn8=gLV?i=sWwAmh5i*MvA%e^k(m*&$M}Kok2x5vg3x4rH8r$ex7=jJY z4wWI7YGu5II^hgTRS?M@iZdb>b=1(0-cChKHuvGy3(vuM*L)PCy%AcSPQU?zxhbJKFxkMODG%xIHCrl!W`EE}R{U5f7#3r%u+nFdKS2bu$ zji)X?(@&b6R&u)60_4vl45wMm_3$|&jm%SOo<+W z3k;+HP!}#Qy-WGNrQ-$6uo3u>h_tUo*Vqxoo0<$xH}_dn6kIth-#=mmAa^s}meZI? z04G8bu$kHuL8XCGQkHnikvc`Kf3k!SrHkiw!7=<&kZ(l<2{}VJPZ5QYmVm`-&H<4d-n_b74N{)zS@2l=nMC4QrRWnRDS-p_KiQZ(DqukgFGdTT?TP zIaqH8v3X9**Gcq-?Hi6jE_m&4H4(X(12jjA0F-CU_Pv1WBuZteq5K3g~4*9hmUy;hgQ;Qs<`yH2ZkQBK=F^9x(DvJax13d?z zjdsO0NyJuanfgcDJK-3DK@n6tfohZduaMklc28_xJAAYwh*?ukX~`8azhku$YH|s8 zYS~?CzIqpiKOTD59Cql*kdT6P4qL{>H3Qae(w!7&g606MJ9CrjNn+-TV#%nWSOVa| z7)qi_Ggsf>s4UJ7M{Z89@4BxG|C?DTk0Y1^2C|`g?d{<#A=3Q0_DR=k2#ODMF`~zB z2FBXaL#f=Eg37A|d_`J6Y5%(XntTwXohv2d3{wxCjP`7bs5cL8?@C33cVA|71|Ldj zVZ5yrjEX?Lg19SznN-e;;MX_LBPmv+v?^V$P!vd^^S?ljrC?PUGr$pzzKBr%-Q5e6 z(WHQr76pQF6yzoOWGH{aD~LQDc5@=iM=R+6VERcFrup``L(sGc} z1b^8xMU9rM^t3Q6<@bpY2~6=xV0rM<3em;GL%*O~l$}mpXNIO?AY;Pv*09T&3AX9| zR?X7+lKMW8iDt5v%p*vasSjQz7NE6#v{OjR@sbsyJfj3MBeJp&f!&nBj5nk?Tf?!DS9fQ zzszGS5NJ5gLluhByWqR@R`5gyh-XRHm9P7gH9^^UfIX?m%J@gf zb#XKZa80NKFwnJK%72Oab=6`{RH!1%ZCeLL9=W(f1#X4#e?fnVo8NRxLNo;L{{1zQ;HjjArp!&+_$LOb-kzEmP#JcuCxMY2$-sC7-SRP zeEBe$ho+kpr31-hL4d^`phEVw@dYUD|Cf2JNDFOEtU$JJ1>%I10i%4Ge7=HY?P9y( zT!zzRu1R7v7Z)LCXZiWH!2wP3-t|d}Fz3BdM!HKh4YR*;ZcD)73*Nla?2rhKhq~?$ zOJYNq0P4IO6c&+EwGSR-wv!GHp_-DC?6s~XfnAamo(#NR;><#KRv@}eYaK0etWHF{ zP6z&dGMY)tS;iT>OfU$F%s_M!2&&U3g)mFFtiL_ekM_=0+~n9;;Z!wX(}vsxmvi_` zn>+`N0{zpWIKuq?32ZoN1kZclI-UM*OA1XA#E*+;=h=}St9Ym9pxb#&oP@VU@7B`Oe;#Bmia~to%FTZ=6=vgu7 zrj|vVDVZzuW3buYraPJQs2BRSc0mS9aiZ{;-S`pI{&;agJ?VXK6ZgON4A|Gq`!d7h)Bh(hIm2H%=D~@}XR@so@C5MC9G(yNweF zsg>Q^grh+AuZHv{a5@Tj&1|x}57k}){ zYUd{}$4^HW#PsYgaTn&*z{Te)G+RN6u&$;iB;cxQLlmZVQtLnFnCmpZBuiHQPucbh zkA)kBMmjnA2m3JhI~S;3oo#AQV_bauynYdX=W1N~=Py^4=}9$Dp=c`ha6Rk7d2z~& zf0*r2T%-ngyZ(ikD5S$v&)+M_T#A+o{96m`ySlaPP0-Y@}k(fBUIW zJvF}=fN8(QY~KQ#{!(hXPEV&61zcP!Of9{2G&%j*cWFgIBMklfAqdQV61Q;@V`geb z)PL}EF_4b&Oh?TH+>%U)``-6Qxa1pGK zl7STrd>iG~4am&$F*F>~_}NnN9~KQ%u|#I86T%?{EdvC|1yAGf}IwH7f zf(44DVpEmGz5pWzm=oCVq!f__#8RWgT6wBHHz{QK6i&AQ=|&!s?PT_~hK9wDKllaY z&-ssd_MHoAus*_|jaoS#Z0!*@z5XJc`GXJPf~TIPTKo3u3Lf{!0M%T()i5tG7^78~ zDc&C{v(__ctBQ=m5t()|$uhp+!;64Uk3^%2Y`mYt!hwZPCZ8dC=fbxtVd%p&FRRs_ zj*{qUHt^gJT(0(i@fEmnY)0gbd5y(A19-~LD*FHMqxjJkpNOV<>Y}%|7mC=YTL8io zp1{>7*k;fgA*}b$G^^0r%H2U3H-D-Gd&>pFg@c0Y{9jE1^w?AZwNO`1b*e||+c2(rpy%(3f?Nv(6Od(&26BTyZbh!{&iWT{Gm{u2X zCwdc+C+a9u!b~06WEGg}AuGUmSY5=$m|nJNoB8HlXZ}U(o+yHxox#)o<~8chKYbb= zT-+^ag2=tFs=gY}{MIh)efHaN$9Hc=IyQzXSsW(e!B3SzG1CQ{-_EQ-#jKx@!Th!v z%swe~31FfuXG@3dQwzkU4-_0YS&rVJAxx+QKmM~1h_RP{1Wz5WE73=ZF$u(chF`W0 zibt+~BcA>juTuHcqz<%&&93cTEzy_q7&YEm>mlsXWSnml7Ye@H#KC;&=3vVpfQzjC{+9uN-wSUiD*r7r$#Z>e?u(Ais@TkDuNnl=rK9VbnU{{98n5w{>Z zDP*RQ)CO_#w;sjMxBRnO93Do!T7%-n#e9r3WY^wY;`d@J;IJR!22P{${fPW53g_Gn z+${cYFz-v@j*|xA@^ZOEebpGY?VZN%m%kV1?56kchs>%F%@~gi^ofCso+uQjtQ)VP zb&1;{g}O)~z~Dzy$VLn1#h9yZ)suJ`8E|+6(0NCs_;u-c?spJ~38uxQ##x1xa(IF2 z3Zi9l&0Zh;X!QbgnZdxKihppYAQC11u(nfw~ znFSP-t$=NtZ=#Z7adHkL>xM<+l(RwUkr8=S+X;rVM0Fn7&JH5I-hyR#f!-91ukcKB zvP%sQEP-G=y7xF$L|HxQs1d-(SnZY8nJ2FBJ8=A>4E%E5C6z8!E13Mw9XK(o^Lt0C zhW6AVcD&?5Jo6o|R?);b7F!(%%HA!pG%p6sWE1SUHj!S?sJbB{WPuWB5YefDOAww| z^5xYbKVA3`5C=7cZXB4z`Zc|3-ADf(5B0AX(Oe8Qn?UrgQS0uw2RpC74VC^r)a^uR1u5jlPua;b0-7SPrXHi+Oov)r{)BSjFNe*6fK z=q5AXgo44Ra8q+^b!uBLO7tTX@}>S z7(tR^VR{xT(k3q1@^&@(SD(TSi)%#dz&y}MFtlP27j63m_Pz9v)sA01CaQhCzW1ix z!bPrwhZJbPOALhw6KaK=Fu@HwmVy5=2;i2+&=RyrC#LAqx_N^MEl`m?my8N(2;JL< z>)-haG5E?4hzsXpB=s?%8KXHqg&$%>EPUY8c-EC~RRh_)YRt{EC1Pc==L)n`XkhwT z1h5<+@DXs#DiBY>kP#vmZ$Zn=qHW{7Mz-B6)hCj3gc@Ns5A4U87i_{=pZGHFeCF%L z!+WS5Y70=kIC*6+&iVRhaNo;bi5(B`7nQ+5-2%3ZepWuYjPxb2(TP_5uU7s{_|vj| z{;r)OX4a1Z0dn1aFwAiCtGxyqULXR(KOqaVI}+;mH!_BwUwb`vzu*nx!W(Z>t4G!< z)#!tmZsWe44RP0t-z3ic+~;uW>8sH?u-`1G;Mpw$p)GXMDsh4k_?@D4U}S88$J#su zbSZ!#v6Tuk17hPeY!RW=Y@ymbhzno;YE|9xpK*P39uAJTfhG`F>v%%48~uO%dfa@) zd)17nqo=P=d#vp8#RVPD`1%Xtz&Ruwky*~~U7)6~F#(*oilUV!Gy-$S7K3a@Zw7LH znf3VD_CNM`Xf_v;7@Q?z%@cbX^MgD`&*%tt?r-83ulx(F|KR&^US9!5|ON5Z2+QmXh}cya>6QPP%Hh zIv815R~LNXlWO}5--SCLt3b?mSkqrMQc+Lc_Cs~xbuYu+|N0}uqpOi7< zG9h*2Nk)1b=*e{Z+=3z)asWnvU~NMO{Qw5bxe9HDlQ~XcOl1?B-gqT$9eED+Jk}N@ zY?Vya>7%(?|IMp$=bK+AcJEn0ZFB@tt_v5O-lylURDR^|Z_B=moWSZ+RvcNjZwP`} zKZQmqOisz59kivufmZ)vA$)iQpo!GBxl4-;+cO5C3ez7hnA^g1`U!R%jmJ$QL7}p0 zEgrnJ36xzwp^{SM2ilws%EF{(`9=(I5=5$+n9q7JxHyUTulxjGy!q%j zK)`l_Erhep#IVgio}+#ZcoB*Kn>JOPSVPrtlC^NW_^UK{UiBr$?EYDi-2N48JULb; zjwLwb;jd!*TQ}prpWTJ(=sIw2D7SDcQ+X*;>J&`##KHr+xf1W;)mdCHgj1tzNVuX} zVy@XE)~bHzKPHirUJRP+8^; zD6jqmptlGX`cR6VPVXG@MC9k&E@5j{7%|yFG1{1H45)Jl@4?5!EF?ECh25Y>86>Fw1l z&aB|cUP;RV;w2(D^u@NZWl?F<)cy2(;HV{JRv>@F1Hm%52_b7VfJc6M6R&($85l*C zZbQi{T_MbH^Wz8$rR-C6)9i5ag2;tUiE;@KZ0ad$4_Q>S8K0L>E(-7uHPMW1BK0Fsv!M~cl+2!dxPzok)h;P*AcW{ON!9@rqh!@(@1&CIj z<|PjXh+_DYo?*^?qp}!I9-tl`BmoYz`qb+;ej4xI_@97QRb;ZR5|NQZZRv*|S-bdP zl>^_Mn{{z26f#^wPhyNOF}1?Z0H zRtKe;1&>`C0d)Rk=`KYig+Fe|-gH^>YXN$4_3$($Zsq}c8O_2QnDGYlA0lY@;6jse za}Cc^kuw=IrJlTObtF*-?M_AHnNsgP`)}~-v9Aa;>PkkjiXyFiCh5}a1s-982+l4K zCeQ~{ZR@^*lful3_5|1k6w9pDWVGN=?00E$wG*S2AjMk&PI*mf8*ETi_ zL6x*@5lm_kM?($0IIf~j>k-@|s5Oy&D!M~DgJ7X9V2Qzv%vKsNxz?lkohzhK6Z6d; zwKAQ>hoAgcxTyD5ku`de&_W_^u>vf+E#E2B=>S^1+t<{qIhxcYqbX^<$4s?RWJ0aF z{3`mW<I zB~FdDiM&a`*U!*P)SG1^j!6V?17c4bTybT(+=L-eQyJ(5m8AfGN>MK;z%}3iU0Qgz zS;Q-cwx$v1^9os?j#8V2B&>d@S(5;*T9?${8xmu@?MP%>krHH*!NZ%C>44s41-*A;`KK2-rl)9Ukt^ssTWaUj8E0d(sHd?r`Ni1+Ej>Hwr=`>FJw(cKSnOr`df`?`eH?yOp z;JI5AU)UZi-mFL!b}uTRF2GK02i4{ z5a6*kQRwfm@9u&>-f6838_$FbDy8B6REo&gA5&5&U2OZ+1Tw&C_J!nstJ{{FC50a| zKnwS-gp3jb6fO-WBCb_2`Pc;VyS{|p(O9WQr<4ukOUJ?h5f_cnr&IcynNK_TZk%nr zB8u537bWWb0{Hb0u`t;{Qb~b!3(;vOVuplmo66Csha&Y>R7m4G)SWxfn4cGvGFA)# znaL;t-5N5Qh?bZay-bYje4}quMlCZ}?8Z4f8(2OX7+hX7(7b+XBLFtS7K-yy3FMMg z9U_rMF6~DuX5P9d%N$YvFn0axXK=E*9Z{_cwAz~Oy8Hmg33ypMhX_7^qzd^19Xb|V zL&Baud>*BsaXU_|sZU|w555Fd9YC&fR3e~y=@T*A$OQFLpr)FF%jzSnZr9Z0*M5Rd zTG1`rf_W>vk?T!ULJ*sw93;cg#z8-$%7*0QjZGu}X*;&0P_u%iF)BDE!)R8M%Ais-ick;-yxELfxsmhiahtSt~4~*Um{%{0@lk#`Q$ad`2tOMwr(a! zdGX@t%fn-C1ZZ;ttcqP;n9rHG*3)SRQ_#oCntw?(D1Tqd4_4TuMAF|c_CCB{O#bt~ z$C)QSs?vH*srj}-hn8ID4pO>700X`RWDERGA(foCfZ~MBj_!R-_fqp22G&)u@_|pO z?cex{h*z#dYw{pQS5~m{>bGFqf`p)sYEo$)y7`+OO(B!Yf{wr2*s2~y*rRF8jXe*HRO$b3% z#`K|r3Hng$j4X$c83ZlM-N}T=GVZFxD_^%Ws0G4`6l14U)Yu~*Q9C~U9;o^%9o~q;}<`Kdqz$Y`GJNYnXeWldPY{NCr)OVc=fw6v3DA2t;dIVOV&=ovr;(X5y5pP z@o6dS>MJA#cg-hd9~tw(>z+%)_;3g5^%L9o(Fq!7WLgJtXmwh>ze_C%+#h;~0d~63 zuvr4#PC)_qB^R-CelgjVE-KAfdSO& z5muoihQECS9=rOJYVW=|Q5hWaNg<|W;kDz_~ z_1Jy;%~+i2h!Lv>Rj-)*yNZkql957s*k`q_+>-esr7Y zx#5q6s#5bTDGoH-XwsU6l^&!kSD|8{%6$Qh&*}_PDICzP0H#L_q@rjZEG;LvJ15?co&ggIBC8JZA>%^$n z{KUHc9j3b4Ipl;u);Wf7aMF+mvMkRc5v68rLax>$AbXzRL$Smb2vLSbis7V=nf3x= zuJ#RHsx${(dO-oGL4w87)9J6Z_J<{lz)bDpJXTXhnHkuh!S6!8Rsh53Pg_`d+BJA;tRL3f~ugo1}u@dYa*hgUsZa9 z=wv$Gjl$CeUEx&CgPkS<~>OBH3Yk&lXeF#Sm;)>N8mRn!q}8S#?Qy@}%Wu}RON zZVlX_yUfT)Kk1>>)YSa^K8*8$tJIMrfL-QDK(zAaD;|gkdNxthE=~T{b8Yyb7dI3y zR*8tPfJ{82xl&v>xK3T)(?GJ=7Aj3m2g@b-e{sS~^thw~S-4MNGKGM*tiBL<3J=2R zG#ZG$QL}$yaU^!(5r;-bktnQ^;eOfUUg59^8>u!raUB;7E#lIFy|msUHq~^Vf==qv zD3i$;ZILiMs|ip|1uBWoeW6cx;vYXuqEd~e>O9!@RZLKUXW0#P1fIYvIU7XH%-+Ij zC6&bVp0PYJpYpi=d~PF7>067ePCoLsa#_A1dk-aSK*U}A!Y1yyI=$jj zYy2@~T%lNCGcn*&_M77zD&#oU#TAUPqtV$oK|0?Kj9dH7#j@#tQ zB?smF5Tc9nLm}xAQ1?qz=?bjsjntJJ@5lM|20AJcgDKINZp;=7LCYri`Vyk{NK-tu z+~W*5O$&x&glWwZQ9^}j0+?U8uFN}^dX+HBv}L3PebvAJjF zQshQ)$stvyBqc?Ow#qP%4lLWuN+4?SR@Q7Q}qs5mHjL#VO8asR@&LV!D%g zs9RdoOGJhRC}H`O8E?1h;C_2`%tBvj<0)Lyu$WIBNn}|?QG@JA%Ugfgbn|pUP?s3b z2W^U>MOZ}*SH@}?p42yu%SLx%W33}vD#2h4sHYJsiC{nzjzmJ(E^@rle%%$Cu)vEv zZ+V&rWgUqXL)6Xxq3Ao~=Zjm#;^Bfq%eaECVa2{ZKKrF~^~h7=!K%vV+B$Q_BmwI; zwPVq%2T*@nT05!^V4hc>&2dS46i;goiOHygW~7}%cqLBwrSFYx+qSKnq+{F0FE%^2 zJ5I-D$41AtZQItrpPALnVm7m@s^wRUsybht_axKLxw{Z=anNV+*vWc4H=i4wafP-= zW+mY$T)l<%3AkS3RyVHx!8I{uu^p5;XLIp1tqt0h8cmI!Y{y%F04&*eVqaQ}L9!&r z7`MjB1}%Bi=@dQjs=8yKvgw1ytu+&jY3!phouD&hW&)Q^Y$A``&`J3KOT*{06X8(SXSfYY*?IS?0$}{FnPTX>$Cd z>#aXLsxmc(RoPBZhvZ2XvVUJgG-|+R=v8ED`@q)3Bw(RZL>!nf9}$;!K~PoJUehQr zKBW9jzkO8J%UUOeZq9;tao0xXm)D;javHM$h&ZW%Kbx$-)bDm(P zHeHjfS|0gQN;H-l++AF%lWvgVF)(A%S)G`VmQmNFlxt`nigfD8$7+;1UL$fU)BYAR zW4(#;-2pSaBCMK3FDh~U?8K|A!Af5$?%|n6A!1Qr|%6?`|Ku9Ky~0JHZ= ze0HZUb|lRfXjCPe#5&my59u25LnWF=_1T(!v=-JL=*KYJ2jrL8C^m)dd-|?DRi@ z!jZueWj8IK44ScO%8N8L5mGj(V)Je@49ANt%vdyh_wxe$J?@j8kUuS@c06o1y|t*9 zT}?3*3o^R&)jAzJ{8BEA*kLTq2kF)bW%Idy>{I;bd<;{iWy?HNC7QI41gop4zQF)2 zNHX)Dvjs`_&EF>Up66K9;7#y{Q@VlP}1uY#uB!%<__w@Ib)KwfjVbes0*tk)CciEhgRZzc< zZ3KSL|5>V{AO~BNt;gMS<7=9Q3?e`sUji-bSovXQW8ifj2@MV1To~|LDnZ{zcl~$C z?$EPpX+W*xf~o0{kGK`oz3ICsg{xyi+0Z}k*gvVAU^SH|-zqk)?m|8Ooi;*zD+=-X z!+nkJ41a=kA=79$ZaG3Ra=LPo4r`eq4e5;sRV3a>mTW+M)%H+Wf6M3SP0>xGsNQLs z2evjnpg)KzjY^0U7Zbs0}Vq$9&Vj6D--)rYw^bbM0v`P z1;?mu=SGoG_;B$HKK9Bqmrvc3w(vlPrJthfk<|M0TR!JeOuafFRJAYdhBUmO*9F$W zX+}wpOR;PYnjfUzI-*;4R$4sMLN=@<*!yC7jqy#gUD~`?tMkoD8bH*$q!lrK_c{h` zsJhws#BSo|An<+OrM+}QQ8rh9S5g%>&&beYSJKhE=mrl0W$={^$muShXp?vkI3{09 zv&hvy{b#6kaY*Q@z*F1Omy9yYEpefJR54p!xj5aWV7u`E{%cx;1npeZH6OX(D`r$z zkEu7Zpundxxdi{Mt8dfZHA_cn=c2bC^c!<0W}k{l4Sb@^Z5Q0|901PnfalJ1*?Tc~bvK#!uiPA9DcfM@*yT z{+bvE#})&r*0lUihlA(9@(g8>5(3FFSx4`Zo|FxGMoZR)XWnpP`-G zzxyR8U2kgsSyuw^$)roRBV)khDc0pO8Ff~{UE%gwBdz&IAaKp1DHD;y5}z&8;jlhK zLM@>e$V$eED4hd!H=(_sy9`nPWvIZ-#YBtpg*4H$0ka7-GXGs(?N!jcr!_g)RAWzWRlhdcaKAtJj#sR-HhLa= zVG9Z?Q0!5N6;n$ZW(!Kzx3L6=mVcvN+W4#a;(FXl42!&eJ^Fz%_o2X6inoLWvf@5O zI}5&xooRkby5$Ll7_gN|14j}Lae0Ge7L7F`;b;nb<`^6QB-AQBZwcp4ALFH_4;U7F z68!T9;t?VkewaV}@dBh*ww-ZbOEfnBDDT%4EpA~5zzj0-4bLI;7hazbO*ZSAqFu-# zqca>Q(bXm&%WN_A`&v)`r8}5b7h7l75akrBPxQXh{BOHwN(jv{MCMEao25U7lm3D9 zAid-TdH+0S<Qcj$MQPyd0Za6m;#K zHU?a$42xg2;jQ1Vf%gi$;%n%chvbdZI1cPg+QyvT!_o`>5i?r@^v6nWrMp;o?nVI% ziMT=6!!?Yezjvk@(;yK7X3`6mX$GF|z!W=ygInFa^0yKDdJZ^jYGOV!Hp!cU-|S8A zQyxzny&nf6W^xe8tCF5LV-rtGf@ccdxrBMo^fA`L?|ROlq;}%NR*PRPO@FjBTDP1p zrDsX$7{26oeQG#g!2SWi0YJe2LV)Qxms$K91O7Jx?BWx;lj4UPH$v{& zRYseWi`oktbsj4A31sXHT?DB`|`ejv&<*!{fJEH zjUi$>9ELf8nW>AWNBemAI}>&L>5aB42U&`@Rq$(g+UJG1Zj_m?J3!VR=|%+b@`1f} z17@|`{h0U>U;6J#R&#F(YbhGgKuSgAN7{(;Wyuo$or*wW0D$aigY5afw}`J1wjo^j zWMsiZ0+;~n80WC}wR-a6W(EKf2uj%Qu~=je03+OE3j`$%pm%;~37is>gcT@63sY&0 ziLk}(;?X;yI=lu=H1EOOFdnulgPV4cJk6g zpWx}i4>&YQ^Yr!!X0#AiK>Q=R&_wTnJkhXb=e-3bFYsa2b7q&olmH)sh9nL+XFAGz z`f&?0L7_~aId$(cd-TW)| zJ|;6C`-d?t6Y~BG$_9%M3KN`Xf3AogYtMbYoZRm13&Xb{uGou1%W3X+C=~?x!%JOw zO;BZxV4-!U%NUA+ZU2C_#G){xpe|<}+}IWsj0B_vAc7HIv#3kTA37^2$P!Gre>*U~ zcmKAtC#Y>V^Ny6PYMxhsqLa!`IoZ`O`uI-tG)pSC>4lq!AIeHMVtgFMqPcf_stZGi z^LCwOJu?LFmlZ=^ud&2NlIMR?*T0f>t>}D1g0|8;C&`Lr_b(roUSNFRe~0VuS$YZz zA$8ZhlpoIC2yT_qytJlnmEPVY@1)=4HRt;j+w6JBX?y-9h|Vq6-)?7Z0?3O#Grepy zf&ue(?FMZ*v&rYFHpm(2g`=4eYoZB~a)N7q9kI^&Hu)OFpn&i}g!?=gEDS&_taTGV zj-Xkqjks`BCS9WbrpdCuRYZ%zTWSlM*S@!BU8`~3EUB=BdJo&txE~wr0iHt1j$i-8 zWPjA_zku5&k1lcsqPJqMWMpRVF8-c}FjM14ynxe3082*5PcrJF7*v@6zU(lJnD590 zD(AguxYcneg#imQ^_>DqD#b01Q$7g^U4~}Q*Muuj8iGWGa)?p8DtTD!y3^m>%|OMBSH^vM}y8sBSu5|@D4DCRZ5W)gX}SZNY@3da6;F5)NM9(5-``S z-_Z+deO-iYLU;R}R&q_#&l;f6d-~}#<@!k8xQqk#LXXoNMWXe33s9qQ1{Bleb)@YmK zU(&-A-V2wgVsar#X1Ld^{2ENZtI61ik)t9hDf?`036l2_{qQ6Y*$|elZNJUeqj!tn zzXWW5>xYCIzM`lQu-q{<`(z3^Z9H@w5nT1ZzU|3&FVzfRY3QK^LUKf)5Zh z4ahtK*l%rbuyDiW!i-;be7z7GzJy};!0SjrrsYX+i+1IXYredOykU!Y0_9D7PcMle z)ISk$CWHvMa%!PU6a!Y|LZ&x83wzVh=ppq>2eDoWa1!&&pW& z-&C3t-<=) zB-X((%1obco9=!TKjCSio@9%cGl0=`aMZ4WMp>vG<{&R=)v0XX_x!27{lGW$(nF z+UH?uec}>WC4e%`A-=K}iYU5=D((B)avii9Co``bVY#gMAP`Z-sWO77=ZUufbD;oY zIk$2h_$1dZqi;M3gacz*-t%c5)QkqoURf;Zs{R-bw;cBE0^&?oE#BBn_}&?0z_>@F z&vDv%3nJFB;otMzC3|+s1cmoDuh3lV@*1V@Lk}MGs3VD)TtQ^6Y*;&gSzUs)`Mzp; zS*;b&xY83)>p4#P7OP#|BxRCDWl~kW`7rx7o*TXa*s}c??OK*ttG^6XuwZMfnH#mL zL+c8za&glabMV&vxVfpjRjl>~X>resa~v!yQ5^PgC6c)j<@ex%ah#?~jn&3Zw zmRG?AS^oTQCmA}?pI?sU642GCpv6W>=dK@$ z&x*nET;HZ$m-mY1LV>IiNSY1?5(zqraOL`%pc0jUI3u$)B9I6eq#7`Qbo{`xx~@fC zYhs`2sDpaxeLC9t`+Aph{zUk4d~VSE1kg)p6n*hhhL7U|kHF5-4aN4&k0bVZ0x*5o z95*F3_$w3mbey_7s;Ev}26^@)kJWkt@^D0|paf3LCOzJ`RqM*e@0>FYr4^E8g60h5 zMzB!v6rGm_TEoG`oyzLx>^3Ck9{+(CUrBbv)glK}L4sFDr3jZP{kU-A?I7-?G}|b=%?Ygs-nx9w86G9~o+OHDH2v;lcRKzq&^O ziJq+hFqyBHHJ@DY{;rxJ`O*zSjcweWnH)U(4`Wz(7eE(mK*5hOl8iuUj4=fZ8o4=* zM~8eOYAQaN4xHjm0#D`YqpG4eSdfx{OsbhGmsvl(B&LB_KWN+#K_1_fvkv|*;T2rB z%i_C{lDsI4DNa%_pK{@L99rB^zf-;P#Jw}K${ZrcI?=+PBww_NIy1;b+hk?|LBai zcmHL%qt`VzddQWo*}0m7 zwFje7n@Q8_20qth5-0~|o0w`mP592HoSxQjm=_$5TyaT)sv#C334*S7C~CBLJAzG_ zo$;7s1pytZ?e0MD9f}S@2^Mn9$`D6a9r>Oa7FNd!7aCSrNoIq+d-Ae>-~m)RUdKK{ zHj&JOGE(flQ~Z3dp2(RitGwq}yG!}PpZk{A-@}p5l4`IjC%3b#C}D-g*FO&YmUExH zS88`#cGIC7Sz5Y7EB|VgX#b%a2@wY!Jj+1RBN!kZupfFVjSpDM{@GKHJq^EyIhdQm z`1hrSA3lTH28$O%2NWKcZyl|b^1l1KeDWq)Rv0XN2Pgf4xtHf@-svQpx_n5HT%{!V zo82UNnhh~rTJaLbH)b-OO*|L{Dl5eO{#;isa5CuUbtBbq(qJA*rov`Wr?$4G3qWGH z$Q?(OFtIv2gIanGZ{hen4_+}haUW9co;wL-L4r_pJr4DZBD^Uo$4a}<$H)T}mJY9M zh(;WgTg-Z&3(q-VfZ5+h9p*jGSN3%d6`=2PmWJ^C_gO##HmcAV8>Xe%f%wnIZBzWl z43pmNl*#-pa-jS(UT^dD)6P*P;H{ye7~e0N@J`BS+H?!EcDt?Je0EaBjHT}q_?9#A z!vHviVX(w?fEU?05XhLzx=OW@ThinoYcdCFw{*Jobi^FCi2WIF|_i<>Lz90wCuc+BR0${$iEM3lDW_d)1~or?nn^z zfiw0m`&dg^YAifyjVVUjI68!(2;Pds7*CddNH{V+p-m0L+yX@a>X??*Is)g<03dow zQnPM9R!p^T?uIK)x{|RsBl9&!Qn0|$=)nVmhXcv+$-?T|3vIxGIOHyTx%s-wlEH5u zo*8ERM=)%N?$7(~gR9||;7?-O=B!Wn%Zt^*z4~djTF=^mF9wMV){ZGT_2%+k#@2QkGl(`-)Dm*46EwR4;1i{ai& zXrz8k!Z4fzdE+>c{d#XVo&G+B;7wSy7s|{3FRK+n>rT*mnUyfeTAiz4=W4@pFT>K_ z&{0z34fJYfQL3cg??wJ7APQD62!qd_`b)6Rk;IJwhCzw;VnPUM43B<4k z$cHK2B<9-p<%7S;-L;|6twUmDjA*$@TO&Y+1G%QaKJGGD+FeoKw%bZx?^ZkPdA@aP z_+CqrJzZ!29Md7R932_@-UchCGgQAKWO)wHuc@~XV++5TArEnieWeGDN|c;LB9Jyn z3B<>QI`EgwDAN%ZTXe_TCx5Ik*%q>tT_Q^0!L|*{lFo-<@qcRiqy#^1*kqTMt;NN00l=T@Kf*#S4yL z#Ekm$b8193Y&8GNp`a@G4^2k*AIi2cOm7u|*;^4etl?_D`y!rQ{YOTtx9|(<>s%)p z5=lMH4(zOYycvW%&_v9B%$HIlU<^s8pC2xL7I#?V8{!9 zmJR5tF;xEE84w&t{+u1R^yq!XPIa8!&-_M3Ai@1G0H7N9f9b4zUo!VNd9;F8@!CKL ze|YAaF!>})7qIeEC|jF0;M6(l!kegz=9V9{Nkmd@(pHdBIuFikKe$-eKrsYXww_WB za9P6KHJG~!PlY~yTd4UJYC+7!y_Z(L%$oDdF;!1_$5f@b9bpEdg0{?Cn@9mHRsngk8+ODfPX3m-8Ccx?A= z@G|M&S3Wxf?AJ5ZLOuw>AL6-l=CfUvncJ}bDi0KLg_K`8Gfgz!r#7z>!F)M>XtD@o z88p_JPB?-#j;DQ7_008T(OOCSX6bv%R;wD3!6FV4*$UHNMoU0HpLKYH3hj=ec;!IbZ(n6ZJ$In7h8fC%rx7*4pGk4I&NYl`?uxXr zD2r9v4=UK<@Pwl5pqba3B}(Dlyq$C%dU3g^x6IVanofc=tmyRfUdOWfS?038DV z?Mw(MToCiHx--gNf)9XqGwVu+3OKOLDfOkw8ksL;;j5b}d-8q{Sob%D8S zq1F>0`eQTEb=GHEf7)?#Jo>x)ho5qxho`RKqbEsD<7rbjA?a~zQ@Vb|gkK0AWE*8E zPNUF{@dke65M{)vk5N!}O;D^WVJ6*?A|%ZJOus)HDwG{R)OD_;juRgq)jKyWqZ(-Q zY)11|_0rHNKY-Y>X4uMrPjZ)_Yd3bvhU{v#;xr*IX-l$BJ?(L%=R_74jG~RoSs-Oz z@C1k?RSN&SslmGc?vzW*udc!=#&+X)l!_1XBE;WEExBMw(;Rg{1@yX3}tt0i5j zRM=^!Vc>^V-1viFyeIAK-1qlBV2ocwD%(~a6H&?;l~H9rWJb3M+`zRTez%MJ(}Kss zo0x$+a@&bE2;;K!MBB`HObwkjti(Ffz}TA$tRz1=F&c|OfM#&xoZLDNrBD~x$L9VU zJVUOxCFt7@ywc2q%jU=}0}RW_Y%;m&_S_7a_AS;RH`xIk+CvF^EZo)aro^Os8e(mTi$f{?ea6s5@MHMPa-h5G?mNVE=>opL@fG~c%Ob_%XJSsY^Lv-9 z0x`WI8KTu)z1$YfC zDp4u6loH#s$7G1Zd)qVq%W4)ohX8HGyz3J4f^^f>-&LgLGCG$=mX}l%db(0ur#JS zgt5=0xt)>DC5DG|6goJG6@PQZTnU2AFSG67lBuIWxXY9en)<}s{yUM5y`0Rjx|YXA zE6D-H(JGLvOLdPrQEQQUodsnL1r?|;ilUE7l0Hi#s7H^9- z1)Y$MWhm->rFC-T_+P(NA#vzV`&w^Vz1cpacqhcNaJTUKj@5q@3sZ z-rUYSX{gumUJk+!7pv{%{u10N^`DiUR=oYJ{rTSAlbWPxRT7Wizqn14$1RT^C6OIP z+G5bSy8u%<#E<+;iJzm|pE79)VK;!6_>1W?d+*lTOB<6yi+0;(l74VgPA%O|>X?2a zHOj>E&T}I=I0JvT--j4G$K$oqc>cho%(No1kiOdZ&r5ui5E7#)E_M86y%GXbhX^p6 zNf{sFo`*m&e%eYSYp-5$qbZ|j_TzGgXP?pylowM3W9S2;0#Bo0s0JZuxMdZRgiCe* zIsJ?+M1l~$+sum9#T=g$S}ylriN?ras0Bpy$wnq0X4b4awR+5N2r~|v-&dr2n~?Ez zKIqymJh=P7=zH|D5OyR9Dwa*~R$FY0}rpvX{bNpxv&rZuY}jg zO8!6vZ!PfUpWPwBJ^+~qe`+WrA(Fu&gf}T#l}1Z#Kb*@$ef1%$$+{{Q!>n1dD~?(X z#T`$_MFhQ@+-d`?5E^=!-eT8ozJi16$qj^D!cP<5C*&>E63xQS;e{=X!(p_*X-7Ys zBu%`EG-z&?l>ZW=&RF;QS^{8nMO0(-9BX`NVxdjEB5p#Zrma|gh6#RhUNe4yvftvZm-3cQdVomc`za!dUZNf;nv zvvW>Fe)T-9Yw!lD;VV%6cui$6<1-|U57LpRs_!yk;Qg%0pQ;LD;zl9zfX4a0L3v>6 zg396hD!nPm4W+x8mjJ+gGI!R7+|G6PvUgT@?8M9U={q! z4&zS82cT=3(>pNHbPsge)3m-J_M&f@B7gpNYR1jWoE5cc_Z5Q@2ytb|&5g6$Z!OQ` zUV+~x*n-dbIlA7rfN*w?xWJmySWjA~uTRmO?|~gsILC!e0d+MPC|?N-gA^ZA_(j;rHXg8#QfdgK9)5S$O(it{fo#!jdIRqW~#;@N8^UMg3t z9P@7(P;Fl_MKjKo8uYycWL|Wm6s2mc81`_i=I9J#dK9*sNh>y<6}xE^IlVMM`PKx6 z7K619yG4}861|bVat)j4ISc$;#j7s2UNi5dT=Jdtq5FzC7sh63>klD;ZvRuXY*`6} z4m;gF`+;$JwQhZu3`VnyX{2m)3TKH?o55P1^}cDSCRIWzomu_goRA!fE&PjPnWU3> zOUc0QVuWf0zUDg&3!Uwz(4OEU2S4)$G zGB#Rp3suC=?2Wv>t(nJNb@spZiM@RKcRBr`D)|6?GW>>f-_BP8!#8^#Rsc4~o z;*2|x2L&?~Z`zI+`f!E)XvXNdSpRn~N7G(4PT$cMN4TDw|O zfzwRlnD7!s81ybsU7R2xA4toR(6Y7=_f<`ILDV(nP7;el9x9-VJu(Fwd;4T!D`Xh6 z!;&nrD34c$fJO5s=(+|LXuSr*o(XpVB-m6XgoFu$k!Yw+qI;=WGb&-N(40t9368Ku zOY60JR!Is`iHwQ15-)hOI+S~rH4tv*j^@I}*=rzCyw@^%H3=gwFJhg=%Yg7qouHMu zKp02lU%e2+l7r@0ahSLI4{#@^#$3;SMkS^`;Q7UjacS8M;_tTE&D#9t_yp%6j>^^e z3(%MnxLdvl7W)$#`cBsLzD-&-4xTyH-ScBUl+64+CHu3GNZFoPqK}SUmw;0aZoEc> z4XKn>g)fnso<_p_F^a(7jOf6NWMPcWXSiu9WO?o+8;@NL0(LnQxj&Zfj&66-TwP@o zXoU0P#E*+}G@`Qp&5ez1&gV_l8&TOffQ{q-RN`<5&5v33vMM)Y{9E{+Pkp9!j!K*H z;xweFO@(2>&nVqNc3$-q6M0_wwW#dKr~=lG#Er4SK#CUK0Cb!#ldfUdX@JK6eL8@%WXB+*6B*YbH?XqH#`av z{`8p9!!!^K<$gFi?v*LayW21zv^|h8O>HKVG$MQPl7+oGb%*;pElFYQYm$7@C%bU* zMUWj{y=cAhuk?8tc{0xUrUUTp1;0b{W{d<&d?e1a-xTI=!!0rN@{FZUEv3jjmy@3x zyyELwsN?O6U#@w(*X8YX$Y_#PyWu!tAkzNj+BHijvC zgqYx9?#{sjr+=`Heqzmu!{9k4({O>1P>L-}Xssy~(8f-tq|46>sYO~9x{OA-I4B0w$Ik}S&FE?Ed%%?PGI zQLo5|9!l26AzX!&gsX3ixT$L@0gYHh0B*Qsn+&oZo!p6bBgj;&9bavhRWCGF6D|Nm z9zgE_@>!~r@PE&FTLtc9+?F0-3G77=+)p$2OI+LSMaO#)XE{%Kv1C>4t~sRD2?t9H zRLRyOOUo2RoYbG)7Tn|iDf=a<@k8YI2kj}%Ly|pboKh7Yh+TDH`qBVh$o;V5CDyL8 z-whh7R-hu0V-U-a_JJ+A?248!u|Dt2PKbAQVHviO(nTBY-@)0 zFBiS+v$U*23RaXNq&pQbaq9Rpz*YbrP^L zA=JY42du2y@|sEDLD$uZ;8?P&1jAQ;B| zO1VxZ+^ZsnJb7j=sqg$5aeFE{te@LM)qfh1?EfyF#gyx~nkj9Dn%AQDh|+je`pDZZ zR4Coyd4yqGn-TZ|u%w5OO%x5;s;hz;jw@O_KXqAcc{$~>Ka+8GpK4tlg)js!zDO4X zlhM~pns(sP?;6X!P;@K=kPS-~O>Ambq_V9gwzR54Q{3-n@vB1jt}6iPx?n3VfZy}n zX*S(%j(e)dt;<6a$63;)6 z?Cy1xra{Qi^7h0j4;(fZ1%28z;izM$thSk_y{baaP#;I@(=cflS%Hh}vbEm-K?GNX zHAgCOTd5<~DOCI3LzQfwphvWRTE8bg#|k>BRb&bZhCoufME*P*i~DdNYfeQA6KHsa zW$;t?O`3>ja7sUBrk&#R5hJf6$Bk zr40`1ToHNjFSz55sy}R@{&mPGBKt}ePpc;s1sGN1z%XGC1**fUXwijD5(w#`_Ch*? zYFu`a24XQnzq(Q@I6Hi!GbtH4yfk0*=1veLE(0n(ogpWo1oj=7X!jfjw+EYMp};^0 zxr7TiajjVQr7eW9UiBco5>q(KhDAL_1t_p#gsSohoV?#lW7aAAfm-qJynEQIc)4lW zKoxR7)zRYaz$o<|&#zwfEnTzG0b**`qw=V1?OmFyT8#wK9$iN$JuzI>RF z8@=iEyUYdGyJ!pGxpG*?B6ye+TzJh)%Ju!4K5ip@t{9TL<#2{`#3Ouv^&*W~)B09l zha1LHvJd`Dd(kzK>#L%f2vTJ@6gueN(?Xsym@+|g^;@}iNTQ!kE9SrV@!^`Bm(RdV zeWG7Zb(ss9<)d+~{4o=EL@GDcx6saR?0f4URxJAkEa7_iqh9|3s>3!DT6`sCGQulw zg^WCYm(RRaMFgO^gbA|g3bA`RrR%_*DhPxc7a%wd_cr4&gY?+-w@i<`TuMtD;#hv< z@$8-bb!c0z104R$(<6=s=T1@5um^6UN14h{N%#8_vSU|UNeW5-q6TqxDKd260@X5g zJ@=b*_f?rX^|g>pwfKLc49SBdy1>;b>E8H};k4sizbC^Fp>kJ`N5sZSBmr?2F9sov z^JQK2)o&?EH`}<(D^JtSRFmEkoP7z)S1gKnliy`J^GIl`(oLpEyoHeQf<141wxk5S zr(TsUN-2esdD;3CVp9(d;Xw^B;@$%I{FbujJH6LvpUHo`2DEga>n4)O;i4q(Y|8Z} zaQ^)G-Cjx72#R7JNq5>I+i~80+3f&@!0=q z?EN29#V8ckvuPyr<#n#VQu9)Uza5itJxWzV)X3N36eia>=dN70`G1PD=KA_ z>rvRD($(nCk-=2pz!$;>(I`~mXC;K>HxYwO+u@q2sTMpX+o0n0qmu0E4v^exZn_%I zWcll-UA>%Fp9qwp-ReYDZXEjVFtv6}qTe1-+-ulCV21S^@t}YXW$+7agAw(vi(kSX ziu}`WZyw~uH}<@)U1zQKw^$Y}Zq&W9{1Jx3ai)4DSK+#kNC(Z=tQy7L0HRw18`bF| z`@fR=hkY$cDLRaa4|Oo)A8@i0Tb?L=LqMbE(ZUs0pJZD=T9zz4hy4|zs*R~G^ADW( z@`&H9vu4*Q?ebt#Df@|n0}s9CgwmqiD0PqwFU-d)HL|BQ{ z;0gkfDx0!!**XIvF~KTQ5!|t@9`}4B!RA=6L)6WWMWckZ&!y;b76YA-+dZ^KH*j@- zu&8=Dx_~!Wo(tvlK(BE9nB8nItRzh55Ysi$$nbqYpS6M7xX_lx)Fx`r`# z{zCVWC2HwL2FDg_*@vy0capQY7G;X1XMti&n6T0Fh2qx`2Mr3QPn5Y7sd6|skdyEg zko(8K;LlziKn^BsLo1GysNBM6`y_B}U?g7kSwB@qID}&b5Wp0`tdXQ}q>>k~f0CG1 zH16>|l4_6+Wg<06)Ie!*!g%nXB0H?f)d5=c5L*uo0*?Lj1F)mhS zZ00Xe~QzD^#hdN=s_SZgA@^a zwbM+p5Q|Pg68muP9r8BV{PSP*fiBW8vyLg;I2-^Y&8SwKP{|`v@`eiQgX}SllV+l^ zk~i{6?JALU9C>-8iQDk2uO|hRxa(Qn4#Vx8>w2CSXYR-@%Z0e9 zx+s|j$0lo=n46{^4c#IhJ0QpNIWd_yZ8hS-(qIC;B|5*bsrMc9J;C(;I&e+M8B4>& zogX}rm@ftwgP{A~_PKin{a&Z@%i>^h$OHP?dnWZ625gu=&0e;Kg-|S)a$xEt)bf<8 z#Z4swn(aaJSJB8mOV@oR=-04zZAh;Y0R_@XNv*z&zE_jqOGGQYnsQUsfhAPj#HC`d z7{)(f3wpF*{@k-za}f=bwkc`Df*KD5bP<|0JS9e`yVhkaQhz$%{BxN%hpy}|Adt## zwN*+xBg@6OyOPMzU8ToC4XF11O0%e_J+Z=Nb69N-WYI!2zD}9B_|&7JCdSL$Er1Hm zkaFh5DTl#$53&9`z#HIRjA1cSn6~rZG>8X3#8iCXR|UHWDGA}v1aXUR> z-5#!pV-7%WpsZhz@bmYc+jw3-q;LPVo{NsI8a}B)o^Tu>6(WuQxy+E!5F^O|;d!yP z0C=oDgI5qzA7T9Wthcheg;wtAADszE6DS?ne~nBK@>1y`1QXBaMjTUPZ`|1(bo&>` z0sWpYq&7G^37J*vKxFV1k|xsZo#an%%lG-qY5EG6r&YM` zLj^Yc=-v3c8tm+A^=3x+s{>`9V4RBfj@Ch6rr{+S=d8k5;<-%xR$C#8z5Q+@vHmQt zs(~@xEyuW`a+E4T54}i>mK{`tAo(X&WmyyKVuG?KXs(j{udu~%k5MXx&l-cS0DsOR z8d0^}030*z@P8b#O7efA_icnReK1-p+9uhADrm?z7^1XuV#7{#lHJB+`*6b(e~qa} zY@}{UuR049y#ztQouDWOWV`TuwJ(-^PBi`WGgN z-CV2vb?s#zxts3l<>`lsKUrV?Pgzn8>Yk%{g`nLJ-vKT6Y+)>DLi!JJ%=ps=GiQ>c{UM<2k@MTCG2Y87{LE4`wH1&814)cN`9_fxL z*vB;ao(kGxnht;rFn9vPtE||F#F&6c1~aJ#+QB`Isxg!&CJ|Od06KW9i+2&Z6}th! zFJSFp!~xpc!j4erP-GM>Uz3+JLTKcnYK%Xwh+{R%UPZE4TyrTPiP86{U0cikKmO6Q z0`Xq_v({=H(OIS7(wXzn&wZfpH?--BJNaSkjuLeR7eV)b7~%U|xX0{h);3xVN1iy0 zv7lM}p2h7Kk=75{nsCA8pMrX~gWO@o;6BD1TrBBY=oMcGr5B!-&H>&6A*br+#!8c7 zysP1x%LcgqFLleI=iT44j)#`pxJddgn8{sqgAFNNkt-aa2c#2@8!0t^^~mFcKYTQw zW+$Ll|5x8fdUJv0sR>(vKvU34`e2itlT-BZ@H+(=I~$q!i&L>x%z zxfBi;b0J57Gea7xaGMR1jx8#AY#9RQx*KOqRFtqn%?@S1mIK1^U(i$8foRbtt*c$j z{&bhR*wLt9oDY&8gTwKHJA5R0eqV<`RC)$dutD8d&UBk!VhxV{r$}D=YK%n)87pAv zgNA+yhec4(4v73Oq;zDm>fVNL{p^k1uL*Keu0m1UC2O4INkwn)+;4SsByPl+)B;OhAs7A6 zz!FTwOg0W&Jg9*(r5~rAU-S`A2Z~B>cjUL6W%M4ytwrx~4|U7>1=QR4K=OFDx@HCY zG5qkZ&bq?562jz;1VzA$l6qE|*JeHAgW(?>tLf913|vKoN>STkC3WyJWWBJ(GgfDs z!4Q)Sg&2H9#;=?0bk(@)Q}zcc5-FoH3Mhr%tY+$?SXy53wkT zVm>UVHpsGJlv0@$Z@Y%41v$oU^#&mLLuB@n+F)4a4^(C6U|2ATYMJ1$Qk|G^Nx%B< znOXcNWUB;VGNT^5FmBDdW|&`FR!NYv(Mt|3AHJ$P2#1S`FWN5zaai5>aSg7SNK=G> zE1#y0AAjI?y(q_C^cP&d^*RgDl&E%U{)u|+YqC$@-NqA(fe@gQI}49$$yN?Iuo=u% z^a+|)T0-u01F<<|Rt20>hba@MIm?Y1XX+Yp@CmMD*)~!&Gp@H4EDF(fNN%ca;6SK# z?qDH-%|^$zbS!as^&yct>CWO`v!yXv%W$ZCir|=ORF~3F056RKx~zAj#o=aEfvnBt zi9$t`DAU}9NO`B4R*?bs0BLw6)rors!%#UghQm!Es__Z3-5dEbN+J}QGviHzM;61J z;4TSeey5h1F^;1Ej5EDGyp1%!K~6_Uf;Gvk@w`C_S2hQ~z-|<8!Z}X)N(_hFjvoi3 z%Vy2ljqhMiHwEZR`nk^aX!h$tgMlKqBoTf#K{@AmvqG7QKMg#)ahCCBkc@ie`s7iqx@zaa%Gd)QCyef#P$?W2bb0p>TdW~z-^3nzsq76Lt>HAkX3FQF}uY&Z{N?CKilZ#!2t2sj`WI0bO9R|NtzG65$*$S$p$P! zNGtTPgG9>ik63=}v@=a5_rB@~f$O{!E_R`*h^%`E4ppi39F!6f^qxnch@hhO{GOC1 zq=v<4^InKjz}Rt;-+7x%4;Ki)kBn>I*RJxQImsbO+< zJ?y;tl34WT!sM#;ae46|^kz1upQafFXiM05;+puC_kJ0wY9d60hg|JK)RLkqVKf}W z_RGEqr`+%HaMLvl0SlzeoNyK(v|L^q!3}lEg_~f<`<@94`)&@?>raN-s!`_+ zk5SSk-io>#&fhY?)G@JHe`4qze=d~k?+oKPq@z)Q3Wb!zRjC=Y%f-M8rtB+9!BUQa z@2S9(=8#%BDUw#BF~kaYZ>(q1x#t7GMYk3MIGfk9Oc5zE{XPWSRD9_!?LW64CR9Eo z<*#tzHVzg`p%mm|g+1c}i~OVtGsG^fluLr{F~rqV0AJg&8eaIRP2uV1&c)4P9MMdf zsH+HJxvb(>cdrS5^#0@GELQTRw0_Y)$XQ#I(9}iv{C`{!@Ac?s!Su!rp-k0g@V|a& z!g9R$({F-nzVVqbv;KH!>oFHEBk+m?YR025v+j8K^1Ckz<>XX6{`U8c5Kz}21&kLf z`fXS~@J;yat6v!>rZxmLJle~A>-2JYK~5fK^PSZg6gf!2mD!aTI!IJYUXNOy!3?V| zLtcGW60fA6yZ-Fn+{avBPF355S;X8UXSO=g|J`oQguXn%3K+oh!2Ildyve4FNyPNN zX=~_D^ixsSx~*X_yH!1SY?$TDZL#jV90w%CrDZ6t{u(q_d^*%yZyzV`{QIFEo&=-i zWeB)Sk&)nagn1&36U`Z;PJuu!A6T+zon9nh3g6T%1qStsunOaEZ|UpEYycQ+PaHHA zGNuhJ+2>j?l4~z9Nr*K`4G!#`I>ftghEgT5T3kxv2?gT18CP14@%2@S{0w!kH!Drv_T9}%BcbHnW z7Rp|k0L^%L4i4?v550-?p*J}JE!qmC1gFV9)t-3rc$g{0G829hdrcIg?YhnEEIPP2 zvz$TCx7p3@304__E=xzt)AF4y=p!4e)+S<}V$UYRJsZCegt*n@A~qg38J;t^Vx8J-=EHm~bd88ihn3L6xUFMd*P$LB1Sqg*h!p=z4lZ>ckQG6S0#b-x)!z!eP(rhJ zPgwluv*OeP{v5*81Hy1&8H%c4Z#L`v2qIAM;FZxFrKSq;pSh8nYCwiSDs{+luK-2e zu1}AD3xk1v3PnL(iJJ6ejACqa8+=telWu;aij<1Vk84?0WVq(~?kVR@Vx*1RJ26Ew zi5B_|Gi?~R{rH`IlW3nLv>O7d4`Iz}+(IohEgKT8#3o-M#HJp@#Pq5V!&(^Eb(lXm z1PC=+{-GLdh_jO$ljK(u4|{7UiqWh^2v=q|o)p@891qQ-`oMYjML*80J1I2H81Ka~ z6sCQfGE6RF&QKCRv}x%&56lB(ryJGN0!VVDiEWNvu;LYBu~kIog8>b>D_2+W#xcWg zZ;@Bl8fwX)eGH=4I@Ec<#f;6Ip&`c-=_%SIZyT1B9Bm}ULnY)cGeP-y0&lqlRnw`5 zAZ~iJ<`54PJDfZyju2}zdizUCPYo>wKTNHKss376{Pf?4!NdM{tOoZC&1gAA?FdVz zundB-M4R4w!!tngl%Gu8Vd$nrDH&32i)2d(FmWWi_sAFk8*Y-7UJ#4aOp_|u#FE*7 z!`c+v4E$#zY|LYjAX7pGNd+LP5>_Ko={yeHQLeN^2vD~awma3A_O24YfiRDxvsh*o z5=stvVqyg}O-g*h`2VC9$gSGs3SzFJvXgXjsRXFP3+)(VWFAH6k;8f^CiiY zFtacJ%kiUlw3L#}Ol__fxQku&s=rBWSu;LQs%yzW)$pc4$hM zIZ+d7+?M8RW;RCsNCR)=3f%QPvu9}7GoR?}1H$%l459UBomnNQ#{wxs8Y5DW89$4{ zDX+jNx0bXGD%u)iy^P*^nBH&}%zx#@Ve-LmfVez^wXxYa$;+*5$4UEiOG@8hE|G^8 za23n6O%NqxXgstqf?NJNvN!-A)GW!8a&#M8 zZmk$ddTTMw^cj~NL4<=0rNy6?n^Fpjwg8tbCM5lntf1P`+!RlXGNoI~ytDsa^7u(# zWzJ??j$kY=+=?wIzJF_+$pdu?0atp_2e9+yKb-(w?8M2%cV?JGo#1(IMt-jaPF!BO zYVkHejv3(JHZ>aeU=!hqIeOEp?FJ$oX>|#Y9D?uj8Ik3uP0%2<$uK9 zEM=5h(2qniP`N7&-;}OR;={x})uP70E*lClOmQE{J`n+WRR8=aF#vRrB)cfKHI&-z zEJ2jmXmWXqon=M~uP7yB)NZQOh(;3JZyY|J3NWC@Ca%DlW(;8F$pFA<^jz38u~%Wi zIx4dx7{zv)*s+>na!37_24iLCnsnvQ)te*4o)e}8BJtib`y11^4$8gBeBiXxb?)^W zsjKPe)hw}+e#OQ+xtH5hS&slCao#`9)sWd9#hcf?jy*_L2;9ORau}eGCQstDVTlpR z(@GfnSOTExBtHDSdy^>RAU&ViO@l8U&M)X~I~o&q{Gk_-mYFDV9^@dlSGuQ<~2#@us4d&Sz4q!pKLUdcKsNI?%_9aj_)nmgiy ztlJB_5}v8|6DGj7kirahZL4#x)^q0bVFeEmm5)D?O)6?0PZ{+LIUMY_Hz^1{kA>6O z>Kt6YR_ZszRiHbgqvuy!r=xu?YIvAuNzYqUEnq5oyy@#u zt$#GulSp+)(={l@%Ly~J?<%8C#&9BRu23QbO2t|+R>3D|-TDk5m6_*#r?P1>v0~#4yVEwlFRt0hUI}G7RR;$c>Y9$_%zxy0MOvZ<$;Mx`o`*A(b9Q1dz&=A`FQbN}*9qn$zr4);bkL9axTIYsKu$eXf?K zPR_h=4elE)&7=8rjvMu!J8#S9&009mRvtZv*L9^d_J_ zcrEk`RNSe-1eKu4mob|Ub@`ammZm%z30rGiMYy0ing}3)#KeMSf65Kvu52Kv=2z|u9} zpSIZ)!|^>?4l~m-)GNMBq-WQ^FCV3s>P&OecuGZ(h1;l<@XxILEdPv7@$cdAK}Gh` z&xGKm&W-o8cioNpkIoIxFr{tS{gksErZkDhQgtaUdnPTuB1Ln2M6=Le&Ldg;@R*~GZ1~KK4KeXO#UPA-U~ESO7_|_`qZBC4%tDk<=TapWE1ll!OUkS9bqyMax~eswgl?VOMmn35yLXqS=Y=z?k9ol0~2{L zHIuWxlKW3e1aQG!S9gyfI$fO7cl03X-LH+yxX>fDu9C?&Fy z3|L6qn%vb*9)C|=0~P*Bph&kf^WlJpgWXaf%4EDkAg}efzy)QB_NT0(%zmT`7A4k& zq(=~q)RslpNdM`g2m!ZREj*nnQ3nAEG-5Y3_LSmzpnW4)m0>fvfr&wo`&SzWG9icx zz&tALnq*;FcA%rN5sTZlvUz5_}#D~t>4O>T(agaAF`-RXy zLcUrShAg$y{Kx{RFnxYcU2ty?qS0h((PUU{SXS4B;|ny2$YUC3rO(U>Y?T%m=TuVj zsS&?)nx87R8u8?RD+lA^TEcGiIKNIElS8(C_UhybNKq57X~p#H$+OE5rcP+lRuv1E zWG)_9}v#QcfK*64%%VnHn*dyOT9q!u-R^h=eKR$6Gd|E|v|% z{b^6B*Kw74dD1l&LIs2_h~rd%Z%EvT%QK&Gy}gT+vTg3giO!dq1kyusH*2MYoFKV& zf>1jViN?rS#}{S@+I@*k0!P*$_y_}mmb)QGtOuKCXi#O$s~d%{dNsZDoae zgc|{ud+ThtOy2lA`Z0F|oJQEPe8?br#tv1fQCRDtj`-6BEeXGNQdcI+eeE%hPO8QG z8^h(;CP6_GtmV#@7!CJa{!1b!#|FGHiEm@!xGYj#7=O29D^60@0%dXQBwi1^lb*T2)|Ls zDh*=g_y=jW5K+%Zizs)LVqKpeSSm1SCoJx?NKY!boiD9$F86gwNJbt6Ybw0*Y=Ng7 zTb$XslM<5KlT7&JwdurAz-Jo1)Y2Rpc9SNBV+~oX%C-DP$oD-Fr|Pg~`ZAicZJ$+{ zbRg2aOHKmI)Uf?hzBBG+9Me1w_Cza;h|-39C8H1(UfCVbhzi6`47920_KcLxg;!a+yWWi7ACn=-@ zgJ;C-DFKk|YnHf!cgy$d&gUQqfzsKBjb_AG$7XOsysn>t=C+27*|D_Ozk2~}yy2CTQCpdSj$iWoISs(r7MY(wX?6Wm@vExNs;PR8>{%O-zImtIebc zNQrs&JI-Se*+`E4sr2k1Tr&iCS)E}eMGsjlo!r)o(mbljq8Z)DeCR{YVDu9&?R^|V zriPjE)Wa^_=pJ6%TG4??vIqu(?vOXjJWsbFQx-ylbmll92s3~>(LRUu1 zIW8#(i0eml6>x$OiCf}#Y|6G^TMPCwYLro>+mNS@rb;8^vVkMV;mj=WjqPZS>fm!c znTXvjrdVesa!{90QAc7zZHeBX5iBn3htp2j9Qy@?x#c?S-LWGsj~jrAnJ_Uk1B2cG zLW5n4xVE-J3TL~>mcem1nFMQhq%*-3Z?e$gVFNHU=OUi;SiU}mzbN9)$U$qA>37{N zuUuQUxr?%KlWSqGo#oZ~Cgdq0UTPcG+)FA0^s>5yIxTT!M3KiLvhLJ$#zH7G>ZgN> zGVVd|sBj&d>zR6(&^d0Dgk-9uC*0Uv&gTAMNh75Rc!d%JKtuXbWB_UB($i`kdZ~#{ zNdnycI=Rz$^OLWi-*dbJ8A_9(PpUvm3=LaSg#?XoWe{#W=3iD;skM6i8B}|;Lnew2 zEKXNJHg~QxpriLBY2{>NE(C1br1auyJQpr_{XfCPuRbWu!6*(6EI|12b#VPxzXz9p z?yK>d%dQH$ZrTOKU=>WST1{7PQrH(~kEX=wY?ldfGF6I9^fiK#g+cQ7gvrVF^d>Eh z_I1}c3GT3!P8sj-PCT<)8PhGa$Q4^|WzYs}2(PV-O5ovoY%UO7zm^J-IznT=IuZVc zfyS$%IAeusbfeA5!`CYR%7lzX=Eh)QMlKYCa}Lsum#8jYj67?eW|u^mgw@zrTqlF? zhk@>J)EEFdH3jENMITOU=L{Bh=&40Npu3MGKczb-CLpDg(;QWpQA=KT@fslmsjCng z@|TK4P3S-(NSij?O46I9k}j8N9fMyZYs0MYq@~A=NS2L)i#z=EAWng zZ<8b_K^Mm_6s@X)$81npw5FWnJU+sr9mngSrNHQm6fX7O0%9=S#Xt? zcn$a}E6gP7uTK>l)oZF@p30HvrV=G8oQml*XZ#9zlUkjwc#C_2{8ZuqviDAPQpU?0 zoMxlNcz<&9rT2&gl3tHMqQK8MW+24`Fr$;Et*#QZLUy{fYU>J_m@qPgDn2Gneig=V zP@exbZk|3cw?X^~h|fxS={I^D^NqS5!-h4pas8to56!ORcRUAK2hDD%%^y zj9F!2M43R>*^(K`zcJ_`7At*F&vLv^)u}`)RR?c@QU2m5S_HNp>u$g+XC@n$!6g1X z&tq(7y9a88t7}Z3J)!q@*u`=itorD+#FZ|PN(@IEOiSeOroQN8zNXqtoE#_p5NJva zjk1x@cvy9WM!+NY0$3bE@@2B|FB$%DlPC8FZSLgr7vDZTF1it=Hb1uHM*lyyK1jb4 zm!l~n#*noPkoAyNHQzXEYGQ9TLUzliDJ868*duAMhXCo76U^+`j`bEX^LU%xpeSIp zI1ii7I2CT#yeh3!{Yn(c6dXx4L}zM7W`Ia&ytwRe54GZ;JEnI5W#I7 zwumJ+AO4ikB79F}zVI1KVi1YP(MC_jVp6u0xDSf}4O+%2OHfrgmU;T#1pqiSmVWVE zk;at;-{$0!LpSFRlbw;}{>m^UK+)gX?-t9=K{c%z*D$?)CPHsj8ynpAn1ouyGFG8v z<0#GzR-2nBdN2`6xS_r|zOKF|e)19bh>!dH2jL-)x>r1K(>8!XYGK0?Gu29A|F_#X zZaf(_F`Vz%p#0gH7r&ySSjb+HFJ%9T5tzTpjjl3Qn_@Rh86wY(yXI}6$QWTH1csf< zS5=Uloikl9$#h>qfV>Om)HGHB5G(nb3kcK0JOM~}n&BkXA)G{)=i~}Mhz8j5#cA>y z7t0q<;!&fFQsI3>kP+)-A2k&qRoJjSMJ!tbdT6K6V+54!6ad6gfEWnGHbj>G4EY1L z>n4V$EL zV@zvI+`fV$RsmT+h!qr2h5#j&m<382sluR`gjH1^w$;1g^_yBa`#o=gC;Y~*z@cle zf}+BXCS*AA8`nRT+Z7JVYbY6iuP9;V@|rSq7@bIg6bEi;upNV3+i@}-o(Y(w&y@m; zx4%@)$e#{$FwW>sgEthwzs1ob*K_{p6&Ls3M>*Vu$!D`G zMITwh3j$!vqx1x3l*e6YxjYD|07nP`jt~I|CqpYWFFhyqpwX;FT^`%>Gy>^))2l52 znE|2!Mh6ra#5n>;Q*>;TjxA%vV|h-6znUf>?mJ=TH0vtwMQ0EbkIM~^#a4Y!bqvSb z+;ueGUa_-Ghh9k)Z>tc9C5>>V0#t1e0&f14NS!u5{tY4aLV@44Rcby0ZH03e21OOh zdO5slygjUX-OJ!fPkk&L*mYfmelOJ))K~^L7C)?f^SMyjtYx3r6YM)VJNHX_IN{<5 zOk`U$fTb^Hh5F?XTE7m84x=pw1$(ZuMM%CK>cdj*D)u z8#$nnD{XXy|Jbb;H#XVZuGh`O#$QhQ4eq(j zs^rWaP7)Aw_mV@(no2EFo)uTPP&^BXNUTjb!+dvN9jjU%S-2R-p}Lsz%oJw`R145R$e*FLpcjxSw9tdu7{j~jh47G9{Bt;Vb`X|_BXb8*jfw10Jw~z*Y|E{% zg1E=@i9LsZxry!a2j_C-#V|vgQ;$eBHZkUxL7BGN{%p+N)~Xj%WZ`uhuVOemg^f4Z z30!r`^EMGDGzcLF$p+9nInk3Zx1#mGY4r~G_v0?bp zVgORDI`pW?nN;+ZRNo}|Qv)?_f`(BQX!&RBzjz4nxVFM3jKF9>RRx5?L?9?Fsc<^Y z8qb}R>MD4I2&CCaF8F*~o17`=LKt;$sABfDePd1^9l+uI1*xG44ysAE|I~H@rF)X= z6&gj^K#GfrJQbf=KEwILzwx-#w+xm?3-NQOoYtdPzb+`wy^VZCUJW6UgiG!b*{jZ1zscR6T!FZ3eRvm}3g>pZgEt=SWYXO) zh@rRWR;rUXVJJmM>Fz73dUl*37<*V#b5I(ljW4;QUMBGxp~#aO_&o6f{bl3lL|IU= zqUxx|0XS<6f^&lLB>mIoO&c3^f7EA_g`Z%4x@|%Qp-o-@RRK~JU}_42?UckeifTiE z&?HX-3p_vd5`@SBGG22P8Zax@;l!00e!^i?QdNwNm|QrEvq)r|Yv$q_yS-D+%viX}GpvDuVtT zpTI^WK23ImqzWHtHt>=51rRj}6IdwoFU11T#;26uMqGYa>z{P~;MD=#@Ko>{Yi*g` zgO~s!fzYJ( zt+Q=aR^>am!Uk|Sb`ohv(_Z!Hgn^VH3Y$!^WTbRewH@Vl2cJ-;I<9{rMF5WbYRP=P zXPPuF5vK-0wE-NRKp^Zzj4!l6kRLVmFCpk3(a)VK{9yJ=^1@SOUxK$76F`W7zE2Q0 z>G~WgNZ-c>rCk}@7Av*(p>BHkdBP7os}7dB`OC=Ped_APbXu|L;^kUnel@Kw!=YN{ z0g$jQXM8mDm&ei&TO)~&bCBkRq&oeLk$%V+69b^CNN6vJWnz}-RY~4pfY663TnQ~4 z`zsF%)6;`E!mdMRSTg41jiZ_k;I_Z2P#S>30#qhSIvC{;!NYJ;Ba-naLlu5EIA4gd z1>a1=Zx%QEzFA3z2ArYJsWBGXpQ0n|`7=JRe*`m!P`E1dg3cH+X60C_%v~;AvgfxN zCrBic_DVmxShgCfh6sny;iXhjVNAr8@e1`(tq6oFIa})!ois&kYm9nHOu)JQaKrbI z$T{rS;4dKo;&CMP3G#AqBqatRqJRl#_HKYyD(lkx81zy;V6xdua_%1>iC6~Z*^47( zn&qWuyXB!bJ{@0;O?jA6Cc%hY@d+>?G-+(84kZ^LTKmZh0s(#hB=ynYmlz|u2$L#+ zze#OE6oAK9p@My*aacO*c5vc}$Asni1!-l?BF6caGzp+PZ_YU4jBMT!z@BP9F%sHh z_sS{V4s>_mXg8Nhm~ChC+9)S=d(#7EMq%E5MsfCe^&E|h(k#^#;{qifQ9nEpbkZDeu=n(Oqhdx6Vof2YkI2Xuy^${&PbCII zewb0RjfCci87JPZZejbNAGe-yyBM2sYL23G%iXM%_*Y_I_dI5a@1pPSDQfb|_mMF> zonP;37xdJ*gPTu3JkPl4GvY3eZ)azziN@!F31gG{dJ|CR74ix%d~44kO=*-3+JXG+ z2II+4x2I|%m<7j$YK^;6cS@>yE1TZkF}>J$=u;gM_erWHdfMQ~UPq_`@cv4c{1Tu> z=%1i_g73JA6O2c_l`Z@U_M-1UsRL4nl>&cA0@8PQY+LuBC<81nPsQDrpAdV4T3yP1 z)3ITnU!7DQ8zvvGda~&bnmFo2U-xCGPeM96h5$hnPG@xXI6Sn)_)el{jOUVoC^deD zCaFYB?_2?bL3SQrDT10iA<#z6qsaO$xU>QRa>RP9~|X^=iAeHq;07@ajcbx)Q* zj4~IoZsp3Y6e4Bvr=)D}#x=LT-k!vqte|D@{og3Lp067$cgW`_EGcA4hP1TviC_L- zL56M_MgQ}B!X4?|4IJ3-V181us5z+WD{MpIkYI`G1TM+=9tIkn*22%8?$E3;!c;L;_D_VQ#~s4aiJ(Uv@HVY$qU8TzW|L zR+DmOKN4%QNOG6yt#H7l1_-Gs1tNh&oOMk}sbLi4~- z*J6gH2(Nsdp&l9qDoR)nZWZzev;k-z#BR)kGfHF+>K;HRh{CZwBg~2cx<|K#%$`;D zu?B2Oq+*6F)O?;#r80OMjlRv+r}I)?%nRgf5cYkxZfqvb1aBTD=1rxYCFhDYT-SqX zj+ath(E>u!g}C1(1_2Agls3SeX##Eg7SBNRYXnW6(x>S>z4GzcNLAuUAW1>686J$S!~H~;7)hzqMA^jkz2Ax_Bt&J|PA z%M>JP?J%_p$qYLe4we1aPR4B2wMDd`B2NPNA=f$+w4v^+PTIQHs|l7P27oLrX9aI|i17AE$88GTB-!BV8q#idCzF!*itfqMx6I;eUL zbopwP0hjb1_!edlq8qZR;bQy_IS46kM&m-4SIuYgg7 zTv+Su>%7SGnGr9MFT+&t1)+V`Sua7p?kE{+zD9D4SJ!-zAg=}iOXak2AAFX%|R1^ zq9r>v$@-rn`pD{^+a57~W|*qcN>vGVlXbpb_x1PgoC!J%!(K{cquh_{6V zy9lZK8t@tSHB4YqOh2bJ(S`LyB78WLoF098N#{<;5VW5llLj~*l=&PBi|UZWtWsCO zp+*xgrk1s%7>6y=yeFOf~FNNP6}erQ)UBR{DNW5Nn9;rvv)01 z)Tsg)670^5+$;HqG&0j>pJ&+)wx}is8-_%VrV$YP5+VXf8Grp4>t6ETv$Z-oEsEsd zE(86|{_T_jNY?FS^h@3YL=IIlkdKEGVeZNkLRF>G;Id^1`SG4sI$as!pUV+v%{7qD zAt_$)SPX|_$7c026lmA$lD*{~y6_iA;T)Nq5CD5S68}%ANb)<9tC%Y#nF~G-J4l66 zs4zUT5iY3A70y-VA+*GnXomF8>u<1t1Xj)zNE5K<$mW?Q%7y>rGolGva;~?qo0!zS z>X@;2!*xO{&CqCEC^zBJ@6O-4_O@{|%oF6^0&V0PE^Z|K+jj24NI>$PT(>AyD`-JE zG*GxCnzq>RhdKYLFBwS)s;EH(XQSmN0BTic`y=(IJ7PD$5gGx}(8rKfT!4V~fWVuZ zlYS_MUs`{u=4Kl&<6~%g0m_=As#9j9*mdmu75K*-*DMSijmn}cC_P*X zJihYkI)*xFogCy;gkh{h^#Fyfys-(p1q_`^wGS*g#x|`M@MKGtE5fO}+Qb6tl?qf- zLl((SV_}s&huPFszqg{HVgt#=lRk5Xm~@hSB~@pyl)HPrEPz!f!c;CbG33L|K(Q{P zO4W`%(16xYkcdAaiX(akZ3#Ty^I+>QYa+CxC@B-gngW&4lf)S%N52i7nHhHn5wkCA zO4R$BOjS6?DHhO1%znxgNP5&5K;2TRuj%|~n&Rfh9I`;JE6%{=MjvS|m=@9Tf#)_c zpp}2_iesQTv7yj{r3t!~{nNY&PPrr^A*o^$tj4{SMtynZFjJVcNf9Z0X$B{M zdGkryLU~|GGBov_!(Je<1`O|^GSdtpDOFT^q59(A6uKk?Ne5_wbQZLPnUmsfjLoq& zhfnNZP~6g~@ow$l|IV~uNRR_Fx#Cwl5hc|c5&OP-xG`4U@ zS%AYC-khb8B)%hX9UgVRYZvSYc zCYa}6u!I`$-5t6fN44ZQ3u`v1T2fkL1n4XNPLGrD*z`#fw@0V~92o2 zr22+iG1`k)UrE>KM2fNU7bKUA61f*4Q=K#Hcd)N4y`yU0ct}_{Bc%FC&j*X#bNU>G z-wPC^R&a6?`dSR`AyB^=YO$mbsZA9$WHrn6Q)#Hvco-SNylI8e-o6t_&DS#n0AEx3 z30u@U2@lqdW}1#O?Kv>V64XZ!_@V2*7Vd0f*dV=D;4+~qd`IbqucSn0nwXfP z)cP#ULHR1rMjkHC@LxR3>eS=JpKNBuMJ0L~2Q+h-v-J}u^oEIHNAfzNvs)+{7-Oh! zA0@Vy^d@G&Ey1`v7+L$t*e6E777d1>fO<3$=dV5n3XBrwVxcTosY?Vucj|*CXf+Xf zdzf4R&+$zF(OLYN`itdnm(OO~!dnoTc}e1%`4Lt63(@%4b44ulH|8@*nP)N+~s zR16g&6?mlnk=kN08T>dt4BM$SHwVXKtha~b&*;?`mZ2@3Si-?ts&IN43gi#1-ytJBymw} z1@L++4}|kYNRFsq3R!jz4MaX=XKOBYz7N`pYHO@ko5UpvP_bbav{+^T!^pkAaKT9JZ2Lcu;?H4oI zsEQBT0I=n4a#OLZD}_2!>_4{yXOBP=pqQv(;o1$*9-0D#{>03@uBek^;K}8ZGt8HL zpTk1=N7=osjA)=_a3YtD5rJzC!<|~>D|d{_A|FrC2`BcJbylTIXagDn6CH6>7}p4J zBXke$0FK6%I7y5E0Qm_PT6BGJBrMLaCHy<9HdGaL?=JmUSPi z2(mKl!ognW)0Z)7*rst1LtKXM{S(MF{WGr!InF{uf_!7V+N&hC=zJ|1tFDDpC%6rk zoGS~a{K?^c4K&Mx(&;OW|2RxxGj4*W#!8PSZe=e(TbEEYy;R#SVvmx9C8^H87zZg2 zfH!}V{und_P)s&qY1isl-?R>@ej9646)4Y%9yk#n!ziVp6z}RH0cBdU<=0u4jVQ6z znX_)C=GBq^oQmaQiD^Bh6|%UoxWS`~7^Mf0KiHBkRcF#Q8O^1ds#;n*8FdJd7!|M} zQl65mzT5^+HK1f*DD(Z0As!x*N>+I&yE*Ms8-N!p4&Y>r)x4gDl3hBIo+_Dg4j?B4d$}Aud13N7wnrtus%)ACDk( z6<^F_HC&fhP4K8938xV&yzpv+B@o~(%c=+Crh$d!B|tsAsCwcn&~X^NVs5kX(OT{?|{34qwxMJJt(1Ac-atA|xPtmEv6zL{_%E@uPsGyK8Zgw9A@pLb7YA|a$}JI7eR;!UK(Pd~C4MQE z)?_Qtwjol5R3=sRVH%H{DS26#xw7%=Dk$FG=tcU<3^uxcPcmJvnUe ze9T0g4hQ4h?i&~?w<}53#mRFh6xT%LAfF{R8DAuB7vAGm)Hw=7P|`|pe}#j2xe ze2nIez|&Y-sQUeQ;NYGx)ehtD{`u2k>(d?wOKS#kdhc@h!OPwV?|t>VV0Oa^)XF={ zDzcc?2FpSut6z%bWV0QQ(SRHcE=`S^8xo(FJRMOyvD7fehXwHlyPO}fmkM2pOP@SY zPJ>=Cn@+Cf8F?-&iH}h0bvGx&p2Y$v)R`Wzit*C^y>Q3VH^Q&{`y0ae?x)B8(lAVZ z>HF}}fBe_>tKa-_F}eA;R4K7-S~lc%GcnY?aG1ffrjXoExz@wa!KVa;`J&AU`|qSc znUauMr<5})33jZ;Mq-KPn8JMs2JMdI7MJCqFgH`pM8U8pB`YG+2^_`t;6;&)fYb|s z)ord}LNN=x?nT5dAvjMI1xQm82N#RR)c5c zYu44V?2{ZcRxJBIEvy!eRcXL_F7ztczvDW%!`Uat$G_&q@XdSN9^ME$Lf!0xnd4`| zvtIgQc=+zQ_{snLY*@8nGc+|a0e=r##DY7Wa+kNXs8lsL%UxkLlZlq6M_hwqv*fME z@e9~`$@?O5;l|U#yw5M7&VKsC(t2`WZHbZ2dEz|#U34#3b1{kXhzYR{hs&^W;}o3t z(RaYxwyqA_njHaV8#v>UcaFdI@b|%)fBVw-_J4gt7|pH^(^IRV8DlyaZw(RO_E36b zGPpVgU1E4Sufc}SW)u)mAXa7*_GbFQ85SXB&*xYGXA^hAmz7oG8It&wC$88ucIpkF zEsbW2=iXu@)5xS~a1IuZMp^J)n_OC$48%=7*u6zIUCI=sAfbMQFzzc~OH~p1CF&~L0t%{APy`*#SEEAT@xft>(!o?@*S8>#gVE(3U z@yWmQxcF;dekZ)<9;@La;~#~lnTK9zVSaoF{uQoi@A~Jz+s;gsF%@Z4O_S{u%oA&h zxl8^LDfQ-{zVIEkD^eN>(~X5ZXz&U7w3`;auvjEs={c`5s|u?}C4T;7`kbWJ>DM{* z(ZvRPZOe3ltD+!5EV4?WtYEbN=J?2GKdt@5)(x<2`AVqbIF{`gt{7bp|4>{}9Q?=U zgn#(ZTiO%WmhHh^+pz^&j0rDFkW+FesTwB*U*&IQOc^xKe@o17&?lwvEaPy3Wo#=O z2k?w1pBN{3+*BeRq*!2Onc5V@LVIL$bLAje6rx5#5lj)Rog7XhxwSh3rLxs2{$Ced zc|N0pB8Gkg!=0<3-MbpYd^z5dS-EESsfU)0^ip(1Ln^=UZEaDgzpgDOu=Lk$Y*ERjc>ov*}{ zD8*0wSi0UNp?e!h{*#9i8C%J&foUCe1HDy~F#SvS3zxThAQU~UD}%n3SQPz$eURQe z{&9Tg!)_Oz{)P94M?C7>uyDgwFmBpdV)Yv|espiM;;EPgFgG_^VOdRkFXn;HRIgdC z>mD;REOZq+fn&xO=$}lnqAEAG2-)W4C{yO6GG;3OCDKT5Dcis;?a}NDFs=X^toBO= zKCT5w20%znKT;*1@&0M3Z`cGOmGyUZIa6>DN%szuri=k?Dk0O?p*oj>nSIrHWna0p zLW6tsZG(Ze6+m4DnA@=}o^!X;;{eDP5JC2CQ2vWjq?$(7vXaIetaRmox0#xQJJsHoACX2PIkN5fyQEW;1#>%%`B zb1-aq@4v)9`ac)I%y4fwbYKs_pyGz8H2(^FI?t*KO2)DH2(~Xrk?-5XQ5K~p7ljhTC`GdGW#wh%bOw0^2cGp2|XrMXx%A~f)@ZAe^MTQDsh#X zU2>i~2LDtoG{X|c+cw1lJ!Mqm#%@gIM8xtb7$758j&ISzJ9=*)58x(SL1z{~(lr#S zZQr6PQ0n)4u&}fM&AuDsGyn4U;DMidO?<`K4Sa8Wb*v@^)Sof!K)iU9Vjt^f2wRKw zP<-u&@y6?SKz}euNKK(JgB^T0WE+$^PHBBY!;+i^?Tmz>5>!%%;%)<(4c@` znDm5REM(7_`RX;I$mYw@8Jht-nY;OPyTPn1zJH2_XQ|)CbrvCHRhH1q4`Ja`Uy7%| zYKZNS^BmK}q>Vjp$En2mQgblAsksEc_J@yz=X~Km1V!N>Y$`o@Ju*8JpnmSl# zVEYNI$~ZEJ!A*+n*c3`p)6QfnZnJ1p!~K>F>O>CP7o>fO?rMoDB$!WlSzI3C=uKUK zld8jtKmAaiEu%K7ly!?=N7h?BVslU~_f0(kIqa9saA@$kYD+2$E^8x34^d*g_ng^) znqL&MOY)3UZc`x*RjAAmNFf6Z>GJ?RhsvDn=d78~>%pO2JL8!fCgMMR>@9H91y2nB z5`P%x>O)YLQ=#F?BrMr6Bng^k6sp16@ay$7eC35N4RK;NGv^C`Q7LuZr4uq=D<&H5^M#hnK5 zkT1S7{N8hZ55m6fu(&uM3ha!mn_mh{>XT*GVa`GJ6BGpw=-})rje;z8O@2&+|(gw^j0IRmeCa~Ph3Z_n!^#AAc81l82(e)?|XgaTrZR<6l#c z!|{VH@eg)P!WYl`t#I-8uMJbPs~|Sqx4=fkuo`zhYP&Q@0ul!8sj&*gSgX_re_K@( z82V%W1;z%X_i3Y=1H%bncXBQheZHyy@$R@y2%1^kXB}teFZ)a@lQ@bst-6gc=uN`T zormD_=RG6*(Vm&Oae8xXn-Thds5_j9hPHvGX+jaIaPxRq_=mxd!`w^%IQ-2A-X2fc zSjG99uY=etNpy-?m4qa3FB>aHkcd#_AqN&IB6nOUXY5W6Cm}1V@e}4;qusb;zXoi! zcb+DWeq-yERUA@lH0y`fKY+4H>5}OA0f5obYz~@G8~QJ`z-J=b&~M{#`&wxBtqPdi zk6hiteCSL~1`_+9CHSbJU&|;dQ1$iNJ&(`fzAT)}(olIt_&Y5~DEhrHzkeUBsSm|J zd*wgI$#*|L{Oy`+;#K3DV_8h4dz~~gKXBh)iQoS8_hD-N z7HDg%(Hpu?pklj)62>Wmiz|3)p9oIv6fo(!aXC8hg`xC&${tLHg`9LnPU$WbImaKU zF_lrLJ2#KWcgjE(1z@}0&Qn&dD5m>u3W#kQm|nX9zW$9L!ABnO7H z=y5VSczTvxoR!8|MX*9fT@$?VfE7Bq&%DfdhK!SSe6A9sq^1Wrz@RN$d;mj0yuZNK z(X#>c1H>N08do(n0>!3v&>WbCdgp2=`V{j_Ve6Sq!!bK~QVGSNg<$&C{=+L^yk5fn z=@_t=XwJ(*kQIXz`z0K_>ALuUyPOgK@bmA4Pe0?n;jQEEL}-Q(svbrB^9%1?VkhHv z9D2Qp@PzVq;lvlcIlSWGPb#(@Xv6e|t+5@~$=^qi%`{=TfauH=?twWGlJKR%Rrr84 zsC3uR$Ul!7*e+m>OE)i0h>39WQ|uFk()76JwQ7HscPmIH-xT~#KeGZ1R$#?J4aL$0 zv~>+r8@9yDuH6Z*{>5K`yS(H=_??L}!$f~F#JY|Z<~NCXQZitnfU+9E<-=>>MH_E| zweS3=@F%Z&aa=W?3k&=9K+)@4G^SP!u+75Ck49+3e1P`2y5+f)7w>p2$7X!JbGYZw z8JT7~R!XTWPj>Vwmsit~#V~ZuSoA@4G#S8Xrh(xMgk~y2-HV9e;`|hhui1djYH9MY z;|&=qI;o&sV}tA1S<`ykHrxtD+aUXTZc5LJ$o!_GHze!TyaY|r#$r&y!e}8j2dz@FBdEmgOH#sd|Oir2bc3rklz{m@Qf@B*r^6eTcQFW@~Z*L8gEk) zbmm|I6;RHa?I}J18RY;rR)HmAtdgg(Kz_N1ovUoze`kWtq@Uv`#NDx!d>bZKZwQNn zwc(Y|`|Ggd{6B%`>|7O3pF9!jCKZY!rCtmvO$!YgV~R4=;{))P@sHq(&wM!i{+BO` z_rAv&abd@m5nEGYuu)1ZlK23Ff$~HdLyGjqY8B}7NTnpP_9^~mt&7jpN7Krdj`2wC zGu~>X3d)%LP;`o|OOW@WAQUA-6iO$_04R@+5s<0^$EGTv8DQ;ysz@8FIKFmmz*xQ% z+|Qt$3`NT4tcs%WG_A?53|h9hS_`vzat5eeQ!tU+C1SjKS@pyGO*`PE*?#z=cfAgF z{ljCzzZ4h4!FmCTYBDs2K$zd7fwO@+)bXJcw})T<*fs5c-0!jQsgHjRrjI=p-EVC1 zC)BN?6#P9Qid{odw3#%zgF5=w>pmPpMEg{TG{1rVEy+GUr%SJ;x`wmvi91e%5_%gUc*0cVs~sOuyp zC2di%dG@M;c}J7aIK8c}`=&gdM$J@bifBly5&yW7?aLs`lrZ#U4sP7jT(kL1I+LnuX60f#csS$yor5i&b zQcVOe(alR{K7T<0)+svsjvVR||C53NI3^`C7H4({H(R!UGe~c#fGZSP{?q_I#~13p z^o=iVr#tJrQh?8uAb$#?fl-*)ur=N=*M=88=6AyCXT2mmYjirS8*GT}a1^VgJh33< z`(R_LB2;j2v_HJOxjbC|kI#TV`_O;HvyPjIhjv|?41_7cTsIZ}XmV%NG5LLKRR?A0 zT(!vA6uJb+s?^F%0d4IoV!|0w<#dko=J*2(%jj5VIh&O-7+8qZTwV88WdIM9lgEPw z#=R5-G}<{0aj73u91L3gQbqfiRP*YSX{weS~ zKc0*~c+elfn_m377&aXrCMPFD3g;tzpZA+)HPToFa+?2-q%{YHCCcSkU-tJC+&2_X z{QsR4#*Xn~{GjMLX|R zX7o${Bv(!TVTWgkL^JV3h(l}h$&$G{~&9I&ep=O3hHMNSm;DALEq^wJG z=2uQ;M>7tf7?m{~MEKUnpdhUDqqUN0m!~9ka`Le~Pt|D!`!j{tjV|8~qH?BZ=rRXyNMt96H&W359+}x^ zZfYE?&TIGyx+8Te%`(7f43n!j!hC-n{QIB$RoHjl^TMC++!{}wI1SpShAOF;+&d8s zVQmpwG>C>igz*U8w(!Gn9&AM-bbA~H3R^|(8N!~iYPxByI5Wa3huIgqn?M2mt<=s2rDHr@{{K&nx!guF?097@K zU9_3ni9u0Y-4L5lhr11K4^RJE3tzq0Q{pGy_5tW^IVn_q3~;IwOzq~?8Laig=%jWs zLnoPlMlFN>`a_#rU_XU8isZNN>{$0hN++=uvX%>=bcF1J2fUgh&!AAurcyUO!G5a* zKycfbipuX548i*|Wv&eV+lwwtej-UEXDN#ty)0mI%c=134}A*Wevk9Q!$0(+_~7Z= zL0utQV;ckhpdBi;RKo!69+d4Ae189Bu>WaKhDZPQ`El{)olul$80^q+REkLxMf2Gq ztW3@6rWT7(VgQ2)Vs z@cE^SL)n``E5EBnPdVCEYGe|^L#sQ%-T(bd@zoD~JX~`9t}wmjM1Z=M4d&%J-BUJT z*W;Z9$CwV8>=9B{-fv>Rsr`3{+3bh=q1nNRCElT|OL*EdH;I0rGv=9;O)Ikp=~*aO z5rLKEqh%Etlm*(X2mu_9kW4O!{epf=eJJ`J>k&+BIv%c{8^LQI{aaz}GhYTzsZWN% z#0uJv+c8_R9o{$uEQm(Uo<;wXpWhJ`#fLTDvG-Nea>DX2D{2p7HPE#b0<|1SK--1=DdXHxg+5HTyY zCkA@nRu=^yGJw1lq?=VjWfziU0WI51ZHs5 zO4AxQ;oUhB1Lqb-FJl2NX8d7q6AQ`$L(h+z5wJncIo0eFu`N=baU%!sW*P3L=*tck zlrI}dz!XJ9QI`Rp4uzuzz^$q-{{`dG7&dNM7vZ6If@|uV0E!9f!Iz9jwxSq)vw7ke z*mTj?;)O4HMVLJH3~G4H9b3EQos4e01>8#l{^fU@8&}Z=tQck?3P0&5O|HA9|Ez-! z5sC+ZHr)}!>QnLx~UzggJ%&@K!S4&#|v zpz23tAUqAe^`&pZ4NtuQ9$g-b{T5Pz8L|ansd{7tm?(ssy%#Qq<*@aC-7geztVvg% zPe!gAX4^hBt2G;n+odj7$2NDD0Q4c8XyTA^VjfDnyrcPwz5%h`U;B{Cxe`O|gdf{bWUuoVM?XjhYE5G{mSijqL17UPmZtt%?B4^9SLq z(@uhg&C>wOH5w@S05X;(ofFN%Wf9M5*22ZFe0PA^jXdInXhMRYEFH31`Q6QwaRC2S zm*|nKnt-KK(a@*owf_%4%};nQDZtbefK4h=&Q!+eBveLWLxj9}VHqnsqQaF%=srC?fXJAmj0E2s>$KUAh3705K=6 zm1>i3?B%21Rs12xXkfPAi^~PpD_{q_cH<$-aSF^DOv1X|`{DY_uMWl3Y-k(my{iLJ z?W;r0idfCc?X&A_*Qu3`IJVT|tep|iGXnZeamzV#NJ%j(m`0OAfh9&&g?;G27O6?d zkW#m^JPWOoJs<^~NxHUwXnXy?P~FP%w%K|)<|Omw7!JXA4K*_B3p0We;|3Cm6miGr zz7n^Tt0Rm9gt|vXYSMb++NY9q&@Q)7P0T`nVk)2q!9P0~BNT_Tjl&9ob(m_`sri%U z!|!UxJ(UZX;KOhwO%BO@woQy96!9@rqf+i$NQFx z7w6+qtifOZ{6daiI!oNJEsv{>u_D^I!`n+l3z0Ois=j1~^YWKZZYLwZ>e!}RiQOfkIizg=|Wuc974PmD5E+1$xo(Q^nu zrYV;sC}pLlU?(+*iiW25M;HrygmC~N)uW_Ah^R?sF0rsl+;WNqIjb;X8~0DWchP-1fNb$&V?1OxD?fuF|lGnmo7p1P0a=G4PJ*^1P+!hN+{zPHs13- zuygMSpq@xIDFAy+;_q<*sV7APaeaR>Ham94#nBk5vNH1YFNW!m;Ul|0|4R-pmrp48 zN@zw6JbsRnQBn$5*t5~ME*6{vL$Y8X4r7+8LA1RvH8QXoD0<-0Dhir>uT;2RS~_{F zu5?REhpRO}MXb%Gu?)>A9 ze!?C+%2{bNR8fyg7)BPW-Oja6;Tww@otdSGGh5}{T>Q!WN&>AI2H9hv6mQ??-t9x_@3sB*; z7dO7egJ<}a@Wo&-0efz`Im9nt64p;_2K4nA62N;?Gt&SQaMj!{7(Vm7aNgq|0}I#x zAY!|s)WXnbYC65k;G^4QUY*Ukg1VWKb%Ez8jp1;?J!S_W$~>IjZ{H_^LY^iW7m`@6 z#w=o(ibgyw(*QH2ZH1n1*OC&gULE3{s&g+pz+Ka2XPOJ##o)U+6z!1tn&lI6v6vJV zkK|wVU}5_9~f)}d(op>3)FXaf*c0N;-a=&f2EPQB{d@U4%00;<(( zpuuoKnwCJO6Z*qse#iKisU$LHSKm|fzN9vxV_bHOZs=?VyC}(p2?>*s9v7;zsaU~q zc6@tu+k<0>T)K+nr&wN;@ytXUTHt_5QRdr87|-+ROQkB~3Yw}VGa{rbmrZ47p`Ba< z-+kq~;gRj;)Y7X=?aNZ((uf(1XdsH?5X*6Zw=ZvRx4!kC<5MqqE{yhE6PFebrFwG` zgl|pdIk!PQv+|pPYw(epE6ly=^EScxxDw7A#HaW4H@)YE0@*qKI#^|ZhbJ?~yrAPt z~(O0PkBb<&fWP&BqW`3jvHp`1IZ22u`IVRE|S z_$XEd#$^$L6c2!)9Om{!78)y}X=g$$nOrqAKsAB7(RXS3G{~A)%4DzB#X)QS#G2LN z;;()SCSLlV@SwGKf_gN9GWmtk2$*8WlO3Q%s5p$_RR?YiH$VS5@VpPb15R2~!NRT` zDV&&xt|g+_g-DhR8DssCBa~+P1#gF`j&^0 z(}xOaH!eRulW-2}cte4_{9esij}A~nTsyPm-kQpo8FobnVB#-&{kXjEX4pJ2g6F>T zRdM=7FN3#i?}w$iaR?=bYHL0~`YEtR>aY%XK4T+ndgD9cD{p@UBDNxm0!rz?q(>@J z%Hxns%BIhZ(>lYIAQo$o9>$Hr6R!M z&g;T`9(*@=!lynCpSYML6dU>*1XDe;6)& z*7HKOZfnBqSg1ycN@;~&meeccX5VrBY2BbL|1EQ8K>=crqR-5j=ZJ+0JbL$$MD^&z zNEm#sQRXg$)LK5#0Y3aKe;uI@L2~*Se2Y`xCHA?gbn&H}50H5XwLmMII~?_@i@^vy>|q3MgmR!>gb0Ot|+&--!?1bQWMB2#g_yn)(=E9m6;-p{)xj!ysOB-Ocfz z#{iq({Oa($H~wo}1M_id-yR59Z%zo4FhOSZrYSI=y9o`qaZr(MR@MXP*a9@;FP+#` z5mXhRY(RXLHo3NJA`Hw6^XZ1{7!8VQB6Sxs2IgtCt24M8I*!kFT6Z7E82HAH8JK54 zcN8~0K=d`7Ux2u|0JIAs`tcK?b!-HymB5=IdCLCWSHY3F@OToAr_n1_IhyM z?N-AnuXt^I%M*V$jwUx^GZ&Q?qN2!p1${KqMJ*D*KZB?>9^DC-Rgb)HttgM`ppmcF z?jnM$vY2udwL`e`F@#auK_ej{2{ix(#rV^E{_nTJQ#ai{45nv895tbg z6-6;3glrNM2$)kI4>j7V`}-1+XO!P1S}u)0W!M6=p^7AYgVC$mMU zkfGy>P)gl*I+$wU^ZU+kQ3WX|C{Ge{q34KtF~ZOa_Iv#!`@>nZY&~esG|cQLaBh2f z3ys~-4C6%0K33vzwpzQl-Yan*oVWrI)-T?)9nLs?J^bm1-UGWI_b2d{?=FVX!7;99 zXcP0pp91@1L(yRFM*~~7tO~zBJ0JJ{&Qs%i{`7AkPHzpp5)HnB#x++pqe$S86$J+# zz8qGaa|p=if~f>D&x>scGdu9tdU1)e)a{^y$ZQ5AA+a%tDM?fe<_KO#$N-v%!SnRw zO z{^nUQzWIi@w73MZ>Zh(WB%l)%Q|q9TfNO|De-RL_@K-nSrz_p@2W?xV8sr`WsRw}3 zgbhFso9Kw#@{-gofC(ERP9=Lq0Jb)Y3zSlG%eY4t^0)hZg@)~PS~dM~lMFSc;-j_z zy+Irfhp@c&T6oyAo)jPczK_CxOx`1W`bW#59P}XeDyo8v8@i?x2xI_lUBvsJH4Bg2 z_O5VrG!ag9!<6m6^?_z!yIC4S4Il9|;e==qvE36K@}y*hlCH z1*!ry`;lwx`ct6sDa_xr6kqYfCD{MRe-)nd!T*30H&k(X*A6Tl?s68h9Kaky^Di6+ z_DaOg;p*P&ru-f*8_@0B{P@gX#QKGSED@?I#YF(wc`QrL7Z#NC7vLcxZ7G*c$HWF@W0AC$!9w@;S0v zs%?Nh1X@i?iURs>p>lj;m_n``Yij$i9v9FeDk!Q@H6eWDyL0fdJ3c5p>QkSDhn{yo zSlW3FjK(#7Z*~FYPdN`DncG5%ffGrhli|K&;On9R@dnVbo@uxrZXJis@+|M)q8Xiu z#B<-=yd;5xo*X?3&qCkT#?bK&>eqP;Q-%}-!$$AhFH@=S<(sa7d;G8a!;?PzQTW0s zj|d<5=2F193cWHQ&`gjY4SjWhauh?mG=h^)nSduw?SN~Z^tgD@3;#E?Gn=6|J(V_p z3i;*S0p5D*%cDRbQBKWAO}*__>}SphpwG4Kqah(Pz8Y$0Z~mVb#i@2Kxu-%^QJGd345EV+k456tEpqG#|&0s!mGw8Hb2c zzX>he?@p8Pp5J_5{NO_$3g7(lcc8!N1az{daN87`&TeE`euGWMq=M&9>|?XX&3K-l zi;no=b+^m``J5L6*_?x>G8f7nx!%9V0?=paIkY?!-&31k&_buE(nLtN{B?x<17lmg zz>_ksI)&WagLs12o89@$on0c752%#d0NS#NG&&DREkhzVN(n~w_HW|*Se6Tks)51g z6T{Wl><@2x@Z;cw|MRMN-YJ`6e`XR@f>5A3fE|zU_ZX!RGLS0Nd+Xvo-&ur99{M}s zX&?PC-0?0a$EBNZ#K57<@})*Lg(JkexhN>j&dRDkX7!iL5PhwT1CUm8={{Ho%V9x@ zxX6gVo5Lm)Xtr0c=F6@Sk)^TQ8Zawi9Li(NEkae#%~ESiri&5EDlFf;6VAN*>G7HG z`%t{h*ni%9(APe(`hQ-M{(Fuz#_H!J3T_ zN4OD64MyqEsn4hB2pDi}0ZXNgs)=P?ta^pi-SEC2gxd zDt0jo7SjHJsdG)T1JDSMW_xg!GO4K}^?K2`Zv~?q(!+)meLx{LRm!@qBS8|b(=3)A zpi3GTROaY)FQ{`+Fb6CW3z*4rEIc=|?Y7n@iP z(XWh*0J|UsK$mOVlu))MeEUc9@%7`g!ad&gQMlhD?;V%+?uLj#DY|ZXp>s-SVg!J! zfOR>B_#)}W;77YnbzYVJ-bH9}0B&#k$u|?Jp?SCAJA_P=r+e8R%cQ zkp5xL#*uK=yp_$Ny*@1O*#q}_(qrNS-}Etf?Y^_aS1(=;!Q8Vg5pHDATMILWdH>VyuO4WfIOA zaxf}H4K8TQ9Be!VzVW&5!Fzt`5pb{1{%8D^JFQD0w(Wc!3k)Dbdk04FVe(Cb?!p1g z-@F{({JkRF<)7XfZ+FKNEf}TjSe*^%3#%OSgyq zhU2l+8=3VAsn#sq$R|hS#!SMY95xyJ13S){343`C3)$1S4i<6xY%;+_&-nz>9+yyG zYGdp~9aSTczLKZ{aA<-OfYR%dbHscVc$OZ%)VE4?GuQLM zX1;RKqml-Z?R^nV{92hLx3X4)BR>6CO8iJzCsm;BuipxLmn(Sv(|$iJ{pIh&Z=Es@ z8;@BP+Jy!?2w@0sYIBZ~sYU;D(F^V32tIVvL^$UuPla}A4mYD@edbK@Jrh25MFDX+hEP#SZ-V>WIv(fv&=59nslxBvet+2ecfT9o z^Xxx{#d0R}XID`t<`mmU>1R2J)aII9kVCbl5(ZEhAlQ)BNV>pliA(dIWD?7hl~BEZ zZnGa6rE;tQ<5i1;CMclgz7@?;kPzBTLTGVfIQE+{ANGeIwS72>aR6xAmU3Hub0a?% z{hl3!*r7|}hG`~sCyK&DZZ)ynI*dlbz^J}9Q^!=c(lc6 zwGzjA70Qa3n9tfw5YCV75l%;K$kc~4q&9hCdTXX)Jn3xMw~tq5*pixs0v)CQsDZd# z$9vp$5FR)Fdibv=JS2Yg!ViW1`cp%%ho!z+L|Q4*(-qZrtj!xHHNHgQywOfnEy)`3 z5n&r4nL#E;No*C#vM)S(vUN|#QVnzYj+sw#PjhU7TR&ALl7WyUKDv2vp`}0&jN!n+ z2{?8*ck~c|JZ!48nTZV9nhNASJ4_p1V7|x8Y|^*v%q)U~F_2_uxk3VNAS#gsK>xDZ~r%V{9R^ZIV}c4l2D-zA&epnaAO}l6l#v= z&aSPy1;@g+I*$9`<{&Qli-kjO93)gAkH&jA6@y>{td~$K`K>ZIxw}+KNk~dQYdUU+ zdb9WXedp=i5&lg^&)#HK6i_b>p_tzntFnPGrs5XJ=&-^u8u|u<5`OufJ=pTGm&MmV z?s0I#H3t*qZyRh6mIS}`oYQhqW&-Jqh@XTr#a296WFuWd9tu)D6U(T~*rzbTPW3Zm zDmEu*u@gg(5A+eHlrTLb5g`y^0yr@76r`Ux(O-%;?%oKGn)noa;TN8eCgO7sl!kq` zHUnVmbB7I)WcQMUUy3kQE)nxJ?Tah{IyZ#>2_bOfKa)hx@ZNbDk9G^j>&@kzOer8q zl713)!Om;rAyhN7VLZJhT=c>h!R5dE*zoIHu7@-4Fd5tB8sb6?ajAiLa2)S)dI48` z>f>01k~O_ds`4YcJEDKv8Sl7j!Z^moafF32w1-A; z@)>KJ9MB2_ z*hLtZ<^<01lbK<`5uK-R1yKd}!{drV+$7S?I7xzp5V`*?ApkTIB1#BF`e~pa7Gc*- zTi{oZ`wG11%wL0z^OvWKJW!f-+&T<^xs6&{sX3*eD%o-x5^bncx4V&`UqN=tu#wLX z@UXJSd!QX-H3iQMfl41PgVC28v_SD9V9bALYQQq`{f#Gwi$C+N@bSm~a=hCWABm5B zz(hRlvmZ){pqX&YSN|(~>mBcf-kJ>oZ3&09La?EX)5$1oKq>>}Wxyn1$QuV) zEpQ$IMgr8L)Vo(Hu3i20I;Ex?xb<0yg!~aM1H&O-4e6yxV{0~vw-w7nJ^5JW!iUFh zKdU#xm)`uQu>R7I#|J-j8jd-30**gr01tl91l-}e55!MA{=x90&wM-d)}I)#zaw(M ziuz9^*iY9~Q=cxO-qYa`2_qNNn?AX~^q_G-ot7UCKPg2Ufmz8lE;^epHg5*=jC!Y) zgw4}mTnto1X#w_Nr#hw|CcY$PW}J) z#i>VF5wO(FlYIW<`xgu->Hx)IscX+1FihF>Vu;BpzkCr2qZKk%f1l2;R_%4@&V>wX zjt0N1OMA|)gy?nYtujQ!uC@L3TVU`0$!P_idd)d7RSVoHUJoRbe?vFn&-sPM}gt}`VzE!u*jDG_eOa?^z2kywBf+ryl!8 zXl_~q<>nsrlQi&Z&8@-!5COb^3S6q?5)%~2y)LRZOMBa^Y44|CN{0{0G@HnmT_maR zqmo_PDOQ?JqfeNioE1U1y5ytFVv={4_nOn;^d%$K@2yxZZ3~RqBOseMX98dMrl?lCGa zm>Nzq%x!Wxpjzdb?g_6OxP%`SpPm8Igqktk&SkKyuT+-IoV^ZZcN7m^K+MZ12ZLBt z8^X8W`Mv<}`~Y)_0{ZKYWBY+@{sbd@Z9EwRaZ!3emNCv%?2PuI%Vo3Y2Tlc)r($^S z4J9^p6qlB+hJu$U%a+VBDmCa!!^dRtV;M@|cV3{6ZFL@r`79ymnC)>(A z-4z#5#>~EciEq>1jT#alMFSlGSL7}1Rp$Y())qzVuRlhzMChctL9Uj1DXTl*u`bQ_ z)&MfT6_G%)6IlqJ;ReZCQ>tlG=P|)5-Y>EuLdpvhc`~u-DC*^dg#ByjD)xSeDqwzH zJSlZI;1Kz=>8+Ap6Jbyd!-2)surcnAuX)5D!d?2`g?jfYs0Kq(RmnDVv>1ToII9y- zcC-?`HcXanNQ^;dJSnTGCtJ#KCTzg;Kqk4Aam3Q!+6}pONU|4<6s+>9?tIl-m0jrZ z+2TrgK!>TC+kidJEk^LrWz+DrbBzg8UQ3n7ss}TyNSr_n94TKtN6Y!f>|l9i1_UIj zIgIXd;=2l$2#@B>!Mj)7;(48+^P5uY-K-gZwYhg~Ty1T{M(LCYzE9dX6wq#STqF~} z>|e9tXUve0pUkSO%JHde>|opP1c>r5{rWqlkKQ~5&3Jn?1Oa81{DGDjo~lNd|? z#0+fVvlIkI2O&0bP!8e7eOut1br-{Hf9dza=0m%no|}QHU#GkXbWWx?Jj?+*g4Ypx z0oo=#G9qEiqjI(sR(9<}k&8T8*2dQA!ua3R6rH>@4!UR2*K&ls^$}`(rF4!UZ4d1n z-(I0b$xijuWKAn^>QWd=YKx9INF0ueOX(!#FcIq7qVXb1e~JU(*4Av{mpTAa9<0`) zpb{St%@`Ol6xb5{d3J;(o%DCPe>~d`Skv6#m`EmIRH1;74L~LYRg$1~N?$J)YZe7nw?%>1%pFMYwZpJP6lV}skf*uGEJ)3MSQ+2778~;{ZxD9;p#a?tFyB z0FG1zK*mie&bD(BiKHF@$`~9@Ux98}qgT~Hwx4p`&a0BBYa1I5c;zpoH?1t|8 z#~?gpm*hq&>^;$8vBg@ht6Wer^&|{fE}7#W%ZssyBD00)#AQ?Dy*v7q;siF%lEN&= z*-XT;^Tf*TjF{Q&je10@Ru$S!zKz3RscI2&ji?t+oqM{27KFg_DuZ?Cz>O=HM?yzz zxFlUC76|*=Ozx7Hh%xlA_T=&m)C;TPzdh(L;Yn*Q3iXajsQRgm4fe9&k!kHsNKv?0 z7U-xk0QX+)_O1>cF=VrH@*-#J%8MeY!U0_gG@%-et;(|jL?#fQKwzdlUVFg~0#6MO zr}1W6+D7E?o{3+v(HNf1K?c7yLx@YQ6?+lZ1I5OaKCD+?&dVmBAI=t_o>iP1G5nKy zX}CDwg1Oby2FtLFHn?YiwrQ-|W%k65+Wl#&251h4x&FEE#|kk1gCfR_GU2RDa1t-Az1^2jH^ zUB};z94hI#Y87 zYS@Rbt%e(`Az+)8r$0-f?quE9(2rQNBFr>xM-!mQ0^+hjnfgN&` z+Hj&Wy|f_(NM-RN;@y;?(Zv!7Q23b~0w-V4=PusEhMD1@4hvF;Q1pC=J*s?A z^3QkHJimcgX>w}NOux*x#Dx&kT}rItQp9+}{;lxbJHG;6c8}-4V0#-{7(j`epAA{Q zT!A-GykhfS=WlI1O2U^%aW4Vb;S2 zXv~7w-6TC#?WL@~WUHx)QCuEPLA@{?UViRh!xOi>H;!+dhN`NeNa(6qi44;vTeL@s2;8`8y! zO)S;iUIuq;=~^-O;OdW;H&hpvaIVlF~lLoPr(9f1=f z0D?glGh@S&Pkb0KSEh#$=K&_xoYaP*!sQ^~N~Nc?+lAMKnLj(iBBlQ5sqbl98D%Cpgi)s6jj`8@u>a8duo-s6*FW?b@ot0fhkDmUsCqR; z1*VBZMPImZ7G|t&O#BRECsIjHNfkdTp}-shqkCRPu1XUF!(<~AUy7)X);Cqbx`djt zTaZln2^(}6iOFwoz?lER@cL9kkiAo}C%M_>Gu=eKiAf71(7|NW_#Y zurxXpd+ibgSW6hLapDs9MB52;wxML3p9w9+As?Iv=$~~K#C8Gdaf8{m4#~6eNwBtu zJE}1_mgycllk(~nHO4BUM@Ph*RylF{TiG+0?ZPfSDRPPBMR&1c%ED|$%LXQM%`FSt z#wqIc`{a9eNQ9`+T)CV&EM7qYm*6Qu%L*x?bgb7ssb_sUJM3-JxnkzaDZuIEsv3oz z2e!fkR(~DdaPQ~B#?cz$=OVRx<)(u40M; zG`NYTC^PG;J3Rf*aecf^IBC@nAKl_uHAZ(O%Yu|vVAC!2#d#uh&nj(XljsRPlV_BX z=af7BuCq~8Ou3KkEPrh{>|tqqC6>S*hjPyWn4CN&EY5K-Ix+%8H)7ltBcW_SvzggL zG6iBxeLdfX{i}Wf?)BJTj^Fvrmmszifi@Xs7x`+mDbF}yZzA?XrM%iE0S3zD#M5w0 zHQhd?H{yq>&Y@^o%=k$AOt@BnMl!0VDscj%G_^C*4K&%WKM8gPGleKNWsqmg(S6)zcSxcKlWHk%CEIUMOe z6AWoOk&&b(nW%9k(N;>5Lgrug;immt;a4_&5?*)j=fK3xSkQAC%Bn#Fj)QoncCApA z(jk^Jk;1=Gwx%5%k5(>#ORtehNuNctVzfDXodQ^`-vmTs8*v&LRAwfx5pEU8=133udp}JMO!G!3Shhl<)O>t>Q#4y z#XX}C`U&>YHB@r5WtZ}Mm{y%@TmF{#wKBwS{;&@ZeEQqNW1oCu+bk|YKh{u`H3pDC zOnW)i4ZsKsC=0Ah+y-ofRN;1_Xu_m<4zUntfjMTl&Dzv02n%(Vl;#|<9#0>65*n$o zASE)Ox{kQ#FfSY{rBwy?>Pvzl_8?%%%Cr~OOtj&WFMJ$6_3Af-YIYqd#3E)Hbz}Vd zV_x(3@q|Y`5Sq4$71m;C8w`EN5Sjwx<*E?kRKOB>5takQ!L~Vg#~=N9d-cUPgx=I@ z^9ZppV(?4^A!{QVbZ{)f(wi)X(@O^hwE|#OP-t|kW&{cINamd;E(}+}bIy2s{D<5B zBeXY_p$-+41(tJ`Hscx*Wn#!AzhMvgi~$&G0n{0&%fN2EWFYY(Xd7@*K2wN^f&kr^ z{DiJNnq`uk=BLad@qO=M@f#sa^f$DYcO=hYYDae!CgD*vnlPbm?DjE>XlHn>rVr(*YR zyw}7MgvUJXZt>LbT^z6a`gfqWYOMxw6o`)Y>41NC=bplpbI7bHRf?7+*k$+Rwy{XQPC} zsPyJnah@X9G|azsnDjXJXdS(fnFw38ET$rx8P?y0D0}#5L^<6Qcg9K1+n^?_sV0Dg>RXDIYBaP_PL?JAkVLo?n#e zOXDWc$B)ToT-9wz;;^1)!6q(rPZ%soNWXdg@~Gl>*q7`_d1Gp#SjN5ezjK)`+v?aC z(l5h1N`bQZv4nG&ULCH#_{Z^fbK9U?ePU>quo9-zLo{%lH>-HVd;nwiG=>^fkQ=V0 z$&qF^D^8WtVe*-yU7g-+KKK?{m{5+T)g~J==|qoJ!c@PAahNcH4O*>5Z5YJ{DrAf; zwPEMB-aNUe0Fbp`!=O<*R3&ObsE@FR$<#ZUQey$m29&!xAW>Hb)~6i0cow?3XiMsWq2nQkg6g zYg5k<=Ytrob(mL8}`_B!);Y z*>RkSCMU>H4LU#`=sKMV=NXs!J~Aoh(WwW9nHs zeS@PN*1@`M#5{@`LVT=B7s;C35pwBSTkm=krRBA`4@&J^uL z3+9_!iiYO>18jp^JF&dzsC5`RJk!wcT;!o%KX!T*2xD?%!A3QDE$Zsq))C5y0%i~H zfSs3J24Qm2Z7*uwj<0p07gOJbRPUhkL)W7iq0~Tx?lBbyP%OkaYN$V|8Gdtgroowl z@mD}R5DB0vpf>E(3-McacgiAbjDo6;?0`*ww^ZO4lYTi3#M6`+mb(DY7>(26nCv9# zAttZ{N39@8!jNQ$qShT8)yDA(WaD%>Q4BnVDYJDzJxjv#Sj`b^q}*H9Wd*2Z$j&T= z&-O@Fpq)4oWZ@12o>bTHW&{pva!i5wb_Nv`Ez4u;)ALke_SDQ8xaM2mg=**bV9n;q z(2l6Va(WSwn^GvY0BOLQN&igMRPV@P(Lq=G`^~QmCp$jBr$qM{65tL-NkY@H9%-aw zX^d%LqZZb00%))Pa$K6*hxGtC)I+6ldhqJZvthm+;RdH>N8A{cIx3}_iqx42HB0=w z23XslfQ27k9UA1PMT&_&%zBD~ZL$C2I*Qpo%Z+S2#d#Kp9xqET@%mz`Q#$Zvmt3(w z^A?)B($T4)+QUDH{lheDMd;ut^#w>SD@<#YzVBY7ni-WQPyrbsaD|j!rPgzm!b5ks znM=$x0-6&SoWl}0Hwg*{uwYfcvMv>z?_q+nxFOu+r9D*xVhGGxgYy01;J!rLNZ!CoG+@<)OsdOwmT73rfkKsK9O*lzUpYta zX$--RQv|^e?hgu2^G*!-NM9%DsEZ23a5pgtRRV0*I_Sf(dmH%CC%+6ZxeDjjY=EZj(a3~|MA(QH38oO{VdMg| zoDRXDUIMPkFT&}lZsCO|DilxvAxq)GWp1PD(waKd=!b5flX;fZd@HK}9F0Oc9GNoB z*JqwT2bVPG!g=(?2HW9`@tiO1U*7GPtIoAR!XlmW&Ry(+y zku0%%LAENoTe&+4eQ^ot7Y!{Y8!0@&f=Oq0A)Fq_%3HBER|3__DzxG%tKJ_iw zarISDP0czT+;Y&I)zAS$CZp)-LIQEwI;D}U7R4@BEEQn}*yUOdqI*f@#F|+D+>uJ~ zYVua7;W{hG6Znd_p16(*0#Gw5NeUOVtVvuhh=(=lJRX z41EsKq#u;}1-5C2(DWb{WxRX6I{xtA-yWd9nyIiW3BAR}7Q;&r(AaCL$|;`bT*q`5 zRG45E;haXCZX|dC>s+-376sGv011U9AA#Aq7_xA1hvO>xJ+lio9#SMA933|xmn7l< z5wpUp8m6LG)P5d&9!H@((ewkERq3rG-la_8VxNM$lA-bp3?y#E8^F*&mPYNmHR~r5 zw5Z@t?Fx)vGLL{DNYxRH1DVD`#8qJ2U|U1E>R9;x2j2zZD=&+8x&Nxz&ear2PZoZ1 z|4Fsr)_l7RoD6b2?By>RFfvxa>TO=iXdq0z$JSGOGhA29-Gl2Qg8!@2-r zgWeXBsd-k+xG1(v(3fssF|SD;8;S)#T{g2i7G|NESjw?P%5jYXT(qKYU1JIk2;@nu z=56$m+io_T5Bl&gyCZUzGPwnc>0`qe{^hU3)+^r`Zg<~FXy+GWk=o=+OojWQ62P{p zg#)DxoR|P@P(cPHwI!&s;{ovQItSy;$mfm`*e_#9HSW=0AE0Tw>Pm`HkBg&l*1an@ zc+o$?&hLIR6ti2PO}am=K{8`iRfOf6;XZ%$O!z_-0T!`ZDq8xz`!90?LQ%I+PEUt> zADo6Syx{*pm{>#JXm;rP7)_4r$>g#j$=v6U6}fFoCl1EndiBA0fZ>OHg;$b*Xp)p5 z$l`59Y`5%W+9W2a{PmO3l0T->a-?S+y*Pl1>yem2hg+?gnrs2??v(}MxD}I)ujv8G zs#6RYXZY|n1T^_&koUY(-C}r+Fq?a)#R$Ju0OKRkyfhcwl4HdVHJGRo!-WJ&Y6K{f zLpcF)@;LbTU;SPive94g4gK1eUfLA~v2RiL=tllxxs1&po8 zMSKRJ;}zMGWU)#-&NTZg)CVqI)*YRl>O#yig8`pwq4ExNx(i~+M4E@HA7HRGe(KMj z4(qOdb-dd{XOqu6E{!Qu+@L>&l!@iN@#VqNMm5+kn_LZeomc`NPay6(bseUDV{Cor z0;F^e>t7(Bsf~du_F#+ek;5HLa^;UeYIi3_;3G63pg0(ea=UdTu*lj=BysV0WwAMT~J{l{~E^4Crv>+zZ{_*#*kWovKcw)?#W1q3<0T&zDtZDeTVN;(+O%bonX6z^PRsH z?lWpg7Jh0^&G+DT<@y;jBsL~s$@;JiaWsr)JYX`OIR6p&`g5NQO|>3EuTS3JMBi1Y zTZrR5*T9_~cK>+y_q+uz+A{~^L&!@wX+fAOk1egjxQ=Z*4tF{8E^xbdeE~l97k?MZ zRVSd8k%Mrgj22sJWC5L;=afM&X3~o`T)LUnfL~GAL2RlnoJ?IA3LaeYKK;{TL7Vgq zr<8i8!oM+2fNBz(YeBGTC%r)Kg4G!4`bXFs@JJ&8O@_LNJsm2)QDB{#hYBF(I1HCW z?Njf}rpy|XTMo9*5!3MrZ&?bMKS3=6l0&?L2P@!m``#6KQB6nhpj^&$5>*{CqO*r0 zV$}>{evS|^Gc56gvIoWV$?)C(cx(9TpWYAdxcU?Ay&pCUQ)?z69vVd$)r5O8_%9Hi zAb4*5XNDlht1ZFV0g&+ZI-+WLI{^nG`HjifCatM~xG;kL!~~r4&}mrxy;sDq{^@Uo zx||I~HAOkc$>dQ%bLap}#RKrm|M1uGw0FJ{-m~XmT;4Z=&{h$~4%J|_*}6!Xz;SUo zR?`#k@Keu*tuMVWe(1OVD2B<6DIF%wpq8XF`x*I_JL;K*h^{c31xvz{kUo#mO_y`v zP>Gx9#L7`B4Ji6eLrG!m?9b9mtLDPOjgW}D6PL@7{5RkCG*uc&wPbRA<5n#Rmh3$m zQ6=s=pEkxtz9gbw<)3yH<@rl*RIO(ANfsT(Yi7wKVC2^Nqz$^SjL4XAEPLbP^=lisrMehiBng@m9O|qxbD**4q@_S%I3p<5x7Ci5}JhtIOZ-V#z(&S zmEn7vPKe+7@zu$55HMG6)TY><)FVD=Bn`x79O6t5PC4xqc);GpaMhEa7r*@e4?r<< zT)^wm$PqPgIV~Kk=Ehq=C6`gkyOc^F`GE4sa+SB2?a*uiJW z+?8cY^S~wrCOF=HtR$e@h*T=+L!=Q`t_i8~VMgmRnO-@w)hC+v7Ff2V=an#ws^q0h z$Cs2__;7Ly0ds7TRRw)Ymz$pi8X|g39bN+vSHq7#_-VNE<6neR{?|j`J`aBaw0FK= zy!OUf*s%*>e$PULgADWWT4g`&C-rNPrO`li*-5Oceam1}j7hD)l0gB& zRDe~RXW;k~0XD9>G3@)wTjH1B^4hRGw-k!mlau=|Q77l-qn5G8?7TTH9P&b3s-mx5We^1okPZQlD$%Sr!W=vu3PD6j~vFrdjlMq&PX5W5@qF z$}QQrxKh5;n58%Y(TLHL?@jE>g2$u408sfO!Xc!?O?1T8%RGrJh$7tEEfpUm|V|eyPirl|R)I_|lxkd>A2WU8y|E7dat_ z)NLeT6SkyG3=DH9oi)|9L%BioG;<6z;~K8~;77xiAN&w(KI?2a@xJHAlg@fTh-cg> z%oXck{@?)S7XcRLA&!R->V{J3RbXcTCgWF3uUw>ETKD0ngxn(v+iCzXF%1z7?rWw1 z%E2C(IPi^l=(Fz+-~6wSz~Y{L0eTx_F*{2YdCCfFmAUE1(qQ8-zvo~){?t=oxM>6} zIy#_9CCJLEgjKU;+}a1&)HY$_>g(X(o8JxJdGANVj_a=j7_1M~n&VOkaq`!zxXf#N zvOICST$e{^D9=3y7Fy}6Vx@Ru+SHwB$U*8xIn3@<3-RZpqos*3)2m^!Y@r?(vE+Ou zH*Btp%?Q#S$Q22&)ygVlIDT`Kih@cuuZh?c{>cI;)#mfNgE%rjiJ$|H9ClItoKr+) z#YB$b45gxWQf!rFua&~c^r{s+z_z}r2c{ib`3}wRRt%9rN~cO39;T(gtcI4OAURO_ z5f)TJGQ<+YXadv}G?Uz%;|7foSi%d9d8su$hVLiaL=VqKhBQBh zX2&%!ynb6aaM`u-<|{6Ph3(tPRF8(fspH8FfLy06k&%f)L?xjEGNlqe{yR?(_y3bW zhRwG>0S=B)Rl#n!0qX1bhv{p#!Eo2M_@i(9DDJ%CYG~>OfNEW+Rv({IUt-&GA{Cd- z&J;jVwPde!Sa#-J^LDzx+@0z+3ddF)$pwXz_g>2mJHwDF{1#m3IY{eH%(EQKr|=avzK2m1?MX)td@o4IfU2$^l$%#=xq+g zxoR;=GpZ7>hT}5|<&n+Oh&7T!EUEoZs)&QMKfMYzDrx(?(v*LvK-2^~68N&2d)bkTkp*buGm8V2?kz5=x z*S1hh&c^*a7Q%=A@VV)pRJSk19OFHB;)(!hIGk7wRkcAnpOSQzmhFPdxc-DLprJW2 zPCElkM|ESDd=y1fYWfglawia}u}+xf>lu=F-BXAdIpq&|UmfZu#A9a05jTFa)AA}O znqUi_keY%`SG<7j>y}-_j3E_2Ms@KBBLS-;3k8;un+T?Ypyn(kLq8V@<-k9x_RTp! z3b0TOP#8c~MgEuXk_<))#XLXGA-1leo#-Kf#8=XQWfRJ(o54?5bvK<yGoQnL`p^ywysidov zz0&oPJmTlk{Pon)D4m45KgORbLr-cRhBaIK9kFV+ExG%7I<0|nVhW0>=~&m&;e{%q z-u!hfjkWJCf zRwMJ=#TgFfC3OXB05$;k-*gb-SlgHj*!O}(R4-*oBGSB~D~!#2SyYw(mg@gUi~#D; zHhrvUgQKvmh#kJg*OvI4;d`z=uR4Pwe3AKSrp>cTm4(r!-H=imdPNaap=e%cYYO4u zfMy*rzwkyr+{horE{D2mk5AdH;uWMIjwY~m=99ZO}y2Q-`5+yl(7rOk)Xe984V znY?LO@>J**NHIoj+U#a#WTK|WOsEH=q=iY7tIticZEQ3Ah_;u7e2Y}|W_2euylMzC z)oe_qIBWv5IxD>G*r;tB!z2ZbCzV}}!{H(5RRydm$8hg8OX1KG8q0-wII+VF(1^%% zS0Nd5Z;6Esm7*db^X(Adt!)Ghjf9digBD!PnSVk+Tnb##y%*SAnA!_oda+hUlZ}C= zeTcCNWoTjSOEF~flAAn=sWEe3X>x^E%1zGma)|sD1Y!P0#xHyyzxeKP{6-QJj=DR< zj4NUOQas6oobm$2FRCOM?UGW;-W8z~f$7;aav&v1*lg*PLl6q#;!d(Mn(SmMw;00B zVq#?Ah}k1Q@^AC9h*m4gt`?Q|0kBN^!UFxBG*3s45i_cq1XOakD;aiH`?AA}!B2^i z6JvA%s=8i=0<_tXEjWoboagaq0SXwxa=SJ@WWydfV`?1t9;jdn!IX^4Zk@w^xvqzs zw6uq@Z{Kpse}oL+^XcCv6u1-VB}P&Qzdb4H=2wxe&HU(V5rG1f-4iE76#!1jy<%vETy1K`RMFdg$tfbh=ONm)FKOf zFnU%(fkRU=bg5!O;#M5lC~VQ~=)*|$BZ( z94T${knI5%6XK*k5QmX=)h9_?T1lGnZ?2AFyN~R;@(clJ8e+GqDy(0~~%> z98*&-#PRY$SiNdC95}QD&phL%I9e#!Hj?jc`7`6Eg2lwW=kfQVIou|>b=zdi8#J2 zlKNl82Vu%#7CfyTh*<`^qfA%kZ*9^1>o8&F&XC|Yvr8oLsR2G(kkEm}Pdj1CbDWOi z4atdT6k7G_<{ONyUa~ORS1dS`SmaE;t=ONHmHOix>dW=!m>Q0?O>CNRYPZIHw>bF< zv8N$muI3r{{f4QL{SZO8!PunAb7UB$M#1@#%Fj)`c-9zNSLOV*zT zMiLpIA*qHI)`cpr3jI)`JIJ??_9UbNk0wqrmn3%4U-HI<>^mZtKkb^fWF2u}BX>N^ zT}>}z=kY3L-)OcI^C%gg3n;LGn<}NJI4PIIX}*^uAW6Lt=D-6JdIeM7=toyHsVH8#{46KexiwKPaUI@N#hUF%SlB8= zY~j|9hithh*aLx(2tPteo_=%c5DK9>G|eK6mgitRTnOt{&A^`FOt{bL8^d4S;Q;KK zt3t0wgXhBL#tU7H)=Hdav8*muO%A5+z*tz^(#y>G)iBl=We8#RAGO#A6klhN>7wrb) zJW`oyh!q_ANfh@pX8?=P3|Aqw49B7T|F!q!L7H9FedoUSzNMGxo_$8r%t$lZKw@74 z5-JcPAj&o=VFJ*7ZMyqg-f~mt-m~4W2Vyj%jeNIe>3-k)-n;LoZmT1}@F>=_B!lRJECcne0s z{Kl&rfrYw1R9qR+!WU1IkyOo;9cRS3KAw~o6;WfL&vHKBUJMX&blG4Y=P#&+o!Bbm zDOPE02}$i3Gf{1kDswX~^icQat83`bJ* z?y@!`3YF+f%8D!}isE}DsY4u{jnDGfr>#3N0W;H+LF6<|6^I)#46!r<>x{gSGFRjo zWSvQVNghN8uMQU4`Y90tyF!%~VloKtv^`ZG=Xvq)br=R9yR{4ymWo zxTcN%8J@q%+b*ll;x7+|PwszwT;OprfZO1{aI>nL&s8hUa=u>ffT=b%l-0Ny>0cT} z(aI_Y^d~z(_A4d-lLE(n>WC9?jlaI!4WG+5VOw{bTWyBEa0LfOx2%@#18S3<(q7^) z7FiO@4~$4KMlhtPKKix@<1{X;Kk|2&Bg8iy8k@`g&3f=872_ybQXvG$L}2g?6m;P* z2hT`mCaS(VI!(%!4TCaQFwr$THIbVswpdn?{z=2*iB*!C8p##(fNJL!D`gWKlG79J zY(9w`mtVd{3|O1;_+#x_oeAHoIsnBi3_25``*BvFPQdn97qPOLJI6S!o zH*R0@KYPgv?D7?yTF#-<#ZjwmqBF9wgrP-WKY zI#}yNQNcW%$9S9!;Fv!K0K0zf#N6<%{ma=#y(8b=#hJz+wHUF{3C$u^H$2zdAy}YPc^42<{B=Y!$whTe7LH;h?3SNR^T|}-7rRO(C9+l+g5KI9APgGOAfZjH zSxe57?adq`&R@E>n3>wgH|_YI|2zBVVQ#$zn@tA2CUYee*wZ8=E7p)fg-MI9@soKC zv#r|in&`PpyPI&?WDT9t!P0sGr@VuScI^Eck~P8mJmky8Wv0G4f)(xyw$;2)#O;W(KrhrVFcy6lDy;JnZAmoKa|pTkqY4709=b5Q+l6DX zK55sLv~kgZtpQ}9b&O1+e$PfS6JpmoSBQs;`6GlUPiez)a;8*WPcKw!#5OfD2ZpV1&t>{Jy@OmBB*dPBH**JE(Q)Fvzy*qAhCRpVKhH4!n* zY)Hf@;>TETrC(-#bs3YNylWL6rjh8K3pPJiKreF4UXFy1>OUngqesv}=EZta6;>Ib zZUBrtHURCe2VZ5)U@+g#E`JceVW?aR+PcTy21Ti2< zKO5yNh(PV{LnS3EuZc{op{L7q|I^wsO3qlsghBd@Bsz#_ci`faIpy^jbwTgb! zE>wD3{Y?U<$^xXSl|&zuQE{j}d{K}ZW`eq=%mhZ=F}foNW5;Q`tOWC95|*4+SfZa; ze5j5{MUsqizz$sw2TBM+4FODfXrP0w23p(w;nqC7Xm9BrT5H2{nZweca7+CHmisMO z>$lu$4}WgMaIi9_kJ3!}vY--iJd&_;WkJo=^s`7;adD`wH|c@MY!l zos%9aG@!!7RnK9-n}V_}6q_E+IK2dWB}!#@M&z8OFWqF;hF|Vq1t)uR{?NtGfqJmQ zyUV!JI8>Cjg%SFpEw8b9p&4rCloB@sE`)qcfk=Dx2+~aejb>LTvFJEVF%rIvc?!NJ zX$X2$2*D%(q(sh7rxdt#hsXmm{Eg0wHN^=K8()(YO_Tde2TWOc!DQ3=5nj_QwOK|Es0z z_p?)*dA4r`ovNloHu=nG4~bl(QA%oHpX9xM&RMG@q-=$}07T>Y*5bkD)=E`q~Ec#|zHufs$HDZ0dbPh$hZFeEudtXa_&+pcgA zm5cBz`AzP+xpg?z&HR-IU(gg)59)GLIt#_BnXxOQkn0&tA-5dxqjzg0_0%cAiQ z`oyI6kN6oS?9S^%r!yzBiWp^z%S&cukh!Aue5ht%BzP<=6^a}XQRsSweD+Nc6c_E;>xbEP-(CAYyzlzOW_8Jjq(`j7g7!Ox??MPKgWx1==MFl#2ZWt; zQN526KS=ma3mmHa?ZN{}ef}F%|14+#(HWR=MrCwOMRPwgM%pnN$r9g&wbJm>DhCtO zJ}asWHv99%&Ygc17VDnJ4+uUV7@-F^8dQ&}oqqMI?I6HbsIB_PayXy`4KG@Td*o@2yDus2M~l9|<0%eJh8c?gy1W zi$7!0=cp!y>JFj>s1wX;#Kt8Qm&!O=@v$p_+1(A4%h)gBi|*Lzb$?56Ej(@w;5_Sz zL`ZPcDgLDH_5TGdZse^aJ6-jaM?Fk+9M*QUPeDo<6F9lt$oWOk92~LGE8)?69nnRY zh#KB&7RuhW!$lf5*DU#WOjHVo_Y8h}0WylTlcRX@6AJDbx+FmON8{?e(a<&q8s;@ns~lT$Ap` z>9k6pbbWz7@!S|w#Pla1Gh()ehsdqyAt+XuBtTg#LyEdH_$9HHqCUp9A^l|5PE8H@ zifZ;6gk>JoxU_-{YUs8LnAy7zvhE%@etOkEr~OU%!0VP_&u{>z`wphs zF=Q7BH<|KlF#7&1820=s_l5v?e&5H|n1Z|&FF4(zj3V#a9fgXm+o5-aEl_d{K zFQ{liGcoJ3)8E1m{%bh4U|r5X{y48Mi#mAps4MT>_1DF|T`#O(dQsK;`2Bg^E@G`p zc_Iz(kh&-pqilc6&|(0KUIa4;tEzifk#dds0F`fi1+^+ zNx|#NrCNBg0#=mXC6%I=c0r;rl5$Btd8{9cpiJy{Q9bwA0(gGEHe%38!a zgsLaOuw;E9V4y{JP?nB$_#!37&1%~m5^RS225JJb2O_#mNM43LX1k+_>LR;PF!GX; z$fh_6C5eO)90p5pb5ah~^Wlxl#z+&pRtT1x>*qz)A(jseb&Gs8?1ny}$kLHiq!+Ft zf@3m`I5wieK?%vK;KVXu!JG<>H8?0Q+CnVz8%v$U?{jhR7z#!|fd^OhVSBa?N4jU= zmAjYVwR<;VU*X}@S{W3BL}dLtJ--_0&W2*_bLAYrupCH(_6j?n%u{ zwGIy6E2q}Gq-e4tM{2h5yi;jWQ4C4kAu5b4V0HnC`i@ z(?I$N5X0-`4l4%7MA?q3d^;~)0p1^&1~;46&1TeCT6?3h3wy_I|M0 zLyZX+q<JojbU-?j5+}!`(sW7ppg1R+e8mQ4AI~JhZTbtb_yE z;ECoMbpZ{Vmgs<@=mhkll3?T|k3B50ZA25y0sOi04VnX(jSVFp$M%uXxV|s(_YguX zTt>O?F{vm5s!)cXz}I?1rO%MU7;gIy^6jUfFmML&BsfgyWGbD&W{*Nq)}X zl35k5_8S}1e%pbQ?uP6B49a={{b9@{#6PBjpyXr3hF-=L(v1{x?&2uqxZAN83# zcHVtKE{FyI0JnsHdofxB_|Njmdc$Pq8MohM-uXAXA3DwKM?@q2_rBi|gB9$KgeH{dIrpmX;c* zpq*eH#MI;4=`e{!#CgOqrjpW_IPA4VY&cOkl}W_U(XtCrVDh$;jgAPssUrT2f6>W@ zgr76vXYp8$+6tBx=O=NYkQ_JJVU$SD-c;LDtitB0PKH?O`DR&3>c@Z!+E=M^CT zM_oCX+Uc{2X$Oyd8=A6s7p5P>{TD`fUl0a>!UeT}nd7&9XY=CsestoI-rI&R%&PX4 zyYs>K&HzldsF5U>47MIF&eBy4l`w=RVM@K#v3NxQ32lM9vaTLWIUvCYC=nFlXEYSB zWI>zrb24(q__{o_cNs^7Zx?1DnZllYq zG-2b~;OT`eF%(L_8?}mfl=9qU*(@-J@dWDJqMa_7fZ8`cFDh6$yB+piw%}g(%1`>$ zMU!8`}+8*D?2-4{{CYNNv3^VC&`%IbHv~zE+AF%dkO3(C zCf+srr_|+2FIcB!!%z~lVg1aM+!gYPvY0#asO%*k6RRdL%M*Wr2za@RQl+KC$T;>B~qj@EcOJMv=mg`wBcK%=eB0rp6mts$(g&%*v^orG7t;^VM+ z8k+zYSP{?eW#w{lov5riy*G{ya&=@;5XBuK%Sa^#xzh|oV`v>!wT`y8@{dr1lQQs- z$U_&R&;%tGNzFsLF7`_aPCwKfJo*5r-zX7bypQ;z;`)kupspUJW73)|Wsk5uGhvZ9 zM)7A$r$o>HJ_u&?{D~Sm6Tb@3yI|6vXLZ2_`vTT4eb28=4K4H~e1yLL$Sf#a7<~pP3s9;D-vCO3$#Pk?nAmt?su*S0;%X_bM-Hn*nHIWD6kNRzOE&$ws_QnOF6Ilz zkOhfPZb1qSil=21Y%5HckFul2xUM3LCMFjwxgxLN^!hfx|9KC?jn{t?R_DPr8M0jM zxk=NFFP5lAi-__g@*RmCup%T*MslaK8e&xet|c!qkvQ|nTCisf5iauD*l#h!=7SbM zgpRrSnR@vH;fF{F8~n6tVq+$bJDH>!I7z7jt2G+C%rHlJtNJxDnj)V^r>2MI@QbT# z`CCPEdhI{vcesDxZ}GXi=fX&TJEaRUB2nCueea4Jii2zUU$>g<+UAyP>iWw+$cK-t z08F-nCBRNVUJ6qUfQj44sdy|{u0*8KAxH#_Dyg{KyxRG(bQ6|u3=)MR^}_0S4SM4h6Yp*|d0E39N2Ct&=J<^_nQJ7Qs&ra$!j z@n*^llwlC!RCEiw_KN5s_Zx+{0+>3SkBm0U>gLSa4!8Hk_rq&m@i90%*LHRAkaN8S z*#|7671v;Q8gnSd&_uxID4isnj%KXugKpDUz0~*#qQ58zV*-D&X@GxG>IW@=XgV`t zzG&yG$DgMhJWY_w=Jb_39%?eL*)k3G7vnEg&ou|0Q)jT|niG#K_ln)motiy;DtzSv zIRAd^DgRA}hg)(7_ta;O-1&-a%gq;?y%SY_^Hs(0?r*sg_aJ$#kPq<9V<92&8na$S zf`HIt)P`Iz1Cm%H%mDka2I-Hzb8s(EL^uZTh;1Hv`^mDf1z0qi;eFtekCliz5;p!H^VNBM^V_Im-Pzn$s@9iM}v#jD|1b@rm$ zZ=3E<938x9N10!?tLWeJZK$?&LQ#Vd3gXZoHMn4!;l3;}9xtF;f|ZEs9tKLNU?c?Q zL5v_;)lq_xy3Wjin~qZ10_(dK(lMH-yqb}uT^3_Doh95A1qcCDNIEA%OQf6LQAL4V zFs*~f_mg}Hb*3ebGii4~?#Dz65XPo@e(>Ffidix{g*(y_hset;uV7(i4_x}Hufh#4 z`M6t~!^{`;Kqwu^j%M;mykw(XAo;%0<`p_AayVTGrb+8Cpmw1<|0sVy z{JjeS`gzhAK-{2rXSW@_&%g6SyFWd-lE0>W{h>0eUGN7qvlGtO4e|kI=p1-MY0WNU z2F+2}E^bIRlu0WHE-umvSXCu?9;Cg%a)Wt5#Lqj_c=$yv)(AzaCes!+sLQBtN}@oL zoy&Kjd}y)v1ezy4ZN8T73hqWLk}_@?s;8>1QDs@ijUsz68bzv)qYX?XF7Raz^m98l zhCc8!21svK!OH4Rf8e!Wb}xO=pSs>$8__+YA*Cq^N;S;1Z5bfubj%>k^k{x!HJ@9u zHiS*$!%X`8Y?M@A_`x#Y=bXd}tkR)2!^LJp;gjCBp!2^Cz!(*Y26M z*{^j6aIk*U)wP@3%=>?N+&8n`zyu_uW7K}@h%$C{jHJ^Sg3Ko>(-dDk9#05RUg@C6 zPQ+L-fIJ3KQqz5GnKBJpMOPEvE8Z@ZMn+dPF^fd+i~m|n)v5$30*o$XR6*$&!VYt_ zsYyzj`KuwXDHtmGS%qLJ&wG!M%%ZkS_%2+f_NUM8gv(y{MR@TGJ^`DLwH#FdPgLNO8BQNsV=Aws_k8EyKlQ&M^wfS`l z`&}@*|4Cs0IPQkK^IPH8dhXD>U%ab7`#)U+Gww~-)Xf8@i~iS6c)z0yzCxMJiW|#% z!#26`3ahf3D-b^B%&N@q@V*idxHJqN}ocOR;tIKsPPl9`;$0GjF?nDhte;u zUIYi<^eOkEt3KuWCprKf%H>lvKic1kek_bD5)@?s#%^PlUgC#JhphVWC6siO`X%Km z{JtMuTozx#-GXiW|bnbcq9nSY}f7(4!?+*N2@H&UZd=2 zQ1y3k=(!DK!v;=1P*j8V8(Vh{KlZt!P`vsWB7dHk@q{t}n=G_==(lc~?oItUBFD48 z`|QSlcPa0G^)c_acQ8MPGfx<*lBlnup3?r;O&^a_6oK1|lbj=MLUDWK?I#qSpx~8Y zlsB_Yz|m_x&QC=VHcGou`!3lUbVZxg#!`C(CK3**Ev>UtE7HiHpv=$Q zS1Sq-E|)wl(p3xNB#4$cv$oS8`PomqYp(v38=h===wK_@RA8IHiNU%vXh6*DxKbAG zl&Ha+vY?NjJhPFl)`P&`V0%r?49#ga#4LQ=v@`b7U&K0TB4%7;`$l%t6D9A=Fd%Ee z@WiwsrFnG;(cyzO186S3)@ONL!KwROWk36;?K_*>{Xc}3yX*Wq|2*XkAYlRr|J@sA zHzxjz&;3O9rfaL__)0PO;`e<$I~hSJ+((4!_*hJ^5G6SV33(HxyzBy#Y!fSYkVB3% z0D8^QfKX^XyOdP@HTNWCQkq56C0Ki;a|GCzMC27RB8oCgNY*#4?vU8jqx&R{1=!>E z>m+lfc95xztu9s$r}8&g^TKt_n#RrdcKOTS_zAe?s?R_*hiX3;MKOkJl&S1?jDT(R zO6cROA|!+%I*--3MGv=@m@rDEVY>wKT>~DovQ{8xq6X0gRcY}?gRr!&u&fclxBYyp zLuTX^Nk(6q4$C~GCS=N?=VFJi3QpeFst4IWFYavqtv?Eddjci@lga=r6Ied~{Z(l#VIrZ_P^t-B?4wbDv+gknq{vAJDFTqc?U8wWTMxu2Hsx-GYJoyPQ zy*S1Y=w=bg#y`_W9kJt?MJJjpn+jG$sKsFCle}mq+<3=G0<>rC4&pNu#wJJNqlnp} z#wAHv?C`<-fUu`@aOuTpM7bL6jA1 zy`hM0aKzJ;P5UPpr5^FoO8THIdCFetUvadUrwMsKvaacfNt}^FC0{cU#d;!TXY=w> zEZ|%U6}>7_YtoV(oYQIdv(XsD-cbiE+pjDHIt?ThBhwaO=%&FcUE}Z_KrkrVhePY%h$=UVll-9Pqj-XC!9WBAY+7 z^Q1}wXGAyq_g8;PzuVx#ZK2Eyi*DtM{L5}7U^&>UoBORnWlI8o`x>{=)F)al`s<1B;4+M^cJK3e(j z@WX*{wF9@H8QhmueO7vJU5B;>iheND^;X~M!F$%Qr|7pxZlz&$>m`HN>5Pqr@6v4S zXDfS0imNv*0Gkk zkc63>UWL{L(#le4mKx{40(Y`^W9OsJkM&`_n_nU##=_k~@lD=gPcDv|XW1)~{;is( zG@VkjJW#LwN+ylwEm2h zwLLIRsV*nz9mn;`WZMseCdq1aoZFeNJw;j7IqR;c-y3!>LCm1RlwAxjcaF0;HGB=x+J&m-2UjO1X;=_olR=Sc zd^qv&y=s$1?1){?UUpdHwLTTu8UrHhxXcLeRJH2f=HZki z6}c}420n@THlJOg$=*bxXxIY9uJe?a`K3`YkN8RS%|@lJx(8qi72)yfk(TyaTfbVR zMSA7=s-*@RkfM3zo6~CdQ79_LL5hBbaUCicd2(N84&sMIr}HAcFbSEeCalPL*qNGXmP$K;fEif*lGk9OdQeZt1zgMQ|@3U2ND4$X&^Y#twcx zdJFWE*B!!!m;P&2jX?cT+X3w)=o#VH%d(Cv?=z-Kam_9y$H!|1t!$paLY0rdksqQX zYBpLTj4m$Dj%(`F{BA7^S^9CYc6H&U7_@<9FOYO7I?DV3k^%XuX^B%c@b&B|h4w=D zfK&V+=PA<_1?JZA)V7%a2;ees%zrW4zutEk&zXpY@2cgO>-dv+ zgXxoJ_5_9Bh>!<=xRvt$vsy2#n3{E*p7`@0S+=IU%DG_-)ZQ{%UJt$HW4h(#%flmc zS@3u&-8!a^ix1wPMRwfvxIx4KpZt^1JAt_xvLqIAFswVL0``WCSUju*#%J#<^T;GA zG$<)O=7+p&@Od85Q^;v*T`xN}H3dYkGB}?$XcbM~4@6g9sIu*TmdvK>t$#~Mxngbz z`0Oh0y`;^!EU6_E7R?SjIZtpRhf(KamXFpH&L4B)*;4m+>@ry!Mf8j%b!VG0dd7{s z_~i{>fz@(9<}&Law>(WtdpwdVuEesrlN=i&G_{Zspy?7-F~m^j26k3;?nP9yRX^c{ z53%0`Mb1wCW^c5op5Ts&+vp~$wakoz!=m;6Q60bKLq@m&9j}O2(u@!Z^=-Jg+w?Sq z^`%-1i~rj0>|jYxk3V3fE;ho44}RKTM={@WHwi1#fS$wRFfRA=!QOW2i z6j8lLyzO?=w_0Dln86AixBq=CFrLLyl4by?1K$Wh`JJMej z!DI3Y3Ed3z|1N($ipDXrH}n!VJ+nQzp(N*}PsCV_OF9s{HN7~o1stO_#3DI_rU;E_ zLd)lEG#_18MDgxzr*QA zBVtRF$`$2uU~4()aFgBLgA?(CJ41k<(B@#?5sk~C0vr`;pbC{-dNgmm8_tVu}l>WtcD*6r)BaOAKjP} z4+SZVJuk`KDEpMQ+_l`T%C#MoP+iTdjW;^6aCb>6YU*^jkhXv2lhR|?g;;RjgTSz& z?ZaOZ-*vRc^6;TYS3WL-fBF==Z)zi!wJXmH?*)W)t%s-`GW(ma$+8oRsrr zj=(hpA2-lXh<{&l|NP8UfO+_mjFBaWck33C%P>-YkELz>Iz_6#6#uqecTUPDy=sDd z5-%p0z+^6q0{W~dKU$$?gxBx1%L=VjaXj*8G%;d_!8^Wl5Jnz8f!H(^*=4q!*#74@|k2!V? zA109$>U_|C2faMORRg;j#3JS|)^Sgx_}ZR(g?K{%^$!}p_s{p0Tcj^$Zk99 zHc&3qURGDtEHjA0pNs!RiIL|~S&>~gjtX1~7m5$3L}s=eY@$epReM+XklSb5wfQze zG}^VO6M&K>_E@V3N(25nL(u2VQ8lJgG9Ub9JWfpA)xojNVB@%cFVocst&Am5Y7MmFHWa0uuChmj~bQcY7!53MAyOUrq?v_A+#R3ZpEKYC> z1Xx@bSO}4s>H0rUopWyA?o5{5_xJg~pP8hyThy`J(|xZV5D4U&c2)y{e4~8-?KNOn=dyTJL87`txT3OMsJyba7!oW?)EJ3F$E$;- z5a>{8MO6``xU{0OxU{^oxTL(YsH8jro$z$5EKw9IrNljn+H#~MUWjsG6gpN?Q4}q$ zuw~ZcTBj~SA9buGQG~HYv6$&+-L%JxOG*;OsN*(I`jo{$q*4Xtc60 z7SX?3$i8S4ZIMJ_1i~?>7okomh(zNBQ3(1dIwr#L5Z2vsT8?r&+HF7n4vwuvn+pGK z5z0jod_E&pMPby#(W=653}v*VT+DJr>u4)6b=4)dUQ%5gid7efp{-z?EtjH?{j6)b z24y2UrnDv)E=3&@F0C~h{b7#r+G~QQpJTMINHxo4wQRF>b9~6Xj=m;dr;OuN>^Qt1 zzBbxIcu#y^<~^{z8t+H7wrhVG>s3a|@cGNCid;QhT8Z|QgiEV%d?k*p42C!sI$Wl8 z9G74n8t1i?Df(;qC*|B+oiHFaDDKo{3*{ewSKBrd)0h32*)y=&o&kq?v?5Vd-L6wdo`@{} zo9)jb`@uJ}GvN4-RV0e5YCB~4-^{-M?8n`_&w!u*%9{3dJR4d6zj^;AvY&qQIRifa zi?aN0KHq!xlV;BV&w%4UiuFbCpN;>sKa1=c*o@9VivM_)|IO%o&wkYG8Q>Z4_%8$h z)$OzEf7zc!_6%%BXTb4~J%CyMH>2-8`%$xJfM>wtzdRm<|F5%c+5JB}5!rv)Gq8!D z0gwN(3i$tab^N$!%ksa8fA86kmpubK0}gc)|F_G||Fb`f>>1dM&Va{%Dd+!L{x_qq zKKoI#XCUSOOXI;rRhIwkPa=B;Hm5U?^8XdZiK^Oc{J%MU`Pt99*`I+l{wr&<`~Nok zUqto0{ zEdQIq7oPoy*)!lf10Me+S^j;eC0op%fz9F!IR0@n@2vmdEWYvVhs>UV)EP+eUrzoz zvj=V2`G4vZWlPyJu*seQhkCfQyeP~6Ci^vKKUnq*w0s7vs}GeZ|8*Rc_5UrOs%&fa z3~Xv=!1@0W@_$(WujA*-^1rEl%h}J9Jp(PDffWDc86ZOxv6P4W!*_%F)x zze#?@*$>2p|Gmx792f=@K|KIPQ zvFwQK8Q5gbfS3P|Y5d=X9}I1|o6HByevs@L$ew|XpMjMBNBr;Y|IhNj@iUg~$)15t z=M4Df|A`d;+3SBcoo_h%NwQ~P<7c2{|DWZ5<7X_}lRX2Q&Kb!1|4rw+%zl#W8TfC{ zfRF#|{=fhBf1|0c6FgQ!-=BeW{2 z2LAVF!0}%a&(8n<_h+#U9hu$Q(T2XP|Nq}=8vpI;_y@E3zx30d6X5@Hb8`cEd3k~S zeDvm{o`*Wxa&y_|7uSX}*i7;E1L-pqgZ zet!43JiK0hAP3)BZa&KTnX?Aa|MRx|hv5I?ac}?sW_^wv?_d+0=j8cM7s~~i4I8N! zZ+PfNM*bf*7e@l2y!21NFZ=hzTo3|0|AVn+j5*>z9nUk61MB*qj(6k!ljArh?H|5a z{59AG+7Amr+JMcd;`9IDzmA`LbM^oDS%6se@BDdr|DyTvyt?8c-3J%%Jb7yHgu@Pv z-h1-C!Dat5zhLR3d*|P~e185t%jf6a^VptwOCd`ho1eFI`QE5g_RL-K*k1WdmhY9f zl7d*t1Ty0$&GXa3!g zC6Dcnw%v18mhYZ>7so7jg7)RR<=(!0x12kmjqI9t%cHv%+_L{$Zh>ZZXWa$9{8dUef*84Q7+z5SRpYV!L2Cbm_G3{##z-|a+NvQnY`10BooM^< z=sON=R;n7qtEIV!c+~4x|CorZQ?>Pzy9x0M{ zs7PS1bzcPLy!~Low57-7_1bf2UbF*ZJntXFJ;VjR7O!j5EV%F|R2mO%Zv2ybe5+od zT2s`c-OSKwhn*CC|Jln*lTFvQGhE-*&@9X5td;xbu5G?&+tp1=X8hK8*Ob*ww@sk@ z+H~u)WZWB%2A>sScdZqqvYP`_pLzna*0%b1^ycy-fuGslc$ z*^U|ebJHzje{Q~cv>mU$d!7)3u|2YFaXARnx+8s~WqWyS};WDaq!Ze{O8vVqp_B8+mM#zRrmlkGAg6-O;}VG^K~On>zbl`^GemZ`#6ld^a55 z4Rvb1Zg;-MNzht1e~+IB?M*#S!h1Qnv8m6gjm^DJZ*kIkca2QS zeY4lf1KX`>x_jzxO*akwCHX&F{49%Wev*sIf0T=2KgfmA@8!bScUHbZ{aXliN-l_f zjsCCYf(Rr^`3mKfoR9MPkuSAP%VE@2zSMU188PEhb=Ur-oEP~*#~A&E*3XN44sGOI z=ySrKK|YnU!~c-8LZ8U#(U0Vk{P*Or-tS8Bv5gYg7k+VmQUZHZ`(!U$cG}|Y`!(Mi>rT6}t5f^Mf2=L%KtUjQ$qoZ_w`KYq_-YYt*T~vhrn0Cs3wTTJ7qd{sR49$R(&>qMG&8ShksZ`WQ3z zbGbN?A@R@TBFKd*|Bwsf|B&-5K9;j8KbFOzcakUedn+0H^Lhy!3_cD>NyLKIO2*y#^@5+8{kJJ9&Df9jCedgn{ z4jei9VNl=4dD;LMXDumhy7}YX#Mayy#+rg}g8{_J6 z_I(bnA?UlP0*pg0w%XJ`l?yAJfcpwa`6qII`Nwiz`A2eY*(y0Bu}Ur}en(E&;&rJw zcAW&kR>A(T0bnE_Y!pD8W?6+c!B_Td!$xcb?LwM;aCU;)*#xIuAL}jkyK#PvamA=p zGGEWNJI#JA!&U?#v_G_OIfx(lIV+E9Ztim$<_Twtl$^kL;Nz$AyKXz&!#*dKBl6nX zdco!Y)c?2d%#X9F@elUB7;bEMza1_OulekzZXyruuwL$;v##mtF019D=+AO#`9I~d zYRV5n-WS8)Q^>txpWHk4$ve4EXMID?{Tv%#?09vYZdm^mJR5c|0=Fz*6!(d(UkG1* zq4q=DGV4Y@f&K*CQ$ALoe?GWBuY8r93puC!Lpi5xrJSBvDHj&K0UNL)89#Q71dt;u z+&3wC)&^|AzhmEN$9<*-SF{a|e-}4+aRT|KkXu)7Nn5TR-+sLT*N$&$^6jtt%jk2* zs%9O+xFCSIp!~>WvhQi@o4TKk&wxB+V8U(Z<^?N^|IbB!a8vr1#=n>UPfLZg?T>5b z`6YSn3ic~mdfip!B1;;YWQ*SPRXoae}b{Be{99Dd|{k*TlV*(ot$$# zSvT?#^he;{$tpRo0s`*OE&l-gQ{I=e%ifpM;_u4&!Pn)ajxS*?V71zSf_t8^l~6EwyUzBxxuzgh4=0q|D~0i-uhoou5NVc zR8-&PjIys@yP*!T{*G%Jmo}_xzO?KYS%h5P1jPOy{04zKQQm zT<_v{&aG48e6(Tw!Z?_uc+5IBoi>b;Qzzv00&q$>-)dLCAa42$)25$e&WAszZ)f?u ziVvZUu~kPOW`TIvw^eoeLE1)2wsk z{QZ*P-!F!FXA_JKNWuDM-ABiQfC$U|t^&wEQ{a_w)o+&f!9 zo;}In-m?do^8_gw_JDQ91BKANPhH>G?JU$6$d5Tacb~jT*#O6X3HXn1I{SYM0)@){ zn36vXx-jkqUyufb@ z3emPPDMDYGkbT#Naxu!q)M^u48U7c{rM1B(=s4JfVwRnddzStD+cIr}$31NT7!Fy! zU72-Hz<-FsG1e9^4q%yc2<8gwu%_7;HlP6eBm!HU_(z=#$e75>!^~09YG(N#)1?4@X!KId|ooL^?Xiv#G zC{w&KVA(N!4#tyhBky?nY_RU+ta314{w91rcn9m0(PRsqi)36gqC&Cvj?;b);9QT zf!Y9{9SGT2z+>L=Z@E|gU774VTR?jN3BWGJk8Dm3JXe~FxmGyn+&y)Y%)Ntc*amp~ zmu(vS=jG(9-ya^`Y5byC^O_|Mjq<>pwatsLmUl(@(h9jGR8j zTf1}YV=jMD!o>EPXXAXEyvGrD#~Eu|{~P!FV8^)Q+^~C21=#ciF*oCGaG8>~!0ub9 zLn_`hTFY;NT_fxx%RGi{rk?62C2Fp zAA170qej&Vu5`cr2taslcK%T>+CDqr^zR*r=%F=;(aMi z8w!pqrm$~6YT5&qon3%N%n-D(gDVFS3#19z&)`3eeIM(N{V>}$Cdi92Ct7+$bF%*I z=H?LA2XaSUxu?zr)COp&&HcyYzqIZ15B4=TJ2bZKpv%kU*Cpecz9K4+MnbK z%=NE8e&6%^WM6ZAV4uF9ejj-~=kqVowRHM?=GRRgJv9f%+#2z=^W*A&)ju1)J)V_s zGHRGS3p}1x0Z}er2cJgHpa!3&{u(qmg)cV3vJ6Ho_l{`_6O{-Mhf;`Ck6A@ zN#XppR21L7U+u!yW`-8)y$y5DPdv z5VAIazTXq;_sP0n$i1t(vR}J0*9*C4V8GeQ<{{Lk|I4l4XWY;EzRvkA`)2X2vnt?w;j2}gzpWt4j?)yAXOyo1yWmpg73f#wwDOmY zfX&mKl)r>F2pByb;>xUZymHLr{NvGgDt)(VS7!Z1uugda^1Pg^0?x@gWMS#w<;2ow zAWuV{l0TRHO-_IuTM8Y10`_2;^xf@q2^@qu{O-R>;a;nya8Jr_Dn%$4?e&|eW?Ad2 zr5OE2P{uJv(1x)oStG^sQK#&MGG)Hid#{B}fWW4xb~ZxoLZbu`BdEY0q}u@S4m&{p zRV@Euu^GF~9TspJTp{ zwL7q{J|FCpd&cdC*}CkC&2t)<@l1v<+zf^`tO zlw5b}4cNc`2=e?_wf|MFsQO8+v@t)~zrxP@Q~dkc=bFA_pE-TR`_wenf zS781O-+d|=C)*y==`mRLjGR;s1}SCWP~|CTuvqpth|?@PdD51R{&N|% zZ3DNgtAJnaquxNCK%0@{OTl;P<3`AM>2f0_kIJ!-Kb1Tz$EZ9cN0&S(N5`OJe~}|f z9*`r$%jEdbjWT%d+t`l}4tM@WivIYm6#c=;cUmsC_2NH#C&hovlyAMZp!R)_x{)9> z#np>kl-G_ND%fRh!`V?cp-$?Ky3l?3L(S;AG!LU^TQf{D(7d` z_f5>tIls&C+qr&%@jhaGJVmKLu|mls%r( zC?D_1W8iQ(>XyOMN5LZHkru@Dfm8JVM^a+PQG@9}l|BS{5PUoN3mB(7AVM zNiq72dMSbTlAQ+?iOK8Y0UqfI=XkTa>cEkJFowi`L+JPYL z0OElV?ZE!90TkMS1CtU_8vuqgZ2;|ovjP83`}n5~(76C!tM3_&jitD5AkgQ4>56={`Tf|X@u%g_ zaMCoE{0GKC0wil_Q}kteZYlKN2h-S#l59UaE39l}c!y6U2zwFS=}QUj@(tpK zA0&jhAcUA8ggiqCbAu3a1YzU{!uwO2B?21|u{MDGM}08>%TXWqT6g`vcKZHI;XZ+q z!<(D?pNG8x2mJV9ps>{LHE$d9fE54L#chp$_$YCXSijxH;;IQO&$Q@{N znr*f{#x^5|qHN?gXv(ctqg+BU^+V8pNbD9lICis<=uL7^jB=wK7^U2xazONYq3j>M zPG!HywX$#I8YAIrWS_{@vRC+OIjG<~89w?U$=~Ti2~B%hif6rQWrY;aMtL^$EWf;x zs@uLG#syh+I&Hjr9lX{yuR&giydlMN-jw2P-+{p9Z1tF*KC9)p`b|7+qu>(=qfhgtz6wU)2@6HamdS*-zCI7SsK06S_Jydiau&}YI8*D&e ztMd+5AKFG@0LOp04E!fLcCr3nbLlL%)_*SNSCU_wb9(8g?=72xdv%Ol-Mk3b?_JrB z-22#P&R^&LcCBBp*R{T%dwaOPuWNjm?~{G?`-c5fFt_KtoxYyTAFZ5&=h8dm@UmOv zurm0=(i`Q_(i@DFTrY=|UI)2W4lcRICs(6vAK&xCL z^P%TQE|R?{;R{vv3|}C7hAxmjpm#&tf%yw%)TpJBH}^FOO@0dUqy$x-kl+-^AFrurte8%%fmn~C&&-~f3$ekUHeA$uFN92g; zLvncJ0XZyspDc(hgWM~JhL_4AVa%D4Gd~#mU}#fjopP5P2|1twuu7X!j(Dz98CsvVZ7i**|!*>=(MlNRaww**A2P>>G4)qwEvBLG}(_ zFY}A9m%W15$==1+p=>qkd$C=GWk}JrG9N;{S23jUCOI%?u?!mWh~(|?t`yFEMT#JW zGhdd%8I+f#aQcfQQRD`rm=Ab% zz}kYC#snfUjSH+zu>AYu0FQke185z&z(UxNj>oTWsyi1kz{qnBQ~ujP4B+u!Uejjc ze_YSY)0^8lw@cunk}sZJ(t!Ks4PTA*KC{2i@B20H=lA`(&o9&WGuO|xeOw!(xjx4H zFCaJnH~9RA;Qx`Y$DIG5iW`!<#g9ww)NUu)spBl!zT<4jOxeEE4B5VJy3FeY={OB- zs6$xx%iNCBWjnOb?KDkgJJjcC+cdOKmAM_KKu^&&9=BZwCsVbbV~pT+I!u>sJK&fO zQ#LB>H)A+%s?6yy*~%o<+v3=5+fSBl+Ckb+l-cbk80j!cW_MtHl5B%xX0gsP`sZ|* zkkTm6?lb|fJxUq|O_ebNr^`6Vm_ajT>_ABUbjS>CAI)~i*n!hz?4TJCQy&AZeb8GE zoB^3GTh&jKt?Q@An0me@%6Pr4am+~Q!S%DH&!F9<-RN^9JneA_Zi~FYbj%fCZ-TH5 zLCgt4JAN)uz1!@Oi3t|V- z1|UvwF#t9Ez4GofxQ|+iK!*-R9sv9Y5Bz3jps?Kf(AJ#?aQsKg+s^#o?e*zhJY~Q& zou&D~x$Bdc*J6*KuJu{JuQ@;G`x*E1nqGTtkGIE<_t0R@&*b~KpXW@?^}Q%3mUEr$ z3C;H(P_{^Bw`-8;TeO!cJ<6q_OH{V%5R&0Fg)+3dK!()h8$o$!4F&C1hCmPD7#)W` zZw!yK?Y4h#b-oO)g1GUhd&gGeb-eK$lPP>HH{P#VHg$7MfjPE{8UpS9M(Q<9JNpN5 z3_hQZ)xXKQmFhhEJ_==cMV<_+$d%#oJe3j9!&pw3x@-5euYFiN*NoL;^Km>Rk&iap zu4D6MWM#gLsVSE69l|oXu0*!%+)+C8-&Km{Jcrx>asty|()mCLaX^?h0C7MBaXyJn3u2luf&9^K^vca-}b|mTld4 zeBVf}^g&-Aw5hPHb+$WcsSSO2?bMiDd=|b&s;##@o|=8y@BW_mckJKAapri8!{=7P zXZ6aqtq-(c`j()sg7a8XfOASI)UuAVZS14;#<_LU1Lu5;SfTVPkH7|(%k+-LGN@yn zluciPoFLW`Fs}%1`>urMeIyasfC$zHqS#ju-R++e-Tg<2?eVk3U<+c%5yof_ux_aF z0rnq8v2MV5LJYQmv4PGLbY75(17eo{7~+4j?-%Y3iXYk3)awG|1h;+sI>S=x-ZQNX zeSJHQ|4>;?QB`FpH~+`NTI>9$YkqiZk%E%IMP=WuST-#7eU zUJ3s7o*wS{KHj&B>;1f*kN4Q&y>YnCk85JFpYK%c+c^{Y{u9a`lQ?i!v)`QqqYF`Y!akI7j(M&J zsF*s-_1a#juhEk>u_7i@y2NE8}OM#us#so_QZ_fN_E53YagnxdCr3KpSB5fPVg2EwK}bKOs`@8w=!kAKGg+~ddfKJ4+)>us=~FaCUTW`}{vSv{+yS2P6QmFHvL z@IDZ~(Si6KQ^>T_X?6e%q}Am;(>3*i4v32pPHgy*i52=)v_uxB8G^?}F^A4?Q_2ckQCDpA-471{>uD~d8s_ygkv z<_us5m@`ltfSe(0fXNRcFMvFN#sKvHnK1z70Nf8ycYI^A{ppwk^w@2zBHxPdA?)#w z{9kn&@c;JtJb}rPqyM<1x5&~-zaj4j_S^aShYhH-YyLj}zgX|(W%v8(wfr{k7v~(oWS{THY4nbKa5&)(s=b7e=s0DU6(9g!6?R7%O}!5#$aT4@5j0U~>Y<2Ri;U z*)Oqk0qz-&AKBR04LN|k30I$N_;0=U4D|Ewi~n2Y{NKj@`Bj0cz=En}7jf=?+sI#< z7UMo%{%ic4|L45lAN%|F`P0)COal+?_2e^KKIRWzm*gwEr0Am31&m16QfJ_^}_}{Dt;F%-fzj&7y zA0+>nOt;z`pyQwO|LUr`Rz3f>{O1O9f`Ky=Z#{Z1?(1_s=l*f$L|$-lXGXKKy=eBI;!4%Yi$!Tqt{PyV6P?BuwPW$^vTdGj}?+~fBKJK!Yci}+hL zV>~;6-yyj-aRL1u>zQ$a;~~}W`9+N7F^*|x2mE!GHLu{9_B5Hc%u#0wjx+JP^ZhN? zd7O^Jc<=RC{NaKMS;*-*ZlHe7`$y)IPDC>-ltL=oI&ceb#9M)DG}?l>1eL zWn4{2x^KNuN~b?0)#I;`+VPi5`-Y39!?<&$t~h6fp;Ydx%FD z{P&O8%SOmP%gzoA zC@Yp>l@XcKqf%yduaGGnA~G3kg%jI_WkPLG8nAZQPz|XK$@q2=Y3PJCou2)r$FTjR zbQbm!%tfvMxx)xzgvj>)K)#Uk0OSG~18{wid4QJY0KPnc@_(=-yPkyS37jZD2I502 zl=fD-7cj*?=Koc7b$qXAQ_l2#x1#^>86JE)r3KZci`xJA{r$-O<2s+@mDRk)-{t=8 zwSJiYGxu-q=WX`WQH-*=AOxuYHM@$bd^JpbBG&QoROzQVE3cFqTi zr5-Z1XM60GD3khlL${Mx-gX1_1}Kj;2F{u%!#%>BLe zT0iXj;eEBa-}fwB*Lz|4D%rDUFBybAC-t!+<({l>Ap8yTH`#)C+&epf-@Eef*Y5Yv zHe3FEd*Jv_*?<;pK?eVZbNY41b%w^e{Dyu0@u`?U&ENZMj(Zl zzx(XY_mgcu|0&iT^U&bk`ToHbK^e??hV;kxLjLO!2Mn(a%Ov>tNgc~&GPILPoyuhb z+QzmolMyvB8IXv{u-Z}?i@jH!haV_mTyq>{41hd91Zx5j?jgi=1Y8e{agQMO`Dh-{ zt^t%}@E<-TiRTyNxnj64K%jE$*8I)3)_VgvS8vw;TDkwXYk$Lvw&{C)_vYsNrmmOE zzl!WO78L7vi$S6sAcDW$bOm~U~Z5x zK#FO`4xaD#wR>YS`1kwwe{T;=46p%@E^gPn9{o4jHY{^blH;6f`zmPj?^QBo><8dj z-*`QaygS?CW8XjjP&J``1wrshrlNE$9tIG zr=#=-|6A8aWd`;JOa|{$AkJ z9Dq3ht^@e^cQJsUf8+p_|35W1cfme@K!;gl+XVmRSpTo;RLA$)TKzxP{xy#}sA$Hh zn|tC~|0(N}m*L(XSK*$%se60+*8S}DzMA{<^Y5q8;j53o)D&QcGax2^{No#V>>RIon{LakB<4I%$Vu!pFoR7SyO z45`~fBDmLCXnV7Nko=n*py6M0fNmYY#sIn&VC_Hz{=f2=WU@2)ubnccZSY@P*xKj+ z?p{A#3%B0t=3d}`>iTBGznlAmeS5v1?)yvQpZk9NYyW27zv2IN@c+6@sqBN_tmEJM ze`g2y`}EraaIQH5ZFlw{#l6M@V8HYDzTf%=Z5&76sC=^w-o5dLcjhC>j-N3%&-Z-0 z<(8~-kFVLo3r*f*Dd~f<+5p?ey1(C*`+@s@u!sH7Pf-(7WsEJfxdo28$kA*9Z>$`mj3}=4F5GznFaq(-lvm)@ID>9(+;pa zjb&>Grec0Dr7kWb+Lg=Ji9)O!T!{Od{jB=|!s`EV{SdDowEF?m_5mOc;2eN9fO&w( zq2T}M=49uy>HlZ84gSl(e`Q^(-v5VZcdP&3vfz(n?xO#nx^4shIsZ5J`ry8Q6Z`A^ zevtcf{PS5J=9zmo|A*^+FT^u3CdGRo&drk{WkDIj_|h`2zTeM2ZG!u~ro{m%JK*@$ zd4R|AM(ly*--`vn1$p=CvzvPScQ}Y2A18jtK+5+<4qD`>AQ0+m> z{3~DJiawt)I$7@($x;8^8_ahEXQftZgZa|4HYN=Ns%3UVdzm$%ooq9qy=*hFy=*(N zgKRqq8ZsO0v&N&Zp+>eDUn{dGwv(CTYh+eKwagq>D>KK`$bC>@9+J_6I46jeS zU~B=e5i+qsS{#D+*Dfa@!@5+-_S5TR&P2X$txT-1l>V4!w=XD=I9{U;Hl;t#xw8YQ zIf3*2(4Oy4j{!F7{}KNWMEpM*{(l?gzZ~-bKl7-=1{j-Q+tE)OFcmSt`1Uaw+PN$4 zJ&L_RyYTu!#Q(gPh@XGt0M!Qg*!TPY_|b^}u?HYfJ$bB&|6AvEKwkc@ytdWv|8e|J z4(>U23F7}{Q`UlibKRet|I-F=|6eNphYi5ry<-?QRx!2iD? z4HbwR@mm}U{)bxTH4Xsp={6w6zuE#X21sY$x&ligoXUw(TRg9Y0K7K7WvWamfJrZ4ov~U(sFUvQ8q4af9SV zR#?`0dyz{!Nb=%ZNnX+p{T)o5l4$ro?6lh595FRNbZEU&&WOdhyrjGT1T zFd5amgCy`8o$~`45A?HnOp_mkopiQVZ9wXK;P>KUe`g1V#)En-;hX`6|1t3YbHM)$ z`2CrdciMrO5bDgb&J8eb3dRrXP$jXQUd8$!?jwZjha>R+e;sXAYt8>T{wIbH8GET=%Qb+{U$k%Kz&v@;}7${i)xbt0eMrq&;{i`+QFW%ky=< zaKeJoBF%%6uRR=)S04z-iiaSN1mu;c1M=pIT={TSrM$mtu-tTAgADK1UgLp&Wf`#m z_WtVn3;0(}yX>3y`^%31ZNUE^wAd9-w^Qlkok& zW$=%C2)gS5-8!Iu4#4@p9g=6oe z|DXJuiT{24tN-`i=l^nh-Jf}$H}3gm{l9sBC;dO3g$@6I0p|Z>E8sVDqn4>wy7jIw(h)56+R~A<#|^Mfu-}8|O5RZ^r91Le|5k ztifxqfjyAJAeVKNr_UcO1M5n4PEfD;LR=>eJJl8M@x-IHLJTlbK76Z4Ry-My*Ph9f zSN@(OFaA9s&%zEo_k2L!`79*wAWk@Vj}aOR@On$;@wt|$wv_RgHwUo%BiBd&ul&RB z4}lD`{$Ke={67}{f7@;eWquZzP7~w>XMuH!u?0p?NBlpdONET;7?(2gzX$Fgrv4xI z5ybt3>Hm2zVcr)cbN=u40g(R${J*aMS5IgY`9JLc;rzdK^Ka+><0FTTy^H=I^Z&(& z_4!Os7ys*hJ{|w|x_|d<&qWD;{{Iu*|98If|E8Re_oq~EXgNpLL9gD2@j#*ceDfgLW@N2Y z!X|MJ#oWXItQjzOIIg~fy!h-)S+z1OFM<0NFXhO~F9+nMR|4|FtGV*Gmjd$CTLJm( zmp*dg*<;j>aNU790W%M#CCW$Wf2&-c{)-|YBtyZ5i9{J)F;dEYOc|HJ=Ryn%VZ>oT?+>&D=V`M>n}zvG{| zKZ;|Yze~$H+SI2z?c?3g{=X}y?1AxnW(~mkefU&x)d@Uxt&GWwmu)S$cv05u4POkO z+;~W?;S{_&u2sWFCn<*;5oikQ8!Nl9o_4R1VJ~P4niu5A8qNv$nz!_qIiuPszXPoe z7#uH@F0fZUaXsbJ&&`szKP;A)Uc?+=ML=GB4g9~37~su-Jo84bJc{~9YwG0G6Sfj; znwRC z|6u<==LaNbPT@wfQ*7)LZ8j#z+y`{;oDc1OKz-8UhfkPoOw9*}zo2Ehh&%?qHtR^Iz` zg1r0|eE;h?@&dSj?(Km5{hfe3{cb>>d>1wVJA|6fM` zUuWk38UEkdfK1=N0sHh%Zr-mp!TK#P4`5>iXCs_l*g!k}asM!I&$)CDtfO~|2IZ}* zana)m`LY^5zlrRVKg*(!d9bQnlW)HqgF5&W>W#^t&_~Ja=W!JKdd@Dmzoqq~kQ?CN zJ~>C;zjjMqC+rgwj-kA80v-Tkg`#@1UfxqSI$zx#y@LuHV zYPtCE0h-Srgcv|=7~+{e5$yY^ER&btoggoMg#6#i9Qpeyun+kg>Q6$R_$WsnhD~^9 zO?z2*+(^wI490#u&H*y{_xwM&_xQ&;N{auO%*8d#;&i`xv&pzwV#{cfVzn9>7AF22s_x{8BpUM9_{&A1)4F1WwivgVW z^Y70G_{(lypgBToA6#21Pw3~~mBBxAU+|lQu$IQ0+OfN0!_ze#Wi{D9GS|fB@W+g~ zDV}e4KHSf((xapT-E?s&hg@c$i@lgHt`;XSOmdxVVIqEdPyZZUh8 zaX%Hr^4wc^jWs9PK4Cxq?A8#HZP4M@PM$qjv zF?}M+l!Yy5ww>e?H^v>~w0kXT_jlai`ZHnxzOO4QmG{9F%wgi00pOo=`n`4< zET63IDUYuL`=8~=U%vqNi20X89)&#od5$cDO?aoVr_A4Ru5f33Ox&)xfz{vV?G|IGQn z=KtI?zf$=>v;N2VKm9*`H_CrVZGis9Y|L+dZ{~Mr;(-+Zj%UaH?`wO15w!!>ui3f5 zU@sQ{UaapYM{;SEtYMDt7_8+x-kl$Ie%bkJa!FPlr{vhr_Q|L_ImMQ#Pu+;Pu}(W1 z;a=C-1#2&oC+3LY^**^_jC3l&eKt6Ur#-`G><)W2V`v9?=j-wENz#xc;{Rd!Oea z1|iR6e_PcF=yXv#VCMs~sWEPA#{auKi{}X=?%(q_38nE5-|yc8=vxC!oBxyl_EXwM z{;#x}{JZu4);a&T@&AnY3FGd@{QrKe|9RK{asBTA7;Ha!bDbjGu;jrkswpGa%G{$+QdZwVZbLz}W}n0QtU>cMX!+qw4g!p+TC* z$8$cA0~pkyMqc@7qC5rWpZF?QmVXQOzXSJH9z^?numMl456fMDnVIaEo1<$8?m7VX zeK6lo(eDU4jeq!m^1uBSRT}$eGVia?0rMIUKs)|Nlm9wiUyb-5 za#_aw-{aqx|1;}<@c$La|HDrW1M{2%Y`{M4fZ7Dw1@i6$Yf`iU^iNK^vf74J`w+D2 zShPFM*gs7)1}Rj(cfd^S>$|?YtYxn6c+9Q+ygUC({yg?<*|AA>PlG?EoB=r#a+VdA z&&)OTvz-pa9XeY<*GeYM8L%{z)Uhjuk zU_fm`UjB4TdFltu`M=4NM}9!g@1HsH5cGpTCAP11llY5?=EL{q59}qkf zjOSO+AHN6n`$juEFgy|R{6Fvi)6gy^JCJ|%{Rx@t{66*svOL#nXA5*L(4|ss!5HKL z%Kz{p_)miWHHQEFnk8)a|3!X>e_a1(;{V#|ZG``-0_6YN1phP2jxqk9^MBzE<|GR*VwlM&0z%a`{_x~FH zOFaIScgH-r_oPzG&IT|Sz`oJoziihRvG1>0g4p{P+6V0Khk3t`f6W0P_ILCDwERE# z@5<|cs~Xw{|K(MP|Jz3Xe@glB4R_K1PhFFm|J(eZ;on^Q@6Z1&a`S(i|G(Jh|8@T# z*8j(G{ZH9*{PVY#5&zTo_{8~qjR%xv#02^~H9p_-@wUy?Jv-o!4_q98_b>>1XFJ4# z^8VEmHILWCc$z+ye%>)p))}W$yE5uYE$1lXa!$U;b-2#&23-Gl6Rrci6({c2-buL) z`gUxhz8(6`z7Q;^+<|`9Z^K%H_My&kw^3t^(|irK-;B0faGcg%d7$aL9mhPkgUp}W zN3Zc^?vMVz9`{%2i=6)JAM7fh%RqTw`pG+xx1^7}Aw8jcLHChYWefRECdpM-?kF7s z$blvh133Qa`|%xU?9ce$+JKb*$M*>T&+B-1>|y-B$3OVq4t%R9>yCfp_Zb7s?N%j| zI>e;?zRySieAE9I?~6EqvOn(cb$}7Z0GiF>Y3jy&;K{%KQ#w1_nP!`Z+LgMfN=oJ^zTM{^8gp; zXY$W_i|jKF!1FGH0U6!3Qog@=lr&>~ulXdz{^TD1+2fsabth+{>;!Giv;pVm$lKSA zmE-mpF30XTP>$Gfs2s8LFgbkQP&o{;VEZ9*_zuHl!4A+np=}2v3+4@y!?qtRht3<~ z$%5^NqC7|zXxm`)50OK*8zhIIz5x2Ld4r)@9wvuwHynR!l*}8~SGFj|+MVv>=bmQR zHQ0e3_-qpfb(GUjo+&3UoSi&*;oRiOCvBTNW#Mc&<)m%ol!ZGbPd#-9IqJ}9(g*W+ z-Ydkg&ln2l*XI0E+T;Pe^*@{cAK$)2`KNDp{QKEwd2ToGkMqoa7X!=z|I=}=gPVp8 zmA(hRqc$Ksf4v0Z|AYI%9#|W&Y4KlG)Y{ko-TL2*isKrVfPe1)*ZiNI|6j?uznlNN z{J-Ph`Tvag-{t?g|F;4DpZjiyA^+!c0LBK8=?&umGat3wlYPs$w?0MoE$3-|pWHkC zT|c;RIe?)kcg+vTcB5-$?Tz)w`@yH5!ud6rroSiWXZhr8l>LG^dn03o+q=rn(|QRW zLMe54J^E4JAH)go>BF*Xr*^`2_G@1b_8vm~eJvf=k>hZT>*M``$h^CbkNccWxj^q7 z!fTg#eGu0KDV*<6+`WqU_jUg;&XKOMfPL@W`ux80|9<}KVK*jV{!jl;u08I-dwQ95 zE7nf1e;o3E4-Tx9=Z18b5%Zsxz!7+!&)!W^jQBqY{)31CLW~0rGBH4e^8gzIgw6h+ zWLNtCs&Q??|3{hsZ{_=casp-zb;pX+8}3s7zt;GFcm1!j4;x_FPsRV=;MqU)|6khq zzj^LA_y76%XZ)YyKV+GA+&fL)Hzp|?kjXpiCO)w90>{6N0fxBPAHIJW_~(6b_L$ZU zF?)AekGXV`IXC)xa!=OJ$&hnVw~{;uwgPd&57*brI6TWtbM9D!AB5K)LXcV!>qh?Dw~h7xXes=E8_EAquQ;Yb zumAJne?I@qtpBG&F8{az)pOFo22%~b*#KU5TBh*U#xt)vTCwvd^EXqV%jXXcu(Ze&v1)nHx8P7 z>oKa0|E3T3ORC?D*FBLKW0<#NagH=rayA#SfBGE2uumI6{>}A2*vCcw?fl>HpW=NU zc&Dh}$NnH{udeM?G7^G+IPWLZe(o%eQR&2$Nen&hVA|v@NF2&ui*3zxMI#^=X@*ZFyU_VRzXz6E;@{-|Ise}Y z@qfzyr&w1T0QR{*IL#iA|L)|!T<#lICohlcA*J0Jsn1 zeqhDqpJmPi>>MDBXM}P8pXUE-+Q#~StgH&x|F-V+KR5rMnfSBD|NiU$>HjyJ|AYT3 z^W0Cy|BDlh|3A0ue~y25{~x>mAB-6OT?}AyOX~OWTiclb*L`S?bI(2)TcCT?U7zLN z*ac%BT%6$M|HE;;i}Jra*Z$+O&gSxzZ}RTs5|l6X3G0yNi@-nPfv<1rDgEKc`hkBF ztJ^po{PJ(9El}QAHh$NzYx{gmGymrNa~iK3j4|sUW_-$rYyM9ErsKM0ZSs7^$CG;} z&Ze3?jA345GoKAG{@>jHm-~Mi|2zI2|HqmCv;2F^TlQI3Nsj@@xS#W(oYVSP*SH^br`6xve$KDCKgNtl{15&a|DU!O z*5Pidl=aN_k!e5gi_o?>L)Zpsz7%5-3w(`ryaBk5y3F=GkuJD84Sm`F+gw&Dvjj3^0uQe{ucqY`y<4 z`M3Tb`8>xs{XLmi?wtnr+GhFRQTZ>IWh3k4)vbEUOCx&9%OiTriV=O}`BC-q+Q6>z z{Gfg^X}`Z}PJq`1hT!u#4`2+yGOqt=*7<*R8(IG^Y5nW}?*9LC%8nn${QolE|A+Vg zboc+Uxqq|%$LoJKYIc-M2OzMjmx zbMEYbi3f(kZgc-X_y3supW&amzn1v-?11u*`;=Qdup{;i(*NI&y~}TG-2-!gp0Z+8 zZ+Uf8UzL|e4Ukud_mOu7bd>qKUL}EJkr(6~;6UsZ0{=nWA2e};-Hq%2JpSGMpL_pm?ESxN{*TZ8Q2(#_KivCU`RBdA5&u^>{;~hRl>7gX|L6Q4 z&xK_y>BamgYhC@mzwCa8R^xZ;*#eX|yCMI7)ok|gy1nfx369FyeGlpW9NyYc>&d$8uQNiKbLH!iK8V>S@` z`i%c+TYRwxS=RB?R$Q!~^7n>$uda3=#lG7Iv;qHi{;&Kq&bMN?2k-Fnsj`a;s>JdC zz?OCL*61FxV#}WL+LpcL^)36z>s$4eH%9e=Js2R*kEoaT`?Zr(W*j3q$BX2`21E{O z63zwm`oA-fE9}@d^8c|?@L%1vOHMkKew4nFxTL0kN{)hd)n*X=)|3u{fcj{5CYkz+BcYqz>9H0F2`T%1GP`2{{JuKlXjQVKdsiBKxF^* zdjJ2<;6Ko=ZOs2;C4T;MTlw{Wi2up|6x{y<@&Et8|Lgjn?)^{A|J}X6{r>+_@?T-| z|33fE=l|*cpAGo;*#XQi{Wd^rt?K2&ft}>xk>jP?QU8#@VIozBt+&trZX5Ui zh#LRjHGqG(CupnYe|p7n?3^iu3;*IelNm|98OuGp~0on0CBhk2>WBE3Qsk z0BPn}!~To`W;<_HU4I=$`V4^V1|G(ez z|3Bm(xj*LrHTLJVzkdF4@6W{v^8W>%|M3~(|Nnr0a=!upmVM>k*Z}$*@;?k>?0{R- z<61iA5{UJ;D8T;PP@!CL+9Z)z#vySL7gs`pn#}uc zLdpi{>)AMfex3HQ17e*^j>mmVpBRC8Oi1MJTKV>YakATtzPi_U0Nx+jXDpDi0kl{4 zb<=b@^L!u99=Pj&W+VSM2UH?Blas2qD1GxX+=l{t+a(}x1=i^`Ve~y3b{nPm0@n7))_W#2FbN-M0|MdTi z*M}$I{~;Ul?_vRK2gtn7|C2Ay;~8rkf1al?@7Ug5<<(`|h&)v->)@ByA~s)5pS~<4 zOBPSoy}rXS=TGM!{(tXYuoK{)bN(B_GRMI7+ey}dpD>Hqcp zsqgml>Nqyq_;ABmiua5<>|ct1b6l#9*Cwx)*?x%g$M&d{Umuw+jabKAi(KYf?qQ@& zd!k;hK6$)!4HZjw%nN7(-E;pqC!#IzUd#8Iv@wo(zjpj@gZcj;JpV`izvJKM_sPB! zk9(g@*aiGg#XSQb9^F|!Xn^k@+Y{Vl4*p{nKHDs2k&uyfb!dzD||gP(R}nV zOR@iVa+_HHkCi5{|G%r{KR1W-fY$cU<3D~}!_s=|{}YJ+b^f2q{d;?V_1d3rkpJi2 zpRXW(|Njy8|B?T94gXyK*ZAMZKVks>rkt30Kq>~Akl4 zePahq495HagmAxcv;L?2cQF3n#QiCM@7Q`grmoY=PFTP51yY!b-?HqoF5sYhL%q0kTy^htcFHHz!B;uCz9$-19$TCGj@H z|Frn=<8}QH`M=BT`akdgL;s(O|GD>%^Z#!kU*j3TnejjPNB++6@|zBtg0cjw7!#_G@1 z$)zVuPx3ms5mlH&fESA4KUYrQ5A*-~1^|7~EJjNbvd)5=}Y6j!H4fAV&WMV#>U zgNXmJ|922_4`f~6FSO&H`3s8L0BXm$)2_{qGh=aG6gcxA<9u-H_!O^$asTgucxK6` z%Wy6b$E?S?MDw+{mKpI$@&=p_#x^(~YoD1UN9;aQpAo?I3SI-`pARq&Fy}iJ@9W>i zdvp1j5srWB|0i`Q)%bsV>-!z=%&Y|2^=(68wMI(A!EM z=svOvwm`MEvyL&a5$|Ko@WV;HntwcCxQs3s0-+Wr5r z4R>Mw&;0*o^#5-D@Am(AbAR*f-^;M}pEm!u&;Gv9i~q?#pZ|^cAHTa1HvTvB0Qmn( z69a6_|1-xmv=Y~raSTaW;oq{XgEL`hSdP z{-4kPCI7qhs>VG4P0o+k0y}Amf7%7wfL${@>4k0{Op+Pq6=o{@>02!9U{vhB)|F{~u1b0puT&$-m2|4X-Ye zo<#xNr>;mYJ!878{l{?m_1S=Y|4=}F`D?EHvK;<@d5-)7{u>|0@BHl%vgC?+(lb$l z=lKR?coltEG5!WLg#N#CL9U!}5Z3=5hW{rUcY$d#e~(Y@MLAQ@pIm~muoK@r(oY5> z{vU*U?iim>-%oboOEZ}U&*^QcI$0m;c(-M*?&IHoyom*j4d7?%S`d&~^otMv5ix&9 zSDcxtcYPX~^YxrzL-#;3M&{!8fp-Tt4}z5YMF67fIg|I2j!KQ;e1xj(M|o4x;6 zVDCTU|9?OKe^1V;;QF8AAM5Xk|3~2ZQRn}MrSVTY0RO{$6gjFi&$JlVzneVs41C-`RCI)^7B&x`T5CQ`H9@W7LlLd*;W?pI!5nzK`zNYQ%a>y3pn44<<*)&P6PabKNtW{JFr=a(X$S&y7X^AbGE z2)3;m^P_c)jUK`Ke|waihG&I!%*&IWA>RLs`v}ZD%ftaZZ|P$Ee-ZZof`8=yCSm^n z2l#)^={NNIj{R!wbGCrvl>e?3^4Eqs`6P{h!@P1o!Lkqii6^}(ri{6FUYSK0hO=l@rde_Z#^YyXsg>;GHI|D9Ln@_*R> zqyC@!Z^%E^03c4Q|JN7*{uAsEufkrlsM*VM#J-c|tFLFuSO3VDl`jS4(^vE4%M}6n z?!{dB;qPGoG5n@K=_@Zhy1R_-(^cw_AE1v{e-9q%^I3MXWld1J7Us!W2V?&KM1?dm z?!OOAkoo%|m`ix_7nJ>izT~~eR(!pDfam{*;`P({b{spF{hDPf_{?6}wNY!kdkv@E zSW{uB>j!LRSX{Yd%YxgA6vFO&7iYcwrGUKF3L=|Mb86rXcFKhw%C z^5kuEWjO8^&SSVfVD<{R7yy5VHh}gRYqcK#i2ny8{-4~D@jv{(<=-*RH9_Y1oOtav z9{3|-hUvIx@Z;m_L{t0o|}C-YXw{69SDC7(|0CI0~XpF%zc|DVq6)BMjv zx0d;p#{UOedHfIlx&GfK^8Zt-j-7ay<$saJ|7P!x-~Vgw&tCh-`F~pe&&B^<{vZCI z`~Sc{WBQSnf3lzAAM1hoI|H{hA?c1eZGBC(EWLXd`F8z4dFx|5ujZ|Qta>L$K7#)2 z%{=++1;qbv;5Yr{G`ZxA?WJom_NO7YHL8~U7=KUpH{ie4@_%R_tQr1)?7elAT-TNM z-2z*(McpkmGqbQ6)M98sgVbVZsasNu!6M5f$FVJQ5@Tr1th__Xn~8&ynM`7e?U*5E zwrnwDtEp;#&vW3`ty0UAdB6FiwAOg7z0SGkLY3O}+t1$noO^Es>V@PTOoMI3`oEz? zZqcJ*pZ7O77IDCl{~Re}@H}fWr}@{q@32ds@J)PkpWSa;!#-mol+z;koTlV%TxcnK;*BZr5mwLJNWPX17d(bp#3B2B>#bb<6j5K$#-j| zxuHlsN0{$Gr$1rMMb{ZL`}|z`=nxtb@7N~yUrn(F{-Sy=l|-7|EEWQf6V{; z^xwz7zW>)3|8woH<=@eN)c?NA{9p0U`F~UY815 zH6OoO#1X2#h~I80`>+c5hg9hQUF83H=s)9r=%SE&<`LwA22T9UjC+5NW1*i%pUwyW z%>Vls{H;cw{V0r1Q8 zH}usb@LpBU{})34r=kA0#OS|fT-W@S{u}lg>#KdXMGU~20rmf>Nzi}r{|Wg2oZQ2{ z1nc`J=Q_-PjcwY2so8P>?6ciZ{%7ZU+csB7qv1c;>wiNAEB>zz{g1eD($B#EuUzrJ zUH=!z|Km}<`9C-Rs{Tj*Rs3)Bf6Mx$|(5R6a z?;HRQ!V#o-|$Z#Ff9u)L7MEJo#T}o#>zuEkxKvj1o`}bDEW^` zPt~=`;I98oi`p~!XP8d;F^@P}To?sQ>k#|6Kn+F+%fC?JvXn zQ5F9i{!77r-jEQPItFVyE-aAe&WFgKj^Z6vCwj?q$MCM&W4+|nLm~3T`RnBHiAA!h zc^aPK(@V_>mc@c8u&=b|%bxD=*Dsv5fXJ%0nQ0nGcDw%l94;NIqS-P<~5@}0~5+V?rF@(IjG zu-*arRNi$Vk`+Eke*EAfk^SSP^X1-h_BG^BZ@~~toqxNJoO~Vs){}$e#i!;;#(?Y9 zvl>*5@k;tn{;B_}_HW{T!#ug?+#t1Hu_|8LZPubE#BXT4WnpTQDz65cu%I{tJPCsB{ecR`DDUPKn{;%yT`)-+QQ-quXpI6shOz3t{6efTWj_1yb- z-OKsc^;7Eu^xwqRJ?I1Y?=BqHN5ulm>r3UtN7Lof$02eW?4NlLb11MgAM}=^@CVY7 zA`jm^MLmyP&z~^1z~2sW%1FllSpTo$|HLpy|CP2I#x3{MdCUJIfU+}8iq`v0%x;h|s3cf)o5uj~JBsr&yXLI1f1w+wSf zO8<>6m&FW}yg|KXW+m?b?kbaCpT_$t&*HsxXYk%y*dMX|LMLhfpDvK$(Fu|bEvtwh zsQ7UBR%}D(5l1*?b>A5y{{s~N>HWa}4&?uDh3ho~&wy#NkGNPcx2WuSv~J@#_Isbj zvG55;$$x5uw=f**ixmIlFMxZ8<16rt{Uyc}*8$tsH*l^*`2_AK|7iJHs;{=)pKJ0d zwV!?K7p{{E#6BsQADLF3D#yPXCnrC`Tq52gu0q{%Zb@{7-lBuWEi)<5jEK*FHeU0gMS43t0Vs2Ks+sI%4ACj|23GW z9Z>9R{tw|8ZQ#Eq3;WXKNJF;gBJ_V!q@Mo^_WVC|u;M?c^MCvN&#BRSCjZN5@IRx? z^9bU9b?-0d{mgSe?EF9P|5xjO1Ne8={~-S-|NDl%g*w1nO8*`Ho&0|wev^YFwQq>* z+FIlNtE9-2(EQ(@!@DZa;r(=Ie+M7%uB6J2^;4AYS0)Zpy!o@Q*>>1>nD_Yu*2EnB zXZ*hd>wn(C`hV8>o&(dC{THx(C4)ck@>uwSqkqx$e;@ybL3b?R^xYcXL!Ue=rrmt| zj2JnzU(Cj_J_#9 z{k>#A{6Keis_fn{L9G)kLrqreKll&pFSVHe9}_)Trh)&ZHvhNmBj#6HPwjV`pZ>=x z{eKqvulQ%|58l5r>?{7k{6YEv!~S9D{$a3xxF!?hSOWt7Jv+w9!qm{KNdMEX4*p~J zOdEiNhrqHSJQ=?-}>gbWE=q zF9Y*5`T*PSsjZ3|AnD-$p4}*NybJwj-v2z9Ci7TVD6EBHZc(-DTl)+8*zYyR9(~2| zk9+L3{^L7=LtAguV_K^nW)0(xu4CKk|NnbyKG%M>qxVC}kjZx!${BxY! zTK|{k#>$M0Ve;(MWI0%a+CTW;j~HL^KONc+Q`}=8_5Lv0!!tDdM`mOq7D$!DbF;kN zyQ-u%>AI^U{~sKFO>~g2|F`--Id0FCe;$MRKk)xB`8W6eQ~$q@_+RnQ{NJqq4dnlO zPW|s=RsUD|Z}{gLlX4UP>m0!7Kls1x=B3`ZBvF2jc>mWIddY84|Nrg9Uh>O}A@Yu7 z%c{lYl7Y2qr3x2te|`nAyi8&TwVAM1aa_rD1K$v0Vl#Tb2n z?XxvL!E25^`r2q2gZ!V**l=QVGH96gjcLa1wql=tphxzh?>&zHEq+4#0i72>|J8S) z576wZxe3$)O0fPZ8Gr9J3#;Uu;Q1P0{u9(!KRJrI71+m^YdP5&DnI_-bjd_q#=obn z|8tEX@Bdf&PyX{*|JPh=_BHoh7wF^P=L;6W4>VM!rsOx_Y|FL_f{S)&4CubV|W3BeHHFN)n{k8TR z{U7Gje--~D|Nl-H=Kn&m{x96>Kk|S4{>Xnhbf5gw82@Kq*Gtwc87ptgX!$AP{$E|} z4MPj<|0Uvp=cS+g^mh%ohqafK#NxRZ;932?jUTXVvvv4a%;Pf*`{kx3{~6H#dvApP ze}wuU^Zu8>zvUfuabYdow(Qe5PYyreeHq81f9#Es$p548zM;N49<#pG$vv z>m>3k#9SYo2$2sl-|{~E!3BwxyY|kI6x3N+pCSK@*G7VW*8jNv$I*Yp{tJ!nlW)tt ze+*#9qv10U|KpiK&rJpYGr&Kze?QnK{|E6tMQxh>BiMgLu@C-dX3Ei78Sn?Ga%^6< z_tLHknHk+%@gMB@f7oE~ALR3Y4*zj`rv4-1|6eHnPbmFY>wZoC|9z$XmVe*+pGO$~ z59R$oc>WLTf8<}~|8L6u(0|tdFXKO&e6p5@=W``R%S(sm$&;QC`9)hFd6Mj3q7Ue$ z`tQgXx%0N!Sli!AMx&O^c|XRo%mEblhHvEya7|uU8RG-=$v=(xuj2nE@c${+|1s~! z9Ju0}%wuh_V{e*1TjK}3ui{wrkG?Sm_5UcP|0Vd0|4O$t|C(#Z7r6a`V&1ZE`S-PI zt%Tzvdip${{@Z+nzJTj@c@F{CRc2j}_lNerPJZ;GIr4=h$;1}pD03%_ksKVa^dEkOpFhgf|9tu%D+`$WGq!iJPanXw0klAWp!pvrf2RJ= z1pmnK1NlERGY6Uv_GglN*etLQ{*QtGBQsLv==^N2?5>pcSCjrD(hcAHrvc0$b5_155l^prWKP|>P?jzKFD`g4LIhzY8&dIvwT{G|V z1Leve43M$pzrTt9KaZ3y)b!*v&9snn+FQmjKc@O@%|0)WMgQ1aqm}+M{@46l9lo5+ zVzBM6^_FuU>+7p|QEuaJ;~Nj`lSMn``Ye_A(-ZS|V@)vM0bHG%D!+ez zk$eJu=NgNbP+xfodDbhiH_!E!*N)-eC1LXG->i_NzJ0+ya|az)Q2)t4@BbtJHHiP0 zLCbCJ-_5yYpY=i2r#~?Mf#=N1j8Oa^2Ish!PricgAE?QdgEMjv6VRCRlYi|4j*@?v z;(sRMf5m@=ERELdfBOdc`v0)Op;wLmk5An*^~ZRW+|O&ytNh>cuk-%E_#d@D75kI_ z1N!-Y;pG1_=s)s*!~X+A^!&fp|G`+J4leNhed1jNmg5T#q;y3wZ zM<4mu4zytZSDn4(7wEqxQS!p4^Krjxftt@Q#r=F-H_V!V)_&^)sQ2Vww^skhCJa>k z-@OO<|CdpCP9WHRLo@BLPTv2DF=gz-j4$x=SonuyZ;iqIf6#wCcUbZ7jse(rZ!6uV z4R%G1oL z+Iq|L$gy5Pob?yPTYrZBe=Ml~9bF-%nENXj(o6d+l~dqvYWS}ksrhI8@9^)^f6M+7 z)cJgUUp%1nAN)VhIv)7`68f+CN9=F;$2j+q|D&_A6#I<*kIhcUSc)7){4aZ|q&55M zsQ-rz3dQ=rjH@F5uTHyp`uFiD&3~GC&hxzp@b1!oyY7eD{{)`<=d1l0{)c|0@BcUa z-*5AO@Xz^w_52Oy|HvP;{@WJo0m16%VSQypOqBfFvm4<9vgBvr{uh@}1MGx>{oi&V z4!~~~Z-$Z&WvuMoGhNm4MuxL4NWQ=T;{g=|`1p5n0gP8A>iB=(O<3f-ANtRl-`ilC zM&93nz3Z~~(0>o_{C)?=!Mr>U?a{v$qW%{R{;mF#Uzc6RE?Kq=qjj^-zTHOa=(}rN zjd7pa@AC^P*2iZl?%@OUGYAmx$M(m44k0ppShW1?UzQ`+A0yA=@AfD7)#ngTJqzxi zYsdP^4y><2p7jOhUf%q)Stg9mkgNf?e+d6SIPa(C7~umP{-OVc(0|LnjsLCwFSeSm z_=gX0=K|c97bi0m|0$Y()cC%J)*k@-2f;gYg2S^+>~D1c=xk{JZ17*34quQW#}}af zcVmUDjlWjq|Gk1=|NF(n20Q=y{eR_|k5B*JR6GuM$wkkDNtpXX&HwQj_yNTK?&tnK z9>Lll^MBU<4#^`!q5t6jyDt5|KlFVS|5N`bMS_3CqUBN4f9(UxW5B;M{{HbBiyb5* zBYH{J;Opex`I5H4ru^dfi=-?yS=}?} zn;SrkY$$s`mD0v@)Uf)3;6qfC6)4%e`uC$JXbAyAlT=c zYOt?jfBG@S|3K6Z&HA4h@Shy6^k4IjJl}AyTWY^C#lMaP)IQ694fqG=UxIzbKXQSC zFo%EYKDbv_tJyzZmxk>WIko`rZoaWfZp;fCAA__a%hLczl{Un1MKg=42+gxZEx~5A+mT@rM!4>G3x(A<>z4kxA^^% z|9^-50si3M@SA>J2FaVpm&nSx@!mwNZ7Yt#^FDD68wXfFP>$bpx#2&f|Fz&B`hPH5 zx>(m!dQaB-h6tOGFiK{MiP4CehSo8OYt|dIlui3w#?UT{jU)G*O32w`G|C$qfk0VFH ze*cf+Kj`ECYt%E;it={Nyt4tX!vg=iE6&U9W6#RNihaYsz3<;V`$y;h2UY&B=KjO+ z?yoR^{_jKme^O-6{Ht03V*vc7l~K3x8>~zoD4Ecr;`A8#*{@g2n^G*l!EgCj(60aJ z?k)e(g;=(`kJ7d0F@8{{%R~1s#PhECo+`aY*!lpc1^^#Wm1y$+o1yqqywgvat=Y5a+uvYf{64d{qv98|4|0)L1-0OJ2_KjXU{OWO~{btPa-BZi4 zK+|!9=!H$&62<$3(Ao?(oS{OM_O5C2K-pYFz59~qAOEn1{JD@~HH z9-vIEtJ3vDJ3rx`b5QX=^?ziVkbkBB;9u4K17m)&jyfOb`kgqy_6`3pK>v@<*8Cp; z_vHWZY{Ngsx$jsl*@x9Z|LfA_czqhSljQiqOpn}DDO)qIlKh|gAN2h9QT&g{yMOj> z+$#E=)fYXx%FoHJ>F4CO(lh!!pRvc}QN#d`;l5u#{l~MvS^w*a|GUHAko!Ur$%B7B zgUe6S^~k*9{2H(g``Bfl zpsx&m;FG@M<#AXed-S7XJpU&O&&Rw*eOJXia%RgunYA?z%e7DIeesTF`kNPR|`{&5Mr;q#*{@@MVUv)s{$Sr#s5hwJM zg27-v&el%!HTC_HzIg`L9_Xh>;XQ!$;J*mZRi*wf2mj3bt@e|5*7uazzTw{b0_y)P zytCl>8OdNAwLi@7Ioe-~ydT^jsRjR*eQ5u2vX9vRL_OyI>yqTeq709BPle1#(D{F` zKmRv;@DSAhgFFB46{4S^K5Eq8&%OctKh)aRy}jzZ?4Ep1c1$}jcaA)XTp#cH0soJZ zf8_)C+<(`zzcKg!UFyGz|35_h|E`e#`-i+~_(%TF_#gVg9H4@&AN$w_`!t=m>zY70 z=IoNd^OV9-^3{h?xT49;|(&ix)5uCnCBx`!gqA?e8l;ReSS~o9xfyQd>5hCf6ITI<{#?- ztpAPoZjt)jvv**}c`KZNds|1ju3_@AuwANQbve{!$cH~m=c z6Vy1^ub>YwenHg(@Efg48jQKDUXnXBOdfq~Eq=?hV8+8S5tQzq=0X;~9vY%fHlHUPiqCB6xoRzL9YeYXD!%RQbX8*GSILNaYuK--Yra zWZvX1fiZ^KHa>tc2=$-O|783>BZc}8{t^4Tndh9K&*J>{@wjE=KRZ%h0{_RL_g{hc zgD`UM=zbkz{!FlL*$4k%|KuFa|A{5Y|8J_0HAz>;`ro0{|Jcmn=D)X&|8qv(J!@UF z$erukx;IR^DBGsPrd^O5rk+#wK#JD?N1~4!{$2WycYoP?e=YxaG5&Y>$Mbg(JG$9t zETFdG11el*`FFD2|dyKAEtWlJ{d%4AAFt1V?vs6JKiEGx7ju90iE?5o`LC2!$^Di72mAUT#eYmjI%}1| zTL16WTi5?`3ir%jwMJy`<~C33)Qhrt=0(|51OBHV20$FJW5OAEFcxe6l>S5eq5ls@ znzcVF{x{G5!`k2b!rpQ8e@bM!iZd<$O6v{#ZtiWrT=@bW3#fR&l)+;A>L1pFZ7nBq(kSfQTG|}UW01fKdkisHpKtr z|3lREl)jVk>%lr~{{UD|?RDb)68jGIm1AF2NKrcSfAWvmLbFeH4cCTa&8*gZt^J1e z0KP5fwzYY|<=4}nMeWZY)JGOfO_yU`Gv#gM_HUym@&@vtmyz?of;`}m;CTxFu|`VL zk|h=MDQbQc-;cU)xwfrkU-=@&CpLCbE#fD`fBh)r|Azk+;J-)xM_qt(12zs&x^Miz z@`8A&Rs1K*3GlA?N8C^C_wmo1pX_HK=1&LvI`%&W{!cW-%gJSk|8K68l?m5e75s+} zQTiX$^M98Atl~YhR;&{|H?pmJ^|Xt!0sL>AaZ$ETy&&5rotG^&s0mh_*6;g{BKrsB zdlBRxbN@s2+TRD&v;W?gd-2|%yAc21KN#_U6gb5Clq>U(xWKLdPM`(Lk>eS4w* zXA`CCBk=zP;(IsyUkyZz56)GK{?~SUfOt7}q#yXN#M}h=$8$&VoqE!K%d)$*I`1C4 ztdHyQIQO`3Tk}u-FUI?SM#e?Srw5mNKZX9kiuwGPPy=~idSO0fk=%asVs8p+ooam) za-d>x|IO@c?zIn~&oX`st*!sneFOj0d&NCsd|#{epK(9^f#v^|*_g+x$MZZe$9IT% zKaAQ>JKn&!AN+%TrTueL<dL+v)g0?_}_#Y;AX@CTTl<&IQ_ibI{G;3{Ric{Q82vs=evmg zzcZAzzt8aAzmHM-GyI3YF88YVU+aG*;(wZEnyu}Vad+Q8AE=1Kw#%3oFdwMIdOp_r z>&F+#Ywxd>6H+2aQ0F==Yi05563HLjTOCL3r!oFl{NGk0axO`_SnF4M@8X?|e?1sB zNZSFn92*G!(Ld5(j_t2T{Ez%!@egiP48S^rKeuj%FYgaFjN2CHs`Fjj0e-+if=uKij5U!Dd12mc3A>pKkQ4>R^>+z;-_ zKiRk1e~SFiO_tO1k`W8U$?4_fze;8r{SWr~Klty5{6C2K?}fyKHPl`qDMi1TwP=&b zP1`#>%{6VZwid=10Cm8Phygai2W*~n4mrU&*_(Gn9u7Ys--$Zl@c$rc|M!RMwLkab zxqo+szb5yn`hSMe|4B&)v(tGw{y%>_NT2K9AA&8CUXHG506$`^mUrp1dDG|Dd%Y z*yh+E@pAmwb#iq7I4RDE!N1AqKfaHuRe&YtE{bEta-csT+s1gD?JLd$w*$|`wbgOp z6fDyRl;M8nOvFHS6G!sjEgPF><2^uOl7sxH0=W+B`|4PA9$7cMo9mG6D;f3Q?&If< z#l7 zmNVf0)ZAD(-IU>xTdQP#>Qz$z)T`v zVt}##b zSK%F1^bc11*^+x`ypDWZV#Il+g^^HxL%HZ1^&}w@mx&Q z;4J%W!HMFZdhf|Er+iFbfzx4(FE%E{U=IIBjlkgewJV%dlT*nQJ6{!EX|M&KCk@j@yV$I*J z_vD+rD+|-@5wm?HOuUD~Q8ye2{wE;+2mhFVclgKW**=-3AJFFW3EDSUzR{9>n!~(4 zM{}#kc}=xn9ZSE$bF^>JEQ51wGaq73;O5)L3qAP(zcFy$-R@afcS%;vy(B9U1GLZ=%z_U< z9MFpVe;s_l`pIWy-IO!3Y1|39KjJfC?Ee5`|1jkKsQupq{l7E(RmA^q==z_d|HuIX z^xy3Ve7w^a82)*D4}L+9;TZhxoj%Xuwly0+V0#?+&$=G^e;eZeHt^5+J!<_yGEUxM z;9QP^b8E+jBId_7TJKTx&kUAhUr)mQzli^Fzk!W0*lPa4Fh0}aAM7}N#V+C!v}zp` zTerava9jBg_N}>(arONecI&;3Gk7dM-})FGTWH_m^Es|<@~(W5Y5ny7dKLe3{(mOk z;YGf5iVM!TcfA`Hvvyci3m#KNt0Wm}Wl} zaes=6{m(7{|MOzx>`L%|Tcu2nzvk-Te+c-GD>D2C=kvdDTat?Z<0>DSJ?lo1&3oFr z8yhak^2T;qj&>ztfR*q8t56GEjXal|6rg09|r!TVzbkjs|5S}f85xc>!#f*vi_D!o;h>cWeNCS3jUkw+GGWM zKr>>17Q_H8@Byn32dqX7VD-e)vTEvS*^~Q~JTwHc|4_~U-QfS*O8>!sH2KH0nKtI)8+E56)@F zhG{#FmUa@%pP)sG_jnZM4a30yWXAvAl4!#}`Bpvve(4HaD}JxEk1QIlExTmW>6?9O z%yP{!!?TZT?SK3}%i)}#LH@1ATmG3dn7*5T9*6astO0Vp2IK#FJpZE@|8E@qxBNT0 z55~bf&Fu@gR)E_pt^U_0$>}-F{i*$yea8L)x<5Zz&Mu%O%DF`e$N{3|TnqT$TOsu^ zn*U(W|A%4zKPoQs>fpcn*4inziLAY~y}J(VFPzsQi{@${u#7$cF~Ca10L}0L&F}#& z)6PlDl(VvC;wf1*>7?AAg!=zr)c%nFTmJX4{uj-4ILQBF!xaBI-Y5T-d-w!5|No7C zl|9xnZ`vxwKmC9&7Z{f^7|$DJ{jWl#J6qb3`+F4sZk;#WpBN@ya(^4QzxN2@gW3a#bT-TL`~fb;BeK3ylb+Ekr@aRAT3nDe=IziD+W zV9(QWf&Uoy86V;BKM2nhV*YRWH~P=`KS1+Y7gYSC)j5FAA6Wih!+kub=iqssSl{Qb z{f2+W{A6G8pCsoNCd&B${u{3*{$sO(Jpb4A|Cs7K>Lz_lWcA*5&&>H9GH*eL%!eOX z#8?3JfMwu+Ibwh&@V^55H(?%d#k8}sa`G8jG3k^vPdp~K$DsZ{M6dn1W9ZAWZ^&zk zf37pHiUa>j>&ZQt*Dd@0MoqV7eMC>&W*=B5@7AdOihue5WjYrapE3l`4#fR`x0C-Y z@IP3(5!ZW|+e7QUhIw-D1^1p)(EQU;;zcW`qp=PCFASCA2d7F2=KuWp*Exyf1MvOz zItR_7?W^1d8d|Q*#c2TR4!=E&2gU)4cQ^AroWtuW-*TBhu)g3*t=50?&-p*<|17-2 zbLEHxRol0DK3lE(Xz2rtA5ifCeF3*|PJM2ayiWa}i`-vnKkn^g&fjR*pHKE_Nzi@G z{<(z-;6EPQQF3mT*8iHAkgFp9SMh&bF!QhH|2Z*{FzNr+jsLbt^BtX@sf#Vt^*_zijeJX{kDlb-#aw{=XsL8v2sl z&HSJGkNfa6|6u{F2eSW7+lFWQ26Bzo$2oEf7xz{1xQ^fU5V8ElL;>q1P2#$UpTTb^aq*+kYJMe42mc{m}i>(0rx+ihZm7@p54?_+J<)7uKYE zy~y9HqyLwG))f9n{xkKz*a?rOnX)%?Ft|F6Wqjty*l z;EU^B{y;J9leeeriAYKd1Ol^UCdIGCsQ3SpN2d zKmSMlFV30&=QMlp{b%@(9QSzL*nJ|)_H}kwHFwFBmEBUa1U_Ivr!+Kn$Xw(BjaU;f zzZN$8qAY+9SUBUnEW&d_7EU`O3#Xitg~$OKXB?MJSs%!qgINNETA9blf;c{W-)&*51C=VGuO2mT}E=#d&JO^-vKjQroxf6X{!4mbadQ5^m) z_ok)JyZ8Cx0+$c)^AB$J?J?R9^jvrJKgM#eTH`m!yB)XeJNX3mag6*ILjM~^V;wiX z599x4XgT?}@x71#K=$DS;48SF=QL3NaUb7V@PCZ_v)=Ep5A7%aO8a%rPwr_Km&Bn4 z7%3OmkpI%FhX0|g{|9ya4|ind|Dz^;x3=njk%jkmc`8UFC7A;sFc)#a+}evWch&`&hvx${)|`>XX{YdRxf3!UK49+TBeE^|Rk?fM%Q878 zQ>|CE{42dC?Z^C} z(>MECsQ+01^BVb|hv#|Wp1zY@-)s2~sP|n!%}?_mCl{B3|HTn3Mo{+hdj!DDBBT_&4OSw7n6`79vf4LUDDlS}euIhkB|G|DG z`FC`jzCincE5-oaZ;l`9oaY;}`*aH*fwjQ2@hPEd{m(3U*n4~yxs`X#x{bU~;_hjVTj=S~# zN`1|_@d?%s;2Jttunb$KZOd`nx2+v>Z`(0@9keP27y^F=V?BY}E@Nz=^q=uR{`Rw# z{wL_z-^D-c`-*wRzSezezqWW${8RtuU_Ng?a(~>{a|(0(%=u5V-UqX_ez)#lToNm7 zOJn8yl3{Y8RmcCeu_0GQ{2zhme?b3(eEv_@|05^wt0n)94|aJ9H+!UFy;rJRJTh^4 zw@gMJFb#1)4dQ@V@By*BdWW-XFp-1q<$ z2e_HXxb*>7V*avma_=@=&pAeMZkc8q*tcW)8ovE5=55^&%$L(}4f5~i-uB7AqyON) zHZ4M05X&?7cWZnzxNoKpaG0k*NI=}r*2n*w4bb&@jQ#a}eY(~UpJ4NS)cY?W=fAiZ zx{tV@?6)n0FJ3ZK+SY>qJIZ8IY)BRLFWB?{h^r$0*X#d=O@E@cocw>c+cRdHSIRbd zrJ~g%)hiJPEJHp3A24}gr%XpZa0Yz94ETVVbr)q8Vt`q*&dIEqXJls0DVYHuFn!ul znLg!+Ot1M&CM0EI9SQlTwi{ErPi`&Oy47skG3y`faRHoLKS0(Kc#dnoQaod)0g7p6mkT?b2T2g zbB<(O7lQkV$)sLi;1~bX4_I??%Y27(p4wbIyN+=fcaIs~?LJ#S)N#L$b>Fxh1Mj$w z=HK1Y4{+PxA2{02ahLw{o-3#Ruk;`MkJS3_@Nbw`KEUZ~_7(r|4NCv>qUFsw;2U#% zC(XM4v-6P;EWjL};oiqSVlJ}3G)68hkA^P@m$r49{|W!g|NmI{Z}b0%sSnhZJtQ*s zdtIJU+r3hnVV^C?UxD3;Gg;*kN7`;_rHDH`T))OSd%kQ=f{G5-Ri!|{T25n z4lq7|@jvzd?%S)ygZTe*tmQiZ#t&YKl0#^Zpgq#gHd>Cg$H-CGvG!Ow0Xx->dQ|67 z>F8W6(~5FrB%b}v`;9JJb7;ATFVeLD@XkKCQTYs8Wjt5+HP^oN5Zu=J0{7ETa9XlW<^ONYv(^~nFf zT_F=Ob=Db~3?DFY#t9iW6Hlb5{|b4xn}44V@QeM)v(j*@ z{jT=1aijN&d$13Vv=5*ku)e^yJ|8eXHB9CIcR~NVq(DACA1Yt8N6CJ0|5ZnneBBW# z2heJZMjI`MI%4EVXRI7XZort~Xa8rVHwEtyAB%g5wD!BSUNLVt|E9k61?Cv~2lrYi z-M2nKx7r72KcI9z&>y(?S3be|298@lV2`n5?rp!m_6s%!(EJZD^?$_w5voR+=;+w>Xa|F4bUe<5>zt^4Pw{hZ@7F~4RXnor#a`?U5Z)MS^1%cTwE zzx?XqKXmZ5kwKpS{-2?9@2f9`{?|X;7j`eY7Keq#nae#ZwInRvS{Wd?~dhIb01BCit zg3t2tAE5gV^W~npeAN$mP?={tv&=D}}p73UAOcK*>79 z0jLF5A`hSs7>D_Q@u&q%KpZf!@sdoKdr>C92TZ6xC*$kRN_FiishWLS${G)7{;{UK zDq$$Nak1}cKG_f8-}(ZyigOq1Drew0tlG5x`tSA!+6VafzgF&q{$E7=|IURW@?qyN z`KXH)A)j$0ipnOkG=i~+UY53#az|b1qaqEDba@K)cx4Rk z1s=TvK41&tfQ?=$MIKO&JfISDf>leqWbBeosb16};}8dogAW)7A5cB#yi_-wL)?!y zQot7!%|9sB(0@Lcg8YxQ{G(6ix!sd#f1rJWX4@Q>$kxYqHO{Y2gdgBI+Oc-O>T{d> z-~(V25dX9Ocjw-zct=2WvrA>IQz$M9c=_E7EA7|Io1QRvs~ZOP-v;}%H#&!)9Uv$0 zuA#5bt&o;Q6Yy@q5cT|^a&Yg&{Vv}1dLuAv#wyt=?%m9rKE9K#d+KAzv_00%w~v3W zk??0<#RC{4v)mV``6^COny>wVkM$mSSH~G2!dQUDG1GVWAEWiZE`$6h>3UxP|772q zW#6`%f5iXfe=+z+zJCF=KANrfS@wOpk2RTKzoR)qE;S92OPd-07t6HRURQ_yhYs!+ z8Gm)${~s~=w%QWte;xSG2m6YDfQko9OyG+XwEmAv3Bz;quaT{*#^O1_Me@R>Uh=AEFy0$72=C3f9`6vk zM&6MDcz$-S9F@iLufJF&V++zyGw5Y>A2mP2e<1IcdtIj>&;E@2w)MErKWMJG|1!qi z%tN!C{p`CekbSHF+6P$QV3;=AZ({&o>*C(UzFYt2l7F0EhxmUrv|QEnzHUyX7ORA{|^63|26-bYo9N0IJdl;)_+{< zzKt7n{O{9z8w*@s7oZOa!#d>aq`Dwg4z{=Ay*by)%XnYrn=)8Fm2|u_V~Tumyh(oi zcTF;T+$hNy&{xLb9Upw(fLiBc*$0-Jc?%`xA&WtzvauUfKg zwy)TNQGdR*&TC&l)_p!g_wAT&HTQwOf%}XZ?PuIT{VziNKX(kC<7)UP%eUgX z{C~CRfAH7;S^vWXVA%2>)D?dZ`u|wBCm-yOx()mz4j73TU=(8j%mpw8C`2Amggl@G zKA>b}my|7sE$x)jB^^?_=#rEyYLnsx=cN#SV8n9ppPs2|Ok)!xz~C@&VVUo#weh`a z9nA;h)OD9{@Uc(+ea0L?)dRqv^#g3l=D6fA$qnr-8(SvHC&zZld&isQnb%w8@h6tx zJz3RKnwEsMJ$>=sjK1pG;#J5Sbi7Z#jX6wnTXU_}ACPOsylpklig)W5aITueFz5N= z0v?O=OdO#7hThg=IzF&|!qI>F3Cnt5-@R>*F@8h)4(&s9Zea5SUeD(T*dMF-9|-<^ z`riu1S?AN-qa95H_m1gpj&YyX|74Z_zq?TLe@^j_wbhvCb98?NxQBI-eZ@c6Zy6?C z;J>|PptNs8{(pC|RL5K;^*^Qm!JYr}1|Z&;7{1`K+LDLC|Kr`BJg`4%FWA2shC1L# z8v`H@7)>95JfH}3g2lK;s08)E65KCbysSftmt2yf#jr&eW%R;JGQ8=C<{!VmD$74| z02}u+A5eX^WZl`eet`R}FYxs(`{OM4^bHR8ypA?i7XWLjHfZ>*#B;#&!~5XitA?S1TPKcLuW41i<&_($B|wG_3##b#|E=l2=+Tir*z-v#C^_g$-oO8084 zy|Vo8E0wv)*H&B=_5aY|um3so{|)!ll|DxPyF9s!{lWhTXjC{^K_^Hp%F}sRJ+; z&_?!+xnhHAj8${ny-)Qu>tx^IpT}DMO>4JRETHBAER&1_!ja4K+1b~_FX7(cR9p+s zwWpsT-`ZdJvu!!IOxtbU(nnq4crtAEx!JeZxophEygJ6UZGC_f2Y_eoJB&ZDd|Te> z8?2dQot(msv$f~B#|-~mUq$}svi^_#^~nEQ$0R#By`%f^35*M9m-zztf!5K<(pV59 zA1sVj{9jOO{Pa9O>wTJkt^4Gk+;@TduGQhv-5Rd=@3;Z+|Gpw=NYMQE#zZ> zj#UGsW4q>mazgKNG8Odm|6#2E1$q2$>VHFLe!I5p`{4fx=s#osJ4A*v1_1xV5d#c| z4;T&~Fq}RBwSbYE5eLu*w0dMT@_^Cs0i#!R$jGJ+Z%Xs8 zV*sD_TmE%xHNTp%flK=}ITh9AAL75bT@%)*skowO`QZx%+m%yS3*k-h1*1 z0lvWUKX)|he>lEA6Y+l`_1~xS)ON)_`FGhG!~|=wP5#%Soi{vIK3p6lp5>VHQ*l4o zhxXfgpJpHYL-!T;(EaY#FzH?wCY`IVm(CsJzeJ`dhbaDoUjM^}^uzkU;I99h^}peB z?weiy1o;1cS9dP7pZt$7Ilyq#0hJHHdI04EFdr}iwSbYhKVT&4fum3h7`3WPMm2ZJ z$d#SQ`;q%&eL&u-W8h!we^pW>xQTG;09Wz>I^G`!?bpU_%e-wZ`>IXy#R20?pW_ab z0kMH%*Tr<;ac|0^~8uO-$Ts@`yS}NXKko>)`v>xn(H+GcNa-xOh_5^ zAL~|wJ^ly(nKu5{Nddoj5dGJyk6!;X4C{Z&ejqZ7`9Jx`vp`3n9gZAeIAVYT!~g}T z0~80-3{8!+2GnV|T8USN} z2&qP&HqMy4Z^y=CpJU1B(=avxt=lH5eZw&3Z{w4O;dt6m$CQsS+w70WIW#+NTb^V4 zPRpEwWOaNCZdrJvG1$oe7o_T~PJeqmgayPn~zaVQ^SV-1rFDZj)qv+ej4Tu1pB z(>ngfZrkg)w(YsT*v03II9I{BlM*}&ym3sLl)@J@K>ywRTjt3($5pF*f{yuB3}E8_ z`OyE*m*API%dyUHIoNN)bJtA0zq`e-PyV6#iv4w9-}2vT_(%RfJ1*oZssDw7|6;?x zDGCG;`}`_){qL};duNw}|60cXmVZ1CT=9=OU;$zP#|P{{A2C1y@_+*50R>nWFdVgj z;qUnTZ?0!3LT6GUYz?jxoo^NaP;mEaZ z-@oPG;!68^8m~ajo#(LSe%<%g>~$Sq?^k^=s?Kqp$8oLc{>N4F7{~N6e)9tAeJ!C_ z|2xp(zdkD(oTn)Lx9l??;F#iH^-UgtK96B7Km{BqyPOQp)V+1(CjZX?_apCw{*!;? z0K+jKP=FX9-^2j<$OH1>1M(3A$Cz`R z?yKW?e4v^0^mTZx9*(i+sLwLTV9u?HhBp*6_RX<)o)6FC z{^jf|!!v$yj}OO|;$GjTQmo^KZ<&)FE$fO>WVMO=$^1ISeu^4rf1U9GHYT7CSdToQ zWpu0@UxQ~UL;Ksg#>X%2$GaHFKVp6_bl;1Z-@5_)!@L`ZNY}dl(zPp1ysw~0#XO_a2!IqCo#qVF+iqWY;TS*&}D$T}P(9%{FYFk~D zDyxgqWDQzn#b}GMO>>Vs{WNLy+vhqL*J$PWs>N|Qr-_-IP7>{+# zT*ukI>{==K9Oy2Lt+HaM%Vi^``{n!TkgFZ2a9*} z5Yzy{|L%0~UrhdsNfP)EPNwYqANh|9_V@ql=l>0zwzsz8hnoL9qyNJ>2Y_5a@sAiF zA2C24Vt_pGpSKH!7$6ruAQyQ+E_^^Pd_XRIKyGWNWUUd&+;Utd=A*E8xHQtJ`C|bHQ&352L89;T}>On{~qdpp-hhJt@y|MUr_Tu4E6uW_(D_v56<`h zs{8-(R}5YLSZxLB{|!IH`af_#3hx4O_(u* zS8;y|Vt&oO<)1OY3OtWuC2CT%X4sYD0LBA04xpZ|D@~WRuyrNrM&HSrHLLLfF@fUR z?lZ??j2h3_!L9XveRGW87|!|sy$ybqW`i@U-PYf5+vhKQ`|WYIiWOE|7U3JowF*T|Mfpa z{Eynd;va1R^&kA_BL~Pw4v>c!AQwI$7d{{tJ|G7^AO|r(4)TB;tPRY@oM85bZpmCH zlA-v|0{;;*3EIybU@G*VdBAk!05xF0hH(Ja-qm7FUTsRa)YGt^eqb)*f%(vWod=j4 zK*jxOvLG*B=I6%CqTB>olAox2KyzWbivL^S4_XSftwKv%3*J{S2gWn&_&&NOJezhs zSfoEt44YhlK0+JgarVjU6&P1BJFXqbw29-%xsBcZVtccHEnC&cHJrZh9DA-l#vZHp zyRWVE*7yRgz1GKoQ}x}fCfjZ9XWz!@=))f{W_SF9iVL_+{t^E}{}unaeC{m0X|@!i~pr~2PI>HdgKK+OdTV)*H_3L4VAL92AWWSIu&w*mZEgU zzTzI-u7a%w|MRea=gdO6Z%MV>zigb`wWLy-DzlYOSXY{1SSN=)+vPq$bMG8a))mWa z4bPT;=bGji#k%iv)?vRk_#<=fIvnGex;8)0e5Sqbf2*Yr(7wa^E9*A`Tk8YJIDG>7 zUs;hUm6#V_(_v$*t{Tnp;Ebt# z>wiQ0MZ^U+|IYmXq+4cH{z#;j^*``GlJP(F-^G6(Vt_p319BM$zz5_o20$$!8*xB3 z;(%;CJ3MQ%=0APM8JUzn9QprHrT>#N;$;f7eQH)B>Hx7aHhZ|F-1wQq+$R!^dSetU z=5CRAY*$WNEDfo{q;W(Bm`_9fPg^4xfAP*`a{lpka^bPHa_+HKIrl`Xym9XmS%7*! z^MO@}1E}e%;R_h+H|8bCzu!4ukbxF^+dw zv`n(qTv|?hKE@vJe{A5n_8R`J`y9>vdVCLSJeHcP&H=-$zqx&b+O}iv{kE@Ko1g3R z=>xP@o9jW#ecEmEc*X=6XU$*I`8R@purFJv`!MLfGQ+=Y$Gh4$T?77e zMZQ~nacc54NmmK~sQ+aq^SfgGe{in|l5D9N4eobI$B&xiW^@!tFqPDtsN}BxVl05loU6TA_ZmRriL$W*x z`{kTu`8DiUb5rEs@m&8uEl!rVRwT*!jq!-%V?|aW--mUBd1}6w+^;k2E8Pzh*#z4R z?cZwHC-=~NxnYpV_JJZh!2jkx()H~Tvn^y?~GHc)p#0WWP7eX&tAul`)_YB*X3vN+Uoke2Di<%*jfwp6M7u% z^YdLkLY=Fw5bedxVxM+@#{2l(F!{;WO6BngTd?EItt7v%B3dH?6NnbRuDAIJMYe&q4ynfQMM^q)C^@&P6W zu(d$956FQJ$hJNJae(pxTfi}VL`BmhGA(YPj5qvGq7P8~hf4mEA1MBlcX=eW=?jUj z`lF<5JdQX3Z`!*3nAGHDDgGCZNSEc{zaH}j|Ij*HE`a}^AP%TbiiO3=-#1oE$D_^i z&zokbc_zg_Vt|d{ewXSZQt?M zXDFYbJ`ej`KEdJK@Xmc3U47*r5c_Y&xm*YI%XvxSU5$5lFT*qYnqrk*T#4s*G~?Ml zEi^oy9P=3 zw!R+uUZtG8IqTg4*XX=IDB*`+viU#e{}}(L&{qX-{I6dB5prE>bz<>ja;f3R(D^%Y zUk~#C%lLQY0r{pDz&IcWaX>cm0Q!I|!~vPm?~LtW8ttf^Z%Yl{mpcLTe@g!m!;}A- z*nu))$^8eeB}OC|7$UK@M!ZCIscti^5LGj zvS-3*FrF{(?w%vvkFS;|R!_$KRGh2__pRWI`o9cyzrFLyM1HzK&OE+ceuiUio-#^4 z+P4rfL90Cf@KRZbx#=xf-{ND^GJS;>wE`dW{{4;MWux*5WRd%9n{LK^$Md+2ifcW_ zbKUG;Xtfv|(=F(~9-IYso&0S`QPY_lA40uQea+Z=pf=QQuca z&3ANP^G_cjI|oSTwtgP@!Fc&gYr^ly6aEXzdw=-FEdLQ75}UOni#;T0|fYhT$2mX2QUuEa(n=40H_0G;2Kk^>t!w)@ zC*vN@p;9_&k;FcPnjdn81jG#qI6ndYgEfJomLFnHaHz~1nT5Junk>WfCl+BnVC%R7 zIr05X(uNqI9d_}7W@-OUi=6wrO|ouczFHU93hgKV%>P+4Ujc1D@GqN0ezp;Q027lx zT`Tg>SfKRuZh2tCWLc4)pyGectK}1|!@1>CGrZ9?uKL(kER*K|<23`vF55QeZ*uYP zJ4X8x%{Z^6x$mj%iGO>X_5tLcK12He`W}aU;{)guY@DzWvHv>M{q~Gal_0WFNMP?86lIV1Fywhur}FX^MUL0L1%> z`(0q4wiEaM>>Sc1e>X|~p&|S}GKOrrFWX@J&*5Lq|7RrgI|i%%l7M*V6n ze8bOgohvWizgXE*_n{WBW)jvECaT(>W*s>LS#U|0h$;RRk~p@BqF0C|?@0 z{Qo{M>z^_A_Fz|60d(Ky03%Edz+DSe>w;W!0=6D#eLyDSfJ|t4`p#}ig`SU}zf0=z ztgR`zX~Mbx={dYRvI1z}&!mtQA^-oL~Vo zzZr7_n~)=H!2G}BA8e`^fZQ4;H)5aV&|%v!Z249!yT;UUhWX3-JshX5?~IdW@(<2A zX1P~=%fH>vW9*o2$-MOu+-JA7FF=e>?#;N}=ko#FuWbwF^w(kS&$ z`?7YN_tq@?ihJn(4jS0sMFac04gb55 z`=jr)Zflr` z_H*9J(lMu(#yNp~T{2_r zRB6ETw5R7~VC`SB%*;)ZnFXlp7i35+*7~Tmzo_-k8JUA;MWus%t^JEpvs(uCn?_}z z-p@6DnBObre4Vy+(EK%EU(fsd*k6aSb;toYuTRFA3)Xam~Y(f|6AKMT!+TvZQs=@pP_vM_bcDPmdpqE1?^vO zt~rO?Z*sAJ1Nuux#mnbw(oyqImbR4%$oUQbt7DPx$AJB4a1Z|1L-)bHvW;lTKiS_5 z{ikh#_HPCM+l<|Sc02Tc2Xvpd6a4Rj?FRp3|3+(w{n78LgUmdUp zYweFXIsB{Vf2IdL|28(cCNd{_)I*+gbN^n|0KKE2+fEEXKVW?T`Dac5{?*z*cN}2q z0of)O$b=ur+>Kfw@`B87;~l|M=1C*oqcs!p|IB>M=_3Zv>;BWRhA%_r6r{^s*gRGD z!+JmD{%-zPfd7@on(<6(uKg$XG^PFS*q`w~xLyw*;4@u!S9!V8cIrFz-xd2S{^2KjN?7Q~a&ta?fyIRXX$E~@K_xBC@^DOUf zpTNF7R{IDY^KV4WWFcz)FRsYI9A64*{E5(gtleJ~kLPe9_BZTzuY>-t2mfT>;U4|X z;9qeM_P4^eAqF7(K%)fz^eG31Dl%KTT;r^q<@-U03=J#?jiCUh{1^ z_qEh}&3Yim+;$t8bsvKmBYK-B`Dk~7{arM$PgCrJ|2^QJ zc9Y?s{T+R!>#iKH{QY=YHoSio`Rdy{cx(Tc^M4h@|M=2a2c&X$^z8=7mdo6#iO!h>F8`(4qGt>R+x=CAgl=Mc8juQb#XRweZ=u# zeIxRKO~~~(8{2~1ek*L7HN^Yd-G&@s2W+Qlx2rZojp@E`ACI%g^7zZFGDCK89PQ3Z zyPtiS9Y?E=L5pK{nSJc@7~dGrG3FfS8dLky)iFE%zxK{MIF94Y;v_&2Odygb zL!EVY)s?TTJ6}1-VkS0B-+MjXv$IQx_PJbj#G<$O_;r{a?DWp>bx%)NC(XQF=DZjA zex*aQPA^l6Z7D@tl!^oJ2cGwA#q$$dG1vdp#$xfu?h4HJ6^k=1g36z(2JQ{6pdZ*@p)l1pm|_@PCNhE0O&HitIy!WFHzP`$`-GARRq~ z^Zw6YCw_ml^4}JxtFiy(JoqO|>iWOM82>Ms6#c(60NJXknWYPsKNbG{ou2{24_lU; z1K@c8H5VYy2VxAsIRQN{sLu^L9)PhxrS<^$fb;-07APCRIl+FM7l1GLaC}ic@(Xd* z-H(au*WE5QH8jEl%EVoMkGRL5C3co)i=BAh%&tI=XbohG-B5caoS<2vCT4LI+QF#*NvhIS&q6XS%P$nU}!!4}36IA&;Z@^*PE#tu}= zazE<*vYyMhm(%GMEXQ@}yiD`Gu64G^zrnwSWmO&P<=^3ZoictF2%nLW_cH3`S}>>C zO7VTF&WW;|b+`{2b@qLa_O|VkWh{@~56NRB-VfD=<0jrW(2M(b#+r)6=Qb6KcXp%C z?=Hi0xp=%EV?PY`Be>o#0`{Y1AJ_R=;NR*+-`|Jp{q~Z5Xg}EBpAG&I4}$;uphMvQ zF!-nX!9OM02mga$e~3!pe}o=@`+o=Ki13k|i1_?Q@yv$#gR*bEjOYFN`S{ZOFPcpJ z^K+{)K-Qg~er)R-Lacr~9IgiIbsPhbfBFDL{*`3^ug3stUeN6WJSNay5P%nygZpxL zfqxid0nQ5`Ux;;wJZBs_ctX@c^#|S*_4}cHZ{qhzza#4Q ze@8U#{kHJ+za<{rzQg+0^&au<&9&mq+bYGIo2$fIn=8c$q)*%yKt3Q&II0jQwjd9^ zDPx6rb8A4nrP3$1AP=3`QZD0LGL8DJ6$vWGdmxr?v+GVUjWR~A#}@KP+spDje$?CV z<=>Fyay|C@;`8?Me2=Yi@jax!yOsGetQToSsjY}8Ke1T}b#L;0o6DrWyR{Vc&=zQ0 zsrdd~rQ+XleE&zx?^)fYxNf&pM0aDn5B4u$zHb}~wH2bj$GLx8?;GjJ2m5(oKNn+u zvJdq^d%-{0m)sv@-;Xq-WFPz=2LJtJ9~w~X50ZVQVemh~z8_*F`=ihZ?gu!`dB3$* z^ofR(4H?sN$QGXYahdo23H*CYFYD|7*{04b#l9ABrmv~=s^`V{U7wCxl@H+=|6tSc z0Jje)FW{I!js@TYax9?c2el7Wac)2<06%bifL<^X75>366cweID=fybf*c#bD|}F) zicIT#0n+(U0p6dD_4yw;Cw{i$CL!)D#r0_`MEKr15#CiVA}xq5OA%}B*oyS-TI}ak zjj-CP5p7v2>U?x}m8=tpl*QPFs3gmoR^?(h&QHl@87on4M_Jw$OY3s0HCAT7m-&FO zS_1-u9hr6_%Hz_zF+OjD7#)=({eJSJt_<%{YG*7(Sqa*v7|-Lu9A8Tjeq*Bu%=>VR z5ALPNegUrObF+`Wzt@X%`e1*b2i${yGEdz{f&D{Dhc*B3fC2D7NWlY!z&d@ zl6&O?gLvNmDEj_4HjA%s&-ys`(Ug?w@)*_GUoX>y)Bi7s8~|??Q}!-c=*sld4A4szN%ZlPb-4a#y9T79CN>G;~Twy$s?hrIWh?cwYc{TRNW@ zb$wjCw?dr8`=nZshU|KlQ{^$WAT8xb^y8S_*6Cfyqkq@&OiP(K+fpjdwo)aS(=Wj_ z`z2t$7|c^(zr6_Dga1A3_Y2YIga1zO-v$1=(D&m$AF^-tL3_zQbO8JxgvkCOrNiK# z>IeS=&>;9H`$I~@@Bp$uLV^8J%|F;5g~ssw@53`J@!YkRcxu_n#_XB7+)ppp=Y1tI zr1@Vc$Nwdhr~l`M;OBrDX8La^yyiGA`TQL22YMJ|fJg1?0qW8JQ*IAPJSMnke()iT z3n=(OH3c8wGX^Q?1n7CQf1;aB5c_7+8u3VH|L}wMOa;;+fWJM`v5Bz{NzW6lc+|pF@BC7ll5Z%bb@A zAYQCWSJFnB2#~-J5mr8}& zO29g$xW_zS7~Ds|ePj>i=H6!C>dwP40>pdyCHvr?eLvZ!?t{qwVM=lDW`79$YxWt* z{|Kc#fc%qtDU=Q3df$hO!{YT#;_(}2AL9OqIsZw~_w%zl{LB8oq{uG2Jn#SKXS?`i zj{z2Uf9-*7uM4q(zX=3>8|eWU2VCR<^aG9sFb2@^qWJ;T$!mv{7f2s)c>$j}ETzW> z^aQBF?G5mUatglSS1JYfCDce*EJWQ^5ByTRbLT2NV|J-{w`Cc)uLt*Je<`?!F!n!# zu|IXzQ8m)l;F1v@AjLem#~43R=TT-0tYd7Ss0*?TEF&^~p$!Zx*~_vHW#r#gC)2L7 zag6a}WlUF~zlPue<7B_B+>X)*Y%dsZ^J5tZ9$-hXk8yuUsuX>EDR>9}P#EX;!sLGs z_{VwvNQVz&{X!h)LtS7W&+DVC9*FnzlYidRzYjV9{@L$Shaj@wPxcW95UD}*{bYZb z%xh`(5l6u~*&kD502L!c^P=K2o5b(Oihps1q8?M~m;G_S=E&in{l9lo@^7CDSdf!i z@z5WCz2~b!T=~&Rv=*FmE|xO9q9{kvddYgHI6iO0qbCy&f777{Qpt#2+4iB z;-4PSUJj;}kRGQOu&mv03my={alXxc88`>`nCr76*@rrc(cf$Ki@-hjm+Wi)3mo<( z|9#+}?C)3n-vRga^|^^qJ5cA6tW)0%!t@uj*QL&5I)1_J$Rye#AZwaK-_N z9`Jr%K=!5ZJ3*W$P-6k6DS2#=FfO1MaEu^5LHPp52lN29AIR|lJfMu?m|!dVh0jp+Mv9I%`GF9q|q2b^uMmFaWsHNqD7hX>FHVgkc^-~o_~WM8Ed z<2cI4_kefkf{HqSQKT0De|A- z0dD@s-~r@+44yEUEdOT50WVyjZT_zKR+*DG5+VLXL(C}cG+Ya|ML^$ zg}FdBe%99K`!>8L#NDrk!j<54*@x|MfHM|Q+}C{&&kbR3RH3*_|!jt|(}^ZG*V z0n!KP1m~bV+HC&G{y9fA;2qjSfqkV5h%u3S=578Z>mA@-OR`V?l{&z7g2s`jWI4HK+8y0~ z(4jm4?9&^x!h0&fFjXEW=><+1d3Ou_e+SrCiXhShBAq1|@3Y^B$i5Vw^8xlPvfoQ# z>@V5J_@C_WhYo^&+4n0C=tt})`_LdXq&z_K4-b(1!vjW@50HQIE(QLNaDH$Wj`@os z;)|QbPkXb!DKAEip(J<5$?~7(KXbu+T>mqv`Dc@-;yG*63h(>bOFM8Ju=V9|IG{ZM z^8xe#=>xj&ckwUh3CTaow47@Qlov=3pbsc7ko;>OK$IS!qxJy!0Pjzd;+O!cfTRcL zvA|eZT!HuPA2}|fJN)8Q+j4QbtzMjNuM=n5;Q?BE-~&=%zk>q*6ukiP!bKwU)iLhL ze<#ag3L$N?uVSZST}SN!7sUV=wH4Bl>@$rh)q(zBDU2BIK>ts1EP%*-xWmmp(#S_T z${^bVBAwtL>`VST(f@ZT{=4A;l6@Edec*pD*@wvf0nI-=;4nq@A%}g%|1dmYgwour zI11LsAngH1P(CzQgdfPoxxPEZnTLyh>Ca4?D|fuh^!eU@$%kV6^ZNfu%s)3&J-0M< zcE&W{!5@F?-meL9%X6V{1z6-bfO7$tg>4J7@5;{YY? z1M~p550r6CFd7zf;Za8qKa0UYi8#4u6^{Mu!9G2pPMqBXAArtx)GC4b&Kk))z2HJ8 zI8RWljNI#b+XF)IftbL&%7?+dR)`)T^Hok+xD#wkVL5n$_5fL?e84Fq^PS{gOEaGs z!F{LAKBLV)JOJ!R75kAc^#6(c_t@-5+4uKBd%-{1m;56hfbN3_98&x{?85_w$Ua2& z9sbe(k5b@#OiOtH*~fYQ@Pm0^f15b{!Qyvn7pM5R+gT`&%VEh0{^{Aihr>$AALXBXWtKL{`=tp zl7Fy2=;j|Dz`lP}jR7S8@BqobW*>R7|4<>0_iq>0vEtt~WKA#SE_XRU+e0I9sp#f^ ziMLpt|GPY&ReY)KaMxivP|m@o%+5?NI{f1kyWjy^Um6bu&~Mj)FZuwl5zxBm9D&;d zv@f{F13In71EcOZG2f+{Jx2`0YlXQL!J<9)QSn zqQc}}DS}8bZ>K8|A>{*+u5#odcz~ToU+?6Z2KP`@M)dt)KZ<@|vu}ZYiu_yPKc0Q` z|6t$RulRS^Xa5iNLj&*tvM>2Z99HaW{>R9@i+%R_^nn4)^?d|$eP6yqoPOB%c4PMR zV(xE~={&!i4|h7o|AJXK|L0>J$|lYEOZT?8)7k^l(&ta}550Z-_OIiz)YrpSpM8HH#j$?@#{Fa;;<*1H$Nmu6KkVjTdBCvZf7I3gyZJxD;{x2%H$2}8 ze{x+^eCY$?Klf*UuX_X zVB;5XSqR1gH$EMf=LTxQ@iK7MkT@Q2d4PLtApL+I;PwUO199^O+8a0ya0_0b#|6Aj zSxb5Vd>{Z-C=V#X+~6V{27I-z9oN5OPO$4r^#66}`!W8P+>?EXyeoxzz`qoj@39p| zv<0SnDCWVqOxv7Cdcd|L*2VHscN!ib^NdmfL@oM*PTRhq>ms;EH|hx7cb6ltBX}qC zj>x^uKJWFB{KEsRo?;06YxS!BpZrVq!T&|v+c3UEx|ITjZGynlzhhvroGa?DsNl^RGRCG13cuSuP{^MkMR82)27DRqjN^JnP86Tt-DQ-=o;?v6+t| zO8#9j#y)(YrwojP{~oa4gMJ^fq{u(i3lAXseOj7--S@Nqhh*PB0slkfACmmT1IYiF z60h+YnkORndn4Af*W))A?iA-gQuQC5%hET16uEby-%pW=B>7MCpD`cj|8tY$`2V7> zh8JX};_?8PK+2qjsim!7IeOD;=t|)O_r4Ytt3MWwR6Sx@)#MkvH)2dc(F>g8flK&+ z!#~FbT!)TKD<9Cu3ep2mCiw^NJSM1CKA^pT_c8K#pz;Cy)(||vckHzIVb?8q&IRtL z=~?6MN2?e2{Pi(Cfi(BM;GF{Z z7TK2q`{X}PWIbLM`+dnj*~h)UR4+ULvU)Z9;9s-9w-DF(g8zLO|L<4*|3R=%N&XT0 z+5ba>=>G>b`-mgRk1(Ro$8-Fwp)0KLL%v9q+~eGycs_Xk3wJDfB!6DY9PUpT5zl}o z{c&+38!rAa{!dc=)kaU}gTwLSbwU}{x0aRl|NK+e9mnk?|AfQrH-xz5g-CSeN28Id z4+=|<3+g#8fEVyML7qR*;{!%`f?MzB6>ojMTG*=b2fBo?_FNA-4 zH|7YtzJX(d*M+$Cg|Kz?jHSKaQTt2{Oz%-WABLHbObE{cFuzN5RRe8aojxKh3jdM z4x|4JqyLmbI)dZp2>MV*%u8WT9Z`<4oxDBPmh)^FXUpSm8C9C|aB>cgQHymkSxh_U z=)fqh)uH6IdYrSzHG3A%-7)I4EC;(?P&fKRM#XRrnky7{d_3)Vqw78y zh9c2*p9n{rKM{eDr=AK$o1co6H6h=Gywt}T?L3!p%08}^L0n5c8H%p?81zIadgbGx z=<1K2vx=V<(d(Z4MdV~(O+*Y-Mo$f_w9XDJx6bshu+Bl}2Ul7b23J|<5YMCT+~5jp zT$Zh{LPJa|4Xs3eWh_6qJUWi`j1Mk%mJ1=xTM|7BE)gT zmp9qsSodY<73A3m9={b*=@&Pm4rMPvFQfcb}2@4YyR}^N0z<)_HflVzty|s*htfyUDx_%)OhEmrp-=E zlQ-_j{T_#g+#8Z@AHUT0Xw)-s{~!2QzyC9J_;=dIzIK?t?~DmpmpXgaw6rC~)6%jk zGBP*qTaw+pzjonGy{i{)8d_U)*VD~q2fx<5_~r+ii?=_wF7K8PHG4OIxH)ItSd;hW z` zN1JojA8F3L@#xyTn~pYlHXdopz2QjHqAf?)=59FBH1CGJYjc*}u{Nb<>)JqlW3XdY z@tS*A<^_-35LnY*ow<6?)fvH^wR3}a6weIaQ+Y*jU`2kgcUgL{x9N)DT{Vk>+v?^8 zcU+Yk+|n>JINCfb*czA{>{zxWxV36-a6|s|)%P^c2|l`YZg5xS+~CgDslndL*}>!M z^MkDo^MdznNm+dt>JP75jCIWm_OH$f-nDdYu)k@^>N}Ut2@YSM6+E~yGx)})+%?_x z8Ec+s&RessdfuABP3ghW>KVa(E3@%A<^_kY!ureS1iNmS6})}v>|oc5#cQ_LT@f6< zHZ#~>H#<1kloLF5UDlc>@4)8`WCRB`%noi_IxEa;a`S7ij-8|DO$HDv`` z>gNOx-I}_3$FkY0yH_k(z0setx@Tp^HQTD^T)jGPdgJ!1X88{_FU+dWPRX2`I&H?R zG<>yj->&@j>HWNIWXkk;a;w#U4*zogzo>}CQ>p)Vw*@xb&awegW~5F}O_TeEdl|X= z%*6lcDRPII!8BeIb{Z2Fy4Uu%rT?}ab)t8%?ET91XG^T-MzKt9oR06eT;h7(Z@G!q z%ViU#mrE?yVC#DQcjF>4pTTQ)*w6E{kX}pNQd20S`RDO}vd{njO$!mvN#ruWgopXId&I zr=-w%*-@^P_dwcpEXNKn^Nem`tDHPOq+Es(8;1{M*D(S=xtv}e&0*&!h+JOR>%YbK z>GiRU^)m1J`?6f+Wj#K>`~5nt<3yi}b?(1IzELI_N5pC!cmJDqgJgYEjDL>*i+tQp zl%cuI>yj;?n@GnA`_W6T!Bm9OraKt@z3#pv5%W>`u{1k1DH*n(k-C*pFck% zJv-0vKc#mDv++}|1>*QO!(-?#Q4ty|3yA- zKFZAbe>Q}9nHEU$7SO2A&ydIeQ}_D+B>$ex=9w0ls0CvDXLA0}@IO%_nKIJ?N!kK# z{&NifN%}3D%`z=8aSLev7i5_Jf8rK0rKSavw*}n%=j4~D@jvdEGB48trUjC|1>*R3 z#{Y)@r2pd02AUQ?3po5|W~S%loB2PpQi#WTHymHFIIl$q;) zlJ*-n8)jM{)&d%J@SpB2tg-p$Q`61Mw18=Wq;CO-|Hb6L!u0=1|BagsG%XNoff)Zw zF#fO2V-0`mCboo0nHDfDkgP2b&%f#all6Nx+htl{q85nppEWbLu+|*^Pt-`J%(Os~ zwt(h;;gYQMTwg$)|1;zNB>lS0W|YiwgvI3RuU&q!F2{}hdwll4*Lwb*pGAIw=D#V}0x2nWU%wME=Sj8GtXu6OLLHB^kmC*lwr9tELVngIzpMB zLYWhF+O8|~dp(8aQaN_a)p#McjXV-HX zd$~eH$m^?w0v<2g!_Kn|LLPM}FZX&2R^;aTYMJ)rqC6L$1JaRcsN91%Q^D6((ZDkvr#97b!6N59F_OVyj^bB+39SQGp`k&$LGkl zm4zKCYjL(GtD?3+{`SWdv_7-RrUgt3m=-WCU|PVmfN25K0;UB_3z!x#Enr%}w18;= o(*mXiObeJ6FfCwOz_fsA0n-Ae1xyQ=7BDSfTEMixBx-^G1)~3cxBvhE diff --git a/windows/tauri/src-tauri/icons/icon.png b/windows/tauri/src-tauri/icons/icon.png index 00c1e0b0df74b8dfea38e76d4b5c88e5a7d2617f..33377960111a85f582ca6ff72e26bb299278fa30 100644 GIT binary patch literal 265429 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