From 089e0bc64a93bd3cf5db854af22a3eb431904130 Mon Sep 17 00:00:00 2001 From: callmeyan Date: Tue, 5 Nov 2024 13:40:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=B5=81=E7=A8=8B=EF=BC=9B=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=A1=86=E6=9E=B6=E6=9E=B6=E6=9E=84=EF=BC=9B=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/AIProofread/v17/.suo | Bin 2174976 -> 2461184 bytes AIProofread.sln | 8 + AIProofread/AIProofread.csproj | 67 +- AIProofread/Bridge.cs | 639 +++++------------- AIProofread/Config.cs | 8 +- AIProofread/Controls/FormDialog.Designer.cs | 109 +++ AIProofread/Controls/FormDialog.cs | 49 ++ AIProofread/Controls/FormDialog.resx | 120 ++++ AIProofread/Controls/FormLogger.Designer.cs | 103 +++ AIProofread/Controls/FormLogger.cs | 107 +++ AIProofread/Controls/FormLogger.resx | 196 ++++++ AIProofread/Controls/FormMessage.Designer.cs | 128 ++++ AIProofread/Controls/FormMessage.cs | 44 ++ AIProofread/Controls/FormMessage.resx | 120 ++++ AIProofread/Controls/FormWebView.Designer.cs | 66 ++ AIProofread/Controls/FormWebView.cs | 37 + AIProofread/Controls/FormWebView.resx | 120 ++++ AIProofread/Controls/ProofreadMainControl.cs | 20 +- AIProofread/Logger.cs | 34 +- AIProofread/Model/BridgeResult.cs | 47 ++ AIProofread/Model/DocumentContent.cs | 21 + AIProofread/Model/DocumentInfo.cs | 463 ++++++++++++- AIProofread/Model/DocumentList.cs | 123 ++++ AIProofread/ProofreadItem.cs | 8 +- AIProofread/Properties/Resources.Designer.cs | 90 +++ AIProofread/Properties/Resources.resx | 133 ++-- AIProofread/Resources/button.png | Bin 0 -> 4951 bytes AIProofread/Resources/button_default.png | Bin 0 -> 456 bytes AIProofread/Resources/export.png | Bin 0 -> 980 bytes AIProofread/Resources/form_bg.png | Bin 0 -> 13850 bytes AIProofread/Resources/icon-export-wps.jpg | Bin 0 -> 4367 bytes AIProofread/Resources/icon-export.png | Bin 0 -> 3340 bytes AIProofread/Resources/icon-history-wps.jpg | Bin 0 -> 6678 bytes AIProofread/Resources/icon-history.png | Bin 0 -> 1804 bytes AIProofread/Resources/icon-panel-wps.jpg | Bin 0 -> 4829 bytes AIProofread/Resources/icon-panel.png | Bin 0 -> 835 bytes AIProofread/Resources/icon-save-wps.jpg | Bin 3993 -> 5470 bytes AIProofread/Resources/icon-save.png | Bin 598 -> 1073 bytes AIProofread/Ribbon1.Designer.cs | 85 ++- AIProofread/Ribbon1.cs | 199 +++++- AIProofread/Ribbon1.resx | 15 + AIProofread/ThisAddIn.cs | 608 ++++++++--------- AIProofread/core/DocumentUtil.cs | 48 +- AIProofread/core/MainPanelWebMessage.cs | 6 + AIProofread/core/PanelModule.cs | 2 +- ...AIProofread.Properties.Resources.resources | Bin 62156 -> 115205 bytes ...AIProofread.csproj.AssemblyReference.cache | Bin 128219 -> 160471 bytes ...AIProofread.csproj.CoreCompileInputs.cache | 2 +- .../AIProofread.csproj.FileListAbsolute.txt | 4 + .../AIProofread.csproj.GenerateResource.cache | Bin 1274 -> 2090 bytes AIProofread/obj/Debug/AIProofread.dll | Bin 453120 -> 530432 bytes AIProofread/obj/Debug/AIProofread.pdb | Bin 202240 -> 265728 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 52804 -> 52879 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 24505 -> 25015 bytes .../Properties.Resources.Designer.cs.dll | Bin 6144 -> 7168 bytes ai-proofread-client/App.config | 6 + ai-proofread-client/Form1.Designer.cs | 40 ++ ai-proofread-client/Form1.cs | 20 + ai-proofread-client/Program.cs | 34 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 71 ++ ai-proofread-client/Properties/Resources.resx | 117 ++++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../ai-proofread-client.csproj | 80 +++ util-lib/CorrectContext.cs | 25 +- util-lib/CorrectItem.cs | 14 +- 67 files changed, 3383 insertions(+), 926 deletions(-) create mode 100644 AIProofread/Controls/FormDialog.Designer.cs create mode 100644 AIProofread/Controls/FormDialog.cs create mode 100644 AIProofread/Controls/FormDialog.resx create mode 100644 AIProofread/Controls/FormLogger.Designer.cs create mode 100644 AIProofread/Controls/FormLogger.cs create mode 100644 AIProofread/Controls/FormLogger.resx create mode 100644 AIProofread/Controls/FormMessage.Designer.cs create mode 100644 AIProofread/Controls/FormMessage.cs create mode 100644 AIProofread/Controls/FormMessage.resx create mode 100644 AIProofread/Controls/FormWebView.Designer.cs create mode 100644 AIProofread/Controls/FormWebView.cs create mode 100644 AIProofread/Controls/FormWebView.resx create mode 100644 AIProofread/Model/BridgeResult.cs create mode 100644 AIProofread/Model/DocumentContent.cs create mode 100644 AIProofread/Model/DocumentList.cs create mode 100644 AIProofread/Resources/button.png create mode 100644 AIProofread/Resources/button_default.png create mode 100644 AIProofread/Resources/export.png create mode 100644 AIProofread/Resources/form_bg.png create mode 100644 AIProofread/Resources/icon-export-wps.jpg create mode 100644 AIProofread/Resources/icon-export.png create mode 100644 AIProofread/Resources/icon-history-wps.jpg create mode 100644 AIProofread/Resources/icon-history.png create mode 100644 AIProofread/Resources/icon-panel-wps.jpg create mode 100644 AIProofread/Resources/icon-panel.png create mode 100644 ai-proofread-client/App.config create mode 100644 ai-proofread-client/Form1.Designer.cs create mode 100644 ai-proofread-client/Form1.cs create mode 100644 ai-proofread-client/Program.cs create mode 100644 ai-proofread-client/Properties/AssemblyInfo.cs create mode 100644 ai-proofread-client/Properties/Resources.Designer.cs create mode 100644 ai-proofread-client/Properties/Resources.resx create mode 100644 ai-proofread-client/Properties/Settings.Designer.cs create mode 100644 ai-proofread-client/Properties/Settings.settings create mode 100644 ai-proofread-client/ai-proofread-client.csproj diff --git a/.vs/AIProofread/v17/.suo b/.vs/AIProofread/v17/.suo index 6f699cd651034c2d2e706fdf9cf24ff6986e0f80..b1815a6d81cf4b620f157bc70824be50cb0a0b16 100644 GIT binary patch delta 48669 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å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 b4}q%48G4w&7@`=#9_V(zhMGHXcliGSOYUaG diff --git a/AIProofread.sln b/AIProofread.sln index eae8630..b9084f0 100644 --- a/AIProofread.sln +++ b/AIProofread.sln @@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "util-lib", "util-lib\util-l EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "updater", "updater\updater.csproj", "{73AC658D-CD49-4731-8491-A7BDBC811559}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ai-proofread-client", "ai-proofread-client\ai-proofread-client.csproj", "{48C0B207-150A-40B7-9A25-ECF9218FF86F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -42,6 +44,12 @@ Global {73AC658D-CD49-4731-8491-A7BDBC811559}.Release|Any CPU.Build.0 = Release|Any CPU {73AC658D-CD49-4731-8491-A7BDBC811559}.Test|Any CPU.ActiveCfg = Debug|Any CPU {73AC658D-CD49-4731-8491-A7BDBC811559}.Test|Any CPU.Build.0 = Debug|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Release|Any CPU.Build.0 = Release|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Test|Any CPU.ActiveCfg = Debug|Any CPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F}.Test|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AIProofread/AIProofread.csproj b/AIProofread/AIProofread.csproj index 5fc78d2..8a75ce1 100644 --- a/AIProofread/AIProofread.csproj +++ b/AIProofread/AIProofread.csproj @@ -290,12 +290,24 @@ FormContact.cs + + Form + + + FormDialog.cs + Form FormLoading.cs + + Form + + + FormLogger.cs + Form @@ -308,12 +320,24 @@ FormMain.cs + + Form + + + FormMessage.cs + Form FormSetting.cs + + Form + + + FormWebView.cs + UserControl @@ -331,7 +355,10 @@ + + + Code @@ -342,18 +369,30 @@ FormContact.cs + + FormDialog.cs + FormLoading.cs + + FormLogger.cs + FormLogin.cs FormMain.cs + + FormMessage.cs + FormSetting.cs + + FormWebView.cs + ProofreadMainControl.cs @@ -408,7 +447,9 @@ util-lib - + + + @@ -421,6 +462,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/AIProofread/Bridge.cs b/AIProofread/Bridge.cs index 6a4688c..bfaa45b 100644 --- a/AIProofread/Bridge.cs +++ b/AIProofread/Bridge.cs @@ -1,11 +1,13 @@ using AIProofread.Controls; using AIProofread.core; +using AIProofread.Model; using AIProofread.Util; using Microsoft.Office.Interop.Word; using Microsoft.Office.Tools.Word; using Microsoft.Web.WebView2.Core; using Microsoft.Web.WebView2.WinForms; using Newtonsoft.Json; +using NPOI.XWPF.UserModel; using System; using System.Collections.Generic; using System.Diagnostics; @@ -73,7 +75,10 @@ namespace AIProofread return CurrentUpgrade != null && CurrentUpgrade.NeedUpgrade(Config.APP_VERSION) && CurrentUpgrade.UpgradeType == 1; } - public void InitPluginUpgrade() + /// + /// 检查插件更新信息 + /// + public void CheckPluginUpgrade() { try { @@ -99,14 +104,18 @@ namespace AIProofread public string GetAppVersion() { - return Config.APP_VERSION; - } + Dictionary data = new Dictionary(); + data["version"] = Config.APP_VERSION; + data["platform"] = Config.IS_WPS ? "wps" : "word"; + data["environment"] = Config.APP_ENV.ToString(); + return JsonConvert.SerializeObject(data); + } public void showDialog(string message) { - System.Windows.Forms.MessageBox.Show(message); + MessageBox.Show(message); } public int getMinWIdth() @@ -143,35 +152,26 @@ namespace AIProofread public void SetDocumentId(int id, Document document) { - Globals.ThisAddIn.documentIdDics[document] = id; + Globals.ThisAddIn.SetDocumentId(document, id); } - public Document GetDocumentById(int id) + public DocumentInfo GetDocumentById(int id) { - //return GeIdBytDocument(Globals.ThisAddIn.Application.ActiveDocument); - var documentDic = Globals.ThisAddIn.documentIdDics; - foreach (var doc in documentDic.Keys) - { - if (documentDic[doc] == id) return doc; - } - return null; + return Globals.ThisAddIn.GetDocumentById(id); } public int GetCurrentDocumentId() { - return GeIdBytDocument(Globals.ThisAddIn.Application.ActiveDocument); + return Globals.ThisAddIn.ActiveDocument.Id; } public int GeIdBytDocument(Document document) { - if (Globals.ThisAddIn.documentIdDics.ContainsKey(document)) + var doc = Globals.ThisAddIn.documentList.Get(document); + if (doc != null) { - return Globals.ThisAddIn.documentIdDics[document]; + return doc.Id; } - //int id = Globals.ThisAddIn.documentIdDics.Count + 1; - //// 设置文档编号 - //SetCurrentDocumentId((int)id); - //return id ; - return 0; + return doc != null ? doc.Id : 0; } // 打开网页 @@ -214,26 +214,23 @@ namespace AIProofread public void ShowCurrentPane() { Globals.ThisAddIn.ShowPanel(); - //Globals.ThisAddIn.currentDocumentTaskPane.Visible = true; } public void HideCurrentPane() { Globals.ThisAddIn.HidePanel(); - //Globals.ThisAddIn.currentDocumentTaskPane.Visible = false; } + + public void ShowLoginForm(string action) + { + Globals.ThisAddIn.ShowLoginForm(action); + } public void Logout(string action) { - if (action == "async-info") - { - // web同步注销到ribbon - Globals.ThisAddIn.SyncLogout(); - } - else - { - // ribbon 发送注销动作到 web - Globals.ThisAddIn.SendMessageToWeb("logout", null); - } + // web同步注销到ribbon + Globals.ThisAddIn.SyncLogout(); + // ribbon 发送注销动作到 web + Globals.ThisAddIn.SendMessageToWeb("logout", null); } /// @@ -246,7 +243,6 @@ namespace AIProofread Userinfo info = JsonConvert.DeserializeObject(userinfo); // 登录成功 展示 Globals.ThisAddIn.ribbon.ProcessLoginInfo(info); - //Globals.ThisAddIn.SendMessageToWeb("async-login-success", null); } // 获取文档所有文本数据 @@ -254,13 +250,20 @@ namespace AIProofread { return Tools.GetAllText(Globals.ThisAddIn.Application.ActiveDocument); } + + /// + /// 获取文档数据 + /// + /// public string getDocumentData() { Dictionary data = new Dictionary(); var doc = Globals.ThisAddIn.Application.ActiveDocument; - - if (!doc.Saved) + string ext = doc.FullName.ToLower(); + // 如果是 + var shouldCheckSaved = ext.EndsWith(".wps") || doc.Paragraphs.Count < 200 || doc.Tables.Count < 20; + if (!shouldCheckSaved && !doc.Saved) { data.Add("code", 1); data.Add("message", "请保存文档后再进行校对"); @@ -277,11 +280,13 @@ namespace AIProofread } else { + data.Add("code", 0); data.Add("message", "success"); data.Add("name", doc.Name); + //data.Add("documentId", Globals.ThisAddIn.ActiveDocument.Id); data.Add("fullName", doc.FullName); - //data.Add("documentId", GeIdBytDocument(doc)); + data.Add("documentId", GeIdBytDocument(doc)); data.Add("wordsCount", doc.Words.Count); data.Add("charactersCount", doc.Characters.Count); data.Add("content", Tools.GetAllText(doc)); @@ -289,55 +294,34 @@ namespace AIProofread return Tools.GetJSONString(data); } - + /// + /// 根据位置获取文档区域文本 + /// + /// + /// + /// public string getParagraphTextByRange(int start, int end) { var list = Tools.GetTextListByParagraphRange(start, end); return Tools.GetJSONString(list); } - + /// + /// 获取文档所有段落文本 + /// + /// public string getAllParagraphs() { - var doc = Globals.ThisAddIn.Application.ActiveDocument; - - var rangeText = doc.Content.Text; - var trimText = HostHelper.ReplaceSpecialChars(rangeText, isReplaceMultSpaceLine: true); - - string[] separator = new string[5] { "\r\a", "\a", "\r", "\v", "\f" }; - string[] array4 = rangeText.Split(separator, StringSplitOptions.None); - string[] array5 = trimText.Split('\n'); - List list = new List(); - var paragraphs = doc.Paragraphs; - int total = paragraphs.Count; - for (int i = 1; i <= total; i++) + var doc = Globals.ThisAddIn.ActiveDocument; + if (doc == null) { - list.Add(GetParagraphText(paragraphs[i])); + return ""; } - var array6 = list.ToArray(); - Dictionary data = new Dictionary - { - {"origin_cut",array4 }, - {"trim_cut",array5 }, - {"paragraph_cut",array6 }, - }; - return Tools.GetJSONString(data); - } - private string GetParagraphText(Paragraph paragraph) - { - // 需要 - return GetRangeText(paragraph.Range); - } - private string GetRangeText(Range range) - { - // 需要 - return range.Text; + return Tools.GetJSONString(doc.GetAllParagraphs()); } public void getParagraphTextByRangeSync(int start, int end) { - //var list = Tools.GetTextListByParagraphRange(start, end); - //return Tools.GetJSONString(list); Task.Run(() => { var list = Tools.GetTextListByParagraphRange(start, end); @@ -345,23 +329,13 @@ namespace AIProofread }); } - public int getTotalParagraphNumber() - { - return Globals.ThisAddIn.Application.ActiveDocument.Paragraphs.Count; - } + public int getTotalParagraphNumber() => Globals.ThisAddIn.ActiveDocument?.GetTotalParagraphNumber() ?? -1; /// /// 读取文档原始文件并转换成base64 /// /// - public string getDocumentFileData() - { - var doc = Globals.ThisAddIn.Application.ActiveDocument.FullName; - FileStream fs = new FileStream(doc, FileMode.Open, FileAccess.Read, FileShare.Read); - byte[] bytes = new byte[fs.Length]; - fs.Read(bytes, 0, bytes.Length); - return Convert.ToBase64String(bytes); - } + public string getDocumentFileData() => Globals.ThisAddIn.ActiveDocument?.GetOriginFileData() ?? ""; public void ShowUpgrade(string data) { @@ -444,54 +418,10 @@ namespace AIProofread } - public void clearAllProofreadMarkById(int documentId) - { - clearAllProofreadMark(GetDocumentById(documentId)); - } - // 清除所有标记 - public void clearAllProofreadMark(Document document) - { - // 标记当前文档所有书签数据 - Globals.ThisAddIn.ActiveCurrentDocumentMarks(document); - try - { - selectProofreadId = -1; - foreach (var item in marks.Values) - { - if (item.mark != null) - { - if (item.content.Tag == "i" && item.content.IsAccept == AcceptStatus.Default) - { - item.mark.Text = ""; - } - item.ResetMarkStyle(); - } - } - DocumentUtil.ClearProofreadMarks(); - } - catch (Exception ex) - { - Logger.Log("ClearAllProofreadMark", ex); - } - try - { - // 清空marks - marks.Clear(); - } - catch (Exception) { } - } + public void clearAllProofreadMarkById(int documentId) => Globals.ThisAddIn.GetDocumentById(documentId)?.ClearAllProofreadMark(); + public void ClearCurrentDocumentMarks() => Globals.ThisAddIn.ActiveDocument?.ClearAllProofreadMark(); + public void removeBookmark(string markId) => DocumentUtil.RemoveBookmark(markId); - public void removeBookmark(string markId) - { - DocumentUtil.RemoveBookmark(markId); - } - //public void addBookmark(string data) - //{ - // var item = JsonConvert.DeserializeObject(data); - // //var mark = DocumentUtil.AddBookmark(item.color, item.start, item.end); - // // 初始化校对对象 - // marks.Add(item.id, new ProofreadItem(item)); - //} public string getAllBookmark() { @@ -536,7 +466,6 @@ namespace AIProofread { // 文档对象 var document = Globals.ThisAddIn.Application.ActiveDocument; - var vstoDocument = Globals.Factory.GetVstoObject(document); // 获取选区 var selection = Globals.ThisAddIn.Application.Selection; // 段落数 @@ -592,11 +521,6 @@ namespace AIProofread } return text; } - - public void ShowLoginForm(string action) - { - Globals.ThisAddIn.ShowLoginForm(action); - } public void ShowSettingForm() { FormSetting frm = new FormSetting(); @@ -611,158 +535,29 @@ namespace AIProofread public void SelectMarkById(int proofreadId, int documentId) { - var doc = documentId < 1 ? Globals.ThisAddIn.Application.ActiveDocument : GetDocumentById(documentId); - // - // 设置当前文档数据 - Globals.ThisAddIn.ActiveCurrentDocumentMarks(doc); - if (proofreadId == selectProofreadId) return; - // 取消上一个标签移除 - if (selectProofreadId > 0 && marks.ContainsKey(selectProofreadId)) - { - var m = marks[selectProofreadId]; - if (doc.Bookmarks.Exists(m.Name)) - { - marks[selectProofreadId].UnSelect(); - } - else - { - marks.Remove(selectProofreadId); - } - } - selectProofreadId = proofreadId; - - if (proofreadId > 0 && marks.ContainsKey(proofreadId)) - { - var mark = marks[proofreadId].mark; - // 已经不存在该标签了 - if (!doc.Bookmarks.Exists(mark.Name)) - { - marks.Remove(selectProofreadId); - return; - } - //object lineNum = (int)mark.Range.Information[WdInformation.wdFirstCharacterLineNumber] - 1; - //object goToLine = WdGoToItem.wdGoToLine; - //object goNext = WdGoToDirection.wdGoToNext; - //Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref goToLine, ref goNext, ref lineNum); - // - object bookmark = WdGoToItem.wdGoToBookmark; - object bookmarkName = mark.Name; - //doc.GoTo(mark); - //mark.Range.GoTo(); - Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref bookmark, ref missing, ref missing, ref bookmarkName); - // - //mark.DisableCharacterSpaceGrid = false; - // 先滚动到可视区域 - //doc.ActiveWindow.ScrollIntoView(mark.Range); - marks[proofreadId].Select(); - //Globals.ThisAddIn.SendMessageToWeb("select", proofreadId); - } - Globals.ThisAddIn.SendMessageToWeb("select-proofread", proofreadId); + Globals.ThisAddIn.ActiveDocument?.SelectMarkById(proofreadId); } public void processMark(int proofreadId, int status) { - if (proofreadId > 0 && marks.ContainsKey(proofreadId)) - { - marks[proofreadId].Process(status); - } + Globals.ThisAddIn.ActiveDocument?.ProcessMark(proofreadId, status); } - - private Document _currentDocument; - public Document CurrentDocument - { - get => _currentDocument ?? Globals.ThisAddIn.Application.ActiveDocument; - set - { - _currentDocument = value; - } - } - public string InitContent(string content, int documentId) + { + return InitContent(content, documentId, true); + } + public string InitContent(string content, int documentId, bool clearOriginMark) { try { // 根据文档编号 获取当前文档避免数据混乱 - CurrentDocument = GetDocumentById(documentId); - if (CurrentDocument == null) - { - throw new Exception("没有找到校对文档对象"); - } - List list = JsonConvert.DeserializeObject>(content); + var document = Globals.ThisAddIn.GetDocumentById(documentId) ?? throw new Exception("没有找到校对文档对象"); // 先清除所有数据 - clearAllProofreadMark(CurrentDocument); - - //var app = Globals.ThisAddIn.Application; - //var cur = app.Selection; - // - var prevOffset = 0; - List disabledList = new List(); - foreach (var correct in list) - { - if (correct.CorrectItems != null && correct.CorrectItems.Count > 0) - { - prevOffset = 0; - int index = 0; - foreach (var item in correct.CorrectItems) - { - int _prev = prevOffset; - // 查找对应区域并再该区域添加书签 - var mark = DocumentUtil.FindRangeAndCreateBookmark(item, correct, CurrentDocument, ref prevOffset); - // 防止调用方法中没有更新 - if (_prev >= prevOffset) - { - prevOffset = correct.SentenceOffset + item.Start; - } - - if (item.Tag != "i") index++; - if (mark != null) - { - marks.Add(item.Id, new ProofreadItem(item, mark, documentId)); - } - else - { - disabledList.Add(item.Id); - var msg = new Dictionary{ - {"message","没有找到标记对象" }, - { "origin",item }, - { "origin_correct",correct }, - { "new_text",correct.NewText }, - { "paragraph_num",correct.ParagraphNumber }, - }; - Logger.Log(JsonConvert.SerializeObject(msg)); - } - } - } - } - foreach (var item in marks) - { - if (item.Value.mark != null) - { - if (item.Value.content.Tag == "i") - { - item.Value.mark.Text = ToolUtil.GetBlankText(item.Value.content.Text.Length); - } - if (item.Value.content.Color != null) - { - try - { - var color = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.Value.content.Color)); - // 给选区添加背景颜色 - item.Value.mark.Shading.BackgroundPatternColor = color; - } - catch (Exception) - { - //item.Value.mark.Shading.BackgroundPatternColor = WdColor.wdColorLightOrange; - } - } - } - } - - - // 隐藏面板对应校对项 - MainPanelWebMessage.DisabledProofreadItem(disabledList); + if (clearOriginMark) document.ClearAllProofreadMark(); + List list = JsonConvert.DeserializeObject>(content); + document.InitProofread(list); } catch (Exception ex) { @@ -772,219 +567,115 @@ namespace AIProofread return "true"; } - void SendMessageToPanel() - { - - } - - - public string GetParagraph(int index) - { - try - { - var paragraphs = CurrentDocument.Paragraphs; - var total = paragraphs.Count; - // 判断索引是否超出范围 - if (index > total) - { - return null; - } - var paragraph = CurrentDocument.Paragraphs[index]; - return paragraph.Range.Text; - } - catch (Exception ex) - { - return "error:" + ex.Message; - } - } - /// /// 新增校对项 查找时的偏移量 /// - private static readonly int INSERT_FIND_OFFSET = 5; + //private static readonly int INSERT_FIND_OFFSET = 5; - /// - /// 根据校对项查找文档对应的位置 并创建书签 - /// - /// 校对项 - /// 校对 - /// - /// - public Microsoft.Office.Tools.Word.Bookmark FindRangeAndCreateBookmark1(CorrectItem correct, CorrectContext sentense, ref int prevOffset) + + public string MarkSentence(string content, int documentId) + { + // 初始化话 + return InitContent(content, documentId, false); + } + + public string ShowDialogMessage(string message) + { + var result = FormMessage.ShowMessage(message); + if (result == DialogResult.Retry) + { + return "retry"; + } + return "ok"; + } + + // 保存文件 + public string WriteText(string content, string path) { - Microsoft.Office.Tools.Word.Bookmark bookmark = null; try { - var document = CurrentDocument; - ControlCollection controls = Globals.Factory.GetVstoObject(document).Controls; - var markName = Config.BuildBookmarkName(correct.Id); - - // 判断是否已经存在 - if (controls.Contains(markName)) - { - try - { - controls.Remove(markName); - } - catch (Exception) { } - } - Range findRange = null; - // 判断段落是否存在 - if (sentense.ParagraphNumber > document.Paragraphs.Count) return null; - - var paragraph = document.Paragraphs[sentense.ParagraphNumber]; - Range paragraphRange = paragraph.Range; - var paragraphStart = paragraphRange.Start; - - - var Start = paragraphStart + sentense.SentenceOffset; - var End = Start + sentense.InsertLength - 1; - if (End > paragraphRange.End) - { - End = paragraphRange.End; - } - - // 当前句子的选区 - var fullRange = document.Range(Start, End); - // 如果选择有文本就用文本 - string fullText = fullRange.Text ?? paragraphRange.Text; - // 当前段落文本 - string paragraphText = paragraphRange.Text; - End = Start + correct.End; - Start = Start + correct.Start; - // 避免越界 - prevOffset = Math.Min(prevOffset, paragraphText.Length - 1); - - int offset = sentense.SentenceOffset; - int length = sentense.InsertLength; - string originText = sentense.Insert; - - // 如果是新增 则查找定位 - if (correct.Tag == "i") - { - // s1. 通过接口的位置 和 文档内容进行比对 - try - { - // 判断接口的定位字符串和文档截取的字符串是否一致 - if (paragraphText.Substring(offset, length) == originText) - { - // 直接使用接口定位 - findRange = document.Range(Start, End); - } - } - catch (Exception exif) - { - Logger.Log(exif); - } - // s2. 位置不匹配 则采用搜索定位 - if (findRange == null) - { - // 找前缀 - var prefix = correct.Start > 2 ? ( - correct.Start > INSERT_FIND_OFFSET - ? originText.Substring(correct.Start - INSERT_FIND_OFFSET, INSERT_FIND_OFFSET) - : originText.Substring(0, correct.Start) - ) : null; - // 找后缀 - var suffix = prefix == null ? ( - correct.End + INSERT_FIND_OFFSET < originText.Length - ? originText.Substring(correct.Start, INSERT_FIND_OFFSET) - : originText.Substring(correct.Start, originText.Length - correct.Start) - ) : null; - // 偏移量 - var start = prefix != null || suffix != null - ? paragraphText.IndexOf(prefix ?? suffix, prevOffset) - : -1; - if (start != -1) - { - var findOffset = paragraphStart + start + (prefix != null ? prefix.Length : 0); - findRange = document.Range(findOffset, findOffset); - } - } - } - else - { - findRange = document.Range(Start, End); - } - // 不是新增模式 且定位区域文本和原始文本不匹配 - if (correct.Tag != "i" && findRange.Text != correct.Origin) - { - // 查找 - findRange = DocumentUtil.FindRange(correct, sentense, ref prevOffset, CurrentDocument, paragraphRange); - } - - // 能够找到对应的区域 则再对应区域添加书签 - if (findRange != null) - { - // 更新查找的结束位置 - prevOffset = findRange.End - paragraphStart; - bookmark = controls.AddBookmark(findRange, markName); - bookmark.Tag = "ai_proofread"; - } - - #region start - - //// 判断并获取当前段落 - - - //// 定位要操作的文字 - //var r = document.Range(Start, End); - - //// 判断选区是否正确 - //if (item.tag == "i" || r.Text == item.origin) - //{ - // bookmark = controls.AddBookmark(r, markName); - // bookmark.Tag = "ai_proofread"; - //} - //else - //{ - // object str = item.origin; - // FindRange(ref fullRange, ref str); - - // if(fullRange != null){ - // bookmark = controls.AddBookmark(fullRange, markName); - // bookmark.Tag = "ai_proofread"; - // } - // //int startPos = 0, index, findCount = 0; - // //while ((index = fullText.IndexOf(item.origin, startPos)) != -1) - // //{ - // // if (findCount == findIndex) - // // { - // // r = document.Range(offset + index, offset + index + item.origin.Length); - // // if(r.Text == item.origin) { } - // // bookmark = controls.AddBookmark(r, markName); - // // bookmark.Tagetg = "ai_proofread"; - // // break; - // // } - // // startPos = index; - // // findCount++; - // //} - //} - #endregion - + File.WriteAllText(path, content); + return BridgeResult.Success("ok"); } catch (Exception ex) { - Logger.Log("create mark error:" + ex.Message + "\n" + ex.StackTrace + "\n\n"); + return BridgeResult.Error(-1, ex.Message); } - return bookmark; } - - /// - /// - /// - /// - /// - private void FindRange(ref Range range, ref object whatToFind) + public string ReadText(string path) { - object matchCase = false; // 是否区分大小写 - object matchWholeWord = false; // 是否匹配整个单词 - object matchWildcards = false; // 是否使用通配符 - object forward = true; // 搜索方向,true表示向前搜索,false表示向后搜索 - object wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue; // 搜索范围,这里表示继续搜索 + try + { + if (!File.Exists(path)) return BridgeResult.Error(-1, "文件不存在"); + return BridgeResult.Success(File.ReadAllText(path)); + } + catch (Exception ex) + { + return BridgeResult.Error(-1, ex.Message); + } + } - range.Find.Execute(ref whatToFind, ref matchCase, ref matchWholeWord, ref matchWildcards, ref forward, ref wrap); + public string SaveCache(string cache, bool silent) + { + if (!silent) + { + if (!Globals.ThisAddIn.Application.ActiveDocument.Saved) + { + MessageBox.Show("请先保存文档"); + return BridgeResult.Error(1, "请先保存文档"); + } + } + try + { + File.WriteAllText(Globals.ThisAddIn.ActiveDocument.ProofreadCachePath, cache); + return BridgeResult.Success("ok"); + } + catch (Exception ex) + { + return BridgeResult.Error(-1, ex.Message); + } + } + + public bool CacheExists() + { + return File.Exists(Globals.ThisAddIn.ActiveDocument.ProofreadCachePath); + } + + public string LoadCache() + { + if (!File.Exists(Globals.ThisAddIn.ActiveDocument.ProofreadCachePath)) + { + return BridgeResult.Error(1, "cache-not-exists"); + } + try + { + return BridgeResult.Success(File.ReadAllText(Globals.ThisAddIn.ActiveDocument.ProofreadCachePath)); + } + catch (Exception ex) + { + return BridgeResult.Error(ex.Message); + } + } + + public string ShowConfirm(string message, string caption, string yesButtonText, string noButtonText) + { + var result = FormDialog.Show(message, caption, yesButtonText, noButtonText); + return BridgeResult.Success(result == DialogResult.Yes ? "yes" : "no"); + } + + public string InitProofreadCacheList(string content) + { + try + { + List list = JsonConvert.DeserializeObject>(content); + Globals.ThisAddIn.InitProofreadCacheList(list); + return BridgeResult.Success(); + } + catch (Exception ex) + { + return BridgeResult.Error(ex); + } } } } diff --git a/AIProofread/Config.cs b/AIProofread/Config.cs index 02af291..32fb69d 100644 --- a/AIProofread/Config.cs +++ b/AIProofread/Config.cs @@ -12,7 +12,7 @@ namespace AIProofread public class Config { public static readonly string APP_NAME = "AI校对王"; - public static readonly string APP_VERSION = "1.0.12"; + public static readonly string APP_VERSION = "1.2.1"; public static bool IS_WPS = false; public static readonly string CONFIG_FILE = AppDomain.CurrentDomain.BaseDirectory + "app.json"; @@ -20,9 +20,9 @@ namespace AIProofread /// /// 网页访问地址 /// - public static string WEB_PATH = "http://192.168.10.100:5173/"; - public static bool RUN_IN_DEBUG = true; - public static AppEnvironment APP_ENV = AppEnvironment.Dev; + public static string WEB_PATH = "http://192.168.10.100:5173/"; //192.168.0.231:5137 192.168.10.100:5173 gm2-plugin.zverse.group + public static bool RUN_IN_DEBUG = false; + public static AppEnvironment APP_ENV = AppEnvironment.Prod; #else public static string WEB_PATH = "https://gm-plugin.gachafun.com/"; public static bool RUN_IN_DEBUG = false; diff --git a/AIProofread/Controls/FormDialog.Designer.cs b/AIProofread/Controls/FormDialog.Designer.cs new file mode 100644 index 0000000..3138c20 --- /dev/null +++ b/AIProofread/Controls/FormDialog.Designer.cs @@ -0,0 +1,109 @@ +namespace AIProofread.Controls +{ + partial class FormDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.LabelMeesage = new System.Windows.Forms.Label(); + this.BtnClose = new System.Windows.Forms.Button(); + this.BtnConfirm = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // LabelMeesage + // + this.LabelMeesage.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LabelMeesage.ForeColor = System.Drawing.Color.Black; + this.LabelMeesage.Location = new System.Drawing.Point(39, 60); + this.LabelMeesage.Name = "LabelMeesage"; + this.LabelMeesage.Size = new System.Drawing.Size(346, 70); + this.LabelMeesage.TabIndex = 7; + this.LabelMeesage.Text = "label1"; + this.LabelMeesage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // BtnClose + // + this.BtnClose.BackColor = System.Drawing.Color.White; + this.BtnClose.BackgroundImage = global::AIProofread.Properties.Resources.button_default; + this.BtnClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.BtnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.BtnClose.FlatAppearance.BorderColor = System.Drawing.Color.Gainsboro; + this.BtnClose.FlatAppearance.BorderSize = 0; + this.BtnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.BtnClose.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.BtnClose.ForeColor = System.Drawing.Color.Black; + this.BtnClose.Location = new System.Drawing.Point(222, 205); + this.BtnClose.Name = "BtnClose"; + this.BtnClose.Size = new System.Drawing.Size(120, 44); + this.BtnClose.TabIndex = 6; + this.BtnClose.Text = "取消"; + this.BtnClose.UseVisualStyleBackColor = false; + this.BtnClose.Click += new System.EventHandler(this.BtnClose_Click); + // + // BtnConfirm + // + this.BtnConfirm.BackgroundImage = global::AIProofread.Properties.Resources.button; + this.BtnConfirm.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.BtnConfirm.FlatAppearance.BorderSize = 0; + this.BtnConfirm.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.BtnConfirm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.BtnConfirm.ForeColor = System.Drawing.Color.White; + this.BtnConfirm.Location = new System.Drawing.Point(78, 205); + this.BtnConfirm.Name = "BtnConfirm"; + this.BtnConfirm.Size = new System.Drawing.Size(120, 44); + this.BtnConfirm.TabIndex = 5; + this.BtnConfirm.Text = "确认"; + this.BtnConfirm.UseVisualStyleBackColor = true; + this.BtnConfirm.Click += new System.EventHandler(this.button2_Click); + // + // FormDialog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.CancelButton = this.BtnClose; + this.ClientSize = new System.Drawing.Size(422, 286); + this.Controls.Add(this.LabelMeesage); + this.Controls.Add(this.BtnClose); + this.Controls.Add(this.BtnConfirm); + this.ForeColor = System.Drawing.Color.White; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormDialog"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label LabelMeesage; + private System.Windows.Forms.Button BtnClose; + private System.Windows.Forms.Button BtnConfirm; + } +} \ No newline at end of file diff --git a/AIProofread/Controls/FormDialog.cs b/AIProofread/Controls/FormDialog.cs new file mode 100644 index 0000000..ae5a092 --- /dev/null +++ b/AIProofread/Controls/FormDialog.cs @@ -0,0 +1,49 @@ +using System; +using System.Windows.Forms; + +namespace AIProofread.Controls +{ + public partial class FormDialog : Form + { + public FormDialog() + { + InitializeComponent(); + } + + + private void SetMessage(string message) + { + LabelMeesage.Text = message; + } + private void SetButtonText(string yesButtonText, string noButtonText) + { + BtnClose.Text = noButtonText; + BtnConfirm.Text = yesButtonText; + } + + public static DialogResult Show(string message, string caption, string yesButtonText, string noButtonText) + { + FormDialog formMessage = new FormDialog(); + formMessage.SetMessage(message); + formMessage.Text = caption; + formMessage.SetButtonText(yesButtonText, noButtonText); + return formMessage.ShowDialog(); + } + public static DialogResult Show(string message) + { + return Show(message, "", "是", "否"); + } + + private void BtnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.No; + this.Close(); + } + + private void button2_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Yes; + this.Close(); + } + } +} diff --git a/AIProofread/Controls/FormDialog.resx b/AIProofread/Controls/FormDialog.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AIProofread/Controls/FormDialog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AIProofread/Controls/FormLogger.Designer.cs b/AIProofread/Controls/FormLogger.Designer.cs new file mode 100644 index 0000000..cf0e51f --- /dev/null +++ b/AIProofread/Controls/FormLogger.Designer.cs @@ -0,0 +1,103 @@ +namespace AIProofread.Controls +{ + partial class FormLogger + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormLogger)); + this.LogText = new System.Windows.Forms.RichTextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.TsmiClear = new System.Windows.Forms.ToolStripMenuItem(); + this.panel1.SuspendLayout(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // LogText + // + this.LogText.AutoWordSelection = true; + this.LogText.BackColor = System.Drawing.Color.White; + this.LogText.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.LogText.ContextMenuStrip = this.contextMenuStrip1; + this.LogText.Dock = System.Windows.Forms.DockStyle.Fill; + this.LogText.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LogText.Location = new System.Drawing.Point(0, 0); + this.LogText.Name = "LogText"; + this.LogText.ReadOnly = true; + this.LogText.ShowSelectionMargin = true; + this.LogText.Size = new System.Drawing.Size(784, 491); + this.LogText.TabIndex = 0; + this.LogText.Text = ""; + // + // panel1 + // + this.panel1.Controls.Add(this.LogText); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(784, 491); + this.panel1.TabIndex = 1; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.TsmiClear}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(181, 48); + // + // TsmiClear + // + this.TsmiClear.Name = "TsmiClear"; + this.TsmiClear.Size = new System.Drawing.Size(180, 22); + this.TsmiClear.Text = "清除日志"; + this.TsmiClear.Click += new System.EventHandler(this.TsmiClear_Click); + // + // FormLogger + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(784, 491); + this.Controls.Add(this.panel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FormLogger"; + this.Text = "实时日志"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormLogger_FormClosed); + this.panel1.ResumeLayout(false); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox LogText; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem TsmiClear; + } +} \ No newline at end of file diff --git a/AIProofread/Controls/FormLogger.cs b/AIProofread/Controls/FormLogger.cs new file mode 100644 index 0000000..387a54b --- /dev/null +++ b/AIProofread/Controls/FormLogger.cs @@ -0,0 +1,107 @@ +using System; +using System.Windows.Forms; + +namespace AIProofread.Controls +{ + public partial class FormLogger : Form + { + private ListView LogListView; + + public FormLogger() + { + InitializeComponent(); + + + //LogListView.View = View.Details; + //LogListView.FullRowSelect = true; + //LogListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); + + } + + private void InitLogListView() + { + var columnHeader1 = new ColumnHeader(); + var columnHeader2 = new ColumnHeader(); + var columnHeader3 = new ColumnHeader(); + + columnHeader1.Text = "Tag"; + columnHeader1.Width = 67; + columnHeader2.Text = "Time"; + columnHeader2.Width = 117; + columnHeader3.Text = "Message"; + columnHeader3.Width = 480; + + + LogListView.Columns.AddRange(new ColumnHeader[] {columnHeader1,columnHeader2,columnHeader3}); + } + + /// + /// 显示最大日志数 + /// + private const int MaxDisplayItemCount = 100; + + public void Log(string time, string tag, string message) + { + ShowLogInText(time, tag, message); + } + + private void ShowLogInText(string time, string tag, string message) + { + if (LogText.InvokeRequired) + { + //LogText.Invoke(new AppendLogDel(AppendLog), args); + } + else + { + LogText.AppendText(string.Format("{0} {1} {2}",time,tag,message)); + LogText.AppendText(Environment.NewLine); + LogText.ScrollToCaret(); + LogText.Update(); + } + } + + private void ShowLogInList(string time, string tag, string message) + { + if (LogListView.InvokeRequired) + { + LogListView.Invoke(new Action(() => AddLogToList(time, tag, message))); + } + else + { + AddLogToList(time, tag, message); + } + } + + private void AddLogToList(string time, string tag, string message) + { + // + ListViewItem insertItem = new ListViewItem(new string[] { tag, time, message }); + // + //insertItem.SubItems.Add(time); + //insertItem.SubItems.Add(tag, Color.Violet, Color.White, LogListView.Font); + //insertItem.SubItems.Add(message, Color.Blue, Color.White, LogListView.Font); + //ListViewSubItem tagItem = new ListViewSubItem(insertItem,tag); + //ListViewSubItem timeItem = new ListViewSubItem(insertItem,time, Color.Violet, Color.White, LogListView.Font); + //ListViewSubItem messageItem = new ListViewSubItem(insertItem, time, Color.Blue, Color.White, LogListView.Font); + + //insertItem.SubItems.Add(tagItem); + if (LogListView.Items.Count > MaxDisplayItemCount) + { + LogListView.Items.RemoveAt(MaxDisplayItemCount); + } + //ListViewItem lstItem = new ListViewItem(" " + DateTime.Now.ToString(), imageIndex); + //lstItem.SubItems.Add(info); + LogListView.Items.Insert(0, insertItem); + } + + private void FormLogger_FormClosed(object sender, FormClosedEventArgs e) + { + Logger.LoggerForm = null; + } + + private void TsmiClear_Click(object sender, EventArgs e) + { + LogText.Text = string.Empty; + } + } +} diff --git a/AIProofread/Controls/FormLogger.resx b/AIProofread/Controls/FormLogger.resx new file mode 100644 index 0000000..88bc642 --- /dev/null +++ b/AIProofread/Controls/FormLogger.resx @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAIB4AAAEAIACgDwAAFgAAACgAAAAgAAAAPAAAAAEAIAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAA + AJUAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAA + AJgAAACYAAAAmAAAAJgAAACQAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAB9AAAA/wAAAOoAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAA + AOcAAADnAAAA5wAAAOcAAADnAAAA8AAAAPoAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAH4AAADpAAAAQQAAACMAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAA + 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 + ADUAAAA1AAAANQAAABoAAAAAAAAATQAAAO8AAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAH8AAADlAAAAIQAAAAAAAAAJAAAAFAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAA7wAAAFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAOUAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAE0AAADvAAAAWwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAA9wAAAKkAAACbAAAAnAAAAJwAAACcAAAAnAAA + AJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAAACbAAAAuQAAAPUAAABbAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAADhAAAA4gAAAOIAAADiAAAA4gAA + AOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA2AAA + AEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAACUAAAAmAAAAJgAA + ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA + ACYAAAAkAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD////////////////8AAA/+AAAH/gAAB/4AAAf+P//H/iIAR/4iAEf+IgBH/j//x/4//8f+IgBH/iI + AR/4iAEf+I//H/j//x/4iAEf+IgBH/iIAR/4j/8f+PABH/gAAB/4AAAf+AAAH/////////////////// + //8= + + + \ No newline at end of file diff --git a/AIProofread/Controls/FormMessage.Designer.cs b/AIProofread/Controls/FormMessage.Designer.cs new file mode 100644 index 0000000..a35400c --- /dev/null +++ b/AIProofread/Controls/FormMessage.Designer.cs @@ -0,0 +1,128 @@ +namespace AIProofread.Controls +{ + partial class FormMessage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.LabelMeesage = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // LabelMeesage + // + this.LabelMeesage.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LabelMeesage.Location = new System.Drawing.Point(91, 87); + this.LabelMeesage.Name = "LabelMeesage"; + this.LabelMeesage.Size = new System.Drawing.Size(264, 70); + this.LabelMeesage.TabIndex = 4; + this.LabelMeesage.Text = "label1"; + this.LabelMeesage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.BackgroundImage = global::AIProofread.Properties.Resources.form_bg; + this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel1.Controls.Add(this.label1); + this.panel1.Location = new System.Drawing.Point(1, 1); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(442, 46); + this.panel1.TabIndex = 3; + // + // button3 + // + this.button3.BackColor = System.Drawing.Color.White; + this.button3.BackgroundImage = global::AIProofread.Properties.Resources.button_default; + this.button3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.button3.FlatAppearance.BorderColor = System.Drawing.Color.Gainsboro; + this.button3.FlatAppearance.BorderSize = 0; + this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.ForeColor = System.Drawing.Color.Black; + this.button3.Location = new System.Drawing.Point(235, 210); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(120, 44); + this.button3.TabIndex = 2; + this.button3.Text = "关闭"; + this.button3.UseVisualStyleBackColor = false; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.BackgroundImage = global::AIProofread.Properties.Resources.button; + this.button2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.button2.FlatAppearance.BorderSize = 0; + this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.ForeColor = System.Drawing.Color.White; + this.button2.Location = new System.Drawing.Point(91, 210); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(120, 44); + this.button2.TabIndex = 1; + this.button2.Text = "重新校对"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(11, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(88, 25); + this.label1.TabIndex = 0; + this.label1.Text = "温馨提示"; + // + // FormMessage + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(444, 286); + this.Controls.Add(this.LabelMeesage); + this.Controls.Add(this.panel1); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Name = "FormMessage"; + this.Text = "FormMessage"; + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label LabelMeesage; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/AIProofread/Controls/FormMessage.cs b/AIProofread/Controls/FormMessage.cs new file mode 100644 index 0000000..d3dabd8 --- /dev/null +++ b/AIProofread/Controls/FormMessage.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AIProofread.Controls +{ + public partial class FormMessage : BaseWinForm + { + public FormMessage() + { + InitializeComponent(); + } + + private void SetMessage(string message) + { + LabelMeesage.Text = message; + } + + public static DialogResult ShowMessage(string message) + { + FormMessage formMessage = new FormMessage(); + formMessage.SetMessage(message); + return formMessage.ShowDialog(); + } + + private void button3_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.OK; + this.Close(); + } + + private void button2_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Retry; + this.Close(); + } + } +} diff --git a/AIProofread/Controls/FormMessage.resx b/AIProofread/Controls/FormMessage.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AIProofread/Controls/FormMessage.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AIProofread/Controls/FormWebView.Designer.cs b/AIProofread/Controls/FormWebView.Designer.cs new file mode 100644 index 0000000..fb8159f --- /dev/null +++ b/AIProofread/Controls/FormWebView.Designer.cs @@ -0,0 +1,66 @@ +namespace AIProofread.Controls +{ + partial class FormWebView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.WebView = new Microsoft.Web.WebView2.WinForms.WebView2(); + ((System.ComponentModel.ISupportInitialize)(this.WebView)).BeginInit(); + this.SuspendLayout(); + // + // WebView + // + this.WebView.AllowExternalDrop = true; + this.WebView.CreationProperties = null; + this.WebView.DefaultBackgroundColor = System.Drawing.Color.White; + this.WebView.Dock = System.Windows.Forms.DockStyle.Fill; + this.WebView.Location = new System.Drawing.Point(0, 0); + this.WebView.Name = "WebView"; + this.WebView.Size = new System.Drawing.Size(800, 450); + this.WebView.TabIndex = 0; + this.WebView.ZoomFactor = 1D; + // + // FormWebView + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.WebView); + this.Name = "FormWebView"; + this.Text = "FormWebView"; + this.Load += new System.EventHandler(this.FormWebView_Load); + ((System.ComponentModel.ISupportInitialize)(this.WebView)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private Microsoft.Web.WebView2.WinForms.WebView2 WebView; + } +} \ No newline at end of file diff --git a/AIProofread/Controls/FormWebView.cs b/AIProofread/Controls/FormWebView.cs new file mode 100644 index 0000000..0716a75 --- /dev/null +++ b/AIProofread/Controls/FormWebView.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AIProofread.Controls +{ + [ClassInterface(ClassInterfaceType.AutoDual)] + [ComVisible(true)] + public partial class FormWebView : BaseWinForm + { + public string WebUrl { get; set; } + public FormWebView(string url,int width,int height) + { + InitializeComponent(); + this.WebUrl = url; + this.SetSize(width, height); + } + public void SetSize(int width, int height) + { + this.Width = width; + this.Height = height; + } + + private void FormWebView_Load(object sender, EventArgs e) + { + // 初始化 + InitWebView(WebView,this.WebUrl, "webview"); + } + } +} diff --git a/AIProofread/Controls/FormWebView.resx b/AIProofread/Controls/FormWebView.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AIProofread/Controls/FormWebView.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AIProofread/Controls/ProofreadMainControl.cs b/AIProofread/Controls/ProofreadMainControl.cs index 3b5ad92..4409e67 100644 --- a/AIProofread/Controls/ProofreadMainControl.cs +++ b/AIProofread/Controls/ProofreadMainControl.cs @@ -7,15 +7,9 @@ namespace AIProofread.Controls { public partial class ProofreadMainControl : UserControl { - private Document doc; - private int minWidth; - - - public ProofreadMainControl(Document doc,int minWidth) + public ProofreadMainControl() { InitializeComponent(); - this.doc = doc; - this.minWidth = minWidth; Bridge.InitWebEnvAsync("main", web); //this.minWidth = 420 * LabelWidth() / 42; @@ -25,17 +19,17 @@ namespace AIProofread.Controls private void ProofreadMainControl_Load(object sender, EventArgs e) { - this.web.Source = new Uri(Config.WebPath("home?version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks)); + this.web.Source = new Uri(Config.WebPath("correct?version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks)); //this.SizeChanged += ProofreadMainControl_SizeChanged; } private void ProofreadMainControl_SizeChanged(object sender, EventArgs e) { - if(this.minWidth > 0 && this.Width < this.minWidth) - { - SendKeys.Send("{ESC}"); - this.Width = this.minWidth; - } + //if(this.minWidth > 0 && this.Width < this.minWidth) + //{ + // SendKeys.Send("{ESC}"); + // this.Width = this.minWidth; + //} } public int LabelWidth() { diff --git a/AIProofread/Logger.cs b/AIProofread/Logger.cs index 1b3257e..091d409 100644 --- a/AIProofread/Logger.cs +++ b/AIProofread/Logger.cs @@ -1,43 +1,55 @@ -using System; +using AIProofread.Controls; +using System; using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Windows.Interop; namespace AIProofread { public class Logger { - private static readonly string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + public static FormLogger LoggerForm; + //private static readonly string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); /// /// /// /// - public static void Log(string msg) + public static void Log(string tag,string message) { + string time = DateTime.Now.ToString("HH:mm:ss"); + + // 如果日志窗口已经打开,则显示日志 + if (LoggerForm != null && !LoggerForm.IsDisposed && LoggerForm.Visible) + { + LoggerForm.Log(time, tag, message); + return; + } string path = Config.APP_LOG_PATH + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; if (!Directory.Exists(Config.APP_LOG_PATH)) { Directory.CreateDirectory(Config.APP_LOG_PATH); } StreamWriter streamWriter = File.AppendText(path); - streamWriter.WriteLine("***************************[" + (Config.IS_WPS ? "WPS" : "WORD") + "]***************************"); - streamWriter.WriteLine("消息:" + msg); - streamWriter.WriteLine("时间:" + DateTime.Now.ToString("HH:mm:ss")); + streamWriter.WriteLine("***************************[" + tag + "]***************************"); + streamWriter.WriteLine("消息:" + message); + streamWriter.WriteLine("时间:" + time); streamWriter.WriteLine(); streamWriter.Flush(); streamWriter.Close(); streamWriter.Dispose(); } - public static void Log( Exception e) + public static void Log(string msg) + { + Log((Config.IS_WPS ? "WPS" : "WORD"), msg); + } + public static void Log(Exception e) { Log(e.Message + "\n" + e.StackTrace); } public static void Log(string tag, Exception e) { - Log(tag + "\n" + e.StackTrace); + Log(tag,e.Message + "\n" + e.StackTrace); } public static void LogToWeb(string msg) diff --git a/AIProofread/Model/BridgeResult.cs b/AIProofread/Model/BridgeResult.cs new file mode 100644 index 0000000..240625b --- /dev/null +++ b/AIProofread/Model/BridgeResult.cs @@ -0,0 +1,47 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIProofread.Model +{ + class BridgeResultModel + { + [JsonProperty("code")] + public int Code { get; set; } + [JsonProperty("message")] + public string Message { get; set; } + [JsonProperty("data")] + public object Data { get; set; } + } + public class BridgeResult + { + public static string Error() + { + return Error(-1, "error"); + } + + public static string Error(Exception ex) + { + return Error(-1, ex.Message); + } + public static string Error(string message) + { + return Error(-1, message); + } + public static string Error(int code, string message) + { + return JsonConvert.SerializeObject(new BridgeResultModel() { Code = code, Message = message }); + } + public static string Success() + { + return Success(null); + } + public static string Success(object data) + { + return JsonConvert.SerializeObject(new BridgeResultModel() { Code = 0, Data = data, Message = "success" }); + } + } +} diff --git a/AIProofread/Model/DocumentContent.cs b/AIProofread/Model/DocumentContent.cs new file mode 100644 index 0000000..5758304 --- /dev/null +++ b/AIProofread/Model/DocumentContent.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIProofread.Model +{ + public class DocumentContent + { + + [JsonProperty("origin")] + public string[] OriginCut { get; set; } + [JsonProperty("trim_cut")] + public string[] TrimCut { get; set; } + [JsonProperty("paragraphs")] + public string[] Paragraphs { get; set; } + + } +} diff --git a/AIProofread/Model/DocumentInfo.cs b/AIProofread/Model/DocumentInfo.cs index 278a676..fe245df 100644 --- a/AIProofread/Model/DocumentInfo.cs +++ b/AIProofread/Model/DocumentInfo.cs @@ -1,11 +1,16 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Office.Core; +using System.Drawing; +using System.IO; +using System.Threading; +using System.Windows.Forms; +using AIProofread.Controls; +using AIProofread.core; +using AIProofread.Util; using Microsoft.Office.Interop.Word; +using Newtonsoft.Json; using UtilLib; +using CustomTaskPane = Microsoft.Office.Tools.CustomTaskPane; namespace AIProofread.Model { @@ -14,18 +19,119 @@ namespace AIProofread.Model /// public class DocumentInfo { + public static readonly int MIN_WIDTH = 420; private static char[] ArticleSpecialChars = new char[4] { '\a', '\r', '\v', '\f' }; - //private Document currentDocument; - public Document CurrentDocument { get; set; } - private string fileName; - private string uniqueId; + private static object missing = System.Reflection.Missing.Value; + /// + /// + /// + public Dictionary marks = new Dictionary(); + + /// + /// 最小宽度 + /// + public static int MinWidth = 0; + /// + /// 校对选区集合 + /// private List ranges = new List(); - public string UniqueId - { - get { return uniqueId; } + /// + /// 当前选中对现象编号 + /// + private int selectProofreadId; + + //private Document currentDocument; + /// + /// 当前对应文档 + /// + public Document CurrentDocument { get; set; } + + /// + /// 文件名称 + /// + private string fileName; + + private string uniqueId; + public string UniqueId { get { return uniqueId; } } + + public string ProofreadCachePath + { + get + { + return CurrentDocument.FullName + "-proofread.json"; + } + } + + public bool IsActive { get; internal set; } + public bool PaneVisible { get; set; } + public int Id { get; set; } + + public CustomTaskPane TaskPane { get; set; } + + // 初始化 + public DocumentInfo(Document doc) + { + this.CurrentDocument = doc; + Initialize(); + } + + /// + /// 显示面板 + /// + public void ShowPane() + { + if (null != TaskPane) + { + TaskPane.Visible = PaneVisible = true; + } + } + + /// + /// 隐藏面板 + /// + public void HidePane() + { + if (null != TaskPane) TaskPane.Visible = PaneVisible = false; + } + + /// + /// 激活 + /// + public void Active() + { + IsActive = true; + if (null != TaskPane && PaneVisible) + { + TaskPane.Visible = true; + } + } + + public void Deactive() + { + IsActive = false; + if (null != TaskPane && PaneVisible) + { + TaskPane.Visible = false; + } + } + + public void Dispose() + { + try + { + ProofreadMainControl control = (ProofreadMainControl)TaskPane.Control; + control.ResetWeb(); + + HidePane(); + TaskPane?.Dispose(); + } + catch (Exception e) + { + Logger.Log("Error", e); + } } // 计算uniqueId @@ -40,16 +146,58 @@ namespace AIProofread.Model uniqueId = filename.GetHashCode().ToString(); } - // 初始化 - public DocumentInfo(Document doc) + /// + /// 添加变量控制重复调用 + /// + private bool isResizing = false; + private void Control_SizeChanged(object sender, EventArgs e) { - this.CurrentDocument = doc; + if (isResizing) return; + if (TaskPane != null && TaskPane.Visible && TaskPane.Width < MinWidth) + { + isResizing = true; + SendKeys.Send("{ESC}"); + TaskPane.Width = MinWidth; + isResizing = false; + } + } + + // 创建pane 并初始化 + public void CreateTaskPane() + { + var control = new ProofreadMainControl(); + if (MinWidth < 10) + { + MinWidth = MIN_WIDTH * control.LabelWidth() / 42; + } + // 创建pane + TaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(control, " "); + // 默认隐藏 + TaskPane.Visible = false; + // 设置宽度 + control.Width = MinWidth; + TaskPane.Width = MinWidth; + + // 监听尺寸变化 防止最小尺寸小于设置值 + control.SizeChanged += Control_SizeChanged; + TaskPane.VisibleChanged += TaskPane_VisibleChanged; + } + + private void TaskPane_VisibleChanged(object sender, EventArgs e) + { + // 如果已经隐藏 则记录隐藏用于(WPS)多面板的切换的处理 + if (TaskPane.Visible) + { + PaneVisible = TaskPane.Visible; + } } public void Initialize() { ranges.Clear(); ComputeUniqueId(); + if (TaskPane == null) CreateTaskPane(); + } //处理文档选区时 判断当前选区是否有校对项 有则选择该范围 @@ -103,6 +251,34 @@ namespace AIProofread.Model return string.IsNullOrEmpty(text) ? "" : text; } + /// + /// 保存校对缓存结果 + /// + private void SaveProofreadCache(string cacheData) + { + // 判断文档是否已经保存 + + if (!CurrentDocument.Saved) + { + // 保存文档 + if (!CurrentDocument.Saved) + { + // 提示保存文档 + var result = MessageBox.Show("当前文档尚未保存,是否保存?", "提示", MessageBoxButtons.YesNo); + if (result == DialogResult.Yes) + { + CurrentDocument.Save(); + } + else + { + return; + } + } + } + } + + + // 定位所有的校对项 public void LocateAllProofreadItems(List list) { @@ -115,7 +291,7 @@ namespace AIProofread.Model { foreach (var correct in item.CorrectItems) { - var range = LocateProofreadItem(correct,item,ref prevOffset); + var range = LocateProofreadItem(correct, item, ref prevOffset); if (range == null) continue; } @@ -149,10 +325,12 @@ namespace AIProofread.Model var paraText = paraRange.Text; var paraStart = paraRange.Start; - var offset = paraStart + ctx.SentenceOffset; + //var offset = paraStart + ctx.SentenceOffset; //var cutLength = Math.Min(c.InsertLen, paraText.Length - offset); - var sentence = paraText.Substring(ctx.SentenceOffset, ctx.InsertLength); - if (sentence == ctx.Insert) + var sentence = paraRange.Sentences[ctx.SentenceNumber]; //paraText.Substring(ctx.SentenceOffset, ctx.InsertLength); + ctx.SentenceOffset = sentence.Start; + var offset = paraStart + ctx.SentenceOffset; + if (sentence.Text == ctx.Insert) { // 比对原始内容与校对原文是否一致 var range = document.Range(offset + correct.Start, offset + correct.End); // @@ -221,8 +399,255 @@ namespace AIProofread.Model } + public void SendMessageToWeb(string msg, object data) + { + var json = JsonConvert.SerializeObject(new WebMessage(msg, data)); + ProofreadMainControl control = (ProofreadMainControl)TaskPane.Control; + try + { + if (control.web.CoreWebView2 == null) + { + Thread.Sleep(300); + } + control.web.CoreWebView2.PostWebMessageAsJson(json); + } + catch (Exception ex) + { + Logger.Log("SendMessage", "send message to web error \n" + ex.Message + "\n" + msg + data.ToString()); + } + } - + public void ClearAllProofreadMark() + { + try + { + selectProofreadId = -1; + foreach (var item in marks.Values) + { + if (item.mark != null) + { + if (item.content.Tag == "i" && item.content.IsAccept == AcceptStatus.Default) + { + item.mark.Text = ""; + } + item.ResetMarkStyle(); + } + } + DocumentUtil.ClearProofreadMarks(); + } + catch (Exception ex) + { + Logger.Log("ClearAllProofreadMark", ex); + } + // 清空marks + marks.Clear(); + } + /// + /// 选中标签 + /// + /// + public void SelectMarkById(int proofreadId) + { + if (proofreadId == selectProofreadId) return; + // 取消上一个标签移除 + if (selectProofreadId > 0 && marks.ContainsKey(selectProofreadId)) + { + var m = marks[selectProofreadId]; + if (m != null && CurrentDocument.Bookmarks.Exists(m.Name)) + { + marks[selectProofreadId].UnSelect(); + } + else + { + marks.Remove(selectProofreadId); + } + } + selectProofreadId = proofreadId; + + if (proofreadId > 0 && marks.ContainsKey(proofreadId)) + { + var mark = marks[proofreadId].mark; + if (mark == null) return; + // 已经不存在该标签了 + if (mark != null && !CurrentDocument.Bookmarks.Exists(mark.Name)) + { + marks.Remove(selectProofreadId); + return; + } + //object lineNum = (int)mark.Range.Information[WdInformation.wdFirstCharacterLineNumber] - 1; + //object goToLine = WdGoToItem.wdGoToLine; + //object goNext = WdGoToDirection.wdGoToNext; + //Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref goToLine, ref goNext, ref lineNum); + // + object bookmark = WdGoToItem.wdGoToBookmark; + object bookmarkName = mark.Name; + //doc.GoTo(mark); + //mark.Range.GoTo(); + Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref bookmark, ref missing, ref missing, ref bookmarkName); + // + //mark.DisableCharacterSpaceGrid = false; + // 先滚动到可视区域 + //doc.ActiveWindow.ScrollIntoView(mark.Range); + marks[proofreadId].Select(); + //Globals.ThisAddIn.SendMessageToWeb("select", proofreadId); + } + Globals.ThisAddIn.SendMessageToWeb("select-proofread", proofreadId); + } + + + public void InitProofread(List list) + { + int prevOffset = 0; + + List disabledList = new List(); + foreach (var correct in list) + { + Logger.Log(string.Format("correct content:", correct.Insert)); + if (correct.CorrectItems != null && correct.CorrectItems.Count > 0) + { + prevOffset = 0; + int index = 0; + foreach (var item in correct.CorrectItems) + { + Logger.Log(string.Format("mark type {0} data {1}->{2}", item.Tag, item.Origin, item.Text)); + int _prev = prevOffset; + // 查找对应区域并再该区域添加书签 + var mark = DocumentUtil.FindRangeAndCreateBookmark(item, correct, CurrentDocument, ref prevOffset); + // 防止调用方法中没有更新 + if (_prev >= prevOffset) + { + prevOffset = correct.SentenceOffset + item.Start; + } + + if (item.Tag != "i") index++; + if (mark != null) + { + marks.Add(item.Id, new ProofreadItem(item,correct.Insert, mark, Id)); + } + else + { + disabledList.Add(item.Id); + var msg = new Dictionary{ + {"message","没有找到标记对象" }, + { "origin",item }, + { "origin_correct",correct }, + { "new_text",correct.NewText }, + { "paragraph_num",correct.ParagraphNumber }, + }; + Logger.Log(JsonConvert.SerializeObject(msg)); + } + } + } + } + foreach (var item in marks) + { + if (item.Value.mark != null) + { + if (item.Value.content.Tag == "i") + { + item.Value.mark.Text = ToolUtil.GetBlankText(item.Value.content.Text.Length); + } + if (item.Value.content.Color != null) + { + try + { + var color = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.Value.content.Color)); + // 给选区添加背景颜色 + item.Value.mark.Shading.BackgroundPatternColor = color; + } + catch (Exception) + { + //item.Value.mark.Shading.BackgroundPatternColor = WdColor.wdColorLightOrange; + } + } + } + } + + // 隐藏面板对应校对项 + MainPanelWebMessage.DisabledProofreadItem(disabledList); + } + + + public void InitProofreadCache(List list) + { + marks.Clear(); + + foreach (var correct in list) + { + correct.CorrectItems.ForEach(item => + { + var mark = DocumentUtil.FindBookMarkByCorrect(item); + var pi = new ProofreadItem(item,correct.Insert, mark, Id); + marks.Add(item.Id, pi); + }); + //marks.Add(item.Id, new ProofreadItem(item.CorrectItems[0], null, Id)); + } + } + + private void FindMarkByCorrectItem() + { + + } + + public DocumentContent GetAllParagraphs() + { + string rangeText = CurrentDocument.Content.Text; + string trimText = HostHelper.ReplaceSpecialChars(rangeText, isReplaceMultSpaceLine: true); + + string[] separator = new string[5] { "\r\a", "\a", "\r", "\v", "\f" }; + string[] array4 = rangeText.Split(separator, StringSplitOptions.None); + string[] array5 = trimText.Split('\n'); + + List list = new List(); + var paragraphs = CurrentDocument.Paragraphs; + int total = paragraphs.Count; + for (int i = 1; i <= total; i++) + { + list.Add(GetParagraphText(paragraphs[i])); + } + + return new DocumentContent() + { + OriginCut = array4, + TrimCut = array5, + Paragraphs = list.ToArray(), + }; + } + + private string GetParagraphText(Paragraph paragraph) + { + // 需要 + return GetRangeText(paragraph.Range); + } + + /// + /// 获取文档段落总数 + /// + /// + public int GetTotalParagraphNumber() + { + return CurrentDocument.Paragraphs.Count; + } + + /// + /// 读取文档原始文件并转换成base64 + /// + /// + public string GetOriginFileData() + { + FileStream fs = new FileStream(CurrentDocument.FullName, FileMode.Open, FileAccess.Read, FileShare.Read); + byte[] bytes = new byte[fs.Length]; + fs.Read(bytes, 0, bytes.Length); + return Convert.ToBase64String(bytes); + } + + internal void ProcessMark(int proofreadId, int status) + { + if (proofreadId > 0 && marks.ContainsKey(proofreadId)) + { + marks[proofreadId].Process(status); + } + } } } diff --git a/AIProofread/Model/DocumentList.cs b/AIProofread/Model/DocumentList.cs new file mode 100644 index 0000000..6039d4c --- /dev/null +++ b/AIProofread/Model/DocumentList.cs @@ -0,0 +1,123 @@ +using Microsoft.Office.Interop.Word; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIProofread.Model +{ + /// + /// 文档列表 + /// + public class DocumentList + { + public List documentList = new List(); + public DocumentInfo ActiveDocument { get; set; } + public int Count => documentList.Count; + + public void Add(DocumentInfo documentInfo) + { + documentList.Add(documentInfo); + } + + public void Clear() + { + documentList.ForEach(doc =>{ doc.Dispose(); }); + + documentList.Clear(); + } + + public DocumentInfo Get(int index) + { + return documentList[index]; + } + public DocumentInfo GetById(int id) + { + return Count > 0 ? documentList.FirstOrDefault(x => x.Id == id) : null; + } + public DocumentInfo Get(string uniqueId) + { + return Count > 0 ? documentList.FirstOrDefault(x => x.UniqueId == uniqueId) : null; + } + public DocumentInfo Get(Document doc) + { + return Count > 0 && doc != null ? documentList.FirstOrDefault(x => x.CurrentDocument == doc) : null; + } + + public DocumentInfo GetActive() + { + // documentList.FirstOrDefault(x => x.IsActive) + return Count > 0 ? ActiveDocument : null; + } + + public bool Contains(DocumentInfo documentInfo) + { + return Count > 0 && documentList.Contains(documentInfo); + } + + public bool Contains(string uniqueId) + { + return Count > 0 && documentList.Any(x => x.UniqueId == uniqueId); + } + + // 通过文档判断是否包含 + public bool Contains(Document originDocument) + { + return Count > 0 && originDocument != null && documentList.Any(x => x.CurrentDocument == originDocument); + } + + /// + /// 移除文档 + /// + /// + /// + public bool Remove(DocumentInfo documentInfo) + { + return documentList.Remove(documentInfo); + } + + /// + /// 获取文档的索引 + /// + /// + /// + public int IndexOf(DocumentInfo item) + { + return documentList.IndexOf(item); + } + + /// + /// 设置当前激活的文档 + /// + /// + public DocumentInfo SetActiveDocument(Document originDocument) + { + if (originDocument == null) return null; + var document = Get(originDocument); + + // 如果不存在,则添加 + if (document == null) + { + document = new DocumentInfo(originDocument); + Add(document); + } + if (ActiveDocument == document) return document; + else if (Globals.ThisAddIn.IsWPS) + { + // WPS 只有一个窗口 所以需要先关闭之前文档的面板 + ActiveDocument?.Deactive(); + } + // 如果存在,则设置激活 + ActiveDocument = document; + //document.IsActive = true; + document.Active(); + return document; + } + + internal void HideAllPane() + { + documentList.ForEach(d => d.HidePane()); + } + } +} diff --git a/AIProofread/ProofreadItem.cs b/AIProofread/ProofreadItem.cs index f23a4fa..481f44a 100644 --- a/AIProofread/ProofreadItem.cs +++ b/AIProofread/ProofreadItem.cs @@ -8,9 +8,11 @@ using Bookmark = Microsoft.Office.Tools.Word.Bookmark; namespace UtilLib { + public class ProofreadItem { public Bookmark mark; + public string OriginSentence { get; set; } public CorrectItem content; private float originSize; private WdColor originColor; @@ -18,10 +20,11 @@ namespace UtilLib public string Name { get; set; } public int DocumentId { get; set; } - public ProofreadItem(CorrectItem content,int documentId) + public ProofreadItem(CorrectItem content,string originSentence,int documentId) { this.content = content; this.DocumentId = documentId; + this.OriginSentence = originSentence; InitBookMark(null); SetMarkName(); } @@ -31,9 +34,10 @@ namespace UtilLib this.Name = this.mark != null ? mark.Name : Config.BuildBookmarkName(content.Id); } - public ProofreadItem(CorrectItem content, Bookmark bookmark, int documentId) + public ProofreadItem(CorrectItem content, string originSentence, Bookmark bookmark, int documentId) { this.DocumentId = documentId; + this.OriginSentence = originSentence; this.content = content; if (bookmark != null) { diff --git a/AIProofread/Properties/Resources.Designer.cs b/AIProofread/Properties/Resources.Designer.cs index d386324..125e77e 100644 --- a/AIProofread/Properties/Resources.Designer.cs +++ b/AIProofread/Properties/Resources.Designer.cs @@ -60,6 +60,26 @@ namespace AIProofread.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap button { + get { + object obj = ResourceManager.GetObject("button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap button_default { + get { + object obj = ResourceManager.GetObject("button_default", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -70,6 +90,16 @@ namespace AIProofread.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap form_bg { + get { + object obj = ResourceManager.GetObject("form_bg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -110,6 +140,46 @@ namespace AIProofread.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_export { + get { + object obj = ResourceManager.GetObject("icon-export", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_export_wps { + get { + object obj = ResourceManager.GetObject("icon-export-wps", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_history { + get { + object obj = ResourceManager.GetObject("icon-history", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_history_wps { + get { + object obj = ResourceManager.GetObject("icon-history-wps", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -130,6 +200,26 @@ namespace AIProofread.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_panel { + get { + object obj = ResourceManager.GetObject("icon-panel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon_panel_wps { + get { + object obj = ResourceManager.GetObject("icon-panel-wps", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// diff --git a/AIProofread/Properties/Resources.resx b/AIProofread/Properties/Resources.resx index 54ecec9..645ba9f 100644 --- a/AIProofread/Properties/Resources.resx +++ b/AIProofread/Properties/Resources.resx @@ -118,67 +118,94 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\icon-proofread.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-setting-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-logout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-phone-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-user-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-phone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-book-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-proofread-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-update-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-book.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\favicon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-clear-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-logout-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon-update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon-panel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icon-user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon-refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon-save-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon-refresh-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon-proofread-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-phone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-user-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\form_bg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icon-save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon-save-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon-logout-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-book-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-update-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-clear-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-book.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-panel-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\favicon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-refresh-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\button_default.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-setting-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-phone-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-history-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-logout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-history.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-proofread.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-export-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon-export.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/AIProofread/Resources/button.png b/AIProofread/Resources/button.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e0a9fcfdd937b8c69efeae26fd7e413e2f07c1 GIT binary patch literal 4951 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 V9k<+?5)1$U002ovPDHLkV1lQfUjYCB literal 0 HcmV?d00001 diff --git a/AIProofread/Resources/button_default.png b/AIProofread/Resources/button_default.png new file mode 100644 index 0000000000000000000000000000000000000000..9a73f5d297fd86f96b3e381d853349bee41a2b21 GIT binary patch literal 456 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 literal 0 HcmV?d00001 diff --git a/AIProofread/Resources/icon-export-wps.jpg b/AIProofread/Resources/icon-export-wps.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98e57421c394a7e9dba796a5b24dfd6880ffafb9 GIT binary patch literal 4367 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 LEbmv7)xrM&5ZLkG literal 0 HcmV?d00001 diff --git a/AIProofread/Resources/icon-export.png b/AIProofread/Resources/icon-export.png new file mode 100644 index 0000000000000000000000000000000000000000..f449f131fa07fe3659a935f4204dfd8a37f34c63 GIT binary patch literal 3340 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 Sd=+AP*K^YLFAKogm;VD0NXPmB literal 0 HcmV?d00001 diff --git a/AIProofread/Resources/icon-history.png b/AIProofread/Resources/icon-history.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad3d17a124da4672bf89b10f571f9c3f92a147d GIT binary patch literal 1804 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 N002ovPDHLkV1mM+dpiIC literal 0 HcmV?d00001 diff --git a/AIProofread/Resources/icon-save-wps.jpg b/AIProofread/Resources/icon-save-wps.jpg index c4155331cc861d9edae01d268ce4cf643d922fcd..bf749cc40285eaaff271d2f57f3f4c10a41b3659 100644 GIT binary patch literal 5470 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 literal 3993 zcma)82|SeR_kU+KWEo>ggfW&7W(;GPh_Op!S0QSQ$ueeXj9r%sMN}%kB6S<0xS_PD zM3xq!uF5S-wo9Tek+>B3zeCIY{QtNA=l6VO<~h%K&iS72InQ~Yca}Pr1_339xbR&7 z;NqeWpnxA^=`TRmKAORb2Ot0(REGe-(jW{UCJ^u_cswV{h#tZXW*RZLY2 zuh`gFqgWFoEP4GK%-GyI8g#Rhrx8Q zx59xCM&aQh6k`)ImEd4XGIKB|8yh<~+S-~LQ|-;EB$Bb6nT3PtH(z@$Bbv?R2)_A- z{O~pVsjsLV*gP<@J(C|E!whlcbJ^JCoGIZy=VJ0xysy3?Kj&ilQ(rtt1}{3R>6M+ zfXGflF)$5duR;^FCw=dg!F^SKdczx@$;o4>!l%IsL^%Ko0jq%co&`i!!`PD!peL!q zD_Fwry*V}wOWlAZ3V+z)b$7X#>-D#lR#|pp;1upW#Yz6C!_HAqS zTnDGtc;>^(yQU*&6!cz`_edYf26Ye3`!X(sHzMgfqO+?)qmVly5ui2&gd{L$>n$fr zbpGmYt?h3{#>X<(6+3FuOY1{Bv>-x{qll!M%ZiwZ|FxW!_?!ZBd!8!UST_KG98q8n z5CoJ+UR}P(tKoif-;UpI)bk~0hT@fbO?>2`3TM-++~h@dKD(;*1(A)4PQInvVt}ij zrOZ+!U00XC7@lx%<;Q9bsx+oa7oYWMx8l|EGQ2AFE&|Q{`s?|zI#pA*$q(kX1d$!* z`i3WH%pn0cd-Bp9PWDu73(*x--uB|=&GtVk(B#f{ouiLghq9&o2Vr)Y`|pyM=|M&G z;<_XI*_X((fj4T{^t)AuE!xjFERfr0^gGJ>wK{He&3I@8ay=q^rrLyc!-36tw@#Z~ zH!7Zw2;4M(zg)R`wNk;xp1>OgnOSB-s}*ZlrO|q4^HoYFO`h8cdR|`B3 z;?<(zN7|pCrVh8Vz74Z3fQXI|g3 zyX`^mdqsH9Q4eAqbPxCVSa@+ixNA{KKQI$%P{Hb?F9x7UmtQpH&nhKvX?!$No38%H z<^2H&J}^2X}!Vea%Frvt4!x4hL{ zv{tVy(#{;5W|-MKxdr2NGpP%u4t^h{MmEx9HyqE~3@r>=IIn){F41vOxmT>QSFGvn zx&_&is`A>9& z-oR*~ZGsWz80DdSbmz$t4(*k>;&5-%-tb6UDJy%nymLikqp#DpKe<-Y3w?^ChMfI# z|zWHXft$htYi4+e`Tfxdiz~L4DI3GHorpGsTlDOpuro;W3quqfi?$Y>GU- zc{%GRiOFjlvRZ<7yXzJPvyNV{fY{|?F=H)`r>{Sgzw$hD`b>H^sOHl3V4v?9Blo{9U-|X%X=zCpI zM)}M2YPHV9+EskcVEwfx>f*fTerIsDOau39wU%5~qFo?Crutvh9PoI@fjf2-X<_q#f8S3>0 z>;;?ifLg0%j@_h{_(z25W!0lvsycuK_N8m-35@ue-D)X@x0-EdhRY4!`-1a8>7~yp zfPbD=DaQGk0@hIRpz_Vv7%xDUSY5`HE6&*NpCW!*GR&QCnO?IP0gv`XG`)FNCwB$D?|yU`d?7hEmaB4NbXS)D=eBOL zo)2wJ?c#mUQ#iHyU#Gp*AhTk@11)vaggesqs{78Xj9#ij%tDrc zbnHd6D_nnrR=3XjH}%x&xfj*;(fSkQgO@5cHJKlSuJK#2_Vx9h@%7ySWP1)IJr^)C z;Mq>Jg|(k7n~g}pW)0goQ?+al)QwdY%A?XHhaqSppym10wob~Uoe!0hGFASfzjpUS z;ls6wH#CVFjj4U4KEG2w#on%zaf7xpzL0e0@5ELUi4$evp@GGDxo$o>S1abS>eD3h J<6bUx{SU_mC1n5r diff --git a/AIProofread/Resources/icon-save.png b/AIProofread/Resources/icon-save.png index 73a5f4a3d94084ae3b3704b6970ccc9e653851c7..7ef3b417101f3a61a2d8223349f86a12a5c9c3b5 100644 GIT binary patch literal 1073 zcmV-11kU@3P)P67xRVbHast8$#M0tpMOaVp? zq9a}lMrRA?wdQ+iY0$A1eKd_FdBISF|s)bU&hfTb6ni?OB$3fh;I;sVahIgy`ea z^0a}G15V>{=iE&t%eN7}#4FN2c3wSmj`>G0T^DpoC()J#Y3IEX!Tg_YfM&Q3=R3_` ziN5wAy0*HKGdwdr=b~feuXLWaP!$UtY_EXwDrS*C=f4xI#c8!ebVOsrXEQ`NfhM&|1vOFB&7=Bh^f0-UufZLlUGQb=7mfNVi;atd zN|xP3xwvGb!*%YMW{S{++{i_?*M`Dn1ehih531Xl1ZYH?VDZCS zrry!(>Vkx2V)^*f@+4?Ni(nyEMC*pAR=C+;-(aJZ{{J?24lR8qjivo2HR9 zKx*m}yD)?_cR`Pw!)yhoc&^BE&h?4d!?RVs=0GvZBV69i#to!J*C30nTQn_;6^Jo0 z*ZPAvun4m{qO4qSv{_GG+sYi-WQXi4=9(5QxgUY}(9j>{AN7!9LS|n#>s{&oZ9g0KOJ<{NBX&FT9+CgzG){>c>C>KnUKo*gL?s3;& zRR4ahTyXQ8_NAf3*X>No>pAi93?!3+P3rnMbc=Gq=doBtZl;+gZgsMZEmsD(<{IQ= z_hkP4J}5@H;NgSb3d3|*!lWMs#DY~{BQ;rs=bry+jL>u+A?4Ilf z{W|j5Bx-&BOi?@g$CC67H#k==RuR zlN#TNwbo(r!$;=|kBMmALwHTB;m$`gsks4gCoLZPJm$ok5xb|9WxFvGsA7RpssE0C z2~3N}iS4O9eYH-)Hf_)e1qYo_aM1BAOI$k%0z|l_gN{ouwfPd@cS!1ly3TMt63yNJ r+lV7r2?zp&mBwjI%X@W5$bj$Px%5J^NqRCr$Pnn6y(Fc3v!aS^&qPeBjSO6*vsrvOgT>|lo!4gsfVwz){Bc3X(h`}=K0Sb+leVI*Rk1K_y3RocE;G(a$7%B;xHKk=tCky$Q1w?Le2n4 z5WE1^yTf-IC6}fi!tEcr2W9;By?V6PJWa-$O^2)i^nr6BWCwr?Axi)p2+07L=D0c8 zRe4``zA{bm7)m;14PZ_Q>)m11w`UK)2f-=mUjXPK_{t~%NK9t9;Gis2<`z3KOpx+? zPyiI*IS-)JS&GC$YkX?Ec8Voe1wtSIU~*!mrO;$dFgpc=0+O~TuK;O)q5c4%bYd0F z141(>ZBI@C(tu+3kG>g-9e{Lv0Pw6M)I2~sL$Uiq0Z_pB<*)i?D7J*9<0A!Pra=2v z-P#-TQWV9Vbf$>?J9Dy|;d_Hnzi0|rAb1xm3qlkC3kJ`Ipbj8`;8_sV0UVqC$28}S zv72&Re}?i=(%v@JgDt-NW_We(RhMt<7yw2eRsBZrF1TwDLc7E0074HSne}UZxrd|x zpuG;@&HxmkOn^H9NCBjP@@|kTLFEkae(RAM__`Nh1-u`j&fZXRX~{lcLGobQ3jc1P+76b4Hv8e$vv_1 k0|7v&3@QUpZaAlaGid0&Zhom^_5c6?07*qoM6N<$f(twSssI20 diff --git a/AIProofread/Ribbon1.Designer.cs b/AIProofread/Ribbon1.Designer.cs index 2c8b486..d71bce4 100644 --- a/AIProofread/Ribbon1.Designer.cs +++ b/AIProofread/Ribbon1.Designer.cs @@ -39,6 +39,7 @@ namespace AIProofread this.tabAIProofread = this.Factory.CreateRibbonTab(); this.group1 = this.Factory.CreateRibbonGroup(); this.BtnProofreadAll = this.Factory.CreateRibbonButton(); + this.BtnExportProofreadResult = this.Factory.CreateRibbonButton(); this.btnClear = this.Factory.CreateRibbonButton(); this.btnOpenLexicon = this.Factory.CreateRibbonButton(); this.btnSetting = this.Factory.CreateRibbonButton(); @@ -51,14 +52,20 @@ namespace AIProofread this.Group = this.Factory.CreateRibbonGroup(); this.ButtonSaveCache = this.Factory.CreateRibbonButton(); this.ButtonLoadCache = this.Factory.CreateRibbonButton(); + this.group2 = this.Factory.CreateRibbonGroup(); + this.BtnShowPanel = this.Factory.CreateRibbonButton(); this.grpDebug = this.Factory.CreateRibbonGroup(); this.btnShowPane = this.Factory.CreateRibbonButton(); this.btnHidePane = this.Factory.CreateRibbonButton(); this.BtnOpenLog = this.Factory.CreateRibbonButton(); this.button1 = this.Factory.CreateRibbonButton(); + this.BtnOpenLogger = this.Factory.CreateRibbonButton(); + this.BtnTest = this.Factory.CreateRibbonButton(); + this.BtnOpenAppDir = this.Factory.CreateRibbonButton(); this.tabAIProofread.SuspendLayout(); this.group1.SuspendLayout(); this.Group.SuspendLayout(); + this.group2.SuspendLayout(); this.grpDebug.SuspendLayout(); this.SuspendLayout(); // @@ -66,6 +73,7 @@ namespace AIProofread // this.tabAIProofread.Groups.Add(this.group1); this.tabAIProofread.Groups.Add(this.Group); + this.tabAIProofread.Groups.Add(this.group2); this.tabAIProofread.Groups.Add(this.grpDebug); this.tabAIProofread.Label = "AI校对王"; this.tabAIProofread.Name = "tabAIProofread"; @@ -74,6 +82,7 @@ namespace AIProofread // group1 // this.group1.Items.Add(this.BtnProofreadAll); + this.group1.Items.Add(this.BtnExportProofreadResult); this.group1.Items.Add(this.btnClear); this.group1.Items.Add(this.btnOpenLexicon); this.group1.Items.Add(this.btnSetting); @@ -89,16 +98,25 @@ namespace AIProofread // this.BtnProofreadAll.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.BtnProofreadAll.Image = global::AIProofread.Properties.Resources.icon_proofread; - this.BtnProofreadAll.Label = "全文校对\n"; + this.BtnProofreadAll.Label = "全文校对\r\n"; this.BtnProofreadAll.Name = "BtnProofreadAll"; this.BtnProofreadAll.ShowImage = true; this.BtnProofreadAll.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnProofreadAll_Click); // + // BtnExportProofreadResult + // + this.BtnExportProofreadResult.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.BtnExportProofreadResult.Image = global::AIProofread.Properties.Resources.icon_export; + this.BtnExportProofreadResult.Label = "导出勘误表\r\n"; + this.BtnExportProofreadResult.Name = "BtnExportProofreadResult"; + this.BtnExportProofreadResult.ShowImage = true; + this.BtnExportProofreadResult.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnExportProofreadResult_Click); + // // btnClear // this.btnClear.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.btnClear.Image = global::AIProofread.Properties.Resources.icon_clear; - this.btnClear.Label = "清除标注\n"; + this.btnClear.Label = "清除标注\r\n"; this.btnClear.Name = "btnClear"; this.btnClear.ShowImage = true; this.btnClear.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnClear_Click); @@ -107,7 +125,7 @@ namespace AIProofread // this.btnOpenLexicon.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.btnOpenLexicon.Image = global::AIProofread.Properties.Resources.icon_book; - this.btnOpenLexicon.Label = "词库管理\n"; + this.btnOpenLexicon.Label = "词库管理\r\n"; this.btnOpenLexicon.Name = "btnOpenLexicon"; this.btnOpenLexicon.ShowImage = true; this.btnOpenLexicon.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnOpenLexicon_Click); @@ -116,7 +134,7 @@ namespace AIProofread // this.btnSetting.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.btnSetting.Image = global::AIProofread.Properties.Resources.icon_setting; - this.btnSetting.Label = "插件设置\n"; + this.btnSetting.Label = "插件设置\r\n"; this.btnSetting.Name = "btnSetting"; this.btnSetting.ShowImage = true; this.btnSetting.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnSetting_Click); @@ -125,7 +143,7 @@ namespace AIProofread // this.BtnGetContact.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.BtnGetContact.Image = global::AIProofread.Properties.Resources.icon_phone; - this.BtnGetContact.Label = "联系客服\n"; + this.BtnGetContact.Label = "联系客服\r\n"; this.BtnGetContact.Name = "BtnGetContact"; this.BtnGetContact.ShowImage = true; this.BtnGetContact.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnGetContact_Click); @@ -134,7 +152,7 @@ namespace AIProofread // this.BtnUpdate.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.BtnUpdate.Image = global::AIProofread.Properties.Resources.icon_update; - this.BtnUpdate.Label = "版本更新\n"; + this.BtnUpdate.Label = "版本更新\r\n"; this.BtnUpdate.Name = "BtnUpdate"; this.BtnUpdate.ShowImage = true; this.BtnUpdate.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnUpdate_Click); @@ -143,7 +161,7 @@ namespace AIProofread // this.btnLogin.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.btnLogin.Image = global::AIProofread.Properties.Resources.icon_user; - this.btnLogin.Label = "用户登录\n"; + this.btnLogin.Label = "用户登录\r\n"; this.btnLogin.Name = "btnLogin"; this.btnLogin.ShowImage = true; this.btnLogin.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnLogin_Click); @@ -152,7 +170,7 @@ namespace AIProofread // this.btnLogout.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.btnLogout.Image = global::AIProofread.Properties.Resources.icon_logout; - this.btnLogout.Label = "退出登录\n"; + this.btnLogout.Label = "退出登录\r\n"; this.btnLogout.Name = "btnLogout"; this.btnLogout.ShowImage = true; this.btnLogout.Visible = false; @@ -180,17 +198,33 @@ namespace AIProofread // this.ButtonSaveCache.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; this.ButtonSaveCache.Image = global::AIProofread.Properties.Resources.icon_save; - this.ButtonSaveCache.Label = "手动保存数据"; + this.ButtonSaveCache.Label = "暂存文件\r\n"; this.ButtonSaveCache.Name = "ButtonSaveCache"; this.ButtonSaveCache.ShowImage = true; + this.ButtonSaveCache.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ButtonSaveCache_Click); // // ButtonLoadCache // this.ButtonLoadCache.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; - this.ButtonLoadCache.Image = global::AIProofread.Properties.Resources.icon_refresh; - this.ButtonLoadCache.Label = "追踪历史数据"; + this.ButtonLoadCache.Image = global::AIProofread.Properties.Resources.icon_history; + this.ButtonLoadCache.Label = "加载文件\r\n"; this.ButtonLoadCache.Name = "ButtonLoadCache"; this.ButtonLoadCache.ShowImage = true; + this.ButtonLoadCache.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ButtonLoadCache_Click); + // + // group2 + // + this.group2.Items.Add(this.BtnShowPanel); + this.group2.Name = "group2"; + // + // BtnShowPanel + // + this.BtnShowPanel.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.BtnShowPanel.Image = global::AIProofread.Properties.Resources.icon_panel; + this.BtnShowPanel.Label = "显示面板\r\n"; + this.BtnShowPanel.Name = "BtnShowPanel"; + this.BtnShowPanel.ShowImage = true; + this.BtnShowPanel.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnShowPanel_Click); // // grpDebug // @@ -198,6 +232,9 @@ namespace AIProofread this.grpDebug.Items.Add(this.btnHidePane); this.grpDebug.Items.Add(this.BtnOpenLog); this.grpDebug.Items.Add(this.button1); + this.grpDebug.Items.Add(this.BtnOpenLogger); + this.grpDebug.Items.Add(this.BtnTest); + this.grpDebug.Items.Add(this.BtnOpenAppDir); this.grpDebug.Label = "开发调试"; this.grpDebug.Name = "grpDebug"; this.grpDebug.Visible = false; @@ -226,6 +263,24 @@ namespace AIProofread this.button1.Name = "button1"; this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button1_Click); // + // BtnOpenLogger + // + this.BtnOpenLogger.Label = "打开日志窗口"; + this.BtnOpenLogger.Name = "BtnOpenLogger"; + this.BtnOpenLogger.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenLogger_Click); + // + // BtnTest + // + this.BtnTest.Label = "button2"; + this.BtnTest.Name = "BtnTest"; + this.BtnTest.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnTest_Click); + // + // BtnOpenAppDir + // + this.BtnOpenAppDir.Label = "打开插件目录"; + this.BtnOpenAppDir.Name = "BtnOpenAppDir"; + this.BtnOpenAppDir.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenAppDir_Click); + // // Ribbon1 // this.Name = "Ribbon1"; @@ -238,6 +293,8 @@ namespace AIProofread this.group1.PerformLayout(); this.Group.ResumeLayout(false); this.Group.PerformLayout(); + this.group2.ResumeLayout(false); + this.group2.PerformLayout(); this.grpDebug.ResumeLayout(false); this.grpDebug.PerformLayout(); this.ResumeLayout(false); @@ -266,6 +323,12 @@ namespace AIProofread internal Microsoft.Office.Tools.Ribbon.RibbonGroup Group; internal Microsoft.Office.Tools.Ribbon.RibbonButton ButtonSaveCache; internal Microsoft.Office.Tools.Ribbon.RibbonButton ButtonLoadCache; + internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnOpenLogger; + internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnTest; + internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnOpenAppDir; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup group2; + internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnShowPanel; + internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnExportProofreadResult; } partial class ThisRibbonCollection diff --git a/AIProofread/Ribbon1.cs b/AIProofread/Ribbon1.cs index 89b958f..080af1b 100644 --- a/AIProofread/Ribbon1.cs +++ b/AIProofread/Ribbon1.cs @@ -15,12 +15,16 @@ using System.Linq; using System.Text; using AIProofread.core; using System.Windows.Forms; +using NPOI.XSSF.UserModel; +using NPOI.SS.UserModel; +using AIProofread.Model; namespace AIProofread { public partial class Ribbon1 { private bool IS_LOGIN = false; + private static bool IS_WPS = false; private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { @@ -42,8 +46,12 @@ namespace AIProofread } } + /// + /// 初始化WPS相关功能(图标) + /// public void InitWPS() { + IS_WPS = true; BtnProofreadAll.Image = AIProofread.Properties.Resources.icon_proofread_wps; btnClear.Image = AIProofread.Properties.Resources.icon_clear_wps; btnOpenLexicon.Image = AIProofread.Properties.Resources.icon_book_wps; @@ -55,13 +63,18 @@ namespace AIProofread // 缓存相关 ButtonLoadCache.Image = AIProofread.Properties.Resources.icon_refresh_wps; ButtonSaveCache.Image = AIProofread.Properties.Resources.icon_save_wps; + // 显示面板 + BtnShowPanel.Image = AIProofread.Properties.Resources.icon_panel_wps; + // 导出校对结果 + BtnExportProofreadResult.Image = AIProofread.Properties.Resources.icon_export_wps; } public void ProcessLoginInfo(Userinfo userinfo) { if (userinfo == null) return; - + // 登录状态 IS_LOGIN = true; + // 切换登录状态 ToggleLogin(); LblNickname.Label = userinfo.nickname; LblDate.Label = userinfo.expiration; @@ -69,13 +82,24 @@ namespace AIProofread // 关闭所有登录窗口 foreach (var item in Globals.ThisAddIn.LoginFormList) { - if (!item.IsDisposed) + try { - item.Close(); + if (!item.IsDisposed) + { + item.Close(); + } + } + catch (Exception ex) + { + Logger.Log(this.Name, ex); } } + Globals.ThisAddIn.LoginFormList.Clear(); } + /// + /// 注销登录 + /// public void ProcessLogout() { IS_LOGIN = false; @@ -142,8 +166,8 @@ namespace AIProofread var result = MessageBox.Show("请确认是否清除此文档的所有校对标注?", "提示", MessageBoxButtons.OKCancel); if(result == DialogResult.OK) { - Bridge.bridge.clearAllProofreadMark(null); - Globals.ThisAddIn.SendMessageToWeb("clear-tips", null); + //Bridge.bridge.clearAllProofreadMark(null); + Globals.ThisAddIn.ClearAllProofreadMark(); } } @@ -409,5 +433,170 @@ namespace AIProofread { Bridge.StartUpgradeProcess(); } + + private void BtnOpenLogger_Click(object sender, RibbonControlEventArgs e) + { + // 判断日志窗口是否已经存在或者打开 + if (Logger.LoggerForm == null || Logger.LoggerForm.IsDisposed) + { + // 创建日志窗口 + Logger.LoggerForm = new FormLogger(); + } + Logger.LoggerForm.Show(); + } + + private void BtnTest_Click(object sender, RibbonControlEventArgs e) + { + // 获取当前系统时间戳 + int time = (int)(DateTime.Now.Ticks / 10000000); + BtnTest.Label = "测试按钮" + time; + } + + private void ButtonSaveCache_Click(object sender, RibbonControlEventArgs e) + { + Globals.ThisAddIn.SendMessageToWeb("save-cache", ""); + } + + private void ButtonLoadCache_Click(object sender, RibbonControlEventArgs e) + { + Globals.ThisAddIn.SendMessageToWeb("load-cache", ""); + } + + private void BtnShowPanel_Click(object sender, RibbonControlEventArgs e) + { + Globals.ThisAddIn.SendMessageToWeb("show-panel", ""); + } + + private void BtnOpenAppDir_Click(object sender, RibbonControlEventArgs e) + { + // 打开日志目录 + Process.Start(AppDomain.CurrentDomain.BaseDirectory); + } + + private ICellStyle CreateBaseCellStyle(IWorkbook workbook) + { + var style = workbook.CreateCellStyle(); + style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + style.WrapText = true; + + return style; + } + private IFont CreateBaseFont(IWorkbook workbook) + { + // 宋体 11 + var font = workbook.CreateFont(); + font.FontName = "宋体"; + font.FontHeightInPoints = 11; + + return font; + } + + + private void BtnExportProofreadResult_Click(object sender, RibbonControlEventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "Excel文件|*.xlsx"; + var result = sfd.ShowDialog(); + // 如果用户取消选择,则返回 + if(result == DialogResult.Cancel) + { + return; + } + using (var fs = File.OpenWrite(sfd.FileName)) + { + var book = new XSSFWorkbook(); + var sheet = book.CreateSheet("Sheet1"); + // 设置表格样式 + var style = CreateBaseCellStyle(book); + style.SetFont(CreateBaseFont(book)); + style.BorderBottom = NPOI.SS.UserModel.BorderStyle.None; + style.BorderTop = NPOI.SS.UserModel.BorderStyle.None; + style.BorderLeft = NPOI.SS.UserModel.BorderStyle.None; + style.BorderRight = NPOI.SS.UserModel.BorderStyle.None; + style.WrapText = true; + sheet.SetDefaultColumnStyle(0, style); + sheet.SetDefaultColumnStyle(1, style); + sheet.SetDefaultColumnStyle(2, style); + sheet.SetDefaultColumnStyle(3, style); + sheet.SetDefaultColumnStyle(4, style); + sheet.SetDefaultColumnStyle(5, style); + sheet.SetDefaultColumnStyle(6, style); + + + // 表头设置 + var row = sheet.CreateRow(0); + row.CreateCell(0).SetCellValue("序号"); + row.CreateCell(1).SetCellValue("页"); + row.CreateCell(2).SetCellValue("行"); + + var cell = row.CreateCell(3);// + // 设置宽度 + sheet.SetColumnWidth(3, 50 * 256); + cell.SetCellValue("详细信息"); + + var cellExp = row.CreateCell(4); + // 设置文字颜色为红色 + var expStyle = book.CreateCellStyle(); + var f1 = CreateBaseFont(book); + f1.Color = NPOI.HSSF.Util.HSSFColor.Red.Index; + expStyle.SetFont(f1); + cellExp.CellStyle = expStyle; + cellExp.SetCellValue("异常"); + + var suggestCell = row.CreateCell(5);// + suggestCell.CellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index; + suggestCell.SetCellValue("建议"); + + row.CreateCell(6).SetCellValue("处理状态"); + + var blackFont = CreateBaseFont(book); + blackFont.Color = NPOI.HSSF.Util.HSSFColor.Black.Index; + var redFont = CreateBaseFont(book); + redFont.Color = NPOI.HSSF.Util.HSSFColor.Red.Index; + + int id = 1; + foreach (var item in Globals.ThisAddIn.ActiveDocument.marks) + { + if(item.Value.mark == null) continue; + var it = item.Value.content; + var range = item.Value.mark.Range; + + // 获取书签在文档的页码数 + var pageNumber = range.get_Information(WdInformation.wdActiveEndPageNumber); + // 获取书签在当前页面的行数 + var lineNumber = range.get_Information(WdInformation.wdFirstCharacterLineNumber); + row = sheet.CreateRow(id); + row.CreateCell(0).SetCellValue(id); + row.CreateCell(1).SetCellValue(pageNumber); + row.CreateCell(2).SetCellValue(lineNumber); + + XSSFRichTextString originText = new XSSFRichTextString(item.Value.OriginSentence); + originText.ApplyFont(blackFont); + var startIndex = item.Value.OriginSentence.IndexOf(it.Origin); + // 对查找内容引用红色 + originText.ApplyFont(startIndex, startIndex + it.Origin.Length, redFont); + row.CreateCell(3).SetCellValue(originText); + + row.CreateCell(4).SetCellValue(it.Origin); + row.CreateCell(5).SetCellValue(it.Text); + row.CreateCell(6).SetCellValue(StatusText(it.IsAccept)); + id++; + } + + // 保存到文件 + book.Write(fs); + MessageBox.Show("导出成功"); + } + } + + private string StatusText(int status) + { + if(status == AcceptStatus.Accept) return "采纳"; + else if (status == AcceptStatus.Review) return "采纳"; + else if (status == AcceptStatus.Ignore) return "忽略"; + + return "未处理"; + } } } diff --git a/AIProofread/Ribbon1.resx b/AIProofread/Ribbon1.resx index 835e4e5..22c03e6 100644 --- a/AIProofread/Ribbon1.resx +++ b/AIProofread/Ribbon1.resx @@ -120,4 +120,19 @@ True + + True + + + True + + + True + + + True + + + True + \ No newline at end of file diff --git a/AIProofread/ThisAddIn.cs b/AIProofread/ThisAddIn.cs index 83b1f21..fcd6220 100644 --- a/AIProofread/ThisAddIn.cs +++ b/AIProofread/ThisAddIn.cs @@ -1,16 +1,16 @@ using System; -using System.Collections.Generic; using Newtonsoft.Json; using System.Threading; using Microsoft.Office.Interop.Word; -using System.Linq; using System.Windows.Forms; using System.IO; using AIProofread.Controls; using UtilLib; using AIProofread.Model; +using System.Collections.Generic; //using CustomTaskPane = Microsoft.Office.Core.CustomTaskPane; -using CustomTaskPane = Microsoft.Office.Tools.CustomTaskPane; +//using CustomTaskPane = Microsoft.Office.Tools.CustomTaskPane; +//using NPOI.SS.Formula.Functions; namespace AIProofread { @@ -38,34 +38,164 @@ namespace AIProofread /// 工具栏 /// public Ribbon1 ribbon; + /// + /// 当前word application + /// + public static Microsoft.Office.Interop.Word.Application CurrentWordApplication; + ///// + ///// 智能标记集合 + ///// + //internal SmartTagCollection VstoSmartTags; + + /// + /// 所有文档信息 + /// + public DocumentList documentList = new DocumentList(); + /// + /// 当前文档信息 + /// + public DocumentInfo ActiveDocument { get; set; } public bool IsWPS { get; set; } public List LoginFormList = new List(); - public Dictionary taskPanels = new Dictionary(); - public Dictionary panelsVisibleStatus = new Dictionary(); - public Dictionary documentIdDics = new Dictionary(); + //public override void BeginInit() + //{ + // base.BeginInit(); + // CurrentWordApplication = Application; + // CurrentWordApplication.DocumentChange += CurrentWordApplication_DocumentChange; + //} - /// - /// 当前文档面板 - /// - public CustomTaskPane currentDocumentTaskPane; - /// - /// 所有文档信息 - /// - public Dictionary documentList = new Dictionary(); - /// - /// 当前文档信息 - /// - public DocumentInfo CurrentDocument { get; set; } + private void ThisAddIn_Startup(object sender, System.EventArgs e) + { + try + { + AppInitialize(); + // 处理文档事件 + Application.DocumentOpen += Application_DocumentOpen; + Application.DocumentBeforeClose += Application_DocumentBeforeClose; - private static readonly Dictionary> allMarks = new Dictionary>(); + Application.WindowActivate += Application_WindowActivate; + //Application.WindowDeactivate += Application_WindowDeactivate; + Application.DocumentBeforeSave += Application_DocumentBeforeSave; ; + + (Application as ApplicationEvents4_Event).NewDocument += Application_NewDocument; + Application.DocumentChange += Application_DocumentChange; + // 选区发生变化事件 + this.Application.WindowSelectionChange += Application_WindowSelectionChange; + //try + //{ + // // 检测升级信息 + // Bridge.bridge.CheckPluginUpgrade(); + //}catch(Exception ex) + //{ + // Logger.Log("检测升级信息异常: " + ex.ToString()); + //} + } + catch (Exception ex1) + { + Logger.Log("Startup", ex1.ToString()); + } + } + + private void Application_DocumentBeforeSave(Document originDocument, ref bool SaveAsUI, ref bool Cancel) + { + Logger.Log("DocumentSave", originDocument.Name + "\r\n"); + if (CurrentWordApplication.Documents.Count == 0) + { + return; + } + + if (ActiveDocument == null) return; + // TODO 完成缓存保存 + + } + + //public DocumentInfo ActiveDocument()=> documentList.GetActiveDocument(); + + private void AppInitialize() + { + CurrentWordApplication = Application; + // 初始化配置 + InitAppByConfig(); + // 主线程 + FmainThreadContext = SynchronizationContext.Current; + + // 启动地址 + applicationStartupPath = System.Windows.Forms.Application.StartupPath; + // 判断是否是WPS + if (applicationStartupPath.Contains("WPS")) + { + Config.IS_WPS = true; + IsWPS = true; + + try + { + Globals.Ribbons.Ribbon1.InitWPS(); + } + catch (Exception ex) + { + Logger.Log("Init WPS Error " + ex.Message); + } + } + } + + private void InitAppByConfig() + { + try + { + if (File.Exists(Config.CONFIG_FILE)) + { + string content = File.ReadAllText(Config.CONFIG_FILE); + Logger.Log("INIT", "Found app.json " + content); + if (content == null || content.Length == 0) return; + AppConfig config = JsonConvert.DeserializeObject(content); + + // 插件网址 + if (!string.IsNullOrEmpty(config.AppUrl)) + { + Config.WEB_PATH = config.AppUrl; + } + // 运行环境 + if (!string.IsNullOrEmpty(config.Environment)) + { + Config.APP_ENV = config.Environment == "dev" ? AppEnvironment.Dev : ( + config.Environment == "test" ? AppEnvironment.Test : AppEnvironment.Prod + ); + } + Config.RUN_IN_DEBUG = config.AppRunInDebug; + if (Config.APP_ENV != AppEnvironment.Prod && this.ribbon != null) + { + this.ribbon.ShowDebug(); + } + } + } + catch (Exception) { } + } + + private void Application_DocumentChange() + { + // 检测是否存在打开的文档 + if (CurrentWordApplication.Documents.Count == 0) + { + return; + } + //var activeDocument = CurrentWordApplication.ActiveDocument; + + // 设置当前文档 + ActiveDocument = documentList.SetActiveDocument(CurrentWordApplication.ActiveDocument); + } + + public void SetActiveDocument(Document doc) + { + ActiveDocument = documentList.SetActiveDocument(doc); + } private void Application_WindowDeactivate(Document doc, Window Wn) { - Logger.Log("Application_WindowDeactivate -- " + doc.FullName + " visible:"); + //Logger.Log("Application_WindowDeactivate -- " + doc.FullName + " visible:"); //HidePanel(Doc); // 处理wps直接资源管理器新开文档面板闪烁问题 //if (IsWPS) { @@ -73,164 +203,77 @@ namespace AIProofread //} } + /// + /// 激活文档 + /// + /// + /// private void Application_WindowActivate(Document activeDoc, Window Wn) { - // 当前文档添加书签集合 - if (!allMarks.ContainsKey(activeDoc)) - { - allMarks[activeDoc] = new Dictionary(); - } - Logger.Log("Application_WindowActivate -- " + activeDoc.FullName); - //ShowPanel(Doc); - // 创建面板 - if (!taskPanels.ContainsKey(activeDoc)) - { - ShowPanel(activeDoc, false); - panelsVisibleStatus.Add(activeDoc, false); - } - // 设置当前面板为新创建的面板 - this.currentDocumentTaskPane = taskPanels[activeDoc]; - if (IsWPS) - { - HideOtherPanel(activeDoc); - } - if (panelsVisibleStatus.ContainsKey(activeDoc) && panelsVisibleStatus[activeDoc]) - { - taskPanels[activeDoc].Visible = true; - } + ActiveDocument = documentList.SetActiveDocument(activeDoc); + + //// 当前文档添加书签集合 + //if (!allMarks.ContainsKey(activeDoc)) + //{ + // allMarks[activeDoc] = new Dictionary(); + //} + //Logger.Log("Application_WindowActivate -- " + activeDoc.FullName); + ////ShowPanel(Doc); + //// 创建面板 + //if (!taskPanels.ContainsKey(activeDoc)) + //{ + // ShowPanel(activeDoc, false); + // panelsVisibleStatus.Add(activeDoc, false); + //} + //// 设置当前面板为新创建的面板 + //this.currentDocumentTaskPane = taskPanels[activeDoc]; + //if (IsWPS) + //{ + // HideOtherPanel(activeDoc); + //} + //if (panelsVisibleStatus.ContainsKey(activeDoc) && panelsVisibleStatus[activeDoc]) + //{ + // taskPanels[activeDoc].Visible = true; + //} } + /// + /// 关闭文档 + /// + /// + /// private void Application_DocumentBeforeClose(Document currentDoc, ref bool Cancel) { - Logger.Log("Application_DocumentBeforeClose -- " + currentDoc.FullName); - if (allMarks.ContainsKey(currentDoc)) - { - allMarks.Remove(currentDoc); - } + Logger.Log("DocumentBeforeClose", currentDoc.FullName); + //if (allMarks.ContainsKey(currentDoc)) + //{ + // allMarks.Remove(currentDoc); + //} - DisposePanel(currentDoc); + //DisposePanel(currentDoc); } - public void ActiveCurrentDocumentMarks(Document document) + //public void ActiveCurrentDocumentMarks(Document document) + //{ + // // 判断是否存在 没有的话初始化 + // var currentDoc = document ?? Application.ActiveDocument ; + // if (!allMarks.ContainsKey(currentDoc)) + // { + // allMarks[currentDoc] = new Dictionary(); + // } + // Bridge.marks = allMarks[currentDoc]; + //} + + private void Application_NewDocument(Document doc) { - // 判断是否存在 没有的话初始化 - var currentDoc = document ?? Application.ActiveDocument ; - if (!allMarks.ContainsKey(currentDoc)) - { - allMarks[currentDoc] = new Dictionary(); - } - Bridge.marks = allMarks[currentDoc]; + Logger.Log("NewDocument", doc.Name); } - private void Application_NewDocument(Document Doc) + private void Application_DocumentOpen(Document doc) { - Logger.Log("Application_NewDocument -- " + Doc.FullName); - ShowPanel(Doc); + Logger.Log("DocumentOpen", doc.Name); } - private void Application_DocumentOpen(Document Doc) - { - Logger.Log("Application_DocumentOpen -- " + Doc.FullName); - ShowPanel(Doc); - } - - void DisposePanel(Document doc) - { - if (panelsVisibleStatus.ContainsKey(doc)) - { - panelsVisibleStatus.Remove(doc); - } - if (taskPanels.ContainsKey(doc)) - { - var control = (ProofreadMainControl)taskPanels[doc].Control; - control.ResetWeb(); - taskPanels[doc].Visible = false; - taskPanels[doc].Dispose(); - taskPanels.Remove(doc); - } - } - - void HideOtherPanel(Document doc) - { - if (taskPanels.ContainsKey(doc) && taskPanels[doc].Visible) - { - return; - } - // 隐藏其他的文档 - foreach (var key in taskPanels.Keys) - { - // 记录面板原始状态 - if (key != doc) - { - taskPanels[key].Visible = false; - } - } - } - - void HidePanel(Document doc) - { - if (taskPanels.ContainsKey(doc)) - { - taskPanels[doc].Visible = false; - } - } - - private CustomTaskPane ShowPanel(Document doc, bool show) - { - - if (Application.ActiveDocument == null) return null; - if (doc == null) doc = Application.ActiveDocument; - - if (taskPanels.ContainsKey(doc)) - { - return taskPanels[doc]; - } - - //proofreadPanel = new ProofreadMainControl(); - var control = new ProofreadMainControl(doc, MinWidth); - if (MinWidth < 10) - { - MinWidth = 420 * control.LabelWidth() / 42; - } - var panel = Globals.ThisAddIn.CustomTaskPanes.Add(control, AddinName); - this.currentDocumentTaskPane = panel; - taskPanels.Add(doc, panel); - panel.Visible = false; - // 设置宽度 - control.Width = MinWidth; - panel.Width = MinWidth; - // 监听尺寸变化 防止最小尺寸小于设置值 - control.SizeChanged += Control_SizeChanged; - //new CustomTaskPaneHandler(control, MinWidth); - return panel; - } - - - - /// - /// word创建面板 - /// - private CustomTaskPane ShowPanel(Document doc) - { - return ShowPanel(doc, !IsWPS); - } - - - /// - /// 添加变量控制重复调用 - /// - private bool isResizing = false; - private void Control_SizeChanged(object sender, EventArgs e) - { - if (isResizing) return; - if (currentDocumentTaskPane != null && currentDocumentTaskPane.Visible && currentDocumentTaskPane.Width < MinWidth) - { - isResizing = true; - SendKeys.Send("{ESC}"); - currentDocumentTaskPane.Width = MinWidth; - isResizing = false; - } - } public int GetMinWidth() { @@ -252,97 +295,13 @@ namespace AIProofread // } //} - private void InitAppByConfig() - { - try - { - if (File.Exists(Config.CONFIG_FILE)) - { - string content = File.ReadAllText(Config.CONFIG_FILE); - Logger.Log("Found app.json " + content); - if (content == null || content.Length == 0) return; - AppConfig config = JsonConvert.DeserializeObject(content); - - // 插件网址 - if (!string.IsNullOrEmpty(config.AppUrl)) - { - Config.WEB_PATH = config.AppUrl; - } - // 运行环境 - if (!string.IsNullOrEmpty(config.Environment)) - { - Config.APP_ENV = config.Environment == "dev" ? AppEnvironment.Dev : ( - config.Environment == "test" ? AppEnvironment.Test : AppEnvironment.Prod - ); - } - if (Config.APP_ENV != AppEnvironment.Prod && this.ribbon != null) - { - this.ribbon.ShowDebug(); - } - } - } - catch (Exception) { } - } - - private void ThisAddIn_Startup(object sender, System.EventArgs e) - { - try - { - InitAppByConfig(); - FmainThreadContext = SynchronizationContext.Current; - // 启动地址 - applicationStartupPath = System.Windows.Forms.Application.StartupPath; - if (applicationStartupPath.Contains("WPS")) - { - IsWPS = true; - Config.IS_WPS = true; - try - { - Globals.Ribbons.Ribbon1.InitWPS(); - } - catch (Exception ex) - { - Logger.Log("Init WPS Error " + ex.Message); - } - } - // 处理文档事件 - Application.DocumentOpen += Application_DocumentOpen; - Application.DocumentBeforeClose += Application_DocumentBeforeClose; - Application.WindowActivate += Application_WindowActivate; - Application.WindowDeactivate += Application_WindowDeactivate; - (Application as ApplicationEvents4_Event).NewDocument += Application_NewDocument; - //Application.DocumentChange += - // 选区发生变化事件 - this.Application.WindowSelectionChange += Application_WindowSelectionChange; - // 检测升级信息 - Bridge.bridge.InitPluginUpgrade(); - - try - { - if (Application.Documents.Count > 0 && Application.ActiveDocument != null) - { - // 默认直接打开文档 就直接创建panel - ShowPanel(Application.ActiveDocument, false); - } - } - catch (Exception ex2) - { - Logger.Log("加载默认文档失败: " + ex2.ToString()); - } - } - catch (Exception ex1) - { - Logger.Log("Init Error " + ex1.ToString()); - } - } - private void Application_WindowSelectionChange(Selection s) { if (s.Bookmarks != null) { if (s.Range.Start == s.Range.End) // 说明是点击呀 { - var count = s.Bookmarks.Count; + //var count = s.Bookmarks.Count; if (s.Bookmarks.Count >= 1) // 只有这一个 { foreach (Bookmark item in s.Bookmarks) @@ -352,13 +311,14 @@ namespace AIProofread { // 只选择第一个书签 // TODO: 优化 + Bridge.bridge.SelectMarkById(proofreadId, 0); return; } } } } } - Bridge.bridge.SelectMarkById(-1,0); + //Bridge.bridge.SelectMarkById(-1, 0); } public int MyProperty { get; set; } @@ -366,46 +326,21 @@ namespace AIProofread public void SendMessageToWeb(string msg, object data) { // 先显示panel - var panel = this.ShowPanel(Application.ActiveDocument, true); - SendMessageToWeb(panel.Control, msg, data); - } - - public void SendMessageToWeb(UserControl panelControl, string msg, object data) - { - var json = JsonConvert.SerializeObject(new WebMessage(msg, data)); - var control = (ProofreadMainControl)panelControl; - try - { - if (control.web.CoreWebView2 == null) - { - Thread.Sleep(500); - } - control.web.CoreWebView2.PostWebMessageAsJson(json); - } - catch (Exception ex) - { - Logger.Log("send message to web error \n" + ex.Message + "\n" + msg + data.ToString()); - } + //var panel = this.ShowPanel(Application.ActiveDocument, true); + //SendMessageToWeb(panel.Control, msg, data); + ActiveDocument?.SendMessageToWeb(msg, data); } // 显示面板 public void ShowPanel() { - this.currentDocumentTaskPane.Visible = true; - if (panelsVisibleStatus.ContainsKey(Application.ActiveDocument)) - { - panelsVisibleStatus[Application.ActiveDocument] = true; - } + ActiveDocument?.ShowPane(); } // 隐藏面板 public void HidePanel() { - this.currentDocumentTaskPane.Visible = false; - if (panelsVisibleStatus.ContainsKey(Application.ActiveDocument)) - { - panelsVisibleStatus[Application.ActiveDocument] = false; - } + ActiveDocument?.HidePane(); } /// @@ -413,12 +348,13 @@ namespace AIProofread /// public void HideAllPanel() { - foreach (var item in taskPanels) - { - item.Value.Visible = false; - } + this.documentList.HideAllPane(); } + /// + /// 显示登录窗口 + /// + /// public void ShowLoginForm(string action) { FormLogin frm = new FormLogin(action); @@ -427,30 +363,85 @@ namespace AIProofread frm.Show(); } - void ClearPanels() - { - taskPanels.Values.ToList().ForEach(p => - { - try - { - p.Dispose(); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message + "\n" + ex.StackTrace); - Logger.Log(ex.Message + "\n" + ex.StackTrace); - } - }); - taskPanels.Clear(); - } + /// + /// 清理所有面板 + /// + //void ClearPanels() + //{ + // taskPanels.Values.ToList().ForEach(p => + // { + // try + // { + // p.Dispose(); + // } + // catch (Exception ex) + // { + // Console.WriteLine(ex.Message + "\n" + ex.StackTrace); + // Logger.Log(ex.Message + "\n" + ex.StackTrace); + // } + // }); + // taskPanels.Clear(); + //} private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { // PanelModule.DisposeCTP(); //this.proofreadPanel.Dispose(); - ClearPanels(); + Logger.Log("shutdown"); + documentList.Clear(); } + public void SyncLogout() + { + ribbon.ProcessLogout(); + //taskPanels.Values.ToList().ForEach(p => + //{ + // try + // { + // // 同步登录失败信息 + // SendMessageToWeb(p.Control, "async-logout", null); + // } + // catch (Exception ex) + // { + // Logger.Log("async-logout:", ex); + // } + //}); + + } + + public void SetDocumentId(Document document, int id) + { + var doc = documentList.Get(document); + if (doc != null) doc.Id = id; + } + + public DocumentInfo GetDocumentById(int id) + { + return documentList.GetById(id); + } + + + /// + /// 清除所有标记 + /// + public void ClearAllProofreadMark() + { + ActiveDocument?.ClearAllProofreadMark(); + Globals.ThisAddIn.SendMessageToWeb("clear-tips", null); + } + + + //public string LoadCacheByPath() + //{ + + //} + + //public void SaveCache(string cache) + //{ + + //} + + #region VSTO generated code /// @@ -463,22 +454,9 @@ namespace AIProofread this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } - public void SyncLogout() + public void InitProofreadCacheList(System.Collections.Generic.List list) { - ribbon.ProcessLogout(); - taskPanels.Values.ToList().ForEach(p => - { - try - { - // 同步登录失败信息 - SendMessageToWeb(p.Control, "async-logout", null); - } - catch (Exception ex) - { - Logger.Log("async-logout:", ex); - } - }); - + ActiveDocument?.InitProofreadCache(list); } #endregion diff --git a/AIProofread/core/DocumentUtil.cs b/AIProofread/core/DocumentUtil.cs index 9921238..79f76ff 100644 --- a/AIProofread/core/DocumentUtil.cs +++ b/AIProofread/core/DocumentUtil.cs @@ -173,7 +173,7 @@ namespace AIProofread /// /// /// - public static Range FindRange(CorrectItem correct, CorrectContext sentense,ref int prevOffset, Microsoft.Office.Interop.Word.Document document, Range range) + public static Range FindRange(CorrectItem correct, CorrectContext sentense, ref int prevOffset, Microsoft.Office.Interop.Word.Document document, Range range) { var paragraphText = range.Text; @@ -194,7 +194,7 @@ namespace AIProofread End = range.Start + offset + wordEnd; Start = range.Start + offset + wordStart; // 直接找到 - var findRange = activeDocument.Range(ref Start,ref End); + var findRange = activeDocument.Range(ref Start, ref End); // 判断对应选区是否是要找的文本 if (findRange.Text == findText) { @@ -291,7 +291,37 @@ namespace AIProofread } + public static Bookmark FindBookMarkByCorrect(CorrectItem correct) + { + var document = Globals.ThisAddIn.ActiveDocument.CurrentDocument; + var marks = document.Bookmarks; + var markName = Config.BuildBookmarkName(correct.Id); + if (!document.Bookmarks.Exists(markName)) return null; + + ControlCollection controls = Globals.Factory.GetVstoObject(document).Controls; + controls.Remove(markName); + //return controls[markName] as Bookmark; + var bookmark = marks[markName]; + var start = bookmark.Range.Start; + var end = bookmark.Range.End; + return controls.AddBookmark(document.Range(start, end), markName); + + //if(bookmark == null) + //{ + // foreach (var m in marks) + // { + // var mark = m as Bookmark; + // var name = mark.Name; + // var tag = mark.Tag?.ToString(); + // if(tag == markName || name == markName) + // { + // return mark; + // } + // } + //} + //return bookmark as Bookmark; + } public static Bookmark FindRangeAndCreateBookmark(CorrectItem correct, CorrectContext sentense, Microsoft.Office.Interop.Word.Document document, ref int prevOffset) { @@ -321,6 +351,7 @@ namespace AIProofread // 更新查找的结束位置 //prevOffset = findRange.End - paragraphStart; bookmark = controls.AddBookmark(findRange, markName); + bookmark.Tag = "ai_proofread"; } } @@ -338,10 +369,15 @@ namespace AIProofread var paraStart = paraRange.Start; // 定位句子的其实位置 - var offset = paraStart + c.SentenceOffset; - //var cutLength = Math.Min(c.InsertLen, paraText.Length - offset); - var sentence = paraText.Substring(c.SentenceOffset, c.InsertLength); - if (sentence == c.Insert) + //var offset = paraStart + c.SentenceOffset; + ////var cutLength = Math.Min(c.InsertLen, paraText.Length - offset); + /// TODO 目前接口没有返回 句子相关数据 直接获取 + var sentence = paraRange.Sentences[c.SentenceNumber]; //paraText.Substring(c.SentenceOffset, c.InsertLength); + c.SentenceOffset = sentence.Start; + var offset = c.SentenceOffset; + c.Insert = sentence.Text; + + if (sentence.Text == c.Insert) { // 比对原始内容与校对原文是否一致 var range = document.Range(offset + item.Start, offset + item.End); // diff --git a/AIProofread/core/MainPanelWebMessage.cs b/AIProofread/core/MainPanelWebMessage.cs index f9b94f4..f1b13ed 100644 --- a/AIProofread/core/MainPanelWebMessage.cs +++ b/AIProofread/core/MainPanelWebMessage.cs @@ -80,8 +80,14 @@ namespace AIProofread.core } public static void DisabledProofreadItem(List proofreadItemIdList) { + if (proofreadItemIdList.Count == 0) return; Globals.ThisAddIn.SendMessageToWeb(MessageActionEnum.DisableProofreadItem.Action, proofreadItemIdList); } + public static void DisabledProofreadItem(int proofreadItemId) + { + DisabledProofreadItem(new List() { proofreadItemId }); + } + } } diff --git a/AIProofread/core/PanelModule.cs b/AIProofread/core/PanelModule.cs index 9eed0ae..cd3fac5 100644 --- a/AIProofread/core/PanelModule.cs +++ b/AIProofread/core/PanelModule.cs @@ -17,7 +17,7 @@ namespace AIProofread { if (ctp == null) { - uc = new ProofreadMainControl(null,450); + uc = new ProofreadMainControl(); ctp = Globals.ThisAddIn.CustomTaskPanes.Add(control: uc, title: "AI校对王"); ctp.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; } diff --git a/AIProofread/obj/Debug/AIProofread.Properties.Resources.resources b/AIProofread/obj/Debug/AIProofread.Properties.Resources.resources index 54aeefa9ee98ba1e75e23014ab12e47ea2868227..14b30c566fb5f385eb43e32a1df0ec565336526c 100644 GIT binary patch delta 49543 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 C5jhh8 delta 467 zcmZo|VL$VfdBQ?YK?Vi}Mj+0Z>{ux}aerdH(Y>!-p?`KS>X{n3$~(b$lj&^Z3%90K zyr_5o_%gZOm+!*z1^h1$vCB@1xguX*>=apiv>eKPE3?TPndDi&STQh&O)g*- zW3msJoXf0e|1$(dLjgku*p^g=rc9ul5hfudbQ#JS3K)tRJ_Fq%Gg*U0hFQ6tVX_*F znnGJQ1A_!YOEJ*u5+KY3x;mYKbpgZVCoD>G7R!JxKqx8&nw0`{VF^&N$w7w6Dy#}p zy+;@rki1w5v@8|q1)u8-ljB%rSh(&mFibuuF?VyT^j!JPe@hn`Z0>vDEV+G(0AsV+ K_NrpWZa)B%*LY3< diff --git a/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache b/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache index 9106360b5446febc5ecb8295228d28f1e6e27bf0..83a0140823f3c1095ccb6ee94eabea1b2da9db2f 100644 GIT binary patch delta 8555 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 delta 804 zcmZ{iK}-`-5Qh5-U98X|rIJ9SCSrn#WYff`7`Ol>vejaxrl5(EW!cqd+udb%jqat0 zUW_*~ZF*4>&R$B^=*5dSxnY8MFi~qHrbd&BceV5A5cd=xKuO zP#iW$j3uF0zyy5EUxPE3gHHL<+h#BE!-_r57`NDb-3>Kk07hmKSQqgSLb_76X~{W$ z^0sQxoXn4k(oL$~fTi+TsQ2wcrn|w6sg`W$1~p}vc|Odv6w@5pQR#|7g-@r-eO|Jk z3HVjG0HZXqy8&`2xGo@s%>%=dB%3CkrCDm(IG4@rXv~bsdRDV@vT9+DZ z*#cVH2b=eLS?9HH!d?jci+A0LxKJlf4Z2fpRm@SzRadH2NE*H_9)c)|2N7&-fYTx* zi-XwrKV~qm+y_J-k8MrBpW=}7=>Dq+nEnuKpX`Tduq}XXIZaWhB$IZikQ2w}t1l}Z z)se^eIWc=MK_x>oHO1o7vobH>b87ky9Q+r4AS}NSmPt>H`GjxgYQWEfItt0ozfqzi A4gdfE diff --git a/AIProofread/obj/Debug/AIProofread.csproj.CoreCompileInputs.cache b/AIProofread/obj/Debug/AIProofread.csproj.CoreCompileInputs.cache index 2d2ab87..76f943d 100644 --- a/AIProofread/obj/Debug/AIProofread.csproj.CoreCompileInputs.cache +++ b/AIProofread/obj/Debug/AIProofread.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -11c03afee37eea7e40c8b52f8e997c1261df45d7ed4e6445471b049c699b20a7 +e41eeef295075b0004214c8cd1d281efa264dd90d94486af5e0e1e63e30e1f99 diff --git a/AIProofread/obj/Debug/AIProofread.csproj.FileListAbsolute.txt b/AIProofread/obj/Debug/AIProofread.csproj.FileListAbsolute.txt index f2c0d2a..6960bd4 100644 --- a/AIProofread/obj/Debug/AIProofread.csproj.FileListAbsolute.txt +++ b/AIProofread/obj/Debug/AIProofread.csproj.FileListAbsolute.txt @@ -206,3 +206,7 @@ C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread. C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofr.8811D769.Up2Date C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.dll C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.pdb +C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.Controls.FormLogger.resources +C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.Controls.FormMessage.resources +C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.Controls.FormDialog.resources +C:\Users\yaclt\source\repos\repos\AIProofread\AIProofread\obj\Debug\AIProofread.Controls.FormWebView.resources diff --git a/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache b/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache index 9485d9facef96f5d1f1e038a3b9ddf9388646a19..cb8a110344e4dc5fae507048c3e671643d9b7074 100644 GIT binary patch literal 2090 zcma)+v1=4T6vlTg#Nrwo^+Xh+o>7wp3kxBg8W0nZ2nuo-X7}FhjkoSBGqXvwIV)SS z)J81C%0I!%Qqow6U@8$Tv{bZEao+CEIYXG)D|g?=Z{GLKo3}UY1VIpXFS1;6mWlo{ z<9G3cBr@V4wnA0*)%U3K_+f8yVY0I?3=dhHOO#|RH89RHQj$seY5WZ-b~h`G3}|j* z+;!yio{`?$?cLq1urvkk?8Yb~HqqzZbRgv-L%ln1%50G)dVyqGi z;V2^E=kg=^_v-FURzV1og3*VaiCIU^)1@olKUZ#S-F1-Cm#tYx&i3UO_iINs=O)BA zC~P|WG3&^A{rKI9kH65@+%%bMoUtJXGQfD6zXosyA(B5F-hU(;Rf#EJ0bEiL{WTD* ztG$f6=oPkLpgP!pw8r@bmcHehkH5Ye3?jl9Z2XQ1VC zE_qx^$#Oiq#mI=|(B2{%(PtiaojFvyVLeXUV?o2HI_n};8LQpEN~urvM;J3U)=EFM zECxhQr^WtDujjMfd;^`K zQT@76>YrlRDj1)>4S%1t7MWq!xP5!);ck36-+8`MZQafqjboOdGxn?X3)Q!7cYi?9nr`GkYbwN!U$iXE!HFHVK3zkb{sAau5PR?)&P{3koc| zy$Et9AT9bF5OgT~cf4@)@J8L7;m1;~XWoo234e?II7vYH%i5p7A z2;t8sQ)(o6^-uchzc@9i)({W!t)1PJic6cYJ{Veg?-3e2NJkS1otZB)%vM$85W zJaaY@@w7p1s-CYY!x%*2vA&Ek$P7*wvfBqCvFO$6B&VAwv=r!-%1$@bnUEHltWsh1 zv8rNp>G9lHG-dWKRz`e?g&1*XGI%+?hB6%w!4S9-YZJSc2uK?sj&s%!69=XwFAC01 zkEv^X0Z`4pCBEQOz{5o;TWm;~>Z|k7MF7P}&WCyd`O!W^?ITC8j852pcS1?4_@t#a zai$`ZQavfvbDkQ8Lc~H8h8-XMTXfo_5;tRz)td-e7j1GzP#5Jl=(N$5v7SAv=qf1K zAjTl8?i|F7YG=AuC2Vi>v$4G<>qO}-*3O2ir|cOBoOKnnweh`9U?I7&NNu9mC>{m1 zkZP5CL5ui-MTfJ@0e@etps2J;Lack^dwCQn>dZueDmpw14;DM`QdA$sinP*2sFdGD zg)q9*bHzv@o$PJ%MfFMcWbI~?wJP?8v(*IL>NeK&X8lZV9k4#RVK-89RsX*rM|5}& zcuY-2hv$lXC@UMYV!eAo!GtW#T1zzg4KwfQl2!j_g-5^S&6<`u@7n*cb|o=cV!}#P z*KZzJ2K8IGix3_)I-9hTy_0s+Ec20QFDNrG>;|bZGRa^W#1oBfso@NIXtl4Q=BYC@Y9UZAhRv4Nj!t_Y0ChF(V-aaUw7jNS z1hhR#%2&mtqBTO}_lViR;1RQ-1?laqlBc&pvsgU3DA{4PK};95+F~yu%T#1^OR}YF zKg9E6QM6)RO|P-DJ>e_`W`q?}JL|JCWyPS4_a)n*jYpuk1nWJp3^XazJr~?`^_K&o zO!qP(T9CId;og9FG46gE564fw7jbVKlE?C>gW;?|E@705a;T!-WG&t;GRt*bkU=tbxyC@L&`ib=H%}g#E8gEa^pCORjXW!R(9X zi)H|-BnxUoEyv@j|DyIAstWDq)teRJ6A?>TsY!1E9RMiP0a{rbUK9 z)F@^;mk3kzNkm~7Dj2Y!JWVbJ)U!%6TPFi=p5K)Uw?!?iZA_mXCQH7$ae0>NYF5y&#mQGV^8x z6=`ot+UZQoR;Se&DAZ>E`E6v{=PBix*+fxU35)>_^c<=HI}Bxs*)UZYJ|r^5$}k<4 zm-fZi3x{KoBaCx{@Eh6ag993tdKv-o< z#q=7`R>RQgSj;&R>>+UzCX96&a}+R98#6qNtSascTS&ZfG|=f{OUAH|L99+0nW%ki zh!hFO0qonkvms-Q<>Rm;&hex5jpMx&fQ~sQB2+NSh5~DqW#uoF%G)O)WoQd3ZW=>p z@(~@v!ZBtx4LN+A&!mj9qmZWO7^$x|j9q=v?xJZgLVZT8rUCw zV3lIdF^~)fX(m-J$9)@EHu-SP3BQQQ9cwG|97qKBr{M717C3K~{q^?yB z>jbf+R;d~*rA3YRp8}ToY;8Ym9HgwJX==0@d)I^Q{*(t>D>DllO5v>9ini=wQpU_? zElZ3=HfLpYq{+%=a+xM)kY*UY0lKs*4q3Iy!l5W2Z{?+c-SCv+3VzvAK(m=`v9wXn zwp!ZGX4|ZmOlzhM1%&vIgUr<|L*-lP>NZO2HmcK2RBxrNI;&ncQG?YG>iBl6ogLqh zw;C!sz5%#U$2Zhi4brZ4XvxB+Y^_!6CC6gfan`u`w~xK|UQIR*lNgu96pW$5EP@H{ zNesD^>6{KtlC@-1O-CA5vb#)@QEA=UOhiZ08ABQXnHQoRxIhXUFpS#-#_M7k(Wg`= zC1Hs7mn0O%u}6XQn2g2>HY}At9k(HE8`7|pgprj3VzQL#>PvUKdqe97&VcCWrQ%pl zCrn2yNR(UZA{H>7vxJ4Hoy+P}+qO?)X6?$m>yhcUu0oCDAmeRa%`OZ#5G^&%7D2SS zA0xs(6OcU&NtAm95ZTzy8uwa>pc!Md#u3aJTzAi3pq8OEBh?kjd!d@pTuuTx)*zUN z?C(pvw+3^}tzeukCf$4G$=QWVH!=BA^H|h&A&(LQyP27HTD7VPOA(5h7lbS>1EKN- zWqFi}j25Ecc3~8?2ao{+4GZ1+Cig*%txB*T-{BypPp|o{lyL@r&i@Y$|6^yr0#-_Q}}doF4&Y6$k_wPUFw|P zY1OGF-E$&!dMBDn3$B3X0pVI4awhR_-x@D@$4mDGQD!5OU z+Nn5o7dgZ2)`(rZZnh?rkA`HsX$gDPxcyaQpeWra7)x`mN#bzw+|C{}+ovYn-=ipO zm;THWr7yS_(o1>j1GXF(30lSV%w#%0q?X!ncA>mlx(#v?Ri}mftbLrSW#JQj-%`)> z1FMm51k+(`0E>#$2p0zfSW2ZvxF2d7fqKV=KSCHK#&WV3)cZ~F(fduKw{93~Ic&nt z86D}&oh)N`cmgmDic2kR>2-T^1oR?fCu?BXYf!k>m{?P7vDuJZV&EJs&QkUug3<~N z0%-d%+{V)EC8Pi9Z1(KKQarGdjfVR&IG2|V+?7cd z$=dVV|1gVJ&IA9YE{+D+RM_$<)L<8@pE8F>AVW5uiR*}&G4;g9`LQ;dm~O@rV@BY7 zsZqIXvL9P6W$%Q9rgH%@r;~ch$eJf*%$S~}!O!_9((01Vg?QAsze4?nF(_hPg-s)T z3Y~os5}l7B;A+Hu7evm*fZ%Q&i*kX~+oEb5ah_E;>qZZpl=sjDs1N0k!ChX_iB#of zowic7vQWU}TIG3WRvtX+X@qak`0H2MUBC!?!cOvhL#hqn_WVYhFkrdsC z8eE2g`aZt1spjl{j4bhEC9&=~ezbd!@kc_1cIg-AM97jFxE%Rvu?k58N*CLbTH*ze zxK1T%9IXFL=L)tLY9(d7w6iIx%b<5IX~j^+?R!k{f`v70;yviTJ$6$jrh1lI8|qqV ziZqr!6riqnsNZB1KsOmBkfAOc)_%;KP7Q@(mvy3?_q1nq0TXJ0!(^S!V#;lbsV$ai zk5J7Ox-e*?n|ISj!(BaI*9Z5t>1;(SIM^-H=3uQ5@4p#Ljb2Nq7>=crijh3l^6`G? zZFwH^r!lF#U)OA`xCkPPf}pl*jcgo?D`{{;+~l%89!FfMzIk0&pma@HXX%u$?95xS z>YhKRyVL9b;9BYK*Lv$LF4ZlTs4H$l8)F!zM3*7#q(E5F=D12g3aYcLk9`#h#QA9; zPOV<$V^abxnK-%I!(PWy^>~$moGHVZN9{8l81+=zaQg75i#k}YVX#J>EBVCKCX0A0 zwkf$uk9@O?s_{_?70)JjgD#_V=2ps+%$S*km>`aS5hY>wjQ(3f zSu36#Ch|}T^?r%_sA#S@y+&}G&<^t<=}gl4@uc2a73+fRI%BPs>PuL)ebJ_3qiLnM zXSHf$E1j!Y(X^FrTCbfe+`$~qR^oQTN^e3oc;*sTN($P9f`TneCX=zOnoY?=b<1Qk z*tB zXhQ%uZ68J))*XxS(5{p&cP-+eTF;6Iw;UrM3M@24hvsWE>Mt@#JcgR9BO9K8}9r zP9(E6nHr}75^)C6gOT-tJ;L%-#wM$gHEXb2*G+~DmabPel}SnKCG{MX#JZP`)wbzz z^#=$(g@Wf&dXkCBv?3M}g8~LgzwJvWlFrps5qj+4ECDEzshvyW7~imMQRfp#kCojD zV}@9dWGm^T>9D!04d6Vy;lk*oN+@egSL^_qxP;*aSP^xM#MJZHGr#He>Xjt2eW-A^_ z4jYY(m7&qtPYYFPImYz{*?jwVc^KnZ%Rwy(xY!uHjO?Sn5zY+nsbgIFe5RNt>$unN6LV(g3MOKn0Xv3yD2 z@-@c;7Ye(0NwbyMgc9|jEA?=T)l$*JtZ%E;+M7^TOSZ8H-;nNmmOlDaUx#-)S4?a> zyx-xB6t;flcEreS?3t67rDfX)CxsrjylQr~BjXU%J%-o&MJCS2`#?sVYmuUQ&QSL0 zSc`NUgCy#_6@Aj2x6$6F$M;ilbu2KT$Iixm6vNH^C4y%AI%IAH>aAT-weel3rtE?$ zY`Yh=>&h2)k1xo@q9DoMRW8c(6j}y8OS+V@QUjl34Cd9ji;;98ORpej*OYS)G4=glhh4Gi9q3moOIPCA zi#U$3c;U_prn7g3s<9fK`;hLAQZeh`Pub#}0@$h>IGl}kKjO-&gR`+t_2az6i$dKS` zAecY!-h1zXCO4L^E7PccXe}$Wj1__bLWMlIe%t0LyXj=o7)ZWB` zIA%H1ib{61xYtrOwO(eiEf|*_pU-x{9FMm;K9%i6Q+Ecf{QiwRnw^z9o|T9vEx_0~dCs>PsnL&wc7q&@0`&V3ob{Nu13IVN4*@su9njj}W$--&XU*Ua z6my<)1f)-9F%RgWgL$H`6`dBzHe?#|I@XwJ)QMKc(h)40hezmp$zn~eQMpV`N18HC zI+D-ib)=9f_?((E%^KB`Y0;6^OskHxW!iM4J=5+KAXK)-bnk@ZVs7zv2d_o4Nb5*% zJ(#k$WjsGai3ONemxH1;*OD+L@k#=hsvxyurAqZI)f|nX`JjDtq%Pz6O*Sqw&cP`; zQ;9DyTbths=aYdQPfaGBsm;_nA7LW)Wg0q;P}2T73W6a@EB8TEGO2aK{Ua+ZCazL( zlG*W?pvTkg9anhmtI&@QQs~Bf7r}Iw%W|+w31uQoKZyWiC6S{IX6g=ns)D6KZdV1tSd> z+TL3jYSU1Xyxhm+N*@@uJH1g=?8H8?dN{`h4&T3IG%1%1+n@xZgz{ zXz|wrt=j00V41}CHQa6f9u=I$W)mf>%S7F?k=6b&Sr20o6YFi3hw~ILeQCzAOMDst z97EECI2}Yf(}+3`V4JG?Zvo5U4xmabF9}$>I~aQgxob7Wvxst8#${NYpX(>Ub>mdi zPw~WYk~@*baDN$Obe^LbQc1ThskTJ*((E~nnFNd(#yHPQg7boY{7gT7&PR`{g5y|4 zWWzpxHXa7u-tah|M=K99X*WZ*gd(+U+C9}XjI&Q=f@p|9=SR~<<(v_h0BX1$jUk7z z#O>n{#Pt`c(MYohHwTY<(Y6tVu^<_J2Vy4 zh7H33KmOos08!^fRM~k+*L#j&c9t-{2Xhn9&db2o7W*?1`xl6%=@6!lLmT1mtO0Z_ zAe6E*2NP=8zXXI;@(9n;h?4>tUjeS~QLL0AWBF`(rKFwfQpm5!1KkvX3Mh5BYW=Xv z6#yD)ty;QW-twv?%E*T+((@VAg>7pLvU(86`8C-XgKS@8kPH8qMqyJXM}u=b)-11_ zeQ*jvk;B1a0x1V-$XyHF3l5G2xKl&8IcnfW^r-zCl-P|!YQoRS3lA!FH|o!0c)r2F z+i&+{$gT~BR&SnkGec+7qH-h%U12HrDbTuqMo_R{MF}Yr2Pg0rw9c0mmKcqT?IVty zVIP1-K%cKn)ze2U#-0gR~BdA_GCVHSK}P0|>|$}yHnWRfyjr;Vfyn zilBMr#aHd^qfO90(HGuC`PLO1A ziX?62rAx{+XvPi%HOPl*0C$F8g9EqJ1vOBJ)=R@e?NDs0K3-$Tky>L}&N~n+DK3=V z)K8hcb((1OoBQ+`E7a&a`(!;>Kua~H)G!XA$8a8fkNnfv$3|$JQcpL)bV$tpBS2c8 z)ClQ>c<|2vB{qDX&buJ*-j9aLmGd=k!&(6=rj7|Ynn*Yh3wb|g|CKB~7~j+g^9z%~ zzmq4yvJ}JTYVOnX?!%Sb3qJQsmaw9!5$2JMgYS|fL8Hali;D{w)s*uu2C(8OcpZXc z{OQHEUNJ;vl_Bcfm(&2JJ#@hqSwvv0%cQ*)*}Hot`sb-R6-BuC^rs?D^}VtTh>5wx z8V@sDS`FL>%^P8=UJe8YXgEVf#bPK-LS?IAzlUNvN48(5PT71izCT!wobHoo2%LsH z7fE^=N1-sENBFku1tjY?zK@DM3h-~e4?ddm={?^XtyJar;QHvV9NL3TQ?Mj3HBJNt zrp#ssvl`Bu7M!U6jLB2pzUw&`gHd75WFFW%dYfBNnqvyxBqZXmdyxZ61wNjiv2A*d zS`t%gFJ>G_>U7rR#c$IeEOKxL z1RRp?p&`OnO^B_u)520yK||1LcX%nMRWhaE^3g4W&85>OxElA^5TiEDh+g$}BzL47 z95F_5Y4_w1Rl63|DWOWm!DNrug_ThCmRAoxB0&M3B|R;}^JEU54y|{_qkwE<|J#_M zGL3czAxmW}yAv__h6anCEDdSA{|VCgDN*EwO%Kt@w>I=KX_J5hfLW9a>wwe0bZR%0 zdqm{78cuWYW(ijEd~J&sc5;-v=b~D>v37;`F?JKdVuT!o&EO<}5(_%n%6U9#gkpyN zzl$LUVWW#7XeG4bz-K0<_$}g~CgwmF%FX6ID{s{~-IO7m3LhM7Qp%Z3q5^2(tq*Wq zS!{wU$z~=ip%oF+8@@;&to1D*_H|n84v<)r90L1(;DC>Y+#?m zWty5FqX(-Y(>RvLS`p`q!9%@h#cJ|SFUxdC(JT6xnA%xe(~H9lngo_;F$%;@(|`6J##I*!vQH3$D|H6C`^P_ViR>v~u*|0^ok@}#>1CDj(E>o1tZ76rKW z;AcfnW%G`dEONNyMxWVipmY>q``Z;1(jtA_(+yC4z67Dly#u zROEq;u0(MEQ$Zn1bYD~{2CZD8*prfRLlR^W1otCEct~}mHv5K1gvox@h@~NfWP#J9 z#8tAa3?YPKVF)1<`&1#kp+!}gp~cmRCDn*!)dmC4vNs>&NXmI-l^snjI?xVbQ+}TDa|s7QVZprHC@xi@7{1=gcd!bw3X+cIKB6 ze$Ord#(j!udm-lRtqDY^g^26TwgV4csk$0XCEN{~s_5*){tsG5lT#sgLr%5a4Vuci z8#GmPH)twqC7R{y?PMih(A3)9psBlIwEJ?X!8isBJZ#Kr5#Tzwpu-kc zFz@cdU~!p&F=l?8790nbQ_j8`&o(WULco42R0y+ zE`?oGDusakW~dY*+z*9H5yYvXQgnX5Dg;o-)s=;K#vnVqR0;w6jZi5>xI>{*1aU>E z6rJBMg#b#~T3L!QNcAZdLcqoj0o~$pa?#1|=R&2B#QjRB6wSadg#b#~R$U6Uu~Z5H z8+)iy=M&*R87c$_jKBX4m7*E=r4T?VS5}uoOzD&FI0*kmWN6qqTu+Y5Xe`!h{nt-s*B{Hb~ls7OQ?#6&KJz7A*Mu>_;9ql7Y6ho z7sOQ|aw1CPVvV&W;{+Dii4dC8SP9MgyEliJF;l783E1z38iWY#MV}P2HD6Sq1S{D5osR#>`Ju=M-;BO?_E;1kpl-Oof<#Wbrm; z-cX&DJ>yOZWfjESQdVP7R(WIQ%~d(w^`NnrN*B7vGQLdW{FoDq4O!9Q`%P%BG3J>U zF*m+=O4%y~C+T_TfHL5$(s3@eN(r*=@)KxWN(o|V`~(iQQi2ReKSApe%9zOUBf73r z^7d*L)}iYzdbof1wOFV;LjHkW-q+uKcnAk6)@WCe;8uJ1oZ;* zATSsq{V;=OXRR<4px~^NGPw^!<3J;^50exetN`yl)Ud})dYdOa`KfzK<%D5Q3RV1~ zVk4;J<`#(naY%rW2tOIy1nw9X7I$EuN7JjPF*j)^s5^?j8rT5NhI|kJO?-%*^Lu`- z;~dNqL&W#)Li`mHzrjhen)bO}XunL_7~PfCw13=%_5r?W8F;hAI4ng=L$%0XC1+!I zoM-Gp`ygrGDlrb#ZcQbvhqicx#Ab=H+L^~*d=PY|T+*Ol7~;@s&*FA;qV7kv2+a+{ z%uh}ESs^}ziz>_)Y7x7@y#l$T@?E$bh7nh%<}lC*-xbLG1@`(^$ zDBs6?%Kil&&YcK6ep&*|POPfkPeW?|>pB=L|4Trg*7d(PJ3!@*RBfzn8*2ME2)0-h zZnzaC>aWbqc`pL3H0CTYsdc{tuI^K09cqR|FTTIUn%3jnIJqI9H~!LH$eG|>LPfmA zhd!rDFJ|~6zYZ_#h?Gy65I;0bz_-gYeWd$)6ejOd`kFPF`_~dC+Kkfh=0!e&Qc2G_ zj4aWyvEgwDny2EPqVT9n9h+-8+h!02xgC9&+#5$UBsn9t~p;#8;3QK6oPya{moBa2zCB&B{2A z^$HvWqRFep6HN=jVCG`-K42m2549(nb2g(DpmOY2j2*nN1Yy)!j?%`g56im7mLaaOWnGiN1QCPml9Z1REW4 zrXd;-<F<&Ph1rav2l~Z)11)WC&;+exn)ZXNQJ5SS|gO+%}?MDh~x4v7Hh*3^tMD zOg_I)M!lGgjXm0ZT^MiDm$fSro-81FN|qhOHUo%aY2Tqd3NsX1ZQxX=+=|Jg9eZ=tE>>zr<|zaYAQ5MZmCM(2t+# z$J2cD;FUa2LGkNA=Xg@%9h6}|r%9gCkLQI__wRIwut=KMJ^|!NPgEzo<_juM>9@N8s$te0#mEoOTGJG(7gH>I?2h(?W|7C`0|0Vst z|AyXERW&~H-(;w!Kl{I=AFZVK&<7vfM0Zza__y>w`mg9c)BVkVmBDlqng6nnKZqV* zu0^Yxbe|8(up9b=|4aIT5Ix?oaTt7X7hD#~@So7%`JdB!GA_UKpJx#IH~&lec=r9e z4C8-y<9_n{X4pObg8!2KkbvGRS)vc_f-{2*{~`V8e@GAeqfO)8|6zuJ{zv~M{mZ+j z_we>pnpE5J1H_geTe9VbeI5)o*6#x`EO+cd0B1E}ei$K%O!20|R!hNgfc@dSC`0Z{ zNEyK%2aAW}@ui@gM|I9eb~#Wb$H3$Rl*Kr>jP*3GKjo#X#SUDES*H)L1|Ljyq;?eK ziz#~;*&9`joTuZ3jQl_Y_eXr=h)$0aepg4GGlHk;8s|T8h(IGc(m|wFM^apB;&c0s z8V#fP*SQL>H*nDbcsL(LP>joYIz8WU+`})Vu(QAs7%4CBGc7otE~eQ>wD`|f|Jmk0 z+x=%C-*_Jmr06OO?916zmOQ9jM}3g1A&4}3LCgvwnIMu4BDo;a6hs2~I|>0Ns6anquD%?IXEV0cmCWq1x;jzHf`a0O%WoyFi91lc!*4jSOtL83Q- zI~XJ(=ii<*+I@5%FH6w7D2ZTO1saWz2oNU(2#Lt5&Vs^Yk%V)4ZbJ?#h%-XLor99j zJ&R7)hq1#1Tou-p(mf-bCWf#xNF2z3ZI|KH;i0;sJpO|%02W(%aT@shq@bL>NQjr= zP)~a+dE|W_xEeutxu4{hZsg~M7^1Ex26dGP5GMr)i2!kOfRG3fX9fs~R0w4Z4j@t1 zgsgR2Ae3QGK+&@2_uMu%;F6$HV2G(ucYs8II6FW{1PJJgrjQ5_P#BGn$n(a)Rw%^K z>A)HT+Zc5i%@3W!N9pcodm{aWP(Zw`m#rz9KPD%B7qM>*9&XWY0^CfZA*0Y$YvW*z z30)K)s6O%AjhgL}r{HJFS7i~SX{f2lgYsEW!R{tYP2Za|Y#i$`;iZ9#i~BB$;k#V9 zEoW2e%*>nr_jz$w1=@gK1aZ8rK*4a8K!?E^X3TW1MDkgEfH44H)RIio4;HO2^wVQU z@un(w0lF+dLmoHBbUMq}EY&df; z5LZDETt+6xD2GU^H&M_%zj+7QgJ>3`c$nW>6ZF&hII{NUeBf#T!)Jh$w{+&gzn3TO znb%!Tb^8R;b;Ek5&^e=m(Hf%r^hOlAjx`WJxn_sSDF$xXPn`l@c;SWSIjo~+^9aiV zL-=Y;*~*&YCvfOPw|mP?>Gypbb-kQ63d6F73Cy%i2dsxK<>IAh}Dw-YaC zK)a;zrK#Cn(h_K*9DE$YS`b=kOJ1ERK_0wL;n;Al)y2#z%c}R83B#UE9CSw%56c6! zo~@#tU%idK6HMR6g72oNw7nnTQG?eplqHSTANyEN=c^56g&7{9MaU?5;;4T4Q!#(@ z`Tv$DBKNi(EEVX(C-kPLPZQ&t$k$O|U)1!^73&=-3)zSo<3H_zXtI9+8mdWGOBe;s zn5x|MP%!yUpjEyTNGEaoGtQjh%W+M7F1&(R=Ro5P)E$!yUvk`zLJnaeaM4Gd>(Cjs z#dGkP#`TEttLIPQ+1sd}&J6(M8#P{UgF)t_Zv+~*!*pe0_6|nl%CO=|978&Ws%Q*+523*A7$%Uagpn=?3ZG5-ZOP~h7EVqo3^ zOzCbGd>JiFf(s}>f|IAYUL49tWj>7l;TL095{-)rFlNFxQsC=>d4B~3`irGi+(>aQ zh7@k3NL1ZO0VX6JX7ZsD>Khq&jb-RY3MOyD=XLWzd%(bXRNY7s=Bc^iI4JIS zD9HT|HCA5kcPPYhx6P<~{3QRPidNHV)ps?ZF@h*sN`@Kg4j*Yyu`CYUv+?l3N7BEj zA}O*@PoskPK=3pq;-U&%C9zAz{QG(Kv}z;?m6|NIn%N|`i0Ud@!5uyIB_7UcqYF-G zuf8h>A8g}B3au@>xr?XWwAyu@*yZiGj0c=cmDDxE1)96`_;_nPFQgcktuJm+HCh+g zTx#_B6Z{(~*huMJZ=@(U7(RHdm+3XGwxi|Xk%xth4cvlZr59|zDK5>lSl$jkM8kUm zS`Xs`JD@t%iK#-_w;~gUh)$MkdU00{s4&+qu2b%rurH;LCNBf9y9+R*w{^9~Vle&PT(QpBnCm{Cpoqi+d0EOU)7vgo0Uwx8MFWGW1;o zJEg|*J(wSY1I6~Sx(->a`Q67+as5pja_tPH{S2~VKH(>8TyAc;A~;JNQMcW$cn1OA zXU5eKq=)+#U1SWhvhu1j-VZ-E7!i@5k=6A#Jb|4%!C0>(j`hpZgwAJ?fJSKcjXSRu zOFC!{Q!X~r73QxrurWhfoO-EC5tDQ{>2u%)+lzZkC`B|sqaO1!vql36xb>ZP4;sqP z7!?VmJNTA~mX^1}#QSdo3EmyHhXjMk1oKpIbv^&#d}B7B5y>HF+B|bm<0Hq`v9PDt%{bIP2@fM6>Nha7 zhqF8Kse!wYsn(wY)BShh{JFwSt(jl%_ffeG0yL z%!WRJOp|8+3?$&b1DPok%AEn$FtD`oc+As}J^3Ejz8i(>qVOTQm8j7z3Pr`T6kq;Z zNmJel%ExdPO4+6})6#F^f&0+FxCgA{V?4AfPSD4#8jK;{H^v33G#kjVo`Vd!o|cE= zrf|_$L!G)8`LT957gxS%I_ExOLKlI#C!-?42j+viQfOPaMBK}y^?cw?0q#fcfcPQ7 zaB>%$>0cn>VQvp!`o%WmLSp{6^qGINdM#n-wZuxDj4Q{XJi!R|>!?2)sqcRpU6ZNT zpN-&Sf`;&CBT?R7GVfmOk3i$6?8eH-;&El zwYaJ*q@n+(gF=2d1{X+#WR#!dv9iIh$@uqwNsX`!PtD&$ucqoNK8i@#*r({#^kO(1 zxWYIU|M!F7=!?Kw2_CjseVzLM<4^){Y8bh&G*Dl~Gma;%8X3I_x?kb>V*m|!@{jMm zSpeQ4VgV}}=7^E>hghmOZ{T7K+S-IMgsor2B1H8^=|`6n@N2OOI;%5D|Eg9>9R4o!3dw2=~eeBke%<}GlE;h%ZFHGR&hjlA+e1gd$yuCWh}0(f>z=hML{)!YVeU&y0(s`uyJu$b zVt2pR<%*bweL$dQ^b?H-4SJA6PAbdJ*G=>d)DbIys#ZFd!hOOQ?qUc-|AfxjQfi~o zl0=x@i(D4zYpsJC!mwEb*Z54}!!6fvf;mXIx6JF4@5@V{{Gk4o`}MJKziI+Kg#1c9 zUYU-XDr~T^&cnJ0yYpBsT|5kl9A<%G`@Sy;9Sk#>#QSW7UUX|H0$bf(Kg#^09%-Nx&Lux?+$dTZ5YidOBO1C4=i zq6$OoBJHQdjU5rH1-Uk*?1HEZAFU9A5F75hY&ZhGJUyQ<|oP?`!1o6zTA9Eq@yKa*;N-&9NImJEDJRb zURQADXV+W{=KPbNRvNeh2_qjvKDQ>1*JlD=OfcK1JRiP5P6c8&JD& zX%jjh%uW(LFl_kA%%Q80-{5aBq~KpB0R9;3S+mRe0g#pR%6tD8i4%_0$e%5T^r94)P!(VzGxkYq94D zBR2%WAwGPPVl8jxllKl8gV5`kdjWKbmlc>gcEjlJPHpv=1?)_{?El=M5o#0ySw{+U~DC_@`I9?0vKo{u4 zjlUO^w1D%r#Pjw$`ZykY?m9MRpegoerRTUDyB_$c=7;O0jKNO=bXh(u;A?%XB_=QmI^t`1NFl zBfh;{ri^j+A4GEAGy~NJro9p)I!z(Os^C}Sj6qhcLcfS8>z7wjFjL(f)%~T6fj^?0 zA=cd(_!Fb7wjX7sOR7c^_verky?Wf@d`l@5RK-oa-I0T8suqTRNK$W(3*xUq=o z+=+JUe3Fe99(_!5@q;F%Rw1I}oQ~d#CLyvtXcEaXj#>OBAtLYK3V}dA42w@gsbp9< z9=_aQ0(+GgM3q{Gh*HB4sH`atS-HHOl(d3x?Zkw^63~L(2)<rQ&VQ8cMWGjAAOnyHw#YNjH}JvgK|M08%v-g*!+R*V?Q zF6zUtMp<~lNlD8J&{5y9sbUPquG^B0ykd8G|QIpTijnLK_ROY^JWz6 zD`udG?pH#>=+?#LD%vbh(a_t#yR4ybaX>?H$TY6bMgN>3(`GF?AvM6TR>HLDevh2- zDG64o9sBZAlaxxhPnD2~jHfTgOm<>gQ5tUy-oiT7BV)@pY!7h9mx(t+2{_M^ zw>e$|8TQP?5;GRJKQA(IJssz(Dg`FoSKUqqjUdDlErzw;em>5910^!w-JBsTa?-?h z2JtY0zv&qyIyuI%1zjMC``+a80H7L-OdJ0sOW{YKVkSV?(7sfE;KCE@ceh zw${`TyU#aKcQ9%Ul6YV|)4WehBCc^w4Sj~uL6Z2EYLJOlR*TFE^jikq8J;ObQ}Vo; zH%K)!kBMbW$%c`W>-mePw-@bh@kEj;Gbgzs&E+M57HCqrfCAmNLHV7HQ5Zl>NtFgr z7}EgCSL?#F4%!fy6KMl&f|(YWV4_Rn6R47ns0tHI#QR9Vq=NHnPppJ)B%FCj6}DLs z4pC!}y>XkzqV%evyQEO^8DiY#brnznQna zPbp)tP=E{9UmNuZexllC(}MiLI-#m|mBy5H^xMvK*Hfq>Se}(Z4eefG?s_K!?Hg0q zBZ;=?5CpDjbD$4o_Ee!2&CEO6u1bpqK(GwZj({nstc#Ih4Bm{2P(9 zaXzuh1b^kdm@-EX-qPSzQ_pxm>cp&&oj=jlsKscdtiT#vlu`m%zU1{WElAiw(P`9Vyi-7>ZP3 zM2Ogp5y8(4V_cjmM-890t4)XOu_=NUq-u}Ngwh_HKxvOnK-&a=k4;2r)DWl|HFwDx z;7ja#fA2%0PB{6M?1(G$Tk;1BUjmcR+xYvSJ$6`KE4gZQ#Zg;5*2(YR=#Cw@A%#m55QDPJ!923;yIT;LZeRQg4LX|2R) zUV8DtqsHPZp%4{)PsDEe-c%37N_{V`5{l_BF&>bpcunpvNAHuU(0+l@L6Z4P3oqCa zkxQ_T-n}=46djv84yo8gNVc%=gow^0)S=3ELVRnW5RyxLC!W8FAf~)up@2O5S@H-F zQSu0g_}Xf)KEVosXuO4enHv2IJ+%{6u_z#-6N6B7Ox32%^ZkcRXbHq)+f^*B1o3J} z9wJKe5ZKjQQ^J+080tVJhE3#S+_exSFujZiD|qq=mWSHb z%$24KmWuQk!7U;-7r)@n#n00;qxy9P*2^*XWU^j|0jFc{yWAq13ad%PZmech;Vr2C z^Jh#JV+?+g{a-a@GNm+S60rM2y-h@E4wcjwX>k1Y77?W>lt9%KN|bvp+sfBjkC@KW zIfr7ts@y0^{y=pJyw4o^e$JLku9Z_L*|8tF2iwKTa&5U|OAD;~%N>j%^5bBL1Pd(T zS2?%hy(>0J`n{_}ZbQF+8JO~1`vUY2E3PPCn&Am=2HuxJ5mpj+jSR1tJ&(%Ma|&1G zUy6~0>D^OYd5h8ZXNxaI(%g4JHr$N- z?zmR;Ft)M$;zX`@#}_9yZl6xsdo!SQ2(PZehi~yMJd>K=*I1{8p!Ltw$P#WU(lOBJ zT6+lTUhpFwaIdxcIR0)gnp2>N1$5a z1}SrCLL|_MnL>3Q2s2hO$1%y3b)K*0M08B)NSDeJ9}uynIZpC)q3?s~M5iv1nt!m0 z`?|~wm9rKr5omWG)k=$l27vu9H-N1dgRpOSTj1{<_AR$~_}wjf!IoJK`?#q1Q$MVg z>U8V`jlnYz@`E{3|8SIh2nsdr^MELwvgRRc!>Cc}BglvkzDAdy*X_BI`%Hv-f*7uY zu z4V}ZBffO-Fkr65IZVOT{5yv>r=X0!S2F7|x3~)OL+(0DFc>-F}{Sq2P|0K;?CLMyG zy_aUeg97es<JhUI>D*NYBcsvu=_gE@A;a;M4<}34;1qiAIy) zy;U{IC7Ogf3)eMYnm}c@jz)(jc~>Gyj40GH{u1V9oFk~zvrm8`&@;yE6=d@gZvFX+4vyfu4Pm42(fOhDI6B4GC(HvKoU#y}z0X zC#czVqz$B?n&m`_xJbc7s@Zi^*^r(wb4kyP!K(odoPmxU!eRy`OIwNJeG7_b3=->z z=7rO$lu{?*h!dHW-APncv?gAn=YmR--OhPhWw#@a-$#;S7%%_4m@z2u7U+PUNr$U6 zT3SF_zfz;iczZqd99pz^&(W3Vr$&1{+Z)D#6_kS)))Ml~j}dzFgCE{96})i@Mi9C~ zw;85f{JgDMm>Mf4ibwbV8Y5#D-MIyHf$lI~)*Y?}LMF;1M5lzx< z=SsIRvDP@BkC2U$oZu!l>UQSG3nM&+Ze=_-B&flg0f=AE7$m-|K=_e6m?>eW9olT)qAn#;nb&z+2q-`6Z+#Xg6;rkdMM zo;y1smZusgkm&M_laa8fjgo%Bn6!AjdU(yUc2hMiB<9QWiCM9Nn4>}8szwfZVtGm( zxR&)>v?#a2RQD8E<3)Q;%;YgAj$3|-U*v>V7IxFr3CW4-4{OfuHPuTHdZPOBWX8S6 z1ULi<6O~h7_@|8wztzX^lSvY7i>Ei4s(0apWVd>){m~h%>b|`n@9j~q)jT?*M~%&8 zxM2>%gL)Y@EoHa>p{bsnfBlB3>Z0Zy_+q@R$Z*`c9k^GZe)72G6IH!eybP%B)lB&P zMuuPS+kt}Tbzg?tKrcf}m}-7(`?Q(rRO!X55I5Cg2@gbHwyL?E+xPBP<~SDl{Y?x% z*Sc-l95r)dPiwb&seRir)PB~R=$d0DG91`Ap$kIK+P17m_3i0xLvOvh2OIzI_5`eu ze>MJb>{&k5`FL+iJ->;~d&+zkdG>M_swCZMz55#$KWh zo5QfsC&?Qbe&rB`BXb#^JdNRu`3wgoK6&Z5<*n+p1&^bHF4&u_S576?a8__H!bZYfY>4({GQ&8t^OubiBkub$uMjqdqs`l2_w>(wC#Oomn;+()h6 zDneYcf(6HBj$6J^{b5~pPOExoC5O|x8El(WKf{x3)_!@E@z2cKK5e{uJG!hruZ|Y6 zRyQ+sOE-t{t82DTyVLl~e2fTB9kp=#v{rTEiYFlZ)xv1@3Su6Z`~>P3>nDB?N{UXI z%p&i}lF>;k8Sd3it=9lgf#IILY=grVF@CNL@4@+0mz$`1XRRgw zJ3Q2^M?JiVdOK@2!*P2v{LTUnv-8$Ij#2R59M&T-mrb_?1}d*EK}Rf88|QCZwoKiD z5Eep=Sl^~sp^`I1F+a9|iusK;h8?1$!%)&zbw!q{dQ{i-8%%Y;d~ZTBuP#4e-12%g zn&T)~pPm5o`ImKUw7>7q;rGTNjMt*}&{*l+ZPOS(aVEoUXx_Z~doz`B#~zR4r*ND0 zn~8cK0nB_=SVyh8d=G{T6K`~*J)jMFbyIfS@*9jrdt$4cR~u%N^l%}a-9pmi4`g`P z8fG|p12eRZV|YS_VX=i_4;W>QYcas`Y9Ugy#wm!ms{3J@@@R0Ei<0jN2psJDbW542-!G{%(Rt~){9r&gl<~Kv|jaLf$kQ{J~bpz z+jOQ)RTm2MSEG>biauoH`g8ua6w4@U|3b zACV%CQ2&cIXjB(09@}@ZI$Hfw($Y)E_I)mLtcs%Yjq0Jj=k+aC$0<{wBl8tKowiOo~+$hl0$xORW-6GKbU4(8_pA+c%1%z%<_X+f|8O(R5`l_Y`^afh+F@YY* zG3{RUU4cH+P3S>SJt^QV8wq|%JtI(J>K)5w8(&pFqqeE%pn8k37<)N_L{&TcwDzOb zBR(`|4?^DrbSoBkm(0Wqb1ca;v^^F;%=eMKVwvNS_J(lznGbny3b?-yz9rDyy*26Y zh3OyGYBujk+Od9`VUX!ve!iGMIUh0&3KQwo`H}){T&AJ4KucF@DB}rupkG8zpckV$ z(T6J1{_1DcX*cYrDVrtV^OlBM1v-44hS~-CtWT+-HxJNh;|-6Jer>V_JB9R9OEok> zpx-xXs7s))&C<|50@be2&?13e^wX9Iv}LhQTP4t(E)5+h&>CNu^+v=)BmQV%EORt^ z=3r^WsnZA<5e+?n9z9y+d}u~Hp@ly5=QcvieCS80)6r^`4^4(>N2`+ov4Ty9u=vw` zXl#*&4nrCoD2^!2>5;>QbjCqC@pyrzNh6*f88)JkM)ej(|6&d;fi4uabRriT7a|SE z6p?mr{I7MhAaw*e1wN;p27}+YMj|+5B%*{}>tG|Nq&HWz-=CEZ?=PYcAZ^ZuRobK+ZrDkV;o(uBcxN#@)=GQZP z$J*)T=BROrs}gh6>j*JzCSL)@lKANo?w5E4OrJ^a1pY{&{IG;;C44P;Rbqy^_>kW~ z(BnnW4_OrV?nV~B5kkyRJ4EP43C9vQstIb*>fh!js3pyB<-8ecWYHf`K;87efW^xw z%n~6Y>YoR_3rzk1)f82^bR1zzG=*^7h6aTHY{?;kKwuf3_E5r{6aUw zy;di{-R>lu!=&9&r0`D0NWBp9tyTEv#gm)}pJiDIZ#S0leDMB<#VZS)A zp((Ham})`zr@7-19<^~&lc^qQVO!o}qs!C^o1OdH-WK3rn_+|I{F%Lo-@SfD6Ffby zH_pamUBfFmEQr_7Lwvxx5xdz-_S+YQeSNg0xQ=Av(fR&v^TvglsGT zD^)0tmO7$-xbJCTL?w!-q{WW76m^QI)wK){XnX~jF$j$sNMSP?$AkWF-LK?yf3toc z21Zx!dbtc2sX$;?)DwqunEeXAqqu_8r{VTb(BR_}ItsQwt!o4K?wuBEz_@~5;{E;83 zSVXN{bsa(-KR&ku@js8d4dD~h7;60Qj5`ru*u~U`<}m!}#(SF9j-0xVwb3;54*opw znlcgnGU87E!wCOW{}{r1XR-Y><)qYgO|ZWj`0B=T@!yHE$dxgMnvoXhHwKH;^k45L z{h$mvjd`HN!Bk`o4FLVD$b<3kGzFvoyQ{z7v~lF>xeR~DxHod!Gy)^t-!Bnu?|%}Q zxARYyFlVOjg1P9J!mxc3!n-5pb1{bXis7>o|F(qff_YowJrW<2_|iBj`vsGh_%ex4k@yCQ z|57OD3g#HW94qlH54g z@-iOC+|KZ$T?|iZW%z9g*DPfG3kw+D)5g#g%Ev^+`#XsFq=dbFjQ_=ASd?PkJ%sW0 zSqzVnBL99M;~S^G5U92{@^;sYK<&GU;pWv0za^NTOL(7z%YhHN=CM7037W0T8NR%d z;jb4ltnd0|iRLEG6kuk8zp^W-Gr zw@dsd5{?trt@XrTEv)}h$M`1>WY{e<7bF?~mc+j%spksi^AcYmLcF);Rf_Au5N;g# z%D!(R!>EL}A~e-guxO_GF{UC@{cSwMH|D<$d}AwTGi|I^8-Iq8xjgz0gtKA{z1VvQ z&oZLNh3qJ&^GZ3B%%2P*Z(sDsySkA6R+@ge!^8 z>1TXw0H{l)20P-FHK1^RL1BkTy`SHMj9$($3>Wjj(vO6hR`D#i$3dM~P^ycQU(0O9 ze6a}-*1s1gpUgA@JQ^UOeOfld%YCvBt!Tl0mdf>^(`ygG+Tc7NI=?mo=t2!OAGhfI zd`vwk&;{!17PxHGuS;nc3XA8o#jIlvrPM) z4;?*oGoX$5V2AmRo7@QKC?9g|L-0ZL`2uZM|Fhtpe4F~VhVX`G?|bs&)SrFQ`_QBv zs=?N5uBiQDzEgGj(0jFyqF1(-Kh3ZzZPh_x_9L- zQeA4p6wPx6HV0kmG#~PQ-AeF0AN;96m-^6q(;AU>tq)Dz&f{&_!U=tJMT-_QM?+z3Pj8T5W1i9Hd{-N2V93cWR!^Pg9!&+OEEt`k(v^b)7&L zs~@99XQ|KoP(OTyd#WD^t5r>M4A33|p?{G! zNA*r)+QsVE8wf3$p`l;FD>z3T?n7ORB7m;*q1S8guAi&E;6q!BcYF2o6n_hdY`(ho zmHYzryAt$zes6W%Or3Ub=9T;+^+g}LE7y=%qJHf|od+*B_Eo*JH0Ad;G$fX)OMPhH z!te9TR69I_Ea89y>Wvj@KOdS^*sSm)myh`13)B9bU!mUip@r)k6021IY{`fL1ly+; z3v_k!xr=_0TCL6zXuI04_+w+Wy3vPrwA_q)^B?n}*IV8*)~LVvP{ckea!>`&wVrC8 z!y+`(wdy+pU7Y;!l-FJYqlJxXO$kaBHmR)wZCBS7Gia*Q`k8UN+EAQr9-&sv z)6h%B*20nMX&-vD_>0t$>O~(aEF<&){QS)KDDoYtZdstAhYxNo9HkEO_R`?Irbz(* zwopTFt(sFfUOm8L9mse`aqq$j>WM{!u2%oEYE|KsibizQ7~UENZRjwnM%4Dsn{r1K z%FvJ7Pbdti^nOgGMLY%2|K;sVz@sX%f2;28HJ$FHJA^DGorHuXKmuV6h!99v0tB)_ zK)@s<4Mai`vak$jcM}A01%tG>O%PP#g5olW;s^t%j5-6Oj)USD1~=RQMG@EcJLleX z0?z-v?|a|(Uf}-vELEqfPF0<%zFVi}ApX<9Ft|;kQDkaL@mdOT#msFM1>=@QHHyPJ zcSF&Ns3uW7f%0t@w}D$O-ezvASTt^J)QZchwo)`sq?B7lVCJn+E5*;b8kgAj?x{`T)S8z{rM!&cw^!cb8#cRy1 z7hC(7#0GIr=T_kg$_8<)fQnx)4h}yMwLv^psBwLYP2whTkU76tg)1L7i7$ww^)I&H zt5G+JA9dv`;BFS(iYTLBq=LIu^wqh)r@k6>yBMu=H$t~bOwqZQp}SMe);R-oTg0t8 zHyzwoJ?8tx14wzd9`e0@aVyw+^f2oexzkNJw|hX(IC9G0qwW*8&Z5d}73#?UL_H|> zmk_s3M9e%BwL^TyoL{uV%1-gU&J6(fFuzWk8ZjTm?-E(FDW6|F5AIRn*Ep|Oj--!^ zZMw1y+-|W)=gxzBN*vX>WytunIH_}wMW2g$R)o*dj1DWj6!n~#taICt@=xLoJU>hY z_L%h}≪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ʎw0HMu zi>^*zPsXNvt6D4L1=gK0AD%G~g&O0cj$XA#HzFo!$r#pbW8>O4x=GF`(T{VJ~7mvW>LSLHQNIz^e>)bUiXZ3fr^!8pui`n*a_iNn@Mpz ziLOC{`_(7)tgk1?&TSU=RMvbiM@|He`;Eco;8pa2o>f}2{-QhJmxL>!mio$kg)x7T zmazTJow=9ME+)3$`M*Tk!uJi;xq6Z|G+rhi*k zl@IZScaFIo;_4m1_o&&tK+d)PwlZk&`|SjYRfv@*_?bqcpsAHRbe>CkcY|H)$2wQ$<=hqO z-iH^Kw>K>zgUghH!eOW^lI=x|0iYznb} z=o}fouhxTTwc8r~&`@aVor2;c2RyCto)@u`weYFAZi5G1)JAhiVOjiY7h;zD6q1ja zgjxGXKUHpa%q+nVUx}i=y>@gJ*Ri(jC*_+c<6Z` zp|2?!hj-91DbvH9NLwCKUfPgDH}(df-__B4JRR~9OvXgAF|!kC31VwlOzGUbu8j48 zg72RNsGY?&)UU==^N?`Mlh?K2Wv6}V50Pz+Uv`Ws&V-dFflq{eb@`H2c2EFQwjK#! zN@=CDlY?K40LZK-ZQJ%`q052Nj7x4VqZ;q$I{JxT#x6qyAN*s>&v~BNFWg)uOwY@m z@rK(2sJKiPeQ#_3@lxJ+Nn$Md^SPn;7&~@sVP%pX5r?{yLMO12#VFa>Q zzZUI8hLD>0ZQSvkU_us_kxwLb@Ys-R-eVMv7rGJSfjwhTH`4!|13eS@F3AQ10W}@Ddx`3I~9S&2(cq zGp~3mR~h`-@*Swp)m1i8Zq}N}G(qvj;yMlC$e7|RrvuMR*kiDdT1X1lnGyEumYg}l zQJ999cTpiYdu&QjY)7^h)V*wbqcJuoC?>t>xJ?pe7PEK);=oV7uGOE`6x7CP?~YE; z8bCY_YdAoYg><>W!M7v7UpDmi9Zyu6_)~MTBUSkh5a7+7S`lk8!!JzkzM)xx8S2raip1p>X z20WpSe_=)8V@ZIbyHUTFH`7xCRbceeP@vgo2a~``+|4S{y3J|M$~hh}aj4bsv72l! zh-IsZtW}paEolD4hk5lE;Xh$OLy7}6eeeozlkz}*MIOsS7uMiE7B+X#f6#wSYjm{{ zleZj`r+sNn(msgXgG;l@-PCFGrVTWl;uXj`VJ(0De*_L$@ltgd&s zJ>wbp7!4j^E>RfRd=DCw>E$bcOL}|m=NFxsh-ik9db74w;Sxgu1%7O*ID%(jjp0VU zsaBkkW$WRN4#_GlMu^-^!ta(BtVPjQ4p=>@4glOLI!tRhyUVoh?QVh>8l7AWFVs%^sPZO{wp6E2h?#4IRRG zUPBCq=dYtFSHS`P7X+#H2-@2j7jOv1zyw)sOUOW_CokqyW$35viuDLmh%&{GmRzg~ zTHoNK3-Ox{FCvC_P(lhs@veAemHe2FIr8_BX59mrH<{1T-U<0okWxhbWR30la3xbAYJ*1eJQ@*yACP(jHcm0pUE zSBBl?8&)Y7>`HzOEt81C3iYf~d^qq~O8}Yf`gx=;wlowfxveM=_9}|Z$MRwd$rF!) zhF*Sj~%>?Ag!lACV8721G zQ0tp7Qad^QKA#>7Erot#Ul2EJbWW6&_<2+T`EKTVK78c?MX|+Ar&yisCOz3e$tA~l z-WKil_wsG?TCeYZt=VOtc}S_W0&4N&3%HeEMc%4`;t;8M*VP9qYdR$pUf)wFAJpy5 zXE+N}dhebm&V@c(qwl~$PAOxQu00Whxxu3e7(ids*0 zM8&+0c>+i_dHC%q#YG)NF9X4=S()~fv&V?-7@ko?81_xxTS?m}ms{JaI7_+3+V9Kg z+FQ4|X3{|q2^)auD6wThnvJq@lEiol=i#u4l(Qzjl^TQ+t#wdmc?gcPBCU; zIWY#o5H%f9F1w8xAen!R?Ad?Iu6%~*YGa!SZ)=z$XvIwI?i}^8*|zEfzoQ)V%kb#= zmX%uIL;MK8J@$?BC8C%(dpjJ8b30+#`L42Zlxe%n0GIf{1xw2h`?Du#l?iJr6^{Hg z_Ti@7n;3Tjo^?)&5pe$Z!eeikqTLwJ6v?}bhLdR*8W0XlmC(Rtc21{X&QPD)A!QU7 zdlVOlY6oPTSZ2s%QAkDdc4;0ZYsh-N0&P3>DHRuu5YwH}`JFV~;f6VyxDkk8;X zL%GXesifx!nCA?$>Gi_F>uv1WX2-uuGGzzZlK@Rn1ASnObBB=Q;>Go%C+jtCL-|6r zy#`V#7dzn8w`R%O?sHV;uDK)6^ZJm8Ezrmv1co^l?ns%5Vjr$Ux#y5>ixFmm9tT@w z}7Y&N~SsX^>yeT?dco5sS5#Muihd8 z*vqRoP`mlz(cn39yw%A>(->-8QO6bhW4F^!i+~!6L$w|5sua`VWCqmN52f=}yD9q3G!<45%f|j zha8)*)11GM0Kg$Vx-YO`BybgbCz^h&#qeL#?Ls2=7O zfaEP@(+Ug zVM2CKv=a|PJ71zTV@E`HJfq1+|5}#soo2?~pXxantKq>=9NIWy@jx}sMraj8dA#iP zCo6umkR=!Y_7=unygxL}7T=n4_6=46YJ&AIHy|)=>uPI`e>>G}6vBz~1*my@^#Tfe z4I{#7O z%hwn&X(!pl@xbzmbalH$ZgrP5nLyI(60xV)-rB$H#X-(NyF!Iem;FedK;SYi9DfOF zIw*keWZ^PK*y6C`T!B@hX;LGm6W(0i#V;Hqe}DD2$Nrg*(*quV7Wwx_`7dHQ_>h+F zhcm(hpp|RXa?n{;L!3L*KcGDfHN=2Il&wu8ByqA%Aj4Cq-EcPjtJhYYNa})a>4{Ir zgJ5_K-TyrAP za(}vUL1l-1Ly~#>$*QZ3E`ZI$(Nn7C$=n378sQAJHP2kdHuI&50e{ew%W0U%`HE6I z$$K=o-U(Co9q1ABO76E0l(ItS^EJEf2{~hZUxO4B`MBOY2EhhsIwmKY(JyFzC3br% z^HBtDM%KwoW>`Rd$&1dC*X5rEF8xIiG-Cy>&Kf3-xmesa9+;-otU`R>4wk7{Fc zIfG=09Qw4O+;R`nE}b|D{(sl6@8vvB2b+#_p;6y=Ja$%Ezo6>Q=@Gj$us?<5~qspxEcNn&{hf4Svx2+!nw8p`L zvjn>>G!-h!k2hbgO^ezeQRaK(u#V+^Zm!mWybi|20HGfq2iFHlVU4}WLJI;x_1oy4 z)7Upb0>%&*TtQVT;+ICR!4c6T zas&t)Wemm>IKa5VaaFj@e^hzL>D*zBb(f@{3gdBW{c=bHRX7(2cw%pV4Dkzw-vPUgC(O`}-cyiO@2 zLk$8OUqr8L9gfb0B6&}?YGNK&nxI?G!?qCD%)d0)0estVMw?@`AeufLkCP^*)n$gY z;YMi@wX@y_7Uo-4!u!BkSlRjnDi(Zu+a2_f&(AS;;I34>h6_6ob}0TwsbbWK9GGo& z>1soOG_Stphx!IK&z7gxP&Lt(FOXZV1gQQ*g%O*6T6_VQ3{|fUgWCuqxz_A=uYISh zMV+kuiN1VM-&p&f`1D}k@R}% z?+A=rs^L3(qAMJ)i@kU>7>esQ5a5dpABtfjhJ1)EOFms$c-DfiH_sh=fBBuuwEoar z#e*?};1fhyJC)FyiA9rarI|`Q#lFkw*P(&M4o8IJ2t?72k(0XIMnB8;QIZU}V&w}- z%u}*B%&+M5!)!N)cijg|Q#cJnjpUZcwW+R%zt85Mou1wrSs$CK&u&8iYOG@I>+ral zOlt+#NB45EW>4IWl}T$T`Si0)#ff^SAhM84m+z8rUnw)@>a7Dsfd7*WbFpbj<}8bd ziu5w4X+W%z(j&-6x}E9e9NfZ&0!DfwKZkS%^2u4DK@>?r_LLD{aqkd~u&lGw{c9{J z6UXv}C45Y_Wv!eSih2l)2Q264mbrjP@a(X<^)$KK#X3yQOpkrfX1K2Ebb2f4%PH;C zu{LwXTl{f_J;bxv(owv(knZxGFG3zhhsIs8+e>s~eFId{IKtcD+Rm_}!{x?#Kkp(# z{y+KTUBmn^gtM6A(JDN#xK!N!zVX;d5;!&h_FVq!VOd{yxDIS=qTE;c1w+N+B6Zys zw-NnV;Od}j>lpW!k9-;{xsLq@=B!4dlp+X!%c-A1H>!5civoy`U5-%7T~<(I%mXHy zxMNqe9WrNDE|<$NN8zwn`hj;j$}02DLQVLr^3mHrEm|k%_+A`?HDR|_rqC?sPpJn@ zGuNSC4Yp%yS^$r-9e)5+W~8zllLdRi?PxV??YTpJ7B@Egi#f*9_6K3==unBe$*&4f zFLssQPFoyDEM-B3Js7M{VZdKW0R8hA+7)uk50{SCCGQ_H{ntqII1dvS$4G9a7;`59 zx>E)S)PkAd?PIod=^>Er6W6O&J0ITw|1E(;I#{J6fY2(g(hr1YgoCcI4mom6%P1tX z%<3}!=0NM0eFJ@sTG~~{c+gfcZl@bDU??{zz8zFCEtx{bV4D7YKW|BY;hSQdO>I}P zm5OXGLw=NfhiOt+7X8Z{gmVvD^KGgh?4SR|*s z*;oWHqv3_YfyoOcI5O$mx`TR);Vronl5FNGKG=}ETSZjuf^A%^Oos8?g>poYjrOyPrmIJmod63%ZTxx`4JTp@Rt}zenCH^_)POxh+ z!fKGGxN2e3h*3aWgxy`%Z86!I&a}2+g)aLpM~<#YfQPCH;;Q!FVgop?%5*4)dMTcD zOFveXf`<@5ZAZ3sh&2=D*CP(`yKQ`C*`)7y!o7vB(an}d4||(=LEh1)k9;UFAfqG| z`K}}pF7cx7mUUPry}-E@@ZQGpKx`ESyJMqzh$v?;6;9Z=9z5Q#Q*xma0ZpJ+5f4cA(v znbUlXPCkF+L-La_0m}Vt#s50^!*@2z#S&0zGydJ>TH84+SXlEad%Nn8Yz4{g(JIY@ zZ0Q<&?UQS9rr(8YE(z*jZ=!fg05uLV*Si?mh$BcO)SM`aNO=f`+j3;1@Bw)qxYTf^ z6&yci>r7o!?|Hq)KX-nKM(OIX>OV}DMq`#*tkQSv@7L}R4v@j> z6Ax!e9iq|wdl|6eM6*kAVHX3kZe5=d{)$*fC;DP@8{>RR>08K6@vPpu9_I|XM4H*l zDSfOd45xCy*?;^t!pi$x$s3?9c7Fbm)UE<6k>eQiXnUG}#`i>qt6svqyHG8qYn@2< z4$-dE>Z})*X)0n5;Ub0XlX3c&e_|b>MseZ61(BxZ@Ff!r$F`0UL;_mZR@zumY)g$C zTJr)qL@JbxX z?%IAD|1J_$hs+oyKF$j?GmjjZ9r7}%ce~&#xP^x%)EB{dR&`Hk)+;*p9#MQWd*{^8 z^dxlk=)C#ZMJ2QC!1ZsHY-eL;hck4K=Wr9@j8}JO?WE1;;!oQTRY$gKxL8{{NE9xc z2U-{3xm=C#T%k#HwS1!F`N3BKCC`&l<6(l^?WEgXtJLGc?B0(V@}~MX_rdpJNDF`L zIA~RvOgW8lO=!jJl)`+rpf!9jB#-Iok$HRa>%F~t&Fovy@&=+9i26I)t_b9MM_+D= z)T!_0hEswP;m~I7^BBn{N6bn?PI<~O05To%hqG#a!d~Jc>r!(Rn~xH-?L)&@7XiX{ z#B1wE$0SS4wVx+4+AsoUo6d0_oKGW={l#OcTa24Oxtvp6s5N;Zw%Sp`Wrfp@V-&E% zfs*LpzfmpCI?QB;hm%Awl;?J8r@wKg8)yy?LC}f3GF)q8rLo2V@kcm*bKqw{LdikT zC&|YT37dwRddT(w8+vr^`Q-|3@dl1@3!52E_q%c)HaW0cH-Kb&Ll1m57BW3DGb%^& z-yMtiWSwo?`9XS#?@t^=^@?L=>g6in}A27N3X%(cIX1tu`?{_ zYX0{;Aq>G;0**ybCA*f1v+wdxVSLywB!F8?A^Fm(#+CS0Z69vBzIGLV#Jv@`$)eZ~ z13)zVVsT7!6c1l6v_Q~8UFIE<{D;tw&bL~DExln6@YzYD2|l620MsW$FrDGMVvJ)r zn!vxbwZbNNWBV8Rsu1a7W4FnEk}cyaoX?eVJ|$kx=E$kalByTm9g+%p^d?<2a~zu- zpkd3r+>SN_3UmDH@0`!>?K7U_ItYe_pOqb#k>3fo*+GqIOBNbNK`%)4nGRafUA;9_>|A@JMr8Inm*<@46$DTv?1=3@ zsmc9he1>!JP!;Hztl^4(e{r;sns<_()x1yG?ufDKavmli?P=}b;KNcz@eOLg4p&-5 zTG&{>)&n{2N`*9iLTE6{uCy#es6edR) zSo`It!j84U{Buemr?dPpkB;V7sue!0?fi%I4PKe*mbIThE#(v(?k;Df29vDPTy9;r zkqEP!I4*zgU!2z*+}K5W3iK7ntLHz&fa^P`-k0E!-b;M$PEl@$%;5C-FK*{%j2V*`7fy);p4azr{KVqe`mwGK zhtSTZK&`9P9rHwIByb@zA)rwFiMUBsb(cf#`5*I6-^ZN;G1KSU=gZOa^Jj$LLh2St z?by}-8KXuMp#I=QoWuOj@9q@S*y&TpL%sV(fLWpe6p6|7+|b0fb9h z;cTF!bEt ztxq}GuXYS?uGQ>|qR^42a5q;@p>(CNcBV1~D7*e;V*UIfLhm=aX*$RT*;UD8L!&1_ zT0S3S-43y`K<^)FO>xU!t)%;@0m3o6h3j+#0?miyYH>-atFAKeVx>C?I9?hth+gvm zDr=iT3X`=u0fZPKCb-)X+IOC?76B_oZ$I8@5s~$3;9s0%(9wlRkUe9pk?cXBV`a!(SRF@S_3mWGC&*&ND%g&(ma64PZy zBflcNv^L-VPiCn9D+ELpw&={Mu~oEBm;yJW{hSD1^QuGk|K0(tm#dJ>$_{e%Yf53K z))>$CCJxQ0c@cu{q)cAB2Mk#8GPs6N`E$ou zU%XrFO0?|s`6q=W#&U&&tigNT&;**bmhd6Z^(0w@^%gNb=&y4ii-`7cD!#5I^SH&D zc05VRVu+kD^pe3~Hr{3^UtQu+s?N+4%?j3gw;?a8DxVGdw$cXk0Ft}G2#s|UM~^=8 zzIiF#+mv4`UeaxjOBqr}>%ZG1z{VOhq?4s}G)za1yA;(8U`KaaRNW z82VErYB8nL#}k(gcSnS^8Cq+zyVF}Vyni*t9FqL~5mV(pb-iY|$7e{7cksU548sC^Nrz1Ru)l~*<=hMU1B;PXPJiW_)-M;)id)%_ z{dxHCrjB!SXAFcMM-A?5%J&sn5G` z(}zE9#}^S;3!DY#23lZV_MuL7c}F$$tF- zVEe$44Z}o577}vq&V3n9HE4zznNOmhpli~A8novROhZ@m^@ij;G6%W8fag!df|0b^s8O|c!-zQyJ4&VF<} z0;0T4zuls&gB+t5C2=f_`|!^4a|vd=be%Q_T*P+VI9`|X^yt92?ECj7Xg0S~Cxr}3 zBo(v*1}t?aw!D%i>!lP(RTSJ6KZJoe*IR;mQT$JN*mv`80UD+;9-jYl<=s8d4kCMQi==ngJju~ z1M)Gxh@)GU&;CkTxi+}47*l`xa?y48IaZVL4sbf*vhVBGtrne1mdZUA464VYx1xp{ z>B)wngPQq>L;t`65_!$8!E{WY@Q;oJdYap_NpY2lHN2?L`OtstQ=Ke}TQ1+eo1sU# zj=!>a?;ja9m_`pWERfPeEHI1|f2CYE%oSYd*q9IV%GUPdI6fx)9E7bm{oKF@%WzzN z0Q!cy=@&E<9nNb}E_()O@hX0c%P43{GArv3#tlk9iZbb5w+wcHX-!@dA$6JibvJ}| zUj1fJ%ug!gWSxndWu$jShRsi*Yel^fF(BTU^OdFeV*Yjapydh$v9ND-+tS`pd;n4J zV#i8}4LTA<*dAm)mdh{;;^TfS_Nu?*1vVYHKHi6XKV=n)%J;@bh!&VnJ#QJ%w6i(8 zkPIrD<9sy5Mqt(Eahjh`A*}F<*(PjUQhy-M*7O>(Gw;9`e&kx}EcK6Ni=^&GHId*U z6)n%>w0MGj6O_csQHaIhn-qb2e(%)7oI3fnnoEvJ4Wak_Ngk$6ov;p)4*rZw3LMSd z1UnmgF&j}-N_^&y`X1fLoCx`qj{S~Iu95HHXBO=h=J`QXJQ<>Ar2f$%P{ton@zCP5Fu8{7$T-!$vlWjU{6~x?FmTK6%FI*+& z!@F6-&^zc6x7#bSxkim}vv`apI%dtG9XvG)%F=a=!o~;jRMRZ}Rm%tpVw+p&#aO47 zJvmFq)b^HS;CskHa;7RgVp7>HHN;V0djpaQHnZodLLjTv8f)kSoo zmAuh<-aqe3IZBXE;Gg5g`{m=>DmK{^^XuNlhMc(xSCDvO#?XXcz76!fol~|>qq++H zMIZBz9L-z)`mztC!g!>1oKFJ4LO|M6VPJ3ilv_F)pApBSKMZ1!Io0<)(>qNJ4;2cFlI2A!qAu?Y@p>Ex>G}0|?t_#8cJ+^MmpTbM@V< zs&%D3m9bP4Xt6bJL(R!yY>ViK_{cfoKCeK+FP8P?p36#pg-eQlOEE&P3p`HaPo%IC z2iZ0RgA&GbU;klLe%la%Zepm zKT>j`*PD_Y^Huxp=400P)0%g4>M`JuA@oet)5Ah-1>G`38jOKKOg*#u02Avl4hJy& zt(0#MF}+aKl|m( zORq%@x^|bRhKI?{1v*DVMdbbuDW;(JW_u5*Y5DY_6OH#^3Qs2fA`ix) zAh;}|>A$OgsEhku@~{4GL(o%=`Gpp9hS&e$Q2sCWZhKJT=QDzDuxHEr1LS|>4Ww!f zqyA#q~oD#(K1@tNVQDm*M!gDu>3QiCR;os;i z|4;$I|Ik6GNXYO=X^0r`d?tJl+~YYsrq=%^8%`-AJR6?~^#w8SOFoiUX#9i>@PZTw zASBTLRSNz?sAvetD2Pb#Oab^E|EY$Ig9P_#{!fCR5g>zJ5#n7Zd8KY1Sh+^X{p0sK z5sc0SnO4Gi{PZ14$3JuvA;52mgoF$y>A#8y1g}6`66*N0<}l}u)4=$(-0{li1rRn8 zydXXjyqO61H&g(5)M$i@$Le_|?Hf$r?W<~h!cFKPW{@fww<@N|d?{6wgbJvsi)pcPkIM zZ$3%y@vQg$4*#Fa>8~C9>jyukr>G=~!u__sar*Cuve}s(MF%LiK8+LA!DzC1JnNZR zH?+Yl2R0swgMDzi(f@gFD2OD6)5I^S`(7QoQ1{70Dt_rr zRL#w}U%@@du3PVVdjBc%2w6VWx1{)}pA9M10`yoIu(g z>2f8BuCSf7%Ysw*9rbJfFvcRoCa2l@mV$a|v9VJ@1-Ut}8?DAF17$rXrQ0hM1=Bf! z#(DX=ipvf>Bm95=<_EnLx`3YSounE(}Tak@hW+_$o zKQgV}Aqf(0cFWYdj6=jfQGjIp3_Ps{cCtpXN$B zEM~`>=$HL>eA(87fh~k|PRkt0r-)vO`eO7UuYJs4OjB|NsMvz^*xN~5j5=yA44qdb zkJ$dWRVYU~VD0Ok;jesY#jh!QMFQ*O28^FY=Czj_lmGV-pZt4gYijggG7%8qWOgqB z%`V&ZoaiH+@-e_XFr>#HU)h*Z86V}aHq7w=T zKXsA@w203C_fx2@w!2*Y#Fw>s?h9SYWu z_}emKv?e!tI<7Jn=b>^OoVipz@bVg3LrFs}K+#*)Iaye9a zB0~9N|Mu02CR*Lxd@<5%KVzFNZ)MPw9_MfJr`Vfr1Ed_!)@Nq!NOzi>CMt5O4byB! zyJA{xUl|{$zUmvBzqIj-;-)L6TQUiiRx3tZ++HdX=j)sJ+(v^tBzEUR#lqk!N44pW z)jOn^{WlWF(%V{*hOB4yQTdWrfgxT`s!$+M_s_>Au_?%rhc3_ij(H}9mIvQO%RN5R z*l>$EMnLuT7Pi4wsN^uMkSW*uE$6QHXX1ajI9R^dEeK|WSG#Id3TJVV@1)bXGlh>^ zrVI!vpKNR|lpYqAIDb&$!p!k&rP>_B_A`d|MJ{wqx_+$rGhrj+Tm2cvYcyY*HJwhR z%4o>?Uv?KacVkV@9`;Y}_^aDG0<|y0f6xFfJ6C~7qmOg%5h55uh#kOMC~APfN$`}g zgYfDl?qbZ1h*a%HE1ud>efW23v)R`O>|c8-LUi;Xg!=VoQz)*fvDW{MCnN;1SH0$A zWr*Tdn%WMJx-{AyT&U74IX{0aR~tcbG?8& z|4ok#QIZ!Ins`N=K*MMKAChlLYFYJvj=eB{FQd09Dc^45dqw`Cf4JMSn^;|*nW|EE z%b~w{D)ilmngngWi(oSqRzNetzC4G+T=n*0g0mrG9vyL@%SIelc(ROx@j9yxZwZxC ziHBOSZBSbAXEBeUILVMJ8Tt@bK&O-nYdFcfW*ZqwF3)T)RGm;BI=6;JT!Nn&2h>rw6oj$Tn7xhR(PLFP9N9}QD7o_;6?jckM^5Y=Atrk061O=5J+qIbhO~)^UPjv8Wn!sL?W|PL;Xn9Sys&bc zHlcR$+=+o7h=14@=(}S6c}D+oI|NAZSTp!UcH$uPT}q5XO51iyJ^@M%0XTmJ5ZUMa zpYe;|{j-OwvxNjCF7%C%a~?TYo~|05eY<{_Qjw0QFsAU(E=C^c@_P!#IhZQa(G%X3 z6OTX>{_UP;HQ-e-rHDy|^i5jUonV@3*hSsq=cOx3d6+C^Q?otd`|S7SGNh?!-dJ-E zYTpkPJ=*>7&A#HG$0Y!v$T{D(BN^Ew9D;w~mL_?86K8`=l_WTsrM&S?Qj}4v+hhpI z$ASBy)cP$P$bXL_Nt8%{{XiwYFx8PGtYGplJ>S^u#!4oosFJOmKD!$jm<`}ool9-F9la77g3MK|HesdCM|IZQ)f86*3aW?^#DH7(& z=mDlIG%TcV27GBOcz8timz;v!TExRO8_UGy^yGPQ3c6gt=uUkc{b8PhC* zs$GI`MnGdmH6`!lWtcv1v{kFq>P1U3(V0E@koA3NWM#cdq?58Kjz-N<)4-Jbe4rX^ z*j7`B4KO5^68{7V{rF7?kK?B+iR^|CdKUnCfU^M+FCzvC9A+85LX6re#ifHTxEHk2 z?h91hrmPU;mE>7>59G|0`f;zJ1NoD zk*Sf1I9LZmV&5S|?p4RM`1=(o$m#+U=Tq5&`>L4;!QV@VzkR}{S4dK$-d|e2%MJtW zoD+3A)cSQJQZ>&DXuR^FRqns;%37Ltb9#ifz$!|bbi0ElQ9An+^BTW`K_0FIjlY2-?Mx52q+dV<%bmrT8^2*}bZ&aF^s zr}%||QKa{$F8_UAWAY@YlM13fiapP#n!iAWApB0{ltd-L1;gJB@W0{(p@(@FxT{Mh z09orF>4J^ak>R2?1s8sPh+ABeINC3y-GB#tXcpdXfSb4wOc(cxJVwb0LiPv)L2KJu>@-Kyt?<%Yng zQ4>qf>0T~j;Dkp%P;^*;v5-*Q_Z>b!TFwb=iOKZmoIgU|@3d&(^G+U3*Wz_DB~g@XKv;^`k1E__e33Vmqik*e*ebxXu>pE5>TPgN3@TeD&t7@xq8<2OuMK;nmRua_^=ms zDKf3kvDEhMyz{5->kF1@Y_zpv8`k1z;k=I@vTG;TY8Y@Lrh_uS3vM?q;8xJ4KO%rL znCi|7skyCdID1>iF4Fcq3`^7*mRd&wmHB=*IU^*F6X)@4!;# zin-n>CR(Q>DQCh?RF(wBOxo1#FDhCf^CCvxoZ{`|o4HN(+XY8IO!nX`93ZoOMa3BE zPKt7{oyof8ZXNQ%NOlGR|NdT7FtJa@hQebuSupl{kX@xpU-9VSq~Bq(*%E#Vh19t@ zBeW$)H)tTUq>tSIv{^%Pp;&QTc_XrO^*JO`?rrWYMU+3r%yRX!QpHKHFFLMTI8WhO z#OfuqMAPdCC4H6Zc2BNB1Q>r=_UPux4s8)9VvV8@LMWV&DI$<=TO=&^6!@W5v=gc> z$wX!$KuyM1wOOk%OVJgoa;6p=1~DE2ujXmqF6f|#;YE_;;USPDEyzpKV)=x6gQM^R zw(H|hHCk?iY7GT`^}Wp1+C4&SM=klr|J|S=YZZjmVU^unjL44^3Pgl()nRu9Z6B_a zmls{&CJJiv+Nq{`mgmGb^vhCE(Z*(pd%e}MXbI`2QWHcXUE~V*W(d_K*6VEih{YAn z%{6G`fR)xX&D(DElp*US^7w^b!5d8zWX?l1+tl|Z%W{K4ckrSW5m*o9<1>Vj@>zp^#0pOERd$Cm*u|s=#agWV5*+F#!89(5^)oJW zGB2H`klc+s*R(?-vhc$Z&$6)?8~<3)`PtUL=VPJZH0N5_glM_kfdNR;PRtJd6<@IZ zE0)s$&*aN$3y@IMetpTo63OeKRbf==#p7Qus6CV9k%5`fypO#<*kQtGXS-Ad&VrD6Hp5JBx6$5$;q1U{3VZSCg9~;v1Yydj*#VmzCt;?7RCz{(`^;YJ|$E$PXf`?TTCUNxHK~JNN)2^k*=;zXTR1E z<@wUWnuXY^kIjBh@fy+`J%e7X^edcgR!^*Xxn(e!XD%q9HvZA#tXFRoda_=}qv2WV zBZL{zBzGYx=DF>zbGeCC^B9}~*hS`MJ0ZC&CKp!NKK8GR89lSBtwf2fJcU?@x&`Jf ztbrH#8qt_-TJ4j@+KOlD-P)!Xr%IT~NBtMp6j)Cy5Dt2^uMax4gbD3p^UWk=*v7wW z37WbA{X*(E8elQJ;rjer;tb7%f(v->jTXTQ=XiMDOJ=G)RbUu+RIp zr{JlZ`m}F4$Fnu5;yZ9*FdaLS;bU^{a1A#!l<|6^ds+lAK~oPB&mfF*+b^5EQ>_eR z=BIoSnwfGQ#Wne`8eI`=gRGx@qza(^(w%M-ey8-i5%Z@CFq^PY)t?IdVNPY^`xN;EXBI0QpXR=|zz z%l@SFO;w)6nq5`di<}0TUJwo-tzITapqS+=V&J~36Y@!; z46e+rSSFbNMyo&rS1ptAWv1234TeeOyfdMsef1(CZQGG#0~eOBd?e7TQP7Ka(Xf#@$^#9oNmn?}}o za4Wyg%GDS2dYw92Kh})4R>VlRFtWmF8FQf9D$hv(j*Pa0_kU4zS!gxX^1)UPuZNn? z+3!czKTJ;`JUkM?OIs=n@-V*()Hq}iU*b(GT7hMt88Lu$U9OJ zP0m~0*4I;nETaVb(&w-0r_vd1UbzNeQM{DxE2QVouG)Yzi8$gN=)sVdJq-G zTgWTPTB~nuJx5&Z%s?k0aJC*|vo@Wm1^x02LK*eU6I>^sfS5-l<_!-kp~wtEaAO@5 z!NZD5PyW;HZ(FNs5}HnFHsrcgL!$Evx;Y4A@mibfj($R~L|aNI@+Wb=w=mrkDNVJG zyyCyg@hcfP_nq9lg=jVLt*g9SgAjNMoZ?zPLQeOaIys6qfK&fz^OlJ6XV9EeeYSP~ z>5I0=fzjb(SC`RLa7Ng9>7xa;deGfMXQN`%UGK~AD)*Lx-_IZ~s9bi&yw;6igO}fd ztLzgb<~N;u_?!Lm0%R*aRLvj+GGt18^kbHNdd4?JGArDQ3P*0!le5N65PB81p4~}X zC~ux9_~!f`p!K9#caJ`_U?ZgMQVADCne6aF!Ty4`$`Qb+;b<*4euUxUQ9`oF&=zedblTXO?l9bTix* zMZU4Umw!-y%wl~ohb=sVRDw1AgzS}6CNBJ3yckWvKm z7WT>LK)KAHZr0^@1a8oTINcag3ppsg9%i1saxWlJQC(PL zn6@1SurT8bbn2?Q)k{=(S-^7p^RuX%zUG=7BepupCs*D>=gF5Or@VUnGq zI>QZJNajZd5Q0?6>?-@1hJ?X&LOQ|NgT=VCe0M!v(i7ZGO13=G$&>}U7y%&@hMI1t$&{4o4q6{qGnogTve&3Jsf~t&i(YJv{61t& zpTUqNKGleHJaS!I{h2%wEnj4yAvZ5p1#}LXhWy0@^XF#RY|PdO%e$Wt8+qAO4VUdZ z<#*Rs$>(v){gfQH<$DO_n!jDtQP^Sw?)k%(Sd>EQRoU7b)nmknWl0}q3f^in#q>z> zGAX*4zHoAK>eSrbkb?|rGXW#@Ln1}lJ9B?@g;NMa70jLRo19|ELo(?F%3}!_S*7pJ zwYHj~EFC?e&7yh__0OQ77@+T@ljH94wC^bzmJhJ`(LaM?J83Qtz|WwGvqa#U1`P=9 zrnx+4g`Yd`>|Lflcr5_4)iig^EO$ZSus6@3*<#>MQjDfunIBiK|UL>a<=xay>@c` zc!Qbt%P?wa?<46_v1g+RFkpGMrxC`3n+Z2_RjGM97M!V7r1%N5)ON%rS0ma=rA9QW zjRYH)A1|^fq{}i-vY^`2$e@T-L?=;Q+fpT8P(fB%h0Db$DUVo(n7Lsxbz3Y-Y!xEP z`faBX=Ge_fV`NLUeb4{xki*UJhkh{JAp^-QU1Qe37w!T359K$@K%KMulf{T=%x$%? zVgo;c+3AQz(qoEkI5epE_;|8gEk%^~lZatvk(!F(!m-lTpSGSQSNtv@{;{Q5II(c0@D%F%0tSJunudy^!eUzEO&fgrk-0hbmLVzmXN~+r z>^J8d-$~Iw=h*ZaUF((HB{C!IL{82T*FTQek0Ie(J4cL!2hX6|k6AxVj}it|@qJmx zG39lKUK)f@)1-SYzGJ(Tr_2-KU394_pnuAZ@H@- za?knXh6(!rGT8o~W34yU89-S{D_Axd#Tl;YNiH2TGVD*30CS7SQdSI6ymOJGi|gP0 zQ~HybfpYfZm@r?c-iX&gGgQ(2je3?)(iT~#Q?fw)2vMYS(uZ{CBtvE40?X6)(o8BX zHY(g9YdSxzF?xE{6Eak|BNciI@|0ggqS}m6Ux}lD{Dq$u@2s9d!GOP*r$^tHiY;Dy z`mV;K%%kK8Wy8+vUn4#it4OWrtkr2BSQ09idx9Zor=u~X2Dcnv$-ek0QXg}mrCRO| zFH7n*m)BKhv0FiTh1@t3lWU`G?EFYB#KN@qK7yH}26xzOEVw)k;&rxTXsDF6qK+0c zi@ruVHWkoc_I2H@WCQEQShA-t6FIZr&sI0#SgL-vyiV~>F4avLaZ(}e;dU@7p4aT> zee_7(sJMlop?qIsI^wKPJt*A)3vZ;ho1#CskFi}Wdn=Xk>jM)gOAyLa;%|7)`9{V+ zEo`={6=vS&t@n)$}c!)-%ViuG*QL+9vS z!jS8lvW^yTsBCDR0?=W}##oUJVHIQ^U6*Pg9^fin4OvPtVM?(QUTIw=(7} zk-8#h-&mxnL9V}^W>4o4LoR0P<}SyyBZ_B};^|4q1r3=^{67AkDBWc4RH?-@>(9xP z35?%}O9uUVET}s3tlX-$?$kpiEEy$&IrXV`RSd(hh9}K{5ht#0DU9!HYu|DywaLs+ z2|`Y+G?DiWKA00aYpMIBV6bWPX>O2i16|7D{${kv^b{BR8stm72Ot(S2W5d--j$J%_ns zY0;!w0sE)v7q$}hMI-F$t+zS~>DKNni)nFq1ry}OmzLfMJA{dDamk}DGV1TgnI5}i>7ZZB6k2JTQ7 zi*!JcE{-+6F;){Lrej;rK;W>AIJ|fDl)xo7qI0IeBvh|RkP>XOW`qriPtMu1sHSGRtUfhmz z*z1C-q4PI=SdmFtxr+IVo$FTPZ?zfrMwIh0d5eetCesM`cV}0NBU?6Eo5YY}_-B!w>kUxS?-3S4)o@ z^8~cAuW;#_)IwTHw=~Lib$%{v6_+S#b1EubXI^p^t0!?z6a95``3AC8Qr)R?JJcdi53eP1I)2{`Q9TsoboZn@w8AL6;hBh_=E8GT( z+|3`V6YM0Xmsb+kmS6h}4IH}J6UkQET0?Zg`cx*}4oF@8{PC@4v$r>k4Lp;3VM8pg zhGJ(>OT^x(Rc4Tn{SpmDVkBRoUaiZ#V(QhGMc?W@jeHeR^(gJ+1fBv_g2-;!EP?6n zb!T2JOVT3kGJ_g@n}iwHBEdF(;PriW6hQjm1@)h4Bfr2yyP=~PMV2ml-xZM_Tj;_!VT8t|&T8h$g`pYaF;Y!m=9g{^Hv5d23fyU@<&{ ztU@&m8#*7_Y+JI2n;NXv%9-NB4W4=ixHH+MlC0+WFnGg;oRXZ9G87aGeg|omX)O3C zPHvZJmr*GUT#7+lS^a#0NzUGn0%0w+JOmoe6HQTqn@hI6cW0WhYyze>GW3N|wg1)L zdq+jpZTo^nj*_!LDN%CHNQp?!IfH;?kt~G*TZw`M$r(g)5|AW_Du)4@bq2%$`nj?JA1bG#<=Do4sqWa#C?XFL5iO_ajFK~a+ ze+VVHD>~*eVi6x^kms(#Z2lu($BqyvPIJ;`G%^bmJ=!R>dt~Zhl>f-h>?$HW;HG_uQq`oaGZzHDsV31DCKyw5R7pO3^nJJ|!x}}$2s^5=c3Hu7AQ=)&5^d7Lq z#X<&JzS>lK{Hpmln7kIsPe*oL#Xm6E`^H?qvQEP_GyJaXrFq-?-S;h&c%wT2_tgTr zl;QVvB6Ybly~9S{*ZH#)kIC@UZ1_!U_3Uj7S|ycQbsc%W84b$%@dMiVaPQ=;>PvNw zf$46&4x8z|TaMx*M_!$7ck>qJ&g(`+9C)?(cv)dG5}ETC`uodBsKN6GorMEW$Omwq zhN|~X`i)%5h}Yyu%~xJeSmtN|9(?y1t7zjq?chyPBzh5^9=y3o()`P~e`BIpZ^2!g z$ef;`?x4K%x5q6Mt9n$2v6`+?A|Czq9eLSi{JFhci?{%m8MEe=;ggXiN?sKHJR^iF4@tSCa`hDrGXt zENP&_f+W7)v?1!Kt4sTzl?YuTtqd5&kgt~lJV=$s8t$!4`psz;ZCLyL{`aPP*-kQz z#2ufokX7R{vUfE4gN;f6*CE~@d5B*gA&u{-lUd#m+i;`O48+5IRx|g+%3Ag7$0FWJ zdTvyK+rn$<9Pn*3F$jsIc*6roh!zkiO}K z>ZL;1gdIDI{*9)|0Vyy@!Rf^;%(9id?*O8$8A4^hRQ}R-%T* zcVpH<><48#Z}nG{DoUHjcu!=(Zd>ubJLvAn0$IxXmy9xQa{w=U}A14 zA|KgB>B}aituP`g7Z>M2FEC|qQBts*$Y03A6ZhEs%+%qjz>kq1Z>{q;&lSHPjrGw+ zY`TxoRl%I3TLN$C=Ok!*K6>KUywvJCVU@YZjikBom#QrU;!fNqfT@6G8f`&5+3ssK zR=W%K!W0sI`nPd>DkcJ?O4 z*_djvHda3C?>axXCSn>#*B=*M1A1n(SuoJ6IGF1dDg1yJ`J;T5+41Hpc!b?7Z-fui z5_eg_g;xo%a-@Xx=x{6A`c7a^MtL-p#TS&HuokZtC%>Rh>l5{)bZjRDcj|-;==3B*Z?a z&gYYA1J#z?5{qx{^P+@u-u&~^w~Fo#Z9X<3-_LL~(B$dT>$xv#`G}=}Qn&|EFRP_B zi(J&A0}V;&xw~Qfjoc?K#g9*eTtV|;k>~8bDh7{RtU5;hbmX6CwzPiakFhmnvHk=e=<09c#7w`0oW`#J29xkj#AjsDA-PZp>an+Vn{AlwV|VWRoxK zpgKoR#p53EEAvkKSHAN#a=8#HGiht*yv>MyD=8Jl*35OAkvfs%c2p%DIS>*?-9qg^ zoF4vsQlwX!gS^N{6nUY&NoJuEt=BhR=WV>DV zPi+tHfhVDHya>}WwT@PuIz|)e?kD>;3n}*AhfI&UcpX^derHq)S3G=nDjR9h*c`+$V0;F zdf}g+>3X)`wn6(?bSKnURjer$&Fg{JL*niH#ab^lAUlcdGDo;4Kj*8p@8xY0@6CnQ z4#w3Erka66rSF1!olG@DH*ExY`otIN9($)tqqT+trup4wdO5jI3Z{W08J`*c!bgc0 z>kE|qOn=UI2`RLX^t#7%xAgwX@l*O}+b2hD#@Le`1tsPl+g5!u%BS$B#1V3o5FZQv z>-TRbwsM2_dDnygx=(`bOwLC-rS~y#VjJvS;Vug$hlzLys}`Nj!tKeVi}0`3Vs+lD zhD^^3W^|R5e)-E^Xd9r=Kca%J{o5J;W_&TIhYrllJNl(#j}C!ib>m3Q?1m8WQy1nWZI~|CCu8#sNNcd5C;{*$?2N)e(~v z@Sr{`o;u;WH%hI6Piu8UoDwBM{hjD*KQ_nD$FoY6qzo%&Qq;UnuHiRnL+cNS&^59X zjQM?U6&@9}Xj?_Aw5ugHD%XnKZsyt^@vG!d(bZH{mR!d|v{u51dJfen znd1kYd}ZN?LqOn~UIvR~s+UoerJjE^OWb_Ln>Vj>+*^5{LWQxAzCH{O7V45%zU)U9iIP`-k7P9#n3wfcM0(_p7 zyhIkF$Dl|g782Wa!Ud1 z&oTwa;$qO+-(}#??ovM)0?e|RK*1fS>Utw}Ncw$BZhbA!9oqf{^G`=SbyeD;x^G(m zo5x{~AMf>}IflK;TyyM8F%@%HN^k3a*BPIB_pwZ)z@!2DA%fXia@BXG1)9pg56`M&FSWZ1WrE%Yq#TLTOEQFMWaY{Y0L^%Y)Hp>JX#6_`T% z&o%;B2-gq=uowe&?pzovIu{(hO#b1Eg*fT-fn&`-p;-XZ01G+i>m{6fA=TvWmqC&CM_glA$etS(a!N}c)?t2nh`tDc9j*=7H&Y}XruLjc z$t1n>es?#j6bBdHM_#p5zFD@jv7cnGV~lHdf4G&Z7A4g08_V)rC;G?dpFZ0QD`F%=>V&LS89%{1La!X%~YxzKG&7m)) zjLTuuUw;qnQ!Mw4BL#Hc&z833+OYFnDkYbC3^J|ia_wBtG&ZLqVbRql1gJClVkt+m zf1`DVP|u&2rz+w1nf6bV9F9tySt#-d^@=6Z?gm*@j3#T2($+A3^nU7AU`~L58`CQe z_^P@Y#&bqpWGZoVg0aHF#Xvq`TTMC}ck{_oA=r(*pIRBM=67wRcOVe$pl?bi4M$*j^t z`i_jV`6Pzd)0!XIzkVijV^ZJPlznD;LL_xX-`m`ngT9?MzsllQns3spW|<&oT&`x& zFQ>IL{U-gElAZM+3HR6Eu$z;78?%iep^9Z%!4CySWaTP>i8tw7#V+N>%PAjEGwMF0 z@Gzt>EJV^1vkS#+&!Mr96A+)9BY`;(xk5mzQDBrK1-+Vv{jLamh6V@2Q=E`n7%(*t z?83?yP8dnCkYTaD!n2#hpyb%cz<4HM>p^+I;tZ%BX4{80p=df7M$0=Kws+6|N<%6R z1K3~O1BUfefW;_aw~r-k3Bibtm4IEcz^?A~LF?$RLI9;gCbaiem6UhnGJ~QB@(3*U z{bpuW!XovfC{$=*OlBe3Q$D_hk1}Q@jwjB&Hl9ZKd~DP|I9H6VD{Th0iuPT7D-!v> zQ2_Ck8M@%M>JVQ2qE0^D!LCW{ee7qzV6?JVSR!ABMA-efD!oost&lUXOC3=_(6@C? zp&(P4ePvZk;^;nA%5>MH67;X6Y#RL1(u$dnRlh2}rQ0_;-ZZpL+ULGh)xLy%L)~@j z;D*NK4j6m-(x+N`F+a>y)8!i_v=uOsAzazL@AQyEj6^OJW$)TwN9~HZQY-*`MmTdi z=Hc64Efyk77)WK!pVkQT%?7gb0lXrdsJ5o#_cD>31F2)2f=|0^$bF{U`vkSC4k_B3 z^PjNh74&tqwY6K@rvr$!*1{8wS^)Vz6SM>J=yD8?Qr8s?T^I5kh6#iQVj)zI3$N%v zBhmK&IPbV3L)ovHp%Rb)D47MaUXpJ6tG4_?noR>AWPZ9#awTU)eQ9Zwc;@t-_1it4 zZ(4beV4uH>11YhP01r&q1*q4? znX!-{Mhr4(UXc~toP^ndUe3bqgfRfaVkm!5K|v#7r_h<77i3YudKO~xk_xn`7j=Dw zsjh`b3KOtB_bg!7*6En?zbIjm|Ez=`{Zk18e`(>rm9Tzp7;o5TfJliAeGfSqfp&HG z_g{54n%`Woe0i_Fvk6&ZRa5IlFmP5LS`g?9LvqcTbJ7N1+M%2ChWrz#F)nTRIQ2Su6Kx^m?hyz2*yn@`i1T3ieJ&{DaFbPa|h={(5fH$U5(=g9aE-jsVT z=U_&H_MJngRsrOhuEXv>!U^N z*F%k0Ch4|2rI9VMt6daLwQoFIG(*d>_s2^Hm%hvfXN->tGBeR_0kbp|o~I8prFvY0 z&4{E&^L`Mq-IYR41S~OMN`JMP{Za2eP}aFQg=|YCqRnt>kR^AF>qmIBo3^>`b55i@ z(GAfW_XrCBdelMxBLP@a!9tc;y7D?xV8?2}(f}6H!FfhW1lugeLfX|ar<9+eQH4i3 zVW4y^#vmxK)Pa)=OgO^+oJZCl(=P|ZR3o?6zigoskCQH0T%Z@37HH6NhR1+vO&6(t z_2MNKQc2igKZ=EDB%Sje>0eUSU0FEkf9v1?EiI2LXlcRgsK|0UUG1t%+M4+k;*8`) zxF(^k-=LNU!Wbh=4jCd_hCKrof<7w;(x>+=0hX#&7T>KvEL znH9uamngtT*xeXMT5fu!&kVT866i@*wKpU5YTQf$-BjrB=4(t1sHJPlshUN;Eo`iu z)a3Wv7C+#d6wm9T&A2Z%T@*1O*VbcP%GYapzsSsle}bZv#3Wp^-7g_$D@I6r?Azh* zULYx^i_Ta(X{eK>`H;q~4t`S+V67A<3!rdh;PyI2p zhy%Vv204tSwpb#`d+@4DT(CN(q(~`S(7R) z|0gZK__TCCv`l6VIv&cRbsxG2SJ%b%>(17iX@LN-;o*u~18y0~akk0lZU53;|5RNM z|C8$a^8ZS8fm6NzPr8c{LwX}#i5t!~Qm=*-Q}v^mf3R@sxO<&RF#Mh%&PdGNJLD4R zo|9PpE0<3jt|LbRysj>5Sx(nA_r4mv^b9DeYlnFuW9#;8#%*m~GCeLzkXZq_w)y#m z)=Faspq&5>vs%|N=rf|O+5JKTI!RZCh35?biWqb@S1EuwP=K>QH-z+0aDb^;z&rrm z0h|iZaR>c?DhVt^8texgBDC`41-SAUbR7|Qu#gzA#T*M3G6udWD^k!yaoDLEunE3? zD_|7z0(2Top%_OP`W6&<2rBGi`}0?zmrGcT;Q`b!6_e=2E;K&$kO;O5zNTZ~1w`Rt z*um49cw!;qpq+R&3-o^iPXJnnTt;v)0&`>Q$^C-Q)?;k#vApj!zXC&ZDS}-xaTx+(F?X zw+CZGN|b3KIk26Fq6FcEl;F=%XVR&8G;BNX6M&oqy_#cL;E^kEB0CO4B0xR7(E|!; zBO>XFwh#vt!kY*z1YI+`C!PsCJC;H24y{yLO%+;(>3P+RM3h^!2RtVgb_H?th^0Tm7sFBcyTV@%|bd1MYyk{s-3&xPb4ftg8%x zG$fIs9l-ix+{3?lfA({h4EsdMhZIPQMM;yKN!1X^AH?sKKT~p{`wUBe$vJvZnoP5S z{H3RU{X%tOSP4ImLRLmDb5Vvy@rXG4x%eyU`&1&6a{-6@s{3DpGN7zpPZN3EzA%% z;A6JfVnq2Mjv?=cRh)|2hUM&6q8A{6XKbV&Zv0f*gEkgjiq)MU2UibIP3Fy-pLa)5 z+=g!^M;}(5M(u08Nv?7&I1-(1Z~~k@xEycW_H7-Lz->bK$7 zkcfNs{4mEMeNUi(&*pVP+@r21q%=9SM-P3KwP7}Eh&jVkF@6>LHs;~g=vI8;q1D8m zz81G1n?<@)Pg1ls8FJxeUv<(}7G28bec-q74=lS~QC$Ogsxajz!*=&G2^;~$;c$FR z@3R+Vx4m*4PEICoF7a62HzE|jT7pV5+_^YcxZ!xkyS@bZ6};{1cJpbS{LRrhE^GIq zVQNW7Je?b|ZEv|of8jg!e8#4m77%4Dlk|rdu|dX8OI6FbsoIESox8(wUK>-sqIhvE z;{JTp7DAXSvU~4v%#m6!6D+I&0vdmrAE@hcO5P53lWSTmp!jgzR{jj8;S|W>0bWO8Cv0>qj zuaUBJ2)=6Nrylm7FP8H?N)7yR={7Q5+_H(;;ERQExT-uWx8GW4Xj&P^0Wrn7vw3&? zJ}9gNws)HJSe+}I$tW4VBqSl1QBajW`!a#TS9kFvuKZNPGSDv6r#X*x*GVvYvN>%e z%RHvG?C&;4yOaN-a-2$UYSWBMZ`M;XhqL4so(-+PJDT2JVmT&u;w?|RGFJ-%<<_;8m7+^Z!}2^b{*vvl zp*_Ce|6gYwfPhQ}VDBQ(6h`^n$gH`b0F8@5ppJNab{oyD0!)+k-H|qcaxPs)*mj7TK5HsYUC7`;Y?BL5u zC{FkMu1Zl4;OHk|?9cT8Y$x)EasZE%0OSt%yBWw<0HMaCx`DhYrtJHi2H((Oik6@V zaX6jKA^vY<1Nb11!arJoWCLOlD&-r74!+NmiyEeoJ&419mf!u8YybjLo@#k~b%*+N zvuWNRfY}@_hO%p=aQfi#%Wdaef3e+gBRWszQaFJGyllb+dl^Zr}Y#^}W9 zh-bJT%*MY8Xi<@lo6EV^YKTGv<^qJX))5DC<~NnTHY=*QC$pOtohD)&zuC9_~yxX;;dRI~U07wVWl%bZ>tAz4DB_ru}7?ly!1lo-^|h!ysou zRYfXeB-1!yDw%SH9K9=DVG!KLbIKvk_JSP|`1>hC4@Uz3iZwYejr!m>8pleU>z=fc zn%6;lR$FMFEnWGDJ+H?In0XNIM7(*Q#QAS_g};ab*52#MPZYO3bi;vb4Y+w!FB}Ai zwzB>7{Xxabh%+fovd(++lOPp-h>xhR^O1E_(3Fm4s2Rfg$eNgj9P;xOews5I3Zfg^ zsR3b%Z)GbP+DmA1D(?O0)}Itf_2akDCO4PV-)FWl^z<6^Yef>A9$Ixr~5G{lH6Nb4~>tt%gLOWW8kCf<+sXEJ(hM1OTc5*b< zUF)+xU9Xv*h~C9Z;UVbPGAVM}`nz@#?@zsdZsnaF3CXf|OG`U-Q9_PcR9MI$p8-q0 zu@X(!16%EHTD57v95?j5YW+Nw{c_)@CP`lh7AZr|SQ4|h8hl1z~e>a)#@1ALL%tSi;!Xz!DfkwbBChn}&2=f_irxfEpz! zZ=SrKwv7l0p@3sg-ez}_AK&d_1XW=sKaB(gVu|A{4|uFxd$^)#WKJsB;jI}z+*9!L zh8`z3^0$w4e$y_Ad(%FnShe_Im%&e+(NN=o^+(DvYS)oKv)3uJyIkp$^J%@hw6PrN zDuX{8(xa5wT9%pXAF=sf4Of!R&;y&7X%|IJ5%D05Cd$M?NXP&J5g*m}3w9q6jOj02 z6lY8F4y4h?4^LtZuX6LaP0aCnpNMe8EseiaXz32+!x6sg_d;+F7S)71CBm=}6%8+s z$68H($*C9SRF}`fj=#-6DT%Q*Y(&=X_h}loza${a40?0Qg`>@sqXy0TY6Ea-v?eBJPXibo7M0L`QU}oye}@U{u^qR zp0AeVmtbc)rlR?!@GZeQ1sx8i|6!kL%n zig+%f_YuCb%cltQVCx^fMkFo1T>UT*XQ1%ycN=BFM>oM*myVhe&YIqL9Bc`rft8pL zU9TB=uDI=eXxp`c+0l{$o5obPc@b1ir?sP5@YYTwk_>Z@RJjU#`ysL=Jdgn{+3H+Q0_ z$%lN&k@6JZbJa{CpEG^^1(HAezns-5BKWK+Wu(p+9s9=B&R5+}Wlc-7KG>_bA$OJB zLpC+9ISJ&moB?dndTE|i=@)$UvC#l!izj_ ziY6bup`|&9zDG!x;aPvncbX1LY*U*VzTz5e^v2c1SY3ueZs&#XJwaF6m$?+aosjoY z^fx|mtB42Sd8wr_Qn~#01T_xhTlJVGV0<-C8`Vz+MTD-8&E)-%j zDh93Lb{8rN6No^-9w98HFOyb@5>v`*3&3DnBUZPtx^vvbuA>cxVslE zc|OhYjKAd^y6iI;8g~4eyti_l z4Z*8y^PpV>^5;4)%32QXNxzJoxDi0^%S$YXGF@y#BG~@6Qh(~CZ|;aQ5Kx6Go-h*l zu*5-~pH$nCp1H;Kt3JD6DAb(MOVnJIUgR zd-UwJ%*>N3cc!A`#hpty+w#Uw`T7tEu;l^b3yr!-gF_K*-`dQ60+$O}lS61>0)-r{ zMyO?B6KeJeTHu%G=S!H)YkmViG_Q}!L&SO^tFmI*>kkC44? zQGp{0`Iqoh?Ep7SSE3uJ{hr(yweMvhNuL&XWbWnC@exrZg1;D6T+2n^1Q;h+&~nk) zi1DPp*gY`r)h5=ZvF~~1as$r@r-WLD2+4E}IEW-@lIOC3*y1s(o!lp0#C;Z%Vh~S7 zj3bh91Cbz$cRQjS;deVun@sHv+s@YuDgpiW04nOw)`liwdF9#R_i-9|3>@EfJa5yy z)vD$sw@Q;x^V-BZaEkV(+gnjw3&W-tXYwpsPihFMS#T>xbn5MxRc^#{JQVBYux5=P z$^^1#i=$cb9O71=Yh^Yx?&w#bv@|sCDSr-E<|==zW{5Y{oHR{&#kGz%Soh0CFVBnG zk019j+1B+uidxYqDGE}p$}AtqHjk)E@Z=PiZn!+`h6YLz^6ZxU-*)lOt3b80UOEoX zLgN)J1>YyH`s~IcELxG(JV>E2g$q0sj1y*jn8FMZ(0Vo*6-^>ZsKM`aPgBRqF{X~a%sP087Q}b#%L_+Xo zx($Bgu#g@d`{J5+SJC1g?2||IPvjTfDdOQQdBgrPZ6KRBzFQ~xLy8W`4diVQQASs} z)8EZe}hKH|E6D29_K6ZPoW2X{*Rgn^G+1 z$mLQZ14#OA61(Vma`&*{D62pKVo+;O4hMkUijf3OP5&t?eqG2@M>jR9SBocwrQUg+Qrs!Fd4FsQ$toupJ zcNuVw6d#rIipoH^v^H_sok?3>pHyoQ!}*!~l9N0?@>!SqVp`En4dr~w%QGq4bl8)wy5o28!YY(~^+812 z;74e z#I)I5;B$+g5mj~MYR7S@QOd`EvK8QJ{5?YQ-_aG|?*0Qllrt5WD@qrA`>wQ``X|Bz z!g0cV?ZlqY7cy=#J|J_FKJMd0^-siMFTBu$#LPt>VKxhQX{aLaC0Aqfu>H#BjG@Hq zFH-PDH{<){$p8Oz#Ny$wVIzeC54gA=4yuU)}6kk=1t!(Nxq7_=ENE+yw&#mtyXcI zqWMiKRaG`&<+XX~Y-cfb_o40~-4Ncb8v+snKTpLjxPB|#mg*Rt*O)-CGPOE#6OFUV zG{>!0x3=^^C-|?(J`f5smS`uI0gOJHe)i}I-Cr4tT_@e$wuHKe7HtU^1>9#M`xnf1 z#%&hk4k6mPHM5S`>BQ%OFDVm!{c9z^y$chx`dY`G(^i&ZXk8Itv3JkZkM1!!IiEn_ zj!mnwe#3jtwBEH>a3lDg0YT3y-p3PLU*_k(MmLgGo)bc%!RpBmI-xmL?*QpaIU?L> zd6nOhQL`O*xP?($4Fu?GV$zS5X1{|&?}8&T1L4sNDyXyxcAvef7I<`qA_gMJ4@qqs zzCOH0+5HArG&{E=SrIeQjZuKupDg2ewzzi4Xju#zNBy=yOEA72F_n$Yl>T}0`t_8% z_&FXquQjvF)NA-3mqb%F(`=lu1lNxK|3^FhA45Amb?wGNz7@<2cJe0mVj;8v`PX}O ztA<%w7`n>z19Ielv=L_jEF-&&jFc|Ic~LF1QA1yh%q$+g375V!xC|paoX!Z!9uim$ z;UT*PZ&PC;4`T>)iZCsG)3?UJQL1Tp_U>J2tm*BPT!U&R)l1W3MSVn+PAmT57w!$d%mL|;>W0sz!40G+ms4=ldu zx_ISDkB&G2b0sN-AOx!c#BR(*OJc(RnHvB1%=oZl=S*iiX(@0uQYKa&US|8< zFI-oN3{f_!b{Yt%N3C;UQ00XT7DD!6rR$1*IU0(xhl2ww8FN=q%m<|X z6+Idpy^lecgFu4Gp{}_C@E(CT0GM^?GlPK{h)F043pw;g=rtm(SIyFk(YmOoRlAuO zy4l*AfF+s10@lv1j`zuQTnrhH+tXSZY2^?c(K3(s$~s~F6v7A{ZvtOoMxuW7?Uw`Q zBfgT`4)tH=t?j9;O5U`&PZw*`%BS-RCr8>8-V3E9eZYKnJyzTb1;nSy6y42Girk&A z%~<0zD#t&~*GesBx+_pqGHq*leva%qbMcP1hcxRm!wusBst(wiklzRyU)dMuRa=f_ zb>!8myIgvtv{fGMlC5^x(xxnL@Q+CY2ik8-i-3|(SG0aS9FIP4LnQNsA9{=JE*-Ce z;TSRi864_{5aB5TROs~rJw~rt9hMuJa;s3y+R85i^ZpZ3HVOj);(Jdz4PTDdH#?h& zebiy#fXCa)*e}`4xoL?;dK%9g8k*iJ=avr)T{ttpsuGb@81;@QWIA{x=-lugGl2Z{ zqPb4|$4{;H*3`XfL=tWD{IG+Dv;MoCi>Ud9cYzFy>((z^fac3C(hk$w@LKH%_(-i5 zZISV=gC)Yy`;#gGK(-qfiu5E)(c_w4Wc|s2->8-EZ zMUiI7O(k+t%NPNTrTg`%l}vgirBWn%A&Gio9;9MPJ9751=M(0c2=VRv?{-g+CVYrW zlS=Y?9`Yt{igfkAEX1=G;}?$=vp-06AK5=DME;_ThMg$Dk1>}>&|!q|d42-Zvq6ZY z3%0H0us=C0^&*h^B4glMa54Wy<|4Ee@fr(CI-b55e|@`9-5$lj5D|(wvx9t11Th+)^~TGGg7r?13II#kyXG;>7fW(mfkt zQMa*NqK-~G=e>Gijsa@K%J(tUz^7C&k>5}Z?w})facI9VbiA_xWl<8`?jlqqsz6Pe zNBw%B$vM+x%g@KaC*}3%0Gxk&bo}9q8{hC3WLj~!pFS0M8tWJxY$nTft|YbkosnQ& zHt#1hk)2_h&!QmLgCao}`5KpPgRP+TsLF|2k2r~RdAeOaQJ_+aN&5$)BZ9U+yOy<; zl3P=@eKF@qPn$BjY_)1`!)!BsgUL8*wcO0-Wt!vn%q`*ARoFNGwSE~TX=HQ}@CN0( znR8p5P5e>=S(YS|dQ(&Aq_itr%)JO6M1E zzoV#}XI^nsG{DeF%hxlRqN`Ov@5sxlCM=qg=4|&->+_aT*-wAvUReFAPZ%?@sVKvR zuF}yrPAqW4E`t;LB1v3V??Wl0Rzyluu~r`6X!@W>eo4ud{tDy%?L%5U)Qc_x49r@a zy(=grM=!H>*~-$rJt3oxe{)oO?oC7Vb+)^c=F9k2dO)q)hxGz$m*7CMr>7s9F5W^8 zVK3^xtGyTKC-qNsu9ZIoJ1p|u!Plp+mrjh%H#5>Ft6e+Clvj7eA}(;w zLy3_dsb^@-8=~2p8egBbBY%pVtum=qd&@5JyLnryrqnD!=XS{utqzW!EcuWM6S4iO>i9c1DI5YtM7MG0OKG8BOvK&7y24T z23yZUgZPaG%3kP2($47>L2uWQj?dQB3qRn>95FfEIC;*t1wE4-gPjUDoP$RspadO? z+?AwDYDN%qe9f^d6O#-*GF}Hkq4vN<{a|71f3J797SMDu+H=BTY;XaS7EP|{rY?p_ zh6*YPL1Pbjo8fYsF?y{Mt@+<(z2^M*3qJkgGq>utx=Pd->CI#ObWElA9DLfEH5}87 zJ!tz8F7eef7(ja-FenoP62AySf~ygrC|QWR~PzjIzHw704z{;v^$4U0$|RZ~4Q*{>}&I zI0s*Ei6Oy;@^3{CKECKMt}dMEP#izXTaFZGc9wD*DWDYSzTY70;g{6h<5<7w5#VW1 z2k2TE@9yz+1)q*@g)2SWK z?3x3z16|HsJ0sIC)wdS*6{>e&)PRS5j1}dxk{E-9fNZo7VoBc^q}$iuuRv@1hdEs8 zh%luLh%Fud{%_c=WZBbpGitZ`N+vy2PwfUZ6 zGy2mw!UW;E&&ah}*ld2~Q};6!iFZu)pE1N;|AG($AcnZ*e>;Zw{{e(Ji~SaIFk%h3 zjc0=Fif#H9YOgXclrv*c-)7{LAwIIby=$f+EVQX{AoR!q4*odCt&(u&NCvKqi+2zP zJ{xcjE?_AT!HX~1alB<}9>4n4y(}k<-#8~h%k=)5QMyKNshpZ`e5M)E^|(>r0I@~> znZDKfV^coUhI9Y};>B48 zRSk3%!_9je)+F5e3~jcBQsm+pl|$Br4J&BtB6%vyw_3Z7?j>_N+!pc@6*a*5nl?3~ zBCMlHtJbB}Xgib{iFc-t%>zgAqQg?%{6kZ1#PSA#Ekqv3>Y`=*-1J!0s&np^Uu0$9b)!f(!ye;`QkLW% zhx4CW`C9d<<<`_jHM@HGJ2QZZ`)n;~A=^OS)1*}oPa?gz(W5zTIYg1^TxD#Yl@C0p zqiGhQr(KZGG!xIMp!cW*p=WT>+hw6d{=Y?W0sq&U3simtRBBL~4zTW+6VCLejmT5n z^P(Z}T0Da?2Loh7rRWABGv@xqy>d+B1HZ<39|ZAsCx-g4jA&%tLz& zE+s0W@DyCN39jmWj)hP{!FEz$cm!(kZV%Y%17H_44ddX`=~f0YC)M1 zZSv@67$b5rR`vZMG$ueO#ESV^#r#PE%#>l!E8O^zNbS~MZ`j;umEr%mmuLe>D_jrXf-AZR5bs)l z4Yj5=i-8H92VbQj#z%uZe=Iy+%7P-Rl|Vq+lpGR@pi+L=ZT~&2 z4fuCl8xfj+5{x7CLWr=C$QaOapWCZnRD%(L-UArQbrf9AgSAR@U9h?oqI|%R;0Q$i zMOh+;FtL-*KpA`WSL`9M{a@gKF=v}#9HA0Fg9WFP>%!Rl+Z_S_yd~&v9XT*1_X-5= z6^ek;=Y#n^frV`Q<^YI3&}|rv;RXGaXy143Aqq%-dC`CXWX7|a_!4?&hw|{65?taN z;W$K+3uMSKt2B5JNBo6-JChm;LU&;eVK6WSPFWxaXM^>x2qacZeaPc>ihx5zVw*ClsLsC%XVYU^43Oe={@J z2_0}=WuC7Sa^gJ9WZNLj#S?`PXMWfqyh$Pk5r&9@U$NGm4MG_lJV|f^=N2LNe{9G! g-69kr`p15m4bJ#sBsYk`rvM_5V66^i1ZOz^1H11kssI20 delta 65265 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

FlQRTy4DU_B%^qpGNJ0T`!4J`TUj% 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�>Bf@M>@lI1|*JAMBaC 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�t z<8l$0yZPNQ`F^K|m&NV|+hXBmu~#=&+KP{f-OuJN>4xRr15S{kz0^MjSSMUD9_H&I`34f7nUyC-C@qld6f=H_)+{uJKT zV2g~m#B>~c*D&)Ei;LTB!DjLAu;6|GXIk`B%eGN$t@-0_az7>XFbBXmkTWQA_?GO! z*yKYP6CTDI=@I1Lk<7ssFy1+u`RhV#+#6Y=KaRTlX8Nrq?D3yM+d7T>I)l1f%fACA z{ge1e2$KMB*nRVG3V#h6(e#$XUdt>#V*@_&COR-_HJlp@}{{0p2%O z9vvCCpV3LQzW8@J!P{5;s7CF;_%uAM91rjFc{w^|VrMXAGz1M^&uk56G=_gKYC7VdcNs{dDHVF#HdSOyvdUr*#}jo=Xs?S zPODZ_8QpM*d0O7NrJ0r|A>Sk}nFmp(mtm7rI)moRk4%SW)ux|#_f8)FonETL1805i z-}D>24sq-ux#>l%szAc)c4pka87$#SJFa^0YkE-*HC@L}`k3Afcvp#N`Xt`;d`-(~ zs^?^8s81{og9gR*>mU9)OhaYH#w4$D$pllchAl{a;-Z0)?OcHj{<-j=N%9KJR@n!0Smn(#89WZ5u-l<{QQ_}IX*t$Yr# zJho|QWZ+tL*v#W7f2sC`|KYa^>>Q&#lNSngEplL!A#fJP2tTCQuAlTyMc6s zGDF@m<1UR1Y?mijC(O#vywBU^(dn7X0^(ejZ=*8c(-%6-tlvDp%hN|QALj{qfy0bN zbtt^DVaB{;Y%kxspK0#FIkxR42eP+x7RDod?3=$`nK|3g{|Se3Nx1J>MujY8EwhbjPg)wG6!wu zIwLhZR6p%6C{tdRFk@K}eCCIIdVv|>fPVvRe+97F-i6R_uO--D;V|ppQr%wCdM4{Zs-|IMR-5$c;6=8IIu(NkS<)zP%Sdg#aD(4Vfk`Dn93f`!IX4i@BeU03};clKuE5+)pq!wqBE)5Vm)do$%!R(zn>BmGf>p znPfAiP7Z=6XAzd+?&lGSN^&Oq#&Ry?a`uW(5go}x!oDumN@ssmdA181*XLCLN zp2B@MxSY)pH@r*^$GZp8g zVHfUOsh8hJ?gk&F;=c%fHFx3dz8pd4G4!9JoyhlLALd?%+e6%UiQ7r)&nW)g0=|yM z|1$UcF%IJY9^B=)X=S4Yl`U5D&IB=5vdy#skCasxt^gm*-U-E2l$kXA(MOFJTGq0UB@Bj+IJBIhA1 zkPf61=|Z{@Ojxj;n51B9#cqgA6uTm}Q0$Y~O0lZh? zNC_z;n~^QZR%8&l2Dug)Lbf5p$Otluyd4=s#*qnRJ8~Ve1GygAiM#`OCvpRFBl0ff z-N-KFCgf)1J;*J{dy!j_+mQDmzlGe6ydSv(`A^6PkUNnNBEOCN4)P)7F66_=N08q| z?neGI@=@gXkb98dNB#i$L*!oMW5|C&K91and;<9-@<+)1$R8u0LOzY`M*al(4DzSQ zXOYh#e}?=y@&NK6@?Vj^KpsN=8}fPNFOi3lFCc$~d=YsB`D^4+_NVZJcoP_`9AW0k>`;NI~;jEas(pJ z;vR|2M;0JQAx9&}Ao707W05x^Z$gekjz<X8OSMjK5?Gtz>zB5g=JayD`nvK%=Fk#nf$AuEs$q!Z~vx{)5F z7dao1GkmL%3y=$u)yNt|&M04mtV1qF-h!-0HXxTEmm-%Tmm_aQu0XCtUQ5@l#OF5T SeaLUU#^Ux`%BO#?aru8#feOd~ diff --git a/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 7a6d1a91f70e17dddc583db8ce7fd46cc28d3593..c1422757111bac3cabd4c536eeb6eb6e26d654ce 100644 GIT binary patch delta 171 zcmV;c0960PoCA-Y1CU@HnEdu5R;H*P_vo=6a$kzSWB}+1xg17vkgeJe$ca&3^Nw9#VFDj0a252YebX3 zLj|)DBeVsR)nrAJze5bO=s><3vjTFWNdZ-pacfJHGs#c0L0!QVlTl7ZlmDCtv+%p0 E65O^qUjP6A diff --git a/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 3799ebb79312433d573d24e593bc3731322c3a63..602453306df58a94247a656f33520fc567e2ff47 100644 GIT binary patch delta 529 zcmdnFpK<$P#tGsqI~W)kCN9j{*s8_I=s9^JkKW{hIG)LO1vohLlJoP@GSkE0f*wpV zi~%s7ct}QOv13Y#XP%x*YH?L*( zp(-uEC^tSS9VCs-5U{rj67y1XU{(de43R__f>4Fm>%a&p$uFvenS?VKq3S?prA;>E L3*G#MtZF*!RiJ+)XbIX^EgGd%$$C>v0e zUyxc x!x#rt0BpK5tKa>sK{E6*o6ad-#Jsto6 diff --git a/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll index 4ab298fc231f1806efecf363dc668380455cef40..e5c3ef73cced405388e5830109e6ef75bbac0f4e 100644 GIT binary patch delta 1876 zcmZ`)eMsD89REDe@9um#Urx6<6`iM^tNAW2XKN(`$EF)K*$Xp_DcVjc zTrMN!fl*|8`J;l>BDq{di~SWsGuj3NiKs!vvIZ+0%s&kJKHuMyu0Q(8@ALh9KHrz; zdG0y6(dyCqsn?4ZN{d1;&m9zb-J%-ECPUihCw0@8jyl`wfag?=$Ww*FpZr-C<-GJ} zt23fZWHx#x=&< zjLV#K3-y<*lw};m9(BXvmoeKrZ+mlU%ITL&wwEBeyu=Rs?GUuXX*;|t)vQ$|Y;n^L z%XV;E_F{Huu+*%pVdn)WP<#qVaRENf4@D#0y`g@6%xX8#W|4Q~5GK zoJmuq33bA!0tuUAUNQ>l74%X)J!MjJz=dwH*K%Qk(I>WB=@_IE7ruh_-xEX9g)0t? zDa4bph(z-5V>{tD?61fW@munOOv8_IQ6%FmTvS;vT-4Qyp%{g&&?6F^b9|@v;zDmo zc<>R;QRGe+IDPiRyw4_!6tGUv)m?4irt*Jji_=O&GEa^F>>#(6XM zjQYtMiP7?T^slKud@qkVU{r`3^%wO+k%UT1&`s;x%^^(2Hs-qtJ!m4#LJK=%gn6i8 z-pV+EdX!=U4rdJlQ3ga}Rm+SX1e-^sthNW>c^DlO>_=6YN!bP*pAF_X)c@q0) zxZ!8^eT*-v1h;CU&ydb6k&jx!EqH>k06Pf1c#^OXPZ1X3X~JSO5c;qij#1jff1bnY zvb!W}NNUsZNah$8Mf`X7*CL@a968}{52;J3M^i$}r zeFVx}h9g6&!Q;!}jb(09&t&Y(572Id zv@4OnUfD;xV>ceiP{Olvt2g)V$oI|h4?cgmw7MGG8-4YWixSzZMH(StO!!&wGiwaG(1;&pG$pd)|5H?XK>w zJbj|9@z(1tu;Xu(m1I#Rkk5wl%=5{iE9-m>Nnn+(qGDZ28$%cKI99?lUk}i1D$uv7 zu_(nUW;F0r@L{wZNM!@0AH^5w)#|Bgh9+Ny{-7$T*PuEFT|2=uo{BvtwvY5jHBTjE zq1rRPjjD(A4X1)g@*lGCua}dfBz1)c>rx{!@HPvYtDzbR9xLsYNCvIw0bb>L536`Gmet5RGtT*|wl1MkVG#a0Dfqjp;L zKr)A|nk=zVt9Fa}Y*me@Ib~kWMwluath(eFHE2~VEx~(Mo|52utNxP96eqkgpCq=z zs%sKUS@lF>BUb$`u~$~Tkyw~tUejQooVVDj-<-5`Xyv%qp;hyw3-hL2rXT_i@uN16 zw}>%>nZj!sqgc*ZfF^Nz7>iLQyj8Ft)tH5Tq}?jCvooJ@v)h0f$U}v039nB-S3P{W zqv&HipiVM=AcNVi!N=lE6~14vPH-hm^onD!P`DQUM)v+M{D$yn!XF5KD||rm?+gFp zmjjY|N4Ac+-CXU5u~64Xrp4QoG2QPXKVy`D%(2KHq?@BnIujkv{F2*6`d!{MJtdZ< zm&B&(?pTo?i7kudY~iL4q63?-8@u$v{Jnb0#6_9Gi7ATSS@z$7eKj{%osMSB?mW5u wP$phjM|pef*T5Gkx*Hq-!WY$e%U-qhmOk$(=MtLzNT00tDILtN;K2 diff --git a/ai-proofread-client/App.config b/ai-proofread-client/App.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/ai-proofread-client/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ai-proofread-client/Form1.Designer.cs b/ai-proofread-client/Form1.Designer.cs new file mode 100644 index 0000000..a514ff9 --- /dev/null +++ b/ai-proofread-client/Form1.Designer.cs @@ -0,0 +1,40 @@ +namespace ai_proofread_client +{ + partial class Form1 + { + ///

+ /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "Form1"; + } + + #endregion + } +} + diff --git a/ai-proofread-client/Form1.cs b/ai-proofread-client/Form1.cs new file mode 100644 index 0000000..1def5a7 --- /dev/null +++ b/ai-proofread-client/Form1.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ai_proofread_client +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + } +} diff --git a/ai-proofread-client/Program.cs b/ai-proofread-client/Program.cs new file mode 100644 index 0000000..7ea293e --- /dev/null +++ b/ai-proofread-client/Program.cs @@ -0,0 +1,34 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace ai_proofread_client +{ + internal static class Program + { + [DllImport("kernel32.dll")] + public static extern bool AllocConsole(); + [DllImport("kernel32.dll")] + static extern bool FreeConsole(); + + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + // 允许调用控制台输出 + AllocConsole(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + //Application.Run(new Form1()); + Console.WriteLine("xxx-->0"); + Debug.WriteLine("xxx-->1"); + Console.WriteLine(string.Join("\n",args)); + Console.ReadLine(); + // 释放 + FreeConsole(); + } + } +} diff --git a/ai-proofread-client/Properties/AssemblyInfo.cs b/ai-proofread-client/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8682ba1 --- /dev/null +++ b/ai-proofread-client/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("ai-proofread-client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ai-proofread-client")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("48c0b207-150a-40b7-9a25-ecf9218ff86f")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ai-proofread-client/Properties/Resources.Designer.cs b/ai-proofread-client/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ffdf73f --- /dev/null +++ b/ai-proofread-client/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace ai_proofread_client.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ai_proofread_client.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/ai-proofread-client/Properties/Resources.resx b/ai-proofread-client/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/ai-proofread-client/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ai-proofread-client/Properties/Settings.Designer.cs b/ai-proofread-client/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d1a0672 --- /dev/null +++ b/ai-proofread-client/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ai_proofread_client.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ai-proofread-client/Properties/Settings.settings b/ai-proofread-client/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ai-proofread-client/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ai-proofread-client/ai-proofread-client.csproj b/ai-proofread-client/ai-proofread-client.csproj new file mode 100644 index 0000000..4e60f96 --- /dev/null +++ b/ai-proofread-client/ai-proofread-client.csproj @@ -0,0 +1,80 @@ + + + + + Debug + AnyCPU + {48C0B207-150A-40B7-9A25-ECF9218FF86F} + WinExe + ai_proofread_client + ai-proofread-client + v4.6.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/util-lib/CorrectContext.cs b/util-lib/CorrectContext.cs index 899eb4e..ea12946 100644 --- a/util-lib/CorrectContext.cs +++ b/util-lib/CorrectContext.cs @@ -16,14 +16,21 @@ namespace UtilLib ///
[JsonProperty("new_text")] public string NewText { get; set; } - + /// /// 句子原始文本长度 /// - [JsonProperty("insert_len")] - public int InsertLength { get; set; } + //[JsonProperty("insert_len")] + //public int InsertLength { get; set; } + + /// + /// 校对位移(相对当前句子) + /// + [JsonProperty("start_num")] public int Offset { get; set; } - public int Paragraph_offset { get; set; } + + //public int Paragraph_offset { get; set; } + /// /// 句子所在文档的段落数(从1开始) /// @@ -31,13 +38,21 @@ namespace UtilLib public int ParagraphNumber { get; set; } /// - /// 句子在段落中的其实位置 + /// 句子在段落中的起始位置 /// [JsonProperty("sentence_offset")] public int SentenceOffset { get; set; } + + /// + /// 当前句子在段落的序号 + /// + [JsonProperty("sentence_num")] + public int SentenceNumber { get; set; } + /// /// 当前句子的校对列表项 /// + [JsonProperty("diffs")] public List CorrectItems { get; set; } } } diff --git a/util-lib/CorrectItem.cs b/util-lib/CorrectItem.cs index a1c1c52..c361f84 100644 --- a/util-lib/CorrectItem.cs +++ b/util-lib/CorrectItem.cs @@ -5,7 +5,7 @@ namespace UtilLib public class CorrectItem { /// - /// 校对类别() + /// 校对类别(r 替换 d 删除 i 插入新增) /// public string Tag { get; set; } /// @@ -29,13 +29,13 @@ namespace UtilLib /// public int Id { get; set; } /// - /// 校对项索引 + /// 标识类型index(字符型数字) /// - public int idx { get; set; } + public int Index { get; set; } /// - /// 校对所属分类 + /// 标识类型(校对所属分类) /// - public int Type { get; set; } + public string Type { get; set; } /// /// 校对状态 /// @@ -45,5 +45,9 @@ namespace UtilLib /// 校对项颜色 /// public string Color { get; set; } + /// + /// 标识类型(校对所属分类) + /// + public string Addition { get; set; } } }